awstats-7.4/0000750000175000017500000000000012551203300010650 5ustar skskawstats-7.4/wwwroot/0000750000175000017500000000000012235577675012434 5ustar skskawstats-7.4/wwwroot/cgi-bin/0000750000175000017500000000000012551203300013710 5ustar skskawstats-7.4/wwwroot/cgi-bin/plugins/0000750000175000017500000000000012551203300015371 5ustar skskawstats-7.4/wwwroot/cgi-bin/plugins/userinfo.pm0000640000175000017500000000672112410217071017574 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # UserInfo AWStats plugin # This plugin allow you to add information on authenticated users chart from # a text file. Like full user name and lastname. # You must create a file called userinfo.configvalue.txt wich contains 2 # columns separated by a tab char, and store it in DirData directory. # First column is authenticated user login and second column is text you want # to add. #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES #if (!eval ('require "TheModule.pm";')) { return $@?"Error: $@":"Error: Need Perl module TheModule"; } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.5"; my $PluginHooksFunctions="ShowInfoUser"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $userinfoloaded %UserInfo /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_userinfo { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin userinfo: InitParams=$InitParams",1); $userinfoloaded=0; %UserInfo=(); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoUser_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to Authenticated users report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell"; # Parameters: User #----------------------------------------------------------------------------- sub ShowInfoUser_userinfo { my $param="$_[0]"; # <----- my $filetoload=''; if ($param && $param ne '__title__' && ! $userinfoloaded) { # Load userinfo file if ($SiteConfig && open(USERINFOFILE,"$DirData/userinfo.$SiteConfig.txt")) { $filetoload="$DirData/userinfo.$SiteConfig.txt"; } elsif (open(USERINFOFILE,"$DirData/userinfo.txt")) { $filetoload="$DirData/userinfo.txt"; } else { error("Couldn't open UserInfo file \"$DirData/userinfo.txt\": $!"); } # This is the fastest way to load with regexp that I know %UserInfo = map(/^([^\t]+)\t+([^\t]+)/o,); close USERINFOFILE; debug(" Plugin userinfo: UserInfo file loaded: ".(scalar keys %UserInfo)." entries found."); $userinfoloaded=1; } if ($param eq '__title__') { print "$Message[114]"; } elsif ($param) { print ""; if ($UserInfo{$param}) { print "$UserInfo{$param}"; } else { print " "; } # Undefined user info print ""; } else { print " "; } return 1; # -----> } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/export_to_csv.pm0000640000175000017500000004441412410217071020641 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # Export To CSV AWStats plugin # This plugin adds export to csv functionality for different stats data # # Copyright (c) 2005 Pim Snel for Lingewoud B.V. # This AWStats plugin is a free software distributed under the GNU General # Public License. #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # This plugin does not work when Tooltips are loaded or any other plugin that # uses the debug function. # # TODO # 1. make all year work # 2. add more export types # 3. cleanup code # 4. fix htmlentities? # # $Id$ # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES. # -----> use strict;no strict "refs"; use HTML::Entities; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.9"; my $PluginHooksFunctions="BuildFullHTMLOutput TabHeadHTML"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $fld_termd $fld_enclosed $fld_escaped $ln_termd $MAXLINE $max_v $max_p $max_h $max_k $total_u $total_v $total_p $total_h $total_k $average_nb $average_u $average_v $average_p $average_h $average_k $total_e $total_x $rest_p $rest_e $rest_k $rest_x $firstdaytoshowtime $lastdaytoshowtime $firstdaytocountaverage $lastdaytocountaverage /; # -----> $fld_termd=','; $fld_enclosed='"'; $fld_escaped='\\'; $ln_termd="\n"; #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_export_to_csv { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); #$EXPORTCSVON=1; if ($QueryString =~ /exportcsv=([^&]+)/i) { print "Content-type: application/csv\n"; print "Content-disposition: attachment; filename=filex.csv\n"; print "\n"; $HeaderHTTPSent=1; %HTMLOutput=(); $NOHTML=1; } return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNTION: AddHTMLBodyHeader_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code at beginning of BODY section. #----------------------------------------------------------------------------- sub AddHTMLBodyHeader_export_to_csv { return 1; } #----------------------------------------------------------------------------- # PLUGIN FUNTION: BuildFullHTMLOutput_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to output an HTML page completely built by plugin instead # of AWStats output #----------------------------------------------------------------------------- sub BuildFullHTMLOutput_export_to_csv { if ($QueryString =~ /exportcsv=([^&]+)/i) { my $exportaction=$1; #FIXME this must be done by awstats.pl %MonthNumLib = ("01","$Message[60]","02","$Message[61]","03","$Message[62]","04","$Message[63]","05","$Message[64]","06","$Message[65]","07","$Message[66]","08","$Message[67]","09","$Message[68]","10","$Message[69]","11","$Message[70]","12","$Message[71]"); # Check year and month parameters if ($QueryString =~ /(^|&)month=(year)/i) { error("month=year is a deprecated option. Use month=all instead."); } if ($QueryString =~ /(^|&)year=(\d\d\d\d)/i) { $YearRequired=sprintf("%04d",$2); } else { $YearRequired="$nowyear"; } if ($QueryString =~ /(^|&)month=(\d{1,2})/i) { $MonthRequired=sprintf("%02d",$2); } elsif ($QueryString =~ /(^|&)month=(all)/i) { $MonthRequired='all'; } else { $MonthRequired="$nowmonth"; } if($exportaction eq 'monthhistory') { &CSVmonths(); } elsif($exportaction eq 'pageurl') { &CSVpageurl(); } elsif($exportaction eq 'monthdays') { &CSVmonthdays(); } return 1; } } sub CSVmonthdays { &Read_History_With_TmpUpdate($YearRequired,$MonthRequired,0,0,"day"); # Read full history file # # Define firstdaytocountaverage, lastdaytocountaverage, firstdaytoshowtime, lastdaytoshowtime my $firstdaytocountaverage=$nowyear.$nowmonth."01"; # Set day cursor to 1st day of month my $firstdaytoshowtime=$nowyear.$nowmonth."01"; # Set day cursor to 1st day of month my $lastdaytocountaverage=$nowyear.$nowmonth.$nowday; # Set day cursor to today my $lastdaytoshowtime=$nowyear.$nowmonth."31"; # Set day cursor to last day of month if ($MonthRequired eq 'all') { $firstdaytocountaverage=$YearRequired."0101"; # Set day cursor to 1st day of the required year } if (($MonthRequired ne $nowmonth && $MonthRequired ne 'all') || $YearRequired ne $nowyear) { if ($MonthRequired eq 'all') { $firstdaytocountaverage=$YearRequired."0101"; # Set day cursor to 1st day of the required year $firstdaytoshowtime=$YearRequired."1201"; # Set day cursor to 1st day of last month of required year $lastdaytocountaverage=$YearRequired."1231"; # Set day cursor to last day of the required year $lastdaytoshowtime=$YearRequired."1231"; # Set day cursor to last day of last month of required year } else { $firstdaytocountaverage=$YearRequired.$MonthRequired."01"; # Set day cursor to 1st day of the required month $firstdaytoshowtime=$YearRequired.$MonthRequired."01"; # Set day cursor to 1st day of the required month $lastdaytocountaverage=$YearRequired.$MonthRequired."31"; # Set day cursor to last day of the required month $lastdaytoshowtime=$YearRequired.$MonthRequired."31"; # Set day cursor to last day of the required month } } # BY DAY OF MONTH #--------------------------------------------------------------------- if ($Debug) { debug("ShowDaysOfMonthStats",2); } my $title="$Message[138]"; $average_nb=$average_u=$average_v=$average_p=$average_h=$average_k=0; $total_u=$total_v=$total_p=$total_h=$total_k=0; # Define total and max $max_v=$max_h=$max_k=0; # Start from 0 because can be lower than 1 foreach my $daycursor ($firstdaytoshowtime..$lastdaytoshowtime) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year=$1; my $month=$2; my $day=$3; if (! DateIsValid($day,$month,$year)) { next; } # If not an existing day, go to next $total_v+=$DayVisits{$year.$month.$day}||0; $total_p+=$DayPages{$year.$month.$day}||0; $total_h+=$DayHits{$year.$month.$day}||0; $total_k+=$DayBytes{$year.$month.$day}||0; if (($DayVisits{$year.$month.$day}||0) > $max_v) { $max_v=$DayVisits{$year.$month.$day}; } #if (($DayPages{$year.$month.$day}||0) > $max_p) { $max_p=$DayPages{$year.$month.$day}; } if (($DayHits{$year.$month.$day}||0) > $max_h) { $max_h=$DayHits{$year.$month.$day}; } if (($DayBytes{$year.$month.$day}||0) > $max_k) { $max_k=$DayBytes{$year.$month.$day}; } } # Define average foreach my $daycursor ($firstdaytocountaverage..$lastdaytocountaverage) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year=$1; my $month=$2; my $day=$3; if (! DateIsValid($day,$month,$year)) { next; } # If not an existing day, go to next $average_nb++; # Increase number of day used to count $average_v+=($DayVisits{$daycursor}||0); $average_p+=($DayPages{$daycursor}||0); $average_h+=($DayHits{$daycursor}||0); $average_k+=($DayBytes{$daycursor}||0); } if ($average_nb) { $average_v=$average_v/$average_nb; $average_p=$average_p/$average_nb; $average_h=$average_h/$average_nb; $average_k=$average_k/$average_nb; if ($average_v > $max_v) { $max_v=$average_v; } #if ($average_p > $max_p) { $max_p=$average_p; } if ($average_h > $max_h) { $max_h=$average_h; } if ($average_k > $max_k) { $max_k=$average_k; } } else { $average_v="?"; $average_p="?"; $average_h="?"; $average_k="?"; } # # Show data array for days print "$Message[4]"; print $fld_termd; if ($ShowDaysOfMonthStats =~ /V/i) { print decode_entities($Message[10]); } print $fld_termd; if ($ShowDaysOfMonthStats =~ /P/i) { print decode_entities($Message[56]); } print $fld_termd; if ($ShowDaysOfMonthStats =~ /H/i) { print decode_entities($Message[57]); } print $fld_termd; if ($ShowDaysOfMonthStats =~ /B/i) { print decode_entities($Message[75]); } print $ln_termd; foreach my $daycursor ($firstdaytoshowtime..$lastdaytoshowtime) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year=$1; my $month=$2; my $day=$3; if (! DateIsValid($day,$month,$year)) { next; } # If not an existing day, go to next my $dayofweekcursor=DayOfWeek($day,$month,$year); print "".(! $StaticLinks && $day==$nowday && $month==$nowmonth && $year==$nowyear?'':''); print Format_Date("$year$month$day"."000000",2); print (! $StaticLinks && $day==$nowday && $month==$nowmonth && $year==$nowyear?'':''); print ""; print $fld_termd; if ($ShowDaysOfMonthStats =~ /V/i) { print "",$DayVisits{$year.$month.$day}?$DayVisits{$year.$month.$day}:"0",""; } print $fld_termd; if ($ShowDaysOfMonthStats =~ /P/i) { print "",$DayPages{$year.$month.$day}?$DayPages{$year.$month.$day}:"0",""; } print $fld_termd; if ($ShowDaysOfMonthStats =~ /H/i) { print "",$DayHits{$year.$month.$day}?$DayHits{$year.$month.$day}:"0",""; } print $fld_termd; if ($ShowDaysOfMonthStats =~ /B/i) { print "",Format_Bytes(int($DayBytes{$year.$month.$day}||0)),""; } print $ln_termd; } # # Average row # print "$Message[96]"; # if ($ShowDaysOfMonthStats =~ /V/i) { print "$average_v"; } # if ($ShowDaysOfMonthStats =~ /P/i) { print "$average_p"; } # if ($ShowDaysOfMonthStats =~ /H/i) { print "$average_h"; } # if ($ShowDaysOfMonthStats =~ /B/i) { print "$average_k"; } # print "\n"; # # Total row # print "$Message[102]"; # if ($ShowDaysOfMonthStats =~ /V/i) { print "$total_v"; } # if ($ShowDaysOfMonthStats =~ /P/i) { print "$total_p"; } # if ($ShowDaysOfMonthStats =~ /H/i) { print "$total_h"; } # if ($ShowDaysOfMonthStats =~ /B/i) { print "".Format_Bytes($total_k).""; } # print "\n"; # print "\n
"; } sub CSVpageurl { # for (my $ix=12; $ix>=1; $ix--) { # my $monthix=sprintf("%02s",$ix); # if ($MonthRequired eq 'all' || $monthix eq $MonthRequired) { # &Read_History_With_TmpUpdate($YearRequired,$monthix,0,0,"all"); # Read full history file # #&Read_History_With_TmpUpdate($YearRequired,$monthix,0,0,"general time"); # Read full history file # # print "a"; # #print $YearRequired; # #print $monthix; # } # elsif (($HTMLOutput{'main'} && $ShowMonthStats) || $HTMLOutput{'alldays'}) { # &Read_History_With_TmpUpdate($YearRequired,$monthix,0,0,"all"); # Read general and time sections. # print "b"; # } # } &Read_History_With_TmpUpdate($YearRequired,$MonthRequired,0,0,"sider"); # Read full history file my $title=''; my $cpt=0; $title=$Message[19]; $cpt=(scalar keys %_url_p); print "$Message[102]: $cpt $Message[28]"; print $fld_termd; if ($ShowPagesStats =~ /P/i) { print decode_entities($Message[29]); } print $fld_termd; if ($ShowPagesStats =~ /B/i) { print decode_entities($Message[106]); } print $fld_termd; if ($ShowPagesStats =~ /E/i) { print decode_entities($Message[104]); } print $fld_termd; if ($ShowPagesStats =~ /X/i) { print decode_entities($Message[116]); } print $fld_termd; print $ln_termd; $total_p=$total_k=$total_e=$total_x=0; my $count=0; &BuildKeyList($MaxRowsInHTMLOutput,$MinHit{'File'},\%_url_p,\%_url_p); $max_p=1; $max_k=1; foreach my $key (@keylist) { if ($_url_p{$key} > $max_p) { $max_p = $_url_p{$key}; } if ($_url_k{$key}/($_url_p{$key}||1) > $max_k) { $max_k = $_url_k{$key}/($_url_p{$key}||1); } } foreach my $key (@keylist) { print $key; print $fld_termd; my $bredde_p=0; my $bredde_e=0; my $bredde_x=0; my $bredde_k=0; if ($max_p > 0) { $bredde_p=int($BarWidth*($_url_p{$key}||0)/$max_p)+1; } if (($bredde_p==1) && $_url_p{$key}) { $bredde_p=2; } if ($max_p > 0) { $bredde_e=int($BarWidth*($_url_e{$key}||0)/$max_p)+1; } if (($bredde_e==1) && $_url_e{$key}) { $bredde_e=2; } if ($max_p > 0) { $bredde_x=int($BarWidth*($_url_x{$key}||0)/$max_p)+1; } if (($bredde_x==1) && $_url_x{$key}) { $bredde_x=2; } if ($max_k > 0) { $bredde_k=int($BarWidth*(($_url_k{$key}||0)/($_url_p{$key}||1))/$max_k)+1; } if (($bredde_k==1) && $_url_k{$key}) { $bredde_k=2; } if ($ShowPagesStats =~ /P/i) { print "$_url_p{$key}"; } print $fld_termd; if ($ShowPagesStats =~ /B/i) { print "".($_url_k{$key}?Format_Bytes($_url_k{$key}/($_url_p{$key}||1)):" ").""; } print $fld_termd; if ($ShowPagesStats =~ /E/i) { print "".($_url_e{$key}?$_url_e{$key}:" ").""; } print $fld_termd; if ($ShowPagesStats =~ /X/i) { print "".($_url_x{$key}?$_url_x{$key}:" ").""; } print $fld_termd; $total_p += $_url_p{$key}; $total_e += $_url_e{$key}; $total_x += $_url_x{$key}; $total_k += $_url_k{$key}; $count++; print $ln_termd; } $rest_p=$TotalPages-$total_p; $rest_k=$TotalBytesPages-$total_k; $rest_e=$TotalEntries-$total_e; $rest_x=$TotalExits-$total_x; if ($rest_p > 0 || $rest_e > 0 || $rest_k > 0) { print "$Message[2]"; print $fld_termd; if ($ShowPagesStats =~ /P/i) { print "".($rest_p?$rest_p:" ").""; } print $fld_termd; if ($ShowPagesStats =~ /B/i) { print "".($rest_k?Format_Bytes($rest_k/($rest_p||1)):" ").""; } print $fld_termd; if ($ShowPagesStats =~ /E/i) { print "".($rest_e?$rest_e:" ").""; } print $fld_termd; if ($ShowPagesStats =~ /X/i) { print "".($rest_x?$rest_x: "").""; } print $fld_termd; print $ln_termd; } } # BY MONTH #--------------------------------------------------------------------- sub CSVmonths { $MonthRequired="all"; # Loop on each month of year for (my $ix=12; $ix>=1; $ix--) { my $monthix=sprintf("%02s",$ix); if ($MonthRequired eq 'all' || $monthix eq $MonthRequired) { &Read_History_With_TmpUpdate($YearRequired,$monthix,0,0,"all"); # Read full history file #&Read_History_With_TmpUpdate($YearRequired,$monthix,0,0,"general time"); # Read full history file } # elsif (($HTMLOutput{'main'} && $ShowMonthStats) || $HTMLOutput{'alldays'}) { # &Read_History_With_TmpUpdate($YearRequired,$monthix,0,0,"general time"); # Read general and time sections. # print "b"; # } } my $title="$Message[162]"; $average_nb=$average_u=$average_v=$average_p=$average_h=$average_k=0; $total_u=$total_v=$total_p=$total_h=$total_k=0; $max_v=$max_p=$max_h=$max_k=1; # Define total and max for (my $ix=1; $ix<=12; $ix++) { my $monthix=sprintf("%02s",$ix); $total_u+=$MonthUnique{$YearRequired.$monthix}||0; $total_v+=$MonthVisits{$YearRequired.$monthix}||0; $total_p+=$MonthPages{$YearRequired.$monthix}||0; $total_h+=$MonthHits{$YearRequired.$monthix}||0; $total_k+=$MonthBytes{$YearRequired.$monthix}||0; #if (($MonthUnique{$YearRequired.$monthix}||0) > $max_v) { $max_v=$MonthUnique{$YearRequired.$monthix}; } if (($MonthVisits{$YearRequired.$monthix}||0) > $max_v) { $max_v=$MonthVisits{$YearRequired.$monthix}; } #if (($MonthPages{$YearRequired.$monthix}||0) > $max_p) { $max_p=$MonthPages{$YearRequired.$monthix}; } if (($MonthHits{$YearRequired.$monthix}||0) > $max_h) { $max_h=$MonthHits{$YearRequired.$monthix}; } if (($MonthBytes{$YearRequired.$monthix}||0) > $max_k) { $max_k=$MonthBytes{$YearRequired.$monthix}; } } # Show data array for month if ($AddDataArrayMonthStats) { print "$Message[5]"; print $fld_termd; if ($ShowMonthStats =~ /U/i) { print decode_entities($Message[11]); } print $fld_termd; if ($ShowMonthStats =~ /V/i) { print decode_entities($Message[10]); } print $fld_termd; if ($ShowMonthStats =~ /P/i) { print decode_entities($Message[56]); } print $fld_termd; if ($ShowMonthStats =~ /H/i) { print decode_entities( $Message[57]); } print $fld_termd; if ($ShowMonthStats =~ /B/i) { print decode_entities($Message[75]); } print $fld_termd; print $ln_termd; for (my $ix=1; $ix<=12; $ix++) { my $monthix=sprintf("%02s",$ix); print (! $StaticLinks && $monthix==$nowmonth && $YearRequired==$nowyear?'':''); print "$MonthNumLib{$monthix} $YearRequired"; print (! $StaticLinks && $monthix==$nowmonth && $YearRequired==$nowyear?'':''); print $fld_termd; if ($ShowMonthStats =~ /U/i) { print "",$MonthUnique{$YearRequired.$monthix}?$MonthUnique{$YearRequired.$monthix}:"0",""; } print $fld_termd; if ($ShowMonthStats =~ /V/i) { print "",$MonthVisits{$YearRequired.$monthix}?$MonthVisits{$YearRequired.$monthix}:"0",""; } print $fld_termd; if ($ShowMonthStats =~ /P/i) { print "",$MonthPages{$YearRequired.$monthix}?$MonthPages{$YearRequired.$monthix}:"0",""; } print $fld_termd; if ($ShowMonthStats =~ /H/i) { print "",$MonthHits{$YearRequired.$monthix}?$MonthHits{$YearRequired.$monthix}:"0",""; } print $fld_termd; if ($ShowMonthStats =~ /B/i) { print "",Format_Bytes(int($MonthBytes{$YearRequired.$monthix}||0)),""; } print $ln_termd; } } } #------------------------------------------------------------------------------ # Function: Return the string to add in html tag to include popup javascript code # Parameters: $title # Input: None # Output: None # Return: string with javascript code #------------------------------------------------------------------------------ sub TabHeadHTML_export_to_csv { my $title=shift; my $export_section; if(substr($title,0,length($Message[128])) eq $Message[128]) { #$export_section="monthsummary"; } elsif(substr($title,0,length($Message[162])) eq $Message[162]) { $export_section="monthhistory"; } elsif(substr($title,0,length($Message[19])) eq $Message[19]) { $export_section="pageurl"; } elsif(substr($title,0,length($Message[138])) eq $Message[138]) { $export_section="monthdays"; } if($export_section) { #return ($EXPORTCSVON?"   -   Export CSV":""); return ("   -   Export CSV"); } else { return ''; } } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/urlalias.pm0000640000175000017500000001117412410217071017554 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # UrlAlias AWStats plugin # This plugin allow you to report all URL links with a text title instead of # URL value. # You must create a file called urlalias.cnfigvalue.txt and store it in # plugin directory that contains 2 columns separated by a tab char. # First column is URL value and second column is text title to use instead of. #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES #if (!eval ('require "TheModule.pm";')) { return $@?"Error: $@":"Error: Need Perl module TheModule"; } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.5"; my $PluginHooksFunctions="ShowInfoURL"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $urlinfoloaded %UrlAlias @UrlMatch /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_urlalias { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin urlalias: InitParams=$InitParams",1); $urlinfoloaded=0; %UrlAlias=(); @UrlMatch=(); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoURL_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal information for URLs in URLs' report. # This function is called after writing the URL value in the URL cell of the # Top Pages-URL report. # Parameters: URL #----------------------------------------------------------------------------- sub ShowInfoURL_urlalias { my $param="$_[0]"; # <----- my $found = 0; # flag for testing for whether a match occurs. unused at present my $filetoload=''; my $filetoload2=''; if ($param && ! $urlinfoloaded) { # Load urlalias and match files if ($SiteConfig && open(URLALIASFILE,"$DirData/urlalias.$SiteConfig.txt")) { $filetoload2="$DirData/urlalias.$SiteConfig.txt"; } elsif (open(URLALIASFILE,"$DirData/urlalias.txt")) { $filetoload2="$DirData/urlalias.txt"; } else { error("Couldn't open UrlAlias file \"$DirData/urlalias.txt\": $!"); } if ($SiteConfig && open(URLMATCHFILE,"$DirData/urlmatch.$SiteConfig.txt")) { $filetoload="$DirData/urlmatch.$SiteConfig.txt"; } elsif (open(URLMATCHFILE,"$DirData/urlmatch.txt")) { $filetoload="$DirData/urlmatch.txt"; } # Load UrlAlias %UrlAlias = map(/^([^\t]+)\t+([^\t]+)/o,); # Load UrlMatch my $iter = 0; foreach my $key () { $key =~ /^([^\t]+)\t+([^\t]+)/o; $UrlMatch[$iter][0] = $1; $UrlMatch[$iter][1] = $2; $iter++; } close URLALIASFILE; close URLMATCHFILE; debug(" Plugin urlalias: UrlAlias file loaded: ".(scalar keys %UrlAlias)." entries found."); debug(" Plugin urlalias: UrlMatch file loaded: ".(scalar @UrlMatch)." entries found."); $urlinfoloaded=1; } if ($param) { if ($UrlAlias{$param}) { print "$UrlAlias{$param}
"; $found=1; } else { foreach my $iter (0..@UrlMatch-1) { my $key = $UrlMatch[$iter][0]; if ( $param =~ /$key/ ) { print "$UrlMatch[$iter][1]
"; $found = 1; # $UrlAlias{$param} = $UrlMatch[$iter][1]; # if ($SiteConfig && open(URLALIASFILE,">> $DirData/urlalias.$SiteConfig.txt")) { # $filetoload="$DirData/urlalias.$SiteConfig.txt"; # } # elsif (open(URLALIASFILE,">> $DirData/urlalias.txt")) { # $filetoload="$DirData/urlalias.txt"; # } # else { # error("Couldn't open UrlAlias file \"$DirData/urlalias.txt\": $!"); # } # print URLALIASFILE "$param\t$UrlAlias{$param}"; # close URLALIASFILE; last; } } } if (!$found) { # does nothing right now print ""; } } else { print ""; } # Url info title return 1; # -----> } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/geoip_asn_maxmind.pm0000640000175000017500000005141412410217071021422 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GeoIp_ASN_Maxmind AWStats plugin # This plugin allow you to add ASN information to a report # Requires the free ASN database from MaxMind #----------------------------------------------------------------------------- # Perl Required Modules: Geo::IP or Geo::IP::PurePerl #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES use vars qw/ $type /; $type='GeoIPASNum'; if (!eval ('require "Geo/IP.pm";')) { $error1=$@; $type='geoippureperl'; if (!eval ('require "Geo/IP/PurePerl.pm";')) { $error2=$@; $ret=($error1||$error2)?"Error:\n$error1$error2":""; $ret.="Error: Need Perl module Geo::IP or Geo::IP::PurePerl"; return $ret; } } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.2"; my $PluginHooksFunctions="AddHTMLMenuLink AddHTMLGraph ShowInfoHost SectionInitHashArray SectionProcessIp SectionProcessHostname SectionReadHistory SectionWriteHistory"; my $PluginName="geoip_asn_maxmind"; my $LoadedOverride=0; my %TmpLookup; my $LookupLink=""; my $OverrideFile=""; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $geoip_asn_maxmind %_asn_p %_asn_h %_asn_k %_asn_l $MAXNBOFSECTIONGIR $MAXLENGTH /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname # Parameters: $mode - Whether to load into memory or search file for lookups # Values: GEOIPSTANDARD () or GEOIP_MEMORY_CACHE # $datafile - Path to the GEOIP Data file. Defaults to local directory # $override - Path to an override file # $link - ASN lookup link to a page with more information. Appends # the AS number at the end. For example: # $link=http://www.lookup.net/lookup.php?asn={ASNUMBER} #----------------------------------------------------------------------------- sub Init_geoip_asn_maxmind { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); $MAXNBOFSECTIONGIR=10; $MAXLENGTH=20; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin $PluginName: InitParams=$InitParams",1); my ($mode,$tmpdatafile)=split(/\s+/,$InitParams,2); my ($datafile,$override,$link)=split(/\+/,$tmpdatafile,3); if (! $datafile) { $datafile="GeoIPASNum.dat"; } else { $datafile =~ s/%20/ /g; } if ($type eq 'geoippureperl') { # With pureperl with always use GEOIP_STANDARD. # GEOIP_MEMORY_CACHE seems to fail with ActiveState if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } # if there is a url in the override field, move it to link if (lc($override) =~ m/^http/) { $link = $override; $override = ''; } elsif ($override) { $override =~ s/%20/ /g; $OverrideFile=$override; } if ($link){$LookupLink=$link;} debug(" Plugin $PluginName: GeoIP initialized type=$type mode=$mode, override=$override, link=$link",1); if ($type eq 'geoippureperl') { $geoip_asn_maxmind = Geo::IP::PurePerl->open($datafile, $mode); } else { $geoip_asn_maxmind = Geo::IP->open($datafile, $mode); } # Fails on some GeoIP version # debug(" Plugin geoip_org_maxmind: GeoIP initialized database_info=".$geoip_asn_maxmind->database_info()); if ($geoip_asn_maxmind) { debug(" Plugin $PluginName: GeoIP plugin and gi object initialized",1); } else { return "Error: Failed to create gi object for datafile=".$datafile; } # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLMenuLink_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLMenuLink_geoip_asn_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- if ($Debug) { debug(" Plugin $PluginName: AddHTMLMenuLink"); } if ($categ eq 'who') { $menu->{"plugin_$PluginName"}=0.7; # Pos $menulink->{"plugin_$PluginName"}=2; # Type of link $menutext->{"plugin_$PluginName"}="ASNs"; # Text } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLGraph_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLGraph_geoip_asn_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- my $ShowISP='H'; $MinHit{'Org'}=1; my $total_p; my $total_h; my $total_k; my $rest_p; my $rest_h; my $rest_k; if ($Debug) { debug(" Plugin $PluginName: AddHTMLGraph $categ $menu $menulink $menutext"); } my $title='AS Numbers'; &tab_head("$title",19,0,'org'); print "AS Numbers: ".((scalar keys %_asn_h)-($_asn_h{'unknown'}?1:0)).""; print "ISP\n"; if ($ShowISP =~ /P/i) { print "$Message[56]"; } if ($ShowISP =~ /P/i) { print "$Message[15]"; } if ($ShowISP =~ /H/i) { print "$Message[57]"; } if ($ShowISP =~ /H/i) { print "$Message[15]"; } if ($ShowISP =~ /B/i) { print "$Message[75]"; } if ($ShowISP =~ /L/i) { print "$Message[9]"; } print "\n"; $total_p=$total_h=$total_k=0; my $count=0; &BuildKeyList($MaxRowsInHTMLOutput,$MinHit{'Org'},\%_asn_h,\%_asn_h); foreach my $key (@keylist) { if ($key eq 'unknown') { next; } my $p_p; my $p_h; if ($TotalPages) { $p_p=int($_asn_p{$key}/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($_asn_h{$key}/$TotalHits*1000)/10; } print ""; my $asn=$key; $asn =~ s/_/ /g; my $idx = index($asn, ' '); # get lookup link my $link = ''; if ($LookupLink){ if ($idx < 0 && $asn =~ m/^A/){ $link .= $LookupLink.$asn; } elsif (substr($asn, 0, $idx) =~ m/^A/){$link .= $LookupLink.substr($asn, 0, $idx); } if ($link){ $link = "";} } print "".$link.ucfirst(($idx > -1 ? substr($asn, 0, $idx) : $asn)); print ($link ? "" : "").""; print "".($idx > -1 ? substr($asn, $idx+1) : " ")."\n"; if ($ShowISP =~ /P/i) { print "".($_asn_p{$key}?Format_Number($_asn_p{$key}):" ").""; } if ($ShowISP =~ /P/i) { print "".($_asn_p{$key}?"$p_p %":' ').""; } if ($ShowISP =~ /H/i) { print "".($_asn_h{$key}?Format_Number($_asn_h{$key}):" ").""; } if ($ShowISP =~ /H/i) { print "".($_asn_h{$key}?"$p_h %":' ').""; } if ($ShowISP =~ /B/i) { print "".Format_Bytes($_asn_k{$key}).""; } if ($ShowISP =~ /L/i) { print "".($_asn_p{$key}?Format_Date($_asn_l{$key},1):'-').""; } print "\n"; $total_p += $_asn_p{$key}||0; $total_h += $_asn_h{$key}; $total_k += $_asn_k{$key}||0; $count++; } if ($Debug) { debug("Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h",2); } $rest_p=0; $rest_h=$TotalHits-$total_h; $rest_k=0; if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other cities # print ""; # print " "; # if ($ShowISP =~ /P/i) { print " "; } # if ($ShowISP =~ /P/i) { print " "; } # if ($ShowISP =~ /H/i) { print " "; } # if ($ShowISP =~ /H/i) { print " "; } # if ($ShowISP =~ /B/i) { print " "; } # if ($ShowISP =~ /L/i) { print " "; } # print "\n"; my $p_p; my $p_h; if ($TotalPages) { $p_p=int($rest_p/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($rest_h/$TotalHits*1000)/10; } print ""; print "$Message[2]/$Message[0]"; print " \n"; if ($ShowISP =~ /P/i) { print "".($rest_p?Format_Number($rest_p):" ").""; } if ($ShowISP =~ /P/i) { print "".($rest_p?"$p_p %":' ').""; } if ($ShowISP =~ /H/i) { print "".($rest_h?Format_Number($rest_h):" ").""; } if ($ShowISP =~ /H/i) { print "".($rest_h?"$p_h %":' ').""; } if ($ShowISP =~ /B/i) { print "".Format_Bytes($rest_k).""; } if ($ShowISP =~ /L/i) { print " "; } print "\n"; } &tab_end(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_asn_maxmind { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } print ""; print "GeoIP
ASN
"; print ""; } elsif ($param) { my $ip=0; my $key; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $ip=4; $key=$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $ip=6; $key=$param; } print ""; my $asn = 0; if ($key && $ip==4) { $asn = TmpLookup_geoip_asn_maxmind($param); if (!$asn && $type eq 'geoippureperl') { # Function org_by_addr does not exists in PurePerl but org_by_name do same $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; } elsif (!$asn) { $asn=$geoip_asn_maxmind->org_by_addr($param) if $geoip_asn_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetASNByIp for $param: [$asn]",5); } } if ($key && $ip==6) { debug(" Plugin $PluginName: IPv6 not supported by MaxMind Free DBs: $key",3); } if (! $key) { $asn = TmpLookup_geoip_asn_maxmind($param); if (!$asn && $type eq 'geoippureperl') { $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; } elsif (!$asn) { $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$asn]",5); } } if (length($asn)>0) { my $link = ''; my $idx = index(trim($asn), ' '); if ($LookupLink){ if ($idx < 0 && $asn =~ m/^A/){ $link .= $LookupLink.$asn; } elsif (substr($asn, 0, $idx) =~ m/^A/){$link .= $LookupLink.substr($asn, 0, $idx); } } if ($link){ $link = "";} if ($idx > -1 ) {$asn = substr(trim($asn), $idx+1);} if (length($asn) <= $MAXLENGTH) { print "$link$asn".($link ? "" : ""); } else { print $link.substr($asn,0,$MAXLENGTH).'...'.($link ? "" : ""); } } else { print "$Message[0]"; } print ""; } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionInitHashArray_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionInitHashArray_geoip_asn_maxmind { # my $param="$_[0]"; # <----- if ($Debug) { debug(" Plugin $PluginName: Init_HashArray"); } %_asn_p = %_asn_h = %_asn_k = %_asn_l =(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessIP_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessIp_geoip_asn_maxmind { my $param="$_[0]"; # Param must be an IP # <----- my $asn = TmpLookup_geoip_asn_maxmind($param); if (!$asn && $type eq 'geoippureperl') { # Function org_by_addr does not exists in PurePerl but org_by_name do same $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; } elsif (!$asn) { $asn=$geoip_asn_maxmind->org_by_addr($param) if $geoip_asn_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetASNByIp for $param: [$asn]",5); } if ($asn) { $asn =~ s/\s/_/g; $_asn_h{$asn}++; } else { $_asn_h{'unknown'}++; } # if ($timerecord > $_asn_l{$city}) { $_asn_l{$city}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessHostname_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessHostname_geoip_asn_maxmind { my $param="$_[0]"; # Param must be an IP # <----- my $asn = TmpLookup_geoip_asn_maxmind($param); if (!$asn && $type eq 'geoippureperl') { $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; } elsif (!$asn) { $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$asn]",5); } if ($asn) { $asn =~ s/\s/_/g; $_asn_h{$asn}++; } else { $_asn_h{'unknown'}++; } # if ($timerecord > $_asn_l{$city}) { $_asn_l{$city}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionReadHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionReadHistory_geoip_asn_maxmind { my $issectiontoload=shift; my $xmlold=shift; my $xmleb=shift; my $countlines=shift; # <----- if ($Debug) { debug(" Plugin $PluginName: Begin of PLUGIN_geoip_org_maxmind section"); } my @field=(); my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($issectiontoload) { $countloaded++; if ($field[2]) { $_asn_h{$field[0]}+=$field[2]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($xmlold?XMLDecodeFromHisto($_):$_)); $countlines++; } until ($field[0] eq "END_PLUGIN_$PluginName" || $field[0] eq "${xmleb}END_PLUGIN_$PluginName" || ! $_); if ($field[0] ne "END_PLUGIN_$PluginName" && $field[0] ne "${xmleb}END_PLUGIN_$PluginName") { error("History file is corrupted (End of section PLUGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" Plugin $PluginName: End of PLUGIN_geoip_org_maxmind section ($count entries, $countloaded loaded)"); } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionWriteHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionWriteHistory_geoip_asn_maxmind { my ($xml,$xmlbb,$xmlbs,$xmlbe,$xmlrb,$xmlrs,$xmlre,$xmleb,$xmlee)=(shift,shift,shift,shift,shift,shift,shift,shift,shift); if ($Debug) { debug(" Plugin $PluginName: SectionWriteHistory_$PluginName start - ".(scalar keys %_asn_h)); } # <----- print HISTORYTMP "\n"; if ($xml) { print HISTORYTMP "
$MAXNBOFSECTIONGIR\n"; } print HISTORYTMP "# Plugin key - Pages - Hits - Bandwidth - Last access\n"; #print HISTORYTMP "# The $MaxNbOfExtra[$extranum] first number of hits are first\n"; $ValueInFile{'plugin_$PluginName'}=tell HISTORYTMP; print HISTORYTMP "${xmlbb}BEGIN_PLUGIN_$PluginName${xmlbs}".(scalar keys %_asn_h)."${xmlbe}\n"; &BuildKeyList($MAXNBOFSECTIONGIR,1,\%_asn_h,\%_asn_h); my %keysinkeylist=(); foreach (@keylist) { $keysinkeylist{$_}=1; #my $page=$_asn_p{$_}||0; #my $bytes=$_asn_k{$_}||0; #my $lastaccess=$_asn_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_asn_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } foreach (keys %_asn_h) { if ($keysinkeylist{$_}) { next; } #my $page=$_asn_p{$_}||0; #my $bytes=$_asn_k{$_}||0; #my $lastaccess=$_asn_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_asn_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } print HISTORYTMP "${xmleb}END_PLUGIN_$PluginName${xmlee}\n"; # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadOverrideFile # Attempts to load a comma delimited file that will override the GeoIP database # Useful for Intranet records # CSV format: IP,2-char Country code #----------------------------------------------------------------------------- sub LoadOverrideFile_geoip_asn_maxmind{ my $filetoload=""; if ($OverrideFile){ if (!open(GEOIPFILE, $OverrideFile)){ debug("Plugin $PluginName: Unable to open override file: $OverrideFile"); $LoadedOverride = 1; return; } }else{ my $conf = (exists(&Get_Config_Name) ? Get_Config_Name() : $SiteConfig); if ($conf && open(GEOIPFILE,"$DirData/$PluginName.$conf.txt")) { $filetoload="$DirData/$PluginName.$conf.txt"; } elsif (open(GEOIPFILE,"$DirData/$PluginName.txt")) { $filetoload="$DirData/$PluginName.txt"; } else { debug("No override file \"$DirData/$PluginName.txt\": $!"); } } if ($filetoload) { # This is the fastest way to load with regexp that I know while (){ chomp $_; s/\r//; my @record = split(",", $_); # replace quotes if they were used in the file foreach (@record){ $_ =~ s/"//g; } # store in hash $TmpLookup{$record[0]} = $record[1]; } close GEOIPFILE; debug(" Plugin $PluginName: Overload file loaded: ".(scalar keys %TmpLookup)." entries found."); } $LoadedOverride = 1; return; } sub trim($) { my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return $string; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: TmpLookup # Searches the temporary hash for the parameter value and returns the corresponding # GEOIP entry #----------------------------------------------------------------------------- sub TmpLookup_geoip_asn_maxmind(){ $param = shift; if (!$LoadedOverride){&LoadOverrideFile_geoip_asn_maxmind();} # my $val; # if ($geoip_asn_maxmind && # (($type eq 'geoip' && $geoip_asn_maxmind->VERSION >= 1.30) || # $type eq 'geoippureperl' && $geoip_asn_maxmind->VERSION >= 1.17)){ # $val = $TmpLookup{$geoip_asn_maxmind->get_ip_address($param)}; # } # else {$val = $TmpLookup{$param};} # return $val || ''; return $TmpLookup{$param}||''; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/geoip.pm0000640000175000017500000002320712410217071017043 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GeoIp Maxmind AWStats plugin # This plugin allow you to get country report with countries detected # from a Geographical database (GeoIP internal database) instead of domain # hostname suffix. # Need the country database from Maxmind (free). #----------------------------------------------------------------------------- # Perl Required Modules: Geo::IP or Geo::IP::PurePerl #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES use vars qw/ $type /; $type='geoip'; if (!eval ('require "Geo/IP.pm";')) { $error1=$@; $type='geoippureperl'; if (!eval ('require "Geo/IP/PurePerl.pm";')) { $error2=$@; $ret=($error1||$error2)?"Error:\n$error1$error2":""; $ret.="Error: Need Perl module Geo::IP or Geo::IP::PurePerl"; return $ret; } } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.4"; my $PluginHooksFunctions="GetCountryCodeByAddr GetCountryCodeByName ShowInfoHost"; my $PluginName = "geoip"; my $LoadedOverride=0; my $OverrideFile=""; my %TmpDomainLookup; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $gi /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_geoip { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin $PluginName: InitParams=$InitParams",1); my ($mode,$tmpdatafile)=split(/\s+/,$InitParams,2); my ($datafile,$override)=split(/\+/,$tmpdatafile,2); if (! $datafile) { $datafile="$PluginName.dat"; } else { $datafile =~ s/%20/ /g; } if ($type eq 'geoippureperl') { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } if ($override){$OverrideFile=$override;} %TmpDomainLookup=(); debug(" Plugin $PluginName: GeoIP try to initialize type=$type mode=$mode override=$override datafile=$datafile",1); if ($type eq 'geoippureperl') { $gi = Geo::IP::PurePerl->open($datafile, $mode); } else { $gi = Geo::IP->open($datafile, $mode); } # Fails on some GeoIP version # debug(" Plugin $PluginName: GeoIP initialized database_info=".$gi->database_info()); if ($gi) { debug(" Plugin $PluginName: GeoIP plugin and gi object initialized",1); } else { return "Error: Failed to create gi object for datafile=".$datafile; } # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByAddr_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByAddr is called to translate an ip into a country code in lower case. #----------------------------------------------------------------------------- sub GetCountryCodeByAddr_geoip { my $param="$_[0]"; # <----- if (! $param) { return ''; } my $res= TmpLookup_geoip($param); if (! $res) { $res=lc($gi->country_code_by_addr($param)) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: Already resolved to [$res]",5); } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByName_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByName is called to translate a host name into a country code in lower case. #----------------------------------------------------------------------------- sub GetCountryCodeByName_geoip { my $param="$_[0]"; # <----- if (! $param) { return ''; } my $res = TmpLookup_geoip($param); if (! $res) { $res=lc($gi->country_code_by_name($param)) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: Already resolved to [$res]",5); } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ tr/&/&/s; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } print ""; print "GeoIP
Country
"; print ""; } elsif ($param) { my $ip=0; my $key; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $ip=4; $key=$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $ip=6; $key=$param; } print ""; if ($key && $ip==4) { my $res = TmpLookup_geoip($param); if (!$res){$res=lc($gi->country_code_by_addr($param)) if $gi;} if ($Debug) { debug(" Plugin $PluginName: GetCountryByIp for $param: [$res]",5); } if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"$Message[0]"; } else { print "$Message[0]"; } } if ($key && $ip==6) { print "$Message[0]"; } if (! $key) { my $res = TmpLookup_geoip($param); if (!$res){$res=lc($gi->country_code_by_name($param)) if $gi;} if ($Debug) { debug(" Plugin $PluginName: GetCountryByHostname for $param: [$res]",5); } if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"$Message[0]"; } else { print "$Message[0]"; } } print ""; } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadOverrideFile # Attempts to load a comma delimited file that will override the GeoIP database # Useful for Intranet records # CSV format: IP,2-char Country code #----------------------------------------------------------------------------- sub LoadOverrideFile_geoip{ my $filetoload=""; if ($OverrideFile){ if (!open(GEOIPFILE, $OverrideFile)){ debug("Plugin $PluginName: Unable to open override file: $OverrideFile"); $LoadedOverride = 1; return; } }else{ my $conf = (exists(&Get_Config_Name) ? Get_Config_Name() : $SiteConfig); if ($conf && open(GEOIPFILE,"$DirData/$PluginName.$conf.txt")) { $filetoload="$DirData/$PluginName.$conf.txt"; } elsif (open(GEOIPFILE,"$DirData/$PluginName.txt")) { $filetoload="$DirData/$PluginName.txt"; } else { debug("No override file \"$DirData/$PluginName.txt\": $!"); } } if ($filetoload) { # This is the fastest way to load with regexp that I know while (){ chomp $_; s/\r//; my @record = split(",", $_); # replace quotes if they were used in the file foreach (@record){ $_ =~ s/"//g; } # store in hash $TmpDomainLookup{$record[0]} = $record[1]; } close GEOIPFILE; debug(" Plugin $PluginName: Overload file loaded: ".(scalar keys %TmpDomainLookup)." entries found."); } $LoadedOverride = 1; return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: TmpLookup # Searches the temporary hash for the parameter value and returns the corresponding # GEOIP entry #----------------------------------------------------------------------------- sub TmpLookup_geoip(){ $param = shift; if (!$LoadedOverride){&LoadOverrideFile_geoip();} #my $val; #if ($gi && #(($type eq 'geoip' && $gi->VERSION >= 1.30) || # $type eq 'geoippureperl' && $gi->VERSION >= 1.17)){ # $val = $TmpDomainLookup{$gi->get_ip_address($param)}; #} #else {$val = $TmpDomainLookup{$param};} #return $val || ''; return $TmpDomainLookup{$param}||''; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/tooltips.pm0000640000175000017500000001767512410217071017631 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # Tooltips AWStats plugin # This plugin allow you to add some toolpus in AWStats HTML report pages. # The tooltip are in same language than the report (they are stored in the # awstats-tt-codelanguage.txt files in lang directory). #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES. # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.1"; my $PluginHooksFunctions="AddHTMLStyles AddHTMLBodyHeader"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $TOOLTIPWIDTH /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_tooltips { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin tooltips: InitParams=$InitParams",1); $TOOLTIPON=1; $TOOLTIPWIDTH=380; # Width of tooltips # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLStyles_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML styles at beginning of BODY section. #----------------------------------------------------------------------------- sub AddHTMLStyles_tooltips { # <----- print "div { font: 12px 'Arial','Verdana','Helvetica', sans-serif; text-align: justify; }\n"; print ".CTooltip { position:absolute; top: 0px; left: 0px; z-index: 2; width: ${TOOLTIPWIDTH}px; visibility:hidden; font: 8pt 'MS Comic Sans','Arial',sans-serif; background-color: #FFFFE6; padding: 8px; border: 1px solid black; }\n"; return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNTION: AddHTMLBodyHeader_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code at beginning of BODY section. #----------------------------------------------------------------------------- sub AddHTMLBodyHeader_tooltips { # <----- if ($FrameName ne 'mainleft') { # GET AND WRITE THE TOOLTIP STRINGS #--------------------------------------------------------------------- &_ReadAndOutputTooltipFile($Lang); # WRITE TOOLTIPS JAVASCRIPT CODE #--------------------------------------------------------------------- # Position .style.pixelLeft/.pixelHeight/.pixelWidth/.pixelTop IE OK Opera OK # .style.left/.height/.width/.top IE456 OK Netscape67 OK XHTML OK # document.getElementById IE456 OK Opera OK Netscape67 OK XHTML OK # document.body.offsetWidth|document.body.style.pixelWidth IE OK Opera OK Netscape OK XHTML KO Visible width of container # document.documentElement.offsetWidth XHTML OK Visible width of container # tooltipOBJ.offsetWidth|tooltipOBJ.style.pixelWidth IE OK Opera OK Netscape OK Width of an object # event.clientXY IE OK Opera OK Netscape KO XHTML KO Position of mouse # window.innerHeight IE OK Netscape OK Height of container # window.pageYOffset ? # document.body.scrollTop IE OK Opera OK Netscape OK XHTML KO Vertical position of scrollbar my $docwidth="document.body.offsetWidth"; my $doctop="document.body.scrollTop"; if ($BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml') { $docwidth="document.documentElement.offsetWidth"; $doctop="document.documentElement.scrollTop"; } print < function ShowTip(fArg) { var tooltipOBJ = (document.getElementById) ? document.getElementById('tt' + fArg) : eval("document.all['tt" + fArg + "']"); if (tooltipOBJ != null) { var tooltipLft = ($docwidth?$docwidth:document.body.style.pixelWidth) - (tooltipOBJ.offsetWidth?tooltipOBJ.offsetWidth:(tooltipOBJ.style.pixelWidth?tooltipOBJ.style.pixelWidth:$TOOLTIPWIDTH)) - 30; var tooltipTop = 10; if (navigator.appName == 'Netscape') { tooltipTop = ($doctop>=0?$doctop+10:event.clientY+10); tooltipOBJ.style.top = tooltipTop+"px"; tooltipOBJ.style.left = tooltipLft+"px"; } else { tooltipTop = ($doctop>=0?$doctop+10:event.clientY+10); tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10); EOF # Seul IE en HTML a besoin de code suppl�mentaire. IE en xhtml est OK if ($BuildReportFormat ne 'xhtml' && $BuildReportFormat ne 'xml') { print < tooltipLft) && (event.clientY < (tooltipOBJ.scrollHeight?tooltipOBJ.scrollHeight:tooltipOBJ.style.pixelHeight) + 10)) { tooltipTop = ($doctop?$doctop:document.body.offsetTop) + event.clientY + 20; } EOF } print < EOF } return 1; # -----> } #------------------------------------------------------------------------------ # Function: Get the tooltip texts for a specified language and write it # Parameters: LanguageId # Input: $DirLang $DIR # Output: Full tooltips text # Return: None #------------------------------------------------------------------------------ sub _ReadAndOutputTooltipFile { # Check lang files in common possible directories : # Windows and standard package: "$DIR/lang" (lang in same dir than awstats.pl) # Debian package : "/usr/share/awstats/lang" # Other possible directories : "./lang" my @PossibleLangDir=("$DirLang","${DIR}/lang","/usr/share/awstats/lang","./lang"); my $FileLang=''; my $logtype=lc($LogType ne 'S'?$LogType:'W'); foreach my $dir (@PossibleLangDir) { my $searchdir=$dir; if ($searchdir && (!($searchdir =~ /\/$/)) && (!($searchdir =~ /\\$/)) ) { $searchdir .= "/"; } if (open(LANG,"${searchdir}tooltips_${logtype}/awstats-tt-$_[0].txt")) { $FileLang="${searchdir}tooltips_${logtype}/awstats-tt-$_[0].txt"; last; } } # If file not found, we try english if (! $FileLang) { foreach my $dir (@PossibleLangDir) { my $searchdir=$dir; if ($searchdir && (!($searchdir =~ /\/$/)) && (!($searchdir =~ /\\$/)) ) { $searchdir .= "/"; } if (open(LANG,"${searchdir}tooltips_${logtype}/awstats-tt-en.txt")) { $FileLang="${searchdir}tooltips_${logtype}/awstats-tt-en.txt"; last; } } } if ($Debug) { debug(" Plugin tooltips: Call to Read_Language_Tooltip [FileLang=\"$FileLang\"]"); } if ($FileLang) { my $aws_PROG=ucfirst($PROG); my $aws_VisitTimeout = $VISITTIMEOUT/10000*60; my $aws_NbOfRobots = scalar keys %RobotsHashIDLib; my $aws_NbOfWorms = scalar @WormsSearchIDOrder; my $aws_NbOfSearchEngines = scalar keys %SearchEnginesHashLib; while () { if ($_ =~ /\ #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.5"; my $PluginHooksFunctions="AddHTMLMenuLink AddHTMLGraph ShowInfoHost SectionInitHashArray SectionProcessIp SectionProcessHostname SectionReadHistory SectionWriteHistory"; my $PluginName="geoip_city_maxmind"; my $LoadedOverride=0; my $OverrideFile=""; my %TmpDomainLookup = {}; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $geoip_city_maxmind %_city_p %_city_h %_city_k %_city_l $MAXNBOFSECTIONGIR /; my %countrylib=('ca'=>'Canadian Regions','us'=>'US regions'); my %regca=( 'AB',"Alberta", 'BC',"British Columbia", 'MB',"Manitoba", 'NB',"New Brunswick", 'NF',"Newfoundland", 'NS',"Nova Scotia", 'NU',"Nunavut", 'ON',"Ontario", 'PE',"Prince Edward Island", 'QC',"Quebec", 'SK',"Saskatchewan", 'NT',"Northwest Territories", 'YT',"Yukon Territory" ); my %regus=( 'AA',"Armed Forces Americas", 'AE',"Armed Forces Europe, Middle East, & Canada", 'AK',"Alaska", 'AL',"Alabama", 'AP',"Armed Forces Pacific", 'AR',"Arkansas", 'AS',"American Samoa", 'AZ',"Arizona", 'CA',"California", 'CO',"Colorado", 'CT',"Connecticut", 'DC',"District of Columbia", 'DE',"Delaware", 'FL',"Florida", 'FM',"Federated States of Micronesia", 'GA',"Georgia", 'GU',"Guam", 'HI',"Hawaii", 'IA',"Iowa", 'ID',"Idaho", 'IL',"Illinois", 'IN',"Indiana", 'KS',"Kansas", 'KY',"Kentucky", 'LA',"Louisiana", 'MA',"Massachusetts", 'MD',"Maryland", 'ME',"Maine", 'MH',"Marshall Islands", 'MI',"Michigan", 'MN',"Minnesota", 'MO',"Missouri", 'MP',"Northern Mariana Islands", 'MS',"Mississippi", 'MT',"Montana", 'NC',"North Carolina", 'ND',"North Dakota", 'NE',"Nebraska", 'NH',"New Hampshire", 'NJ',"New Jersey", 'NM',"New Mexico", 'NV',"Nevada", 'NY',"New York", 'OH',"Ohio", 'OK',"Oklahoma", 'OR',"Oregon", 'PA',"Pennsylvania", 'PR',"Puerto Rico", 'PW',"Palau", 'RI',"Rhode Island", 'SC',"South Carolina", 'SD',"South Dakota", 'TN',"Tennessee", 'TX',"Texas", 'UT',"Utah", 'VA',"Virginia", 'VI',"Virgin Islands", 'VT',"Vermont", 'WA',"Washington", 'WV',"West Virginia", 'WI',"Wisconsin", 'WY',"Wyoming" ); my %region=( 'ca'=>\%regca, 'us'=>\%regus ); # "iso 3166 country code"_"fips 10-4 region code","region name" my %regall=( "AD_02","Canillo", "AD_03","Encamp", "AD_04","La Massana", "AD_05","Ordino", "AD_06","Sant Julia de Loria", "AD_07","Andorra la Vella", "AD_08","Escaldes-Engordany", "AE_01","Abu Zaby", "AE_03","Dubay", "AE_04","Al Fujayrah", "AE_05","Ra's al Khaymah", "AE_06","Ash Shariqah", "AE_07","Umm al Qaywayn", "AF_01","Badakhshan", "AF_02","Badghis", "AF_03","Baghlan", "AF_05","Bamian", "AF_06","Farah", "AF_07","Faryab", "AF_08","Ghazni", "AF_09","Ghowr", "AF_10","Helmand", "AF_11","Herat", "AF_13","Kabol", "AF_14","Kapisa", "AF_15","Konar", "AF_16","Laghman", "AF_17","Lowgar", "AF_18","Nangarhar", "AF_19","Nimruz", "AF_20","Oruzgan", "AF_21","Paktia", "AF_22","Parvan", "AF_23","Kandahar", "AF_24","Kondoz", "AF_26","Takhar", "AF_27","Vardak", "AF_28","Zabol", "AF_29","Paktika", "AF_30","Balkh", "AF_31","Jowzjan", "AF_32","Samangan", "AF_33","Sar-e Pol", "AF_34","Konar", "AF_35","Laghman", "AF_36","Paktia", "AF_37","Khowst", "AF_38","Nurestan", "AG_01","Barbuda", "AG_03","Saint George", "AG_04","Saint John", "AG_05","Saint Mary", "AG_06","Saint Paul", "AG_07","Saint Peter", "AG_08","Saint Philip", "AL_40","Berat", "AL_41","Diber", "AL_42","Durres", "AL_43","Elbasan", "AL_44","Fier", "AL_45","Gjirokaster", "AL_46","Korce", "AL_47","Kukes", "AL_48","Lezhe", "AL_49","Shkoder", "AL_50","Tirane", "AL_51","Vlore", "AM_01","Aragatsotn", "AM_02","Ararat", "AM_03","Armavir", "AM_04","Geghark'unik'", "AM_05","Kotayk'", "AM_06","Lorri", "AM_07","Shirak", "AM_08","Syunik'", "AM_09","Tavush", "AM_10","Vayots' Dzor", "AM_11","Yerevan", "AO_01","Benguela", "AO_02","Bie", "AO_03","Cabinda", "AO_04","Cuando Cubango", "AO_05","Cuanza Norte", "AO_06","Cuanza Sul", "AO_07","Cunene", "AO_08","Huambo", "AO_09","Huila", "AO_12","Malanje", "AO_14","Moxico", "AO_15","Uige", "AO_16","Zaire", "AO_17","Lunda Norte", "AO_18","Lunda Sul", "AO_19","Bengo", "AO_20","Luanda", "AR_01","Buenos Aires", "AR_02","Catamarca", "AR_03","Chaco", "AR_04","Chubut", "AR_05","Cordoba", "AR_06","Corrientes", "AR_07","Distrito Federal", "AR_08","Entre Rios", "AR_09","Formosa", "AR_10","Jujuy", "AR_11","La Pampa", "AR_12","La Rioja", "AR_13","Mendoza", "AR_14","Misiones", "AR_15","Neuquen", "AR_16","Rio Negro", "AR_17","Salta", "AR_18","San Juan", "AR_19","San Luis", "AR_20","Santa Cruz", "AR_21","Santa Fe", "AR_22","Santiago del Estero", "AR_23","Tierra del Fuego", "AR_24","Tucuman", "AT_01","Burgenland", "AT_02","Karnten", "AT_03","Niederosterreich", "AT_04","Oberosterreich", "AT_05","Salzburg", "AT_06","Steiermark", "AT_07","Tirol", "AT_08","Vorarlberg", "AT_09","Wien", "AU_01","Australian Capital Territory", "AU_02","New South Wales", "AU_03","Northern Territory", "AU_04","Queensland", "AU_05","South Australia", "AU_06","Tasmania", "AU_07","Victoria", "AU_08","Western Australia", "AZ_01","Abseron", "AZ_02","Agcabadi", "AZ_03","Agdam", "AZ_04","Agdas", "AZ_05","Agstafa", "AZ_06","Agsu", "AZ_07","Ali Bayramli", "AZ_08","Astara", "AZ_09","Baki", "AZ_10","Balakan", "AZ_11","Barda", "AZ_12","Beylaqan", "AZ_13","Bilasuvar", "AZ_14","Cabrayil", "AZ_15","Calilabad", "AZ_16","Daskasan", "AZ_17","Davaci", "AZ_18","Fuzuli", "AZ_19","Gadabay", "AZ_20","Ganca", "AZ_21","Goranboy", "AZ_22","Goycay", "AZ_23","Haciqabul", "AZ_24","Imisli", "AZ_25","Ismayilli", "AZ_26","Kalbacar", "AZ_27","Kurdamir", "AZ_28","Lacin", "AZ_29","Lankaran", "AZ_30","Lankaran", "AZ_31","Lerik", "AZ_32","Masalli", "AZ_33","Mingacevir", "AZ_34","Naftalan", "AZ_35","Naxcivan", "AZ_36","Neftcala", "AZ_37","Oguz", "AZ_38","Qabala", "AZ_39","Qax", "AZ_40","Qazax", "AZ_41","Qobustan", "AZ_42","Quba", "AZ_43","Qubadli", "AZ_44","Qusar", "AZ_45","Saatli", "AZ_46","Sabirabad", "AZ_47","Saki", "AZ_48","Saki", "AZ_49","Salyan", "AZ_50","Samaxi", "AZ_51","Samkir", "AZ_52","Samux", "AZ_53","Siyazan", "AZ_54","Sumqayit", "AZ_55","Susa", "AZ_56","Susa", "AZ_57","Tartar", "AZ_58","Tovuz", "AZ_59","Ucar", "AZ_60","Xacmaz", "AZ_61","Xankandi", "AZ_62","Xanlar", "AZ_63","Xizi", "AZ_64","Xocali", "AZ_65","Xocavand", "AZ_66","Yardimli", "AZ_67","Yevlax", "AZ_68","Yevlax", "AZ_69","Zangilan", "AZ_70","Zaqatala", "AZ_71","Zardab", "BA_01","Federation of Bosnia and Herzegovina", "BA_02","Republika Srpska", "BB_01","Christ Church", "BB_02","Saint Andrew", "BB_03","Saint George", "BB_04","Saint James", "BB_05","Saint John", "BB_06","Saint Joseph", "BB_07","Saint Lucy", "BB_08","Saint Michael", "BB_09","Saint Peter", "BB_10","Saint Philip", "BB_11","Saint Thomas", "BD_01","Barisal", "BD_04","Bandarban", "BD_05","Comilla", "BD_12","Mymensingh", "BD_13","Noakhali", "BD_15","Patuakhali", "BD_22","Bagerhat", "BD_23","Bhola", "BD_24","Bogra", "BD_25","Barguna", "BD_26","Brahmanbaria", "BD_27","Chandpur", "BD_28","Chapai Nawabganj", "BD_29","Chattagram", "BD_30","Chuadanga", "BD_31","Cox's Bazar", "BD_32","Dhaka", "BD_33","Dinajpur", "BD_34","Faridpur", "BD_35","Feni", "BD_36","Gaibandha", "BD_37","Gazipur", "BD_38","Gopalganj", "BD_39","Habiganj", "BD_40","Jaipurhat", "BD_41","Jamalpur", "BD_42","Jessore", "BD_43","Jhalakati", "BD_44","Jhenaidah", "BD_45","Khagrachari", "BD_46","Khulna", "BD_47","Kishorganj", "BD_48","Kurigram", "BD_49","Kushtia", "BD_50","Laksmipur", "BD_51","Lalmonirhat", "BD_52","Madaripur", "BD_53","Magura", "BD_54","Manikganj", "BD_55","Meherpur", "BD_56","Moulavibazar", "BD_57","Munshiganj", "BD_58","Naogaon", "BD_59","Narail", "BD_60","Narayanganj", "BD_61","Narsingdi", "BD_62","Nator", "BD_63","Netrakona", "BD_64","Nilphamari", "BD_65","Pabna", "BD_66","Panchagar", "BD_67","Parbattya Chattagram", "BD_68","Pirojpur", "BD_69","Rajbari", "BD_70","Rajshahi", "BD_71","Rangpur", "BD_72","Satkhira", "BD_73","Shariyatpur", "BD_74","Sherpur", "BD_75","Sirajganj", "BD_76","Sunamganj", "BD_77","Sylhet", "BD_78","Tangail", "BD_79","Thakurgaon", "BE_01","Antwerpen", "BE_02","Brabant", "BE_03","Hainaut", "BE_04","Liege", "BE_05","Limburg", "BE_06","Luxembourg", "BE_07","Namur", "BE_08","Oost-Vlaanderen", "BE_09","West-Vlaanderen", "BE_10","Brabant Wallon", "BE_11","Brussels Hoofdstedelijk Gewest", "BE_12","Vlaams-Brabant", "BF_15","Bam", "BF_19","Boulkiemde", "BF_20","Ganzourgou", "BF_21","Gnagna", "BF_28","Kouritenga", "BF_33","Oudalan", "BF_34","Passore", "BF_36","Sanguie", "BF_40","Soum", "BF_42","Tapoa", "BF_44","Zoundweogo", "BF_45","Bale", "BF_46","Banwa", "BF_47","Bazega", "BF_48","Bougouriba", "BF_49","Boulgou", "BF_50","Gourma", "BF_51","Houet", "BF_52","Ioba", "BF_53","Kadiogo", "BF_54","Kenedougou", "BF_55","Komoe", "BF_56","Komondjari", "BF_57","Kompienga", "BF_58","Kossi", "BF_59","Koulpelogo", "BF_60","Kourweogo", "BF_61","Leraba", "BF_62","Loroum", "BF_63","Mouhoun", "BF_64","Namentenga", "BF_65","Naouri", "BF_66","Nayala", "BF_67","Noumbiel", "BF_68","Oubritenga", "BF_69","Poni", "BF_70","Sanmatenga", "BF_71","Seno", "BF_72","Sissili", "BF_73","Sourou", "BF_74","Tuy", "BF_75","Yagha", "BF_76","Yatenga", "BF_77","Ziro", "BF_78","Zondoma", "BG_33","Mikhaylovgrad", "BG_38","Blagoevgrad", "BG_39","Burgas", "BG_40","Dobrich", "BG_41","Gabrovo", "BG_42","Grad Sofiya", "BG_43","Khaskovo", "BG_44","Kurdzhali", "BG_45","Kyustendil", "BG_46","Lovech", "BG_47","Montana", "BG_48","Pazardzhik", "BG_49","Pernik", "BG_50","Pleven", "BG_51","Plovdiv", "BG_52","Razgrad", "BG_53","Ruse", "BG_54","Shumen", "BG_55","Silistra", "BG_56","Sliven", "BG_57","Smolyan", "BG_58","Sofiya", "BG_59","Stara Zagora", "BG_60","Turgovishte", "BG_61","Varna", "BG_62","Veliko Turnovo", "BG_63","Vidin", "BG_64","Vratsa", "BG_65","Yambol", "BH_01","Al Hadd", "BH_02","Al Manamah", "BH_03","Al Muharraq", "BH_05","Jidd Hafs", "BH_06","Sitrah", "BH_08","Al Mintaqah al Gharbiyah", "BH_09","Mintaqat Juzur Hawar", "BH_10","Al Mintaqah ash Shamaliyah", "BH_11","Al Mintaqah al Wusta", "BH_12","Madinat", "BH_13","Ar Rifa", "BH_14","Madinat Hamad", "BI_02","Bujumbura", "BI_09","Bubanza", "BI_10","Bururi", "BI_11","Cankuzo", "BI_12","Cibitoke", "BI_13","Gitega", "BI_14","Karuzi", "BI_15","Kayanza", "BI_16","Kirundo", "BI_17","Makamba", "BI_18","Muyinga", "BI_19","Ngozi", "BI_20","Rutana", "BI_21","Ruyigi", "BI_22","Muramvya", "BI_23","Mwaro", "BJ_01","Atakora", "BJ_02","Atlantique", "BJ_03","Borgou", "BJ_04","Mono", "BJ_05","Oueme", "BJ_06","Zou", "BM_01","Devonshire", "BM_02","Hamilton", "BM_03","Hamilton", "BM_04","Paget", "BM_05","Pembroke", "BM_06","Saint George", "BM_07","Saint George's", "BM_08","Sandys", "BM_09","Smiths", "BM_10","Southampton", "BM_11","Warwick", "BN_07","Alibori", "BN_08","Belait", "BN_09","Brunei and Muara", "BN_10","Temburong", "BN_11","Collines", "BN_12","Kouffo", "BN_13","Donga", "BN_14","Littoral", "BN_15","Tutong", "BN_16","Oueme", "BN_17","Plateau", "BN_18","Zou", "BO_01","Chuquisaca", "BO_02","Cochabamba", "BO_03","El Beni", "BO_04","La Paz", "BO_05","Oruro", "BO_06","Pando", "BO_07","Potosi", "BO_08","Santa Cruz", "BO_09","Tarija", "BR_01","Acre", "BR_02","Alagoas", "BR_03","Amapa", "BR_04","Amazonas", "BR_05","Bahia", "BR_06","Ceara", "BR_07","Distrito Federal", "BR_08","Espirito Santo", "BR_11","Mato Grosso do Sul", "BR_13","Maranhao", "BR_14","Mato Grosso", "BR_15","Minas Gerais", "BR_16","Para", "BR_17","Paraiba", "BR_18","Parana", "BR_20","Piaui", "BR_21","Rio de Janeiro", "BR_22","Rio Grande do Norte", "BR_23","Rio Grande do Sul", "BR_24","Rondonia", "BR_25","Roraima", "BR_26","Santa Catarina", "BR_27","Sao Paulo", "BR_28","Sergipe", "BR_29","Goias", "BR_30","Pernambuco", "BR_31","Tocantins", "BS_05","Bimini", "BS_06","Cat Island", "BS_10","Exuma", "BS_13","Inagua", "BS_15","Long Island", "BS_16","Mayaguana", "BS_18","Ragged Island", "BS_22","Harbour Island", "BS_23","New Providence", "BS_24","Acklins and Crooked Islands", "BS_25","Freeport", "BS_26","Fresh Creek", "BS_27","Governor's Harbour", "BS_28","Green Turtle Cay", "BS_29","High Rock", "BS_30","Kemps Bay", "BS_31","Marsh Harbour", "BS_32","Nichollstown and Berry Islands", "BS_33","Rock Sound", "BS_34","Sandy Point", "BS_35","San Salvador and Rum Cay", "BT_05","Bumthang", "BT_06","Chhukha", "BT_07","Chirang", "BT_08","Daga", "BT_09","Geylegphug", "BT_10","Ha", "BT_11","Lhuntshi", "BT_12","Mongar", "BT_13","Paro", "BT_14","Pemagatsel", "BT_15","Punakha", "BT_16","Samchi", "BT_17","Samdrup", "BT_18","Shemgang", "BT_19","Tashigang", "BT_20","Thimphu", "BT_21","Tongsa", "BT_22","Wangdi Phodrang", "BW_01","Central", "BW_02","Chobe", "BW_03","Ghanzi", "BW_04","Kgalagadi", "BW_05","Kgatleng", "BW_06","Kweneng", "BW_07","Ngamiland", "BW_08","North-East", "BW_09","South-East", "BW_10","Southern", "BY_01","Brestskaya Voblasts'", "BY_02","Homyel'skaya Voblasts'", "BY_03","Hrodzyenskaya Voblasts'", "BY_04","Minsk", "BY_05","Minskaya Voblasts'", "BY_06","Mahilyowskaya Voblasts'", "BY_07","Vitsyebskaya Voblasts'", "BZ_01","Belize", "BZ_02","Cayo", "BZ_03","Corozal", "BZ_04","Orange Walk", "BZ_05","Stann Creek", "BZ_06","Toledo", "CA_01","Alberta", "CA_02","British Columbia", "CA_03","Manitoba", "CA_04","New Brunswick", "CA_05","Newfoundland and Labrador", "CA_07","Nova Scotia", "CA_08","Ontario", "CA_09","Prince Edward Island", "CA_10","Quebec", "CA_11","Saskatchewan", "CA_12","Yukon Territory", "CA_13","Northwest Territories", "CA_14","Nunavut", "CF_01","Bamingui-Bangoran", "CF_02","Basse-Kotto", "CF_03","Haute-Kotto", "CF_04","Mambere-Kadei", "CF_05","Haut-Mbomou", "CF_06","Kemo", "CF_07","Lobaye", "CF_08","Mbomou", "CF_09","Nana-Mambere", "CF_11","Ouaka", "CF_12","Ouham", "CF_13","Ouham-Pende", "CF_14","Vakaga", "CF_15","Nana-Grebizi", "CF_16","Sangha-Mbaere", "CF_17","Ombella-Mpoko", "CF_18","Bangui", "CG_01","Bouenza", "CG_03","Cuvette", "CG_04","Kouilou", "CG_05","Lekoumou", "CG_06","Likouala", "CG_07","Niari", "CG_08","Plateaux", "CG_10","Sangha", "CG_11","Pool", "CG_12","Brazzaville", "CH_01","Aargau", "CH_02","Ausser-Rhoden", "CH_03","Basel-Landschaft", "CH_04","Basel-Stadt", "CH_05","Bern", "CH_06","Fribourg", "CH_07","Geneve", "CH_08","Glarus", "CH_09","Graubunden", "CH_10","Inner-Rhoden", "CH_11","Luzern", "CH_12","Neuchatel", "CH_13","Nidwalden", "CH_14","Obwalden", "CH_15","Sankt Gallen", "CH_16","Schaffhausen", "CH_17","Schwyz", "CH_18","Solothurn", "CH_19","Thurgau", "CH_20","Ticino", "CH_21","Uri", "CH_22","Valais", "CH_23","Vaud", "CH_24","Zug", "CH_25","Zurich", "CH_26","Jura", "CI_01","Abengourou", "CI_03","Dabakala", "CI_05","Adzope", "CI_06","Agboville", "CI_07","Biankouma", "CI_11","Bouna", "CI_12","Boundiali", "CI_14","Danane", "CI_16","Divo", "CI_17","Ferkessedougou", "CI_18","Gagnoa", "CI_20","Katiola", "CI_21","Korhogo", "CI_23","Odienne", "CI_25","Seguela", "CI_26","Touba", "CI_27","Bongouanou", "CI_28","Issia", "CI_29","Lakota", "CI_30","Mankono", "CI_31","Oume", "CI_32","Soubre", "CI_33","Tingrela", "CI_34","Zuenoula", "CI_36","Bangolo", "CI_37","Beoumi", "CI_38","Bondoukou", "CI_39","Bouafle", "CI_40","Bouake", "CI_41","Daloa", "CI_42","Daoukro", "CI_44","Duekoue", "CI_45","Grand-Lahou", "CI_47","Man", "CI_48","Mbahiakro", "CI_49","Sakassou", "CI_50","San Pedro", "CI_51","Sassandra", "CI_52","Sinfra", "CI_53","Tabou", "CI_54","Tanda", "CI_55","Tiassale", "CI_56","Toumodi", "CI_57","Vavoua", "CI_61","Abidjan", "CI_62","Aboisso", "CI_63","Adiake", "CI_64","Alepe", "CI_65","Bocanda", "CI_66","Dabou", "CI_67","Dimbokro", "CI_68","Grand-Bassam", "CI_69","Guiglo", "CI_70","Jacqueville", "CI_71","Tiebissou", "CI_72","Toulepleu", "CI_73","Yamoussoukro", "CL_01","Valparaiso", "CL_02","Aisen del General Carlos Ibanez del Campo", "CL_03","Antofagasta", "CL_04","Araucania", "CL_05","Atacama", "CL_06","Bio-Bio", "CL_07","Coquimbo", "CL_08","Libertador General Bernardo O'Higgins", "CL_09","Los Lagos", "CL_10","Magallanes y de la Antartica Chilena", "CL_11","Maule", "CL_12","Region Metropolitana", "CL_13","Tarapaca", "CM_04","Est", "CM_05","Littoral", "CM_07","Nord-Ouest", "CM_08","Ouest", "CM_09","Sud-Ouest", "CM_10","Adamaoua", "CM_11","Centre", "CM_12","Extreme-Nord", "CM_13","Nord", "CM_14","Sud", "CN_01","Anhui", "CN_02","Zhejiang", "CN_03","Jiangxi", "CN_04","Jiangsu", "CN_05","Jilin", "CN_06","Qinghai", "CN_07","Fujian", "CN_08","Heilongjiang", "CN_09","Henan", "CN_10","Hebei", "CN_11","Hunan", "CN_12","Hubei", "CN_13","Xinjiang", "CN_14","Xizang", "CN_15","Gansu", "CN_16","Guangxi", "CN_18","Guizhou", "CN_19","Liaoning", "CN_20","Nei Mongol", "CN_21","Ningxia", "CN_22","Beijing", "CN_23","Shanghai", "CN_24","Shanxi", "CN_25","Shandong", "CN_26","Shaanxi", "CN_27","Sichuan", "CN_28","Tianjin", "CN_29","Yunnan", "CN_30","Guangdong", "CN_31","Hainan", "CN_32","Chongqing", "CO_01","Amazonas", "CO_02","Antioquia", "CO_03","Arauca", "CO_04","Atlantico", "CO_08","Caqueta", "CO_09","Cauca", "CO_10","Cesar", "CO_11","Choco", "CO_12","Cordoba", "CO_14","Guaviare", "CO_15","Guainia", "CO_16","Huila", "CO_17","La Guajira", "CO_19","Meta", "CO_20","Narino", "CO_21","Norte de Santander", "CO_22","Putumayo", "CO_23","Quindio", "CO_24","Risaralda", "CO_25","San Andres y Providencia", "CO_26","Santander", "CO_27","Sucre", "CO_28","Tolima", "CO_29","Valle del Cauca", "CO_30","Vaupes", "CO_31","Vichada", "CO_32","Casanare", "CO_33","Cundinamarca", "CO_34","Distrito Especial", "CO_35","Bolivar", "CO_36","Boyaca", "CO_37","Caldas", "CO_38","Magdalena", "CR_01","Alajuela", "CR_02","Cartago", "CR_03","Guanacaste", "CR_04","Heredia", "CR_06","Limon", "CR_07","Puntarenas", "CR_08","San Jose", "CU_01","Pinar del Rio", "CU_02","Ciudad de la Habana", "CU_03","Matanzas", "CU_04","Isla de la Juventud", "CU_05","Camaguey", "CU_07","Ciego de Avila", "CU_08","Cienfuegos", "CU_09","Granma", "CU_10","Guantanamo", "CU_11","La Habana", "CU_12","Holguin", "CU_13","Las Tunas", "CU_14","Sancti Spiritus", "CU_15","Santiago de Cuba", "CU_16","Villa Clara", "CV_01","Boa Vista", "CV_02","Brava", "CV_04","Maio", "CV_05","Paul", "CV_07","Ribeira Grande", "CV_08","Sal", "CV_10","Sao Nicolau", "CV_11","Sao Vicente", "CV_13","Mosteiros", "CV_14","Praia", "CV_15","Santa Catarina", "CV_16","Santa Cruz", "CV_17","Sao Domingos", "CV_18","Sao Filipe", "CV_19","Sao Miguel", "CV_20","Tarrafal", "CY_01","Famagusta", "CY_02","Kyrenia", "CY_03","Larnaca", "CY_04","Nicosia", "CY_05","Limassol", "CY_06","Paphos", "CZ_52","Hlavni Mesto Praha", "CZ_78","Jihomoravsky Kraj", "CZ_79","Jihocesky Kraj", "CZ_80","Vysocina", "CZ_81","Karlovarsky Kraj", "CZ_82","Kralovehradecky Kraj", "CZ_83","Liberecky Kraj", "CZ_84","Olomoucky Kraj", "CZ_85","Moravskoslezsky Kraj", "CZ_86","Pardubicky Kraj", "CZ_87","Plzensky Kraj", "CZ_88","Stredocesky Kraj", "CZ_89","Ustecky Kraj", "CZ_90","Zlinsky Kraj", "DE_01","Baden-Wurttemberg", "DE_02","Bayern", "DE_03","Bremen", "DE_04","Hamburg", "DE_05","Hessen", "DE_06","Niedersachsen", "DE_07","Nordrhein-Westfalen", "DE_08","Rheinland-Pfalz", "DE_09","Saarland", "DE_10","Schleswig-Holstein", "DE_11","Brandenburg", "DE_12","Mecklenburg-Vorpommern", "DE_13","Sachsen", "DE_14","Sachsen-Anhalt", "DE_15","Thuringen", "DE_16","Berlin", "DJ_02","Dikhil", "DJ_03","Djibouti", "DJ_04","Obock", "DJ_05","Tadjoura", "DK_01","Arhus", "DK_02","Bornholm", "DK_03","Frederiksborg", "DK_04","Fyn", "DK_05","Kobenhavn", "DK_06","Staden Kobenhavn", "DK_07","Nordjylland", "DK_08","Ribe", "DK_09","Ringkobing", "DK_10","Roskilde", "DK_11","Sonderjylland", "DK_12","Storstrom", "DK_13","Vejle", "DK_14","Vestsjalland", "DK_15","Viborg", "DM_02","Saint Andrew", "DM_03","Saint David", "DM_04","Saint George", "DM_05","Saint John", "DM_06","Saint Joseph", "DM_07","Saint Luke", "DM_08","Saint Mark", "DM_09","Saint Patrick", "DM_10","Saint Paul", "DM_11","Saint Peter", "DO_01","Azua", "DO_02","Baoruco", "DO_03","Barahona", "DO_04","Dajabon", "DO_05","Distrito Nacional", "DO_06","Duarte", "DO_08","Espaillat", "DO_09","Independencia", "DO_10","La Altagracia", "DO_11","Elias Pina", "DO_12","La Romana", "DO_14","Maria Trinidad Sanchez", "DO_15","Monte Cristi", "DO_16","Pedernales", "DO_17","Peravia", "DO_18","Puerto Plata", "DO_19","Salcedo", "DO_20","Samana", "DO_21","Sanchez Ramirez", "DO_23","San Juan", "DO_24","San Pedro De Macoris", "DO_25","Santiago", "DO_26","Santiago Rodriguez", "DO_27","Valverde", "DO_28","El Seibo", "DO_29","Hato Mayor", "DO_30","La Vega", "DO_31","Monsenor Nouel", "DO_32","Monte Plata", "DO_33","San Cristobal", "DZ_01","Alger", "DZ_03","Batna", "DZ_04","Constantine", "DZ_06","Medea", "DZ_07","Mostaganem", "DZ_09","Oran", "DZ_10","Saida", "DZ_12","Setif", "DZ_13","Tiaret", "DZ_14","Tizi Ouzou", "DZ_15","Tlemcen", "DZ_18","Bejaia", "DZ_19","Biskra", "DZ_20","Blida", "DZ_21","Bouira", "DZ_22","Djelfa", "DZ_23","Guelma", "DZ_24","Jijel", "DZ_25","Laghouat", "DZ_26","Mascara", "DZ_27","M'sila", "DZ_29","Oum el Bouaghi", "DZ_30","Sidi Bel Abbes", "DZ_31","Skikda", "DZ_33","Tebessa", "DZ_34","Adrar", "DZ_35","Ain Defla", "DZ_36","Ain Temouchent", "DZ_37","Annaba", "DZ_38","Bechar", "DZ_39","Bordj Bou Arreridj", "DZ_40","Boumerdes", "DZ_41","Chlef", "DZ_42","El Bayadh", "DZ_43","El Oued", "DZ_44","El Tarf", "DZ_45","Ghardaia", "DZ_46","Illizi", "DZ_47","Khenchela", "DZ_48","Mila", "DZ_49","Naama", "DZ_50","Ouargla", "DZ_51","Relizane", "DZ_52","Souk Ahras", "DZ_53","Tamanghasset", "DZ_54","Tindouf", "DZ_55","Tipaza", "DZ_56","Tissemsilt", "EC_01","Galapagos", "EC_02","Azuay", "EC_03","Bolivar", "EC_04","Canar", "EC_05","Carchi", "EC_06","Chimborazo", "EC_07","Cotopaxi", "EC_08","El Oro", "EC_09","Esmeraldas", "EC_10","Guayas", "EC_11","Imbabura", "EC_12","Loja", "EC_13","Los Rios", "EC_14","Manabi", "EC_15","Morona-Santiago", "EC_17","Pastaza", "EC_18","Pichincha", "EC_19","Tungurahua", "EC_20","Zamora-Chinchipe", "EC_22","Sucumbios", "EC_23","Napo", "EC_24","Orellana", "EE_01","Harjumaa", "EE_02","Hiiumaa", "EE_03","Ida-Virumaa", "EE_04","Jarvamaa", "EE_05","Jogevamaa", "EE_06","Kohtla-Jarve", "EE_07","Laanemaa", "EE_08","Laane-Virumaa", "EE_09","Narva", "EE_10","Parnu", "EE_11","Parnumaa", "EE_12","Polvamaa", "EE_13","Raplamaa", "EE_14","Saaremaa", "EE_15","Sillamae", "EE_16","Tallinn", "EE_17","Tartu", "EE_18","Tartumaa", "EE_19","Valgamaa", "EE_20","Viljandimaa", "EE_21","Vorumaa", "EG_01","Ad Daqahliyah", "EG_02","Al Bahr al Ahmar", "EG_03","Al Buhayrah", "EG_04","Al Fayyum", "EG_05","Al Gharbiyah", "EG_06","Al Iskandariyah", "EG_07","Al Isma'iliyah", "EG_08","Al Jizah", "EG_09","Al Minufiyah", "EG_10","Al Minya", "EG_11","Al Qahirah", "EG_12","Al Qalyubiyah", "EG_13","Al Wadi al Jadid", "EG_14","Ash Sharqiyah", "EG_15","As Suways", "EG_16","Aswan", "EG_17","Asyut", "EG_18","Bani Suwayf", "EG_19","Bur Sa'id", "EG_20","Dumyat", "EG_21","Kafr ash Shaykh", "EG_22","Matruh", "EG_23","Qina", "EG_24","Suhaj", "EG_26","Janub Sina'", "EG_27","Shamal Sina'", "ES_07","Islas Baleares", "ES_27","La Rioja", "ES_29","Madrid", "ES_31","Murcia", "ES_32","Navarra", "ES_34","Asturias", "ES_39","Cantabria", "ES_51","Andalucia", "ES_52","Aragon", "ES_53","Canarias", "ES_54","Castilla-La Mancha", "ES_55","Castilla y Leon", "ES_56","Cataluna", "ES_57","Extremadura", "ES_58","Galicia", "ES_59","Pais Vasco", "ES_60","Comunidad Valenciana", "ET_02","Amhara", "ET_07","Somali", "ET_08","Gambella", "ET_10","Addis Abeba", "ET_11","Southern", "ET_12","Tigray", "ET_13","Benishangul", "ET_14","Afar", "ET_44","Adis Abeba", "ET_45","Afar", "ET_46","Amara", "ET_47","Binshangul Gumuz", "ET_48","Dire Dawa", "ET_49","Gambela Hizboch", "ET_50","Hareri Hizb", "ET_51","Oromiya", "ET_52","Sumale", "ET_53","Tigray", "ET_54","YeDebub Biheroch Bihereseboch na Hizboch", "FI_01","Iland", "FI_06","Lapland", "FI_08","Oulu", "FI_13","Southern Finland", "FI_14","Eastern Finland", "FI_15","Western Finland", "FJ_01","Central", "FJ_02","Eastern", "FJ_03","Northern", "FJ_04","Rotuma", "FJ_05","Western", "FM_01","Kosrae", "FM_02","Pohnpei", "FM_03","Chuuk", "FM_04","Yap", "FR_97","Aquitaine", "FR_98","Auvergne", "FR_99","Basse-Normandie", "FR_A1","Bourgogne", "FR_A2","Bretagne", "FR_A3","Centre", "FR_A4","Champagne-Ardenne", "FR_A5","Corse", "FR_A6","Franche-Comte", "FR_A7","Haute-Normandie", "FR_A8","Ile-de-France", "FR_A9","Languedoc-Roussillon", "FR_B1","Limousin", "FR_B2","Lorraine", "FR_B3","Midi-Pyrenees", "FR_B4","Nord-Pas-de-Calais", "FR_B5","Pays de la Loire", "FR_B6","Picardie", "FR_B7","Poitou-Charentes", "FR_B8","Provence-Alpes-Cote d'Azur", "FR_B9","Rhone-Alpes", "FR_C1","Alsace", "GA_01","Estuaire", "GA_02","Haut-Ogooue", "GA_03","Moyen-Ogooue", "GA_04","Ngounie", "GA_05","Nyanga", "GA_06","Ogooue-Ivindo", "GA_07","Ogooue-Lolo", "GA_08","Ogooue-Maritime", "GA_09","Woleu-Ntem", "GB_01","Avon", "GB_03","Berkshire", "GB_07","Cleveland", "GB_08","Cornwall", "GB_09","Cumbria", "GB_17","Greater London", "GB_18","Greater Manchester", "GB_20","Hereford and Worcester", "GB_22","Humberside", "GB_28","Merseyside", "GB_37","South Yorkshire", "GB_41","Tyne and Wear", "GB_43","West Midlands", "GB_45","West Yorkshire", "GB_79","Central", "GB_82","Grampian", "GB_84","Lothian", "GB_87","Strathclyde", "GB_88","Tayside", "GB_90","Clwyd", "GB_91","Dyfed", "GB_92","Gwent", "GB_94","Mid Glamorgan", "GB_96","South Glamorgan", "GB_97","West Glamorgan", "GB_A1","Barking and Dagenham", "GB_A2","Barnet", "GB_A3","Barnsley", "GB_A4","Bath and North East Somerset", "GB_A5","Bedfordshire", "GB_A6","Bexley", "GB_A7","Birmingham", "GB_A8","Blackburn with Darwen", "GB_A9","Blackpool", "GB_B1","Bolton", "GB_B2","Bournemouth", "GB_B3","Bracknell Forest", "GB_B4","Bradford", "GB_B5","Brent", "GB_B6","Brighton and Hove", "GB_B7","Bristol, City of", "GB_B8","Bromley", "GB_B9","Buckinghamshire", "GB_C1","Bury", "GB_C2","Calderdale", "GB_C3","Cambridgeshire", "GB_C4","Camden", "GB_C5","Cheshire", "GB_C7","Coventry", "GB_C8","Croydon", "GB_D1","Darlington", "GB_D2","Derby", "GB_D3","Derbyshire", "GB_D4","Devon", "GB_D5","Doncaster", "GB_D6","Dorset", "GB_D7","Dudley", "GB_D8","Durham", "GB_D9","Ealing", "GB_E1","East Riding of Yorkshire", "GB_E2","East Sussex", "GB_E3","Enfield", "GB_E4","Essex", "GB_E5","Gateshead", "GB_E6","Gloucestershire", "GB_E7","Greenwich", "GB_E8","Hackney", "GB_E9","Halton", "GB_F1","Hammersmith and Fulham", "GB_F2","Hampshire", "GB_F3","Haringey", "GB_F4","Harrow", "GB_F5","Hartlepool", "GB_F6","Havering", "GB_F7","Herefordshire", "GB_F8","Hertford", "GB_F9","Hillingdon", "GB_G1","Hounslow", "GB_G2","Isle of Wight", "GB_G3","Islington", "GB_G4","Kensington and Chelsea", "GB_G5","Kent", "GB_G6","Kingston upon Hull, City of", "GB_G7","Kingston upon Thames", "GB_G8","Kirklees", "GB_G9","Knowsley", "GB_H1","Lambeth", "GB_H2","Lancashire", "GB_H3","Leeds", "GB_H4","Leicester", "GB_H5","Leicestershire", "GB_H6","Lewisham", "GB_H7","Lincolnshire", "GB_H8","Liverpool", "GB_H9","London, City of", "GB_I1","Luton", "GB_I2","Manchester", "GB_I3","Medway", "GB_I4","Merton", "GB_I5","Middlesbrough", "GB_I6","Milton Keynes", "GB_I7","Newcastle upon Tyne", "GB_I8","Newham", "GB_I9","Norfolk", "GB_J1","Northamptonshire", "GB_J2","North East Lincolnshire", "GB_J3","North Lincolnshire", "GB_J4","North Somerset", "GB_J5","North Tyneside", "GB_J6","Northumberland", "GB_J7","North Yorkshire", "GB_J8","Nottingham", "GB_J9","Nottinghamshire", "GB_K1","Oldham", "GB_K2","Oxfordshire", "GB_K3","Peterborough", "GB_K4","Plymouth", "GB_K5","Poole", "GB_K6","Portsmouth", "GB_K7","Reading", "GB_K8","Redbridge", "GB_K9","Redcar and Cleveland", "GB_L1","Richmond upon Thames", "GB_L2","Rochdale", "GB_L3","Rotherham", "GB_L4","Rutland", "GB_L5","Salford", "GB_L6","Shropshire", "GB_L7","Sandwell", "GB_L8","Sefton", "GB_L9","Sheffield", "GB_M1","Slough", "GB_M2","Solihull", "GB_M3","Somerset", "GB_M4","Southampton", "GB_M5","Southend-on-Sea", "GB_M6","South Gloucestershire", "GB_M7","South Tyneside", "GB_M8","Southwark", "GB_M9","Staffordshire", "GB_N1","St. Helens", "GB_N2","Stockport", "GB_N3","Stockton-on-Tees", "GB_N4","Stoke-on-Trent", "GB_N5","Suffolk", "GB_N6","Sunderland", "GB_N7","Surrey", "GB_N8","Sutton", "GB_N9","Swindon", "GB_O1","Tameside", "GB_O2","Telford and Wrekin", "GB_O3","Thurrock", "GB_O4","Torbay", "GB_O5","Tower Hamlets", "GB_O6","Trafford", "GB_O7","Wakefield", "GB_O8","Walsall", "GB_O9","Waltham Forest", "GB_P1","Wandsworth", "GB_P2","Warrington", "GB_P3","Warwickshire", "GB_P4","West Berkshire", "GB_P5","Westminster", "GB_P6","West Sussex", "GB_P7","Wigan", "GB_P8","Wiltshire", "GB_P9","Windsor and Maidenhead", "GB_Q1","Wirral", "GB_Q2","Wokingham", "GB_Q3","Wolverhampton", "GB_Q4","Worcestershire", "GB_Q5","York", "GB_Q6","Antrim", "GB_Q7","Ards", "GB_Q8","Armagh", "GB_Q9","Ballymena", "GB_R1","Ballymoney", "GB_R2","Banbridge", "GB_R3","Belfast", "GB_R4","Carrickfergus", "GB_R5","Castlereagh", "GB_R6","Coleraine", "GB_R7","Cookstown", "GB_R8","Craigavon", "GB_R9","Down", "GB_S1","Dungannon", "GB_S2","Fermanagh", "GB_S3","Larne", "GB_S4","Limavady", "GB_S5","Lisburn", "GB_S6","Derry", "GB_S7","Magherafelt", "GB_S8","Moyle", "GB_S9","Newry and Mourne", "GB_T1","Newtownabbey", "GB_T2","North Down", "GB_T3","Omagh", "GB_T4","Strabane", "GB_T5","Aberdeen City", "GB_T6","Aberdeenshire", "GB_T7","Angus", "GB_T8","Argyll and Bute", "GB_T9","Scottish Borders, The", "GB_U1","Clackmannanshire", "GB_U2","Dumfries and Galloway", "GB_U3","Dundee City", "GB_U4","East Ayrshire", "GB_U5","East Dunbartonshire", "GB_U6","East Lothian", "GB_U7","East Renfrewshire", "GB_U8","Edinburgh, City of", "GB_U9","Falkirk", "GB_V1","Fife", "GB_V2","Glasgow City", "GB_V3","Highland", "GB_V4","Inverclyde", "GB_V5","Midlothian", "GB_V6","Moray", "GB_V7","North Ayrshire", "GB_V8","North Lanarkshire", "GB_V9","Orkney", "GB_W1","Perth and Kinross", "GB_W2","Renfrewshire", "GB_W3","Shetland Islands", "GB_W4","South Ayrshire", "GB_W5","South Lanarkshire", "GB_W6","Stirling", "GB_W7","West Dunbartonshire", "GB_W8","Eilean Siar", "GB_W9","West Lothian", "GB_X1","Isle of Anglesey", "GB_X2","Blaenau Gwent", "GB_X3","Bridgend", "GB_X4","Caerphilly", "GB_X5","Cardiff", "GB_X6","Ceredigion", "GB_X7","Carmarthenshire", "GB_X8","Conwy", "GB_X9","Denbighshire", "GB_Y1","Flintshire", "GB_Y2","Gwynedd", "GB_Y3","Merthyr Tydfil", "GB_Y4","Monmouthshire", "GB_Y5","Neath Port Talbot", "GB_Y6","Newport", "GB_Y7","Pembrokeshire", "GB_Y8","Powys", "GB_Y9","Rhondda Cynon Taff", "GB_Z1","Swansea", "GB_Z2","Torfaen", "GB_Z3","Vale of Glamorgan, The", "GB_Z4","Wrexham", "GD_01","Saint Andrew", "GD_02","Saint David", "GD_03","Saint George", "GD_04","Saint John", "GD_05","Saint Mark", "GD_06","Saint Patrick", "GE_01","Abashis Raioni", "GE_02","Abkhazia", "GE_03","Adigenis Raioni", "GE_04","Ajaria", "GE_05","Akhalgoris Raioni", "GE_06","Akhalk'alak'is Raioni", "GE_07","Akhalts'ikhis Raioni", "GE_08","Akhmetis Raioni", "GE_09","Ambrolauris Raioni", "GE_10","Aspindzis Raioni", "GE_11","Baghdat'is Raioni", "GE_12","Bolnisis Raioni", "GE_13","Borjomis Raioni", "GE_14","Chiat'ura", "GE_15","Ch'khorotsqus Raioni", "GE_16","Ch'okhatauris Raioni", "GE_17","Dedop'listsqaros Raioni", "GE_18","Dmanisis Raioni", "GE_19","Dushet'is Raioni", "GE_20","Gardabanis Raioni", "GE_21","Gori", "GE_22","Goris Raioni", "GE_23","Gurjaanis Raioni", "GE_24","Javis Raioni", "GE_25","K'arelis Raioni", "GE_26","Kaspis Raioni", "GE_27","Kharagaulis Raioni", "GE_28","Khashuris Raioni", "GE_29","Khobis Raioni", "GE_30","Khonis Raioni", "GE_31","K'ut'aisi", "GE_32","Lagodekhis Raioni", "GE_33","Lanch'khut'is Raioni", "GE_34","Lentekhis Raioni", "GE_35","Marneulis Raioni", "GE_36","Martvilis Raioni", "GE_37","Mestiis Raioni", "GE_38","Mts'khet'is Raioni", "GE_39","Ninotsmindis Raioni", "GE_40","Onis Raioni", "GE_41","Ozurget'is Raioni", "GE_42","P'ot'i", "GE_43","Qazbegis Raioni", "GE_44","Qvarlis Raioni", "GE_45","Rust'avi", "GE_46","Sach'kheris Raioni", "GE_47","Sagarejos Raioni", "GE_48","Samtrediis Raioni", "GE_49","Senakis Raioni", "GE_50","Sighnaghis Raioni", "GE_51","T'bilisi", "GE_52","T'elavis Raioni", "GE_53","T'erjolis Raioni", "GE_54","T'et'ritsqaros Raioni", "GE_55","T'ianet'is Raioni", "GE_56","Tqibuli", "GE_57","Ts'ageris Raioni", "GE_58","Tsalenjikhis Raioni", "GE_59","Tsalkis Raioni", "GE_60","Tsqaltubo", "GE_61","Vanis Raioni", "GE_62","Zestap'onis Raioni", "GE_63","Zugdidi", "GE_64","Zugdidis Raioni", "GH_01","Greater Accra", "GH_02","Ashanti", "GH_03","Brong-Ahafo", "GH_04","Central", "GH_05","Eastern", "GH_06","Northern", "GH_08","Volta", "GH_09","Western", "GH_10","Upper East", "GH_11","Upper West", "GL_01","Nordgronland", "GL_02","Ostgronland", "GL_03","Vestgronland", "GM_01","Banjul", "GM_02","Lower River", "GM_03","MacCarthy Island", "GM_04","Upper River", "GM_05","Western", "GM_07","North Bank", "GN_01","Beyla", "GN_02","Boffa", "GN_03","Boke", "GN_04","Conakry", "GN_05","Dabola", "GN_06","Dalaba", "GN_07","Dinguiraye", "GN_09","Faranah", "GN_10","Forecariah", "GN_11","Fria", "GN_12","Gaoual", "GN_13","Gueckedou", "GN_15","Kerouane", "GN_16","Kindia", "GN_17","Kissidougou", "GN_18","Koundara", "GN_19","Kouroussa", "GN_21","Macenta", "GN_22","Mali", "GN_23","Mamou", "GN_25","Pita", "GN_27","Telimele", "GN_28","Tougue", "GN_29","Yomou", "GN_30","Coyah", "GN_31","Dubreka", "GN_32","Kankan", "GN_33","Koubia", "GN_34","Labe", "GN_35","Lelouma", "GN_36","Lola", "GN_37","Mandiana", "GN_38","Nzerekore", "GN_39","Siguiri", "GQ_03","Annobon", "GQ_04","Bioko Norte", "GQ_05","Bioko Sur", "GQ_06","Centro Sur", "GQ_07","Kie-Ntem", "GQ_08","Litoral", "GQ_09","Wele-Nzas", "GR_01","Evros", "GR_02","Rodhopi", "GR_03","Xanthi", "GR_04","Drama", "GR_05","Serrai", "GR_06","Kilkis", "GR_07","Pella", "GR_08","Florina", "GR_09","Kastoria", "GR_10","Grevena", "GR_11","Kozani", "GR_12","Imathia", "GR_13","Thessaloniki", "GR_14","Kavala", "GR_15","Khalkidhiki", "GR_16","Pieria", "GR_17","Ioannina", "GR_18","Thesprotia", "GR_19","Preveza", "GR_20","Arta", "GR_21","Larisa", "GR_22","Trikala", "GR_23","Kardhitsa", "GR_24","Magnisia", "GR_25","Kerkira", "GR_26","Levkas", "GR_27","Kefallinia", "GR_28","Zakinthos", "GR_29","Fthiotis", "GR_30","Evritania", "GR_31","Aitolia kai Akarnania", "GR_32","Fokis", "GR_33","Voiotia", "GR_34","Evvoia", "GR_35","Attiki", "GR_36","Argolis", "GR_37","Korinthia", "GR_38","Akhaia", "GR_39","Ilia", "GR_40","Messinia", "GR_41","Arkadhia", "GR_42","Lakonia", "GR_43","Khania", "GR_44","Rethimni", "GR_45","Iraklion", "GR_46","Lasithi", "GR_47","Dhodhekanisos", "GR_48","Samos", "GR_49","Kikladhes", "GR_50","Khios", "GR_51","Lesvos", "GT_01","Alta Verapaz", "GT_02","Baja Verapaz", "GT_03","Chimaltenango", "GT_04","Chiquimula", "GT_05","El Progreso", "GT_06","Escuintla", "GT_07","Guatemala", "GT_08","Huehuetenango", "GT_09","Izabal", "GT_10","Jalapa", "GT_11","Jutiapa", "GT_12","Peten", "GT_13","Quetzaltenango", "GT_14","Quiche", "GT_15","Retalhuleu", "GT_16","Sacatepequez", "GT_17","San Marcos", "GT_18","Santa Rosa", "GT_19","Solola", "GT_20","Suchitepequez", "GT_21","Totonicapan", "GT_22","Zacapa", "GW_01","Bafata", "GW_02","Quinara", "GW_04","Oio", "GW_05","Bolama", "GW_06","Cacheu", "GW_07","Tombali", "GW_10","Gabu", "GW_11","Bissau", "GW_12","Biombo", "GY_10","Barima-Waini", "GY_11","Cuyuni-Mazaruni", "GY_12","Demerara-Mahaica", "GY_13","East Berbice-Corentyne", "GY_14","Essequibo Islands-West Demerara", "GY_15","Mahaica-Berbice", "GY_16","Pomeroon-Supenaam", "GY_17","Potaro-Siparuni", "GY_18","Upper Demerara-Berbice", "GY_19","Upper Takutu-Upper Essequibo", "HN_01","Atlantida", "HN_02","Choluteca", "HN_03","Colon", "HN_04","Comayagua", "HN_05","Copan", "HN_06","Cortes", "HN_07","El Paraiso", "HN_08","Francisco Morazan", "HN_09","Gracias a Dios", "HN_10","Intibuca", "HN_11","Islas de la Bahia", "HN_12","La Paz", "HN_13","Lempira", "HN_14","Ocotepeque", "HN_15","Olancho", "HN_16","Santa Barbara", "HN_17","Valle", "HN_18","Yoro", "HR_01","Bjelovarsko-Bilogorska", "HR_02","Brodsko-Posavska", "HR_03","Dubrovacko-Neretvanska", "HR_04","Istarska", "HR_05","Karlovacka", "HR_06","Koprivnicko-Krizevacka", "HR_07","Krapinsko-Zagorska", "HR_08","Licko-Senjska", "HR_09","Medimurska", "HR_10","Osjecko-Baranjska", "HR_11","Pozesko-Slavonska", "HR_12","Primorsko-Goranska", "HR_13","Sibensko-Kninska", "HR_14","Sisacko-Moslavacka", "HR_15","Splitsko-Dalmatinska", "HR_16","Varazdinska", "HR_17","Viroviticko-Podravska", "HR_18","Vukovarsko-Srijemska", "HR_19","Zadarska", "HR_20","Zagrebacka", "HR_21","Grad Zagreb", "HT_03","Nord-Ouest", "HT_06","Artibonite", "HT_07","Centre", "HT_08","Grand' Anse", "HT_09","Nord", "HT_10","Nord-Est", "HT_11","Ouest", "HT_12","Sud", "HT_13","Sud-Est", "HU_01","Bacs-Kiskun", "HU_02","Baranya", "HU_03","Bekes", "HU_04","Borsod-Abauj-Zemplen", "HU_05","Budapest", "HU_06","Csongrad", "HU_07","Debrecen", "HU_08","Fejer", "HU_09","Gyor-Moson-Sopron", "HU_10","Hajdu-Bihar", "HU_11","Heves", "HU_12","Komarom-Esztergom", "HU_13","Miskolc", "HU_14","Nograd", "HU_15","Pecs", "HU_16","Pest", "HU_17","Somogy", "HU_18","Szabolcs-Szatmar-Bereg", "HU_19","Szeged", "HU_20","Jasz-Nagykun-Szolnok", "HU_21","Tolna", "HU_22","Vas", "HU_23","Veszprem", "HU_24","Zala", "HU_25","Gyor", "HU_26","Bekescsaba", "HU_27","Dunaujvaros", "HU_28","Eger", "HU_29","Hodmezovasarhely", "HU_30","Kaposvar", "HU_31","Kecskemet", "HU_32","Nagykanizsa", "HU_33","Nyiregyhaza", "HU_34","Sopron", "HU_35","Szekesfehervar", "HU_36","Szolnok", "HU_37","Szombathely", "HU_38","Tatabanya", "HU_39","Veszprem", "HU_40","Zalaegerszeg", "ID_01","Aceh", "ID_02","Bali", "ID_03","Bengkulu", "ID_04","Jakarta Raya", "ID_05","Jambi", "ID_07","Jawa Tengah", "ID_08","Jawa Timur", "ID_09","Papua", "ID_10","Yogyakarta", "ID_11","Kalimantan Barat", "ID_12","Kalimantan Selatan", "ID_13","Kalimantan Tengah", "ID_14","Kalimantan Timur", "ID_15","Lampung", "ID_17","Nusa Tenggara Barat", "ID_18","Nusa Tenggara Timur", "ID_19","Riau", "ID_20","Sulawesi Selatan", "ID_21","Sulawesi Tengah", "ID_22","Sulawesi Tenggara", "ID_24","Sumatera Barat", "ID_26","Sumatera Utara", "ID_28","Maluku", "ID_29","Maluku Utara", "ID_30","Jawa Barat", "ID_31","Sulawesi Utara", "ID_32","Sumatera Selatan", "ID_33","Banten", "ID_34","Gorontalo", "ID_35","Kepulauan Bangka Belitung", "IE_01","Carlow", "IE_02","Cavan", "IE_03","Clare", "IE_04","Cork", "IE_06","Donegal", "IE_07","Dublin", "IE_10","Galway", "IE_11","Kerry", "IE_12","Kildare", "IE_13","Kilkenny", "IE_14","Leitrim", "IE_15","Laois", "IE_16","Limerick", "IE_18","Longford", "IE_19","Louth", "IE_20","Mayo", "IE_21","Meath", "IE_22","Monaghan", "IE_23","Offaly", "IE_24","Roscommon", "IE_25","Sligo", "IE_26","Tipperary", "IE_27","Waterford", "IE_29","Westmeath", "IE_30","Wexford", "IE_31","Wicklow", "IL_01","HaDarom", "IL_02","HaMerkaz", "IL_03","HaZafon", "IL_04","Hefa", "IL_05","Tel Aviv", "IL_06","Yerushalayim", "IN_01","Andaman and Nicobar Islands", "IN_02","Andhra Pradesh", "IN_03","Assam", "IN_05","Chandigarh", "IN_06","Dadra and Nagar Haveli", "IN_07","Delhi", "IN_09","Gujarat", "IN_10","Haryana", "IN_11","Himachal Pradesh", "IN_12","Jammu and Kashmir", "IN_13","Kerala", "IN_14","Lakshadweep", "IN_16","Maharashtra", "IN_17","Manipur", "IN_18","Meghalaya", "IN_19","Karnataka", "IN_20","Nagaland", "IN_21","Orissa", "IN_22","Pondicherry", "IN_23","Punjab", "IN_24","Rajasthan", "IN_25","Tamil Nadu", "IN_26","Tripura", "IN_28","West Bengal", "IN_29","Sikkim", "IN_30","Arunachal Pradesh", "IN_31","Mizoram", "IN_32","Daman and Diu", "IN_33","Goa", "IN_34","Bihar", "IN_35","Madhya Pradesh", "IN_36","Uttar Pradesh", "IN_37","Chhattisgarh", "IN_38","Jharkhand", "IN_39","Uttaranchal", "IQ_01","Al Anbar", "IQ_02","Al Basrah", "IQ_03","Al Muthanna", "IQ_04","Al Qadisiyah", "IQ_05","As Sulaymaniyah", "IQ_06","Babil", "IQ_07","Baghdad", "IQ_08","Dahuk", "IQ_09","Dhi Qar", "IQ_10","Diyala", "IQ_11","Arbil", "IQ_12","Karbala'", "IQ_13","At Ta'mim", "IQ_14","Maysan", "IQ_15","Ninawa", "IQ_16","Wasit", "IQ_17","An Najaf", "IQ_18","Salah ad Din", "IR_01","Azarbayjan-e Bakhtari", "IR_02","Azarbayjan-e Khavari", "IR_03","Chahar Mahall va Bakhtiari", "IR_04","Sistan va Baluchestan", "IR_05","Kohkiluyeh va Buyer Ahmadi", "IR_07","Fars", "IR_08","Gilan", "IR_09","Hamadan", "IR_10","Ilam", "IR_11","Hormozgan", "IR_13","Bakhtaran", "IR_15","Khuzestan", "IR_16","Kordestan", "IR_22","Bushehr", "IR_23","Lorestan", "IR_25","Semnan", "IR_26","Tehran", "IR_28","Esfahan", "IR_29","Kerman", "IR_30","Khorasan", "IR_31","Yazd", "IR_34","Markazi", "IR_35","Mazandaran", "IR_36","Zanjan", "IR_37","Golestan", "IR_38","Qazvin", "IR_39","Qom", "IS_01","Akranes", "IS_02","Akureyri", "IS_03","Arnessysla", "IS_04","Austur-Bardastrandarsysla", "IS_05","Austur-Hunavatnssysla", "IS_06","Austur-Skaftafellssysla", "IS_07","Borgarfjardarsysla", "IS_08","Dalasysla", "IS_09","Eyjafjardarsysla", "IS_10","Gullbringusysla", "IS_11","Hafnarfjordur", "IS_12","Husavik", "IS_13","Isafjordur", "IS_14","Keflavik", "IS_15","Kjosarsysla", "IS_16","Kopavogur", "IS_17","Myrasysla", "IS_18","Neskaupstadur", "IS_19","Nordur-Isafjardarsysla", "IS_20","Nordur-Mulasysla", "IS_21","Nordur-Tingeyjarsysla", "IS_22","Olafsfjordur", "IS_23","Rangarvallasysla", "IS_24","Reykjavik", "IS_25","Saudarkrokur", "IS_26","Seydisfjordur", "IS_27","Siglufjordur", "IS_28","Skagafjardarsysla", "IS_29","Snafellsnes- og Hnappadalssysla", "IS_30","Strandasysla", "IS_31","Sudur-Mulasysla", "IS_32","Sudur-Tingeyjarsysla", "IS_33","Vestmannaeyjar", "IS_34","Vestur-Bardastrandarsysla", "IS_35","Vestur-Hunavatnssysla", "IS_36","Vestur-Isafjardarsysla", "IS_37","Vestur-Skaftafellssysla", "IT_01","Abruzzi", "IT_02","Basilicata", "IT_03","Calabria", "IT_04","Campania", "IT_05","Emilia-Romagna", "IT_06","Friuli-Venezia Giulia", "IT_07","Lazio", "IT_08","Liguria", "IT_09","Lombardia", "IT_10","Marche", "IT_11","Molise", "IT_12","Piemonte", "IT_13","Puglia", "IT_14","Sardegna", "IT_15","Sicilia", "IT_16","Toscana", "IT_17","Trentino-Alto Adige", "IT_18","Umbria", "IT_19","Valle d'Aosta", "IT_20","Veneto", "JM_01","Clarendon", "JM_02","Hanover", "JM_04","Manchester", "JM_07","Portland", "JM_08","Saint Andrew", "JM_09","Saint Ann", "JM_10","Saint Catherine", "JM_11","Saint Elizabeth", "JM_12","Saint James", "JM_13","Saint Mary", "JM_14","Saint Thomas", "JM_15","Trelawny", "JM_16","Westmoreland", "JM_17","Kingston", "JO_02","Al Balqa'", "JO_07","Ma", "JO_09","Al Karak", "JO_10","Al Mafraq", "JO_12","At Tafilah", "JO_13","Az Zarqa", "JO_14","Irbid", "JP_01","Aichi", "JP_02","Akita", "JP_03","Aomori", "JP_04","Chiba", "JP_05","Ehime", "JP_06","Fukui", "JP_07","Fukuoka", "JP_08","Fukushima", "JP_09","Gifu", "JP_10","Gumma", "JP_11","Hiroshima", "JP_12","Hokkaido", "JP_13","Hyogo", "JP_14","Ibaraki", "JP_15","Ishikawa", "JP_16","Iwate", "JP_17","Kagawa", "JP_18","Kagoshima", "JP_19","Kanagawa", "JP_20","Kochi", "JP_21","Kumamoto", "JP_22","Kyoto", "JP_23","Mie", "JP_24","Miyagi", "JP_25","Miyazaki", "JP_26","Nagano", "JP_27","Nagasaki", "JP_28","Nara", "JP_29","Niigata", "JP_30","Oita", "JP_31","Okayama", "JP_32","Osaka", "JP_33","Saga", "JP_34","Saitama", "JP_35","Shiga", "JP_36","Shimane", "JP_37","Shizuoka", "JP_38","Tochigi", "JP_39","Tokushima", "JP_40","Tokyo", "JP_41","Tottori", "JP_42","Toyama", "JP_43","Wakayama", "JP_44","Yamagata", "JP_45","Yamaguchi", "JP_46","Yamanashi", "JP_47","Okinawa", "KE_01","Central", "KE_02","Coast", "KE_03","Eastern", "KE_05","Nairobi Area", "KE_06","North-Eastern", "KE_07","Nyanza", "KE_08","Rift Valley", "KE_09","Western", "KG_09","Batken", "KH_02","Kampong Cham", "KH_03","Kampong Chhnang", "KH_04","Kampong Spoe", "KH_05","Kampong Thum", "KH_06","Kampot", "KH_07","Kandal", "KH_08","Kaoh Kong", "KH_09","Kracheh", "KH_10","Mondol Kiri", "KH_11","Phnum Penh", "KH_12","Pouthisat", "KH_13","Preah Vihear", "KH_14","Prey Veng", "KH_15","Rotanokiri", "KH_16","Siemreab-Otdar Meanchey", "KH_17","Stoeng Treng", "KH_18","Svay Rieng", "KH_19","Takev", "KH_29","Batdambang", "KH_30","Pailin", "KI_01","Gilbert Islands", "KI_02","Line Islands", "KI_03","Phoenix Islands", "KM_01","Anjouan", "KM_02","Grande Comore", "KM_03","Moheli", "KN_01","Christ Church Nichola Town", "KN_02","Saint Anne Sandy Point", "KN_03","Saint George Basseterre", "KN_04","Saint George Gingerland", "KN_05","Saint James Windward", "KN_06","Saint John Capisterre", "KN_07","Saint John Figtree", "KN_08","Saint Mary Cayon", "KN_09","Saint Paul Capisterre", "KN_10","Saint Paul Charlestown", "KN_11","Saint Peter Basseterre", "KN_12","Saint Thomas Lowland", "KN_13","Saint Thomas Middle Island", "KN_15","Trinity Palmetto Point", "KP_01","Chagang-do", "KP_03","Hamgyong-namdo", "KP_06","Hwanghae-namdo", "KP_07","Hwanghae-bukto", "KP_08","Kaesong-si", "KP_09","Kangwon-do", "KP_11","P'yongan-bukto", "KP_12","P'yongyang-si", "KP_13","Yanggang-do", "KP_14","Namp'o-si", "KP_15","P'yongan-namdo", "KP_17","Hamgyong-bukto", "KP_18","Najin Sonbong-si", "KR_01","Cheju-do", "KR_03","Cholla-bukto", "KR_05","Ch'ungch'ong-bukto", "KR_06","Kangwon-do", "KR_10","Pusan-jikhalsi", "KR_11","Seoul-t'ukpyolsi", "KR_12","Inch'on-jikhalsi", "KR_13","Kyonggi-do", "KR_14","Kyongsang-bukto", "KR_15","Taegu-jikhalsi", "KR_16","Cholla-namdo", "KR_17","Ch'ungch'ong-namdo", "KR_18","Kwangju-jikhalsi", "KR_19","Taejon-jikhalsi", "KR_20","Kyongsang-namdo", "KR_21","Ulsan-gwangyoksi", "KW_01","Al Ahmadi", "KW_02","Al Kuwayt", "KW_03","Hawalli", "KY_01","Creek", "KY_02","Eastern", "KY_03","Midland", "KY_04","South Town", "KY_05","Spot Bay", "KY_06","Stake Bay", "KY_07","West End", "KY_08","Western", "KZ_01","Almaty", "KZ_02","Almaty City", "KZ_03","Aqmola", "KZ_04","Aqtebe", "KZ_05","Astana", "KZ_06","Atyrau", "KZ_07","West Kazakhstan", "KZ_08","Bayqonyr", "KZ_09","Mangghystau", "KZ_10","South Kazakhstan", "KZ_11","Pavlodar", "KZ_12","Qaraghandy", "KZ_13","Qostanay", "KZ_14","Qyzylorda", "KZ_15","East Kazakhstan", "KZ_16","North Kazakhstan", "KZ_17","Zhambyl", "LA_01","Attapu", "LA_02","Champasak", "LA_03","Houaphan", "LA_04","Khammouan", "LA_05","Louang Namtha", "LA_06","Louangphrabang", "LA_07","Oudomxai", "LA_08","Phongsali", "LA_09","Saravan", "LA_10","Savannakhet", "LA_11","Vientiane", "LA_13","Xaignabouri", "LA_14","Xiangkhoang", "LB_01","Beqaa", "LB_03","Liban-Nord", "LB_04","Beyrouth", "LB_05","Mont-Liban", "LB_06","Liban-Sud", "LB_07","Nabatiye", "LC_01","Anse-la-Raye", "LC_02","Dauphin", "LC_03","Castries", "LC_04","Choiseul", "LC_05","Dennery", "LC_06","Gros-Islet", "LC_07","Laborie", "LC_08","Micoud", "LC_09","Soufriere", "LC_10","Vieux-Fort", "LC_11","Praslin", "LI_01","Balzers", "LI_02","Eschen", "LI_03","Gamprin", "LI_04","Mauren", "LI_05","Planken", "LI_06","Ruggell", "LI_07","Schaan", "LI_08","Schellenberg", "LI_09","Triesen", "LI_10","Triesenberg", "LI_11","Vaduz", "LK_01","Amparai", "LK_02","Anuradhapura", "LK_03","Badulla", "LK_04","Batticaloa", "LK_06","Galle", "LK_07","Hambantota", "LK_09","Kalutara", "LK_10","Kandy", "LK_11","Kegalla", "LK_12","Kurunegala", "LK_14","Matale", "LK_15","Matara", "LK_16","Moneragala", "LK_17","Nuwara Eliya", "LK_18","Polonnaruwa", "LK_19","Puttalam", "LK_20","Ratnapura", "LK_21","Trincomalee", "LK_23","Colombo", "LK_24","Gampaha", "LK_25","Jaffna", "LK_26","Mannar", "LK_27","Mullaittivu", "LK_28","Vavuniya", "LR_01","Bong", "LR_02","Grand Jide", "LR_03","Grand Bassa", "LR_04","Grand Cape Mount", "LR_05","Lofa", "LR_06","Maryland", "LR_07","Monrovia", "LR_08","Montserrado", "LR_09","Nimba", "LR_10","Sino", "LS_10","Berea", "LS_11","Butha-Buthe", "LS_12","Leribe", "LS_13","Mafeteng", "LS_14","Maseru", "LS_15","Mohales Hoek", "LS_16","Mokhotlong", "LS_17","Qachas Nek", "LS_18","Quthing", "LS_19","Thaba-Tseka", "LT_56","Alytaus Apskritis", "LT_57","Kauno Apskritis", "LT_58","Klaipedos Apskritis", "LT_59","Marijampoles Apskritis", "LT_60","Panevezio Apskritis", "LT_61","Siauliu Apskritis", "LT_62","Taurages Apskritis", "LT_63","Telsiu Apskritis", "LT_64","Utenos Apskritis", "LT_65","Vilniaus Apskritis", "LU_01","Diekirch", "LU_02","Grevenmacher", "LU_03","Luxembourg", "LV_01","Aizkraukles", "LV_02","Aluksnes", "LV_03","Balvu", "LV_04","Bauskas", "LV_05","C�su", "LV_06","Daugavpils", "LV_07","Daugavpils", "LV_08","Dobeles", "LV_09","Gulbenes", "LV_10","Jekabpils", "LV_11","Jelgava", "LV_12","Jelgavas", "LV_13","Jurmala", "LV_14","Krelavas", "LV_15","Kuldigas", "LV_16","Liepeja", "LV_17","Liepejas", "LV_18","Limbazu", "LV_19","Ludzas", "LV_20","Madonas", "LV_21","Ogres", "LV_22","Preilu", "LV_23","Rezekne", "LV_24","Rezeknes", "LV_25","Riga", "LV_26","Rigas", "LV_27","Saldus", "LV_28","Talsu", "LV_29","Tukuma", "LV_30","Valkas", "LV_31","Valmieras", "LV_32","Ventspils", "LV_33","Ventspils", "LY_03","Al", "LY_05","Al Jufrah", "LY_08","Al Kufrah", "LY_13","Ash Shati'", "LY_30","Murzuq", "LY_34","Sabha", "LY_41","Tarhunah", "LY_42","Tubruq", "LY_45","Zlitan", "LY_47","Ajdabiya", "LY_48","Al Fatih", "LY_49","Al Jabal al Akhdar", "LY_50","Al Khums", "LY_51","An Nuqat al Khams", "LY_52","Awbari", "LY_53","Az Zawiyah", "LY_54","Banghazi", "LY_55","Darnah", "LY_56","Ghadamis", "LY_57","Gharyan", "LY_58","Misratah", "LY_59","Sawfajjin", "LY_60","Surt", "LY_61","Tarabulus", "LY_62","Yafran", "MA_01","Agadir", "MA_02","Al Hoceima", "MA_03","Azilal", "MA_04","Ben Slimane", "MA_05","Beni Mellal", "MA_06","Boulemane", "MA_07","Casablanca", "MA_08","Chaouen", "MA_09","El Jadida", "MA_10","El Kelaa des Srarhna", "MA_11","Er Rachidia", "MA_12","Essaouira", "MA_13","Fes", "MA_14","Figuig", "MA_15","Kenitra", "MA_16","Khemisset", "MA_17","Khenifra", "MA_18","Khouribga", "MA_19","Marrakech", "MA_20","Meknes", "MA_21","Nador", "MA_22","Ouarzazate", "MA_23","Oujda", "MA_24","Rabat-Sale", "MA_25","Safi", "MA_26","Settat", "MA_27","Tanger", "MA_29","Tata", "MA_30","Taza", "MA_32","Tiznit", "MA_33","Guelmim", "MA_34","Ifrane", "MA_35","Laayoune", "MA_36","Tan-Tan", "MA_37","Taounate", "MA_38","Sidi Kacem", "MA_39","Taroudannt", "MA_40","Tetouan", "MA_41","Larache", "MC_01","La Condamine", "MC_02","Monaco", "MC_03","Monte-Carlo", "MD_46","Balti", "MD_47","Cahul", "MD_48","Chisinau", "MD_49","Stinga Nistrului", "MD_50","Edinet", "MD_51","Gagauzia", "MD_52","Lapusna", "MD_53","Orhei", "MD_54","Soroca", "MD_55","Tighina", "MD_56","Ungheni", "MG_01","Antsiranana", "MG_02","Fianarantsoa", "MG_03","Mahajanga", "MG_04","Toamasina", "MG_05","Antananarivo", "MG_06","Toliara", "MK_01","Aracinovo", "MK_02","Bac", "MK_03","Belcista", "MK_04","Berovo", "MK_05","Bistrica", "MK_06","Bitola", "MK_07","Blatec", "MK_08","Bogdanci", "MK_09","Bogomila", "MK_10","Bogovinje", "MK_11","Bosilovo", "MK_12","Brvenica", "MK_13","Cair", "MK_14","Capari", "MK_15","Caska", "MK_16","Cegrane", "MK_17","Centar", "MK_18","Centar Zupa", "MK_19","Cesinovo", "MK_20","Cucer-Sandevo", "MK_21","Debar", "MK_22","Delcevo", "MK_23","Delogozdi", "MK_24","Demir Hisar", "MK_25","Demir Kapija", "MK_26","Dobrusevo", "MK_27","Dolna Banjica", "MK_28","Dolneni", "MK_29","Dorce Petrov", "MK_30","Drugovo", "MK_31","Dzepciste", "MK_32","Gazi Baba", "MK_33","Gevgelija", "MK_34","Gostivar", "MK_35","Gradsko", "MK_36","Ilinden", "MK_37","Izvor", "MK_38","Jegunovce", "MK_39","Kamenjane", "MK_40","Karbinci", "MK_41","Karpos", "MK_42","Kavadarci", "MK_43","Kicevo", "MK_44","Kisela Voda", "MK_45","Klecevce", "MK_46","Kocani", "MK_47","Konce", "MK_48","Kondovo", "MK_49","Konopiste", "MK_50","Kosel", "MK_51","Kratovo", "MK_52","Kriva Palanka", "MK_53","Krivogastani", "MK_54","Krusevo", "MK_55","Kuklis", "MK_56","Kukurecani", "MK_57","Kumanovo", "MK_58","Labunista", "MK_59","Lipkovo", "MK_60","Lozovo", "MK_61","Lukovo", "MK_62","Makedonska Kamenica", "MK_63","Makedonski Brod", "MK_64","Mavrovi Anovi", "MK_65","Meseista", "MK_66","Miravci", "MK_67","Mogila", "MK_68","Murtino", "MK_69","Negotino", "MK_70","Negotino-Polosko", "MK_71","Novaci", "MK_72","Novo Selo", "MK_73","Oblesevo", "MK_74","Ohrid", "MK_75","Orasac", "MK_76","Orizari", "MK_77","Oslomej", "MK_78","Pehcevo", "MK_79","Petrovec", "MK_80","Plasnica", "MK_81","Podares", "MK_82","Prilep", "MK_83","Probistip", "MK_84","Radovis", "MK_85","Rankovce", "MK_86","Resen", "MK_87","Rosoman", "MK_88","Rostusa", "MK_89","Samokov", "MK_90","Saraj", "MK_91","Sipkovica", "MK_92","Sopiste", "MK_93","Sopotnica", "MK_94","Srbinovo", "MK_95","Staravina", "MK_96","Star Dojran", "MK_97","Staro Nagoricane", "MK_98","Stip", "MK_99","Struga", "MK_A1","Strumica", "MK_A2","Studenicani", "MK_A3","Suto Orizari", "MK_A4","Sveti Nikole", "MK_A5","Tearce", "MK_A6","Tetovo", "MK_A7","Topolcani", "MK_A8","Valandovo", "MK_A9","Vasilevo", "MK_B1","Veles", "MK_B2","Velesta", "MK_B3","Vevcani", "MK_B4","Vinica", "MK_B5","Vitoliste", "MK_B6","Vranestica", "MK_B7","Vrapciste", "MK_B8","Vratnica", "MK_B9","Vrutok", "MK_C1","Zajas", "MK_C2","Zelenikovo", "MK_C3","Zelino", "MK_C4","Zitose", "MK_C5","Zletovo", "MK_C6","Zrnovci", "ML_01","Bamako", "ML_03","Kayes", "ML_04","Mopti", "ML_05","Segou", "ML_06","Sikasso", "ML_07","Koulikoro", "ML_08","Tombouctou", "ML_09","Gao", "ML_10","Kidal", "MM_01","Rakhine State", "MM_02","Chin State", "MM_03","Irrawaddy", "MM_04","Kachin State", "MM_05","Karan State", "MM_06","Kayah State", "MM_07","Magwe", "MM_08","Mandalay", "MM_09","Pegu", "MM_10","Sagaing", "MM_11","Shan State", "MM_12","Tenasserim", "MM_13","Mon State", "MM_14","Rangoon", "MN_01","Arhangay", "MN_02","Bayanhongor", "MN_03","Bayan-Olgiy", "MN_05","Darhan", "MN_06","Dornod", "MN_07","Dornogovi", "MN_08","Dundgovi", "MN_09","Dzavhan", "MN_10","Govi-Altay", "MN_11","Hentiy", "MN_12","Hovd", "MN_13","Hovsgol", "MN_14","Omnogovi", "MN_15","Ovorhangay", "MN_16","Selenge", "MN_17","Suhbaatar", "MN_18","Tov", "MN_19","Uvs", "MN_20","Ulaanbaatar", "MN_21","Bulgan", "MN_22","Erdenet", "MN_23","Darhan Uul", "MN_24","Govi-Sumber", "MN_25","Orhon", "MO_01","Ilhas", "MO_02","Macau", "MR_01","Hodh Ech Chargui", "MR_02","Hodh El Gharbi", "MR_03","Assaba", "MR_04","Gorgol", "MR_05","Brakna", "MR_06","Trarza", "MR_07","Adrar", "MR_08","Dakhlet Nouadhibou", "MR_09","Tagant", "MR_10","Guidimaka", "MR_11","Tiris Zemmour", "MR_12","Inchiri", "MS_01","Saint Anthony", "MS_02","Saint Georges", "MS_03","Saint Peter", "MU_12","Black River", "MU_13","Flacq", "MU_14","Grand Port", "MU_15","Moka", "MU_16","Pamplemousses", "MU_17","Plaines Wilhems", "MU_18","Port Louis", "MU_19","Riviere du Rempart", "MU_20","Savanne", "MU_21","Agalega Islands", "MU_22","Cargados Carajos", "MU_23","Rodrigues", "MV_01","Seenu", "MV_02","Aliff", "MV_03","Laviyani", "MV_04","Waavu", "MV_05","Laamu", "MV_07","Haa Aliff", "MV_08","Thaa", "MV_12","Meemu", "MV_13","Raa", "MV_14","Faafu", "MV_17","Daalu", "MV_20","Baa", "MV_23","Haa Daalu", "MV_24","Shaviyani", "MV_25","Noonu", "MV_26","Kaafu", "MV_27","Gaafu Aliff", "MV_28","Gaafu Daalu", "MV_29","Naviyani", "MW_02","Chikwawa", "MW_03","Chiradzulu", "MW_04","Chitipa", "MW_05","Thyolo", "MW_06","Dedza", "MW_07","Dowa", "MW_08","Karonga", "MW_09","Kasungu", "MW_11","Lilongwe", "MW_12","Mangochi", "MW_13","Mchinji", "MW_15","Mzimba", "MW_16","Ntcheu", "MW_17","Nkhata Bay", "MW_18","Nkhotakota", "MW_19","Nsanje", "MW_20","Ntchisi", "MW_21","Rumphi", "MW_22","Salima", "MW_23","Zomba", "MW_24","Blantyre", "MW_25","Mwanza", "MW_26","Balaka", "MW_27","Likoma", "MW_28","Machinga", "MW_29","Mulanje", "MW_30","Phalombe", "MX_01","Aguascalientes", "MX_02","Baja California", "MX_03","Baja California Sur", "MX_04","Campeche", "MX_05","Chiapas", "MX_06","Chihuahua", "MX_07","Coahuila de Zaragoza", "MX_08","Colima", "MX_09","Distrito Federal", "MX_10","Durango", "MX_11","Guanajuato", "MX_12","Guerrero", "MX_13","Hidalgo", "MX_14","Jalisco", "MX_15","Mexico", "MX_16","Michoacan de Ocampo", "MX_17","Morelos", "MX_18","Nayarit", "MX_19","Nuevo Leon", "MX_20","Oaxaca", "MX_21","Puebla", "MX_22","Queretaro de Arteaga", "MX_23","Quintana Roo", "MX_24","San Luis Potosi", "MX_25","Sinaloa", "MX_26","Sonora", "MX_27","Tabasco", "MX_28","Tamaulipas", "MX_29","Tlaxcala", "MX_30","Veracruz-Llave", "MX_31","Yucatan", "MX_32","Zacatecas", "MY_01","Johor", "MY_02","Kedah", "MY_03","Kelantan", "MY_04","Melaka", "MY_05","Negeri Sembilan", "MY_06","Pahang", "MY_07","Perak", "MY_08","Perlis", "MY_09","Pulau Pinang", "MY_11","Sarawak", "MY_12","Selangor", "MY_13","Terengganu", "MY_14","Wilayah Persekutuan", "MY_15","Labuan", "MY_16","Sabah", "MZ_01","Cabo Delgado", "MZ_02","Gaza", "MZ_03","Inhambane", "MZ_04","Maputo", "MZ_05","Sofala", "MZ_06","Nampula", "MZ_07","Niassa", "MZ_08","Tete", "MZ_09","Zambezia", "MZ_10","Manica", "NA_01","Bethanien", "NA_02","Caprivi Oos", "NA_03","Boesmanland", "NA_04","Gobabis", "NA_05","Grootfontein", "NA_06","Kaokoland", "NA_07","Karibib", "NA_08","Keetmanshoop", "NA_09","Luderitz", "NA_10","Maltahohe", "NA_11","Okahandja", "NA_12","Omaruru", "NA_13","Otjiwarongo", "NA_14","Outjo", "NA_15","Owambo", "NA_16","Rehoboth", "NA_17","Swakopmund", "NA_18","Tsumeb", "NA_20","Karasburg", "NA_21","Windhoek", "NA_22","Damaraland", "NA_23","Hereroland Oos", "NA_24","Hereroland Wes", "NA_25","Kavango", "NA_26","Mariental", "NA_27","Namaland", "NE_01","Agadez", "NE_02","Diffa", "NE_03","Dosso", "NE_04","Maradi", "NE_05","Niamey", "NE_06","Tahoua", "NE_07","Zinder", "NG_05","Lagos", "NG_11","Abuja Capital Territory", "NG_16","Ogun", "NG_21","Akwa Ibom", "NG_22","Cross River", "NG_23","Kaduna", "NG_24","Katsina", "NG_25","Anambra", "NG_26","Benue", "NG_27","Borno", "NG_28","Imo", "NG_29","Kano", "NG_30","Kwara", "NG_31","Niger", "NG_32","Oyo", "NG_35","Adamawa", "NG_36","Delta", "NG_37","Edo", "NG_39","Jigawa", "NG_40","Kebbi", "NG_41","Kogi", "NG_42","Osun", "NG_43","Taraba", "NG_44","Yobe", "NG_45","Abia", "NG_46","Bauchi", "NG_47","Enugu", "NG_48","Ondo", "NG_49","Plateau", "NG_50","Rivers", "NG_51","Sokoto", "NG_52","Bayelsa", "NG_53","Ebonyi", "NG_54","Ekiti", "NG_55","Gombe", "NG_56","Nassarawa", "NG_57","Zamfara", "NI_01","Boaco", "NI_02","Carazo", "NI_03","Chinandega", "NI_04","Chontales", "NI_05","Esteli", "NI_06","Granada", "NI_07","Jinotega", "NI_08","Leon", "NI_09","Madriz", "NI_10","Managua", "NI_11","Masaya", "NI_12","Matagalpa", "NI_13","Nueva Segovia", "NI_14","Rio San Juan", "NI_15","Rivas", "NI_16","Zelaya", "NL_01","Drenthe", "NL_02","Friesland", "NL_03","Gelderland", "NL_04","Groningen", "NL_05","Limburg", "NL_06","Noord-Brabant", "NL_07","Noord-Holland", "NL_08","Overijssel", "NL_09","Utrecht", "NL_10","Zeeland", "NL_11","Zuid-Holland", "NL_12","Dronten", "NL_13","Zuidelijke IJsselmeerpolders", "NL_14","Lelystad", "NL_15","Overijssel", "NL_16","Flevoland", "NO_01","Akershus", "NO_02","Aust-Agder", "NO_04","Buskerud", "NO_05","Finnmark", "NO_06","Hedmark", "NO_07","Hordaland", "NO_08","More og Romsdal", "NO_09","Nordland", "NO_10","Nord-Trondelag", "NO_11","Oppland", "NO_12","Oslo", "NO_13","Ostfold", "NO_14","Rogaland", "NO_15","Sogn og Fjordane", "NO_16","Sor-Trondelag", "NO_17","Telemark", "NO_18","Troms", "NO_19","Vest-Agder", "NO_20","Vestfold", "NP_01","Bagmati", "NP_02","Bheri", "NP_03","Dhawalagiri", "NP_04","Gandaki", "NP_05","Janakpur", "NP_06","Karnali", "NP_07","Kosi", "NP_08","Lumbini", "NP_09","Mahakali", "NP_10","Mechi", "NP_11","Narayani", "NP_12","Rapti", "NP_13","Sagarmatha", "NP_14","Seti", "NR_01","Aiwo", "NR_02","Anabar", "NR_03","Anetan", "NR_04","Anibare", "NR_05","Baiti", "NR_06","Boe", "NR_07","Buada", "NR_08","Denigomodu", "NR_09","Ewa", "NR_10","Ijuw", "NR_11","Meneng", "NR_12","Nibok", "NR_13","Uaboe", "NR_14","Yaren", "NZ_01","Akaroa", "NZ_03","Amuri", "NZ_04","Ashburton", "NZ_07","Bay of Islands", "NZ_08","Bruce", "NZ_09","Buller", "NZ_10","Chatham Islands", "NZ_11","Cheviot", "NZ_12","Clifton", "NZ_13","Clutha", "NZ_14","Cook", "NZ_16","Dannevirke", "NZ_17","Egmont", "NZ_18","Eketahuna", "NZ_19","Ellesmere", "NZ_20","Eltham", "NZ_21","Eyre", "NZ_22","Featherston", "NZ_24","Franklin", "NZ_26","Golden Bay", "NZ_27","Great Barrier Island", "NZ_28","Grey", "NZ_29","Hauraki Plains", "NZ_30","Hawera", "NZ_31","Hawke's Bay", "NZ_32","Heathcote", "NZ_33","Hobson", "NZ_34","Hokianga", "NZ_35","Horowhenua", "NZ_36","Hutt", "NZ_37","Inangahua", "NZ_38","Inglewood", "NZ_39","Kaikoura", "NZ_40","Kairanga", "NZ_41","Kiwitea", "NZ_43","Lake", "NZ_45","Mackenzie", "NZ_46","Malvern", "NZ_47","Manawatu", "NZ_48","Mangonui", "NZ_49","Maniototo", "NZ_50","Marlborough", "NZ_51","Masterton", "NZ_52","Matamata", "NZ_53","Mount Herbert", "NZ_54","Ohinemuri", "NZ_55","Opotiki", "NZ_56","Oroua", "NZ_57","Otamatea", "NZ_58","Otorohanga", "NZ_59","Oxford", "NZ_60","Pahiatua", "NZ_61","Paparua", "NZ_63","Patea", "NZ_65","Piako", "NZ_66","Pohangina", "NZ_67","Raglan", "NZ_68","Rangiora", "NZ_69","Rangitikei", "NZ_70","Rodney", "NZ_71","Rotorua", "NZ_72","Southland", "NZ_73","Stewart Island", "NZ_74","Stratford", "NZ_76","Taranaki", "NZ_77","Taumarunui", "NZ_78","Taupo", "NZ_79","Tauranga", "NZ_81","Tuapeka", "NZ_82","Vincent", "NZ_83","Waiapu", "NZ_84","Waihemo", "NZ_85","Waikato", "NZ_86","Waikohu", "NZ_88","Waimairi", "NZ_89","Waimarino", "NZ_90","Waimate", "NZ_91","Waimate West", "NZ_92","Waimea", "NZ_93","Waipa", "NZ_95","Waipawa", "NZ_96","Waipukurau", "NZ_97","Wairarapa South", "NZ_98","Wairewa", "NZ_99","Wairoa", "NZ_A1","Whangarei", "NZ_A2","Whangaroa", "NZ_A3","Woodville", "NZ_A4","Waitaki", "NZ_A6","Waitomo", "NZ_A8","Waitotara", "NZ_B2","Wanganui", "NZ_B3","Westland", "NZ_B4","Whakatane", "NZ_D4","Hurunui", "NZ_D5","Silverpeaks", "NZ_D6","Strathallan", "NZ_D8","Waiheke", "NZ_D9","Hikurangi", "NZ_E1","Manaia", "NZ_E2","Runanga", "NZ_E3","Saint Kilda", "NZ_E4","Thames-Coromandel", "NZ_E5","Waverley", "NZ_E6","Wallace", "OM_01","Ad Dakhiliyah", "OM_02","Al Batinah", "OM_03","Al Wusta", "OM_04","Ash Sharqiyah", "OM_05","Az Zahirah", "OM_06","Masqat", "OM_07","Musandam", "OM_08","Zufar", "PA_01","Bocas del Toro", "PA_02","Chiriqui", "PA_03","Cocle", "PA_04","Colon", "PA_05","Darien", "PA_06","Herrera", "PA_07","Los Santos", "PA_08","Panama", "PA_09","San Blas", "PA_10","Veraguas", "PE_01","Amazonas", "PE_02","Ancash", "PE_03","Apurimac", "PE_04","Arequipa", "PE_05","Ayacucho", "PE_06","Cajamarca", "PE_07","Callao", "PE_08","Cusco", "PE_09","Huancavelica", "PE_10","Huanuco", "PE_11","Ica", "PE_12","Junin", "PE_13","La Libertad", "PE_14","Lambayeque", "PE_15","Lima", "PE_16","Loreto", "PE_17","Madre de Dios", "PE_18","Moquegua", "PE_19","Pasco", "PE_20","Piura", "PE_21","Puno", "PE_22","San Martin", "PE_23","Tacna", "PE_24","Tumbes", "PE_25","Ucayali", "PG_01","Central", "PG_02","Gulf", "PG_03","Milne Bay", "PG_04","Northern", "PG_05","Southern Highlands", "PG_06","Western", "PG_07","North Solomons", "PG_08","Chimbu", "PG_09","Eastern Highlands", "PG_10","East New Britain", "PG_11","East Sepik", "PG_12","Madang", "PG_13","Manus", "PG_14","Morobe", "PG_15","New Ireland", "PG_16","Western Highlands", "PG_17","West New Britain", "PG_18","Sandaun", "PG_19","Enga", "PG_20","National Capital", "PH_01","Abra", "PH_02","Agusan del Norte", "PH_03","Agusan del Sur", "PH_04","Aklan", "PH_05","Albay", "PH_06","Antique", "PH_07","Bataan", "PH_08","Batanes", "PH_09","Batangas", "PH_10","Benguet", "PH_11","Bohol", "PH_12","Bukidnon", "PH_13","Bulacan", "PH_14","Cagayan", "PH_15","Camarines Norte", "PH_16","Camarines Sur", "PH_17","Camiguin", "PH_18","Capiz", "PH_19","Catanduanes", "PH_20","Cavite", "PH_21","Cebu", "PH_22","Basilan", "PH_23","Eastern Samar", "PH_24","Davao", "PH_25","Davao del Sur", "PH_26","Davao Oriental", "PH_27","Ifugao", "PH_28","Ilocos Norte", "PH_29","Ilocos Sur", "PH_30","Iloilo", "PH_31","Isabela", "PH_32","Kalinga-Apayao", "PH_33","Laguna", "PH_34","Lanao del Norte", "PH_35","Lanao del Sur", "PH_36","La Union", "PH_37","Leyte", "PH_38","Marinduque", "PH_39","Masbate", "PH_40","Mindoro Occidental", "PH_41","Mindoro Oriental", "PH_42","Misamis Occidental", "PH_43","Misamis Oriental", "PH_44","Mountain", "PH_46","Negros Oriental", "PH_47","Nueva Ecija", "PH_48","Nueva Vizcaya", "PH_49","Palawan", "PH_50","Pampanga", "PH_51","Pangasinan", "PH_53","Rizal", "PH_54","Romblon", "PH_55","Samar", "PH_56","Maguindanao", "PH_57","North Cotabato", "PH_58","Sorsogon", "PH_59","Southern Leyte", "PH_60","Sulu", "PH_61","Surigao del Norte", "PH_62","Surigao del Sur", "PH_63","Tarlac", "PH_64","Zambales", "PH_65","Zamboanga del Norte", "PH_66","Zamboanga del Sur", "PH_67","Northern Samar", "PH_68","Quirino", "PH_69","Siquijor", "PH_70","South Cotabato", "PH_71","Sultan Kudarat", "PH_72","Tawitawi", "PH_A1","Angeles", "PH_A2","Bacolod", "PH_A3","Bago", "PH_A4","Baguio", "PH_A5","Bais", "PH_A6","Basilan City", "PH_A7","Batangas City", "PH_A8","Butuan", "PH_A9","Cabanatuan", "PH_B1","Cadiz", "PH_B2","Cagayan de Oro", "PH_B3","Calbayog", "PH_B4","Caloocan", "PH_B5","Canlaon", "PH_B6","Cavite City", "PH_B7","Cebu City", "PH_B8","Cotabato", "PH_B9","Dagupan", "PH_C1","Danao", "PH_C2","Dapitan", "PH_C3","Davao City", "PH_C4","Dipolog", "PH_C5","Dumaguete", "PH_C6","General Santos", "PH_C7","Gingoog", "PH_C8","Iligan", "PH_C9","Iloilo City", "PH_D1","Iriga", "PH_D2","La Carlota", "PH_D3","Laoag", "PH_D4","Lapu-Lapu", "PH_D5","Legaspi", "PH_D6","Lipa", "PH_D7","Lucena", "PH_D8","Mandaue", "PH_D9","Manila", "PH_E1","Marawi", "PH_E2","Naga", "PH_E3","Olongapo", "PH_E4","Ormoc", "PH_E5","Oroquieta", "PH_E6","Ozamis", "PH_E7","Pagadian", "PH_E8","Palayan", "PH_E9","Pasay", "PH_F1","Puerto Princesa", "PH_F2","Quezon City", "PH_F3","Roxas", "PH_F4","San Carlos", "PH_F5","San Carlos", "PH_F6","San Jose", "PH_F7","San Pablo", "PH_F8","Silay", "PH_F9","Surigao", "PH_G1","Tacloban", "PH_G2","Tagaytay", "PH_G3","Tagbilaran", "PH_G4","Tangub", "PH_G5","Toledo", "PH_G6","Trece Martires", "PH_G7","Zamboanga", "PH_G8","Aurora", "PH_H2","Quezon", "PH_H3","Negros Occidental", "PK_01","Federally Administered Tribal Areas", "PK_02","Balochistan", "PK_03","North-West Frontier", "PK_04","Punjab", "PK_05","Sindh", "PK_06","Azad Kashmir", "PK_07","Northern Areas", "PK_08","Islamabad", "PL_23","Biala Podlaska", "PL_24","Bialystok", "PL_25","Bielsko", "PL_26","Bydgoszcz", "PL_27","Chelm", "PL_28","Ciechanow", "PL_29","Czestochowa", "PL_30","Elblag", "PL_31","Gdansk", "PL_32","Gorzow", "PL_33","Jelenia Gora", "PL_34","Kalisz", "PL_35","Katowice", "PL_36","Kielce", "PL_37","Konin", "PL_38","Koszalin", "PL_39","Krakow", "PL_40","Krosno", "PL_41","Legnica", "PL_42","Leszno", "PL_43","Lodz", "PL_44","Lomza", "PL_45","Lublin", "PL_46","Nowy Sacz", "PL_47","Olsztyn", "PL_48","Opole", "PL_49","Ostroleka", "PL_50","Pila", "PL_51","Piotrkow", "PL_52","Plock", "PL_53","Poznan", "PL_54","Przemysl", "PL_55","Radom", "PL_56","Rzeszow", "PL_57","Siedlce", "PL_58","Sieradz", "PL_59","Skierniewice", "PL_60","Slupsk", "PL_61","Suwalki", "PL_62","Szczecin", "PL_63","Tarnobrzeg", "PL_64","Tarnow", "PL_65","Torun", "PL_66","Walbrzych", "PL_67","Warszawa", "PL_68","Wloclawek", "PL_69","Wroclaw", "PL_70","Zamosc", "PL_71","Zielona Gora", "PL_72","Dolnoslaskie", "PL_73","Kujawsko-Pomorskie", "PL_74","Lodzkie", "PL_75","Lubelskie", "PL_76","Lubuskie", "PL_77","Malopolskie", "PL_78","Mazowieckie", "PL_79","Opolskie", "PL_80","Podkarpackie", "PL_81","Podlaskie", "PL_82","Pomorskie", "PL_83","Slaskie", "PL_84","Swietokrzyskie", "PL_85","Warminsko-Mazurskie", "PL_86","Wielkopolskie", "PL_87","Zachodniopomorskie", "PT_02","Aveiro", "PT_03","Beja", "PT_04","Braga", "PT_05","Braganca", "PT_06","Castelo Branco", "PT_07","Coimbra", "PT_08","Evora", "PT_09","Faro", "PT_10","Madeira", "PT_11","Guarda", "PT_13","Leiria", "PT_14","Lisboa", "PT_16","Portalegre", "PT_17","Porto", "PT_18","Santarem", "PT_19","Setubal", "PT_20","Viana do Castelo", "PT_21","Vila Real", "PT_22","Viseu", "PT_23","Azores", "PY_01","Alto Parana", "PY_02","Amambay", "PY_03","Boqueron", "PY_04","Caaguazu", "PY_05","Caazapa", "PY_06","Central", "PY_07","Concepcion", "PY_08","Cordillera", "PY_10","Guaira", "PY_11","Itapua", "PY_12","Misiones", "PY_13","Neembucu", "PY_15","Paraguari", "PY_16","Presidente Hayes", "PY_17","San Pedro", "PY_18","Alto Paraguay", "PY_19","Canindeyu", "PY_20","Chaco", "PY_21","Nueva Asuncion", "QA_01","Ad Dawhah", "QA_02","Al Ghuwariyah", "QA_03","Al Jumaliyah", "QA_04","Al Khawr", "QA_06","Ar Rayyan", "QA_08","Madinat ach Shamal", "QA_09","Umm Salal", "QA_10","Al Wakrah", "QA_11","Jariyan al Batnah", "QA_12","Umm Sa'id", "RO_01","Alba", "RO_02","Arad", "RO_03","Arges", "RO_04","Bacau", "RO_05","Bihor", "RO_06","Bistrita-Nasaud", "RO_07","Botosani", "RO_08","Braila", "RO_09","Brasov", "RO_10","Bucuresti", "RO_11","Buzau", "RO_12","Caras-Severin", "RO_13","Cluj", "RO_14","Constanta", "RO_15","Covasna", "RO_16","Dambovita", "RO_17","Dolj", "RO_18","Galati", "RO_19","Gorj", "RO_20","Harghita", "RO_21","Hunedoara", "RO_22","Ialomita", "RO_23","Iasi", "RO_25","Maramures", "RO_26","Mehedinti", "RO_27","Mures", "RO_28","Neamt", "RO_29","Olt", "RO_30","Prahova", "RO_31","Salaj", "RO_32","Satu Mare", "RO_33","Sibiu", "RO_34","Suceava", "RO_35","Teleorman", "RO_36","Timis", "RO_37","Tulcea", "RO_38","Vaslui", "RO_39","Valcea", "RO_40","Vrancea", "RO_41","Calarasi", "RO_42","Giurgiu", "RO_43","Ilfov", "RU_01","Adygey", "RU_02","Aga Buryat", "RU_03","Gorno-Altay", "RU_04","Altay", "RU_05","Amur", "RU_06","Arkhangel'sk", "RU_07","Astrakhan'", "RU_08","Bashkortostan", "RU_09","Belgorod", "RU_10","Bryansk", "RU_11","Buryat", "RU_12","Chechnya", "RU_13","Chelyabinsk", "RU_14","Chita", "RU_15","Chukot", "RU_16","Chuvash", "RU_17","Dagestan", "RU_18","Evenk", "RU_19","Ingush", "RU_20","Irkutsk", "RU_21","Ivanovo", "RU_22","Kabardin-Balkar", "RU_23","Kaliningrad", "RU_24","Kalmyk", "RU_25","Kaluga", "RU_26","Kamchatka", "RU_27","Karachay-Cherkess", "RU_28","Karelia", "RU_29","Kemerovo", "RU_30","Khabarovsk", "RU_31","Khakass", "RU_32","Khanty-Mansiy", "RU_33","Kirov", "RU_34","Komi", "RU_35","Komi-Permyak", "RU_36","Koryak", "RU_37","Kostroma", "RU_38","Krasnodar", "RU_39","Krasnoyarsk", "RU_40","Kurgan", "RU_41","Kursk", "RU_42","Leningrad", "RU_43","Lipetsk", "RU_44","Magadan", "RU_45","Mariy-El", "RU_46","Mordovia", "RU_47","Moskva", "RU_48","Moscow City", "RU_49","Murmansk", "RU_50","Nenets", "RU_51","Nizhegorod", "RU_52","Novgorod", "RU_53","Novosibirsk", "RU_54","Omsk", "RU_55","Orenburg", "RU_56","Orel", "RU_57","Penza", "RU_58","Perm'", "RU_59","Primor'ye", "RU_60","Pskov", "RU_61","Rostov", "RU_62","Ryazan'", "RU_63","Sakha", "RU_64","Sakhalin", "RU_65","Samara", "RU_66","Saint Petersburg City", "RU_67","Saratov", "RU_68","North Ossetia", "RU_69","Smolensk", "RU_70","Stavropol'", "RU_71","Sverdlovsk", "RU_72","Tambov", "RU_73","Tatarstan", "RU_74","Taymyr", "RU_75","Tomsk", "RU_76","Tula", "RU_77","Tver'", "RU_78","Tyumen'", "RU_79","Tuva", "RU_80","Udmurt", "RU_81","Ul'yanovsk", "RU_82","Ust-Orda Buryat", "RU_83","Vladimir", "RU_84","Volgograd", "RU_85","Vologda", "RU_86","Voronezh", "RU_87","Yamal-Nenets", "RU_88","Yaroslavl'", "RU_89","Yevrey", "RW_01","Butare", "RW_02","Byumba", "RW_03","Cyangugu", "RW_04","Gikongoro", "RW_05","Gisenyi", "RW_06","Gitarama", "RW_07","Kibungo", "RW_08","Kibuye", "RW_09","Kigali", "RW_10","Ruhengeri", "SA_02","Al Bahah", "SA_03","Al Jawf", "SA_05","Al Madinah", "SA_06","Ash Sharqiyah", "SA_08","Al Qasim", "SA_09","Al Qurayyat", "SA_10","Ar Riyad", "SA_13","Ha'il", "SA_14","Makkah", "SA_15","Al Hudud ash Shamaliyah", "SA_16","Najran", "SA_17","Jizan", "SA_19","Tabuk", "SB_03","Malaita", "SB_04","Western", "SB_05","Central", "SB_06","Guadalcanal", "SB_07","Isabel", "SB_08","Makira", "SB_09","Temotu", "SC_01","Anse aux Pins", "SC_02","Anse Boileau", "SC_03","Anse Etoile", "SC_04","Anse Louis", "SC_05","Anse Royale", "SC_06","Baie Lazare", "SC_07","Baie Sainte Anne", "SC_08","Beau Vallon", "SC_09","Bel Air", "SC_10","Bel Ombre", "SC_11","Cascade", "SC_12","Glacis", "SC_13","Grand' Anse", "SC_14","Grand' Anse", "SC_15","La Digue", "SC_16","La Riviere Anglaise", "SC_17","Mont Buxton", "SC_18","Mont Fleuri", "SC_19","Plaisance", "SC_20","Pointe La Rue", "SC_21","Port Glaud", "SC_22","Saint Louis", "SC_23","Takamaka", "SD_27","Al Wusta", "SD_28","Al Istiwa'iyah", "SD_29","Al Khartum", "SD_30","Ash Shamaliyah", "SD_31","Ash Sharqiyah", "SD_32","Bahr al Ghazal", "SD_33","Darfur", "SD_34","Kurdufan", "SE_01","Alvsborgs Lan", "SE_02","Blekinge Lan", "SE_03","Gavleborgs Lan", "SE_04","Goteborgs och Bohus Lan", "SE_05","Gotlands Lan", "SE_06","Hallands Lan", "SE_07","Jamtlands Lan", "SE_08","Jonkopings Lan", "SE_09","Kalmar Lan", "SE_10","Dalarnas Lan", "SE_11","Kristianstads Lan", "SE_12","Kronobergs Lan", "SE_13","Malmohus Lan", "SE_14","Norrbottens Lan", "SE_15","Orebro Lan", "SE_16","Ostergotlands Lan", "SE_17","Skaraborgs Lan", "SE_18","Sodermanlands Lan", "SE_21","Uppsala Lan", "SE_22","Varmlands Lan", "SE_23","Vasterbottens Lan", "SE_24","Vasternorrlands Lan", "SE_25","Vastmanlands Lan", "SE_26","Stockholms Lan", "SE_27","Skane Lan", "SE_28","Vastra Gotaland", "SH_01","Ascension", "SH_02","Saint Helena", "SH_03","Tristan da Cunha", "SI_01","Ajdovscina", "SI_02","Beltinci", "SI_03","Bled", "SI_04","Bohinj", "SI_05","Borovnica", "SI_06","Bovec", "SI_07","Brda", "SI_08","Brezice", "SI_09","Brezovica", "SI_11","Celje", "SI_12","Cerklje na Gorenjskem", "SI_13","Cerknica", "SI_14","Cerkno", "SI_15","Crensovci", "SI_16","Crna na Koroskem", "SI_17","Crnomelj", "SI_19","Divaca", "SI_20","Dobrepolje", "SI_22","Dol pri Ljubljani", "SI_24","Dornava", "SI_25","Dravograd", "SI_26","Duplek", "SI_27","Gorenja Vas-Poljane", "SI_28","Gorisnica", "SI_29","Gornja Radgona", "SI_30","Gornji Grad", "SI_31","Gornji Petrovci", "SI_32","Grosuplje", "SI_34","Hrastnik", "SI_35","Hrpelje-Kozina", "SI_36","Idrija", "SI_37","Ig", "SI_38","Ilirska Bistrica", "SI_39","Ivancna Gorica", "SI_40","Izola-Isola", "SI_42","Jursinci", "SI_44","Kanal", "SI_45","Kidricevo", "SI_46","Kobarid", "SI_47","Kobilje", "SI_49","Komen", "SI_50","Koper-Capodistria", "SI_51","Kozje", "SI_52","Kranj", "SI_53","Kranjska Gora", "SI_54","Krsko", "SI_55","Kungota", "SI_57","Lasko", "SI_61","Ljubljana", "SI_62","Ljubno", "SI_64","Logatec", "SI_66","Loski Potok", "SI_68","Lukovica", "SI_71","Medvode", "SI_72","Menges", "SI_73","Metlika", "SI_74","Mezica", "SI_76","Mislinja", "SI_77","Moravce", "SI_78","Moravske Toplice", "SI_79","Mozirje", "SI_80","Murska Sobota", "SI_81","Muta", "SI_82","Naklo", "SI_83","Nazarje", "SI_84","Nova Gorica", "SI_86","Odranci", "SI_87","Ormoz", "SI_88","Osilnica", "SI_89","Pesnica", "SI_91","Pivka", "SI_92","Podcetrtek", "SI_94","Postojna", "SI_97","Puconci", "SI_98","Racam", "SI_99","Radece", "SI_A1","Radenci", "SI_A2","Radlje ob Dravi", "SI_A3","Radovljica", "SI_A6","Rogasovci", "SI_A7","Rogaska Slatina", "SI_A8","Rogatec", "SI_B1","Semic", "SI_B2","Sencur", "SI_B3","Sentilj", "SI_B4","Sentjernej", "SI_B6","Sevnica", "SI_B7","Sezana", "SI_B8","Skocjan", "SI_B9","Skofja Loka", "SI_C1","Skofljica", "SI_C2","Slovenj Gradec", "SI_C4","Slovenske Konjice", "SI_C5","Smarje pri Jelsah", "SI_C6","Smartno ob Paki", "SI_C7","Sostanj", "SI_C8","Starse", "SI_C9","Store", "SI_D1","Sveti Jurij", "SI_D2","Tolmin", "SI_D3","Trbovlje", "SI_D4","Trebnje", "SI_D5","Trzic", "SI_D6","Turnisce", "SI_D7","Velenje", "SI_D8","Velike Lasce", "SI_E1","Vipava", "SI_E2","Vitanje", "SI_E3","Vodice", "SI_E5","Vrhnika", "SI_E6","Vuzenica", "SI_E7","Zagorje ob Savi", "SI_E9","Zavrc", "SI_F1","Zelezniki", "SI_F2","Ziri", "SI_F3","Zrece", "SI_G4","Dobrova-Horjul-Polhov Gradec", "SI_G7","Domzale", "SI_H4","Jesenice", "SI_H6","Kamnik", "SI_H7","Kocevje", "SI_I2","Kuzma", "SI_I3","Lenart", "SI_I5","Litija", "SI_I6","Ljutomer", "SI_I7","Loska Dolina", "SI_I9","Luce", "SI_J1","Majsperk", "SI_J2","Maribor", "SI_J5","Miren-Kostanjevica", "SI_J7","Novo Mesto", "SI_J9","Piran", "SI_K5","Preddvor", "SI_K7","Ptuj", "SI_L1","Ribnica", "SI_L3","Ruse", "SI_L7","Sentjur pri Celju", "SI_L8","Slovenska Bistrica", "SI_N2","Videm", "SI_N3","Vojnik", "SI_N5","Zalec", "SK_01","Banska Bystrica", "SK_02","Bratislava", "SK_03","Kosice", "SK_04","Nitra", "SK_05","Presov", "SK_06","Trencin", "SK_07","Trnava", "SK_08","Zilina", "SL_01","Eastern", "SL_02","Northern", "SL_03","Southern", "SL_04","Western Area", "SM_01","Acquaviva", "SM_02","Chiesanuova", "SM_03","Domagnano", "SM_04","Faetano", "SM_05","Fiorentino", "SM_06","Borgo Maggiore", "SM_07","San Marino", "SM_08","Monte Giardino", "SM_09","Serravalle", "SN_01","Dakar", "SN_03","Diourbel", "SN_04","Saint-Louis", "SN_05","Tambacounda", "SN_07","Thies", "SN_08","Louga", "SN_09","Fatick", "SN_10","Kaolack", "SN_11","Kolda", "SN_12","Ziguinchor", "SO_01","Bakool", "SO_02","Banaadir", "SO_03","Bari", "SO_04","Bay", "SO_05","Galguduud", "SO_06","Gedo", "SO_07","Hiiraan", "SO_08","Jubbada Dhexe", "SO_09","Jubbada Hoose", "SO_10","Mudug", "SO_11","Nugaal", "SO_12","Sanaag", "SO_13","Shabeellaha Dhexe", "SO_14","Shabeellaha Hoose", "SO_15","Togdheer", "SO_16","Woqooyi Galbeed", "SR_10","Brokopondo", "SR_11","Commewijne", "SR_12","Coronie", "SR_13","Marowijne", "SR_14","Nickerie", "SR_15","Para", "SR_16","Paramaribo", "SR_17","Saramacca", "SR_18","Sipaliwini", "SR_19","Wanica", "ST_01","Principe", "ST_02","Sao Tome", "SV_01","Ahuachapan", "SV_02","Cabanas", "SV_03","Chalatenango", "SV_04","Cuscatlan", "SV_05","La Libertad", "SV_06","La Paz", "SV_07","La Union", "SV_08","Morazan", "SV_09","San Miguel", "SV_10","San Salvador", "SV_11","Santa Ana", "SV_12","San Vicente", "SV_13","Sonsonate", "SV_14","Usulutan", "SY_01","Al Hasakah", "SY_02","Al Ladhiqiyah", "SY_03","Al Qunaytirah", "SY_04","Ar Raqqah", "SY_05","As Suwayda'", "SY_06","Dar", "SY_07","Dayr az Zawr", "SY_08","Rif Dimashq", "SY_09","Halab", "SY_10","Hamah", "SY_11","Hims", "SY_12","Idlib", "SY_13","Dimashq", "SY_14","Tartus", "SZ_01","Hhohho", "SZ_02","Lubombo", "SZ_03","Manzini", "SZ_04","Shiselweni", "SZ_05","Praslin", "TD_01","Batha", "TD_02","Biltine", "TD_03","Borkou-Ennedi-Tibesti", "TD_04","Chari-Baguirmi", "TD_05","Guera", "TD_06","Kanem", "TD_07","Lac", "TD_08","Logone Occidental", "TD_09","Logone Oriental", "TD_10","Mayo-Kebbi", "TD_11","Moyen-Chari", "TD_12","Ouaddai", "TD_13","Salamat", "TD_14","Tandjile", "TG_01","Amlame", "TG_02","Aneho", "TG_03","Atakpame", "TG_04","Bafilo", "TG_05","Bassar", "TG_06","Dapaong", "TG_07","Kante", "TG_08","Klouto", "TG_09","Lama-Kara", "TG_10","Lome", "TG_11","Mango", "TG_12","Niamtougou", "TG_13","Notse", "TG_14","Kpagouda", "TG_15","Badou", "TG_16","Sotouboua", "TG_17","Tabligbo", "TG_18","Tsevie", "TG_19","Tchamba", "TG_20","Tchaoudjo", "TG_21","Vogan", "TH_01","Mae Hong Son", "TH_02","Chiang Mai", "TH_03","Chiang Rai", "TH_04","Nan", "TH_05","Lamphun", "TH_06","Lampang", "TH_07","Phrae", "TH_08","Tak", "TH_09","Sukhothai", "TH_10","Uttaradit", "TH_11","Kamphaeng Phet", "TH_12","Phitsanulok", "TH_13","Phichit", "TH_14","Phetchabun", "TH_15","Uthai Thani", "TH_16","Nakhon Sawan", "TH_17","Nong Khai", "TH_18","Loei", "TH_19","Udon Thani", "TH_20","Sakon Nakhon", "TH_21","Nakhon Phanom", "TH_22","Khon Kaen", "TH_23","Kalasin", "TH_24","Maha Sarakham", "TH_25","Roi Et", "TH_26","Chaiyaphum", "TH_27","Nakhon Ratchasima", "TH_28","Buriram", "TH_29","Surin", "TH_30","Sisaket", "TH_31","Narathiwat", "TH_32","Chai Nat", "TH_33","Sing Buri", "TH_34","Lop Buri", "TH_35","Ang Thong", "TH_36","Phra Nakhon Si Ayutthaya", "TH_37","Saraburi", "TH_38","Nonthaburi", "TH_39","Pathum Thani", "TH_40","Krung Thep", "TH_41","Phayao", "TH_42","Samut Prakan", "TH_43","Nakhon Nayok", "TH_44","Chachoengsao", "TH_45","Prachin Buri", "TH_46","Chon Buri", "TH_47","Rayong", "TH_48","Chanthaburi", "TH_49","Trat", "TH_50","Kanchanaburi", "TH_51","Suphan Buri", "TH_52","Ratchaburi", "TH_53","Nakhon Pathom", "TH_54","Samut Songkhram", "TH_55","Samut Sakhon", "TH_56","Phetchaburi", "TH_57","Prachuap Khiri Khan", "TH_58","Chumphon", "TH_59","Ranong", "TH_60","Surat Thani", "TH_61","Phangnga", "TH_62","Phuket", "TH_63","Krabi", "TH_64","Nakhon Si Thammarat", "TH_65","Trang", "TH_66","Phatthalung", "TH_67","Satun", "TH_68","Songkhla", "TH_69","Pattani", "TH_70","Yala", "TH_71","Ubon Ratchathani", "TH_72","Yasothon", "TJ_01","Kuhistoni Badakhshon", "TJ_02","Khatlon", "TJ_03","Sughd", "TM_01","Ahal", "TM_02","Balkan", "TM_03","Dashoguz", "TM_04","Lebap", "TM_05","Mary", "TN_02","Al Qasrayn", "TN_03","Al Qayrawan", "TN_06","Jundubah", "TN_10","Qafsah", "TN_14","Kef", "TN_15","Al Mahdiyah", "TN_16","Al Munastir", "TN_17","Bajah", "TN_18","Banzart", "TN_19","Nabul", "TN_22","Silyanah", "TN_23","Susah", "TN_27","Bin", "TN_28","Madanin", "TN_29","Qabis", "TN_31","Qibili", "TN_32","Safaqis", "TN_33","Sidi Bu Zayd", "TN_34","Tatawin", "TN_35","Tawzar", "TN_36","Tunis", "TN_37","Zaghwan", "TN_38","Ariana", "TN_39","Manouba", "TO_01","Ha", "TO_02","Tongatapu", "TO_03","Vava", "TR_02","Adiyaman", "TR_03","Afyon", "TR_04","Agri", "TR_05","Amasya", "TR_07","Antalya", "TR_08","Artvin", "TR_09","Aydin", "TR_10","Balikesir", "TR_11","Bilecik", "TR_12","Bingol", "TR_13","Bitlis", "TR_14","Bolu", "TR_15","Burdur", "TR_16","Bursa", "TR_17","Canakkale", "TR_19","Corum", "TR_20","Denizli", "TR_21","Diyarbakir", "TR_22","Edirne", "TR_23","Elazig", "TR_24","Erzincan", "TR_25","Erzurum", "TR_26","Eskisehir", "TR_28","Giresun", "TR_31","Hatay", "TR_32","Icel", "TR_33","Isparta", "TR_34","Istanbul", "TR_35","Izmir", "TR_37","Kastamonu", "TR_38","Kayseri", "TR_39","Kirklareli", "TR_40","Kirsehir", "TR_41","Kocaeli", "TR_43","Kutahya", "TR_44","Malatya", "TR_45","Manisa", "TR_46","Kahramanmaras", "TR_48","Mugla", "TR_49","Mus", "TR_50","Nevsehir", "TR_52","Ordu", "TR_53","Rize", "TR_54","Sakarya", "TR_55","Samsun", "TR_57","Sinop", "TR_58","Sivas", "TR_59","Tekirdag", "TR_60","Tokat", "TR_61","Trabzon", "TR_62","Tunceli", "TR_63","Sanliurfa", "TR_64","Usak", "TR_65","Van", "TR_66","Yozgat", "TR_68","Ankara", "TR_69","Gumushane", "TR_70","Hakkari", "TR_71","Konya", "TR_72","Mardin", "TR_73","Nigde", "TR_74","Siirt", "TR_75","Aksaray", "TR_76","Batman", "TR_77","Bayburt", "TR_78","Karaman", "TR_79","Kirikkale", "TR_80","Sirnak", "TR_81","Adana", "TR_82","Cankiri", "TR_83","Gaziantep", "TR_84","Kars", "TR_85","Zonguldak", "TR_86","Ardahan", "TR_87","Bartin", "TR_88","Igdir", "TR_89","Karabuk", "TR_90","Kilis", "TR_91","Osmaniye", "TR_92","Yalova", "TR_93","Duzce", "TT_01","Arima", "TT_02","Caroni", "TT_03","Mayaro", "TT_04","Nariva", "TT_05","Port-of-Spain", "TT_06","Saint Andrew", "TT_07","Saint David", "TT_08","Saint George", "TT_09","Saint Patrick", "TT_10","San Fernando", "TT_11","Tobago", "TT_12","Victoria", "TW_01","Fu-chien", "TW_02","Kao-hsiung", "TW_03","T'ai-pei", "TW_04","T'ai-wan", "TZ_01","Arusha", "TZ_02","Pwani", "TZ_03","Dodoma", "TZ_04","Iringa", "TZ_05","Kigoma", "TZ_06","Kilimanjaro", "TZ_07","Lindi", "TZ_08","Mara", "TZ_09","Mbeya", "TZ_10","Morogoro", "TZ_11","Mtwara", "TZ_12","Mwanza", "TZ_13","Pemba North", "TZ_14","Ruvuma", "TZ_15","Shinyanga", "TZ_16","Singida", "TZ_17","Tabora", "TZ_18","Tanga", "TZ_19","Kagera", "TZ_20","Pemba South", "TZ_21","Zanzibar Central", "TZ_22","Zanzibar North", "TZ_23","Dar es Salaam", "TZ_24","Rukwa", "TZ_25","Zanzibar Urban", "UA_01","Cherkas'ka Oblast'", "UA_02","Chernihivs'ka Oblast'", "UA_03","Chernivets'ka Oblast'", "UA_04","Dnipropetrovs'ka Oblast'", "UA_05","Donets'ka Oblast'", "UA_06","Ivano-Frankivs'ka Oblast'", "UA_07","Kharkivs'ka Oblast'", "UA_08","Khersons'ka Oblast'", "UA_09","Khmel'nyts'ka Oblast'", "UA_10","Kirovohrads'ka Oblast'", "UA_11","Krym", "UA_12","Kyyiv", "UA_13","Kyyivs'ka Oblast'", "UA_14","Luhans'ka Oblast'", "UA_15","L'vivs'ka Oblast'", "UA_16","Mykolayivs'ka Oblast'", "UA_17","Odes'ka Oblast'", "UA_18","Poltavs'ka Oblast'", "UA_19","Rivnens'ka Oblast'", "UA_20","Sevastopol'", "UA_21","Sums'ka Oblast'", "UA_22","Ternopil's'ka Oblast'", "UA_23","Vinnyts'ka Oblast'", "UA_24","Volyns'ka Oblast'", "UA_25","Zakarpats'ka Oblast'", "UA_26","Zaporiz'ka Oblast'", "UA_27","Zhytomyrs'ka Oblast'", "UG_05","Busoga", "UG_08","Karamoja", "UG_12","South Buganda", "UG_18","Central", "UG_20","Eastern", "UG_21","Nile", "UG_22","North Buganda", "UG_23","Northern", "UG_24","Southern", "UG_25","Western", "UG_65","Adjumani", "UG_66","Bugiri", "UG_67","Busia", "UG_69","Katakwi", "UG_73","Nakasongola", "UG_74","Sembabule", "UG_77","Arua", "UG_78","Iganga", "UG_79","Kabarole", "UG_80","Kaberamaido", "UG_81","Kamwenge", "UG_82","Kanungu", "UG_83","Kayunga", "UG_84","Kitgum", "UG_85","Kyenjojo", "UG_86","Mayuge", "UG_87","Mbale", "UG_88","Moroto", "UG_89","Mpigi", "UG_90","Mukono", "UG_91","Nakapiripirit", "UG_92","Pader", "UG_93","Rukungiri", "UG_94","Sironko", "UG_95","Soroti", "UG_96","Wakiso", "UG_97","Yumbe", "US_01","Alabama", "US_02","Alaska", "US_04","Arizona", "US_05","Arkansas", "US_06","California", "US_08","Colorado", "US_09","Connecticut", "US_10","Delaware", "US_11","District of Columbia", "US_12","Florida", "US_13","Georgia", "US_15","Hawaii", "US_16","Idaho", "US_17","Illinois", "US_18","Indiana", "US_19","Iowa", "US_20","Kansas", "US_21","Kentucky", "US_22","Louisiana", "US_23","Maine", "US_24","Maryland", "US_25","Massachusetts", "US_26","Michigan", "US_27","Minnesota", "US_28","Mississippi", "US_29","Missouri", "US_30","Montana", "US_31","Nebraska", "US_32","Nevada", "US_33","New Hampshire", "US_34","New Jersey", "US_35","New Mexico", "US_36","New York", "US_37","North Carolina", "US_38","North Dakota", "US_39","Ohio", "US_40","Oklahoma", "US_41","Oregon", "US_42","Pennyslvania", "US_44","Rhode Island", "US_45","South Carolina", "US_46","South Dakota", "US_47","Tennessee", "US_48","Texas", "US_49","Utah", "US_50","Vermont", "US_51","Virginia", "US_53","Washington", "US_54","West Virginia", "US_55","Wisconsin", "US_56","Wyoming", "UY_01","Artigas", "UY_02","Canelones", "UY_03","Cerro Largo", "UY_04","Colonia", "UY_05","Durazno", "UY_06","Flores", "UY_07","Florida", "UY_08","Lavalleja", "UY_09","Maldonado", "UY_10","Montevideo", "UY_11","Paysandu", "UY_12","Rio Negro", "UY_13","Rivera", "UY_14","Rocha", "UY_15","Salto", "UY_16","San Jose", "UY_17","Soriano", "UY_18","Tacuarembo", "UY_19","Treinta y Tres", "UZ_01","Andijon", "UZ_02","Bukhoro", "UZ_03","Farghona", "UZ_04","Jizzakh", "UZ_05","Khorazm", "UZ_06","Namangan", "UZ_07","Nawoiy", "UZ_08","Qashqadaryo", "UZ_09","Qoraqalpoghiston", "UZ_10","Samarqand", "UZ_11","Sirdaryo", "UZ_12","Surkhondaryo", "UZ_13","Toshkent", "UZ_14","Toshkent", "VC_01","Charlotte", "VC_02","Saint Andrew", "VC_03","Saint David", "VC_04","Saint George", "VC_05","Saint Patrick", "VC_06","Grenadines", "VE_01","Amazonas", "VE_02","Anzoategui", "VE_03","Apure", "VE_04","Aragua", "VE_05","Barinas", "VE_06","Bolivar", "VE_07","Carabobo", "VE_08","Cojedes", "VE_09","Delta Amacuro", "VE_11","Falcon", "VE_12","Guarico", "VE_13","Lara", "VE_14","Merida", "VE_15","Miranda", "VE_16","Monagas", "VE_17","Nueva Esparta", "VE_18","Portuguesa", "VE_19","Sucre", "VE_20","Tachira", "VE_21","Trujillo", "VE_22","Yaracuy", "VE_23","Zulia", "VE_24","Dependencias Federales", "VE_25","Distrito Federal", "VE_26","Vargas", "VN_02","Bac Thai", "VN_03","Ben Tre", "VN_05","Cao Bang", "VN_11","Ha Bac", "VN_12","Hai Hung", "VN_13","Hai Phong", "VN_22","Lai Chau", "VN_23","Lam Dong", "VN_24","Long An", "VN_29","Quang Nam-Da Nang", "VN_30","Quang Ninh", "VN_32","Son La", "VN_33","Tay Ninh", "VN_34","Thanh Hoa", "VN_35","Thai Binh", "VN_37","Tien Giang", "VN_39","Lang Son", "VN_43","An Giang", "VN_44","Dac Lac", "VN_45","Dong Nai", "VN_46","Dong Thap", "VN_47","Kien Giang", "VN_48","Minh Hai", "VN_49","Song Be", "VN_50","Vinh Phu", "VN_51","Ha Noi", "VN_52","Ho Chi Minh", "VN_53","Ba Ria-Vung Tau", "VN_54","Binh Dinh", "VN_55","Binh Thuan", "VN_56","Can Tho", "VN_57","Gia Lai", "VN_58","Ha Giang", "VN_59","Ha Tay", "VN_60","Ha Tinh", "VN_61","Hoa Binh", "VN_62","Khanh Hoa", "VN_63","Kon Tum", "VN_64","Lao Cai", "VN_65","Nam Ha", "VN_66","Nghe An", "VN_67","Ninh Binh", "VN_68","Ninh Thuan", "VN_69","Phu Yen", "VN_70","Quang Binh", "VN_71","Quang Ngai", "VN_72","Quang Tri", "VN_73","Soc Trang", "VN_74","Thua Thien", "VN_75","Tra Vinh", "VN_76","Tuyen Quang", "VN_77","Vinh Long", "VN_78","Yen Bai", "VU_05","Ambrym", "VU_06","Aoba", "VU_07","Torba", "VU_08","Efate", "VU_09","Epi", "VU_10","Malakula", "VU_11","Paama", "VU_12","Pentecote", "VU_13","Sanma", "VU_14","Shepherd", "VU_15","Tafea", "VU_16","Malampa", "VU_17","Penama", "VU_18","Shefa", "WS_02","Aiga-i-le-Tai", "WS_03","Atua", "WS_04","Fa", "WS_05","Gaga", "WS_06","Va", "WS_07","Gagaifomauga", "WS_08","Palauli", "WS_09","Satupa", "WS_10","Tuamasaga", "WS_11","Vaisigano", "YE_01","Abyan", "YE_03","Al Mahrah", "YE_04","Hadramawt", "YE_05","Shabwah", "YE_08","Al Hudaydah", "YE_10","Al Mahwit", "YE_11","Dhamar", "YE_14","Ma'rib", "YE_15","Sa", "YE_16","San", "YE_20","Al Bayda'", "YE_21","Al Jawf", "YE_22","Hajjah", "YE_23","Ibb", "YE_24","Lahij", "YE_25","Ta", "ZA_02","KwaZulu-Natal", "ZA_03","Free State", "ZA_05","Eastern Cape", "ZA_06","Gauteng", "ZA_07","Mpumalanga", "ZA_08","Northern Cape", "ZA_09","Limpopo", "ZA_10","North-West", "ZA_11","Western Cape", "ZM_01","Western", "ZM_02","Central", "ZM_03","Eastern", "ZM_04","Luapula", "ZM_05","Northern", "ZM_06","North-Western", "ZM_07","Southern", "ZM_08","Copperbelt", "ZM_09","Lusaka", "ZR_01","Bandundu", "ZR_02","Equateur", "ZR_03","Kasai-Occidental", "ZR_04","Kasai-Oriental", "ZR_05","Katanga", "ZR_06","Kinshasa", "ZR_07","Kivu", "ZR_08","Bas-Congo", "ZR_09","Orientale", "ZR_10","Maniema", "ZR_11","Nord-Kivu", "ZR_12","Sud-Kivu", "ZW_01","Manicaland", "ZW_02","Midlands", "ZW_03","Mashonaland Central", "ZW_04","Mashonaland East", "ZW_05","Mashonaland West", "ZW_06","Matabeleland North", "ZW_07","Matabeleland South", "ZW_08","Masvingo", "ZW_09","Bulawayo", "ZW_10","Harare" ); # -----> sub RegionName($$) { my $countrycode = shift || ""; my $regioncode = shift || ""; if ($countrycode eq "us") { return $regus{uc $regioncode} || ""; } if ($countrycode eq "ca") { return $regca{uc $regioncode} || ""; } return $regall{uc($countrycode."_".$regioncode)} || ""; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_geoip_city_maxmind { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); $MAXNBOFSECTIONGIR=10; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin $PluginName: InitParams=$InitParams",1); my ($mode,$tmpdatafile)=split(/\s+/,$InitParams,2); my ($datafile,$override)=split(/\+/,$tmpdatafile,2); if (! $datafile) { $datafile="GeoIPCity.dat"; } else { $datafile =~ s/%20/ /g; } if ($type eq 'geoippureperl') { # With pureperl with always use GEOIP_STANDARD. # GEOIP_MEMORY_CACHE seems to fail with ActiveState if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } if ($override){ $override =~ s/%20/ /g; $OverrideFile=$override; } %TmpDomainLookup=(); debug(" Plugin $PluginName: GeoIP initialized type=$type mode=$mode override=$override",1); if ($type eq 'geoippureperl') { $geoip_city_maxmind = Geo::IP::PurePerl->open($datafile, $mode); } else { $geoip_city_maxmind = Geo::IP->open($datafile, $mode); } $LoadedOverride=0; # Fails on some GeoIP version # debug(" Plugin geoip_city_maxmind: GeoIP initialized database_info=".$geoip_city_maxmind->database_info()); if ($geoip_city_maxmind) { debug(" Plugin $PluginName: GeoIP plugin and gi object initialized",1); } else { return "Error: Failed to create gi object for datafile=".$datafile; } # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLMenuLink_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLMenuLink_geoip_city_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- if ($Debug) { debug(" Plugin $PluginName: AddHTMLMenuLink"); } if ($categ eq 'who') { $menu->{"plugin_$PluginName"}=2.2; # Pos $menulink->{"plugin_$PluginName"}=2; # Type of link $menutext->{"plugin_$PluginName"}=$Message[172]; # Text } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLGraph_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLGraph_geoip_city_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- my $ShowCities='H'; $MinHit{'Cities'}=1; my $total_p; my $total_h; my $total_k; my $rest_p; my $rest_h; my $rest_k; if ($Debug) { debug(" Plugin $PluginName: AddHTMLGraph $categ $menu $menulink $menutext"); } my $title="GeoIP Cities"; &tab_head($title,19,0,'cities'); print ""; print "".$Message[148].""; print "".$Message[171].""; print "".$Message[172].": ".((scalar keys %_city_h)-($_city_h{'unknown'}?1:0)).""; if ($ShowCities =~ /P/i) { print "$Message[56]"; } if ($ShowCities =~ /P/i) { print "$Message[15]"; } if ($ShowCities =~ /H/i) { print "$Message[57]"; } if ($ShowCities =~ /H/i) { print "$Message[15]"; } if ($ShowCities =~ /B/i) { print "$Message[75]"; } if ($ShowCities =~ /L/i) { print "$Message[9]"; } print "\n"; $total_p=$total_h=$total_k=0; my $count=0; &BuildKeyList($MaxRowsInHTMLOutput,$MinHit{'Cities'},\%_city_h,\%_city_h); # Group by country # my @countrylist=('ca','us'); # foreach my $country (@countrylist) { # print ""; # print "".$countrylib{$country}.""; # if ($ShowCities =~ /P/i) { print " "; } # if ($ShowCities =~ /P/i) { print " "; } # if ($ShowCities =~ /H/i) { print " "; } # if ($ShowCities =~ /H/i) { print " "; } # if ($ShowCities =~ /B/i) { print " "; } # if ($ShowCities =~ /L/i) { print " "; } # print "\n"; foreach my $key (@keylist) { if ($key eq 'unknown') { next; } my ($countrycode,$city,$regioncode)=split('_',$key,3); $city=~s/%20/ /g; # if ($countrycode ne $country) { next; } my $p_p; my $p_h; if ($TotalPages) { $p_p=int(($_city_p{$key}||0)/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($_city_h{$key}/$TotalHits*1000)/10; } print ""; print "".$DomainsHashIDLib{$countrycode}.""; my $regionlib=RegionName($countrycode, $regioncode); print "".($regionlib?$regionlib:' ').""; print "".ucfirst(EncodeToPageCode($city)).""; if ($ShowCities =~ /P/i) { print "".($_city_p{$key}?Format_Number($_city_p{$key}):" ").""; } if ($ShowCities =~ /P/i) { print "".($_city_p{$key}?"$p_p %":' ').""; } if ($ShowCities =~ /H/i) { print "".($_city_h{$key}?Format_Number($_city_h{$key}):" ").""; } if ($ShowCities =~ /H/i) { print "".($_city_h{$key}?"$p_h %":' ').""; } if ($ShowCities =~ /B/i) { print "".Format_Bytes($_city_k{$key}).""; } if ($ShowCities =~ /L/i) { print "".($_city_p{$key}?Format_Date($_city_l{$key},1):'-').""; } print "\n"; $total_p += $_city_p{$key}||0; $total_h += $_city_h{$key}; $total_k += $_city_k{$key}||0; $count++; } # } if ($Debug) { debug("Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h",2); } $rest_p=0; $rest_h=$TotalHits-$total_h; $rest_k=0; if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other cities # print ""; # print " "; # if ($ShowCities =~ /P/i) { print " "; } # if ($ShowCities =~ /P/i) { print " "; } # if ($ShowCities =~ /H/i) { print " "; } # if ($ShowCities =~ /H/i) { print " "; } # if ($ShowCities =~ /B/i) { print " "; } # if ($ShowCities =~ /L/i) { print " "; } # print "\n"; my $p_p; my $p_h; if ($TotalPages) { $p_p=int($rest_p/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($rest_h/$TotalHits*1000)/10; } print ""; print "$Message[2]/$Message[0]"; if ($ShowCities =~ /P/i) { print "".($rest_p?$rest_p:" ").""; } if ($ShowCities =~ /P/i) { print "".($rest_p?"$p_p %":' ').""; } if ($ShowCities =~ /H/i) { print "".($rest_h?$rest_h:" ").""; } if ($ShowCities =~ /H/i) { print "".($rest_h?"$p_h %":' ').""; } if ($ShowCities =~ /B/i) { print "".Format_Bytes($rest_k).""; } if ($ShowCities =~ /L/i) { print " "; } print "\n"; } &tab_end(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByAddr_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByAddr is called to translate an ip into a country code in lower case. #----------------------------------------------------------------------------- # Rem: not used sub GetCountryCodeByAddr_geoip_city_maxmind { my $param="$_[0]"; # <----- my $res = TmpLookup_geoip_city_maxmind($param); if ($type eq 'geoippureperl') { if (! $res) { my @record = (); @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; my $country; $country=$record[0] if @record; $res=lc($country) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: Already resolved to [$res]",5); } } else { if (! $res) { my $record=(); $record=$geoip_city_maxmind->record_by_addr($param) if $geoip_city_maxmind; my $country; $country=$record->country if $record; $res=lc($country) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: Already resolved to [$res]",5); } } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByName_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByName is called to translate a host name into a country code in lower case. #----------------------------------------------------------------------------- # Rem: not used sub GetCountryCodeByName_geoip_city_maxmind { my $param="$_[0]"; # <----- my $res = TmpLookup_geoip_city_maxmind($param); if ($type eq 'geoippureperl') { if (! $res) { my @record = (); @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; my $country; $country=$record[0] if @record; $res=lc($country) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: Already resolved to [$res]",5); } } else { if (! $res) { my $record=(); $record=$geoip_city_maxmind->record_by_name($param) if $geoip_city_maxmind; my $country; $country=$record->country if $record; $res=lc($country) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: Already resolved to [$res]",5); } } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_city_maxmind { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } # print ""; # print "GeoIP
Country
"; # print ""; print ""; print "GeoIP
City
"; print ""; } elsif ($param) { # try loading our override file if we haven't yet my $ip=0; my $key; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $ip=4; $key=$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $ip=6; $key=$param; } if ($key && $ip==4) { my $country; my $city; my @res = TmpLookup_geoip_city_maxmind($param); if (@res){ $country = $res[0]; $city = $res[4]; } elsif ($type eq 'geoippureperl') { my @record = (); @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; if ($Debug) { debug(" Plugin $PluginName: GetCityByIp for $param: [@record]",5); } $country=$record[0] if @record; $city=$record[4] if @record; } else { my $record=(); $record=$geoip_city_maxmind->record_by_addr($param) if $geoip_city_maxmind; if ($Debug) { debug(" Plugin $PluginName: GetCityByIp for $param: [$record]",5); } $country=$record->country_code if $record; $city=$record->city if $record; } # print ""; # if ($country) { print $DomainsHashIDLib{$country}?$DomainsHashIDLib{$country}:"$Message[0]"; } # else { print "$Message[0]"; } # print ""; print ""; if ($city) { print EncodeToPageCode($city); } else { print "$Message[0]"; } print ""; } if ($key && $ip==6) { debug (" Plugin $PluginName: IPv6 not supported by GeoIP: $key"); print ""; print "$Message[0]"; print ""; } if (! $key) { my $country; my $city; my @res = TmpLookup_geoip_city_maxmind($param); if (@res){ $country = $res[0]; $city = $res[4]; } elsif ($type eq 'geoippureperl') { my @record = (); @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; if ($Debug) { debug(" Plugin $PluginName: GetCityByHostname for $param: [@record]",5); } $country=$record[0] if @record; $city=$record[4] if @record; } else { my $record=(); $record=$geoip_city_maxmind->record_by_name($param) if $geoip_city_maxmind; if ($Debug) { debug(" Plugin $PluginName: GetCityByHostname for $param: [$record]",5); } $country=$record->country_code if $record; $city=$record->city if $record; } # print ""; # if ($country) { print $DomainsHashIDLib{$country}?$DomainsHashIDLib{$country}:"$Message[0]"; } # else { print "$Message[0]"; } # print ""; print ""; if ($city) { print EncodeToPageCode($city); } else { print "$Message[0]"; } print ""; } } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionInitHashArray_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionInitHashArray_geoip_city_maxmind { # my $param="$_[0]"; # <----- if ($Debug) { debug(" Plugin $PluginName: Init_HashArray"); } %_city_p = %_city_h = %_city_k = %_city_l =(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessIP_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessIp_geoip_city_maxmind { my $param="$_[0]"; # Param must be an IP # <----- if ($type eq 'geoippureperl') { my @record = TmpLookup_geoip_city_maxmind($param); if (!@record){ @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetCityByName for $param: [@record]",5); } if (@record) { my $city=$record[4]; if ($city) { my $countrycity=$record[0].'_'.$city; $countrycity=~s/ /%20/g; if ($record[3]) { $countrycity.='_'.$record[3]; } $_city_h{lc($countrycity)}++; } else { $_city_h{'unknown'}++; } } else { $_city_h{'unknown'}++; } } else { my $record=(); my @rec = TmpLookup_geoip_city_maxmind($param); if (@rec){ $record->city = $rec[4]; $record->region = $rec[0]; $record->country_code = $rec[3]; }else{ $record=$geoip_city_maxmind->record_by_addr($param) if $geoip_city_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetCityByIp for $param: [$record]",5); } if ($record) { my $city=$record->city; # if ($PageBool) { $_city_p{$city}++; } if ($city) { my $countrycity=$record->country_code.'_'.$record->city; $countrycity=~s/ /%20/g; if ($record->region) { $countrycity.='_'.$record->region; } $_city_h{lc($countrycity)}++; } else { $_city_h{'unknown'}++; } # if ($timerecord > $_city_l{$city}) { $_city_l{$city}=$timerecord; } } else { $_city_h{'unknown'}++; } } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessHostname_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessHostname_geoip_city_maxmind { my $param="$_[0]"; # Param must be an IP if ($type eq 'geoippureperl') { my @record = TmpLookup_geoip_city_maxmind($param); if (!@record){ @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetCityByName for $param: [@record]",5); } if (@record) { my $city=$record[4]; if ($city) { my $countrycity=$record[0].'_'.$city; $countrycity=~s/ /%20/g; if ($record[3]) { $countrycity.='_'.$record[3]; } $_city_h{lc($countrycity)}++; } else { $_city_h{'unknown'}++; } } else { $_city_h{'unknown'}++; } } else { my $record=(); my @rec = TmpLookup_geoip_city_maxmind($param); if (@rec){ $record->city = $rec[4]; $record->region = $rec[3]; $record->country_code = $rec[0]; }else{ $record=$geoip_city_maxmind->record_by_name($param) if $geoip_city_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetCityByName for $param: [$record]",5); } if ($record) { my $city=$record->city; # if ($PageBool) { $_city_p{$city}++; } if ($city) { my $countrycity=($record->country_code).'_'.$city; $countrycity=~s/ /%20/g; if ($record->region) { $countrycity.='_'.$record->region; } $_city_h{lc($countrycity)}++; } else { $_city_h{'unknown'}++; } # if ($timerecord > $_city_l{$city}) { $_city_l{$city}=$timerecord; } } else { $_city_h{'unknown'}++; } } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionReadHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionReadHistory_geoip_city_maxmind { my $issectiontoload=shift; my $xmlold=shift; my $xmleb=shift; my $countlines=shift; # <----- if ($Debug) { debug(" Plugin $PluginName: Begin of PLUGIN_geoip_city_maxmind section"); } my @field=(); my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($issectiontoload) { $countloaded++; if ($field[2]) { $_city_h{$field[0]}+=$field[2]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($xmlold?XMLDecodeFromHisto($_):$_)); $countlines++; } until ($field[0] eq "END_PLUGIN_$PluginName" || $field[0] eq "${xmleb}END_PLUGIN_$PluginName" || ! $_); if ($field[0] ne "END_PLUGIN_$PluginName" && $field[0] ne "${xmleb}END_PLUGIN_$PluginName") { error("History file is corrupted (End of section PLUGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" Plugin $PluginName: End of PLUGIN_$PluginName section ($count entries, $countloaded loaded)"); } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionWriteHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionWriteHistory_geoip_city_maxmind { my ($xml,$xmlbb,$xmlbs,$xmlbe,$xmlrb,$xmlrs,$xmlre,$xmleb,$xmlee)=(shift,shift,shift,shift,shift,shift,shift,shift,shift); if ($Debug) { debug(" Plugin $PluginName: SectionWriteHistory_$PluginName start - ".(scalar keys %_city_h)); } # <----- print HISTORYTMP "\n"; if ($xml) { print HISTORYTMP "
$MAXNBOFSECTIONGIR\n"; } print HISTORYTMP "# Plugin key - Pages - Hits - Bandwidth - Last access\n"; #print HISTORYTMP "# The $MaxNbOfExtra[$extranum] first number of hits are first\n"; $ValueInFile{"plugin_$PluginName"}=tell HISTORYTMP; print HISTORYTMP "${xmlbb}BEGIN_PLUGIN_$PluginName${xmlbs}".(scalar keys %_city_h)."${xmlbe}\n"; &BuildKeyList($MAXNBOFSECTIONGIR,1,\%_city_h,\%_city_h); my %keysinkeylist=(); foreach (@keylist) { $keysinkeylist{$_}=1; #my $page=$_city_p{$_}||0; #my $bytes=$_city_k{$_}||0; #my $lastaccess=$_city_l{$_}||''; print HISTORYTMP "${xmlrb}".XMLEncodeForHisto($_)."${xmlrs}0${xmlrs}", $_city_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } foreach (keys %_city_h) { if ($keysinkeylist{$_}) { next; } #my $page=$_city_p{$_}||0; #my $bytes=$_city_k{$_}||0; #my $lastaccess=$_city_l{$_}||''; print HISTORYTMP "${xmlrb}".XMLEncodeForHisto($_)."${xmlrs}0${xmlrs}", $_city_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } print HISTORYTMP "${xmleb}END_PLUGIN_$PluginName${xmlee}\n"; # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadOverrideFile # Attempts to load a comma delimited file that will override the GeoIP database # Useful for Intranet records # CSV format: IP,2-char Country code, region, city, postal code, latitude, # longitude, US metro code, US area code #----------------------------------------------------------------------------- sub LoadOverrideFile_geoip_city_maxmind{ my $filetoload=""; if ($OverrideFile){ if (!open(GEOIPFILE, $OverrideFile)){ debug("Plugin $PluginName: Unable to open override file: $OverrideFile"); $LoadedOverride = 1; return; } }else{ my $conf = (exists(&Get_Config_Name) ? Get_Config_Name() : $SiteConfig); if ($conf && open(GEOIPFILE,"$DirData/$PluginName.$conf.txt")) { $filetoload="$DirData/$PluginName.$conf.txt"; } elsif (open(GEOIPFILE,"$DirData/$PluginName.txt")) { $filetoload="$DirData/$PluginName.txt"; } else { debug("No override file \"$DirData/$PluginName.txt\": $!"); } } if ($filetoload) { # This is the fastest way to load with regexp that I know while (){ chomp $_; s/\r//; my @record = split(",", $_); # replace quotes if they were used in the file foreach (@record){ $_ =~ s/"//g; } # now we need to copy our file values in the order to mimic the lookup values my @res = (); $res[0] = $record[1]; $res[3] = $record[2]; $res[4] = $record[3]; $res[5] = $record[4]; $res[6] = $record[5]; $res[7] = $record[6]; $res[8] = $record[7]; $res[9] = $record[8]; # store in hash $TmpDomainLookup{$record[0]} = [@res]; } close GEOIPFILE; debug(" Plugin $PluginName: Overload file loaded: ".(scalar keys %TmpDomainLookup)." entries found."); } $LoadedOverride = 1; return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: TmpLookup # Searches the temporary hash for the parameter value and returns the corresponding # GEOIP entry #----------------------------------------------------------------------------- sub TmpLookup_geoip_city_maxmind(){ $param = shift; if (!$LoadedOverride){&LoadOverrideFile_geoip_city_maxmind();} # my @val = (); # if ($geoip_city_maxmind && # (($type eq 'geoip' && $geoip_city_maxmind->VERSION >= 1.30) || # $type eq 'geoippureperl' && $geoip_city_maxmind->VERSION >= 1.17)){ # @val = @{$TmpDomainLookup{$geoip_city_maxmind->get_ip_address($param)}}; # } # else {@val = @{$TmpDomainLookup{$param};}} # return @val; if ($TmpDomainLookup{$param}) { return @{$TmpDomainLookup{$param};} } else { return; } } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/hostinfo.pm0000640000175000017500000001565012410217071017574 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # HostInfo AWStats plugin # This plugin allow you to add information on hosts, like whois fields. #----------------------------------------------------------------------------- # Perl Required Modules: XWhois #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES push @INC, "${DIR}/plugins"; if (!eval ('require "Net/XWhois.pm";')) { return $@?"Error: $@":"Error: Need Perl module Net::XWhois"; } if (!eval ('require "Digest/MD5.pm";')) { return $@?"Error: $@":"Error: Need Perl module Digest::MD5"; } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.0"; my $PluginHooksFunctions="ShowInfoHost AddHTMLBodyHeader BuildFullHTMLOutput"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_hostinfo { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin hostinfo: InitParams=$InitParams",1); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLBodyHeader_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code at beginning of BODY section. # Parameters: None #----------------------------------------------------------------------------- sub AddHTMLBodyHeader_hostinfo { # <----- my $WIDTHINFO=640; my $HEIGHTINFO=480; my $urlparam="pluginmode=hostinfo&config=$SiteConfig"; $urlparam.=($DirConfig?"&configdir=$DirConfig":""); print < function neww(a,b) { var wfeatures="directories=0,menubar=1,status=0,resizable=1,scrollbars=1,toolbar=0,width=$WIDTHINFO,height=$HEIGHTINFO,left=" + eval("(screen.width - $WIDTHINFO)/2") + ",top=" + eval("(screen.height - $HEIGHTINFO)/2"); EOF print "fen=window.open('".XMLEncode("$AWScript?$urlparam&host")."='+a+'".XMLEncode("&key")."='+b,'whois',wfeatures);\n"; print < EOF return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_hostinfo { my $param="$_[0]"; # <----- if ($param eq '__title__') { print "$Message[114]"; } elsif ($param) { my $keyforwhois; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $keyforwhois=$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $keyforwhois=$param; } else { # Hostname $param =~ /([-\w]+\.[-\w]+\.(?:au|uk|jp|nz))$/ or $param =~ /([-\w]+\.[-\w]+)$/; $keyforwhois=$1; } print ""; # if ($keyforwhois) { print "?"; } if ($keyforwhois) { print "?"; } else { print " " } print ""; } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNTION: BuildFullHTMLOutput_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to output an HTML page completely built by plugin instead # of AWStats output #----------------------------------------------------------------------------- sub BuildFullHTMLOutput_hostinfo { # <----- my $Host=''; if ($QueryString =~ /host=([^&]+)/i) { $Host=lc(&DecodeEncodedString("$1")); } my $ip=''; my $HostResolved=''; # my $regipv4=qr/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; # my $regipv6=qr/^[0-9A-F]*:/i; # if ($Host =~ /$regipv4/o) { $ip=4; } # elsif ($Host =~ /$regipv6/o) { $ip=6; } # if ($ip == 4) { # my $lookupresult=lc(gethostbyaddr(pack("C4",split(/\./,$Host)),AF_INET)); # This is very slow, may spend 20 seconds # if (! $lookupresult || $lookupresult =~ /$regipv4/o || ! IsAscii($lookupresult)) { # $HostResolved='*'; # } # else { # $HostResolved=$lookupresult; # } # if ($Debug) { debug(" Reverse DNS lookup for $Host done: $HostResolved",4); } # } if (! $ip) { $HostResolved=$Host; } if ($Debug) { debug(" Plugin hostinfo: DirData=$DirData Host=$Host HostResolved=$HostResolved ",4); } my $w = new Net::XWhois Verbose=>$Debug, Cache=>$DirData, NoCache=>0, Timeout=>10, Domain=>$HostResolved; print "
\n"; if ($w && $w->response()) { &tab_head("Common Whois Fields",0,0,'whois'); print "Common field infoValue\n"; print "Name".($w->name())." "; print "Status".($w->status())." "; print "NameServers".($w->nameservers())." "; print "Registrant".($w->registrant())." "; print "Contact Admin".($w->contact_admin())." "; print "Contact Tech".($w->contact_tech())." "; print "Contact Billing".($w->contact_billing())." "; print "Contact Zone".($w->contact_zone())." "; print "Contact Emails".($w->contact_emails())." "; print "Contact Handles".($w->contact_handles())." "; print "Domain Handles".($w->domain_handles())." "; &tab_end; } &tab_head("Full Whois Field",0,0,'whois'); if ($w && $w->response()) { print "
".($w->response())."
\n"; } else { print "
The Whois command failed.
Did the server running AWStats is allowed to send WhoIs queries (If a firewall is running, port 43 should be opened from inside to outside) ?

\n"; } &tab_end; return 1; # -----> } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/geoip6.pm0000640000175000017500000002405612410217071017134 0ustar sksk#!/usr/bin/perl # extended geoip.pm by Sven Strickroth #----------------------------------------------------------------------------- # GeoIP Maxmind AWStats plugin with IPv6 support # This plugin allow you to get country report with countries detected # from a Geographical database (GeoIP internal database) instead of domain # hostname suffix. # This works with IPv4 and also IPv6 # Needs the IPv6 country database from Maxmind (free). #----------------------------------------------------------------------------- # Perl Required Modules: Geo::IP (Geo::IP::PurePerl does not support IPv6 yet) #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES use vars qw/ $type /; $type='geoip'; if (!eval ('require "Geo/IP.pm";')) { $error1=$@; # $type='geoippureperl'; # if (!eval ('require "Geo/IP/PurePerl.pm";')) { # $error2=$@; # $ret=($error1||$error2)?"Error:\n$error1$error2":""; $ret.="Error: Need Perl module Geo::IP"; return $ret; # } } else { Geo::IP->VERSION >= 1.40 || die("Requires Geo/IP.pm >= 1.40"); } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.4"; my $PluginHooksFunctions="GetCountryCodeByAddr GetCountryCodeByName ShowInfoHost"; my $PluginName = "geoip6"; my $LoadedOverride=0; my $OverrideFile=""; my %TmpDomainLookup; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $gi /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_geoip6 { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin $PluginName: InitParams=$InitParams",1); my ($mode,$tmpdatafile)=split(/\s+/,$InitParams,2); my ($datafile,$override)=split(/\+/,$tmpdatafile,2); if (! $datafile) { $datafile="$PluginName.dat"; } else { $datafile =~ s/%20/ /g; } if ($type eq 'geoippureperl') { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } if ($override){$OverrideFile=$override;} %TmpDomainLookup=(); debug(" Plugin $PluginName: GeoIP initialized type=$type mode=$mode override=$override",1); if ($type eq 'geoippureperl') { $gi = Geo::IP::PurePerl->open($datafile, $mode); } else { $gi = Geo::IP->open($datafile, $mode); } # Fails on some GeoIP version # debug(" Plugin geoip6: GeoIP initialized database_info=".$gi->database_info()); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByAddr_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByAddr is called to translate an ip into a country code in lower case. #----------------------------------------------------------------------------- sub GetCountryCodeByAddr_geoip6 { my $param="$_[0]"; # <----- if (! $param) { return ''; } my $searchkey; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $searchkey = '::'.$param; } else { $searchkey = $param; } my $res= TmpLookup_geoip6($param); if (! $res) { $res=lc($gi->country_code_by_addr_v6($searchkey)) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $searchkey: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: Already resolved to [$res]",5); } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByName_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByName is called to translate a host name into a country code in lower case. #----------------------------------------------------------------------------- sub GetCountryCodeByName_geoip6 { my $param="$_[0]"; # <----- if (! $param) { return ''; } my $res = TmpLookup_geoip6($param); if (! $res) { $res=lc($gi->country_code_by_name_v6($param)) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: Already resolved to [$res]",5); } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip6 { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ tr/&/&/s; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } print ""; print "GeoIP
Country
"; print ""; } elsif ($param) { my $ip=0; my $key; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $ip=4; $key='::'.$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $ip=6; $key=$param; } print ""; if ($key) { my $res = TmpLookup_geoip6($param); if (!$res && $gi) { $res=lc($gi->country_code_by_addr_v6($key)); } if ($Debug) { debug(" Plugin $PluginName: GetCountryByIp for $key: [$res]",5); } if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"$Message[0]"; } else { print "$Message[0]"; } } else { my $res = TmpLookup_geoip6($param); if (!$res){$res=lc($gi->country_code_by_name_v6($param)) if $gi;} if ($Debug) { debug(" Plugin $PluginName: GetCountryByHostname for $param: [$res]",5); } if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"$Message[0]"; } else { print "$Message[0]"; } } print ""; } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadOverrideFile # Attempts to load a comma delimited file that will override the GeoIP database # Useful for Intranet records # CSV format: IP,2-char Country code #----------------------------------------------------------------------------- sub LoadOverrideFile_geoip6{ my $filetoload=""; if ($OverrideFile){ if (!open(GEOIPFILE, $OverrideFile)){ debug("Plugin $PluginName: Unable to open override file: $OverrideFile"); $LoadedOverride = 1; return; } }else{ my $conf = (exists(&Get_Config_Name) ? Get_Config_Name() : $SiteConfig); if ($conf && open(GEOIPFILE,"$DirData/$PluginName.$conf.txt")) { $filetoload="$DirData/$PluginName.$conf.txt"; } elsif (open(GEOIPFILE,"$DirData/$PluginName.txt")) { $filetoload="$DirData/$PluginName.txt"; } else { debug("No override file \"$DirData/$PluginName.txt\": $!"); } } if ($filetoload) { # This is the fastest way to load with regexp that I know while (){ chomp $_; s/\r//; my @record = split(",", $_); # replace quotes if they were used in the file foreach (@record){ $_ =~ s/"//g; } # store in hash $TmpDomainLookup{$record[0]} = $record[1]; } close GEOIPFILE; debug(" Plugin $PluginName: Overload file loaded: ".(scalar keys %TmpDomainLookup)." entries found."); } $LoadedOverride = 1; return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: TmpLookup # Searches the temporary hash for the parameter value and returns the corresponding # GEOIP entry #----------------------------------------------------------------------------- sub TmpLookup_geoip6(){ $param = shift; if (!$LoadedOverride){&LoadOverrideFile_geoip6();} #my $val; #if ($gi && #(($type eq 'geoip' && $gi->VERSION >= 1.30) || # $type eq 'geoippureperl' && $gi->VERSION >= 1.17)){ # $val = $TmpDomainLookup{$gi->get_ip_address($param)}; #} #else {$val = $TmpDomainLookup{$param};} #return $val || ''; return $TmpDomainLookup{$param}||''; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/hashfiles.pm0000640000175000017500000001202112410217071017676 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # HashFiles AWStats plugin # Allows AWStats to read/save its data file as native hash files. # This increase read andwrite files operations. #----------------------------------------------------------------------------- # Perl Required Modules: Storable #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES if (!eval ('require "Storable.pm";')) { return $@?"Error: $@":"Error: Need Perl module Storable"; } # -----> use strict;no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.1"; my $PluginHooksFunctions="SearchFile LoadCache SaveHash"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $PluginHashfilesUpToDate /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_hashfiles { my $InitParams=shift; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS $PluginHashfilesUpToDate=1; # -----> my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNTION: SearchFile_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub SearchFile_hashfiles { my ($searchdir,$dnscachefile,$filesuffix,$dnscacheext,$filetoload)=@_; # Get params sent by ref if (-f "${searchdir}$dnscachefile$filesuffix.hash") { my ($tmp1a,$tmp2a,$tmp3a,$tmp4a,$tmp5a,$tmp6a,$tmp7a,$tmp8a,$tmp9a,$datesource,$tmp10a,$tmp11a,$tmp12a) = stat("${searchdir}$dnscachefile$filesuffix$dnscacheext"); my ($tmp1b,$tmp2b,$tmp3b,$tmp4b,$tmp5b,$tmp6b,$tmp7b,$tmp8b,$tmp9b,$datehash,$tmp10b,$tmp11b,$tmp12b) = stat("${searchdir}$dnscachefile$filesuffix.hash"); if ($datesource && $datehash < $datesource) { $PluginHashfilesUpToDate=0; debug(" Plugin hashfiles: Hash file not up to date. Will use source file $filetoload instead."); } else { # There is no source file or there is and hash file is up to date. We can just load hash file $filetoload="${searchdir}$dnscachefile$filesuffix.hash"; } } elsif ($filetoload) { $PluginHashfilesUpToDate=0; debug(" Plugin hashfiles: Hash file not found. Will use source file $filetoload instead."); } # Change calling params $_[4]=$filetoload; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadCache_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub LoadCache_hashfiles { my ($filetoload,$hashtoload)=@_; if ($filetoload =~ /\.hash$/) { # There is no source file or there is and hash file is up to date. We can just load hash file eval('%$hashtoload = %{ Storable::retrieve("$filetoload") };') || warning("Warning: Error while retrieving hashfile: $@"); } } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SaveHash_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub SaveHash_hashfiles { my ($filetosave,$hashtosave,$testifuptodate,$nbmaxofelemtosave,$nbofelemsaved)=@_; if (! $testifuptodate || ! $PluginHashfilesUpToDate) { $filetosave =~ s/(\.\w+)$//; $filetosave.=".hash"; debug(" Plugin hashfiles: Save data ".($nbmaxofelemtosave?"($nbmaxofelemtosave records max)":"(all records)")." into hash file $filetosave"); if (! $nbmaxofelemtosave || (scalar keys %$hashtosave <= $nbmaxofelemtosave)) { # Save all hash array unless ( eval('Storable::store(\%$hashtosave, "$filetosave");') ) { $_[4] = 0; warning("Warning: Error while storing hashfile: $@"); return; } $_[4]=scalar keys %$hashtosave; } else { debug(" Plugin hashfiles: We need to resize hash to save from ".(scalar keys %$hashtosave)." to $nbmaxofelemtosave"); # Save part of hash array my $counter=0; my %newhashtosave=(); foreach my $key (keys %$hashtosave) { $newhashtosave{$key}=$hashtosave->{$key}; if (++$counter >= $nbmaxofelemtosave) { last; } } unless ( eval('Storable::store(\%newhashtosave, "$filetosave");') ) { $_[4] = 0; warning("Warning: Error while storing hashfile: $@"); return; } $_[4]=scalar keys %newhashtosave; } $_[0]=$filetosave; } else { $_[4]=0; } } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/rawlog.pm0000640000175000017500000001101612410217071017226 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # Rawlog AWStats plugin # This plugin adds a form in AWStats main page to allow users to see raw # content of current log files. A filter is also available. #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES. # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.7"; my $PluginHooksFunctions="AddHTMLBodyHeader BuildFullHTMLOutput"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $MAXLINE /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_rawlog { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin rawlog: InitParams=$InitParams",1); if ($QueryString =~ /rawlog_maxlines=(\d+)/i) { $MAXLINE=&DecodeEncodedString("$1"); } else { $MAXLINE=5000; } # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNTION: AddHTMLBodyHeader_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code at beginning of BODY section. #----------------------------------------------------------------------------- sub AddHTMLBodyHeader_rawlog { # <----- # Show form only if option -staticlinks not used if (! $StaticLinks) { &_ShowForm(''); } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNTION: BuildFullHTMLOutput_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to output an HTML page completely built by plugin instead # of AWStats output #----------------------------------------------------------------------------- sub BuildFullHTMLOutput_rawlog { # <----- my $Filter=''; if ($QueryString =~ /filterrawlog=([^&]+)/i) { $Filter=&DecodeEncodedString("$1"); } # A security check if ($QueryString =~ /logfile=/i) { print "
Option logfile is not allowed while building rawlog output.
"; return 0; } # Show form &_ShowForm($Filter); # Precompiled regex Filter to speed up scan if ($Filter) { $Filter=qr/$Filter/i; } print "
\n"; # Show raws my $xml=($BuildReportFormat eq 'xhtml'); open(LOG,"$LogFile") || error("Couldn't open server log file \"$LogFile\" : $!"); binmode LOG; # Avoid premature EOF due to log files corrupted with \cZ or bin chars my $i=0; print "
";
	while () {
		chomp $_; $_ =~ s/\r//;
		if ($Filter && $_ !~ /$Filter/o) { next; }
		print ($xml?XMLEncode("$_"):"$_");
		print "\n";
		if (++$i >= $MAXLINE) { last; }
	}
	print "

\n$i lines.
"; return 1; # -----> } sub _ShowForm { my $Filter=shift||''; print "
\n"; print "
\n"; print "\n"; print "
"; print "\n"; print "\n"; print "\n"; print "
Show content of file '$LogFile' ($MAXLINE first lines):
$Message[79]:       Max Number of Lines:       \n"; print ""; print "
\n"; print "
\n"; print "
\n"; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/geoip_org_maxmind.pm0000640000175000017500000004640612410217071021435 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GeoIp_Org_Maxmind AWStats plugin # This plugin allow you to add a city report. # Need the licensed ISP database from Maxmind. #----------------------------------------------------------------------------- # Perl Required Modules: Geo::IP or Geo::IP::PurePerl #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES use vars qw/ $type /; $type='geoip'; if (!eval ('require "Geo/IP.pm";')) { $error1=$@; $type='geoippureperl'; if (!eval ('require "Geo/IP/PurePerl.pm";')) { $error2=$@; $ret=($error1||$error2)?"Error:\n$error1$error2":""; $ret.="Error: Need Perl module Geo::IP or Geo::IP::PurePerl"; return $ret; } } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.2"; my $PluginHooksFunctions="AddHTMLMenuLink AddHTMLGraph ShowInfoHost SectionInitHashArray SectionProcessIp SectionProcessHostname SectionReadHistory SectionWriteHistory"; my $PluginName="geoip_org_maxmind"; my $LoadedOverride=0; my $OverrideFile=""; my %TmpDomainLookup; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $geoip_org_maxmind %_org_p %_org_h %_org_k %_org_l $MAXNBOFSECTIONGIR $MAXLENGTH /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_geoip_org_maxmind { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); $MAXNBOFSECTIONGIR=10; $MAXLENGTH=50; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin $PluginName: InitParams=$InitParams",1); my ($mode,$tmpdatafile)=split(/\s+/,$InitParams,2); my ($datafile,$override)=split(/\+/,$tmpdatafile,2); if (! $datafile) { $datafile="GeoIPOrg.dat"; } else { $datafile =~ s/%20/ /g; } if ($type eq 'geoippureperl') { # With pureperl with always use GEOIP_STANDARD. # GEOIP_MEMORY_CACHE seems to fail with ActiveState if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } if ($override){ $override =~ s/%20/ /g; $OverrideFile=$override; } %TmpDomainLookup=(); debug(" Plugin $PluginName: GeoIP initialized type=$type mode=$mode",1); if ($type eq 'geoippureperl') { $geoip_org_maxmind = Geo::IP::PurePerl->open($datafile, $mode); } else { $geoip_org_maxmind = Geo::IP->open($datafile, $mode); } $LoadedOverride=0; # Fails on some GeoIP version # debug(" Plugin $PluginName: GeoIP initialized database_info=".$geoip_org_maxmind->database_info()); if ($geoip_org_maxmind) { debug(" Plugin $PluginName: GeoIP plugin and gi object initialized",1); } else { return "Error: Failed to create gi object for datafile=".$datafile; } # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLMenuLink_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLMenuLink_geoip_org_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- if ($Debug) { debug(" Plugin $PluginName: AddHTMLMenuLink"); } if ($categ eq 'who') { $menu->{"plugin_$PluginName"}=0.5; # Pos $menulink->{"plugin_$PluginName"}=2; # Type of link $menutext->{"plugin_$PluginName"}="Organizations"; # Text } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLGraph_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLGraph_geoip_org_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- my $ShowISP='H'; $MinHit{'Org'}=1; my $total_p; my $total_h; my $total_k; my $rest_p; my $rest_h; my $rest_k; if ($Debug) { debug(" Plugin $PluginName: AddHTMLGraph $categ $menu $menulink $menutext"); } my $title='Organizations'; &tab_head("$title",19,0,'org'); print "Organizations : ".((scalar keys %_org_h)-($_org_h{'unknown'}?1:0)).""; if ($ShowISP =~ /P/i) { print "$Message[56]"; } if ($ShowISP =~ /P/i) { print "$Message[15]"; } if ($ShowISP =~ /H/i) { print "$Message[57]"; } if ($ShowISP =~ /H/i) { print "$Message[15]"; } if ($ShowISP =~ /B/i) { print "$Message[75]"; } if ($ShowISP =~ /L/i) { print "$Message[9]"; } print "\n"; $total_p=$total_h=$total_k=0; my $count=0; &BuildKeyList($MaxRowsInHTMLOutput,$MinHit{'Org'},\%_org_h,\%_org_h); foreach my $key (@keylist) { if ($key eq 'unknown') { next; } my $p_p; my $p_h; if ($TotalPages) { $p_p=int($_org_p{$key}/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($_org_h{$key}/$TotalHits*1000)/10; } print ""; my $org=$key; $org =~ s/_/ /g; print "".ucfirst($org).""; if ($ShowISP =~ /P/i) { print "".($_org_p{$key}?Format_Number($_org_p{$key}):" ").""; } if ($ShowISP =~ /P/i) { print "".($_org_p{$key}?"$p_p %":' ').""; } if ($ShowISP =~ /H/i) { print "".($_org_h{$key}?Format_Number($_org_h{$key}):" ").""; } if ($ShowISP =~ /H/i) { print "".($_org_h{$key}?"$p_h %":' ').""; } if ($ShowISP =~ /B/i) { print "".Format_Bytes($_org_k{$key}).""; } if ($ShowISP =~ /L/i) { print "".($_org_p{$key}?Format_Date($_org_l{$key},1):'-').""; } print "\n"; $total_p += $_org_p{$key}||0; $total_h += $_org_h{$key}; $total_k += $_org_k{$key}||0; $count++; } if ($Debug) { debug("Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h",2); } $rest_p=0; $rest_h=$TotalHits-$total_h; $rest_k=0; if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other cities # print ""; # print " "; # if ($ShowISP =~ /P/i) { print " "; } # if ($ShowISP =~ /P/i) { print " "; } # if ($ShowISP =~ /H/i) { print " "; } # if ($ShowISP =~ /H/i) { print " "; } # if ($ShowISP =~ /B/i) { print " "; } # if ($ShowISP =~ /L/i) { print " "; } # print "\n"; my $p_p; my $p_h; if ($TotalPages) { $p_p=int($rest_p/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($rest_h/$TotalHits*1000)/10; } print ""; print "$Message[2]/$Message[0]"; if ($ShowISP =~ /P/i) { print "".($rest_p?Format_Number($rest_p):" ").""; } if ($ShowISP =~ /P/i) { print "".($rest_p?"$p_p %":' ').""; } if ($ShowISP =~ /H/i) { print "".($rest_h?Format_Number($rest_h):" ").""; } if ($ShowISP =~ /H/i) { print "".($rest_h?"$p_h %":' ').""; } if ($ShowISP =~ /B/i) { print "".Format_Bytes($rest_k).""; } if ($ShowISP =~ /L/i) { print " "; } print "\n"; } &tab_end(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_org_maxmind { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } print ""; print "GeoIP
Org
"; print ""; } elsif ($param) { my $ip=0; my $key; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $ip=4; $key=$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $ip=6; $key=$param; } print ""; if ($key && $ip==4) { my $org = TmpLookup_geoip_org_maxmind($param); if (!$org && $type eq 'geoippureperl') { # Function org_by_addr does not exists in PurePerl but org_by_name do same $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; } elsif(!$org) { $org=$geoip_org_maxmind->org_by_addr($param) if $geoip_org_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetOrgByIp for $param: [$org]",5); } if ($org) { if (length($org) <= $MAXLENGTH) { print "$org"; } else { print substr($org,0,$MAXLENGTH).'...'; } } else { print "$Message[0]"; } } if ($key && $ip==6) { print "$Message[0]"; } if (! $key) { my $org = TmpLookup_geoip_org_maxmind($param); if (!$org && $type eq 'geoippureperl') { $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; } elsif(!$org) { $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$org]",5); } if ($org) { if (length($org) <= $MAXLENGTH) { print "$org"; } else { print substr($org,0,$MAXLENGTH).'...'; } } else { print "$Message[0]"; } } print ""; } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionInitHashArray_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionInitHashArray_geoip_org_maxmind { # my $param="$_[0]"; # <----- if ($Debug) { debug(" Plugin $PluginName: Init_HashArray"); } %_org_p = %_org_h = %_org_k = %_org_l =(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessIP_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessIp_geoip_org_maxmind { my $param="$_[0]"; # Param must be an IP # <----- my $org = TmpLookup_geoip_org_maxmind($param); if (!$org && $type eq 'geoippureperl') { # Function org_by_addr does not exists in PurePerl but org_by_name do same $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; } elsif(!$org) { $org=$geoip_org_maxmind->org_by_addr($param) if $geoip_org_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetOrgByIp for $param: [$org]",5); } if ($org) { $org =~ s/\s/_/g; $_org_h{$org}++; } else { $_org_h{'unknown'}++; } # if ($timerecord > $_org_l{$city}) { $_org_l{$city}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessHostname_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessHostname_geoip_org_maxmind { my $param="$_[0]"; # Param must be an IP # <----- my $org = TmpLookup_geoip_org_maxmind($param); if (!$org && $type eq 'geoippureperl') { $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; } elsif(!$org) { $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$org]",5); } if ($org) { $org =~ s/\s/_/g; $_org_h{$org}++; } else { $_org_h{'unknown'}++; } # if ($timerecord > $_org_l{$city}) { $_org_l{$city}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionReadHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionReadHistory_geoip_org_maxmind { my $issectiontoload=shift; my $xmlold=shift; my $xmleb=shift; my $countlines=shift; # <----- if ($Debug) { debug(" Plugin $PluginName: Begin of PLUGIN_$PluginName section"); } my @field=(); my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($issectiontoload) { $countloaded++; if ($field[2]) { $_org_h{$field[0]}+=$field[2]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($xmlold?XMLDecodeFromHisto($_):$_)); $countlines++; } until ($field[0] eq "END_PLUGIN_$PluginName" || $field[0] eq "${xmleb}END_PLUGIN_$PluginName" || ! $_); if ($field[0] ne "END_PLUGIN_$PluginName" && $field[0] ne "${xmleb}END_PLUGIN_$PluginName") { error("History file is corrupted (End of section PLUGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" Plugin $PluginName: End of PLUGIN_$PluginName section ($count entries, $countloaded loaded)"); } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionWriteHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionWriteHistory_geoip_org_maxmind { my ($xml,$xmlbb,$xmlbs,$xmlbe,$xmlrb,$xmlrs,$xmlre,$xmleb,$xmlee)=(shift,shift,shift,shift,shift,shift,shift,shift,shift); if ($Debug) { debug(" Plugin $PluginName: SectionWriteHistory_$PluginName start - ".(scalar keys %_org_h)); } # <----- print HISTORYTMP "\n"; if ($xml) { print HISTORYTMP "
$MAXNBOFSECTIONGIR\n"; } print HISTORYTMP "# Plugin key - Pages - Hits - Bandwidth - Last access\n"; #print HISTORYTMP "# The $MaxNbOfExtra[$extranum] first number of hits are first\n"; $ValueInFile{'plugin_geoip_org_maxmind'}=tell HISTORYTMP; print HISTORYTMP "${xmlbb}BEGIN_PLUGIN_$PluginName${xmlbs}".(scalar keys %_org_h)."${xmlbe}\n"; &BuildKeyList($MAXNBOFSECTIONGIR,1,\%_org_h,\%_org_h); my %keysinkeylist=(); foreach (@keylist) { $keysinkeylist{$_}=1; #my $page=$_org_p{$_}||0; #my $bytes=$_org_k{$_}||0; #my $lastaccess=$_org_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_org_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } foreach (keys %_org_h) { if ($keysinkeylist{$_}) { next; } #my $page=$_org_p{$_}||0; #my $bytes=$_org_k{$_}||0; #my $lastaccess=$_org_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_org_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } print HISTORYTMP "${xmleb}END_PLUGIN_$PluginName${xmlee}\n"; # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadOverrideFile # Attempts to load a comma delimited file that will override the GeoIP database # Useful for Intranet records # CSV format: IP,"organization" #----------------------------------------------------------------------------- sub LoadOverrideFile_geoip_org_maxmind{ my $filetoload=""; if ($OverrideFile){ if (!open(GEOIPFILE, $OverrideFile)){ debug("Plugin $PluginName: Unable to open override file: $OverrideFile"); $LoadedOverride = 1; return; } }else{ my $conf = (exists(&Get_Config_Name) ? Get_Config_Name() : $SiteConfig); if ($conf && open(GEOIPFILE,"$DirData/$PluginName.$conf.txt")) { $filetoload="$DirData/$PluginName.$conf.txt"; } elsif (open(GEOIPFILE,"$DirData/$PluginName.txt")) { $filetoload="$DirData/$PluginName.txt"; } else { debug("No override file \"$DirData/$PluginName.txt\": $!"); } } if ($filetoload) { # This is the fastest way to load with regexp that I know while (){ chomp $_; s/\r//; my @record = split(",", $_); # replace quotes if they were used in the file foreach (@record){ $_ =~ s/"//g; } # store in hash $TmpDomainLookup{$record[0]} = $record[1]; } close GEOIPFILE; debug(" Plugin $PluginName: Overload file loaded: ".(scalar keys %TmpDomainLookup)." entries found."); } $LoadedOverride = 1; return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: TmpLookup # Searches the temporary hash for the parameter value and returns the corresponding # GEOIP entry #----------------------------------------------------------------------------- sub TmpLookup_geoip_org_maxmind(){ $param = shift; if (!$LoadedOverride){&LoadOverrideFile_geoip_org_maxmind();} #my $val; #if ($geoip_org_maxmind && #(($type eq 'geoip' && $geoip_org_maxmind->VERSION >= 1.30) || # $type eq 'geoippureperl' && $geoip_org_maxmind->VERSION >= 1.17)){ # $val = $TmpDomainLookup{$geoip_org_maxmind->get_ip_address($param)}; #} #else {$val = $TmpDomainLookup{$param};} #return $val || ''; return $TmpDomainLookup{$param}||''; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/timezone.pm0000640000175000017500000001612512410217071017573 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # TimeZone AWStats reloaded plugin # # Allow AWStats to convert GMT time stamps to local time zone # taking into account daylight saving time. # If the POSIX module is available, a target time zone name # can be provided, otherwise the default system local time is used. # For compatibility with the original version of this plugin, "-/+hours" # is interpreted as a fixed difference to GMT. # # 2009 jacob@internet24.de #----------------------------------------------------------------------------- # Perl Required Modules: POSIX #----------------------------------------------------------------------------- # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # !!!!! This plugin reduces AWStats speed by about 10% !!!!! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES # -----> use strict;no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.1"; my $PluginHooksFunctions="ChangeTime GetTimeZoneTitle"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $PluginTimeZoneZone $PluginTimeZoneCache /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_timezone { my $InitParams=shift; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS if ($InitParams) { if (!eval ('require "POSIX.pm"')) { return $@?"Error: $@":"Error: Need Perl module POSIX"; } } $PluginTimeZoneZone = "$InitParams"; $PluginTimeZoneCache = {}; # -----> my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ChangeTime_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub ChangeTime_timezone { my @d = @{$_[0]}; my $e = $PluginTimeZoneCache->{$d[2]}; my ($i); unless ($e) { $e = $PluginTimeZoneCache->{$d[2]} = [ tz_find_zone_diff($PluginTimeZoneZone, $d[2]), tz_find_month_length($PluginTimeZoneZone, $d[2]) ] } INTERVAL: foreach $i (@{@$e[0]}) { foreach (1,0,3,4,5) { next INTERVAL if $d[$_]>@$i[$_]; last if $d[$_]<@$i[$_]; } $d[5] += @$i[8]; if ( $d[5]<0 ) { $d[5] += 60, $d[4]--; } elsif ( $d[5]>59 ) { $d[5] -= 60, $d[4]++; } $d[4] += @$i[7]; if ( $d[4]<0 ) { $d[4] += 60, $d[3]--; } elsif ( $d[4]>59 ) { $d[4] -= 60, $d[3]++; } $d[3] += @$i[6]; if ( $d[3]<0 ) { $d[3] += 24, $d[0]--; } elsif ( $d[3]>23 ) { $d[3] -= 24, $d[0]++; } else { return @d; } if ($d[0]<1) { $d[1]--; if ( $d[1]<1 ) { $d[2]--, $d[1] = 12, $d[0] = 31; } else { $d[0] = $e->[1][$d[1]]; } } elsif ($d[0]>$e->[1][$d[1]]) { $d[1]++, $d[0]=1; if ( $d[1]>12 ) { $d[2]++, $d[1] = 1; } } return @d; } # This should never be reached return @d; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetTimeZoneTitle_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub GetTimeZoneTitle_timezone { return $PluginTimeZoneZone; } #----------------------------------------------------------------------------- # Tools #----------------------------------------------------------------------------- # convenience wrappers sub tz_mktime { return timegm($_[0], $_[1], $_[2], $_[3], $_[4]-1, $_[5]-1900, 0, 0, -1); } sub tz_interval { my ($time, $shift) = @_; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time); return [ $mday, $mon+1, 2147483647, # max(int32) $hour, $min, $sec, int($shift/3600), int(($shift%3600)/60), int(($shift%60)), ] } # return largest $value between $left and $right # whose tz_shift is equal to that of $left sub tz_find_break { my ($left, $right) = @_; return undef if $left>$right; return $left if ($right-$left)<=1; my $middle = int(($right+$left)/2); my ($leftshift, $rightshift, $middleshift) = (tz_shift($left), tz_shift($right), tz_shift($middle)); if ($leftshift == $middleshift) { return undef if $rightshift == $middleshift; return tz_find_break($middle, $right); } elsif ($rightshift == $middleshift) { return tz_find_break($left, $middle); } } # compute difference beetween localtime and gmtime in seconds # for unix time stamp $time sub tz_shift { my ($time) = @_; my ($lsec,$lmin,$lhour,$lmday,$lmon,$lyear,$lwday,$lyday,$lisdst) = localtime($time); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time); my $day_change = $lyear-$year; $day_change = $lmon-$mon unless $day_change; $day_change = $lmday-$mday unless $day_change; my $hour_diff = $lhour-$hour; my $min_diff = $lmin-$min; my $sec_diff = $lsec-$sec; if ($day_change>0) { $hour_diff +=24; } elsif($day_change<0) { $hour_diff -=24; } return (($hour_diff*60)+$min_diff)*60+$sec_diff; } # Compute time zone shift intervals for $year # and time zone $zone sub tz_find_zone_diff { my ($zone, $year) = @_; my $othertz = $PluginTimeZoneZone && $PluginTimeZoneZone !~ m/^[+-]?\d+$/; my ($left, $middle, $right); my ($leftshift, $middleshift, $rightshift); { local $ENV{TZ} = $zone if $othertz; $left = tz_mktime(0,0,0,1,1,$year); $middle = tz_mktime(0,0,0,1,7,$year); $right = tz_mktime(59,59,23,31,12,$year); if (!$PluginTimeZoneZone || $PluginTimeZoneZone !~ m/^[+-]?\d+$/) { $leftshift = tz_shift($left); $middleshift = tz_shift($middle); $rightshift = tz_shift($right) } else { $leftshift = $middleshift = $rightshift = int($PluginTimeZoneZone)*3600; } if ($leftshift != $rightshift || $rightshift != $middleshift) { return [ tz_interval(tz_find_break($left, $middle), $leftshift), tz_interval(tz_find_break($middle, $right), $middleshift), tz_interval($right, $rightshift) ] } POSIX::tzset() if $othertz; } POSIX::tzset() if $othertz; return [ tz_interval($right, $rightshift) ] } # Compute number of days in all months for $year sub tz_find_month_length { my ($zone, $year) = @_; my $othertz = $PluginTimeZoneZone && $PluginTimeZoneZone !~ m/^[+-]?\d+$/; my $months = [ undef, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; { local $ENV{TZ} = $zone if $othertz; # leap year? $months->[2] = 29 if (localtime(tz_mktime(0, 0, 12, 28, 2, $year)+86400))[4] == 1; POSIX::tzset() if $othertz; } POSIX::tzset() if $othertz; return $months; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/ipv6.pm0000640000175000017500000000457712410217071016635 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # IPv6 AWStats plugin # This plugin allow AWStats to make reverse DNS Lookup on IPv6 addresses. #----------------------------------------------------------------------------- # Perl Required Modules: Net::IP and Net::DNS #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES if (!eval ('require "Net/IP.pm";')) { return $@?"Error: $@":"Error: Need Perl module Net::IP"; } if (!eval ('require "Net/DNS.pm";')) { return $@?"Error: $@":"Error: Need Perl module Net::DNS"; } # -----> use strict;no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.5"; my $PluginHooksFunctions="GetResolvedIP"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $resolver /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_ipv6 { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin ipv6: InitParams=$InitParams",1); $resolver = Net::DNS::Resolver->new; # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetResolvedIP_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetResolvedIP is called to resolve an IPv6 address into a host name #----------------------------------------------------------------------------- sub GetResolvedIP_ipv6 { # <----- my $ip = new Net::IP($_[0]); my $reverseip= $ip->reverse_ip(); my $query = $resolver->query($reverseip, "PTR"); if (! defined($query)) { return; } my @result=split(/\s/, ($query->answer)[0]->string); chop($result[4]); # Remove the trailing dot of the answer. return $result[4]; # -----> } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/graphgooglechartapi.pm0000640000175000017500000004564312410217071021762 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GraphGoogleChartApi AWStats plugin # Allow AWStats to replace bar graphs with a Google Graph image #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # # Changelog # # 1.0 - Initial release by george@dynapres.nl # 1.1 - Changed scaling: making it independent of chart series # 1.2 - Added pie charts, visualization hook, map and axis labels by Chris Larsen # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion = "7.0"; my $PluginHooksFunctions = "Init ShowGraph AddHTMLHeader"; my $PluginName = "graphgooglechartapi"; my $ChartProtocol = "https://"; my $ChartURI = "chart.googleapis.com/chart?"; # Don't put the HTTP part here! my $ChartIndex = 0; my $title; my $type; my $imagewidth = 640; # maximum image width. my $imageratio = .25; # Height is defaulted to 25% of width my $pieratio = .20; # Height for pie charts should be different my $mapratio = .62; # Height for maps is different my $labellength; my @blocklabel = (); my @vallabel = (); my @valcolor = (); my @valmax = (); my @valtotal = (); my @valaverage = (); my @valdata = (); # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $DirClasses $URLIndex /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_graphgooglechartapi { my $InitParams = shift; my $checkversion = &Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS $DirClasses = $InitParams; # -----> $title = ""; $type = ""; $labellength=2; $ChartIndex = -1; return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #------------------------------------------------------- # PLUGIN FUNCTION: ShowGraph_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # Prints the proper chart depending on the $type provided # Parameters: $title $type $imagewidth \@blocklabel,\@vallabel,\@valcolor,\@valmax,\@valtotal # Input: None # Output: HTML code for awgraphapplet insertion # Return: 0 OK, 1 Error #------------------------------------------------------- sub ShowGraph_graphgooglechartapi() { $title = shift; $type = shift; $imagewidth = shift || 640; $blocklabel = shift; $vallabel = shift; $valcolor = shift; $valmax = shift; $valtotal = shift; $valaverage = shift; $valdata = shift; # check width if ($imagewidth < 1){$imagewidth=640;} if ($type eq 'month') { $labellength=3; print Get_Img_Tag(Graph_Monthly(), $title); } elsif ($type eq 'daysofmonth') { $labellength=2; print Get_Img_Tag(Graph_Daily(), $title); } elsif ($type eq 'daysofweek') { $labellength=3; print Get_Img_Tag(Graph_Weekly(), $title); } elsif ($type eq 'hours') { $labellength=2; print Get_Img_Tag(Graph_Hourly(), $title); } elsif ($type eq 'cluster'){ $labellength=32; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'filetypes'){ $labellength=4; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'httpstatus'){ $labellength=4; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'browsers'){ $labellength=32; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'downloads'){ $labellength=32; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'pages'){ $labellength=32; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'oss'){ $labellength=32; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'hosts'){ $labellength=32; print Get_Img_Tag(Graph_Pie(), $title); } elsif ($type eq 'countries_map'){ print Chart_Map(); } else { debug("Unknown type parameter in ShowGraph_graphgooglechartapi function: $title",1); #error("Unknown type parameter in ShowGraph_graphgooglechartapi function"); } return 0; } #------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLHeader_pluginname # UNIQUE: NO # Prints javascript includes for Google Visualizations # Parameters: None # Input: None # Output: HTML code for Google Visualizations # Return: 0 OK, 1 Error #------------------------------------------------------- sub AddHTMLHeader_graphgooglechartapi(){ print "\n"; } #------------------------------------------------------- # PLUGIN FUNCTION: Graph_Monthly # Prints the image code to display a column chart of monthly usage # Parameters: None # Input: None # Output: HTML code to print a chart # Return: 0 OK, 1 Error #------------------------------------------------------- sub Graph_Monthly(){ my $chxt = "chxt="; my $chxl = "chxl="; my $chxs = "chxs="; my $chco = "chco="; my $chg = "chg="; my $chs = "chs="; my $cht = "cht=bvg"; my $chd = "chd=t:"; my $cba = "chbh=a"; # shows the whole month my $graphwidth = $imagewidth; my $graphheight = int ($imagewidth * $imageratio); # round max values foreach my $i(0..(scalar @$valmax)){ @$valmax[$i] = Round_Up(@$valmax[$i]); } # setup axis $chxt .= "x,y,y,r"; # add an x for years # get the month labels $chxl .= "0:|"; $chxl .= Get_Labels(); # get the hits/pages max $chxl .= "1:|0|".Get_Suffixed((@$valmax[0]/2),0)."|".Get_Suffixed(@$valmax[0],0)."|"; # get the visitors/pages max $chxl .= "2:|0|".Get_Suffixed((@$valmax[2]/2),0)."|".Get_Suffixed(@$valmax[2],0)."|"; # get bytes $chxl .= "3:|0|".Get_Suffixed((@$valmax[4]/2),1)."|".Get_Suffixed(@$valmax[4],1); # TODO add the year at the start and end # set the axis colors $chxs .= "1,".@$valcolor[0]."|2,".@$valcolor[2]."|3,".@$valcolor[4]; # dump colors foreach my $i(0..(scalar @$valcolor)){ $chco .= @$valcolor[$i]; if ($i < (scalar @$valcolor)-1){ $chco .= ",";} } # grid lines $chg .= "0,50"; # size $chs .= $graphwidth."x".$graphheight; # finally get the data $chd .= Get_Column_Data(); # string and dump return "$cht&$chxl&$chxt&$chxs&$chco&$chg&$chs&$chd&$cba"; } #------------------------------------------------------- # PLUGIN FUNCTION: Graph_Daily # Prints the image code to display a column chart of daily usage # Parameters: None # Input: None # Output: HTML code to print a chart # Return: 0 OK, 1 Error #------------------------------------------------------- sub Graph_Daily(){ my $chxt = "chxt="; my $chxl = "chxl="; my $chxs = "chxs="; my $chco = "chco="; my $chg = "chg="; my $chs = "chs="; my $cht = "cht=bvg"; my $chd = "chd=t:"; my $cba = "chbh=a"; # shows the whole month my $graphwidth = $imagewidth; my $graphheight = int ($imagewidth * $imageratio); # round max values foreach my $i(0..(scalar @$valmax)){ @$valmax[$i] = Round_Up(@$valmax[$i]); } # setup axis $chxt .= "x,y,y,r"; # add an x for years # setup axis labels # get day labels $chxl .= "0:|"; $chxl .= Get_Labels(); # get the hits/pages max $chxl .= "1:|0|".Get_Suffixed((@$valmax[0]/2),0)."|".Get_Suffixed(@$valmax[0],0)."|"; # get the visitors/pages max $chxl .= "2:|0|".Get_Suffixed((@$valmax[1]/2),0)."|".Get_Suffixed(@$valmax[1],0)."|"; # get bytes $chxl .= "3:|0|".Get_Suffixed((@$valmax[3]/2),1)."|".Get_Suffixed(@$valmax[3],1); # TODO month name # set the axis colors $chxs .= "1,".@$valcolor[0]."|2,".@$valcolor[1]."|3,".@$valcolor[3]; # dump colors foreach my $i(0..(scalar @$valcolor)){ $chco .= @$valcolor[$i]; if ($i < (scalar @$valcolor)-1){ $chco .= ",";} } # grid lines $chg .= "0,50"; # size $chs .= $graphwidth."x".$graphheight; # finally get the data $chd .= Get_Column_Data(); # string and dump return "$cht&$chxl&$chxt&$chxs&$chco&$chg&$chs&$chd&$cba"; } #------------------------------------------------------- # PLUGIN FUNCTION: Graph_Weekly # Prints the image code to display a column chart of weekly usage # Parameters: None # Input: None # Output: HTML code to print a chart # Return: 0 OK, 1 Error #------------------------------------------------------- sub Graph_Weekly(){ my $chxt = "chxt="; my $chxl = "chxl="; my $chxs = "chxs="; my $chco = "chco="; my $chg = "chg="; my $chs = "chs="; my $cht = "cht=bvg"; my $chd = "chd=t:"; my $cba = "chbh=a"; # shows the whole month my $graphwidth = int ($imagewidth * .75); # to maintain old look/ratio, reduce width of the weekly my $graphheight = int ($imagewidth * $imageratio); # round max values foreach my $i(0..(scalar @$valmax)){ @$valmax[$i] = Round_Up(@$valmax[$i]); } # setup axis $chxt .= "x,y,y,r"; # add an x for years # setup axis labels # get the day labels $chxl .= "0:|"; $chxl .= Get_Labels(); # get the hits/pages max $chxl .= "1:|0|".Get_Suffixed((@$valmax[0]/2),0)."|".Get_Suffixed(@$valmax[0],0)."|"; # get the visitors/pages max $chxl .= "2:|0|".Get_Suffixed((@$valmax[1]/2),0)."|".Get_Suffixed(@$valmax[1],0)."|"; # get bytes $chxl .= "3:|0|".Get_Suffixed((@$valmax[2]/2),1)."|".Get_Suffixed(@$valmax[2],1); # set the axis colors $chxs .= "1,".@$valcolor[0]."|2,".@$valcolor[1]."|3,".@$valcolor[2]; # dump colors foreach my $i(0..(scalar @$valcolor)){ $chco .= @$valcolor[$i]; if ($i < (scalar @$valcolor)-1){ $chco .= ",";} } # grid lines $chg .= "0,50"; # size $chs .= $graphwidth."x".$graphheight; # finally get the data $chd .= Get_Column_Data(); # string and dump return "$cht&$chxl&$chxt&$chxs&$chco&$chg&$chs&$chd&$cba"; } #------------------------------------------------------- # PLUGIN FUNCTION: Graph_Hourly # Prints the image code to display a column chart of hourly usage # Parameters: None # Input: None # Output: HTML code to print a chart # Return: 0 OK, 1 Error #------------------------------------------------------- sub Graph_Hourly(){ my $chxt = "chxt="; my $chxl = "chxl="; my $chxs = "chxs="; my $chco = "chco="; my $chg = "chg="; my $chs = "chs="; my $cht = "cht=bvg"; my $chd = "chd=t:"; my $cba = "chbh=a"; # shows the whole month my $graphwidth = $imagewidth; my $graphheight = int ($imagewidth * $imageratio); # round max values foreach my $i(0..(scalar @$valmax - 1)){ @$valmax[$i] = Round_Up(@$valmax[$i]); } # setup axis $chxt .= "x,y,y,r"; # add an x for years # setup axis labels $chxl .= "0:|"; $chxl .= Get_Labels(); # get the hits/pages max $chxl .= "1:|0|".Get_Suffixed((@$valmax[0]/2),0)."|".Get_Suffixed(@$valmax[0],0)."|"; # get the visitors/pages max $chxl .= "2:|0|".Get_Suffixed((@$valmax[1]/2),0)."|".Get_Suffixed(@$valmax[1],0)."|"; # get bytes $chxl .= "3:|0|".Get_Suffixed((@$valmax[2]/2),1)."|".Get_Suffixed(@$valmax[2],1); # TODO years # set the axis colors $chxs .= "1,".@$valcolor[0]."|2,".@$valcolor[1]."|3,".@$valcolor[2]; # dump colors foreach my $i(0..(scalar @$valcolor)){ $chco .= @$valcolor[$i]; if ($i < (scalar @$valcolor)-1){ $chco .= ",";} } # grid lines $chg .= "0,50"; # size $chs .= $graphwidth."x".$graphheight; # finally get the data $chd .= Get_Column_Data(); # string and dump return "$cht&$chxl&$chxt&$chxs&$chco&$chg&$chs&$chd&$cba"; } #------------------------------------------------------- # PLUGIN FUNCTION: Graph_Pie # Prints the image code to display a pie chart of the provided data # Parameters: None # Input: None # Output: HTML code to print a chart # Return: 0 OK, 1 Error #------------------------------------------------------- sub Graph_Pie(){ my $chl = "chl="; my $chs = "chs="; my $chco = "chco="; my $cht = "cht=p3"; my $chd = "chd=t:"; my $graphwidth = $imagewidth; my $graphheight = int ($imagewidth * $pieratio); # get labels $chl .= Get_Labels(); # get data, just read off the array for however many labels we have foreach my $i (0..((scalar @$blocklabel)-1)) { $chd .= int(@$valdata[$i]); $chd .= ($i < ((scalar @$blocklabel)-1) ? "," : ""); } # get color, just the first color passed $chco .= @$valcolor[0]; # set size $chs .= $graphwidth."x".$graphheight; return "$cht&$chs&$chco&$chl&$chd"; } #------------------------------------------------------- # PLUGIN FUNCTION: Chart_Map # Prints a Javascript and DIV tag to display a Google Visualization GeoMap # that uses the Flash plugin to display a map of the world shaded to reflect # the provided data # Parameters: None # Input: None # Output: Javascript and DIV tag # Return: 0 OK, 1 Error #------------------------------------------------------- sub Chart_Map(){ my $graphwidth = $imagewidth; my $graphheight = int ($imagewidth * $mapratio); # Assume we've already included the proper headers so just call our script inline print "\n\n"; # print the div tag that will contain the map print "
\n"; return; } #------------------------------------------------------- # PLUGIN FUNCTION: Get_Column_Data # Loops through the data array and prints a CHD string to send to a Google # chart via the API # Parameters: None # Input: @valcolor, @blocklabel, @valdata, @valmax # Output: None # Return: A pipe delimited string of data. REQUIRES the "chd=t:" prepended #------------------------------------------------------- # Returns a string with the CHD data sub Get_Column_Data(){ my $chd = ""; # use the # of colors to determine how many values we have $x= scalar @$valcolor; for ($serie = 0; $serie <= $x; $serie++) { foreach my $j (1.. (scalar @$blocklabel)) { if ($j > 1) { $chd .= ","; } $val = @$valdata[($j-1)*$x+$serie]; # convert our values to a percent of max $chd .= (@$valmax[$serie] > 0 ? int(($val / Round_Up(@$valmax[$serie])) * 100) : 0); } if ($serie < $x) { $chd .= "|"; } } # return return $chd; } #------------------------------------------------------- # PLUGIN FUNCTION: Get_Labels # Returns a CHXL string with labels to send to the Google chart API. Long labels # are shortened to $labellength # TODO - better shortening method instead of just lopping off the end of strings # Parameters: None # Input: @blocklabel, $labellength # Output: None # Return: A pipe delimited string of labels. REQUIRES the "chxl=" prepended #------------------------------------------------------- sub Get_Labels(){ my $chxl = ""; foreach my $i (1..(scalar @$blocklabel)) { $temp = @$blocklabel[$i-1]; if (length($temp) > $labellength){ $temp = (substr($temp,0,$labellength)); } $chxl .= "$temp|"; } $chxl =~ s/&//; return $chxl; } #------------------------------------------------------- # PLUGIN FUNCTION: Round_Up # Rounds a number up to the next most significant digit, i.e. 1234 becomes 2000 # Useful for getting the max values of our graph # Parameters: $num # Input: None # Output: None # Return: The rounded number #------------------------------------------------------- sub Round_Up(){ my $num = shift; $num = int($num); if ($num < 1){ return $num; } # under 100, just increment and dump if ($num < 100){return $num++; } $i = int(substr($num,0,2))+1; # pad with 0s $l = length($i); while ($l<(length($num))){ $i .= "0"; $l++; } return $i; } #------------------------------------------------------- # PLUGIN FUNCTION: Get_Suffixed # Converts a number for axis labels and appends the scientific notation suffix # or proper size in bytes # Parameters: $num # Input: @Message array from AWStats # Output: None # Return: A number with suffix, i.e. 400 MB or 200 K #------------------------------------------------------- sub Get_Suffixed(){ my $num = shift || 0; my $isbytes = shift || 0; my $float = 0; if ( $num >= ( 1 << 30 ) ) { $float = (split(/\./, $num / 1000000000))[1]; if ($float){ return sprintf( "%.1f", $num / 1000000000 ) . ($isbytes ? " $Message[110]" : " B"); }else{ return sprintf( "%.0f", $num / 1000000000 ) . ($isbytes ? " $Message[110]" : " B"); } } if ( $num >= ( 1 << 20 ) ) { $float = (split(/\./, $num / 1000000))[1]; if ($float){ return sprintf( "%.1f", $num / 1000000 ) . ($isbytes ? " $Message[109]" : " M"); }else{ return sprintf( "%.0f", $num / 1000000 ) . ($isbytes ? " $Message[109]" : " M"); } } if ( $num >= ( 1 << 10 ) ) { $float = (split(/\./, $num / 1000))[1]; if ($float){ return sprintf( "%.1f", $num / 1000 ) . ($isbytes ? " $Message[108]" : " K"); }else{ return sprintf( "%.0f", $num / 1000 ) . ($isbytes ? " $Message[108]" : " K"); } } return int($num); } #------------------------------------------------------- # PLUGIN FUNCTION: Get_Img_Tag # Builds the full IMG tag to place in HTML that will call the Google Charts API # Parameters: $params, $title # Input: $ChartProtocol, $ChartURI, $ChartIndex # Output: None # Return: An HTML IMG tag #------------------------------------------------------- sub Get_Img_Tag(){ my $params = shift || ""; my $title = shift || ""; my $tag = "= 9 ? 0 : $ChartIndex + 1); $tag .= $params; $tag .= "\" alt=\"$title\"/>"; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/decodeutfkeys.pm0000640000175000017500000000551412410217071020577 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # decodeUTFKeys AWStats plugin # Allow AWStats to convert keywords strings coded by some search engines in # UTF8 coding to a common string in a local charset. #----------------------------------------------------------------------------- # Perl Required Modules: Encode and URI::Escape #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES if (!eval ('require "Encode.pm"')) { return $@?"Error: $@":"Error: Need Perl module Encode"; } if (!eval ('require "URI/Escape.pm"')) { return $@?"Error: $@":"Error: Need Perl module URI::Escape"; } #if (!eval ('require "HTML/Entities.pm"')) { return $@?"Error: $@":"Error: Need Perl module HTML::Entities"; } # -----> use strict;no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.0"; my $PluginHooksFunctions="DecodeKey"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_decodeutfkeys { my $InitParams=shift; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS # -----> my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #------------------------------------------------------------------------------ # Function: Converts an UTF8 string to specified Charset # Parameters: utfstringtodecode charsettoencode # Return: newencodedstring #------------------------------------------------------------------------------ sub DecodeKey_decodeutfkeys { my $string = shift; my $encoding = shift; if (! $encoding) { error("Function DecodeKey from plugin decodeutfkeys was called but AWStats don't know language code required to output new value."); } $string =~ s/\\x(\w\w)/%$1/gi; # Change "\xc4\xbe\xd7\xd3\xc3\xc0" into "%c4%be%d7%d3%c3%c0" $string=URI::Escape::uri_unescape($string); if ( $string =~ m/^(?:[\x00-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf])*$/ ) { $string=Encode::encode($encoding, Encode::decode("utf-8", $string)); } #$string=HTML::Entities::encode_entities($string); $string =~ s/[;+]/ /g; return $string; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/geoip_region_maxmind.pm0000750000175000017500000006234212410217071022130 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GeoIp_Region_Maxmind AWStats plugin # This plugin allow you to add a region report with regions detected # from a Geographical database (US and Canada). # Need the licensed region database from Maxmind. #----------------------------------------------------------------------------- # Perl Required Modules: Geo::IP or Geo::IP::PurePerl #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES use vars qw/ $type /; $type='geoip'; if (!eval ('require "Geo/IP.pm";')) { $error1=$@; $type='geoippureperl'; if (!eval ('require "Geo/IP/PurePerl.pm";')) { $error2=$@; $ret=($error1||$error2)?"Error:\n$error1$error2":""; $ret.="Error: Need Perl module Geo::IP or Geo::IP::PurePerl"; return $ret; } } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.5"; my $PluginHooksFunctions="AddHTMLMenuLink AddHTMLGraph ShowInfoHost SectionInitHashArray SectionProcessIp SectionProcessHostname SectionReadHistory SectionWriteHistory"; my $PluginName="geoip_region_maxmind"; my $LoadedOverride=0; my $OverrideFile=""; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ %TmpDomainLookup $geoip_region_maxmind %_region_p %_region_h %_region_k %_region_l $MAXNBOFSECTIONGIR %region /; my %countrylib=('ca'=>'Canada','us'=>'USA'); my %countryregionlib=('ca'=>'Canadian Regions','us'=>'US regions'); my %regca=( 'AB',"Alberta", 'BC',"British Columbia", 'MB',"Manitoba", 'NB',"New Brunswick", 'NF',"Newfoundland", 'NS',"Nova Scotia", 'NU',"Nunavut", 'ON',"Ontario", 'PE',"Prince Edward Island", 'QC',"Quebec", 'SK',"Saskatchewan", 'NT',"Northwest Territories", 'YT',"Yukon Territory" ); my %regus=( 'AA',"Armed Forces Americas", 'AE',"Armed Forces Europe, Middle East, & Canada", 'AK',"Alaska", 'AL',"Alabama", 'AP',"Armed Forces Pacific", 'AR',"Arkansas", 'AS',"American Samoa", 'AZ',"Arizona", 'CA',"California", 'CO',"Colorado", 'CT',"Connecticut", 'DC',"District of Columbia", 'DE',"Delaware", 'FL',"Florida", 'FM',"Federated States of Micronesia", 'GA',"Georgia", 'GU',"Guam", 'HI',"Hawaii", 'IA',"Iowa", 'ID',"Idaho", 'IL',"Illinois", 'IN',"Indiana", 'KS',"Kansas", 'KY',"Kentucky", 'LA',"Louisiana", 'MA',"Massachusetts", 'MD',"Maryland", 'ME',"Maine", 'MH',"Marshall Islands", 'MI',"Michigan", 'MN',"Minnesota", 'MO',"Missouri", 'MP',"Northern Mariana Islands", 'MS',"Mississippi", 'MT',"Montana", 'NC',"North Carolina", 'ND',"North Dakota", 'NE',"Nebraska", 'NH',"New Hampshire", 'NJ',"New Jersey", 'NM',"New Mexico", 'NV',"Nevada", 'NY',"New York", 'OH',"Ohio", 'OK',"Oklahoma", 'OR',"Oregon", 'PA',"Pennsylvania", 'PR',"Puerto Rico", 'PW',"Palau", 'RI',"Rhode Island", 'SC',"South Carolina", 'SD',"South Dakota", 'TN',"Tennessee", 'TX',"Texas", 'UT',"Utah", 'VA',"Virginia", 'VI',"Virgin Islands", 'VT',"Vermont", 'WA',"Washington", 'WV',"West Virginia", 'WI',"Wisconsin", 'WY',"Wyoming" ); my %region=( 'ca'=>\%regca, 'us'=>\%regus ); # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_geoip_region_maxmind { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); $MAXNBOFSECTIONGIR=10; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin $PluginName: InitParams=$InitParams",1); my ($mode,$tmpdatafile)=split(/\s+/,$InitParams,2); my ($datafile,$override)=split(/\+/,$tmpdatafile,2); if (! $datafile) { $datafile="GeoIPRegion.dat"; } else { $datafile =~ s/%20/ /g; } if ($type eq 'geoippureperl') { # With pureperl we always use GEOIP_STANDARD. # GEOIP_MEMORY_CACHE seems to fail with ActiveState if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } if ($override){ $override =~ s/%20/ /g; $OverrideFile=$override; } %TmpDomainLookup=(); debug(" Plugin $PluginName: GeoIP initialized type=$type mode=$mode",1); if ($type eq 'geoippureperl') { $geoip_region_maxmind = Geo::IP::PurePerl->open($datafile, $mode); } else { $geoip_region_maxmind = Geo::IP->open($datafile, $mode); } $LoadedOverride=0; # Fails with some geoip versions # debug(" Plugin geoip_region_maxmind: GeoIP initialized database_info=".$geoip_region_maxmind->database_info()); if ($geoip_region_maxmind) { debug(" Plugin $PluginName: GeoIP plugin and gi object initialized",1); } else { return "Error: Failed to create gi object for datafile=".$datafile; } # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLMenuLink_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLMenuLink_geoip_region_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- if ($Debug) { debug(" Plugin $PluginName: AddHTMLMenuLink"); } if ($categ eq 'who') { $menu->{"plugin_$PluginName"}=2.1; # Pos $menulink->{"plugin_$PluginName"}=2; # Type of link $menutext->{"plugin_$PluginName"}="Regions"; # Text } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLGraph_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLGraph_geoip_region_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- my $ShowRegions='H'; $MinHit{'Regions'}=1; my $total_p; my $total_h; my $total_k; my $rest_p; my $rest_h; my $rest_k; if ($Debug) { debug(" Plugin $PluginName: AddHTMLGraph"); } my $title='Regions'; &tab_head("$title",19,0,'regions'); print "US and CA Regions : ".((scalar keys %_region_h)-($_region_h{'unknown'}?1:0)).""; if ($ShowRegions =~ /P/i) { print "$Message[56]"; } if ($ShowRegions =~ /P/i) { print "$Message[15]"; } if ($ShowRegions =~ /H/i) { print "$Message[57]"; } if ($ShowRegions =~ /H/i) { print "$Message[15]"; } if ($ShowRegions =~ /B/i) { print "$Message[75]"; } if ($ShowRegions =~ /L/i) { print "$Message[9]"; } print "\n"; $total_p=$total_h=$total_k=0; my $count=0; &BuildKeyList($MaxRowsInHTMLOutput,$MinHit{'Regions'},\%_region_h,\%_region_h); # Group by country my @countrylist=('ca','us'); foreach my $country (@countrylist) { print "".$countryregionlib{$country}.""; if ($ShowRegions =~ /P/i) { print " "; } if ($ShowRegions =~ /P/i) { print " "; } if ($ShowRegions =~ /H/i) { print " "; } if ($ShowRegions =~ /H/i) { print " "; } if ($ShowRegions =~ /B/i) { print " "; } if ($ShowRegions =~ /L/i) { print " "; } print "\n"; foreach my $key (@keylist) { if ($key eq 'unknown') { next; } my ($countrycode,$regioncode)=split('_',$key); if ($countrycode ne $country) { next; } my $p_p; my $p_h; if ($TotalPages) { $p_p=int($_region_p{$key}/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($_region_h{$key}/$TotalHits*1000)/10; } print "".$region{$countrycode}{uc($regioncode)}." ($regioncode)"; if ($ShowRegions =~ /P/i) { print "".($_region_p{$key}?Format_Number($_region_p{$key}):" ").""; } if ($ShowRegions =~ /P/i) { print "".($_region_p{$key}?"$p_p %":' ').""; } if ($ShowRegions =~ /H/i) { print "".($_region_h{$key}?Format_Number($_region_h{$key}):" ").""; } if ($ShowRegions =~ /H/i) { print "".($_region_h{$key}?"$p_h %":' ').""; } if ($ShowRegions =~ /B/i) { print "".Format_Bytes($_region_k{$key}).""; } if ($ShowRegions =~ /L/i) { print "".($_region_p{$key}?Format_Date($_region_l{$key},1):'-').""; } print "\n"; $total_p += $_region_p{$key}||0; $total_h += $_region_h{$key}; $total_k += $_region_k{$key}||0; $count++; } } if ($Debug) { debug("Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h",2); } $rest_p=0; $rest_h=$TotalHits-$total_h; $rest_k=0; if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other regions print " "; if ($ShowRegions =~ /P/i) { print " "; } if ($ShowRegions =~ /P/i) { print " "; } if ($ShowRegions =~ /H/i) { print " "; } if ($ShowRegions =~ /H/i) { print " "; } if ($ShowRegions =~ /B/i) { print " "; } if ($ShowRegions =~ /L/i) { print " "; } print "\n"; my $p_p; my $p_h; if ($TotalPages) { $p_p=int($rest_p/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($rest_h/$TotalHits*1000)/10; } print "$Message[2]/$Message[0]"; if ($ShowRegions =~ /P/i) { print "".($rest_p?Format_Number($rest_p):" ").""; } if ($ShowRegions =~ /P/i) { print "".($rest_p?"$p_p %":' ').""; } if ($ShowRegions =~ /H/i) { print "".($rest_h?Format_Number($rest_h):" ").""; } if ($ShowRegions =~ /H/i) { print "".($rest_h?"$p_h %":' ').""; } if ($ShowRegions =~ /B/i) { print "".Format_Bytes($rest_k).""; } if ($ShowRegions =~ /L/i) { print " "; } print "\n"; } &tab_end(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByAddr_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByAddr is called to translate an ip into a country code in lower case. #----------------------------------------------------------------------------- # Rem: Not used sub GetCountryCodeByAddr_geoip_region_maxmind { my $param="$_[0]"; # <----- if (!$LoadedOverride){&LoadOverrideFile_geoip_region_maxmind();} my $res=$TmpDomainLookup{$param}||''; if (! $res) { my ($res1,$res2,$countryregion)=(); ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; $res=lc($res1) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByAddr for $param: Already resolved to [$res]",5); } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByName_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByName is called to translate a host name into a country code in lower case. #----------------------------------------------------------------------------- # Rem: Not used sub GetCountryCodeByName_geoip_region_maxmind { my $param="$_[0]"; # <----- if (!$LoadedOverride){&LoadOverrideFile_geoip_region_maxmind();} my $res=$TmpDomainLookup{$param}||''; if (! $res) { my ($res1,$res2,$countryregion)=(); ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; $res=lc($res1) || 'unknown'; $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: [$res]",5); } } elsif ($Debug) { debug(" Plugin $PluginName: GetCountryCodeByName for $param: Already resolved to [$res]",5); } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_region_maxmind { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } print ""; print "GeoIP
Region
"; print ""; } elsif ($param) { # try loading our override file if we haven't yet if (!$LoadedOverride){&LoadOverrideFile_geoip_region_maxmind();} my $ip=0; my $key; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $ip=4; $key=$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $ip=6; $key=$param; } print ""; if ($key && $ip==4) { my ($res1,$res2,$countryregion)=(); my @res = TmpLookup_geoip_region_maxmind($param); if (@res){ $res1 = $res[0]; $res2 = $res[1]; }else{ ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetRegionByIp for $param: [${res1}_${res2}]",5); } if (! $PluginsLoaded{'init'}{'geoip'}) { # Show country if ($res1 =~ /\w\w/) { print $DomainsHashIDLib{lc($res1)}||uc($res1); } else { print "$Message[0]"; } # Show region if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { print " ("; print $region{lc($res1)}{uc($res2)}; print ")"; } } else { # Show region if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { print $region{lc($res1)}{uc($res2)}; } else { print "$Message[0]"; } } } if ($key && $ip==6) { print "$Message[0]"; } if (! $key) { my ($res1,$res2,$countryregion)=(); my @res = TmpLookup_geoip_region_maxmind($param); if (@res){ $res1 = $res[0]; $res2 = $res[1]; }else{ ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetRegionByName for $param: [${res1}_${res2}]",5); } if (! $PluginsLoaded{'init'}{'geoip'}) { # Show country if ($res1 =~ /\w\w/) { print $DomainsHashIDLib{lc($res1)}||uc($res1); } else { print "$Message[0]"; } # Show region if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { print " ("; print $region{lc($res1)}{uc($res2)}; print ")"; } } else { # Show region if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { print $region{lc($res1)}{uc($res2)}; } else { print "$Message[0]"; } } } print ""; } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionInitHashArray_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionInitHashArray_geoip_region_maxmind { # my $param="$_[0]"; # <----- if ($Debug) { debug(" Plugin $PluginName: Init_HashArray"); } %_region_p = %_region_h = %_region_k = %_region_l =(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessHostname_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessIp_geoip_region_maxmind { my $param="$_[0]"; # Param must be an IP # <----- my ($res1,$res2,$countryregion)=(); my @res = TmpLookup_geoip_region_maxmind($param); if (@res){ $res1 = $res[0]; $res2 = $res[1]; }else{ ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetRegionByIp for $param: [${res1}_${res2}]",5); } if ($res2 =~ /\w\w/) { $countryregion=lc("${res1}_${res2}"); } else { $countryregion='unknown'; } # if ($PageBool) { $_region_p{$countryregion}++; } $_region_h{$countryregion}++; # if ($timerecord > $_region_l{$countryregion}) { $_region_l{$countryregion}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessHostname_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessHostname_geoip_region_maxmind { my $param="$_[0]"; # Param must be a hostname # <----- my ($res1,$res2,$countryregion)=(); my @res = TmpLookup_geoip_region_maxmind($param); if (@res){ $res1 = $res[0]; $res2 = $res[1]; }else{ ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetRegionByName for $param: [${res1}_${res2}]",5); } if ($res2 =~ /\w\w/) { $countryregion=lc("${res1}_${res2}"); } else { $countryregion='unknown'; } # if ($PageBool) { $_region_p{$countryregion}++; } $_region_h{$countryregion}++; # if ($timerecord > $_region_l{$countryregion}) { $_region_l{$countryregion}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionReadHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionReadHistory_geoip_region_maxmind { my $issectiontoload=shift; my $xmlold=shift; my $xmleb=shift; my $countlines=shift; # <----- if ($Debug) { debug(" Plugin $PluginName: Begin of PLUGIN_$PluginName"); } my @field=(); my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($issectiontoload) { $countloaded++; if ($field[2]) { $_region_h{$field[0]}+=$field[2]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($xmlold?XMLDecodeFromHisto($_):$_)); $countlines++; } until ($field[0] eq "END_PLUGIN_$PluginName" || $field[0] eq "${xmleb}END_PLUGIN_$PluginName" || ! $_); if ($field[0] ne "END_PLUGIN_$PluginName" && $field[0] ne "${xmleb}END_PLUGIN_$PluginName") { error("History file is corrupted (End of section PLUGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" Plugin $PluginName: End of PLUGIN_$PluginName section ($count entries, $countloaded loaded)"); } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionWriteHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionWriteHistory_geoip_region_maxmind { my ($xml,$xmlbb,$xmlbs,$xmlbe,$xmlrb,$xmlrs,$xmlre,$xmleb,$xmlee)=(shift,shift,shift,shift,shift,shift,shift,shift,shift); if ($Debug) { debug(" Plugin $PluginName: SectionWriteHistory_$PluginName start - ".(scalar keys %_region_h)); } # <----- print HISTORYTMP "\n"; if ($xml) { print HISTORYTMP "
$MAXNBOFSECTIONGIR\n"; } print HISTORYTMP "# Plugin key - Pages - Hits - Bandwidth - Last access\n"; #print HISTORYTMP "# The $MaxNbOfExtra[$extranum] first number of hits are first\n"; $ValueInFile{"plugin_$PluginName"}=tell HISTORYTMP; print HISTORYTMP "${xmlbb}BEGIN_PLUGIN_$PluginName${xmlbs}".(scalar keys %_region_h)."${xmlbe}\n"; &BuildKeyList($MAXNBOFSECTIONGIR,1,\%_region_h,\%_region_h); my %keysinkeylist=(); foreach (@keylist) { $keysinkeylist{$_}=1; #my $page=$_region_p{$_}||0; #my $bytes=$_region_k{$_}||0; #my $lastaccess=$_region_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_region_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } foreach (keys %_region_h) { if ($keysinkeylist{$_}) { next; } #my $page=$_region_p{$_}||0; #my $bytes=$_region_k{$_}||0; #my $lastaccess=$_region_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_region_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } print HISTORYTMP "${xmleb}END_PLUGIN_$PluginName${xmlee}\n"; # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadOverrideFile # Attempts to load a comma delimited file that will override the GeoIP database # Useful for Intranet records # CSV format: IP,2-char Country code, region #----------------------------------------------------------------------------- sub LoadOverrideFile_geoip_region_maxmind{ my $filetoload=""; if ($OverrideFile){ if (!open(GEOIPFILE, $OverrideFile)){ debug("Plugin $PluginName: Unable to open override file: $OverrideFile"); $LoadedOverride = 1; return; } }else{ my $conf = (exists(&Get_Config_Name) ? Get_Config_Name() : $SiteConfig); if ($conf && open(GEOIPFILE,"$DirData/$PluginName.$conf.txt")) { $filetoload="$DirData/$PluginName.$conf.txt"; } elsif (open(GEOIPFILE,"$DirData/$PluginName.txt")) { $filetoload="$DirData/$PluginName.txt"; } else { debug("No override file \"$DirData/$PluginName.txt\": $!"); } } if ($filetoload) { # This is the fastest way to load with regexp that I know while (){ chomp $_; s/\r//; my @record = split(",", $_); # replace quotes if they were used in the file foreach (@record){ $_ =~ s/"//g; } # now we need to copy our file values in the order to mimic the lookup values my @res = (); $res[0] = $record[1]; # country code $res[1] = $record[2]; # region code # store in hash $TmpDomainLookup{$record[0]} = [@res]; } close GEOIPFILE; debug(" Plugin $PluginName: Overload file loaded: ".(scalar keys %TmpDomainLookup)." entries found."); } $LoadedOverride = 1; return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: TmpLookup # Searches the temporary hash for the parameter value and returns the corresponding # GEOIP entry #----------------------------------------------------------------------------- sub TmpLookup_geoip_region_maxmind(){ $param = shift; if (!$LoadedOverride){&LoadOverrideFile_geoip_region_maxmind();} #my @val = (); #if ($geoip_region_maxmind && #(($type eq 'geoip' && $geoip_region_maxmind->VERSION >= 1.30) || # $type eq 'geoippureperl' && $geoip_region_maxmind->VERSION >= 1.17)){ # @val = @{$TmpDomainLookup{$geoip_region_maxmind->get_ip_address($param)}}; #} #else {@val = @{$TmpDomainLookup{$param};}} #return @val; if ($TmpDomainLookup{$param}) { return @{$TmpDomainLookup{$param};} } else { return; } } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/geoip_isp_maxmind.pm0000640000175000017500000004654412410217071021444 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GeoIp_Isp_Maxmind AWStats plugin # This plugin allow you to add a city report. # Need the licensed ISP database from Maxmind. #----------------------------------------------------------------------------- # Perl Required Modules: Geo::IP or Geo::IP::PurePerl #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES use vars qw/ $type /; $type='geoip'; if (!eval ('require "Geo/IP.pm";')) { $error1=$@; $type='geoippureperl'; if (!eval ('require "Geo/IP/PurePerl.pm";')) { $error2=$@; $ret=($error1||$error2)?"Error:\n$error1$error2":""; $ret.="Error: Need Perl module Geo::IP or Geo::IP::PurePerl"; return $ret; } } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.2"; my $PluginHooksFunctions="AddHTMLMenuLink AddHTMLGraph ShowInfoHost SectionInitHashArray SectionProcessIp SectionProcessHostname SectionReadHistory SectionWriteHistory"; my $PluginName="geoip_isp_maxmind"; my $LoadedOverride=0; my $OverrideFile=""; my %TmpDomainLookup; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $geoip_isp_maxmind %_isp_p %_isp_h %_isp_k %_isp_l $MAXNBOFSECTIONGIR $MAXLENGTH /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_geoip_isp_maxmind { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); $MAXNBOFSECTIONGIR=10; $MAXLENGTH=20; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin $PluginName: InitParams=$InitParams",1); my ($mode,$tmpdatafile)=split(/\s+/,$InitParams,2); my ($datafile,$override)=split(/\+/,$tmpdatafile,2); if (! $datafile) { $datafile="GeoIPIsp.dat"; } else { $datafile =~ s/%20/ /g; } if ($type eq 'geoippureperl') { # With pureperl with always use GEOIP_STANDARD. # GEOIP_MEMORY_CACHE seems to fail with ActiveState if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } if ($override){ $override =~ s/%20/ /g; $OverrideFile=$override; } %TmpDomainLookup=(); debug(" Plugin $PluginName: GeoIP initialized type=$type mode=$mode",1); if ($type eq 'geoippureperl') { $geoip_isp_maxmind = Geo::IP::PurePerl->open($datafile, $mode); } else { $geoip_isp_maxmind = Geo::IP->open($datafile, $mode); } $LoadedOverride=0; # Fails on some GeoIP version # debug(" Plugin geoip_isp_maxmind: GeoIP initialized database_info=".$geoip_isp_maxmind->database_info()); if ($geoip_isp_maxmind) { debug(" Plugin $PluginName: GeoIP plugin and gi object initialized",1); } else { return "Error: Failed to create gi object for datafile=".$datafile; } # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLMenuLink_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLMenuLink_geoip_isp_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- if ($Debug) { debug(" Plugin $PluginName: AddHTMLMenuLink"); } if ($categ eq 'who') { $menu->{"plugin_$PluginName"}=0.6; # Pos $menulink->{"plugin_$PluginName"}=2; # Type of link $menutext->{"plugin_$PluginName"}="ISP"; # Text } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLGraph_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub AddHTMLGraph_geoip_isp_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- my $ShowISP='H'; $MinHit{'Isp'}=1; my $total_p; my $total_h; my $total_k; my $rest_p; my $rest_h; my $rest_k; if ($Debug) { debug(" Plugin $PluginName: AddHTMLGraph $categ $menu $menulink $menutext"); } my $title='ISP'; &tab_head("$title",19,0,'isp'); print "ISP : ".((scalar keys %_isp_h)-($_isp_h{'unknown'}?1:0)).""; if ($ShowISP =~ /P/i) { print "$Message[56]"; } if ($ShowISP =~ /P/i) { print "$Message[15]"; } if ($ShowISP =~ /H/i) { print "$Message[57]"; } if ($ShowISP =~ /H/i) { print "$Message[15]"; } if ($ShowISP =~ /B/i) { print "$Message[75]"; } if ($ShowISP =~ /L/i) { print "$Message[9]"; } print "\n"; $total_p=$total_h=$total_k=0; my $count=0; &BuildKeyList($MaxRowsInHTMLOutput,$MinHit{'Isp'},\%_isp_h,\%_isp_h); foreach my $key (@keylist) { if ($key eq 'unknown') { next; } my $p_p; my $p_h; if ($TotalPages) { $p_p=int($_isp_p{$key}/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($_isp_h{$key}/$TotalHits*1000)/10; } print ""; my $isp=$key; $isp =~ s/_/ /g; print "".ucfirst($isp).""; if ($ShowISP =~ /P/i) { print "".($_isp_p{$key}?Format_Number($_isp_p{$key}):" ").""; } if ($ShowISP =~ /P/i) { print "".($_isp_p{$key}?"$p_p %":' ').""; } if ($ShowISP =~ /H/i) { print "".($_isp_h{$key}?Format_Number($_isp_h{$key}):" ").""; } if ($ShowISP =~ /H/i) { print "".($_isp_h{$key}?"$p_h %":' ').""; } if ($ShowISP =~ /B/i) { print "".Format_Bytes($_isp_k{$key}).""; } if ($ShowISP =~ /L/i) { print "".($_isp_p{$key}?Format_Date($_isp_l{$key},1):'-').""; } print "\n"; $total_p += $_isp_p{$key}||0; $total_h += $_isp_h{$key}; $total_k += $_isp_k{$key}||0; $count++; } if ($Debug) { debug("Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h",2); } $rest_p=0; $rest_h=$TotalHits-$total_h; $rest_k=0; if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other cities # print ""; # print " "; # if ($ShowISP =~ /P/i) { print " "; } # if ($ShowISP =~ /P/i) { print " "; } # if ($ShowISP =~ /H/i) { print " "; } # if ($ShowISP =~ /H/i) { print " "; } # if ($ShowISP =~ /B/i) { print " "; } # if ($ShowISP =~ /L/i) { print " "; } # print "\n"; my $p_p; my $p_h; if ($TotalPages) { $p_p=int($rest_p/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($rest_h/$TotalHits*1000)/10; } print ""; print "$Message[2]/$Message[0]"; if ($ShowISP =~ /P/i) { print "".($rest_p?Format_Number($rest_p):" ").""; } if ($ShowISP =~ /P/i) { print "".($rest_p?"$p_p %":' ').""; } if ($ShowISP =~ /H/i) { print "".($rest_h?Format_Number($rest_h):" ").""; } if ($ShowISP =~ /H/i) { print "".($rest_h?"$p_h %":' ').""; } if ($ShowISP =~ /B/i) { print "".Format_Bytes($rest_k).""; } if ($ShowISP =~ /L/i) { print " "; } print "\n"; } &tab_end(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_isp_maxmind { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } print ""; print "GeoIP
ISP
"; print ""; } elsif ($param) { my $ip=0; my $key; if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address $ip=4; $key=$param; } elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address $ip=6; $key=$param; } print ""; if ($key && $ip==4) { my $isp = TmpLookup_geoip_isp_maxmind($param); if (!$isp && $type eq 'geoippureperl') { # Function isp_by_addr does not exists in PurePerl but isp_by_name do same $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; } elsif (!$isp) { # Function isp_by_addr does not exits, so we use org_by_addr $isp=$geoip_isp_maxmind->org_by_addr($param) if $geoip_isp_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetIspByIp for $param: [$isp]",5); } if ($isp) { if (length($isp) <= $MAXLENGTH) { print "$isp"; } else { print substr($isp,0,$MAXLENGTH).'...'; } } else { print "$Message[0]"; } } if ($key && $ip==6) { print "$Message[0]"; } if (! $key) { my $isp = TmpLookup_geoip_isp_maxmind($param); if (!$isp && $type eq 'geoippureperl') { $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; } elsif (!$isp) { $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetIspByHostname for $param: [$isp]",5); } if ($isp) { if (length($isp) <= $MAXLENGTH) { print "$isp"; } else { print substr($isp,0,$MAXLENGTH).'...'; } } else { print "$Message[0]"; } } print ""; } else { print " "; } return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionInitHashArray_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionInitHashArray_geoip_isp_maxmind { # my $param="$_[0]"; # <----- if ($Debug) { debug(" Plugin $PluginName: Init_HashArray"); } %_isp_p = %_isp_h = %_isp_k = %_isp_l =(); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessIP_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessIp_geoip_isp_maxmind { my $param="$_[0]"; # Param must be an IP # <----- my $isp = TmpLookup_geoip_isp_maxmind($param); if (!$isp && $type eq 'geoippureperl') { # Function isp_by_addr does not exists in PurePerl but isp_by_name do same $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; } elsif(!$isp) { # Function isp_by_addr does not exits, so we use org_by_addr $isp=$geoip_isp_maxmind->org_by_addr($param) if $geoip_isp_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetIspByIp for $param: [$isp]",5); } if ($isp) { $isp =~ s/\s/_/g; $_isp_h{$isp}++; } else { $_isp_h{'unknown'}++; } # if ($timerecord > $_isp_l{$city}) { $_isp_l{$city}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessHostname_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessHostname_geoip_isp_maxmind { my $param="$_[0]"; # Param must be an IP # <----- my $isp = TmpLookup_geoip_isp_maxmind($param); if (!$isp && $type eq 'geoippureperl') { $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; } elsif(!$isp) { $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; } if ($Debug) { debug(" Plugin $PluginName: GetIspByHostname for $param: [$isp]",5); } if ($isp) { $isp =~ s/\s/_/g; $_isp_h{$isp}++; } else { $_isp_h{'unknown'}++; } # if ($timerecord > $_isp_l{$city}) { $_isp_l{$city}=$timerecord; } # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionReadHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionReadHistory_geoip_isp_maxmind { my $issectiontoload=shift; my $xmlold=shift; my $xmleb=shift; my $countlines=shift; # <----- if ($Debug) { debug(" Plugin $PluginName: Begin of PLUGIN_$PluginName section"); } my @field=(); my $count=0;my $countloaded=0; do { if ($field[0]) { $count++; if ($issectiontoload) { $countloaded++; if ($field[2]) { $_isp_h{$field[0]}+=$field[2]; } } } $_=; chomp $_; s/\r//; @field=split(/\s+/,($xmlold?XMLDecodeFromHisto($_):$_)); $countlines++; } until ($field[0] eq "END_PLUGIN_$PluginName" || $field[0] eq "${xmleb}END_PLUGIN_$PluginName" || ! $_); if ($field[0] ne "END_PLUGIN_$PluginName" && $field[0] ne "${xmleb}END_PLUGIN_$PluginName") { error("History file is corrupted (End of section PLUGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } if ($Debug) { debug(" Plugin $PluginName: End of PLUGIN_$PluginName ($count entries, $countloaded loaded)"); } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionWriteHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionWriteHistory_geoip_isp_maxmind { my ($xml,$xmlbb,$xmlbs,$xmlbe,$xmlrb,$xmlrs,$xmlre,$xmleb,$xmlee)=(shift,shift,shift,shift,shift,shift,shift,shift,shift); if ($Debug) { debug(" Plugin $PluginName: SectionWriteHistory_$PluginName start - ".(scalar keys %_isp_h)); } # <----- print HISTORYTMP "\n"; if ($xml) { print HISTORYTMP "
$MAXNBOFSECTIONGIR\n"; } print HISTORYTMP "# Plugin key - Pages - Hits - Bandwidth - Last access\n"; #print HISTORYTMP "# The $MaxNbOfExtra[$extranum] first number of hits are first\n"; $ValueInFile{"plugin_$PluginName"}=tell HISTORYTMP; print HISTORYTMP "${xmlbb}BEGIN_PLUGIN_$PluginName${xmlbs}".(scalar keys %_isp_h)."${xmlbe}\n"; &BuildKeyList($MAXNBOFSECTIONGIR,1,\%_isp_h,\%_isp_h); my %keysinkeylist=(); foreach (@keylist) { $keysinkeylist{$_}=1; #my $page=$_isp_p{$_}||0; #my $bytes=$_isp_k{$_}||0; #my $lastaccess=$_isp_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_isp_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } foreach (keys %_isp_h) { if ($keysinkeylist{$_}) { next; } #my $page=$_isp_p{$_}||0; #my $bytes=$_isp_k{$_}||0; #my $lastaccess=$_isp_l{$_}||''; print HISTORYTMP "${xmlrb}$_${xmlrs}0${xmlrs}", $_isp_h{$_}, "${xmlrs}0${xmlrs}0${xmlre}\n"; next; } print HISTORYTMP "${xmleb}END_PLUGIN_$PluginName${xmlee}\n"; # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadOverrideFile # Attempts to load a comma delimited file that will override the GeoIP database # Useful for Intranet records # CSV format: IP,"isp" #----------------------------------------------------------------------------- sub LoadOverrideFile_geoip_isp_maxmind{ my $filetoload=""; if ($OverrideFile){ if (!open(GEOIPFILE, $OverrideFile)){ debug("Plugin $PluginName: Unable to open override file: $OverrideFile"); $LoadedOverride = 1; return; } }else{ my $conf = (exists(&Get_Config_Name) ? Get_Config_Name() : $SiteConfig); if ($conf && open(GEOIPFILE,"$DirData/$PluginName.$conf.txt")) { $filetoload="$DirData/$PluginName.$conf.txt"; } elsif (open(GEOIPFILE,"$DirData/$PluginName.txt")) { $filetoload="$DirData/$PluginName.txt"; } else { debug("No override file \"$DirData/$PluginName.txt\": $!"); } } if ($filetoload) { # This is the fastest way to load with regexp that I know while (){ chomp $_; s/\r//; my @record = split(",", $_); # replace quotes if they were used in the file foreach (@record){ $_ =~ s/"//g; } # store in hash $TmpDomainLookup{$record[0]} = $record[1]; } close GEOIPFILE; debug(" Plugin $PluginName: Overload file loaded: ".(scalar keys %TmpDomainLookup)." entries found."); } $LoadedOverride = 1; return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: TmpLookup # Searches the temporary hash for the parameter value and returns the corresponding # GEOIP entry #----------------------------------------------------------------------------- sub TmpLookup_geoip_isp_maxmind(){ $param = shift; if (!$LoadedOverride){&LoadOverrideFile_geoip_isp_maxmind();} #my $val; #if ($geoip_isp_maxmind && #(($type eq 'geoip' && $geoip_isp_maxmind->VERSION >= 1.30) || # $type eq 'geoippureperl' && $geoip_isp_maxmind->VERSION >= 1.17)){ # $val = $TmpDomainLookup{$geoip_isp_maxmind->get_ip_address($param)}; #} #else {$val = $TmpDomainLookup{$param};} #return $val || ''; return $TmpDomainLookup{$param}||''; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/graphapplet.pm0000640000175000017500000001164412410217071020251 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GraphApplet AWStats plugin # Allow AWStats to replace bar graphs with an Applet (awgraphapplet) that draw # 3D graphs instead. #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.0"; my $PluginHooksFunctions="ShowGraph"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $DirClasses /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_graphapplet { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS $DirClasses=$InitParams; # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #------------------------------------------------------- # PLUGIN FUNCTION: ShowGraph_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # Add the code for call to applet awgraphapplet # Parameters: $title $type $showmonthstats \@blocklabel,\@vallabel,\@valcolor,\@valmax,\@valtotal # Input: None # Output: HTML code for awgraphapplet insertion # Return: 0 OK, 1 Error #------------------------------------------------------- sub ShowGraph_graphapplet() { my $title=shift; my $type=shift; my $showmonthstats=shift; my $blocklabel=shift; my $vallabel=shift; my $valcolor=shift; my $valmax=shift; my $valtotal=shift; my $valaverage=shift; my $valdata=shift; my $graphwidth=780; my $graphheight=400; my $blockspacing=5; my $valspacing=1; my $valwidth=5; my $barsize=0; my $blockfontsize=11; if ($type eq 'month') { $graphwidth=540; $graphheight=160; $blockspacing=8; $valspacing=0; $valwidth=6; $barsize=$BarHeight; $blockfontsize=11; } elsif ($type eq 'daysofmonth') { $graphwidth=640; $graphheight=160; $blockspacing=3; $valspacing=0; $valwidth=4; $barsize=$BarHeight; $blockfontsize=9; } elsif ($type eq 'daysofweek') { $graphwidth=300; $graphheight=160; $blockspacing=10; $valspacing=0; $valwidth=6; $barsize=$BarHeight; $blockfontsize=10; } elsif ($type eq 'hours') { $graphwidth=600; $graphheight=160; $blockspacing=4; $valspacing=0; $valwidth=6; $barsize=$BarHeight; $blockfontsize=11; } else { debug("Unknown type parameter in ShowGraph_graphapplet function: $type", 1); return 0; } # print "\n"; print "\n"; print < EOF print "\n"; print "\n"; foreach my $i (1..(scalar @$blocklabel)) { print "\n"; } print "\n"; foreach my $i (1..(scalar @$vallabel)) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print < EOF foreach my $j (1..(scalar @$blocklabel)) { my $b=''; foreach my $i (0..(scalar @$vallabel)-1) { $b.=@$valdata[($j-1)*(scalar @$vallabel)+$i]." "; } $b=~s/\s$//; print "\n"; } print "
\n"; return 0; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/geoipfree.pm0000640000175000017500000000712512410217071017706 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # GeoIpFree AWStats plugin # This plugin allow you to get AWStats country report with countries detected # from a Geographical database (GeoIP internal database) instead of domain # hostname suffix. #----------------------------------------------------------------------------- # Perl Required Modules: Geo::IPfree (version 0.2+) #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES push @INC, "${DIR}/plugins"; if (!eval ('require "Geo/IPfree.pm";')) { return $@?"Error: $@":"Error: Need Perl module Geo::IPfree"; } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.5"; my $PluginHooksFunctions="GetCountryCodeByAddr GetCountryCodeByName"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ %TmpDomainLookup $gi /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_geoipfree { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin geoipfree: InitParams=$InitParams",1); %TmpDomainLookup=(); $gi = Geo::IPfree->new(); # $gi->Faster; # Do not enable Faster as the Memoize module is rarely available # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByName_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByName is called to translate a host name into a country name. #----------------------------------------------------------------------------- sub GetCountryCodeByName_geoipfree { my $param="$_[0]"; # <----- my $res=$TmpDomainLookup{$param}||''; if (! $res) { ($res,undef)=$gi->LookUp($param); if ($res !~ /\w\w/) { $res='ip'; } else { $res=lc($res); } $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin geoipfree: GetCountryCodeByName for $param: $res",5); } } elsif ($Debug) { debug(" Plugin geoipfree: GetCountryCodeByName for $param: Already resolved to $res",5); } # -----> return $res; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetCountryCodeByAddr_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) # GetCountryCodeByAddr is called to translate an ip into a country name. #----------------------------------------------------------------------------- sub GetCountryCodeByAddr_geoipfree { my $param="$_[0]"; # <----- my $res=$TmpDomainLookup{$param}||''; if (! $res) { ($res,undef)=$gi->LookUp($param); if ($res !~ /\w\w/) { $res='ip'; } else { $res=lc($res); } $TmpDomainLookup{$param}=$res; if ($Debug) { debug(" Plugin geoipfree: GetCountryCodeByAddr for $param: $res",5); } } elsif ($Debug) { debug(" Plugin geoipfree: GetCountryCodeByAddr for $param: Already resolved to $res",5); } # -----> return $res; } 1; # Do not remove this line # Internal IP address: # 10.x.x.x # 192.168.x.x awstats-7.4/wwwroot/cgi-bin/plugins/example/0000750000175000017500000000000012410217071017030 5ustar skskawstats-7.4/wwwroot/cgi-bin/plugins/example/example.pm0000640000175000017500000003012112410217071021017 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # Example AWStats plugin # <----- # THIS IS A SAMPLE OF AN EMPTY PLUGIN FILE WITH INSTRUCTIONS TO HELP YOU TO # WRITE YOUR OWN WORKING PLUGIN. REPLACE THIS SENTENCE WITH THE PLUGIN GOAL. # NOTE THAT A PLUGIN FILE example.pm MUST BE IN LOWER CASE. # -----> #----------------------------------------------------------------------------- # Perl Required Modules: Put here list of all required plugins #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES #if (!eval ('require "TheModule.pm";')) { return $@?"Error: $@":"Error: Need Perl module TheModule"; } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. # EACH POSSIBLE FUNCTION AND GOAL ARE DESCRIBED LATER. my $PluginNeedAWStatsVersion="6.7"; my $PluginHooksFunctions="xxx"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $PluginVariable1 /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_example { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" InitParams=$InitParams",1); $PluginVariable1=""; # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } # HERE ARE ALL POSSIBLE HOOK FUNCTIONS. YOU MUST CHANGE THE NAME OF THE # FUNCTION xxx_example INTO xxx_pluginname (pluginname in lower case). # NOTE THAT IN PLUGINS' FUNCTIONS, YOU CAN USE ANY AWSTATS GLOBAL VARIALES. #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLStyles_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML styles at beginning of BODY section. # Parameters: None #----------------------------------------------------------------------------- sub AddHTMLStyles_example { # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLBodyHeader_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code at beginning of BODY section (top of page). # Parameters: None #----------------------------------------------------------------------------- sub AddHTMLBodyHeader_example { # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLBodyFooter_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code at end of BODY section (bottom of page). # Parameters: None #----------------------------------------------------------------------------- sub AddHTMLBodyFooter_example { # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLMenuHeader_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code just before the menu section # Parameters: None #----------------------------------------------------------------------------- sub AddHTMLMenuHeader_example { # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLMenuFooter_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code just after the menu section # Parameters: None #----------------------------------------------------------------------------- sub AddHTMLMenuFooter_example { # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLContentHeader_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to Add HTML code just before the first report # Parameters: None #----------------------------------------------------------------------------- sub AddHTMLContentHeader_example { # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNTION: BuildFullHTMLOutput_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to output an HTML page completely built by plugin instead # of AWStats output #----------------------------------------------------------------------------- sub BuildFullHTMLOutput_example { # <----- print "This is an output for plugin example
\n"; return 1; # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoHost_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_example { my $param="$_[0]"; # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowPagesAddField_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function used to add additionnal columns to the Top Pages-URL report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: URL #----------------------------------------------------------------------------- sub ShowPagesAddField_example { my $param="$_[0]"; # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoURL_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal information for URLs in URLs' report. # This function is called after writing the URL value in the URL cell of the # Top Pages-URL report. # Parameters: URL #----------------------------------------------------------------------------- sub ShowInfoURL_example { my $param="$_[0]"; # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoUser_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to Authenticated users report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell for $param"; # Parameters: User #----------------------------------------------------------------------------- sub ShowInfoUser_example { my $param="$_[0]"; # <----- # PERL CODE HERE # -----> } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionInitHashArray_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionInitHashArray_example { # <----- if ($Debug) { debug(" Plugin example: Init_HashArray"); } %_myarray_p = %_myarray_h = %_myarray_k = %_myarray_l = (); # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessIP_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessIp_example { my $param="$_[0]"; # Param is IP of record # <----- # PERL CODE HERE # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionProcessHostname_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionProcessHostname_example { my $param="$_[0]"; # Param is hostname of record # <----- # PERL CODE HERE # -----> return; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionReadHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionReadHistory_example { my $issectiontoload=shift; my $xmlold=shift; my $xmleb=shift; my $countlines=shift; # <----- # if ($Debug) { debug(" Plugin example: Begin of PLUGIN_example section"); } # my @field=(); # my $count=0;my $countloaded=0; # do { # if ($field[0]) { # $count++; # if ($issectiontoload) { # $countloaded++; # if ($field[1]) { $_myarray_p{$field[0]}+=$field[1]; } # if ($field[2]) { $_myarray_h{$field[0]}+=$field[2]; } # if ($field[3]) { $_myarray_k{$field[0]}+=$field[3]; } # if ($field[4]) { $_myarray_l{$field[0]}+=$field[4]; } # } # } # $_=; # chomp $_; s/\r//; # @field=split(/\s+/,($xmlold?XMLDecodeFromHisto($_):$_)); # $countlines++; # } # until ($field[0] eq 'END_PLUGIN_example' || $field[0] eq "${xmleb}END_PLUGIN_example" || ! $_); # if ($field[0] ne 'END_PLUGIN_example' && $field[0] ne "${xmleb}END_PLUGIN_example") { error("History file is corrupted (End of section PLUGIN not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).","","",1); } # if ($Debug) { debug(" Plugin example: End of PLUGIN_example section ($count entries, $countloaded loaded)"); } # -----> return 0; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SectionWriteHistory_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) #----------------------------------------------------------------------------- sub SectionWriteHistory_example { my ($xml,$xmlbb,$xmlbs,$xmlbe,$xmlrb,$xmlrs,$xmlre,$xmleb,$xmlee)=(shift,shift,shift,shift,shift,shift,shift,shift,shift); if ($Debug) { debug(" Plugin example: SectionWriteHistory_example start - ".(scalar keys %_myarray_h)); } # <----- # print HISTORYTMP "\n"; # if ($xml) { print HISTORYTMP "
$MAXNBOFSECTIONGIR\n"; } # print HISTORYTMP "# Plugin key - Pages - Hits - Bandwidth - Last access\n"; # $ValueInFile{'plugin_example'}=tell HISTORYTMP; # print HISTORYTMP "${xmlbb}BEGIN_PLUGIN_example${xmlbs}".(scalar keys %_myarray_h)."${xmlbe}\n"; # &BuildKeyList($MAXNBOFSECTIONGIR,1,\%_myarray_h,\%_myarray_h); # my %keysinkeylist=(); # foreach (@keylist) { # $keysinkeylist{$_}=1; # my $page=$_myarray_p{$_}||0; # my $bytes=$_myarray_k{$_}||0; # my $lastaccess=$_myarray_l{$_}||''; # print HISTORYTMP "${xmlrb}$_${xmlrs}", $_myarray_p{$_}, "${xmlrs}", $_myarray_h{$_}, "${xmlrs}", $_myarray_k{$_}, "${xmlrs}", $_myarray_l{$_}, "${xmlre}\n"; next; # } # foreach (keys %_myarray_h) { # if ($keysinkeylist{$_}) { next; } # my $page=$_myarray_p{$_}||0; # my $bytes=$_myarray_k{$_}||0; # my $lastaccess=$_myarray_l{$_}||''; # print HISTORYTMP "${xmlrb}$_${xmlrs}", $_myarray_p{$_}, "${xmlrs}", $_myarray_h{$_}, "${xmlrs}", $_myarray_k{$_}, "${xmlrs}", $_myarray_l{$_}, "${xmlre}\n"; next; # } # print HISTORYTMP "${xmleb}END_PLUGIN_example${xmlee}\n"; # -----> return 0; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/clusterinfo.pm0000640000175000017500000000704012410217071020272 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # ClusterInfo AWStats plugin # This plugin allow you to add information on cluster chart from # a text file. Like full cluster hostname. # You must create a file called clusterinfo.configvalue.txt wich contains 2 # columns separated by a tab char, and store it in DirData directory. # First column is cluster number and second column is text you want to add. #----------------------------------------------------------------------------- # Perl Required Modules: None #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES #if (!eval ('require "TheModule.pm";')) { return $@?"Error: $@":"Error: Need Perl module TheModule"; } # -----> #use strict; no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="6.2"; my $PluginHooksFunctions="ShowInfoCluster"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $clusterinfoloaded %ClusterInfo /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_clusterinfo { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin clusterinfo: InitParams=$InitParams",1); $clusterinfoloaded=0; %ClusterInfo=(); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: ShowInfoCluster_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to Cluster report. # This function is called when building rows of the report (One call for each # row). So it allows you to add a column in report, for example with code : # print "This is a new cell"; # Parameters: Cluster number #----------------------------------------------------------------------------- sub ShowInfoCluster_clusterinfo { my $param="$_[0]"; # <----- my $filetoload=''; if ($param && $param ne '__title__' && ! $clusterinfoloaded) { # Load clusterinfo file if ($SiteConfig && open(CLUSTERINFOFILE,"$DirData/clusterinfo.$SiteConfig.txt")) { $filetoload="$DirData/clusterinfo.$SiteConfig.txt"; } elsif (open(CLUSTERINFOFILE,"$DirData/clusterinfo.txt")) { $filetoload="$DirData/clusterinfo.txt"; } else { error("Couldn't open ClusterInfo file \"$DirData/clusterinfo.txt\": $!"); } # This is the fastest way to load with regexp that I know %ClusterInfo = map(/^([^\s]+)\s+(.+)/o,); close CLUSTERINFOFILE; debug(" Plugin clusterinfo: ClusterInfo file loaded: ".(scalar keys %ClusterInfo)." entries found."); $clusterinfoloaded=1; } if ($param eq '__title__') { print "$Message[114]"; } elsif ($param) { print ""; if ($ClusterInfo{$param}) { print "$ClusterInfo{$param}"; } else { print " "; } # Undefined cluster info print ""; } else { print " "; } return 1; # -----> } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/plugins/timehires.pm0000640000175000017500000000343512410217071017732 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # TimeHires AWStats plugin # Change time accuracy in showsteps option from seconds to milliseconds #----------------------------------------------------------------------------- # Perl Required Modules: Time::HiRes #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES if (!eval ('require "Time/HiRes.pm"')) { return $@?"Error: $@":"Error: Need Perl module Time::HiRes"; } # -----> use strict;no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.1"; my $PluginHooksFunctions="GetTime"; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_timehires { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: GetTime_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub GetTime_timehires { my ($sec,$msec)=Time::HiRes::gettimeofday(); $_[0]=$sec; $_[1]=$msec; } 1; # Do not remove this line awstats-7.4/wwwroot/cgi-bin/awdownloadcsv.pl0000750000175000017500000001172412410217071017134 0ustar sksk#!/usr/bin/perl -w #------------------------------------------------------------------------------ # Free addition to AWStats Web Log Analyzer. Used to export the contents of # sections of the Apache server log database to CSV for use in other tools. # Works from command line or as a CGI. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . #------------------------------------------------------------------------------ use CGI qw(:standard); my $ALLOWDOWNLOAD=0; # Disabled by default for security reason if (! $ALLOWDOWNLOAD) { print("Error: You must first edit script to change ALLOWDOWNLOAD to 1 to allow usage of this script.\n"); print("Reason is that enabling this script may be a security hole as it allows someone to download/view details of your awstats data files.\n"); exit; } my $q = new CGI; my $outputFile = ""; # used to write the output to a file my $inputFile = ""; # the fully qualified path to the input log database file my $sectionToReport = ""; # contains the tag to search for in the database file my $startSearchStr = "BEGIN_"; my $endSearchStr = "END_"; my $startPrinting = 0; # flag to indicate that the start tag has been found my $attachFileName = ""; # These parameters are used to build the input file name of the awstats log database my $baseName = ""; my $month = ""; my $year = ""; my $day = ""; my $siteConfig = ""; if ($q->param("outputFile")) { if ($outputFile eq '') { $outputFile = $q->param("outputFile"); } } if ($q->param("inputFile")) { if ($inputFile eq '') { $inputFile = $q->param("inputFile"); } } if ($q->param("section")) { if ($sectionToReport eq '' ) { $sectionToReport = $q->param("section"); } } if ($q->param("baseName")) { if ($baseName eq '' ) { $baseName = $q->param("baseName"); } } if ($q->param("month")) { if ($month eq '' ) { $month = $q->param("month"); } } if ($q->param("year")) { if ($year eq '' ) { $year = $q->param("year"); } } if ($q->param("day")) { $day = $q->param("day"); } if ($q->param("siteConfig")) { if ($siteConfig eq '' ) { $siteConfig = $q->param("siteConfig"); } } # set the attachment file name to the report section if ($sectionToReport ne '' ) { $attachFileName = $sectionToReport . ".csv"; } else { $attachFileName = "exportCSV.csv"; } print $q->header(-type=> "application/force-download", -attachment=>$attachFileName); # Build the start/end search tags $startSearchStr = $startSearchStr . $sectionToReport; $endSearchStr = $endSearchStr . $sectionToReport; if ( !$inputFile ) { $inputFile ="$baseName$month$year$day.$siteConfig.txt" }; open (IN, $inputFile) || die "cannot open $inputFile\n"; # If there's a parameter for the output, open it here if ($outputFile ne '') { open (OUT,">$outputFile") || die "cannot create $outputFile\n"; flock (OUT, 2); } # Loop through the input file searching for the start string. When # found, start displaying the input lines (with spaces changed # to commas) until the end tag is found. # Array to store comments for printing once we hit the desired section my $commentCount = -1; my %commentArray; while () { chomp; if (/^#\s(.*-)\s/){ # search for comment lines s/ - /,/g; # replace dashes with commas s/#//; # get rid of the comment sign $commentArray[++$commentCount] = $_; } # put the test to end printing here to eliminate printing # the line with the END tag if (/^$endSearchStr\b/) { $startPrinting = 0; } if ($startPrinting) { s/ /,/g; print "$_\n"; if ($outputFile ne '') { print OUT "$_\n"; } } # if we find an END tag and we haven't started printing, reset the # comment array to start re-capturing comments for next section if ((/^END_/) && ($startPrinting == 0)) { $commentCount = -1; } # put the start printing test after the first input line # to eliminate printing the line with the BEGIN tag...find it # here, then start printing on the next input line if (/^$startSearchStr\b/) { $startPrinting = 1; # print the comment array - it provides labels for the columns for ($i = 0; $i <= $commentCount; $i++ ) { print "$commentArray[$i]\n"; } } } close(IN); # Close the output file if there was one used if ($outputFile ne '') { close(OUT); } awstats-7.4/wwwroot/cgi-bin/awstats.model.conf0000640000175000017500000017247412521617160017376 0ustar sksk# AWSTATS CONFIGURE FILE 7.3 #----------------------------------------------------------------------------- # Copy this file into awstats.www.mydomain.conf and edit this new config file # to setup AWStats (See documentation in docs/ directory). # The config file must be in /etc/awstats, /usr/local/etc/awstats or /etc (for # Unix/Linux) or same directory than awstats.pl (Windows, Mac, Unix/Linux...) # To include an environment variable in any parameter (AWStats will replace # it with its value when reading it), follow the example: # Parameter="__ENVNAME__" # Note that environment variable AWSTATS_CURRENT_CONFIG is always defined with # the config value in an AWStats running session and can be used like others. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # MAIN SETUP SECTION (Required to make AWStats work) #----------------------------------------------------------------------------- # "LogFile" contains the web, ftp or mail server log file to analyze. # Possible values: A full path, or a relative path from awstats.pl directory. # Example: "/var/log/apache/access.log" # Example: "../logs/mycombinedlog.log" # You can also use tags in this filename if you need a dynamic file name # depending on date or time (Replacement is made by AWStats at the beginning # of its execution). This is available tags : # %YYYY-n is replaced with 4 digits year we were n hours ago # %YY-n is replaced with 2 digits year we were n hours ago # %MM-n is replaced with 2 digits month we were n hours ago # %MO-n is replaced with 3 letters month we were n hours ago # %DD-n is replaced with day we were n hours ago # %HH-n is replaced with hour we were n hours ago # %NS-n is replaced with number of seconds at 00:00 since 1970 # %WM-n is replaced with the week number in month (1-5) # %Wm-n is replaced with the week number in month (0-4) # %WY-n is replaced with the week number in year (01-52) # %Wy-n is replaced with the week number in year (00-51) # %DW-n is replaced with the day number in week (1-7, 1=sunday) # use n=24 if you need (1-7, 1=monday) # %Dw-n is replaced with the day number in week (0-6, 0=sunday) # use n=24 if you need (0-6, 0=monday) # Use 0 for n if you need current year, month, day, hour... # Example: "/var/log/access_log.%YYYY-0%MM-0%DD-0.log" # Example: "C:/WINNT/system32/LogFiles/W3SVC1/ex%YY-24%MM-24%DD-24.log" # You can also use a pipe if log file come from a pipe : # Example: "gzip -cd /var/log/apache/access.log.gz |" # If there are several log files from load balancing servers : # Example: "/pathtotools/logresolvemerge.pl *.log |" # LogFile="/var/log/httpd/mylog.log" # Enter the log file type you want to analyze. # Possible values: # W - For a web log file # S - For a streaming log file # M - For a mail log file # F - For a ftp log file # Example: W # Default: W # LogType=W # Enter here your log format (Must match your web server config. See setup # instructions in documentation to know how to configure your web server to # have the required log format). # Possible values: 1,2,3,4 or "your_own_personalized_log_format" # 1 - Apache or Lotus Notes/Domino native combined log format (NCSA combined/XLF/ELF log format) # 2 - IIS or ISA format (IIS W3C log format). See FAQ-COM115 For ISA. # 3 - Webstar native log format. # 4 - Apache or Squid native common log format (NCSA common/CLF log format) # With LogFormat=4, some features (browsers, os, keywords...) can't work. # "your_own_personalized_log_format" = If your log is ftp, mail or other format, # you must use following keys to define the log format string (See FAQ for # ftp, mail or exotic web log format examples): # %host Client hostname or IP address (or Sender host for mail log) # %host_r Receiver hostname or IP address (for mail log) # %lognamequot Authenticated login/user with format: "john" # %logname Authenticated login/user with format: john # %time1 Date and time with format: [dd/mon/yyyy:hh:mm:ss +0000] or [dd/mon/yyyy:hh:mm:ss] # %time2 Date and time with format: yyyy-mm-dd hh:mm:ss # %time3 Date and time with format: Mon dd hh:mm:ss or Mon dd hh:mm:ss yyyy # %time4 Date and time with unix timestamp format: dddddddddd # %time5 Date and time with format iso: yyyy-mm-ddThh:mm:ss # %methodurl Method and URL with format: "GET /index.html HTTP/x.x" # %methodurlnoprot Method and URL with format: "GET /index.html" # %method Method with format: GET # %url URL only with format: /index.html # %query Query string (used by URLWithQuery option) # %code Return code status (with format for web log: 999) # %bytesd Size of document in bytes # %refererquot Referer page with format: "http://from.com/from.htm" # %referer Referer page with format: http://from.com/from.htm # %uabracket User agent with format: [Mozilla/4.0 (compatible, ...)] # %uaquot User agent with format: "Mozilla/4.0 (compatible, ...)" # %ua User agent with format: Mozilla/4.0_(compatible...) # %gzipin mod_gzip compression input bytes: In:XXX # %gzipout mod_gzip compression output bytes & ratio: Out:YYY:ZZpct. # %gzipratio mod_gzip compression ratio: ZZpct. # %deflateratio mod_deflate compression ratio with format: (ZZ) # %email EMail sender (for mail log) # %email_r EMail receiver (for mail log) # %virtualname Web sever virtual hostname. Use this tag when same log # contains data of several virtual web servers. AWStats # will discard records not in SiteDomain nor HostAliases # %cluster If log file is provided from several computers (merged by # logresolvemerge.pl), use this to define cluster id field. # %extraX Another field that you plan to use for building a # personalized report with ExtraSection feature (See later). # If your log format has some fields not included in this list, use: # %other Means another not used field # %otherquot Means another not used double quoted field # # Examples for Apache combined logs (following two examples are equivalent): # LogFormat = 1 # LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot" # # Example for IIS: # LogFormat = 2 # LogFormat=1 # If your log field's separator is not a space, you can change this parameter. # This parameter is not used if LogFormat is a predefined value (1,2,3,4) # Backslash can be used as escape character. # Example: " " # Example: "\t" # Example: "\|" # Example: "," # Default: " " # LogSeparator=" " # "SiteDomain" must contain the main domain name, or the main intranet web # server name, used to reach the web site. # If you share the same log file for several virtual web servers, this # parameter is used to tell AWStats to filter record that contains records for # this virtual host name only (So check that this virtual hostname can be # found in your log file and use a personalized log format that include the # %virtualname tag). # But for multi hosting a better solution is to have one log file for each # virtual web server. In this case, this parameter is only used to generate # full URL's links when ShowLinksOnUrl option is set to 1. # If analyzing mail log, enter here the domain name of mail server. # Example: "myintranetserver" # Example: "www.domain.com" # Example: "ftp.domain.com" # Example: "domain.com" # SiteDomain="" # Enter here all other possible domain names, addresses or virtual host # aliases someone can use to access your site. Try to keep only the minimum # number of possible names/addresses to have the best performances. # You can repeat the "SiteDomain" value in this list. # This parameter is used to analyze referer field in log file and to help # AWStats to know if a referer URL is a local URL of same site or an URL of # another site. # Note: Use space between each value. # Note: You can use regular expression values writing value with REGEX[value]. # Note: You can also use @/mypath/myfile if list of aliases are in a file. # Example: "www.myserver.com localhost 127.0.0.1 REGEX[mydomain\.(net|org)$]" # HostAliases="localhost 127.0.0.1 REGEX[myserver\.com$]" # If you want to have hosts reported by name instead of ip address, AWStats # need to make reverse DNS lookups (if not already done in your log file). # With DNSLookup to 0, all hosts will be reported by their IP addresses and # not by the full hostname of visitors (except if names are already available # in log file). # If you want/need to set DNSLookup to 1, don't forget that this will reduce # dramatically AWStats update process speed. Do not use on large web sites. # Note: Reverse DNS lookup is done on IPv4 only (Enable ipv6 plugin for IPv6). # Note: Result of DNS Lookup can be used to build the Country report. However # it is highly recommanded to enable the plugin 'geoip' or 'geoipfree' to # have an accurate Country report with no need of DNS Lookup. # Possible values: # 0 - No DNS Lookup # 1 - DNS Lookup is fully enabled # 2 - DNS Lookup is made only from static DNS cache file (if it exists) # Default: 2 # DNSLookup=2 # When AWStats updates its statistics, it stores results of its analysis in # files (AWStats database). All those files are written in the directory # defined by the "DirData" parameter. Set this value to the directory where # you want AWStats to save its database and working files into. # Warning: If you want to be able to use the "AllowToUpdateStatsFromBrowser" # feature (see later), you need "Write" permissions by web server user on this # directory (and "Modify" for Windows NTFS file systems). # Example: "/var/lib/awstats" # Example: "../data" # Example: "C:/awstats_data_dir" # Default: "." (means same directory as awstats.pl) # DirData="." # Relative or absolute web URL of your awstats cgi-bin directory. # This parameter is used only when AWStats is run from command line # with -output option (to generate links in HTML reported page). # Example: "/awstats" # Default: "/cgi-bin" (means awstats.pl is in "/yourwwwroot/cgi-bin") # DirCgi="/cgi-bin" # Relative or absolute web URL of your awstats icon directory. # If you build static reports ("... -output > outputpath/output.html"), enter # path of icon directory relative to the output directory 'outputpath'. # Example: "/awstatsicons" # Example: "../icon" # Default: "/icon" (means you must copy icon directories in "/mywwwroot/icon") # DirIcons="/icon" # When this parameter is set to 1, AWStats adds a button on report page to # allow to "update" statistics from a web browser. Warning, when "update" is # made from a browser, AWStats is run as a CGI by the web server user defined # in your web server (user "nobody" by default with Apache, "IUSR_XXX" with # IIS), so the "DirData" directory and all already existing history files # awstatsMMYYYY[.xxx].txt must be writable by this user. Change permissions if # necessary to "Read/Write" (and "Modify" for Windows NTFS file systems). # Warning: Update process can be long so you might experience "time out" # browser errors if you don't launch AWStats frequently enough. # When set to 0, update is only made when AWStats is run from the command # line interface (or a task scheduler). # Possible values: 0 or 1 # Default: 0 # AllowToUpdateStatsFromBrowser=0 # AWStats saves and sorts its database on a month basis (except if using # databasebreak option from command line). # However, if you choose the -month=all from command line or # value '-Year-' from CGI combo form to have a report for all year, AWStats # needs to reload all data for full year (each month), and sort them, # requiring a large amount of time, memory and CPU. This might be a problem # for web hosting providers that offer AWStats for large sites, on shared # servers, to non CPU cautious customers. # For this reason, the 'full year' is only enabled on Command Line by default. # You can change this by setting this parameter to 0, 1, 2 or 3. # Possible values: # 0 - Never allowed # 1 - Allowed on CLI only, -Year- value in combo is not visible # 2 - Allowed on CLI only, -Year- value in combo is visible but not allowed # 3 - Possible on CLI and CGI # Default: 2 # AllowFullYearView=2 #----------------------------------------------------------------------------- # OPTIONAL SETUP SECTION (Not required but increase AWStats features) #----------------------------------------------------------------------------- # When the update process runs, AWStats can set a lock file in TEMP or TMP # directory. This lock is to avoid to have 2 update processes running at the # same time to prevent unknown conflicts problems and avoid DoS attacks when # AllowToUpdateStatsFromBrowser is set to 1. # Because, when you use lock file, you can experience sometimes problems in # lock file not correctly removed (killed process for example requires that # you remove the file manualy), this option is not enabled by default (Do # not enable this option with no console server access). # Change : Effective immediatly # Possible values: 0 or 1 # Default: 0 # EnableLockForUpdate=0 # AWStats can do reverse DNS lookups through a static DNS cache file that was # previously created manually. If no path is given in static DNS cache file # name, AWStats will search DirData directory. This file is never changed. # This option is not used if DNSLookup=0. # Note: DNS cache file format is 'minsince1970 ipaddress resolved_hostname' # or just 'ipaddress resolved_hostname' # Change : Effective for new updates only # Example: "/mydnscachedir/dnscache" # Default: "dnscache.txt" # DNSStaticCacheFile="dnscache.txt" # AWStats can do reverse DNS lookups through a DNS cache file that was created # by a previous run of AWStats. This file is erased and recreated after each # statistics update process. You don't need to create and/or edit it. # AWStats will read and save this file in DirData directory. # This option is used only if DNSLookup=1. # Note: If a DNSStaticCacheFile is available, AWStats will check for DNS # lookup in DNSLastUpdateCacheFile after checking into DNSStaticCacheFile. # Change : Effective for new updates only # Example: "/mydnscachedir/dnscachelastupdate" # Default: "dnscachelastupdate.txt" # DNSLastUpdateCacheFile="dnscachelastupdate.txt" # You can specify specific IP addresses that should NOT be looked up in DNS. # This option is used only if DNSLookup=1. # Note: Use space between each value. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "123.123.123.123 REGEX[^192\.168\.]" # Default: "" # SkipDNSLookupFor="" # The following two parameters allow you to protect a config file from being # read by AWStats when called from a browser if web user has not been # authenticated. Your AWStats program must be in a web protected "realm" (With # Apache, you can use .htaccess files to do so. With other web servers, see # your server setup manual). # Change : Effective immediatly # Possible values: 0 or 1 # Default: 0 # AllowAccessFromWebToAuthenticatedUsersOnly=0 # This parameter gives the list of all authorized authenticated users to view # statistics for this domain/config file. This parameter is used only if # AllowAccessFromWebToAuthenticatedUsersOnly is set to 1. # Change : Effective immediatly # Example: "user1 user2" # Example: "__REMOTE_USER__" # Default: "" # AllowAccessFromWebToFollowingAuthenticatedUsers="" # When this parameter is defined to something, the IP address of the user that # reads its statistics from a browser (when AWStats is used as a CGI) is # checked and must match one of the IP address values or ranges. # Change : Effective immediatly # Example: "127.0.0.1 123.123.123.1-123.123.123.255" # Default: "" # AllowAccessFromWebToFollowingIPAddresses="" # If the "DirData" directory (see above) does not exist, AWStats return an # error. However, you can ask AWStats to create it. # This option can be used by some Web Hosting Providers that has defined a # dynamic value for DirData (for example DirData="/home/__REMOTE_USER__") and # don't want to have to create a new directory each time they add a new user. # Change : Effective immediatly # Possible values: 0 or 1 # Default: 0 # CreateDirDataIfNotExists=0 # You can choose in which format the Awstats history database is saved. # Note: Using "xml" format make AWStats building database files three times # larger than using "text" format. # Change : Database format is switched after next update # Possible values: text or xml # Default: text # BuildHistoryFormat=text # If you prefer having the report output pages be built as XML compliant pages # instead of simple HTML pages, you can set this to 'xhtml' (May not work # properly with old browsers). # Change : Effective immediatly # Possible values: html or xhtml # Default: html # BuildReportFormat=html # AWStats databases can be updated from command line of from a browser (when # used as a cgi program). So AWStats database files need write permission # for both command line user and default web server user (nobody for Unix, # IUSR_xxx for IIS/Windows,...). # To avoid permission problems between update process (run by an admin user) # and CGI process (ran by a low level user), AWStats can save its database # files with read and write permissions for everyone. # By default, AWStats keeps default user permissions on updated files. If you # set AllowToUpdateStatsFromBrowser to 1, you can change this parameter to 1. # Change : Effective for new updates only # Possible values: 0 or 1 # Default: 0 # SaveDatabaseFilesWithPermissionsForEveryone=0 # AWStats can purge log file, after analyzing it. Note that AWStats is able # to detect new lines in a log file, to process only them, so you can launch # AWStats as often as you want, even with this parameter to 0. # With 0, no purge is made, so you must use a scheduled task or a web server # that make this purge frequently. # With 1, the purge of the log file is made each time AWStats update is run. # This parameter doesn't work with IIS (This web server doesn't let its log # file to be purged). # Change : Effective for new updates only # Possible values: 0 or 1 # Default: 0 # PurgeLogFile=0 # When PurgeLogFile is setup to 1, AWStats will clean your log file after # processing it. You can however keep an archive file of all processed log # records by setting this parameter (For example if you want to use another # log analyzer). The archived log file is saved in "DirData" with name # awstats_archive.configname[.suffix].log # This parameter is not used if PurgeLogFile=0 # Change : Effective for new updates only # Possible values: 0, 1, or tags (See LogFile parameter) for suffix # Example: 1 # Example: %YYYY%MM%DD # Default: 0 # ArchiveLogRecords=0 # Each time you run the update process, AWStats overwrites the 'historic file' # for the month (awstatsMMYYYY[.*].txt) with the updated one. # When write errors occurs (IO, disk full,...), this historic file can be # corrupted and must be deleted. Because this file contains information of all # past processed log files, you will loose old stats if removed. So you can # ask AWStats to save last non corrupted file in a .bak file. This file is # stored in "DirData" directory with other 'historic files'. # Change : Effective for new updates only # Possible values: 0 or 1 # Default: 0 # KeepBackupOfHistoricFiles=0 # Default index page name for your web server. # Change : Effective for new updates only # Example: "index.php index.html default.html" # Default: "index.php index.html" # DefaultFile="index.php index.html" # Do not include access from clients that match following criteria. # If your log file contains IP addresses in host field, you must enter here # matching IP addresses criteria. # If DNS lookup is already done in your log file, you must enter here hostname # criteria, else enter ip address criteria. # The opposite parameter of "SkipHosts" is "OnlyHosts". # Note: Use space between each value. This parameter is not case sensitive. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.]" # Example: "localhost REGEX[^.*\.localdomain$]" # Default: "" # SkipHosts="" # Do not include access from clients with a user agent that match following # criteria. If you want to exclude a robot, you should update the robots.pm # file instead of this parameter. # The opposite parameter of "SkipUserAgents" is "OnlyUserAgents". # Note: Use space between each value. This parameter is not case sensitive. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "konqueror REGEX[ua_test_v\d\.\d]" # Default: "" # SkipUserAgents="" # Use SkipFiles to ignore access to URLs that match one of following entries. # You can enter a list of not important URLs (like framed menus, hidden pages, # etc...) to exclude them from statistics. You must enter here exact relative # URL as found in log file, or a matching REGEX value. Check apply on URL with # all its query paramaters. # For example, to ignore /badpage.php, just add "/badpage.php". To ignore all # pages in a particular directory, add "REGEX[^\/directorytoexclude]". # The opposite parameter of "SkipFiles" is "OnlyFiles". # Note: Use space between each value. This parameter is or not case sensitive # depending on URLNotCaseSensitive parameter. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "/badpage.php /page.php?param=x REGEX[^\/excludedirectory]" # Default: "" # SkipFiles="" # Use SkipReferrersBlackList if you want to exclude records coming from a SPAM # referrer. Parameter must receive a local file name containing rules applied # on referrer field. If parameter is empty, no filter is applied. # An example of such a file is available in lib/blacklist.txt # Change : Effective for new updates only # Example: "/mylibpath/blacklist.txt" # Default: "" # # WARNING!! Using this feature make AWStats running very slower (5 times slower # with black list file provided with AWStats ! # SkipReferrersBlackList="" # Include in stats, only accesses from hosts that match one of following # entries. For example, if you want AWStats to filter access to keep only # stats for visits from particular hosts, you can add those host names in # this parameter. # If DNS lookup is already done in your log file, you must enter here hostname # criteria, else enter ip address criteria. # The opposite parameter of "OnlyHosts" is "SkipHosts". # Note: Use space between each value. This parameter is not case sensitive. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.]" # Default: "" # OnlyHosts="" # Include in stats, only accesses from user agent that match one of following # entries. For example, if you want AWStats to filter access to keep only # stats for visits from particular browsers, you can add their user agents # string in this parameter. # The opposite parameter of "OnlyUserAgents" is "SkipUserAgents". # Note: Use space between each value. This parameter is not case sensitive. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "msie" # Default: "" # OnlyUserAgents="" # Include in stats, only accesses from authenticated users that match one of # following entries. For example, if you want AWStats to filter access to keep # only stats for authenticated users, you can add those users names in # this parameter. Useful for statistics for per user ftp logs. # Note: Use space between each value. This parameter is not case sensitive. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "john bob REGEX[^testusers]" # Default: "" # OnlyUsers="" # Include in stats, only accesses to URLs that match one of following entries. # For example, if you want AWStats to filter access to keep only stats that # match a particular string, like a particular directory, you can add this # directory name in this parameter. # The opposite parameter of "OnlyFiles" is "SkipFiles". # Note: Use space between each value. This parameter is or not case sensitive # depending on URLNotCaseSensitive parameter. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "REGEX[marketing_directory] REGEX[office\/.*\.(csv|sxw)$]" # Default: "" # OnlyFiles="" # Add here a list of kind of url (file extension) that must be counted as # "Hit only" and not as a "Hit" and "Page/Download". You can set here all # image extensions as they are hit downloaded that must be counted but they # are not viewed pages. URLs with such extensions are not included in the TOP # Pages/URL report. # Note: If you want to exclude particular URLs from stats (No Pages and no # Hits reported), you must use SkipFiles parameter. # Change : Effective for new updates only # Example: "css js class gif jpg jpeg png bmp ico rss xml swf zip arj rar gz z bz2 wav mp3 wma mpg avi" # Example: "" # Default: "css js class gif jpg jpeg png bmp ico rss xml swf" # NotPageList="css js class gif jpg jpeg png bmp ico rss xml swf" # By default, AWStats considers that records found in web log file are # successful hits if HTTP code returned by server is a valid HTTP code (200 # and 304). Any other code are reported in HTTP status chart. # Note that HTTP 'control codes', like redirection (302, 305) are not added by # default in this list as they are not pages seen by a visitor but are # protocol exchange codes to tell the browser to ask another page. Because # this other page will be counted and seen with a 200 or 304 code, if you # add such codes, you will have 2 pages viewed reported for only one in facts. # Change : Effective for new updates only # Example: "200 304 302 305" # Default: "200 304" # ValidHTTPCodes="200 304" # By default, AWStats considers that records found in mail log file are # successful mail transfers if field that represent return code in analyzed # log file match values defined by this parameter. # Change : Effective for new updates only # Example: "1 250 200" # Default: "1 250" # ValidSMTPCodes="1 250" # By default, AWStats only records info on 404 'Document Not Found' errors. # At the cost of additional processing time, further info pages can be made # available by adding codes below. # Change : Effective for new updates only # Example: "403 404" # Default: "404" # TrapInfosForHTTPErrorCodes = "400 403 404" # Some web servers on some Operating systems (IIS-Windows) consider that a # login with same value but different case are the same login. To tell AWStats # to also consider them as one, set this parameter to 1. # Change : Effective for new updates only # Possible values: 0 or 1 # Default: 0 # AuthenticatedUsersNotCaseSensitive=0 # Some web servers on some Operating systems (IIS-Windows) considers that two # URLs with same value but different case are the same URL. To tell AWStats to # also considers them as one, set this parameter to 1. # Change : Effective for new updates only # Possible values: 0 or 1 # Default: 0 # URLNotCaseSensitive=0 # Keep or remove the anchor string you can find in some URLs. # Change : Effective for new updates only # Possible values: 0 or 1 # Default: 0 # URLWithAnchor=0 # In URL links, "?" char is used to add parameter's list in URLs. Syntax is: # /mypage.html?param1=value1¶m2=value2 # However, some servers/sites use also other chars to isolate dynamic part of # their URLs. You can complete this list with all such characters. # Change : Effective for new updates only # Example: "?;," # Default: "?;" # URLQuerySeparators="?;" # Keep or remove the query string to the URL in the statistics for individual # pages. This is primarily used to differentiate between the URLs of dynamic # pages. If set to 1, mypage.html?id=x and mypage.html?id=y are counted as two # different pages. # Warning, when set to 1, memory required to run AWStats is dramatically # increased if you have a lot of changing URLs (for example URLs with a random # id inside). Such web sites should not set this option to 1 or use seriously # the next parameter URLWithQueryWithOnlyFollowingParameters (or eventually # URLWithQueryWithoutFollowingParameters). # Change : Effective for new updates only # Possible values: # 0 - URLs are cleaned from the query string (ie: "/mypage.html") # 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y") # Default: 0 # URLWithQuery=0 # When URLWithQuery is on, you will get the full URL with all parameters in # URL reports. But among thoose parameters, sometimes you don't need a # particular parameter because it does not identify the page or because it's # a random ID changing for each access even if URL points to same page. In # such cases, it is higly recommanded to ask AWStats to keep only parameters # you need (if you know them) before counting, manipulating and storing URL. # Enter here list of wanted parameters. For example, with "param", one hit on # /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r # will be reported as 2 hits on /mypage.cgi?param=abc # This parameter is not used when URLWithQuery is 0 and can't be used with # URLWithQueryWithoutFollowingParameters. # Change : Effective for new updates only # Example: "param" # Default: "" # URLWithQueryWithOnlyFollowingParameters="" # When URLWithQuery is on, you will get the full URL with all parameters in # URL reports. But among thoose parameters, sometimes you don't need a # particular parameter because it does not identify the page or because it's # a random ID changing for each access even if URL points to same page. In # such cases, it is higly recommanded to ask AWStats to remove such parameters # from the URL before counting, manipulating and storing URL. Enter here list # of all non wanted parameters. For example if you enter "id", one hit on # /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r # will be reported as 2 hits on /mypage.cgi?param=abc # This parameter is not used when URLWithQuery is 0 and can't be used with # URLWithQueryWithOnlyFollowingParameters. # Change : Effective for new updates only # Example: "PHPSESSID jsessionid" # Default: "" # URLWithQueryWithoutFollowingParameters="" # Keep or remove the query string to the referrer URL in the statistics for # external referrer pages. This is used to differentiate between the URLs of # dynamic referrer pages. If set to 1, mypage.html?id=x and mypage.html?id=y # are counted as two different referrer pages. # Change : Effective for new updates only # Possible values: # 0 - Referrer URLs are cleaned from the query string (ie: "/mypage.html") # 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y") # Default: 0 # URLReferrerWithQuery=0 # AWStats can detect setup problems or show you important informations to have # a better use. Keep this to 1, except if AWStats says you can change it. # Change : Effective immediatly # Possible values: 0 or 1 # Default: 1 # WarningMessages=1 # When an error occurs, AWStats outputs a message related to errors. If you # want (in most cases for security reasons) to have no error messages, you # can set this parameter to your personalized generic message. # Change : Effective immediatly # Example: "An error occurred. Contact your Administrator" # Default: "" # ErrorMessages="" # AWStat can be run with debug=x parameter to output various informations # to help in debugging or solving troubles. If you want to allow this (not # enabled by default for security reasons), set this parameter to 0. # Change : Effective immediatly # Possible values: 0 or 1 # Default: 0 # DebugMessages=0 # To help you to detect if your log format is good, AWStats reports an error # if all the first NbOfLinesForCorruptedLog lines have a format that does not # match the LogFormat parameter. # However, some worm virus attack on your web server can result in a very high # number of corrupted lines in your log. So if you experience awstats stop # because of bad virus records at the beginning of your log file, you can # increase this parameter (very rare). # Change : Effective for new updates only # Default: 50 # NbOfLinesForCorruptedLog=50 # For some particular integration needs, you may want to have CGI links to # point to another script than awstats.pl. # Use the name of this script in WrapperScript parameter. # Change : Effective immediatly # Example: "awstatslauncher.pl" # Example: "awstatswrapper.cgi?key=123" # Default: "" # WrapperScript="" # DecodeUA must be set to 1 if you use Roxen web server. This server converts # all spaces in user agent field into %20. This make the AWStats robots, OS # and browsers detection fail in some cases. Just change it to 1 if and only # if your web server is Roxen. # Change : Effective for new updates only # Possible values: 0 or 1 # Default: 0 # DecodeUA=0 # MiscTrackerUrl can be used to make AWStats able to detect some miscellaneous # things, that can not be tracked on other way, like: # - Javascript disabled # - Java enabled # - Screen size # - Color depth # - Macromedia Director plugin # - Macromedia Shockwave plugin # - Realplayer G2 plugin # - QuickTime plugin # - Mediaplayer plugin # - Acrobat PDF plugin # To enable all these features, you must copy the awstats_misc_tracker.js file # into a /js/ directory stored in your web document root and add the following # HTML code at the end of your index page (but before ) : # # # # # If code is not added in index page, all those detection capabilities will be # disabled. You must also check that ShowScreenSizeStats and ShowMiscStats # parameters are set to 1 to make results appear in AWStats report page. # If you want to use another directory than /js/, you must also change the # awstatsmisctrackerurl variable into the awstats_misc_tracker.js file. # Change : Effective for new updates only. # Possible value: URL of javascript tracker file added in your HTML code. # Default: "/js/awstats_misc_tracker.js" # MiscTrackerUrl="/js/awstats_misc_tracker.js" # AddLinkToExternalCGIWrapper can be used to add a link to a wrapper script # into each title of Dolibarr reports. This can be used to add a wrapper # to download data into a CSV file for example. # # AddLinkToExternalCGIWrapper="/awstats/awdownloadcsv.pl" #----------------------------------------------------------------------------- # OPTIONAL ACCURACY SETUP SECTION (Not required but increase AWStats features) #----------------------------------------------------------------------------- # The following values allow you to define accuracy of AWStats entities # (robots, browsers, os, referers, file types) detection. # It might be a good idea for large web sites or ISP that provides AWStats to # high number of customers, to set this parameter to 1 (or 0), instead of 2. # Possible values: # 0 = No detection, # 1 = Medium/Standard detection # 2 = Full detection # Change : Effective for new updates only # Note : LevelForBrowsersDetection can also accept value "allphones". This # enable detailed detection of phone/pda browsers. # Default: 2 (0 for LevelForWormsDetection) # LevelForBrowsersDetection=2 # 0 disables Browsers detection. # 2 reduces AWStats speed by 2% # allphones reduces AWStats speed by 5% LevelForOSDetection=2 # 0 disables OS detection. # 2 reduces AWStats speed by 3% LevelForRefererAnalyze=2 # 0 disables Origin detection. # 2 reduces AWStats speed by 14% LevelForRobotsDetection=2 # 0 disables Robots detection. # 2 reduces AWStats speed by 2.5% LevelForSearchEnginesDetection=2 # 0 disables Search engines detection. # 2 reduces AWStats speed by 9% LevelForKeywordsDetection=2 # 0 disables Keyphrases/Keywords detection. # 2 reduces AWStats speed by 1% LevelForFileTypesDetection=2 # 0 disables File types detection. # 2 reduces AWStats speed by 1% LevelForWormsDetection=0 # 0 disables Worms detection. # 2 reduces AWStats speed by 15% #----------------------------------------------------------------------------- # OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features) #----------------------------------------------------------------------------- # When you use AWStats as a CGI, you can have the reports shown in HTML frames. # Frames are only available for report viewed dynamically. When you build # pages from command line, this option is not used and no frames are built. # Possible values: 0 or 1 # Default: 1 # UseFramesWhenCGI=1 # This parameter asks your browser to open detailed reports into a different # window than the main page. # Possible values: # 0 - Open all in same browser window # 1 - Open detailed reports in another window except if using frames # 2 - Open always in a different window even if reports are framed # Default: 1 # DetailedReportsOnNewWindows=1 # You can add, in the HTML report page, a cache lifetime (in seconds) that # will be returned to the browser in HTTP header answer by server. # This parameter is not used when reports are built with -staticlinks option. # Example: 3600 # Default: 0 # Expires=0 # To avoid too large web pages, you can ask AWStats to limit number of rows of # all reported charts to this number when no other limits apply. # Default: 1000 # MaxRowsInHTMLOutput=1000 # Set your primary language (ISO-639-1 language codes). # Possible values: # Albanian=al, Bosnian=ba, Bulgarian=bg, Catalan=ca, # Chinese (Taiwan)=tw, Chinese (Simpliefied)=cn, Croatian=hr, Czech=cz, # Danish=dk, Dutch=nl, English=en, Estonian=et, Euskara=eu, Finnish=fi, # French=fr, Galician=gl, German=de, Greek=gr, Hebrew=he, Hungarian=hu, # Icelandic=is, Indonesian=id, Italian=it, Japanese=jp, Korean=ko, # Latvian=lv, Norwegian (Nynorsk)=nn, Norwegian (Bokmal)=nb, Polish=pl, # Portuguese=pt, Portuguese (Brazilian)=br, Romanian=ro, Russian=ru, # Serbian=sr, Slovak=sk, Slovenian=si, Spanish=es, Swedish=se, Turkish=tr, # Ukrainian=ua, Welsh=cy. # First available language accepted by browser=auto # Default: "auto" # Lang="auto" # Set the location of language files. # Example: "/usr/share/awstats/lang" # Default: "./lang" (means lang directory is in same location than awstats.pl) # DirLang="./lang" # Show menu header with reports' links # Possible values: 0 or 1 # Default: 1 # ShowMenu=1 # You choose here which reports you want to see in the main page and what you # want to see in those reports. # Possible values: # 0 - Report is not shown at all # 1 - Report is shown in main page with an entry in menu and default columns # XYZ - Report shows column informations defined by code X,Y,Z... # X,Y,Z... are code letters among the following: # U = Unique visitors # V = Visits # P = Number of pages # H = Number of hits (or mails) # B = Bandwith (or total mail size for mail logs) # L = Last access date # E = Entry pages # X = Exit pages # C = Web compression (mod_gzip,mod_deflate) # M = Average mail size (mail logs) # # Show monthly summary # Context: Web, Streaming, Mail, Ftp # Default: UVPHB, Possible column codes: UVPHB ShowSummary=UVPHB # Show monthly chart # Context: Web, Streaming, Mail, Ftp # Default: UVPHB, Possible column codes: UVPHB ShowMonthStats=UVPHB # Show days of month chart # Context: Web, Streaming, Mail, Ftp # Default: VPHB, Possible column codes: VPHB ShowDaysOfMonthStats=VPHB # Show days of week chart # Context: Web, Streaming, Mail, Ftp # Default: PHB, Possible column codes: PHB ShowDaysOfWeekStats=PHB # Show hourly chart # Context: Web, Streaming, Mail, Ftp # Default: PHB, Possible column codes: PHB ShowHoursStats=PHB # Show domains/country chart # Context: Web, Streaming, Mail, Ftp # Default: PHB, Possible column codes: UVPHB ShowDomainsStats=PHB # Show hosts chart # Context: Web, Streaming, Mail, Ftp # Default: PHBL, Possible column codes: PHBL ShowHostsStats=PHBL # Show authenticated users chart # Context: Web, Streaming, Ftp # Default: 0, Possible column codes: PHBL ShowAuthenticatedUsers=0 # Show robots chart # Context: Web, Streaming # Default: HBL, Possible column codes: HBL ShowRobotsStats=HBL # Show worms chart # Context: Web, Streaming # Default: 0 (If set to other than 0, see also LevelForWormsDetection), Possible column codes: HBL ShowWormsStats=0 # Show email senders chart (For use when analyzing mail log files) # Context: Mail # Default: 0, Possible column codes: HBML ShowEMailSenders=0 # Show email receivers chart (For use when analyzing mail log files) # Context: Mail # Default: 0, Possible column codes: HBML ShowEMailReceivers=0 # Show session chart # Context: Web, Streaming, Ftp # Default: 1, Possible column codes: None ShowSessionsStats=1 # Show pages-url chart. # Context: Web, Streaming, Ftp # Default: PBEX, Possible column codes: PBEX ShowPagesStats=PBEX # Show file types chart. # Context: Web, Streaming, Ftp # Default: HB, Possible column codes: HBC ShowFileTypesStats=HB # Show file size chart (Not yet available) # Context: Web, Streaming, Mail, Ftp # Default: 1, Possible column codes: None ShowFileSizesStats=0 # Show downloads chart. # Context: Web, Streaming, Ftp # Default: HB, Possible column codes: HB ShowDownloadsStats=HB # Show operating systems chart # Context: Web, Streaming, Ftp # Default: 1, Possible column codes: None ShowOSStats=1 # Show browsers chart # Context: Web, Streaming # Default: 1, Possible column codes: None ShowBrowsersStats=1 # Show screen size chart # Context: Web, Streaming # Default: 0 (If set to 1, see also MiscTrackerUrl), Possible column codes: None ShowScreenSizeStats=0 # Show origin chart # Context: Web, Streaming # Default: PH, Possible column codes: PH ShowOriginStats=PH # Show keyphrases chart # Context: Web, Streaming # Default: 1, Possible column codes: None ShowKeyphrasesStats=1 # Show keywords chart # Context: Web, Streaming # Default: 1, Possible column codes: None ShowKeywordsStats=1 # Show misc chart # Context: Web, Streaming # Default: a (See also MiscTrackerUrl parameter), Possible column codes: anjdfrqwp ShowMiscStats=a # Show http errors chart # Context: Web, Streaming # Default: 1, Possible column codes: None ShowHTTPErrorsStats=1 # Show http error page details # Context: Web, Streaming # Default: R, Possible column codes: RH ShowHTTPErrorsPageDetail=R # Show smtp errors chart (For use when analyzing mail log files) # Context: Mail # Default: 0, Possible column codes: None ShowSMTPErrorsStats=0 # Show the cluster report (Your LogFormat must contains the %cluster tag) # Context: Web, Streaming, Ftp # Default: 0, Possible column codes: PHB ShowClusterStats=0 # Some graphical reports are followed by the data array of values. # If you don't want this array (to reduce the report size for example), you # can set thoose options to 0. # Possible values: 0 or 1 # Default: 1 # # Data array values for the ShowMonthStats report AddDataArrayMonthStats=1 # Data array values for the ShowDaysOfMonthStats report AddDataArrayShowDaysOfMonthStats=1 # Data array values for the ShowDaysOfWeekStats report AddDataArrayShowDaysOfWeekStats=1 # Data array values for the ShowHoursStats report AddDataArrayShowHoursStats=1 # In the Origin chart, you have stats on where your hits came from. You can # include hits on pages that come from pages of same sites in this chart. # Possible values: 0 or 1 # Default: 0 # IncludeInternalLinksInOriginSection=0 # The following parameters can be used to choose the maximum number of lines # shown for the particular following reports. # # Stats by countries/domains MaxNbOfDomain = 10 MinHitDomain = 1 # Stats by hosts MaxNbOfHostsShown = 10 MinHitHost = 1 # Stats by authenticated users MaxNbOfLoginShown = 10 MinHitLogin = 1 # Stats by robots MaxNbOfRobotShown = 10 MinHitRobot = 1 # Stats for Downloads MaxNbOfDownloadsShown = 10 MinHitDownloads = 1 # Stats by pages MaxNbOfPageShown = 10 MinHitFile = 1 # Stats by OS MaxNbOfOsShown = 10 MinHitOs = 1 # Stats by browsers MaxNbOfBrowsersShown = 10 MinHitBrowser = 1 # Stats by screen size MaxNbOfScreenSizesShown = 5 MinHitScreenSize = 1 # Stats by window size (following 2 parameters are not yet used) MaxNbOfWindowSizesShown = 5 MinHitWindowSize = 1 # Stats by referers MaxNbOfRefererShown = 10 MinHitRefer = 1 # Stats for keyphrases MaxNbOfKeyphrasesShown = 10 MinHitKeyphrase = 1 # Stats for keywords MaxNbOfKeywordsShown = 10 MinHitKeyword = 1 # Stats for sender or receiver emails MaxNbOfEMailsShown = 20 MinHitEMail = 1 # Choose if you want the week report to start on sunday or monday # Possible values: # 0 - Week starts on sunday # 1 - Week starts on monday # Default: 1 # FirstDayOfWeek=1 # List of visible flags that link to other language translations. # See Lang parameter for list of allowed flag/language codes. # If you don't want any flag link, set ShowFlagLinks to "". # This parameter is used only if ShowMenu parameter is set to 1. # Possible values: "" or "language_codes_separated_by_space" # Example: "en es fr nl de" # Default: "" # ShowFlagLinks="" # Each URL, shown in stats report views, are links you can click. # Possible values: 0 or 1 # Default: 1 # ShowLinksOnUrl=1 # When AWStats builds HTML links in its report pages, it starts those links # with "http://". However some links might be HTTPS links, so you can enter # here the root of all your HTTPS links. If all your site is a SSL web site, # just enter "/". # This parameter is not used if ShowLinksOnUrl is 0. # Example: "/shopping" # Example: "/" # Default: "" # UseHTTPSLinkForUrl="" # Maximum length of URL part shown on stats page (number of characters). # This affects only URL visible text, links still work. # Default: 64 # MaxLengthOfShownURL=64 # You can enter HTML code that will be added at the top of AWStats reports. # Default: "" # HTMLHeadSection="" # You can enter HTML code that will be added at the end of AWStats reports. # Great to add advert ban. # Default: "" # HTMLEndSection="" # By default AWStats page contains meta tag robots=noindex,nofollow # If you want to have your statistics to be indexed, set this option to 1. # Default: 0 # MetaRobot=0 # You can set Logo and LogoLink to use your own logo. # Logo must be the name of image file (must be in $DirIcons/other directory). # LogoLink is the expected URL when clicking on Logo. # Default: "awstats_logo6.png" # Logo="awstats_logo6.png" LogoLink="http://www.awstats.org" # Value of maximum bar width/height for horizontal/vertical HTML graphics bars. # Default: 260/90 # BarWidth = 260 BarHeight = 90 # You can ask AWStats to use a particular CSS (Cascading Style Sheet) to # change its look. To create a style sheet, you can use samples provided with # AWStats in wwwroot/css directory. # Example: "/awstatscss/awstats_bw.css" # Example: "/css/awstats_bw.css" # Default: "" # StyleSheet="" # Those color parameters can be used (if StyleSheet parameter is not used) # to change AWStats look. # Example: color_name="RRGGBB" # RRGGBB is Red Green Blue components in Hex # color_Background="FFFFFF" # Background color for main page (Default = "FFFFFF") color_TableBGTitle="CCCCDD" # Background color for table title (Default = "CCCCDD") color_TableTitle="000000" # Table title font color (Default = "000000") color_TableBG="CCCCDD" # Background color for table (Default = "CCCCDD") color_TableRowTitle="FFFFFF" # Table row title font color (Default = "FFFFFF") color_TableBGRowTitle="ECECEC" # Background color for row title (Default = "ECECEC") color_TableBorder="ECECEC" # Table border color (Default = "ECECEC") color_text="000000" # Color of text (Default = "000000") color_textpercent="606060" # Color of text for percent values (Default = "606060") color_titletext="000000" # Color of text title within colored Title Rows (Default = "000000") color_weekend="EAEAEA" # Color for week-end days (Default = "EAEAEA") color_link="0011BB" # Color of HTML links (Default = "0011BB") color_hover="605040" # Color of HTML on-mouseover links (Default = "605040") color_u="FFAA66" # Background color for number of unique visitors (Default = "FFAA66") color_v="F4F090" # Background color for number of visites (Default = "F4F090") color_p="4477DD" # Background color for number of pages (Default = "4477DD") color_h="66DDEE" # Background color for number of hits (Default = "66DDEE") color_k="2EA495" # Background color for number of bytes (Default = "2EA495") color_s="8888DD" # Background color for number of search (Default = "8888DD") color_e="CEC2E8" # Background color for number of entry pages (Default = "CEC2E8") color_x="C1B2E2" # Background color for number of exit pages (Default = "C1B2E2") #----------------------------------------------------------------------------- # PLUGINS #----------------------------------------------------------------------------- # Add here all plugin files you want to load. # Plugin files must be .pm files stored in 'plugins' directory. # Uncomment LoadPlugin lines to enable a plugin after checking that perl # modules required by the plugin are installed. # PLUGIN: Tooltips # REQUIRED MODULES: None # PARAMETERS: None # DESCRIPTION: Add tooltips pop-up help boxes to HTML report pages. # NOTE: This will increased HTML report pages size, thus server load and bandwidth. # #LoadPlugin="tooltips" # PLUGIN: DecodeUTFKeys # REQUIRED MODULES: Encode and URI::Escape # PARAMETERS: None # DESCRIPTION: Allow AWStats to show correctly (in language charset) # keywords/keyphrases strings even if they were UTF8 coded by the # referer search engine. # #LoadPlugin="decodeutfkeys" # PLUGIN: IPv6 # PARAMETERS: None # REQUIRED MODULES: Net::IP and Net::DNS # DESCRIPTION: This plugin gives AWStats capability to make reverse DNS # lookup on IPv6 addresses. # #LoadPlugin="ipv6" # PLUGIN: HashFiles # REQUIRED MODULES: Storable # PARAMETERS: None # DESCRIPTION: AWStats DNS cache files are read/saved as native hash files. # This increases DNS cache files loading speed, above all for very large web sites. # #LoadPlugin="hashfiles" # PLUGIN: UserInfo # REQUIRED MODULES: None # PARAMETERS: None # DESCRIPTION: Add a text (Firtname, Lastname, Office Department, ...) in # authenticated user reports for each login value. # A text file called userinfo.myconfig.txt, with two fields (first is login, # second is text to show, separated by a tab char) must be created in DirData # directory. # #LoadPlugin="userinfo" # PLUGIN: HostInfo # REQUIRED MODULES: Net::XWhois # PARAMETERS: None # DESCRIPTION: Add a column into host chart with a link to open a popup window that shows # info on host (like whois records). # #LoadPlugin="hostinfo" # PLUGIN: ClusterInfo # REQUIRED MODULES: None # PARAMETERS: None # DESCRIPTION: Add a text (for example a full hostname) in cluster reports for each cluster # number. A text file called clusterinfo.myconfig.txt, with two fields (first is # cluster number, second is text to show) separated by a tab char. must be # created into DirData directory. # Note this plugin is useless if ShowClusterStats is set to 0 or if you don't # use a personalized log format that contains %cluster tag. # #LoadPlugin="clusterinfo" # PLUGIN: UrlAliases # REQUIRED MODULES: None # PARAMETERS: None # DESCRIPTION: Add a text (Page title, description...) in URL reports before URL value. # A text file called urlalias.myconfig.txt, with two fields (first is URL, # second is text to show, separated by a tab char) must be created into # DirData directory. # #LoadPlugin="urlalias" # PLUGIN: TimeHiRes # REQUIRED MODULES: Time::HiRes (if Perl < 5.8) # PARAMETERS: None # DESCRIPTION: Time reported by -showsteps option is in millisecond. For debug purpose. # #LoadPlugin="timehires" # PLUGIN: TimeZone # REQUIRED MODULES: Time::Local # PARAMETERS: [timezone offset] # DESCRIPTION: Allow AWStats to adjust time stamps for a different timezone # This plugin reduces AWStats speed of 10% !!!!!!! # LoadPlugin="timezone" # LoadPlugin="timezone +2" # LoadPlugin="timezone CET" # #LoadPlugin="timezone +2" # PLUGIN: Rawlog # REQUIRED MODULES: None # PARAMETERS: None # DESCRIPTION: This plugin adds a form in AWStats main page to allow users to see raw # content of current log files. A filter is also available. # #LoadPlugin="rawlog" # PLUGIN: GraphApplet # REQUIRED MODULES: None # PARAMETERS: [CSS classes to override] # DESCRIPTION: Supported charts are built by a 3D graphic applet. # #LoadPlugin="graphapplet /awstatsclasses" # EXPERIMENTAL FEATURE # PLUGIN: GraphGoogleChartAPI # REQUIRED MODULES: None # PARAMETERS: None # DESCRIPTION: Replaces the standard charts with free Google API generated images # in HTML reports. If country data is available and more than one country has hits, # a map will be generated using Google Visualizations. # Note: The machine where reports are displayed must have Internet access for the # charts to be generated. The only data sent to Google includes the statistic numbers, # legend names and country names. # Warning: This plugin is not compatible with option BuildReportFormat=xhtml. # #LoadPlugin="graphgooglechartapi" # PLUGIN: GeoIPfree # REQUIRED MODULES: Geo::IPfree version 0.2+ (from Graciliano M.P.) # PARAMETERS: None # DESCRIPTION: Country chart is built from an Internet IP-Country database. # This plugin is useless for intranet only log files. # Note: You must choose between using this plugin (need Perl Geo::IPfree # module, database is free but not up to date) or the GeoIP plugin (need # Perl Geo::IP module from Maxmind, database is also free and up to date). # Note: Activestate provide a corrupted version of Geo::IPfree 0.2 Perl # module, so install it from elsewhere (from www.cpan.org for example). # This plugin reduces AWStats speed by up to 10% ! # #LoadPlugin="geoipfree" # MAXMIND GEO IP MODULES: Please see documentation for notes on all Maxmind modules # PLUGIN: GeoIP # REQUIRED MODULES: Geo::IP or Geo::IP::PurePerl (from Maxmind) # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/geoip.dat[+/pathto/override.txt]] # DESCRIPTION: Builds a country chart and adds an entry to the hosts # table with country name # Replace spaces in the path of geoip data file with string "%20". # #LoadPlugin="geoip GEOIP_STANDARD /pathto/GeoIP.dat" # PLUGIN: GeoIP6 # REQUIRED MODULES: Geo::IP or Geo::IP::PurePerl (from Maxmind, version >= 1.40) # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/geoipv6.dat[+/pathto/override.txt]] # DESCRIPTION: Builds a country chart and adds an entry to the hosts # table with country name # works with IPv4 and also IPv6 addresses # Replace spaces in the path of geoip data file with string "%20". # #LoadPlugin="geoip6 GEOIP_STANDARD /pathto/GeoIPv6.dat" # PLUGIN: GeoIP_City_Maxmind # REQUIRED MODULES: Geo::IP or Geo::IP::PurePerl (from Maxmind) # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPCity.dat[+/pathto/override.txt]] # DESCRIPTION: This plugin adds a column under the hosts field and tracks the pageviews # and hits by city including regions. # Replace spaces in the path of geoip data file with string "%20". # #LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /pathto/GeoIPCity.dat" # PLUGIN: GeoIP_ASN_Maxmind # REQUIRED MODULES: Geo::IP or Geo::IP::PurePerl (from Maxmind) # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPASN.dat[+/pathto/override.txt][+http://linktoASlookup]] # DESCRIPTION: This plugin adds a chart of AS numbers where the host IP address is registered. # This plugin can display some ISP information if included in the database. You can also provide # a link that will be used to lookup additional registration data. Put the link at the end of # the parameter string and the report page will include the link with the full AS number at the end. # Replace spaces in the path of geoip data file with string "%20". # #LoadPlugin="geoip_asn_maxmind GEOIP_STANDARD /usr/local/geoip.dat+http://enc.com.au/itools/autnum.php?asn=" # PLUGIN: GeoIP_Region_Maxmind # REQUIRED MODULES: Geo::IP or Geo::IP::PurePerl (from Maxmind) # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPRegion.dat[+/pathto/override.txt]] # DESCRIPTION:This plugin adds a chart of hits by regions. Only regions for US and # Canada can be detected. # Replace spaces in the path of geoip data file with string "%20". # #LoadPlugin="geoip_region_maxmind GEOIP_STANDARD /pathto/GeoIPRegion.dat" # PLUGIN: GeoIP_ISP_Maxmind # REQUIRED MODULES: Geo::IP or Geo::IP::PurePerl (from Maxmind) # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPISP.dat[+/pathto/override.txt]] # DESCRIPTION: This plugin adds a chart of hits by ISP. # Replace spaces in the path of geoip data file with string "%20". # #LoadPlugin="geoip_isp_maxmind GEOIP_STANDARD /pathto/GeoIPISP.dat" # PLUGIN: GeoIP_Org_Maxmind # REQUIRED MODULES: Geo::IP or Geo::IP::PurePerl (from Maxmind) # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPOrg.dat[+/pathto/override.txt]] # DESCRIPTION: This plugin add a chart of hits by Organization name # Replace spaces in the path of geoip data file with string "%20". # #LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /pathto/GeoIPOrg.dat" #----------------------------------------------------------------------------- # EXTRA SECTIONS #----------------------------------------------------------------------------- # You can define your own charts, you choose here what are rows and columns # keys. This feature is particularly useful for marketing purpose, tracking # products orders for example. # For this, edit all parameters of Extra section. Each set of parameter is a # different chart. For several charts, duplicate section changing the number. # Note: Each Extra section reduces AWStats speed by 8%. # # WARNING: A wrong setup of Extra section might result in too large arrays # that will consume all your memory, making AWStats unusable after several # updates, so be sure to setup it correctly. # In most cases, you don't need this feature. # # ExtraSectionNameX is title of your personalized chart. # ExtraSectionCodeFilterX is list of codes the record code field must match. # Put an empty string for no test on code. # ExtraSectionConditionX are conditions you can use to count or not the hit, # Use one of the field condition # (URL,URLWITHQUERY,QUERY_STRING,REFERER,UA,HOSTINLOG,HOST,VHOST,extraX) # and a regex to match, after a coma. Use "||" for "OR". # ExtraSectionFirstColumnTitleX is the first column title of the chart. # ExtraSectionFirstColumnValuesX is a string to tell AWStats which field to # extract value from # (URL,URLWITHQUERY,QUERY_STRING,REFERER,UA,HOSTINLOG,HOST,VHOST,extraX) # and how to extract the value (using regex syntax). Each different value # found will appear in first column of report on a different row. Be sure # that list of different possible values will not grow indefinitely. # ExtraSectionFirstColumnFormatX is the string used to write value. # ExtraSectionStatTypesX are things you want to count. You can use standard # code letters (P for pages,H for hits,B for bandwidth,L for last access). # ExtraSectionAddAverageRowX add a row at bottom of chart with average values. # ExtraSectionAddSumRowX add a row at bottom of chart with sum values. # MaxNbOfExtraX is maximum number of rows shown in chart. # MinHitExtraX is minimum number of hits required to be shown in chart. # # Example to report the 20 products the most ordered by "order.cgi" script #ExtraSectionName1="Product orders" #ExtraSectionCodeFilter1="200 304" #ExtraSectionCondition1="URL,\/cgi\-bin\/order\.cgi||URL,\/cgi\-bin\/order2\.cgi" #ExtraSectionFirstColumnTitle1="Product ID" #ExtraSectionFirstColumnValues1="QUERY_STRING,productid=([^&]+)" #ExtraSectionFirstColumnFormat1="%s" #ExtraSectionStatTypes1=PL #ExtraSectionAddAverageRow1=0 #ExtraSectionAddSumRow1=1 #MaxNbOfExtra1=20 #MinHitExtra1=1 # There is also a global parameter ExtraTrackedRowsLimit that limits the # number of possible rows an ExtraSection can report. This parameter is # here to protect too much memory use when you make a bad setup in your # ExtraSection. It applies to all ExtraSection independently meaning that # none ExtraSection can report more rows than value defined by ExtraTrackedRowsLimit. # If you know an ExtraSection will report more rows than its value, you should # increase this parameter or AWStats will stop with an error. # Example: 2000 # Default: 500 # ExtraTrackedRowsLimit=500 #----------------------------------------------------------------------------- # INCLUDES #----------------------------------------------------------------------------- # You can include other config files using the directive with the name of the # config file. # This is particularly useful for users who have a lot of virtual servers, so # a lot of config files and want to maintain common values in only one file. # Note that when a variable is defined both in a config file and in an # included file, AWStats will use the last value read for parameters that # contains one value and AWStats will concat all values from both files for # parameters that are lists of values. # #Include "" awstats-7.4/wwwroot/cgi-bin/lib/0000750000175000017500000000000012510473401014464 5ustar skskawstats-7.4/wwwroot/cgi-bin/lib/domains.pm0000640000175000017500000001354012410217071016456 0ustar sksk# AWSTATS DOMAINS DATABASE #------------------------------------------------------- # If you want to add a new domain to extend AWStats database detection capabilities, # you must add an entry in DomainsHashIDLib. #------------------------------------------------------- #package AWSDOM; # DomainsHashIDLib # List of domain with their name ('domain id', 'Domain name') # Official list can be found at http://www.iana.org/cctld/cctld-whois.htm # 'Domain id' should be ISO 3166 code + miscelanous domains #------------------------------------------------------- %DomainsHashIDLib = ( 'localhost','localhost', 'i0','Local network host', 'a1','Satellite access host', 'a2','Satellite access host', 'ap','African Regional Property Organization', 'ac','Ascension Island','ad','Andorra','ae','United Arab Emirates', 'aero','Aero/Travel domains','af','Afghanistan', 'ag','Antigua and Barbuda','ai','Anguilla','al','Albania', 'am','Armenia','an','Netherlands Antilles','ao','Angola', 'aq','Antarctica','ar','Argentina','arpa','Old style Arpanet', 'as','American Samoa','at','Austria','au','Australia','aw','Aruba', 'ax','Aland islands', 'az','Azerbaidjan','ba','Bosnia-Herzegovina','bb','Barbados', 'bd','Bangladesh','be','Belgium','bf','Burkina Faso','bg','Bulgaria', 'bh','Bahrain','bi','Burundi','biz','Biz domains','bj','Benin','bm','Bermuda', 'bn','Brunei Darussalam','bo','Bolivia','bq','Bonaire, Sint Eustatius And Saba', 'br','Brazil','bs','Bahamas', 'bt','Bhutan','bv','Bouvet Island','bw','Botswana','by','Belarus', 'bz','Belize','ca','Canada','cc','Cocos (Keeling) Islands', 'cd','Congo, Democratic Republic of the', 'cf','Central African Republic','cg','Congo','ch','Switzerland', 'ci','Ivory Coast (Cote D\'Ivoire)','ck','Cook Islands','cl','Chile','cm','Cameroon', 'cn','China','co','Colombia','com','Commercial','coop','Coop domains','cr','Costa Rica', 'cs','Former Czechoslovakia','cu','Cuba','cv','Cape Verde','cw','Curacao', 'cx','Christmas Island','cy','Cyprus','cz','Czech Republic','de','Germany', 'dj','Djibouti','dk','Denmark','dm','Dominica','do','Dominican Republic', 'dz','Algeria','ec','Ecuador','edu','USA Educational','ee','Estonia', 'eg','Egypt','eh','Western Sahara','er','Eritrea','es','Spain','et','Ethiopia', 'eu','European country', 'fi','Finland','fj','Fiji','fk','Falkland Islands','fm','Micronesia','fo','Faroe Islands', 'fr','France','fx','France (European Territory)','ga','Gabon', 'gb','Great Britain','gd','Grenada','ge','Georgia','gf','French Guyana', 'gg','Guernsey','gh','Ghana','gi','Gibraltar', 'gl','Greenland','gm','Gambia','gn','Guinea','gov','USA Government','gp','Guadeloupe (French)', 'gq','Equatorial Guinea','gr','Greece','gs','S. Georgia & S. Sandwich Isls.', 'gt','Guatemala','gu','Guam (USA)','gw','Guinea Bissau','gy','Guyana', 'hk','Hong Kong','hm','Heard and McDonald Islands','hn','Honduras', 'hr','Croatia','ht','Haiti','hu','Hungary','id','Indonesia','ie','Ireland','il','Israel', 'im','Isle of Man','in','India','info','Info domains','int','International','io','British Indian Ocean Territory', 'iq','Iraq','ir','Iran','is','Iceland','it','Italy', 'je','Jersey','jm','Jamaica','jo','Jordan', 'jobs','Jobs domains', 'jp','Japan','ke','Kenya','kg','Kyrgyzstan', 'kh','Cambodia','ki','Kiribati','km','Comoros','kn','Saint Kitts & Nevis Anguilla', 'kp','North Korea','kr','South Korea','kw','Kuwait', 'ky','Cayman Islands','kz','Kazakhstan','la','Laos','lb','Lebanon','lc','Saint Lucia', 'li','Liechtenstein','lk','Sri Lanka','lr','Liberia','ls','Lesotho','lt','Lithuania', 'lu','Luxembourg','lv','Latvia','ly','Libya','ma','Morocco','mc','Monaco', 'md','Moldova','me','Montenegro','mg','Madagascar','mh','Marshall Islands','mil','USA Military', 'mk','Macedonia','ml','Mali','mm','Myanmar','mn','Mongolia','mo','Macau', 'mobi','Mobi domains', 'mp','Northern Mariana Islands','mq','Martinique (French)','mr','Mauritania', 'ms','Montserrat','mt','Malta','mu','Mauritius','museum','Museum domains','mv','Maldives', 'mw','Malawi','mx','Mexico','my','Malaysia','mz','Mozambique','na','Namibia','name','Name domains','nato','NATO', 'nc','New Caledonia (French)','ne','Niger','net','Network','nf','Norfolk Island', 'ng','Nigeria','ni','Nicaragua','nl','Netherlands','no','Norway', 'np','Nepal','nr','Nauru','nt','Neutral Zone','nu','Niue','nz','New Zealand','om','Oman', 'org','Non-Profit Organizations','pa','Panama','pe','Peru','pf','Polynesia (French)', 'pg','Papua New Guinea','ph','Philippines','pk','Pakistan','pl','Poland', 'pm','Saint Pierre and Miquelon','pn','Pitcairn Island','pr','Puerto Rico','pro','Professional domains', 'ps','Palestinian Territories','pt','Portugal','pw','Palau','py','Paraguay','qa','Qatar', 're','Reunion (French)','ro','Romania', 'rs','Republic of Serbia', 'ru','Russian Federation','rw','Rwanda', 'sa','Saudi Arabia','sb','Solomon Islands','sc','Seychelles', 'sd','Sudan','se','Sweden','sg','Singapore','sh','Saint Helena','si','Slovenia', 'sj','Svalbard and Jan Mayen Islands','sk','Slovak Republic','sl','Sierra Leone', 'sm','San Marino','sn','Senegal','so','Somalia','sr','Suriname', 'st','Sao Tome and Principe','su','Former USSR','sv','El Salvador', 'sx','Sint Maarten', 'sy','Syria','sz','Swaziland', 'tc','Turks and Caicos Islands','td','Chad','tf','French Southern Territories','tg','Togo', 'th','Thailand','tj','Tadjikistan','tk','Tokelau','tm','Turkmenistan','tn','Tunisia', 'to','Tonga','tp','East Timor','tr','Turkey','tt','Trinidad and Tobago','tv','Tuvalu', 'tw','Taiwan','tz','Tanzania','ua','Ukraine','ug','Uganda', 'uk','United Kingdom','um','USA Minor Outlying Islands','us','United States', 'uy','Uruguay','uz','Uzbekistan','va','Vatican City State', 'vc','Saint Vincent & Grenadines','ve','Venezuela','vg','Virgin Islands (British)', 'vi','Virgin Islands (USA)','vn','Vietnam','vu','Vanuatu','wf','Wallis and Futuna Islands', 'ws','Samoa Islands','ye','Yemen','yt','Mayotte','yu','Yugoslavia','za','South Africa', 'zm','Zambia','zr','Zaire','zw','Zimbabwe' ); 1; awstats-7.4/wwwroot/cgi-bin/lib/browsers.pm0000640000175000017500000005277012410217071016702 0ustar sksk# AWSTATS BROWSERS DATABASE #------------------------------------------------------- # If you want to add a Browser to extend AWStats database detection capabilities, # you must add an entry in BrowsersSearchIDOrder and in BrowsersHashIDLib. #------------------------------------------------------- # 2006-05-15 Sean Carlos http://www.antezeta.com/awstats.html # akregator (rss) # AppleSyndication (rss) # BlogBridge http://www.blogbridge.com/ (rss) # BonEcho (Firefox 2.0 alpha) # FeedTools http://sporkmonger.com/projects/feedtools/ (rss) # gnome\-vfs.*neon http://www.webdav.org/neon/ # GreatNews http://www.curiostudio.com/ (rss) # Gregarius devlog.gregarius.net/docs/ua (rss) # hatena rss http://r.hatena.ne.jp/ (rss) # Liferea http://liferea.sourceforge.net/ (rss) # PubSub-RSS-Reader http://www.pubsub.com/ (rss) # 2006-05-20 Sean Carlos http://www.antezeta.com/awstats.html # Potu Rss-Reader http://www.potu.com/ # OSSProxy http://www.marketscore.com/FAQ.Aspx #package AWSUA; # Relocated from main file for easier editing %BrowsersFamily = ( 'msie' => 1, 'firefox' => 2, 'netscape' => 3, 'svn' => 4, 'opera' => 5, 'safari' => 6, 'chrome' => 7, 'konqueror' => 8 ); # BrowsersSearchIDOrder # This list is used to know in which order to search Browsers IDs (Most # frequent one are first in this list to increase detect speed). # It contains all matching criteria to search for in log fields. # Note: Regex IDs are in lower case and ' ' and '+' are changed into '_' #------------------------------------------------------- @BrowsersSearchIDOrder = ( # Most frequent standard web browsers are first in this list except the ones hardcoded in awstats.pl: # firefox, opera, chrome, safari, konqueror, svn, msie, netscape 'elinks', 'firebird', 'go!zilla', 'icab', 'links', 'lynx', 'omniweb', # Other standard web browsers '22acidownload', 'abrowse', 'aol\-iweng', 'amaya', 'amigavoyager', 'arora', 'aweb', 'charon', 'donzilla', 'seamonkey', 'flock', 'minefield', 'bonecho', 'granparadiso', 'songbird', 'strata', 'sylera', 'kazehakase', 'prism', 'icecat', 'iceape', 'iceweasel', 'w3clinemode', 'bpftp', 'camino', 'chimera', 'cyberdog', 'dillo', 'xchaos_arachne', 'doris', 'dreamcast', 'xbox', 'downloadagent', 'ecatch', 'emailsiphon', 'encompass', 'epiphany', 'friendlyspider', 'fresco', 'galeon', 'flashget', 'freshdownload', 'getright', 'leechget', 'netants', 'headdump', 'hotjava', 'ibrowse', 'intergo', 'k\-meleon', 'k\-ninja', 'linemodebrowser', 'lotus\-notes', 'macweb', 'multizilla', 'ncsa_mosaic', 'netcaptor', 'netpositive', 'nutscrape', 'msfrontpageexpress', 'contiki', 'emacs\-w3', 'phoenix', 'shiira', # Must be before safari 'tzgeturl', 'viking', 'webfetcher', 'webexplorer', 'webmirror', 'webvcr', 'qnx\svoyager', # Site grabbers 'cloudflare', 'grabber', 'teleport', 'webcapture', 'webcopier', # Media only browsers 'real', 'winamp', # Works for winampmpeg and winamp3httprdr 'windows\-media\-player', 'audion', 'freeamp', 'itunes', 'jetaudio', 'mint_audio', 'mpg123', 'mplayer', 'nsplayer', 'qts', 'quicktime', 'sonique', 'uplayer', 'xaudio', 'xine', 'xmms', 'gstreamer', # RSS Readers 'abilon', 'aggrevator', 'aiderss', 'akregator', 'applesyndication', 'betanews_reader', 'blogbridge', 'cyndicate', 'feeddemon', 'feedreader', 'feedtools', 'greatnews', 'gregarius', 'hatena_rss', 'jetbrains_omea', 'liferea', 'netnewswire', 'newsfire', 'newsgator', 'newzcrawler', 'plagger', 'pluck', 'potu', 'pubsub\-rss\-reader', 'pulpfiction', 'rssbandit', 'rssreader', 'rssowl', 'rss\sxpress', 'rssxpress', 'sage', 'sharpreader', 'shrook', 'straw', 'syndirella', 'vienna', 'wizz\srss\snews\sreader', # PDA/Phonecell browsers 'alcatel', # Alcatel 'lg\-', # LG 'mot\-', # Motorola 'nokia', # Nokia 'panasonic', # Panasonic 'philips', # Philips 'sagem', # Sagem 'samsung', # Samsung 'sie\-', # SIE 'sec\-', # SonyEricsson 'sonyericsson', # SonyEricsson 'ericsson', # Ericsson (must be after sonyericsson) 'mmef', 'mspie', 'vodafone', 'wapalizer', 'wapsilon', 'wap', # Generic WAP phone (must be after 'wap*') 'webcollage', 'up\.', # Works for UP.Browser and UP.Link # PDA/Phonecell browsers 'android', 'blackberry', 'cnf2', 'docomo', 'ipcheck', 'iphone', 'portalmmm', # Others (TV) 'webtv', 'democracy', # Anonymous Proxy Browsers (can be used as grabbers as well...) 'cjb\.net', 'ossproxy', 'smallproxy', # Other kind of browsers 'adobeair', 'apt', 'analogx_proxy', 'gnome\-vfs', 'neon', 'curl', 'csscheck', 'httrack', 'fdm', 'javaws', 'wget', 'fget', 'chilkat', 'webdownloader\sfor\sx', 'w3m', 'wdg_validator', 'w3c_validator', 'jigsaw', 'webreaper', 'webzip', 'staroffice', 'gnus', 'nikto', 'download\smaster', 'microsoft\-webdav\-miniredir', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\scache\smanager', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sdav', 'POE\-Component\-Client\-HTTP', 'mozilla', # Must be at end because a lot of browsers contains mozilla in string 'libwww', # Must be at end because some browser have both 'browser id' and 'libwww' 'lwp' ); # BrowsersHashIDLib # List of browser's name ('browser id in lower case', 'browser text') #--------------------------------------------------------------- %BrowsersHashIDLib = ( # Common web browsers text, included the ones hard coded in awstats.pl # firefox, opera, chrome, safari, konqueror, svn, msie, netscape 'firefox','Firefox', 'opera','Opera', 'chrome','Google Chrome', 'safari','Safari', 'konqueror','Konqueror', 'svn', 'Subversion client', 'msie','MS Internet Explorer', 'netscape','Netscape', 'elinks','ELinks', 'firebird','Firebird (Old Firefox)', 'go!zilla','Go!Zilla', 'icab','iCab', 'links','Links', 'lynx','Lynx', 'omniweb','OmniWeb', # Other standard web browsers '22acidownload','22AciDownload', 'abrowse','ABrowse', 'amaya','Amaya', 'amigavoyager','AmigaVoyager', 'aol\-iweng','AOL-Iweng', 'arora','Arora', 'aweb','AWeb', 'charon', 'Charon', 'donzilla','Donzilla', 'seamonkey','SeaMonkey', 'flock','Flock', 'minefield','Minefield (Firefox 3.0 development)', 'bonecho','BonEcho (Firefox 2.0 development)', 'granparadiso','GranParadiso (Firefox 3.0 development)', 'songbird','Songbird', 'strata','Strata', 'sylera','Sylera', 'kazehakase','Kazehakase', 'prism','Prism', 'icecat','GNU IceCat', 'iceape','GNU IceApe', 'iceweasel','Iceweasel', 'w3clinemode','W3CLineMode', 'bpftp','BPFTP', 'camino','Camino', 'chimera','Chimera (Old Camino)', 'cyberdog','Cyberdog', 'dillo','Dillo', 'xchaos_arachne','Arachne', 'doris','Doris (for Symbian)', 'dreamcast','Dreamcast', 'xbox', 'XBoX', 'downloadagent','DownloadAgent', 'ecatch', 'eCatch', 'emailsiphon','EmailSiphon', 'encompass','Encompass', 'epiphany','Epiphany', 'friendlyspider','FriendlySpider', 'fresco','ANT Fresco', 'galeon','Galeon', 'flashget','FlashGet', 'freshdownload','FreshDownload', 'getright','GetRight', 'leechget','LeechGet', 'netants','NetAnts', 'headdump','HeadDump', 'hotjava','Sun HotJava', 'ibrowse','iBrowse', 'intergo','InterGO', 'k\-meleon','K-Meleon', 'k\-ninja','K-Ninja', 'linemodebrowser','W3C Line Mode Browser', 'lotus\-notes','Lotus Notes web client', 'macweb','MacWeb', 'multizilla','MultiZilla', 'ncsa_mosaic','NCSA Mosaic', 'netcaptor','NetCaptor', 'netpositive','NetPositive', 'nutscrape', 'Nutscrape', 'msfrontpageexpress','MS FrontPage Express', 'phoenix','Phoenix', 'contiki','Contiki', 'emacs\-w3','Emacs/w3s', 'shiira','Shiira', 'tzgeturl','TzGetURL', 'viking','Viking', 'webfetcher','WebFetcher', 'webexplorer','IBM-WebExplorer', 'webmirror','WebMirror', 'webvcr','WebVCR', 'qnx\svoyager','QNX Voyager', # Site grabbers 'cloudflare','CloudFlare', 'grabber','Grabber', 'teleport','TelePort Pro', 'webcapture','Acrobat Webcapture', 'webcopier', 'WebCopier', # Media only browsers 'real','Real player or compatible (media player)', 'winamp','WinAmp (media player)', # Works for winampmpeg and winamp3httprdr 'windows\-media\-player','Windows Media Player (media player)', 'audion','Audion (media player)', 'freeamp','FreeAmp (media player)', 'itunes','Apple iTunes (media player)', 'jetaudio','JetAudio (media player)', 'mint_audio','Mint Audio (media player)', 'mpg123','mpg123 (media player)', 'mplayer','The Movie Player (media player)', 'nsplayer','NetShow Player (media player)', 'qts','QuickTime (media player)', 'quicktime','QuickTime (media player)', 'sonique','Sonique (media player)', 'uplayer','Ultra Player (media player)', 'xaudio','Some XAudio Engine based MPEG player (media player)', 'xine','Xine, a free multimedia player (media player)', 'xmms','XMMS (media player)', 'gstreamer','GStreamer (media library)', # RSS Readers 'abilon','Abilon (RSS Reader)', 'aggrevator', 'Aggrevator (RSS Reader)', 'aiderss', 'AideRSS (RSS Reader)', 'akregator','Akregator (RSS Reader)', 'applesyndication','AppleSyndication (RSS Reader)', 'betanews_reader','Betanews Reader (RSS Reader)', 'blogbridge','BlogBridge (RSS Reader)', 'cyndicate','Cyndicate (RSS Reader)', 'feeddemon', 'FeedDemon (RSS Reader)', 'feedreader', 'FeedReader (RSS Reader)', 'feedtools','FeedTools (RSS Reader)', 'greatnews','GreatNews (RSS Reader)', 'gregarius','Gregarius (RSS Reader)', 'hatena_rss','Hatena (RSS Reader)', 'jetbrains_omea', 'Omea (RSS Reader)', 'liferea','Liferea (RSS Reader)', 'netnewswire', 'NetNewsWire (RSS Reader)', 'newsfire', 'NewsFire (RSS Reader)', 'newsgator', 'NewsGator (RSS Reader)', 'newzcrawler', 'NewzCrawler (RSS Reader)', 'plagger', 'Plagger (RSS Reader)', 'pluck', 'Pluck (RSS Reader)', 'potu','Potu (RSS Reader)', 'pubsub\-rss\-reader','PubSub (RSS Reader)', 'pulpfiction', 'PulpFiction (RSS Reader)', 'rssbandit', 'RSS Bandit (RSS Reader)', 'rssreader', 'RssReader (RSS Reader)', 'rssowl', 'RSSOwl (RSS Reader)', 'rss\sxpress','RSS Xpress (RSS Reader)', 'rssxpress','RSSXpress (RSS Reader)', 'sage', 'Sage (RSS Reader)', 'sharpreader', 'SharpReader (RSS Reader)', 'shrook', 'Shrook (RSS Reader)', 'straw', 'Straw (RSS Reader)', 'syndirella', 'Syndirella (RSS Reader)', 'vienna', 'Vienna (RSS Reader)', 'wizz\srss\snews\sreader','Wizz RSS News Reader (RSS Reader)', # PDA/Phonecell browsers 'alcatel','Alcatel Browser (PDA/Phone browser)', 'lg\-','LG (PDA/Phone browser)', 'mot\-','Motorola Browser (PDA/Phone browser)', 'nokia','Nokia Browser (PDA/Phone browser)', 'panasonic','Panasonic Browser (PDA/Phone browser)', 'philips','Philips Browser (PDA/Phone browser)', 'sagem','Sagem (PDA/Phone browser)', 'samsung','Samsung (PDA/Phone browser)', 'sie\-','SIE (PDA/Phone browser)', 'sec\-','Sony/Ericsson (PDA/Phone browser)', 'sonyericsson','Sony/Ericsson Browser (PDA/Phone browser)', 'ericsson','Ericsson Browser (PDA/Phone browser)', # Must be after SonyEricsson 'mmef','Microsoft Mobile Explorer (PDA/Phone browser)', 'mspie','MS Pocket Internet Explorer (PDA/Phone browser)', 'vodafone','Vodaphone browser (PDA/Phone browser)', 'wapalizer','WAPalizer (PDA/Phone browser)', 'wapsilon','WAPsilon (PDA/Phone browser)', 'wap','Unknown WAP browser (PDA/Phone browser)', # Generic WAP phone (must be after 'wap*') 'webcollage','WebCollage (PDA/Phone browser)', 'up\.','UP.Browser (PDA/Phone browser)', # Works for UP.Browser and UP.Link # PDA/Phonecell browsers 'android','Android browser (PDA/Phone browser)', 'blackberry','BlackBerry (PDA/Phone browser)', 'cnf2','Supervision I-Mode ByTel (phone)', 'docomo','I-Mode phone (PDA/Phone browser)', 'ipcheck','Supervision IP Check (phone)', 'iphone','IPhone (PDA/Phone browser)', 'portalmmm','I-Mode phone (PDA/Phone browser)', # Others (TV) 'webtv','WebTV browser', 'democracy','Democracy', # Anonymous Proxy Browsers (can be used as grabbers as well...) 'cjb\.net','CJB.NET Proxy', 'ossproxy','OSSProxy', 'smallproxy','SmallProxy', # Other kind of browsers 'adobeair','AdobeAir', 'apt','Debian APT', 'analogx_proxy','AnalogX Proxy', 'gnome\-vfs', 'Gnome FileSystem Abstraction library', 'neon', 'Neon HTTP and WebDAV client library', 'curl','Curl', 'csscheck','WDG CSS Validator', 'httrack','HTTrack', 'fdm','FDM Free Download Manager', 'javaws','Java Web Start', 'wget','Wget', 'fget','FGet', 'chilkat', 'Chilkat', 'webdownloader\sfor\sx','Downloader for X', 'w3m','w3m', 'wdg_validator','WDG HTML Validator', 'w3c_validator','W3C Validator', 'jigsaw','W3C Validator', 'webreaper','WebReaper', 'webzip','WebZIP', 'staroffice','StarOffice', 'gnus', 'Gnus Network User Services', 'nikto', 'Nikto Web Scanner', 'download\smaster','Download Master', 'microsoft\-webdav\-miniredir', 'Microsoft Data Access Component Internet Publishing Provider', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\scache\smanager', 'Microsoft Data Access Component Internet Publishing Provider Cache Manager', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sdav', 'Microsoft Data Access Component Internet Publishing Provider DAV', 'POE\-Component\-Client\-HTTP','HTTP user-agent for POE (portable networking framework for Perl)', 'mozilla','Mozilla', 'libwww','LibWWW', 'lwp','LibWWW-perl' ); # BrowsersHashAreGrabber # Put here an entry for each browser in BrowsersSearchIDOrder that are grabber # browsers. #--------------------------------------------------------------------------- %BrowsersHereAreGrabbers = ( 'cloudflare','1', 'grabber','1', 'teleport','1', 'webcapture','1', 'webcopier','1', 'curl','1', 'fdm','1', 'httrack','1', 'webreaper','1', 'wget','1', 'fget','1', 'download\smaster','1', 'webdownloader\sfor\sx','1', 'webzip','1' ); # BrowsersHashIcon # Each Browsers Search ID is associated to a string that is the name of icon # file for this browser. #--------------------------------------------------------------------------- %BrowsersHashIcon = ( # Common web browsers text, included the ones hard coded in awstats.pl # firefox, opera, chrome, safari, konqueror, svn, msie, netscape 'firefox','firefox', 'opera','opera', 'chrome','chrome', 'safari','safari', 'konqueror','konqueror', 'svn','subversion', 'msie','msie', 'netscape','netscape', 'firebird','phoenix', 'go!zilla','gozilla', 'icab','icab', 'lynx','lynx', 'omniweb','omniweb', # Other standard web browsers 'amaya','amaya', 'amigavoyager','amigavoyager', 'avantbrowser','avant', 'aweb','aweb', 'bonecho','firefox', 'minefield','firefox', 'granparadiso','firefox', 'donzilla','mozilla', 'songbird','mozilla', 'strata','mozilla', 'sylera','mozilla', 'kazehakase','mozilla', 'prism','mozilla', 'iceape','mozilla', 'seamonkey','seamonkey', 'flock','flock', 'icecat','icecat', 'iceweasel','iceweasel', 'bpftp','bpftp', 'camino','chimera', 'chimera','chimera', 'cyberdog','cyberdog', 'dillo','dillo', 'doris','doris', 'dreamcast','dreamcast', 'xbox', 'winxbox', 'ecatch','ecatch', 'encompass','encompass', 'epiphany','epiphany', 'fresco','fresco', 'galeon','galeon', 'flashget','flashget', 'freshdownload','freshdownload', 'getright','getright', 'leechget','leechget', 'hotjava','hotjava', 'ibrowse','ibrowse', 'k\-meleon','kmeleon', 'lotus\-notes','lotusnotes', 'macweb','macweb', 'multizilla','multizilla', 'msfrontpageexpress','fpexpress', 'ncsa_mosaic','ncsa_mosaic', 'netpositive','netpositive', 'phoenix','phoenix', # Site grabbers 'grabber','grabber', 'teleport','teleport', 'webcapture','adobe', 'webcopier','webcopier', # Media only browsers 'real','real', 'winamp','mediaplayer', # Works for winampmpeg and winamp3httprdr 'windows\-media\-player','mplayer', 'audion','mediaplayer', 'freeamp','mediaplayer', 'itunes','mediaplayer', 'jetaudio','mediaplayer', 'mint_audio','mediaplayer', 'mpg123','mediaplayer', 'mplayer','mediaplayer', 'nsplayer','netshow', 'qts','mediaplayer', 'sonique','mediaplayer', 'uplayer','mediaplayer', 'xaudio','mediaplayer', 'xine','mediaplayer', 'xmms','mediaplayer', # RSS Readers 'abilon', 'abilon', 'aggrevator', 'rss', 'aiderss', 'rss', 'akregator', 'rss', 'applesyndication', 'rss', 'betanews_reader','rss', 'blogbridge','rss', 'feeddemon', 'rss', 'feedreader', 'rss', 'feedtools', 'rss', 'greatnews', 'rss', 'gregarius', 'rss', 'hatena_rss', 'rss', 'jetbrains_omea', 'rss', 'liferea', 'rss', 'netnewswire', 'rss', 'newsfire', 'rss', 'newsgator', 'rss', 'newzcrawler', 'rss', 'plagger', 'rss', 'pluck', 'rss', 'potu', 'rss', 'pubsub\-rss\-reader', 'rss', 'pulpfiction', 'rss', 'rssbandit', 'rss', 'rssreader', 'rss', 'rssowl', 'rss', 'rss\sxpress','rss', 'rssxpress','rss', 'sage', 'rss', 'sharpreader', 'rss', 'shrook', 'rss', 'straw', 'rss', 'syndirella', 'rss', 'vienna', 'rss', 'wizz\srss\snews\sreader','wizz', # PDA/Phonecell browsers 'alcatel','pdaphone', # Alcatel 'lg\-','pdaphone', # LG 'ericsson','pdaphone', # Ericsson 'mot\-','pdaphone', # Motorola 'nokia','pdaphone', # Nokia 'panasonic','pdaphone', # Panasonic 'philips','pdaphone', # Philips 'sagem','pdaphone', # Sagem 'samsung','pdaphone', # Samsung 'sie\-','pdaphone', # SIE 'sec\-','pdaphone', # Sony/Ericsson 'sonyericsson','pdaphone', # Sony/Ericsson 'mmef','pdaphone', 'mspie','pdaphone', 'vodafone','pdaphone', 'wapalizer','pdaphone', 'wapsilon','pdaphone', 'wap','pdaphone', # Generic WAP phone (must be after 'wap*') 'webcollage','pdaphone', 'up\.','pdaphone', # Works for UP.Browser and UP.Link # PDA/Phonecell browsers 'android','android', 'blackberry','pdaphone', 'docomo','pdaphone', 'iphone','pdaphone', 'portalmmm','pdaphone', # Others (TV) 'webtv','webtv', # Anonymous Proxy Browsers (can be used as grabbers as well...) 'cjb\.net','cjbnet', # Other kind of browsers 'adobeair','adobe', 'apt','apt', 'analogx_proxy','analogx', 'microsoft\-webdav\-miniredir','frontpage', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\scache\smanager','frontpage', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sdav','frontpage', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sprotocol\sdiscovery','frontpage', 'microsoft\soffice\sprotocol\sdiscovery','frontpage', 'microsoft\soffice\sexistence\sdiscovery','frontpage', 'gnome\-vfs', 'gnome', 'neon','neon', 'javaws','java', 'webzip','webzip', 'webreaper','webreaper', 'httrack','httrack', 'staroffice','staroffice', 'gnus', 'gnus', 'mozilla','mozilla' ); # Source for this is http://developer.apple.com/internet/safari/uamatrix.html %BrowsersSafariBuildToVersionHash = ( '48' => '0.8', '51' => '0.8.1', '60' => '0.8.2', '73' => '0.9', '74' => '1.0b2', '85' => '1.0', '85.5' => '1.0', '85.7' => '1.0.2', '85.8' => '1.0.3', '85.8.1' => '1.0.3', '100' => '1.1', '100.1' => '1.1.1', '125.7' => '1.2.2', '125.8' => '1.2.2', '125.9' => '1.2.3', '125.11' => '1.2.4', '125.12' => '1.2.4', '312' => '1.3', '312.3' => '1.3.1', '312.3.1' => '1.3.1', '312.5' => '1.3.2', '312.6' => '1.3.2', '412' => '2.0', '412.2' => '2.0', '412.2.2' => '2.0', '412.5' => '2.0.1', '413' => '2.0.1', '416.12' => '2.0.2', '416.13' => '2.0.2', '417.8' => '2.0.3', '417.9.2' => '2.0.3', '417.9.3' => '2.0.3', '419.3' => '2.0.4', '522.11.3' => '3.0', '522.12' => '3.0.2', '523.10' => '3.0.4', '523.12' => '3.0.4', '525.13' => '3.1', '525.17' => '3.1.1', '525.20' => '3.1.1', '525.20.1' => '3.1.2', '525.21' => '3.1.2', '525.22' => '3.1.2', '525.26' => '3.2', '525.26.13' => '3.2', '525.27' => '3.2.1', '525.27.1' => '3.2.1', '526.11.2' => '4.0', '528.1' => '4.0', '528.16' => '4.0' ); 1; # Browsers examples by engines # # -- Mosaic -- # MSIE 4.0 Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; KITV4 Wanadoo; KITV5 Wanadoo) # # -- Gecko Netscape -- # Netscape 4.05 Mozilla/4.05 [fr]C-SYMPA (Win95; I) # Netscape 4.7 Mozilla/4.7 [fr] (Win95; I) # Netscape 6.0 Mozilla/5.0 (Macintosh; N; PPC; fr-FR; m18) Gecko/20001108 Netscape6/6.0 # Netscape 7.02 Mozilla/5.0 (Platform; Security; OS-or-CPU; Localization; rv:1.0.2) Gecko/20030208 Netscape/7.02 # # -- Gecko others -- # Mozilla 1.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3) Gecko/20030312 # Firefox 0.9 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firefox/0.9.1 # Firebird,Phoenix,Galeon,AmiZilla,Dino # Autre Mozilla/3.01 (compatible;) # # -- Opera -- # Opera 6.03 Mozilla/3.0 (Windows 98; U) Opera 6.03 [en] # Opera 5.12 Mozilla/3.0 (Windows 98; U) Opera 5.12 [en] # Opera 3.21 Opera 3.21, Windows: # # -- KHTML -- # Safari # Konqueror # awstats-7.4/wwwroot/cgi-bin/lib/mime.pm0000640000175000017500000001203012410217071015744 0ustar sksk# AWSTATS MIME DATABASE #------------------------------------------------------- # If you want to add MIME types, # you must add an entry in MimeHashLib and assign it to a family #------------------------------------------------------- #package AWSMIME; # MimeHashFamily # This is a hash table of mime groupings and descriptions. # Report icons will appear if names the same as a family, e.g. # if you have a "text.png" icon in the icon/mime directory, the # report will load the icon # Format: 'family', 'descriptive text', #--------------------------------------------------------------- %MimeHashFamily = ( 'text', 'Text file', 'page', 'HTML or XML static page', 'script', 'Dynamic Html page or Script file', 'pl', 'Dynamic Perl Script file', 'php', 'Dynamic PHP Script file', 'image', 'Image', 'document', 'Document', 'package', 'Package', 'archive', 'Archive', 'audio', 'Audio file', 'video', 'Video file', 'jscript', 'JavaScript file', 'vbs', 'Visual Basic script', 'conf', 'Config file', 'css', 'Cascading Style Sheet file', 'xsl', 'Extensible Stylesheet Language file', 'runtime', 'Binary runtime', 'library', 'Binary library', 'swf', 'Adobe Flash Animation', 'flv', 'Adobe Flash Video', 'dtd', 'Document Type Definition', 'csv', 'Comma Separated Value file', 'jnlp', 'Java Web Start launch file', 'lit', 'Microsoft Reader e-book', 'svg', 'Scalable Vector Graphics', 'ai', 'Adobe Illustrator file', 'phshop', 'Adobe Photoshop image file', 'ttf', 'TrueType scalable font file', 'fon', 'Font file', 'pdf', 'Adobe Acrobat file', 'dotnet', 'Dot Net Dynamic Script or File', 'mdb', 'MS Database Object', 'crystal', 'Crystal Reports data or file', 'ooffice', 'Open Office Document', 'encrypt', 'Encrypted document', ); # MimeHashLib # This is a hash of arrays where the key is a specific file extension # and the array is a list of family and file type, e.g. 'd' for download # If a file does not have a type defined, it is counted as a page. Each # mime entry can have only one type # Format: 'extension', ['family', 'type'], # Valid Types: # i - image # d - download # p - page #--------------------------------------------------------------- %MimeHashLib=( # Text file 'txt',['text','d'], 'log',['text','d'], # HTML Static page 'chm',['page',''], 'html',['page',''], 'htm',['page',''], 'mht',['page',''], 'wml',['page',''], 'wmlp',['page',''], 'xhtml',['page',''], 'xml',['page',''], 'vak',['page',''], 'sgm',['page',''], 'sgml',['page',''], # HTML Dynamic pages or script 'asp',['script',''], 'aspx',['dotnet',''], 'ashx',['dotnet',''], 'asmx',['dotnet',''], 'axd', ['dotnet',''], 'cfm',['script',''], 'class',['script',''], 'js',['jscript',''], 'jsp',['script',''], 'cgi',['script',''], 'ksh',['script',''], 'php',['php',''], 'php3',['php',''], 'php4',['php',''], 'pl',['pl',''], 'py',['script',''], 'rss',['rss',''], 'sh',['script',''], 'shtml',['script',''], 'tcl',['script',''], 'xsp',['script',''], 'vbs',['vbs',''], # Image 'gif',['image','i'], 'png',['image','i'], 'bmp',['image','i'], 'jpg',['image','i'], 'jpeg',['image','i'], 'cdr',['image','d'], 'ico',['image','i'], 'svg',['image','i'], # Document 'ai',['document','d'], 'doc',['document','d'], 'docx',['document','d'], 'wmz',['document','d'], 'rtf',['document','d'], 'mso',['document','d'], 'pdf',['pdf','d'], 'frl',['pdf','d'], 'xls',['document','d'], 'xlsx',['document','d'], 'ppt',['document','d'], 'pptx',['document','d'], 'pps',['document','d'], 'psd',['document','d'], 'sxw',['ooffice','d'], 'sxc',['ooffice','d'], 'sxi',['ooffice','d'], 'sxd',['ooffice','d'], 'sxm',['ooffice','d'], 'sxg',['ooffice','d'], 'csv',['csv','d'], 'xsl',['xsl','d'], 'lit',['lit','d'], 'mdb',['mdb',''], 'rpt',['crystal',''], # Package 'rpm',[($LogType eq 'S'?'audio':'package'),'d'], 'deb',['package','d'], 'msi',['package','d'], # Archive '7z',['archive','d'], 'ace',['archive','d'], 'bz2',['archive','d'], 'cab',['archive','d'], 'emz',['archive','d'], 'gz',['archive','d'], 'jar',['archive','d'], 'lzma',['archive','d'], 'rar',['archive','d'], 'tar',['archive','d'], 'tgz',['archive','d'], 'tbz2',['archive','d'], 'z',['archive','d'], 'zip',['archive','d'], # Audio 'aac',['audio','d'], 'flac',['audio','d'], 'mp3',['audio','d'], 'oga',['audio','d'], 'ogg',['audio','d'], 'wav',['audio','d'], 'wma',['audio','d'], 'm4a',['audio','d'], 'm3u',['audio','d'], 'asf',['audio','d'], # Video 'avi',['video','d'], 'divx',['video','d'], 'mp4',['video','d'], 'm4v',['video','d'], 'mpeg',['video','d'], 'mpg',['video','d'], 'ogv',['video','d'], 'ogx',['video','d'], 'rm',['video','d'], 'swf',['flash',''], 'flv',['flash','d'], 'f4v',['flash','d'], 'wmv',['video','d'], 'wmf',['video','d'], 'mov',['video','d'], 'qt',['video','d'], # Config 'cf',['conf',''], 'conf',['conf',''], 'css',['css',''], 'ini',['conf',''], 'dtd',['dtd',''], # Program 'exe',['runtime',''], 'jnlp',['jnlp',''], 'dll',['library',''], 'bin',['library',''], # Font 'ttf',['ttf',''], 'fon',['fon',''], # Encrypted files 'pgp',['encrypt',''], 'gpg',['encrypt',''], ); 1; awstats-7.4/wwwroot/cgi-bin/lib/search_engines.pm0000640000175000017500000022440512510473401020007 0ustar sksk# AWSTATS SEARCH ENGINES DATABASE #------------------------------------------------------------------------------ # If you want to add a Search Engine to extend AWStats database detection capabilities, # you must add an entry in SearchEnginesSearchIDOrder, SearchEnginesHashID and in # SearchEnginesHashLib. # An entry if known in SearchEnginesKnownUrl is also welcome. # # to eldy: Please check if the following description is correct: # You need the following information to specify a search engine: # (a) A regular expression that matches the referrer string of the # search engine. Unclear: What about slashes in the name of # a search engine, e.g. as in 'ecosia.com/search'. Seems that # AWStats will non find search strings containing a slash. # Maybe use a search string without a slash, and - if necessary - # an entry in %NotSearchEnginesKeys , if this search string # matches entries that are not search engines. # Example of a web address of a Amazon search engine: # http://www.amazon.de/gp/bit/apps/web/SERP/search/ref=bit_bds-p24_serp_cr_de?ie=UTF8tagbase=bds-p24&query=deutsch+8.+klasse+gymnasium+protokoll # (b) A unique string to identify the search engine within AWStats # (c) A regular expression that finds the start of the query part in the # referrer string # (d) A HTML-fragment that goes into the reports generated by AWStats which # identifies the search engine to human reader of the report. In the # simplest case this is a string containing the name of the search # engine. You can also provide a hypertext clause that presents the # name together with a link to the search engine. # # The regular expression (a) goes into SearchEnginesSearchIDOrder_list1 # or ..._list2. List 1 contains common search engines, list 2 those # that are not so often used. # # SearchEnginesHashID contains to consecutive entries for each search # engine: The regular expression (a) followed bei the search engine # identifier (b) # # SearchEnginesKnownUrl specifies how to find the start of the query. # For each search engine you enter the search engine identifier (b) # followed by the regular expression (c). Unclear: It is possible to # omit this entry. If you do this, how will AWStats find the start of # the query? # # SearchEnginesHashLib contains also two entries for each search engine: # The search engine identifier (b) followed by the HTML-Fragment (d) # # There are search engines that do not use a query part in their URLs. # They put the search expression in the main part of the URL instead. # AWStats is able to handle these cases. They are specified as described # above, except the following two things: # - The regular expression (c) searches the complete URL and not only # the query part. # - An additional Entry in the list %SearchEnginesWithKeysNotInQuery is # necessary. # # # AWStats runs a sanity check of the contents of search_engines.pm. This # check detects the following things: # - Inconsistencies (number of entries) # It does not detect the following errors: # - If the HTML-Fragment (d) is syntactically incorrect. # #------------------------------------------------------------------------------ # 2005-08-19 Sean Carlos http://www.antezeta.com/awstats.html # added minor italian search engines # arianna http://arianna.libero.it/ # supereva http://search.supereva.com/ # kataweb http://kataweb.it/ # corrected uk looksmart # 'askuk','ask=', 'bbc','q=', 'freeserve','q=', 'looksmart','key=', # to # 'askuk','ask=', 'bbc','q=', 'freeserve','q=', 'looksmartuk','key=', # corrected spelling # internationnal -> international # added 'google\.'=>'mail\.google\.', to NotSearchEnginesKeys in order to # avoid counting gmail referrals as search engine traffic # 2005-08-21 Sean Carlos http://www.antezeta.com/awstats.html # avoid counting babelfish.altavista referrals as search engine traffic # avoid counting translate.google referrals as search engine traffic # 2005-11-20 Sean Carlos # added missing 'tiscali','key=', entry. Check order # 2005-11-22 Sean Carlos # added Google Base & Froogle. Froogle not tested. # 2006-04-18 Sean Carlos http://www.antezeta.com/awstats.html # added biglotron.com (France) # added blingo http://www.blingo.com/ # added Clusty & Vivisimo # added eniro.no (Norway) [https://sourceforge.net/forum/message.php?msg_id=3134783] # added GPU p2p search http://search.centraldatabase.org/ # added mail.tiscali to "not search engines list" [https://sourceforge.net/forum/message.php?msg_id=3166688] # added Ask group's "mysearch" # added sify.com (India) # added sogou.com (Cina) [https://sourceforge.net/forum/message.php?msg_id=3501603] # Ask changes: # - added Ask Japan (ask.jp) # - break out Ask new country level variants (DE, ES, FR, IT, NL) # - updated Ask name from Ask Jevees # - added Ask q= parameter - many recent searches probably not recognized; [https://sourceforge.net/forum/message.php?msg_id=3465444] # - updated Ask uk (new uk.ask.com added to older ask.co.uk) # updated voila kw|rdata parameter [https://sourceforge.net/forum/message.php?msg_id=3373912] # for each new engine, added link to Search Engine. This serves to document engine. Done for major & Italian engines as well. Requires patch # to AWStats to allow untranslated html. Otherwise html will appear instead of link. # reviewed mnoGoSearch (http://www.mnogosearch.org/); the search engined mentioned no longer # exists https://sourceforge.net/forum/message.php?msg_id=3025426 # 2006-05-13 Sean Carlos http://www.antezeta.com/awstats.html # added 10 Chello European broadband portals (Austria, Belgium, Czech Republic, France, Hungary, The Netherlands, Norway, Poland, Slovakia, Sweden) # added Alice Internal Search (blends data with Google?) search.alice.it.master:10005 # added detection of google cache views from IPs 66.249.93.104 72.14.203.104 72.14.207.104 # To do: add more extensive IP list; keywords not yet detected. # added icerocket.com blog search http://www.icerocket.com/ # added live.com (msn) http://www.live.com/ # added Meta motor kartoo. Note: Kartoo does not provide search words in referrers, thus the engine will appear in the # search engine list but the actual search words are not available. # added netluchs.de http://www.netluchs.de/ # added sphere.com blog search http://www.sphere.com/ # added wwweasel.de http://wwweasel.de # added Yahoo Mindset! http://mindset.research.yahoo.com/ # updated Mirago query parameter recognition (qry=); added breakout for each country (France, Germany, Spain, Italy, Norway, Sweden, Denmark, Netherlands, Belgium, Switzerland) # 2006-05-13 Sean Carlos http://www.antezeta.com/awstats.html # added Google cache IPs 64.233.183.104 & 66.102.7.104 # 2006-05-20 Sean Carlos http://www.antezeta.com/awstats.html # anzwers.com.au # schoenerbrausen.de http://www.schoenerbrausen.de/ # added Google cache IP 216.239.59.104 # answerbus http://www.answerbus.com/ (does not provide keywords) # 2006-05-23 Sean Carlos http://www.antezeta.com/awstats.html # added Google cache IP 66.102.9.104, 64.233.161.104 # 2006-06-23 Sean Carlos http://www.antezeta.com/awstats.html # added Alice Search search.alice.it # added GoodSearch http://www.goodsearch.com/ (does not provide keywords) "a Yahoo-powered search engine that donates money to your favorite charity or school each time you search the web" # added googlee.com, variant of Google # added gotuneed http://www.gotuneed.com/ Italian search engine, in beta # added icq.com # added logic to parse Google Cache search keywords. Seems to work for alpha but not numeric cache IDs, i.e. search?q=cache:lWVLmnuGJswJ: is recognized but q=cache:Yv5qxeJNuhgJ: is not recognized. The URL triggering the keywords will also appear. The URLs are probably too varied to parse out? # added Nusearch http://www.nusearch.com/ # added Polymeta www.polymeta.hu (does not provide keywords) # added scroogle http://www.scroogle.org/ (does not always provide keywords) # added Tango http://tango.hu/search.php?st=0&q=jeles+napok # Changed Google Cache notation 64\.233\.(161|167|179|183|187)\.104 to 64\.233\.1[0-9]{2}\.104 # 72\.14\.(203|205|207|209|221)\.104 to 72\.14\.2[0-9]{2}\.104 # 216\.239\.(51|59)\.104 to 216\.239\.5[0-9]\.104 # 66\.102\.(7|9)\.104 to 66\.102\.[1-9]\.104 # 2006-06-27 Sean Carlos http://www.antezeta.com/awstats.html # added Onet.pl http://szukaj.onet.pl/ # corrected name "Wirtualna Polska" from "Szukaj" (search); added link http://szukaj.wp.pl/ # 2006-06-30 Sean Carlos http://www.antezeta.com/awstats.html # Additional Polish Search Engines: # added Dodaj.pl http://www.dodaj.pl/ # added Gazeta.pl http://szukaj.gazeta.pl/ # added Gery.pl http://szukaj.gery.pl/ # added Hoga.pl http://www.hoga.pl/ # added Interia.pl http://www.google.interia.pl/ # added Katalog.Onet.pl http://katalog.onet.pl/ # added NetSprint.pl http://www.netsprint.pl/ # added o2.pl http://szukaj2.o2.pl/ # added Polska http://szukaj.polska.pl/ # added Szukacz http://www.szukacz.pl/ # added Wow.pl http://szukaj.wow.pl/ # added Sagool http://sagool.jp/ # 2006-08-25 Social Bookmarks # International # added del.icio.us/search - for now, just search referrer. To do: consider /tag/(tagname) referrer? # added stumbleupon.com - No keywords supplied. # added swik.net # added digg. Keywords sometimes supplied. # Italy # added segnalo.alice.it - No keywords supplied. # added ineffabile.it - No keywords supplied. # added filter for google groups. Attempt to parse group name as keyword. # 2006-09-14 # added Eniro Sverige http://www.eniro.se/ # added MyWebSearch http://search.mywebsearch.com/ # added Teecno http://www.teecno.it/ Italian Open Source Search Engine #package AWSSE; # 2006-09-25 (Gabor Moizes) # added 4-counter (Google alternative) http://4-counter.com/ # added Googlecom (Google alternative) http://googlecom.com/ # added Goggle (Google alternative) http://goggle.co.hu/ # added Comet toolbar http://as.starware.com # added new IP for Yahoo: 216.109.125.130 # added Ledix http://ledix.net/ # added AT&T search (powered by Google) http://www.att.net/ # added Keresolap (Hungarian search engine) http://www.keresolap.hu/ # added Mozbot (French search engine) http://www.mozbot.fr/ # added Zoznam (Slovak search engine) http://www.zoznam.sk/ # added sapo.pt (Portuguese search engine) http://www.sapo.pt/ # added shaw.ca (powered by Google) http://start.shaw.ca/ # added Searchalot http://www.searchalot.com/ # added Copernic http://www.copernic.com/ # added 216.109.125.130 to Yahoo # added 66.218.69.11 to Yahoo # added Avantfind http://www.avantfind.com/ # added Steadysearch http://www.steadysearch.com/ # added Steadysearch http://www.steady-search.com/ # modified 216\.239\.5[0-9]\.104/search to 216\.239\.5[0-9]\.104 # SearchEnginesSearchIDOrder # It contains all matching criteria to search for in log fields. This list is # used to know in which order to search Search Engines IDs. # Most frequent one are in list1, used when LevelForSearchEnginesDetection is 1 or more # Minor robots are in list2, used when LevelForSearchEnginesDetection is 2 or more # Note: Regex IDs are in lower case and ' ' and '+' are changed into '_' #------------------------------------------------------------------------------ @SearchEnginesSearchIDOrder_list1=( # Major international search engines 'google\.[\w.]+/products', 'base\.google\.', 'froogle\.google\.', 'groups\.google\.', 'images\.google\.', 'google\.', 'googlee\.', 'googlecom\.com', 'goggle\.co\.hu', '216\.239\.32\.20', '173\.194\.32\.223', '216\.239\.(35|37|39|51)\.100', '216\.239\.(35|37|39|51)\.101', '216\.239\.5[0-9]\.104', '64\.233\.1[0-9]{2}\.104', '66\.102\.[1-9]\.104', '66\.249\.93\.104', '72\.14\.2[0-9]{2}\.104', 'msn\.', 'live\.com', 'bing\.', 'voila\.', 'mindset\.research\.yahoo', 'yahoo\.','(66\.218\.71\.225|216\.109\.117\.135|216\.109\.125\.130|66\.218\.69\.11)', 'search\.aol\.co', 'tiscali\.', 'lycos\.', 'alexa\.com', 'alltheweb\.com', 'altavista\.', 'a9\.com', 'dmoz\.org', 'netscape\.', 'search\.terra\.', 'www\.search\.com', 'search\.sli\.sympatico\.ca', 'excite\.' ); @SearchEnginesSearchIDOrder_list2=( # Minor international search engines '4\-counter\.com', 'att\.net', 'bungeebonesdotcom', 'northernlight\.', 'hotbot\.', 'kvasir\.', 'webcrawler\.', 'metacrawler\.', 'go2net\.com', '(^|\.)go\.com', 'euroseek\.', 'looksmart\.', 'spray\.', 'nbci\.com\/search', 'de\.ask.\com', # break out Ask country specific engines. (.jp is in Japan section) 'es\.ask.\com', 'fr\.ask.\com', 'it\.ask.\com', 'nl\.ask.\com', 'uk\.ask.\com', '(^|\.)ask\.com', 'atomz\.', 'overture\.com', # Replace 'goto\.com','Goto.com', 'teoma\.', 'findarticles\.com', 'infospace\.com', 'mamma\.', 'dejanews\.', 'dogpile\.com', 'wisenut\.com', 'ixquick\.com', 'search\.earthlink\.net', 'i-une\.com', 'blingo\.com', 'centraldatabase\.org', 'clusty\.com', 'mysearch\.', 'vivisimo\.com', 'kartoo\.com', 'icerocket\.com', 'sphere\.com', 'ledix\.net', 'start\.shaw\.ca', 'searchalot\.com', 'copernic\.com', 'avantfind\.com', 'steadysearch\.com', 'steady-search\.com', 'claro-search\.com', 'www1\.search-results\.com', 'www\.holasearch\.com', 'search\.conduit\.com', 'static\.flipora\.com', '(?:www[12]?|mixidj)\.delta-search\.com', 'start\.iminent\.com', 'www\.searchmobileonline\.com', 'int\.search-results\.com', 'www2\.inbox\.com', 'www\.govome\.com', 'find1friend\.com', 'start\.mysearchdial\.com', 'go\.speedbit\.com', 'search\.certified-toolbar\.com', 'search\.sweetim\.com', 'search\.searchcompletion\.com', 'en\.eazel\.com', 'sr\.searchfunmoods\.com', '173\.194\.35\.177', 'dalesearch\.com', 'sweetpacks-search\.com', 'searchgol\.com', 'duckduckgo\.com', 'sr\.facemoods\.com', 'shoppstop\.com', 'searchya\.com', 'picsearch\.de', 'webssearches\.com', 'airzip\.inspsearch\.com', 'zapmeta\.de', 'localmoxie\.com', 'search-results\.mobi', 'androidsearch\.com', 'isearch\.nation\.com', 'search\.zonealarm\.com', 'www\.buenosearch\.com', 'search\.foxtab\.com', 'searches\.qone8\.com', 'startpage\.com', 'www\.qwant\.com', 'searches\.safehomepage\.com', 'searches\.vi-view\.com', 'wow\.utop\.it', 'windowssearch\.com', 'www\.wow\.com', 'searches\.globososo\.com', # Chello Portals 'chello\.at', 'chello\.be', 'chello\.cz', 'chello\.fr', 'chello\.hu', 'chello\.nl', 'chello\.no', 'chello\.pl', 'chello\.se', 'chello\.sk', 'chello', # required as catchall for new countries not yet known # Mirago 'mirago\.be', 'mirago\.ch', 'mirago\.de', 'mirago\.dk', 'es\.mirago\.com', 'mirago\.fr', 'mirago\.it', 'mirago\.nl', 'no\.mirago\.com', 'mirago\.se', 'mirago\.co\.uk', 'mirago', # required as catchall for new countries not yet known 'answerbus\.com', 'icq\.com\/search', 'nusearch\.com', 'goodsearch\.com', 'scroogle\.org', 'questionanswering\.com', 'mywebsearch\.com', 'as\.starware\.com', # Social Bookmarking Services 'del\.icio\.us', 'digg\.com', 'stumbleupon\.com', 'swik\.net', 'segnalo\.alice\.it', 'ineffabile\.it', # Minor Australian search engines 'anzwers\.com\.au', # Minor brazilian search engines 'engine\.exe', 'miner\.bol\.com\.br', # Minor chinese search engines '\.baidu\.com', # baidu search portal '\.vnet\.cn', # powered by MSN '\.soso\.com', # powered by Google '\.sogou\.com', # powered by Sohu '\.3721\.com', # powered by Yahoo! 'iask\.com', # powered by Sina '\.accoona\.com', # Accoona '\.163\.com', # powered by Google '\.zhongsou\.com', # zhongsou search portal # Minor czech search engines 'atlas\.cz','seznam\.cz','quick\.cz','centrum\.cz','jyxo\.(cz|com)','najdi\.to','redbox\.cz', 'isearch\.avg\.com', # Minor danish search-engines 'opasia\.dk', 'danielsen\.com', 'sol\.dk', 'jubii\.dk', 'find\.dk', 'edderkoppen\.dk', 'netstjernen\.dk', 'orbis\.dk', 'tyfon\.dk', '1klik\.dk', 'ofir\.dk', # Minor dutch search engines 'ilse\.','vindex\.', # Minor english search engines '(^|\.)ask\.co\.uk','bbc\.co\.uk/cgi-bin/search','ifind\.freeserve','looksmart\.co\.uk','splut\.','spotjockey\.','ukdirectory\.','ukindex\.co\.uk','ukplus\.','searchy\.co\.uk', 'search\.fbdownloader\.com', 'search\.babylon\.com', 'my\.allgameshome\.com', 'surfcanyon\.com', # Minor finnish search engines 'haku\.www\.fi', # Minor french search engines 'recherche\.aol\.fr','ctrouve\.','francite\.','\.lbb\.org','rechercher\.libertysurf\.fr', 'search[\w\-]+\.free\.fr', 'recherche\.club-internet\.fr', 'toile\.com', 'biglotron\.com', 'mozbot\.fr', # Minor german search engines 'sucheaol\.aol\.de', 'o2suche\.aol\.de', 'fireball\.de','infoseek\.de','suche\d?\.web\.de','[a-z]serv\.rrzn\.uni-hannover\.de', 'suchen\.abacho\.de','(brisbane|suche)\.t-online\.de','allesklar\.de','meinestadt\.de', '212\.227\.33\.241', '(161\.58\.227\.204|161\.58\.247\.101|212\.40\.165\.90|213\.133\.108\.202|217\.160\.108\.151|217\.160\.111\.99|217\.160\.131\.108|217\.160\.142\.227|217\.160\.176\.42)', 'wwweasel\.de', 'netluchs\.de', 'schoenerbrausen\.de', 'suche\.gmx\.net', 'suche\.gmx\.at', 'ecosia\.org', 'de\.aolsearch\.com', 'suche\.aol\.de', 'www\.startxxl\.com', 'www\.benefind\.de', 'www\.amazon\.de.*search', #Just as a reminder, probably will not work as AWstats seems to consider the host part of an URL only 'de\.wow\.com', 'www\.vlips\.de', 'metager\.de', 'search\.1und1\.de', 'sm\.de', 'sumaja\.de', 'navigationshilfe\.t-online\.de', 'umfis\.de', 'fastbot\.de', 'tixuma\.de', 'suche\.freenet\.de', 'www\.izito\.de', 'extern\.peoplecheck\.de', 'www\.oneseek\.de', 'de\.wiki\.gov\.cn', # Minor Hungarian search engines 'heureka\.hu','vizsla\.origo\.hu','lapkereso\.hu','goliat\.hu','index\.hu','wahoo\.hu','webmania\.hu','search\.internetto\.hu', 'tango\.hu', 'keresolap\.hu', 'kereso\.startlap\.hu', 'polymeta\.hu', # Minor Indian search engines 'sify\.com', # Minor Italian search engines 'virgilio\.it','arianna\.libero\.it','supereva\.com','kataweb\.it','search\.alice\.it\.master','search\.alice\.it','gotuneed\.com', 'godado','jumpy\.it','shinyseek\.it','teecno\.it', # Minor Israeli search engines 'search\.genieo\.com', # Minor Japanese search engines 'ask\.jp','sagool\.jp', 'websearch\.rakuten\.co\.jp', # Minor Norwegian search engines 'sok\.start\.no', 'eniro\.no', # Minor Polish search engines 'szukaj\.wp\.pl','szukaj\.onet\.pl','dodaj\.pl','gazeta\.pl','gery\.pl','hoga\.pl','netsprint\.pl','interia\.pl','katalog\.onet\.pl','o2\.pl','polska\.pl','szukacz\.pl','wow\.pl', # Minor russian search engines 'ya(ndex)?\.ru', 'aport\.ru', 'rambler\.ru', 'turtle\.ru', 'metabot\.ru', 'go\.mail\.ru', # Minor Swedish search engines 'evreka\.passagen\.se','eniro\.se', # Minor Slovak search engines 'zoznam\.sk', # Minor Portuguese search engines 'sapo\.pt', # Minor swiss search engines 'search\.ch', 'search\.bluewin\.ch', 'www\.zapmeta\.ch', 'etools\.ch', # Minor Croatian, Serbian, Macedonian, Bosnian and Herzegovinian search engines 'pogodak\.' ); @SearchEnginesSearchIDOrder_listgen=( # Generic search engines 'search\..*\.\w+' ); # NotSearchEnginesKeys # If a search engine key is found, we check its exclude list to know if it's # really a search engine #------------------------------------------------------------------------------ %NotSearchEnginesKeys=( 'altavista\.'=>'babelfish\.altavista\.', 'google\.'=>'mail\.google\.', 'google\.'=>'translate\.google\.', 'google\.'=>'code\.google\.', 'msn\.'=>'hotmail\.msn\.', 'tiscali\.'=>'mail\.tiscali\.', 'yahoo\.'=>'(?:picks|mail)\.yahoo\.|yahoo\.[^/]+/picks', 'yandex\.'=>'direct\.yandex\.' ); # SearchEnginesHashID # Each Search Engine Search ID is associated to an AWStats id string #------------------------------------------------------------------------------ %SearchEnginesHashID = ( # Major international search engines 'google\.[\w.]+/products','google_products', 'base\.google\.','google_base', 'froogle\.google\.','google_froogle', 'groups\.google\.','google_groups', 'images\.google\.','google_image', 'google\.','google', 'googlee\.','google', 'googlecom\.com','google', 'goggle\.co\.hu','google', '216\.239\.32\.20', 'google', '173\.194\.32\.223', 'google', '216\.239\.(35|37|39|51)\.100','google_cache', '216\.239\.(35|37|39|51)\.101','google_cache', '216\.239\.5[0-9]\.104','google_cache', '64\.233\.1[0-9]{2}\.104','google_cache', '66\.102\.[1-9]\.104','google_cache', '66\.249\.93\.104','google_cache', '72\.14\.2[0-9]{2}\.104','google_cache', 'msn\.','msn', 'live\.com','live', 'bing\.','bing', 'voila\.','voila', 'mindset\.research\.yahoo','yahoo_mindset', 'yahoo\.','yahoo','(66\.218\.71\.225|216\.109\.117\.135|216\.109\.125\.130|66\.218\.69\.11)','yahoo', 'lycos\.','lycos', 'alexa\.com','alexa', 'alltheweb\.com','alltheweb', 'altavista\.','altavista', 'a9\.com','a9', 'dmoz\.org','dmoz', 'netscape\.','netscape', 'search\.terra\.','terra', 'www\.search\.com','search.com', 'tiscali\.','tiscali', 'search\.aol\.co','aol', 'search\.sli\.sympatico\.ca','sympatico', 'excite\.','excite', # Minor international search engines '4\-counter\.com','google4counter', 'att\.net','att', 'bungeebonesdotcom','bungeebonesdotcom', 'northernlight\.','northernlight', 'hotbot\.','hotbot', 'kvasir\.','kvasir', 'webcrawler\.','webcrawler', 'metacrawler\.','metacrawler', 'go2net\.com','go2net', '(^|\.)go\.com','go', 'euroseek\.','euroseek', 'looksmart\.','looksmart', 'spray\.','spray', 'nbci\.com\/search','nbci', 'de\.ask.\com','askde', # break out Ask country specific engines. 'es\.ask.\com','askes', 'fr\.ask.\com','askfr', 'it\.ask.\com','askit', 'nl\.ask.\com','asknl', 'uk\.ask.\com','askuk', '(^|\.)ask\.co\.uk','askuk', '(^|\.)ask\.com','ask', 'atomz\.','atomz', 'overture\.com','overture', # Replace 'goto\.com','Goto.com', 'teoma\.','teoma', 'findarticles\.com','findarticles', 'infospace\.com','infospace', 'mamma\.','mamma', 'dejanews\.','dejanews', 'dogpile\.com','dogpile', 'wisenut\.com','wisenut', 'ixquick\.com','ixquick', 'search\.earthlink\.net','earthlink', 'i-une\.com','iune', 'blingo\.com','blingo', 'centraldatabase\.org','centraldatabase', 'clusty\.com','clusty', 'mysearch\.','mysearch', 'vivisimo\.com','vivisimo', 'kartoo\.com','kartoo', 'icerocket\.com','icerocket', 'sphere\.com','sphere', 'ledix\.net','ledix', 'start\.shaw\.ca','shawca', 'searchalot\.com','searchalot', 'copernic\.com','copernic', 'avantfind\.com','avantfind', 'steadysearch\.com','steadysearch', 'steady-search\.com','steadysearch', 'claro-search\.com','clarosearch', 'www1\.search-results\.com', 'searchresults', 'www\.holasearch\.com', 'holasearch', 'search\.conduit\.com', 'conduit', 'static\.flipora\.com', 'flipora', '(?:www[12]?|mixidj)\.delta-search\.com', 'delta-search', 'start\.iminent\.com', 'iminent', 'www\.searchmobileonline\.com', 'searchmobileonline', 'int\.search-results\.com', 'nortonsavesearch', 'www2\.inbox\.com', 'inbox', 'www\.govome\.com', 'govome', 'find1friend\.com', 'find1friend', 'start\.mysearchdial\.com', 'mysearchdial', 'go\.speedbit\.com', 'speedbit', 'search\.certified-toolbar\.com', 'certifiedtoolbarsearch', 'search\.sweetim\.com', 'sweetim', 'search\.searchcompletion\.com', 'searchcompletion', 'en\.eazel\.com','eazelsearch', 'sr\.searchfunmoods\.com', 'searchfunmoods', '173\.194\.35\.177', 'googleByIP', 'dalesearch\.com', 'dalesearch', 'sweetpacks-search\.com', 'sweetpacks', 'searchgol\.com', 'searchgol', 'duckduckgo\.com', 'duckduckgo', 'sr\.facemoods\.com', 'facemoods', 'shoppstop\.com', 'shoppstop', 'searchya\.com', 'searchya', 'picsearch\.de', 'picsearch', 'webssearches\.com', 'webssearches', 'airzip\.inspsearch\.com', 'inspsearch_com', 'zapmeta\.de', 'zapmeta', 'localmoxie\.com', 'localmoxie', 'search-results\.mobi', 'search-results_mobi', 'androidsearch\.com', 'androidsearch', 'isearch\.nation\.com', 'isearch_nation_com', 'search\.zonealarm\.com', 'search_zonealarm_com', 'www\.buenosearch\.com', 'www_buenosearch_com', 'search\.foxtab\.com', 'search_foxtab_com', 'searches\.qone8\.com', 'searches_qone8_com', 'startpage\.com', 'startpage_com', 'www\.qwant\.com', 'qwant_com', 'searches\.safehomepage\.com', 'safehomepage_com', 'searches\.vi-view\.com', 'vi-view_com', 'wow\.utop\.it', 'wow_utop_it', 'windowssearch\.com', 'windowssearch_com', 'www\.wow\.com', 'www_wow_com', 'searches\.globososo\.com', 'globososo_com', # Chello Portals 'chello\.at','chelloat', 'chello\.be','chellobe', 'chello\.cz','chellocz', 'chello\.fr','chellofr', 'chello\.hu','chellohu', 'chello\.nl','chellonl', 'chello\.no','chellono', 'chello\.pl','chellopl', 'chello\.se','chellose', 'chello\.sk','chellosk', 'chello','chellocom', # Mirago 'mirago\.be','miragobe', 'mirago\.ch','miragoch', 'mirago\.de','miragode', 'mirago\.dk','miragodk', 'es\.mirago\.com','miragoes', 'mirago\.fr','miragofr', 'mirago\.it','miragoit', 'mirago\.nl','miragonl', 'no\.mirago\.com','miragono', 'mirago\.se','miragose', 'mirago\.co\.uk','miragocouk', 'mirago','mirago', # required as catchall for new countries not yet known 'answerbus\.com','answerbus', 'icq\.com\/search','icq', 'nusearch\.com','nusearch', 'goodsearch\.com','goodsearch', 'scroogle\.org','scroogle', 'questionanswering\.com','questionanswering', 'mywebsearch\.com','mywebsearch', 'as\.starware\.com','comettoolbar', # Social Bookmarking Services 'del\.icio\.us','delicious', 'digg\.com','digg', 'stumbleupon\.com','stumbleupon', 'swik\.net','swik', 'segnalo\.alice\.it','segnalo', 'ineffabile\.it','ineffabile', # Minor Australian search engines 'anzwers\.com\.au','anzwers', # Minor brazilian search engines 'engine\.exe','engine', 'miner\.bol\.com\.br','miner', # Minor chinese search engines '\.baidu\.com','baidu', 'iask\.com','iask', '\.accoona\.com','accoona', '\.3721\.com','3721', '\.163\.com','netease', '\.soso\.com','soso', '\.zhongsou\.com','zhongsou', '\.vnet\.cn','vnet', '\.sogou\.com','sogou', # Minor czech search engines 'atlas\.cz','atlas', 'seznam\.cz','seznam', 'quick\.cz','quick', 'centrum\.cz','centrum', 'jyxo\.(cz|com)','jyxo', 'najdi\.to','najdi', 'redbox\.cz','redbox', 'isearch\.avg\.com', 'avgsearch', # Minor danish search-engines 'opasia\.dk','opasia', 'danielsen\.com','danielsen', 'sol\.dk','sol', 'jubii\.dk','jubii', 'find\.dk','finddk', 'edderkoppen\.dk','edderkoppen', 'netstjernen\.dk','netstjernen', 'orbis\.dk','orbis', 'tyfon\.dk','tyfon', '1klik\.dk','1klik', 'ofir\.dk','ofir', # Minor dutch search engines 'ilse\.','ilse', 'vindex\.','vindex', # Minor english search engines 'bbc\.co\.uk/cgi-bin/search','bbc', 'ifind\.freeserve','freeserve', 'looksmart\.co\.uk','looksmartuk', 'splut\.','splut', 'spotjockey\.','spotjockey', 'ukdirectory\.','ukdirectory', 'ukindex\.co\.uk','ukindex', 'ukplus\.','ukplus', 'searchy\.co\.uk','searchy', 'search\.fbdownloader\.com','fbdownloader', 'search\.babylon\.com', 'babylon', 'my\.allgameshome\.com', 'allgameshome', 'surfcanyon\.com', 'surfcanyon_com', # Minor finnish search engines 'haku\.www\.fi','haku', # Minor french search engines 'recherche\.aol\.fr','aolfr', 'ctrouve\.','ctrouve', 'francite\.','francite', '\.lbb\.org','lbb', 'rechercher\.libertysurf\.fr','libertysurf', 'search[\w\-]+\.free\.fr','free', 'recherche\.club-internet\.fr','clubinternet', 'toile\.com','toile', 'biglotron\.com', 'biglotron', 'mozbot\.fr', 'mozbot', # Minor german search engines 'sucheaol\.aol\.de','aolde', 'o2suche\.aol\.de','o2aolde', 'fireball\.de','fireball', 'infoseek\.de','infoseek', 'suche\d?\.web\.de','webde', '[a-z]serv\.rrzn\.uni-hannover\.de','meta', 'suchen\.abacho\.de','abacho', '(brisbane|suche)\.t-online\.de','t-online', 'allesklar\.de','allesklar', 'meinestadt\.de','meinestadt', '212\.227\.33\.241','metaspinner', '(161\.58\.227\.204|161\.58\.247\.101|212\.40\.165\.90|213\.133\.108\.202|217\.160\.108\.151|217\.160\.111\.99|217\.160\.131\.108|217\.160\.142\.227|217\.160\.176\.42)','metacrawler_de', 'wwweasel\.de','wwweasel', 'netluchs\.de','netluchs', 'schoenerbrausen\.de','schoenerbrausen', 'suche\.gmx\.net', 'gmxsuche', 'suche\.gmx\.at', 'gmxsuche_at', 'ecosia\.org', 'ecosiasearch', 'de\.aolsearch\.com', 'aolsearch', 'suche\.aol\.de', 'aolsuche', 'www\.startxxl\.com', 'startxxl', 'www\.benefind\.de', 'benefind', 'www\.amazon\.de.*search', 'amazonsearch', #Not clear if this matches amazon searches only 'de\.wow\.com', 'wowsearch', 'www\.vlips\.de', 'vlips_de', 'metager\.de', 'metager', 'search\.1und1\.de', 'search_1und1_de', 'sm\.de', 'smde', 'sumaja\.de', 'sumaja', 'navigationshilfe\.t-online\.de', 'navigationshilfe', 'umfis\.de', 'umfis', 'fastbot\.de', 'fastbot_de', 'tixuma\.de', 'tixuma_de', 'suche\.freenet\.de', 'freenet_de', 'www\.izito\.de', 'izito_de', 'extern\.peoplecheck\.de', 'peoplecheck_de', 'www\.oneseek\.de', 'oneseek_de', 'de\.wiki\.gov\.cn', 'de_wiki_gov_cn', # Minor Hungarian search engines 'heureka\.hu','heureka', 'vizsla\.origo\.hu','origo', 'lapkereso\.hu','lapkereso', 'goliat\.hu','goliat', 'index\.hu','indexhu', 'wahoo\.hu','wahoo', 'webmania\.hu','webmania', 'search\.internetto\.hu','internetto', 'tango\.hu','tango_hu', 'keresolap\.hu','keresolap_hu', 'kereso\.startlap\.hu', 'startlap_hu', 'polymeta\.hu','polymeta_hu', # Minor Indian search engines 'sify\.com','sify', # Minor Italian search engines 'virgilio\.it','virgilio', 'arianna\.libero\.it','arianna', 'supereva\.com','supereva', 'kataweb\.it','kataweb', 'search\.alice\.it\.master','aliceitmaster', 'search\.alice\.it','aliceit', 'gotuneed\.com','gotuneed', 'godado','godado', 'jumpy\.it','jumpy\.it', 'shinyseek\.it','shinyseek\.it', 'teecno\.it','teecnoit', # Minor Israeli search engines 'search\.genieo\.com', 'genieo', # Minor Japanese search engines 'ask\.jp','askjp', 'sagool\.jp','sagool', 'websearch\.rakuten\.co\.jp', 'rakuten', # Minor Norwegian search engines 'sok\.start\.no','start', 'eniro\.no','eniro', # Minor Polish search engines 'szukaj\.wp\.pl','wp', 'szukaj\.onet\.pl','onetpl', 'dodaj\.pl','dodajpl', 'gazeta\.pl','gazetapl', 'gery\.pl','gerypl', 'netsprint\.pl\/hoga\-search','hogapl', 'netsprint\.pl','netsprintpl', 'interia\.pl','interiapl', 'katalog\.onet\.pl','katalogonetpl', 'o2\.pl','o2pl', 'polska\.pl','polskapl', 'szukacz\.pl','szukaczpl', 'wow\.pl','wowpl', # Minor russian search engines 'ya(ndex)?\.ru','yandex', 'aport\.ru','aport', 'rambler\.ru','rambler', 'turtle\.ru','turtle', 'metabot\.ru','metabot', 'go\.mail\.ru', 'mailru', # Minor Swedish search engines 'evreka\.passagen\.se','passagen', 'eniro\.se','enirose', # Minor Slovak search engines 'zoznam\.sk','zoznam', # Minor Portuguese search engines 'sapo\.pt','sapo', # Minor swiss search engines 'search\.ch','searchch', 'search\.bluewin\.ch','bluewin', 'www\.zapmeta\.ch', 'zapmeta_ch', 'etools\.ch', 'etools_ch', # Minor Croatian, Serbian, Macedonian, Bosnian and Herzegovinian search engines 'pogodak\.','pogodak', # Generic search engines 'search\..*\.\w+','search' ); # SearchEnginesWithKeysNotInQuery # List of search engines that store keyword as page instead of query parameter #------------------------------------------------------------------------------ %SearchEnginesWithKeysNotInQuery=( 'a9',1, # www.a9.com/searchkey1%20searchkey2 'iminent',1, #http://start.iminent.com/StartWeb/1031/toolbox/#q=searchkey1%20searchkey2&additional_arguments 'de_wiki_gov_cn',1 #http://de.wiki.gov.cn/s_searchkey1%20searchkey2 ); # SearchEnginesKnownUrl # Known rules to extract keywords from a referrer search engine URL #------------------------------------------------------------------------------ %SearchEnginesKnownUrl=( # Most common search engines 'alexa','q=', 'alltheweb','q(|uery)=', 'altavista','q=', 'a9','a9\.com\/', 'dmoz','search=', 'google_products','(p|q|as_p|as_q)=', 'google_base','(p|q|as_p|as_q)=', 'google_froogle','(p|q|as_p|as_q)=', 'google_groups','group\/', # does not work 'google_image','(p|q|as_p|as_q)=', 'google_cache','(p|q|as_p|as_q)=cache:[0-9A-Za-z]{12}:', 'google','(p|q|as_p|as_q)=', 'lycos','query=', 'msn','q=', 'live','q=', 'bing','q=', 'netscape','search=', 'tiscali','key=', 'aol','query=', 'terra','query=', 'voila','(kw|rdata)=', 'search.com','q=', 'yahoo_mindset','p=', 'yahoo','p=', 'sympatico', 'query=', 'excite','search=', # Minor international search engines 'google4counter','(p|q|as_p|as_q)=', 'att','qry=', 'bungeebonesdotcom','query=', 'go','qt=', 'askde','(ask|q)=', # break out Ask country specific engines. 'askes','(ask|q)=', 'askfr','(ask|q)=', 'askit','(ask|q)=', 'asknl','(ask|q)=', 'ask','(ask|q)=', 'atomz','sp-q=', 'euroseek','query=', 'findarticles','key=', 'go2net','general=', 'hotbot','mt=', 'infospace','qkw=', 'kvasir', 'q=', 'looksmart','key=', 'mamma','query=', 'metacrawler','general=', 'nbci','keyword=', 'northernlight','qr=', 'overture','keywords=', 'dogpile', 'q(|kw)=', 'spray','string=', 'teoma','q=', 'webcrawler','searchText=', 'wisenut','query=', 'ixquick', 'query=', 'earthlink', 'q=', 'iune','(keywords|q)=', 'blingo','q=', 'centraldatabase','query=', 'clusty','query=', 'mysearch','searchfor=', 'vivisimo','query=', # kartoo: No keywords passed in referring URL. 'kartoo','', 'icerocket','q=', 'sphere','q=', 'ledix','q=', 'shawca','q=', 'searchalot','q=', 'copernic','web\/', 'avantfind','keywords=', 'steadysearch','w=', 'clarosearch','q=', 'searchresults','q=', 'holasearch', 'q=', 'conduit', 'q=', 'flipora', 'q=', 'delta-search', 'q=', 'iminent', 'q=', 'searchmobileonline', 'q=', 'nortonsavesearch', 'q=', 'inbox', 'q(?:kw)?=', 'govome', 'q=', 'find1friend', 'q=', 'mysearchdial', 'q=', 'speedbit', 'q=', 'certifiedtoolbarsearch', 'q=', 'sweetim', 'q=', 'searchcompletion', 'q=', 'eazelsearch', 'q=', 'searchfunmoods', 'q=', 'googleByIP', 'q=', 'dalesearch', 'q=', 'sweetpacks', 'q=', 'searchgol', 'q=', 'duckduckgo', 'uddg=', 'facemoods', 'q=', 'shoppstop', 'keywords=', 'searchya', 'q=', 'picsearch', 'q=', 'webssearches', 'q=', 'inspsearch_com', 'q=', 'zapmeta', 'query=', 'localmoxie', 'keyword=', 'search-results_mobi', 'q=', 'androidsearch', 'q=', 'isearch_nation_com', 'q=', 'search_zonealarm_com', 'q=', 'www_buenosearch_com', 'q=', 'search_foxtab_com', 'q=', 'searches_qone8_com', 'q=', 'startpage_com', 'query=', 'qwant_com', 'q=', 'safehomepage_com', 'q=', 'vi-view_com', 'q=', 'wow_utop_it', 'q=', 'windowssearch_com', 'q=', 'www_wow_com', 'q=', 'globososo_com', 'q=', # Chello Portals 'chelloat','q1=', 'chellobe','q1=', 'chellocz','q1=', 'chellofr','q1=', 'chellohu','q1=', 'chellonl','q1=', 'chellono','q1=', 'chellopl','q1=', 'chellose','q1=', 'chellosk','q1=', 'chellocom','q1=', # Mirago 'miragobe','(txtsearch|qry)=', 'miragoch','(txtsearch|qry)=', 'miragode','(txtsearch|qry)=', 'miragodk','(txtsearch|qry)=', 'miragoes','(txtsearch|qry)=', 'miragofr','(txtsearch|qry)=', 'miragoit','(txtsearch|qry)=', 'miragonl','(txtsearch|qry)=', 'miragono','(txtsearch|qry)=', 'miragose','(txtsearch|qry)=', 'miragocouk','(txtsearch|qry)=', 'mirago','(txtsearch|qry)=', 'answerbus','', # Does not provide query parameters 'icq','q=', 'nusearch','nusearch_terms=', 'goodsearch','Keywords=', 'scroogle','Gw=', # Does not always provide query parameters 'questionanswering','', 'mywebsearch','searchfor=', 'comettoolbar','qry=', # Social Bookmarking Services 'delicious','all=', 'digg','s=', 'stumbleupon','', 'swik','swik\.net/', # does not work. Keywords follow domain, e.g. http://swik.net/awstats+analytics 'segnalo','', 'ineffabile','', # Minor Australian search engines 'anzwers','search=', # Minor brazilian search engines 'engine','p1=', 'miner','q=', # Minor chinese search engines 'baidu','(wd|word)=', 'iask','(w|k)=', 'accoona','qt=', '3721','(p|name)=', 'netease','q=', 'soso','q=', 'zhongsou','(word|w)=', 'sogou', 'query=', 'vnet','kw=', # Minor czech search engines 'atlas','(searchtext|q)=', 'seznam','(w|q)=', 'quick','query=', 'centrum','q=', 'jyxo','(s|q)=', 'najdi','dotaz=', 'redbox','srch=', 'avgsearch', 'q=', # Minor danish search engines 'opasia','q=', 'danielsen','q=', 'sol','q=', 'jubii','soegeord=', 'finddk','words=', 'edderkoppen','query=', 'orbis','search_field=', '1klik','query=', 'ofir','querytext=', # Minor dutch search engines 'ilse','search_for=', 'vindex','in=', # Minor english search engines 'askuk','(ask|q)=', 'bbc','q=', 'freeserve','q=', 'looksmartuk','key=', 'splut','pattern=', 'spotjockey','Search_Keyword=', 'ukindex', 'stext=', 'ukdirectory','k=', 'ukplus','search=', 'searchy', 'search_term=', 'fbdownloader','q=', 'babylon','q=', 'allgameshome', 's=', 'surfcanyon_com', 'q=', # Minor finnish search engines 'haku','w=', # Minor french search engines 'francite','name=', 'clubinternet', 'q=', 'toile', 'q=', 'biglotron','question=', 'mozbot','q=', # Minor german search engines 'aolde','q=', 'o2aolde', 'q=', 'fireball','q=', 'infoseek','qt=', 'webde','su=', 'abacho','q=', 't-online','q=', 'metaspinner','qry=', 'metacrawler_de','qry=', 'wwweasel','q=', 'netluchs','query=', 'schoenerbrausen','q=', 'gmxsuche', 'q=', 'gmxsuche_at', 'q=', 'ecosiasearch', 'q=', 'aolsearch', 'q=', 'aolsuche', 'q=', 'startxxl', 'q=', 'benefind', 'q=', 'amazonsearch', 'query=', 'wowsearch', 'q=', 'vlips_de', 'q=', 'metager', 'eingabe=', 'search_1und1_de', 'q=', 'smde', 'q=', #'sumaja', 'no query string available', #There is no query string in the referrer url 'navigationshilfe', 'q=', 'umfis', 'suchbegriff=', 'fastbot_de', 'red=[0-9]*\+', 'tixuma_de', 'sc=', 'freenet_de', 'query=', 'izito_de', 'q=', 'peoplecheck_de', 'q=', 'oneseek_de', 'q=', 'de_wiki_gov_cn', 'de\.wiki\.gov\.cn\/s_', # Minor Hungarian search engines 'heureka','heureka=', 'origo','(q|search)=', 'goliat','KERESES=', 'wahoo','q=', 'internetto','searchstr=', 'keresolap_hu','q=', 'startlap_hu', 'q=', 'tango_hu','q=', 'polymeta_hu','', # Minor Indian search engines 'sify','keyword=', # Minor Italian search engines 'virgilio','qs=', 'arianna','query=', 'supereva','q=', 'kataweb','q=', 'aliceitmaster','qs=', 'aliceit','qs=', 'gotuneed','', # Not yet known 'godado','Keywords=', 'jumpy\.it','searchWord=', 'shinyseek\.it','KEY=', 'teecnoit','q=', # Minor Israeli search engines 'genieo','q=', # Minor Japanese search engines 'askjp','(ask|q)=', 'sagool','q=', 'rakuten', 'qt=', # Minor Norwegian search engines 'start','q=', 'eniro','q=', # Minor Polish search engines 'wp','szukaj=', 'onetpl','qt=', 'dodajpl','keyword=', 'gazetapl','slowo=', 'gerypl','q=', 'hogapl','qt=', 'netsprintpl','q=', 'interiapl','q=', 'katalogonetpl','qt=', 'o2pl','qt=', 'polskapl','qt=', 'szukaczpl','q=', 'wowpl','q=', # Minor russian search engines 'yandex', 'text=', 'rambler','words=', 'aport', 'r=', 'metabot', 'st=', 'mailru', 'q=', # Minor swedish search engines 'passagen','q=', 'enirose', 'hitta:', #Not sure if this works, as the keywords are part of the URL, and therefore the URL does not contain a question mark. # Minor swiss search engines 'searchch', 'q=', 'bluewin', 'qry=', 'zapmeta_ch', 'query=', 'etools_ch', 'query=', # Minor Croatian, Serbian, Macedonian, Bosnian and Herzegovinian search engines 'pogodak', 'q=' ); # SearchEnginesKnownUrlNotFound # Known rules to extract not found keywords from a referrer search engine URL #------------------------------------------------------------------------------ %SearchEnginesKnownUrlNotFound=( # Most common search engines 'msn','origq=' ); # If no rules are known, WordsToExtractSearchUrl will be used to search keyword parameter # If no rules are known and search in WordsToExtractSearchUrl failed, this will be used to clean URL of not keyword parameters. #------------------------------------------------------------------------------ @WordsToExtractSearchUrl= ('tn=','ie=','ask=','claus=','general=','key=','kw=','keyword=','keywords=','MT=','p=','q=','qr=','qt=','query=','s=','search=','searchText=','string=','su=','txtsearch=','w='); @WordsToCleanSearchUrl= ('act=','annuaire=','btng=','cat=','categoria=','cfg=','cof=','cou=','count=','cp=','dd=','domain=','dt=','dw=','enc=','exec=','geo=','hc=','height=','hits=','hl=','hq=','hs=','id=','kl=','lang=','loc=','lr=','matchmode=','medor=','message=','meta=','mode=','order=','page=','par=','pays=','pg=','pos=','prg=','qc=','refer=','sa=','safe=','sc=','sort=','src=','start=','style=','stype=','sum=','tag=','temp=','theme=','type=','url=','user=','width=','what=','\\.x=','\\.y=','y=','look='); # SearchEnginesKnownUTFCoding # Known parameter that proves a search engine has coded its parameters in UTF-8 #------------------------------------------------------------------------------ %SearchEnginesKnownUTFCoding=( # Most common search engines 'google','ie=utf-8', 'alltheweb','cs=utf-8' ); # SearchEnginesHashLib # List of search engines names # 'search_engine_id', 'search_engine_name', #------------------------------------------------------------------------------ %SearchEnginesHashLib=( # Major international search engines 'alexa','Alexa', 'alltheweb','AllTheWeb', 'altavista','AltaVista', 'a9', 'A9', 'dmoz','DMOZ', 'google_products','Google (Products)', 'google_base','Google (Base)', 'google_froogle','Froogle (Google)', 'google_groups','Google (Groups)', 'google_image','Google (Images)', 'google_cache','Google (cache)', 'google','Google', 'lycos','Lycos', 'msn','Microsoft MSN Search', 'live','Microsoft Windows Live', 'bing','Microsoft Bing', 'netscape','Netscape', 'aol','AOL', 'terra','Terra', 'tiscali','Tiscali', 'voila','Voila', 'search.com','Search.com', 'yahoo_mindset','Yahoo! Mindset', 'yahoo','Yahoo!', 'sympatico','Sympatico', 'excite','Excite', # Minor international search engines 'google4counter','4-counter (Google)', 'att','AT&T search (powered by Google)', 'bungeebonesdotcom','BungeeBones', 'go','Go.com', 'askde','Ask Deutschland', 'askes','Ask España', # break out Ask country specific engines. 'askfr','Ask France', 'askit','Ask Italia', 'asknl','Ask Nederland', 'ask','Ask', 'atomz','Atomz', 'dejanews','DejaNews', 'euroseek','Euroseek', 'findarticles','Find Articles', 'go2net','Go2Net (Metamoteur)', 'hotbot','Hotbot', 'infospace','InfoSpace', 'kvasir','Kvasir', 'looksmart','Looksmart', 'mamma','Mamma', 'metacrawler','MetaCrawler (Metamoteur)', 'nbci','NBCI', 'northernlight','NorthernLight', 'overture','Overture', # Replace 'goto\.com','Goto.com', 'dogpile','Dogpile', 'spray','Spray', 'teoma','Teoma', # Replace 'directhit\.com','DirectHit', 'webcrawler','WebCrawler', 'wisenut','WISENut', 'ixquick','ix quick', 'earthlink', 'Earth Link', 'iune','i-une', 'blingo','Blingo', 'centraldatabase','GPU p2p search', 'clusty','Clusty', 'mysearch','My Search', 'vivisimo','Vivisimo', 'kartoo','Kartoo', 'icerocket','Icerocket (Blog)', 'sphere','Sphere (Blog)', 'ledix','Ledix', 'shawca','Shaw.ca', 'searchalot','Searchalot', 'copernic','Copernic', 'avantfind','Avantfind', 'steadysearch','Avantfind', 'clarosearch','Claro Search', 'searchresults','Search-results', 'holasearch', 'Hola Search', 'conduit', 'Conduit Search', 'flipora', 'Flipora', 'delta-search', 'Delta Search', 'iminent', 'Iminent', 'searchmobileonline', 'Search Mobile Online (StartApp)', 'nortonsavesearch', 'Norton Safe Search', 'inbox', 'Inbox Search', 'govome', 'Govome', 'find1friend', 'Find1Friend', 'mysearchdial', 'My Search Dial', 'speedbit', 'Speedbit', 'certifiedtoolbarsearch', 'Certified-Toolbar Search', 'sweetim', 'SweetIM Search', 'searchcompletion', 'SearchCompletion Search', 'eazelsearch', 'Eazel Search', 'searchfunmoods', 'Funmoods', 'googleByIP', 'Google (Access by IP-Address)', 'dalesearch', 'Dale Search', 'sweetpacks', 'Sweetpacks', 'searchgol', 'Search-Gol', 'duckduckgo', 'DuckDuckGo (Does not provide search keyphrases, using found page instead)', 'facemoods', 'Facemoods Search', 'shoppstop', 'ShoppStop', 'searchya', 'Searchya', 'picsearch', 'picsearch', 'webssearches', 'Web Searches', 'inspsearch_com', 'airzip.inspsearch.com (related to http://www.webssearches.com/?)', 'zapmeta', 'ZapMeta', 'localmoxie', 'Local Moxie', 'search-results_mobi', 'search-results.mobi', 'androidsearch', 'androidsearch.com', 'isearch_nation_com', 'Nation Search', 'search_zonealarm_com', 'Zone Alarm Search', 'www_buenosearch_com', 'BuenoSearch', 'search_foxtab_com', 'Foxtab Search', 'searches_qone8_com', 'Omiga-Plus', 'startpage_com', 'Startpage', 'qwant_com', 'qwant.com', 'safehomepage_com', 'safehomepage.com', 'vi-view_com', 'vi-view.com', 'wow_utop_it', 'wow.utop.it', 'windowssearch_com', 'windowssearch.com', 'www_wow_com', 'WOW.com', 'globososo_com', 'Globososo', # Chello Portals 'chelloat','Chello Austria', 'chellobe','Chello Belgium', 'chellocz','Chello Czech Republic', 'chellofr','Chello France', 'chellohu','Chello Hungary', 'chellonl','Chello Netherlands', 'chellono','Chello Norway', 'chellopl','Chello Poland', 'chellose','Chello Sweden', 'chellosk','Chello Slovakia', 'chellocom','Chello (Country not recognized)', # Mirago 'miragobe','Mirago Belgium', 'miragoch','Mirago Switzerland', 'miragode','Mirago Germany', 'miragodk','Mirago Denmark', 'miragoes','Mirago Spain', 'miragofr','Mirago France', 'miragoit','Mirago Italy', 'miragonl','Mirago Netherlands', 'miragono','Mirago Norway', 'miragose','Mirago Sweden', 'miragocouk','Mirago UK', 'mirago','Mirago (country unknown)', 'answerbus','Answerbus', 'icq','icq', 'nusearch','Nusearch', 'goodsearch','GoodSearch', 'scroogle','Scroogle', 'questionanswering','Questionanswering', 'mywebsearch','MyWebSearch', 'comettoolbar','Comet toolbar search', # Social Bookmarking Services 'delicious','del.icio.us (Social Bookmark)', 'digg','Digg (Social Bookmark)', 'stumbleupon','Stumbleupon (Social Bookmark)', 'swik','Swik (Social Bookmark)', 'segnalo','Segnalo (Social Bookmark)', 'ineffabile','Ineffabile.it (Social Bookmark)', # Minor Australian search engines 'anzwers','anzwers.com.au', # Minor brazilian search engines 'engine','Cade', 'miner','Meta Miner', # Minor chinese search engines 'baidu','Baidu', 'iask','Iask', 'accoona','Accoona', '3721','3721', 'netease', 'NetEase', 'soso','SoSo', 'zhongsou','ZhongSou', 'sogou', 'SoGou', 'vnet','VNet', # Minor czech search engines 'atlas','Atlas.cz', 'seznam','Seznam', 'quick','Quick.cz', 'centrum','Centrum.cz', 'jyxo','Jyxo.cz', 'najdi','Najdi.to', 'redbox','RedBox.cz', 'avgsearch', 'AVG Secure Search', # Minor danish search-engines 'opasia','Opasia', 'danielsen','Thor (danielsen.com)', 'sol','SOL', 'jubii','Jubii', 'finddk','Find', 'edderkoppen','Edderkoppen', 'netstjernen','Netstjernen', 'orbis','Orbis', 'tyfon','Tyfon', '1klik','1Klik', 'ofir','Ofir', # Minor dutch search engines 'ilse','Ilse','vindex','Vindex\.nl', # Minor english search engines 'askuk','Ask UK', 'bbc','BBC', 'freeserve','Freeserve', 'looksmartuk','Looksmart UK', 'splut','Splut', 'spotjockey','Spotjockey', 'ukdirectory','UK Directory', 'ukindex','UKIndex', 'ukplus','UK Plus', 'searchy','searchy.co.uk', 'fbdownloader','FBDownloader', 'babylon','Babylon', 'allgameshome', 'AllGamesHome', 'surfcanyon_com', 'SurfCanyon', # Minor finnish search engines 'haku','Ihmemaa', # Minor french search engines 'aolfr','AOL (fr)', 'ctrouve','C\'est trouve', 'francite','Francite', 'lbb', 'LBB', 'libertysurf', 'Libertysurf', 'free', 'Free.fr', 'clubinternet', 'Club-internet', 'toile', 'Toile du Quebec', 'biglotron','Biglotron', 'mozbot','Mozbot', # Minor German search engines 'aolde','AOL (de)', 'o2aolde', 'o2 Suche', 'fireball','Fireball', 'infoseek','Infoseek', 'webde','Web.de', 'abacho','Abacho', 't-online','T-Online', 'allesklar','allesklar.de', 'meinestadt','meinestadt.de', 'metaspinner','metaspinner', 'metacrawler_de','metacrawler.de', 'wwweasel','WWWeasel', 'netluchs','Netluchs', 'schoenerbrausen','Schoenerbrausen/', 'gmxsuche', 'GMX Suche', 'gmxsuche_at', 'GMX Suche Oesterreich', 'ecosiasearch', 'Ecosia Search', 'aolsearch', 'AOL Search', 'aolsuche', 'AOL Suche', 'startxxl', 'StartXXL', 'benefind', 'benefind', 'amazonsearch', 'Amazon Web Search', 'wowsearch', 'Wow Search', 'vlips_de', 'vlips.de', 'metager', 'MetaGer', 'search_1und1_de', '1&1 Suche', 'smde', 'SM.de - Die SuchMaschine', 'sumaja', 'Sumaja', 'navigationshilfe', 'T-Online Navigationshilfe', 'umfis', 'UMFIS-Online Das Umweltfirmen-Informationssystem der IHKs in Deutschland', 'fastbot_de', 'Fastbot.de (Does not provide search keyphrases, using found page instead)', 'tixuma_de', 'Tixuma Deutschland', 'freenet_de', 'suche.freenet.de', 'izito_de', 'iZito Deutschland', 'peoplecheck_de', 'PeopleCheck.de', 'oneseek_de', 'Metasuchmaschine OneSeek.de', 'de_wiki_gov_cn', 'Wiki Sucher', # Minor hungarian search engines 'heureka','Heureka', 'origo','Origo-Vizsla', 'lapkereso','Startlapkereso', 'goliat','Goliat', 'indexhu','Index', 'wahoo','Wahoo', 'webmania','webmania.hu', 'internetto','Internetto Kereso', 'tango_hu','Tango', 'keresolap_hu','Tango keresolap', 'startlap_hu','Startlab Kereso', 'polymeta_hu','Polymeta', # Minor Indian search engines 'sify','Sify', # Minor Italian search engines 'virgilio','Virgilio', 'arianna','Arianna', 'supereva','Supereva', 'kataweb','Kataweb', 'aliceitmaster','search.alice.it.master', 'aliceit','alice.it', 'gotuneed','got u need', 'godado','Godado.it', 'jumpy\.it','Jumpy.it', 'shinyseek\.it','Shinyseek.it', 'teecnoit','Teecno', # Minor Israeli search engines 'genieo','Genieo', # Minor Japanese search engines 'askjp','Ask Japan', 'sagool','Sagool', 'rakuten', 'websearch.rakuten.co.jp', # Minor Norwegian search engines 'start','start.no', 'eniro','Eniro', # Minor polish search engines 'wp','Wirtualna Polska', 'onetpl','Onet.pl', 'dodajpl','Dodaj.pl', 'gazetapl','Gazeta.pl', 'gerypl','Gery.pl', 'hogapl','Hoga.pl', 'netsprintpl','NetSprint.pl', 'interiapl','Interia.pl', 'katalogonetpl','Katalog.Onet.pl', 'o2pl','o2.pl', 'polskapl','Polska', 'szukaczpl','Szukacz', 'wowpl','Wow.pl', # Minor russian search engines 'yandex', 'Yandex', 'aport', 'Aport', 'rambler', 'Rambler', 'turtle', 'Turtle', 'metabot', 'MetaBot', 'mailru','Mail.Ru', # Minor Swedish search engines 'passagen','Evreka', 'enirose','Eniro Sverige', # Minor Slovak search engines 'zoznam','Zoznam', # Minor Portuguese search engines 'sapo','Sapo', # Minor Swiss search engines 'searchch', 'search.ch', 'bluewin', 'search.bluewin.ch', 'zapmeta_ch', 'ZapMeta.ch', 'etools_ch', 'eTools.ch', # Minor Croatian, Serbian, Macedonian, Bosnian and Herzegovinian search engines 'pogodak','Pogodak.com', # Generic search engines 'search','Unknown search engines' ); # Sanity check. # Enable this code and run perl search_engines.pm to check file entries are ok #----------------------------------------------------------------------------- #foreach my $key (@SearchEnginesSearchIDOrder_list1) { # if (! $SearchEnginesHashID{$key}) { error("Entry '$key' has been found in SearchEnginesSearchIDOrder_list1 with no value in SearchEnginesHashID"); # foreach my $key2 (@SearchEnginesSearchIDOrder_list2) { if ($key2 eq $key) { error("$key is in 1 and 2\n"); } } # foreach my $key2 (@SearchEnginesSearchIDOrder_listgen) { if ($key2 eq $key) { error("$key is in 1 and gen\n"); } } #} } #foreach my $key (@SearchEnginesSearchIDOrder_list2) { # if (! $SearchEnginesHashID{$key}) { error("Entry '$key' has been found in SearchEnginesSearchIDOrder_list1 with no value in SearchEnginesHashID"); # foreach my $key2 (@SearchEnginesSearchIDOrder_list1) { if ($key2 eq $key) { error("$key is in 2 and 1\n"); } } # foreach my $key2 (@SearchEnginesSearchIDOrder_listgen) { if ($key2 eq $key) { error("$key is in 2 and gen\n"); } } #} } #foreach my $key (@SearchEnginesSearchIDOrder_listgen) { if (! $SearchEnginesHashID{$key}) { error("Entry '$key' has been found in SearchEnginesSearchIDOrder_listgen with no value in SearchEnginesHashID"); } } #foreach my $key (keys %NotSearchEnginesKeys) { if (! $SearchEnginesHashID{$key}) { error("Entry '$key' has been found in NotSearchEnginesKeys with no value in SearchEnginesHashID"); } } #foreach my $key (keys %SearchEnginesKnownUrl) { # my $found=0; # foreach my $key2 (values %SearchEnginesHashID) { # if ($key eq $key2) { $found=1; last; } # } # if (! $found) { die "Entry '$key' has been found in SearchEnginesKnownUrl with no value in SearchEnginesHashID"; } #} #foreach my $key (keys %SearchEnginesHashLib) { # my $found=0; # foreach my $key2 (values %SearchEnginesHashID) { # if ($key eq $key2) { $found=1; last; } # } # if (! $found) { die "Entry '$key' has been found in SearchEnginesHashLib with no value in SearchEnginesHashID"; } #} #print @SearchEnginesSearchIDOrder_list1." ".@SearchEnginesSearchIDOrder_list2." ".@SearchEnginesSearchIDOrder_listgen; 1;awstats-7.4/wwwroot/cgi-bin/lib/referer_spam.pm0000640000175000017500000000214212410217071017472 0ustar sksk# AWSTATS REFERER SPAMMERS ADATABASE #------------------------------------------------------- # If you want to extend AWStats detection capabilities, # you must add an entry in RefererSpamKeys #------------------------------------------------------- #package AWSREFSPAMMERS; # RefererSpamKeys # This list is used to know which keywords to search for in referer URLs # to find if hits comes from a referer spammers. If referer URLs has a # cost higher or equal to 4, it's a referer spammer. # key, cost #------------------------------------------------------- %RefererSpamKeys = ( 'adult'=>1, 'anal'=>2, 'dick'=>1, 'erotic'=>2, # erotic, erotica 'gay'=>2, 'lesbian'=>2, 'free'=>1, 'porn'=>2, 'sex'=>2, 'full-list.net'=>4, 'voodoomachine.com'=>4, 'mastodonte.com'=>4, 'surfnomore.com'=>4, 'raverpussies.com'=>4, 'quiveringfuckholes.com'=>4, 'burningbush.netfirms.com'=>4, 'lesbo-tennie-girls.lesbian-hardcore-porn-teen-pics.com'=>4, 'free-people-search-engines.com'=>4, 'iaea.org'=>4, '1stchoicecolo.com'=>4, 'globoads.com'=>4, 'morganindustriesinc.com'=>4, 'chicagodrugclub.com'=>4, 'massivecocks.com'=>4, ); 1; awstats-7.4/wwwroot/cgi-bin/lib/status_http.pm0000640000175000017500000000377212410217071017414 0ustar sksk# AWSTATS HTTP STATUS DATABASE #------------------------------------------------------- # If you want to add a HTTP status code, you must add # an entry in httpcodelib. #------------------------------------------------------- #package AWSHTTPCODES; # httpcodelib # This list is used to found description of a HTTP status code #----------------------------------------------------------------- %httpcodelib = ( #[Miscellaneous successes] '2xx'=>'[Miscellaneous successes]', '200'=>'OK', # HTTP request OK '201'=>'Created', '202'=>'Request recorded, will be executed later', '203'=>'Non-authoritative information', '204'=>'Request executed', '205'=>'Reset document', '206'=>'Partial Content', #[Miscellaneous redirections] '3xx'=>'[Miscellaneous redirections]', '300'=>'Multiple documents available', '301'=>'Moved permanently (redirect)', '302'=>'Moved temporarily (redirect)', '303'=>'See other document', '304'=>'Not Modified since last retrieval', # HTTP request OK '305'=>'Use proxy', '306'=>'Switch proxy', '307'=>'Moved temporarily', #[Miscellaneous client/user errors] '4xx'=>'[Miscellaneous client/user errors]', '400'=>'Bad Request', '401'=>'Unauthorized', '402'=>'Payment required', '403'=>'Forbidden', '404'=>'Document Not Found (hits on favicon excluded)', '405'=>'Method not allowed', '406'=>'Document not acceptable to client', '407'=>'Proxy authentication required', '408'=>'Request Timeout', '409'=>'Request conflicts with state of resource', '410'=>'Document gone permanently', '411'=>'Length required', '412'=>'Precondition failed', '413'=>'Request too long', '414'=>'Requested filename too long', '415'=>'Unsupported media type', '416'=>'Requested range not valid', '417'=>'Failed', #[Miscellaneous server errors] '5xx'=>'[Miscellaneous server errors]', '500'=>'Internal server Error', '501'=>'Not implemented', '502'=>'Received bad response from real server', '503'=>'Server busy', '504'=>'Gateway timeout', '505'=>'HTTP version not supported', '506'=>'Redirection failed', #[Unknown] 'xxx'=>'[Unknown]' ); 1; awstats-7.4/wwwroot/cgi-bin/lib/worms.pm0000640000175000017500000000430712410217071016174 0ustar sksk# AWSTATS WORMS ADATABASE #----------------------------------------------------------------------------- # If you want to add worms to extend AWStats database detection capabilities, # you must add an entry in WormsSearchIDOrder, WormsHashID and WormsHashLib. #----------------------------------------------------------------------------- #package AWSWORMS; # WormsSearchIDOrder # This list is used to know in which order to search Worm IDs. # This array is array of Worms matching criteria found in URL submitted # to web server. This is a not case sensitive ID. #----------------------------------------------------------------------------- @WormsSearchIDOrder = ( '\/default\.ida', '\/null\.idq', 'exe\?\/c\+dir', 'root\.exe', 'admin\.dll', '\/nsiislog\.dll', '\/sumthin', '\/winnt\/system32\/cmd\.exe', '\/_vti_inf\.html', '\/_vti_bin\/shtml\.exe\/_vti_rpc' ); # WormsHashID # Each Worms search ID is associated to a string that is unique name of worm. #----------------------------------------------------------------------------- %WormsHashID = ( '\/default\.ida','code_red', '\/null\.idq','code_red', 'exe\?\/c\+dir','nimda', 'root\.exe','nimda', 'admin\.dll','nimda', '\/nsiislog\.dll','mpex', '\/sumthin','sumthin', '\/winnt\/system32\/cmd\.exe','nimda', '\/_vti_inf\.html','unknown', '\/_vti_bin\/shtml\.exe\/_vti_rpc','unknown' #'/MSOffice/cltreq.asp' # Not a worm, a check by IE to see if discussion bar is turned on #'/_vti_bin/owssrv.dll' # Not a worm, a check by IE to see if discussion bar is turned on ); # WormsHashLib # Worms name list ('worm unique id in lower case','worm clear text') # Each unique ID string is associated to a label #----------------------------------------------------------------------------- %WormsHashLib = ( 'code_red','Code Red family worm', 'mpex','IIS Exploit worm', 'nimda','Nimda family worm', 'sumthin','Sumthin worm', 'unknown','Unknown worm' ); # WormsHashTarget # Worms target list ('worm unique id in lower case','worm target clear text') # Each unique ID string is associated to a target #----------------------------------------------------------------------------- %WormsHashTarget = ( 'code_red','IIS', 'mpex','IIS', 'nimda','IIS', 'sumthin','?', 'unknown','MS products', ); 1; awstats-7.4/wwwroot/cgi-bin/lib/robots.pm0000640000175000017500000032520612510473401016343 0ustar sksk# AWSTATS ROBOTS DATABASE #------------------------------------------------------- # If you want to add robots to extend AWStats database detection capabilities, # you must add an entry in RobotsSearchIDOrder_listx and RobotsHashIDLib. # The entry in RobotsSearchIDOrder_listx is a Perl regular expression # (see http://perldoc.perl.org/perlreref.html). AWSTats applies these # expressions to the user agent string in the order given by the lists. The # first match specifies the robot. # # Note: This regular expression must not contain any whitespace. # Otherwise AWStats will produce lines in the database that # will be misinterpreted and as a consequence the corresponding data in the # generated HTML reports will be wrong. If you want to match whitespace in # the user agent string, use other constructs like '\s', '[:blank:]', # '\p{IsSpace}', '\x20' etc. # # The corresponding entry in RobotsHashIDLib contains the regular expression # as key, followed by a string containing HTML-text. AWStats inserts this # text into reports to describe the bot. If possible the text should contain # a link to the bot home page. This makes it easier for sysadmins to find # the information necessary e.g. to adapt the robots.txt file. # # An entry in the RobotsAffiliateLib is not necessary. An entry in this list # contains as first part the regular expression specifying the bot. The # second part is a string that gives the Company or product managing the bot. # This information is not used yet. # # There are several sorts of bots that AWStats is not able to detect and # therefore a considerable amount of bot generated traffic counts # as user traffic: # # a) A crawler that identifies itself in the referrer string, but not in # the user agent string. An example is the crawler from semalt.semalt.com. # # b) Crawlers that correctly access robots.txt but identify themselves in # in the user agent string only once or just a few times. Most of the # time a user agent string ist used that does not contain hints that # a bot is involved. An example is the iCjobs spider. # # # #------------------------------------------------------- # 2005-08-19 Sean Carlos http://www.antezeta.com/awstats.html # added dipsie (not tested with real data). # added DomainsDB.net http://domainsdb.net/ # added ia_archiver-web.archive.org (was inadvertently grouped with Alexa traffic) # added Nutch (used by looksmart (furl?)) # added rssImagesBot # added Sqworm # added t\-h\-u\-n\-d\-e\-r\-s\-t\-o\-n\-e # added w3c css-validator # added documentation link to bot home pages for above and selected major bots. # In the case of international bots, choose .com page. # Included tool tip (html "title"). # To do: parameterize to match both AWStats language and tooltips settings. # To do: add html links for all bots based on current documentation in source # files referenced below. # changed '\wbot[\/\-]', to '\wbot[\/\-]' (removed comma) # made minor grammar corrections to notes below # 2005-08-24 added YahooSeeker-Testing # added w3c-checklink # updated url for ask.com # 2005-08-24 added Girafabot http://www.girafa.com/ # 2005-08-30 added PluckFeedCrawler http://www.pluck.com/ # added Gaisbot/3.0 (robot05@gais.cs.ccu.edu.tw; ) # dded geniebot (wgao@genieknows.com) # added BecomeBot link http://www.become.com/site_owners.html # added topicblogs http://www.topicblogs.com/ # added Powermarks; seen used by referrer spam # added YahooSeeker # added NG/2. http://www.exabot.com/ # 2005-09-15 added link for Walhello appie # added bender focused_crawler # updated YahooSeeker description (blog crawler) # 2005-09-16 added link for http://linkchecker.sourceforge.net # added ConveraCrawler/0.9d ( http://www.authoritativeweb.com/crawl) # added Blogslive info@blogslive.com intelliseek.com # added BlogPulse (ISSpider-3.0) intelliseek.com # 2005-09-26 added Feedfetcher-Google (http://www.google.com/feedfetcher.html) # added EverbeeCrawler # added Yahoo-Blogs http://help.yahoo.com/help/us/ysearch/crawling/crawling-02.html # added link for Bloglines http://www.bloglines.com # 2005-10-19 fixed Feedfetcher-Google (http://www.google.com/feedfetcher.html) # added Blogshares Spiders (Synchronized V1.5.1) # added yacy # 2005-11-21 added Argus www.simpy.com # added BlogsSay :: RSS Search Crawler (http://www.blogssay.com/) # added MJ12bot http://majestic12.co.uk/bot.php # added OpenTaggerBot (http://www.opentagger.com/opentaggerbot.htm) # added OutfoxBot/0.3 (For internet experiments; outfox.agent@gmail.com) # added RufusBot Rufus Web Miner http://64.124.122.252.webaroo.com/feedback.html # added Seekbot (http://www.seekbot.net/bot.html) # added Yahoo-MMCrawler/3.x (mms-mmcrawler-support@yahoo-inc.com) # added link for BaiDuSpider # added link for Blogshares Spider # added link for StackRambler http://www.rambler.ru/doc/faq.shtml # added link for WISENutbot # added link for ZyBorg/1.0 (wn-14.zyborg@looksmart.net; http://www.WISEnutbot.com. Moved location to above wisenut to avoid classification as wisenut # 2005-12-15 # added FAST Enteprise Crawler/6 (www dot fastsearch dot com). Note spelling Enteprise not Enterprise. # added findlinks http://wortschatz.uni-leipzig.de/findlinks/ # added IBM Almaden Research Center WebFountainâ„¢ http://www.almaden.ibm.com/cs/crawler [hc3] # added INFOMINE/8.0 VLCrawler (http://infomine.ucr.edu/useragents) # added lmspider (lmspider@scansoft.com) http://www.nuance.com/ # added noxtrumbot http://www.noxtrum.com/ # added SandCrawler (Microsoft) # added SBIder http://www.sitesell.com/sbider.html # added SeznamBot http://fulltext.seznam.cz/ # added sohu-search http://corp.sohu.com/ (looked for //robots.txt not /robots.txt) # added the ruffle SemanticWeb crawler v0.5 - http://www.unreach.net # added WebVulnCrawl/1.0 libwww-perl/5.803 (looked for //robots.txt not /robots.txt) # added Yahoo! Japan keyoshid http://www.yahoo.co.jp/ # added Y!J http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html # added link for GigaBot # added link for MagpieRSS # added link for MSIECrawler # 2005-12-21 # added aipbot http://www.aipbot.com aipbot@aipbot.com [matthys70 users.sourceforge.net] # added Everest-Vulcan Inc./0.1 (R&D project; http://everest.vulcan.com/crawlerhelp) # added Fast-Search-Engine http://www.fast-search-engine.com/ [matthys70 users.sourceforge.net] # added g2Crawler (nobody@airmail.net) http://crawler.instantnetworks.net/ # added Jakarta commons-httpclient http://jakarta.apache.org/commons/httpclient/ (hit robots.txt). May be used as robot or browser - a site may want to remove this entry. # added OmniExplorer_Bot http://www.omni-explorer.com/ [matthys70 users.sourceforge.net] # added USTC-Semantic-Group ai.ustc.edu.cn/mas/en/research/index.php ? # 2005-12-22 # added EARTHCOM.info www.earthcom.info # added HTTrack off-line browser 'httrack','HTTrack', http://www.httrack.com/ [Moizes Gabor] # added KummHttp http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=\bid_g_l_301105_2\b [Moizes Gabor] # 2006-01-01 # added Dulance http://www.dulance.com/bot.jsp # added MojeekBot http://www.mojeek.com/bot.html # added nicebot http://www.egghelp.org/setup.htm ? # added Snappy http://www.urltrends.com/faq.php # added sohu agent # added VORTEX http://marty.anstey.ca/robots/vortex/ [matthys70 users.sourceforge.net] # added zspider http://feedback.redkolibri.com/ # 2006-01-13 # added boitho.com-dc http://www.boitho.com/dcbot.html # added IRLbot http://irl.cs.tamu.edu/crawler # added virus_detector virus_harvester@securecomputing.com # added Wavefire http://www.wavefire.com; info@wavefire.com # added WebFilter Robot # 2006-01-24 # added Shim-Crawler http://www.logos.ic.i.u-tokyo.ac.jp/crawler/; crawl@logos.ic.i.u-tokyo.ac.jp # added Exabot exabot.com # added LetsCrawl.com http://letscrawl.com # added ichiro http://help.goo.ne.jp/door/crawlerE.html # 2006-01-27 additional 22 robots from a list provided by Moizes Gabor # added ALeadSoftbot http://www.aleadsoft.com/bot.htm # added CipinetBot http://www.cipinet.com/bot.html # added Cuasarbot http://www.cuasar.com/ # added Dumbot http://www.dumbfind.com/ # added Extreme_Picture_Finder http://www.exisoftware.com/ # added Fooky.com/ScorpionBot/ScoutOut http://www.fooky.com/scorpionbots # added IlTrovatore-Setaccio http://www.iltrovatore.it/aiuto/motore_di_ricerca.html bot@iltrovatore.it # added InsurancoBot http://www.fastspywareremoval.com/ # added InternetArchive http://lucene.apache.org/nutch/bot.html nutch-agent@lucene.apache.org # added KazoomBot http://www.kazoom.ca/bot.html kazoombot@kazoom.ca # added Kurzor http://www.easymail.hu/ cursor@easymail.hu # added NutchCVS http://lucene.apache.org/nutch/bot.html nutch-agent@lucene.apache.org # added NutchOSU-VLIB http://lucene.apache.org/nutch/bot.html nutch-agent@lucene.apache.org # added Orbiter http://www.dailyorbit.com/bot.htm # added PHP_version_tracker http://www.nexen.net/phpversion/bot.php # added SuperBot http://www.sparkleware.com/superbot/ # added SynooBot http://www.synoo.de/bot.html webmaster@synoo.com # added TestBot http://www.agbrain.com/ # added TutorGigBot http://www.tutorgig.info/ # added WebIndexer mailto://webindexerv1@yahoo.com # added WebMiner http://64.124.122.252/feedback.html # 2006-02-01 # added heritrix https://sourceforge.net/forum/message.php?msg_id=3550202 # added Zeus Webster Pro https://sourceforge.net/forum/message.php?msg_id=3141164 # additional robots from a list provided by Moizes Gabor [ mojzi -a-t- free mail hu ] # added Candlelight_Favorites_Inspector # added DomainChecker # added EasyDL # added FavOrg # added Favorites_Sweeper # added Html_Link_Validator # added Internet_Ninja # added JRTwine_Software_Check_Favorites_Utility # fixed Microsoft_URL_Control # added miniRank # added Missigua_Locator # added NPBot # added Ocelli # added Onet.pl_SA # added proodleBot # added SearchGuild_DMOZ_Experiment # added Susie # added Website_Monitoring_Bot # added Xenu_Link_Sleuth # 2006-05-15 # added ASPseek http://www.aspseek.org/ # added AdamM Bot http://home.blic.net/adamm/ # added archive.org_bot http://crawls.archive.org/collections/bncf/crawl.html # added arianna.libero.it (Italian Portal/search engine) # added Biz360 spider http://www.biz360.com # added BlogBridge Service http://www.blogbridge.com/ # added BlogSearch http://www.icerocket.com/ # added libcrawl # added edgeio-relanshanbottriever http://www.edgeio.com # added FeedFlow http://feedflow.com/about # added Biblioteca Nazionale Centrale di Firenze (Italian National Archive) http://www.bncf.firenze.sbn.it/raccolta.txt # added Java catchall - used by many spam bots # added lanshanbot http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=%5Cbid_g_l_140406_1%5Cb # added msnbot-media http://search.msn.com/msnbot.htm # added MT::Telegraph::Agent # added Netluchs http://www.netluchs.de/ (German SE bot) # added oBot http://www.webmasterworld.com/forum11/1616.htm # added Onfolio http://www.onfolio.com/ (IE Toolbar plugin) - hit rss feeds. # added ping.blo.gs http://blo.gs/ping.php blog bot # added Sphere Scout http://www.sphere.com/ # added sproose crawler http://www.sproose.com/bot.html # added SyndicAPI http://syndicapi.com/bot.html # added Yahoo! Mindset http://mindset.research.yahoo.com/ # added msrabot # added Vagabondo & Vagabondo-WAP http://www.wise-guys.nl/Contact/index.php?botselected=webagents&lang=uk # fixed Missigua Locator detection (Missigua_Locator -> Missigua Locator) # changed echo to echo! to avoid conflict with the bonecho (Firefox 2.0) browser. # This requires you to reprocess historic logs if you want EchO! to be recognized for older reports. # 2006-05-17 # added Alpha Search Agent # 62.152.125.60 Eurologon Srl # added Krugle http://www.krugle.com/crawler/info.html the search engine for developers # added Octora Beta Bot http://www.octora.com/ # Blog and Rss Search Engine # added UbiCrawler http://law.dsi.unimi.it/ubicrawler/ # added Yahoo! Slurp China http://misc.yahoo.com.cn/help.html # You must reprocess old logs for the Yahoo! Slurp China bot to be detected in old reports # 2006-05-20 # added 1-More Scanner http://www.myzips.com/software/1-More-Scanner.phtml # added Accoona-AI-Agent http://www.accoona.com/ # added ActiveBookmark http://www.libmaster.com/active_bookmark.php # added BIGLOTRON http://www.biglotron.com/robot.html # added Bookmark-Manager http://bkm.sourceforge.net/ # added cbn00glebot # added Cerberian Drtrs http://www.pgts.com.au/cgi-bin/psql?robot_info=25240 # added CFNetwork http://www.cocoadev.com/index.pl?CFNetwork # added CheckWeb link validator http://p.duby.free.fr/chkweb.htm # added Computer and Automation Research Institute Crawler http://www.ilab.sztaki.hu/~stamas/publications/p184-benczur.html # added ConveraCrawler http://www.authoritativeweb.com/crawl/ # added ConveraMultiMediaCrawler http://www.authoritativeweb.com/crawl/ # added CSE HTML Validator Lite Online http://online.htmlvalidator.com/php/onlinevallite.php # added Cursor http://adcenter.hu/docs/en/bot.html # added Custo http://www.netwu.com/custo/ # added DataFountains/DMOZ Downloader http://infomine.ucr.edu/ # added Deepindex http://www.deepindex.net/faq.php # added DNSGroup http://www.dnsgroup.com/ # added DoCoMo http://www.nttdocomo.co.jp/ # added dumm.de-Bot http://www.dumm.de/ # added ETS v http://www.freetranslation.com/help/ # added eventax http://www.eventax.de/ # added FAST Enterprise Crawler * crawleradmin.t-info@telekom.de http://www.telekom.de/ # added FAST Enterprise Crawler http://www.fast.no/ # added FAST Enterprise Crawler * T-Info_BI_cluster crawleradmin.t-info@telekom.de http://www.telekom.de/ # added FeedValidator http://feedvalidator.org/ # added FilmkameraBot http://www.filmkamera.at/bot.html # added Findexa Crawler http://www.findexa.no/gulesider/article26548.ece # added Global Fetch http://www.wesonet.com/ # added GOFORITBOT http://www.goforit.com/about/ # added GoForIt.com http://www.goforit.com/about/ # added GPU p2p crawler http://gpu.sourceforge.net/search_engine.php # added HooWWWer http://cosco.hiit.fi/search/hoowwwer/ # added HPPrint # added HTMLParser http://htmlparser.sourceforge.net/ # added Hundesuche.com-Bot http://www.hundesuche.com/ # added InfoBot http://www.infobot.org/ # added InfociousBot http://corp.infocious.com/tech_crawler.php # added InternetSupervision http://internetsupervision.com/ # added isearch2006 http://www.yahoo.com.cn/ # added IUPUI_Research_Bot http://spamhuntress.com/2005/04/25/a-mail-harvester-visits/ # added KalamBot http://64.124.122.251/feedback.html # added kamano.de NewsFeedVerzeichnis http://www.kamano.de/ # added Kevin http://dznet.com/kevin/ # added KnowItAll http://www.cs.washington.edu/research/knowitall/ # added Knowledge.com http://www.knowledge.com/ # added Kouaa Krawler http://www.kouaa.com/ # added ksibot http://ego.ms.mff.cuni.cz/ # added Link Valet Online http://www.htmlhelp.com/tools/valet/ # added lwp-request http://search.cpan.org/~gaas/libwww-perl-5.69/bin/lwp-request # added lwp-trivial http://search.cpan.org/src/GAAS/libwww-perl-5.805/lib/LWP/Simple.pm # added MapoftheInternet.com http://MapoftheInternet.com/ # added Matrix S.p.A. - FAST Enterprise Crawler http://tin.virgilio.it/ # added Megite http://www.megite.com/ # added Metaspinner http://index.meta-spinner.de/ # added Mini-reptile # added Misterbot http://www.misterbot.fr/ # added Miva http://www.miva.com/ # added Mizzu Labs http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=\bid_m_141105_2\b # added MSRBOT http://research.microsoft.com/research/sv/msrbot/ # added MS SharePoint Portal Server - MS Search 4.0 Robot http://support.microsoft.com/default.aspx?scid=kb;en-us;284022 # added Mydoyouhike http://www.doyouhike.net/my # added NASA Search http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=\bid_n_s_140506_2\b # added NetSprint http://www.netsprint.pl/serwis/ # added NimbleCrawler http://www.healthline.com/ # added OpenWebSpider http://www.openwebspider.org/ # added Oracle Ultra Search http://www.oracle.com/technology/products/ultrasearch/index.html # added OSSProxy http://www.marketscore.com/FAQ.Aspx # added passwordmaker.org http://passwordmaker.org/ # added PEAR HTTP Request class http://pear.php.net/ # added PEERbot http://www.peerbot.com/ # added PHP version tracker http://www.nexen.net/phpversion/bot.php # added PictureOfInternet http://malfunction.org/poi/ # added plinki http://www.plinki.com/ # added Port Huron Labs http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=\bid_n_s_1133\b # added PostFavorites http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=\bid_n_s_1135\b # added ProjectWF-java-test-crawler # added PyQuery http://sourceforge.net/projects/pyquery/ # added Schizozilla http://spamhuntress.com/2005/03/18/gizmo/ # added Scumbot # added Sensis Web Crawler http://www.sensis.com.au/ # added snap.com beta crawler http://www.snap.com/ # added Steeler http://www.tkl.iis.u-tokyo.ac.jp/~crawler/ # added STEROID Download http://faqs.org.ru/progr/pascal/delphi_internet2.htm # added Suchfin-Bot http://www.suchfin.de/ # added Sunrise http://www.sunrisexp.com/ # added Tagyu Agent http://www.tagyu.com/ # added Tcl http client package http://www.tcl.tk/man/tcl8.4/TclCmd/http.htm # added TeragramCrawlerSURF http://www.teragram.com/ # added Test Crawler http://netp.ath.cx/ # added UnChaos Bot Hybrid Web Search Engine http://www.unchaos.com/ # added unido-bot http://www.unchina.org/unido/unido/our_projects/3_3.html # added UniversalFeedParser http://feedparser.org/ (seen from md301000.inktomisearch.com) # added updated http://www.updated.com/ # added Vermut http://vermut.aol.com # added versus crawler from eda.baykan@epfl.ch http://www.epfl.ch/Eindex.html # added Vespa Crawler (Yahoo Norway?) http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=%5Cbid_t_z_030406_1%5Cb # added VSE http://www.vivisimo.com/ # added webcrawl.net http://www.webcrawl.net/ # added Web Downloader http://www.krasu.ru/soft/chuchelo/ # added Webdup http://www.webdup.com/en/index.html # added Wells Search http://www.psychedelix.com/cgi-bin/csv2html.pl?data=allagents.csv&template=detail.html&match=\bid_t_z_1484\b # added WordPress http://wordpress.org/ # added wume crawler http://wume.cse.lehigh.edu/~xiq204/crawler/ # added Xenu's Link Sleuth (with ') # added xirq http://www.xirq.com/ # added yoogliFetchAgent http://www.yoogli.com/ # added Z-Add Link Checker http://w3.z-add.co.uk/linkcheck/ # -- fix - some robots were reported with _ where _ should have been a space. # changed Xenu Link Sleuth # changed microsoft[_+\s]url[_+\s]control -> microsoft_url_control # changed favorites_sweeper -> favorites_sweeper # -- updates # updated AskJeeves to Ask # 2012-06-05 Albrecht Mueller # added Grabber from SDSC (San Diego Supercomputer Center). # 2013-09-30 Albrecht Mueller # AWStats probably cannot detect this bot as it identifies itself in # the referrer field and not in the user agent string. #92.113.100.35 - - [29/Sep/2013:17:22:46 +0200] "GET /robots.txt HTTP/1.1" 200 516 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0" "-" #92.113.100.35 - - [29/Sep/2013:17:22:49 +0200] "GET /tghome.htm HTTP/1.1" 200 4445 "http://extrabot.com/help/frytygativyheku.htm" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0" "-" #92.113.100.35 - - [29/Sep/2013:17:22:51 +0200] "GET / HTTP/1.1" 200 5467 "http://extrabot.com/help/frytygativyheku.htm" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0" "-" # to do MS Search 4.0 Robot #package AWSROB; # Robots list was found at http://www.robotstxt.org/wc/active/all.txt # Other robots can be found at http://www.jafsoft.com/searchengines/webbots.html # Rem: To avoid bad detection, some robot's ids were removed from this list: # - Robots with ID of 3 letters only # - Robots called 'webs' and 'tcl' # Rem: directhit changed into direct_hit (its real id) # Rem: calif changed into calif[^r] to avoid confusion between Tiscalifreenet browser # Rem: fish changed into [^a]fish to avoid confusion between Madsafish browser # Rem: roadrunner changed into road_runner # Rem: lycos changed to lycos_ to avoid confusion with lycos-online browser # Rem: voyager changed into ^voyager\/ to avoid to exclude voyager and amigavoyager browser # RobotsSearchIDOrder # It contains all matching criteria to search for in log fields. This list is # used to know in which order to search Robot IDs. # Most frequent ones are in list1, used when LevelForRobotsDetection is 1 or more # Minor robots are in list2, used when LevelForRobotsDetection is 2 or more # Note: Robots IDs are in lower case, '_', ' ' and '+' are changed into '[_+\s]' and are quoted. #------------------------------------------------------- @RobotsSearchIDOrder_list1 = ( # Common robots (In robot file) 'appie', 'architext', 'bingpreview', 'bjaaland', 'contentmatch', 'ferret', 'googlebot\-image', 'googlebot', 'google\-sitemaps', 'google[_+\s]web[_+\s]preview', 'grabber', 'gulliver', 'virus[_+\s]detector', # Must be before harvest 'harvest', 'htdig', 'jeeves', 'linkwalker', 'lilina', 'lycos[_+\s]', 'moget', 'muscatferret', 'myweb', 'nomad', 'scooter', 'slurp', '^voyager\/', 'weblayers', # Common robots (Not in robot file) 'antibot', 'bruinbot', 'digout4u', 'echo!', 'fast\-webcrawler', 'ia_archiver\-web\.archive\.org', # Must be before ia_archiver to avoid confusion with alexa 'ia_archiver', 'jennybot', 'mercator', 'netcraft', 'msnbot\-media', 'msnbot-udiscovery', 'msnbot', 'petersnews', 'relevantnoise\.com', 'unlost_web_crawler', 'voila', 'webbase', 'webcollage', 'cfetch', 'zyborg', # Must be before wisenut 'wisenutbot' ); @RobotsSearchIDOrder_list2 = ( # Less common robots (In robot file) '007ac9', '[^a]fish', 'abcdatos', 'abonti\.com', 'acme\.spider', 'ahoythehomepagefinder', 'ahrefsbot', 'alkaline', 'anthill', 'arachnophilia', 'arale', 'araneo', 'aretha', 'ariadne', 'powermarks', 'arks', 'aspider', 'atn\.txt', 'atomz', 'auresys', 'backrub', 'bbot', 'bigbrother', 'blackwidow', 'blindekuh', 'bloodhound', 'borg\-bot', 'brightnet', 'bspider', 'cactvschemistryspider', 'calif[^r]', 'cassandra', 'cgireader', 'checkbot', 'christcrawler', 'churl', 'cienciaficcion', 'cms\scrawler', 'collective', 'combine', 'conceptbot', 'coolbot', 'core', 'cosmos', 'crazywebcrawler', 'cruiser', 'cusco', 'cyberspyder', 'desertrealm', 'deweb', 'dienstspider', 'digger', 'diibot', 'direct_hit', 'dnabot', 'domainappender', 'download_express', 'dragonbot', 'dwcp', 'e\-collector', 'ebiness', 'elfinbot', 'emacs', 'emcspider', 'esther', 'evliyacelebi', 'fastcrawler', 'feedcrawl', 'fdse', 'felix', 'fetchrover', 'fido', 'finnish', 'fireball', 'fouineur', 'francoroute', 'freecrawl', 'funnelweb', 'gama', 'gazz', 'gcreep', 'getbot', 'geturl', 'golem', 'gougou', 'grapnel', 'griffon', 'gromit', 'gulperbot', 'hambot', 'havindex', 'hometown', 'htmlgobble', 'hyperdecontextualizer', 'iajabot', 'iaskspider', 'hl_ftien_spider', 'sogou', 'icjobs\.de', 'iconoclast', 'ilse', 'imagelock', 'incywincy', 'informant', 'infoseek', 'infoseeksidewinder', 'infospider', 'inspectorwww', 'intelliagent', 'irobot', 'iron33', 'israelisearch', 'javabee', 'jbot', 'jcrawler', 'jobo', 'jobot', 'joebot', 'jubii', 'jumpstation', 'kapsi', 'katipo', 'kilroy', 'ko[_+\s]yappo[_+\s]robot', 'kummhttp', 'labelgrabber\.txt', 'larbin', 'legs', 'linkidator', 'linkscan', 'lockon', 'logo_gif', 'macworm', 'magpie', 'marvin', 'mattie', 'mediafox', 'merzscope', 'meshexplorer', 'mindcrawler', 'mnogosearch', 'momspider', 'monster', 'motor', 'muncher', 'mwdsearch', 'ndspider', 'nederland\.zoek', 'netcarta', 'netmechanic', 'netscoop', 'newscan\-online', 'nhse', 'northstar', 'nzexplorer', 'objectssearch', 'occam', 'octopus', 'openfind', 'orb_search', 'packrat', 'pageboy', 'parasite', 'patric', 'pegasus', 'perignator', 'perlcrawler', 'phantom', 'phpdig', 'piltdownman', 'pimptrain', 'pioneer', 'pitkow', 'pjspider', 'plumtreewebaccessor', 'poppi', 'portalb', 'psbot', 'python', 'raven', 'rbse', 'resumerobot', 'rhcs', 'road_runner', 'robbie', 'robi', 'robocrawl', 'robofox', 'robozilla', 'roverbot', 'rules', 'safetynetrobot', 'semalt', #Note: This entry will not work as this crawler identifies itself # in the referrer string and not in the user agent string 'search\-info', 'search_au', 'searchprocess', 'senrigan', 'sgscout', 'shaggy', 'shaihulud', 'sift', 'simbot', 'sistrix', 'site\-valet', 'sitetech', 'skymob', 'slcrawler', 'smartspider', 'snooper', 'solbot', 'speedy', 'spider[_+\s]monkey', 'spiderbot', 'spiderline', 'spiderman', 'spiderview', 'spry', 'sqworm', 'ssearcher', 'suke', 'sunrise', 'suntek', 'sven', 'tach_bw', 'tagyu_agent', 'tailrank', 'tarantula', 'tarspider', 'techbot', 'templeton', 'titan', 'titin', 'tkwww', 'tlspider', 'ucsd', 'udmsearch', 'universalfeedparser', 'urlck', 'valkyrie', 'verticrawl', 'victoria', 'visionsearch', 'voidbot', 'vwbot', 'w3index', 'w3m2', 'wallpaper', 'wanderer', 'wapspIRLider', 'webbandit', 'webcatcher', 'webcopy', 'webfetcher', 'webfoot', 'webinator', 'weblinker', 'webmirror', 'webmoose', 'webquest', 'webreader', 'webreaper', 'websnarf', 'webspider', 'webvac', 'webwalk', 'webwalker', 'webwatch', 'whatuseek', 'whowhere', 'wired\-digital', 'wmir', 'wolp', 'wombat', 'wordpress', 'worm', 'woozweb', 'wwwc', 'wz101', 'xenu\slink\ssleuth', 'xget', # Other robots reported by users '1\-more_scanner', '360spider', 'a6-indexer', 'accoona\-ai\-agent', 'activebookmark', 'adamm_bot', 'adsbot-google', 'advbot', 'affectv\.co\.uk', 'almaden', 'aipbot', 'aleadsoftbot', 'alpha_search_agent', 'allrati', 'aport', 'archive\-de\.com', 'archive\.org_bot', 'argus', # Must be before nutch 'arianna\.libero\.it', 'aspseek', 'asterias', 'awbot', 'backlinktest\.com', 'baiduspider', 'becomebot', 'bender', 'betabot', 'biglotron', 'bittorrent_bot', 'biz360[_+\s]spider', 'blexbot', 'blogbridge[_+\s]service', 'bloglines', 'blogpulse', 'blogsearch', 'blogshares', 'blogslive', 'blogssay', 'bncf\.firenze\.sbn\.it\/raccolta\.txt', 'bobby', 'boitho\.com\-dc', 'bookmark\-manager', 'boris', 'bubing', 'bumblebee', 'candlelight[_+\s]favorites[_+\s]inspector', 'careerbot', 'cbn00glebot', 'ccbot', 'cerberian_drtrs', 'cfnetwork', 'cipinetbot', 'checkweb_link_validator', 'cliqzbot', 'commons\-httpclient', 'computer_and_automation_research_institute_crawler', 'converamultimediacrawler', 'converacrawler', 'copubbot', 'cscrawler', 'cse_html_validator_lite_online', 'cuasarbot', 'cursor', 'custo', 'datafountains\/dmoz_downloader', 'dataprovider\.com', 'daumoa', 'daviesbot', 'daypopbot', 'deepindex', 'dipsie\.bot', 'dnsgroup', 'doccheckbot', 'domainchecker', 'domainsdb\.net', 'dotbot', 'dulance', 'dumbot', 'dumm\.de\-bot', 'earthcom\.info', 'easydl', 'eccp', 'edgeio\-retriever', 'ernst[:blank:]2\.0', 'ets_v', 'exactseek', 'extreme[_+\s]picture[_+\s]finder', 'eventax', 'everbeecrawler', 'everest\-vulcan', 'ezresult', 'enteprise', 'facebook', 'facebot', 'fast_enterprise_crawler.*crawleradmin\.t\-info@telekom\.de', 'fast_enterprise_crawler.*t\-info_bi_cluster_crawleradmin\.t\-info@telekom\.de', 'finderlein[_+\s]research[_+\s]crawler', 'matrix_s\.p\.a\._\-_fast_enterprise_crawler', # must come before fast enterprise crawler 'fast_enterprise_crawler', 'fast\-search\-engine', 'fastbot', 'favicon', 'favorg', 'favorites_sweeper', 'feedburner', 'feedfetcher\-google', 'feedflow', 'feedster', 'feedsky', 'feedvalidator', 'fetchbot', 'filmkamerabot', 'filterdb\.iss\.net', 'findlinks', 'findexa_crawler', 'firmilybot', 'foaf-search\.net', 'fooky\.com\/ScorpionBot', 'g2crawler', 'gaisbot', 'geniebot', 'gigablastopensource', 'gigabot', 'girafabot', 'global_fetch', 'gnodspider', 'goforit\.com', 'goforitbot', 'gonzo', 'grapeshot', 'grub', 'gpu_p2p_crawler', 'henrythemiragorobot', 'heritrix', 'holmes', 'hoowwwer', 'hpprint', 'htmlparser', 'html[_+\s]link[_+\s]validator', 'httrack', 'hundesuche\.com\-bot', 'i-bot', 'icarus6j', 'ichiro', 'idmarch', 'iltrovatore\-setaccio', 'infobot', 'infociousbot', 'infohelfer', 'infomine', 'insurancobot', 'integromedb\.org', 'internet[_+\s]ninja', 'internetarchive', 'internetseer', 'internetsupervision', 'ips\-agent', 'irlbot', 'isearch2006', 'istellabot', 'iupui_research_bot', 'izsearch', 'james\sbot', 'jrtwine[_+\s]software[_+\s]check[_+\s]favorites[_+\s]utility', 'justview', 'kalambot', 'kamano\.de_newsfeedverzeichnis', 'kazoombot', 'kevin', 'keyoshid', # Must come before Y!J 'kinjabot', 'kinja\-imagebot', 'knowitall', 'knowledge\.com', 'kouaa_krawler', 'krugle', 'ksibot', 'kurzor', 'lanshanbot', 'letscrawl\.com', 'libcrawl', 'linkbot', 'linkdex\.com', 'link_valet_online', 'metager\-linkchecker', # Must be before linkchecker 'linkchecker', 'lipperhey', 'livejournal\.com', 'lmspider', 'loadtimebot', 'lssrocketcrawler', 'ltbot', 'ltx71', 'lwp\-request', 'lwp\-trivial', 'madaali\.de', 'magpierss', 'mail\.ru', 'mapoftheinternet\.com', 'meanpathbot', 'mediabot', 'mediapartners\-google', 'megite', 'memorybot', 'metager2-verification-bot', 'metaspinner', 'miadev', 'microsoft bits', 'microsoft.*discovery', # = 'microsoft (?:office (?:protocol|existence)|data access internet publishing provider protocol) discovery', 'microsoft[_+\s]url[_+\s]control', 'mini\-reptile', 'minirank', 'missigua_locator', 'misterbot', 'miva', 'mizzu_labs', 'mj12bot', 'mojeekbot', 'msiecrawler', 'ms[_+\s]search[_+\s]6\.0[_+\s]robot', 'ms_search_4\.0_robot', 'msrabot', 'msrbot', 'mt::telegraph::agent', 'mydoyouhike', 'nagios', 'nasa_search', 'netestate ne crawler', 'netluchs', 'netsprint', 'newsgatoronline', 'nicebot', 'nimblecrawler', 'noxtrumbot', 'npbot', 'loocalcrawler/nutch', 'nutchcvs', 'nutchosu\-vlib', 'nutch', # Must come after other nutch versions 'ocelli', 'octora_beta_bot', 'omniexplorer[_+\s]bot', 'onet\.pl[_+\s]sa', 'onfolio', 'opentaggerbot', 'openwebspider', 'oracle_ultra_search', 'orangebot', 'orbiter', 'yodaobot', 'qihoobot', 'passwordmaker\.org', 'pear_http_request_class', 'peerbot', 'perman', 'php[_+\s]version[_+\s]tracker', 'phpcrawl', 'picmole', 'pictureofinternet', 'ping\.blo\.gs', 'plinki', 'pluckfeedcrawler', 'pogodak', 'pompos', 'popdexter', 'port_huron_labs', 'postfavorites', 'projectwf\-java\-test\-crawler', 'proodlebot', 'publiclibraryarchive', 'pyquery', 'rambler', 'redalert', 'rogerbot', 'rojo', 'rssimagesbot', 'ruffle', 'rufusbot', 'sandcrawler', 'savetheworldheritage', 'sbider', 'schizozilla', 'scumbot', 'searchguild[_+\s]dmoz[_+\s]experiment', 'searchmetricsbot', 'seekbot', 'semrushbot', 'sensis_web_crawler', 'seodiver', 'seokicks\.de', 'seznambot', 'shim\-crawler', 'shoutcast', 'sitedomain-bot', 'siteexplorer\.info', 'slysearch', 'smtbot', 'snap\.com_beta_crawler', 'sohu\-search', 'sohu', # "sohu agent" 'snappy', 'spbot', 'sphere_scout', 'spiderlytics', 'spip', 'sproose_crawler', 'ssearch_bot', 'steeler', 'steroid__download', 'stq_bot', 'suchfin\-bot', 'superbot', 'surveybot', 'susie', 'syndic8', 'syndicapi', 'synoobot', 'tcl_http_client_package', 'technoratibot', 'teragramcrawlersurf', 'test_crawler', 'testbot', 't\-h\-u\-n\-d\-e\-r\-s\-t\-o\-n\-e', 'topicblogs', 'turnitinbot', 'turtlescanner', # Must be before turtle 'turtle', 'tutorgigbot', 'twiceler', 'ubicrawler', 'ultraseek', 'unchaos_bot_hybrid_web_search_engine', 'unido\-bot', 'unisterbot', 'updated', 'ustc\-semantic\-group', 'vagabondo\-wap', 'vagabondo', 'vermut', 'versus_crawler_from_eda\.baykan@epfl\.ch', 'vespa_crawler', 'vortex', 'vse\/', 'w3c\-checklink', 'w3c[_+\s]css[_+\s]validator[_+\s]jfouffa', 'w3c_validator', 'watchmouse', 'wavefire', 'waybackarchive\.org', 'webclipping\.com', 'webcompass', 'webcrawl\.net', 'web_downloader', 'webdup', 'webfilter', 'webindexer', 'webminer', 'website[_+\s]monitoring[_+\s]bot', 'webvulncrawl', 'wells_search', 'wesee:search', 'wevikabot', 'wonderer', 'wotbox', 'wume_crawler', 'wwweasel', 'xenu\'s_link_sleuth', 'xenu_link_sleuth', 'xirq', 'xovibot', 'y!j', # Must come after keyoshid Y!J 'yacy', 'yahoo\-blogs', 'yahoo\-verticalcrawler', 'yahoofeedseeker', 'yahooseeker\-testing', 'yahooseeker', 'yahoo\-mmcrawler', 'yahoo!_mindset', 'yandex', 'flexum', 'yanga', 'yet-another-spider', 'yooglifetchagent', 'z\-add_link_checker', 'zealbot', 'zhuaxia', 'zspider', 'zeus', 'ng\/1\.', # put at end to avoid false positive 'ng\/2\.', # put at end to avoid false positive 'exabot', # put at end to avoid false positive # Additional bots found by Sussex. '^[1-3]$', # Hiding bots. Doesn't appear to be a valid user agent. 'alltop', 'applesyndication', 'asynchttpclient', 'bingbot', 'blogged_crawl', 'bloglovin', 'butterfly', 'buzztracker', 'carpathia', 'catbot', 'chattertrap', 'check_http', #(nagios) a monitoring tool 'coldfusion', 'covario', 'daylifefeedfetcher', 'discobot', 'dlvr\.it', 'dreamwidth', 'drupal', 'ezoom', 'feedmyinbox', 'feedroll\.com', 'feedzira', 'fever\/', 'freenews', 'geohasher', 'hanrss', 'inagist', 'jacobin club', 'jakarta', 'js\-kit', 'largesmall crawler', 'linkedinbot', 'longurl', 'metauri', 'microsoft\-webdav\-miniredir', '^motorola$', 'movabletype', # These appear to be bots trying to hide. All of the usual architecture data is missing. '^mozilla\/3\.0\s\(compatible$', '^mozilla\/4\.0$', '^mozilla\/4\.0\s\(compatible;\)$', '^mozilla\/5\.0$', '^mozilla\/5\.0\s\(compatible;$', '^mozilla\/5\.0\s\(en\-us\)$', '^mozilla\/5\.0\sfirefox\/3\.0\.5$', '^msie', # End of hiding bots. 'netnewswire', ' netseer ', 'netvibes', 'newrelicpinger', 'newsfox', 'nextgensearchbot', 'ning', 'pingdom', 'pita', 'postpost', 'postrank', 'printfulbot', 'protopage', 'proximic', 'quipply', 'r6\_', 'ratingburner', 'regator', 'rome client', 'rpt\-httpclient', 'rssgraffiti', 'sage\+\+', 'scoutjet', 'simplepie', 'sitebot', 'summify\.com', 'superfeedr', 'synthesio', 'teoma', 'topblogsinfo', 'topix\.net', 'trapit', 'trileet', 'tweetedtimes', 'twisted pagegetter', 'twitterbot', 'twitterfeed', 'unwindfetchor', 'wazzup', 'windows\-rss\-platform', 'wiumi', 'xydo', 'yahoo! slurp', 'yahoo pipes', 'yahoo\-newscrawler', 'yahoocachesystem', 'yahooexternalcache', 'yahoo! searchmonkey', 'yahooysmcm', 'yammer', # 'yandexbot', #already covered by 'yandex' 'yeti', 'yie8', 'youdao', 'yourls', 'zemanta', 'zend_http_client', 'zumbot', # Other id that are 99% of robots 'wget', 'libwww', '^java\/[0-9]' # put at end to avoid false positive ); @RobotsSearchIDOrder_listgen = ( # Generic robot 'robot', 'checker', 'crawl', 'discovery', 'hunter', 'scanner', 'spider', 'sucker', 'bot[\s_+:,\.\;\/\\\-]', # Identifies #"Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; CUBOT P9 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" #as a but. There is a Android mobile phone called "CUBOT P9", so this is probably not a bot. '[\s_+:,\.\;\/\\\-]bot', 'curl', 'php', 'ruby\/', 'no_user_agent' ); # RobotsHashIDLib # List of robots names ('robot id','robot clear text') #------------------------------------------------------- %RobotsHashIDLib = ( # Common robots (In robot file) 'appie','Walhello appie', 'architext','ArchitextSpider', 'bingpreview','Bing Preview bot', 'bjaaland','Bjaaland', 'ferret','Wild Ferret Web Hopper #1, #2, #3', 'contentmatch','Yahoo!China ContentMatch Crawler', 'googlebot\-image','Googlebot-Image', 'googlebot','Googlebot', 'google\-sitemaps', 'Google Sitemaps', 'grabber', 'Grabber (SDSC)', 'google[_+\s]web[_+\s]preview', 'Google Web Preview', 'gulliver','Northern Light Gulliver', 'virus[_+\s]detector','virus_detector', 'harvest','Harvest', 'htdig','ht://Dig', 'jeeves','Ask', 'linkwalker','LinkWalker', 'lilina','Lilina', 'lycos[_+\s]','Lycos', 'moget','moget', 'muscatferret','Muscat Ferret', 'myweb','Internet Shinchakubin', 'nomad','Nomad', 'scooter','Scooter', 'slurp','Yahoo Slurp', '^voyager\/','Voyager', 'weblayers','Weblayers', # Common robots (Not in robot file) 'antibot','Antibot', 'bruinbot','The web archive', 'digout4u','Digout4u', 'echo!','EchO!', 'fast\-webcrawler','Fast-Webcrawler', 'ia_archiver\-web\.archive\.org','The web archive (IA Archiver)', 'ia_archiver','Alexa (IA Archiver)', 'jennybot','JennyBot', 'mercator','Mercator', 'msnbot\-media','MSNBot-media', 'msnbot-udiscovery', 'msnbot-UDiscovery Note: Most traffic counts as user traffic', 'msnbot','MSNBot', 'netcraft','Netcraft', 'petersnews','Petersnews', 'unlost_web_crawler','Unlost Web Crawler', 'voila','Voila', 'webbase', 'WebBase', 'zyborg','ZyBorg', 'wisenutbot','WISENutbot', 'webcollage','WebCollage', 'cfetch','Cfetch', # Less common robots (In robot file) '007ac9', '007ac9 Crawler, seems to belong to SISTRIX', '[^a]fish','Fish search', 'abcdatos','ABCdatos BotLink', 'abonti\.com','Abonti WebSearch', 'acme\.spider','Acme.Spider', 'ahoythehomepagefinder','Ahoy! The Homepage Finder', 'ahrefsbot', 'AhrefsBot', 'alkaline','Alkaline', 'anthill','Anthill', 'arachnophilia','Arachnophilia', 'arale','Arale', 'araneo','Araneo', 'aretha','Aretha', 'ariadne','ARIADNE', 'powermarks','Powermarks', # must come before Arks; seen used by referrer spam 'arks','arks', 'aspider','ASpider (Associative Spider)', 'atn\.txt','ATN Worldwide', 'atomz','Atomz.com Search Robot', 'auresys','AURESYS', 'backrub','BackRub', 'bbot','BBot', 'bigbrother','Big Brother', 'blackwidow','BlackWidow', 'blindekuh','Die Blinde Kuh', 'bloodhound','Bloodhound', 'borg\-bot','Borg-Bot', 'brightnet','bright.net caching robot', 'bspider','BSpider', 'cactvschemistryspider','CACTVS Chemistry Spider', 'calif[^r]','Calif', 'cassandra','Cassandra', 'cgireader','Digimarc Marcspider/CGI', 'checkbot','Checkbot', 'christcrawler','ChristCrawler.com', 'churl','churl', 'cienciaficcion','cIeNcIaFiCcIoN.nEt', 'cms\scrawler', 'CMS Crawler', 'collective','Collective', 'combine','Combine System', 'conceptbot','Conceptbot', 'coolbot','CoolBot', 'core','Web Core / Roots', 'cosmos','XYLEME Robot', 'crazywebcrawler', 'CrazyWeb Crawler', 'cruiser','Internet Cruiser Robot', 'cusco','Cusco', 'cyberspyder','CyberSpyder Link Test', 'desertrealm','Desert Realm Spider', 'deweb','DeWeb(c) Katalog/Index', 'dienstspider','DienstSpider', 'digger','Digger', 'diibot','Digital Integrity Robot', 'direct_hit','Direct Hit Grabber', 'dnabot','DNAbot', 'domainappender', 'DomainAppender', 'download_express','DownLoad Express', 'dragonbot','DragonBot', 'dwcp','DWCP (Dridus\' Web Cataloging Project)', 'e\-collector','e-collector', 'ebiness','EbiNess', 'elfinbot','ELFINBOT', 'emacs','Emacs-w3 Search Engine', 'emcspider','ananzi', 'esther','Esther', 'evliyacelebi','Evliya Celebi', 'fastcrawler','FastCrawler', 'feedcrawl','FeedCrawl by feed@aobo.com', 'fdse','Fluid Dynamics Search Engine robot', 'felix','Felix IDE', 'fetchrover','FetchRover', 'fido','fido', 'finnish','Finnish', 'fireball','KIT-Fireball', 'fouineur','Fouineur', 'francoroute','Robot Francoroute', 'freecrawl','Freecrawl', 'funnelweb','FunnelWeb', 'gama','gammaSpider, FocusedCrawler', 'gazz','gazz', 'gcreep','GCreep', 'getbot','GetBot', 'geturl','GetURL', 'golem','Golem', 'gougou','GouGou', 'grapnel','Grapnel/0.01 Experiment', 'griffon','Griffon', 'gromit','Gromit', 'gulperbot','Gulper Bot', 'hambot','HamBot', 'havindex','havIndex', 'hometown','Hometown Spider Pro', 'htmlgobble','HTMLgobble', 'hyperdecontextualizer','Hyper-Decontextualizer', 'iajabot','iajaBot', 'iaskspider','Sina Iask Spider', 'hl_ftien_spider','Hylanda', 'sogou','Sogou Spider', 'icjobs\.de', 'iCjobs Spider Note: Most traffic counts as user traffic', #20130805 The user agent string of the icjobs-spider contained the #identifying string only when it accessed the robots.txt file. #When it accessed the actual content it did not identify itself as #a spider. Thus traffic of this spider was counted as user traffic. #The behavious seems to have changed now - the spider identifies itself #when it accesses content pages. #20141401 Behavior as before: Does identify itself when it accesses # robots.txt and the root page. The following traffic does not contain # the identification string and is therefore counted as user traffic. 'iconoclast','Popular Iconoclast', 'ilse','Ingrid', 'imagelock','Imagelock', 'incywincy','IncyWincy', 'informant','Informant', 'infoseek','InfoSeek Robot 1.0', 'infoseeksidewinder','Infoseek Sidewinder', 'infospider','InfoSpiders', 'inspectorwww','Inspector Web', 'intelliagent','IntelliAgent', 'ips\-agent', 'ips-agent Verisign(?) - no reliable information found.', 'irobot','I, Robot', 'iron33','Iron33', 'israelisearch','Israeli-search', 'javabee','JavaBee', 'jbot','JBot Java Web Robot', 'jcrawler','JCrawler', 'jobo','JoBo Java Web Robot', 'jobot','Jobot', 'joebot','JoeBot', 'jubii','The Jubii Indexing Robot', 'jumpstation','JumpStation', 'kapsi','image.kapsi.net', 'katipo','Katipo', 'kilroy','Kilroy', 'ko[_+\s]yappo[_+\s]robot','KO_Yappo_Robot', 'kummhttp','KummHttp', 'labelgrabber\.txt','LabelGrabber', 'larbin','larbin', 'legs','legs', 'linkidator','Link Validator', 'linkscan','LinkScan', 'lockon','Lockon', 'logo_gif','logo.gif Crawler', 'macworm','Mac WWWWorm', 'lmspider','lmspider', 'lwp\-request','lwp-request', 'lwp\-trivial','lwp-trivial', 'magpie','MagpieRSS', 'marvin','marvin/infoseek', 'mattie','Mattie', 'mediafox','MediaFox', 'merzscope','MerzScope', 'meshexplorer','NEC-MeshExplorer', 'mindcrawler','MindCrawler', 'mnogosearch','mnoGoSearch search engine software', 'momspider','MOMspider', 'monster','Monster', 'motor','Motor', 'muncher','Muncher', 'mwdsearch','Mwd.Search', 'ndspider','NDSpider', 'nederland\.zoek','Nederland.zoek', 'netcarta','NetCarta WebMap Engine', 'netmechanic','NetMechanic', 'netscoop','NetScoop', 'newscan\-online','newscan-online', 'nhse','NHSE Web Forager', 'northstar','The NorthStar Robot', 'nzexplorer','nzexplorer', 'objectssearch','ObjectsSearch', 'occam','Occam', 'octopus','HKU WWW Octopus', 'openfind','Openfind data gatherer', 'orb_search','Orb Search', 'packrat','Pack Rat', 'pageboy','PageBoy', 'parasite','ParaSite', 'patric','Patric', 'pegasus','pegasus', 'perignator','The Peregrinator', 'perlcrawler','PerlCrawler 1.0', 'phantom','Phantom', 'phpdig','PhpDig', 'piltdownman','PiltdownMan', 'pimptrain','Pimptrain.com\'s robot', 'pioneer','Pioneer', 'pitkow','html_analyzer', 'pjspider','Portal Juice Spider', 'plumtreewebaccessor','PlumtreeWebAccessor', 'poppi','Poppi', 'portalb','PortalB Spider', 'psbot','psbot', 'python','Python-urllib', 'raven','Raven Search', 'rbse','RBSE Spider', 'resumerobot','Resume Robot', 'rhcs','RoadHouse Crawling System', 'road_runner','Road Runner: The ImageScape Robot', 'robbie','Robbie the Robot', 'robi','ComputingSite Robi/1.0', 'robocrawl','RoboCrawl Spider', 'robofox','RoboFox', 'robozilla','Robozilla', 'roverbot','Roverbot', 'rules','RuLeS', 'safetynetrobot','SafetyNet Robot', 'semalt', 'seamalt.com', 'search\-info','Sleek', 'search_au','Search.Aus-AU.COM', 'searchprocess','SearchProcess', 'senrigan','Senrigan', 'sgscout','SG-Scout', 'shaggy','ShagSeeker', 'shaihulud','Shai\'Hulud', 'sift','Sift', 'simbot','Simmany Robot Ver1.0', 'sistrix', 'SISTRIX Crawler', 'site\-valet','Site Valet', 'sitetech','SiteTech-Rover', 'skymob','Skymob.com', 'slcrawler','SLCrawler', 'smartspider','Smart Spider', 'snooper','Snooper', 'solbot','Solbot', 'speedy','Speedy Spider', 'spider[_+\s]monkey','Spider monkey', 'spiderbot','SpiderBot', 'spiderline','Spiderline Crawler', 'spiderlytics', 'Spiderlytics: No homepage, e-mail only: spider (at) spiderlytics.com', 'spiderman','Spiderman', 'spiderview','SpiderView(tm)', 'spry','Spry Wizard Robot', 'ssearcher','Site Searcher', 'sqworm','Sqworm', 'suke','Suke', 'sunrise','Sunrise', 'suntek','suntek search engine', 'sven','Sven', 'tach_bw','TACH Black Widow', 'tagyu_agent','Tagyu Agent', 'tarantula','Tarantula', 'tarspider','tarspider', 'tailrank','TailRank', 'techbot','TechBOT', 'templeton','Templeton', 'titan','TITAN', 'titin','TitIn', 'tkwww','The TkWWW Robot', 'tlspider','TLSpider', 'ucsd','UCSD Crawl', 'udmsearch','UdmSearch', 'universalfeedparser','UniversalFeedParser', 'urlck','URL Check', 'valkyrie','Valkyrie', 'verticrawl','Verticrawl', 'victoria','Victoria', 'visionsearch','vision-search', 'voidbot','void-bot', 'vwbot','VWbot', 'w3index','The NWI Robot', 'w3m2','W3M2', 'wallpaper','WallPaper (alias crawlpaper)', 'wanderer','the World Wide Web Wanderer', 'wapspider','w@pSpider by wap4.com', 'webbandit','WebBandit Web Spider', 'webcatcher','WebCatcher', 'webcopy','WebCopy', 'webfetcher','webfetcher', 'webfoot','The Webfoot Robot', 'webinator','Webinator', 'weblinker','WebLinker', 'webmirror','WebMirror', 'webmoose','The Web Moose', 'webquest','WebQuest', 'webreader','Digimarc MarcSpider', 'webreaper','WebReaper', 'websnarf','Websnarf', 'webspider','WebSpider', 'webvac','WebVac', 'webwalk','webwalk', 'webwalker','WebWalker', 'webwatch','WebWatch', 'whatuseek','whatUseek Winona', 'whowhere','WhoWhere Robot', 'wired\-digital','Wired Digital', 'wmir','w3mir', 'wolp','WebStolperer', 'wombat','The Web Wombat', 'wordpress','WordPress', 'worm','The World Wide Web Worm', 'woozweb','Woozweb Monitoring', 'wwwc','WWWC Ver 0.2.5', 'wz101','WebZinger', 'xenu\slink\ssleuth', 'Xenu'. "'" . 's Link Sleuth (TM), see Wikipedia', 'xget','XGET', # Other robots reported by users '1\-more_scanner','1-More Scanner', '360spider','360spider', 'a6-indexer', 'A6-Indexer', 'accoona\-ai\-agent','Accoona-AI-Agent', 'activebookmark','ActiveBookmark', 'adamm_bot','AdamM Bot', 'adsbot-google', 'AdsBot-Google', 'advbot', 'AdvBot', 'affectv\.co\.uk', 'affectv.co.uk', 'almaden','IBM Almaden Research Center WebFountain™', 'aipbot','aipbot', 'aleadsoftbot','ALeadSoftbot', 'alpha_search_agent','Alpha Search Agent', 'allrati','Allrati', 'aport', 'Aport', 'archive\-de\.com', 'Archive-de.com', 'archive\.org_bot','archive.org bot', 'argus','Argus', 'arianna\.libero\.it','arianna.libero.it', 'aspseek','ASPseek', 'asterias', 'Asterias', 'awbot', 'AWBot', 'backlinktest\.com', 'BacklinkCrawler', 'baiduspider','BaiDuSpider', 'becomebot', 'BecomeBot', 'bender','bender focused_crawler', 'betabot','BetaBot', 'biglotron','Biglotron', 'bittorrent_bot','BitTorrent Bot', 'biz360[_+\s]spider','Biz360 spider', 'blexbot', 'BLEXBot, seems to belong to the WebMeUp backlink tool', 'blogbridge[_+\s]service','BlogBridge Service', 'bloglines','Bloglines', 'blogpulse','BlogPulse ISSpider intelliseek.com', 'blogsearch','BlogSearch', 'blogshares','Blogshares Spiders', 'blogslive','Blogslive', 'blogssay','BlogsSay :: RSS Search Crawler', 'bncf\.firenze\.sbn\.it\/raccolta\.txt','Biblioteca Nazionale Centrale di Firenze', 'bobby', 'Bobby', 'boitho\.com\-dc','boitho.com-dc', 'bookmark\-manager','Bookmark-Manager', 'boris', 'Boris', 'bubing', 'BUbiNG', 'bumblebee', 'Bumblebee (relevare.com)', 'candlelight[_+\s]favorites[_+\s]inspector','Candlelight_Favorites_Inspector', 'careerbot', 'CareerBot', 'cbn00glebot','cbn00glebot', 'ccbot', 'Common Crawl', 'cerberian_drtrs','Cerberian Drtrs', 'cfnetwork','CFNetwork', 'cipinetbot','CipinetBot', 'checkweb_link_validator','CheckWeb link validator', 'cliqzbot', 'Cliqzbot', 'commons\-httpclient','Jakarta commons-httpclient', 'computer_and_automation_research_institute_crawler','Computer and Automation Research Institute Crawler', 'converamultimediacrawler','ConveraMultiMediaCrawler', 'converacrawler','ConveraCrawler', 'copubbot', 'CoPubbot', 'cscrawler','CsCrawler', 'cse_html_validator_lite_online','CSE HTML Validator Lite Online','cuasarbot','Cuasarbot', 'cursor','Cursor', 'custo','Custo', 'datafountains\/dmoz_downloader','DataFountains/DMOZ Downloader', 'dataprovider\.com', 'Dataprovider Site Explorer', 'daumoa', 'Daum', 'daviesbot', 'DaviesBot', 'daypopbot', 'DayPop', 'deepindex','Deepindex', 'dipsie\.bot','Dipsie', 'dnsgroup','DNSGroup', 'doccheckbot', 'doccheckbot/1.0, known to Project Honey Pot', 'domainchecker','DomainChecker', 'domainsdb\.net','DomainsDB.net', 'dotbot', 'DotBot, Open Site Explorer', 'dulance','Dulance', 'dumbot','Dumbot', 'dumm\.de\-bot','dumm.de-Bot', 'earthcom\.info','EARTHCOM.info', 'easydl','EasyDL', 'eccp', 'Eniro Sverige, email: search (at) eniro.com', 'edgeio\-retriever','edgeio-retriever', 'ernst[:blank:]2\.0', 'Ernst 2.0 (does not provide any further information)', 'ets_v','ETS Enterprise Translation Server', 'exactseek','ExactSeek Crawler', 'extreme[_+\s]picture[_+\s]finder','Extreme_Picture_Finder', 'eventax','eventax', 'everbeecrawler','EverbeeCrawler', 'everest\-vulcan','Everest-Vulcan', 'ezresult', 'Ezresult', 'enteprise','Fast Enteprise Crawler', 'facebook','FaceBook bot', 'facebot', 'Facebot (Facebook bot?)', 'fast\-search\-engine','Fast-Search-Engine (not fastsearch.com)', 'fast_enterprise_crawler','FAST Enterprise Crawler', 'fast_enterprise_crawler.*scrawleradmin\.t\-info@telekom\.de','FAST Enterprise Crawler * crawleradmin.t-info@telekom.de', 'finderlein[_+\s]research[_+\s]crawler', 'Finderlein Research Crawler 1.0 (no contact information given)', 'matrix_s\.p\.a\._\-_fast_enterprise_crawler','Matrix S.p.A. - FAST Enterprise Crawler', 'fast_enterprise_crawler.*t\-info_bi_cluster_crawleradmin\.t\-info@telekom\.de','FAST Enterprise Crawler * T-Info_BI_cluster crawleradmin.t-info@telekom.de', 'fastbot', 'fastbot', 'favicon','FavIconizer', 'favorg','FavOrg', 'favorites_sweeper','Favorites Sweeper', 'feedburner', 'Feedburner', 'feedfetcher\-google','Feedfetcher-Google', 'feedflow','FeedFlow', 'feedster','Feedster', 'feedsky','FeedSky', 'feedvalidator','FeedValidator', 'fetchbot', 'Fetchbot', 'filmkamerabot','FilmkameraBot', 'filterdb\.iss\.net', 'oBot', 'findexa_crawler','Findexa Crawler', 'firmilybot', 'Firmily Bot Home page (Website was hacked on Oct. 19, 2013)', 'findlinks','Findlinks', 'foaf-search\.net', 'Friend of a friend (FOAF) search engine', 'fooky\.com\/ScorpionBot','Fooky.com/ScorpionBot/ScoutOut', 'g2crawler','G2Crawler', 'gaisbot','Gaisbot', 'geniebot','Geniebot', 'gigablastopensource', 'GigablastOpenSource, an Open Source Search Engine(Wiki)', 'gigabot','GigaBot', 'girafabot','Girafabot', 'global_fetch','Global Fetch', 'gnodspider','GNOD Spider', 'goforit\.com','GoForIt.com', 'goforitbot','GOFORITBOT', 'gonzo','suchen.de', 'gpu_p2p_crawler','GPU p2p crawler', 'grapeshot', 'Grapeshot Crawler', 'grub','Grub.org', 'henrythemiragorobot', 'Mirago', 'heritrix','Heritrix', 'holmes', 'Holmes', 'hoowwwer','HooWWWer', 'hpprint','HPPrint', 'htmlparser','HTMLParser', 'html[_+\s]link[_+\s]validator','Html_Link_Validator', 'httrack','HTTrack off-line browser', 'hundesuche\.com\-bot','Hundesuche.com-Bot', 'i-bot','i-bot', 'icarus6j', 'Icarus6j, email address in UA string, no website', 'ichiro','ichiro', 'idmarch', 'IDMARCH', 'iltrovatore\-setaccio','IlTrovatore-Setaccio', 'infobot','InfoBot', 'infociousbot','InfociousBot', 'infohelfer','Infohelfer', 'infomine','INFOMINE VLCrawler', 'insurancobot','InsurancoBot', 'integromedb\.org','IntegromeDB', 'internet[_+\s]ninja','Internet_Ninja ', 'internetarchive','InternetArchive', 'internetseer', 'InternetSeer', 'internetsupervision','InternetSupervision', 'irlbot','IRLbot', 'isearch2006','isearch2006', 'istellabot', 'IstellaBot', 'iupui_research_bot','IUPUI_Research_Bot', 'izsearch', 'iZSearch', 'james\sbot', 'James BOT', 'jrtwine[_+\s]software[_+\s]check[_+\s]favorites[_+\s]utility','JRTwine_Software_Check_Favorites_Utility', 'justview', 'JustView', 'kalambot','KalamBot', 'kamano\.de_newsfeedverzeichnis','kamano.de NewsFeedVerzeichnis', 'kazoombot','KazoomBot', 'kevin','Kevin', 'keyoshid','Yahoo! Japan keyoshid robot study', 'kinjabot', 'Kinjabot', 'kinja\-imagebot', 'Kinja Imagebot', 'knowitall','KnowItAll', 'knowledge\.com','Knowledge.com', 'kouaa_krawler','Kouaa Krawler', 'krugle','Krugle', 'ksibot','ksibot', 'kurzor','Kurzor', 'lanshanbot','lanshanbot', 'letscrawl\.com','LetsCrawl.com', 'libcrawl','Crawl libcrawl', 'link_valet_online','Link Valet Online', 'linkbot','LinkBot', 'linkdex\.com', 'Linkdex', 'linkchecker','LinkChecker', 'lipperhey', 'Lipperhey SEO Service', 'livejournal\.com', 'LiveJournal.com', 'loadtimebot', 'LoadTimeBot', 'lssrocketcrawler', 'LSSRocketCrawler (no contact information)', 'ltbot', 'Language Tools Bot (ltbot)', 'ltx71', 'ltx71', 'madaali\.de', 'www.madaali.de', 'magpierss', 'MagpieRSS', 'mail\.ru', 'Mail.ru bot', 'mapoftheinternet\.com','MapoftheInternet.com', 'meanpathbot', 'Meanpathbot', 'mediabot', 'MediaBot', 'mediapartners\-google','Google AdSense', # 'Mediapartners-Google (Feb 12, 2015: no additial information in UA String, seems to use GigablastOpenSource', # Uses UA string "Mediapartners-Google" only, and there were accesses using an UA string "GigablastOpenSource/1.0" from the same IP-Address. # Therefore this is probably not related to Google 4.3.2015 Albrecht M�ller 'megite','Megite', 'memorybot', 'Archivethe.net', 'metager2-verification-bot', 'metager2-verification-bot', 'metager\-linkchecker','MetaGer LinkChecker', 'metaspinner','Metaspinner', 'miadev', 'MiaDev spider', 'microsoft bits', 'Microsoft Background Intelligent Transfer Service (BITS)?', 'microsoft.*discovery', 'Microsoft Office Protocol Discovery/Microsoft Office Existence Discovery', 'microsoft[_+\s]url[_+\s]control','Microsoft URL Control', 'minirank','miniRank', 'mini\-reptile','Mini-reptile', 'missigua_locator','Missigua_Locator', 'misterbot','Misterbot', 'miva','Miva', 'mizzu_labs','Mizzu Labs', 'mj12bot','MJ12bot', 'mojeekbot','MojeekBot', 'msiecrawler','MSIECrawler', 'ms[_+\s]search[_+\s]6\.0[_+\s]robot','MS Search 6.0 Robot (MS SharePoint Portal Server?)', 'ms_search_4\.0_robot','MS SharePoint Portal Server - MS Search 4.0 Robot', 'msrabot','msrabot', 'msrbot','MSRBOT', 'mt::telegraph::agent','MT::Telegraph::Agent', 'mydoyouhike','Mydoyouhike', 'nagios','Nagios', 'nasa_search','NASA Search', 'netestate ne crawler','Website-Datenbank', 'netluchs','Netluchs', 'netsprint','NetSprint', 'newsgatoronline', 'NewsGator Online', 'nicebot','nicebot', 'nimblecrawler','NimbleCrawler', 'noxtrumbot','noxtrumbot', 'npbot','NPBot', 'loocalcrawler/nutch', 'LoocalCrawler/Nutch', 'nutchcvs','NutchCVS', 'nutchosu\-vlib','NutchOSU-VLIB', 'nutch','Nutch', 'ocelli','Ocelli', 'octora_beta_bot','Octora Beta Bot', 'omniexplorer[_+\s]bot','OmniExplorer Bot', 'onet\.pl[_+\s]sa','Onet.pl_SA', 'onfolio','Onfolio', 'opentaggerbot','OpenTaggerBot', 'openwebspider','OpenWebSpider', 'oracle_ultra_search','Oracle Ultra Search', 'orangebot', 'OrangeBot, no website, log entry specifies mail address', # support.orangebot@orange.com 'orbiter','Orbiter', 'yodaobot','OutfoxBot/YodaoBot', 'qihoobot','QihooBot', 'passwordmaker\.org','passwordmaker.org', 'pear_http_request_class','PEAR HTTP Request class', 'peerbot','PEERbot', 'perman', 'Perman surfer', 'php[_+\s]version[_+\s]tracker','PHP version tracker', 'phpcrawl', 'PHPCrawl', 'picmole', 'Specified address www.picmole.com was not reachable on April 21, 2014', 'pictureofinternet','PictureOfInternet', 'ping\.blo\.gs','ping.blo.gs', 'plinki','plinki', 'pluckfeedcrawler','PluckFeedCrawler', 'pogodak','Pogodak.com', 'pompos','Pompos', 'popdexter','Popdexter', 'port_huron_labs','Port Huron Labs', 'postfavorites','PostFavorites', 'projectwf\-java\-test\-crawler','ProjectWF-java-test-crawler', 'proodlebot','proodleBot', 'publiclibraryarchive', 'publiclibraryarchive.org (related to spiderlytics.com and/or waybackarchive.org?)', #Observations 2014-06-23 #Domain publiclibraryarchive.org is parked at GoDaddy.com #from https://www.projecthoneypot.org/ #81.30.151.220's User Agent Strings (honeypot classified this ip as an mail server, active about 6 years ago) #Mozilla/5.0 (compatible; publiclibraryarchive.org/1.0; +crawl@publiclibraryarchive.org) #176.9.138.27's User Agent Strings #Mozilla/5.0 (compatible; publiclibraryarchive.org/1.0; +crawl@publiclibraryarchive.org) #Mozilla/5.0 (compatible; Spiderlytics/1.0; +spider@spiderlytics.com) #Mozilla/5.0 (compatible; waybackarchive.org/1.0; +spider@waybackarchive.org) #146.0.32.165's User Agent Strings #Mozilla/5.0 (compatible; publiclibraryarchive.org/1.0; +crawl@publiclibraryarchive.org) #Mozilla/5.0 (compatible; savetheworldheritage.org/1.0; +crawl@savetheworldheritage.org) 'pyquery','PyQuery', 'rambler','StackRambler', 'redalert','Red Alert', 'relevantnoise\.com', 'Relevant Noise', 'rogerbot', 'Rogerbot', 'rojo','RoJo aggregator', 'rssimagesbot','rssImagesBot', 'ruffle','ruffle SemanticWeb crawler', 'rufusbot','RufusBot Rufus Web Miner', 'sandcrawler','SandCrawler (Microsoft)', 'savetheworldheritage', 'savetheworldheritage.org (related to spiderlytics.com, waybackarchive.org and/or publiclibraryarchive.org?)', 'sbider','SBIder', 'schizozilla','Schizozilla', 'scumbot','Scumbot', 'searchguild[_+\s]dmoz[_+\s]experiment','SearchGuild_DMOZ_Experiment', 'searchmetricsbot','SearchmetricsBot', 'seekbot','Seekbot', 'semrushbot', 'SemrushBot', 'sensis_web_crawler','Sensis Web Crawler', 'seodiver', 'SEO DIVER', 'seokicks\.de', 'SEOkicks Webcrawler', 'seznambot','SeznamBot', 'shim\-crawler','Shim-Crawler', 'shoutcast','Shoutcast Directory Service', 'sitedomain-bot', 'Sitedomain.de', 'siteexplorer\.info', 'Site Explorer', 'slysearch','SlySearch', 'smtbot', 'SMTBot', 'snap\.com_beta_crawler','snap.com beta crawler', 'sohu\-search','sohu-search', 'sohu','sohu agent', 'snappy','Snappy', 'spbot', 'SEOprofiler Bot', 'sphere_scout','Sphere Scout', 'spip','SPIP', 'sproose_crawler','sproose crawler', 'ssearch_bot', 'sSearch Crawler', 'steroid__download','STEROID Download', 'steeler','Steeler', 'stq_bot', 'SEARCHTEQ', 'suchfin\-bot','Suchfin-Bot', 'superbot','SuperBot', 'surveybot','SurveyBot', 'susie','Susie', 'syndic8','Syndic8', 'syndicapi','SyndicAPI', 'synoobot','SynooBot', 'tcl_http_client_package','Tcl http client package', 'technoratibot', 'Technoratibot', 'teragramcrawlersurf','TeragramCrawlerSURF', 'test_crawler','Test Crawler', 'testbot','TestBot', 't\-h\-u\-n\-d\-e\-r\-s\-t\-o\-n\-e','T-H-U-N-D-E-R-S-T-O-N-E', 'topicblogs', 'topicblogs', 'turnitinbot', 'Turn It In', 'turtle', 'Turtle', 'turtlescanner', 'Turtle', 'tutorgigbot','TutorGigBot', 'twiceler','twiceler', 'ubicrawler','UbiCrawler', 'ultraseek', 'Ultraseek', 'unchaos_bot_hybrid_web_search_engine','UnChaos Bot Hybrid Web Search Engine', 'unido\-bot','unido-bot', 'unisterbot', 'UnisterBot; E-Mail only: crawler (at) unister.de', 'updated','updated', 'ustc\-semantic\-group','USTC-Semantic-Group', 'vagabondo\-wap','Vagabondo-WAP', 'vagabondo','Vagabondo', 'vermut','Vermut', 'versus_crawler_from_eda\.baykan@epfl\.ch','versus crawler from eda.baykan@epfl.ch', 'vespa_crawler','Vespa Crawler', 'vortex','VORTEX', 'vse\/','VSE', 'w3c\-checklink','W3C Link Checker', 'w3c[_+\s]css[_+\s]validator[_+\s]jfouffa', 'W3C jigsaw CSS Validator', 'w3c_validator','W3C Validator', 'watchmouse', 'WatchMouse Website Monitor', 'wavefire','Wavefire', 'waybackarchive\.org', 'No website, email: spider(at)waybackarchive.org', # 2.12.2013 Project Honeypot reports at least one of the IPs used by waybackarchive with a spiderlytics UA string. # Problably not related to the wayback machine of archive.org. 'webclipping\.com', 'WebClipping.com', 'webcompass', 'webcompass', 'webcrawl\.net','webcrawl.net', 'web_downloader','Web Downloader', 'webdup','Webdup', 'webfilter','WebFilter', 'webindexer','WebIndexer', 'webminer','WebMiner', 'website[_+\s]monitoring[_+\s]bot','Website_Monitoring_Bot', 'webvulncrawl', 'WebVulnCrawl', 'wells_search','Wells Search', 'wesee:search', 'WeSEE Bot', 'wevikabot', 'WeViKa', 'wonderer', 'Web Wombat Redback Spider', 'wotbox', 'Wotbox', 'wume_crawler','wume crawler', 'wwweasel',,'WWWeasel', 'xenu\'s_link_sleuth','Xenu Link Sleuth', 'xenu_link_sleuth','Xenu Link Sleuth', 'xirq','xirq', 'xovibot', 'XoviBot', 'y!j', 'Y!J Yahoo Japan', 'yacy', 'YaCy', 'yahoo\-blogs','Yahoo-Blogs', 'yahoo\-verticalcrawler', 'Yahoo Vertical Crawler', 'yahoofeedseeker', 'Yahoo Feed Seeker', 'yahooseeker\-testing', 'YahooSeeker-Testing', 'yahooseeker', 'YahooSeeker Yahoo! Blog crawler', 'yahoo\-mmcrawler', 'Yahoo-MMCrawler', 'yahoo!_mindset','Yahoo! Mindset', 'yandex', 'Yandex Bot', 'flexum', 'Flexum Search Engine', 'yanga', 'Yanga WorldSearch Bot', 'yet-another-spider','Yet-Another-Spider', 'yooglifetchagent','yoogliFetchAgent', 'z\-add_link_checker','Z-Add Link Checker', 'zealbot','ZealBot', 'zhuaxia','ZhuaXia', 'zspider','zspider', 'zeus','Zeus Webster Pro', 'zumbot','ZumBot', 'ng\/1\.','NG 1.x (Exalead)', # put at end to avoid false positive 'ng\/2\.','NG 2.x (Exalead)', # put at end to avoid false positive 'exabot','Exabot', # put at end to avoid false positive # Other id that are 99% of robots 'wget','WGet tools', 'libwww','Perl tool', '^java\/[0-9]','Java (Often spam bot)', # put at end to avoid false positive # Generic robot 'robot', 'Unknown robot (identified by \'robot\')', 'checker', 'Unknown robot (identified by \'checker\')', 'crawl', 'Unknown robot (identified by \'crawl\')', 'discovery', 'Unknown robot (identified by \'discovery\')', 'hunter', 'Unknown robot (identified by \'hunter\')', 'scanner', 'Unknown robot (identified by \'scanner\')', 'spider', 'Unknown robot (identified by \'spider\')', 'sucker', 'Unknown robot (identified by \'sucker\')', 'bot[\s_+:,\.\;\/\\\-]', 'Unknown robot (identified by \'bot\' followed by a space or one of the following characters _+:,.;/\-)', '[\s_+:,\.\;\/\\\-]bot', 'Unknown robot (identified by a space or one of the characters _+:,.;/\- followed by \'bot\')', 'curl', 'Common *nix tool for automating web document retireval. Most likely a bot.', 'php', 'A PHP script', 'ruby\/', 'Ruby script', # Additional bots found by Sussex. '^[1-3]$', 'Generic bot identified as "1", "2" or "3"', 'alltop', 'alltop', 'applesyndication', 'applesyndication', 'asynchttpclient', 'asynchttpclient', 'bingbot', 'Bingbot', 'blogged_crawl', 'blogged_crawl', 'bloglovin', 'bloglovin', 'butterfly', 'butterfly', 'buzztracker', 'buzztracker', 'carpathia', 'carpathia', 'catbot', 'catbot', 'chattertrap', 'chattertrap', 'check_http', 'check_http (nagios)', 'coldfusion', 'coldfusion', 'covario', 'covario', 'daylifefeedfetcher', 'daylifefeedfetcher', 'discobot', 'discobot', 'dlvr\.it', 'dlvr.it', 'dreamwidth', 'dreamwidth', 'drupal', 'Drupal Site', 'ezoom', 'ezoom', 'feedmyinbox', 'feedmyinbox', 'feedroll\.com', 'feedroll.com', 'feedzira', 'feedzira', 'fever\/', 'Feed a Fever', 'freenews', 'freenews', 'geohasher', 'geohasher', 'hanrss', 'hanrss', 'inagist', 'inagist', 'jacobin club', 'jacobin club', 'jakarta', 'jakarta', 'js\-kit', 'js-kit', 'largesmall crawler', 'largesmall crawler', 'linkedinbot', 'linkedinbot', 'longurl', 'longurl', 'metauri', 'metauri', 'microsoft\-webdav\-miniredir', 'microsoft-webdav-miniredir', '^motorola$', 'Suspected Bot masquerading as "Motorola"', 'movabletype', 'movabletype', '^mozilla\/3\.0\s\(compatible$', 'Suspected bot masqurading as Mozilla', '^mozilla\/4\.0$', 'Suspected bot masqurading as Mozilla', '^mozilla\/4\.0\s\(compatible;\)$', 'Suspected bot masqurading as Mozilla', '^mozilla\/5\.0$', 'Suspected bot masqurading as Mozilla', '^mozilla\/5\.0\s\(compatible;$', 'Suspected bot masqurading as Mozilla', '^mozilla\/5\.0\s\(en\-us\)$', 'Suspected bot masqurading as Mozilla', '^mozilla\/5\.0\sfirefox\/3\.0\.5$', 'Suspected bot masqurading as Mozilla', '^msie', 'Suspected bot masquerading as M$ IE', 'netnewswire', 'netnewswire', ' netseer ', 'Net Seer', 'netvibes', 'netvibes', 'newrelicpinger', 'newrelicpinger', 'newsfox', 'Fox News', 'nextgensearchbot', 'nextgensearchbot', 'ning', 'ning', 'pingdom', 'pingdom', 'pita', 'pita (pain in the ass?)', 'postpost', 'postpost', 'postrank', 'postrank', 'printfulbot', 'printfulbot', 'protopage', 'protopage', 'proximic', 'Proximic Spider', 'quipply', 'quipply', 'r6\_', 'Radian 6 Crawler', 'ratingburner', 'ratingburner', 'regator', 'regator', 'rome client', 'rome client', 'rpt\-httpclient', 'rpt-httpclient', 'rssgraffiti', 'rssgraffiti', 'sage\+\+', 'sage++', 'scoutjet', 'ScoutJet crawler for Blekko.', 'simplepie', 'simplepie', 'sitebot', 'sitebot', 'summify\.com', 'summify.com', 'superfeedr', 'superfeedr', 'synthesio', 'synthesio', 'teoma', 'teoma', 'topblogsinfo', 'topblogsinfo', 'topix\.net', 'topix.net', 'trapit', 'trapit', 'trileet', 'trileet', 'tweetedtimes', 'The Tweeted Times', 'twisted pagegetter', 'twisted pagegetter', 'twitterbot', 'twitterbot', 'twitterfeed', 'twitterfeed', 'unwindfetchor', 'unwindfetchor', 'wazzup', 'wazzup', 'windows\-rss\-platform', 'windows-rss-platform', 'wiumi', 'wiumi', 'xydo', 'xydo', 'yahoo! slurp', 'Additional Yahoo bots.', 'yahoo pipes', 'Additional Yahoo bots.', 'yahoo\-newscrawler', 'Additional Yahoo bots.', 'yahoocachesystem', 'Additional Yahoo bots.', 'yahooexternalcache', 'Additional Yahoo bots.', 'yahoo! searchmonkey', 'Additional Yahoo bots.', 'yahooysmcm', 'Additional Yahoo bots.', 'yammer', 'yammer', #'yandexbot', 'yandexbot', #already covered by 'yandex' 'yeti', 'yeti', 'yie8', 'yie8', 'youdao', 'youdao', 'yourls', 'yourls', 'zemanta', 'zemanta', 'zend_http_client', 'Zend Http Client', 'no_user_agent','Unknown robot (identified by empty user agent string)', # Unknown robots identified by hit on robots.txt 'unknown', 'Unknown robot (identified by hit on \'robots.txt\')' ); # RobotsAffiliateLib # This list try to tell by which Search Engine a robot is used #------------------------------------------------------------- %RobotsAffiliateLib = ( 'bingpreview'=>'Bing', 'fast\-webcrawler'=>'AllTheWeb', 'googlebot'=>'Google', 'google\-sitemap'=>'Google', 'google[_+\s]web[_+\s]preview'=>'Google', 'msnbot'=>'MSN', 'nutch'=>'Looksmart', 'scooter'=>'AltaVista', 'wisenutbot'=>'Looksmart', 'yahoo\-blogs'=>'Yahoo', 'yahoo\-verticalcrawler'=>'Yahoo', 'yahoofeedseeker'=>'Yahoo', 'yahooseeker\-testing'=>'Yahoo', 'yahooseeker'=>'Yahoo', 'yahoo\-mmcrawler'=>'Yahoo', 'yahoo!_mindset'=>'Yahoo', 'zyborg'=>'Looksmart', 'cfetch'=>'Kosmix', '^voyager\/'=>'Kosmix', # Additional bots found by Sussex. 'feedfetcher\-google'=>'Google', 'bingbot'=>'MSN', 'twitterbot'=>'Twitter', 'twitterfeed'=>'Twitter', 'yahoo! slurp'=>'Yahoo', 'yahoo pipes'=>'Yahoo', 'yahoo-newscrawler'=>'Yahoo', 'yahoocachesystem'=>'Yahoo', 'yahooexternalcache'=>'Yahoo', 'yahoo! searchmonkey'=>'Yahoo', 'yahooysmcm'=>'Yahoo' ); 1; awstats-7.4/wwwroot/cgi-bin/lib/blacklist.txt0000640000175000017500000016254112410217071017205 0ustar sksk# # MT-Blacklist Master Copy # # Last update: 2005/08/26 10:18:13 # Number of entries: 3117 # # This is the master copy of the MT-Blacklist plugin # spammer blacklist. You can import this file through # the Add screen in the plugin web interface. # # You can find out more about this file at: # http://www.jayallen.org/comment_spam/ # # You can find out more about MT-Blacklist at # http://www.jayallen.org/projects/mt-blacklist # ([\w\-_.]+\.)?(l(so|os)tr)\.[a-z]{2,} # Catchall regex for lsotr.xxx and lostr.xxx with or without a subdomain (blow)[\w\-_.]*job[\w\-_.]*\.[a-z]{2,} # This stops a whole slew of domain name variations relating to -- well -- you know... (buy)[\w\-_.]*online[\w\-_.]*\.[a-z]{2,} # Catchall regexp for many spam sites (diet|penis)[\w\-_.]*(pills|enlargement)[\w\-_.]*\.[a-z]{2,} # Catchall regexp for many spam sites (i|la)-sonneries?[\w\-_.]*\.[a-z]{2,} (levitra|lolita|phentermine|viagra|vig-?rx|zyban|valtex|xenical|adipex|meridia\b)[\w\-_.]*\.[a-z]{2,} # Super regexp for domains containing levitra, lolita, phentermine, viagra, vigrx, vig-rx, zyban, valtex, xenical, adipex and meridia (magazine)[\w\-_.]*(finder|netfirms)[\w\-_.]*\.[a-z]{2,} (mike)[\w\-_.]*apartment[\w\-_.]*\.[a-z]{2,} # Catchall regexp for Mike's Apartment variations (milf)[\w\-_.]*(hunter|moms|fucking)[\w\-_.]*\.[a-z]{2,} (online)[\w\-_.]*casino[\w\-_.]*\.[a-z]{2,} # Catchall regexp for a hundred online casino sites (prozac|zoloft|xanax|valium|hydrocodone|vicodin|paxil|vioxx)[\w\-_.]*\.[a-z]{2,} # Super regexp for domains containing prozac, zoloft, xanax, valium, hydrocodone, vicodin, paxil, vioxx (ragazze)-?\w+\.[a-z]{2,} # Catchall regexp for many spam sites (ultram\b|\btenuate|tramadol|pheromones|phendimetrazine|ionamin|ortho.?tricyclen|retin.?a\b)[\w\-_.]*\.[a-z]{2,} # Third drug super regexp (valtrex|zyrtec|\bhgh\b|ambien\b|flonase|allegra|didrex|renova\b|bontril|nexium)[\w\-_.]*\.[a-z]{2,} # Fourth drug super regexp -4-you.info -4u.info -mobile-phones.org -site.info .gb.com .lycos.de .static.net 01-beltonen.com 01-klingeltoene.at 01-klingeltoene.de 01-loghi.com 01-logo.com 01-logot.com 01-logotyper.com 01-melodia.com 01-melodias.com 01-ringetone.com 01-ringsignaler.com 01-ringtone.com 01-ringtones.us 01-soittoaanet.com 01-suonerie.com 01-toque.com 01ringtones.co.uk 0adult-cartoon.com 0adult-manga.com 0cartoon-porn.com 0cartoon-sex.com 0cartoon.com 0casino-online.com 0casinoonline.com 0catch.com 0free-hentai.com 0freehentai.com 0hentai-anime.com 0hentai-manga.com 0hentaimanga.com 0internet-casino.com 0livesex.com 0manga-porno.com 0manga-sesso.com 0manga.com 0sesso-amatoriale.com 0sesso-orale.biz 0sesso.biz 0sesso.us 0sessoanale.com 0sessogratis.us 0sex-toons.com 0sfondi-desktop.com 0sfondi.com 0suonerie.com 0tatuaggi.com 0toons.com 0video-porno.com 0virtual-casino.com 0xxx-cartoon.com 1-bignaturals.com 1-cumfiesta.com 1-klingeltone.com 1-online-poker.us 1-poker-games.biz 1-welivetogether.com 1-wholesale-distributor.com 100-sex.com 100free.com 100hgh.com 101pills.com 108bikes.com 123-home-improvement-equity-loans.com 123-sign-making-equipment-and-supplies.com 123onlinepoker.com 123sessogratis.com 125mb.com 15668.com 16pp.com 1a1merchantaccounts.com 1asphost.com 1concerttickets.com 1footballtickets.com 1freespot.com 1on8.co.uk 1on8.com 1st-advantage-credit-repair.com 1st-auto-insurance-4u.com 1st-host.org 1st-payday-loans.net 1st-phonecard.com 1st-poker-online.com 1st-printer-ink-cartridge.com 1st-shemale-sex.com 1stincomeracing.co.uk 1stindustrialdirectory.com 1stlookcd.com 1xp6z.com 20fr.com 216.130.167.230 24-hour-fitness-online.com 247-rx.net 2ndmortgageinterestrates.com 2teens.net 2twinks.com 2y.net 2zj.cn 3-day-diet-plan.com 321cigarettes.com 333-casino.com 333-poker.com 3333.ws 365jp.com 38ha.com 3host.com 3sixtyfour.com 3yaoi.com 404host.com 404servers.com 41b.net 42tower.ws 444-casino.com 444-poker.com 4hs8.com 4mg.com 4result.net 4u-topshelfpussy.com 4womenoftheworld.com 51.net 51asa.com 555-poker.com 5amateurs.com 65.217.108.182 666-casino.com 666-gambling.com 69.61.11.163 6p.org.uk 6x.to 7host.com 7p.org.uk 7yardsweb.com 888-online-poker.com 888cas.com 888jack.com 88aabb.com 8bit.co.uk 8gold.com 8k.com 8th\S*street\S*latina\S*\.[a-z]{2,} 8yardsweb.com 911easymoney.com 911pills.info 989888.com 9p.org.uk \bby\.ru\b \bda\.ru\b \bde\.gg\b \bde\.nr\b \bde\.tc\b \bde\.tp\b \bgo\.ro\b a--e.com a-1-versicherungsvergleich.de a-pics.net a-purfectdream-expression.com a-stories.com a1-mortgage-finder.com a1cellphoneaccessories.info a1digitalcameras.info a1metalbuildings.info a1steelbuildings.info a1timemanagement.info abc3x.com abnehmen-ganz-sicher.com abocams.de aboutgrouphomes.com abymetro.org.uk academyofmusic.us acceptcreditcardsonlineinternetmerchantaccountservices.com acceptcreditcardsrealtime.com accompagnatrici.cc achtung.hopto.org acornfm.com acornwebdesign.co.uk acrs.us activerx.com acyclovir.net addictinggames.com aducasher.spb.ru adult-dvd-dot.com adult-dvds-dot.com adult-free-webcams.com adult-friend.info adult-games.name adult-manga.org adult-porno.us adultfreehosting.com adultfriendfinder.com adultfriendfindernow.com adultfriendfindersite.com adultfriendsite.com adulthostpro.com adultlingerieuk.com adultnonstop.com adultporncentral.net adultserviceproviders.com adultshare.com advantage-quotes.com aektschen.de aesthetics.co.il affilino.net afreeserver.com ahbabe.com aimite.com airfare-links.net airshow-china.com.cn alawna.blogspot.com all-calmortgage.com all-debt-consolidation.org all-fioricet.com all-gay-porn.us all-poker-online all-we-live-together.com allago.de allfind.us allinsurancetype.com allmagic.ru alloha.info allohaweb.com allthediets.com allthroating.com almacenpc.com alphacarolinas.org alright.com.ru alumnicards.com amateur-lesbian.us amateur-movie.us amateur-naked.us amateur-porn-gallery.com amateur-porno.us amateur-site.us amateur-thumbnail.com amateur-thumbs.net amateurjerkoff.org amateurs-xxx.us amateurs.r00m.com amateursuite.com amazing-satellite-tv-deals.info americacashfast.com american-single-dating.com americancdduplication.com americanpaydayloans.net americastgp.com amoxicillin-online.net anal-sex-pictures.us analloverz.com andyedf.de angenehmen-aufenthalt.de animal-fuck.org animal-porn.ws animalsex-movies-archive.com animalsex-pics-gallery.com anime-adult.us anime-hentai-porn.com anime-manga.us anime-porn-sex-xxx.com anime-porn.name anime-sex-cartoon-porn.com annunci-coppie.net annunci-erotici.net annunci-erotici.org annunci-personali.org annunci-sesso.org annunci-sesso.us annuncisesso.us anonsi.com anonymous-blogger.com ansar-u-deen.org anti-exploit.com anticlick.com.ru anuntisinmobiliaria.com anxietydisorders.biz anylight4u.com anything4health.com anzwers.org aol-com.us ap8.com apecceosummit2003.com apollopatch.com apornhost.com apply-to-green-card.org appollo.org approval-loan.com aquari.ru aquatyca.net arcsecurity.co.uk area-code-npa-nxx.com argendrom.com armor2net.com aromacc.com artsculpture.org aseman.weblogs.us asian-girls-porn-sex.com asian-girls.name asian-nude.blogspot.com asian-sex-woman.com asianbum.com ass-picture.us assserver.com at-capstone.com atkins-diet-center.com atkinsexpert.com atkpremium.net atkpremium.org atlanta2000.org atlas-pharmacy.com auctionmoneymakers.com auktions-uebersicht.de australia-online-travel.com austria-travels.info auto-insurance-links.net auto-loans-usa.biz autodetailproducts.com autodirektversicherung.com autofinanzierung-autokredit.de autofinanzierung-zum-festzins.de autohandelsmarktplatz.de autokredit-autofinanzierung.de autokredit-tipp.de automotive.com autumn-jade.com avon-one.com azian.org b-witchedcentral.co.uk ba2000.com babes-d.com babes-plus.com baby-perfekt.de babymarktplatz-aktiv.de back-room-facials.angelcities.com background-check.info backroom-facials.150m.com backseatbangers bad-movies.net bad-passion.com bahraichfun.com bali-dewadewi-tours.com bali-hotels.co.uk balidiscovery.org balivillas.net balltaas.com banialoba3w.150m.com banned-pics.com bannedhome.com barcodes.cn bare.org barely-legal-teenb.com barely-legald.com barelylegalgirlsex.com bargainfindsonebay.com bargeld-tipp.de basi-musicali.com basketball--betting.net bast3.ru batukaru\.[a-z]{2,} bbwclips.com bccinet.org bdsm-story.blogspot.com beastiality-animal-sex-stories.com beastiality-stories.net beastsex-movies.com beauty-farm.net bedding-etc.com belinking.com belle-donne.biz belle-ragazze.net belle-ragazze.org belleragazze.biz belleragazze.org bellissime-donne.com bellissime-donne.net bellissimedonne.com bellissimedonne.org beltonen-logos-spel.com benessere.us berwickfoundation.org best-buy-cialis.com best-cell-phone-batteries.info best-cialis-source.com best-deals-blackjack.info best-deals-casino.info best-deals-cheap-airline-tickets.info best-deals-diet.info best-deals-flowers.info best-deals-hotels.info best-deals-online-gambling.info best-deals-online-poker.info best-deals-poker.info best-deals-roulette.info best-deals-weight-loss.info best-e-site.com best-gambling.biz best-high-speed-internet.com best-internet-bingo.com best-pharmacy.us best-result-fast.com bestasianteens.com bestdims.com bestdvdclubs.com bestgamblinghouseonline.com besthandever.com bestiality-pics.org bestialitylinks.org bestits.net bestlowmortgagerates bestonline-medication.com bestonline-medication.net bestonline-shopping.com bestpornhost.com bet-on-horseracing.com beverlyhillspimpandhos.com beverlyhillspimpsandhos.com biexperience.org big-black-butts.net big-breast-success.com big-hooters.net big-natural-boobs.us big-naturals-4u.com big-rant.com bigbras-club.com bigmag.com.ua bigmoms.com bigtitchaz.com bigyonet.com bildmitteilung.us billigfluege-billige-fluege.de bingo-net.com bio-snoop.com birth-control-links.com bizhat.com bj-cas.cn bj-fyhj.com bj-hchy.com bjerwai.com bjgift.com bjkhp.com bjxhjy.com bla5.com black-amateur-cock.net black-dick-white-slut.com black-girls.blowsearch.ws black-jack-4u.net black-jack-trx.com blackbusty.com blackjack-123.com blackjack-21.ws blackjack-4u.net blackjack-777.net blackjack-8.com blackjack-dot.com blackjack-homepage.com blackjack-p.com blackjack-play-blackjack.com blackjack-winner.net blackjack.fm blackjack777.net blackjacksite.net blahblah.tk blk-web.de bllogspot.com blog-tips.com bloglabs.biz blogman.biz blogmen.net blogspam.org blonde-pussy.us blonde-video.us blonde-xxx.us blondes2fuck.com blumengruss-onlineshop.de blumenshop-versand.de bnetsol.com body-jewelry.reestr.net body-piercing.softinterop.com bodyjock.com bon-referencement.com bondage-story.blogspot.com boobmorning.com boobspost.com booktextone.com boom.ru borindonaragara.com boysgonebad.net brazilbang.biz breast-augmentation.top-big-tits.com briana-banks-dot.com british-hardcore.net bszz.com bueroversand-xxl.de bugaboo-stroller.com build-penis.com bulkemailsoft.com burningcar.net burundonamagara.com business-grants.org business-web-site.net businessgrants.biz busty-models.us bustyangelique.com bustydustystash.com bustykerrymarie.com butalbital.org buy-2005-top.com buy-2005.com buy-adult-sex-toys.com buy-adult-toys.biz buy-car-insurance-4-us.com buy-ceramics.com buy-cheapest-lexapro-side-effects-noprescription.biz buy-cialis.ws buy-computer-memory.net buy-computer.us buy-discount-airline-tickets.com buy-laptop.biz buy-rx-usa.com buy-sex-toys.net buycheapcialis buycheappills.net buyhgh buylipitor buyprilosec buystuffpayless.com buyzocor byronbayinternet.com c-start.net ca-america.com ca-s-ino.com calendari-donne.com calendari-donne.net calendaridonne.com calendaridonne.net california-real-estate-sale.com callingcardchoice.com cambridgetherapynotebook.co.uk camemberts.org canadianlabels.net cantwell2000.com canzoni-italiane.com canzoni-italiane.net canzoni-italiane.org canzoni-karaoke.com canzoni-mp3.com canzoni-mp3.us canzoni-musica.com canzoni.cc canzonisanremo.com canzonistraniere.com capital-credit-cards.com capquella.com captain-stabbin-4u.com captain-stabbin.blogspot.com car-financing-low-rates.biz car-fuck.net car-rental-links.com car-rental-search.com car-rentals-2go.com card-games-tfx.com cardsloansmortgages.com caribbean-poker-web.com carnalhost.com carnumbers.ru cars-links.com cartoni-animati.com cartoni-hentai.com cartoni-hentai.net cartoni-hentai.org cartoni-porno.com cartonierotici.com cartonigiapponesi.com cartonihentai.net cartopia.com cas7.net cash-advance-quick.com cashadvanceclub.com casino-bet-casino.com casino-cash.net casino-en-ligne.fr.vu casino-game-trx.com casino-games-4-us.com casino-games-i.com casino-gaming-trx.com casino-in-linea.it.st casino-jp.com casino-on-net.com casino-online-i.com casino-online-on-line.com casino-onnet-bonus.com casino-slot.ws casino-wins.net casino.150m.com casino.menegum.co.uk casino747.net casinochique.com casinoequipmentsalesandrental.com casinolasvegas-online.com casinoplaces.net casinos-8.com casinos-jp.com casinos-plus.com castingagentur2004.de catchathief.org cbitech.com ccie-ccnie.com ccie130.com ccna-ccna.com ccna130.com ccnp-ccnp.com ccnp130.com cds-xxl.de cdshop-guenstig.de celebrexonline.us celebritylust.blog-city.com celebritypics.ws celebskin.com celebtastic.com cell-phone-accessories-dot.com ceramics-store.com certificationking.net certified-new-autos.com certified-new-cars.com certified-new-suvs.com certified-used-cars.com certified-used-suvs.com cesew.org charisma.dyndns.dk chat-l.de chatten.bilder-j.de chauffeurtours.co.uk cheap-adult-sex-toys.com cheap-airfare-airline-ticket.com cheap-celebrex-prescriptions.com cheap-christmas-gifts.co.uk cheap-cigarettes.com cheap-laptop-notebook.netdims.com cheap-online-pharmacy.org cheap-pills-online.com cheap-web-hosting-companies.com cheapacyclovir.com cheapcodeine.biz cheapdrugpharmacy.com cheaper-digital-cameras.uk.com cheaper-loans.eu.com cheapest-pills-online.com cheapgenericsoma.info cheapsomaonline.biz cheaptabs.envy.nu checkmeds.com cherrybrady.com chickz.com chillout.bpa.nu chinaaircatering.com chinagoldcoininc.com chineseapesattack chloesworld.com choose-online-university.com chrislaker.co.uk christmas-casino.spb.ru cialis-buy.com cialis-dot.com cialis-express.com cialis-weekend-pills.com cialis.homeip.net cialisapcalis.com cialisnetwork.com cialisusa.bravehost.com ciscochina.com clamber.de clanbov.com classifiche-italiane.org classifiche-musicali.com classifiche-musicali.net classifiche-musicali.org classifichemusicali.com claudiachristian.co.uk claypokerchips-claypokerchips.com cleanadulthost.com cleannbright.co.uk click-or-not.de click-poker.com clophillac.org.uk closed-network.com club-online-poker club69.net clubatlantiscasino.com cmeontv.de cnbjflower.com cngangqiu.com cntoplead.com coed-girls.com coffee-delivered.com college-girl-pic.com college-links.net college-scholarships-grants.biz combaltec.com comeback.com cometojapan.com cometomalaysia.com cometosingapore.com cometothailand.com completelycars.com completelyherbal.com comptershops-online.de computer-onlinebestellung.de computer-und-erotische-spiele-download.com computerversand-xxl.de condodream.com condosee.com conjuratia.com consolidate-debt-usa.net consolidation-loans.com container-partner.de cool-extreme.com cool-mix.com cool-poker.com coolp.biz coolp.net coolp.org coresleep.com cosmeticsurgery.us cosmeticsurgery.us.com couponmountain.com cover-your-feet.com crazyfrog.wtf.la creamfilledholes.biz credit-cards-credit-cards-credit-cards.net credit-factor.com credit-links.net credit-loans-2005.com credit-report-links.net creditcardpost.com creditrepairsoft.com creditsharpie.com crepesuzette.com crescentarian.net crpublish.com cum-facials.us cumfiesta-4u.com cumfietavideos.com cumlogin.com customer-reviews.org cutpricepills.com cyberfreehost.com cycatki.com cyclo-cross.co.uk cykanax.com dad-daughter-incest.com daiiuvwx.com dailyliving.info dallmayr.de damianer.top-100.pl danni.com darest.de darkangelclan.com darzgx.com datestop.net dating-choice.com dating-harmony.com dating-online-dating.org dating-service-dating.com dating-services-dating-service.com dating999 dating999.com davidtaylor.topcities.com day4sex.com de.hm de\.sr debt-consolidation-i debt-consolidation-i.biz debt-consolidation-kick-a.com debt-consolidation-low-rates.biz debt-consolidation-now-online.com debt-disappear.com debt-help-bill-consolidation-elimination.com debt-solution-tips.com debtconsolidationfirm.net debtconsolidationloans debtconsolidationusa.org debtmanagementcompanyonline.com dedichepersonali.com deep-ice.com deikmann.de dental-insurance-plan.freeservers.com dental-plan-source dentalinsurancehealth.com department-storez.com design4u.ws desiraesworld.com deutschlandweite-immobilienangebote.de devilofnights.net devilofnights.org devon-daniels.com devonanal.com dia-host.com dianepoppos.com diarypeople.com dick-deputy.com diecastdot.com diet-doctor.net diet-pills-now dieta-dimagrante.net dieta-mediterranea.net dieta-zona.com dieta.cc diete-dimagranti.com diete.bz diethost.net dieting-review.com dietpage.net dietpatchformula.com dietrest.com diets-health.com diets-plan.net dietway.net digital-projector.net digitale-teile.de digitaltwist.co.uk direct-contact.com direct-deals-for-you.info direct-tv-for-free.com direct-tv-online.com directcarrental.com directcti.com directrape.com directringtones.com dirty-story.blogspot.com discount-airfares-guide.com discount-cheap-dental-insurance.com discount-life-insurance.us discountprinterrefill.com discoveryofusa.com dish-network-w.com dish-network.org disigncn.com disney-hentai.org divorce-links.com dlctc.com dnpose.com dns110.com dns2008.cn dogfartmovieclips.com dogfartmovieclips.com dogolz.de domkino.com.ua donne-belle.net donne-famose.biz donne-muscolose.net donne-muscolose.org donne-nere.net donne-nere.org donne-nude.biz donne-porche.com donne-vogliose.com donne.bz donnebelle.net donnefamose.biz donnegrasse.org donnemature.biz donnemuscolose.com donnenere.com donnenere.net donnenude.biz donneporche.org donnesexy.org donnevogliose.net donnevogliose.org doo.pl doobu.com doorway-page-software dostweb.com dotcomup.com downloadzipcode.com dr\.ag dragonball-porno.com dragonball-x.biz dragonball-xxx.biz dragonballporno.net dragonballx.cc dragonballxxx.biz dressagehorseinternational.co.uk drive-backup.com drochka.com drugsexperts.com drugstore-online.us drugstore.st drunk-girls-flashing.com drunk-girls-party.us dunecliffesaunton.co.uk dvd-copier.info dvd-home-theatre.com dvd-top-shop.info dvd2.us dwoq.com dzwonki-polifoniczne-motorola.webpark.pl e--pics.com e-best-poker.com e-bookszone.com e-casino-bonus.com e-cialis.net e-credit-card-debt.com e-debt-consolidation-loans.com e-dental-insurance-plans e-dental-plans.com e-discus.com e-fioricet.com e-free-credit-reports.com e-hoodia-gordonii.com e-lemonlaw.com e-news.host.sk e-online-bingo.com e-order-propecia.com e-personalinjurylawyers e-personalinjurylawyers.com e-pills-buy.com e-play-bingo.com e-poker-games.info e-southbeachdiet.com e-top-pharmacy.com e-tutor.com e-virtual-casino.com e40.nl easy-application-credit-cards.com easygo.hn.org easyrecorder.com easyseek.us ebanking.info ebaybusiness.net ebloggy.com ebony-girls.angelcities.com ebony-xxx.us ebookers.co.uk ecblast.com eccentrix.com/members/casinotips echofourdesign.com eclexion.net ecologix.co.uk eddiereva.com edietplans.net edmontgomeryministries.org edpowerspasswords.com edrugstore.md education-line.com edwardbaskett.com effexor-web.com effexor.cc eggesfordhotel.co.uk egygift.com einfach-wunschgewicht.com elcenter-s.ru eldorado.com.ua electricscooterland.com electromark-uk.co.uk electronics-info.com elegant-candles.com elektronikshop-xxl.de elite-change.com elitecities.com emmasarah.com emmss.com enacre.net enjoy-blackjack.com enlargement-for-penis.com envoyer-des-fleurs.com eonsystems.com epaycash.com erbium12.com erosway.com erotic-free.com erotic-lesbian-story.blogspot.com erotic-video.us erotic4free.net erotische-geschichten-portal.com escort-links.net escorts-links.com esesso-gratis.com esmartdesign.com ethixsouthwest.com evananderson.topcities.com evanstonpl.org event-kalendarium.de everyvoice.net evromaster.ru exclaim4creditcardprocessingmerchantaccount.com exdrawings.com exoticdvds.co.uk exoticmoms.com expoze.com extrasms.de extreme-rape.org extreme-sex.org f-z-a.com f2g.net f2s.be fabida.net fabulos.de fabuloussextoys.com facial-skin-care-center.com family-incest-stories.com family-incest.us familydiet.org famousppl.me.uk fantasyfootballsportsbook.com farm-beastiality.com farmsx.com fast-cash-quick-money-easy-loan.com fast-fioricet.com fast-mortgage-4-u.com fasthost.tv fat-cash.com fat-lesbians.net fat-pussy-sex.net fateback.com fatty-liver.cn fatwarfare.com favilon.net fda.com.cn fearcrow.com federalgovernmentgrants.net feidenfurniture.com female-orgasms.org fidelityfunding.net fielit.de figa.nu film-porno.us film456.com filthserver.com final-fantasy-hentai.org finance-world.net finanzen-marktplatz.de find-cheap-dental-plans.com find-lesbian-porn.com find-u-that-mortgage.com findbestpills findbestpills.com findbookmakers.com finddatingsites.com findsexxx.us findyouruni.com finger-bobs.com fioricet-dot.com fioricet-online-here.com fioricet-web.com fioricet.batcave.net fioricet.bravehost.com fioricet.st fioricet4u first-poker.com first-time-story.blogspot.com firstchoicebanksandpremiercredit.com firsttimeaddition.com fishoilmiracle.com fitness-links.net fitnessx.net flafeber.com flatbedshipping.com fleshlight.org fleshlight.ro flexeril-web.com flirt08.de flowertobj.com fly-sky.com football--betting.net football-betting-nfl.com forceful.de foreskin-restoration.net forex-online-now.com forex.inc.ru forexintroducer.com forlovedones.com fortisenterprises.co.uk foto-gay.us foto-porno.us foto-porno.ws frangelicasplace.org frankpictures.com freak-view.com freakycheats.com free--online--poker free--online-poker.com free--online-poker.us free-adult-chat-room.com free-adult-check.com free-blackjack-game.us free-britney-spears-nude.biz free-casino-games free-casino-games-000 free-debt-consolidation-online.us free-fast.net free-games-links.com free-gay-video-clip.com free-hilton-paris-sex-video.com free-horoscopes.biz free-incest-stories-site.com free-net-sex.com free-online-poker free-paris-nikki-hilton.blogspot.com free-poker-download-i.com free-poker-great-value.com free-poker-rooms.us free-satellite-tv-directv-nocable.com free-satellite-tv-now.com free-teens-galleries.com free-texashold-em.us free-texasholdem.us free-traffic-generation.com freeadult.de freedvdplayer.cjb.net freeeads.co.uk freegovmoney.net freegovmoney.us freehostingpeople.com freehustlersex.com freeminimacs.com freenetshopper.com freenudegallery.org freepicsdaily.com freepornday.com freeteenpicsandmovies.com freeweb-hosting.com freewebpage.org freewebs.com freewhileshopping.com freshsexhosting.com friko.pl fsearch.dtdns.net fuck-animals.com full-access.net fumetti-porno.org fumettiporno.org furrios.de furry-kinks-looking.com furry-kinks-looking.net future-2000.net g4h5.com gaggingwhores.net gaggingwhores.org gagnerargent.com gainmoresize.com gals4all.com galsonbed.com gamble-on-football-online.com gambleguru.net gambling-a.us gambling-card.ws gambling-casinos-trx.com gambling-homepage.com gambling\Sgames.cc gamblingguidance.co.uk gamefinder.de games-advanced.de gang-rape.org gangbangbusgallery.com gargzdai.net garment-china.com gartenshopper.de garthfans.co.uk gay-asian-porn.com gay-b.com gay-boy.us gay-male-story.blogspot.com gay-nude.us gay-sex-videos.com gay-twinks-sex.com gay1ncest.com gayfamilyincest.net gayfunplaces.com gays-porno-men-twinks-boys-sex.biz gays-sex-gay-sex-gays.us gayx.us gb.com gdgc.org gelago.de gem2.de gemtienda.co.uk generic-propecia.net genimat.220v.org genimat.cjb.net geocities.com/alexgolddphumanrbriar geocities.com/avbmaxtirodpaulmatt geocities.com/brandtdleffmatthias7 geocities.com/cclibrannar_rover geocities.com/constpolonskaalniko7 geocities.com/forestavmiagdust geocities.com/free_satellite_tv_dish_system geocities.com/gehentaiqrst geocities.com/gematureqrst geocities.com/gerapeqrst geocities.com/ofconvbdemikqfolium geocities.com/pashkabandtvcom geocities.com/pautovalexasha_kagal geocities.com/reutovoalexeypetrovseverin5 geocities.com/timryancompassmedius gesundheit-total.com gesundheitsshop-kosmetik.de get-cell-phone-accessories.com get-free-catalogs.com get-freetrial.us get-hardcore-sex.com get-insurance-quotes.com get-satellite-tv-dish.com get-your-dish-tv.info get-zoo.com getaprescription.net getdomainsandhosting.com gethelp24x7.net getmoregiveless.com getrxscripts.biz getstarted24x7.net getyourlyrics.com gfind.de ghettoinc.com giantipps.de gifs-clipart-smiley.de giochi-hentai.com giochi-online.us giochix.com girls-get-crazy.org girlshost.net give-u-the-perfect-mortgage.com giveramp.com glendajackson.co.uk global-verreisen.de globalwebbrain.com glory-vision.com gloryhole-girls.angelcities.com glucophagepharmacy.com goapplyonline.com godere.org godwebdesign.com gogito.com gogof-ck.com gojerk.com goldpills.net gomvents.com gongi.pl goodlife2000-geheimtipp.com goodsexy.com goodtv.cn google163.net google8.net gorilka.atspace.com gotooa.com gotsw.net gourmondo.de govermentgrants.net government--grant.com government-federal-grants.com government-grants.org government-grants.ws governmentalgrants.com governmentfederalgrants.com governmentgrants.tv governmentgrants.ws governmentgrantsresources.com grannypictgp.com grannysexthumbs.com grants.biz grantseekerpro great-cialis.com great-dish-tv-deals.info greatnow.com greecehotels-discount.com green-tx.com greenwood.ddns.ms group-eurosex.com growtech.cn guardami.org guenstige-krankenversicherung.com guenstige-onlineshops.de guenstige-sportartikel.de guenstige-versicherungstarife.de gunit.gotdns.com guttermag.com hair-loss-cure-x.com hair-loss-cure.net hairy-pussy-sex.net hallo-tierfreund.de hand-job.us handjoblessons.org handmade2000.co.uk handsm.servehttp.com handwerksartikel-xxl.de handy-klingeltoene.eu.tp handysprueche.de handytone.us hangchen.cn hangchen.com happy-shopping-online.com happyagency.com hard-sex-teen.com hardcore-jpg.com hardcore-junky.us hardcore-pictures.us hardcore-porn-links.com hardcore-pussy.us hardcore-sex.bz hardcore-video.us hardcorecash.net hasslerenterprises.net hasslerenterprises.org hautesavoieimmobilier.com hchcinc.com hdic.net hdic.org headachetreatment.net health-pills-online.com health-pills.net healthmore.net healthrules.org heartbeatofhealing.org helpful-forum.com helpful-pills-blog.com hentai-anime.us hentai-gratis.us hentai-hard.com hentai-porno.us hentai-xxx.us hentaigratis.net hentaimanga.us hentaiplayground.com hentaix.net hentaixxx.us hentay.us herbal-source.net hermosa.us herpies.net heydo.com hghadvisor.com hghplanet.com hgxweb.de hi-finder.com high-risk-merchant-account.org highprofitclub.com hilton-nicky-paris.blogspot.com hion.cn hit-logo-klingelton.com hit-logo-ringetone.com hit-logo-ringtone.com hit-logo-suoneria.com hit-melodias.com hit-sonnerie.net hit-sonneries.com hits-logos-games.com hits-logos-klingeltone.com hitslogosgames.com hlopci.w5.pl hobbs-farm.com hold-em-big.com hold-pok.com holdem-texaspoker.com holding.errorworld.org home-design.ws home-equity-loans-mortgage-refinancing.com home-loans-inc.com home-style.ws home-videos.net home.pages.at home\.ro\b homelivecams.com homenetworkingsolutions.co.uk hometeaminspection.net hometeaminspection.org hoodia--gardonii.com hoodia.belleity.com horny-honey.com horny-world.com hornymoms.net hornypages.com horoskop-auswertung.de horse-racebetting.com horse-racing--betting.net horse-sex.ws hostingplus.com hostultra.com hot-cialis.com hot-escort-services.com hot-mates.info hot-naked-guys.net hotel-bordeaux.cjb.net hotelbookingserver.com hotelsaficionado.com hotelsplustours.com hotfunsingles.com hotsexys.com hotusa.org houseofsevengables.com how-quit-smoking.com how-to-play-poker-quick.com hq-pictures.org hs168.com hswin.com htmldiff.com huazhangmba.com humangrowthhormone.org hunksandbabes.com hustler.bz hustlerbarelylegalteen.com hustlerw.com hxlll.net hyper-sex.com hypnobabies.co.uk i--cialis.net i-black-jack.com i-butalbital-fioricet.com i-buy-mortgage.com i-directv.net i-dish-network.org i-flexeril.com i-free-poker.com i-horny.com i-ink-cartridges.com i-mortgage-online.com i-online-bingo.com i-online-poker.com i-play-bingo.com i-play-blackjack.com i-play-casino.com i-play-poker-online.biz i-play-poker-online.com i-play-poker-online.us i-play-poker.com i-skelaxin.com i-soma.net i-university-guide.com i-wellbutrin.com i-will-find-the-best-mortgage-lead.com i-win-bingo.com idebtconsolidation.org idp4u.com ifreepages.com iipgoulkdfghj.com illegalhome.com illegalspace.com im-naked.com imagenes-tops.com.mx imess.net imitrex-web.com immagini-hentai.org immobilien-auswaehlen.de immobilienangebote-auswahl.de immobilienmakler-angebote.de immobilienmakler-l.de immobilienmarkt-grundstuecke.de immobilierdessavoie.com imobissimo.com impotence-rx.biz in-the-vip.org inc-magazine.com incest-movies-download.com incest-photo.com incest-photos-archive.com incest-pics--incest.com incest-pics-gallery.com incest-reality.com incest-relations.com incest-stories-library.com incest-stories.biz incest-taboo.net incest-videos-collection.com inceststories.ws incredishop.com incsx.com indian-sex-porno-movies-stories.com indiasilk.biz indiasilktradition.com industrial-testing-equipment.com industrialresource.biz inescudna.com inexpensiverx.net infocenter-crm.com inforceable.com inforceables.com ingyensms.net ingyensms.org innfg.de insatiablepussy.com inside.afraid.org instant-quick-money-cash-advance-personal-loans-until-pay-day.com instantsatellite.com insurance-quotes-fast.com insurancecompanies4you.com insurancehere.net int-fed-aromatherapy.co.uk inter-ross.ru international-candle-shop.com international-cheese-shop.com internet-meds.biz internet-merchant-account-pro.com internet-poker-online-4-u.com internette-anbieter.de interracial-sex.ws inthevip-4u.com inthevip-sex.com intimplace.com intymnie.com inviare-mms.net invio-mms.us ipaddressworld.com ipharmacy.com # Catchall for many spam sites ipmotor.com ipsnihongo.org ipupdater.com irianjaya.co.uk irs-us.net isacommie.com iservice.eu.com isparkl.com itgo.com iul-online.de iwebbroker.com jack-x.com jade.bilder-i.de japan-partner.com jenniferconnor.com jewelry4navel.com jfcadvocacy.net jinlong.co.uk jmsimonr.com job-interview-questions-tips.com jobsearchlegal.com johnhowesatty.com johnhuron.com jokeria.de jordanand.topcities.com josephlied.com judahskateboards.com juega-al-casino.com juliamiles.co.uk jungfrauen-sex.com junyuan.com.cn justasex.com jytouch.com kantorg.h10.ru kapsociety.org kardtoons.co.uk karibubaskets.com karmicdebtconsolidation.com kcufrecnac.com keikoasura.com keithandrew.co.uk kewl-links.com kewler.net kinggimp.org kinky-teen-videos.com kinkyhosting.com kiranthakrar.co.uk kleinkinder-shop.de klik-search.com klingeltoene-handylogos.de.be klingeltone-logo.com klitoris.ca kmsenergy.com kohost.us koihoo.com kontaktanzeigen-bild.de.ms kontaktlinsen-partner.de kostenlose-sexkontakte.org krantas.org kraskidliavas.ru kredit-ratenkredit-sofortkredit.de kredite-online.de.ms kredite-portal.de kredite-sofortzusage.de kreditkarten-sofort.de.ms kupibuket.ru kyed.com kyfarmhouse.org lablog.biz lacetongue.com lach-ab.de lakesideartonline.com lambethcouncil.com landscape-painting.as.ro langsrestaurant.com lanreport.com laptopy.biz.pl las-vegas-real-estate-1.com lastminute-blitz.de lasvegas-real-estate.net lasvegasrealtor.com lasvegastourfinder.com latina-hot-girls.com latina-sex.ws lavalifedating.com leadbanx.com learnhowtoplay.com lebonpost.com lechery-family.com legalblonde.com lesbian-girl.us lesbian-sex-porn-pics-stories.com lesbichex.com lesbo-rama.com leseratten-wunderland.de letemgo.de leveltendesign.com lexapro-web.com lexfinance.com lgt-clan.ru life-insurance-advisor.com lifeinsurancefinders.com likesmature.com lingerie-land.com link-dir.com linkliste-geschenke.de linseysworld.com linuxwaves.net lipitordiscount.biz lipitordiscount.com lir.dk lisaber.com list1st.com listbanx.com live-casino.com livetexasholdem.com livetexasholdem.com livetexasholdem.com livetexasholdem.com livetreff.tv livevents.de lizardofoz.com lizzie.dyndsl.com lizziemills.com loan-king.com loan-superstore.com loaninfotoday.com loans-4all.com loans-no-fax.com loans.de.vu locationcorse.free.fr logo-beltonen.com logo-free.com logo-klingeltone.com logo-max.com logo-melodias.com logo-mobiel.com logo-mobile-repondeur.com logo-moviles.com logo-phones.com logo-repondeur-mobile.com logo-sonneries-sonnerie.com logo-spiele.com logo-tones.com logod-helinad-mangud.com logoer-mobil.com logos-downloads.com logos-free.com logos-logos.be logos-melodijas-speles.com logos-mobile-repondeurs.com logos-phones.com logos-repondeurs-mobile.com logos-sonneries-jeux.com logos-sonneries-jeuxmobiles.com logos-sonneries-sonnerie.com logos-tone.com logosik.pl logotyper-mobil.com lolika.net longslabofjoy.com lookforukhotels.com loraxe.com low-low-rates.com lowclass.de lowcost.us.com lowest-rates-mortgages.com lowinterestratecreditcards.net luffassociates.co.uk luxus-gourmetartikel.de lvcpa.net lvcpa.org lvrealty.net lynskey-admiration.org.uk lyriclovers.com macinstruct.net mail333.com mainentrypoint.com mainjob.ru majorapplewhite.info male-enlargement.com mallorycoatings.co.uk maloylawn.com mandysdiary.biz mandysdiary.ws manga-free.net manga-free.org manga-porn.us manga-x.biz manga-xxx.org manufacturers-blog.com march--madness.biz march--madness.info march--madness.org marcomdeal.com marshallsupersoft.com marshallyachts.org marteq-on.com match-me-up.com mature-big-tits.net mature-old-mature.com mature-sex-moms-porn.com matureacts.com maturefolk.com maturetours.com maxigenweb.com mbgeezers.com mcdortaklar.com mcfimortgage.com medcenterstore.com mediaaustralia.com.au mediavisor.com medical4order.com medications-4all.com medicine-supply.com medicinecheaper.com medicinetrail.org meds-pill.com medweightloss medyep.com mega-spass.com megapornstation.com melincs.org melodias-logos-juegos.com members.fortunecity.com/kennetharmstrong men-porn.us men-sex.us menexis.com mengfuxiang.com menguma.co.uk menguma.com mens-health-pills.com menservers.com menzyme.com merditer.com merseine.nu mesothelioma-asbestos-help.com mesothelioma-health.com mesothelioma.net metroshopperguide.com mettle.com.cn michigan-attorney.lbgo.com micrasci.com microsoft-com.us middlecay.net middlecay.org midget-porn-sex.com mietangebote-domain.de migraine-relief.com mikebunton.com milesscaffolding.co.uk milf-hardcore.net milf-rider.us milfporn.org mingholee.com misterwolf.net mmorpg-headlines.com mmsanimati.com mneuron.com mobile-repondeur-logo.com mobile-repondeurs-logos.com mobilefamilydental.com mobilequicksale.com mobilesandringtones.com mode-domain.de mode-einkaufsbummel.de moltobene.ru monavaletoys.com money-cash-loans.com money-room.com moneybg.com montaguefineart.com mookyong.com mor-lite.net mor-lite.org moris-dada.com mortage-4all.com mortgage-info-center.com mortgage-rates-guide.net mortgagemarketinginc.com mortgagequestaz.com mortgagerates4all.com mortgages-links.net mortloan.com mostika.us mother-son-incest-sex.net motonet.pl movies6.com mp-forum.com mp3download.bz mp3x.biz mpeg2pci.com mrgoicoechea.com mrn.vip.sina.com mrpiercing.com multipurpose-plants.net multiservers.com music-downloads-links.com musica-da-scaricare.net musica-gratis.biz musica-gratis.org musica-karaoke.net musica-mp3.biz musicamp3.us musicbox1.com musiccheap.us musicenergy.com muxa.ru mxbearings.com my-age.net my-dating-agency.com my-discount-cigarettes.com my-sex-toys-store.com myasiahotels.com mybestcasinos.net mybestclick.com mycasinohome.com mycheapcigstore.com mycialispharmacy.com mydatingagency.com mydietdoctor.com myeuropehotels.com myfavlinks.de mygenericrx.com myrice.com myrtlejones.com myslimpatch.com mystify2001.com naar.be nabm(il|li)or.com # Home to spammed drug subdomains nabpak.org naked-gay.us naked-pussy.us naked-womens-wrestling-league-dvds.com naked-womens-wrestling-league-videos.com nakedboysfirsttime.com nancyflowerswilson.com narod.ru nasty-pages.com natel-mobiles.com natural-barleygreen.com natural-breasts-enhancement.net naturalknockers.net nehrucollege.org neiladams.org.uk net-mature.com net-von-dir.de netdims.com netizen.org netleih.de netlogo.us netsx.org neurogenics.co.uk new-cialis.com neweighweb.net neweighweb.org newfurnishing.com newgallery.co.uk newmail.ru newsnewsmedia.com newtruths.com newxwave.com nfl-football-tickets.biz nice-pussy.us nicepages.biz nicepages.net nicepages.org niceshemales.net nichehit.com nicolepeters.com nieruchomosci.biz.pl nifty-erotic-story-archive.blogspot.com niibacca.afraid.org nikkiwilliams.info njhma.com njunite.net no-cavities.com no-title.de no1pics.com nohassle-loans.com noni-jungbrunnen.com noni-top-chance.com noni-vitalgetraenk.com noniexpert.com nonstop-casino.com nonstopsex.org noslip-picks.com notsure.de novacspacetravel.com now-hiringsluts.com nr-challenges.org nude-black.us nude-celebrity-dvd.com nude-movies.us nude-teens.name nude-video.us nudevol.us nutritional-supplements.ws nutritionalsupplementstoday.com nutzu.com nwwl-dvds.com nwwl-videos.com nylonex.com nz.com.ua odrducmibedfghj.com officexl.de officezl.com officialdarajoy.com/wwwboard officialdentalplan.com officialsatellitetv.com offseasonelves.com ohamerica.org okuk.org old-sexy-sluts.com olderr.4t.com oldgrannyfucking.com oliviagadamer.com omega-fatty-acid.com on-line-casino-deutsch.com on-line-casinos-online.com on-line-casinos-online.net on-line-degree.org on-line-kasino-de.com on-pok.com one-blackjack.com one-cialis.com one-debt-consolidation.com one-poker-online.com one-propecia.com one-soma.com onepiecex.net oneseo.com onexone.org online-----poker online--blackjack.info online--pharmacy.us online--sports-betting.com online-auction-tricks.com online-background-check.biz online-black-jack-download.com online-blackjack-online.com online-buy-plavix.com online-credit-report-online.com online-dating-com.com online-dating-singles-service.com online-deals99.com online-dot.com online-escort-service.com online-flexeril.com online-gambling-123.biz online-gambling-123.us online-gambling-online.org online-games-links.net online-games24x7.com online-games24x7.net online-generics-store online-job-source.com online-medications24x7.com online-pharmacy-24x7.net online-pharmacy-online-pharmacies.com online-pharmacy-order.com online-photo-print.com online-poker--tips.com online-poker-200 online-poker-333.com online-poker-555.com online-poker-888 online-poker-a.com online-poker-big.com online-poker-bonus.us online-poker-free.com online-poker-guide.info online-poker-kick-butt.com online-poker-net.com online-poker-online-poker online-poker-special.com online-poker-top-rated.com online-prescription-pharmacy.com online-prescription.st online-prescriptions-internet-pharmacy.com online-propecia-buyer.com online-sports--betting online-sports-betting-source onlinedegreehq.com onlinegamingassociation.com onlinegamingassociation.com onlinehgh.com onlinepharmacy2004.net onlinepoker-dot.com onlinepoker-i.com onlineshop.us.com onlineslotsarcade.com onlinesmoker.com opensorcerer.org operazione-trionfo.net optimumpenis.com oral-sex-cum.com order-claritin.net order-effexor.net ordernaturals.com orlandodominguez.com orospu.us otito.com ottawavalleyag.org our-planet.org ourhealthylife.net ourtownhelps.org outoff.de overseaspharmacy.com ovulation-kit.com owns1.com ownsthis.com p-reise.de p5.org.uk p6.org.uk p7.org.uk p8.org.uk p9.org.uk pacific-poker-top-place.com pages4people.com pagetwo.org pai-gow-keno.com painkillersonline.biz paisleydevelopmentassociation.org pamperedchef-online.com paololinks.porkyhost.com paperscn.com paramountseedfarms.net paramountseedfarms.org paris-and-nicky-hilton-pictures.blogspot.com paris-hilton-video-blog.com paris-hilton-videos.biz paris-movie-hilton.blogspot.com paris-naked-hilton.blogspot.com paris-nicky-hilton.blogspot.com paris-nikki-hilton.blogspot.com parkviewsoccer.net parkviewsoccer.org partnersmanager.com partnersuche-partnervermittlung.com party-poker-e.com party-poker-leading-site.com party-poker-ltd.com party-poker-player.com party-poker-x partybingo.com partypoker-i partypoker-i.us partypoker.com partypokeronline.org passende-klamotten.de passwordspussynudity.com pastramisandwich.us pasuquinio.com payday-cash-loans payday-loan payday-loan-payday.com paydayl0an.com paylesspaydayloans.com payment-processing.com paysites.info pc-choices.com pcdweb.com pedronetwork.com pedronetwork.com peepissing.com penelopeschenk.com penilestretch.com penis-enlargment.net penisimprovement.com penisresearch.com perfect-dedicated-server.com perfect-mortgage-lead-4-u.com perkyoneplace.com personal-finance-tips.com personal-injuries-law.com personal-injury-lawyer.us.com personalads.us.com personales.com personals-online-personals.com personalserotic.com petlesbians.com petroglyphx.com phantadu.de pharmaceicall.com pharmacy-links.net pharmacy2003.com pharmacyprices.net philippestarckwatches.co.uk phone-cards-globe.pushline.com phono.co.il photobloggy.buzznet.com php5.sk phrensy.org picnic-basket.more.at pics--movies.com pics-db.com pics-porn.org pics-stories.com pics-videos.net picsfreesex.com picsteens.com pictures-and-videos.com pictures-archive.com pictures-movies.net pictures-movies.org pictures6.com piercing-auswaehlen.de piercing-magic.com piercingx.com piggi.descom.es pill-buy.com pillblue.com pillchart.com pillexchange.net pillfever.com pillgrowth.com pillhub.com pillhunt.com pillinc.com pillmarket.net pills-for-penis.com pillsbestbuy.com pillsdomain.com pillsking.com pillslim.com pillsupplier.com pilltip.com pimpcasino.com pimphos.com pimpspace.com pinkzoo.com piranho.com pisangrebus.com pj-city.com planetluck.com plasticmachinery.net.cn play-7-card-stud-poker.com play-7-card-stud-poker.us play-cash-bingo-online.com play-online-poker-z.com play-partypoker.us play-poker-i.com play-poker-onlie-kick-ass.com play-poker-online-z.com play.eu.com playandwin777.com playandwinit777.net player-tech.com playgay.biz playmydvd.com playnowpoker.com playweb.blogspot.com plygms.de pocketsound.org pok7.com pokemon-hentai.com pokemon-hentai.org pokemonhentai.net pokemonx.biz poker-8.com poker-888-e.com poker-e-win.com poker-e-wins.com poker-games-bonus.com poker-games-top-ranked.com poker-games.cjb.net poker-hands-secrets.com poker-homepage.com poker-magic.org poker-me-up.com poker-on-web.com poker-online-anytime.com poker-rooms-777 poker-rooms-777.com poker-rules-easy-4u.com poker-tables-best-deals.com poker-w.com poker-wsop-2005.com poker777game poker79.com pokerorg.net pokerpage.biz pokerpartnership.com pokerqu.com pokerweb.be polifoniczne.org polyphone.us pompini.nu popwow.com porevo.lookin.at porn-4u.net porn-dvds-dot.com porn-house.us porn-sites-list.com porn-stars.org porn-stud-search.org pornevalution.com porngrub.com pornlane.com porno-v.com pornogratis.bz pornosexbest.com pornostars.cc pornovideos-versand.com pornstar4all.com pornwww.com poster-shop.us postersshop.us power-rico.de pregnant-sex-free.us prepaylegalinsurance.com prescription-drugs.st prescriptions.md preteen-models.biz preteen-sex.info preteen-young.net prettypiste.com princeofprussia.org printerinkseller.com prism-lupus.org privacy-online.biz private-krankenversicherung-uebersicht.com private-network.net privatediet.com pro-collegefootballbetting.com pro-rolex-replica-watches pro-rolex-replica-watches.com product-paradise.com projector-me.com prom-prepared.com promindandbody.com propecia-depot.com propecia-for-hair-loss.com propecia-for-hair-loss.net propecia-info.net propecia-store.com propecia.bravehost.com propeciaonline.biz propeciapower.com prosearchs.com pryporn.com pseudobreccia60.tripod.com.ve psites.biz psites.net psites.org psites.us psxtreme.com psychexams.net psychexams.org punksongslyrics.com puppyduk.com pureteenz.com pushline.com pussy-cum.us pussy-d.com pussy-movies.us qinsi.com qqba.com quangoweb.com quick-drugs.biz quick-drugs.com quickdomainnameregistration.com quickie-quotes.com r-300.com r-3100.com r-400.com r-4100.com r00m.com racconti-gay.org radsport-artikel.de raf-ranking.com ragazze.bz rampantrabbitvibrator.co.uk randyblue.info randysrealtyreview.com rape--stories rape-fantasy-pics.com rape-stories.biz rapestoriespics rapid-merchant-account.com rapid.myserver.org ratenkredit-center.de ratenkredit-shop.de raw-pussy.us rbfanz.com real-online-poker real-sex.us realestateslaws.com realisticforeignpolicy.org reality-xxx.biz reallyhot.org realmilfgangbang.biz realtickling.com rebjorn.co.uk redcentre.org redi.tk refinance-mortgage-home-equity-loan.com reggaeboyzfanz.com registerxonline.com registrarprice.com reglament-np.ru reisen-domain.de relievepain.org rent-games-movies.com rental-2004.com rentalcarsplus.com repair-restore-bad-credit-report-identity-theft.com repaircreditonline.net repondeurs-logos-mobile.com republika.pl reservedining.net reservedining.org restaurant-l.de rethyassociates.net rethyassociates.org reviewonlinedating.com rhinoslinks.com rhinosthumbs.com ricettegolose.com richshemales.com rifp.org rightdebt.com ringsignaler-ikon-spel.com ringtone-logo-game.com ringtoner-logoer-spill.com ringtonespy.com rittenhouse.ca rmg.com.cn robinson-entertainment.com robosapiensource robosapiensource.com roboticmilking.com romane-buecher.de romeo-ent.com ronnieazza.com rossmann.de roulette---online.com roulette-w.com royaladult.com royalfreehost.com/teen/amymiller royalmailhotel.com ru21.to ruitai88.com rulo.biz rx-central.net rx-lexapro.biz rx-pills-r.us rx-store.com # Catchall for many spam sites rxpainrelief.net rxpills.biz rxweightloss.org rydoncycles.co.uk s-fuck.com s-sites.net safecreditonline.com sailor-moon-hentai.org sailor-moon-hentai.us salcia.co.uk salute-bellezza.net salute-bellezza.org salute-benessere.org salute-e-benessere.net salute-igiene.com salute-malattie.com salute-malattie.net samiuls.com sandhillaudio.com sandrabre.de sapphicerotica.biz sarennasworld.com sat-direct.net satellite-direct-for-you.com satellite-network-tv.com satellite-tv.cjb.net satellite.bravehost.com satellitetv-reviewed.tripod.com satellitetvboutique.com saveondentalplans.com saveonpills.net sbdforum.com sbt-scooter.com sc10.net scarica-mp3.biz scarica-mp3.com scarica-musica-mp3.org scarica-musica.com scarica-musica.org scaricamp3.us scaricare-canzoni.com scaricare-canzoni.net scaricare-canzoni.org scaricare-mp3.org scatporn.info scent-shopper.com schanee.de schmuck-domain.de scottneiss.net se-traf.com se24h.com search-1.info search-engine-optimization-4-us.com search-milf.com search722.com searchinsurance.net searchtypo.com secureroot.org security-result.com sedonaretreat.org seekartist.com seeker-milf.com seitensprung-gratis.com selectedsex.com selena-u.ru selten-angeklickt.de semax14.info semax15.info semax16.info sempo-tahoe.com senior.mine.nu seoy.com servepics.com servicesdating.net sesso-gratis.cc sesso-online.net sessoanalex.com sessox.biz seven-card-stud.biz seven-card-stud.us sewilla.de sex-4you.org sex-bondagenet.org sex-friend.info sex-livecam-erotik.net sex-lover.org sex-manga.us sex-mates.info sex-photos.org sex-pic-sex.com sex-pussy.us sex-toys-next-day.com sex4dollar.com sexadultdating.com sexbrides.com sexchat.ccx sexcia.com sexe.vc sexglory.com sexiestserver.com sexingitup.com sexmuch.com sexo9.com sexplanets.com sexschlucht.de sexshop-sexeshop.com sexshop.tk sextoysportal.com sextoyssexvideos.com sexual-shemales.com sexual-story.blogspot.com sexushost.com sexvoyager.com sexwebclub.com sexwebsites.com sexy-ass.us sexy-babes.us sexy-celebrity-photos.com sexy-girls.org sexy-lesbian.us sexy-pussy.us sexynudea.com sfondi--gratis.com sfondi-desktop-gratis.com shadowbaneguides.net shannon-e.co.uk shareint-store.com shemale-cum-tgp.com shemale-girls.com shemalesex.biz shemalesland.com shemalezhost.com shemalki.com shfx-bj.com shhilight.com shirts-t-shirts.com shop-opyt.com shop.tc shop24x7.net shopping-liste.de shoppingideen-xxl.de shoppyix.com showsontv.com sicarrow.co.uk silky-smooth-pussy.com simon-scans.com simple-pharmacy.com simplemeds.com simpsonowen.co.uk sindyhalliday.com sinfree.net site-mortgage.com sitesarchive.com siti-porno.us ski-resorts-guide.com skidman.com slatersdvds.co.uk slng.de slot-machines-slots.com slotmachinesguide.net slots-8.com slots-w.com slotsjockey.com slowdownrelax.com slut-wife-story.blogspot.com slutcities.com small-business-grants.biz smallbusinessgrants.biz smart-debt-consolidation-and-credit-services.com smartdot.com smartonlineshop.com smerfy.pl sms-sms-sms.org sms-sprueche-4fun.de sms-sprueche.com sms.pl smutwebsites.com sneakysleuth.com socoplan.org sofort-mitgewinnen.de sofortkredit-tipps.de soft-industry.com soft.center.prv.pl software-einkaufsmarkt.de software-linkliste.de software-review-center.org software.thedir.net softwaredevelopmentindia.com soittoaanet-logot-peli.com sol-web.de soma-cheap-soma.com soma-solution.com soma-web.com soma.st somacheap somaspot.com sommerreisen-2004.de sonderpreis.de.com sonnerie-compositeur.com sonnerie-hifi-sms.com sonnerie-logo-jeu.com sonnerie-logo-sonneries.com sonnerie-logos-sonneries.com sonnerie-logos.be sonnerie-max.com sonnerie-portable-composer.com sonnerie-portable.be sonnerie-sonneries-logo.com sonnerie-sonneries-logos.com sonnerie-sonneries.net sonnerie.net sonneries-gsm-sms.com sonneries-sonnerie-logo.com sonneries-sonnerie-logos.com sonneries.fr sorglos-kredit.de soulfulstencils.com southbeachdiet.us.com southbeachdietrecipe.biz spacige-domains.de spannende-spiele.de spassmaker.de speedsurf.to speedy-insurance-quotes.com spermincreasingpills.com spiele-kostenlose.com spiele-planet.com spoodles.com sportartikel-auswahl.de sportecdigital.com sportingcolors.org sportlich-chic.de sports---betting.com sports-betting- sports-betting-a.com sports-inter-action.com sportsbettingexpert.com sportsorg.biz sportsparent.com spp-net.de spy-patrol.com spyshots.bpa.nu spyware-links.com staffordshires.net staplethis.de starpills.com statusforsale.de steelstockholder.co.uk stellenangebote-checken.de stellenangebote-l.de stevespoliceequipment.com stfc-isc.org sting.cc stmaryonline.org stock-power.com stolb.net stop-depression.com stop-snoring.crpublish.com stopp-hier.de stopthatfilthyhabit.com stories--archive.com stories-adult.net stories-inc.com stories-on-cd.net stories-on-cd.org storiespics storiespics.game-host.org storiespics.game-server.cc storiespics.gotdns.com storiespics.gotdns.org storiespics.ham-radio-op.net storiespics.homedns.org storiespics.homeftp.net storiespics.homeftp.org storiespics.homeip.net storiespics.homelinux.com storiespics.homelinux.net storiespics.homelinux.org storiespics.homeunix.com storiespics.homeunix.net storiespics.homeunix.org striemline.de stripclubexposed.info strivectinsd.com stunningsextoys.com styrax-benzoin.com success-biz-replica.com suma-eintragen.de sumaeintrag-xxl.de sunbandits.com sunnyby.com suonerie-center.com suonerie-download.com suonerie-loghi-gratis.com suonerieloghix.com suoneriex.net suoyan.com super-bowl-bet.biz super-celebs.com super-cialis.com superbowl--betting.com superdolphins.org superpornlist.com surfe-und-staune.de susiewildin.com sutra-sex.com suttonjames.net suttonjames.org svitonline.com swedenet.com swedenetwork.com sweet-horny.com sweetbuyz.com sweethotgirls.com sweetteenbodies.com swinger-story.blogspot.com swingersadult.net swingersunidos.com sydney-harbour.info sylphiel.org sylviapanda.com sysaud.com t35.com t3n.org tabsinc.com take-credit-cards.com taliesinfellows.org talktobabes.com tanganyikan-cichlids.co.uk tapbuster.co.uk taremociecall.com targetindustries.net targetingpain.net tattoo-entwuerfe.de tatuaggi-gratis.com tatuaggi-piercing.org tatuaggi-tribali.com tatuaggi.cc tatuaggi.us tatuaggitribali.com tclighting.net tclighting.org tdk-n.com teambeck.org teamregules.com tecrep-inc.net tecrep-inc.org teddbot.com teddnetwork.com teen-babes.us teen-boys-fuck-paysite.com teen-d.com teen-hentai.us teen-movie.us teen-porn-movie.net teen-sex-porn-models.com teen-video.us teen-xxx.us teenagerzone.com teenbrazil.info teenbrazil.ws teens.wox.org teensluts.org teentopanga.name teenxxxpix.net telechargement-logiciel.com terminator-sales.com terra.es/personal2/dee7boquo terra.es/personal2/markus69 testi-canzoni.com testi-canzoni.net testi-musicali.com testi-musicali.net testi.cc tests-shop.com tette.bz tettone.cc texas--hold--em texas--hold-em texas--holdem texas-hold-em texas-holdem texas-poker texasproptax.com tgplist.us thatwhichis.com the-boys-first-time.net the-boysfirsttime.com the-date.com the-first-time-auditions the-hun-site.com the-hun-yellow-page-tgp.com the-pill-bottle.com the-proxy.com the1930shome.co.uk thebans.com theblackfoxes.com theceleb.com thecraftersgallery.com thefreecellphone.com thehadhams.net themadpiper.net thepornhost.com thepurplepitch.com therosygarden.com thesoftwaregarage.co.uk thespecialweb.com thewebbrains.com thorcarlson.com thumbscape.com ticket-marktplatz.de tickets4events.de tiere-futter.de tiffany-towers.com tigerspice.com tikattack.com timescooter.com tina4re.com tips-1a.de tits-center.com tits-cumshots.net tm258.com tmsathai.org tofik.pl tokyojoes.info tonos-celulares.com.mx tonos-nokia.com.mx top-blackjack-game top-blackjack.net top-casinos-net.com top-cialis.com top-deals-online-pharmacy top-deals-pills top-deals-pills.info top-deals-viagra top-dedicated-servers.com top-des-rencontres.com top-fioricet.com top-internet-blackjack.com top-milf.com top-of-best.de top-online-poker-bonuses top-online-slots.com top-pharmacy.net top-poker-21.com top-sex-base.com top-skelaxin.com top-soma.com top-the-best.de top-video-poker.info top-wins-2005.com topaktuelle-tattos.de topcialis.com topmeds.net toques-logos-jogos.com toshain.com total-verspielt.de totallyfreecreditreport.org touchwoodmagazine.org.uk tournamentpoker.biz training-one.co.uk trannies.angelcities.com tranny-pic-free.com tranny-sex-clips.com tranny.150m.com trannys.blowsearch.ws trannysexmovie.com transbestporn.com transestore.com transpire.de traum-pcs.de treocat.com triadindustries.co.uk trixieteen.org troggen.de troie.bz trolliges.de trucchi-giochi.us trueuninstall.com trumpetmission.org tt33tt.com tt7.org tubegator.com tuff-enuff.fnpsites.com turist.com.pl tvforum.org twinky.org tygef.org u-w-m.ru uaeecommerce.com ufosearch.net uk-virtual-office-solutions.com uk.net ukrainewife.net ultra-shop.info ultracet-web.com ultrampharmacy.com unbeatablecellphones.com unbeatablemobiles.co.uk unbeatablerx.com unccd.ch underage-pussy.net undonet.com uni-card.ru united-cash.com unitedarchive.com unrisd.com unscramble.de unterm-rock.us upsms.de urlaubssonne-tanken.de us-cash.com us-meds.com usa-birthday-flowers.com usa-car-insurance.com usa-car-loans.com usa-cash-advance.com usa-escorts-123.com usbitches.com uscashloan.com usedcarsforsale v27.net v29.net v3.be vacation-rentals-guide.com valeofglamorganconservatives.org vcialis.com venera-agency.com veranstaltungs-tickets.de vergleich-versicherungsangebote.de versicherungsangebote-vergleichen.de versicherungsvergleiche-xxl.de versteigerungs-festival.de verybrowse.com verycd.com verycheapdentalinsurance.com viaggix.com viapaxton.com video-n.com video-poker video-poker-dot.com video-poker-world.net video-porno.nu videohentai.org videoportfolios.com vilentium.de villagesx.com vimax.lx.ro vimax.topcities.com vip-condom.com vip-online-pharmacy.com vitamins-for-each.com vivalatinmag.com vivlart.com vixensisland.com vladgorlum.gotdns.com vladstepanov.brunst.dk vod-solutions.com voiphone.cn vonormytexas.us vpmt.com vpshs.com vrajitor.com vtsae.org w-ebony.com w5.pl wake.rlights.com waldner-msa.co.uk wancheng.cn warblog.net washere.de watches-sales.com waterbeds-dot.com wayshell.co.uk wblogs.com wcgaaa.org we-live-together-4u.com weareconfused.org.uk wearethechampions.com web-aks.com web-cam-101.com web-cam-porn.net web-cialis.com web-revenue.com webanfragen.de webblogs.biz webcam-erotiche.com webcenter.pl webcindario.com webcopywizard.net webhgh.com webpark.pl webrank.cn websitedesigningpromotion.com weddings-info.com weddings-links.com weekend-cialis weighlessrx.com weight-loss-central.org weight-loss-links.net weightlossplace.net weitere-stellenangebote.de wellness-getraenk.de wet-4all.com wet-pantie.net wet-pussy.us wethorny.com whackingpud.com white-shadow-nasty-story.blogspot.com whitehouse.com whizzkidsuk.co.uk wholesalepocketbike.com wild-porno-girls.com willcommen.de win-in-poker.com wincmd.ru wincrestal.com windcomesdown.com wirenorth.com wiset-online.com wisskie.cx witch-watch.com witz-net.de wizardsoul.com woodyracing.co.uk workfromhome-homebasedbusiness.com world-candle.com world-cheese.com world-series-of-poker-1996.com worldmusic.com worldsexi.com worldwide-deals.net worldwide-games.net worldwide-holdem.com worldwide-online-pharmacy.net worldwide-sources.com worldwidecasinosearch.com wotcher.de www-sesso # Catchall for many spam sites www-webspace.de x-baccarat.com x-baccarat.us x-beat.com x-bingo.com x-craps.com x-craps.us x-fioricet.com x-free-casino-games.com x-internet-casino.com x-jack.us x-pictures.net x-pictures.org x-ring-tones.com x-ringtones.com x-roulette.com x-roulette.us x-roullete.com x-slots.com x-slots.us x-stories.org x-video-poker.com x-video-poker.us xadulthosting.com xadultpersonals.com xaper.com xdolar.com xfreehosting.com xgsm.org xgsmhlhc.com xin-web.de xingzhiye.com xlboobs.net xmilf.us xmix.net xnxxx.com xpictx.com xprescription.com xprv.com xrated-midgets.com xratedcities.com xsesso.biz xxshopadult.com xxuz.com xxx-alt-sex-story.blogspot.com xxx-database.com xxx-dvd.biz xxx-erotic-sex-story.blogspot.com xxx-first-time-sex-story.blogspot.com xxx-free-erotic-sex-story.blogspot.com xxx-gay-sex-story.blogspot.com xxx-girls-sex.com xxx-password-web.com xxx-pussy.us xxx-sex-movies.org xxx-sex-story-post.blogspot.com xxx-spanking-story.blogspot.com xxx-stories.net xxx-story.blogspot.com xxxchan.com xxxseeker.com xxxwashington.com xz9.com yaboo.dk yaninediaz.com ybuano.org yellowmonkey.com yellowmonkey2.com yellowmonkey55.com yelucie.com yisosky.vip.sina.com ymf.name yoga-mats.freeservers.com yoll.net you-date.com young-ass.us your-tattoo.de yourcialis.info yourdentalinsuranceonline.com yourowncolours.co.uk yourserver.com ypoker.net yubatech.com yukka.inc.ru zalaszentgrot.com zaotao.com zazlibrary.com zenno.info zfgfz.net zipcodedownload.com zipcodesmap.com zithromax-online.net zj.com zone-b51.com zoo-sex-pics.com zoo-sex.biz zoo-sex.info zoo-zone.com zooeurope.com zoofil.com zoofilia-fotos.com zoomaniz.flnet.org zoosex-motion-videos.com zoosex-pictures.com zoosx.net zpics.net zt148.com zum-bestpreis.de zweree.com zxyzxy.comawstats-7.4/wwwroot/cgi-bin/lib/operating_systems.pm0000640000175000017500000004560112540637144020621 0ustar sksk# AWSTATS OPERATING SYSTEMS DATABASE #------------------------------------------------------- # If you want to add an OS to extend AWStats database detection capabilities, # you must add an entry in OSSearchIDOrder, in OSHashID and in OSHashLib. #------------------------------------------------------- # 2005-08-19 Sean Carlos http://www.antezeta.com/awstats.html # - added specific Linux distributions in addition to # the generic Linux. # Included documentation link to Distribution home pages. # - added links for each operating systems. # 2013-01-08 Joe CC Ho - added iOS, Windows 8 and Windows Phone. #package AWSOS; # Relocated from main file for easier editing %OSFamily = ( 'win' => 'Windows', 'mac' => 'Macintosh', 'ios' => 'iOS', 'linux' => 'Linux', 'bsd' => 'BSD' ); # OSSearchIDOrder # This list is used to know in which order to search Operating System IDs # (Most frequent one are first in this list to increase detect speed). # It contains all matching criteria to search for in log fields. # Note: OS IDs are in lower case and '_', ' ' and '+' are changed into '[_+ ]' #------------------------------------------------------------------------- @OSSearchIDOrder = ( # Windows OS family 'windows[_+ ]?2005', 'windows[_+ ]nt[_+ ]6\.0', 'windows[_+ ]?2008', 'windows[_+ ]nt[_+ ]6\.1', # Must be before windows_nt_6 'windows[_+ ]?2012', 'windows[_+ ]nt[_+ ]6\.2', # Must be before windows_nt_6 = windows 8 'windows[_+ ]nt[_+ ]6\.3', # Must be before windows_nt_6 = windows 8.1 'windows[_+ ]nt[_+ ]10', # Windows 10 'windows[_+ ]?vista', 'windows[_+ ]nt[_+ ]6', 'windows[_+ ]?2003','windows[_+ ]nt[_+ ]5\.2', # Must be before windows_nt_5 'windows[_+ ]xp','windows[_+ ]nt[_+ ]5\.1', # Must be before windows_nt_5 'windows[_+ ]me','win[_+ ]9x', # Must be before windows_98 'windows[_+ ]?2000','windows[_+ ]nt[_+ ]5', 'windows[_+ ]phone', 'winnt','windows[_+ \-]?nt','win32', 'win(.*)98', 'win(.*)95', 'win(.*)16','windows[_+ ]3', # This works for windows_31 and windows_3.1 'win(.*)ce', # iOS family #'iphone[_+ ]os', #Must be Before Mac OS Family #'ipad[_+ ]os', #Must be Before Mac OS Family #'ipod[_+ ]os', #Must be Before Mac OS Family 'iphone', 'ipad', 'ipod', # Macintosh OS family 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]11', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]10', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]9', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]8', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]7', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]6', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]5', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]4', 'mac[_+ ]os[_+ ]x', 'mac[_+ ]?p', # This works for macppc and mac_ppc and mac_powerpc 'mac[_+ ]68', # This works for mac_6800 and mac_68k 'macweb', 'macintosh', # Linux family 'linux(.*)android', 'linux(.*)asplinux', 'linux(.*)centos', 'linux(.*)debian', 'linux(.*)fedora', 'linux(.*)gentoo', 'linux(.*)mandr', 'linux(.*)momonga', 'linux(.*)pclinuxos', 'linux(.*)red[_+ ]hat', 'linux(.*)suse', 'linux(.*)ubuntu', 'linux(.*)vector', 'linux(.*)vine', 'linux(.*)white\sbox', 'linux(.*)zenwalk', 'linux', # Hurd family 'gnu.hurd', # BSDs family 'bsdi', 'gnu.kfreebsd', # Must be before freebsd 'freebsd', 'openbsd', 'netbsd', 'dragonfly', # Other Unix, Unix-like 'aix', 'sunos', 'irix', 'osf', 'hp\-ux', 'unix', 'x11', 'gnome\-vfs', # Other famous OS 'beos', 'os/2', 'amiga', 'atari', 'vms', 'commodore', 'qnx', 'inferno', 'palmos', 'syllable', # Miscellanous OS 'blackberry', 'cp/m', 'crayos', 'dreamcast', 'risc[_+ ]?os', 'symbian', 'webtv', 'playstation', 'xbox', 'wii', 'vienna', 'newsfire', 'applesyndication', 'akregator', 'plagger', 'syndirella', 'j2me', 'java', 'microsoft', # Pushed down to prevent mis-identification 'msie[_+ ]', # by other OS spoofers. 'ms[_+ ]frontpage', 'windows' ); # OSHashID # Each OS Search ID is associated to a string that is the AWStats id and # also the name of icon file for this OS. #-------------------------------------------------------------------------- %OSHashID = ( # Windows OS family 'windows[_+ ]?2005','winlong','windows[_+ ]nt[_+ ]6\.0','winlong', 'windows[_+ ]?2008','win2008','windows[_+ ]nt[_+ ]6\.1','win7', 'windows[_+ ]?2012','win2012','windows[_+ ]nt[_+ ]6\.2','win8', 'windows[_+ ]nt[_+ ]6\.3','win8.1', 'windows[_+ ]nt[_+ ]10','win10', 'windows[_+ ]?vista','winvista','windows[_+ ]nt[_+ ]6','winvista', 'windows[_+ ]?2003','win2003','windows[_+ ]nt[_+ ]5\.2','win2003', 'windows[_+ ]xp','winxp','windows[_+ ]nt[_+ ]5\.1','winxp', 'syndirella', 'winxp', 'windows[_+ ]me','winme','win[_+ ]9x','winme', 'windows[_+ ]?2000','win2000','windows[_+ ]nt[_+ ]5','win2000', 'winnt','winnt','windows[_+ \-]?nt','winnt','win32','winnt', 'windows[_+ ]phone','winphone', 'win(.*)98','win98', 'win(.*)95','win95', 'win(.*)16','win16','windows[_+ ]3','win16', 'win(.*)ce','wince', 'microsoft','winunknown', 'msie[_+ ]','winunknown', 'ms[_+ ]frontpage','winunknown', # iOS family #'iphone[_+ ]os','ios_iphone', #Must be Before Mac OS Family #'ipad[_+ ]os','ios_ipad', #Must be Before Mac OS Family #'ipod[_+ ]os','ios_ipod', #Must be Before Mac OS Family 'iphone','ios_iphone', #Must be Before Mac OS Family 'ipad','ios_ipad', #Must be Before Mac OS Family 'ipod','ios_ipod', #Must be Before Mac OS Family # Macintosh OS family 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]11','macosx11', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]10','macosx10', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]9','macosx9', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]8','macosx8', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]7','macosx7', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]6','macosx6', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]5','macosx5', 'mac[_+ ]os[_+ ]x[_+ ]10[_\.]4','macosx4', 'mac[_+ ]os[_+ ]x','macosx', 'vienna', 'macosx', 'newsfire', 'macosx', 'applesyndication', 'macosx', 'mac[_+ ]?p','macintosh','mac[_+ ]68','macintosh','macweb','macintosh','macintosh','macintosh', # Linux family (linuxyyy) 'linux(.*)android','linuxandroid', 'linux(.*)asplinux','linuxasplinux', 'linux(.*)centos','linuxcentos', 'linux(.*)debian','linuxdebian', 'linux(.*)fedora','linuxfedora', 'linux(.*)gentoo','linuxgentoo', 'linux(.*)mandr','linuxmandr', 'linux(.*)momonga','linuxmomonga', 'linux(.*)pclinuxos','linuxpclinuxos', 'linux(.*)red[_+ ]hat','linuxredhat', 'linux(.*)suse','linuxsuse', 'linux(.*)ubuntu','linuxubuntu', 'linux(.*)vector','linuxvector', 'linux(.*)vine','linuxvine', 'linux(.*)white\sbox','linuxwhitebox', 'linux(.*)zenwalk','linuxzenwalk', 'linux','linux', 'akregator', 'linux', # Hurd family 'gnu.hurd','gnu', # BSDs family (bsdyyy) 'bsdi','bsdi', 'gnu.kfreebsd','bsdkfreebsd', # Must be before freebsd 'freebsd','bsdfreebsd', 'openbsd','bsdopenbsd', 'netbsd','bsdnetbsd', 'dragonflybsd','bsddflybsd', # Other Unix, Unix-like 'aix','aix', 'sunos','sunos', 'irix','irix', 'osf','osf', 'hp\-ux','hp\-ux', 'unix','unix', 'x11','unix', 'gnome\-vfs','unix', 'plagger', 'unix', # Other famous OS 'beos','beos', 'os/2','os/2', 'amiga','amigaos', 'atari','atari', 'vms','vms', 'commodore','commodore', 'j2me', 'j2me', 'java', 'java', 'qnx','qnx', 'inferno','inferno', 'palmos','palmos', 'syllable','syllable', # Miscellanous OS 'blackberry','blackberry', 'cp/m','cp/m', 'crayos','crayos', 'dreamcast','dreamcast', 'risc[_+ ]?os','riscos', 'symbian','symbian', 'webtv','webtv', 'playstation', 'psp', 'xbox', 'winxbox', 'wii', 'wii', 'windows','winunknown' ); # OS name list ('os unique id in lower case','os clear text') # Each unique ID string is associated to a label #----------------------------------------------------------- %OSHashLib = ( # Windows family OS 'win10','Windows 10', 'win8.1','Windows 8.1', 'win8','Windows 8', 'win7','Windows 7', 'winlong','Windows Vista (LongHorn)', 'win2008','Windows 2008', 'win2012','Windows Server 2012', 'winvista','Windows Vista', 'win2003','Windows 2003', 'winxp','Windows XP', 'winme','Windows ME', 'win2000','Windows 2000', 'winnt','Windows NT', 'win98','Windows 98', 'win95','Windows 95', 'win16','Windows 3.xx', 'wince','Windows Mobile', 'winphone','Windows Phone', 'winunknown','Windows (unknown version)', 'winxbox','Microsoft XBOX', # Macintosh OS 'macosx11','Mac OS X 10.11 El Capitan', 'macosx10','Mac OS X 10.10 Yosemite', 'macosx9','Mac OS X 10.9 Mavericks', 'macosx8','Mac OS X 10.8 Mountain Lion', 'macosx7','Mac OS X 10.7 Lion', 'macosx6','Mac OS X 10.6 Snow Leopard', 'macosx5','Mac OS X 10.5 Leopard', 'macosx4','Mac OS X 10.4 Tiger', 'macosx','Mac OS X others', 'macintosh','Mac OS', # Linux 'linuxandroid','Google Android', 'linuxasplinux','ASPLinux', 'linuxcentos','Centos', 'linuxdebian','Debian', 'linuxfedora','Fedora', 'linuxgentoo','Gentoo', 'linuxmandr','Mandriva (or Mandrake)', 'linuxmomonga','Momonga Linux', 'linuxpclinuxos','PCLinuxOS', 'linuxredhat','Red Hat', 'linuxsuse','Suse', 'linuxubuntu','Ubuntu', 'linuxvector','VectorLinux', 'linuxvine','Vine Linux', 'linuxwhitebox','White Box Linux', 'linuxzenwalk','Zenwalk GNU Linux', 'linux','Linux (Unknown/unspecified)', 'linux','GNU Linux (Unknown or unspecified distribution)', # Hurd 'gnu','GNU Hurd', # BSDs 'bsdi','BSDi', 'bsdkfreebsd','GNU/kFreeBSD', 'freebsd','FreeBSD', # For backard compatibility 'bsdfreebsd','FreeBSD', 'openbsd','OpenBSD', # For backard compatibility 'bsdopenbsd','OpenBSD', 'netbsd','NetBSD', # For backard compatibility 'bsdnetbsd','NetBSD', 'bsddflybsd','DragonFlyBSD', # Other Unix, Unix-like 'aix','Aix', 'sunos','Sun Solaris', 'irix','Irix', 'osf','OSF Unix', 'hp\-ux','HP UX', 'unix','Unknown Unix system', # iOS 'ios_iphone','iOS (iPhone)', 'ios_ipad','iOS (iPad)', 'ios_ipod','iOS (iPod)', # Other famous OS 'beos','BeOS', 'os/2','OS/2', 'amigaos','AmigaOS', 'atari','Atari', 'vms','VMS', 'commodore','Commodore 64', 'j2me','Java Mobile', 'java','Java', 'qnx','QNX', 'inferno','Inferno', 'palmos','Palm OS', 'syllable','Syllable', # Miscellanous OS 'blackberry','BlackBerry', 'cp/m','CP/M', 'crayos','CrayOS', 'dreamcast','Dreamcast', 'riscos','RISC OS', 'symbian','Symbian OS', 'webtv','WebTV', 'psp', 'Sony PlayStation', 'wii', 'Nintendo Wii' ); 1; # Informations from microsoft for detecting windows version # Windows 95 retail, OEM 4.00.950 7/11/95 # Windows 95 retail SP1 4.00.950A 7/11/95-12/31/95 # OEM Service Release 2 4.00.1111* (4.00.950B) 8/24/96 # OEM Service Release 2.1 4.03.1212-1214* (4.00.950B) 8/24/96-8/27/97 # OEM Service Release 2.5 4.03.1214* (4.00.950C) 8/24/96-11/18/97 # Windows 98 retail, OEM 4.10.1998 5/11/98 # Windows 98 Second Edition 4.10.2222A 4/23/99 # Windows Me 4.90.3000awstats-7.4/wwwroot/cgi-bin/lib/status_smtp.pm0000640000175000017500000001542712410217071017420 0ustar sksk# AWSTATS SMTP STATUS DATABASE #------------------------------------------------------- # If you want to add a SMTP status code, you must add # an entry in smtpcodelib. #------------------------------------------------------- #package AWSSMTPCODES; # smtpcodelib # This list is used to found description of a SMTP status code #----------------------------------------------------------------- %smtpcodelib = ( #[Successfull code] '200'=>'Nonstandard success response', '211'=>'System status, or system help reply', '214'=>'Help message', '220'=>' Service ready', '221'=>' Service closing transmission channel', '250'=>'Requested mail action taken and completed', # Your ISP mail server have successfully executes a command and the DNS is reporting a positive delivery. '251'=>'User not local: will forward to ', # Your message to a specified email address is not local to the mail server, but it will accept and forward the message to a different recipient email address. '252'=>'Recipient cannot be verified', # but mail server accepts the message and attempts delivery. '354'=>'Start mail input and end with .', # Indicates mail server is ready to accept the message or instruct your mail client to send the message body after the mail server have received the message headers. #[Temporary error code] Ask sender to try later to complete successfully '421'=>' Service not available, closing transmission channel', # This may be a reply to any command if the service knows it must shut down. '450'=>'Requested mail action not taken: mailbox busy, DNS check failed or access denied for other reason', # Your ISP mail server indicates that an email address does not exist or the mailbox is busy. It could be the network connection went down while sending, or it could also happen if the remote mail server does not want to accept mail from you for some reason i.e. (IP address, From address, Recipient, etc.) '451'=>'Requested mail action aborted: error in processing', # Your ISP mail server indicates that the mailing has been interrupted, usually due to overloading from too many messages or transient failure is one in which the message sent is valid, but some temporary event prevents the successful sending of the message. Sending in the future may be successful. '452'=>'Requested mail action not taken: insufficient system storage', # Your ISP mail server indicates, probable overloading from too many messages and sending in the future may be successful. '453'=>'Too many messages', # Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up it could go over the max number of messages per connection. To see if this is the case you can try submitting only a few messages to that domain at a time and then keep increasing the number until you find the maximum number accepted by the server. # Postfix code for unknown_client_reject_code (postfix default=450) with reject_unknown_clients rule '470'=>'Access denied: Unknown SMTP client hostname (without DNS A or MX record)', # Postfix code for unknown_address_reject_code (postfix default=450) with reject_unknown_sender_domain rule '471'=>'Access denied: Unknown domain for sender or recipient email address (without DNS A or MX record)', #[Permanent error code] '500'=>'Syntax error, command unrecognized or command line too long', '501'=>'Syntax error in parameters or arguments', '502'=>'Command not implemented', '503'=>'Server encountered bad sequence of commands', '504'=>'Command parameter not implemented', '521'=>' does not accept mail or closing transmission channel', # You must be pop-authenticated before you can use this SMTP server and you must use your mail address for the Sender/From field. '530'=>'Access denied', # a Sendmailism ? '550'=>'Requested mail action not taken: relaying not allowed, unknown recipient user, ...', # Sending an email to recipients outside of your domain are not allowed or your mail server does not know that you have access to use it for relaying messages and authentication is required. Or to prevent the sending of SPAM some mail servers will not allow (relay) send mail to any e-mail using another company�s network and computer resources. '551'=>'User not local: please try or Invalid Address: Relay request denied', '552'=>'Requested mail action aborted: exceeded storage allocation', # ISP mail server indicates, probable overloading from too many messages. '553'=>'Requested mail action not taken: mailbox name not allowed', # Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up (being sent) for a domain, it could go over the maximum number of messages per connection and/or some change to the message and/or destination must be made for successful delivery. '554'=>'Requested mail action rejected: access denied', '557'=>'Too many duplicate messages', # Resource temporarily unavailable Indicates (probable) that there is some kind of anti-spam system on the mail server. # Postfix code for access_map_reject_code (postfix default=554) with access map rule '570'=>'Access denied: access_map violation (on SMTP client or HELO hostname, sender or recipient email address)', # Postfix code for maps_rbl_reject_code (postfix default=554) with maps_rbl_domains rule '571'=>'Access denied: SMTP client listed in RBL', # Postfix code for relay_domains_reject_code (postfix default=554) with relay_domains_reject rule '572'=>'Access denied: Relay not authorized or not local host not a gateway', # Postfix code for unknown_client_reject_code (postfix default=450) with reject_unknown_client rule '573'=>'Access denied: Unknown SMTP client hostname (without DNS A or MX record)', # Postfix code for invalid_hostname_reject_code (postfix default=501) with reject_invalid_hostname rule '574'=>'Access denied: Bad syntax for client HELO hostname (Not RFC compliant)', # Postfix code for reject_code (postfix default=554) with smtpd_client_restrictions '575'=>'Access denied: SMTP client hostname rejected', # Postfix code for unknown_address_reject_code (postfix default=450) with reject_unknown_sender_domain or reject_unknown_recipient_domain rule '576'=>'Access denied: Unknown domain for sender or recipient email address (without DNS A or MX record)', # Postfix code for unknown_hostname_reject_code (postfix default=501) with reject_unknown_hostname rule '577'=>'Access denied: Unknown client HELO hostname (without DNS A or MX record)', # Postfix code for non_fqdn_reject_code (Postfix default=504) with reject_non_fqdn_hostname, reject_non_fqdn_sender or reject_non_fqdn_recipient rule '578'=>'Access denied: Invalid domain for client HELO hostname, sender or recipient email address (not FQDN)', ); 1;awstats-7.4/wwwroot/cgi-bin/lib/browsers_phone.pm0000640000175000017500000012070712410217071020067 0ustar sksk# AWSTATS BROWSERS DATABASE #------------------------------------------------------- # If you want to add a Browser to extend AWStats database detection capabilities, # you must add an entry in BrowsersSearchIDOrder and in BrowsersHashIDLib. #------------------------------------------------------- # Originale version by malu # 2006-05-15 Sean Carlos http://www.antezeta.com/awstats.html # akregator (rss) # AppleSyndication (rss) # BlogBridge http://www.blogbridge.com/ (rss) # BonEcho (Firefox 2.0 alpha) # FeedTools http://sporkmonger.com/projects/feedtools/ (rss) # gnome\-vfs.*neon http://www.webdav.org/neon/ # GreatNews http://www.curiostudio.com/ (rss) # Gregarius devlog.gregarius.net/docs/ua (rss) # hatena rss http://r.hatena.ne.jp/ (rss) # Liferea http://liferea.sourceforge.net/ (rss) # PubSub-RSS-Reader http://www.pubsub.com/ (rss) # 2006-05-20 Sean Carlos http://www.antezeta.com/awstats.html # Potu Rss-Reader http://www.potu.com/ # OSSProxy http://www.marketscore.com/FAQ.Aspx #package AWSUA; # Relocated from main file for easier editing %BrowsersFamily = ( 'msie' => 1, 'firefox' => 2, 'netscape' => 3, 'svn' => 4, 'opera' => 5, 'safari' => 6, 'chrome' => 7, 'konqueror' => 8 ); # BrowsersSearchIDOrder # This list is used to know in which order to search Browsers IDs (Most # frequent one are first in this list to increase detect speed). # It contains all matching criteria to search for in log fields. # Note: Regex IDs are in lower case and ' ' and '+' are changed into '_' #------------------------------------------------------- @BrowsersSearchIDOrder = ( # Most frequent standard web browsers are first in this list except the ones hardcoded in awstats.pl: # firefox, opera, chrome, safari, konqueror, svn, msie, netscape 'elinks', 'firebird', 'go!zilla', 'icab', 'links', 'lynx', 'omniweb', # Other standard web browsers '22acidownload', 'abrowse', 'aol\-iweng', 'amaya', 'amigavoyager', 'arora', 'aweb', 'charon', 'donzilla', 'seamonkey', 'flock', 'minefield', 'bonecho', 'granparadiso', 'songbird', 'strata', 'sylera', 'kazehakase', 'prism', 'icecat', 'iceape', 'iceweasel', 'w3clinemode', 'bpftp', 'camino', 'chimera', 'cyberdog', 'dillo', 'xchaos_arachne', 'doris', 'dreamcast', 'xbox', 'downloadagent', 'ecatch', 'emailsiphon', 'encompass', 'epiphany', 'friendlyspider', 'fresco', 'galeon', 'flashget', 'freshdownload', 'getright', 'leechget', 'netants', 'headdump', 'hotjava', 'ibrowse', 'intergo', 'k\-meleon', 'k\-ninja', 'linemodebrowser', 'lotus\-notes', 'macweb', 'multizilla', 'ncsa_mosaic', 'netcaptor', 'netpositive', 'nutscrape', 'msfrontpageexpress', 'contiki', 'emacs\-w3', 'phoenix', 'shiira', # Must be before safari 'tzgeturl', 'viking', 'webfetcher', 'webexplorer', 'webmirror', 'webvcr', 'qnx\svoyager', # Site grabbers 'teleport', 'webcapture', 'webcopier', # Media only browsers 'real', 'winamp', # Works for winampmpeg and winamp3httprdr 'windows\-media\-player', 'audion', 'freeamp', 'itunes', 'jetaudio', 'mint_audio', 'mpg123', 'mplayer', 'nsplayer', 'qts', 'quicktime', 'sonique', 'uplayer', 'xaudio', 'xine', 'xmms', 'gstreamer', # RSS Readers 'abilon', 'aggrevator', 'aiderss', 'akregator', 'applesyndication', 'betanews_reader', 'blogbridge', 'cyndicate', 'feeddemon', 'feedreader', 'feedtools', 'greatnews', 'gregarius', 'hatena_rss', 'jetbrains_omea', 'liferea', 'netnewswire', 'newsfire', 'newsgator', 'newzcrawler', 'plagger', 'pluck', 'potu', 'pubsub\-rss\-reader', 'pulpfiction', 'rssbandit', 'rssreader', 'rssowl', 'rss\sxpress', 'rssxpress', 'sage', 'sharpreader', 'shrook', 'straw', 'syndirella', 'vienna', 'wizz\srss\snews\sreader', # PDA/Phonecell browsers 'alcatel\-be4', 'alcatel\-be5', 'alcatel\-bf3', 'alcatel\-bf4', 'alcatel\-bf5', 'alcatel\-bg3', 'alcatel\-bh4', 'auditautomatic', 'ericssonr520', 'ericssont20', 'ericssont29', 'ericssont39', 'ericssont65', 'ericssont66', 'ericssont68', 'lg\-g7000', 'mitsu', 'mot\-c350m', 'mot\-c4', 'mot\-cb', 'mot\-d4', 'mot\-d5', 'mot\-d8', 'mot\-e1', 'mot\-f0', 'mot\-f6', 'mot\-pan4', 'mot\-phx4', 'mot\-sap4', 'mot\-t720', 'mot\-ta02', 'mot\-v66m', 'mot\-v708', 'mot\-8300', 'mot\-a\-86', 'mot\-af', 'mot\-c2', 'mot\-c350', 'mot\-c550', 'mot\-c650', 'mot\-cf', 'mot\-f5', 'mot\-fe', 'mot\-t280', 'mot\-v300', 'mot\-v400', 'mot\-v500', 'mot\-v525', 'mot\-v600', 'mot\-v60m', 'mot\-v80', 'mot\-v810', 'nokia3100', 'nokia3200', 'nokia3560', 'nokia3595', 'nokia6220', 'nokia8265', 'nokia3300', 'nokia3530', 'nokia3590', 'nokia6108', 'nokia6211', 'nokia6600', 'nokia6650', 'nokia9210', 'nokian\-gage', 'nokia3210', 'nokia3310', 'nokia3330', 'nokia3350', 'nokia3410', 'nokia3510', 'nokia3650', 'nokia5100', 'nokia5110', 'nokia5130', 'nokia5210', 'nokia5510', 'nokia6100', 'nokia6110', 'nokia6130', 'nokia6150', 'nokia6210', 'nokia6250', 'nokia6310\/', 'nokia6310i', 'nokia6500', 'nokia6510', 'nokia6610', 'nokia6800', 'nokia7110', 'nokia7210', 'nokia7250', 'nokia7650', 'nokia8110i', 'nokia8210', 'nokia8310', 'nokia8810', 'nokia8850', 'nokia8855', 'nokia8890', 'nokia8910', 'nokia9000', 'nokia9110', 'nokia9210i', 'nokia3660', 'nokia6230', 'nokia6340i', 'nokia6810', 'nokia6820', 'nokia7200', 'nokia7600', 'nokia7610', 'nokia5310', 'nokia6300', 'nokia6131', 'nokia5200', 'nokia7370', 'nokia5610', 'nokian70', 'opwv\-sdk', 'panasonic\-gad35', 'panasonic\-gad67', 'panasonic\-gad68', 'panasonic\-gad6\*', 'panasonic\-gad75', 'panasonic\-gad76', 'panasonic\-gad87', 'panasonic\-gad88', 'panasonic\-gad95', 'panasonic\-gad96', 'panasonic\-g50', 'panasonic\-g60', 'panasonic\-x60', 'panasonic\-x70', 'philips\-az\@lis238', 'philips\-az\@lis268', 'philips\-az\@lis288', 'philips\-fisio120', 'philips\-fisio121', 'philips\-fisio311', 'philips\-fisio312', 'philips\-fisio316', 'philips\-fisio610', 'philips\-fisio620', 'philips\-fisio_625', 'philips\-fisio_820', 'philips\-fisio_822', 'philips\-fisio_825', 'philips\-v21wap', 'philips\-xenium9\@9', 'r380', 'r600', 'sagem\-3xxx', 'sagem\-9xx', 'sagem\-myx\-2', 'sagem\-myx\-3', 'sagem\-myx\-5\/', 'sagem\-myx\-5d', 'sagem\-myx\-5m', 'sagem\-myx\-6', 'samsung\-sgh\-e700', 'samsung\-sgh\-s500', 'samsung\-sgh\-t500', 'samsung\-sgh\-a300', 'samsung\-sgh\-a400', 'samsung\-sgh\-a800', 'samsung\-sgh\-n100', 'samsung\-sgh\-n400', 'samsung\-sgh\-n500', 'samsung\-sgh\-n600', 'samsung\-sgh\-n620', 'samsung\-sgh\-r200s', 'samsung\-sgh\-r200', 'samsung\-sgh\-r210', 'samsung\-sgh\-s100', 'samsung\-sgh\-t100', 'samsung\-sgh\-t400', 'samsung\-sgh\-v200', 'samsung\-sgh\-e100', 'samsung\-sgh\-e708', 'samsung\-sgh\-e800', 'samsung\-sgh\-x100', 'samsung\-sgh\-x600', 'sec\-sghc100', 'sec\-sghp100', 'sec\-sghp400', 'sec\-sghq200', 'sec\-sghs200', 'sec\-spha460', 'sec\-sghs100', 'sec\-sghs300', 'sec\-sghv200', 'sec\-sghv205', 'sec\-sghd410', 'sec\-sghe105', 'sec\-sghe410', 'sec\-sghe400', 'sec\-sghe600', 'sec\-sghe710', 'sec\-sghe715', 'sec\-sghs105', 'sec\-sghx105', 'sec\-sghx426', 'sec\-sghx427', 'sec\-sghx430', 'sec\-sghx450', 'sharp\-tq\-gx10', 'sharp\-tq\-gx12', 'sie\-2128', 'sie\-6618', 'sie\-a55', 'sie\-c60', 'sie\-c62', 'sie\-m55', 'sie\-mc60', 'sie\-sl55', 'sie\-slin', 'sie\-a50', 'sie\-c3i', 'sie\-c45', 'sie\-c55', 'sie\-m50', 'sie\-me45', 'sie\-mt50', 'sie\-s35', 'sie\-s40', 'sie\-s45', 'sie\-s55', 'sie\-sl45', 'sie\-slik', 'sie\-a57', 'sie\-a60', 'sie\-c56', 'sie\-c61', 'sie\-cf62', 'sie\-m65', 'sie\-s56', 'sie\-s57c', 'sie\-s65', 'sie\-sl5e', 'sie\-st60', 'sie\-sx1', 'sonyericssonp900', 'sonyericssont230', 'sonyericssont306', 'sonyericssont316', 'sonyericssont616', 'sonyericssonz600', 'sonyericssonp800', 'sonyericssont100', 'sonyericssont200', 'sonyericssont300', 'sonyericssont310', 'sonyericssont600', 'sonyericssont610', 'sonyericssont68\/', 'sonyericssont68i', 'sonyericssont620', 'sonyericssont630', 'lg\-c1100', 'lg\-c1200', 'lg\-c2200', 'lg\-g1500', 'lg\-g3100', 'lg\-g4015', 'lg\-g5300', 'lg\-g5400', 'lg\-g7050', 'lg\-g7100', 'lg\-l1100', 'lg\-l1200', 'mot\-85', 'mot\-a\-0a', 'mot\-a\-2b', 'mot\-c357', 'mot\-c380', 'mot\-e398', 'mot\-v180', 'mot\-v220', 'mot\-v3', 'mot\-v980', 'nokia2650', 'nokia3108', 'nokia3120', 'nokia3220', 'nokia5140', 'nokia6010', 'nokia6170', 'nokia6260', 'nokia6630', 'nokia6670', 'nokia7260', 'sie\-a65', 'sie\-c65', 'sie\-c6v', 'sie\-cx65', 'sie\-cx70', 'sie\-sl65', 'sonyericssonk500i', 'sonyericssonk700c', 'sonyericssonk700i', 'sonyericssonp910i', 'sonyericssons700i', 'sonyericssont226', 'sonyericssont628', 'sonyericssonz1010', 'sonyericssonz200', 'alcatel\-be3', 'alcatel\-oh5', 'alcatel\-th3', 'alcatel\-th4', 'ericssona2628s', 'ericssonr320', 'lg\-c1300', 'lg\-c3100', 'lg\-f2100', 'lg\-g1600', 'lg\-g210', 'lg\-g4010', 'lg\-g510', 'lg\-g5310', 'lg\-g5600', 'lg\-g650', 'lg\-g7070', 'lg\-l3100', 'lg\-t5100', 'mot\-2200', 'mot\-32', 'mot\-74', 'mot\-76', 'mot\-87', 'mot\-8700', 'mot\-a\-0e', 'mot\-a\-1c', 'mot\-a760', 'mot\-a835', 'mot\-c385', 'mot\-v26x', 'mot\-v290', 'mot\-v505', 'mot\-v547', 'mot\-v551', 'mot\-v620', 'mot\-v690', 'mot\-v878', 'sie\-3618', 'sie\-a56', 'sie\-c6c', 'sie\-cx6c', 'sie\-cx6v', 'sie\-m6c', 'sie\-m6v', 'sie\-s46', 'sie\-sk65', 'sie\-sl56', 'sie\-st55', 'sagem\-mo130', 'sagem\-myc', 'sagem\-myv', 'sagem\-myx3', 'sagem\-myx5', 'sagem\-myx', 'lg\-G610', 'mot\-v550', 'mot\-a\-1f', 'mot\-c155', 'mot\-c975', 'mot\-c980', 'mot\-e380', 'mot\-e680', 'mot\-ed', 'mot\-t725e', 'mot\-v150', 'mot\-v171', 'mot\-v535', 'mot\-v545', 'mot\-v635', 'mot\-v870', 'nokia2112', 'nokia3620', 'nokia6020', 'nokia6200', 'nokia6620', 'nokia6680', 'nokia7270', 'nokia7280', 'nokia9500', 'panasonic\-a200', 'panasonic\-g70', 'panasonic\-x100', 'panasonic\-x300', 'panasonic\-x400', 'panasonic\-x500', 'panasonic\-x66', 'panasonic\-x77', 't66', 'n21i', 'n22i', 'ts21i', 'wap', # Generic WAP phone (must be after 'wap*') 'webcollage', 'up\.', # Works for UP.Browser and UP.Link # PDA/Phonecell browsers 'android', 'blackberry', 'cnf2', 'docomo', 'ipcheck', 'iphone', 'portalmmm', # Others (TV) 'webtv', 'democracy', # Anonymous Proxy Browsers (can be used as grabbers as well...) 'cjb\.net', 'ossproxy', 'smallproxy', # Other kind of browsers 'adobeair', 'apt', 'analogx_proxy', 'gnome\-vfs', 'neon', 'curl', 'csscheck', 'httrack', 'fdm', 'javaws', 'wget', 'fget', 'chilkat', 'webdownloader\sfor\sx', 'w3m', 'wdg_validator', 'w3c_validator', 'jigsaw', 'webreaper', 'webzip', 'staroffice', 'gnus', 'nikto', 'download\smaster', 'microsoft\-webdav\-miniredir', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\scache\smanager', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sdav', 'POE\-Component\-Client\-HTTP', 'mozilla', # Must be at end because a lot of browsers contains mozilla in string 'libwww', # Must be at end because some browser have both 'browser id' and 'libwww' 'lwp' ); # BrowsersHashIDLib # List of browser's name ('browser id in lower case', 'browser text') #--------------------------------------------------------------- %BrowsersHashIDLib = ( # Common web browsers text, included the ones hard coded in awstats.pl # firefox, opera, chrome, safari, konqueror, svn, msie, netscape 'firefox','Firefox', 'opera','Opera', 'chrome','Google Chrome', 'safari','Safari', 'konqueror','Konqueror', 'svn', 'Subversion client', 'msie','MS Internet Explorer', 'netscape','Netscape', 'elinks','ELinks', 'firebird','Firebird (Old Firefox)', 'go!zilla','Go!Zilla', 'icab','iCab', 'links','Links', 'lynx','Lynx', 'omniweb','OmniWeb', # Other standard web browsers '22acidownload','22AciDownload', 'abrowse','ABrowse', 'amaya','Amaya', 'amigavoyager','AmigaVoyager', 'aol\-iweng','AOL-Iweng', 'arora','Arora', 'aweb','AWeb', 'charon', 'Charon', 'donzilla','Donzilla', 'seamonkey','SeaMonkey', 'flock','Flock', 'minefield','Minefield (Firefox 3.0 development)', 'bonecho','BonEcho (Firefox 2.0 development)', 'granparadiso','GranParadiso (Firefox 3.0 development)', 'songbird','Songbird', 'strata','Strata', 'sylera','Sylera', 'kazehakase','Kazehakase', 'prism','Prism', 'icecat','GNU IceCat', 'iceape','GNU IceApe', 'iceweasel','Iceweasel', 'w3clinemode','W3CLineMode', 'bpftp','BPFTP', 'camino','Camino', 'chimera','Chimera (Old Camino)', 'cyberdog','Cyberdog', 'dillo','Dillo', 'xchaos_arachne','Arachne', 'doris','Doris (for Symbian)', 'dreamcast','Dreamcast', 'xbox', 'XBoX', 'downloadagent','DownloadAgent', 'ecatch', 'eCatch', 'emailsiphon','EmailSiphon', 'encompass','Encompass', 'epiphany','Epiphany', 'friendlyspider','FriendlySpider', 'fresco','ANT Fresco', 'galeon','Galeon', 'flashget','FlashGet', 'freshdownload','FreshDownload', 'getright','GetRight', 'leechget','LeechGet', 'netants','NetAnts', 'headdump','HeadDump', 'hotjava','Sun HotJava', 'ibrowse','iBrowse', 'intergo','InterGO', 'k\-meleon','K-Meleon', 'k\-ninja','K-Ninja', 'linemodebrowser','W3C Line Mode Browser', 'lotus\-notes','Lotus Notes web client', 'macweb','MacWeb', 'multizilla','MultiZilla', 'ncsa_mosaic','NCSA Mosaic', 'netcaptor','NetCaptor', 'netpositive','NetPositive', 'nutscrape', 'Nutscrape', 'msfrontpageexpress','MS FrontPage Express', 'phoenix','Phoenix', 'contiki','Contiki', 'emacs\-w3','Emacs/w3s', 'shiira','Shiira', 'tzgeturl','TzGetURL', 'viking','Viking', 'webfetcher','WebFetcher', 'webexplorer','IBM-WebExplorer', 'webmirror','WebMirror', 'webvcr','WebVCR', 'qnx\svoyager','QNX Voyager', # Site grabbers 'teleport','TelePort Pro', 'webcapture','Acrobat Webcapture', 'webcopier', 'WebCopier', # Media only browsers 'real','Real player or compatible (media player)', 'winamp','WinAmp (media player)', # Works for winampmpeg and winamp3httprdr 'windows\-media\-player','Windows Media Player (media player)', 'audion','Audion (media player)', 'freeamp','FreeAmp (media player)', 'itunes','Apple iTunes (media player)', 'jetaudio','JetAudio (media player)', 'mint_audio','Mint Audio (media player)', 'mpg123','mpg123 (media player)', 'mplayer','The Movie Player (media player)', 'nsplayer','NetShow Player (media player)', 'qts','QuickTime (media player)', 'quicktime','QuickTime (media player)', 'sonique','Sonique (media player)', 'uplayer','Ultra Player (media player)', 'xaudio','Some XAudio Engine based MPEG player (media player)', 'xine','Xine, a free multimedia player (media player)', 'xmms','XMMS (media player)', 'gstreamer','GStreamer (media library)', # RSS Readers 'abilon','Abilon (RSS Reader)', 'aggrevator', 'Aggrevator (RSS Reader)', 'aiderss', 'AideRSS (RSS Reader)', 'akregator','Akregator (RSS Reader)', 'applesyndication','AppleSyndication (RSS Reader)', 'betanews_reader','Betanews Reader (RSS Reader)', 'blogbridge','BlogBridge (RSS Reader)', 'cyndicate','Cyndicate (RSS Reader)', 'feeddemon', 'FeedDemon (RSS Reader)', 'feedreader', 'FeedReader (RSS Reader)', 'feedtools','FeedTools (RSS Reader)', 'greatnews','GreatNews (RSS Reader)', 'gregarius','Gregarius (RSS Reader)', 'hatena_rss','Hatena (RSS Reader)', 'jetbrains_omea', 'Omea (RSS Reader)', 'liferea','Liferea (RSS Reader)', 'netnewswire', 'NetNewsWire (RSS Reader)', 'newsfire', 'NewsFire (RSS Reader)', 'newsgator', 'NewsGator (RSS Reader)', 'newzcrawler', 'NewzCrawler (RSS Reader)', 'plagger', 'Plagger (RSS Reader)', 'pluck', 'Pluck (RSS Reader)', 'potu','Potu (RSS Reader)', 'pubsub\-rss\-reader','PubSub (RSS Reader)', 'pulpfiction', 'PulpFiction (RSS Reader)', 'rssbandit', 'RSS Bandit (RSS Reader)', 'rssreader', 'RssReader (RSS Reader)', 'rssowl', 'RSSOwl (RSS Reader)', 'rss\sxpress','RSS Xpress (RSS Reader)', 'rssxpress','RSSXpress (RSS Reader)', 'sage', 'Sage (RSS Reader)', 'sharpreader', 'SharpReader (RSS Reader)', 'shrook', 'Shrook (RSS Reader)', 'straw', 'Straw (RSS Reader)', 'syndirella', 'Syndirella (RSS Reader)', 'vienna', 'Vienna (RSS Reader)', 'wizz\srss\snews\sreader','Wizz RSS News Reader (RSS Reader)', # PDA/Phonecell browsers 'alcatel\-be4','Alcatel BE4 (phone)', 'alcatel\-be5','Alcatel BE5 (phone)', 'alcatel\-bf3','Alcatel OT311 (phone)', 'alcatel\-bf4','Alcatel OT511 (phone)', 'alcatel\-bf5','Alcatel BF5 (phone)', 'alcatel\-bg3','Alcatel BG3 (phone)', 'alcatel\-bh4','Alcatel BH4 (phone)', 'auditautomatic','Audit ByTel (phone)', 'ericssonr520','SonyEricsson R520-R2 (phone)', 'ericssont20','SonyEricsson T20e (phone)', 'ericssont29','SonyEricsson 29s (phone)', 'ericssont39','SonyEricsson T39m (phone)', 'ericssont65','SonyEricsson T65 (phone)', 'ericssont66','SonyEricsson T66 (phone)', 'ericssont68','SonyEricsson T68 (phone)', 'lg\-g7000','LG G7000 (phone)', 'mitsu','Trium Eclipse (phone)', 'mot\-c350m','Motorola C350M (phone)', 'mot\-c4','Motorola Talkabout T2288 (phone)', 'mot\-cb','Motorola Timeport P7389 (phone)', 'mot\-d4','Motorola Timeport P7389e (phone)', 'mot\-d5','motorola-t191 (phone)', 'mot\-d8','Motorola T250 (phone)', 'mot\-e1','Motorola ? (E1) (phone)', 'mot\-f0','Motorola v50 (phone)', 'mot\-f6','Motorola Accompli 008 (phone)', 'mot\-pan4','Motorola T280 (phone)', 'mot\-phx4','Motorola ? (PHX4) (phone)', 'mot\-sap4','Motorola V66 (phone)', 'mot\-t720','Motorola T720 (phone)', 'mot\-ta02','Motorola ? (TA02) (phone)', 'mot\-v66m','Motorola V66M (phone)', 'mot\-v708','Motorola V708 (phone)', 'mot\-8300','Motorola 8300 (phone)', 'mot\-a\-86','Motorola A86 (phone)', 'mot\-af','Motorola AF (phone)', 'mot\-c2','Motorola C2 (phone)', 'mot\-c350','Motorola C350 (phone)', 'mot\-c550','Motorola C550 (phone)', 'mot\-c650','Motorola C650 (phone)', 'mot\-cf','Motorola CF (phone)', 'mot\-f5','Motorola F5 (phone)', 'mot\-fe','Motorola FE (phone)', 'mot\-t280','Motorola T280 (phone)', 'mot\-v300','Motorola V300 (phone)', 'mot\-v400','Motorola V400 (phone)', 'mot\-v500','Motorola V500 (phone)', 'mot\-v525','Motorola V525 (phone)', 'mot\-v600','Motorola V600 (phone)', 'mot\-v60m','Motorola V60M (phone)', 'mot\-v80','Motorola V80 (phone)', 'mot\-v810','Motorola V810 (phone)', 'nokia3200','Nokia 3200 (phone)', 'nokia3560','Nokia 3560 (phone)', 'nokia3595','Nokia 3595 (phone)', 'nokia6220','Nokia 6200 (phone)', 'nokia8265','Nokia 8265 (phone)', 'nokia3100','Nokia 3100 (phone)', 'nokia3300','Nokia 3300 (phone)', 'nokia3530','Nokia 3530 (phone)', 'nokia3590','Nokia 3590 (phone)', 'nokia6108','Nokia 6108 (phone)', 'nokia6211','Nokia 6211 (phone)', 'nokia6600','Nokia 6600 (phone)', 'nokia6650','Nokia 6650 (phone)', 'nokia9210','Nokia 9210 (phone)', 'nokian\-gage','Nokia N-Gage (phone)', 'nokia3210','Nokia 3210 (phone)', 'nokia3310','Nokia 3310 (phone)', 'nokia3330','Nokia 3330 (phone)', 'nokia3350','Nokia 3350 (phone)', 'nokia3410','Nokia 3410 (phone)', 'nokia3510','Nokia 3510 (phone)', 'nokia3650','Nokia 3650 (phone)', 'nokia5100','Nokia 5100 (phone)', 'nokia5110','Nokia 5110 (phone)', 'nokia5130','Nokia 5130 (phone)', 'nokia5210','Nokia 5210 (phone)', 'nokia5510','Nokia 5510 (phone)', 'nokia6100','Nokia 6100 (phone)', 'nokia6110','Nokia 6110 (phone)', 'nokia6130','Nokia 6130 (phone)', 'nokia6150','Nokia 6150 (phone)', 'nokia6210','Nokia 6210 (phone)', 'nokia6250','Nokia 6250 (phone)', 'nokia6310\/','Nokia 6310 (phone)', 'nokia6310i','Nokia 6310i (phone)', 'nokia6500','Nokia 6500 (phone)', 'nokia6510','Nokia 6510 (phone)', 'nokia6610','Nokia 6610 (phone)', 'nokia6800','Nokia 6800 (phone)', 'nokia7110','Nokia 7110 (phone)', 'nokia7210','Nokia 7210 (phone)', 'nokia7250','Nokia 7250 (phone)', 'nokia7650','Nokia 7650 (phone)', 'nokia8110i','Nokia 8110i (phone)', 'nokia8210','Nokia 8210 (phone)', 'nokia8310','Nokia 8310 (phone)', 'nokia8810','Nokia 8810 (phone)', 'nokia8850','Nokia 8850 (phone)', 'nokia8855','Nokia 8855 (phone)', 'nokia8890','Nokia 8890 (phone)', 'nokia8910','Nokia 8910 (phone)', 'nokia9000','Nokia 9000i (phone)', 'nokia9110','Nokia 9110 (phone)', 'nokia9210i','Nokia 9210i (phone)', 'nokia3660','Nokia 3660 (phone)', 'nokia6230','Nokia 6230 (phone)', 'nokia6340i','Nokia 6340i (phone)', 'nokia6810','Nokia 6810 (phone)', 'nokia6820','Nokia 6820 (phone)', 'nokia7200','Nokia 7200 (phone)', 'nokia7600','Nokia 7600 (phone)', 'nokia7610','Nokia 7610 (phone)', 'nokia5310','Nokia 5310 (phone)', 'nokia6300','Nokia 6300 (phone)', 'nokia6131','Nokia 6131 (phone)', 'nokia5200','Nokia 5200 (phone)', 'nokia7370','Nokia 7370 (phone)', 'nokia5610','Nokia 5610 (phone)', 'nokian70','Nokia N70 (phone)', 'opwv\-sdk','openwave sdk (phone)', 'panasonic\-gad35','Panasonic GD35 (phone)', 'panasonic\-gad67','panasonic GD67 (phone)', 'panasonic\-gad68','panasonic-gd68 (phone)', 'panasonic\-gad6\*','Panasonic GD6xx (phone)', 'panasonic\-gad75','panasonic-gd75 (phone)', 'panasonic\-gad76','panasonic-gd76 (phone)', 'panasonic\-gad87','panasonic-gd87 (phone)', 'panasonic\-gad88','panasonic-gd88 (phone)', 'panasonic\-gad95','panasonic-gd95 (phone)', 'panasonic\-gad96','panasonic-gd96 (phone)', 'panasonic\-g50','Panasonic G50 (phone)', 'panasonic\-g60','Panasonic G60 (phone)', 'panasonic\-x60','Panasonic X60 (phone)', 'panasonic\-x70','Panasonic X70 (phone)', 'philips\-az\@lis238','Philips Azalis-238 (phone)', 'philips\-az\@lis268','Philips Azalis-268 (phone)', 'philips\-az\@lis288','Philips Azalis-288 (phone)', 'philips\-fisio120','Philips Fisio 120 (phone)', 'philips\-fisio121','Philips Fisio 121 (phone)', 'philips\-fisio311','Philips Fisio 311 (phone)', 'philips\-fisio312','Philips Fisio 312 (phone)', 'philips\-fisio316','Philips Fisio 316 (phone)', 'philips\-fisio610','Philips Fisio 610 (phone)', 'philips\-fisio620','Philips Fisio 620 (phone)', 'philips\-fisio_625','Philips Fisio 625 (phone)', 'philips\-fisio_820','Philips Fisio 820 (phone)', 'philips\-fisio_822','Philips Fisio 822 (phone)', 'philips\-fisio_825','Philips Fisio 825 (phone)', 'philips\-v21wap','Philips V21 (phone)', 'philips\-xenium9\@9','Philips Xenium 9A9 (phone)', 'r380','Ericsson R380 (phone)', 'r600','Ericsson R600 (phone)', 'sagem\-3xxx','Sagem 3XXX (phone)', 'sagem\-9xx','Sagem 9XX (phone)', 'sagem\-myx\-2','Sagem MyX-2 (phone)', 'sagem\-myx\-3','Sagem MyX-3d (phone)', 'sagem\-myx\-5\/','Sagem MyX-5 (phone)', 'sagem\-myx\-5d','Sagem MyX-5d (phone)', 'sagem\-myx\-5m','Sagem MyX-5m (phone)', 'sagem\-myx\-6','Sagem MyX-6 (phone)', 'samsung\-sgh\-e700','Samsung E700 (phone)', 'samsung\-sgh\-s500','Samsung S500 (phone)', 'samsung\-sgh\-t500','Samsung T500 (phone)', 'samsung\-sgh\-a300','Samsung A300 (phone)', 'samsung\-sgh\-a400','Samsung A400 (phone)', 'samsung\-sgh\-a800','Samsung A800 (phone)', 'samsung\-sgh\-n100','Samsung N100 (phone)', 'samsung\-sgh\-n400','Samsung N400 (phone)', 'samsung\-sgh\-n500','Samsung N500 (phone)', 'samsung\-sgh\-n600','Samsung N600 (phone)', 'samsung\-sgh\-n620','Samsung N620 (phone)', 'samsung\-sgh\-r200','Samsung R200 (phone)', 'samsung\-sgh\-r200s','Samsung R200s (phone)', 'samsung\-sgh\-r210','Samsung R210 (phone)', 'samsung\-sgh\-s100','Samsung S100 (phone)', 'samsung\-sgh\-t100','Samsung T100 (phone)', 'samsung\-sgh\-t400','Samsung T400 (phone)', 'samsung\-sgh\-v200','Samsung V200 (phone)', 'samsung\-sgh\-e100','Samsung E100 (phone)', 'samsung\-sgh\-e708','Samsung E700 (phone)', 'samsung\-sgh\-e800','Samsung E800 (phone)', 'samsung\-sgh\-x100','Samsung X100 (phone)', 'samsung\-sgh\-x600','Samsung X600 (phone)', 'sec\-sghc100','Samsung SGHC100 (phone)', 'sec\-sghp100','Samsung SGHP100 (phone)', 'sec\-sghp400','Samsung SGHP400 (phone)', 'sec\-sghq200','Samsung SGHQ200 (phone)', 'sec\-sghs200','Samsung SGHS200 (phone)', 'sec\-spha460','Samsung SPHA460 (phone)', 'sec\-sghs100','Samsung SGHS100 (phone)', 'sec\-sghs300','Samsung SGHS300 (phone)', 'sec\-sghv200','Samsung SGHS200 (phone)', 'sec\-sghv205','Samsung SGHS205 (phone)', 'sec\-sghd410','Samsung SGHD410 (phone)', 'sec\-sghe105','Samsung SGHE105 (phone)', 'sec\-sghe410','Samsung SGHE410 (phone)', 'sec\-sghe400','Samsung SGHE400 (phone)', 'sec\-sghe600','Samsung SGHE600 (phone)', 'sec\-sghe710','Samsung SGHE710 (phone)', 'sec\-sghe715','Samsung SGHE715 (phone)', 'sec\-sghs105','Samsung SGHS105 (phone)', 'sec\-sghx105','Samsung SGHX108 (phone)', 'sec\-sghx426','Samsung SGHX426 (phone)', 'sec\-sghx427','Samsung SGHX427 (phone)', 'sec\-sghx430','Samsung SGHS430 (phone)', 'sec\-sghx450','Samsung SGHS450 (phone)', 'sharp\-tq\-gx10','Sharp TQ-GX10 (phone)', 'sharp\-tq\-gx12','Sharp TQ-GX12 (phone)', 'sie\-2128','Siemens 2128 (phone)', 'sie\-6618','Siemens 66180 (phone)', 'sie\-a55','Siemens A55 (phone)', 'sie\-c60','Siemens C60 (phone)', 'sie\-c62','Siemens C62 (phone)', 'sie\-m55','Siemens M55 (phone)', 'sie\-mc60','Siemens MC60 (phone)', 'sie\-sl55','Siemens SL55 (phone)', 'sie\-slin','Siemens SLIN (phone)', 'sie\-a50','Siemens A50 (phone)', 'sie\-c3i','Siemens C35i (phone)', 'sie\-c45','Siemens C45 (phone)', 'sie\-c55','Siemens C55 (phone)', 'sie\-m50','Siemens M50 (phone)', 'sie\-me45','Siemens ME45 (phone)', 'sie\-mt50','Siemens MT50 (phone)', 'sie\-s35','Siemens S35 (phone)', 'sie\-s40','Siemens S40 (phone)', 'sie\-s45','Siemens S45 (phone)', 'sie\-s55','Siemens S55 (phone)', 'sie\-sl45','Siemens S145 (phone)', 'sie\-slik','Siemens ? (SLIK) (phone)', 'sie\-a57','Siemens A57 (phone)', 'sie\-a60','Siemens A60 (phone)', 'sie\-c56','Siemens C56 (phone)', 'sie\-c61','Siemens C61 (phone)', 'sie\-cf62','Siemens CF62 (phone)', 'sie\-m65','Siemens M65 (phone)', 'sie\-s56','Siemens S56 (phone)', 'sie\-s57c','Siemens S57C (phone)', 'sie\-s65','Siemens S65 (phone)', 'sie\-sl5e','Siemens SL5E (phone)', 'sie\-st60','Siemens ST60 (phone)', 'sie\-sx1','Siemens SX1 (phone)', 'sonyericssonp900','SonyEricsson P900 (phone)', 'sonyericssont230','SonyEricsson T230 (phone)', 'sonyericssont306','SonyEricsson T306 (phone)', 'sonyericssont316','SonyEricsson T316 (phone)', 'sonyericssont616','SonyEricsson T616 (phone)', 'sonyericssonz600','SonyEricsson Z600 (phone)', 'sonyericssonp800','SonyEricsson P800 (phone)', 'sonyericssont100','SonyEricsson T100 (phone)', 'sonyericssont200','SonyEricsson T200 (phone)', 'sonyericssont300','SonyEricsson T300 (phone)', 'sonyericssont310','SonyEricsson T310 (phone)', 'sonyericssont600','SonyEricsson T600 (phone)', 'sonyericssont610','SonyEricsson T610 (phone)', 'sonyericssont68\/','SonyEricsson T68 (phone)', 'sonyericssont68i','SonyEricsson T68i (phone)', 'sonyericssont620','SonyEricsson T620 (phone)', 'sonyericssont630','SonyEricsson T630 (phone)', 'lg\-c1100','LG C1100 (phone)', 'lg\-c1200','LG C1200 (phone)', 'lg\-c2200','LG C2200 (phone)', 'lg\-g1500','LG G1500 (phone)', 'lg\-g3100','LG G3100 (phone)', 'lg\-g4015','LG G4015 (phone)', 'lg\-g5300','LG G5300 (phone)', 'lg\-g5400','LG G5400 (phone)', 'lg\-g7050','LG G7050 (phone)', 'lg\-g7100','LG G7100 (phone)', 'lg\-l1100','LG L1100 (phone)', 'lg\-l1200','LG L1200 (phone)', 'mot\-85','Motorola 85 (phone)', 'mot\-a\-0a','Motorola A0A (phone)', 'mot\-a\-2b','Motorola A2b (phone)', 'mot\-c357','Motorola C357 (phone)', 'mot\-c380','Motorola C380 (phone)', 'mot\-e398','Motorola E398 (phone)', 'mot\-v180','Motorola V180 (phone)', 'mot\-v220','Motorola V220 (phone)', 'mot\-v3','Motorola V3 (phone)', 'mot\-v980','Motorola V980 (phone)', 'nokia2650','Nokia 2650 (phone)', 'nokia3108','Nokia 3108 (phone)', 'nokia3120','Nokia 3120 (phone)', 'nokia3220','Nokia 3220 (phone)', 'nokia5140','Nokia 5140 (phone)', 'nokia6010','Nokia 6010 (phone)', 'nokia6170','Nokia 6170 (phone)', 'nokia6260','Nokia 6260 (phone)', 'nokia6630','Nokia 6630 (phone)', 'nokia6670','Nokia 6670 (phone)', 'nokia7260','Nokia 7260 (phone)', 'sie\-a65','Siemens A65 (phone)', 'sie\-c65','Siemens C65 (phone)', 'sie\-c6v','Siemens C6V (phone)', 'sie\-cx65','Siemens CX65 (phone)', 'sie\-cx70','Siemens CX70 (phone)', 'sie\-sl65','Siemens SL65 (phone)', 'sonyericssonk500i','SonyEricsson K500i (phone)', 'sonyericssonk700c','SonyEricsson K700c (phone)', 'sonyericssonk700i','SonyEricsson K700i (phone)', 'sonyericssonp910i','SonyEricsson P910i (phone)', 'sonyericssons700i','SonyEricsson S700i (phone)', 'sonyericssont226','SonyEricsson T226 (phone)', 'sonyericssont628','SonyEricsson T628 (phone)', 'sonyericssonz1010','SonyEricsson Z1010 (phone)', 'sonyericssonz200','SonyEricsson Z200 (phone)', 'alcatel\-be3','Alcatel BE3 (phone)', 'alcatel\-oh5','Alcatel OH5 (phone)', 'alcatel\-th3','Alcatel TH3 (phone)', 'alcatel\-th4','Alcatel TH4 (phone)', 'ericssona2628s','Ericsson A2628s (phone)', 'ericssonr320','Ericsson R320 (phone)', 'lg\-c1300','LG C1300 (phone)', 'lg\-c3100','LG C3100 (phone)', 'lg\-f2100','LG F2100 (phone)', 'lg\-g1600','LG G1600 (phone)', 'lg\-g210','LG G210 (phone)', 'lg\-g4010','LG G4010 (phone)', 'lg\-g510','LG G510 (phone)', 'lg\-g5310','LG G5300 (phone)', 'lg\-g5600','LG G5600 (phone)', 'lg\-g650','LG G650 (phone)', 'lg\-g7070','LG G7070 (phone)', 'lg\-l3100','LG L3100 (phone)', 'lg\-t5100','LG T5100 (phone)', 'mot\-2200','Motorola 2200 (phone)', 'mot\-32','Motorola 32 (phone)', 'mot\-74','Motorola 74 (phone)', 'mot\-76','Motorola 76 (phone)', 'mot\-87','Motorola 87 (phone)', 'mot\-8700','Motorola 8700 (phone)', 'mot\-a\-0e','Motorola a0e (phone)', 'mot\-a\-1c','Motorola a1c (phone)', 'mot\-a760','Motorola A760 (phone)', 'mot\-a835','Motorola A835 (phone)', 'mot\-c385','Motorola C385 (phone)', 'mot\-v26x','Motorola V26x (phone)', 'mot\-v290','Motorola V290 (phone)', 'mot\-v505','Motorola V505 (phone)', 'mot\-v547','Motorola V547 (phone)', 'mot\-v551','Motorola V551 (phone)', 'mot\-v620','Motorola V620 (phone)', 'mot\-v690','Motorola V690 (phone)', 'mot\-v878','Motorola V878 (phone)', 'sie\-3618','Siemens 3618 (phone)', 'sie\-a56','Siemens A56 (phone)', 'sie\-c6c','Siemens C6C (phone)', 'sie\-cx6c','Siemens CX6c (phone)', 'sie\-cx6v','Siemens CX6v (phone)', 'sie\-m6c','Siemens M6C (phone)', 'sie\-m6v','Siemens M6V (phone)', 'sie\-s46','Siemens S46 (phone)', 'sie\-sk65','Siemens SK65 (phone)', 'sie\-sl56','Siemens SL56 (phone)', 'sie\-st55','Siemens ST55 (phone)', 'sagem\-mo130','Sagem MO130 (phone)', 'sagem\-myc','Sagem myC (phone)', 'sagem\-myv','Sagem myV (phone)', 'sagem\-myx3','Sagem myX3 (phone)', 'sagem\-myx5','Sagem myX5 (phone)', 'sagem\-myx','Sagem myX (phone)', 'lg\-G610','LG G610 (phone)', 'mot\-v550','Motorola V550 (phone)', 'mot\-a\-1f','Motorola A-1F (phone)', 'mot\-c155','Motorola C155 (phone)', 'mot\-c975','Motorola C975 (phone)', 'mot\-c980','Motorola C980 (phone)', 'mot\-e380','Motorola E380 (phone)', 'mot\-e680','Motorola E680 (phone)', 'mot\-ed','Motorola ED (phone)', 'mot\-t725e','Motorola T725E (phone)', 'mot\-v150','Motorola V150 (phone)', 'mot\-v171','Motorola V171 (phone)', 'mot\-v535','Motorola V535 (phone)', 'mot\-v545','Motorola V545 (phone)', 'mot\-v635','Motorola V635 (phone)', 'mot\-v870','Motorola V870 (phone)', 'nokia2112','Nokia 2112 (phone)', 'nokia3620','Nokia 3620 (phone)', 'nokia6020','Nokia 6020 (phone)', 'nokia6200','Nokia 6200 (phone)', 'nokia6620','Nokia 6620 (phone)', 'nokia6680','Nokia 6680 (phone)', 'nokia7270','Nokia 7270 (phone)', 'nokia7280','Nokia 7280 (phone)', 'nokia9500','Nokia 9500 (phone)', 'panasonic\-a200','Panasonic A200 (phone)', 'panasonic\-g70','Panasonic G70 (phone)', 'panasonic\-x100','Panasonic X100 (phone)', 'panasonic\-x300','Panasonic X300 (phone)', 'panasonic\-x400','Panasonic X400 (phone)', 'panasonic\-x500','Panasonic X500 (phone)', 'panasonic\-x66','Panasonic X66 (phone)', 'panasonic\-x77','Panasonic X77 (phone)', 't66','Ericsson T66 (phone)', 'n21i','I-Mode Nec 21i (phone)', 'n22i','I-Mode Nec 22i (phone)', 'ts21i','I-Mode Toshiba 21i (phone)', 'wap','Unknown WAP browser (PDA/Phone browser)', # Generic WAP phone (must be after 'wap*') 'webcollage','WebCollage (PDA/Phone browser)', 'up\.','UP.Browser (PDA/Phone browser)', # Works for UP.Browser and UP.Link # PDA/Phonecell browsers 'android','Android browser (PDA/Phone browser)', 'blackberry','BlackBerry (PDA/Phone browser)', 'cnf2','Supervision I-Mode ByTel (phone)', 'docomo','I-Mode phone (PDA/Phone browser)', 'ipcheck','Supervision IP Check (phone)', 'iphone','IPhone (PDA/Phone browser)', 'portalmmm','I-Mode phone (PDA/Phone browser)', # Others (TV) 'webtv','WebTV browser', 'democracy','Democracy', # Anonymous Proxy Browsers (can be used as grabbers as well...) 'cjb\.net','CJB.NET Proxy', 'ossproxy','OSSProxy', 'smallproxy','SmallProxy', # Other kind of browsers 'adobeair','AdobeAir', 'apt','Debian APT', 'analogx_proxy','AnalogX Proxy', 'gnome\-vfs', 'Gnome FileSystem Abstraction library', 'neon', 'Neon HTTP and WebDAV client library', 'curl','Curl', 'csscheck','WDG CSS Validator', 'httrack','HTTrack', 'fdm','FDM Free Download Manager', 'javaws','Java Web Start', 'wget','Wget', 'fget','FGet', 'chilkat', 'Chilkat', 'webdownloader\sfor\sx','Downloader for X', 'w3m','w3m', 'wdg_validator','WDG HTML Validator', 'w3c_validator','W3C Validator', 'jigsaw','W3C Validator', 'webreaper','WebReaper', 'webzip','WebZIP', 'staroffice','StarOffice', 'gnus', 'Gnus Network User Services', 'nikto', 'Nikto Web Scanner', 'download\smaster','Download Master', 'microsoft\-webdav\-miniredir', 'Microsoft Data Access Component Internet Publishing Provider', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\scache\smanager', 'Microsoft Data Access Component Internet Publishing Provider Cache Manager', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sdav', 'Microsoft Data Access Component Internet Publishing Provider DAV', 'POE\-Component\-Client\-HTTP','HTTP user-agent for POE (portable networking framework for Perl)', 'mozilla','Mozilla', 'libwww','LibWWW', 'lwp','LibWWW-perl' ); # BrowsersHashAreGrabber # Put here an entry for each browser in BrowsersSearchIDOrder that are grabber # browsers. #--------------------------------------------------------------------------- %BrowsersHereAreGrabbers = ( 'teleport','1', 'webcapture','1', 'webcopier','1', 'curl','1', 'fdm','1', 'httrack','1', 'webreaper','1', 'wget','1', 'fget','1', 'download\smaster','1', 'webdownloader\sfor\sx','1', 'webzip','1' ); # BrowsersHashIcon # Each Browsers Search ID is associated to a string that is the name of icon # file for this browser. #--------------------------------------------------------------------------- %BrowsersHashIcon = ( # Common web browsers text, included the ones hard coded in awstats.pl # firefox, opera, chrome, safari, konqueror, svn, msie, netscape 'firefox','firefox', 'opera','opera', 'chrome','chrome', 'safari','safari', 'konqueror','konqueror', 'svn','subversion', 'msie','msie', 'netscape','netscape', 'firebird','phoenix', 'go!zilla','gozilla', 'icab','icab', 'lynx','lynx', 'omniweb','omniweb', # Other standard web browsers 'amaya','amaya', 'amigavoyager','amigavoyager', 'avantbrowser','avant', 'aweb','aweb', 'bonecho','firefox', 'minefield','firefox', 'granparadiso','firefox', 'donzilla','mozilla', 'songbird','mozilla', 'strata','mozilla', 'sylera','mozilla', 'kazehakase','mozilla', 'prism','mozilla', 'iceape','mozilla', 'seamonkey','seamonkey', 'flock','flock', 'icecat','icecat', 'iceweasel','iceweasel', 'bpftp','bpftp', 'camino','chimera', 'chimera','chimera', 'cyberdog','cyberdog', 'dillo','dillo', 'doris','doris', 'dreamcast','dreamcast', 'xbox', 'winxbox', 'ecatch','ecatch', 'encompass','encompass', 'epiphany','epiphany', 'fresco','fresco', 'galeon','galeon', 'flashget','flashget', 'freshdownload','freshdownload', 'getright','getright', 'leechget','leechget', 'hotjava','hotjava', 'ibrowse','ibrowse', 'k\-meleon','kmeleon', 'lotus\-notes','lotusnotes', 'macweb','macweb', 'multizilla','multizilla', 'msfrontpageexpress','fpexpress', 'ncsa_mosaic','ncsa_mosaic', 'netpositive','netpositive', 'phoenix','phoenix', # Site grabbers 'teleport','teleport', 'webcapture','adobe', 'webcopier','webcopier', # Media only browsers 'real','real', 'winamp','mediaplayer', # Works for winampmpeg and winamp3httprdr 'windows\-media\-player','mplayer', 'audion','mediaplayer', 'freeamp','mediaplayer', 'itunes','mediaplayer', 'jetaudio','mediaplayer', 'mint_audio','mediaplayer', 'mpg123','mediaplayer', 'mplayer','mediaplayer', 'nsplayer','netshow', 'qts','mediaplayer', 'sonique','mediaplayer', 'uplayer','mediaplayer', 'xaudio','mediaplayer', 'xine','mediaplayer', 'xmms','mediaplayer', # RSS Readers 'abilon', 'abilon', 'aggrevator', 'rss', 'aiderss', 'rss', 'akregator', 'rss', 'applesyndication', 'rss', 'betanews_reader','rss', 'blogbridge','rss', 'feeddemon', 'rss', 'feedreader', 'rss', 'feedtools', 'rss', 'greatnews', 'rss', 'gregarius', 'rss', 'hatena_rss', 'rss', 'jetbrains_omea', 'rss', 'liferea', 'rss', 'netnewswire', 'rss', 'newsfire', 'rss', 'newsgator', 'rss', 'newzcrawler', 'rss', 'plagger', 'rss', 'pluck', 'rss', 'potu', 'rss', 'pubsub\-rss\-reader', 'rss', 'pulpfiction', 'rss', 'rssbandit', 'rss', 'rssreader', 'rss', 'rssowl', 'rss', 'rss\sxpress','rss', 'rssxpress','rss', 'sage', 'rss', 'sharpreader', 'rss', 'shrook', 'rss', 'straw', 'rss', 'syndirella', 'rss', 'vienna', 'rss', 'wizz\srss\snews\sreader','wizz', # PDA/Phonecell browsers #'alcatel','pdaphone', # Alcatel #'lg\-','pdaphone', # LG #'ericsson','pdaphone', # Ericsson #'mot\-','pdaphone', # Motorola #'nokia','pdaphone', # Nokia #'panasonic','pdaphone', # Panasonic #'philips','pdaphone', # Philips #'sagem','pdaphone', # Sagem #'samsung','pdaphone', # Samsung #'sie\-','pdaphone', # SIE #'sec\-','pdaphone', # Sony/Ericsson #'sonyericsson','pdaphone', # Sony/Ericsson #'mmef','pdaphone', #'mspie','pdaphone', #'vodafone','pdaphone', #'wapalizer','pdaphone', #'wapsilon','pdaphone', 'wap','pdaphone', # Generic WAP phone (must be after 'wap*') 'webcollage','pdaphone', 'up\.','pdaphone', # Works for UP.Browser and UP.Link # PDA/Phonecell browsers 'android','android', 'blackberry','pdaphone', 'docomo','pdaphone', 'iphone','pdaphone', 'portalmmm','pdaphone', # Others (TV) 'webtv','webtv', # Anonymous Proxy Browsers (can be used as grabbers as well...) 'cjb\.net','cjbnet', # Other kind of browsers 'adobeair','adobe', 'apt','apt', 'analogx_proxy','analogx', 'microsoft\-webdav\-miniredir','frontpage', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\scache\smanager','frontpage', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sdav','frontpage', 'microsoft\sdata\saccess\sinternet\spublishing\sprovider\sprotocol\sdiscovery','frontpage', 'microsoft\soffice\sprotocol\sdiscovery','frontpage', 'microsoft\soffice\sexistence\sdiscovery','frontpage', 'gnome\-vfs', 'gnome', 'neon','neon', 'javaws','java', 'webzip','webzip', 'webreaper','webreaper', 'httrack','httrack', 'staroffice','staroffice', 'gnus', 'gnus', 'mozilla','mozilla' ); # Source for this is http://developer.apple.com/internet/safari/uamatrix.html %BrowsersSafariBuildToVersionHash = ( '48' => '0.8', '51' => '0.8.1', '60' => '0.8.2', '73' => '0.9', '74' => '1.0b2', '85' => '1.0', '85.5' => '1.0', '85.7' => '1.0.2', '85.8' => '1.0.3', '85.8.1' => '1.0.3', '100' => '1.1', '100.1' => '1.1.1', '125.7' => '1.2.2', '125.8' => '1.2.2', '125.9' => '1.2.3', '125.11' => '1.2.4', '125.12' => '1.2.4', '312' => '1.3', '312.3' => '1.3.1', '312.3.1' => '1.3.1', '412' => '2.0', '412.2' => '2.0', '412.2.2' => '2.0', '412.5' => '2.0.1', '416.12' => '2.0.2' ); 1; # Browsers examples by engines # # -- Mosaic -- # MSIE 4.0 Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; KITV4 Wanadoo; KITV5 Wanadoo) # # -- Gecko Netscape -- # Netscape 4.05 Mozilla/4.05 [fr]C-SYMPA (Win95; I) # Netscape 4.7 Mozilla/4.7 [fr] (Win95; I) # Netscape 6.0 Mozilla/5.0 (Macintosh; N; PPC; fr-FR; m18) Gecko/20001108 Netscape6/6.0 # Netscape 7.02 Mozilla/5.0 (Platform; Security; OS-or-CPU; Localization; rv:1.0.2) Gecko/20030208 Netscape/7.02 # # -- Gecko others -- # Mozilla 1.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3) Gecko/20030312 # Firefox 0.9 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firefox/0.9.1 # Firebird,Phoenix,Galeon,AmiZilla,Dino # Autre Mozilla/3.01 (compatible;) # # -- Opera -- # Opera 6.03 Mozilla/3.0 (Windows 98; U) Opera 6.03 [en] # Opera 5.12 Mozilla/3.0 (Windows 98; U) Opera 5.12 [en] # Opera 3.21 Opera 3.21, Windows: # # -- KHTML -- # Safari # Konqueror # awstats-7.4/wwwroot/cgi-bin/awstats.pl0000740000175000017500000246321712551203017015761 0ustar sksk#!/usr/bin/perl #------------------------------------------------------------------------------ # Free realtime web server logfile analyzer to show advanced web statistics. # Works from command line or as a CGI. You must use this script as often as # necessary from your scheduler to update your statistics and from command # line or a browser to read report results. # See AWStats documentation (in docs/ directory) for all setup instructions. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . #------------------------------------------------------------------------------ require 5.007; #$|=1; #use warnings; # Must be used in test mode only. This reduce a little process speed #use diagnostics; # Must be used in test mode only. This reduce a lot of process speed use strict; no strict "refs"; use Time::Local ; # use Time::Local 'timelocal_nocheck' is faster but not supported by all Time::Local modules use Socket; use Encode; use File::Spec; #------------------------------------------------------------------------------ # Defines #------------------------------------------------------------------------------ use vars qw/ $REVISION $VERSION /; $REVISION = '20150714'; $VERSION = "7.4 (build $REVISION)"; # ----- Constants ----- use vars qw/ $DEBUGFORCED $NBOFLINESFORBENCHMARK $FRAMEWIDTH $NBOFLASTUPDATELOOKUPTOSAVE $LIMITFLUSH $NEWDAYVISITTIMEOUT $VISITTIMEOUT $NOTSORTEDRECORDTOLERANCE $WIDTHCOLICON $TOOLTIPON $lastyearbeforeupdate $lastmonthbeforeupdate $lastdaybeforeupdate $lasthourbeforeupdate $lastdatebeforeupdate $NOHTML /; $DEBUGFORCED = 0 ; # Force debug level to log lesser level into debug.log file (Keep this value to 0) $NBOFLINESFORBENCHMARK = 8192 ; # Benchmark info are printing every NBOFLINESFORBENCHMARK lines (Must be a power of 2) $FRAMEWIDTH = 240; # Width of left frame when UseFramesWhenCGI is on $NBOFLASTUPDATELOOKUPTOSAVE = 500; # Nb of records to save in DNS last update cache file $LIMITFLUSH = 5000; # Nb of records in data arrays after how we need to flush data on disk $NEWDAYVISITTIMEOUT = 764041; # Delay between 01-23:59:59 and 02-00:00:00 $VISITTIMEOUT = 10000 ; # Lapse of time to consider a page load as a new visit. 10000 = 1 hour (Default = 10000) $NOTSORTEDRECORDTOLERANCE = 20000 ; # Lapse of time to accept a record if not in correct order. 20000 = 2 hour (Default = 20000) $WIDTHCOLICON = 32; $TOOLTIPON = 0; # Tooltips plugin loaded $NOHTML = 0; # Suppress the html headers # ----- Running variables ----- use vars qw/ $DIR $PROG $Extension $Debug $ShowSteps $DebugResetDone $DNSLookupAlreadyDone $RunAsCli $UpdateFor $HeaderHTTPSent $HeaderHTMLSent $LastLine $LastLineNumber $LastLineOffset $LastLineChecksum $LastUpdate $lowerval $PluginMode $MetaRobot $AverageVisits $AveragePages $AverageHits $AverageBytes $TotalUnique $TotalVisits $TotalHostsKnown $TotalHostsUnknown $TotalPages $TotalHits $TotalBytes $TotalHitsErrors $TotalNotViewedPages $TotalNotViewedHits $TotalNotViewedBytes $TotalEntries $TotalExits $TotalBytesPages $TotalDifferentPages $TotalKeyphrases $TotalKeywords $TotalDifferentKeyphrases $TotalDifferentKeywords $TotalSearchEnginesPages $TotalSearchEnginesHits $TotalRefererPages $TotalRefererHits $TotalDifferentSearchEngines $TotalDifferentReferer $FrameName $Center $FileConfig $FileSuffix $Host $YearRequired $MonthRequired $DayRequired $HourRequired $QueryString $SiteConfig $StaticLinks $PageCode $PageDir $PerlParsingFormat $UserAgent $pos_vh $pos_host $pos_logname $pos_date $pos_tz $pos_method $pos_url $pos_code $pos_size $pos_referer $pos_agent $pos_query $pos_gzipin $pos_gzipout $pos_compratio $pos_timetaken $pos_cluster $pos_emails $pos_emailr $pos_hostr @pos_extra /; $DIR = $PROG = $Extension = ''; $Debug = $ShowSteps = 0; $DebugResetDone = $DNSLookupAlreadyDone = 0; $RunAsCli = $UpdateFor = $HeaderHTTPSent = $HeaderHTMLSent = 0; $LastLine = $LastLineNumber = $LastLineOffset = $LastLineChecksum = 0; $LastUpdate = 0; $lowerval = 0; $PluginMode = ''; $MetaRobot = 0; $AverageVisits = $AveragePages = $AverageHits = $AverageBytes = 0; $TotalUnique = $TotalVisits = $TotalHostsKnown = $TotalHostsUnknown = 0; $TotalPages = $TotalHits = $TotalBytes = $TotalHitsErrors = 0; $TotalNotViewedPages = $TotalNotViewedHits = $TotalNotViewedBytes = 0; $TotalEntries = $TotalExits = $TotalBytesPages = $TotalDifferentPages = 0; $TotalKeyphrases = $TotalKeywords = $TotalDifferentKeyphrases = 0; $TotalDifferentKeywords = 0; $TotalSearchEnginesPages = $TotalSearchEnginesHits = $TotalRefererPages = 0; $TotalRefererHits = $TotalDifferentSearchEngines = $TotalDifferentReferer = 0; ( $FrameName, $Center, $FileConfig, $FileSuffix, $Host, $YearRequired, $MonthRequired, $DayRequired, $HourRequired, $QueryString, $SiteConfig, $StaticLinks, $PageCode, $PageDir, $PerlParsingFormat, $UserAgent ) = ( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ); # ----- Plugins variable ----- use vars qw/ %PluginsLoaded $PluginDir $AtLeastOneSectionPlugin /; %PluginsLoaded = (); $PluginDir = ''; $AtLeastOneSectionPlugin = 0; # ----- Time vars ----- use vars qw/ $starttime $nowtime $tomorrowtime $nowweekofmonth $nowweekofyear $nowdaymod $nowsmallyear $nowsec $nowmin $nowhour $nowday $nowmonth $nowyear $nowwday $nowyday $nowns $StartSeconds $StartMicroseconds /; $StartSeconds = $StartMicroseconds = 0; # ----- Variables for config file reading ----- use vars qw/ $FoundNotPageList /; $FoundNotPageList = 0; # ----- Config file variables ----- use vars qw/ $StaticExt $DNSStaticCacheFile $DNSLastUpdateCacheFile $MiscTrackerUrl $Lang $MaxRowsInHTMLOutput $MaxLengthOfShownURL $MaxLengthOfStoredURL $MaxLengthOfStoredUA %BarPng $BuildReportFormat $BuildHistoryFormat $ExtraTrackedRowsLimit $DatabaseBreak $SectionsToBeSaved /; $StaticExt = 'html'; $DNSStaticCacheFile = 'dnscache.txt'; $DNSLastUpdateCacheFile = 'dnscachelastupdate.txt'; $MiscTrackerUrl = '/js/awstats_misc_tracker.js'; $Lang = 'auto'; $SectionsToBeSaved = 'all'; $MaxRowsInHTMLOutput = 1000; $MaxLengthOfShownURL = 64; $MaxLengthOfStoredURL = 256; # Note: Apache LimitRequestLine is default to 8190 $MaxLengthOfStoredUA = 256; %BarPng = ( 'vv' => 'vv.png', 'vu' => 'vu.png', 'hu' => 'hu.png', 'vp' => 'vp.png', 'hp' => 'hp.png', 'he' => 'he.png', 'hx' => 'hx.png', 'vh' => 'vh.png', 'hh' => 'hh.png', 'vk' => 'vk.png', 'hk' => 'hk.png' ); $BuildReportFormat = 'html'; $BuildHistoryFormat = 'text'; $ExtraTrackedRowsLimit = 500; $DatabaseBreak = 'month'; use vars qw/ $DebugMessages $AllowToUpdateStatsFromBrowser $EnableLockForUpdate $DNSLookup $AllowAccessFromWebToAuthenticatedUsersOnly $BarHeight $BarWidth $CreateDirDataIfNotExists $KeepBackupOfHistoricFiles $NbOfLinesParsed $NbOfLinesDropped $NbOfLinesCorrupted $NbOfLinesComment $NbOfLinesBlank $NbOfOldLines $NbOfNewLines $NbOfLinesShowsteps $NewLinePhase $NbOfLinesForCorruptedLog $PurgeLogFile $ArchiveLogRecords $ShowDropped $ShowCorrupted $ShowUnknownOrigin $ShowDirectOrigin $ShowLinksToWhoIs $ShowAuthenticatedUsers $ShowFileSizesStats $ShowScreenSizeStats $ShowSMTPErrorsStats $ShowEMailSenders $ShowEMailReceivers $ShowWormsStats $ShowClusterStats $IncludeInternalLinksInOriginSection $AuthenticatedUsersNotCaseSensitive $Expires $UpdateStats $MigrateStats $URLNotCaseSensitive $URLWithQuery $URLReferrerWithQuery $DecodeUA $DecodePunycode /; ( $DebugMessages, $AllowToUpdateStatsFromBrowser, $EnableLockForUpdate, $DNSLookup, $AllowAccessFromWebToAuthenticatedUsersOnly, $BarHeight, $BarWidth, $CreateDirDataIfNotExists, $KeepBackupOfHistoricFiles, $NbOfLinesParsed, $NbOfLinesDropped, $NbOfLinesCorrupted, $NbOfLinesComment, $NbOfLinesBlank, $NbOfOldLines, $NbOfNewLines, $NbOfLinesShowsteps, $NewLinePhase, $NbOfLinesForCorruptedLog, $PurgeLogFile, $ArchiveLogRecords, $ShowDropped, $ShowCorrupted, $ShowUnknownOrigin, $ShowDirectOrigin, $ShowLinksToWhoIs, $ShowAuthenticatedUsers, $ShowFileSizesStats, $ShowScreenSizeStats, $ShowSMTPErrorsStats, $ShowEMailSenders, $ShowEMailReceivers, $ShowWormsStats, $ShowClusterStats, $IncludeInternalLinksInOriginSection, $AuthenticatedUsersNotCaseSensitive, $Expires, $UpdateStats, $MigrateStats, $URLNotCaseSensitive, $URLWithQuery, $URLReferrerWithQuery, $DecodeUA, $DecodePunycode ) = ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ); use vars qw/ $DetailedReportsOnNewWindows $FirstDayOfWeek $KeyWordsNotSensitive $SaveDatabaseFilesWithPermissionsForEveryone $WarningMessages $ShowLinksOnUrl $UseFramesWhenCGI $ShowMenu $ShowSummary $ShowMonthStats $ShowDaysOfMonthStats $ShowDaysOfWeekStats $ShowHoursStats $ShowDomainsStats $ShowHostsStats $ShowRobotsStats $ShowSessionsStats $ShowPagesStats $ShowFileTypesStats $ShowDownloadsStats $ShowOSStats $ShowBrowsersStats $ShowOriginStats $ShowKeyphrasesStats $ShowKeywordsStats $ShowMiscStats $ShowHTTPErrorsStats $ShowHTTPErrorsPageDetail $AddDataArrayMonthStats $AddDataArrayShowDaysOfMonthStats $AddDataArrayShowDaysOfWeekStats $AddDataArrayShowHoursStats /; ( $DetailedReportsOnNewWindows, $FirstDayOfWeek, $KeyWordsNotSensitive, $SaveDatabaseFilesWithPermissionsForEveryone, $WarningMessages, $ShowLinksOnUrl, $UseFramesWhenCGI, $ShowMenu, $ShowSummary, $ShowMonthStats, $ShowDaysOfMonthStats, $ShowDaysOfWeekStats, $ShowHoursStats, $ShowDomainsStats, $ShowHostsStats, $ShowRobotsStats, $ShowSessionsStats, $ShowPagesStats, $ShowFileTypesStats, $ShowDownloadsStats, $ShowOSStats, $ShowBrowsersStats, $ShowOriginStats, $ShowKeyphrasesStats, $ShowKeywordsStats, $ShowMiscStats, $ShowHTTPErrorsStats, $ShowHTTPErrorsPageDetail, $AddDataArrayMonthStats, $AddDataArrayShowDaysOfMonthStats, $AddDataArrayShowDaysOfWeekStats, $AddDataArrayShowHoursStats ) = ( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ); use vars qw/ $AllowFullYearView $LevelForRobotsDetection $LevelForWormsDetection $LevelForBrowsersDetection $LevelForOSDetection $LevelForRefererAnalyze $LevelForFileTypesDetection $LevelForSearchEnginesDetection $LevelForKeywordsDetection /; ( $AllowFullYearView, $LevelForRobotsDetection, $LevelForWormsDetection, $LevelForBrowsersDetection, $LevelForOSDetection, $LevelForRefererAnalyze, $LevelForFileTypesDetection, $LevelForSearchEnginesDetection, $LevelForKeywordsDetection ) = ( 2, 2, 0, 2, 2, 2, 2, 2, 2 ); use vars qw/ $DirLock $DirCgi $DirConfig $DirData $DirIcons $DirLang $AWScript $ArchiveFileName $AllowAccessFromWebToFollowingIPAddresses $HTMLHeadSection $HTMLEndSection $LinksToWhoIs $LinksToIPWhoIs $LogFile $LogType $LogFormat $LogSeparator $Logo $LogoLink $StyleSheet $WrapperScript $SiteDomain $UseHTTPSLinkForUrl $URLQuerySeparators $URLWithAnchor $ErrorMessages $ShowFlagLinks $AddLinkToExternalCGIWrapper /; ( $DirLock, $DirCgi, $DirConfig, $DirData, $DirIcons, $DirLang, $AWScript, $ArchiveFileName, $AllowAccessFromWebToFollowingIPAddresses, $HTMLHeadSection, $HTMLEndSection, $LinksToWhoIs, $LinksToIPWhoIs, $LogFile, $LogType, $LogFormat, $LogSeparator, $Logo, $LogoLink, $StyleSheet, $WrapperScript, $SiteDomain, $UseHTTPSLinkForUrl, $URLQuerySeparators, $URLWithAnchor, $ErrorMessages, $ShowFlagLinks, $AddLinkToExternalCGIWrapper ) = ( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ); use vars qw/ $color_Background $color_TableBG $color_TableBGRowTitle $color_TableBGTitle $color_TableBorder $color_TableRowTitle $color_TableTitle $color_text $color_textpercent $color_titletext $color_weekend $color_link $color_hover $color_other $color_h $color_k $color_p $color_e $color_x $color_s $color_u $color_v /; ( $color_Background, $color_TableBG, $color_TableBGRowTitle, $color_TableBGTitle, $color_TableBorder, $color_TableRowTitle, $color_TableTitle, $color_text, $color_textpercent, $color_titletext, $color_weekend, $color_link, $color_hover, $color_other, $color_h, $color_k, $color_p, $color_e, $color_x, $color_s, $color_u, $color_v ) = ( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ); # ---------- Init arrays -------- use vars qw/ @RobotsSearchIDOrder_list1 @RobotsSearchIDOrder_list2 @RobotsSearchIDOrder_listgen @SearchEnginesSearchIDOrder_list1 @SearchEnginesSearchIDOrder_list2 @SearchEnginesSearchIDOrder_listgen @BrowsersSearchIDOrder @OSSearchIDOrder @WordsToExtractSearchUrl @WordsToCleanSearchUrl @WormsSearchIDOrder @RobotsSearchIDOrder @SearchEnginesSearchIDOrder @_from_p @_from_h @_time_p @_time_h @_time_k @_time_nv_p @_time_nv_h @_time_nv_k @DOWIndex @fieldlib @keylist /; @RobotsSearchIDOrder = @SearchEnginesSearchIDOrder = (); @_from_p = @_from_h = (); @_time_p = @_time_h = @_time_k = @_time_nv_p = @_time_nv_h = @_time_nv_k = (); @DOWIndex = @fieldlib = @keylist = (); use vars qw/ @MiscListOrder %MiscListCalc %OSFamily %BrowsersFamily @SessionsRange %SessionsAverage %LangBrowserToLangAwstats %LangAWStatsToFlagAwstats %BrowsersSafariBuildToVersionHash @HostAliases @AllowAccessFromWebToFollowingAuthenticatedUsers @DefaultFile @SkipDNSLookupFor @SkipHosts @SkipUserAgents @SkipFiles @SkipReferrers @NotPageFiles @OnlyHosts @OnlyUserAgents @OnlyFiles @OnlyUsers @URLWithQueryWithOnly @URLWithQueryWithout @ExtraName @ExtraCondition @ExtraStatTypes @MaxNbOfExtra @MinHitExtra @ExtraFirstColumnTitle @ExtraFirstColumnValues @ExtraFirstColumnFunction @ExtraFirstColumnFormat @ExtraCodeFilter @ExtraConditionType @ExtraConditionTypeVal @ExtraFirstColumnValuesType @ExtraFirstColumnValuesTypeVal @ExtraAddAverageRow @ExtraAddSumRow @PluginsToLoad /; @MiscListOrder = ( 'AddToFavourites', 'JavascriptDisabled', 'JavaEnabled', 'DirectorSupport', 'FlashSupport', 'RealPlayerSupport', 'QuickTimeSupport', 'WindowsMediaPlayerSupport', 'PDFSupport' ); %MiscListCalc = ( 'TotalMisc' => '', 'AddToFavourites' => 'u', 'JavascriptDisabled' => 'hm', 'JavaEnabled' => 'hm', 'DirectorSupport' => 'hm', 'FlashSupport' => 'hm', 'RealPlayerSupport' => 'hm', 'QuickTimeSupport' => 'hm', 'WindowsMediaPlayerSupport' => 'hm', 'PDFSupport' => 'hm' ); @SessionsRange = ( '0s-30s', '30s-2mn', '2mn-5mn', '5mn-15mn', '15mn-30mn', '30mn-1h', '1h+' ); %SessionsAverage = ( '0s-30s', 15, '30s-2mn', 75, '2mn-5mn', 210, '5mn-15mn', 600, '15mn-30mn', 1350, '30mn-1h', 2700, '1h+', 3600 ); # HTTP-Accept or Lang parameter => AWStats code to use for lang # ISO-639-1 or 2 or other => awstats-xx.txt where xx is ISO-639-1 %LangBrowserToLangAwstats = ( 'sq' => 'al', 'ar' => 'ar', 'ba' => 'ba', 'bg' => 'bg', 'zh-tw' => 'tw', 'zh' => 'cn', 'cs' => 'cz', 'de' => 'de', 'da' => 'dk', 'en' => 'en', 'et' => 'et', 'fi' => 'fi', 'fr' => 'fr', 'gl' => 'gl', 'es' => 'es', 'eu' => 'eu', 'ca' => 'ca', 'el' => 'gr', 'hu' => 'hu', 'is' => 'is', 'in' => 'id', 'it' => 'it', 'ja' => 'jp', 'kr' => 'ko', 'lv' => 'lv', 'nl' => 'nl', 'no' => 'nb', 'nb' => 'nb', 'nn' => 'nn', 'pl' => 'pl', 'pt' => 'pt', 'pt-br' => 'br', 'ro' => 'ro', 'ru' => 'ru', 'sr' => 'sr', 'sk' => 'sk', 'sv' => 'se', 'th' => 'th', 'tr' => 'tr', 'uk' => 'ua', 'cy' => 'cy', 'wlk' => 'cy' ); %LangAWStatsToFlagAwstats = ( # If flag (country ISO-3166 two letters) is not same than AWStats Lang code 'ca' => 'es_cat', 'et' => 'ee', 'eu' => 'es_eu', 'cy' => 'wlk', 'gl' => 'glg', 'he' => 'il', 'ko' => 'kr', 'ar' => 'sa', 'sr' => 'cs' ); @HostAliases = @AllowAccessFromWebToFollowingAuthenticatedUsers = (); @DefaultFile = @SkipDNSLookupFor = (); @SkipHosts = @SkipUserAgents = @NotPageFiles = @SkipFiles = @SkipReferrers = (); @OnlyHosts = @OnlyUserAgents = @OnlyFiles = @OnlyUsers = (); @URLWithQueryWithOnly = @URLWithQueryWithout = (); @ExtraName = @ExtraCondition = @ExtraStatTypes = (); @MaxNbOfExtra = @MinHitExtra = (); @ExtraFirstColumnTitle = @ExtraFirstColumnValues = (); @ExtraFirstColumnFunction = @ExtraFirstColumnFormat = (); @ExtraCodeFilter = @ExtraConditionType = @ExtraConditionTypeVal = (); @ExtraFirstColumnValuesType = @ExtraFirstColumnValuesTypeVal = (); @ExtraAddAverageRow = @ExtraAddSumRow = (); @PluginsToLoad = (); # ---------- Init hash arrays -------- use vars qw/ %BrowsersHashIDLib %BrowsersHashIcon %BrowsersHereAreGrabbers %DomainsHashIDLib %MimeHashLib %MimeHashFamily %OSHashID %OSHashLib %RobotsHashIDLib %RobotsAffiliateLib %SearchEnginesHashID %SearchEnginesHashLib %SearchEnginesWithKeysNotInQuery %SearchEnginesKnownUrl %NotSearchEnginesKeys %WormsHashID %WormsHashLib %WormsHashTarget /; use vars qw/ %HTMLOutput %NoLoadPlugin %FilterIn %FilterEx %BadFormatWarning %MonthNumLib %ValidHTTPCodes %ValidSMTPCodes %TrapInfosForHTTPErrorCodes %NotPageList %DayBytes %DayHits %DayPages %DayVisits %MaxNbOf %MinHit %ListOfYears %HistoryAlreadyFlushed %PosInFile %ValueInFile %val %nextval %egal %TmpDNSLookup %TmpOS %TmpRefererServer %TmpRobot %TmpBrowser %MyDNSTable /; %HTMLOutput = %NoLoadPlugin = %FilterIn = %FilterEx = (); %BadFormatWarning = (); %MonthNumLib = (); %ValidHTTPCodes = %ValidSMTPCodes = (); %TrapInfosForHTTPErrorCodes = (); %NotPageList = (); %DayBytes = %DayHits = %DayPages = %DayVisits = (); %MaxNbOf = %MinHit = (); %ListOfYears = %HistoryAlreadyFlushed = %PosInFile = %ValueInFile = (); %val = %nextval = %egal = (); %TmpDNSLookup = %TmpOS = %TmpRefererServer = %TmpRobot = %TmpBrowser = (); %MyDNSTable = (); use vars qw/ %FirstTime %LastTime %MonthHostsKnown %MonthHostsUnknown %MonthUnique %MonthVisits %MonthPages %MonthHits %MonthBytes %MonthNotViewedPages %MonthNotViewedHits %MonthNotViewedBytes %_session %_browser_h %_browser_p %_domener_p %_domener_h %_domener_k %_errors_h %_errors_k %_filetypes_h %_filetypes_k %_filetypes_gz_in %_filetypes_gz_out %_host_p %_host_h %_host_k %_host_l %_host_s %_host_u %_waithost_e %_waithost_l %_waithost_s %_waithost_u %_keyphrases %_keywords %_os_h %_os_p %_pagesrefs_p %_pagesrefs_h %_robot_h %_robot_k %_robot_l %_robot_r %_worm_h %_worm_k %_worm_l %_login_h %_login_p %_login_k %_login_l %_screensize_h %_misc_p %_misc_h %_misc_k %_cluster_p %_cluster_h %_cluster_k %_se_referrals_p %_se_referrals_h %_sider_h %_referer_h %_err_host_h %_url_p %_url_k %_url_e %_url_x %_downloads %_unknownreferer_l %_unknownrefererbrowser_l %_emails_h %_emails_k %_emails_l %_emailr_h %_emailr_k %_emailr_l /; &Init_HashArray(); # ---------- Init Regex -------- use vars qw/ $regclean1 $regclean2 $regdate /; $regclean1 = qr/<(recnb|\/td)>/i; $regclean2 = qr/<\/?[^<>]+>/i; $regdate = qr/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/; # ---------- Init Tie::hash arrays -------- # Didn't find a tie that increase speed #use Tie::StdHash; #use Tie::Cache::LRU; #tie %_host_p, 'Tie::StdHash'; #tie %TmpOS, 'Tie::Cache::LRU'; # PROTOCOL CODES use vars qw/ %httpcodelib %ftpcodelib %smtpcodelib /; # DEFAULT MESSAGE use vars qw/ @Message /; @Message = ( 'Unknown', 'Unknown (unresolved ip)', 'Others', 'View details', 'Day', 'Month', 'Year', 'Statistics for', 'First visit', 'Last visit', 'Number of visits', 'Unique visitors', 'Visit', 'different keywords', 'Search', 'Percent', 'Traffic', 'Domains/Countries', 'Visitors', 'Pages-URL', 'Hours', 'Browsers', '', 'Referers', 'Never updated (See \'Build/Update\' on awstats_setup.html page)', 'Visitors domains/countries', 'hosts', 'pages', 'different pages-url', 'Viewed', 'Other words', 'Pages not found', 'HTTP Error codes', 'Netscape versions', 'IE versions', 'Last Update', 'Connect to site from', 'Origin', 'Direct address / Bookmarks', 'Origin unknown', 'Links from an Internet Search Engine', 'Links from an external page (other web sites except search engines)', 'Links from an internal page (other page on same site)', 'Keyphrases used on search engines', 'Keywords used on search engines', 'Unresolved IP Address', 'Unknown OS (Referer field)', 'Required but not found URLs (HTTP code 404)', 'IP Address', 'Error Hits', 'Unknown browsers (Referer field)', 'different robots', 'visits/visitor', 'Robots/Spiders visitors', 'Free realtime logfile analyzer for advanced web statistics', 'of', 'Pages', 'Hits', 'Versions', 'Operating Systems', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Navigation', 'File type', 'Update now', 'Bandwidth', 'Back to main page', 'Top', 'dd mmm yyyy - HH:MM', 'Filter', 'Full list', 'Hosts', 'Known', 'Robots', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Days of week', 'Who', 'When', 'Authenticated users', 'Min', 'Average', 'Max', 'Web compression', 'Bandwidth saved', 'Compression on', 'Compression result', 'Total', 'different keyphrases', 'Entry', 'Code', 'Average size', 'Links from a NewsGroup', 'KB', 'MB', 'GB', 'Grabber', 'Yes', 'No', 'Info.', 'OK', 'Exit', 'Visits duration', 'Close window', 'Bytes', 'Search Keyphrases', 'Search Keywords', 'different refering search engines', 'different refering sites', 'Other phrases', 'Other logins (and/or anonymous users)', 'Refering search engines', 'Refering sites', 'Summary', 'Exact value not available in "Year" view', 'Data value arrays', 'Sender EMail', 'Receiver EMail', 'Reported period', 'Extra/Marketing', 'Screen sizes', 'Worm/Virus attacks', 'Hit on favorite icon', 'Days of month', 'Miscellaneous', 'Browsers with Java support', 'Browsers with Macromedia Director Support', 'Browsers with Flash Support', 'Browsers with Real audio playing support', 'Browsers with Quictime audio playing support', 'Browsers with Windows Media audio playing support', 'Browsers with PDF support', 'SMTP Error codes', 'Countries', 'Mails', 'Size', 'First', 'Last', 'Exclude filter', 'Codes shown here gave hits or traffic "not viewed" by visitors, so they are not included in other charts.', 'Cluster', 'Robots shown here gave hits or traffic "not viewed" by visitors, so they are not included in other charts.', 'Numbers after + are successful hits on "robots.txt" files', 'Worms shown here gave hits or traffic "not viewed" by visitors, so thay are not included in other charts.', 'Not viewed traffic includes traffic generated by robots, worms, or replies with special HTTP status codes.', 'Traffic viewed', 'Traffic not viewed', 'Monthly history', 'Worms', 'different worms', 'Mails successfully sent', 'Mails failed/refused', 'Sensitive targets', 'Javascript disabled', 'Created by', 'plugins', 'Regions', 'Cities', 'Opera versions', 'Safari versions', 'Chrome versions', 'Konqueror versions', ',', 'Downloads', 'Export CSV' ); #------------------------------------------------------------------------------ # Functions #------------------------------------------------------------------------------ # Function to solve pb with openvms sub file_filt (@) { my @retval; foreach my $fl (@_) { $fl =~ tr/^//d; push @retval, $fl; } return sort @retval; } #------------------------------------------------------------------------------ # Function: Write on output header of HTTP answer # Parameters: None # Input: $HeaderHTTPSent $BuildReportFormat $PageCode $Expires # Output: $HeaderHTTPSent=1 # Return: None #------------------------------------------------------------------------------ sub http_head { if ( !$HeaderHTTPSent ) { my $newpagecode = $PageCode ? $PageCode : "utf-8"; if ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ) { print( $ENV{'HTTP_USER_AGENT'} =~ /MSIE|Googlebot/i ? "Content-type: text/html; charset=$newpagecode\n" : "Content-type: text/xml; charset=$newpagecode\n" ); } else { print "Content-type: text/html; charset=$newpagecode\n"; } # Expires must be GMT ANSI asctime and must be after Content-type to avoid pb with some servers (SAMBAR) if ( $Expires =~ /^\d+$/ ) { print "Cache-Control: public\n"; print "Last-Modified: " . gmtime($starttime) . "\n"; print "Expires: " . ( gmtime( $starttime + $Expires ) ) . "\n"; } print "\n"; } $HeaderHTTPSent++; } #------------------------------------------------------------------------------ # Function: Write on output header of HTML page # Parameters: None # Input: %HTMLOutput $PluginMode $Expires $Lang $StyleSheet $HTMLHeadSection $PageCode $PageDir # Output: $HeaderHTMLSent=1 # Return: None #------------------------------------------------------------------------------ sub html_head { my $dir = $PageDir ? 'right' : 'left'; if ($NOHTML) { return; } if ( scalar keys %HTMLOutput || $PluginMode ) { my $periodtitle = " ($YearRequired"; $periodtitle .= ( $MonthRequired ne 'all' ? "-$MonthRequired" : "" ); $periodtitle .= ( $DayRequired ne '' ? "-$DayRequired" : "" ); $periodtitle .= ( $HourRequired ne '' ? "-$HourRequired" : "" ); $periodtitle .= ")"; # Write head section if ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ) { if ($PageCode) { print "\n"; } else { print "\n"; } if ( $FrameName ne 'index' ) { print "\n"; } else { print "\n"; } print "\n"; } else { if ( $FrameName ne 'index' ) { print "\n"; } else { print "\n"; } print '\n"; } print "\n"; my $endtag = '>'; if ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ) { $endtag = ' />'; } # Affiche tag meta generator print "\n" : "$Message[7] $SiteDomain$periodtitle" . ( $k[0] ? " - " . $k[0] : "" ) . "\n"; if ( $FrameName ne 'index' ) { if ($StyleSheet) { print "\n"; } # A STYLE section must be in head section. Do not use " for number in a style section print "\n"; } # les scripts necessaires pour trier avec Tablekit # print " # This make the browser sending a request to the attacker server that contains # cookie used for AWStats server sessions. Attacker can this way caught this # cookie and used it to go on AWStats server like original visitor. For this # resaon, parameter received by AWStats must be sanitized by this function # before beeing put inside a web page. # Parameters: stringtoclean # Input: None # Output: None # Return: cleanedstring #------------------------------------------------------------------------------ sub CleanXSS { my $stringtoclean = shift; # To avoid html tags and javascript $stringtoclean =~ s//>/g; $stringtoclean =~ s/|//g; # To avoid onload=" $stringtoclean =~ s/onload//g; return $stringtoclean; } #------------------------------------------------------------------------------ # Function: Clean tags in a string # AWStats data files are stored in ISO-8859-1. # Parameters: stringtodecode # Input: None # Output: None # Return: decodedstring #------------------------------------------------------------------------------ sub XMLDecodeFromHisto { my $stringtoclean = shift; $stringtoclean =~ s/$regclean1/ /g; # Replace or with space $stringtoclean =~ s/$regclean2//g; # Remove others $stringtoclean =~ s/%3d/=/g; $stringtoclean =~ s/&/&/g; $stringtoclean =~ s/<//g; $stringtoclean =~ s/"/\"/g; $stringtoclean =~ s/'/\'/g; return $stringtoclean; } #------------------------------------------------------------------------------ # Function: Copy one file into another # Parameters: sourcefilename targetfilename # Input: None # Output: None # Return: 0 if copy is ok, 1 else #------------------------------------------------------------------------------ sub FileCopy { my $filesource = shift; my $filetarget = shift; if ($Debug) { debug( "FileCopy($filesource,$filetarget)", 1 ); } open( FILESOURCE, "$filesource" ) || return 1; open( FILETARGET, ">$filetarget" ) || return 1; binmode FILESOURCE; binmode FILETARGET; # ... close(FILETARGET); close(FILESOURCE); if ($Debug) { debug( " File copied", 1 ); } return 0; } #------------------------------------------------------------------------------ # Function: Format a QUERY_STRING # Parameters: query # Input: None # Output: None # Return: formated query #------------------------------------------------------------------------------ # TODO Appeller cette fonction partout ou il y a des NewLinkParams sub CleanNewLinkParamsFrom { my $NewLinkParams = shift; while ( my $param = shift ) { $NewLinkParams =~ s/(^|&|&)$param(=[^&]*|$)//i; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; return $NewLinkParams; } #------------------------------------------------------------------------------ # Function: Show flags for other language translations # Parameters: Current languade id (en, fr, ...) # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub Show_Flag_Links { my $CurrentLang = shift; # Build flags link my $NewLinkParams = $QueryString; my $NewLinkTarget = ''; if ( $ENV{'GATEWAY_INTERFACE'} ) { $NewLinkParams = CleanNewLinkParamsFrom( $NewLinkParams, ( 'update', 'staticlinks', 'framename', 'lang' ) ); $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; $NewLinkParams =~ s/(^|&|&)lang=[^&]*//i; $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } if ( $FrameName eq 'mainright' ) { $NewLinkTarget = " target=\"_parent\""; } } else { $NewLinkParams = ( $SiteConfig ? "config=$SiteConfig&" : "" ) . "year=$YearRequired&month=$MonthRequired&"; } if ( $NewLinkParams !~ /output=/ ) { $NewLinkParams .= 'output=main&'; } if ( $FrameName eq 'mainright' ) { $NewLinkParams .= 'framename=index&'; } foreach my $lng ( split( /\s+/, $ShowFlagLinks ) ) { $lng = $LangBrowserToLangAwstats{$lng} ? $LangBrowserToLangAwstats{$lng} : $lng; if ( $lng ne $CurrentLang ) { my %lngtitle = ( 'en', 'English', 'fr', 'French', 'de', 'German', 'it', 'Italian', 'nl', 'Dutch', 'es', 'Spanish' ); my $lngtitle = ( $lngtitle{$lng} ? $lngtitle{$lng} : $lng ); my $flag = ( $LangAWStatsToFlagAwstats{$lng} ? $LangAWStatsToFlagAwstats{$lng} : $lng ); print " \n"; } } } #------------------------------------------------------------------------------ # Function: Format value in bytes in a string (Bytes, Kb, Mb, Gb) # Parameters: bytes (integer value or "0.00") # Input: None # Output: None # Return: "x.yz MB" or "x.yy KB" or "x Bytes" or "0" #------------------------------------------------------------------------------ sub Format_Bytes { my $bytes = shift || 0; my $fudge = 1; # Do not use exp/log function to calculate 1024power, function make segfault on some unix/perl versions if ( $bytes >= ( $fudge << 30 ) ) { return sprintf( "%.2f", $bytes / 1073741824 ) . " $Message[110]"; } if ( $bytes >= ( $fudge << 20 ) ) { return sprintf( "%.2f", $bytes / 1048576 ) . " $Message[109]"; } if ( $bytes >= ( $fudge << 10 ) ) { return sprintf( "%.2f", $bytes / 1024 ) . " $Message[108]"; } if ( $bytes < 0 ) { $bytes = "?"; } return int($bytes) . ( int($bytes) ? " $Message[119]" : "" ); } #------------------------------------------------------------------------------ # Function: Format a number with commas or any other separator # CL: courtesy of http://www.perlmonks.org/?node_id=2145 # Parameters: number # Input: None # Output: None # Return: "999,999,999,999" #------------------------------------------------------------------------------ sub Format_Number { my $number = shift || 0; $number =~ s/(\d)(\d\d\d)$/$1 $2/; $number =~ s/(\d)(\d\d\d\s\d\d\d)$/$1 $2/; $number =~ s/(\d)(\d\d\d\s\d\d\d\s\d\d\d)$/$1 $2/; my $separator = $Message[177]; if ($separator eq '') { $separator=' '; } # For backward compatibility $number =~ s/ /$separator/g; return $number; } #------------------------------------------------------------------------------ # Function: Return " alt=string title=string" # Parameters: string # Input: None # Output: None # Return: "alt=string title=string" #------------------------------------------------------------------------------ sub AltTitle { my $string = shift || ''; return " alt='$string' title='$string'"; # return " alt=\"$string\" title=\"$string\""; # return ($BuildReportFormat?"":" alt=\"$string\"")." title=\"$string\""; } #------------------------------------------------------------------------------ # Function: Tell if an email is a local or external email # Parameters: email # Input: $SiteDomain(exact string) $HostAliases(quoted regex string) # Output: None # Return: -1, 0 or 1 #------------------------------------------------------------------------------ sub IsLocalEMail { my $email = shift || 'unknown'; if ( $email !~ /\@(.*)$/ ) { return 0; } my $domain = $1; if ( $domain =~ /^$SiteDomain$/i ) { return 1; } foreach (@HostAliases) { if ( $domain =~ /$_/ ) { return 1; } } return -1; } #------------------------------------------------------------------------------ # Function: Format a date according to Message[78] (country date format) # Parameters: String date YYYYMMDDHHMMSS # Option 0=LastUpdate and LastTime date # 1=Arrays date except daymonthvalues # 2=daymonthvalues date (only year month and day) # Input: $Message[78] # Output: None # Return: Date with format defined by Message[78] and option #------------------------------------------------------------------------------ sub Format_Date { my $date = shift; my $option = shift || 0; my $year = substr( "$date", 0, 4 ); my $month = substr( "$date", 4, 2 ); my $day = substr( "$date", 6, 2 ); my $hour = substr( "$date", 8, 2 ); my $min = substr( "$date", 10, 2 ); my $sec = substr( "$date", 12, 2 ); my $dateformat = $Message[78]; if ( $option == 2 ) { $dateformat =~ s/^[^ymd]+//g; $dateformat =~ s/[^ymd]+$//g; } $dateformat =~ s/yyyy/$year/g; $dateformat =~ s/yy/$year/g; $dateformat =~ s/mmm/$MonthNumLib{$month}/g; $dateformat =~ s/mm/$month/g; $dateformat =~ s/dd/$day/g; $dateformat =~ s/HH/$hour/g; $dateformat =~ s/MM/$min/g; $dateformat =~ s/SS/$sec/g; return "$dateformat"; } #------------------------------------------------------------------------------ # Function: Return 1 if string contains only ascii chars # Parameters: string # Input: None # Output: None # Return: 0 or 1 #------------------------------------------------------------------------------ sub IsAscii { my $string = shift; if ($Debug) { debug( "IsAscii($string)", 5 ); } if ( $string =~ /^[\w\+\-\/\\\.%,;:=\"\'&?!\s]+$/ ) { if ($Debug) { debug( " Yes", 6 ); } return 1 ; # Only alphanum chars (and _) or + - / \ . % , ; : = " ' & ? space \t } if ($Debug) { debug( " No", 6 ); } return 0; } #------------------------------------------------------------------------------ # Function: Return the lower value between 2 but exclude value if 0 # Parameters: Val1 and Val2 # Input: None # Output: None # Return: min(Val1,Val2) #------------------------------------------------------------------------------ sub MinimumButNoZero { my ( $val1, $val2 ) = @_; return ( $val1 && ( $val1 < $val2 || !$val2 ) ? $val1 : $val2 ); } #------------------------------------------------------------------------------ # Function: Add a val from sorting tree # Parameters: keytoadd keyval [firstadd] # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub AddInTree { my $keytoadd = shift; my $keyval = shift; my $firstadd = shift || 0; if ( $firstadd == 1 ) { # Val is the first one if ($Debug) { debug( " firstadd", 4 ); } $val{$keyval} = $keytoadd; $lowerval = $keyval; if ($Debug) { debug( " lowerval=$lowerval, nb elem val=" . ( scalar keys %val ) . ", nb elem egal=" . ( scalar keys %egal ) . ".", 4 ); } return; } if ( $val{$keyval} ) { # Val is already in tree if ($Debug) { debug( " val is already in tree", 4 ); } $egal{$keytoadd} = $val{$keyval}; $val{$keyval} = $keytoadd; if ($Debug) { debug( " lowerval=$lowerval, nb elem val=" . ( scalar keys %val ) . ", nb elem egal=" . ( scalar keys %egal ) . ".", 4 ); } return; } if ( $keyval <= $lowerval ) { # Val is a new one lower (should happens only when tree is not full) if ($Debug) { debug( " keytoadd val=$keyval is lower or equal to lowerval=$lowerval", 4 ); } $val{$keyval} = $keytoadd; $nextval{$keyval} = $lowerval; $lowerval = $keyval; if ($Debug) { debug( " lowerval=$lowerval, nb elem val=" . ( scalar keys %val ) . ", nb elem egal=" . ( scalar keys %egal ) . ".", 4 ); } return; } # Val is a new one higher if ($Debug) { debug( " keytoadd val=$keyval is higher than lowerval=$lowerval", 4 ); } $val{$keyval} = $keytoadd; my $valcursor = $lowerval; # valcursor is value just before keyval while ( $nextval{$valcursor} && ( $nextval{$valcursor} < $keyval ) ) { $valcursor = $nextval{$valcursor}; } if ( $nextval{$valcursor} ) { # keyval is between valcursor and nextval{valcursor} $nextval{$keyval} = $nextval{$valcursor}; } $nextval{$valcursor} = $keyval; if ($Debug) { debug( " lowerval=$lowerval, nb elem val=" . ( scalar keys %val ) . ", nb elem egal=" . ( scalar keys %egal ) . ".", 4 ); } } #------------------------------------------------------------------------------ # Function: Remove a val from sorting tree # Parameters: None # Input: $lowerval %val %egal # Output: None # Return: None #------------------------------------------------------------------------------ sub Removelowerval { my $keytoremove = $val{$lowerval}; # This is lower key if ($Debug) { debug( " remove for lowerval=$lowerval: key=$keytoremove", 4 ); } if ( $egal{$keytoremove} ) { $val{$lowerval} = $egal{$keytoremove}; delete $egal{$keytoremove}; } else { delete $val{$lowerval}; $lowerval = $nextval{$lowerval}; # Set new lowerval } if ($Debug) { debug( " new lower value=$lowerval, val size=" . ( scalar keys %val ) . ", egal size=" . ( scalar keys %egal ), 4 ); } } #------------------------------------------------------------------------------ # Function: Build @keylist array # Parameters: Size max for @keylist array, # Min value in hash for select, # Hash used for select, # Hash used for order # Input: None # Output: None # Return: @keylist response array #------------------------------------------------------------------------------ sub BuildKeyList { my $ArraySize = shift || error( "System error. Call to BuildKeyList function with incorrect value for first param", "", "", 1 ); my $MinValue = shift || error( "System error. Call to BuildKeyList function with incorrect value for second param", "", "", 1 ); my $hashforselect = shift; my $hashfororder = shift; if ($Debug) { debug( " BuildKeyList($ArraySize,$MinValue,$hashforselect with size=" . ( scalar keys %$hashforselect ) . ",$hashfororder with size=" . ( scalar keys %$hashfororder ) . ")", 3 ); } delete $hashforselect->{0}; delete $hashforselect->{ '' }; # Those is to protect from infinite loop when hash array has an incorrect null key my $count = 0; $lowerval = 0; # Global because used in AddInTree and Removelowerval %val = (); %nextval = (); %egal = (); foreach my $key ( keys %$hashforselect ) { if ( $count < $ArraySize ) { if ( $hashforselect->{$key} >= $MinValue ) { $count++; if ($Debug) { debug( " Add in tree entry $count : $key (value=" . ( $hashfororder->{$key} || 0 ) . ", tree not full)", 4 ); } AddInTree( $key, $hashfororder->{$key} || 0, $count ); } next; } $count++; if ( ( $hashfororder->{$key} || 0 ) <= $lowerval ) { next; } if ($Debug) { debug( " Add in tree entry $count : $key (value=" . ( $hashfororder->{$key} || 0 ) . " > lowerval=$lowerval)", 4 ); } AddInTree( $key, $hashfororder->{$key} || 0 ); if ($Debug) { debug( " Removelower in tree", 4 ); } Removelowerval(); } # Build key list and sort it if ($Debug) { debug( " Build key list and sort it. lowerval=$lowerval, nb elem val=" . ( scalar keys %val ) . ", nb elem egal=" . ( scalar keys %egal ) . ".", 3 ); } my %notsortedkeylist = (); foreach my $key ( values %val ) { $notsortedkeylist{$key} = 1; } foreach my $key ( values %egal ) { $notsortedkeylist{$key} = 1; } @keylist = (); @keylist = ( sort { ( $hashfororder->{$b} || 0 ) <=> ( $hashfororder->{$a} || 0 ) } keys %notsortedkeylist ); if ($Debug) { debug( " BuildKeyList End (keylist size=" . (@keylist) . ")", 3 ); } return; } #------------------------------------------------------------------------------ # Function: Lock or unlock update # Parameters: status (1 to lock, 0 to unlock) # Input: $DirLock (if status=0) $PROG $FileSuffix # Output: $DirLock (if status=1) # Return: None #------------------------------------------------------------------------------ sub Lock_Update { my $status = shift; my $lock = "$PROG$FileSuffix.lock"; if ($status) { # We stop if there is at least one lock file wherever it is foreach my $key ( $ENV{"TEMP"}, $ENV{"TMP"}, "/tmp", "/", "." ) { my $newkey = $key; $newkey =~ s/[\\\/]$//; if ( -f "$newkey/$lock" ) { error( "An AWStats update process seems to be already running for this config file. Try later.\nIf this is not true, remove manually lock file '$newkey/$lock'.", "", "", 1 ); } } # Set lock where we can foreach my $key ( $ENV{"TEMP"}, $ENV{"TMP"}, "/tmp", "/", "." ) { if ( !-d "$key" ) { next; } $DirLock = $key; $DirLock =~ s/[\\\/]$//; if ($Debug) { debug("Update lock file $DirLock/$lock is set"); } open( LOCK, ">$DirLock/$lock" ) || error( "Failed to create lock file $DirLock/$lock", "", "", 1 ); print LOCK "AWStats update started by process $$ at $nowyear-$nowmonth-$nowday $nowhour:$nowmin:$nowsec\n"; close(LOCK); last; } } else { # Remove lock if ($Debug) { debug("Update lock file $DirLock/$lock is removed"); } unlink("$DirLock/$lock"); } return; } #------------------------------------------------------------------------------ # Function: Signal handler to call Lock_Update to remove lock file # Parameters: Signal name # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub SigHandler { my $signame = shift; print ucfirst($PROG) . " process (ID $$) interrupted by signal $signame.\n"; &Lock_Update(0); exit 1; } #------------------------------------------------------------------------------ # Function: Convert an IPAddress into an integer # Parameters: IPAddress # Input: None # Output: None # Return: Int #------------------------------------------------------------------------------ sub Convert_IP_To_Decimal { my ($IPAddress) = @_; my @ip_seg_arr = split( /\./, $IPAddress ); my $decimal_ip_address = 256 * 256 * 256 * $ip_seg_arr[0] + 256 * 256 * $ip_seg_arr[1] + 256 * $ip_seg_arr[2] + $ip_seg_arr[3]; return ($decimal_ip_address); } #------------------------------------------------------------------------------ # Function: Test there is at least one value in list not null # Parameters: List of values # Input: None # Output: None # Return: 1 There is at least one not null value, 0 else #------------------------------------------------------------------------------ sub AtLeastOneNotNull { if ($Debug) { debug( " Call to AtLeastOneNotNull (" . join( '-', @_ ) . ")", 3 ); } foreach my $val (@_) { if ($val) { return 1; } } return 0; } #------------------------------------------------------------------------------ # Function: Prints the command line interface help information # Parameters: None # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub PrintCLIHelp{ &Read_Ref_Data( 'browsers', 'domains', 'operating_systems', 'robots', 'search_engines', 'worms' ); print "----- $PROG $VERSION (c) 2000-2015 Laurent Destailleur -----\n"; print "AWStats is a free web server logfile analyzer to show you advanced web\n"; print "statistics.\n"; print "AWStats comes with ABSOLUTELY NO WARRANTY. It's a free software distributed\n"; print "with a GNU General Public License (See LICENSE file for details).\n"; print "\n"; print "Syntax: $PROG.$Extension -config=virtualhostname [options]\n"; print "\n"; print " This runs $PROG in command line to update statistics (-update option) of a\n"; print " web site, from the log file defined in AWStats config file, or build a HTML\n"; print " report (-output option).\n"; print " First, $PROG tries to read $PROG.virtualhostname.conf as the config file.\n"; print " If not found, $PROG tries to read $PROG.conf, and finally the full path passed to -config=\n"; print " Note 1: Config files ($PROG.virtualhostname.conf or $PROG.conf) must be\n"; print " in /etc/awstats, /usr/local/etc/awstats, /etc or same directory than\n"; print " awstats.pl script file.\n"; print " Note 2: If AWSTATS_FORCE_CONFIG environment variable is defined, AWStats will\n"; print " use it as the \"config\" value, whatever is the value on command line or URL.\n"; print " See AWStats documentation for all setup instrutions.\n"; print "\n"; print "Options to update statistics:\n"; print " -update to update statistics (default)\n"; print " -showsteps to add benchmark information every $NBOFLINESFORBENCHMARK lines processed\n"; print " -showcorrupted to add output for each corrupted lines found, with reason\n"; print " -showdropped to add output for each dropped lines found, with reason\n"; print " -showunknownorigin to output referer when it can't be parsed\n"; print " -showdirectorigin to output log line when origin is a direct access\n"; print " -updatefor=n to stop the update process after parsing n lines\n"; print " -LogFile=x to change log to analyze whatever is 'LogFile' in config file\n"; print " Be care to process log files in chronological order when updating statistics.\n"; print "\n"; print "Options to show statistics:\n"; print " -output to output main HTML report (no update made except with -update)\n"; print " -output=x to output other report pages where x is:\n"; print " alldomains to build page of all domains/countries\n"; print " allhosts to build page of all hosts\n"; print " lasthosts to build page of last hits for hosts\n"; print " unknownip to build page of all unresolved IP\n"; print " allemails to build page of all email senders (maillog)\n"; print " lastemails to build page of last email senders (maillog)\n"; print " allemailr to build page of all email receivers (maillog)\n"; print " lastemailr to build page of last email receivers (maillog)\n"; print " alllogins to build page of all logins used\n"; print " lastlogins to build page of last hits for logins\n"; print " allrobots to build page of all robots/spider visits\n"; print " lastrobots to build page of last hits for robots\n"; print " urldetail to list most often viewed pages \n"; print " urldetail:filter to list most often viewed pages matching filter\n"; print " urlentry to list entry pages\n"; print " urlentry:filter to list entry pages matching filter\n"; print " urlexit to list exit pages\n"; print " urlexit:filter to list exit pages matching filter\n"; print " osdetail to build page with os detailed versions\n"; print " browserdetail to build page with browsers detailed versions\n"; print " unknownbrowser to list 'User Agents' with unknown browser\n"; print " unknownos to list 'User Agents' with unknown OS\n"; print " refererse to build page of all refering search engines\n"; print " refererpages to build page of all refering pages\n"; #print " referersites to build page of all refering sites\n"; print " keyphrases to list all keyphrases used on search engines\n"; print " keywords to list all keywords used on search engines\n"; print " errors404 to list 'Referers' for 404 errors\n"; print " allextraX to build page of all values for ExtraSection X\n"; print " -staticlinks to have static links in HTML report page\n"; print " -staticlinksext=xxx to have static links with .xxx extension instead of .html\n"; print " -lang=LL to output a HTML report in language LL (en,de,es,fr,it,nl,...)\n"; print " -month=MM to output a HTML report for an old month MM\n"; print " -year=YYYY to output a HTML report for an old year YYYY\n"; print " The 'date' options doesn't allow you to process old log file. They only\n"; print " allow you to see a past report for a chosen month/year period instead of\n"; print " current month/year.\n"; print "\n"; print "Other options:\n"; print " -debug=X to add debug informations lesser than level X (speed reduced)\n"; print " -version show AWStats version\n"; print "\n"; print "Now supports/detects:\n"; print " Web/Ftp/Mail/streaming server log analyzis (and load balanced log files)\n"; print " Reverse DNS lookup (IPv4 and IPv6) and GeoIP lookup\n"; print " Number of visits, number of unique visitors\n"; print " Visits duration and list of last visits\n"; print " Authenticated users\n"; print " Days of week and rush hours\n"; print " Hosts list and unresolved IP addresses list\n"; print " Most viewed, entry and exit pages\n"; print " Files type and Web compression (mod_gzip, mod_deflate stats)\n"; print " Screen size\n"; print " Ratio of Browsers with support of: Java, Flash, RealG2 reader,\n"; print " Quicktime reader, WMA reader, PDF reader\n"; print " Configurable personalized reports\n"; print " " . ( scalar keys %DomainsHashIDLib ) . " domains/countries\n"; print " " . ( scalar keys %RobotsHashIDLib ) . " robots\n"; print " " . ( scalar keys %WormsHashLib ) . " worm's families\n"; print " " . ( scalar keys %OSHashLib ) . " operating systems\n"; print " " . ( scalar keys %BrowsersHashIDLib ) . " browsers"; &Read_Ref_Data('browsers_phone'); print " (" . ( scalar keys %BrowsersHashIDLib ) . " with phone browsers database)\n"; print " " . ( scalar keys %SearchEnginesHashLib ) . " search engines (and keyphrases/keywords used from them)\n"; print " All HTTP errors with last referrer\n"; print " Report by day/month/year\n"; print " Dynamic or static HTML or XHTML reports, static PDF reports\n"; print " Indexed text or XML monthly database\n"; print " And a lot of other advanced features and options...\n"; print "New versions and FAQ at http://www.awstats.org\n"; } #------------------------------------------------------------------------------ # Function: Return the string to add in html tag to include popup javascript code # Parameters: tooltip number # Input: None # Output: None # Return: string with javascript code #------------------------------------------------------------------------------ sub Tooltip { my $ttnb = shift; return ( $TOOLTIPON ? " onmouseover=\"ShowTip($ttnb);\" onmouseout=\"HideTip($ttnb);\"" : "" ); } #------------------------------------------------------------------------------ # Function: Insert a form filter # Parameters: Name of filter field, default for filter field, default for exclude filter field # Input: $StaticLinks, $QueryString, $SiteConfig, $DirConfig # Output: HTML Form # Return: None #------------------------------------------------------------------------------ sub HTMLShowFormFilter { my $fieldfiltername = shift; my $fieldfilterinvalue = shift; my $fieldfilterexvalue = shift; if ( !$StaticLinks ) { my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } print "\n
\n"; print "\n"; print "\n"; print "\n"; print ""; print "\n"; print "\n"; print "\n"; print ""; print "
$Message[79] :   $Message[153] :"; print "\n"; if ($SiteConfig) { print "\n"; } if ($DirConfig) { print "\n"; } if ( $QueryString =~ /(^|&|&)year=(\d\d\d\d)/i ) { print "\n"; } if ( $QueryString =~ /(^|&|&)month=(\d\d)/i || $QueryString =~ /(^|&|&)month=(all)/i ) { print "\n"; } if ( $QueryString =~ /(^|&|&)lang=(\w+)/i ) { print "\n"; } if ( $QueryString =~ /(^|&|&)debug=(\d+)/i ) { print "\n"; } if ( $QueryString =~ /(^|&|&)framename=(\w+)/i ) { print "\n"; } print "  
\n"; print "
\n"; print "
\n"; print "\n"; } } #------------------------------------------------------------------------------ # Function: Write other user info (with help of plugin) # Parameters: $user # Input: $SiteConfig # Output: URL link # Return: None #------------------------------------------------------------------------------ sub HTMLShowUserInfo { my $user = shift; # Call to plugins' function ShowInfoUser foreach my $pluginname ( sort keys %{ $PluginsLoaded{'ShowInfoUser'} } ) { # my $function="ShowInfoUser_$pluginname('$user')"; # eval("$function"); my $function = "ShowInfoUser_$pluginname"; &$function($user); } } #------------------------------------------------------------------------------ # Function: Write other cluster info (with help of plugin) # Parameters: $clusternb # Input: $SiteConfig # Output: Cluster info # Return: None #------------------------------------------------------------------------------ sub HTMLShowClusterInfo { my $cluster = shift; # Call to plugins' function ShowInfoCluster foreach my $pluginname ( sort keys %{ $PluginsLoaded{'ShowInfoCluster'} } ) { # my $function="ShowInfoCluster_$pluginname('$user')"; # eval("$function"); my $function = "ShowInfoCluster_$pluginname"; &$function($cluster); } } #------------------------------------------------------------------------------ # Function: Write other host info (with help of plugin) # Parameters: $host # Input: $LinksToWhoIs $LinksToWhoIsIp # Output: None # Return: None #------------------------------------------------------------------------------ sub HTMLShowHostInfo { my $host = shift; # Call to plugins' function ShowInfoHost foreach my $pluginname ( sort keys %{ $PluginsLoaded{'ShowInfoHost'} } ) { # my $function="ShowInfoHost_$pluginname('$host')"; # eval("$function"); my $function = "ShowInfoHost_$pluginname"; &$function($host); } } #------------------------------------------------------------------------------ # Function: Write other url info (with help of plugin) # Parameters: $url # Input: %Aliases $MaxLengthOfShownURL $ShowLinksOnUrl $SiteDomain $UseHTTPSLinkForUrl # Output: URL link # Return: None #------------------------------------------------------------------------------ sub HTMLShowURLInfo { my $url = shift; my $nompage = CleanXSS($url); # Call to plugins' function ShowInfoURL foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowInfoURL'} } ) { # my $function="ShowInfoURL_$pluginname('$url')"; # eval("$function"); my $function = "ShowInfoURL_$pluginname"; &$function($url); } if ( length($nompage) > $MaxLengthOfShownURL ) { $nompage = substr( $nompage, 0, $MaxLengthOfShownURL ) . "..."; } if ($ShowLinksOnUrl) { my $newkey = CleanXSS($url); if ( $LogType eq 'W' || $LogType eq 'S' ) { # Web or streaming log file if ( $newkey =~ /^http(s|):/i ) { # URL seems to be extracted from a proxy log file print "" . XMLEncode($nompage) . ""; } elsif ( $newkey =~ /^\// ) { # URL seems to be an url extracted from a web or wap server log file $newkey =~ s/^\/$SiteDomain//i; # Define urlprot my $urlprot = 'http'; if ( $UseHTTPSLinkForUrl && $newkey =~ /^$UseHTTPSLinkForUrl/ ) { $urlprot = 'https'; } print "" . XMLEncode($nompage) . ""; } else { print XMLEncode($nompage); } } elsif ( $LogType eq 'F' ) { # Ftp log file print XMLEncode($nompage); } elsif ( $LogType eq 'M' ) { # Smtp log file print XMLEncode($nompage); } else { # Other type log file print XMLEncode($nompage); } } else { print XMLEncode($nompage); } } #------------------------------------------------------------------------------ # Function: Define value for PerlParsingFormat (used for regex log record parsing) # Parameters: $LogFormat # Input: - # Output: $pos_xxx, @pos_extra, @fieldlib, $PerlParsingFormat # Return: - #------------------------------------------------------------------------------ sub DefinePerlParsingFormat { my $LogFormat = shift; $pos_vh = $pos_host = $pos_logname = $pos_date = $pos_tz = $pos_method = $pos_url = $pos_code = $pos_size = -1; $pos_referer = $pos_agent = $pos_query = $pos_gzipin = $pos_gzipout = $pos_compratio = -1; $pos_cluster = $pos_emails = $pos_emailr = $pos_hostr = -1; @pos_extra = (); @fieldlib = (); $PerlParsingFormat = ''; # Log records examples: # Apache combined: 62.161.78.73 user - [dd/mmm/yyyy:hh:mm:ss +0000] "GET / HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" # Apache combined (408 error): my.domain.com - user [09/Jan/2001:11:38:51 -0600] "OPTIONS /mime-tmp/xxx file.doc HTTP/1.1" 408 - "-" "-" # Apache combined (408 error): 62.161.78.73 user - [dd/mmm/yyyy:hh:mm:ss +0000] "-" 408 - "-" "-" # Apache combined (400 error): 80.8.55.11 - - [28/Apr/2007:03:20:02 +0200] "GET /" 400 584 "-" "-" # IIS: 2000-07-19 14:14:14 62.161.78.73 - GET / 200 1234 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) http://www.from.com/from.htm # WebStar: 05/21/00 00:17:31 OK 200 212.242.30.6 Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) http://www.cover.dk/ "www.cover.dk" :Documentation:graphics:starninelogo.white.gif 1133 # Squid extended: 12.229.91.170 - - [27/Jun/2002:03:30:50 -0700] "GET http://www.callistocms.com/images/printable.gif HTTP/1.1" 304 354 "-" "Mozilla/5.0 Galeon/1.0.3 (X11; Linux i686; U;) Gecko/0" TCP_REFRESH_HIT:DIRECT # Log formats: # Apache common_with_mod_gzip_info1: %h %l %u %t \"%r\" %>s %b mod_gzip: %{mod_gzip_compression_ratio}npct. # Apache common_with_mod_gzip_info2: %h %l %u %t \"%r\" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct. # Apache deflate: %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" (%{ratio}n) if ($Debug) { debug( "Call To DefinePerlParsingFormat (LogType='$LogType', LogFormat='$LogFormat')" ); } if ( $LogFormat =~ /^[1-6]$/ ) { # Pre-defined log format if ( $LogFormat eq '1' || $LogFormat eq '6' ) { # Same than "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"". # %u (user) is "([^\\/\\[]+)" instead of "[^ ]+" because can contain space (Lotus Notes). referer and ua might be "". # $PerlParsingFormat="([^ ]+) [^ ]+ ([^\\/\\[]+) \\[([^ ]+) [^ ]+\\] \\\"([^ ]+) (.+) [^\\\"]+\\\" ([\\d|-]+) ([\\d|-]+) \\\"(.*?)\\\" \\\"([^\\\"]*)\\\""; $PerlParsingFormat = "([^ ]+) [^ ]+ ([^\\/\\[]+) \\[([^ ]+) [^ ]+\\] \\\"([^ ]+) ([^ ]+)(?: [^\\\"]+|)\\\" ([\\d|-]+) ([\\d|-]+) \\\"(.*?)\\\" \\\"([^\\\"]*)\\\""; $pos_host = 0; $pos_logname = 1; $pos_date = 2; $pos_method = 3; $pos_url = 4; $pos_code = 5; $pos_size = 6; $pos_referer = 7; $pos_agent = 8; @fieldlib = ( 'host', 'logname', 'date', 'method', 'url', 'code', 'size', 'referer', 'ua' ); } elsif ( $LogFormat eq '2' ) { # Same than "date time c-ip cs-username cs-method cs-uri-stem sc-status sc-bytes cs-version cs(User-Agent) cs(Referer)" $PerlParsingFormat = "(\\S+ \\S+) (\\S+) (\\S+) (\\S+) (\\S+) ([\\d|-]+) ([\\d|-]+) \\S+ (\\S+) (\\S+)"; $pos_date = 0; $pos_host = 1; $pos_logname = 2; $pos_method = 3; $pos_url = 4; $pos_code = 5; $pos_size = 6; $pos_agent = 7; $pos_referer = 8; @fieldlib = ( 'date', 'host', 'logname', 'method', 'url', 'code', 'size', 'ua', 'referer' ); } elsif ( $LogFormat eq '3' ) { $PerlParsingFormat = "([^\\t]*\\t[^\\t]*)\\t([^\\t]*)\\t([\\d|-]*)\\t([^\\t]*)\\t([^\\t]*)\\t([^\\t]*)\\t[^\\t]*\\t([^\\t]*)\\t([\\d]*)"; $pos_date = 0; $pos_method = 1; $pos_code = 2; $pos_host = 3; $pos_agent = 4; $pos_referer = 5; $pos_url = 6; $pos_size = 7; @fieldlib = ( 'date', 'method', 'code', 'host', 'ua', 'referer', 'url', 'size' ); } elsif ( $LogFormat eq '4' ) { # Same than "%h %l %u %t \"%r\" %>s %b" # %u (user) is "(.+)" instead of "[^ ]+" because can contain space (Lotus Notes). $PerlParsingFormat = "([^ ]+) [^ ]+ (.+) \\[([^ ]+) [^ ]+\\] \\\"([^ ]+) ([^ ]+)(?: [^\\\"]+|)\\\" ([\\d|-]+) ([\\d|-]+)"; $pos_host = 0; $pos_logname = 1; $pos_date = 2; $pos_method = 3; $pos_url = 4; $pos_code = 5; $pos_size = 6; @fieldlib = ( 'host', 'logname', 'date', 'method', 'url', 'code', 'size' ); } } else { # Personalized log format my $LogFormatString = $LogFormat; # Replacement for Notes format string that are not Apache $LogFormatString =~ s/%vh/%virtualname/g; # Replacement for Apache format string $LogFormatString =~ s/%v(\s)/%virtualname$1/g; $LogFormatString =~ s/%v$/%virtualname/g; $LogFormatString =~ s/%h(\s)/%host$1/g; $LogFormatString =~ s/%h$/%host/g; $LogFormatString =~ s/%l(\s)/%other$1/g; $LogFormatString =~ s/%l$/%other/g; $LogFormatString =~ s/\"%u\"/%lognamequot/g; $LogFormatString =~ s/%u(\s)/%logname$1/g; $LogFormatString =~ s/%u$/%logname/g; $LogFormatString =~ s/%t(\s)/%time1$1/g; $LogFormatString =~ s/%t$/%time1/g; $LogFormatString =~ s/\"%r\"/%methodurl/g; $LogFormatString =~ s/%>s/%code/g; $LogFormatString =~ s/%b(\s)/%bytesd$1/g; $LogFormatString =~ s/%b$/%bytesd/g; $LogFormatString =~ s/\"%{Referer}i\"/%refererquot/g; $LogFormatString =~ s/\"%{User-Agent}i\"/%uaquot/g; $LogFormatString =~ s/%{mod_gzip_input_size}n/%gzipin/g; $LogFormatString =~ s/%{mod_gzip_output_size}n/%gzipout/g; $LogFormatString =~ s/%{mod_gzip_compression_ratio}n/%gzipratio/g; $LogFormatString =~ s/\(%{ratio}n\)/%deflateratio/g; # Replacement for a IIS and ISA format string $LogFormatString =~ s/cs-uri-query/%query/g; # Must be before cs-uri $LogFormatString =~ s/date\stime/%time2/g; $LogFormatString =~ s/c-ip/%host/g; $LogFormatString =~ s/cs-username/%logname/g; $LogFormatString =~ s/cs-method/%method/g; # GET, POST, SMTP, RETR STOR $LogFormatString =~ s/cs-uri-stem/%url/g; $LogFormatString =~ s/cs-uri/%url/g; $LogFormatString =~ s/sc-status/%code/g; $LogFormatString =~ s/sc-bytes/%bytesd/g; $LogFormatString =~ s/cs-version/%other/g; # Protocol $LogFormatString =~ s/cs\(User-Agent\)/%ua/g; $LogFormatString =~ s/c-agent/%ua/g; $LogFormatString =~ s/cs\(Referer\)/%referer/g; $LogFormatString =~ s/cs-referred/%referer/g; $LogFormatString =~ s/sc-authenticated/%other/g; $LogFormatString =~ s/s-svcname/%other/g; $LogFormatString =~ s/s-computername/%other/g; $LogFormatString =~ s/r-host/%virtualname/g; $LogFormatString =~ s/cs-host/%virtualname/g; $LogFormatString =~ s/r-ip/%other/g; $LogFormatString =~ s/r-port/%other/g; $LogFormatString =~ s/time-taken/%other/g; $LogFormatString =~ s/cs-bytes/%other/g; $LogFormatString =~ s/cs-protocol/%other/g; $LogFormatString =~ s/cs-transport/%other/g; $LogFormatString =~ s/s-operation/%method/g; # GET, POST, SMTP, RETR STOR $LogFormatString =~ s/cs-mime-type/%other/g; $LogFormatString =~ s/s-object-source/%other/g; $LogFormatString =~ s/s-cache-info/%other/g; $LogFormatString =~ s/cluster-node/%cluster/g; $LogFormatString =~ s/s-sitename/%other/g; $LogFormatString =~ s/s-ip/%other/g; $LogFormatString =~ s/s-port/%other/g; $LogFormatString =~ s/cs\(Cookie\)/%other/g; $LogFormatString =~ s/sc-substatus/%other/g; $LogFormatString =~ s/sc-win32-status/%other/g; # Added for MMS $LogFormatString =~ s/protocol/%protocolmms/g; # cs-method might not be available $LogFormatString =~ s/c-status/%codemms/g; # c-status used when sc-status not available if ($Debug) { debug(" LogFormatString=$LogFormatString"); } # $LogFormatString has an AWStats format, so we can generate PerlParsingFormat variable my $i = 0; my $LogSeparatorWithoutStar = $LogSeparator; $LogSeparatorWithoutStar =~ s/[\*\+]//g; foreach my $f ( split( /\s+/, $LogFormatString ) ) { # Add separator for next field if ($PerlParsingFormat) { $PerlParsingFormat .= "$LogSeparator"; } # Special for logname if ( $f =~ /%lognamequot$/ ) { $pos_logname = $i; $i++; push @fieldlib, 'logname'; $PerlParsingFormat .= "\\\"?([^\\\"]*)\\\"?" ; # logname can be "value", "" and - in same log (Lotus notes) } elsif ( $f =~ /%logname$/ ) { $pos_logname = $i; $i++; push @fieldlib, 'logname'; # %u (user) is "([^\\/\\[]+)" instead of "[^$LogSeparatorWithoutStar]+" because can contain space (Lotus Notes). $PerlParsingFormat .= "([^\\/\\[]+)"; } # Date format elsif ( $f =~ /%time1$/ || $f =~ /%time1b$/ ) { # [dd/mmm/yyyy:hh:mm:ss +0000] or [dd/mmm/yyyy:hh:mm:ss], time1b kept for backward compatibility $pos_date = $i; $i++; push @fieldlib, 'date'; $pos_tz = $i; $i++; push @fieldlib, 'tz'; $PerlParsingFormat .= "\\[([^$LogSeparatorWithoutStar]+)( [^$LogSeparatorWithoutStar]+)?\\]"; } elsif ( $f =~ /%time2$/ ) { # yyyy-mm-dd hh:mm:ss $pos_date = $i; $i++; push @fieldlib, 'date'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+\\s[^$LogSeparatorWithoutStar]+)"; # Need \s for Exchange log files } elsif ( $f =~ /%time3$/ ) { # mon d hh:mm:ss or mon d hh:mm:ss or mon dd hh:mm:ss yyyy or day mon dd hh:mm:ss or day mon dd hh:mm:ss yyyy $pos_date = $i; $i++; push @fieldlib, 'date'; $PerlParsingFormat .= "(?:\\w\\w\\w )?(\\w\\w\\w \\s?\\d+ \\d\\d:\\d\\d:\\d\\d(?: \\d\\d\\d\\d)?)"; } elsif ( $f =~ /%time4$/ ) { # ddddddddddddd $pos_date = $i; $i++; push @fieldlib, 'date'; $PerlParsingFormat .= "(\\d+)"; } elsif ( $f =~ /%time5$/ ) { # yyyy-mm-ddThh:mm:ss+00:00 (iso format) or yyyy-mm-ddThh:mm:ss.000000Z $pos_date = $i; $i++; push @fieldlib, 'date'; $pos_tz = $i; $i++; push @fieldlib, 'tz'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+T[^$LogSeparatorWithoutStar]+)([-+\.]\\d\\d[:\\.\\dZ]*)"; } # Special for methodurl and methodurlnoprot elsif ( $f =~ /%methodurl$/ ) { $pos_method = $i; $i++; push @fieldlib, 'method'; $pos_url = $i; $i++; push @fieldlib, 'url'; $PerlParsingFormat .= #"\\\"([^$LogSeparatorWithoutStar]+) ([^$LogSeparatorWithoutStar]+) [^\\\"]+\\\""; "\\\"([^$LogSeparatorWithoutStar]+) ([^$LogSeparatorWithoutStar]+)(?: [^\\\"]+|)\\\""; } elsif ( $f =~ /%methodurlnoprot$/ ) { $pos_method = $i; $i++; push @fieldlib, 'method'; $pos_url = $i; $i++; push @fieldlib, 'url'; $PerlParsingFormat .= "\\\"([^$LogSeparatorWithoutStar]+) ([^$LogSeparatorWithoutStar]+)\\\""; } # Common command tags elsif ( $f =~ /%virtualnamequot$/ ) { $pos_vh = $i; $i++; push @fieldlib, 'vhost'; $PerlParsingFormat .= "\\\"([^$LogSeparatorWithoutStar]+)\\\""; } elsif ( $f =~ /%virtualname$/ ) { $pos_vh = $i; $i++; push @fieldlib, 'vhost'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%host_r$/ ) { $pos_hostr = $i; $i++; push @fieldlib, 'hostr'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%host$/ ) { $pos_host = $i; $i++; push @fieldlib, 'host'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%host_proxy$/ ) { # if host_proxy tag used, host tag must not be used $pos_host = $i; $i++; push @fieldlib, 'host'; $PerlParsingFormat .= "(.+?)(?:, .*)*"; } elsif ( $f =~ /%method$/ ) { $pos_method = $i; $i++; push @fieldlib, 'method'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%url$/ ) { $pos_url = $i; $i++; push @fieldlib, 'url'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%query$/ ) { $pos_query = $i; $i++; push @fieldlib, 'query'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%code$/ ) { $pos_code = $i; $i++; push @fieldlib, 'code'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%bytesd$/ ) { $pos_size = $i; $i++; push @fieldlib, 'size'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%refererquot$/ ) { $pos_referer = $i; $i++; push @fieldlib, 'referer'; $PerlParsingFormat .= "\\\"([^\\\"]*)\\\""; # referer might be "" } elsif ( $f =~ /%referer$/ ) { $pos_referer = $i; $i++; push @fieldlib, 'referer'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%uaquot$/ ) { $pos_agent = $i; $i++; push @fieldlib, 'ua'; $PerlParsingFormat .= "\\\"([^\\\"]*)\\\""; # ua might be "" } elsif ( $f =~ /%uabracket$/ ) { $pos_agent = $i; $i++; push @fieldlib, 'ua'; $PerlParsingFormat .= "\\\[([^\\\]]*)\\\]"; # ua might be [] } elsif ( $f =~ /%ua$/ ) { $pos_agent = $i; $i++; push @fieldlib, 'ua'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%gzipin$/ ) { $pos_gzipin = $i; $i++; push @fieldlib, 'gzipin'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%gzipout/ ) { # Compare $f to /%gzipout/ and not to /%gzipout$/ like other fields $pos_gzipout = $i; $i++; push @fieldlib, 'gzipout'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%gzipratio/ ) { # Compare $f to /%gzipratio/ and not to /%gzipratio$/ like other fields $pos_compratio = $i; $i++; push @fieldlib, 'gzipratio'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%deflateratio/ ) { # Compare $f to /%deflateratio/ and not to /%deflateratio$/ like other fields $pos_compratio = $i; $i++; push @fieldlib, 'deflateratio'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%email_r$/ ) { $pos_emailr = $i; $i++; push @fieldlib, 'email_r'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%email$/ ) { $pos_emails = $i; $i++; push @fieldlib, 'email'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%cluster$/ ) { $pos_cluster = $i; $i++; push @fieldlib, 'clusternb'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } elsif ( $f =~ /%timetaken$/ ) { $pos_timetaken = $i; $i++; push @fieldlib, 'timetaken'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } # Special for protocolmms, used for method if method not already found (for MMS) elsif ( $f =~ /%protocolmms$/ ) { if ( $pos_method < 0 ) { $pos_method = $i; $i++; push @fieldlib, 'method'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } } # Special for codemms, used for code only if code not already found (for MMS) elsif ( $f =~ /%codemms$/ ) { if ( $pos_code < 0 ) { $pos_code = $i; $i++; push @fieldlib, 'code'; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } } # Extra tag elsif ( $f =~ /%extra(\d+)$/ ) { $pos_extra[$1] = $i; $i++; push @fieldlib, "extra$1"; $PerlParsingFormat .= "([^$LogSeparatorWithoutStar]+)"; } # Other tag elsif ( $f =~ /%other$/ ) { $PerlParsingFormat .= "[^$LogSeparatorWithoutStar]+"; } elsif ( $f =~ /%otherquot$/ ) { $PerlParsingFormat .= "\\\"[^\\\"]*\\\""; } # Unknown tag (no parenthesis) else { $PerlParsingFormat .= "[^$LogSeparatorWithoutStar]+"; } } if ( !$PerlParsingFormat ) { error("No recognized format tag in personalized LogFormat string"); } } if ( $pos_host < 0 ) { error( "Your personalized LogFormat does not include all fields required by AWStats (Add \%host in your LogFormat string)." ); } if ( $pos_date < 0 ) { error( "Your personalized LogFormat does not include all fields required by AWStats (Add \%time1 or \%time2 in your LogFormat string)." ); } if ( $pos_method < 0 ) { error( "Your personalized LogFormat does not include all fields required by AWStats (Add \%methodurl or \%method in your LogFormat string)." ); } if ( $pos_url < 0 ) { error( "Your personalized LogFormat does not include all fields required by AWStats (Add \%methodurl or \%url in your LogFormat string)." ); } if ( $pos_code < 0 ) { error( "Your personalized LogFormat does not include all fields required by AWStats (Add \%code in your LogFormat string)." ); } # if ( $pos_size < 0 ) { # error( #"Your personalized LogFormat does not include all fields required by AWStats (Add \%bytesd in your LogFormat string)." # ); # } $PerlParsingFormat = qr/^$PerlParsingFormat/; if ($Debug) { debug(" PerlParsingFormat is $PerlParsingFormat"); } } #------------------------------------------------------------------------------ # Function: Prints a menu category for the frame or static header # Parameters: - # Input: $categ, $categtext, $categicon, $frame, $targetpage, $linkanchor, # $NewLinkParams, $NewLinkTarget # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowMenuCateg { my ( $categ, $categtext, $categicon, $frame, $targetpage, $linkanchor, $NewLinkParams, $NewLinkTarget ) = ( shift, shift, shift, shift, shift, shift, shift, shift ); $categicon = ''; # Comment this to enabme category icons my ( $menu, $menulink, $menutext ) = ( shift, shift, shift ); my $linetitle = 0; # Call to plugins' function AddHTMLMenuLink foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLMenuLink'} } ) { # my $function="AddHTMLMenuLink_$pluginname('$categ',\$menu,\$menulink,\$menutext)"; # eval("$function"); my $function = "AddHTMLMenuLink_$pluginname"; &$function( $categ, $menu, $menulink, $menutext ); } foreach my $key (%$menu) { if ( $menu->{$key} && $menu->{$key} > 0 ) { $linetitle++; last; } } if ( !$linetitle ) { return; } # At least one entry in menu for this category, we can show category and entries my $WIDTHMENU1 = ( $FrameName eq 'mainleft' ? $FRAMEWIDTH : 150 ); print "" . ( $categicon ? " " : "" ) . "$categtext:\n"; print( $frame? "\n" : "" ); foreach my $key ( sort { $menu->{$a} <=> $menu->{$b} } keys %$menu ) { if ( $menu->{$key} == 0 ) { next; } if ( $menulink->{$key} == 1 ) { print( $frame? "" : "" ); print "$menutext->{$key}"; print( $frame? "\n" : "   " ); } if ( $menulink->{$key} == 2 ) { print( $frame ? "   \"...\" " : "" ); print "$menutext->{$key}\n"; print( $frame? "\n" : "   " ); } } print( $frame? "" : "\n" ); } #------------------------------------------------------------------------------ # Function: Prints HTML to display an email senders chart # Parameters: - # Input: $NewLinkParams, NewLinkTarget # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowEmailSendersChart { my $NewLinkParams = shift; my $NewLinkTarget = shift; my $MaxLengthOfShownEMail = 48; my $total_p; my $total_h; my $total_k; my $max_p; my $max_h; my $max_k; my $rest_p; my $rest_h; my $rest_k; # Show filter form #&ShowFormFilter("emailsfilter",$EmailsFilter); # Show emails list print "$Center 
\n"; my $title; if ( $HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'} ) { $title = "$Message[131]"; } else { $title = "$Message[131] ($Message[77] $MaxNbOf{'EMailsShown'})   -   $Message[80]"; if ( $ShowEMailSenders =~ /L/i ) { $title .= "   -   $Message[9]"; } } &tab_head( "$title", 19, 0, 'emailsenders' ); print "$Message[131] : " . ( scalar keys %_emails_h ) . ""; if ( $ShowEMailSenders =~ /H/i ) { print "$Message[57]"; } if ( $ShowEMailSenders =~ /B/i ) { print "$Message[75]"; } if ( $ShowEMailSenders =~ /M/i ) { print "$Message[106]"; } if ( $ShowEMailSenders =~ /L/i ) { print "$Message[9]"; } print "\n"; print "Local External"; $total_p = $total_h = $total_k = 0; $max_h = 1; foreach ( values %_emails_h ) { if ( $_ > $max_h ) { $max_h = $_; } } $max_k = 1; foreach ( values %_emails_k ) { if ( $_ > $max_k ) { $max_k = $_; } } my $count = 0; if ( !$HTMLOutput{'allemails'} && !$HTMLOutput{'lastemails'} ) { &BuildKeyList( $MaxNbOf{'EMailsShown'}, $MinHit{'EMail'}, \%_emails_h, \%_emails_h ); } if ( $HTMLOutput{'allemails'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'EMail'}, \%_emails_h, \%_emails_h ); } if ( $HTMLOutput{'lastemails'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'EMail'}, \%_emails_h, \%_emails_l ); } foreach my $key (@keylist) { my $newkey = $key; if ( length($key) > $MaxLengthOfShownEMail ) { $newkey = substr( $key, 0, $MaxLengthOfShownEMail ) . "..."; } my $bredde_h = 0; my $bredde_k = 0; if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * $_emails_h{$key} / $max_h ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( $BarWidth * $_emails_k{$key} / $max_k ) + 1; } print ""; my $direction = IsLocalEMail($key); if ( $direction > 0 ) { print "$newkey-> "; } if ( $direction == 0 ) { print "$newkey"; } if ( $direction < 0 ) { print " <-$newkey"; } if ( $ShowEMailSenders =~ /H/i ) { print "$_emails_h{$key}"; } if ( $ShowEMailSenders =~ /B/i ) { print "" . Format_Bytes( $_emails_k{$key} ) . ""; } if ( $ShowEMailSenders =~ /M/i ) { print "" . Format_Bytes( $_emails_k{$key} / ( $_emails_h{$key} || 1 ) ) . ""; } if ( $ShowEMailSenders =~ /L/i ) { print "" . ( $_emails_l{$key} ? Format_Date( $_emails_l{$key}, 1 ) : '-' ) . ""; } print "\n"; #$total_p += $_emails_p{$key}; $total_h += $_emails_h{$key}; $total_k += $_emails_k{$key}; $count++; } $rest_p = 0; # $rest_p=$TotalPages-$total_p; $rest_h = $TotalHits - $total_h; $rest_k = $TotalBytes - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other sender emails print "$Message[2]"; if ( $ShowEMailSenders =~ /H/i ) { print "$rest_h"; } if ( $ShowEMailSenders =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } if ( $ShowEMailSenders =~ /M/i ) { print "" . Format_Bytes( $rest_k / ( $rest_h || 1 ) ) . ""; } if ( $ShowEMailSenders =~ /L/i ) { print " "; } print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints HTML to display an email receivers chart # Parameters: - # Input: $NewLinkParams, NewLinkTarget # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowEmailReceiversChart { my $NewLinkParams = shift; my $NewLinkTarget = shift; my $MaxLengthOfShownEMail = 48; my $total_p; my $total_h; my $total_k; my $max_p; my $max_h; my $max_k; my $rest_p; my $rest_h; my $rest_k; # Show filter form #&ShowFormFilter("emailrfilter",$EmailrFilter); # Show emails list print "$Center 
\n"; my $title; if ( $HTMLOutput{'allemailr'} || $HTMLOutput{'lastemailr'} ) { $title = "$Message[132]"; } else { $title = "$Message[132] ($Message[77] $MaxNbOf{'EMailsShown'})   -   $Message[80]"; if ( $ShowEMailReceivers =~ /L/i ) { $title .= "   -   $Message[9]"; } } &tab_head( "$title", 19, 0, 'emailreceivers' ); print "$Message[132] : " . ( scalar keys %_emailr_h ) . ""; if ( $ShowEMailReceivers =~ /H/i ) { print "$Message[57]"; } if ( $ShowEMailReceivers =~ /B/i ) { print "$Message[75]"; } if ( $ShowEMailReceivers =~ /M/i ) { print "$Message[106]"; } if ( $ShowEMailReceivers =~ /L/i ) { print "$Message[9]"; } print "\n"; print "Local External"; $total_p = $total_h = $total_k = 0; $max_h = 1; foreach ( values %_emailr_h ) { if ( $_ > $max_h ) { $max_h = $_; } } $max_k = 1; foreach ( values %_emailr_k ) { if ( $_ > $max_k ) { $max_k = $_; } } my $count = 0; if ( !$HTMLOutput{'allemailr'} && !$HTMLOutput{'lastemailr'} ) { &BuildKeyList( $MaxNbOf{'EMailsShown'}, $MinHit{'EMail'}, \%_emailr_h, \%_emailr_h ); } if ( $HTMLOutput{'allemailr'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'EMail'}, \%_emailr_h, \%_emailr_h ); } if ( $HTMLOutput{'lastemailr'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'EMail'}, \%_emailr_h, \%_emailr_l ); } foreach my $key (@keylist) { my $newkey = $key; if ( length($key) > $MaxLengthOfShownEMail ) { $newkey = substr( $key, 0, $MaxLengthOfShownEMail ) . "..."; } my $bredde_h = 0; my $bredde_k = 0; if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * $_emailr_h{$key} / $max_h ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( $BarWidth * $_emailr_k{$key} / $max_k ) + 1; } print ""; my $direction = IsLocalEMail($key); if ( $direction > 0 ) { print "$newkey<- "; } if ( $direction == 0 ) { print "$newkey"; } if ( $direction < 0 ) { print " ->$newkey"; } if ( $ShowEMailReceivers =~ /H/i ) { print "$_emailr_h{$key}"; } if ( $ShowEMailReceivers =~ /B/i ) { print "" . Format_Bytes( $_emailr_k{$key} ) . ""; } if ( $ShowEMailReceivers =~ /M/i ) { print "" . Format_Bytes( $_emailr_k{$key} / ( $_emailr_h{$key} || 1 ) ) . ""; } if ( $ShowEMailReceivers =~ /L/i ) { print "" . ( $_emailr_l{$key} ? Format_Date( $_emailr_l{$key}, 1 ) : '-' ) . ""; } print "\n"; #$total_p += $_emailr_p{$key}; $total_h += $_emailr_h{$key}; $total_k += $_emailr_k{$key}; $count++; } $rest_p = 0; # $rest_p=$TotalPages-$total_p; $rest_h = $TotalHits - $total_h; $rest_k = $TotalBytes - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other receiver emails print "$Message[2]"; if ( $ShowEMailReceivers =~ /H/i ) { print "$rest_h"; } if ( $ShowEMailReceivers =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } if ( $ShowEMailReceivers =~ /M/i ) { print "" . Format_Bytes( $rest_k / ( $rest_h || 1 ) ) . ""; } if ( $ShowEMailReceivers =~ /L/i ) { print " "; } print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the top banner of the inner frame or static page # Parameters: $WIDTHMENU1 # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLTopBanner{ my $WIDTHMENU1 = shift; my $frame = ( $FrameName eq 'mainleft' ); if ($Debug) { debug( "ShowTopBan", 2 ); } print "$Center \n"; if ( $FrameName ne 'mainleft' ) { my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)year=[^&]*//i; $NewLinkParams =~ s/(^|&|&)month=[^&]*//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; my $NewLinkTarget = ''; if ( $FrameName eq 'mainright' ) { $NewLinkTarget = " target=\"_parent\""; } print "
\n"; } if ( $QueryString !~ /buildpdf/i ) { print "\n"; print "
\n"; print "\n"; } else { print "
\n"; } if ( $FrameName ne 'mainright' ) { # Print Statistics Of if ( $FrameName eq 'mainleft' ) { my $shortSiteDomain = $SiteDomain; if ( length($SiteDomain) > 30 ) { $shortSiteDomain = substr( $SiteDomain, 0, 20 ) . "..." . substr( $SiteDomain, length($SiteDomain) - 5, 5 ); } print ""; } else { print ""; } # Logo and flags if ( $FrameName ne 'mainleft' ) { if ( $LogoLink =~ "http://www.awstats.org" ) { print ""; } print "\n"; } if ( $FrameName ne 'mainleft' ) { # Print Last Update print ""; print ""; # Logo and flags if ( $FrameName eq 'mainright' ) { if ( $LogoLink =~ "http://www.awstats.org" ) { print ""; } print "\n"; # Print selected period of analysis (month and year required) print ""; print "\n"; } if ( $QueryString !~ /buildpdf/i ) { print "
$Message[7]:
$shortSiteDomain
$Message[7]: $SiteDomain"; } else { print ""; } if ( !$StaticLinks ) { print "
"; Show_Flag_Links($Lang); } print "
$Message[35]: "; if ($LastUpdate) { print Format_Date( $LastUpdate, 0 ); } else { # Here NbOfOldLines = 0 (because LastUpdate is not defined) if ( !$UpdateStats ) { print "$Message[24]"; } else { print "No qualified records found in log ($NbOfLinesCorrupted corrupted, $NbOfLinesComment comments, $NbOfLinesBlank Blank, $NbOfLinesDropped dropped)"; } } print ""; # Print Update Now link if ( $AllowToUpdateStatsFromBrowser && !$StaticLinks ) { my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; if ( $FrameName eq 'mainright' ) { $NewLinkParams .= "&framename=mainright"; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } print "       "; print "$Message[74]"; } print "\n"; } else { print "\n"; } if ( !$StaticLinks ) { print "
"; Show_Flag_Links($Lang); } print "
$Message[133]:"; if ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ) { print "\n"; print "\n"; print "\n"; if ($SiteConfig) { print "\n"; } if ($DirConfig) { print "\n"; } if ( $QueryString =~ /lang=(\w+)/i ) { print "\n"; } if ( $QueryString =~ /debug=(\d+)/i ) { print "\n"; } if ( $FrameName eq 'mainright' ) { print "\n"; } print ""; } else { print ""; if ($DayRequired) { print "$Message[4] $DayRequired - "; } if ( $MonthRequired eq 'all' ) { print "$Message[6] $YearRequired"; } else { print "$Message[5] $MonthNumLib{$MonthRequired} $YearRequired"; } print ""; } print "
\n"; print "
\n"; } else { print "\n"; } if ( $FrameName ne 'mainleft' ) { print "

\n"; } else { print "
\n"; } print "\n"; } #------------------------------------------------------------------------------ # Function: Prints the menu in a frame or below the top banner # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMenu{ my $NewLinkParams = shift; my $NewLinkTarget = shift; my $frame = ( $FrameName eq 'mainleft' ); if ($Debug) { debug( "ShowMenu", 2 ); } # Print menu links if ( ( $HTMLOutput{'main'} && $FrameName ne 'mainright' ) || $FrameName eq 'mainleft' ) { # If main page asked # Define link anchor my $linkanchor = ( $FrameName eq 'mainleft' ? "$AWScript${NewLinkParams}" : "" ); if ( $linkanchor && ( $linkanchor !~ /framename=mainright/ ) ) { $linkanchor .= "framename=mainright"; } $linkanchor =~ s/(&|&)$//; $linkanchor = XMLEncode("$linkanchor"); # Define target my $targetpage = ( $FrameName eq 'mainleft' ? " target=\"mainright\"" : "" ); # Print Menu my $linetitle; # TODO a virer if ( !$PluginsLoaded{'ShowMenu'}{'menuapplet'} ) { my $menuicon = 0; # TODO a virer # Menu HTML print "\n"; if ( $FrameName eq 'mainleft' && $ShowMonthStats ) { print( $frame? "" : "" ); print "$Message[128]"; print( $frame? "\n" : "   " ); } my %menu = (); my %menulink = (); my %menutext = (); # When %menu = ( 'month' => $ShowMonthStats ? 1 : 0, 'daysofmonth' => $ShowDaysOfMonthStats ? 2 : 0, 'daysofweek' => $ShowDaysOfWeekStats ? 3 : 0, 'hours' => $ShowHoursStats ? 4 : 0 ); %menulink = ( 'month' => 1, 'daysofmonth' => 1, 'daysofweek' => 1, 'hours' => 1 ); %menutext = ( 'month' => $Message[162], 'daysofmonth' => $Message[138], 'daysofweek' => $Message[91], 'hours' => $Message[20] ); HTMLShowMenuCateg( 'when', $Message[93], 'menu4.png', $frame, $targetpage, $linkanchor, $NewLinkParams, $NewLinkTarget, \%menu, \%menulink, \%menutext ); # Who %menu = ( 'countries' => $ShowDomainsStats ? 1 : 0, 'alldomains' => $ShowDomainsStats ? 2 : 0, 'visitors' => $ShowHostsStats ? 3 : 0, 'allhosts' => $ShowHostsStats ? 4 : 0, 'lasthosts' => ( $ShowHostsStats =~ /L/i ) ? 5 : 0, 'unknownip' => $ShowHostsStats ? 6 : 0, 'logins' => $ShowAuthenticatedUsers ? 7 : 0, 'alllogins' => $ShowAuthenticatedUsers ? 8 : 0, 'lastlogins' => ( $ShowAuthenticatedUsers =~ /L/i ) ? 9 : 0, 'emailsenders' => $ShowEMailSenders ? 10 : 0, 'allemails' => $ShowEMailSenders ? 11 : 0, 'lastemails' => ( $ShowEMailSenders =~ /L/i ) ? 12 : 0, 'emailreceivers' => $ShowEMailReceivers ? 13 : 0, 'allemailr' => $ShowEMailReceivers ? 14 : 0, 'lastemailr' => ( $ShowEMailReceivers =~ /L/i ) ? 15 : 0, 'robots' => $ShowRobotsStats ? 16 : 0, 'allrobots' => $ShowRobotsStats ? 17 : 0, 'lastrobots' => ( $ShowRobotsStats =~ /L/i ) ? 18 : 0, 'worms' => $ShowWormsStats ? 19 : 0 ); %menulink = ( 'countries' => 1, 'alldomains' => 2, 'visitors' => 1, 'allhosts' => 2, 'lasthosts' => 2, 'unknownip' => 2, 'logins' => 1, 'alllogins' => 2, 'lastlogins' => 2, 'emailsenders' => 1, 'allemails' => 2, 'lastemails' => 2, 'emailreceivers' => 1, 'allemailr' => 2, 'lastemailr' => 2, 'robots' => 1, 'allrobots' => 2, 'lastrobots' => 2, 'worms' => 1 ); %menutext = ( 'countries' => $Message[148], 'alldomains' => $Message[80], 'visitors' => $Message[81], 'allhosts' => $Message[80], 'lasthosts' => $Message[9], 'unknownip' => $Message[45], 'logins' => $Message[94], 'alllogins' => $Message[80], 'lastlogins' => $Message[9], 'emailsenders' => $Message[131], 'allemails' => $Message[80], 'lastemails' => $Message[9], 'emailreceivers' => $Message[132], 'allemailr' => $Message[80], 'lastemailr' => $Message[9], 'robots' => $Message[53], 'allrobots' => $Message[80], 'lastrobots' => $Message[9], 'worms' => $Message[136] ); HTMLShowMenuCateg( 'who', $Message[92], 'menu5.png', $frame, $targetpage, $linkanchor, $NewLinkParams, $NewLinkTarget, \%menu, \%menulink, \%menutext ); # Navigation $linetitle = &AtLeastOneNotNull( $ShowSessionsStats, $ShowPagesStats, $ShowFileTypesStats, $ShowFileSizesStats, $ShowOSStats, $ShowBrowsersStats, $ShowScreenSizeStats, $ShowDownloadsStats ); if ($linetitle) { print "" . ( $menuicon ? " " : "" ) . "$Message[72]:\n"; } if ($linetitle) { print( $frame? "\n" : "" ); } if ($ShowSessionsStats) { print( $frame? "" : "" ); print "$Message[117]"; print( $frame? "\n" : "   " ); } if ($ShowFileTypesStats && $LevelForFileTypesDetection > 0) { print( $frame? "" : "" ); print "$Message[73]"; print( $frame? "\n" : "   " ); } if ($ShowDownloadsStats && $LevelForFileTypesDetection > 0) { print( $frame? "" : "" ); print "$Message[178]"; print( $frame? "\n" : "   " ); print( $frame ? "   \"...\" " : "" ); print "$Message[80]\n"; print( $frame? "\n" : "   " ); } if ($ShowPagesStats) { print( $frame? "" : "" ); print "$Message[29]\n"; print( $frame? "\n" : "   " ); } if ($ShowPagesStats) { print( $frame ? "   \"...\" " : "" ); print "$Message[80]\n"; print( $frame? "\n" : "   " ); } if ( $ShowPagesStats =~ /E/i ) { print( $frame ? "   \"...\" " : "" ); print "$Message[104]\n"; print( $frame? "\n" : "   " ); } if ( $ShowPagesStats =~ /X/i ) { print( $frame ? "   \"...\" " : "" ); print "$Message[116]\n"; print( $frame? "\n" : "   " ); } if ($ShowOSStats) { print( $frame? "" : "" ); print "$Message[59]"; print( $frame? "\n" : "   " ); } if ($ShowOSStats) { print( $frame ? "   \"...\" " : "" ); print "$Message[58]\n"; print( $frame? "\n" : "   " ); } if ($ShowOSStats) { print( $frame ? "   \"...\" " : "" ); print "$Message[0]\n"; print( $frame? "\n" : "   " ); } if ($ShowBrowsersStats) { print( $frame? "" : "" ); print "$Message[21]"; print( $frame? "\n" : "   " ); } if ($ShowBrowsersStats) { print( $frame ? "   \"...\" " : "" ); print "$Message[58]\n"; print( $frame? "\n" : "   " ); } if ($ShowBrowsersStats) { print( $frame ? "   \"...\" " : "" ); print "$Message[0]\n"; print( $frame? "\n" : "   " ); } if ($ShowScreenSizeStats) { print( $frame? "" : "" ); print "$Message[135]"; print( $frame? "\n" : "   " ); } if ($linetitle) { print( $frame? "" : "\n" ); } # Referers %menu = ( 'referer' => $ShowOriginStats ? 1 : 0, 'refererse' => $ShowOriginStats ? 2 : 0, 'refererpages' => $ShowOriginStats ? 3 : 0, 'keys' => ( $ShowKeyphrasesStats || $ShowKeywordsStats ) ? 4 : 0, 'keyphrases' => $ShowKeyphrasesStats ? 5 : 0, 'keywords' => $ShowKeywordsStats ? 6 : 0 ); %menulink = ( 'referer' => 1, 'refererse' => 2, 'refererpages' => 2, 'keys' => 1, 'keyphrases' => 2, 'keywords' => 2 ); %menutext = ( 'referer' => $Message[37], 'refererse' => $Message[126], 'refererpages' => $Message[127], 'keys' => $Message[14], 'keyphrases' => $Message[120], 'keywords' => $Message[121] ); HTMLShowMenuCateg( 'referers', $Message[23], 'menu7.png', $frame, $targetpage, $linkanchor, $NewLinkParams, $NewLinkTarget, \%menu, \%menulink, \%menutext ); # Others %menu = ( 'filetypes' => ( $ShowFileTypesStats =~ /C/i ) ? 1 : 0, 'misc' => $ShowMiscStats ? 2 : 0, 'errors' => ( $ShowHTTPErrorsStats || $ShowSMTPErrorsStats ) ? 3 : 0, 'clusters' => $ShowClusterStats ? 5 : 0 ); %menulink = ( 'filetypes' => 1, 'misc' => 1, 'errors' => 1, 'clusters' => 1 ); %menutext = ( 'filetypes' => $Message[98], 'misc' => $Message[139], 'errors' => ( $ShowSMTPErrorsStats ? $Message[147] : $Message[32] ), 'clusters' => $Message[155] ); my $idx = 0; foreach ( sort keys %TrapInfosForHTTPErrorCodes ) { $menu{"errors$_"} = $ShowHTTPErrorsStats ? 4+$idx : 0; $menulink{"errors$_"} = 2; $menutext{"errors$_"} = $Message[49] . ' (' . $_ . ')'; $idx++; } HTMLShowMenuCateg( 'others', $Message[2], 'menu8.png', $frame, $targetpage, $linkanchor, $NewLinkParams, $NewLinkTarget, \%menu, \%menulink, \%menutext ); # Extra/Marketing %menu = (); %menulink = (); %menutext = (); my $i = 1; foreach ( 1 .. @ExtraName - 1 ) { $menu{"extra$_"} = $i++; $menulink{"extra$_"} = 1; $menutext{"extra$_"} = $ExtraName[$_]; $menu{"allextra$_"} = $i++; $menulink{"allextra$_"} = 2; $menutext{"allextra$_"} = $Message[80]; } HTMLShowMenuCateg( 'extra', $Message[134], '', $frame, $targetpage, $linkanchor, $NewLinkParams, $NewLinkTarget, \%menu, \%menulink, \%menutext ); print "\n"; } else { # Menu Applet if ($frame) { } else { } } #print ($frame?"":"
\n"); print "
\n"; } # Print Back link elsif ( !$HTMLOutput{'main'} ) { print "\n"; $NewLinkParams =~ s/(^|&|&)hostfilter=[^&]*//i; $NewLinkParams =~ s/(^|&|&)urlfilter=[^&]*//i; $NewLinkParams =~ s/(^|&|&)refererpagesfilter=[^&]*//i; $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ( !$DetailedReportsOnNewWindows || $FrameName eq 'mainright' || $QueryString =~ /buildpdf/i ) { print "\n"; } else { print "\n"; } print "
$Message[76]
$Message[118]
\n"; print "\n"; } } #------------------------------------------------------------------------------ # Function: Prints the File Type table # Parameters: _ # Input: $NewLinkParams, $NewLinkTargets # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainFileType{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowFileTypesStatsCompressionStats", 2 ); } print "$Center 
\n"; my $Totalh = 0; foreach ( keys %_filetypes_h ) { $Totalh += $_filetypes_h{$_}; } my $Totalk = 0; foreach ( keys %_filetypes_k ) { $Totalk += $_filetypes_k{$_}; } my $title = "$Message[73]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } if ( $ShowFileTypesStats =~ /C/i ) { $title .= " - $Message[98]"; } # build keylist at top &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_filetypes_h, \%_filetypes_h ); &tab_head( "$title", 19, 0, 'filetypes' ); # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; foreach my $key (@keylist) { push @valdata, int( $_filetypes_h{$key} / $Totalh * 1000 ) / 10; push @blocklabel, "$key"; $cnt++; if ($cnt > 4) { last; } } print ""; my $function = "ShowGraph_$pluginname"; &$function( "$Message[73]", "filetypes", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata ); print ""; } } print "$Message[73]"; if ( $ShowFileTypesStats =~ /H/i ) { print "$Message[57]$Message[15]"; } if ( $ShowFileTypesStats =~ /B/i ) { print "$Message[75]$Message[15]"; } if ( $ShowFileTypesStats =~ /C/i ) { print "$Message[100]$Message[101]$Message[99]"; } print "\n"; my $total_con = 0; my $total_cre = 0; my $count = 0; foreach my $key (@keylist) { my $p_h = ' '; my $p_k = ' '; if ($Totalh) { $p_h = int( $_filetypes_h{$key} / $Totalh * 1000 ) / 10; $p_h = "$p_h %"; } if ($Totalk) { $p_k = int( $_filetypes_k{$key} / $Totalk * 1000 ) / 10; $p_k = "$p_k %"; } if ( $key eq 'Unknown' ) { print "$Message[0]"; } else { my $nameicon = $MimeHashLib{$key}[0] || "notavailable"; my $nametype = $MimeHashFamily{$MimeHashLib{$key}[0]} || " "; print "$key"; print "$nametype"; } if ( $ShowFileTypesStats =~ /H/i ) { print "".Format_Number($_filetypes_h{$key})."$p_h"; } if ( $ShowFileTypesStats =~ /B/i ) { print '' . Format_Bytes( $_filetypes_k{$key} ) . "$p_k"; } if ( $ShowFileTypesStats =~ /C/i ) { if ( $_filetypes_gz_in{$key} ) { my $percent = int( 100 * ( 1 - $_filetypes_gz_out{$key} / $_filetypes_gz_in{$key} ) ); printf( "%s%s%s (%s%)", Format_Bytes( $_filetypes_gz_in{$key} ), Format_Bytes( $_filetypes_gz_out{$key} ), Format_Bytes( $_filetypes_gz_in{$key} - $_filetypes_gz_out{$key} ), $percent ); $total_con += $_filetypes_gz_in{$key}; $total_cre += $_filetypes_gz_out{$key}; } else { print "   "; } } print "\n"; $count++; } # Add total (only usefull if compression is enabled) if ( $ShowFileTypesStats =~ /C/i ) { my $colspan = 3; if ( $ShowFileTypesStats =~ /H/i ) { $colspan += 2; } if ( $ShowFileTypesStats =~ /B/i ) { $colspan += 2; } print ""; print "$Message[98]"; if ( $ShowFileTypesStats =~ /C/i ) { if ($total_con) { my $percent = int( 100 * ( 1 - $total_cre / $total_con ) ); printf( "%s%s%s (%s%)", Format_Bytes($total_con), Format_Bytes($total_cre), Format_Bytes( $total_con - $total_cre ), $percent ); } else { print "   "; } } print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the Browser Detail frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowBrowserDetail{ # Show browsers versions print "$Center 
"; my $title = "$Message[21]"; &tab_head( "$title", 19, 0, 'browsersversions' ); print "$Message[58]"; print "$Message[111]$Message[56]$Message[15]"; print "$Message[57]$Message[15]"; print " "; print "\n"; my $total_h = 0; my $total_p = 0; my $count = 0; &BuildKeyList( MinimumButNoZero( scalar keys %_browser_h, 500 ), 1, \%_browser_h, \%_browser_p ); my %keysinkeylist = (); my $max_h = 1; my $max_p = 1; # Count total by family my %totalfamily_h = (); my %totalfamily_p = (); my $TotalFamily_h = 0; my $TotalFamily_p = 0; BROWSERLOOP: foreach my $key (@keylist) { $total_h += $_browser_h{$key}; if ( $_browser_h{$key} > $max_h ) { $max_h = $_browser_h{$key}; } $total_p += $_browser_p{$key}; if ( $_browser_p{$key} > $max_p ) { $max_p = $_browser_p{$key}; } foreach my $family ( keys %BrowsersFamily ) { if ( $key =~ /^$family/i ) { $totalfamily_h{$family} += $_browser_h{$key}; $totalfamily_p{$family} += $_browser_p{$key}; $TotalFamily_h += $_browser_h{$key}; $TotalFamily_p += $_browser_p{$key}; next BROWSERLOOP; } } } # Write records grouped in a browser family foreach my $family ( sort { $BrowsersFamily{$a} <=> $BrowsersFamily{$b} } keys %BrowsersFamily ) { my $p_h = ' '; my $p_p = ' '; if ($total_h) { $p_h = int( $totalfamily_h{$family} / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } if ($total_p) { $p_p = int( $totalfamily_p{$family} / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } my $familyheadershown = 0; #foreach my $key ( reverse sort keys %_browser_h ) { foreach my $key ( reverse sort SortBrowsers keys %_browser_h ) { if ( $key =~ /^$family(.*)/i ) { if ( !$familyheadershown ) { print "" . uc($family) . ""; print " " . Format_Number(int( $totalfamily_p{$family} )) . "$p_p"; print "" . Format_Number(int( $totalfamily_h{$family} )) . "$p_h "; print "\n"; $familyheadershown = 1; } $keysinkeylist{$key} = 1; my $ver = $1; my $p_h = ' '; my $p_p = ' '; if ($total_h) { $p_h = int( $_browser_h{$key} / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } if ($total_p) { $p_p = int( $_browser_p{$key} / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } print ""; print ""; print "" . ucfirst($family) . " " . ( $ver ? "$ver" : "?" ) . ""; print "" . ( $BrowsersHereAreGrabbers{$family} ? "$Message[112]" : "$Message[113]" ) . ""; my $bredde_h = 0; my $bredde_p = 0; if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * ( $_browser_h{$key} || 0 ) / $max_h ) + 1; } if ( ( $bredde_h == 1 ) && $_browser_h{$key} ) { $bredde_h = 2; } if ( $max_p > 0 ) { $bredde_p = int( $BarWidth * ( $_browser_p{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_p == 1 ) && $_browser_p{$key} ) { $bredde_p = 2; } print "".Format_Number($_browser_p{$key})."$p_p"; print "".Format_Number($_browser_h{$key})."$p_h"; print ""; # alt and title are not provided to reduce page size if ($ShowBrowsersStats) { print "
"; print "
"; } print ""; print "\n"; $count++; } } } # Write other records my $familyheadershown = 0; foreach my $key (@keylist) { if ( $keysinkeylist{$key} ) { next; } if ( !$familyheadershown ) { my $p_h = ' '; my $p_p = ' '; if ($total_p) { $p_p = int( ( $total_p - $TotalFamily_p ) / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } if ($total_h) { $p_h = int( ( $total_h - $TotalFamily_h ) / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } print "$Message[2]"; print " " . Format_Number(( $total_p - $TotalFamily_p )) . "$p_p"; print "" . Format_Number(( $total_h - $TotalFamily_h )) . "$p_h "; print "\n"; $familyheadershown = 1; } my $p_h = ' '; my $p_p = ' '; if ($total_h) { $p_h = int( $_browser_h{$key} / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } if ($total_p) { $p_p = int( $_browser_p{$key} / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } print ""; if ( $key eq 'Unknown' ) { print "$Message[0]?"; } else { my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; my $libbrowser = $BrowsersHashIDLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $BrowsersHashIcon{$keywithoutcumul} || "notavailable"; print "$libbrowser" . ( $BrowsersHereAreGrabbers{$key} ? "$Message[112]" : "$Message[113]" ) . ""; } my $bredde_h = 0; my $bredde_p = 0; if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * ( $_browser_h{$key} || 0 ) / $max_h ) + 1; } if ( $max_p > 0 ) { $bredde_p = int( $BarWidth * ( $_browser_p{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_h == 1 ) && $_browser_h{$key} ) { $bredde_h = 2; } if ( ( $bredde_p == 1 ) && $_browser_p{$key} ) { $bredde_p = 2; } print "".Format_Number($_browser_p{$key})."$p_p"; print "".Format_Number($_browser_h{$key})."$p_h"; print ""; # alt and title are not provided to reduce page size if ($ShowBrowsersStats) { print "
"; print "
"; } print ""; print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Unknown Browser Detail frame or static page # Parameters: $NewLinkTarget # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowBrowserUnknown{ my $NewLinkTarget = shift; print "$Center 
\n"; my $title = "$Message[50]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'unknownbrowser' ); print "User agent (" . ( scalar keys %_unknownrefererbrowser_l ) . ")$Message[9]\n"; my $total_l = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_unknownrefererbrowser_l, \%_unknownrefererbrowser_l ); foreach my $key (@keylist) { my $useragent = XMLEncode( CleanXSS($key) ); print "$useragent" . Format_Date( $_unknownrefererbrowser_l{$key}, 1 ) . "\n"; $total_l += 1; $count++; } my $rest_l = ( scalar keys %_unknownrefererbrowser_l ) - $total_l; if ( $rest_l > 0 ) { print "$Message[2]"; print "-"; print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the OS Detail frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowOSDetail{ # Show os versions print "$Center 
"; my $title = "$Message[59]"; &tab_head( "$title", 19, 0, 'osversions' ); print "$Message[58]"; print "$Message[56]$Message[15]"; print "$Message[57]$Message[15]"; print "\n"; my $total_h = 0; my $total_p = 0; my $count = 0; &BuildKeyList( MinimumButNoZero( scalar keys %_os_h, 500 ), 1, \%_os_h, \%_os_p ); my %keysinkeylist = (); my $max_h = 1; my $max_p = 1; # Count total by family my %totalfamily_h = (); my %totalfamily_p = (); my $TotalFamily_h = 0; my $TotalFamily_p = 0; OSLOOP: foreach my $key (@keylist) { $total_h += $_os_h{$key}; $total_p += $_os_p{$key}; if ( $_os_h{$key} > $max_h ) { $max_h = $_os_h{$key}; } if ( $_os_p{$key} > $max_p ) { $max_p = $_os_p{$key}; } foreach my $family ( keys %OSFamily ) { if ( $key =~ /^$family/i ) { $totalfamily_h{$family} += $_os_h{$key}; $totalfamily_p{$family} += $_os_p{$key}; $TotalFamily_h += $_os_h{$key}; $TotalFamily_p += $_os_p{$key}; next OSLOOP; } } } # Write records grouped in a browser family foreach my $family ( keys %OSFamily ) { my $p_h = ' '; my $p_p = ' '; if ($total_h) { $p_h = int( $totalfamily_h{$family} / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } if ($total_p) { $p_p = int( $totalfamily_p{$family} / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } my $familyheadershown = 0; foreach my $key ( reverse sort keys %_os_h ) { if ( $key =~ /^$family(.*)/i ) { if ( !$familyheadershown ) { my $family_name = ''; if ( $OSFamily{$family} ) { $family_name = $OSFamily{$family}; } print "$family_name"; print "" . Format_Number(int( $totalfamily_p{$family} )) . "$p_p"; print "" . Format_Number(int( $totalfamily_h{$family} )) . "$p_h "; print "\n"; $familyheadershown = 1; } $keysinkeylist{$key} = 1; my $ver = $1; my $p_h = ' '; my $p_p = ' '; if ($total_h) { $p_h = int( $_os_h{$key} / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } if ($total_p) { $p_p = int( $_os_p{$key} / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } print ""; print ""; print "$OSHashLib{$key}"; my $bredde_h = 0; my $bredde_p = 0; if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * ( $_os_h{$key} || 0 ) / $max_h ) + 1; } if ( ( $bredde_h == 1 ) && $_os_h{$key} ) { $bredde_h = 2; } if ( $max_p > 0 ) { $bredde_p = int( $BarWidth * ( $_os_p{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_p == 1 ) && $_os_p{$key} ) { $bredde_p = 2; } print "".Format_Number($_os_p{$key})."$p_p"; print "".Format_Number($_os_h{$key})."$p_h"; print ""; # alt and title are not provided to reduce page size if ($ShowOSStats) { print "
"; print "
"; } print ""; print "\n"; $count++; } } } # Write other records my $familyheadershown = 0; foreach my $key (@keylist) { if ( $keysinkeylist{$key} ) { next; } if ( !$familyheadershown ) { my $p_h = ' '; my $p_p = ' '; if ($total_h) { $p_h = int( ( $total_h - $TotalFamily_h ) / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } if ($total_p) { $p_p = int( ( $total_p - $TotalFamily_p ) / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } print "$Message[2]"; print "" . Format_Number(( $total_p - $TotalFamily_p )) . "$p_p"; print "" . Format_Number(( $total_h - $TotalFamily_h )) . "$p_h "; print "\n"; $familyheadershown = 1; } my $p_h = ' '; my $p_p = ' '; if ($total_h) { $p_h = int( $_os_h{$key} / $total_h * 1000 ) / 10; $p_h = "$p_h %"; } if ($total_p) { $p_p = int( $_os_p{$key} / $total_p * 1000 ) / 10; $p_p = "$p_p %"; } print ""; if ( $key eq 'Unknown' ) { print "$Message[0]"; } else { my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; my $libos = $OSHashLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $keywithoutcumul; $nameicon =~ s/[^\w]//g; print "$libos"; } my $bredde_h = 0; my $bredde_p = 0; if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * ( $_os_h{$key} || 0 ) / $max_h ) + 1; } if ( ( $bredde_h == 1 ) && $_os_h{$key} ) { $bredde_h = 2; } if ( $max_p > 0 ) { $bredde_p = int( $BarWidth * ( $_os_p{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_p == 1 ) && $_os_p{$key} ) { $bredde_p = 2; } print "".Format_Number($_os_p{$key})."$p_p"; print "".Format_Number($_os_h{$key})."$p_h"; print ""; # alt and title are not provided to reduce page size if ($ShowOSStats) { print "
"; print "
"; } print ""; print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Unkown OS Detail frame or static page # Parameters: $NewLinkTarget # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowOSUnknown{ my $NewLinkTarget = shift; print "$Center 
\n"; my $title = "$Message[46]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'unknownos' ); print "User agent (" . ( scalar keys %_unknownreferer_l ) . ")$Message[9]\n"; my $total_l = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_unknownreferer_l, \%_unknownreferer_l ); foreach my $key (@keylist) { my $useragent = XMLEncode( CleanXSS($key) ); print "$useragent"; print "" . Format_Date( $_unknownreferer_l{$key}, 1 ) . ""; print "\n"; $total_l += 1; $count++; } my $rest_l = ( scalar keys %_unknownreferer_l ) - $total_l; if ( $rest_l > 0 ) { print "$Message[2]"; print "-"; print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Referers frame or static page # Parameters: $NewLinkTarget # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowReferers{ my $NewLinkTarget = shift; print "$Center 
\n"; my $title = "$Message[40]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( $title, 19, 0, 'refererse' ); print "".Format_Number($TotalDifferentSearchEngines)." $Message[122]"; print "$Message[56]$Message[15]"; print "$Message[57]$Message[15]"; print "\n"; my $total_s = 0; my $total_p = 0; my $total_h = 0; my $rest_p = 0; my $rest_h = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Refer'}, \%_se_referrals_h, ( ( scalar keys %_se_referrals_p ) ? \%_se_referrals_p : \%_se_referrals_h ) ); # before 5.4 only hits were recorded foreach my $key (@keylist) { my $newreferer = $SearchEnginesHashLib{$key} || CleanXSS($key); my $p_p; my $p_h; if ($TotalSearchEnginesPages) { $p_p = int( $_se_referrals_p{$key} / $TotalSearchEnginesPages * 1000 ) / 10; } if ($TotalSearchEnginesHits) { $p_h = int( $_se_referrals_h{$key} / $TotalSearchEnginesHits * 1000 ) / 10; } print "$newreferer"; print "" . ( $_se_referrals_p{$key} ? $_se_referrals_p{$key} : ' ' ) . ""; print "" . ( $_se_referrals_p{$key} ? "$p_p %" : ' ' ) . ""; print "".Format_Number($_se_referrals_h{$key}).""; print "$p_h %"; print "\n"; $total_p += $_se_referrals_p{$key}; $total_h += $_se_referrals_h{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalSearchEnginesPages / $total_p - $TotalSearchEnginesHits / $total_h", 2 ); } $rest_p = $TotalSearchEnginesPages - $total_p; $rest_h = $TotalSearchEnginesHits - $total_h; if ( $rest_p > 0 || $rest_h > 0 ) { my $p_p; my $p_h; if ($TotalSearchEnginesPages) { $p_p = int( $rest_p / $TotalSearchEnginesPages * 1000 ) / 10; } if ($TotalSearchEnginesHits) { $p_h = int( $rest_h / $TotalSearchEnginesHits * 1000 ) / 10; } print "$Message[2]"; print "" . ( $rest_p ? Format_Number($rest_p) : ' ' ) . ""; print "" . ( $rest_p ? "$p_p %" : ' ' ) . ""; print "".Format_Number($rest_h).""; print "$p_h %"; print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Referer Pages frame or static page # Parameters: $NewLinkTarget # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowRefererPages{ my $NewLinkTarget = shift; print "$Center 
\n"; my $total_p = 0; my $total_h = 0; my $rest_p = 0; my $rest_h = 0; # Show filter form &HTMLShowFormFilter( "refererpagesfilter", $FilterIn{'refererpages'}, $FilterEx{'refererpages'} ); my $title = "$Message[41]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } my $cpt = 0; $cpt = ( scalar keys %_pagesrefs_h ); &tab_head( "$title", 19, 0, 'refererpages' ); print ""; if ( $FilterIn{'refererpages'} || $FilterEx{'refererpages'} ) { if ( $FilterIn{'refererpages'} ) { print "$Message[79] $FilterIn{'refererpages'}"; } if ( $FilterIn{'refererpages'} && $FilterEx{'refererpages'} ) { print " - "; } if ( $FilterEx{'refererpages'} ) { print "Exclude $Message[79] $FilterEx{'refererpages'}"; } if ( $FilterIn{'refererpages'} || $FilterEx{'refererpages'} ) { print ": "; } print "$cpt $Message[28]"; #if ($MonthRequired ne 'all') { # if ($HTMLOutput{'refererpages'}) { print "
$Message[102]: $TotalDifferentPages $Message[28]"; } #} } else { print "$Message[102]: ".Format_Number($cpt)." $Message[28]"; } print ""; print "$Message[56]$Message[15]"; print "$Message[57]$Message[15]"; print "\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Refer'}, \%_pagesrefs_h, ( ( scalar keys %_pagesrefs_p ) ? \%_pagesrefs_p : \%_pagesrefs_h ) ); foreach my $key (@keylist) { my $nompage = CleanXSS($key); if ( length($nompage) > $MaxLengthOfShownURL ) { $nompage = substr( $nompage, 0, $MaxLengthOfShownURL ) . "..."; } my $p_p; my $p_h; if ($TotalRefererPages) { $p_p = int( $_pagesrefs_p{$key} / $TotalRefererPages * 1000 ) / 10; } if ($TotalRefererHits) { $p_h = int( $_pagesrefs_h{$key} / $TotalRefererHits * 1000 ) / 10; } print ""; &HTMLShowURLInfo($key); print ""; print "" . ( $_pagesrefs_p{$key} ? Format_Number($_pagesrefs_p{$key}) : ' ' ) . "" . ( $_pagesrefs_p{$key} ? "$p_p %" : ' ' ) . ""; print "" . ( $_pagesrefs_h{$key} ? Format_Number($_pagesrefs_h{$key}) : ' ' ) . "" . ( $_pagesrefs_h{$key} ? "$p_h %" : ' ' ) . ""; print "\n"; $total_p += $_pagesrefs_p{$key}; $total_h += $_pagesrefs_h{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalRefererPages / $total_p - $TotalRefererHits / $total_h", 2 ); } $rest_p = $TotalRefererPages - $total_p; $rest_h = $TotalRefererHits - $total_h; if ( $rest_p > 0 || $rest_h > 0 ) { my $p_p; my $p_h; if ($TotalRefererPages) { $p_p = int( $rest_p / $TotalRefererPages * 1000 ) / 10; } if ($TotalRefererHits) { $p_h = int( $rest_h / $TotalRefererHits * 1000 ) / 10; } print "$Message[2]"; print "" . ( $rest_p ? Format_Number($rest_p) : ' ' ) . ""; print "" . ( $rest_p ? "$p_p %" : ' ' ) . ""; print "".Format_Number($rest_h).""; print "$p_h %"; print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Key Phrases frame or static page # Parameters: $NewLinkTarget # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowKeyPhrases{ my $NewLinkTarget = shift; print "$Center 
\n"; my $title = "$Message[43]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( $title, 19, 0, 'keyphrases' ); print "".Format_Number($TotalDifferentKeyphrases)." $Message[103]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Keyphrase'}, \%_keyphrases, \%_keyphrases ); foreach my $key (@keylist) { my $mot; # Convert coded keywords (utf8,...) to be correctly reported in HTML page. if ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) { $mot = CleanXSS( DecodeKey_decodeutfkeys( $key, $PageCode || 'iso-8859-1' ) ); } else { $mot = CleanXSS( DecodeEncodedString($key) ); } my $p; if ($TotalKeyphrases) { $p = int( $_keyphrases{$key} / $TotalKeyphrases * 1000 ) / 10; } print "" . XMLEncode($mot) . "$_keyphrases{$key}$p %\n"; $total_s += $_keyphrases{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalKeyphrases / $total_s", 2 ); } my $rest_s = $TotalKeyphrases - $total_s; if ( $rest_s > 0 ) { my $p; if ($TotalKeyphrases) { $p = int( $rest_s / $TotalKeyphrases * 1000 ) / 10; } print "$Message[124]".Format_Number($rest_s).""; print "$p %\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Keywords frame or static page # Parameters: $NewLinkTarget # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowKeywords{ my $NewLinkTarget = shift; print "$Center 
\n"; my $title = "$Message[44]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( $title, 19, 0, 'keywords' ); print "".Format_Number($TotalDifferentKeywords)." $Message[13]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Keyword'}, \%_keywords, \%_keywords ); foreach my $key (@keylist) { my $mot; # Convert coded keywords (utf8,...) to be correctly reported in HTML page. if ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) { $mot = CleanXSS( DecodeKey_decodeutfkeys( $key, $PageCode || 'iso-8859-1' ) ); } else { $mot = CleanXSS( DecodeEncodedString($key) ); } my $p; if ($TotalKeywords) { $p = int( $_keywords{$key} / $TotalKeywords * 1000 ) / 10; } print "" . XMLEncode($mot) . "$_keywords{$key}$p %\n"; $total_s += $_keywords{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalKeywords / $total_s", 2 ); } my $rest_s = $TotalKeywords - $total_s; if ( $rest_s > 0 ) { my $p; if ($TotalKeywords) { $p = int( $rest_s / $TotalKeywords * 1000 ) / 10; } print "$Message[30]".Format_Number($rest_s).""; print "$p %\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the HTTP Error code frame or static page # Parameters: $code - the error code we're printing # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowErrorCodes{ my $code = shift; my $title; my %customtitles = ( "404", "$Message[47]" ); $title = $customtitles{$code} ? $customtitles{$code} : (join(' ', ( ($httpcodelib{$code} ? $httpcodelib{$code} : 'Unknown error'), "urls (HTTP code " . $code . ")" ))); print "$Center 
\n"; &tab_head( $title, 19, 0, "errors$code" ); print "URL (" . Format_Number(( scalar keys %{$_sider_h{$code}} )) . ")$Message[49]"; foreach (split(//, $ShowHTTPErrorsPageDetail)) { if ( $_ =~ /R/i ) { print "$Message[23]"; } elsif ( $_ =~ /H/i ) { print "$Message[81]"; } } print "\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%{$_sider_h{$code}}, \%{$_sider_h{$code}} ); foreach my $key (@keylist) { my $nompage = XMLEncode( CleanXSS($key) ); #if (length($nompage)>$MaxLengthOfShownURL) { $nompage=substr($nompage,0,$MaxLengthOfShownURL)."..."; } my $referer = XMLEncode( CleanXSS( $_referer_h{$code}{$key} ) ); my $host = XMLEncode( CleanXSS( $_err_host_h{$code}{$key} ) ); print "$nompage"; print "".Format_Number($_sider_h{$code}{$key}).""; foreach (split(//, $ShowHTTPErrorsPageDetail)) { if ( $_ =~ /R/i ) { print "" . ( $referer ? "$referer" : " " ) . ""; } elsif ( $_ =~ /H/i ) { print "" . ( $host ? "$host" : " " ) . ""; } } print "\n"; my $total_s += $_sider_h{$code}{$key}; $count++; } # TODO Build TotalErrorHits # if ($Debug) { debug("Total real / shown : $TotalErrorHits / $total_h",2); } # $rest_h=$TotalErrorHits-$total_h; # if ($rest_h > 0) { # my $p; # if ($TotalErrorHits) { $p=int($rest_h/$TotalErrorHits*1000)/10; } # print "$Message[30]"; # print "$rest_h"; # print "..."; # print "\n"; # } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Loops through any defined extra sections and dumps the info to HTML # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowExtraSections{ foreach my $extranum ( 1 .. @ExtraName - 1 ) { my $total_p = 0; my $total_h = 0; my $total_k = 0; if ( $HTMLOutput{"allextra$extranum"} ) { if ($Debug) { debug( "ExtraName$extranum", 2 ); } print "$Center 
"; my $title = $ExtraName[$extranum]; &tab_head( "$title", 19, 0, "extra$extranum" ); print ""; print "" . $ExtraFirstColumnTitle[$extranum] . ""; if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "$Message[56]"; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "$Message[57]"; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "$Message[75]"; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print "$Message[9]"; } print "\n"; $total_p = $total_h = $total_k = 0; #$max_h=1; foreach (values %_login_h) { if ($_ > $max_h) { $max_h = $_; } } #$max_k=1; foreach (values %_login_k) { if ($_ > $max_k) { $max_k = $_; } } my $count = 0; if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHitExtra[$extranum], \%{ '_section_' . $extranum . '_h' }, \%{ '_section_' . $extranum . '_p' } ); } else { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHitExtra[$extranum], \%{ '_section_' . $extranum . '_h' }, \%{ '_section_' . $extranum . '_h' } ); } my %keysinkeylist = (); foreach my $key (@keylist) { $keysinkeylist{$key} = 1; my $firstcol = CleanXSS( DecodeEncodedString($key) ); $total_p += ${ '_section_' . $extranum . '_p' }{$key}; $total_h += ${ '_section_' . $extranum . '_h' }{$key}; $total_k += ${ '_section_' . $extranum . '_k' }{$key}; print ""; printf( "$ExtraFirstColumnFormat[$extranum]", $firstcol, $firstcol, $firstcol, $firstcol, $firstcol ); if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "" . ${ '_section_' . $extranum . '_p' }{$key} . ""; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "" . ${ '_section_' . $extranum . '_h' }{$key} . ""; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "" . Format_Bytes( ${ '_section_' . $extranum . '_k' }{$key} ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print "" . ( ${ '_section_' . $extranum . '_l' }{$key} ? Format_Date( ${ '_section_' . $extranum . '_l' }{$key}, 1 ) : '-' ) . ""; } print "\n"; $count++; } # If we ask average or sum, we loop on all other records if ( $ExtraAddAverageRow[$extranum] || $ExtraAddSumRow[$extranum] ) { foreach ( keys %{ '_section_' . $extranum . '_h' } ) { if ( $keysinkeylist{$_} ) { next; } $total_p += ${ '_section_' . $extranum . '_p' }{$_}; $total_h += ${ '_section_' . $extranum . '_h' }{$_}; $total_k += ${ '_section_' . $extranum . '_k' }{$_}; $count++; } } # Add average row if ( $ExtraAddAverageRow[$extranum] ) { print ""; print "$Message[96]"; if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "" . ( $count ? Format_Number(( $total_p / $count )) : " " ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "" . ( $count ? Format_Number(( $total_h / $count )) : " " ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "" . ( $count ? Format_Bytes( $total_k / $count ) : " " ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print " "; } print "\n"; } # Add sum row if ( $ExtraAddSumRow[$extranum] ) { print ""; print "$Message[102]"; if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "" . ($total_p) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "" . ($total_h) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "" . Format_Bytes($total_k) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print " "; } print "\n"; } &tab_end(); &html_end(1); } } } #------------------------------------------------------------------------------ # Function: Prints the Robot details frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowRobots{ my $total_p = 0; my $total_h = 0; my $total_k = 0; my $total_r = 0; my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; my $rest_r = 0; print "$Center 
\n"; my $title = ''; if ( $HTMLOutput{'allrobots'} ) { $title .= "$Message[53]"; } if ( $HTMLOutput{'lastrobots'} ) { $title .= "$Message[9]"; } &tab_head( "$title", 19, 0, 'robots' ); print "" . Format_Number(( scalar keys %_robot_h )) . " $Message[51]"; if ( $ShowRobotsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowRobotsStats =~ /B/i ) { print "$Message[75]"; } if ( $ShowRobotsStats =~ /L/i ) { print "$Message[9]"; } print "\n"; $total_p = $total_h = $total_k = $total_r = 0; my $count = 0; if ( $HTMLOutput{'allrobots'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Robot'}, \%_robot_h, \%_robot_h ); } if ( $HTMLOutput{'lastrobots'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Robot'}, \%_robot_h, \%_robot_l ); } foreach my $key (@keylist) { print "" . ( $RobotsHashIDLib{$key} ? $RobotsHashIDLib{$key} : $key ) . ""; if ( $ShowRobotsStats =~ /H/i ) { print "" . Format_Number(( $_robot_h{$key} - $_robot_r{$key} )) . ( $_robot_r{$key} ? "+$_robot_r{$key}" : "" ) . ""; } if ( $ShowRobotsStats =~ /B/i ) { print "" . Format_Bytes( $_robot_k{$key} ) . ""; } if ( $ShowRobotsStats =~ /L/i ) { print "" . ( $_robot_l{$key} ? Format_Date( $_robot_l{$key}, 1 ) : '-' ) . ""; } print "\n"; #$total_p += $_robot_p{$key}||0; $total_h += $_robot_h{$key}; $total_k += $_robot_k{$key} || 0; $total_r += $_robot_r{$key} || 0; $count++; } # For bots we need to count Totals my $TotalPagesRobots = 0; #foreach (values %_robot_p) { $TotalPagesRobots+=$_; } my $TotalHitsRobots = 0; foreach ( values %_robot_h ) { $TotalHitsRobots += $_; } my $TotalBytesRobots = 0; foreach ( values %_robot_k ) { $TotalBytesRobots += $_; } my $TotalRRobots = 0; foreach ( values %_robot_r ) { $TotalRRobots += $_; } $rest_p = 0; #$rest_p=$TotalPagesRobots-$total_p; $rest_h = $TotalHitsRobots - $total_h; $rest_k = $TotalBytesRobots - $total_k; $rest_r = $TotalRRobots - $total_r; if ($Debug) { debug( "Total real / shown : $TotalPagesRobots / $total_p - $TotalHitsRobots / $total_h - $TotalBytesRobots / $total_k", 2 ); } if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 || $rest_r > 0 ) { # All other robots print "$Message[2]"; if ( $ShowRobotsStats =~ /H/i ) { print "".Format_Number($rest_h).""; } if ( $ShowRobotsStats =~ /B/i ) { print "" . ( Format_Bytes($rest_k) ) . ""; } if ( $ShowRobotsStats =~ /L/i ) { print " "; } print "\n"; } &tab_end( "* $Message[156]" . ( $TotalRRobots ? " $Message[157]" : "" ) ); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the URL, Entry or Exit details frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowURLDetail{ my $total_p = 0; my $total_e = 0; my $total_k = 0; my $total_x = 0; # Call to plugins' function ShowPagesFilter foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesFilter'} } ) { my $function = "ShowPagesFilter_$pluginname"; &$function(); } print "$Center 
\n"; # Show filter form &HTMLShowFormFilter( "urlfilter", $FilterIn{'url'}, $FilterEx{'url'} ); # Show URL list my $title = ''; my $cpt = 0; if ( $HTMLOutput{'urldetail'} ) { $title = $Message[19]; $cpt = ( scalar keys %_url_p ); } if ( $HTMLOutput{'urlentry'} ) { $title = $Message[104]; $cpt = ( scalar keys %_url_e ); } if ( $HTMLOutput{'urlexit'} ) { $title = $Message[116]; $cpt = ( scalar keys %_url_x ); } &tab_head( "$title", 19, 0, 'urls' ); print ""; if ( $FilterIn{'url'} || $FilterEx{'url'} ) { if ( $FilterIn{'url'} ) { print "$Message[79] $FilterIn{'url'}"; } if ( $FilterIn{'url'} && $FilterEx{'url'} ) { print " - "; } if ( $FilterEx{'url'} ) { print "Exclude $Message[79] $FilterEx{'url'}"; } if ( $FilterIn{'url'} || $FilterEx{'url'} ) { print ": "; } print Format_Number($cpt)." $Message[28]"; if ( $MonthRequired ne 'all' ) { if ( $HTMLOutput{'urldetail'} ) { print "
$Message[102]: ".Format_Number($TotalDifferentPages)." $Message[28]"; } } } else { print "$Message[102]: ".Format_Number($cpt)." $Message[28]"; } print ""; if ( $ShowPagesStats =~ /P/i ) { print "$Message[29]"; } if ( $ShowPagesStats =~ /B/i ) { print "$Message[106]"; } if ( $ShowPagesStats =~ /E/i ) { print "$Message[104]"; } if ( $ShowPagesStats =~ /X/i ) { print "$Message[116]"; } # Call to plugins' function ShowPagesAddField foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { # my $function="ShowPagesAddField_$pluginname('title')"; # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; &$function('title'); } print " \n"; $total_p = $total_k = $total_e = $total_x = 0; my $count = 0; if ( $HTMLOutput{'urlentry'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'File'}, \%_url_e, \%_url_e ); } elsif ( $HTMLOutput{'urlexit'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'File'}, \%_url_x, \%_url_x ); } else { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'File'}, \%_url_p, \%_url_p ); } my $max_p = 1; my $max_k = 1; foreach my $key (@keylist) { if ( $_url_p{$key} > $max_p ) { $max_p = $_url_p{$key}; } if ( $_url_k{$key} / ( $_url_p{$key} || 1 ) > $max_k ) { $max_k = $_url_k{$key} / ( $_url_p{$key} || 1 ); } } foreach my $key (@keylist) { print ""; &HTMLShowURLInfo($key); print ""; my $bredde_p = 0; my $bredde_e = 0; my $bredde_x = 0; my $bredde_k = 0; if ( $max_p > 0 ) { $bredde_p = int( $BarWidth * ( $_url_p{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_p == 1 ) && $_url_p{$key} ) { $bredde_p = 2; } if ( $max_p > 0 ) { $bredde_e = int( $BarWidth * ( $_url_e{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_e == 1 ) && $_url_e{$key} ) { $bredde_e = 2; } if ( $max_p > 0 ) { $bredde_x = int( $BarWidth * ( $_url_x{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_x == 1 ) && $_url_x{$key} ) { $bredde_x = 2; } if ( $max_k > 0 ) { $bredde_k = int( $BarWidth * ( ( $_url_k{$key} || 0 ) / ( $_url_p{$key} || 1 ) ) / $max_k ) + 1; } if ( ( $bredde_k == 1 ) && $_url_k{$key} ) { $bredde_k = 2; } if ( $ShowPagesStats =~ /P/i ) { print "".Format_Number($_url_p{$key}).""; } if ( $ShowPagesStats =~ /B/i ) { print "" . ( $_url_k{$key} ? Format_Bytes( $_url_k{$key} / ( $_url_p{$key} || 1 ) ) : " " ) . ""; } if ( $ShowPagesStats =~ /E/i ) { print "" . ( $_url_e{$key} ? Format_Number($_url_e{$key}) : " " ) . ""; } if ( $ShowPagesStats =~ /X/i ) { print "" . ( $_url_x{$key} ? Format_Number($_url_x{$key}) : " " ) . ""; } # Call to plugins' function ShowPagesAddField foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { # my $function="ShowPagesAddField_$pluginname('$key')"; # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; &$function($key); } print ""; # alt and title are not provided to reduce page size if ( $ShowPagesStats =~ /P/i ) { print "
"; } if ( $ShowPagesStats =~ /B/i ) { print "
"; } if ( $ShowPagesStats =~ /E/i ) { print "
"; } if ( $ShowPagesStats =~ /X/i ) { print ""; } print "\n"; $total_p += $_url_p{$key}; $total_e += $_url_e{$key}; $total_x += $_url_x{$key}; $total_k += $_url_k{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalPages / $total_p - $TotalEntries / $total_e - $TotalExits / $total_x - $TotalBytesPages / $total_k", 2 ); } my $rest_p = $TotalPages - $total_p; my $rest_k = $TotalBytesPages - $total_k; my $rest_e = $TotalEntries - $total_e; my $rest_x = $TotalExits - $total_x; if ( $rest_p > 0 || $rest_e > 0 || $rest_k > 0 ) { print "$Message[2]"; if ( $ShowPagesStats =~ /P/i ) { print "" . ( $rest_p ? Format_Number($rest_p) : " " ) . ""; } if ( $ShowPagesStats =~ /B/i ) { print "" . ( $rest_k ? Format_Bytes( $rest_k / ( $rest_p || 1 ) ) : " " ) . ""; } if ( $ShowPagesStats =~ /E/i ) { print "" . ( $rest_e ? Format_Number($rest_e) : " " ) . ""; } if ( $ShowPagesStats =~ /X/i ) { print "" . ( $rest_x ? Format_Number($rest_x) : " " ) . ""; } # Call to plugins' function ShowPagesAddField foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { my $function = "ShowPagesAddField_$pluginname"; &$function(''); } print " \n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Login details frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowLogins{ my $total_p = 0; my $total_h = 0; my $total_k = 0; my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; print "$Center 
\n"; my $title = ''; if ( $HTMLOutput{'alllogins'} ) { $title .= "$Message[94]"; } if ( $HTMLOutput{'lastlogins'} ) { $title .= "$Message[9]"; } &tab_head( "$title", 19, 0, 'logins' ); print "$Message[94] : " . Format_Number(( scalar keys %_login_h )) . ""; &HTMLShowUserInfo('__title__'); if ( $ShowAuthenticatedUsers =~ /P/i ) { print "$Message[56]"; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print "$Message[57]"; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print "$Message[75]"; } if ( $ShowAuthenticatedUsers =~ /L/i ) { print "$Message[9]"; } print "\n"; $total_p = $total_h = $total_k = 0; my $count = 0; if ( $HTMLOutput{'alllogins'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Login'}, \%_login_h, \%_login_p ); } if ( $HTMLOutput{'lastlogins'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Login'}, \%_login_h, \%_login_l ); } foreach my $key (@keylist) { print "$key"; &HTMLShowUserInfo($key); if ( $ShowAuthenticatedUsers =~ /P/i ) { print "" . ( $_login_p{$key} ? Format_Number($_login_p{$key}) : " " ) . ""; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print "".Format_Number($_login_h{$key}).""; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print "" . Format_Bytes( $_login_k{$key} ) . ""; } if ( $ShowAuthenticatedUsers =~ /L/i ) { print "" . ( $_login_l{$key} ? Format_Date( $_login_l{$key}, 1 ) : '-' ) . ""; } print "\n"; $total_p += $_login_p{$key} || 0; $total_h += $_login_h{$key}; $total_k += $_login_k{$key} || 0; $count++; } if ($Debug) { debug( "Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h", 2 ); } $rest_p = $TotalPages - $total_p; $rest_h = $TotalHits - $total_h; $rest_k = $TotalBytes - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other logins and/or anonymous print "$Message[125]"; &HTMLShowUserInfo(''); if ( $ShowAuthenticatedUsers =~ /P/i ) { print "" . ( $rest_p ? Format_Number($rest_p) : " " ) . ""; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print "".Format_Number($rest_h).""; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } if ( $ShowAuthenticatedUsers =~ /L/i ) { print " "; } print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Unknown IP/Host details frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowHostsUnknown{ my $total_p = 0; my $total_h = 0; my $total_k = 0; my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; print "$Center 
\n"; &tab_head( "$Message[45]", 19, 0, 'unknownwip' ); print "" . Format_Number(( scalar keys %_host_h )) . " $Message[1]"; &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { print "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { print "$Message[75]"; } if ( $ShowHostsStats =~ /L/i ) { print "$Message[9]"; } print "\n"; $total_p = $total_h = $total_k = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_p ); foreach my $key (@keylist) { my $host = CleanXSS($key); print "$host"; &HTMLShowHostInfo($key); if ( $ShowHostsStats =~ /P/i ) { print "" . ( $_host_p{$key} ? Format_Number($_host_p{$key}) : " " ) . ""; } if ( $ShowHostsStats =~ /H/i ) { print "".Format_Number($_host_h{$key}).""; } if ( $ShowHostsStats =~ /B/i ) { print "" . Format_Bytes( $_host_k{$key} ) . ""; } if ( $ShowHostsStats =~ /L/i ) { print "" . ( $_host_l{$key} ? Format_Date( $_host_l{$key}, 1 ) : '-' ) . ""; } print "\n"; $total_p += $_host_p{$key}; $total_h += $_host_h{$key}; $total_k += $_host_k{$key} || 0; $count++; } if ($Debug) { debug( "Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h", 2 ); } $rest_p = $TotalPages - $total_p; $rest_h = $TotalHits - $total_h; $rest_k = $TotalBytes - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other visitors (known or not) print "$Message[82]"; &HTMLShowHostInfo(''); if ( $ShowHostsStats =~ /P/i ) { print "" . ( $rest_p ? Format_Number($rest_p) : " " ) . ""; } if ( $ShowHostsStats =~ /H/i ) { print "".Format_Number($rest_h).""; } if ( $ShowHostsStats =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } if ( $ShowHostsStats =~ /L/i ) { print " "; } print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Host details frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowHosts{ my $total_p = 0; my $total_h = 0; my $total_k = 0; my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; print "$Center 
\n"; # Show filter form &HTMLShowFormFilter( "hostfilter", $FilterIn{'host'}, $FilterEx{'host'} ); # Show hosts list my $title = ''; my $cpt = 0; if ( $HTMLOutput{'allhosts'} ) { $title .= "$Message[81]"; $cpt = ( scalar keys %_host_h ); } if ( $HTMLOutput{'lasthosts'} ) { $title .= "$Message[9]"; $cpt = ( scalar keys %_host_h ); } &tab_head( "$title", 19, 0, 'hosts' ); print ""; if ( $FilterIn{'host'} || $FilterEx{'host'} ) { # With filter if ( $FilterIn{'host'} ) { print "$Message[79] '$FilterIn{'host'}'"; } if ( $FilterIn{'host'} && $FilterEx{'host'} ) { print " - "; } if ( $FilterEx{'host'} ) { print " Exlude $Message[79] '$FilterEx{'host'}'"; } if ( $FilterIn{'host'} || $FilterEx{'host'} ) { print ": "; } print "$cpt $Message[81]"; if ( $MonthRequired ne 'all' ) { if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} ) { print "
$Message[102]: ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1] - ".Format_Number($TotalUnique)." $Message[11]"; } } } else { # Without filter if ( $MonthRequired ne 'all' ) { print "$Message[102] : ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1] - ".Format_Number($TotalUnique)." $Message[11]"; } else { print "$Message[102] : " . Format_Number(( scalar keys %_host_h )); } } print ""; &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { print "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { print "$Message[75]"; } if ( $ShowHostsStats =~ /L/i ) { print "$Message[9]"; } print "\n"; $total_p = $total_h = $total_k = 0; my $count = 0; if ( $HTMLOutput{'allhosts'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_p ); } if ( $HTMLOutput{'lasthosts'} ) { &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_l ); } foreach my $key (@keylist) { my $host = CleanXSS($key); print "" . ( $_robot_l{$key} ? '' : '' ) . "$host" . ( $_robot_l{$key} ? '' : '' ) . ""; &HTMLShowHostInfo($key); if ( $ShowHostsStats =~ /P/i ) { print "" . ( $_host_p{$key} ? Format_Number($_host_p{$key}) : " " ) . ""; } if ( $ShowHostsStats =~ /H/i ) { print "".Format_Number($_host_h{$key}).""; } if ( $ShowHostsStats =~ /B/i ) { print "" . Format_Bytes( $_host_k{$key} ) . ""; } if ( $ShowHostsStats =~ /L/i ) { print "" . ( $_host_l{$key} ? Format_Date( $_host_l{$key}, 1 ) : '-' ) . ""; } print "\n"; $total_p += $_host_p{$key}; $total_h += $_host_h{$key}; $total_k += $_host_k{$key} || 0; $count++; } if ($Debug) { debug( "Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h", 2 ); } $rest_p = $TotalPages - $total_p; $rest_h = $TotalHits - $total_h; $rest_k = $TotalBytes - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other visitors (known or not) print "$Message[2]"; &HTMLShowHostInfo(''); if ( $ShowHostsStats =~ /P/i ) { print "" . ( $rest_p ? Format_Number($rest_p) : " " ) . ""; } if ( $ShowHostsStats =~ /H/i ) { print "".Format_Number($rest_h).""; } if ( $ShowHostsStats =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } if ( $ShowHostsStats =~ /L/i ) { print " "; } print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Domains details frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowDomains{ my $total_p = 0; my $total_h = 0; my $total_k = 0; my $total_v = 0; my $total_u = 0; my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; my $rest_v = 0; my $rest_u = 0; print "$Center 
\n"; # Show domains list my $title = ''; my $cpt = 0; if ( $HTMLOutput{'alldomains'} ) { $title .= "$Message[25]"; $cpt = ( scalar keys %_domener_h ); } &tab_head( "$title", 19, 0, 'domains' ); print " $Message[17]"; if ( $ShowDomainsStats =~ /U/i ) { print "$Message[11]"; } if ( $ShowDomainsStats =~ /V/i ) { print "$Message[10]"; } if ( $ShowDomainsStats =~ /P/i ) { print "$Message[56]"; } if ( $ShowDomainsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowDomainsStats =~ /B/i ) { print "$Message[75]"; } print " "; print "\n"; $total_u = $total_v = $total_p = $total_h = $total_k = 0; my $max_h = 1; foreach ( values %_domener_h ) { if ( $_ > $max_h ) { $max_h = $_; } } my $max_k = 1; foreach ( values %_domener_k ) { if ( $_ > $max_k ) { $max_k = $_; } } my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_domener_h, \%_domener_p ); foreach my $key (@keylist) { my ( $_domener_u, $_domener_v ); my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; if ( $max_h > 0 ) { $bredde_p = int( $BarWidth * $_domener_p{$key} / $max_h ) + 1; } # use max_h to enable to compare pages with hits if ( $_domener_p{$key} && $bredde_p == 1 ) { $bredde_p = 2; } if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * $_domener_h{$key} / $max_h ) + 1; } if ( $_domener_h{$key} && $bredde_h == 1 ) { $bredde_h = 2; } if ( $max_k > 0 ) { $bredde_k = int( $BarWidth * ( $_domener_k{$key} || 0 ) / $max_k ) + 1; } if ( $_domener_k{$key} && $bredde_k == 1 ) { $bredde_k = 2; } my $newkey = lc($key); if ( $newkey eq 'ip' || !$DomainsHashIDLib{$newkey} ) { print "$Message[0]$newkey"; } else { print "$DomainsHashIDLib{$newkey}$newkey"; } ## to add unique visitors and number of visits, by Josep Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { $_domener_u = ( $_domener_p{$key} ? $_domener_p{$key} / $TotalPages : 0 ); $_domener_u += ( $_domener_h{$key} / $TotalHits ); $_domener_u = sprintf( "%.0f", ( $_domener_u * $TotalUnique ) / 2 ); print "".Format_Number($_domener_u)." (" . sprintf( "%.1f%", $TotalUnique ? 100 * $_domener_u / $TotalUnique : 0 ) . ")"; } if ( $ShowDomainsStats =~ /V/i ) { $_domener_v = ( $_domener_p{$key} ? $_domener_p{$key} / $TotalPages : 0 ); $_domener_v += ( $_domener_h{$key} / $TotalHits ); $_domener_v = sprintf( "%.0f", ( $_domener_v * $TotalVisits ) / 2 ); print "".Format_Number($_domener_v)." (" . sprintf( "%.1f%", $TotalVisits ? 100 * $_domener_v / $TotalVisits : 0 ) . ")"; } if ( $ShowDomainsStats =~ /P/i ) { print "".Format_Number($_domener_p{$key}).""; } if ( $ShowDomainsStats =~ /H/i ) { print "".Format_Number($_domener_h{$key}).""; } if ( $ShowDomainsStats =~ /B/i ) { print "" . Format_Bytes( $_domener_k{$key} ) . ""; } print ""; if ( $ShowDomainsStats =~ /P/i ) { print "
\n"; } if ( $ShowDomainsStats =~ /H/i ) { print "
\n"; } if ( $ShowDomainsStats =~ /B/i ) { print ""; } print ""; print "\n"; $total_u += $_domener_u; $total_v += $_domener_v; $total_p += $_domener_p{$key}; $total_h += $_domener_h{$key}; $total_k += $_domener_k{$key} || 0; $count++; } my $rest_u = $TotalUnique - $total_u; my $rest_v = $TotalVisits - $total_v; $rest_p = $TotalPages - $total_p; $rest_h = $TotalHits - $total_h; $rest_k = $TotalBytes - $total_k; if ( $rest_u > 0 || $rest_v > 0 || $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other domains (known or not) print " $Message[2]"; if ( $ShowDomainsStats =~ /U/i ) { print "$rest_u"; } if ( $ShowDomainsStats =~ /V/i ) { print "$rest_v"; } if ( $ShowDomainsStats =~ /P/i ) { print "$rest_p"; } if ( $ShowDomainsStats =~ /H/i ) { print "$rest_h"; } if ( $ShowDomainsStats =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } print " "; print "\n"; } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Downloads code frame or static page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLShowDownloads{ my $regext = qr/\.(\w{1,6})$/; print "$Center 
\n"; &tab_head( $Message[178], 19, 0, "downloads" ); print "$Message[178]"; if ( $ShowFileTypesStats =~ /H/i ){print "$Message[57]" ."206 $Message[57]"; } if ( $ShowFileTypesStats =~ /B/i ){ print "$Message[75]"; print "$Message[106]"; } print "\n"; my $count = 0; for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ print ""; my $ext = Get_Extension($regext, $u); if ( !$ext) { print ""; } else { my $nameicon = $MimeHashLib{$ext}[0] || "notavailable"; my $nametype = $MimeHashFamily{$MimeHashLib{$ext}[0]} || " "; print ""; } print ""; &HTMLShowURLInfo($u); print ""; if ( $ShowFileTypesStats =~ /H/i ){ print "".Format_Number($_downloads{$u}->{'AWSTATS_HITS'}).""; print "".Format_Number($_downloads{$u}->{'AWSTATS_206'}).""; } if ( $ShowFileTypesStats =~ /B/i ){ print "".Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'}).""; print "".Format_Bytes(($_downloads{$u}->{'AWSTATS_SIZE'}/ ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'}))).""; } print "\n"; $count++; if ($count >= $MaxRowsInHTMLOutput){last;} } &tab_end(); &html_end(1); } #------------------------------------------------------------------------------ # Function: Prints the Summary section at the top of the main page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainSummary{ if ($Debug) { debug( "ShowSummary", 2 ); } # FirstTime LastTime my $FirstTime = 0; my $LastTime = 0; foreach my $key ( keys %FirstTime ) { my $keyqualified = 0; if ( $MonthRequired eq 'all' ) { $keyqualified = 1; } if ( $key =~ /^$YearRequired$MonthRequired/ ) { $keyqualified = 1; } if ($keyqualified) { if ( $FirstTime{$key} && ( $FirstTime == 0 || $FirstTime > $FirstTime{$key} ) ) { $FirstTime = $FirstTime{$key}; } if ( $LastTime < ( $LastTime{$key} || 0 ) ) { $LastTime = $LastTime{$key}; } } } #print "$Center 
\n"; my $title = "$Message[128]"; &tab_head( "$title", 0, 0, 'month' ); my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)year=[^&]*//i; $NewLinkParams =~ s/(^|&|&)month=[^&]*//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } my $NewLinkTarget = ''; if ( $FrameName eq 'mainright' ) { $NewLinkTarget = " target=\"_parent\""; } # Ratio my $RatioVisits = 0; my $RatioPages = 0; my $RatioHits = 0; my $RatioBytes = 0; if ( $TotalUnique > 0 ) { $RatioVisits = int( $TotalVisits / $TotalUnique * 100 ) / 100; } if ( $TotalVisits > 0 ) { $RatioPages = int( $TotalPages / $TotalVisits * 100 ) / 100; } if ( $TotalVisits > 0 ) { $RatioHits = int( $TotalHits / $TotalVisits * 100 ) / 100; } if ( $TotalVisits > 0 ) { $RatioBytes = int( ( $TotalBytes / 1024 ) * 100 / ( $LogType eq 'M' ? $TotalHits : $TotalVisits ) ) / 100; } my $colspan = 5; my $w = '20'; if ( $LogType eq 'W' || $LogType eq 'S' ) { $w = '17'; $colspan = 6; } # Show first/last print ""; print "$Message[133]\n"; print( $MonthRequired eq 'all' ? "$Message[6] $YearRequired" : "$Message[5] " . $MonthNumLib{$MonthRequired} . " $YearRequired" ); print "\n"; print ""; print "$Message[8]\n"; print "" . ( $FirstTime ? Format_Date( $FirstTime, 0 ) : "NA" ) . ""; print "\n"; print ""; print "$Message[9]\n"; print "" . ( $LastTime ? Format_Date( $LastTime, 0 ) : "NA" ) . "\n"; print "\n"; # Show main indicators title row print ""; if ( $LogType eq 'W' || $LogType eq 'S' ) { print " "; } if ( $ShowSummary =~ /U/i ) { print "$Message[11]"; } else { print " "; } if ( $ShowSummary =~ /V/i ) { print "$Message[10]"; } else { print " "; } if ( $ShowSummary =~ /P/i ) { print "$Message[56]"; } else { print " "; } if ( $ShowSummary =~ /H/i ) { print "$Message[57]"; } else { print " "; } if ( $ShowSummary =~ /B/i ) { print "$Message[75]"; } else { print " "; } print "\n"; # Show main indicators values for viewed traffic print ""; if ( $LogType eq 'M' ) { print "$Message[165]"; print " 
 \n"; print " 
 \n"; if ( $ShowSummary =~ /H/i ) { print "".Format_Number($TotalHits)."" . ( $LogType eq 'M' ? "" : "
($RatioHits " . lc( $Message[57] . "/" . $Message[12] ) . ")" ) . ""; } else { print " "; } if ( $ShowSummary =~ /B/i ) { print "" . Format_Bytes( int($TotalBytes) ) . "
($RatioBytes $Message[108]/" . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] . ")"; } else { print " "; } } else { if ( $LogType eq 'W' || $LogType eq 'S' ) { print "$Message[160] *"; } if ( $ShowSummary =~ /U/i ) { print "" . ( $MonthRequired eq 'all' ? "<= ".Format_Number($TotalUnique)."
$Message[129]" : "".Format_Number($TotalUnique)."
 " ) . ""; } else { print " "; } if ( $ShowSummary =~ /V/i ) { print "".Format_Number($TotalVisits)."
($RatioVisits $Message[52])"; } else { print " "; } if ( $ShowSummary =~ /P/i ) { print "".Format_Number($TotalPages)."
($RatioPages " . $Message[56] . "/" . $Message[12] . ")"; } else { print " "; } if ( $ShowSummary =~ /H/i ) { print "".Format_Number($TotalHits)."" . ( $LogType eq 'M' ? "" : "
($RatioHits " . $Message[57] . "/" . $Message[12] . ")" ) . ""; } else { print " "; } if ( $ShowSummary =~ /B/i ) { print "" . Format_Bytes( int($TotalBytes) ) . "
($RatioBytes $Message[108]/" . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] . ")"; } else { print " "; } } print "\n"; # Show main indicators values for not viewed traffic values if ( $LogType eq 'M' || $LogType eq 'W' || $LogType eq 'S' ) { print ""; if ( $LogType eq 'M' ) { print "$Message[166]"; print " 
 \n"; print " 
 \n"; if ( $ShowSummary =~ /H/i ) { print "".Format_Number($TotalNotViewedHits).""; } else { print " "; } if ( $ShowSummary =~ /B/i ) { print "" . Format_Bytes( int($TotalNotViewedBytes) ) . ""; } else { print " "; } } else { if ( $LogType eq 'W' || $LogType eq 'S' ) { print "$Message[161] *"; } print " 
 \n"; if ( $ShowSummary =~ /P/i ) { print "".Format_Number($TotalNotViewedPages).""; } else { print " "; } if ( $ShowSummary =~ /H/i ) { print "".Format_Number($TotalNotViewedHits).""; } else { print " "; } if ( $ShowSummary =~ /B/i ) { print "" . Format_Bytes( int($TotalNotViewedBytes) ) . ""; } else { print " "; } } print "\n"; } &tab_end($LogType eq 'W' || $LogType eq 'S' ? "* $Message[159]" : "" ); } #------------------------------------------------------------------------------ # Function: Prints the Monthly section on the main page # Parameters: _ # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainMonthly{ if ($Debug) { debug( "ShowMonthStats", 2 ); } print "$Center 
\n"; my $title = "$Message[162]"; &tab_head( "$title", 0, 0, 'month' ); print "\n"; print "
\n"; my $average_nb = my $average_u = my $average_v = my $average_p = 0; my $average_h = my $average_k = 0; my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $max_v = my $max_p = my $max_h = my $max_k = 1; # Define total and max for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { my $monthix = sprintf( "%02s", $ix ); $total_u += $MonthUnique{ $YearRequired . $monthix } || 0; $total_v += $MonthVisits{ $YearRequired . $monthix } || 0; $total_p += $MonthPages{ $YearRequired . $monthix } || 0; $total_h += $MonthHits{ $YearRequired . $monthix } || 0; $total_k += $MonthBytes{ $YearRequired . $monthix } || 0; #if (($MonthUnique{$YearRequired.$monthix}||0) > $max_v) { $max_v=$MonthUnique{$YearRequired.$monthix}; } if ( ( $MonthVisits{ $YearRequired . $monthix } || 0 ) > $max_v ) { $max_v = $MonthVisits{ $YearRequired . $monthix }; } #if (($MonthPages{$YearRequired.$monthix}||0) > $max_p) { $max_p=$MonthPages{$YearRequired.$monthix}; } if ( ( $MonthHits{ $YearRequired . $monthix } || 0 ) > $max_h ) { $max_h = $MonthHits{ $YearRequired . $monthix }; } if ( ( $MonthBytes{ $YearRequired . $monthix } || 0 ) > $max_k ) { $max_k = $MonthBytes{ $YearRequired . $monthix }; } } # Define average # TODO # Show bars for month my $graphdone=0; foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { my $monthix = sprintf( "%02s", $ix ); push @blocklabel, "$MonthNumLib{$monthix}\n$YearRequired"; } my @vallabel = ( "$Message[11]", "$Message[10]", "$Message[56]", "$Message[57]", "$Message[75]" ); my @valcolor = ( "$color_u", "$color_v", "$color_p", "$color_h", "$color_k" ); my @valmax = ( $max_v, $max_v, $max_h, $max_h, $max_k ); my @valtotal = ( $total_u, $total_v, $total_p, $total_h, $total_k ); my @valaverage = (); #my @valaverage=($average_v,$average_p,$average_h,$average_k); my @valdata = (); my $xx = 0; for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { my $monthix = sprintf( "%02s", $ix ); $valdata[ $xx++ ] = $MonthUnique{ $YearRequired . $monthix } || 0; $valdata[ $xx++ ] = $MonthVisits{ $YearRequired . $monthix } || 0; $valdata[ $xx++ ] = $MonthPages{ $YearRequired . $monthix } || 0; $valdata[ $xx++ ] = $MonthHits{ $YearRequired . $monthix } || 0; $valdata[ $xx++ ] = $MonthBytes{ $YearRequired . $monthix } || 0; } my $function = "ShowGraph_$pluginname"; &$function( "$title", "month", $ShowMonthStats, \@blocklabel, \@vallabel, \@valcolor, \@valmax, \@valtotal, \@valaverage, \@valdata ); $graphdone=1; } if (! $graphdone) { print "\n"; print ""; print "\n"; for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { my $monthix = sprintf( "%02s", $ix ); my $bredde_u = 0; my $bredde_v = 0; my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; if ( $max_v > 0 ) { $bredde_u = int( ( $MonthUnique{ $YearRequired . $monthix } || 0 ) / $max_v * $BarHeight ) + 1; } if ( $max_v > 0 ) { $bredde_v = int( ( $MonthVisits{ $YearRequired . $monthix } || 0 ) / $max_v * $BarHeight ) + 1; } if ( $max_h > 0 ) { $bredde_p = int( ( $MonthPages{ $YearRequired . $monthix } || 0 ) / $max_h * $BarHeight ) + 1; } if ( $max_h > 0 ) { $bredde_h = int( ( $MonthHits{ $YearRequired . $monthix } || 0 ) / $max_h * $BarHeight ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( ( $MonthBytes{ $YearRequired . $monthix } || 0 ) / $max_k * $BarHeight ) + 1; } print "\n"; } print ""; print "\n"; # Show lib for month print ""; #if (!$StaticLinks) { # print ""; #} #else { print ""; # } for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { my $monthix = sprintf( "%02s", $ix ); # if (!$StaticLinks) { # print ""; # } # else { print ""; # } } # if (!$StaticLinks) { # print ""; # } # else { print ""; # } print "\n"; print "
 "; if ( $ShowMonthStats =~ /U/i ) { print ""; } if ( $ShowMonthStats =~ /V/i ) { print ""; } if ( $ShowMonthStats =~ /P/i ) { print ""; } if ( $ShowMonthStats =~ /H/i ) { print ""; } if ( $ShowMonthStats =~ /B/i ) { print ""; } print " 
<< $MonthNumLib{$monthix}
$YearRequired
" . ( !$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ); print "$MonthNumLib{$monthix}
$YearRequired"; print( !$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '
' : '' ); print "
>> 
\n"; } print "
\n"; # Show data array for month if ($AddDataArrayMonthStats) { print "\n"; print ""; if ( $ShowMonthStats =~ /U/i ) { print ""; } if ( $ShowMonthStats =~ /V/i ) { print ""; } if ( $ShowMonthStats =~ /P/i ) { print ""; } if ( $ShowMonthStats =~ /H/i ) { print ""; } if ( $ShowMonthStats =~ /B/i ) { print ""; } print "\n"; for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { my $monthix = sprintf( "%02s", $ix ); print ""; print ""; if ( $ShowMonthStats =~ /U/i ) { print ""; } if ( $ShowMonthStats =~ /V/i ) { print ""; } if ( $ShowMonthStats =~ /P/i ) { print ""; } if ( $ShowMonthStats =~ /H/i ) { print ""; } if ( $ShowMonthStats =~ /B/i ) { print ""; } print "\n"; } # Average row # TODO # Total row print ""; if ( $ShowMonthStats =~ /U/i ) { print ""; } if ( $ShowMonthStats =~ /V/i ) { print ""; } if ( $ShowMonthStats =~ /P/i ) { print ""; } if ( $ShowMonthStats =~ /H/i ) { print ""; } if ( $ShowMonthStats =~ /B/i ) { print ""; } print "\n"; print "
$Message[5]$Message[11]$Message[10]$Message[56]$Message[57]$Message[75]
" . ( !$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ); print "$MonthNumLib{$monthix} $YearRequired"; print( !$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ); print "", Format_Number($MonthUnique{ $YearRequired . $monthix } ? $MonthUnique{ $YearRequired . $monthix } : "0"), "", Format_Number($MonthVisits{ $YearRequired . $monthix } ? $MonthVisits{ $YearRequired . $monthix } : "0"), "", Format_Number($MonthPages{ $YearRequired . $monthix } ? $MonthPages{ $YearRequired . $monthix } : "0"), "", Format_Number($MonthHits{ $YearRequired . $monthix } ? $MonthHits{ $YearRequired . $monthix } : "0"), "", Format_Bytes( int( $MonthBytes{ $YearRequired . $monthix } || 0 ) ), "
$Message[102]".Format_Number($total_u)."".Format_Number($total_v)."".Format_Number($total_p)."".Format_Number($total_h)."" . Format_Bytes($total_k) . "
\n
\n"; } print "
\n"; print "\n"; &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the Daily section on the main page # Parameters: $firstdaytocountaverage, $lastdaytocountaverage # $firstdaytoshowtime, $lastdaytoshowtime # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainDaily{ my $firstdaytocountaverage = shift; my $lastdaytocountaverage = shift; my $firstdaytoshowtime = shift; my $lastdaytoshowtime = shift; if ($Debug) { debug( "ShowDaysOfMonthStats", 2 ); } print "$Center 
\n"; my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)year=[^&]*//i; $NewLinkParams =~ s/(^|&|&)month=[^&]*//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } my $NewLinkTarget = ''; if ( $FrameName eq 'mainright' ) { $NewLinkTarget = " target=\"_parent\""; } my $title = "$Message[138]"; if ($AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( "$title", 0, 0, 'daysofmonth' ); print ""; print "\n"; print "
\n"; my $average_v = my $average_p = 0; my $average_h = my $average_k = 0; my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $max_v = my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next $total_v += $DayVisits{ $year . $month . $day } || 0; $total_p += $DayPages{ $year . $month . $day } || 0; $total_h += $DayHits{ $year . $month . $day } || 0; $total_k += $DayBytes{ $year . $month . $day } || 0; if ( ( $DayVisits{ $year . $month . $day } || 0 ) > $max_v ) { $max_v = $DayVisits{ $year . $month . $day }; } #if (($DayPages{$year.$month.$day}||0) > $max_p) { $max_p=$DayPages{$year.$month.$day}; } if ( ( $DayHits{ $year . $month . $day } || 0 ) > $max_h ) { $max_h = $DayHits{ $year . $month . $day }; } if ( ( $DayBytes{ $year . $month . $day } || 0 ) > $max_k ) { $max_k = $DayBytes{ $year . $month . $day }; } } $average_v = sprintf( "%.2f", $AverageVisits ); $average_p = sprintf( "%.2f", $AveragePages ); $average_h = sprintf( "%.2f", $AverageHits ); $average_k = sprintf( "%.2f", $AverageBytes ); # Show bars for day my $graphdone=0; foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next my $bold = ( $day == $nowday && $month == $nowmonth && $year == $nowyear ? ':' : '' ); my $weekend = ( DayOfWeek( $day, $month, $year ) =~ /[06]/ ? '!' : '' ); push @blocklabel, "$day\n$MonthNumLib{$month}$weekend$bold"; } my @vallabel = ( "$Message[10]", "$Message[56]", "$Message[57]", "$Message[75]" ); my @valcolor = ( "$color_v", "$color_p", "$color_h", "$color_k" ); my @valmax = ( $max_v, $max_h, $max_h, $max_k ); my @valtotal = ( $total_v, $total_p, $total_h, $total_k ); my @valaverage = ( $average_v, $average_p, $average_h, $average_k ); my @valdata = (); my $xx = 0; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next $valdata[ $xx++ ] = $DayVisits{ $year . $month . $day } || 0; $valdata[ $xx++ ] = $DayPages{ $year . $month . $day } || 0; $valdata[ $xx++ ] = $DayHits{ $year . $month . $day } || 0; $valdata[ $xx++ ] = $DayBytes{ $year . $month . $day } || 0; } my $function = "ShowGraph_$pluginname"; &$function( "$title", "daysofmonth", $ShowDaysOfMonthStats, \@blocklabel, \@vallabel, \@valcolor, \@valmax, \@valtotal, \@valaverage, \@valdata ); $graphdone=1; } # If graph was not printed by a plugin if (! $graphdone) { print "\n"; print "\n"; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next my $bredde_v = 0; my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; if ( $max_v > 0 ) { $bredde_v = int( ( $DayVisits{ $year . $month . $day } || 0 ) / $max_v * $BarHeight ) + 1; } if ( $max_h > 0 ) { $bredde_p = int( ( $DayPages{ $year . $month . $day } || 0 ) / $max_h * $BarHeight ) + 1; } if ( $max_h > 0 ) { $bredde_h = int( ( $DayHits{ $year . $month . $day } || 0 ) / $max_h * $BarHeight ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( ( $DayBytes{ $year . $month . $day } || 0 ) / $max_k * $BarHeight ) + 1; } print "\n"; } print ""; # Show average value bars print "\n"; print "\n"; # Show lib for day print ""; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next my $dayofweekcursor = DayOfWeek( $day, $month, $year ); print ""; print( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ); print "$day
" . $MonthNumLib{$month} . ""; print( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '
' : '' ); print "\n"; } print "
"; print "\n"; print "\n"; print "
"; if ( $ShowDaysOfMonthStats =~ /V/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /P/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /H/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /B/i ) { print ""; } print " "; my $bredde_v = 0; my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; if ( $max_v > 0 ) { $bredde_v = int( $average_v / $max_v * $BarHeight ) + 1; } if ( $max_h > 0 ) { $bredde_p = int( $average_p / $max_h * $BarHeight ) + 1; } if ( $max_h > 0 ) { $bredde_h = int( $average_h / $max_h * $BarHeight ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( $average_k / $max_k * $BarHeight ) + 1; } $average_v = sprintf( "%.2f", $average_v ); $average_p = sprintf( "%.2f", $average_p ); $average_h = sprintf( "%.2f", $average_h ); $average_k = sprintf( "%.2f", $average_k ); if ( $ShowDaysOfMonthStats =~ /V/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /P/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /H/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /B/i ) { print ""; } print "
 $Message[96]
\n"; } print "
\n"; # Show data array for days if ($AddDataArrayShowDaysOfMonthStats) { print "\n"; print ""; if ( $ShowDaysOfMonthStats =~ /V/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /P/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /H/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /B/i ) { print ""; } print ""; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next my $dayofweekcursor = DayOfWeek( $day, $month, $year ); print ""; print ""; if ( $ShowDaysOfMonthStats =~ /V/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /P/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /H/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /B/i ) { print ""; } print "\n"; } # Average row print ""; if ( $ShowDaysOfMonthStats =~ /V/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /P/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /H/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /B/i ) { print ""; } print "\n"; # Total row print ""; if ( $ShowDaysOfMonthStats =~ /V/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /P/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /H/i ) { print ""; } if ( $ShowDaysOfMonthStats =~ /B/i ) { print ""; } print "\n"; print "
$Message[4]$Message[10]$Message[56]$Message[57]$Message[75]
" . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ); print Format_Date( "$year$month$day" . "000000", 2 ); print( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ); print "", Format_Number($DayVisits{ $year . $month . $day } ? $DayVisits{ $year . $month . $day } : "0"), "", Format_Number($DayPages{ $year . $month . $day } ? $DayPages{ $year . $month . $day } : "0"), "", Format_Number($DayHits{ $year . $month . $day } ? $DayHits{ $year . $month . $day } : "0"), "", Format_Bytes( int( $DayBytes{ $year . $month . $day } || 0 ) ), "
$Message[96]".Format_Number(int($average_v))."".Format_Number(int($average_p))."".Format_Number(int($average_h))."".Format_Bytes(int($average_k))."
$Message[102]".Format_Number($total_v)."".Format_Number($total_p)."".Format_Number($total_h)."" . Format_Bytes($total_k) . "
\n
"; } print "
\n"; print "\n"; &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the Days of the Week section on the main page # Parameters: $firstdaytocountaverage, $lastdaytocountaverage # Input: _ # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainDaysofWeek{ my $firstdaytocountaverage = shift; my $lastdaytocountaverage = shift; my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowDaysOfWeekStats", 2 ); } print "$Center 
\n"; my $title = "$Message[91]"; &tab_head( "$title", 18, 0, 'daysofweek' ); print ""; print ""; print "
\n"; my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 # Get average value for day of week my @avg_dayofweek_nb = (); my @avg_dayofweek_p = (); my @avg_dayofweek_h = (); my @avg_dayofweek_k = (); foreach my $daycursor ( $firstdaytocountaverage .. $lastdaytocountaverage ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next my $dayofweekcursor = DayOfWeek( $day, $month, $year ); $avg_dayofweek_nb[$dayofweekcursor] ++; # Increase number of day used to count for this day of week $avg_dayofweek_p[$dayofweekcursor] += ( $DayPages{$daycursor} || 0 ); $avg_dayofweek_h[$dayofweekcursor] += ( $DayHits{$daycursor} || 0 ); $avg_dayofweek_k[$dayofweekcursor] += ( $DayBytes{$daycursor} || 0 ); } for (@DOWIndex) { if ( $avg_dayofweek_nb[$_] ) { $avg_dayofweek_p[$_] = $avg_dayofweek_p[$_] / $avg_dayofweek_nb[$_]; $avg_dayofweek_h[$_] = $avg_dayofweek_h[$_] / $avg_dayofweek_nb[$_]; $avg_dayofweek_k[$_] = $avg_dayofweek_k[$_] / $avg_dayofweek_nb[$_]; #if ($avg_dayofweek_p[$_] > $max_p) { $max_p = $avg_dayofweek_p[$_]; } if ( $avg_dayofweek_h[$_] > $max_h ) { $max_h = $avg_dayofweek_h[$_]; } if ( $avg_dayofweek_k[$_] > $max_k ) { $max_k = $avg_dayofweek_k[$_]; } } else { $avg_dayofweek_p[$_] = "?"; $avg_dayofweek_h[$_] = "?"; $avg_dayofweek_k[$_] = "?"; } } # Show bars for days of week my $graphdone=0; foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); for (@DOWIndex) { push @blocklabel, ( $Message[ $_ + 84 ] . ( $_ =~ /[06]/ ? "!" : "" ) ); } my @vallabel = ( "$Message[56]", "$Message[57]", "$Message[75]" ); my @valcolor = ( "$color_p", "$color_h", "$color_k" ); my @valmax = ( int($max_h), int($max_h), int($max_k) ); my @valtotal = ( $TotalPages, $TotalHits, $TotalBytes ); # TEMP my $average_p = my $average_h = my $average_k = 0; $average_p = sprintf( "%.2f", $AveragePages ); $average_h = sprintf( "%.2f", $AverageHits ); $average_k = ( int($average_k) ? Format_Bytes( sprintf( "%.2f", $AverageBytes ) ) : "0.00" ); my @valaverage = ( $average_p, $average_h, $average_k ); my @valdata = (); my $xx = 0; for (@DOWIndex) { $valdata[ $xx++ ] = $avg_dayofweek_p[$_] || 0; $valdata[ $xx++ ] = $avg_dayofweek_h[$_] || 0; $valdata[ $xx++ ] = $avg_dayofweek_k[$_] || 0; # Round to be ready to show array $avg_dayofweek_p[$_] = sprintf( "%.2f", $avg_dayofweek_p[$_] ); $avg_dayofweek_h[$_] = sprintf( "%.2f", $avg_dayofweek_h[$_] ); $avg_dayofweek_k[$_] = sprintf( "%.2f", $avg_dayofweek_k[$_] ); # Remove decimal part that are .0 if ( $avg_dayofweek_p[$_] == int( $avg_dayofweek_p[$_] ) ) { $avg_dayofweek_p[$_] = int( $avg_dayofweek_p[$_] ); } if ( $avg_dayofweek_h[$_] == int( $avg_dayofweek_h[$_] ) ) { $avg_dayofweek_h[$_] = int( $avg_dayofweek_h[$_] ); } } my $function = "ShowGraph_$pluginname"; &$function( "$title", "daysofweek", $ShowDaysOfWeekStats, \@blocklabel, \@vallabel, \@valcolor, \@valmax, \@valtotal, \@valaverage, \@valdata ); $graphdone=1; } if (! $graphdone) { print "\n"; print "\n"; for (@DOWIndex) { my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; if ( $max_h > 0 ) { $bredde_p = int( ( $avg_dayofweek_p[$_] ne '?' ? $avg_dayofweek_p[$_] : 0 ) / $max_h * $BarHeight ) + 1; } if ( $max_h > 0 ) { $bredde_h = int( ( $avg_dayofweek_h[$_] ne '?' ? $avg_dayofweek_h[$_] : 0 ) / $max_h * $BarHeight ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( ( $avg_dayofweek_k[$_] ne '?' ? $avg_dayofweek_k[$_] : 0 ) / $max_k * $BarHeight ) + 1; } $avg_dayofweek_p[$_] = sprintf( "%.2f", ( $avg_dayofweek_p[$_] ne '?' ? $avg_dayofweek_p[$_] : 0 ) ); $avg_dayofweek_h[$_] = sprintf( "%.2f", ( $avg_dayofweek_h[$_] ne '?' ? $avg_dayofweek_h[$_] : 0 ) ); $avg_dayofweek_k[$_] = sprintf( "%.2f", ( $avg_dayofweek_k[$_] ne '?' ? $avg_dayofweek_k[$_] : 0 ) ); # Remove decimal part that are .0 if ( $avg_dayofweek_p[$_] == int( $avg_dayofweek_p[$_] ) ) { $avg_dayofweek_p[$_] = int( $avg_dayofweek_p[$_] ); } if ( $avg_dayofweek_h[$_] == int( $avg_dayofweek_h[$_] ) ) { $avg_dayofweek_h[$_] = int( $avg_dayofweek_h[$_] ); } print "\n"; } print "\n"; print "\n"; for (@DOWIndex) { print "" . ( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ? '' : '' ); print $Message[ $_ + 84 ]; print( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ? '' : '' ); print ""; } print "\n
"; if ( $ShowDaysOfWeekStats =~ /P/i ) { print ""; } if ( $ShowDaysOfWeekStats =~ /H/i ) { print ""; } if ( $ShowDaysOfWeekStats =~ /B/i ) { print ""; } print "
\n"; } print "
\n"; # Show data array for days of week if ($AddDataArrayShowDaysOfWeekStats) { print "\n"; print ""; if ( $ShowDaysOfWeekStats =~ /P/i ) { print ""; } if ( $ShowDaysOfWeekStats =~ /H/i ) { print ""; } if ( $ShowDaysOfWeekStats =~ /B/i ) { print ""; } for (@DOWIndex) { print ""; print ""; if ( $ShowDaysOfWeekStats =~ /P/i ) { print ""; } if ( $ShowDaysOfWeekStats =~ /H/i ) { print ""; } if ( $ShowDaysOfWeekStats =~ /B/i ) { print ""; } print "\n"; } print "
$Message[4]$Message[56]$Message[57]$Message[75]
" . ( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ? '' : '' ); print $Message[ $_ + 84 ]; print( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ? '' : '' ); print "", Format_Number(int($avg_dayofweek_p[$_])), "", Format_Number(int($avg_dayofweek_h[$_])), "", Format_Bytes(int($avg_dayofweek_k[$_])), "
\n
\n"; } print "
"; print "\n"; &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the Downloads chart and table # Parameters: - # Input: $NewLinkParams, $NewLinkTarget # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainDownloads{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowDownloadStats", 2 ); } my $regext = qr/\.(\w{1,6})$/; print "$Center 
\n"; my $Totalh = 0; if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined my $title = "$Message[178] ($Message[77] $MaxNbOf{'DownloadsShown'})   -   $Message[80]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( "$title", 0, 0, 'downloads' ); my $cnt=0; for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ $Totalh += $_downloads{$u}->{'AWSTATS_HITS'}; $cnt++; if ($cnt > 4){last;} } # Graph the top five in a pie chart if (scalar keys %_downloads > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ push @valdata, ($_downloads{$u}->{'AWSTATS_HITS'} / $Totalh * 1000 ) / 10; push @blocklabel, Get_Filename($u); $cnt++; if ($cnt > 4) { last; } } my $columns = 2; if ($ShowDownloadsStats =~ /H/i){$columns += length($ShowDownloadsStats)+1;} else{$columns += length($ShowDownloadsStats);} print ""; my $function = "ShowGraph_$pluginname"; &$function( "$Message[80]", "downloads", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata ); print ""; } } my $total_dls = scalar keys %_downloads; print "$Message[178]: $total_dls"; if ( $ShowDownloadsStats =~ /H/i ){print "$Message[57]" ."206 $Message[57]"; } if ( $ShowDownloadsStats =~ /B/i ){ print "$Message[75]"; print "$Message[106]"; } print "\n"; my $count = 0; for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ print ""; my $ext = Get_Extension($regext, $u); if ( !$ext) { print ""; } else { my $nameicon = $MimeHashLib{$ext}[0] || "notavailable"; my $nametype = $MimeHashFamily{$MimeHashLib{$ext}[0]} || " "; print ""; } print ""; &HTMLShowURLInfo($u); print ""; if ( $ShowDownloadsStats =~ /H/i ){ print "".Format_Number($_downloads{$u}->{'AWSTATS_HITS'}).""; print "".Format_Number($_downloads{$u}->{'AWSTATS_206'}).""; } if ( $ShowDownloadsStats =~ /B/i ){ print "".Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'}).""; print "".Format_Bytes(($_downloads{$u}->{'AWSTATS_SIZE'}/ ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'}))).""; } print "\n"; $count++; if ($count >= $MaxNbOf{'DownloadsShown'}){last;} } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the hours chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainHours{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowHoursStats", 2 ); } print "$Center 
\n"; my $title = "$Message[20]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } if ( $PluginsLoaded{'GetTimeZoneTitle'}{'timezone'} ) { $title .= " (GMT " . ( GetTimeZoneTitle_timezone() >= 0 ? "+" : "" ) . int( GetTimeZoneTitle_timezone() ) . ")"; } &tab_head( "$title", 19, 0, 'hours' ); print "\n"; print "
\n"; my $max_h = my $max_k = 1; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { #if ($_time_p[$ix]>$max_p) { $max_p=$_time_p[$ix]; } if ( $_time_h[$ix] > $max_h ) { $max_h = $_time_h[$ix]; } if ( $_time_k[$ix] > $max_k ) { $max_k = $_time_k[$ix]; } } # Show bars for hour my $graphdone=0; foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = ( 0 .. 23 ); my @vallabel = ( "$Message[56]", "$Message[57]", "$Message[75]" ); my @valcolor = ( "$color_p", "$color_h", "$color_k" ); my @valmax = ( int($max_h), int($max_h), int($max_k) ); my @valtotal = ( $TotalPages, $TotalHits, $TotalBytes ); my @valaverage = ( $AveragePages, $AverageHits, $AverageBytes ); my @valdata = (); my $xx = 0; for ( 0 .. 23 ) { $valdata[ $xx++ ] = $_time_p[$_] || 0; $valdata[ $xx++ ] = $_time_h[$_] || 0; $valdata[ $xx++ ] = $_time_k[$_] || 0; } my $function = "ShowGraph_$pluginname"; &$function( "$title", "hours", $ShowHoursStats, \@blocklabel, \@vallabel, \@valcolor, \@valmax, \@valtotal, \@valaverage, \@valdata ); $graphdone=1; } if (! $graphdone) { print "\n"; print "\n"; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; if ( $max_h > 0 ) { $bredde_p = int( $BarHeight * $_time_p[$ix] / $max_h ) + 1; } if ( $max_h > 0 ) { $bredde_h = int( $BarHeight * $_time_h[$ix] / $max_h ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( $BarHeight * $_time_k[$ix] / $max_k ) + 1; } print "\n"; } print "\n"; # Show hour lib print ""; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { print "\n" ; # width=19 instead of 18 to avoid a MacOS browser bug. } print "\n"; # Show clock icon print "\n"; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { my $hrs = ( $ix >= 12 ? $ix - 12 : $ix ); my $hre = ( $ix >= 12 ? $ix - 11 : $ix + 1 ); my $apm = ( $ix >= 12 ? "pm" : "am" ); print "\n"; } print "\n"; print "
"; if ( $ShowHoursStats =~ /P/i ) { print ""; } if ( $ShowHoursStats =~ /H/i ) { print ""; } if ( $ShowHoursStats =~ /B/i ) { print ""; } print "
$ix
\"$hrs:00
\n"; } print "
\n"; # Show data array for hours if ($AddDataArrayShowHoursStats) { print "\n"; print ""; print ""; print "
\n"; print "\n"; print ""; if ( $ShowHoursStats =~ /P/i ) { print ""; } if ( $ShowHoursStats =~ /H/i ) { print ""; } if ( $ShowHoursStats =~ /B/i ) { print ""; } print ""; for ( my $ix = 0 ; $ix <= 11 ; $ix++ ) { my $monthix = ( $ix < 10 ? "0$ix" : "$ix" ); print ""; print ""; if ( $ShowHoursStats =~ /P/i ) { print ""; } if ( $ShowHoursStats =~ /H/i ) { print ""; } if ( $ShowHoursStats =~ /B/i ) { print ""; } print "\n"; } print "
$Message[20]$Message[56]$Message[57]$Message[75]
$monthix", Format_Number($_time_p[$monthix] ? $_time_p[$monthix] : "0"), "", Format_Number($_time_h[$monthix] ? $_time_h[$monthix] : "0"), "", Format_Bytes( int( $_time_k[$monthix] ) ), "
\n"; print "
 
\n"; print "\n"; print ""; if ( $ShowHoursStats =~ /P/i ) { print ""; } if ( $ShowHoursStats =~ /H/i ) { print ""; } if ( $ShowHoursStats =~ /B/i ) { print ""; } print "\n"; for ( my $ix = 12 ; $ix <= 23 ; $ix++ ) { my $monthix = ( $ix < 10 ? "0$ix" : "$ix" ); print ""; print ""; if ( $ShowHoursStats =~ /P/i ) { print ""; } if ( $ShowHoursStats =~ /H/i ) { print ""; } if ( $ShowHoursStats =~ /B/i ) { print ""; } print "\n"; } print "
$Message[20]$Message[56]$Message[57]$Message[75]
$monthix", Format_Number($_time_p[$monthix] ? $_time_p[$monthix] : "0"), "", Format_Number($_time_h[$monthix] ? $_time_h[$monthix] : "0"), "", Format_Bytes( int( $_time_k[$monthix] ) ), "
\n"; print "
\n"; print "
\n"; } print "
\n"; &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the countries chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainCountries{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowDomainsStats", 2 ); } print "$Center 
\n"; my $title = "$Message[25] ($Message[77] $MaxNbOf{'Domain'})   -   $Message[80]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'countries' ); my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $max_h = 1; foreach ( values %_domener_h ) { if ( $_ > $max_h ) { $max_h = $_; } } my $max_k = 1; foreach ( values %_domener_k ) { if ( $_ > $max_k ) { $max_k = $_; } } my $count = 0; &BuildKeyList( $MaxNbOf{'Domain'}, $MinHit{'Domain'}, \%_domener_h, \%_domener_p ); # print the map if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my $cnt = 0; foreach my $key (@keylist) { push @valdata, int( $_domener_h{$key} ); push @blocklabel, $DomainsHashIDLib{$key}; $cnt++; if ($cnt > 99) { last; } } print ""; my $function = "ShowGraph_$pluginname"; &$function( "AWStatsCountryMap", "countries_map", 0, \@blocklabel, 0, 0, 0, 0, 0, \@valdata ); print ""; } } print " $Message[17]"; ## to add unique visitors and number of visits by calculation of average of the relation with total ## pages and total hits, and total visits and total unique ## by Josep Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { print "$Message[11]"; } if ( $ShowDomainsStats =~ /V/i ) { print "$Message[10]"; } if ( $ShowDomainsStats =~ /P/i ) { print "$Message[56]"; } if ( $ShowDomainsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowDomainsStats =~ /B/i ) { print "$Message[75]"; } print " "; print "\n"; foreach my $key (@keylist) { my ( $_domener_u, $_domener_v ); my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; my $bredde_u = 0; my $bredde_v = 0; if ( $max_h > 0 ) { $bredde_p = int( $BarWidth * $_domener_p{$key} / $max_h ) + 1; } # use max_h to enable to compare pages with hits if ( $_domener_p{$key} && $bredde_p == 1 ) { $bredde_p = 2; } if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * $_domener_h{$key} / $max_h ) + 1; } if ( $_domener_h{$key} && $bredde_h == 1 ) { $bredde_h = 2; } if ( $max_k > 0 ) { $bredde_k = int( $BarWidth * ( $_domener_k{$key} || 0 ) / $max_k ) + 1; } if ( $_domener_k{$key} && $bredde_k == 1 ) { $bredde_k = 2; } my $newkey = lc($key); if ( $newkey eq 'ip' || !$DomainsHashIDLib{$newkey} ) { print "$Message[0]$newkey"; } else { print "$DomainsHashIDLib{$newkey}$newkey"; } ## to add unique visitors and number of visits, by Josep Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { $_domener_u = ( $_domener_p{$key} ? $_domener_p{$key} / $TotalPages : 0 ); $_domener_u += ( $_domener_h{$key} / $TotalHits ); $_domener_u = sprintf( "%.0f", ( $_domener_u * $TotalUnique ) / 2 ); print "".Format_Number($_domener_u)." (" . sprintf( "%.1f%", $TotalUnique ? 100 * $_domener_u / $TotalUnique : 0 ) . ")"; } if ( $ShowDomainsStats =~ /V/i ) { $_domener_v = ( $_domener_p{$key} ? $_domener_p{$key} / $TotalPages : 0 ); $_domener_v += ( $_domener_h{$key} / $TotalHits ); $_domener_v = sprintf( "%.0f", ( $_domener_v * $TotalVisits ) / 2 ); print "".Format_Number($_domener_v)." (" . sprintf( "%.1f%", $TotalVisits ? 100 * $_domener_v / $TotalVisits : 0 ) . ")"; } if ( $ShowDomainsStats =~ /P/i ) { print "" . ( $_domener_p{$key} ? Format_Number($_domener_p{$key}) : ' ' ) . ""; } if ( $ShowDomainsStats =~ /H/i ) { print "".Format_Number($_domener_h{$key}).""; } if ( $ShowDomainsStats =~ /B/i ) { print "" . Format_Bytes( $_domener_k{$key} ) . ""; } print ""; if ( $ShowDomainsStats =~ /P/i ) { print "
\n"; } if ( $ShowDomainsStats =~ /H/i ) { print "
\n"; } if ( $ShowDomainsStats =~ /B/i ) { print ""; } print ""; print "\n"; $total_u += $_domener_u; $total_v += $_domener_v; $total_p += $_domener_p{$key}; $total_h += $_domener_h{$key}; $total_k += $_domener_k{$key} || 0; $count++; } my $rest_u = $TotalUnique - $total_u; my $rest_v = $TotalVisits - $total_v; my $rest_p = $TotalPages - $total_p; my $rest_h = $TotalHits - $total_h; my $rest_k = $TotalBytes - $total_k; if ( $rest_u > 0 || $rest_v > 0 || $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other domains (known or not) print " $Message[2]"; if ( $ShowDomainsStats =~ /U/i ) { print "$rest_u"; } if ( $ShowDomainsStats =~ /V/i ) { print "$rest_v"; } if ( $ShowDomainsStats =~ /P/i ) { print "$rest_p"; } if ( $ShowDomainsStats =~ /H/i ) { print "$rest_h"; } if ( $ShowDomainsStats =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } print " "; print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the hosts chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainHosts{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowHostsStats", 2 ); } print "$Center 
\n"; my $title = "$Message[81] ($Message[77] $MaxNbOf{'HostsShown'})   -   $Message[80]   -   $Message[9]   -   $Message[45]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'visitors' ); &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; foreach my $key (@keylist) { push @valdata, int( $_host_h{$key} / $TotalHits * 1000 ) / 10; push @blocklabel, "$key"; $cnt++; if ($cnt > 4) { last; } } print ""; my $function = "ShowGraph_$pluginname"; &$function( "Hosts", "hosts", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata ); print ""; } } print ""; print ""; if ( $MonthRequired ne 'all' ) { print "$Message[81] : ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1]
".Format_Number($TotalUnique)." $Message[11]"; } else { print "$Message[81] : " . ( scalar keys %_host_h ) . ""; } &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { print "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { print "$Message[75]"; } if ( $ShowHostsStats =~ /L/i ) { print "$Message[9]"; } print "\n"; my $total_p = my $total_h = my $total_k = 0; my $count = 0; foreach my $key (@keylist) { print ""; print "$key"; &HTMLShowHostInfo($key); if ( $ShowHostsStats =~ /P/i ) { print '' . ( Format_Number($_host_p{$key}) || " " ) . ''; } if ( $ShowHostsStats =~ /H/i ) { print "".Format_Number($_host_h{$key}).""; } if ( $ShowHostsStats =~ /B/i ) { print '' . Format_Bytes( $_host_k{$key} ) . ''; } if ( $ShowHostsStats =~ /L/i ) { print '' . ( $_host_l{$key} ? Format_Date( $_host_l{$key}, 1 ) : '-' ) . ''; } print "\n"; $total_p += $_host_p{$key}; $total_h += $_host_h{$key}; $total_k += $_host_k{$key} || 0; $count++; } my $rest_p = $TotalPages - $total_p; my $rest_h = $TotalHits - $total_h; my $rest_k = $TotalBytes - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other visitors (known or not) print ""; print "$Message[2]"; &HTMLShowHostInfo(''); if ( $ShowHostsStats =~ /P/i ) { print "".Format_Number($rest_p).""; } if ( $ShowHostsStats =~ /H/i ) { print "".Format_Number($rest_h).""; } if ( $ShowHostsStats =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } if ( $ShowHostsStats =~ /L/i ) { print " "; } print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the logins chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainLogins{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowAuthenticatedUsers", 2 ); } print "$Center 
\n"; my $title = "$Message[94] ($Message[77] $MaxNbOf{'LoginShown'})   -   $Message[80]"; if ( $ShowAuthenticatedUsers =~ /L/i ) { $title .= "   -   $Message[9]"; } &tab_head( "$title", 19, 0, 'logins' ); print "$Message[94] : " . Format_Number(( scalar keys %_login_h )) . ""; &HTMLShowUserInfo('__title__'); if ( $ShowAuthenticatedUsers =~ /P/i ) { print "$Message[56]"; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print "$Message[57]"; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print "$Message[75]"; } if ( $ShowAuthenticatedUsers =~ /L/i ) { print "$Message[9]"; } print "\n"; my $total_p = my $total_h = my $total_k = 0; my $max_h = 1; foreach ( values %_login_h ) { if ( $_ > $max_h ) { $max_h = $_; } } my $max_k = 1; foreach ( values %_login_k ) { if ( $_ > $max_k ) { $max_k = $_; } } my $count = 0; &BuildKeyList( $MaxNbOf{'LoginShown'}, $MinHit{'Login'}, \%_login_h, \%_login_p ); foreach my $key (@keylist) { my $bredde_p = 0; my $bredde_h = 0; my $bredde_k = 0; if ( $max_h > 0 ) { $bredde_p = int( $BarWidth * $_login_p{$key} / $max_h ) + 1; } # use max_h to enable to compare pages with hits if ( $max_h > 0 ) { $bredde_h = int( $BarWidth * $_login_h{$key} / $max_h ) + 1; } if ( $max_k > 0 ) { $bredde_k = int( $BarWidth * $_login_k{$key} / $max_k ) + 1; } print "$key"; &HTMLShowUserInfo($key); if ( $ShowAuthenticatedUsers =~ /P/i ) { print "" . ( $_login_p{$key} ? Format_Number($_login_p{$key}) : " " ) . ""; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print "".Format_Number($_login_h{$key}).""; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print "" . Format_Bytes( $_login_k{$key} ) . ""; } if ( $ShowAuthenticatedUsers =~ /L/i ) { print "" . ( $_login_l{$key} ? Format_Date( $_login_l{$key}, 1 ) : '-' ) . ""; } print "\n"; $total_p += $_login_p{$key}; $total_h += $_login_h{$key}; $total_k += $_login_k{$key}; $count++; } my $rest_p = $TotalPages - $total_p; my $rest_h = $TotalHits - $total_h; my $rest_k = $TotalBytes - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other logins print "" . ( $PageDir eq 'rtl' ? "" : "" ) . "$Message[125]" . ( $PageDir eq 'rtl' ? "" : "" ) . ""; &HTMLShowUserInfo(''); if ( $ShowAuthenticatedUsers =~ /P/i ) { print "" . ( $rest_p ? Format_Number($rest_p) : " " ) . ""; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print "".Format_Number($rest_h).""; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print "" . Format_Bytes($rest_k) . ""; } if ( $ShowAuthenticatedUsers =~ /L/i ) { print " "; } print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the robots chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainRobots{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowRobotStats", 2 ); } print "$Center 
\n"; my $title = "$Message[53] ($Message[77] $MaxNbOf{'RobotShown'})   -   $Message[80]   -   $Message[9]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title = "$title   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'robots'); print "" . Format_Number(( scalar keys %_robot_h )) . " $Message[51]*"; if ( $ShowRobotsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowRobotsStats =~ /B/i ) { print "$Message[75]"; } if ( $ShowRobotsStats =~ /L/i ) { print "$Message[9]"; } print "\n"; my $total_p = my $total_h = my $total_k = my $total_r = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'RobotShown'}, $MinHit{'Robot'}, \%_robot_h, \%_robot_h ); foreach my $key (@keylist) { print "" . ( $PageDir eq 'rtl' ? "" : "" ) . ( $RobotsHashIDLib{$key} ? $RobotsHashIDLib{$key} : $key ) . ( $PageDir eq 'rtl' ? "" : "" ) . ""; if ( $ShowRobotsStats =~ /H/i ) { print "" . Format_Number(( $_robot_h{$key} - $_robot_r{$key} )) . ( $_robot_r{$key} ? "+$_robot_r{$key}" : "" ) . ""; } if ( $ShowRobotsStats =~ /B/i ) { print "" . Format_Bytes( $_robot_k{$key} ) . ""; } if ( $ShowRobotsStats =~ /L/i ) { print "" . ( $_robot_l{$key} ? Format_Date( $_robot_l{$key}, 1 ) : '-' ) . ""; } print "\n"; #$total_p += $_robot_p{$key}; $total_h += $_robot_h{$key}; $total_k += $_robot_k{$key} || 0; $total_r += $_robot_r{$key} || 0; $count++; } # For bots we need to count Totals my $TotalPagesRobots = 0; #foreach (values %_robot_p) { $TotalPagesRobots+=$_; } my $TotalHitsRobots = 0; foreach ( values %_robot_h ) { $TotalHitsRobots += $_; } my $TotalBytesRobots = 0; foreach ( values %_robot_k ) { $TotalBytesRobots += $_; } my $TotalRRobots = 0; foreach ( values %_robot_r ) { $TotalRRobots += $_; } my $rest_p = 0; #$rest_p=$TotalPagesRobots-$total_p; my $rest_h = $TotalHitsRobots - $total_h; my $rest_k = $TotalBytesRobots - $total_k; my $rest_r = $TotalRRobots - $total_r; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 || $rest_r > 0 ) { # All other robots print "$Message[2]"; if ( $ShowRobotsStats =~ /H/i ) { print "" . Format_Number(( $rest_h - $rest_r )) . ( $rest_r ? "+$rest_r" : "" ) . ""; } if ( $ShowRobotsStats =~ /B/i ) { print "" . ( Format_Bytes($rest_k) ) . ""; } if ( $ShowRobotsStats =~ /L/i ) { print " "; } print "\n"; } &tab_end( "* $Message[156]" . ( $TotalRRobots ? " $Message[157]" : "" ) ); } #------------------------------------------------------------------------------ # Function: Prints the worms chart and table # Parameters: - # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainWorms{ if ($Debug) { debug( "ShowWormsStats", 2 ); } print "$Center 
\n"; &tab_head( "$Message[163] ($Message[77] $MaxNbOf{'WormsShown'})", 19, 0, 'worms' ); print ""; print "" . Format_Number(( scalar keys %_worm_h )) . " $Message[164]*"; print "$Message[167]"; if ( $ShowWormsStats =~ /H/i ) { print "$Message[57]"; } if ( $ShowWormsStats =~ /B/i ) { print "$Message[75]"; } if ( $ShowWormsStats =~ /L/i ) { print "$Message[9]"; } print "\n"; my $total_p = my $total_h = my $total_k = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'WormsShown'}, $MinHit{'Worm'}, \%_worm_h, \%_worm_h ); foreach my $key (@keylist) { print ""; print "" . ( $PageDir eq 'rtl' ? "" : "" ) . ( $WormsHashLib{$key} ? $WormsHashLib{$key} : $key ) . ( $PageDir eq 'rtl' ? "" : "" ) . ""; print "" . ( $PageDir eq 'rtl' ? "" : "" ) . ( $WormsHashTarget{$key} ? $WormsHashTarget{$key} : $key ) . ( $PageDir eq 'rtl' ? "" : "" ) . ""; if ( $ShowWormsStats =~ /H/i ) { print "" . Format_Number($_worm_h{$key}) . ""; } if ( $ShowWormsStats =~ /B/i ) { print "" . Format_Bytes( $_worm_k{$key} ) . ""; } if ( $ShowWormsStats =~ /L/i ) { print "" . ( $_worm_l{$key} ? Format_Date( $_worm_l{$key}, 1 ) : '-' ) . ""; } print "\n"; #$total_p += $_worm_p{$key}; $total_h += $_worm_h{$key}; $total_k += $_worm_k{$key} || 0; $count++; } # For worms we need to count Totals my $TotalPagesWorms = 0; #foreach (values %_worm_p) { $TotalPagesWorms+=$_; } my $TotalHitsWorms = 0; foreach ( values %_worm_h ) { $TotalHitsWorms += $_; } my $TotalBytesWorms = 0; foreach ( values %_worm_k ) { $TotalBytesWorms += $_; } my $rest_p = 0; #$rest_p=$TotalPagesRobots-$total_p; my $rest_h = $TotalHitsWorms - $total_h; my $rest_k = $TotalBytesWorms - $total_k; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other worms print ""; print "$Message[2]"; print "-"; if ( $ShowWormsStats =~ /H/i ) { print "" . Format_Number(($rest_h)) . ""; } if ( $ShowWormsStats =~ /B/i ) { print "" . ( Format_Bytes($rest_k) ) . ""; } if ( $ShowWormsStats =~ /L/i ) { print " "; } print "\n"; } &tab_end("* $Message[158]"); } #------------------------------------------------------------------------------ # Function: Prints the sessions chart and table # Parameters: - # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainSessions{ if ($Debug) { debug( "ShowSessionsStats", 2 ); } print "$Center 
\n"; my $title = "$Message[117]"; &tab_head( $title, 19, 0, 'sessions' ); my $Totals = 0; my $average_s = 0; foreach (@SessionsRange) { $average_s += ( $_session{$_} || 0 ) * $SessionsAverage{$_}; $Totals += $_session{$_} || 0; } if ($Totals) { $average_s = int( $average_s / $Totals ); } else { $average_s = '?'; } print "$Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]\n"; $average_s = 0; my $total_s = 0; my $count = 0; foreach my $key (@SessionsRange) { my $p = 0; if ($TotalVisits) { $p = int( $_session{$key} / $TotalVisits * 1000 ) / 10; } $total_s += $_session{$key} || 0; print "$key"; print "" . ( $_session{$key} ? Format_Number($_session{$key}) : " " ) . ""; print "" . ( $_session{$key} ? "$p %" : " " ) . ""; print "\n"; $count++; } my $rest_s = $TotalVisits - $total_s; if ( $rest_s > 0 ) { # All others sessions my $p = 0; if ($TotalVisits) { $p = int( $rest_s / $TotalVisits * 1000 ) / 10; } print "$Message[0]"; print "".Format_Number($rest_s).""; print "" . ( $rest_s ? "$p %" : " " ) . ""; print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the pages chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainPages{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowPagesStats (MaxNbOf{'PageShown'}=$MaxNbOf{'PageShown'} TotalDifferentPages=$TotalDifferentPages)", 2 ); } my $regext = qr/\.(\w{1,6})$/; print "$Center   
\n"; my $title = "$Message[19] ($Message[77] $MaxNbOf{'PageShown'})   -   $Message[80]"; if ( $ShowPagesStats =~ /E/i ) { $title .= "   -   $Message[104]"; } if ( $ShowPagesStats =~ /X/i ) { $title .= "   -   $Message[116]"; } if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title .= "   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'urls' ); print "".Format_Number($TotalDifferentPages)." $Message[28]"; if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { print "$Message[29]"; } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { print "$Message[57]"; } if ( $ShowPagesStats =~ /B/i ) { print "$Message[106]"; } if ( $ShowPagesStats =~ /E/i ) { print "$Message[104]"; } if ( $ShowPagesStats =~ /X/i ) { print "$Message[116]"; } # Call to plugins' function ShowPagesAddField foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { # my $function="ShowPagesAddField_$pluginname('title')"; # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; &$function('title'); } print " \n"; my $total_p = my $total_e = my $total_x = my $total_k = 0; my $max_p = 1; my $max_k = 1; my $count = 0; &BuildKeyList( $MaxNbOf{'PageShown'}, $MinHit{'File'}, \%_url_p, \%_url_p ); foreach my $key (@keylist) { if ( $_url_p{$key} > $max_p ) { $max_p = $_url_p{$key}; } if ( $_url_k{$key} / ( $_url_p{$key} || 1 ) > $max_k ) { $max_k = $_url_k{$key} / ( $_url_p{$key} || 1 ); } } foreach my $key (@keylist) { print ""; &HTMLShowURLInfo($key); print ""; my $bredde_p = 0; my $bredde_e = 0; my $bredde_x = 0; my $bredde_k = 0; if ( $max_p > 0 ) { $bredde_p = int( $BarWidth * ( $_url_p{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_p == 1 ) && $_url_p{$key} ) { $bredde_p = 2; } if ( $max_p > 0 ) { $bredde_e = int( $BarWidth * ( $_url_e{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_e == 1 ) && $_url_e{$key} ) { $bredde_e = 2; } if ( $max_p > 0 ) { $bredde_x = int( $BarWidth * ( $_url_x{$key} || 0 ) / $max_p ) + 1; } if ( ( $bredde_x == 1 ) && $_url_x{$key} ) { $bredde_x = 2; } if ( $max_k > 0 ) { $bredde_k = int( $BarWidth * ( ( $_url_k{$key} || 0 ) / ( $_url_p{$key} || 1 ) ) / $max_k ) + 1; } if ( ( $bredde_k == 1 ) && $_url_k{$key} ) { $bredde_k = 2; } if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { print "".Format_Number($_url_p{$key}).""; } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { print "".Format_Number($_url_p{$key}).""; } if ( $ShowPagesStats =~ /B/i ) { print "" . ( $_url_k{$key} ? Format_Bytes( $_url_k{$key} / ( $_url_p{$key} || 1 ) ) : " " ) . ""; } if ( $ShowPagesStats =~ /E/i ) { print "" . ( $_url_e{$key} ? Format_Number($_url_e{$key}) : " " ) . ""; } if ( $ShowPagesStats =~ /X/i ) { print "" . ( $_url_x{$key} ? Format_Number($_url_x{$key}) : " " ) . ""; } # Call to plugins' function ShowPagesAddField foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { # my $function="ShowPagesAddField_$pluginname('$key')"; # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; &$function($key); } print ""; if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { print "
"; } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { print "
"; } if ( $ShowPagesStats =~ /B/i ) { print "
"; } if ( $ShowPagesStats =~ /E/i ) { print "
"; } if ( $ShowPagesStats =~ /X/i ) { print ""; } print "\n"; $total_p += $_url_p{$key} || 0; $total_e += $_url_e{$key} || 0; $total_x += $_url_x{$key} || 0; $total_k += $_url_k{$key} || 0; $count++; } my $rest_p = $TotalPages - $total_p; my $rest_e = $TotalEntries - $total_e; my $rest_x = $TotalExits - $total_x; my $rest_k = $TotalBytesPages - $total_k; if ( $rest_p > 0 || $rest_k > 0 || $rest_e > 0 || $rest_x > 0 ) { # All other urls print "$Message[2]"; if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { print "".Format_Number($rest_p).""; } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { print "".Format_Number($rest_p).""; } if ( $ShowPagesStats =~ /B/i ) { print "" . ( $rest_k ? Format_Bytes( $rest_k / ( $rest_p || 1 ) ) : " " ) . ""; } if ( $ShowPagesStats =~ /E/i ) { print "" . ( $rest_e ? Format_Number($rest_e) : " " ) . ""; } if ( $ShowPagesStats =~ /X/i ) { print "" . ( $rest_x ? Format_Number($rest_x) : " " ) . ""; } # Call to plugins' function ShowPagesAddField foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { # my $function="ShowPagesAddField_$pluginname('')"; # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; &$function(''); } print " \n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the OS chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainOS{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowOSStats", 2 ); } print "$Center 
\n"; my $Totalh = 0; my $Totalp = 0; my %new_os_h = (); my %new_os_p = (); OSLOOP: foreach my $key ( keys %_os_h ) { $Totalh += $_os_h{$key}; $Totalp += $_os_p{$key}; foreach my $family ( keys %OSFamily ) { if ( $key =~ /^$family/i ) { $new_os_h{"${family}cumul"} += $_os_h{$key}; $new_os_p{"${family}cumul"} += $_os_p{$key}; next OSLOOP; } } $new_os_h{$key} += $_os_h{$key}; $new_os_p{$key} += $_os_p{$key}; } my $title = "$Message[59] ($Message[77] $MaxNbOf{'OsShown'})   -   $Message[80]/$Message[58]   -   $Message[0]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title .= "   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'os' ); &BuildKeyList( $MaxNbOf{'OsShown'}, $MinHit{'Os'}, \%new_os_h, \%new_os_p ); # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; foreach my $key (@keylist) { push @valdata, int( $new_os_h{$key} / $Totalh * 1000 ) / 10; if ($key eq 'Unknown'){push @blocklabel, "$key"; } else{ my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; my $libos = $OSHashLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $keywithoutcumul; $nameicon =~ s/[^\w]//g; if ( $OSFamily{$keywithoutcumul} ) { $libos = $OSFamily{$keywithoutcumul}; } push @blocklabel, "$libos"; } $cnt++; if ($cnt > 4) { last; } } print ""; my $function = "ShowGraph_$pluginname"; &$function( "Top 5 Operating Systems", "oss", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata ); print ""; } } print " $Message[59]"; print "$Message[56]$Message[15]"; print "$Message[57]$Message[15]\n"; my $total_h = 0; my $total_p = 0; my $count = 0; foreach my $key (@keylist) { my $p_h = ' '; my $p_p = ' '; if ($Totalh) { $p_h = int( $new_os_h{$key} / $Totalh * 1000 ) / 10; $p_h = "$p_h %"; } if ($Totalp) { $p_p = int( $new_os_p{$key} / $Totalp * 1000 ) / 10; $p_p = "$p_p %"; } if ( $key eq 'Unknown' ) { print "$Message[0]" . "".Format_Number($_os_p{$key})."$p_p".Format_Number($_os_h{$key})."$p_h\n"; } else { my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; my $libos = $OSHashLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $keywithoutcumul; $nameicon =~ s/[^\w]//g; if ( $OSFamily{$keywithoutcumul} ) { $libos = "" . $OSFamily{$keywithoutcumul} . ""; } print "$libos".Format_Number($new_os_p{$key})."$p_p".Format_Number($new_os_h{$key})."$p_h\n"; } $total_h += $new_os_h{$key}; $total_p += $new_os_p{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $Totalh / $total_h", 2 ); } my $rest_h = $Totalh - $total_h; my $rest_p = $Totalp - $total_p; if ( $rest_h > 0 ) { my $p_p; my $p_h; if ($Totalh) { $p_h = int( $rest_h / $Totalh * 1000 ) / 10; } if ($Totalp) { $p_p = int( $rest_p / $Totalp * 1000 ) / 10; } print ""; print " "; print "$Message[2]".Format_Number($rest_p).""; print "$p_p %".Format_Number($rest_h)."$p_h %\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the Browsers chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainBrowsers{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowBrowsersStats", 2 ); } print "$Center 
\n"; my $Totalh = 0; my $Totalp = 0; my %new_browser_h = (); my %new_browser_p = (); BROWSERLOOP: foreach my $key ( keys %_browser_h ) { $Totalh += $_browser_h{$key}; $Totalp += $_browser_p{$key}; foreach my $family ( keys %BrowsersFamily ) { if ( $key =~ /^$family/i ) { $new_browser_h{"${family}cumul"} += $_browser_h{$key}; $new_browser_p{"${family}cumul"} += $_browser_p{$key}; next BROWSERLOOP; } } $new_browser_h{$key} += $_browser_h{$key}; $new_browser_p{$key} += $_browser_p{$key}; } my $title = "$Message[21] ($Message[77] $MaxNbOf{'BrowsersShown'})   -   $Message[80]/$Message[58]   -   $Message[0]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title .= "   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'browsers' ); &BuildKeyList( $MaxNbOf{'BrowsersShown'}, $MinHit{'Browser'}, \%new_browser_h, \%new_browser_p ); # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; foreach my $key (@keylist) { push @valdata, int( $new_browser_h{$key} / $TotalHits * 1000 ) / 10; if ($key eq 'Unknown'){push @blocklabel, "$key"; } else{ my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; my $libbrowser = $BrowsersHashIDLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $BrowsersHashIcon{$keywithoutcumul} || "notavailable"; if ( $BrowsersFamily{$keywithoutcumul} ) { $libbrowser = "$libbrowser"; } push @blocklabel, "$libbrowser"; } $cnt++; if ($cnt > 4) { last; } } print ""; my $function = "ShowGraph_$pluginname"; &$function( "Top 5 Browsers", "browsers", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata ); print ""; } } print " $Message[21]$Message[111]$Message[56]$Message[15]$Message[57]$Message[15]\n"; my $total_h = 0; my $total_p = 0; my $count = 0; foreach my $key (@keylist) { my $p_h = ' '; my $p_p = ' '; if ($Totalh) { $p_h = int( $new_browser_h{$key} / $Totalh * 1000 ) / 10; $p_h = "$p_h %"; } if ($Totalp) { $p_p = int( $new_browser_p{$key} / $Totalp * 1000 ) / 10; $p_p = "$p_p %"; } if ( $key eq 'Unknown' ) { print "$Message[0]?" . "".Format_Number($_browser_p{$key})."$p_p" . "".Format_Number($_browser_h{$key})."$p_h\n"; } else { my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; my $libbrowser = $BrowsersHashIDLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $BrowsersHashIcon{$keywithoutcumul} || "notavailable"; if ( $BrowsersFamily{$keywithoutcumul} ) { $libbrowser = "$libbrowser"; } print "" . ( $PageDir eq 'rtl' ? "" : "" ) . "$libbrowser" . ( $PageDir eq 'rtl' ? "" : "" ) . "" . ( $BrowsersHereAreGrabbers{$key} ? "$Message[112]" : "$Message[113]" ) . "".Format_Number($new_browser_p{$key})."$p_p".Format_Number($new_browser_h{$key})."$p_h\n"; } $total_h += $new_browser_h{$key}; $total_p += $new_browser_p{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $Totalh / $total_h", 2 ); } my $rest_h = $Totalh - $total_h; my $rest_p = $Totalp - $total_p; if ( $rest_h > 0 ) { my $p_p = 0.0; my $p_h; if ($Totalh) { $p_h = int( $rest_h / $Totalh * 1000 ) / 10; } if ($Totalp) { $p_p = int( $rest_p / $Totalp * 1000 ) / 10; } print ""; print " "; print "$Message[2] $rest_p"; print "$p_p %$rest_h$p_h %\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the ScreenSize chart and table # Parameters: - # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainScreenSize{ if ($Debug) { debug( "ShowScreenSizeStats", 2 ); } print "$Center 
\n"; my $Totalh = 0; foreach ( keys %_screensize_h ) { $Totalh += $_screensize_h{$_}; } my $title = "$Message[135] ($Message[77] $MaxNbOf{'ScreenSizesShown'})"; &tab_head( "$title", 0, 0, 'screensizes' ); print "$Message[135]$Message[15]\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'ScreenSizesShown'}, $MinHit{'ScreenSize'}, \%_screensize_h, \%_screensize_h ); foreach my $key (@keylist) { my $p = ' '; if ($Totalh) { $p = int( $_screensize_h{$key} / $Totalh * 1000 ) / 10; $p = "$p %"; } $total_h += $_screensize_h{$key} || 0; print ""; if ( $key eq 'Unknown' ) { print "$Message[0]"; print "$p"; } else { my $screensize = $key; print "$screensize"; print "$p"; } print "\n"; $count++; } my $rest_h = $Totalh - $total_h; if ( $rest_h > 0 ) { # All others sessions my $p = 0; if ($Totalh) { $p = int( $rest_h / $Totalh * 1000 ) / 10; } print "$Message[2]"; print "" . ( $rest_h ? "$p %" : " " ) . ""; print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the Referrers chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainReferrers{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowOriginStats", 2 ); } print "$Center 
\n"; my $Totalp = 0; foreach ( 0 .. 5 ) { $Totalp += ( $_ != 4 || $IncludeInternalLinksInOriginSection ) ? $_from_p[$_] : 0; } my $Totalh = 0; foreach ( 0 .. 5 ) { $Totalh += ( $_ != 4 || $IncludeInternalLinksInOriginSection ) ? $_from_h[$_] : 0; } my $title = "$Message[36]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title .= "   -   $Message[179]"); } &tab_head( $title, 19, 0, 'referer' ); my @p_p = ( 0, 0, 0, 0, 0, 0 ); if ( $Totalp > 0 ) { $p_p[0] = int( $_from_p[0] / $Totalp * 1000 ) / 10; $p_p[1] = int( $_from_p[1] / $Totalp * 1000 ) / 10; $p_p[2] = int( $_from_p[2] / $Totalp * 1000 ) / 10; $p_p[3] = int( $_from_p[3] / $Totalp * 1000 ) / 10; $p_p[4] = int( $_from_p[4] / $Totalp * 1000 ) / 10; $p_p[5] = int( $_from_p[5] / $Totalp * 1000 ) / 10; } my @p_h = ( 0, 0, 0, 0, 0, 0 ); if ( $Totalh > 0 ) { $p_h[0] = int( $_from_h[0] / $Totalh * 1000 ) / 10; $p_h[1] = int( $_from_h[1] / $Totalh * 1000 ) / 10; $p_h[2] = int( $_from_h[2] / $Totalh * 1000 ) / 10; $p_h[3] = int( $_from_h[3] / $Totalh * 1000 ) / 10; $p_h[4] = int( $_from_h[4] / $Totalh * 1000 ) / 10; $p_h[5] = int( $_from_h[5] / $Totalh * 1000 ) / 10; } print "$Message[37]"; if ( $ShowOriginStats =~ /P/i ) { print "$Message[56]$Message[15]"; } if ( $ShowOriginStats =~ /H/i ) { print "$Message[57]$Message[15]"; } print "\n"; #------- Referrals by direct address/bookmark/link in email/etc... print "$Message[38]"; if ( $ShowOriginStats =~ /P/i ) { print "" . ( $_from_p[0] ? Format_Number($_from_p[0]) : " " ) . "" . ( $_from_p[0] ? "$p_p[0] %" : " " ) . ""; } if ( $ShowOriginStats =~ /H/i ) { print "" . ( $_from_h[0] ? Format_Number($_from_h[0]) : " " ) . "" . ( $_from_h[0] ? "$p_h[0] %" : " " ) . ""; } print "\n"; #------- Referrals by search engines print "$Message[40] - $Message[80]
\n"; if ( scalar keys %_se_referrals_h ) { print "\n"; my $total_p = 0; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'RefererShown'}, $MinHit{'Refer'}, \%_se_referrals_h, ( ( scalar keys %_se_referrals_p ) ? \%_se_referrals_p : \%_se_referrals_h ) ); foreach my $key (@keylist) { my $newreferer = $SearchEnginesHashLib{$key} || CleanXSS($key); print ""; print ""; print ""; print "\n"; $total_p += $_se_referrals_p{$key}; $total_h += $_se_referrals_h{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalSearchEnginesPages / $total_p - $TotalSearchEnginesHits / $total_h", 2 ); } my $rest_p = $TotalSearchEnginesPages - $total_p; my $rest_h = $TotalSearchEnginesHits - $total_h; if ( $rest_p > 0 || $rest_h > 0 ) { print ""; print ""; print ""; print "\n"; } print "
- $newreferer" . ( Format_Number($_se_referrals_p{$key} ? $_se_referrals_p{$key} : '0' )) . " / ".Format_Number($_se_referrals_h{$key})."
- $Message[2]".Format_Number($rest_p)." / ".Format_Number($rest_h)."
"; } print "\n"; if ( $ShowOriginStats =~ /P/i ) { print "" . ( $_from_p[2] ? Format_Number($_from_p[2]) : " " ) . "" . ( $_from_p[2] ? "$p_p[2] %" : " " ) . ""; } if ( $ShowOriginStats =~ /H/i ) { print "" . ( $_from_h[2] ? Format_Number($_from_h[2]) : " " ) . "" . ( $_from_h[2] ? "$p_h[2] %" : " " ) . ""; } print "\n"; #------- Referrals by external HTML link print "$Message[41] - $Message[80]
\n"; if ( scalar keys %_pagesrefs_h ) { print "\n"; my $total_p = 0; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'RefererShown'}, $MinHit{'Refer'}, \%_pagesrefs_h, ( ( scalar keys %_pagesrefs_p ) ? \%_pagesrefs_p : \%_pagesrefs_h ) ); foreach my $key (@keylist) { print ""; print ""; print ""; print "\n"; $total_p += $_pagesrefs_p{$key}; $total_h += $_pagesrefs_h{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalRefererPages / $total_p - $TotalRefererHits / $total_h", 2 ); } my $rest_p = $TotalRefererPages - $total_p; my $rest_h = $TotalRefererHits - $total_h; if ( $rest_p > 0 || $rest_h > 0 ) { print ""; print ""; print ""; print "\n"; } print "
- "; &HTMLShowURLInfo($key); print "" . Format_Number(( $_pagesrefs_p{$key} ? $_pagesrefs_p{$key} : '0' )) . "".Format_Number($_pagesrefs_h{$key})."
- $Message[2]".Format_Number($rest_p)."".Format_Number($rest_h)."
"; } print "\n"; if ( $ShowOriginStats =~ /P/i ) { print "" . ( $_from_p[3] ? Format_Number($_from_p[3]) : " " ) . "" . ( $_from_p[3] ? "$p_p[3] %" : " " ) . ""; } if ( $ShowOriginStats =~ /H/i ) { print "" . ( $_from_h[3] ? Format_Number($_from_h[3]) : " " ) . "" . ( $_from_h[3] ? "$p_h[3] %" : " " ) . ""; } print "\n"; #------- Referrals by internal HTML link if ($IncludeInternalLinksInOriginSection) { print "$Message[42]"; if ( $ShowOriginStats =~ /P/i ) { print "" . ( $_from_p[4] ? Format_Number($_from_p[4]) : " " ) . "" . ( $_from_p[4] ? "$p_p[4] %" : " " ) . ""; } if ( $ShowOriginStats =~ /H/i ) { print "" . ( $_from_h[4] ? Format_Number($_from_h[4]) : " " ) . "" . ( $_from_h[4] ? "$p_h[4] %" : " " ) . ""; } print "\n"; } #------- Referrals by news group #print "$Message[107]"; #if ($ShowOriginStats =~ /P/i) { print "".($_from_p[5]?$_from_p[5]:" ")."".($_from_p[5]?"$p_p[5] %":" ").""; } #if ($ShowOriginStats =~ /H/i) { print "".($_from_h[5]?$_from_h[5]:" ")."".($_from_h[5]?"$p_h[5] %":" ").""; } #print "\n"; #------- Unknown origin print "$Message[39]"; if ( $ShowOriginStats =~ /P/i ) { print "" . ( $_from_p[1] ? Format_Number($_from_p[1]) : " " ) . "" . ( $_from_p[1] ? "$p_p[1] %" : " " ) . ""; } if ( $ShowOriginStats =~ /H/i ) { print "" . ( $_from_h[1] ? Format_Number($_from_h[1]) : " " ) . "" . ( $_from_h[1] ? "$p_h[1] %" : " " ) . ""; } print "\n"; &tab_end(); # 0: Direct # 1: Unknown # 2: SE # 3: External link # 4: Internal link # 5: Newsgroup (deprecated) } #------------------------------------------------------------------------------ # Function: Prints the Key Phrases and Keywords chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainKeys{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($ShowKeyphrasesStats) { print "$Center "; } if ($ShowKeywordsStats) { print "$Center "; } if ( $ShowKeyphrasesStats || $ShowKeywordsStats ) { print "
\n"; } if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print ""; } if ($ShowKeyphrasesStats) { # By Keyphrases if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print "\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeyphrasesShown'}, $MinHit{'Keyphrase'}, \%_keyphrases, \%_keyphrases ); foreach my $key (@keylist) { my $mot; # Convert coded keywords (utf8,...) to be correctly reported in HTML page. if ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) { $mot = CleanXSS( DecodeKey_decodeutfkeys( $key, $PageCode || 'iso-8859-1' ) ); } else { $mot = CleanXSS( DecodeEncodedString($key) ); } my $p; if ($TotalKeyphrases) { $p = int( $_keyphrases{$key} / $TotalKeyphrases * 1000 ) / 10; } print "\n"; $total_s += $_keyphrases{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalKeyphrases / $total_s", 2 ); } my $rest_s = $TotalKeyphrases - $total_s; if ( $rest_s > 0 ) { my $p; if ($TotalKeyphrases) { $p = int( $rest_s / $TotalKeyphrases * 1000 ) / 10; } print ""; print "\n"; } &tab_end(); if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print "\n"; } } if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print ""; } if ($ShowKeywordsStats) { # By Keywords if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print "\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeywordsShown'}, $MinHit{'Keyword'}, \%_keywords, \%_keywords ); foreach my $key (@keylist) { my $mot; # Convert coded keywords (utf8,...) to be correctly reported in HTML page. if ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) { $mot = CleanXSS( DecodeKey_decodeutfkeys( $key, $PageCode || 'iso-8859-1' ) ); } else { $mot = CleanXSS( DecodeEncodedString($key) ); } my $p; if ($TotalKeywords) { $p = int( $_keywords{$key} / $TotalKeywords * 1000 ) / 10; } print "\n"; $total_s += $_keywords{$key}; $count++; } if ($Debug) { debug( "Total real / shown : $TotalKeywords / $total_s", 2 ); } my $rest_s = $TotalKeywords - $total_s; if ( $rest_s > 0 ) { my $p; if ($TotalKeywords) { $p = int( $rest_s / $TotalKeywords * 1000 ) / 10; } print ""; print "\n"; } &tab_end(); if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print "\n"; } } if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print "
\n"; } if ($Debug) { debug( "ShowKeyphrasesStats", 2 ); } &tab_head( "$Message[120] ($Message[77] $MaxNbOf{'KeyphrasesShown'})
$Message[80]", 19, ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70, 'keyphrases' ); print "
$TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]
" . XMLEncode($mot) . "$_keyphrases{$key}$p %
$Message[124]$rest_s$p %
  \n"; } if ($Debug) { debug( "ShowKeywordsStats", 2 ); } &tab_head( "$Message[121] ($Message[77] $MaxNbOf{'KeywordsShown'})
$Message[80]", 19, ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70, 'keywords' ); print "
$TotalDifferentKeywords $Message[13]$Message[14]$Message[15]
" . XMLEncode($mot) . "$_keywords{$key}$p %
$Message[30]$rest_s$p %
\n"; } } #------------------------------------------------------------------------------ # Function: Prints the miscellaneous table # Parameters: - # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainMisc{ if ($Debug) { debug( "ShowMiscStats", 2 ); } print "$Center 
\n"; my $title = "$Message[139]"; &tab_head( "$title", 19, 0, 'misc' ); print "$Message[139]"; print " "; print " "; print "\n"; my %label = ( 'AddToFavourites' => $Message[137], 'JavascriptDisabled' => $Message[168], 'JavaEnabled' => $Message[140], 'DirectorSupport' => $Message[141], 'FlashSupport' => $Message[142], 'RealPlayerSupport' => $Message[143], 'QuickTimeSupport' => $Message[144], 'WindowsMediaPlayerSupport' => $Message[145], 'PDFSupport' => $Message[146] ); foreach my $key (@MiscListOrder) { my $mischar = substr( $key, 0, 1 ); if ( $ShowMiscStats !~ /$mischar/i ) { next; } my $total = 0; my $p; if ( $MiscListCalc{$key} eq 'v' ) { $total = $TotalVisits; } if ( $MiscListCalc{$key} eq 'u' ) { $total = $TotalUnique; } if ( $MiscListCalc{$key} eq 'hm' ) { $total = $_misc_h{'TotalMisc'} || 0; } if ($total) { $p = int( ( $_misc_h{$key} ? $_misc_h{$key} : 0 ) / $total * 1000 ) / 10; } print ""; print "" . ( $PageDir eq 'rtl' ? "" : "" ) . $label{$key} . ( $PageDir eq 'rtl' ? "" : "" ) . ""; if ( $MiscListCalc{$key} eq 'v' ) { print "" . Format_Number(( $_misc_h{$key} || 0 )) . " / ".Format_Number($total)." $Message[12]"; } if ( $MiscListCalc{$key} eq 'u' ) { print "" . Format_Number(( $_misc_h{$key} || 0 )) . " / ".Format_Number($total)." $Message[18]"; } if ( $MiscListCalc{$key} eq 'hm' ) { print "-"; } print "" . ( $total ? "$p %" : " " ) . ""; print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the Status codes chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainHTTPStatus{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowHTTPErrorsStats", 2 ); } print "$Center 
\n"; my $title = "$Message[32]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title .= "   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'errors' ); &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; foreach my $key (@keylist) { push @valdata, int( $_errors_h{$key} / $TotalHitsErrors * 1000 ) / 10; push @blocklabel, "$key"; $cnt++; if ($cnt > 4) { last; } } print ""; my $function = "ShowGraph_$pluginname"; &$function( "$title", "httpstatus", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata ); print ""; } } print "$Message[32]*$Message[57]$Message[15]$Message[75]\n"; my $total_h = 0; my $count = 0; foreach my $key (@keylist) { my $p = int( $_errors_h{$key} / $TotalHitsErrors * 1000 ) / 10; print ""; if ( $TrapInfosForHTTPErrorCodes{$key} ) { print "$key"; } else { print "$key"; } print "" . ( $httpcodelib{$key} ? $httpcodelib{$key} : 'Unknown error' ) . "".Format_Number($_errors_h{$key})."$p %" . Format_Bytes( $_errors_k{$key} ) . ""; print "\n"; $total_h += $_errors_h{$key}; $count++; } &tab_end("* $Message[154]"); } #------------------------------------------------------------------------------ # Function: Prints the Status codes chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainSMTPStatus{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowSMTPErrorsStats", 2 ); } print "$Center 
\n"; my $title = "$Message[147]"; &tab_head( "$title", 19, 0, 'errors' ); print "$Message[147]$Message[57]$Message[15]$Message[75]\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); foreach my $key (@keylist) { my $p = int( $_errors_h{$key} / $TotalHitsErrors * 1000 ) / 10; print ""; print "$key"; print "" . ( $smtpcodelib{$key} ? $smtpcodelib{$key} : 'Unknown error' ) . "".Format_Number($_errors_h{$key})."$p %" . Format_Bytes( $_errors_k{$key} ) . ""; print "\n"; $total_h += $_errors_h{$key}; $count++; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints the cluster information chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainCluster{ my $NewLinkParams = shift; my $NewLinkTarget = shift; if ($Debug) { debug( "ShowClusterStats", 2 ); } print "$Center 
\n"; my $title = "$Message[155]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link $title .= "   -   $Message[179]"); } &tab_head( "$title", 19, 0, 'clusters' ); &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_cluster_p, \%_cluster_p ); # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; foreach my $key (@keylist) { push @valdata, int( $_cluster_p{$key} / $TotalHits * 1000 ) / 10; push @blocklabel, "$key"; $cnt++; if ($cnt > 4) { last; } } print ""; my $function = "ShowGraph_$pluginname"; &$function( "$title", "cluster", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata ); print ""; } } print "$Message[155]"; &HTMLShowClusterInfo('__title__'); if ( $ShowClusterStats =~ /P/i ) { print "$Message[56]$Message[15]"; } if ( $ShowClusterStats =~ /H/i ) { print "$Message[57]$Message[15]"; } if ( $ShowClusterStats =~ /B/i ) { print "$Message[75]$Message[15]"; } print "\n"; my $total_p = my $total_h = my $total_k = 0; # Cluster feature might have been enable in middle of month so we recalculate # total for cluster section only, to calculate ratio, instead of using global total foreach my $key (@keylist) { $total_p += int( $_cluster_p{$key} || 0 ); $total_h += int( $_cluster_h{$key} || 0 ); $total_k += int( $_cluster_k{$key} || 0 ); } my $count = 0; foreach my $key (@keylist) { my $p_p = int( $_cluster_p{$key} / $total_p * 1000 ) / 10; my $p_h = int( $_cluster_h{$key} / $total_h * 1000 ) / 10; my $p_k = int( $_cluster_k{$key} / $total_k * 1000 ) / 10; print ""; print "Computer $key"; &HTMLShowClusterInfo($key); if ( $ShowClusterStats =~ /P/i ) { print "" . ( $_cluster_p{$key} ? Format_Number($_cluster_p{$key}) : " " ) . "$p_p %"; } if ( $ShowClusterStats =~ /H/i ) { print "".Format_Number($_cluster_h{$key})."$p_h %"; } if ( $ShowClusterStats =~ /B/i ) { print "" . Format_Bytes( $_cluster_k{$key} ) . "$p_k %"; } print "\n"; $count++; } &tab_end(); } #------------------------------------------------------------------------------ # Function: Prints a chart or table for each extra section # Parameters: $NewLinkParams, $NewLinkTarget, $extranum # Input: - # Output: HTML # Return: - #------------------------------------------------------------------------------ sub HTMLMainExtra{ my $NewLinkParams = shift; my $NewLinkTarget = shift; my $extranum = shift; if ($Debug) { debug( "ExtraName$extranum", 2 ); } print "$Center 
"; my $title = $ExtraName[$extranum]; &tab_head( "$title", 19, 0, "extra$extranum" ); print ""; print "" . $ExtraFirstColumnTitle[$extranum]; print "  -   $Message[80]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { print "  -   $Message[179]"); } print ""; if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "$Message[56]"; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "$Message[57]"; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "$Message[75]"; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print "$Message[9]"; } print "\n"; my $total_p = my $total_h = my $total_k = 0; #$max_h=1; foreach (values %_login_h) { if ($_ > $max_h) { $max_h = $_; } } #$max_k=1; foreach (values %_login_k) { if ($_ > $max_k) { $max_k = $_; } } my $count = 0; if ( $MaxNbOfExtra[$extranum] ) { if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { &BuildKeyList( $MaxNbOfExtra[$extranum], $MinHitExtra[$extranum], \%{ '_section_' . $extranum . '_h' }, \%{ '_section_' . $extranum . '_p' } ); } else { &BuildKeyList( $MaxNbOfExtra[$extranum], $MinHitExtra[$extranum], \%{ '_section_' . $extranum . '_h' }, \%{ '_section_' . $extranum . '_h' } ); } } else { @keylist = (); } my %keysinkeylist = (); foreach my $key (@keylist) { $keysinkeylist{$key} = 1; my $firstcol = CleanXSS( DecodeEncodedString($key) ); $total_p += ${ '_section_' . $extranum . '_p' }{$key}; $total_h += ${ '_section_' . $extranum . '_h' }{$key}; $total_k += ${ '_section_' . $extranum . '_k' }{$key}; print ""; printf( "$ExtraFirstColumnFormat[$extranum]", $firstcol, $firstcol, $firstcol, $firstcol, $firstcol ); if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "" . ${ '_section_' . $extranum . '_p' }{$key} . ""; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "" . ${ '_section_' . $extranum . '_h' }{$key} . ""; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "" . Format_Bytes( ${ '_section_' . $extranum . '_k' }{$key} ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print "" . ( ${ '_section_' . $extranum . '_l' }{$key} ? Format_Date( ${ '_section_' . $extranum . '_l' }{$key}, 1 ) : '-' ) . ""; } print "\n"; $count++; } # If we ask average or sum, we loop on all other records if ( $ExtraAddAverageRow[$extranum] || $ExtraAddSumRow[$extranum] ) { foreach ( keys %{ '_section_' . $extranum . '_h' } ) { if ( $keysinkeylist{$_} ) { next; } $total_p += ${ '_section_' . $extranum . '_p' }{$_}; $total_h += ${ '_section_' . $extranum . '_h' }{$_}; $total_k += ${ '_section_' . $extranum . '_k' }{$_}; $count++; } } # Add average row if ( $ExtraAddAverageRow[$extranum] ) { print ""; print "$Message[96]"; if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "" . ( $count ? Format_Number(( $total_p / $count )) : " " ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "" . ( $count ? Format_Number(( $total_h / $count )) : " " ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "" . ( $count ? Format_Bytes( $total_k / $count ) : " " ) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print " "; } print "\n"; } # Add sum row if ( $ExtraAddSumRow[$extranum] ) { print ""; print "$Message[102]"; if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print "" . Format_Number(($total_p)) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print "" . Format_Number(($total_h)) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print "" . Format_Bytes($total_k) . ""; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print " "; } print "\n"; } &tab_end(); } #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ ( $DIR = $0 ) =~ s/([^\/\\]+)$//; ( $PROG = $1 ) =~ s/\.([^\.]*)$//; $Extension = $1; $DIR ||= '.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; $starttime = time(); # Get current time (time when AWStats was started) ( $nowsec, $nowmin, $nowhour, $nowday, $nowmonth, $nowyear, $nowwday, $nowyday ) = localtime($starttime); $nowweekofmonth = int( $nowday / 7 ); $nowweekofyear = int( ( $nowyday - 1 + 6 - ( $nowwday == 0 ? 6 : $nowwday - 1 ) ) / 7 ) + 1; if ( $nowweekofyear > 52 ) { $nowweekofyear = 1; } $nowdaymod = $nowday % 7; $nowwday++; $nowns = Time::Local::timegm( 0, 0, 0, $nowday, $nowmonth, $nowyear ); if ( $nowdaymod <= $nowwday ) { if ( ( $nowwday != 7 ) || ( $nowdaymod != 0 ) ) { $nowweekofmonth = $nowweekofmonth + 1; } } if ( $nowdaymod > $nowwday ) { $nowweekofmonth = $nowweekofmonth + 2; } # Change format of time variables $nowweekofmonth = "0$nowweekofmonth"; if ( $nowweekofyear < 10 ) { $nowweekofyear = "0$nowweekofyear"; } if ( $nowyear < 100 ) { $nowyear += 2000; } else { $nowyear += 1900; } $nowsmallyear = $nowyear; $nowsmallyear =~ s/^..//; if ( ++$nowmonth < 10 ) { $nowmonth = "0$nowmonth"; } if ( $nowday < 10 ) { $nowday = "0$nowday"; } if ( $nowhour < 10 ) { $nowhour = "0$nowhour"; } if ( $nowmin < 10 ) { $nowmin = "0$nowmin"; } if ( $nowsec < 10 ) { $nowsec = "0$nowsec"; } $nowtime = int( $nowyear . $nowmonth . $nowday . $nowhour . $nowmin . $nowsec ); # Get tomorrow time (will be used to discard some record with corrupted date (future date)) my ( $tomorrowsec, $tomorrowmin, $tomorrowhour, $tomorrowday, $tomorrowmonth, $tomorrowyear ) = localtime( $starttime + 86400 ); if ( $tomorrowyear < 100 ) { $tomorrowyear += 2000; } else { $tomorrowyear += 1900; } if ( ++$tomorrowmonth < 10 ) { $tomorrowmonth = "0$tomorrowmonth"; } if ( $tomorrowday < 10 ) { $tomorrowday = "0$tomorrowday"; } if ( $tomorrowhour < 10 ) { $tomorrowhour = "0$tomorrowhour"; } if ( $tomorrowmin < 10 ) { $tomorrowmin = "0$tomorrowmin"; } if ( $tomorrowsec < 10 ) { $tomorrowsec = "0$tomorrowsec"; } $tomorrowtime = int( $tomorrowyear . $tomorrowmonth . $tomorrowday . $tomorrowhour . $tomorrowmin . $tomorrowsec ); # Allowed option my @AllowedCLIArgs = ( 'migrate', 'config', 'logfile', 'output', 'runascli', 'update', 'staticlinks', 'staticlinksext', 'noloadplugin', 'loadplugin', 'hostfilter', 'urlfilter', 'refererpagesfilter', 'lang', 'month', 'year', 'framename', 'debug', 'showsteps', 'showdropped', 'showcorrupted', 'showunknownorigin', 'showdirectorigin', 'limitflush', 'nboflastupdatelookuptosave', 'confdir', 'updatefor', 'hostfilter', 'hostfilterex', 'urlfilter', 'urlfilterex', 'refererpagesfilter', 'refererpagesfilterex', 'pluginmode', 'filterrawlog' ); # Parse input parameters and sanitize them for security reasons $QueryString = ''; # AWStats use GATEWAY_INTERFACE to known if ran as CLI or CGI. AWSTATS_DEL_GATEWAY_INTERFACE can # be set to force AWStats to be ran as CLI even from a web page. if ( $ENV{'AWSTATS_DEL_GATEWAY_INTERFACE'} ) { $ENV{'GATEWAY_INTERFACE'} = ''; } if ( $ENV{'GATEWAY_INTERFACE'} ) { # Run from a browser as CGI $DebugMessages = 0; # Prepare QueryString if ( $ENV{'CONTENT_LENGTH'} ) { binmode STDIN; read( STDIN, $QueryString, $ENV{'CONTENT_LENGTH'} ); } if ( $ENV{'QUERY_STRING'} ) { $QueryString = $ENV{'QUERY_STRING'}; # Set & and & to & $QueryString =~ s/&/&/g; $QueryString =~ s/&/&/g; } # Remove all XSS vulnerabilities coming from AWStats parameters $QueryString = CleanXSS( &DecodeEncodedString($QueryString) ); # Security test if ( $QueryString =~ /LogFile=([^&]+)/i ) { error( "Logfile parameter can't be overwritten when AWStats is used from a CGI" ); } # No update but report by default when run from a browser $UpdateStats = ( $QueryString =~ /update=1/i ? 1 : 0 ); if ( $QueryString =~ /config=([^&]+)/i ) { $SiteConfig = &Sanitize("$1"); } if ( $QueryString =~ /diricons=([^&]+)/i ) { $DirIcons = "$1"; } if ( $QueryString =~ /pluginmode=([^&]+)/i ) { $PluginMode = &Sanitize( "$1", 1 ); } if ( $QueryString =~ /configdir=([^&]+)/i ) { $DirConfig = &Sanitize("$1"); $DirConfig =~ s/\\{2,}/\\/g; # This is to clean Remote URL $DirConfig =~ s/\/{2,}/\//g; # This is to clean Remote URL } # All filters if ( $QueryString =~ /hostfilter=([^&]+)/i ) { $FilterIn{'host'} = "$1"; } # Filter on host list can also be defined with hostfilter=filter if ( $QueryString =~ /hostfilterex=([^&]+)/i ) { $FilterEx{'host'} = "$1"; } # if ( $QueryString =~ /urlfilter=([^&]+)/i ) { $FilterIn{'url'} = "$1"; } # Filter on URL list can also be defined with urlfilter=filter if ( $QueryString =~ /urlfilterex=([^&]+)/i ) { $FilterEx{'url'} = "$1"; } # if ( $QueryString =~ /refererpagesfilter=([^&]+)/i ) { $FilterIn{'refererpages'} = "$1"; } # Filter on referer list can also be defined with refererpagesfilter=filter if ( $QueryString =~ /refererpagesfilterex=([^&]+)/i ) { $FilterEx{'refererpages'} = "$1"; } # # All output if ( $QueryString =~ /output=allhosts:([^&]+)/i ) { $FilterIn{'host'} = "$1"; } # Filter on host list can be defined with output=allhosts:filter to reduce number of lines read and showed if ( $QueryString =~ /output=lasthosts:([^&]+)/i ) { $FilterIn{'host'} = "$1"; } # Filter on host list can be defined with output=lasthosts:filter to reduce number of lines read and showed if ( $QueryString =~ /output=urldetail:([^&]+)/i ) { $FilterIn{'url'} = "$1"; } # Filter on URL list can be defined with output=urldetail:filter to reduce number of lines read and showed if ( $QueryString =~ /output=refererpages:([^&]+)/i ) { $FilterIn{'refererpages'} = "$1"; } # Filter on referer list can be defined with output=refererpages:filter to reduce number of lines read and showed # If migrate if ( $QueryString =~ /(^|-|&|&)migrate=([^&]+)/i ) { $MigrateStats = &Sanitize("$2"); $MigrateStats =~ /^(.*)$PROG(\d{0,2})(\d\d)(\d\d\d\d)(.*)\.txt$/; $SiteConfig = $5 ? $5 : 'xxx'; $SiteConfig =~ s/^\.//; # SiteConfig is used to find config file } } else { # Run from command line $DebugMessages = 1; # Prepare QueryString for ( 0 .. @ARGV - 1 ) { # If migrate if ( $ARGV[$_] =~ /(^|-|&|&)migrate=([^&]+)/i ) { $MigrateStats = "$2"; $MigrateStats =~ /^(.*)$PROG(\d{0,2})(\d\d)(\d\d\d\d)(.*)\.txt$/; $SiteConfig = $5 ? $5 : 'xxx'; $SiteConfig =~ s/^\.//; # SiteConfig is used to find config file next; } # TODO Check if ARGV is in @AllowedArg if ($QueryString) { $QueryString .= '&'; } my $NewLinkParams = $ARGV[$_]; $NewLinkParams =~ s/^-+//; $QueryString .= "$NewLinkParams"; } # Remove all XSS vulnerabilities coming from AWStats parameters $QueryString = CleanXSS($QueryString); # Security test if ( $ENV{'AWSTATS_DEL_GATEWAY_INTERFACE'} && $QueryString =~ /LogFile=([^&]+)/i ) { error( "Logfile parameter can't be overwritten when AWStats is used from a CGI" ); } # Update with no report by default when run from command line $UpdateStats = 1; if ( $QueryString =~ /config=([^&]+)/i ) { $SiteConfig = &Sanitize("$1"); } if ( $QueryString =~ /diricons=([^&]+)/i ) { $DirIcons = "$1"; } if ( $QueryString =~ /pluginmode=([^&]+)/i ) { $PluginMode = &Sanitize( "$1", 1 ); } if ( $QueryString =~ /configdir=([^&]+)/i ) { $DirConfig = &Sanitize("$1"); $DirConfig =~ s/\\{2,}/\\/g; # This is to clean Remote URL $DirConfig =~ s/\/{2,}/\//g; # This is to clean Remote URL } # All filters if ( $QueryString =~ /hostfilter=([^&]+)/i ) { $FilterIn{'host'} = "$1"; } # Filter on host list can also be defined with hostfilter=filter if ( $QueryString =~ /hostfilterex=([^&]+)/i ) { $FilterEx{'host'} = "$1"; } # if ( $QueryString =~ /urlfilter=([^&]+)/i ) { $FilterIn{'url'} = "$1"; } # Filter on URL list can also be defined with urlfilter=filter if ( $QueryString =~ /urlfilterex=([^&]+)/i ) { $FilterEx{'url'} = "$1"; } # if ( $QueryString =~ /refererpagesfilter=([^&]+)/i ) { $FilterIn{'refererpages'} = "$1"; } # Filter on referer list can also be defined with refererpagesfilter=filter if ( $QueryString =~ /refererpagesfilterex=([^&]+)/i ) { $FilterEx{'refererpages'} = "$1"; } # # All output if ( $QueryString =~ /output=allhosts:([^&]+)/i ) { $FilterIn{'host'} = "$1"; } # Filter on host list can be defined with output=allhosts:filter to reduce number of lines read and showed if ( $QueryString =~ /output=lasthosts:([^&]+)/i ) { $FilterIn{'host'} = "$1"; } # Filter on host list can be defined with output=lasthosts:filter to reduce number of lines read and showed if ( $QueryString =~ /output=urldetail:([^&]+)/i ) { $FilterIn{'url'} = "$1"; } # Filter on URL list can be defined with output=urldetail:filter to reduce number of lines read and showed if ( $QueryString =~ /output=refererpages:([^&]+)/i ) { $FilterIn{'refererpages'} = "$1"; } # Filter on referer list can be defined with output=refererpages:filter to reduce number of lines read and showed # Config parameters if ( $QueryString =~ /LogFile=([^&]+)/i ) { $LogFile = "$1"; } # If show options if ( $QueryString =~ /showsteps/i ) { $ShowSteps = 1; $QueryString =~ s/showsteps[^&]*//i; } if ( $QueryString =~ /showcorrupted/i ) { $ShowCorrupted = 1; $QueryString =~ s/showcorrupted[^&]*//i; } if ( $QueryString =~ /showdropped/i ) { $ShowDropped = 1; $QueryString =~ s/showdropped[^&]*//i; } if ( $QueryString =~ /showunknownorigin/i ) { $ShowUnknownOrigin = 1; $QueryString =~ s/showunknownorigin[^&]*//i; } if ( $QueryString =~ /showdirectorigin/i ) { $ShowDirectOrigin = 1; $QueryString =~ s/showdirectorigin[^&]*//i; } } if ( $QueryString =~ /(^|&|&)staticlinks/i ) { $StaticLinks = "$PROG.$SiteConfig"; } if ( $QueryString =~ /(^|&|&)staticlinks=([^&]+)/i ) { $StaticLinks = "$2"; } # When ran from awstatsbuildstaticpages.pl if ( $QueryString =~ /(^|&|&)staticlinksext=([^&]+)/i ) { $StaticExt = "$2"; } if ( $QueryString =~ /(^|&|&)framename=([^&]+)/i ) { $FrameName = "$2"; } if ( $QueryString =~ /(^|&|&)debug=(\d+)/i ) { $Debug = $2; } if ( $QueryString =~ /(^|&|&)databasebreak=(\w+)/i ) { $DatabaseBreak = $2; } if ( $QueryString =~ /(^|&|&)updatefor=(\d+)/i ) { $UpdateFor = $2; } if ( $QueryString =~ /(^|&|&)noloadplugin=([^&]+)/i ) { foreach ( split( /,/, $2 ) ) { $NoLoadPlugin{ &Sanitize( "$_", 1 ) } = 1; } } if ( $QueryString =~ /(^|&|&)limitflush=(\d+)/i ) { $LIMITFLUSH = $2; } if ( $QueryString =~ /(^|&|&)nboflastupdatelookuptosave=(\d+)/i ) { $NBOFLASTUPDATELOOKUPTOSAVE = $2; } # Get/Define output if ( $QueryString =~ /(^|&|&)output(=[^&]*|)(.*)(&|&)output(=[^&]*|)(&|$)/i ) { error( "Only 1 output option is allowed", "", "", 1 ); } if ( $QueryString =~ /(^|&|&)output(=[^&]*|)(&|$)/i ) { # At least one output expected. We define %HTMLOutput my $outputlist = "$2"; if ($outputlist) { $outputlist =~ s/^=//; foreach my $outputparam ( split( /,/, $outputlist ) ) { $outputparam =~ s/:(.*)$//; if ($outputparam) { $HTMLOutput{ lc($outputparam) } = "$1" || 1; } } } # If on command line and no update if ( !$ENV{'GATEWAY_INTERFACE'} && $QueryString !~ /update/i ) { $UpdateStats = 0; } # If no output defined, used default value if ( !scalar keys %HTMLOutput ) { $HTMLOutput{'main'} = 1; } } if ( $ENV{'GATEWAY_INTERFACE'} && !scalar keys %HTMLOutput ) { $HTMLOutput{'main'} = 1; } # Remove -output option with no = from QueryString $QueryString =~ s/(^|&|&)output(&|$)/$1$2/i; $QueryString =~ s/&+$//; # Check year, month, day, hour parameters if ( $QueryString =~ /(^|&|&)month=(year)/i ) { error("month=year is a deprecated option. Use month=all instead."); } if ( $QueryString =~ /(^|&|&)year=(\d\d\d\d)/i ) { $YearRequired = sprintf( "%04d", $2 ); } else { $YearRequired = "$nowyear"; } if ( $QueryString =~ /(^|&|&)month=(\d{1,2})/i ) { $MonthRequired = sprintf( "%02d", $2 ); } elsif ( $QueryString =~ /(^|&|&)month=(all)/i ) { $MonthRequired = 'all'; } else { $MonthRequired = "$nowmonth"; } if ( $QueryString =~ /(^|&|&)day=(\d{1,2})/i ) { $DayRequired = sprintf( "%02d", $2 ); } # day is a hidden option. Must not be used (Make results not understandable). Available for users that rename history files with day. else { $DayRequired = ''; } if ( $QueryString =~ /(^|&|&)hour=(\d{1,2})/i ) { $HourRequired = sprintf( "%02d", $2 ); } # hour is a hidden option. Must not be used (Make results not understandable). Available for users that rename history files with day. else { $HourRequired = ''; } # Check parameter validity # TODO # Print AWStats and Perl version if ($Debug) { debug( ucfirst($PROG) . " - $VERSION - Perl $^X $]", 1 ); debug( "DIR=$DIR PROG=$PROG Extension=$Extension", 2 ); debug( "QUERY_STRING=$QueryString", 2 ); debug( "HTMLOutput=" . join( ',', keys %HTMLOutput ), 1 ); debug( "YearRequired=$YearRequired, MonthRequired=$MonthRequired", 2 ); debug( "DayRequired=$DayRequired, HourRequired=$HourRequired", 2 ); debug( "UpdateFor=$UpdateFor", 2 ); debug( "PluginMode=$PluginMode", 2 ); debug( "DirConfig=$DirConfig", 2 ); } # Force SiteConfig if AWSTATS_FORCE_CONFIG is defined if ( $ENV{'AWSTATS_CONFIG'} ) { $ENV{'AWSTATS_FORCE_CONFIG'} = $ENV{'AWSTATS_CONFIG'}; } # For backward compatibility if ( $ENV{'AWSTATS_FORCE_CONFIG'} ) { if ($Debug) { debug( "AWSTATS_FORCE_CONFIG parameter is defined to '" . $ENV{'AWSTATS_FORCE_CONFIG'} . "'. $PROG will use this as config value." ); } $SiteConfig = &Sanitize( $ENV{'AWSTATS_FORCE_CONFIG'} ); } # Display version information if ( $QueryString =~ /(^|&|&)version/i ) { print "$PROG $VERSION\n"; exit 0; } # Display help information if ( ( !$ENV{'GATEWAY_INTERFACE'} ) && ( !$SiteConfig ) ) { &PrintCLIHelp(); exit 2; } $SiteConfig ||= &Sanitize( $ENV{'SERVER_NAME'} ); #$ENV{'SERVER_NAME'}||=$SiteConfig; # For thoose who use __SERVER_NAME__ in conf file and use CLI. $ENV{'AWSTATS_CURRENT_CONFIG'} = $SiteConfig; # Read config file (SiteConfig must be defined) &Read_Config($DirConfig); # Check language if ( $QueryString =~ /(^|&|&)lang=([^&]+)/i ) { $Lang = "$2"; } if ( !$Lang || $Lang eq 'auto' ) { # If lang not defined or forced to auto my $langlist = $ENV{'HTTP_ACCEPT_LANGUAGE'} || ''; $langlist =~ s/;[^,]*//g; if ($Debug) { debug( "Search an available language among HTTP_ACCEPT_LANGUAGE=$langlist", 1 ); } foreach my $code ( split( /,/, $langlist ) ) { # Search for a valid lang in priority if ( $LangBrowserToLangAwstats{$code} ) { $Lang = $LangBrowserToLangAwstats{$code}; if ($Debug) { debug( " Will try to use Lang=$Lang", 1 ); } last; } $code =~ s/-.*$//; if ( $LangBrowserToLangAwstats{$code} ) { $Lang = $LangBrowserToLangAwstats{$code}; if ($Debug) { debug( " Will try to use Lang=$Lang", 1 ); } last; } } } if ( !$Lang || $Lang eq 'auto' ) { if ($Debug) { debug( " No language defined or available. Will use Lang=en", 1 ); } $Lang = 'en'; } # Check and correct bad parameters &Check_Config(); # Now SiteDomain is defined if ( $Debug && !$DebugMessages ) { error( "Debug has not been allowed. Change DebugMessages parameter in config file to allow debug." ); } # Define frame name and correct variable for frames if ( !$FrameName ) { if ( $ENV{'GATEWAY_INTERFACE'} && $UseFramesWhenCGI && $HTMLOutput{'main'} && !$PluginMode ) { $FrameName = 'index'; } else { $FrameName = 'main'; } } # Load Message files, Reference data files and Plugins if ($Debug) { debug( "FrameName=$FrameName", 1 ); } if ( $FrameName ne 'index' ) { &Read_Language_Data($Lang); if ( $FrameName ne 'mainleft' ) { my %datatoload = (); my ( $filedomains, $filemime, $filerobots, $fileworms, $filebrowser, $fileos, $filese ) = ( 'domains', 'mime', 'robots', 'worms', 'browsers', 'operating_systems', 'search_engines' ); my ( $filestatushttp, $filestatussmtp ) = ( 'status_http', 'status_smtp' ); if ( $LevelForBrowsersDetection eq 'allphones' ) { $filebrowser = 'browsers_phone'; } if ($UpdateStats) { # If update if ($LevelForFileTypesDetection) { $datatoload{$filemime} = 1; } # Only if need to filter on known extensions if ($LevelForRobotsDetection) { $datatoload{$filerobots} = 1; } # ua if ($LevelForWormsDetection) { $datatoload{$fileworms} = 1; } # url if ($LevelForBrowsersDetection) { $datatoload{$filebrowser} = 1; } # ua if ($LevelForOSDetection) { $datatoload{$fileos} = 1; } # ua if ($LevelForRefererAnalyze) { $datatoload{$filese} = 1; } # referer # if (...) { $datatoload{'referer_spam'}=1; } } if ( scalar keys %HTMLOutput ) { # If output if ( $ShowDomainsStats || $ShowHostsStats ) { $datatoload{$filedomains} = 1; } # TODO Replace by test if ($ShowDomainsStats) when plugins geoip can force load of domains datafile. if ($ShowFileTypesStats) { $datatoload{$filemime} = 1; } if ($ShowRobotsStats) { $datatoload{$filerobots} = 1; } if ($ShowWormsStats) { $datatoload{$fileworms} = 1; } if ($ShowBrowsersStats) { $datatoload{$filebrowser} = 1; } if ($ShowOSStats) { $datatoload{$fileos} = 1; } if ($ShowOriginStats) { $datatoload{$filese} = 1; } if ($ShowHTTPErrorsStats) { $datatoload{$filestatushttp} = 1; } if ($ShowSMTPErrorsStats) { $datatoload{$filestatussmtp} = 1; } } &Read_Ref_Data( keys %datatoload ); } &Read_Plugins(); } # Here charset is defined, so we can send the http header (Need BuildReportFormat,PageCode) if ( !$HeaderHTTPSent && $ENV{'GATEWAY_INTERFACE'} ) { http_head(); } # Run from a browser as CGI # Init other parameters $NBOFLINESFORBENCHMARK--; if ( $ENV{'GATEWAY_INTERFACE'} ) { $DirCgi = ''; } if ( $DirCgi && !( $DirCgi =~ /\/$/ ) && !( $DirCgi =~ /\\$/ ) ) { $DirCgi .= '/'; } if ( !$DirData || $DirData =~ /^\./ ) { if ( !$DirData || $DirData eq '.' ) { $DirData = "$DIR"; } # If not defined or chosen to '.' value then DirData is current dir elsif ( $DIR && $DIR ne '.' ) { $DirData = "$DIR/$DirData"; } } $DirData ||= '.'; # If current dir not defined then we put it to '.' $DirData =~ s/[\\\/]+$//; if ( $FirstDayOfWeek == 1 ) { @DOWIndex = ( 1, 2, 3, 4, 5, 6, 0 ); } else { @DOWIndex = ( 0, 1, 2, 3, 4, 5, 6 ); } # Should we link to ourselves or to a wrapper script $AWScript = ( $WrapperScript ? "$WrapperScript" : "$DirCgi$PROG.$Extension" ); if (index($AWScript,'?')>-1) { $AWScript .= '&'; # $AWScript contains URL parameters } else { $AWScript .= '?'; } # Print html header (Need HTMLOutput,Expires,Lang,StyleSheet,HTMLHeadSectionExpires defined by Read_Config, PageCode defined by Read_Language_Data) if ( !$HeaderHTMLSent ) { &html_head; } # AWStats output is replaced by a plugin output if ($PluginMode) { # my $function="BuildFullHTMLOutput_$PluginMode()"; # eval("$function"); my $function = "BuildFullHTMLOutput_$PluginMode"; &$function(); if ( $? || $@ ) { error("$@"); } &html_end(0); exit 0; } # Security check if ( $AllowAccessFromWebToAuthenticatedUsersOnly && $ENV{'GATEWAY_INTERFACE'} ) { if ($Debug) { debug( "REMOTE_USER=" . $ENV{"REMOTE_USER"} ); } if ( !$ENV{"REMOTE_USER"} ) { error( "Access to statistics is only allowed from an authenticated session to authenticated users." ); } if (@AllowAccessFromWebToFollowingAuthenticatedUsers) { my $userisinlist = 0; my $remoteuser = quotemeta( $ENV{"REMOTE_USER"} ); $remoteuser =~ s/\s/%20/g ; # Allow authenticated user with space in name to be compared to allowed user list my $currentuser = qr/^$remoteuser$/i; # Set precompiled regex foreach (@AllowAccessFromWebToFollowingAuthenticatedUsers) { if (/$currentuser/o) { $userisinlist = 1; last; } } if ( !$userisinlist ) { error( "User '" . $ENV{"REMOTE_USER"} . "' is not allowed to access statistics of this domain/config." ); } } } if ( $AllowAccessFromWebToFollowingIPAddresses && $ENV{'GATEWAY_INTERFACE'} ) { my $IPAddress = $ENV{"REMOTE_ADDR"}; # IPv4 or IPv6 my $useripaddress = &Convert_IP_To_Decimal($IPAddress); my @allowaccessfromipaddresses = split( /[\s,]+/, $AllowAccessFromWebToFollowingIPAddresses ); my $allowaccess = 0; foreach my $ipaddressrange (@allowaccessfromipaddresses) { if ( $ipaddressrange !~ /^(\d+\.\d+\.\d+\.\d+)(?:-(\d+\.\d+\.\d+\.\d+))*$/ && $ipaddressrange !~ /^([0-9A-Fa-f]{1,4}:){1,7}(:|)([0-9A-Fa-f]{1,4}|\/\d)/ ) { error( "AllowAccessFromWebToFollowingIPAddresses is defined to '$AllowAccessFromWebToFollowingIPAddresses' but part of value does not match the correct syntax: IPv4AddressMin[-IPv4AddressMax] or IPv6Address[\/prefix] in \"$ipaddressrange\"" ); } # Test ip v4 if ( $ipaddressrange =~ /^(\d+\.\d+\.\d+\.\d+)(?:-(\d+\.\d+\.\d+\.\d+))*$/ ) { my $ipmin = &Convert_IP_To_Decimal($1); my $ipmax = $2 ? &Convert_IP_To_Decimal($2) : $ipmin; # Is it an authorized ip ? if ( ( $useripaddress >= $ipmin ) && ( $useripaddress <= $ipmax ) ) { $allowaccess = 1; last; } } # Test ip v6 if ( $ipaddressrange =~ /^([0-9A-Fa-f]{1,4}:){1,7}(:|)([0-9A-Fa-f]{1,4}|\/\d)/ ) { if ( $ipaddressrange =~ /::\// ) { my @IPv6split = split( /::/, $ipaddressrange ); if ( $IPAddress =~ /^$IPv6split[0]/ ) { $allowaccess = 1; last; } } elsif ( $ipaddressrange == $IPAddress ) { $allowaccess = 1; last; } } } if ( !$allowaccess ) { error( "Access to statistics is not allowed from your IP Address " . $ENV{"REMOTE_ADDR"} ); } } if ( ( $UpdateStats || $MigrateStats ) && ( !$AllowToUpdateStatsFromBrowser ) && $ENV{'GATEWAY_INTERFACE'} ) { error( "" . ( $UpdateStats ? "Update" : "Migrate" ) . " of statistics has not been allowed from a browser (AllowToUpdateStatsFromBrowser should be set to 1)." ); } if ( scalar keys %HTMLOutput && $MonthRequired eq 'all' ) { if ( !$AllowFullYearView ) { error( "Full year view has not been allowed (AllowFullYearView is set to 0)." ); } if ( $AllowFullYearView < 3 && $ENV{'GATEWAY_INTERFACE'} ) { error( "Full year view has not been allowed from a browser (AllowFullYearView should be set to 3)." ); } } #------------------------------------------ # MIGRATE PROCESS (Must be after reading config cause we need MaxNbOf... and Min...) #------------------------------------------ if ($MigrateStats) { if ($Debug) { debug( "MigrateStats is $MigrateStats", 2 ); } if ( $MigrateStats !~ /^(.*)$PROG(\d\d)(\d\d\d\d)(\d{0,2})(\d{0,2})(.*)\.txt$/ ) { error( "AWStats history file name must match following syntax: ${PROG}MMYYYY[.config].txt", "", "", 1 ); } $DirData = "$1"; $MonthRequired = "$2"; $YearRequired = "$3"; $DayRequired = "$4"; $HourRequired = "$5"; $FileSuffix = "$6"; # Correct DirData if ( !$DirData || $DirData =~ /^\./ ) { if ( !$DirData || $DirData eq '.' ) { $DirData = "$DIR"; } # If not defined or chosen to '.' value then DirData is current dir elsif ( $DIR && $DIR ne '.' ) { $DirData = "$DIR/$DirData"; } } $DirData ||= '.'; # If current dir not defined then we put it to '.' $DirData =~ s/[\\\/]+$//; print "Start migration for file '$MigrateStats'."; print $ENV{'GATEWAY_INTERFACE'} ? "
\n" : "\n"; if ($EnableLockForUpdate) { &Lock_Update(1); } my $newhistory = &Read_History_With_TmpUpdate( $YearRequired, $MonthRequired, $DayRequired, $HourRequired, 1, 0, 'all' ); if ( rename( "$newhistory", "$MigrateStats" ) == 0 ) { unlink "$newhistory"; error( "Failed to rename \"$newhistory\" into \"$MigrateStats\".\nWrite permissions on \"$MigrateStats\" might be wrong" . ( $ENV{'GATEWAY_INTERFACE'} ? " for a 'migration from web'" : "" ) . " or file might be opened." ); } if ($EnableLockForUpdate) { &Lock_Update(0); } print "Migration for file '$MigrateStats' successful."; print $ENV{'GATEWAY_INTERFACE'} ? "
\n" : "\n"; &html_end(1); exit 0; } # Output main frame page and exit. This must be after the security check. if ( $FrameName eq 'index' ) { # Define the NewLinkParams for main chart my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } # Exit if main frame print "\n"; print "\n"; print "\n"; print "<body>"; print "Your browser does not support frames.<br />\n"; print "You must set AWStats UseFramesWhenCGI parameter to 0\n"; print "to see your reports.<br />\n"; print "</body>\n"; print "\n"; &html_end(0); exit 0; } %MonthNumLib = ( "01", "$Message[60]", "02", "$Message[61]", "03", "$Message[62]", "04", "$Message[63]", "05", "$Message[64]", "06", "$Message[65]", "07", "$Message[66]", "08", "$Message[67]", "09", "$Message[68]", "10", "$Message[69]", "11", "$Message[70]", "12", "$Message[71]" ); # Build ListOfYears list with all existing years ( $lastyearbeforeupdate, $lastmonthbeforeupdate, $lastdaybeforeupdate, $lasthourbeforeupdate, $lastdatebeforeupdate ) = ( 0, 0, 0, 0, 0 ); my $datemask = ''; if ( $DatabaseBreak eq 'month' ) { $datemask = '(\d\d)(\d\d\d\d)'; } elsif ( $DatabaseBreak eq 'year' ) { $datemask = '(\d\d\d\d)'; } elsif ( $DatabaseBreak eq 'day' ) { $datemask = '(\d\d)(\d\d\d\d)(\d\d)'; } elsif ( $DatabaseBreak eq 'hour' ) { $datemask = '(\d\d)(\d\d\d\d)(\d\d)(\d\d)'; } if ($Debug) { debug( "Scan for last history files into DirData='$DirData' with mask='$datemask'" ); } my $retval = opendir( DIR, "$DirData" ); if(! $retval) { error( "Failed to open directory $DirData : $!"); } my $regfilesuffix = quotemeta($FileSuffix); foreach ( grep /^$PROG$datemask$regfilesuffix\.txt(|\.gz)$/i, file_filt sort readdir DIR ) { /^$PROG$datemask$regfilesuffix\.txt(|\.gz)$/i; if ( !$ListOfYears{"$2"} || "$1" gt $ListOfYears{"$2"} ) { # ListOfYears contains max month found $ListOfYears{"$2"} = "$1"; } my $rangestring = ( $2 || "" ) . ( $1 || "" ) . ( $3 || "" ) . ( $4 || "" ); if ( $rangestring gt $lastdatebeforeupdate ) { # We are on a new max for mask $lastyearbeforeupdate = ( $2 || "" ); $lastmonthbeforeupdate = ( $1 || "" ); $lastdaybeforeupdate = ( $3 || "" ); $lasthourbeforeupdate = ( $4 || "" ); $lastdatebeforeupdate = $rangestring; } } close DIR; # If at least one file found, get value for LastLine if ($lastyearbeforeupdate) { # Read 'general' section of last history file for LastLine &Read_History_With_TmpUpdate( $lastyearbeforeupdate, $lastmonthbeforeupdate, $lastdaybeforeupdate, $lasthourbeforeupdate, 0, 0, "general" ); } # Warning if lastline in future if ( $LastLine > ( $nowtime + 20000 ) ) { warning( "WARNING: LastLine parameter in history file is '$LastLine' so in future. May be you need to correct manually the line LastLine in some awstats*.$SiteConfig.conf files." ); } # Force LastLine if ( $QueryString =~ /lastline=(\d{14})/i ) { $LastLine = $1; } if ($Debug) { debug("Last year=$lastyearbeforeupdate - Last month=$lastmonthbeforeupdate"); debug("Last day=$lastdaybeforeupdate - Last hour=$lasthourbeforeupdate"); debug("LastLine=$LastLine"); debug("LastLineNumber=$LastLineNumber"); debug("LastLineOffset=$LastLineOffset"); debug("LastLineChecksum=$LastLineChecksum"); } # Init vars &Init_HashArray(); #------------------------------------------ # UPDATE PROCESS #------------------------------------------ my $lastlinenb = 0; my $lastlineoffset = 0; my $lastlineoffsetnext = 0; if ($Debug) { debug( "UpdateStats is $UpdateStats", 2 ); } if ( $UpdateStats && $FrameName ne 'index' && $FrameName ne 'mainleft' ) { # Update only on index page or when not framed to avoid update twice my %MonthNum = ( "Jan", "01", "jan", "01", "Feb", "02", "feb", "02", "Mar", "03", "mar", "03", "Apr", "04", "apr", "04", "May", "05", "may", "05", "Jun", "06", "jun", "06", "Jul", "07", "jul", "07", "Aug", "08", "aug", "08", "Sep", "09", "sep", "09", "Oct", "10", "oct", "10", "Nov", "11", "nov", "11", "Dec", "12", "dec", "12" ) ; # MonthNum must be in english because used to translate log date in apache log files if ( !scalar keys %HTMLOutput ) { print "Create/Update database for config \"$FileConfig\" by AWStats version $VERSION\n"; print "From data in log file \"$LogFile\"...\n"; } my $lastprocessedyear = $lastyearbeforeupdate || 0; my $lastprocessedmonth = $lastmonthbeforeupdate || 0; my $lastprocessedday = $lastdaybeforeupdate || 0; my $lastprocessedhour = $lasthourbeforeupdate || 0; my $lastprocesseddate = ''; if ( $DatabaseBreak eq 'month' ) { $lastprocesseddate = sprintf( "%04i%02i", $lastprocessedyear, $lastprocessedmonth ); } elsif ( $DatabaseBreak eq 'year' ) { $lastprocesseddate = sprintf( "%04i%", $lastprocessedyear ); } elsif ( $DatabaseBreak eq 'day' ) { $lastprocesseddate = sprintf( "%04i%02i%02i", $lastprocessedyear, $lastprocessedmonth, $lastprocessedday ); } elsif ( $DatabaseBreak eq 'hour' ) { $lastprocesseddate = sprintf( "%04i%02i%02i%02i", $lastprocessedyear, $lastprocessedmonth, $lastprocessedday, $lastprocessedhour ); } my @list; # Init RobotsSearchIDOrder required for update process @list = (); if ( $LevelForRobotsDetection >= 1 ) { foreach ( 1 .. $LevelForRobotsDetection ) { push @list, "list$_"; } push @list, "listgen"; # Always added } foreach my $key (@list) { push @RobotsSearchIDOrder, @{"RobotsSearchIDOrder_$key"}; if ($Debug) { debug( "Add " . @{"RobotsSearchIDOrder_$key"} . " elements from RobotsSearchIDOrder_$key into RobotsSearchIDOrder", 2 ); } } if ($Debug) { debug( "RobotsSearchIDOrder has now " . @RobotsSearchIDOrder . " elements", 1 ); } # Init SearchEnginesIDOrder required for update process @list = (); if ( $LevelForSearchEnginesDetection >= 1 ) { foreach ( 1 .. $LevelForSearchEnginesDetection ) { push @list, "list$_"; } push @list, "listgen"; # Always added } foreach my $key (@list) { push @SearchEnginesSearchIDOrder, @{"SearchEnginesSearchIDOrder_$key"}; if ($Debug) { debug( "Add " . @{"SearchEnginesSearchIDOrder_$key"} . " elements from SearchEnginesSearchIDOrder_$key into SearchEnginesSearchIDOrder", 2 ); } } if ($Debug) { debug( "SearchEnginesSearchIDOrder has now " . @SearchEnginesSearchIDOrder . " elements", 1 ); } # Complete HostAliases array my $sitetoanalyze = quotemeta( lc($SiteDomain) ); if ( !@HostAliases ) { warning( "Warning: HostAliases parameter is not defined, $PROG choose \"$SiteDomain localhost 127.0.0.1\"." ); push @HostAliases, qr/^$sitetoanalyze$/i; push @HostAliases, qr/^localhost$/i; push @HostAliases, qr/^127\.0\.0\.1$/i; } else { unshift @HostAliases, qr/^$sitetoanalyze$/i; } # Add SiteDomain as first value # Optimize arrays @HostAliases = &OptimizeArray( \@HostAliases, 1 ); if ($Debug) { debug( "HostAliases precompiled regex list is now @HostAliases", 1 ); } @SkipDNSLookupFor = &OptimizeArray( \@SkipDNSLookupFor, 1 ); if ($Debug) { debug( "SkipDNSLookupFor precompiled regex list is now @SkipDNSLookupFor", 1 ); } @SkipHosts = &OptimizeArray( \@SkipHosts, 1 ); if ($Debug) { debug( "SkipHosts precompiled regex list is now @SkipHosts", 1 ); } @SkipReferrers = &OptimizeArray( \@SkipReferrers, 1 ); if ($Debug) { debug( "SkipReferrers precompiled regex list is now @SkipReferrers", 1 ); } @SkipUserAgents = &OptimizeArray( \@SkipUserAgents, 1 ); if ($Debug) { debug( "SkipUserAgents precompiled regex list is now @SkipUserAgents", 1 ); } @SkipFiles = &OptimizeArray( \@SkipFiles, $URLNotCaseSensitive ); if ($Debug) { debug( "SkipFiles precompiled regex list is now @SkipFiles", 1 ); } @OnlyHosts = &OptimizeArray( \@OnlyHosts, 1 ); if ($Debug) { debug( "OnlyHosts precompiled regex list is now @OnlyHosts", 1 ); } @OnlyUsers = &OptimizeArray( \@OnlyUsers, 1 ); if ($Debug) { debug( "OnlyUsers precompiled regex list is now @OnlyUsers", 1 ); } @OnlyUserAgents = &OptimizeArray( \@OnlyUserAgents, 1 ); if ($Debug) { debug( "OnlyUserAgents precompiled regex list is now @OnlyUserAgents", 1 ); } @OnlyFiles = &OptimizeArray( \@OnlyFiles, $URLNotCaseSensitive ); if ($Debug) { debug( "OnlyFiles precompiled regex list is now @OnlyFiles", 1 ); } @NotPageFiles = &OptimizeArray( \@NotPageFiles, $URLNotCaseSensitive ); if ($Debug) { debug( "NotPageFiles precompiled regex list is now @NotPageFiles", 1 ); } # Precompile the regex search strings with qr @RobotsSearchIDOrder = map { qr/$_/i } @RobotsSearchIDOrder; @WormsSearchIDOrder = map { qr/$_/i } @WormsSearchIDOrder; @BrowsersSearchIDOrder = map { qr/$_/i } @BrowsersSearchIDOrder; @OSSearchIDOrder = map { qr/$_/i } @OSSearchIDOrder; @SearchEnginesSearchIDOrder = map { qr/$_/i } @SearchEnginesSearchIDOrder; my $miscquoted = quotemeta("$MiscTrackerUrl"); my $defquoted = quotemeta("/$DefaultFile[0]"); my $sitewithoutwww = lc($SiteDomain); $sitewithoutwww =~ s/www\.//; $sitewithoutwww = quotemeta($sitewithoutwww); # Define precompiled regex my $regmisc = qr/^$miscquoted/; my $regfavico = qr/\/favicon\.ico$/i; my $regrobot = qr/\/robots\.txt$/i; my $regtruncanchor = qr/#(\w*)$/; my $regtruncurl = qr/([$URLQuerySeparators])(.*)$/; my $regext = qr/\.(\w{1,6})$/; my $regdefault; if ($URLNotCaseSensitive) { $regdefault = qr/$defquoted$/i; } else { $regdefault = qr/$defquoted$/; } my $regipv4 = qr/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; my $regipv4l = qr/^::ffff:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; my $regipv6 = qr/^[0-9A-F]*:/i; my $regvermsie = qr/msie([+_ ]|)([\d\.]*)/i; #my $regvermsie11 = qr/trident\/7\.\d*\;([+_ ]|)rv:([\d\.]*)/i; my $regvermsie11 = qr/trident\/7\.\d*\;([a-zA-Z;+_ ]+|)rv:([\d\.]*)/i; my $regvernetscape = qr/netscape.?\/([\d\.]*)/i; my $regverfirefox = qr/firefox\/([\d\.]*)/i; # For Opera: # OPR/15.0.1266 means Opera 15 # Opera/9.80 ...... Version/12.16 means Opera 12.16 # Mozilla/5.0 .... Opera 11.51 means Opera 11.51 my $regveropera = qr/opera\/9\.80\s.+\sversion\/([\d\.]+)|ope?ra?[\/\s]([\d\.]+)/i; my $regversafari = qr/safari\/([\d\.]*)/i; my $regversafariver = qr/version\/([\d\.]*)/i; my $regverchrome = qr/chrome\/([\d\.]*)/i; my $regverkonqueror = qr/konqueror\/([\d\.]*)/i; my $regversvn = qr/svn\/([\d\.]*)/i; my $regvermozilla = qr/mozilla(\/|)([\d\.]*)/i; my $regnotie = qr/webtv|omniweb|opera/i; my $regnotnetscape = qr/gecko|compatible|opera|galeon|safari|charon/i; my $regnotfirefox = qr/flock/i; my $regnotsafari = qr/android|arora|chrome|shiira/i; my $regreferer = qr/^(\w+):\/\/([^\/:]+)(:\d+|)/; my $regreferernoquery = qr/^([^$URLQuerySeparators]+)/; my $reglocal = qr/^(www\.|)$sitewithoutwww/i; my $regget = qr/get|out/i; my $regsent = qr/sent|put|in/i; # Define value of $pos_xxx, @fieldlib, $PerlParsingFormat &DefinePerlParsingFormat($LogFormat); # Load DNS Cache Files #------------------------------------------ if ($DNSLookup) { &Read_DNS_Cache( \%MyDNSTable, "$DNSStaticCacheFile", "", 1 ) ; # Load with save into a second plugin file if plugin enabled and second file not up to date. No use of FileSuffix if ( $DNSLookup == 1 ) { # System DNS lookup required #if (! eval("use Socket;")) { error("Failed to load perl module Socket."); } #use Socket; &Read_DNS_Cache( \%TmpDNSLookup, "$DNSLastUpdateCacheFile", "$FileSuffix", 0 ) ; # Load with no save into a second plugin file. Use FileSuffix } } # Processing log #------------------------------------------ if ($EnableLockForUpdate) { # Trap signals to remove lock $SIG{INT} = \&SigHandler; # 2 #$SIG{KILL} = \&SigHandler; # 9 #$SIG{TERM} = \&SigHandler; # 15 # Set AWStats update lock &Lock_Update(1); } if ($Debug) { debug("Start Update process (lastprocesseddate=$lastprocesseddate)"); } # Open log file if ($Debug) { debug("Open log file \"$LogFile\""); } open( LOG, "$LogFile" ) || error("Couldn't open server log file \"$LogFile\" : $!"); binmode LOG ; # Avoid premature EOF due to log files corrupted with \cZ or bin chars # Define local variables for loop scan my @field = (); my $counterforflushtest = 0; my $qualifdrop = ''; my $countedtraffic = 0; # Reset chrono for benchmark (first call to GetDelaySinceStart) &GetDelaySinceStart(1); if ( !scalar keys %HTMLOutput ) { print "Phase 1 : First bypass old records, searching new record...\n"; } # Can we try a direct seek access in log ? my $line; if ( $LastLine && $LastLineNumber && $LastLineOffset && $LastLineChecksum ) { # Try a direct seek access to save time if ($Debug) { debug( "Try a direct access to LastLine=$LastLine, LastLineNumber=$LastLineNumber, LastLineOffset=$LastLineOffset, LastLineChecksum=$LastLineChecksum" ); } seek( LOG, $LastLineOffset, 0 ); if ( $line = ) { chomp $line; $line =~ s/\r$//; @field = map( /$PerlParsingFormat/, $line ); if ($Debug) { my $string = ''; foreach ( 0 .. @field - 1 ) { $string .= "$fieldlib[$_]=$field[$_] "; } if ($Debug) { debug( " Read line after direct access: $string", 1 ); } } my $checksum = &CheckSum($line); if ($Debug) { debug( " LastLineChecksum=$LastLineChecksum, Read line checksum=$checksum", 1 ); } if ( $checksum == $LastLineChecksum ) { if ( !scalar keys %HTMLOutput ) { print "Direct access after last parsed record (after line $LastLineNumber)\n"; } $lastlinenb = $LastLineNumber; $lastlineoffset = $LastLineOffset; $lastlineoffsetnext = tell LOG; $NewLinePhase = 1; } else { if ( !scalar keys %HTMLOutput ) { print "Direct access to last remembered record has fallen on another record.\nSo searching new records from beginning of log file...\n"; } $lastlinenb = 0; $lastlineoffset = 0; $lastlineoffsetnext = 0; seek( LOG, 0, 0 ); } } else { if ( !scalar keys %HTMLOutput ) { print "Direct access to last remembered record is out of file.\nSo searching it from beginning of log file...\n"; } $lastlinenb = 0; $lastlineoffset = 0; $lastlineoffsetnext = 0; seek( LOG, 0, 0 ); } } else { # No try of direct seek access if ( !scalar keys %HTMLOutput ) { print "Searching new records from beginning of log file...\n"; } $lastlinenb = 0; $lastlineoffset = 0; $lastlineoffsetnext = 0; } # # Loop on each log line # while ( $line = ) { # 20080525 BEGIN Patch to test if first char of $line = hex "00" then conclude corrupted with binary code my $FirstHexChar; $FirstHexChar = sprintf( "%02X", ord( substr( $line, 0, 1 ) ) ); if ( $FirstHexChar eq '00' ) { $NbOfLinesCorrupted++; if ($ShowCorrupted) { print "Corrupted record line " . ( $lastlinenb + $NbOfLinesParsed ) . " (record starts with hex 00; binary code): $line\n"; } if ( $NbOfLinesParsed >= $NbOfLinesForCorruptedLog && $NbOfLinesParsed == $NbOfLinesCorrupted ) { error( "Format error", $line, $LogFile ); } # Exit with format error next; } # 20080525 END chomp $line; $line =~ s/\r$//; if ( $UpdateFor && $NbOfLinesParsed >= $UpdateFor ) { last; } $NbOfLinesParsed++; $lastlineoffset = $lastlineoffsetnext; $lastlineoffsetnext = tell LOG; if ($ShowSteps) { if ( ( ++$NbOfLinesShowsteps & $NBOFLINESFORBENCHMARK ) == 0 ) { my $delay = &GetDelaySinceStart(0); print "$NbOfLinesParsed lines processed (" . ( $delay > 0 ? $delay : 1000 ) . " ms, " . int( 1000 * $NbOfLinesShowsteps / ( $delay > 0 ? $delay : 1000 ) ) . " lines/second)\n"; } } if ( $LogFormat eq '2' && $line =~ /^#Fields:/ ) { my @fixField = map( /^#Fields: (.*)/, $line ); if ( $fixField[0] !~ /s-kernel-time/ ) { debug( "Found new log format: '" . $fixField[0] . "'", 1 ); &DefinePerlParsingFormat( $fixField[0] ); } } # Parse line record to get all required fields if ( !( @field = map( /$PerlParsingFormat/, $line ) ) ) { # see if the line is a comment, blank or corrupted if ( $line =~ /^#/ || $line =~ /^!/ ) { $NbOfLinesComment++; if ($ShowCorrupted){ print "Comment record line " . ( $lastlinenb + $NbOfLinesParsed ) . ": $line\n"; } } elsif ( $line =~ /^\s*$/ ) { $NbOfLinesBlank++; if ($ShowCorrupted){ print "Blank record line " . ( $lastlinenb + $NbOfLinesParsed ) . "\n"; } }else{ $NbOfLinesCorrupted++; if ($ShowCorrupted){ print "Corrupted record line " . ( $lastlinenb + $NbOfLinesParsed ) . " (record format does not match LogFormat parameter): $line\n"; } } if ( $NbOfLinesParsed >= $NbOfLinesForCorruptedLog && $NbOfLinesParsed == ($NbOfLinesCorrupted + $NbOfLinesComment + $NbOfLinesBlank)) { error( "Format error", $line, $LogFile ); } # Exit with format error if ( $line =~ /^__end_of_file__/i ) { last; } # For test purpose only next; } if ($Debug) { my $string = ''; foreach ( 0 .. @field - 1 ) { $string .= "$fieldlib[$_]=$field[$_] "; } if ($Debug) { debug( " Correct format line " . ( $lastlinenb + $NbOfLinesParsed ) . ": $string", 4 ); } } # Drop wrong virtual host name #---------------------------------------------------------------------- if ( $pos_vh >= 0 && $field[$pos_vh] !~ /^$SiteDomain$/i ) { my $skip = 1; foreach (@HostAliases) { if ( $field[$pos_vh] =~ /$_/ ) { $skip = 0; last; } } if ($skip) { $NbOfLinesDropped++; if ($ShowDropped) { print "Dropped record (virtual hostname '$field[$pos_vh]' does not match SiteDomain='$SiteDomain' nor HostAliases parameters): $line\n"; } next; } } # Drop wrong method/protocol #--------------------------- if ( $LogType ne 'M' ) { $field[$pos_url] =~ s/\s/%20/g; } if ( $LogType eq 'W' && ( $field[$pos_method] eq 'GET' || $field[$pos_method] eq 'POST' || $field[$pos_method] eq 'HEAD' || $field[$pos_method] eq 'PROPFIND' || $field[$pos_method] eq 'CHECKOUT' || $field[$pos_method] eq 'LOCK' || $field[$pos_method] eq 'PROPPATCH' || $field[$pos_method] eq 'OPTIONS' || $field[$pos_method] eq 'MKACTIVITY' || $field[$pos_method] eq 'PUT' || $field[$pos_method] eq 'MERGE' || $field[$pos_method] eq 'DELETE' || $field[$pos_method] eq 'REPORT' || $field[$pos_method] eq 'MKCOL' || $field[$pos_method] eq 'COPY' || $field[$pos_method] eq 'RPC_IN_DATA' || $field[$pos_method] eq 'RPC_OUT_DATA' || $field[$pos_method] eq 'OK' # Webstar || $field[$pos_method] eq 'ERR!' # Webstar || $field[$pos_method] eq 'PRIV' # Webstar ) ) { # HTTP request. Keep only GET, POST, HEAD, *OK* and ERR! for Webstar. Do not keep OPTIONS, TRACE } elsif ( ( $LogType eq 'W' || $LogType eq 'S' ) && ( uc($field[$pos_method]) eq 'GET' || uc($field[$pos_method]) eq 'MMS' || uc($field[$pos_method]) eq 'RTSP' || uc($field[$pos_method]) eq 'HTTP' || uc($field[$pos_method]) eq 'RTP' ) ) { # Streaming request (windows media server, realmedia or darwin streaming server) } elsif ( $LogType eq 'M' && $field[$pos_method] eq 'SMTP' ) { # Mail request ('SMTP' for mail log with maillogconvert.pl preprocessor) } elsif ( $LogType eq 'F' && ( $field[$pos_method] eq 'RETR' || $field[$pos_method] eq 'o' || $field[$pos_method] =~ /$regget/o ) ) { # FTP GET request } elsif ( $LogType eq 'F' && ( $field[$pos_method] eq 'STOR' || $field[$pos_method] eq 'i' || $field[$pos_method] =~ /$regsent/o ) ) { # FTP SENT request } elsif($line =~ m/#Fields:/){ # log #fields as comment $NbOfLinesComment++; next; }else{ $NbOfLinesDropped++; if ($ShowDropped) { print "Dropped record (method/protocol '$field[$pos_method]' not qualified when LogType=$LogType): $line\n"; } next; } $field[$pos_date] =~ tr/,-\/ \tT/::::::/s; # " \t" is used instead of "\s" not known with tr my @dateparts = split( /:/, $field[$pos_date] ); # tr and split faster than @dateparts=split(/[\/\-:\s]/,$field[$pos_date]) # Detected date format: # dddddddddd, YYYY-MM-DD HH:MM:SS (IIS), MM/DD/YY\tHH:MM:SS, # DD/Month/YYYY:HH:MM:SS (Apache), DD/MM/YYYY HH:MM:SS, Mon DD HH:MM:SS, # YYYY-MM-DDTHH:MM:SS (iso) if ( !$dateparts[1] ) { # Unix timestamp ( $dateparts[5], $dateparts[4], $dateparts[3], $dateparts[0], $dateparts[1], $dateparts[2] ) = localtime( int( $field[$pos_date] ) ); $dateparts[1]++; $dateparts[2] += 1900; } elsif ( $dateparts[0] =~ /^....$/ ) { my $tmp = $dateparts[0]; $dateparts[0] = $dateparts[2]; $dateparts[2] = $tmp; } elsif ( $field[$pos_date] =~ /^..:..:..:/ ) { $dateparts[2] += 2000; my $tmp = $dateparts[0]; $dateparts[0] = $dateparts[1]; $dateparts[1] = $tmp; } elsif ( $dateparts[0] =~ /^...$/ ) { my $tmp = $dateparts[0]; $dateparts[0] = $dateparts[1]; $dateparts[1] = $tmp; $tmp = $dateparts[5]; $dateparts[5] = $dateparts[4]; $dateparts[4] = $dateparts[3]; $dateparts[3] = $dateparts[2]; $dateparts[2] = $tmp || $nowyear; } if ( exists( $MonthNum{ $dateparts[1] } ) ) { $dateparts[1] = $MonthNum{ $dateparts[1] }; } # Change lib month in num month if necessary if ( $dateparts[1] <= 0 ) { # Date corrupted (for example $dateparts[1]='dic' for december month in a spanish log file) $NbOfLinesCorrupted++; if ($ShowCorrupted) { print "Corrupted record line " . ( $lastlinenb + $NbOfLinesParsed ) . " (bad date format for month, may be month are not in english ?): $line\n"; } next; } # Now @dateparts is (DD,MM,YYYY,HH,MM,SS) and we're going to create $timerecord=YYYYMMDDHHMMSS if ( $PluginsLoaded{'ChangeTime'}{'timezone'} ) { @dateparts = ChangeTime_timezone( \@dateparts ); } my $yearrecord = int( $dateparts[2] ); my $monthrecord = int( $dateparts[1] ); my $dayrecord = int( $dateparts[0] ); my $hourrecord = int( $dateparts[3] ); my $daterecord = ''; if ( $DatabaseBreak eq 'month' ) { $daterecord = sprintf( "%04i%02i", $yearrecord, $monthrecord ); } elsif ( $DatabaseBreak eq 'year' ) { $daterecord = sprintf( "%04i%", $yearrecord ); } elsif ( $DatabaseBreak eq 'day' ) { $daterecord = sprintf( "%04i%02i%02i", $yearrecord, $monthrecord, $dayrecord ); } elsif ( $DatabaseBreak eq 'hour' ) { $daterecord = sprintf( "%04i%02i%02i%02i", $yearrecord, $monthrecord, $dayrecord, $hourrecord ); } # TODO essayer de virer yearmonthrecord my $yearmonthdayrecord = sprintf( "$dateparts[2]%02i%02i", $dateparts[1], $dateparts[0] ); my $timerecord = ( ( int("$yearmonthdayrecord") * 100 + $dateparts[3] ) * 100 + $dateparts[4] ) * 100 + $dateparts[5]; # Check date #----------------------- if ( $LogType eq 'M' && $timerecord > $tomorrowtime ) { # Postfix/Sendmail does not store year, so we assume that year is year-1 if record is in future $yearrecord--; if ( $DatabaseBreak eq 'month' ) { $daterecord = sprintf( "%04i%02i", $yearrecord, $monthrecord ); } elsif ( $DatabaseBreak eq 'year' ) { $daterecord = sprintf( "%04i%", $yearrecord ); } elsif ( $DatabaseBreak eq 'day' ) { $daterecord = sprintf( "%04i%02i%02i", $yearrecord, $monthrecord, $dayrecord ); } elsif ( $DatabaseBreak eq 'hour' ) { $daterecord = sprintf( "%04i%02i%02i%02i", $yearrecord, $monthrecord, $dayrecord, $hourrecord ); } # TODO essayer de virer yearmonthrecord $yearmonthdayrecord = sprintf( "$yearrecord%02i%02i", $dateparts[1], $dateparts[0] ); $timerecord = ( ( int("$yearmonthdayrecord") * 100 + $dateparts[3] ) * 100 + $dateparts[4] ) * 100 + $dateparts[5]; } if ( $timerecord < 10000000000000 || $timerecord > $tomorrowtime ) { $NbOfLinesCorrupted++; if ($ShowCorrupted) { print "Corrupted record (invalid date, timerecord=$timerecord): $line\n"; } next; # Should not happen, kept in case of parasite/corrupted line } if ($NewLinePhase) { # TODO NOTSORTEDRECORDTOLERANCE does not work around midnight if ( $timerecord < ( $LastLine - $NOTSORTEDRECORDTOLERANCE ) ) { # Should not happen, kept in case of parasite/corrupted old line $NbOfLinesCorrupted++; if ($ShowCorrupted) { print "Corrupted record (date $timerecord lower than $LastLine-$NOTSORTEDRECORDTOLERANCE): $line\n"; } next; } } else { if ( $timerecord <= $LastLine ) { # Already processed $NbOfOldLines++; next; } # We found a new line. This will replace comparison "<=" with "<" between timerecord and LastLine (we should have only new lines now) $NewLinePhase = 1; # We will never enter here again if ($ShowSteps) { if ( $NbOfLinesShowsteps > 1 && ( $NbOfLinesShowsteps & $NBOFLINESFORBENCHMARK ) ) { my $delay = &GetDelaySinceStart(0); print "" . ( $NbOfLinesParsed - 1 ) . " lines processed (" . ( $delay > 0 ? $delay : 1000 ) . " ms, " . int( 1000 * ( $NbOfLinesShowsteps - 1 ) / ( $delay > 0 ? $delay : 1000 ) ) . " lines/second)\n"; } &GetDelaySinceStart(1); $NbOfLinesShowsteps = 1; } if ( !scalar keys %HTMLOutput ) { print "Phase 2 : Now process new records (Flush history on disk after " . ( $LIMITFLUSH << 2 ) . " hosts)...\n"; #print "Phase 2 : Now process new records (Flush history on disk after ".($LIMITFLUSH<<2)." hosts or ".($LIMITFLUSH)." URLs)...\n"; } } # Convert URL for Webstar to common URL if ( $LogFormat eq '3' ) { $field[$pos_url] =~ s/:/\//g; if ( $field[$pos_code] eq '-' ) { $field[$pos_code] = '200'; } } # Here, field array, timerecord and yearmonthdayrecord are initialized for log record if ($Debug) { debug( " This is a not already processed record ($timerecord)", 4 ); } # Check if there's a CloudFlare Visitor IP in the query string # If it does, replace the ip if ( $pos_query >= 0 && $field[$pos_query] && $field[$pos_query] =~ /\[CloudFlare_Visitor_IP[:](\d+[.]\d+[.]\d+[.]\d+)\]/ ) { $field[$pos_host] = "$1"; } # We found a new line #---------------------------------------- if ( $timerecord > $LastLine ) { $LastLine = $timerecord; } # Test should always be true except with not sorted log files # Skip for some client host IP addresses, some URLs, other URLs if ( @SkipHosts && ( &SkipHost( $field[$pos_host] ) || ( $pos_hostr && &SkipHost( $field[$pos_hostr] ) ) ) ) { $qualifdrop = "Dropped record (host $field[$pos_host]" . ( $pos_hostr ? " and $field[$pos_hostr]" : "" ) . " not qualified by SkipHosts)"; } elsif ( @SkipFiles && &SkipFile( $field[$pos_url] ) ) { $qualifdrop = "Dropped record (URL $field[$pos_url] not qualified by SkipFiles)"; } elsif (@SkipUserAgents && $pos_agent >= 0 && &SkipUserAgent( $field[$pos_agent] ) ) { $qualifdrop = "Dropped record (user agent '$field[$pos_agent]' not qualified by SkipUserAgents)"; } elsif (@SkipReferrers && $pos_referer >= 0 && &SkipReferrer( $field[$pos_referer] ) ) { $qualifdrop = "Dropped record (URL $field[$pos_referer] not qualified by SkipReferrers)"; } elsif (@OnlyHosts && !&OnlyHost( $field[$pos_host] ) && ( !$pos_hostr || !&OnlyHost( $field[$pos_hostr] ) ) ) { $qualifdrop = "Dropped record (host $field[$pos_host]" . ( $pos_hostr ? " and $field[$pos_hostr]" : "" ) . " not qualified by OnlyHosts)"; } elsif ( @OnlyUsers && !&OnlyUser( $field[$pos_logname] ) ) { $qualifdrop = "Dropped record (URL $field[$pos_logname] not qualified by OnlyUsers)"; } elsif ( @OnlyFiles && !&OnlyFile( $field[$pos_url] ) ) { $qualifdrop = "Dropped record (URL $field[$pos_url] not qualified by OnlyFiles)"; } elsif ( @OnlyUserAgents && !&OnlyUserAgent( $field[$pos_agent] ) ) { $qualifdrop = "Dropped record (user agent '$field[$pos_agent]' not qualified by OnlyUserAgents)"; } if ($qualifdrop) { $NbOfLinesDropped++; if ($Debug) { debug( "$qualifdrop: $line", 4 ); } if ($ShowDropped) { print "$qualifdrop: $line\n"; } $qualifdrop = ''; next; } # Record is approved #------------------- # Is it in a new break section ? #------------------------------- if ( $daterecord > $lastprocesseddate ) { # A new break to process if ( $lastprocesseddate > 0 ) { # We save data of previous break &Read_History_With_TmpUpdate( $lastprocessedyear, $lastprocessedmonth, $lastprocessedday, $lastprocessedhour, 1, 1, "all", ( $lastlinenb + $NbOfLinesParsed ), $lastlineoffset, &CheckSum($line) ); $counterforflushtest = 0; # We reset counterforflushtest } $lastprocessedyear = $yearrecord; $lastprocessedmonth = $monthrecord; $lastprocessedday = $dayrecord; $lastprocessedhour = $hourrecord; if ( $DatabaseBreak eq 'month' ) { $lastprocesseddate = sprintf( "%04i%02i", $yearrecord, $monthrecord ); } elsif ( $DatabaseBreak eq 'year' ) { $lastprocesseddate = sprintf( "%04i%", $yearrecord ); } elsif ( $DatabaseBreak eq 'day' ) { $lastprocesseddate = sprintf( "%04i%02i%02i", $yearrecord, $monthrecord, $dayrecord ); } elsif ( $DatabaseBreak eq 'hour' ) { $lastprocesseddate = sprintf( "%04i%02i%02i%02i", $yearrecord, $monthrecord, $dayrecord, $hourrecord ); } } $countedtraffic = 0; $NbOfNewLines++; # Convert $field[$pos_size] # if ($field[$pos_size] eq '-') { $field[$pos_size]=0; } # Define a clean target URL and referrer URL # We keep a clean $field[$pos_url] and # we store original value for urlwithnoquery, tokenquery and standalonequery #--------------------------------------------------------------------------- if ($URLNotCaseSensitive) { $field[$pos_url] = lc( $field[$pos_url] ); } # Possible URL syntax for $field[$pos_url]: /mydir/mypage.ext?param1=x¶m2=y#aaa, /mydir/mypage.ext#aaa, / my $urlwithnoquery; my $tokenquery; my $standalonequery; my $anchor = ''; if ( $field[$pos_url] =~ s/$regtruncanchor//o ) { $anchor = $1; } # Remove and save anchor if ($URLWithQuery) { $urlwithnoquery = $field[$pos_url]; my $foundparam = ( $urlwithnoquery =~ s/$regtruncurl//o ); $tokenquery = $1 || ''; $standalonequery = $2 || ''; # For IIS setup, if pos_query is enabled we need to combine the URL to query strings if ( !$foundparam && $pos_query >= 0 && $field[$pos_query] && $field[$pos_query] ne '-' ) { $foundparam = 1; $tokenquery = '?'; $standalonequery = $field[$pos_query]; # Define query $field[$pos_url] .= '?' . $field[$pos_query]; } if ($foundparam) { # Keep only params that are defined in URLWithQueryWithOnlyFollowingParameters my $newstandalonequery = ''; if (@URLWithQueryWithOnly) { foreach (@URLWithQueryWithOnly) { foreach my $p ( split( /&/, $standalonequery ) ) { if ($URLNotCaseSensitive) { if ( $p =~ /^$_=/i ) { $newstandalonequery .= "$p&"; last; } } else { if ( $p =~ /^$_=/ ) { $newstandalonequery .= "$p&"; last; } } } } chop $newstandalonequery; } # Remove params that are marked to be ignored in URLWithQueryWithoutFollowingParameters elsif (@URLWithQueryWithout) { foreach my $p ( split( /&/, $standalonequery ) ) { my $found = 0; foreach (@URLWithQueryWithout) { #if ($Debug) { debug(" Check if '$_=' is param '$p' to remove it from query",5); } if ($URLNotCaseSensitive) { if ( $p =~ /^$_=/i ) { $found = 1; last; } } else { if ( $p =~ /^$_=/ ) { $found = 1; last; } } } if ( !$found ) { $newstandalonequery .= "$p&"; } } chop $newstandalonequery; } else { $newstandalonequery = $standalonequery; } # Define query $field[$pos_url] = $urlwithnoquery; if ($newstandalonequery) { $field[$pos_url] .= "$tokenquery$newstandalonequery"; } } } else { # Trunc parameters of URL $field[$pos_url] =~ s/$regtruncurl//o; $urlwithnoquery = $field[$pos_url]; $tokenquery = $1 || ''; $standalonequery = $2 || ''; # For IIS setup, if pos_query is enabled we need to use it for query strings if ( $pos_query >= 0 && $field[$pos_query] && $field[$pos_query] ne '-' ) { $tokenquery = '?'; $standalonequery = $field[$pos_query]; } } if ( $URLWithAnchor && $anchor ) { $field[$pos_url] .= "#$anchor"; } # Restore anchor # Here now urlwithnoquery is /mydir/mypage.ext, /mydir, /, /page#XXX # Here now tokenquery is '' or '?' or ';' # Here now standalonequery is '' or 'param1=x' # Define page and extension #-------------------------- my $PageBool = 1; # Extension my $extension = Get_Extension($regext, $urlwithnoquery); if ( $NotPageList{$extension} || ($MimeHashLib{$extension}[1]) && $MimeHashLib{$extension}[1] ne 'p') { $PageBool = 0;} if ( @NotPageFiles && &NotPageFile( $field[$pos_url] ) ) { $PageBool = 0; } # Analyze: misc tracker (must be before return code) #--------------------------------------------------- if ( $urlwithnoquery =~ /$regmisc/o ) { if ($Debug) { debug( " Found an URL that is a MiscTracker record with standalonequery=$standalonequery", 2 ); } my $foundparam = 0; foreach ( split( /&/, $standalonequery ) ) { if ( $_ =~ /^screen=(\d+)x(\d+)/i ) { $foundparam++; $_screensize_h{"$1x$2"}++; next; } #if ($_ =~ /cdi=(\d+)/i) { $foundparam++; $_screendepth_h{"$1"}++; next; } if ( $_ =~ /^nojs=(\w+)/i ) { $foundparam++; if ( $1 eq 'y' ) { $_misc_h{"JavascriptDisabled"}++; } next; } if ( $_ =~ /^java=(\w+)/i ) { $foundparam++; if ( $1 eq 'true' ) { $_misc_h{"JavaEnabled"}++; } next; } if ( $_ =~ /^shk=(\w+)/i ) { $foundparam++; if ( $1 eq 'y' ) { $_misc_h{"DirectorSupport"}++; } next; } if ( $_ =~ /^fla=(\w+)/i ) { $foundparam++; if ( $1 eq 'y' ) { $_misc_h{"FlashSupport"}++; } next; } if ( $_ =~ /^rp=(\w+)/i ) { $foundparam++; if ( $1 eq 'y' ) { $_misc_h{"RealPlayerSupport"}++; } next; } if ( $_ =~ /^mov=(\w+)/i ) { $foundparam++; if ( $1 eq 'y' ) { $_misc_h{"QuickTimeSupport"}++; } next; } if ( $_ =~ /^wma=(\w+)/i ) { $foundparam++; if ( $1 eq 'y' ) { $_misc_h{"WindowsMediaPlayerSupport"}++; } next; } if ( $_ =~ /^pdf=(\w+)/i ) { $foundparam++; if ( $1 eq 'y' ) { $_misc_h{"PDFSupport"}++; } next; } } if ($foundparam) { $_misc_h{"TotalMisc"}++; } } # Analyze: successful favicon (=> countedtraffic=1 if favicon) #-------------------------------------------------- if ( $urlwithnoquery =~ /$regfavico/o ) { if ( $field[$pos_code] != 404 ) { $_misc_h{'AddToFavourites'}++; } $countedtraffic = 1; # favicon is a case that must not be counted anywhere else $_time_nv_h[$hourrecord]++; if ( $field[$pos_code] != 404 && $pos_size>0) { $_time_nv_k[$hourrecord] += int( $field[$pos_size] ); } } # Analyze: Worms (=> countedtraffic=2 if worm) #--------------------------------------------- if ( !$countedtraffic ) { if ($LevelForWormsDetection) { foreach (@WormsSearchIDOrder) { if ( $field[$pos_url] =~ /$_/ ) { # It's a worm my $worm = &UnCompileRegex($_); if ($Debug) { debug( " Record is a hit from a worm identified by '$worm'", 2 ); } $worm = $WormsHashID{$worm} || 'unknown'; $_worm_h{$worm}++; if ($pos_size>0){$_worm_k{$worm} += int( $field[$pos_size] );} $_worm_l{$worm} = $timerecord; $countedtraffic = 2; if ($PageBool) { $_time_nv_p[$hourrecord]++; } $_time_nv_h[$hourrecord]++; if ($pos_size>0){$_time_nv_k[$hourrecord] += int( $field[$pos_size] );} last; } } } } # Analyze: Status code (=> countedtraffic=3 if error) #---------------------------------------------------- if ( !$countedtraffic ) { if ( $LogType eq 'W' || $LogType eq 'S' ) { # HTTP record or Stream record if ( $ValidHTTPCodes{ $field[$pos_code] } ) { # Code is valid if ( int($field[$pos_code]) == 304 && $pos_size>0) { $field[$pos_size] = 0; } # track downloads if (int($field[$pos_code]) == 200 && $MimeHashLib{$extension}[1] eq 'd' && $urlwithnoquery !~ /robots.txt$/ ) # We track download if $MimeHashLib{$extension}[1] = 'd' { $_downloads{$urlwithnoquery}->{'AWSTATS_HITS'}++; $_downloads{$urlwithnoquery}->{'AWSTATS_SIZE'} += ($pos_size>0 ? int($field[$pos_size]) : 0); if ($Debug) { debug( " New download detected: '$urlwithnoquery'", 2 ); } } # handle 206 download continuation message IF we had a successful 200 before, otherwise it goes in errors }elsif(int($field[$pos_code]) == 206 #&& $_downloads{$urlwithnoquery}->{$field[$pos_host]}[0] > 0 && ($MimeHashLib{$extension}[1] eq 'd')){ $_downloads{$urlwithnoquery}->{'AWSTATS_SIZE'} += ($pos_size>0 ? int($field[$pos_size]) : 0); $_downloads{$urlwithnoquery}->{'AWSTATS_206'}++; #$_downloads{$urlwithnoquery}->{$field[$pos_host]}[1] = $timerecord; if ($pos_size>0){ #$_downloads{$urlwithnoquery}->{$field[$pos_host]}[2] = int($field[$pos_size]); $DayBytes{$yearmonthdayrecord} += int($field[$pos_size]); $_time_k[$hourrecord] += int($field[$pos_size]); } $countedtraffic = 6; # 206 continued download, so we track bandwidth but not pages or hits if ($Debug) { debug( " Download continuation detected: '$urlwithnoquery'", 2 ); } }else { # Code is not valid if ( $field[$pos_code] !~ /^\d\d\d$/ ) { $field[$pos_code] = 999; } $_errors_h{ $field[$pos_code] }++; if ($pos_size>0){$_errors_k{ $field[$pos_code] } += int( $field[$pos_size] );} foreach my $code ( keys %TrapInfosForHTTPErrorCodes ) { if ( $field[$pos_code] == $code ) { # This is an error code which referrer need to be tracked my $newurl = substr( $field[$pos_url], 0, $MaxLengthOfStoredURL ); $newurl =~ s/[$URLQuerySeparators].*$//; $_sider_h{$code}{$newurl}++; if ( $pos_referer >= 0 && $ShowHTTPErrorsPageDetail =~ /R/i ) { my $newreferer = $field[$pos_referer]; if ( !$URLReferrerWithQuery ) { $newreferer =~ s/[$URLQuerySeparators].*$//; } $_referer_h{$code}{$newurl} = $newreferer; } if ( $pos_host >= 0 && $ShowHTTPErrorsPageDetail =~ /H/i ) { my $newhost = $field[$pos_host]; if ( !$URLReferrerWithQuery ) { $newhost =~ s/[$URLQuerySeparators].*$//; } $_err_host_h{$code}{$newurl} = $newhost; last; } } } if ($Debug) { debug( " Record stored in the status code chart (status code=$field[$pos_code])", 3 ); } $countedtraffic = 3; if ($PageBool) { $_time_nv_p[$hourrecord]++; } $_time_nv_h[$hourrecord]++; if ($pos_size>0){$_time_nv_k[$hourrecord] += int( $field[$pos_size] );} } } elsif ( $LogType eq 'M' ) { # Mail record if ( !$ValidSMTPCodes{ $field[$pos_code] } ) { # Code is not valid $_errors_h{ $field[$pos_code] }++; if ( $field[$pos_size] ne '-' && $pos_size>0) { $_errors_k{ $field[$pos_code] } += int( $field[$pos_size] ); } if ($Debug) { debug( " Record stored in the status code chart (status code=$field[$pos_code])", 3 ); } $countedtraffic = 3; if ($PageBool) { $_time_nv_p[$hourrecord]++; } $_time_nv_h[$hourrecord]++; if ( $field[$pos_size] ne '-' && $pos_size>0) { $_time_nv_k[$hourrecord] += int( $field[$pos_size] ); } } } elsif ( $LogType eq 'F' ) { # FTP record } } # Analyze: Robot from robot database (=> countedtraffic=4 if robot) #------------------------------------------------------------------ if ( !$countedtraffic ) { if ( $pos_agent >= 0 ) { if ($DecodeUA) { $field[$pos_agent] =~ s/%20/_/g; } # This is to support servers (like Roxen) that writes user agent with %20 in it $UserAgent = $field[$pos_agent]; if ( $UserAgent && $UserAgent eq '-' ) { $UserAgent = ''; } if ($LevelForRobotsDetection) { if ($UserAgent) { my $uarobot = $TmpRobot{$UserAgent}; if ( !$uarobot ) { #study $UserAgent; Does not increase speed foreach (@RobotsSearchIDOrder) { if ( $UserAgent =~ /$_/ ) { my $bot = &UnCompileRegex($_); $TmpRobot{$UserAgent} = $uarobot = "$bot" ; # Last time, we won't search if robot or not. We know it is. if ($Debug) { debug( " UserAgent '$UserAgent' is added to TmpRobot with value '$bot'", 2 ); } last; } } if ( !$uarobot ) { # Last time, we won't search if robot or not. We know it's not. $TmpRobot{$UserAgent} = $uarobot = '-'; } } if ( $uarobot ne '-' ) { # If robot, we stop here if ($Debug) { debug( " UserAgent '$UserAgent' contains robot ID '$uarobot'", 2 ); } $_robot_h{$uarobot}++; if ( $field[$pos_size] ne '-' && $pos_size>0) { $_robot_k{$uarobot} += int( $field[$pos_size] ); } $_robot_l{$uarobot} = $timerecord; if ( $urlwithnoquery =~ /$regrobot/o ) { $_robot_r{$uarobot}++; } $countedtraffic = 4; if ($PageBool) { $_time_nv_p[$hourrecord]++; } $_time_nv_h[$hourrecord]++; if ( $field[$pos_size] ne '-' && $pos_size>0) { $_time_nv_k[$hourrecord] += int( $field[$pos_size] ); } } } else { my $uarobot = 'no_user_agent'; # It's a robot or at least a bad browser, we stop here if ($Debug) { debug( " UserAgent not defined so it should be a robot, saved as robot 'no_user_agent'", 2 ); } $_robot_h{$uarobot}++; if ($pos_size>0){$_robot_k{$uarobot} += int( $field[$pos_size] );} $_robot_l{$uarobot} = $timerecord; if ( $urlwithnoquery =~ /$regrobot/o ) { $_robot_r{$uarobot}++; } $countedtraffic = 4; if ($PageBool) { $_time_nv_p[$hourrecord]++; } $_time_nv_h[$hourrecord]++; if ($pos_size>0){$_time_nv_k[$hourrecord] += int( $field[$pos_size] );} } } } } # Analyze: Robot from "hit on robots.txt" file (=> countedtraffic=5 if robot) # ------------------------------------------------------------------------- if ( !$countedtraffic ) { if ( $urlwithnoquery =~ /$regrobot/o ) { if ($Debug) { debug( " It's an unknown robot", 2 ); } $_robot_h{'unknown'}++; if ($pos_size>0){$_robot_k{'unknown'} += int( $field[$pos_size] );} $_robot_l{'unknown'} = $timerecord; $_robot_r{'unknown'}++; $countedtraffic = 5; # Must not be counted somewhere else if ($PageBool) { $_time_nv_p[$hourrecord]++; } $_time_nv_h[$hourrecord]++; if ($pos_size>0){$_time_nv_k[$hourrecord] += int( $field[$pos_size] );} } } # Analyze: File type - Compression #--------------------------------- if ( !$countedtraffic || $countedtraffic == 6) { if ($LevelForFileTypesDetection) { if ($countedtraffic != 6){$_filetypes_h{$extension}++;} if ( $field[$pos_size] ne '-' && $pos_size>0) { $_filetypes_k{$extension} += int( $field[$pos_size] ); } # Compression if ( $pos_gzipin >= 0 && $field[$pos_gzipin] ) { # If in and out in log my ( $notused, $in ) = split( /:/, $field[$pos_gzipin] ); my ( $notused1, $out, $notused2 ) = split( /:/, $field[$pos_gzipout] ); if ($out) { $_filetypes_gz_in{$extension} += $in; $_filetypes_gz_out{$extension} += $out; } } elsif ( $pos_compratio >= 0 && ( $field[$pos_compratio] =~ /(\d+)/ ) ) { # Calculate in/out size from percentage if ( $fieldlib[$pos_compratio] eq 'gzipratio' ) { # with mod_gzip: % is size (before-after)/before (low for jpg) ?????????? $_filetypes_gz_in{$extension} += int( $field[$pos_size] * 100 / ( ( 100 - $1 ) || 1 ) ); } else { # with mod_deflate: % is size after/before (high for jpg) $_filetypes_gz_in{$extension} += int( $field[$pos_size] * 100 / ( $1 || 1 ) ); } if ($pos_size>0){$_filetypes_gz_out{$extension} += int( $field[$pos_size] );} } } # Analyze: Date - Hour - Pages - Hits - Kilo #------------------------------------------- if ($PageBool) { # Replace default page name with / only ('if' is to increase speed when only 1 value in @DefaultFile) if ( @DefaultFile > 1 ) { foreach my $elem (@DefaultFile) { if ( $field[$pos_url] =~ s/\/$elem$/\// ) { last; } } } else { $field[$pos_url] =~ s/$regdefault/\//o; } # FirstTime and LastTime are First and Last human visits (so changed if access to a page) $FirstTime{$lastprocesseddate} ||= $timerecord; $LastTime{$lastprocesseddate} = $timerecord; $DayPages{$yearmonthdayrecord}++; $_url_p{ $field[$pos_url] }++; #Count accesses for page (page) if ( $field[$pos_size] ne '-' && $pos_size>0) { $_url_k{ $field[$pos_url] } += int( $field[$pos_size] ); } $_time_p[$hourrecord]++; #Count accesses for hour (page) # TODO Use an id for hash key of url # $_url_t{$_url_id} } if ($countedtraffic != 6){$_time_h[$hourrecord]++;} if ($countedtraffic != 6){$DayHits{$yearmonthdayrecord}++;} #Count accesses for hour (hit) if ( $field[$pos_size] ne '-' && $pos_size>0) { $_time_k[$hourrecord] += int( $field[$pos_size] ); $DayBytes{$yearmonthdayrecord} += int( $field[$pos_size] ); #Count accesses for hour (kb) } # Analyze: Login #--------------- if ( $pos_logname >= 0 && $field[$pos_logname] && $field[$pos_logname] ne '-' ) { $field[$pos_logname] =~ s/ /_/g; # This is to allow space in logname if ( $LogFormat eq '6' ) { $field[$pos_logname] =~ s/^\"//; $field[$pos_logname] =~ s/\"$//; } # logname field has " with Domino 6+ if ($AuthenticatedUsersNotCaseSensitive) { $field[$pos_logname] = lc( $field[$pos_logname] ); } # We found an authenticated user if ($PageBool) { $_login_p{ $field[$pos_logname] }++; } #Count accesses for page (page) if ($countedtraffic != 6){$_login_h{$field[$pos_logname]}++;} #Count accesses for page (hit) if ($pos_size>0){$_login_k{ $field[$pos_logname] } += int( $field[$pos_size] );} #Count accesses for page (kb) $_login_l{ $field[$pos_logname] } = $timerecord; } } # Do DNS lookup #-------------- my $Host = $field[$pos_host]; my $HostResolved = '' ; # HostResolved will be defined in next paragraf if countedtraffic is true if ( !$countedtraffic || $countedtraffic == 6) { my $ip = 0; if ($DNSLookup) { # DNS lookup is 1 or 2 if ( $Host =~ /$regipv4l/o ) { # IPv4 lighttpd $Host =~ s/^::ffff://; $ip = 4; } elsif ( $Host =~ /$regipv4/o ) { $ip = 4; } # IPv4 elsif ( $Host =~ /$regipv6/o ) { $ip = 6; } # IPv6 if ($ip) { # Check in static DNS cache file $HostResolved = $MyDNSTable{$Host}; if ($HostResolved) { if ($Debug) { debug( " DNS lookup asked for $Host and found in static DNS cache file: $HostResolved", 4 ); } } elsif ( $DNSLookup == 1 ) { # Check in session cache (dynamic DNS cache file + session DNS cache) $HostResolved = $TmpDNSLookup{$Host}; if ( !$HostResolved ) { if ( @SkipDNSLookupFor && &SkipDNSLookup($Host) ) { $HostResolved = $TmpDNSLookup{$Host} = '*'; if ($Debug) { debug( " No need of reverse DNS lookup for $Host, skipped at user request.", 4 ); } } else { if ( $ip == 4 ) { my $lookupresult = gethostbyaddr( pack( "C4", split( /\./, $Host ) ), AF_INET ) ; # This is very slow, may spend 20 seconds if ( !$lookupresult || $lookupresult =~ /$regipv4/o || !IsAscii($lookupresult) ) { $TmpDNSLookup{$Host} = $HostResolved = '*'; } else { $TmpDNSLookup{$Host} = $HostResolved = $lookupresult; } if ($Debug) { debug( " Reverse DNS lookup for $Host done: $HostResolved", 4 ); } } elsif ( $ip == 6 ) { if ( $PluginsLoaded{'GetResolvedIP'} {'ipv6'} ) { my $lookupresult = GetResolvedIP_ipv6($Host); if ( !$lookupresult || !IsAscii($lookupresult) ) { $TmpDNSLookup{$Host} = $HostResolved = '*'; } else { $TmpDNSLookup{$Host} = $HostResolved = $lookupresult; } } else { $TmpDNSLookup{$Host} = $HostResolved = '*'; warning( "Reverse DNS lookup for $Host not available without ipv6 plugin enabled." ); } } else { error("Bad value vor ip"); } } } } else { $HostResolved = '*'; if ($Debug) { debug( " DNS lookup by static DNS cache file asked for $Host but not found.", 4 ); } } } else { if ($Debug) { debug( " DNS lookup asked for $Host but this is not an IP address.", 4 ); } $DNSLookupAlreadyDone = $LogFile; } } else { if ( $Host =~ /$regipv4l/o ) { $Host =~ s/^::ffff://; $HostResolved = '*'; $ip = 4; } elsif ( $Host =~ /$regipv4/o ) { $HostResolved = '*'; $ip = 4; } # IPv4 elsif ( $Host =~ /$regipv6/o ) { $HostResolved = '*'; $ip = 6; } # IPv6 if ($Debug) { debug( " No DNS lookup asked.", 4 ); } } # Analyze: Country (Top-level domain) #------------------------------------ if ($Debug) { debug( " Search country (Host=$Host HostResolved=$HostResolved ip=$ip)", 4 ); } my $Domain = 'ip'; # Set $HostResolved to host and resolve domain if ( $HostResolved eq '*' ) { # $Host is an IP address and is not resolved (failed or not asked) or resolution gives an IP address $HostResolved = $Host; # Resolve Domain if ( $PluginsLoaded{'GetCountryCodeByAddr'}{'geoip6'} ) { $Domain = GetCountryCodeByAddr_geoip6($HostResolved); } elsif ( $PluginsLoaded{'GetCountryCodeByAddr'}{'geoip'} ) { $Domain = GetCountryCodeByAddr_geoip($HostResolved); } # elsif ($PluginsLoaded{'GetCountryCodeByAddr'}{'geoip_region_maxmind'}) { $Domain=GetCountryCodeByAddr_geoip_region_maxmind($HostResolved); } # elsif ($PluginsLoaded{'GetCountryCodeByAddr'}{'geoip_city_maxmind'}) { $Domain=GetCountryCodeByAddr_geoip_city_maxmind($HostResolved); } elsif ( $PluginsLoaded{'GetCountryCodeByAddr'}{'geoipfree'} ) { $Domain = GetCountryCodeByAddr_geoipfree($HostResolved); } if ($AtLeastOneSectionPlugin) { foreach my $pluginname ( keys %{ $PluginsLoaded{'SectionProcessIp'} } ) { my $function = "SectionProcessIp_$pluginname"; if ($Debug) { debug( " Call to plugin function $function", 5 ); } &$function($HostResolved); } } } else { # $Host was already a host name ($ip=0, $Host=name, $HostResolved='') or has been resolved ($ip>0, $Host=ip, $HostResolved defined) $HostResolved = lc( $HostResolved ? $HostResolved : $Host ); # Resolve Domain if ($ip) { # If we have ip, we use it in priority instead of hostname if ( $PluginsLoaded{'GetCountryCodeByAddr'}{'geoip6'} ) { $Domain = GetCountryCodeByAddr_geoip6($Host); } elsif ( $PluginsLoaded{'GetCountryCodeByAddr'}{'geoip'} ) { $Domain = GetCountryCodeByAddr_geoip($Host); } # elsif ($PluginsLoaded{'GetCountryCodeByAddr'}{'geoip_region_maxmind'}) { $Domain=GetCountryCodeByAddr_geoip_region_maxmind($Host); } # elsif ($PluginsLoaded{'GetCountryCodeByAddr'}{'geoip_city_maxmind'}) { $Domain=GetCountryCodeByAddr_geoip_city_maxmind($Host); } elsif ( $PluginsLoaded{'GetCountryCodeByAddr'}{'geoipfree'} ) { $Domain = GetCountryCodeByAddr_geoipfree($Host); } elsif ( $HostResolved =~ /\.(\w+)$/ ) { $Domain = $1; } if ($AtLeastOneSectionPlugin) { foreach my $pluginname ( keys %{ $PluginsLoaded{'SectionProcessIp'} } ) { my $function = "SectionProcessIp_$pluginname"; if ($Debug) { debug( " Call to plugin function $function", 5 ); } &$function($Host); } } } else { if ( $PluginsLoaded{'GetCountryCodeByName'}{'geoip6'} ) { $Domain = GetCountryCodeByName_geoip6($HostResolved); } elsif ( $PluginsLoaded{'GetCountryCodeByName'}{'geoip'} ) { $Domain = GetCountryCodeByName_geoip($HostResolved); } # elsif ($PluginsLoaded{'GetCountryCodeByName'}{'geoip_region_maxmind'}) { $Domain=GetCountryCodeByName_geoip_region_maxmind($HostResolved); } # elsif ($PluginsLoaded{'GetCountryCodeByName'}{'geoip_city_maxmind'}) { $Domain=GetCountryCodeByName_geoip_city_maxmind($HostResolved); } elsif ( $PluginsLoaded{'GetCountryCodeByName'}{'geoipfree'} ) { $Domain = GetCountryCodeByName_geoipfree($HostResolved); } elsif ( $HostResolved =~ /\.(\w+)$/ ) { $Domain = $1; } if ($AtLeastOneSectionPlugin) { foreach my $pluginname ( keys %{ $PluginsLoaded{'SectionProcessHostname'} } ) { my $function = "SectionProcessHostname_$pluginname"; if ($Debug) { debug( " Call to plugin function $function", 5 ); } &$function($HostResolved); } } } } # Store country if ($PageBool) { $_domener_p{$Domain}++; } if ($countedtraffic != 6){$_domener_h{$Domain}++;} if ( $field[$pos_size] ne '-' && $pos_size>0) { $_domener_k{$Domain} += int( $field[$pos_size] ); } # Analyze: Host, URL entry+exit and Session #------------------------------------------ if ($PageBool) { my $timehostl = $_host_l{$HostResolved}; if ($timehostl) { # A visit for this host was already detected # TODO everywhere there is $VISITTIMEOUT # $timehostl =~ /^\d\d\d\d\d\d(\d\d)/; my $daytimehostl=$1; # if ($timerecord > ($timehostl+$VISITTIMEOUT+($dateparts[3]>$daytimehostl?$NEWDAYVISITTIMEOUT:0))) { if ( $timerecord > ( $timehostl + $VISITTIMEOUT ) ) { # This is a second visit or more if ( !$_waithost_s{$HostResolved} ) { # This is a second visit or more # We count 'visit','exit','entry','DayVisits' if ($Debug) { debug( " This is a second visit for $HostResolved.", 4 ); } my $timehosts = $_host_s{$HostResolved}; my $page = $_host_u{$HostResolved}; if ($page) { $_url_x{$page}++; } $_url_e{ $field[$pos_url] }++; $DayVisits{$yearmonthdayrecord}++; # We can't count session yet because we don't have the start so # we save params of first 'wait' session $_waithost_l{$HostResolved} = $timehostl; $_waithost_s{$HostResolved} = $timehosts; $_waithost_u{$HostResolved} = $page; } else { # This is third visit or more # We count 'session','visit','exit','entry','DayVisits' if ($Debug) { debug( " This is a third visit or more for $HostResolved.", 4 ); } my $timehosts = $_host_s{$HostResolved}; my $page = $_host_u{$HostResolved}; if ($page) { $_url_x{$page}++; } $_url_e{ $field[$pos_url] }++; $DayVisits{$yearmonthdayrecord}++; if ($timehosts) { $_session{ GetSessionRange( $timehosts, $timehostl ) }++; } } # Save new session properties $_host_s{$HostResolved} = $timerecord; $_host_l{$HostResolved} = $timerecord; $_host_u{$HostResolved} = $field[$pos_url]; } elsif ( $timerecord > $timehostl ) { # This is a same visit we can count if ($Debug) { debug( " This is same visit still running for $HostResolved. host_l/host_u changed to $timerecord/$field[$pos_url]", 4 ); } $_host_l{$HostResolved} = $timerecord; $_host_u{$HostResolved} = $field[$pos_url]; } elsif ( $timerecord == $timehostl ) { # This is a same visit we can count if ($Debug) { debug( " This is same visit still running for $HostResolved. host_l/host_u changed to $timerecord/$field[$pos_url]", 4 ); } $_host_u{$HostResolved} = $field[$pos_url]; } elsif ( $timerecord < $_host_s{$HostResolved} ) { # Should happens only with not correctly sorted log files if ($Debug) { debug( " This is same visit still running for $HostResolved with start not in order. host_s changed to $timerecord (entry page also changed if first visit)", 4 ); } if ( !$_waithost_s{$HostResolved} ) { # We can reorder entry page only if it's the first visit found in this update run (The saved entry page was $_waithost_e if $_waithost_s{$HostResolved} is not defined. If second visit or more, entry was directly counted and not saved) $_waithost_e{$HostResolved} = $field[$pos_url]; } else { # We can't change entry counted as we dont't know what was the url counted as entry } $_host_s{$HostResolved} = $timerecord; } else { if ($Debug) { debug( " This is same visit still running for $HostResolved with hit between start and last hits. No change", 4 ); } } } else { # This is a new visit (may be). First new visit found for this host. We save in wait array the entry page to count later if ($Debug) { debug( " New session (may be) for $HostResolved. Save in wait array to see later", 4 ); } $_waithost_e{$HostResolved} = $field[$pos_url]; # Save new session properties $_host_u{$HostResolved} = $field[$pos_url]; $_host_s{$HostResolved} = $timerecord; $_host_l{$HostResolved} = $timerecord; } $_host_p{$HostResolved}++; } $_host_h{$HostResolved}++; if ( $field[$pos_size] ne '-' && $pos_size>0) { $_host_k{$HostResolved} += int( $field[$pos_size] ); } # Analyze: Browser - OS #---------------------- if ( $pos_agent >= 0 ) { if ($LevelForBrowsersDetection) { # Analyze: Browser #----------------- my $uabrowser = $TmpBrowser{$UserAgent}; if ( !$uabrowser ) { my $found = 1; # Opera ? if ( $UserAgent =~ /$regveropera/o ) { # !!!! version number in in regex $1 or $2 !!! $_browser_h{"opera".($1||$2)}++; if ($PageBool) { $_browser_p{"opera".($1||$2)}++; } $TmpBrowser{$UserAgent} = "opera".($1||$2); } # Firefox ? elsif ( $UserAgent =~ /$regverfirefox/o && $UserAgent !~ /$regnotfirefox/o ) { $_browser_h{"firefox$1"}++; if ($PageBool) { $_browser_p{"firefox$1"}++; } $TmpBrowser{$UserAgent} = "firefox$1"; } # Chrome ? elsif ( $UserAgent =~ /$regverchrome/o ) { $_browser_h{"chrome$1"}++; if ($PageBool) { $_browser_p{"chrome$1"}++; } $TmpBrowser{$UserAgent} = "chrome$1"; } # Safari ? elsif ($UserAgent =~ /$regversafari/o && $UserAgent !~ /$regnotsafari/o ) { my $safariver = $BrowsersSafariBuildToVersionHash{$1}; if ( $UserAgent =~ /$regversafariver/o ) { $safariver = $1; } $_browser_h{"safari$safariver"}++; if ($PageBool) { $_browser_p{"safari$safariver"}++; } $TmpBrowser{$UserAgent} = "safari$safariver"; } # Konqueror ? elsif ( $UserAgent =~ /$regverkonqueror/o ) { $_browser_h{"konqueror$1"}++; if ($PageBool) { $_browser_p{"konqueror$1"}++; } $TmpBrowser{$UserAgent} = "konqueror$1"; } # Subversion ? elsif ( $UserAgent =~ /$regversvn/o ) { $_browser_h{"svn$1"}++; if ($PageBool) { $_browser_p{"svn$1"}++; } $TmpBrowser{$UserAgent} = "svn$1"; } # IE < 11 ? (must be at end of test) elsif ($UserAgent =~ /$regvermsie/o && $UserAgent !~ /$regnotie/o ) { $_browser_h{"msie$2"}++; if ($PageBool) { $_browser_p{"msie$2"}++; } $TmpBrowser{$UserAgent} = "msie$2"; } # IE >= 11 elsif ($UserAgent =~ /$regvermsie11/o && $UserAgent !~ /$regnotie/o) { $_browser_h{"msie$2"}++; if ($PageBool) { $_browser_p{"msie$2"}++; } $TmpBrowser{$UserAgent} = "msie$2"; } # Netscape 6.x, 7.x ... ? (must be at end of test) elsif ( $UserAgent =~ /$regvernetscape/o ) { $_browser_h{"netscape$1"}++; if ($PageBool) { $_browser_p{"netscape$1"}++; } $TmpBrowser{$UserAgent} = "netscape$1"; } # Netscape 3.x, 4.x ... ? (must be at end of test) elsif ($UserAgent =~ /$regvermozilla/o && $UserAgent !~ /$regnotnetscape/o ) { $_browser_h{"netscape$2"}++; if ($PageBool) { $_browser_p{"netscape$2"}++; } $TmpBrowser{$UserAgent} = "netscape$2"; } # Other known browsers ? else { $found = 0; foreach (@BrowsersSearchIDOrder) { # Search ID in order of BrowsersSearchIDOrder if ( $UserAgent =~ /$_/ ) { my $browser = &UnCompileRegex($_); # TODO If browser is in a family, use version $_browser_h{"$browser"}++; if ($PageBool) { $_browser_p{"$browser"}++; } $TmpBrowser{$UserAgent} = "$browser"; $found = 1; last; } } } # Unknown browser ? if ( !$found ) { $_browser_h{'Unknown'}++; if ($PageBool) { $_browser_p{'Unknown'}++; } $TmpBrowser{$UserAgent} = 'Unknown'; my $newua = $UserAgent; $newua =~ tr/\+ /__/; $_unknownrefererbrowser_l{$newua} = $timerecord; } } else { $_browser_h{$uabrowser}++; if ($PageBool) { $_browser_p{$uabrowser}++; } if ( $uabrowser eq 'Unknown' ) { my $newua = $UserAgent; $newua =~ tr/\+ /__/; $_unknownrefererbrowser_l{$newua} = $timerecord; } } } if ($LevelForOSDetection) { # Analyze: OS #------------ my $uaos = $TmpOS{$UserAgent}; if ( !$uaos ) { my $found = 0; # in OSHashID list ? foreach (@OSSearchIDOrder) { # Search ID in order of OSSearchIDOrder if ( $UserAgent =~ /$_/ ) { my $osid = $OSHashID{ &UnCompileRegex($_) }; $_os_h{"$osid"}++; if ($PageBool) { $_os_p{"$osid"}++; } $TmpOS{$UserAgent} = "$osid"; $found = 1; last; } } # Unknown OS ? if ( !$found ) { $_os_h{'Unknown'}++; if ($PageBool) { $_os_p{'Unknown'}++; } $TmpOS{$UserAgent} = 'Unknown'; my $newua = $UserAgent; $newua =~ tr/\+ /__/; $_unknownreferer_l{$newua} = $timerecord; } } else { $_os_h{$uaos}++; if ($PageBool) { $_os_p{$uaos}++; } if ( $uaos eq 'Unknown' ) { my $newua = $UserAgent; $newua =~ tr/\+ /__/; $_unknownreferer_l{$newua} = $timerecord; } } } } else { $_browser_h{'Unknown'}++; $_os_h{'Unknown'}++; if ($PageBool) { $_browser_p{'Unknown'}++; $_os_p{'Unknown'}++; } } # Analyze: Referer #----------------- my $found = 0; if ( $pos_referer >= 0 && $LevelForRefererAnalyze && $field[$pos_referer] ) { # Direct ? if ( $field[$pos_referer] eq '-' || $field[$pos_referer] eq 'bookmarks' ) { # "bookmarks" is sent by Netscape, '-' by all others browsers # Direct access if ($PageBool) { if ($ShowDirectOrigin) { print "Direct access for line $line\n"; } $_from_p[0]++; } $_from_h[0]++; $found = 1; } else { $field[$pos_referer] =~ /$regreferer/o; my $refererprot = $1; my $refererserver = ( $2 || '' ) . ( !$3 || $3 eq ':80' ? '' : $3 ) ; # refererserver is www.xxx.com or www.xxx.com:81 but not www.xxx.com:80 # HTML link ? if ( $refererprot =~ /^http/i ) { #if ($Debug) { debug(" Analyze referer refererprot=$refererprot refererserver=$refererserver",5); } # Kind of origin if ( !$TmpRefererServer{$refererserver} ) { # TmpRefererServer{$refererserver} is "=" if same site, "search egine key" if search engine, not defined otherwise if ( $refererserver =~ /$reglocal/o ) { # Intern (This hit came from another page of the site) if ($Debug) { debug( " Server '$refererserver' is added to TmpRefererServer with value '='", 2 ); } $TmpRefererServer{$refererserver} = '='; $found = 1; } else { foreach (@HostAliases) { if ( $refererserver =~ /$_/ ) { # Intern (This hit came from another page of the site) if ($Debug) { debug( " Server '$refererserver' is added to TmpRefererServer with value '='", 2 ); } $TmpRefererServer{$refererserver} = '='; $found = 1; last; } } if ( !$found ) { # Extern (This hit came from an external web site). if ($LevelForSearchEnginesDetection) { foreach (@SearchEnginesSearchIDOrder) { # Search ID in order of SearchEnginesSearchIDOrder if ( $refererserver =~ /$_/ ) { my $key = &UnCompileRegex($_); if ( !$NotSearchEnginesKeys{$key} || $refererserver !~ /$NotSearchEnginesKeys{$key}/i ) { # This hit came from the search engine $key if ($Debug) { debug( " Server '$refererserver' is added to TmpRefererServer with value '$key'", 2 ); } $TmpRefererServer{ $refererserver} = $SearchEnginesHashID{ $key }; $found = 1; } last; } } } } } } my $tmprefererserver = $TmpRefererServer{$refererserver}; if ($tmprefererserver) { if ( $tmprefererserver eq '=' ) { # Intern (This hit came from another page of the site) if ($PageBool) { $_from_p[4]++; } $_from_h[4]++; $found = 1; } else { # This hit came from a search engine if ($PageBool) { $_from_p[2]++; $_se_referrals_p{$tmprefererserver}++; } $_from_h[2]++; $_se_referrals_h{$tmprefererserver}++; $found = 1; if ( $PageBool && $LevelForKeywordsDetection ) { # we will complete %_keyphrases hash array my @refurl = split( /\?/, $field[$pos_referer], 2 ) ; # TODO Use \? or [$URLQuerySeparators] ? if ( $refurl[1] ) { # Extract params of referer query string (q=cache:mmm:www/zzz+aaa+bbb q=aaa+bbb/ccc key=ddd%20eee lang_en ie=UTF-8 ...) if ( $SearchEnginesKnownUrl{ $tmprefererserver} ) { # Search engine with known URL syntax foreach my $param ( split( /&/, $KeyWordsNotSensitive ? lc( $refurl[1] ) : $refurl[1] ) ) { if ( $param =~ s/^$SearchEnginesKnownUrl{$tmprefererserver}// ) { # We found good parameter # Now param is keyphrase: "cache:mmm:www/zzz+aaa+bbb/ccc+ddd%20eee'fff,ggg" $param =~ s/^(cache|related):[^\+]+// ; # Should be useless since this is for hit on 'not pages' &ChangeWordSeparatorsIntoSpace ($param) ; # Change [ aaa+bbb/ccc+ddd%20eee'fff,ggg ] into [ aaa bbb/ccc ddd eee fff ggg] $param =~ s/^ +//; $param =~ s/ +$//; # Trim $param =~ tr/ /\+/s; if ( ( length $param ) > 0 ) { $_keyphrases{$param}++; } last; } } } elsif ( $LevelForKeywordsDetection >= 2 ) { # Search engine with unknown URL syntax foreach my $param ( split( /&/, $KeyWordsNotSensitive ? lc( $refurl[1] ) : $refurl[1] ) ) { my $foundexcludeparam = 0; foreach my $paramtoexclude ( @WordsToCleanSearchUrl) { if ( $param =~ /$paramtoexclude/i ) { $foundexcludeparam = 1; last; } # Not the param with search criteria } if ($foundexcludeparam) { next; } # We found good parameter $param =~ s/.*=//; # Now param is keyphrase: "aaa+bbb/ccc+ddd%20eee'fff,ggg" $param =~ s/^(cache|related):[^\+]+// ; # Should be useless since this is for hit on 'not pages' &ChangeWordSeparatorsIntoSpace( $param) ; # Change [ aaa+bbb/ccc+ddd%20eee'fff,ggg ] into [ aaa bbb/ccc ddd eee fff ggg ] $param =~ s/^ +//; $param =~ s/ +$//; # Trim $param =~ tr/ /\+/s; if ( ( length $param ) > 2 ) { $_keyphrases{$param}++; last; } } } } # End of elsif refurl[1] elsif ( $SearchEnginesWithKeysNotInQuery{ $tmprefererserver} ) { # debug("xxx".$refurl[0]); # If search engine with key inside page url like a9 (www.a9.com/searchkey1%20searchkey2) if ( $refurl[0] =~ /$SearchEnginesKnownUrl{$tmprefererserver}(.*)$/ ) { my $param = $1; &ChangeWordSeparatorsIntoSpace( $param); $param =~ tr/ /\+/s; if ( ( length $param ) > 0 ) { $_keyphrases{$param}++; } } } } } } # End of if ($TmpRefererServer) else { # This hit came from a site other than a search engine if ($PageBool) { $_from_p[3]++; } $_from_h[3]++; # http://www.mysite.com/ must be same referer than http://www.mysite.com but .../mypage/ differs of .../mypage #if ($refurl[0] =~ /^[^\/]+\/$/) { $field[$pos_referer] =~ s/\/$//; } # Code moved in Save_History # TODO: lowercase the value for referer server to have refering server not case sensitive if ($URLReferrerWithQuery) { if ($PageBool) { $_pagesrefs_p{ $field[$pos_referer] }++; } $_pagesrefs_h{ $field[$pos_referer] }++; } else { # We discard query for referer if ( $field[$pos_referer] =~ /$regreferernoquery/o ) { if ($PageBool) { $_pagesrefs_p{"$1"}++; } $_pagesrefs_h{"$1"}++; } else { if ($PageBool) { $_pagesrefs_p{ $field[$pos_referer] }++; } $_pagesrefs_h{ $field[$pos_referer] }++; } } $found = 1; } } # News Link ? #if (! $found && $refererprot =~ /^news/i) { # $found=1; # if ($PageBool) { $_from_p[5]++; } # $_from_h[5]++; #} } } # Origin not found if ( !$found ) { if ($ShowUnknownOrigin) { print "Unknown origin: $field[$pos_referer]\n"; } if ($PageBool) { $_from_p[1]++; } $_from_h[1]++; } # Analyze: EMail #--------------- if ( $pos_emails >= 0 && $field[$pos_emails] ) { if ( $field[$pos_emails] eq '<>' ) { $field[$pos_emails] = 'Unknown'; } elsif ( $field[$pos_emails] !~ /\@/ ) { $field[$pos_emails] .= "\@$SiteDomain"; } $_emails_h{ lc( $field[$pos_emails] ) } ++; #Count accesses for sender email (hit) if ($pos_size>0){$_emails_k{ lc( $field[$pos_emails] ) } += int( $field[$pos_size] ) ;} #Count accesses for sender email (kb) $_emails_l{ lc( $field[$pos_emails] ) } = $timerecord; } if ( $pos_emailr >= 0 && $field[$pos_emailr] ) { if ( $field[$pos_emailr] !~ /\@/ ) { $field[$pos_emailr] .= "\@$SiteDomain"; } $_emailr_h{ lc( $field[$pos_emailr] ) } ++; #Count accesses for receiver email (hit) if ($pos_size>0){$_emailr_k{ lc( $field[$pos_emailr] ) } += int( $field[$pos_size] ) ;} #Count accesses for receiver email (kb) $_emailr_l{ lc( $field[$pos_emailr] ) } = $timerecord; } } # Check cluster #-------------- if ( $pos_cluster >= 0 ) { if ($PageBool) { $_cluster_p{ $field[$pos_cluster] }++; } #Count accesses for page (page) $_cluster_h{ $field[$pos_cluster] } ++; #Count accesses for page (hit) if ($pos_size>0){$_cluster_k{ $field[$pos_cluster] } += int( $field[$pos_size] );} #Count accesses for page (kb) } # Analyze: Extra #--------------- foreach my $extranum ( 1 .. @ExtraName - 1 ) { if ($Debug) { debug( " Process extra analyze $extranum", 4 ); } # Check code my $conditionok = 0; if ( $ExtraCodeFilter[$extranum] ) { foreach my $condnum ( 0 .. @{ $ExtraCodeFilter[$extranum] } - 1 ) { if ($Debug) { debug( " Check code '$field[$pos_code]' must be '$ExtraCodeFilter[$extranum][$condnum]'", 5 ); } if ( $field[$pos_code] eq "$ExtraCodeFilter[$extranum][$condnum]" ) { $conditionok = 1; last; } } if ( !$conditionok && @{ $ExtraCodeFilter[$extranum] } ) { next; } # End for this section if ($Debug) { debug( " No check on code or code is OK. Now we check other conditions.", 5 ); } } # Check conditions $conditionok = 0; foreach my $condnum ( 0 .. @{ $ExtraConditionType[$extranum] } - 1 ) { my $conditiontype = $ExtraConditionType[$extranum][$condnum]; my $conditiontypeval = $ExtraConditionTypeVal[$extranum][$condnum]; if ( $conditiontype eq 'URL' ) { if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$urlwithnoquery'", 5 ); } if ( $urlwithnoquery =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype eq 'QUERY_STRING' ) { if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$standalonequery'", 5 ); } if ( $standalonequery =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype eq 'URLWITHQUERY' ) { if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$urlwithnoquery$tokenquery$standalonequery'", 5 ); } if ( "$urlwithnoquery$tokenquery$standalonequery" =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype eq 'REFERER' ) { if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$field[$pos_referer]'", 5 ); } if ( $field[$pos_referer] =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype eq 'UA' ) { if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$field[$pos_agent]'", 5 ); } if ( $field[$pos_agent] =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype eq 'HOSTINLOG' ) { if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$field[$pos_host]'", 5 ); } if ( $field[$pos_host] =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype eq 'HOST' ) { my $hosttouse = ( $HostResolved ? $HostResolved : $Host ); if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$hosttouse'", 5 ); } if ( $hosttouse =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype eq 'VHOST' ) { if ($Debug) { debug( " Check condision '$conditiontype' must contain '$conditiontypeval' in '$field[$pos_vh]'", 5 ); } if ( $field[$pos_vh] =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } elsif ( $conditiontype =~ /extra(\d+)/i ) { if ($Debug) { debug( " Check condition '$conditiontype' must contain '$conditiontypeval' in '$field[$pos_extra[$1]]'", 5 ); } if ( $field[ $pos_extra[$1] ] =~ /$conditiontypeval/ ) { $conditionok = 1; last; } } else { error( "Wrong value of parameter ExtraSectionCondition$extranum" ); } } if ( !$conditionok && @{ $ExtraConditionType[$extranum] } ) { next; } # End for this section if ($Debug) { debug( " No condition or condition is OK. Now we extract value for first column of extra chart.", 5 ); } # Determine actual column value to use. my $rowkeyval; my $rowkeyok = 0; foreach my $rowkeynum ( 0 .. @{ $ExtraFirstColumnValuesType[$extranum] } - 1 ) { my $rowkeytype = $ExtraFirstColumnValuesType[$extranum][$rowkeynum]; my $rowkeytypeval = $ExtraFirstColumnValuesTypeVal[$extranum][$rowkeynum]; if ( $rowkeytype eq 'URL' ) { if ( $urlwithnoquery =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype eq 'QUERY_STRING' ) { if ($Debug) { debug( " Extract value from '$standalonequery' with regex '$rowkeytypeval'.", 5 ); } if ( $standalonequery =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype eq 'URLWITHQUERY' ) { if ( "$urlwithnoquery$tokenquery$standalonequery" =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype eq 'REFERER' ) { if ( $field[$pos_referer] =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype eq 'UA' ) { if ( $field[$pos_agent] =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype eq 'HOSTINLOG' ) { if ( $field[$pos_host] =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype eq 'HOST' ) { my $hosttouse = ( $HostResolved ? $HostResolved : $Host ); if ( $hosttouse =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype eq 'VHOST' ) { if ( $field[$pos_vh] =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } elsif ( $rowkeytype =~ /extra(\d+)/i ) { if ( $field[ $pos_extra[$1] ] =~ /$rowkeytypeval/ ) { $rowkeyval = "$1"; $rowkeyok = 1; last; } } else { error( "Wrong value of parameter ExtraSectionFirstColumnValues$extranum" ); } } if ( !$rowkeyok ) { next; } # End for this section if ( !$rowkeyval ) { $rowkeyval = 'Failed to extract key'; } if ($Debug) { debug( " Key val found: $rowkeyval", 5 ); } # Apply function on $rowkeyval if ( $ExtraFirstColumnFunction[$extranum] ) { # Todo call function on string $rowkeyval } # Here we got all values to increase counters if ( $PageBool && $ExtraStatTypes[$extranum] =~ /P/i ) { ${ '_section_' . $extranum . '_p' }{$rowkeyval}++; } ${ '_section_' . $extranum . '_h' }{$rowkeyval}++; # Must be set if ( $ExtraStatTypes[$extranum] =~ /B/i && $pos_size>0) { ${ '_section_' . $extranum . '_k' }{$rowkeyval} += int( $field[$pos_size] ); } if ( $ExtraStatTypes[$extranum] =~ /L/i ) { if ( ${ '_section_' . $extranum . '_l' }{$rowkeyval} || 0 < $timerecord ) { ${ '_section_' . $extranum . '_l' }{$rowkeyval} = $timerecord; } } # Check to avoid too large extra sections if ( scalar keys %{ '_section_' . $extranum . '_h' } > $ExtraTrackedRowsLimit ) { error(<= 20000 ) { #if (++$counterforflushtest >= 1) { if ( ( scalar keys %_host_u ) > ( $LIMITFLUSH << 2 ) || ( scalar keys %_url_p ) > $LIMITFLUSH ) { # warning("Warning: Try to run AWStats update process more frequently to analyze smaler log files."); if ( $^X =~ /activestate/i || $^X =~ /activeperl/i ) { # We don't flush if perl is activestate to avoid slowing process because of memory hole } else { # Clean tmp hash arrays #%TmpDNSLookup = (); %TmpOS = %TmpRefererServer = %TmpRobot = %TmpBrowser = (); # We flush if perl is not activestate print "Flush history file on disk"; if ( ( scalar keys %_host_u ) > ( $LIMITFLUSH << 2 ) ) { print " (unique hosts reach flush limit of " . ( $LIMITFLUSH << 2 ) . ")"; } if ( ( scalar keys %_url_p ) > $LIMITFLUSH ) { print " (unique url reach flush limit of " . ($LIMITFLUSH) . ")"; } print "\n"; if ($Debug) { debug( "End of set of $counterforflushtest records: Some hash arrays are too large. We flush and clean some.", 2 ); print " _host_p:" . ( scalar keys %_host_p ) . " _host_h:" . ( scalar keys %_host_h ) . " _host_k:" . ( scalar keys %_host_k ) . " _host_l:" . ( scalar keys %_host_l ) . " _host_s:" . ( scalar keys %_host_s ) . " _host_u:" . ( scalar keys %_host_u ) . "\n"; print " _url_p:" . ( scalar keys %_url_p ) . " _url_k:" . ( scalar keys %_url_k ) . " _url_e:" . ( scalar keys %_url_e ) . " _url_x:" . ( scalar keys %_url_x ) . "\n"; print " _waithost_e:" . ( scalar keys %_waithost_e ) . " _waithost_l:" . ( scalar keys %_waithost_l ) . " _waithost_s:" . ( scalar keys %_waithost_s ) . " _waithost_u:" . ( scalar keys %_waithost_u ) . "\n"; } &Read_History_With_TmpUpdate( $lastprocessedyear, $lastprocessedmonth, $lastprocessedday, $lastprocessedhour, 1, 1, "all", ( $lastlinenb + $NbOfLinesParsed ), $lastlineoffset, &CheckSum($_) ); &GetDelaySinceStart(1); $NbOfLinesShowsteps = 1; } } $counterforflushtest = 0; } } # End of loop for processing new record. if ($Debug) { debug( " _host_p:" . ( scalar keys %_host_p ) . " _host_h:" . ( scalar keys %_host_h ) . " _host_k:" . ( scalar keys %_host_k ) . " _host_l:" . ( scalar keys %_host_l ) . " _host_s:" . ( scalar keys %_host_s ) . " _host_u:" . ( scalar keys %_host_u ) . "\n", 1 ); debug( " _url_p:" . ( scalar keys %_url_p ) . " _url_k:" . ( scalar keys %_url_k ) . " _url_e:" . ( scalar keys %_url_e ) . " _url_x:" . ( scalar keys %_url_x ) . "\n", 1 ); debug( " _waithost_e:" . ( scalar keys %_waithost_e ) . " _waithost_l:" . ( scalar keys %_waithost_l ) . " _waithost_s:" . ( scalar keys %_waithost_s ) . " _waithost_u:" . ( scalar keys %_waithost_u ) . "\n", 1 ); debug( "End of processing log file (AWStats memory cache is TmpDNSLookup=" . ( scalar keys %TmpDNSLookup ) . " TmpBrowser=" . ( scalar keys %TmpBrowser ) . " TmpOS=" . ( scalar keys %TmpOS ) . " TmpRefererServer=" . ( scalar keys %TmpRefererServer ) . " TmpRobot=" . ( scalar keys %TmpRobot ) . ")", 1 ); } # Save current processed break section # If lastprocesseddate > 0 means there is at least one approved new record in log or at least one existing history file if ( $lastprocesseddate > 0 ) { # TODO: Do not save if we are sure a flush was just already done # Get last line seek( LOG, $lastlineoffset, 0 ); my $line = ; chomp $line; $line =~ s/\r$//; if ( !$NbOfLinesParsed ) { # TODO If there was no lines parsed (log was empty), we only update LastUpdate line with YYYYMMDDHHMMSS 0 0 0 0 0 &Read_History_With_TmpUpdate( $lastprocessedyear, $lastprocessedmonth, $lastprocessedday, $lastprocessedhour, 1, 1, "all", ( $lastlinenb + $NbOfLinesParsed ), $lastlineoffset, &CheckSum($line) ); } else { &Read_History_With_TmpUpdate( $lastprocessedyear, $lastprocessedmonth, $lastprocessedday, $lastprocessedhour, 1, 1, "all", ( $lastlinenb + $NbOfLinesParsed ), $lastlineoffset, &CheckSum($line) ); } } if ($Debug) { debug("Close log file \"$LogFile\""); } close LOG || error("Command for pipe '$LogFile' failed"); # Process the Rename - Archive - Purge phase my $renameok = 1; my $archiveok = 1; # Open Log file for writing if PurgeLogFile is on if ($PurgeLogFile) { if ($ArchiveLogRecords) { if ( $ArchiveLogRecords == 1 ) { # For backward compatibility $ArchiveFileName = "$DirData/${PROG}_archive$FileSuffix.log"; } else { $ArchiveFileName = "$DirData/${PROG}_archive$FileSuffix." . &Substitute_Tags($ArchiveLogRecords) . ".log"; } open( LOG, "+<$LogFile" ) || error( "Enable to archive log records of \"$LogFile\" into \"$ArchiveFileName\" because source can't be opened for read and write: $!
\n" ); } else { open( LOG, "+<$LogFile" ); } binmode LOG; } # Rename all HISTORYTMP files into HISTORYTXT &Rename_All_Tmp_History(); # Purge Log file if option is on and all renaming are ok if ($PurgeLogFile) { # Archive LOG file into ARCHIVELOG if ($ArchiveLogRecords) { if ($Debug) { debug("Start of archiving log file"); } open( ARCHIVELOG, ">>$ArchiveFileName" ) || error( "Couldn't open file \"$ArchiveFileName\" to archive log: $!"); binmode ARCHIVELOG; while () { if ( !print ARCHIVELOG $_ ) { $archiveok = 0; last; } } close(ARCHIVELOG) || error("Archiving failed during closing archive: $!"); if ($SaveDatabaseFilesWithPermissionsForEveryone) { chmod 0666, "$ArchiveFileName"; } if ($Debug) { debug("End of archiving log file"); } } # If rename and archive ok if ( $renameok && $archiveok ) { if ($Debug) { debug("Purge log file"); } my $bold = ( $ENV{'GATEWAY_INTERFACE'} ? '' : '' ); my $unbold = ( $ENV{'GATEWAY_INTERFACE'} ? '' : '' ); my $br = ( $ENV{'GATEWAY_INTERFACE'} ? '
' : '' ); truncate( LOG, 0 ) || warning( "Warning: $bold$PROG$unbold couldn't purge logfile \"$bold$LogFile$unbold\".$br\nChange your logfile permissions to allow write for your web server CGI process or change PurgeLogFile=1 into PurgeLogFile=0 in configure file and think to purge sometimes manually your logfile (just after running an update process to not loose any not already processed records your log file contains)." ); } close(LOG); } if ( $DNSLookup == 1 && $DNSLookupAlreadyDone ) { # DNSLookup warning my $bold = ( $ENV{'GATEWAY_INTERFACE'} ? '' : '' ); my $unbold = ( $ENV{'GATEWAY_INTERFACE'} ? '' : '' ); my $br = ( $ENV{'GATEWAY_INTERFACE'} ? '
' : '' ); warning( "Warning: $bold$PROG$unbold has detected that some hosts names were already resolved in your logfile $bold$DNSLookupAlreadyDone$unbold.$br\nIf DNS lookup was already made by the logger (web server), you should change your setup DNSLookup=$DNSLookup into DNSLookup=0 to increase $PROG speed." ); } if ( $DNSLookup == 1 && $NbOfNewLines ) { # Save new DNS last update cache file Save_DNS_Cache_File( \%TmpDNSLookup, "$DirData/$DNSLastUpdateCacheFile", "$FileSuffix" ); # Save into file using FileSuffix } if ($EnableLockForUpdate) { # Remove lock &Lock_Update(0); # Restore signals handler $SIG{INT} = 'DEFAULT'; # 2 #$SIG{KILL} = 'DEFAULT'; # 9 #$SIG{TERM} = 'DEFAULT'; # 15 } } # End of log processing if ($UPdateStats) #--------------------------------------------------------------------- # SHOW REPORT #--------------------------------------------------------------------- if ( scalar keys %HTMLOutput ) { debug( "YearRequired=$YearRequired, MonthRequired=$MonthRequired", 2 ); debug( "DayRequired=$DayRequired, HourRequired=$HourRequired", 2 ); # Define the NewLinkParams for main chart my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; my $NewLinkTarget = ''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget = " target=\"awstatsbis\""; } if ( ( $FrameName eq 'mainleft' || $FrameName eq 'mainright' ) && $DetailedReportsOnNewWindows < 2 ) { $NewLinkParams .= "&framename=mainright"; $NewLinkTarget = " target=\"mainright\""; } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } if ( $FrameName ne 'mainleft' ) { # READING DATA #------------- &Init_HashArray(); # Lecture des fichiers history / reading history file if ( $DatabaseBreak eq 'month' ) { for ( my $ix = 12 ; $ix >= 1 ; $ix-- ) { my $stringforload = ''; my $monthix = sprintf( "%02s", $ix ); if ( $MonthRequired eq 'all' || $monthix eq $MonthRequired ) { $stringforload = 'all'; # Read full history file } elsif ( ( $HTMLOutput{'main'} && $ShowMonthStats ) || $HTMLOutput{'alldays'} ) { $stringforload = 'general time'; # Read general and time sections. } if ($stringforload) { # On charge fichier / file is loaded &Read_History_With_TmpUpdate( $YearRequired, $monthix, '', '', 0, 0, $stringforload ); } } } if ( $DatabaseBreak eq 'day' ) { my $stringforload = 'all'; my $monthix = sprintf( "%02s", $MonthRequired ); my $dayix = sprintf( "%02s", $DayRequired ); &Read_History_With_TmpUpdate( $YearRequired, $monthix, $dayix, '', 0, 0, $stringforload ); } if ( $DatabaseBreak eq 'hour' ) { my $stringforload = 'all'; my $monthix = sprintf( "%02s", $MonthRequired ); my $dayix = sprintf( "%02s", $DayRequired ); my $hourix = sprintf( "%02s", $HourRequired ); &Read_History_With_TmpUpdate( $YearRequired, $monthix, $dayix, $hourix, 0, 0, $stringforload ); } } # HTMLHeadSection if ( $FrameName ne 'index' && $FrameName ne 'mainleft' ) { print "\n\n"; my $newhead = $HTMLHeadSection; $newhead =~ s/\\n/\n/g; print "$newhead\n"; print "\n"; } # Call to plugins' function AddHTMLBodyHeader foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLBodyHeader'} } ) { my $function = "AddHTMLBodyHeader_$pluginname"; &$function(); } my $WIDTHMENU1 = ( $FrameName eq 'mainleft' ? $FRAMEWIDTH : 150 ); # TOP BAN #--------------------------------------------------------------------- if ( $ShowMenu || $FrameName eq 'mainleft' ) { HTMLTopBanner($WIDTHMENU1); } # Call to plugins' function AddHTMLMenuHeader foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLMenuHeader'} } ) { my $function = "AddHTMLMenuHeader_$pluginname"; &$function(); } # MENU (ON LEFT IF FRAME OR TOP) #--------------------------------------------------------------------- if ( $ShowMenu || $FrameName eq 'mainleft' ) { HTMLMenu($NewLinkParams, $NewLinkTarget); } # Call to plugins' function AddHTMLMenuFooter foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLMenuFooter'} } ) { my $function = "AddHTMLMenuFooter_$pluginname"; &$function(); } # Exit if left frame if ( $FrameName eq 'mainleft' ) { &html_end(0); exit 0; } # TotalVisits TotalUnique TotalPages TotalHits TotalBytes TotalHostsKnown TotalHostsUnknown $TotalUnique = $TotalVisits = $TotalPages = $TotalHits = $TotalBytes = 0; $TotalNotViewedPages = $TotalNotViewedHits = $TotalNotViewedBytes = 0; $TotalHostsKnown = $TotalHostsUnknown = 0; my $beginmonth = $MonthRequired; my $endmonth = $MonthRequired; if ( $MonthRequired eq 'all' ) { $beginmonth = 1; $endmonth = 12; } for ( my $month = $beginmonth ; $month <= $endmonth ; $month++ ) { my $monthix = sprintf( "%02s", $month ); $TotalHostsKnown += $MonthHostsKnown{ $YearRequired . $monthix } || 0; # Wrong in year view $TotalHostsUnknown += $MonthHostsUnknown{ $YearRequired . $monthix } || 0; # Wrong in year view $TotalUnique += $MonthUnique{ $YearRequired . $monthix } || 0; # Wrong in year view $TotalVisits += $MonthVisits{ $YearRequired . $monthix } || 0; # Not completely true $TotalPages += $MonthPages{ $YearRequired . $monthix } || 0; $TotalHits += $MonthHits{ $YearRequired . $monthix } || 0; $TotalBytes += $MonthBytes{ $YearRequired . $monthix } || 0; $TotalNotViewedPages += $MonthNotViewedPages{ $YearRequired . $monthix } || 0; $TotalNotViewedHits += $MonthNotViewedHits{ $YearRequired . $monthix } || 0; $TotalNotViewedBytes += $MonthNotViewedBytes{ $YearRequired . $monthix } || 0; } # TotalHitsErrors TotalBytesErrors $TotalHitsErrors = 0; my $TotalBytesErrors = 0; foreach ( keys %_errors_h ) { # print "xxxx".$_." zzz".$_errors_h{$_}; $TotalHitsErrors += $_errors_h{$_}; $TotalBytesErrors += $_errors_k{$_}; } # TotalEntries (if not already specifically counted, we init it from _url_e hash table) if ( !$TotalEntries ) { foreach ( keys %_url_e ) { $TotalEntries += $_url_e{$_}; } } # TotalExits (if not already specifically counted, we init it from _url_x hash table) if ( !$TotalExits ) { foreach ( keys %_url_x ) { $TotalExits += $_url_x{$_}; } } # TotalBytesPages (if not already specifically counted, we init it from _url_k hash table) if ( !$TotalBytesPages ) { foreach ( keys %_url_k ) { $TotalBytesPages += $_url_k{$_}; } } # TotalKeyphrases (if not already specifically counted, we init it from _keyphrases hash table) if ( !$TotalKeyphrases ) { foreach ( keys %_keyphrases ) { $TotalKeyphrases += $_keyphrases{$_}; } } # TotalKeywords (if not already specifically counted, we init it from _keywords hash table) if ( !$TotalKeywords ) { foreach ( keys %_keywords ) { $TotalKeywords += $_keywords{$_}; } } # TotalSearchEnginesPages (if not already specifically counted, we init it from _se_referrals_p hash table) if ( !$TotalSearchEnginesPages ) { foreach ( keys %_se_referrals_p ) { $TotalSearchEnginesPages += $_se_referrals_p{$_}; } } # TotalSearchEnginesHits (if not already specifically counted, we init it from _se_referrals_h hash table) if ( !$TotalSearchEnginesHits ) { foreach ( keys %_se_referrals_h ) { $TotalSearchEnginesHits += $_se_referrals_h{$_}; } } # TotalRefererPages (if not already specifically counted, we init it from _pagesrefs_p hash table) if ( !$TotalRefererPages ) { foreach ( keys %_pagesrefs_p ) { $TotalRefererPages += $_pagesrefs_p{$_}; } } # TotalRefererHits (if not already specifically counted, we init it from _pagesrefs_h hash table) if ( !$TotalRefererHits ) { foreach ( keys %_pagesrefs_h ) { $TotalRefererHits += $_pagesrefs_h{$_}; } } # TotalDifferentPages (if not already specifically counted, we init it from _url_p hash table) $TotalDifferentPages ||= scalar keys %_url_p; # TotalDifferentKeyphrases (if not already specifically counted, we init it from _keyphrases hash table) $TotalDifferentKeyphrases ||= scalar keys %_keyphrases; # TotalDifferentKeywords (if not already specifically counted, we init it from _keywords hash table) $TotalDifferentKeywords ||= scalar keys %_keywords; # TotalDifferentSearchEngines (if not already specifically counted, we init it from _se_referrals_h hash table) $TotalDifferentSearchEngines ||= scalar keys %_se_referrals_h; # TotalDifferentReferer (if not already specifically counted, we init it from _pagesrefs_h hash table) $TotalDifferentReferer ||= scalar keys %_pagesrefs_h; # Define firstdaytocountaverage, lastdaytocountaverage, firstdaytoshowtime, lastdaytoshowtime my $firstdaytocountaverage = $nowyear . $nowmonth . "01"; # Set day cursor to 1st day of month my $firstdaytoshowtime = $nowyear . $nowmonth . "01"; # Set day cursor to 1st day of month my $lastdaytocountaverage = $nowyear . $nowmonth . $nowday; # Set day cursor to today my $lastdaytoshowtime = $nowyear . $nowmonth . "31"; # Set day cursor to last day of month if ( $MonthRequired eq 'all' ) { $firstdaytocountaverage = $YearRequired . "0101"; # Set day cursor to 1st day of the required year } if ( ( $MonthRequired ne $nowmonth && $MonthRequired ne 'all' ) || $YearRequired ne $nowyear ) { if ( $MonthRequired eq 'all' ) { $firstdaytocountaverage = $YearRequired . "0101"; # Set day cursor to 1st day of the required year $firstdaytoshowtime = $YearRequired . "1201" ; # Set day cursor to 1st day of last month of required year $lastdaytocountaverage = $YearRequired . "1231"; # Set day cursor to last day of the required year $lastdaytoshowtime = $YearRequired . "1231" ; # Set day cursor to last day of last month of required year } else { $firstdaytocountaverage = $YearRequired . $MonthRequired . "01"; # Set day cursor to 1st day of the required month $firstdaytoshowtime = $YearRequired . $MonthRequired . "01"; # Set day cursor to 1st day of the required month $lastdaytocountaverage = $YearRequired . $MonthRequired . "31"; # Set day cursor to last day of the required month $lastdaytoshowtime = $YearRequired . $MonthRequired . "31"; # Set day cursor to last day of the required month } } if ($Debug) { debug( "firstdaytocountaverage=$firstdaytocountaverage, lastdaytocountaverage=$lastdaytocountaverage", 1 ); debug( "firstdaytoshowtime=$firstdaytoshowtime, lastdaytoshowtime=$lastdaytoshowtime", 1 ); } # Call to plugins' function AddHTMLContentHeader foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLContentHeader'} } ) { # to add unique visitors & number of visits, by J Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { print "$Message[11]"; } if ( $ShowDomainsStats =~ /V/i ) { print "$Message[10]"; } my $function = "AddHTMLContentHeader_$pluginname"; &$function(); } # Output individual frames or static pages for specific sections #----------------------- if ( scalar keys %HTMLOutput == 1 ) { if ( $HTMLOutput{'alldomains'} ) { &HTMLShowDomains(); } if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} ) { &HTMLShowHosts(); } if ( $HTMLOutput{'unknownip'} ) { &HTMLShowHostsUnknown(); } if ( $HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'} ) { &HTMLShowEmailSendersChart( $NewLinkParams, $NewLinkTarget ); &html_end(1); } if ( $HTMLOutput{'allemailr'} || $HTMLOutput{'lastemailr'} ) { &HTMLShowEmailReceiversChart( $NewLinkParams, $NewLinkTarget ); &html_end(1); } if ( $HTMLOutput{'alllogins'} || $HTMLOutput{'lastlogins'} ) { &HTMLShowLogins(); } if ( $HTMLOutput{'allrobots'} || $HTMLOutput{'lastrobots'} ) { &HTMLShowRobots(); } if ( $HTMLOutput{'urldetail'} || $HTMLOutput{'urlentry'} || $HTMLOutput{'urlexit'} ) { &HTMLShowURLDetail(); } if ( $HTMLOutput{'unknownos'} ) { &HTMLShowOSUnknown($NewLinkTarget); } if ( $HTMLOutput{'unknownbrowser'} ) { &HTMLShowBrowserUnknown($NewLinkTarget); } if ( $HTMLOutput{'osdetail'} ) { &HTMLShowOSDetail(); } if ( $HTMLOutput{'browserdetail'} ) { &HTMLShowBrowserDetail(); } if ( $HTMLOutput{'refererse'} ) { &HTMLShowReferers($NewLinkTarget); } if ( $HTMLOutput{'refererpages'} ) { &HTMLShowRefererPages($NewLinkTarget); } if ( $HTMLOutput{'keyphrases'} ) { &HTMLShowKeyPhrases($NewLinkTarget); } if ( $HTMLOutput{'keywords'} ) { &HTMLShowKeywords($NewLinkTarget); } if ( $HTMLOutput{'downloads'} ) { &HTMLShowDownloads(); } foreach my $code ( keys %TrapInfosForHTTPErrorCodes ) { if ( $HTMLOutput{"errors$code"} ) { &HTMLShowErrorCodes($code); } } # BY EXTRA SECTIONS #---------------------------- HTMLShowExtraSections(); if ( $HTMLOutput{'info'} ) { # TODO Not yet available print "$Center 
"; &html_end(1); } # Print any plugins that have individual pages # TODO - change name, graph isn't so descriptive my $htmloutput = ''; foreach my $key ( keys %HTMLOutput ) { $htmloutput = $key; } if ( $htmloutput =~ /^plugin_(\w+)$/ ) { my $pluginname = $1; print "$Center 
"; my $function = "AddHTMLGraph_$pluginname"; &$function(); &html_end(1); } } # Output main page #----------------- if ( $HTMLOutput{'main'} ) { # Calculate averages my $max_p = 0; my $max_h = 0; my $max_k = 0; my $max_v = 0; my $average_nb = 0; foreach my $daycursor ($firstdaytocountaverage .. $lastdaytocountaverage ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next $average_nb++; # Increase number of day used to count $AverageVisits += ( $DayVisits{$daycursor} || 0 ); $AveragePages += ( $DayPages{$daycursor} || 0 ); $AverageHits += ( $DayHits{$daycursor} || 0 ); $AverageBytes += ( $DayBytes{$daycursor} || 0 ); } if ($average_nb) { $AverageVisits = $AverageVisits / $average_nb; $AveragePages = $AveragePages / $average_nb; $AverageHits = $AverageHits / $average_nb; $AverageBytes = $AverageBytes / $average_nb; if ( $AverageVisits > $max_v ) { $max_v = $AverageVisits; } #if ($average_p > $max_p) { $max_p=$average_p; } if ( $AverageHits > $max_h ) { $max_h = $AverageHits; } if ( $AverageBytes > $max_k ) { $max_k = $AverageBytes; } } else { $AverageVisits = "?"; $AveragePages = "?"; $AverageHits = "?"; $AverageBytes = "?"; } # SUMMARY #--------------------------------------------------------------------- if ($ShowSummary) { &HTMLMainSummary(); } # BY MONTH #--------------------------------------------------------------------- if ($ShowMonthStats) { &HTMLMainMonthly(); } print "\n \n\n"; # BY DAY OF MONTH #--------------------------------------------------------------------- if ($ShowDaysOfMonthStats) { &HTMLMainDaily($firstdaytocountaverage, $lastdaytocountaverage, $firstdaytoshowtime, $lastdaytoshowtime); } # BY DAY OF WEEK #------------------------- if ($ShowDaysOfWeekStats) { &HTMLMainDaysofWeek($firstdaytocountaverage, $lastdaytocountaverage, $NewLinkParams, $NewLinkTarget); } # BY HOUR #---------------------------- if ($ShowHoursStats) { &HTMLMainHours($NewLinkParams, $NewLinkTarget); } print "\n \n\n"; # BY COUNTRY/DOMAIN #--------------------------- if ($ShowDomainsStats) { &HTMLMainCountries($NewLinkParams, $NewLinkTarget); } # BY HOST/VISITOR #-------------------------- if ($ShowHostsStats) { &HTMLMainHosts($NewLinkParams, $NewLinkTarget); } # BY SENDER EMAIL #---------------------------- if ($ShowEMailSenders) { &HTMLShowEmailSendersChart( $NewLinkParams, $NewLinkTarget ); } # BY RECEIVER EMAIL #---------------------------- if ($ShowEMailReceivers) { &HTMLShowEmailReceiversChart( $NewLinkParams, $NewLinkTarget ); } # BY LOGIN #---------------------------- if ($ShowAuthenticatedUsers) { &HTMLMainLogins($NewLinkParams, $NewLinkTarget); } # BY ROBOTS #---------------------------- if ($ShowRobotsStats) { &HTMLMainRobots($NewLinkParams, $NewLinkTarget); } # BY WORMS #---------------------------- if ($ShowWormsStats) { &HTMLMainWorms(); } print "\n \n\n"; # BY SESSION #---------------------------- if ($ShowSessionsStats) { &HTMLMainSessions(); } # BY FILE TYPE #------------------------- if ($ShowFileTypesStats) { &HTMLMainFileType($NewLinkParams, $NewLinkTarget); } # BY FILE SIZE #------------------------- if ($ShowFileSizesStats) { # TODO } # BY DOWNLOADS #------------------------- if ($ShowDownloadsStats) { &HTMLMainDownloads($NewLinkParams, $NewLinkTarget); } # BY PAGE #------------------------- if ($ShowPagesStats) { &HTMLMainPages($NewLinkParams, $NewLinkTarget); } # BY OS #---------------------------- if ($ShowOSStats) { &HTMLMainOS($NewLinkParams, $NewLinkTarget); } # BY BROWSER #---------------------------- if ($ShowBrowsersStats) { &HTMLMainBrowsers($NewLinkParams, $NewLinkTarget); } # BY SCREEN SIZE #---------------------------- if ($ShowScreenSizeStats) { &HTMLMainScreenSize(); } print "\n \n\n"; # BY REFERENCE #--------------------------- if ($ShowOriginStats) { &HTMLMainReferrers($NewLinkParams, $NewLinkTarget); } print "\n \n\n"; # BY SEARCH KEYWORDS AND/OR KEYPHRASES #------------------------------------- if ($ShowKeyphrasesStats || $ShowKeywordsStats){ &HTMLMainKeys($NewLinkParams, $NewLinkTarget); } print "\n \n\n"; # BY MISC #---------------------------- if ($ShowMiscStats) { &HTMLMainMisc(); } # BY HTTP STATUS #---------------------------- if ($ShowHTTPErrorsStats) { &HTMLMainHTTPStatus($NewLinkParams, $NewLinkTarget); } # BY SMTP STATUS #---------------------------- if ($ShowSMTPErrorsStats) { &HTMLMainSMTPStatus($NewLinkParams, $NewLinkTarget); } # BY CLUSTER #---------------------------- if ($ShowClusterStats) { &HTMLMainCluster($NewLinkParams, $NewLinkTarget); } # BY EXTRA SECTIONS #---------------------------- foreach my $extranum ( 1 .. @ExtraName - 1 ) { &HTMLMainExtra($NewLinkParams, $NewLinkTarget, $extranum); } # close the HTML page &html_end(1); } } else { print "Jumped lines in file: $lastlinenb\n"; if ($lastlinenb) { print " Found $lastlinenb already parsed records.\n"; } print "Parsed lines in file: $NbOfLinesParsed\n"; print " Found $NbOfLinesDropped dropped records,\n"; print " Found $NbOfLinesComment comments,\n"; print " Found $NbOfLinesBlank blank records,\n"; print " Found $NbOfLinesCorrupted corrupted records,\n"; print " Found $NbOfOldLines old records,\n"; print " Found $NbOfNewLines new qualified records.\n"; } #sleep 10; 0; # Do not remove this line #------------------------------------------------------- # ALGORITHM SUMMARY # # Read_Config(); # Check_Config() and Init variables # if 'frame not index' # &Read_Language_Data($Lang); # if 'frame not mainleft' # &Read_Ref_Data(); # &Read_Plugins(); # html_head # # If 'migrate' # We create/update tmp file with # &Read_History_With_TmpUpdate(year,month,day,hour,UPDATE,NOPURGE,"all"); # Rename the tmp file # html_end # Exit # End of 'migrate' # # Get last history file name # Get value for $LastLine $LastLineNumber $LastLineOffset $LastLineChecksum with # &Read_History_With_TmpUpdate(lastyearbeforeupdate,lastmonthbeforeupdate,lastdaybeforeupdate,lasthourbeforeupdate,NOUPDATE,NOPURGE,"general"); # # &Init_HashArray() # # If 'update' # Loop on each new line in log file # lastlineoffset=lastlineoffsetnext; lastlineoffsetnext=file pointer position # If line corrupted, skip --> next on loop # Drop wrong virtual host --> next on loop # Drop wrong method/protocol --> next on loop # Check date --> next on loop # If line older than $LastLine, skip --> next on loop # So it's new line # $LastLine = time or record # Skip if url is /robots.txt --> next on loop # Skip line for @SkipHosts --> next on loop # Skip line for @SkipFiles --> next on loop # Skip line for @SkipUserAgent --> next on loop # Skip line for not @OnlyHosts --> next on loop # Skip line for not @OnlyUsers --> next on loop # Skip line for not @OnlyFiles --> next on loop # Skip line for not @OnlyUserAgent --> next on loop # So it's new line approved # If other month/year, create/update tmp file and purge data arrays with # &Read_History_With_TmpUpdate(lastprocessedyear,lastprocessedmonth,lastprocessedday,lastprocessedhour,UPDATE,PURGE,"all",lastlinenb,lastlineoffset,CheckSum($_)); # Define a clean Url and Query (set urlwithnoquery, tokenquery and standalonequery and $field[$pos_url]) # Define PageBool and extension # Analyze: Misc tracker --> complete %misc # Analyze: Hit on favorite icon --> complete %_misc, countedtraffic=1 (not counted anywhere) # If (!countedtraffic) Analyze: Worms --> complete %_worms, countedtraffic=2 # If (!countedtraffic) Analyze: Status code --> complete %_error_, %_sider404, %_referrer404 --> countedtraffic=3 # If (!countedtraffic) Analyze: Robots known --> complete %_robot, countedtraffic=4 # If (!countedtraffic) Analyze: Robots unknown on robots.txt --> complete %_robot, countedtraffic=5 # If (!countedtraffic) Analyze: File types - Compression # If (!countedtraffic) Analyze: Date - Hour - Pages - Hits - Kilo # If (!countedtraffic) Analyze: Login # If (!countedtraffic) Do DNS Lookup # If (!countedtraffic) Analyze: Country # If (!countedtraffic) Analyze: Host - Url - Session # If (!countedtraffic) Analyze: Browser - OS # If (!countedtraffic) Analyze: Referer # If (!countedtraffic) Analyze: EMail # Analyze: Cluster # Analyze: Extra (must be after 'Define a clean Url and Query') # If too many records, we flush data arrays with # &Read_History_With_TmpUpdate(lastprocessedyear,lastprocessedmonth,lastprocessedday,lastprocessedhour,UPDATE,PURGE,"all",lastlinenb,lastlineoffset,CheckSum($_)); # End of loop # # Create/update tmp file # Seek to lastlineoffset in logfile to read and get last line into $_ # &Read_History_With_TmpUpdate(lastprocessedyear,lastprocessedmonth,lastprocessedday,lastprocessedhour,UPDATE,PURGE,"all",lastlinenb,lastlineoffset,CheckSum($_)) # Rename all created tmp files # End of 'update' # # &Init_HashArray() # # If 'output' # Loop for each month of required year # &Read_History_With_TmpUpdate($YearRequired,$monthloop,'','',NOUPDATE,NOPURGE,'all' or 'general time' if not required month) # End of loop # Show data arrays in HTML page # html_end # End of 'output' #------------------------------------------------------- #------------------------------------------------------- # DNS CACHE FILE FORMATS SUPPORTED BY AWSTATS # Format /etc/hosts x.y.z.w hostname # Format analog UT/60 x.y.z.w hostname #------------------------------------------------------- #------------------------------------------------------- # IP Format (d=decimal on 16 bits, x=hexadecimal on 16 bits) # # 13.1.68.3 IPv4 (d.d.d.d) # 0:0:0:0:0:0:13.1.68.3 IPv6 (x:x:x:x:x:x:d.d.d.d) # ::13.1.68.3 # 0:0:0:0:0:FFFF:13.1.68.3 IPv6 (x:x:x:x:x:x:d.d.d.d) # ::FFFF:13.1.68.3 IPv6 # # 1070:0:0:0:0:800:200C:417B IPv6 # 1070:0:0:0:0:800:200C:417B IPv6 # 1070::800:200C:417B IPv6 #------------------------------------------------------- awstats-7.4/wwwroot/cgi-bin/lang/0000750000175000017500000000000012410217071014635 5ustar skskawstats-7.4/wwwroot/cgi-bin/lang/awstats-bzg.txt0000640000175000017500000001200612410217071017644 0ustar sksk# French message file (robinjeremy@free.fr) # $Revision$ - $Date$ message0=Dianavet message1=Dianavet (IP na graet) message2=All message3=Gwelout munudoù message4=Deiz message5=Miz message6=Bloavezh message7=Stadegoù message8=Gweladenn kentañ message9=Gweladenn diwezhañ message10=Gweladennoù message11=Gweladennerien disheñvel message12=Gweladenn message13=Ger alc'hwez disheñvel message14=Klask message15=Dregantad message16=Tremenerezh message17=Domanioù/Bro message18=Gweladenner message19=Pajennoù-URL message20=Eurioù message21=Merdeerioù message22= message23=Orin/Referer message24=Na hizivaet c'hoazh (sell 'Build/Update', pajenn awstats_setup.html) message25=Domanioù/Bro ar weladennerien message26=ostizioù message27=pajennoù message28=pajenn disheñvel message29=Pajennoù gwelet message30=Gerioù all message31=Pajennoù na gavet message32=Kodoù Status HTTP message33=Stummoù Netscape message34=Stummoù MS Internet Explorer message35=Hizivaat diwezhañ message36=Kevreadennoù ouzh al lec'hienn dre message37=Orin ar gevreadenn message38=Chomlec'h war-eeun / Bookmarks message39=Orin dianavet message40=Liamm adalek ul lusker enklask message41=Liamm adalek ur bajenn er-maez (Lec'hiennoù all, er-maez eus luskerioù) message42=Liamm adalek ur bajenn diabarzh (pajenn all lec'hienn) message43=Frazennoù alc'hwez enklask message44=Gerioù alc'hwez enklask message45=Chomlec'hioù IP na graet message46=OS dianavet (maezienn useragent kriz) message47=URLioù al lec'hienn na gavet (Kod HTTP 404) message48=Chomlec'h IP message49=Hitoù en diarvar message50=Merdeerioù dianavet (maezienn useragent kriz) message51=robot disheñvel message52=gweladennoù/gweladenner message53=Gweladennerien Robotoù/Spideroù message54=Dielfenner log frank evit stadegoù kenrouedad kempleshoc'h message55=war message56=Pajenn message57=Hit message58=Stummoù message59=Reizhiadoù korvoiñ message60=Gen message61=C'hw message62=Meu message63=Ebr message64=Mae message65=Eve message66=Gou message67=Eos message68=Gwen message69=Her message70=Du message71=Ker message72=Merdeiñ message73=Furmad restroù message74=Hizivaadur diouzhtu message75=Bann drafet message76=Distreiñ pajenn degemer message77=Top message78=dd mmm yyyy - HH:MM message79=Sil message80=Listennad leun message81=Ostizioù message82=Anavet message83=Robotoù message84=Sul message85=Lun message86=Meu message87=Mer message88=Yao message89=Gwe message90=Sad message91=Deizioù ar sizhun message92=Piv message93=Pegoulz message94=Loginoù implijet message95=Mun message96=Keitad message97=Uc'hek message98=Gwaskadur kenrouedad message99=Bann drafet erbedet message100=Gwaskadur war message101=Disoc'h gwaskadur message102=Hollad message103=frazenn alc'hwez disheñvel message104=Moned message105=Kod message106=Ment keitad message107=Liamm adalek un NewsGroup message108=Ko message109=Mo message110=Go message111=Sunerez message112=Ya message113=Nann message114=Titour. message115=Mat eo message116=Er maez message117=Amzer gweladennoù message118=Serriñ message119=Okted message120=Frazennoù alc'hwez message121=Gerioù alc'hwez message122=Luskerioù enklask disheñvel message123=lec'hiennoù disheñvel message124=Frazennoù all message125=Loginoù all (hag/pe implijerien dianav) message126=Luskerioù enklask message127=Lec'hiennoù meneger message128=Diverradenn message129=Talvoud resis divak er weler 'bloaziek' message130=Taolennoù talvoud message131=Postel Kaser message132=Postel Resever message133=Prantad dielfennadur message134=Extra/Marketing message135=Spister skramm message136=Argadoù Worm/Viruz message137=Ouzhpenn sinedoù (meneger keñverel) message138=Deizioù ar miz message139=Diseurt message140=Merdeerioù gant skor Java a labour message141=Merdeerioù gant skor Macromedia Director message142=Merdeerioù gant skor Flash message143=Merdeerioù gant skor audio Real message144=Merdeerioù gant skor audio QuickTime message145=Merdeerioù gant skor audio Windows Media message146=Merdeerioù gant skor PDF message147=Kodoù fazi SMTP message148=Bro message149=Posteloù message150=Ment message151=Kentañ message152=Diwezhañ message153=Sil dilez message154=Orin hitoù pe dremenerezh "na welet" gant ar weladennerien eo ar c'hodoù kinniget amañ, neuze na ziskouezet en daolennoù all. message155=Kluster message156=Orin hitoù pe dremenerezh "na welet" gant ar welennaderien eo ar robotoù kinniget amañ, neuze na ziskouezet en daolennoù all. message157=Niverennoù war lerc'h + a dermen hitoù a-berzh war restroù "robots.txt". message158=Orin hitoù pe dremenerezh "na welet" gant ar weledennaderien eo buzugoù stelennegel kinniget amañ, neuze na ziskouezet en daolennoù all. message159=An dremenerzh 'na welet' eo an dremenerezh graet dre robotoù, buzhugoù stlennegel pe respontoù HTTP gant distreiñ kod ispisial. message160=Tremenerezh 'gwelet' message161=Tremenerezh 'na welet' message162=Istorel miziek message163=Ouzh message164=buzhugoù stlennegel disheñvel message165=Posteloù kaset message166=Posteloù faziet/dizegemeret message167=Paloù kizidik message168=Javascript deweredekaet message169=Genelet gant message170=pluginoù message171=Rannvroioù message172=Kêrioù awstats-7.4/wwwroot/cgi-bin/lang/awstats-ca.txt0000640000175000017500000001204112410217071017444 0ustar sksk# Catalan message file (Temu-BCN temujinnn@hotmail.com) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Desconegut message1=Desconegut (Adreça IP desconeguda) message2=Altres message3=Veure detalls message4=Dia message5=Mes message6=Any message7=Estadístiques del lloc message8=Primera visita message9=Última visita message10=Nombre de visites message11=Visitants diferents message12=Visita message13=Paraula clau (keyword) message14=Cerques message15=Percentatge message16=Tràfic message17=Dominis/Països message18=Visitants message19=Pàgines/URLs message20=Visites per Hores message21=Navegadors message22= message23=Enllaços message24=Mai utilitzats (Miri 'Build/Update' a la pàgina awstats_setup.html) message25=Visites por Dominis/Països message26=servidors message27=pàgines message28=pàgines diferents message29=Accessos message30=Altres paraules message31=Pàgines no trobades message32=Codis d'error del Protocol HTTP message33=Versions de Netscape message34=Versions de MS Internet Explorer message35=Última actualització message36=Connectat al lloc desde message37=Origen de l'enllaç message38=Des de direcció directa o Preferits message39=Origen desconegut message40=Enllaços des d'algun motor de cerca message41=Enllaços des de pàgines externes (excepte motors de cerca) message42=Enllaços des de pàgines internes (altres pàgines del lloc) message43=Paraules clau utilitzades pel motor de cerca message44=Paraules utilitzades pel motor de cerca message45=Direcció IP no identificada message46=Sistema Operatiu desconegut (camp de referència) message47=URLs sol·licitades però no trobades (codi 404 del protocol HTTP) message48=Direcció IP message49=Sol·licituds errònies message50=Navegadors desconeguts (camp de referència) message51=Visites de Robots message52=Visites/Visitant message53=Visites de Robots/Spiders (indexadors) message54=Analitzador gratuït de històrics per a estadístiques Web avançades message55=de message56=Pàgines message57=Sol·licituds message58=Versions message59=Sistemes Operatius message60=Gen message61=Feb message62=Mar message63=Abr message64=Mai message65=Jun message66=Jul message67=Ago message68=Sep message69=Oct message70=Nov message71=Des message72=Navegació message73=Tipus de fitxer message74=Actualitzar ara message75=Ample de banda message76=Tornar a la pàgina principal message77=Top message78=dd mmm yyyy - HH:MM message79=Filtre message80=Llista completa message81=Servidors message82=Coneguts message83=Robots message84=Diu message85=Dil message86=Dim message87=Dmc message88=Djs message89=Div message90=Dis message91=Dies de la setmana message92=Qui message93=Quan message94=Usuaris Autentificats message95=Min message96=Mitja message97=Max message98=Compressió Web message99=Ample de banda estalviat message100=Abans de la compressió message101=Després de la compressió message102=Total message103=Paraules clau diferents message104=Pàgina d'entrada message105=Codi message106=Volum mitjà message107=Enllaços des d'un grup de notícies message108=KB message109=MB message110=GB message111=Grabber message112=Sí message113=No message114=Informació WhoIs message115=Acceptar message116=Sortida message117=Durada de les visites message118=Tancar finestra message119=Bytes message120=Motors de cerca frases clau message121=Motors de cerca paraules clau message122=enllaços des de motors de cerca diferents message123=enllaços des d'altres llocs message124=Altres frases de cerca message125=Altres usuaris (i/o usuaris anònims) message126=Enllaços des de motors de cerca message127=Llocs d'enllaços message128=Sumari message129=Valor exacte no disponible a la vista d'any message130=Matrius de dades message131=EMail del emissor message132=EMail del receptor message133=Període reportat message134=Extra/Marketing message135=Mides de pantalla message136=Atacs de Cucs/Virus message137=Inclosos a favorits (estimat) message138=Dies del mes message139=Miscel·lanis message140=Cercadors amb suport Java message141=Cercadors amb suport Macromedia Director message142=Cercadors amb suport Flash message143=Cercadors amb suport de reproducció Real àudio message144=Cercadors amb suport de reproducció Quicktime audio message145=Cercadors amb suport de reproducció Windows Media audio message146=Cercadors amb suport PDF message147=Codis d'error SMTP message148=Països message149=Correus message150=Volum message151=Primer message152=Últim message153=Excloure filtre message154=Els codis mostrats aquí son donats per sol·licituds o tràfic "no vist" per els visitants, es troben en aquest apartat. message155=Cluster message156=Els Robots comptats aquí son donats per sol·licituds o tràfic "no vist" per els visitants, es troben en aquest apartat. message157=Números després de + son sol·licituds correctes en els arxius “robots.txt”. message158=Els Cucs comptats aquí son donats per sol·licituds o tràfic "no vist" per els visitants, es troben en aquest apartat. message159=El tràfic no vist es tràfic generat per robots, cucs o respostes de codi especial d'estat HTTP. message160=Tràfic vist message161=Tràfic no vist message162=Històric Mensual message163=Cucs message164=Cucs diferentsawstats-7.4/wwwroot/cgi-bin/lang/awstats-ba.txt0000640000175000017500000001211312410217071017443 0ustar sksk# Bosnian message file (info@uino.gov.ba) # $Revision$ - $Date$ PageCode=iso-8859-2 message0=Nepoznat message1=nepoznatih (IP adresa nije razrije¹ena) message2=Ostalo message3=Vidi detalje message4=Dan message5=Mjesec message6=Godina message7=Statistika za message8=Prvi posjet message9=Zadnji posjet message10=Broj posjeta message11=Jedinstvenih posjetilaca message12=Posjet message13=Kljuèna rijeè message14=Pretraga message15=Procenat message16=Saobraæaj message17=Domeni/Zemlje message18=Posjetitelji message19=Stranice/URL message20=Sati (Serversko vrijeme) message21=Browseri (preglednici) message22=HTTP Gre¹ke message23=Refereri (linkovi) message24=Kljuène rijeèi pretrage message25=Domeni/zemlje posjetitelja message26=raèunara message27=stranica message28=razlièite stranice message29=Pristup message30=Ostale rijeèi message31=Nepronaðene stranice message32=HTTP Kodovi gre¹ke message33=Verzije Netscape-a message34=Verzije IE-a message35=Posljednje osvje¾avanje message36=Link na sajt sa: message37=Odakle je korisnik do¹ao message38=Direktan pristup / Bookmarks message39=Nepoznato porijeklo message40=Link sa Internet pretra¾ivaèa message41=Link sa eksterne stranice (drugi web sajtovi sem pretra¾ivaèa) message42=Link sa vlastite stranice (druga stranica unutar istog sajta) message43=kljuènih fraza kori¹tenih na pretra¾ivaèima message44=kljuènih rijeèi kori¹tenih na pretra¾ivaèima message45=Nerazrije¹ena IP Adresa message46=Nepoznat OS (polje Referer) message47=Zahtjevan URL koji nije pronaðen (HTTP kod 404) message48=IP Adresa message49=Gre¹ke Pogodci message50=Nepoznat preglednik (polje Referer) message51=Roboti posjetitelji message52=posjeta/posjetitelju message53=Posjetitelji roboti/spideri message54=Besplatan analizator logova za napredne web statistike message55=od message56=Stranica message57=Pogodaka message58=Verzije message59=Operativni sistem message60=Jan message61=Feb message62=Mar message63=Apr message64=Maj message65=Jun message66=Jul message67=Aug message68=Sep message69=Okt message70=Nov message71=Dec message72=Navigacija message73=Dnevna statistika message74=Osvje¾i sada! message75=Bajta message76=Nazad na glavnu stranicu message77=Prvih message78=dd mmm yyyy - HH:MM message79=Filter message80=Puna lista message81=Raèunari message82=poznatih message83=Roboti message84=Ned message85=Pon message86=Uto message87=Sri message88=Èet message89=Pet message90=Sub message91=Dani sedmice message92=Ko message93=Kada message94=Prijavljenih korisnika message95=Min message96=Prosjeèno message97=Max message98=Web kompresija message99=Saèuvani promet message100=Prije kompresije message101=Poslije kompresije message102=Ukupno message103=razlièitih kljuènih fraza message104=Ulaz message105=Kod message106=Prosjeèna velièina message107=Dolazaka sa NewsGroupa message108=KB message109=MB message110=GB message111=Grabber message112=Da message113=Ne message114=Info. message115=OK message116=Izlaz message117=Trajanje posjeta message118=Zatvori prozor message119=Bajta message120=Tra¾ene Fraze message121=Tra¾ene Rijeèi message122=razlièitih pretra¾ivaèa message123=razlièitih sajtova message124=Ostale fraze message125=Ostali posjeti (i/il anonimni korisnici) message126=Sa kojih pretra¾ivaèa message127=Sa kojih stranica message128=Opis i statistika message129=Taèan broj nije dostupan u godi¹njen pregledu message130=Vrijednost niza podataka (Data value arrays) message131=E-Mail po¹iljaoca message132=E-Mail primatelja message133=Period izvje¹taja message134=Extra/Marketing message135=Velièine ekrana message136=Worm/Virus napadi message137=Stavljeno u favorite (procjenjeno) message138=Dani u mjesecu message139=Razno message140=Preglednici sa podr¹kom za Javu message141=Preglednici sa podr¹kom za Macromedia Director-a message142=Preglednici sa podr¹kom za Flash message143=Preglednici sa podr¹kom za sviranje Real audia message144=Preglednici sa podr¹kom za sviranje Quicktime audia message145=Preglednici sa podr¹kom za sviranje Windows Media audia message146=Preglednici sa podr¹kom za PDF message147=SMTP kodovi gre¹ka message148=Dr¾ave message149=Mails message150=Velièina message151=Prvi message152=Posljednji message153=Filter iskljuèenja (Exclude filter) message154=Ovdje prikazani podaci svrstani su pod "neviðeno" od ¾ivih korisnika, tako da nisu ukljuèeni u ostale rezultate. message155=Cluster message156=Promet ovdje prikazanih robota svrstan je pod "neviðeno" od ¾ivih korisnika, tako da ti podaci nisu ukljuèeni u ostale rezultate. message157=Broj nakon + je broj uspje¹nih pogodaka na "robots.txt" datoteku. message158=Promet ovdje prikazanih crva (worms) svrstan je pod "neviðeno" od ¾ivih korisnika, tako da ti podaci nisu ukljuèeni u ostale rezultate. message159=Neviðen promet ukljuèuje promet stvoren robotima, crvima (worms), ili kao odgovor specijalnim HTTP status kodovima. message160=Viðen promet message161=Neviðen promet message162=Mjeseèni promet message163=Crv (worm) message164=Razlièitih crva (worms) message165=Uspje¹no poslanih mailova message166=Mail-ovi nisu poslani/odbijeni message167=Osjetljivi ciljevi (Sensitive targets) message168=Onemoguèen Javascript message169=Napravio message170=pluginsawstats-7.4/wwwroot/cgi-bin/lang/awstats-cn.txt0000640000175000017500000001050112410217071017460 0ustar sksk# Chinese (simplified) message file (by Che Dong chedongATgmail.com) # $Revision$ - $Date$ PageCode=GBK message0=ÎÞ·¨µÃÖª message1=ÎÞ·¨µÃÖª£¨²»ÄÜ·´Ïò½âÎöµÄÍøÓòÃû³Æ£© message2=ÆäËû message3=²é¿´Ïêϸ×ÊÁÏ message4=ÈÕÆÚ message5=Ô message6=Äê message7=ͳ¼ÆÍøÕ¾ message8=Ê״βιÛÈÕÆÚ message9=×î½ü²Î¹ÛÈÕÆÚ message10=²Î¹ÛÈË´Î message11=²Î¹ÛÕß message12=²Î¹Û message13=¸ö¹Ø¼ü×Ö´Ê message14=ËÑË÷ message15=°Ù·Ö±È message16=Á÷Á¿Í³¼Æ message17=ÍøÓò»ò¹ú¼Ò message18=²Î¹ÛÕß message19=URL ÍøÖ· message20=ÿСʱä¯ÀÀ´ÎÊý message21=ä¯ÀÀÆ÷ message22=HTTP ´íÎó message23=·´ÏàÁ´½Ó message24=´Óδ¸üУ¨Çë²Î¿¼ awstats_setup.htmlÉ쵀 'Build/Update'£© message25=²Î¹ÛÕßµÄÍøÓò»ò¹ú¼Ò message26=Ö÷»úÊý message27=ÍøÒ³Êý message28=¸ö²»Í¬µÄÍøÒ³ message29=´æÈ¡´ÎÊý message30=²»Í¬µÄ×Ö´Ê message31=ÕÒ²»µ½µÄÍøÒ³ message32=HTTP ´íÎóÂë message33=Netscape °æ±¾ message34=IE °æ±¾ message35=×î½ü¸üРmessage36=Á´½ÓÍøÕ¾µÄ·½·¨ message37=À´Ô´ÍøÖ· message38=ÍøÖ·ÓɲιÛÕß×ÔÐÐÊäÈë»ò´ÓÊéǩȡ³ö message39=ÎÞ·¨µÃÖªÁ¬½áµÄ·½·¨ message40=À´×ÔËÑË÷ÒýÇæ message41=À´×Ô´ËÍøÕ¾ÍâµÄÆäËûÍøÒ³ (·ÇËÑË÷ÒýÇæ) message42=´ÓÍøÕ¾ÄÚ²¿Á¬½á message43=ÍøÕ¾ËÑË÷µÄ¹Ø¼ü×Ö¾ä message44=ÍøÕ¾ËÑË÷µÄ¹Ø¼ü×Ö´Ê message45=ÎÞ·¨·´½âÒëµÄIPµØÖ· message46=ÎÞ·¨µÃÖªµÄ²Ù×÷ϵͳ message47=ÕÒ²»µ½µÄÍøÖ·Á´½Ó (HTTP ´íÎóÂë 404) message48=IP µØÖ· message49=´íÎó´ÎÊý message50=ÎÞ·¨µÃÖªµÄä¯ÀÀÆ÷ message51=¸ö»úÆ÷ÈË message52=²Î¹ÛÈË´Î/²Î¹ÛÕß message53=ËÑË÷ÒýÇæÍøÕ¾µÄ»úÆ÷ÈË message54=ÍøÒ³¼Í¼·ÖÎöϵͳ message55=¸öì¶ message56=ÍøÒ³Êý message57=ÎļþÊý message58=°æ±¾ message59=²Ù×÷ϵͳ message60=01Ô message61=02Ô message62=03Ô message63=04Ô message64=05Ô message65=06Ô message66=07Ô message67=08Ô message68=09Ô message69=10Ô message70=11Ô message71=12Ô message72=ä¯ÀÀÆ÷ͳ¼Æ message73=ÎļþÀà±ð message74=Á¢¼´¸üРmessage75=×Ö½Ú message76=»Øµ½Ö÷Ò³ message77=ǰ message78=yyyyÄêmmÔÂddÈÕ HH:MM message79=¹ýÂ˰üº¬ message80=È«²¿Áгö message81=Ö÷»ú message82=¸ö½âÒë³É¹¦ message83=ËÑË÷ÒýÇæÍøÕ¾ message84=ÈÕ message85=Ò» message86=¶þ message87=Èý message88=ËÄ message89=Îå message90=Áù message91=°´ÐÇÆÚ message92=°´²Î¹ÛÕß message93=°´²Î¹Ûʱ¼ä message94=¼ø±ð³öµÄÓû§ message95=×îС message96=ƽ¾ùÊý message97=×î´ó message98=ÍøÒ³Ñ¹Ëõ message99=½ÚÊ¡Á˵Ĵø¿í message100=ѹËõǰ message101=ѹËõºó message102=×ÜÊý message103=¸ö²»Í¬µÄ¹Ø¼ü×Ö¾ä message104=ÈëÕ¾´¦ message105=±àÂë message106=ƽ¾ù´óС message107=´ÓÐÂÎÅȺ×éÁ´½Ó message108=KB message109=MB message110=GB message111=ÀëÏßä¯ÀÀÆ÷£¨ÍøÒ³×¥È¡£© message112=ÊÇ message113=·ñ message114=Whois ÐÅÏ¢ message115=OK message116=³öÕ¾´¦ message117=ÿ´Î²Î¹ÛËù»¨Ê±¼ä message118=¹Ø±Õ´Ë´°¿Ú message119=Bytes message120=ÓÃÒÔËÑË÷µÄ¶ÌÓï message121=ÓÃÒÔËÑË÷µÄ¹Ø¼ü´Ê message122=¸ö²»Í¬µÄËÑË÷ÒýÇæ×ª½é²Î¹ÛÕßµ½ÕâÕ¾ message123=¸ö²»Í¬µÄÆäËûÍøÕ¾×ª½é²Î¹ÛÕßµ½ÕâÕ¾ message124=ÆäËû¶ÌÓï message125=ÆäËûµÇ¼ (°üÀ¨ÄäÃûµÇ¼) message126=ÓÉÄÇЩËÑË÷ÒýÇæ×ª½é message127=ÓÉÄÇЩÆäËûÍøÕ¾×ª½é message128=ÕªÒª message129=×÷È«Äêͳ¼ÆÊ±£¬ÎÞ·¨×¼È·µÃÖª²Î¹ÛÕßµÄÊýÄ¿ message130=Êý¾ÝÖµÊý×é message131=·¢ÐÅÈËÓÊÖ· message132=ÊÕÐÅÈËÓʼþµØÖ· message133=±¨±íÈÕÆÚ message134=ÌØ±ð/Êг¡ message135=ÆÁÄ»·Ö±æÂÊ message136=È䳿/²¡¶¾ ¹¥»÷ message137=¼ÓÈëµ½ÊղؼÐ(¹À¼Æ) message138=°´ÈÕÆÚͳ¼Æ message139=ÆäËû message140=ä¯ÀÀÆ÷Ö§³Ö Java message141=ä¯ÀÀÆ÷Ö§³Ö Macromedia Director message142=ä¯ÀÀÆ÷Ö§³Ö Flash message143=ä¯ÀÀÆ÷Ö§³Ö Real audio ²¥·Å message144=ä¯ÀÀÆ÷Ö§³Ö Quicktime audio ²¥·Å message145=ä¯ÀÀÆ÷Ö§³Ö Windows Media audio ²¥·Å message146=ä¯ÀÀÆ÷Ö§³Ö PDF message147=SMTP´íÎó´úÂë message148=¹ú¼Ò»òµØÇø message149=Óʼþ message150=´óС message151=µÚÒ»¸ö message152=×îĩһ¸ö message153=¹ýÂ˲»°üº¬ message154=·Çä¯ÀÀÆ÷²úÉúµÄÁ÷Á¿£¨À´×ÔËÑË÷ÒýÇæ»úÆ÷ÈË£¬²¡¶¾È䳿µÈ£© message155=¼¯Èº message156=ÒÔÉÏÁгöµÄËÑË÷ÒýÇæ»úÆ÷È˲úÉúµÄ¡°·Çä¯ÀÀÆ÷¡±Á÷Á¿²¢Î´°üº¬ÔÚÆäËûͼ±íÖÐ message157=¡°+¡±ºóµÄÊý×ÖΪ³É¹¦µÄ¡°robots.txt¡±·ÃÎÊ´ÎÊý message158=ÒÔÉÏÁгöµÄÈ䳿²úÉúµÄ¡°·Çä¯ÀÀÆ÷¡±Á÷Á¿²¢Î´°üº¬ÔÚÆäËûͼ±íÖÐ message159=·Çä¯ÀÀµÄÁ÷Á¿°üÀ¨ËÑË÷ÒýÇæ»úÆ÷ÈË£¬È䳿²¡¶¾²úÉúµÄÁ÷Á¿ºÍ·ÇÕý³£µÄHTTPÏàÓ¦ message160=ä¯ÀÀÆ÷Á÷Á¿ message161=·Çä¯ÀÀÆ÷Á÷Á¿ message162=°´ÔÂÀúʷͳ¼Æ message163=È䳿 message164=²»Í¬µÄÈ䳿 message165=³É¹¦·¢ËÍÓʼþ message166=Óʼþʧ°Ü»ò¾ÜÊÕ message167=Ãô¸ÐÄ¿±ê message168=Javascript½ûÓà message169=´´½¨Õß message170=²å¼þ message171=µØÇø message172=³ÇÊÐ message173=Opera °æ±¾ message174=Safari °æ±¾ message175=Chrome °æ±¾ message176=Konqueror °æ±¾ message177=, message178=ÏÂÔØ awstats-7.4/wwwroot/cgi-bin/lang/awstats-nl.txt0000640000175000017500000001254012410217071017476 0ustar sksk# Dutch message file (door Amedee Van Gasse - amedee.be) # Addon by Marcel Huijkman - marcel.huijkman@raketnet.nl # Reviewed 2007-09-15 by H. Hahn - h.hahn@hahn-informatica.nl # $Revision$ - $Date$ message0=Onbekend message1=Onbekend (niet-herleide IP-adressen) message2=Overige message3=Details bekijken message4=Dag message5=Maand message6=Jaar message7=Statistieken van message8=Eerste bezoek message9=Laatste bezoek message10=Aantal bezoeken message11=Unieke bezoekers message12=bezoek message13=trefwoorden message14=Zoeken message15=Procent message16=Verkeer message17=Domeinen/landen message18=Bezoekers message19=Pagina’s/URL’s message20=Uren message21=Browsers message22=HTTP-foutmeldingen message23=Verwijzing message24=Zoek trefwoorden message25=Bezoekers domeinen/landen message26=Hosts message27=pagina’s message28=verschillende pagina’s message29=Bezoeken message30=Andere woorden message31=Niet-gevonden pagina’s message32=HTTP-foutcodes message33=Netscape versies message34=MS Internet Explorer versies message35=Bijgewerkt t/m message36=Verbinding naar site vanaf message37=Herkomst message38=Directe adressering / bladwijzers message39=Herkomst onbekend message40=Vanuit internetzoeksystemen message41=Vanuit externe pagina’s (andere sites, m.u.v. zoeksystemen) message42=Vanuit interne pagina’s (andere pagina van dezelfde site) message43=Gebruikte trefzinnen bij zoeksystemen message44=Gebruikte trefwoorden bij zoeksystemen message45=Niet-herleide IP-adressen message46=Onbekend OS (veld ‘Referrer&rsquo) message47=Opgevraagde maar niet-gevonden URLs (HTTP code 404) message48=IP-adres message49=Mislukte hits message50=Onbekende browsers (Referer veld) message51=Bezoekende robots message52=bezoeken/bezoeker message53=Robots/spiders message54=Gratis realtime-logbestandanalyzer voor geavanceerde webstatistieken message55=van message56=Pagina’s message57=Hits message58=Versies message59=Besturingssystemen message60=jan. message61=febr. message62=mrt. message63=april message64=mei message65=juni message66=juli message67=aug. message68=sept. message69=okt. message70=nov. message71=dec. message72=Navigatie message73=Bestandstypen message74=Nu bijwerken message75=Bytes message76=Terug naar hoofdpagina message77=Top message78=dd mmm yyyy - HH.MM message79=Filter message80=Volledige lijst message81=Hosts message82=Bekend message83=Robots message84=zo message85=ma message86=di message87=wo message88=do message89=vr message90=za message91=Weekdagen message92=Wie message93=Wanneer message94=Ingelogde bezoekers message95=Min message96=Gemiddeld message97=Max message98=Webcompressie message99=Bespaarde bandbreedte message100=Vóór compressie message101=Na compressie message102=Totaal message103=verschillende trefzinnen message104=Binnenkomst message105=Code message106=Gemiddelde grootte message107=Links vanuit een nieuwsgroep message108=KB message109=MB message110=GB message111=Grabber message112=Ja message113=Nee message114=WhoIs-info message115=OK message116=Vertrek message117=Duur bezoeken message118=Venster sluiten message119=Bytes message120=Gebruikte trefzinnen message121=Gebruikte trefwoorden message122=verschillende verwijzende zoeksystemen message123=verschillende verwijzende sites message124=Andere zinnen message125=Andere logins (en/of anonieme gebruikers) message126=Verwijzende zoeksystemen message127=Verwijzende sites message128=Samenvatting message129=Exacte waarde niet beschikbaar in jaaroverzicht message130=Data value arrays message131=E-mail afzender message132=E-mail ontvanger message133=Rapportageperiode message134=Extra/marketing message135=Schermresoluties message136=Worm- of virusaanvallen message137=Aan favorieten/bladwijzers toegevoegd (relatieve indicatie) message138=Dagen van maand message139=Diversen message140=Browsers met ondersteuning Java message141=Browsers met ondersteuning Macromedia Director message142=Browsers met ondersteuning Flash message143=Browsers met ondersteuning Real audio message144=Browsers met ondersteuning Quicktime audio message145=Browsers met ondersteuning Windows Media audio message146=Browsers met ondersteuning PDF message147=SMTP foutcodes message148=Landen message149=Mails message150=Grootte message151=Eerste message152=Laatste message153=Uitsluitingsfilter message154=Deze codes geven „niet bekeken” door bezoekers, daarom worden ze niet in andere tabellen getoond message155=Cluster message156=Robots geven „niet bekeken” door bezoekers, daarom worden ze niet in andere tabellen getoond message157=Getallen achter ‘+’ zijn geslaagde hits op „robots.txt” bestanden. message158=Wormen geven „niet bekeken” door bezoekers, daarom worden ze niet in andere tabellen getoond message159=„Niet bekeken” is verkeer dat gegenereerd werd door robots of wormen, of respons met een speciale HTTP-statuscode. message160=Bekeken verkeer message161=Niet-bekeken verkeer message162=Maandelijkse historie message163=Wormen message164=verschillende wormen message165=Successvolle mails message166=Geweigerde of slechte mails message167=Gevoelige doelen message168=Javascript uitgeschakeld message169=Gegenereerd door message170=Plugins message171=Regio’s message172=Steden message173=Opera-versies message174=Safari-versies message175=Chrome-versies message176=Konqueror-versies message177=. message178=Downloads awstats-7.4/wwwroot/cgi-bin/lang/awstats-ru.txt0000640000175000017500000001725012410217071017516 0ustar sksk# Russian message file # $Revision$ - $Date$ PageCode=utf-8 message0=ÐеизвеÑтный message1=ÐеизвеÑтный message2=ОÑтальные message3=Показать подробноÑти message4=День message5=МеÑÑц message6=Год message7=СтатиÑтика за message8=Первый визит message9=ПоÑледний визит message10=КоличеÑтво визитов message11=Уникальные поÑетители message12=Визит message13=различные ключевые Ñлова message14=ПоиÑк message15=Процент message16=Трафик message17=Домены/Страны message18=ПоÑетители message19=ÐÐ´Ñ€ÐµÑ Ñтраницы message20=ЧаÑÑ‹ message21=Браузеры message22= message23=Рефереры message24=Ðеобновленный (Смотрите 'Создать/Обновить' на Ñтранице awstats_setup.html) message25=ПоÑетители домены/Ñтраны message26=хоÑты message27=Ñтраницы message28=Различные url message29=ПроÑмотров message30=ОÑтальные Ñлова message31=Страницы не найдены message32=СтатуÑÑ‹ ошибок HTTP message33=ВерÑии Netscape message34=ВерÑии IE message35=ПоÑледнее обновление message36=Соединение Ñ Ñайтом из message37=ПроиÑхождение message38=ПрÑмой Ð°Ð´Ñ€ÐµÑ / Закладки message39=ÐеизвеÑтное проиÑхождение message40=СÑылки из поиÑковых ÑиÑтем message41=СÑылки из внешней Ñтраницы (оÑтальные web Ñайты иÑÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ð¾Ð¸Ñковые ÑиÑтемы) message42=СÑылки из внутренней Ñтраницы (оÑтальные Ñтраницы на том же Ñайте) message43=Ключевые фразы иÑпользующиеÑÑ Ð¿Ð¾Ð¸Ñковыми машинами message44=Ключевые Ñлова иÑпользующиеÑÑ Ð¿Ð¾Ð¸Ñковыми машинами message45=Ðеразрешенный IP Ð°Ð´Ñ€ÐµÑ message46=ÐеизвеÑтные Операционные ÑиÑтемы (поле useragent) message47=Требуемые но не найденные URL (HTTP code 404) message48=IP Ð°Ð´Ñ€ÐµÑ message49=Ошибка Ð¥Ð¸Ñ‚Ñ‹ message50=ÐеизвеÑтные браузеры (поле useragent) message51=различные роботы message52=Визитов/ПоÑетитель message53=Роботы/Пауки поÑетители message54=БеÑплтаный анализатор лог-файлов Ð´Ð»Ñ Ñ€Ð°Ñширенной Web ÑтатиÑтики. message55=от message56=Страницы message57=Хиты message58=ВерÑии message59=Операционные ÑиÑтемы message60=Янв message61=Фев message62=Мар message63=Ðпр message64=Май message65=Июн message66=Июл message67=Ðвг message68=Сен message69=Окт message70=ÐÐ¾Ñ message71=Дек message72=ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ message73=Тип файла message74=Обновить ÑÐµÐ¹Ñ‡Ð°Ñ message75=Объем message76=ВернутьÑÑ Ð½Ð° главную Ñтраницу message77=Топ message78=dd mmm yyyy - HH:MM message79=Фильтр message80=Полный ÑпиÑок message81=ХоÑты message82=ИзвеÑтные message83=Роботы message84=Ð’Ñк message85=Пнд message86=Втр message87=Срд message88=Чтв message89=Птн message90=Сбт message91=День недели message92=Кто message93=Когда message94=Ðвторизованные пользователи message95=Минимальное message96=Среднее message97=МакÑимальное message98=Web компреÑÑÐ¸Ñ message99=Ð¡Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð½Ð°Ñ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° message100=КомпреÑÑÐ¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° message101=Результат компреÑÑии message102=Ð’Ñего message103=Различные ключевые фразы message104=Вхождение message105=Код message106=Средний размер message107=СÑылки из новоÑтных групп message108=КБ message109=МБ message110=ГБ message111=Грабер message112=Да message113=Ðет message114=Инфо. message115=OK message116=Выход message117=ПродолжительноÑть визитов message118=Закрыть окно message119=Байты message120=ПоиÑковые ÐšÐ»ÑŽÑ‡ÐµÐ²Ñ‹Ðµ фразы message121=ПоиÑковые ÐšÐ»ÑŽÑ‡ÐµÐ²Ñ‹Ðµ Ñлова message122=различные ÑÑылающиеÑÑ Ð¿Ð¾Ð¸Ñковые машины message123=различные ÑÑылающиеÑÑ Ñайты message124=ОÑтальные фразы message125=ОтÑтальные логины (и/или анонимные пользователи) message126=СÑылающиеÑÑ Ð¿Ð¾Ð¸Ñковые машины message127=СÑылающиеÑÑ Ñайты message128=Общее message129=Точное значение не доÑтупно в виде 'Year' message130=МаÑÑивы данных message131=Отправитель EMail message132=Получатель EMail message133=Отчетный период message134=Дополнительно/Маркетинг message135=Разрешение Ñкрана message136=Ðтаки вредоноÑтных программ message137=Добавить в закладки (предполагаемый) message138=День меÑÑца message139=Смешанные message140=Браузеры Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Java support message141=Браузеры Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Macromedia Director message142=Браузеры Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Flash Support message143=Браузеры Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Real audio playing message144=Браузеры Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Quicktime audio playing message145=Браузеры Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Windows Media audio playing message146=Браузеры Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ PDF message147=Коды ошибок SMTP message148=Страны message149=Почта message150=Размер message151=Первый message152=ПоÑледний message153=Фильтр иÑключений message154=Коды отображенные здеÑÑŒ генерируют трафик не отображаемый поÑетителÑм, поÑтому они не включены в оÑтальную ÑтатиÑтику. message155=КлаÑтер message156=Роботы отображенные здеÑÑŒ генерируют трафик не отображаемый поÑетителÑм, поÑтому они не включены в оÑтальную ÑтатиÑтику. message157=ЧиÑла поÑле + хиты уÑпешно защитанные Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° "robots.txt" message158=ВируÑÑ‹ отображенные здеÑÑŒ генерируют трафик не отображаемый поÑетителÑм, поÑтому они не включены в оÑтальную ÑтатиÑтику. message159=Ðе отображаемый трафик влючает в ÑÐµÐ±Ñ Ñ‚Ñ€Ð°Ñ„Ð¸Ðº Ñгенерированный роботами, вируÑами или ответом Ñервера Ñо Ñпециальным HTTP кодом. message160=Отображаемый трафик message161=Ðе отображаемый трафик message162=ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° меÑÑц message163=ВируÑÑ‹ message164=Различные вируÑÑ‹ message165=Почта уÑпешно отправлена message166=Отправка почты неудалаÑÑŒ message167=ЧувÑтвительноÑть целей message168=Javascript отключен message169=Создано message170=плагины message171=Регионы message172=Города awstats-7.4/wwwroot/cgi-bin/lang/awstats-gl.txt0000640000175000017500000001331012410217071017463 0ustar sksk# Galician message file by Ignacio Agulló (agullo@ati.es) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Descoñecido message1=Descoñecido (IP non resolto) message2=Outros message3=Ver detalles message4=Día message5=Mes message6=Ano message7=Estatísticas de message8=Primeira visita message9=última visita message10=Número de visitas message11=Visitantes distintos message12=Visita message13=palabras clave distintas message14=Procura message15=Porcentaxe message16=Tráfico message17=Dominios/Países message18=Visitantes message19=Páxinas/URLs message20=Horas message21=Navegadores message22=Erros message23=Enlaces message24=Nunca actualizado message25=Visitas por dominios/países message26=máquinas message27=páxinas message28=distintas páxinas/urls message29=Vistas message30=Outras palabras message31=Páxinas non atopadas message32=Códigos de status HTTP message33=Versións de Netscape Navigator message34=Versións de MS Internet Explorer message35=última actualización message36=Procedencia das conexións ó sitio message37=Orixe message38=Enderezo directo/Favoritos message39=Orixe descoñecida message40=Enlaces dende procuradores de Internet message41=Enlaces dende páxinas externas (outros sitios web exceptuando procuradores) message42=Enlaces dende páxinas internas (outras páxinas no mesmo sitio) message43=Frases clave usadas por procuradores message44=Palabras clave usadas polo procurador message45=Enderezo IP non resolto message46=SO descoñecido (campo do axente do usuario) message47=URLs solicitadas pero non atopadas (código HTTP 404) message48=Enderezo IP message49=Accesos erróneos message50=Navegadores descoñecidos (campo do axente do usuario) message51=robots diferentes message52=visitas/visitante message53=Visitantes Robots/Arañas message54=Analizador gratuíto de rexistros para estadísticas Web avanzadas message55=de message56=Páxinas message57=Accesos message58=Versións message59=Sistemas Operativos message60=Xan message61=Feb message62=Mar message63=Abr message64=Mai message65=Xuñ message66=Xul message67=Ago message68=Set message69=Out message70=Nov message71=Dec message72=Navegación message73=Tipo de ficheiros message74=Actualizar agora message75=Ancho de banda message76=Volver á páxina principal message77=Primeiros message78=dd mmm yyyy - HH:MM message79=Filtro message80=Lista completa message81=Máquinas message82=Coñecidos message83=Robots message84=Dom message85=Lun message86=Mar message87=Mer message88=Xov message89=Ven message90=Sab message91=Días da semana message92=Quen message93=Cando message94=Usuarios Autentificados message95=Mín message96=Media message97=Máx message98=Compresión web message99=Ancho de banda aforrado message100=Compresión message101=Resultado da compresión message102=Total message103=frases clave distintas message104=Entrada message105=Código message106=Tamaño medio message107=Grupos de noticias message108=KO message109=MO message110=GO message111=Capturador message112=Sí message113=Non message114=Infor. message115=Aceptar message116=Saída message117=Duración das visitas message118=Pechar fiestra message119=Octetos message120=Frases clave de procura message121=Palabras clave de procura message122=diferentes procuradores referintes message123=diferentes sitios referentes message124=Outras frases message125=Outros identificadores (e/ou usuarios anónimos) message126=Procuradores referentes message127=Sitios referentes message128=Resumo message129=Valor exacto non dispoñible na vista por anos message130=Matrices de valores de datos message131=Enderezo do emisor message132=Enderezo do receptor message133=Período rexistrado message134=Extra/Mercadotecnia message135=Tamaños de pantalla message136=Ataques de Vermes/Virus message137=Engadido a favoritos (estimado) message138=Días do mes message139=Miscelánea message140=Navegadores con soporte Java message141=Navegadores con soporte Macromedia Director message142=Navegadores con soporte Flash message143=Navegadores con soporte de reproductor Real audio message144=Navegadores con soporte de reproductor Quicktime audio message145=Navegadores con soporte de reproductor Windows Media audio message146=Navegadores con soporte PDF message147=Códigos de erro SMTP message148=Países message149=Correos message150=Tamaño message151=Primeiro message152=último message153=Excluir Filtro message154=Os códigos amosados aquí contan accesos ou tráfico "non visto" por visitantes, logo están aillados nesta táboa. message155=Grupo message156=Os robots amosados aquí fixeron accesos ou tráfico "non visto" polos visitantes, polo tanto non se inclúen en outras táboas. message157=Os números despois do + son accesos hachados en arquivos "robots.txt". message158=Os gusanos amosados aquí fixeron accesos ou tráfico "non visto" polos visitantes, polo tanto non se inclúen en outras táboas. message159=O tráfico non visto é tráfico xerado por robots, gusanos ou respostas con códigos especiais de estado de HTTP. message160=Tráfico visto message161=Tráfico non visto message162=Historial mensual message163=Gusanos message164=gusanos distintos message165=Mensaxes enviadas con éxito message166=Mensaxes fallidas/rexeitadas message167=obxectivos sensibles message168=Javascript deshabilitadoawstats-7.4/wwwroot/cgi-bin/lang/awstats-gr.txt0000640000175000017500000002041312410217071017473 0ustar sksk# Greek message file # Giannis Stoilis # Thomas Venieris # $Revision$ - $Date$ # PageCode=utf-8 message0=Άγνωστο message1=Άγνωστο (μη αναγνωÏισμένη ip) message2=Άλλοι message3=Εμφάνιση λεπτομεÏιών message4=ΗμέÏα message5=Μήνας message6=Έτος message7=Στατιστικά του message8=ΠÏώτη επίσκεψη message9=Τελευταία επίσκεψη message10=ΑÏιθμός επισκέψεων message11=Μοναδικοί επισκέπτες message12=Επίσκεψη message13=λέξεις-κλειδιά message14=Αναζήτηση message15=Ποσοστό message16=Διακίνηση message17=Επιθέματα/ΧώÏες message18=Επισκέπτες message19=Σελίδες/URL message20=ÎÏες message21=ΦυλλομετÏητές message22=Σφάλματα HTTP message23=ΑναφοÏείς message24=Λεκτικά Î‘ναζήτησης message25=Επιθέματα/χώÏες επισκεπτών message26=συστήματα message27=σελίδες message28=διαφοÏετικές σελίδες message29=ΠÏόσβαση message30=Άλλα λεκτικά message31=Χαμένες σελίδες message32=Κωδικοί σφαλμάτων HTTP message33=Εκδόσεις Netscape message34=Εκδόσεις MS Internet Explorer message35=Τελευταία ανανέωση message36=ΣÏνδεση στο τόπο από message37=ΠÏοέλευση message38=ΕυθÏÏ‚ σÏνδεσμος / Αγαπημένα message39=Άγνωστη ΠÏοέλευση message40=ΣÏνδεσμος από Μηχανή Αναζήτησης του Internet message41=ΣÏνδεσμος από εξωτεÏική σελίδα (άλλοι δικτυακοί τόποι εκτός μηχανών αναζήτησης) message42=ΣÏνδεσμος από εσωτεÏική σελίδα (άλλη σελίδα στον ίδιο δικτυακό τόπο) message43=λεκτικά που χÏησιμοποιήθηκαν σε μηχανές αναζήτησης message44=λέξεις που χÏησιμοποιήθηκαν σε μηχανές αναζήτησης message45=ΔιευθÏνσεις IP που δεν αναγνωÏίστηκαν message46=Άγνωστο λειτουÏγικό σÏστημα (Πεδίο παÏάπεμψης) message47=ΑπαιτοÏμενα αλλά χωÏίς να βÏεθοÏν URL (Κώδικας HTTP 404) message48=ΔιεÏθυνση IP message49=Συμβάντα Î£Ï†Î±Î»Î¼Î¬Ï„ων message50=Άγνωστοι φυλλομετÏητές (Πεδίο παÏάπεμψης) message51=Ρομπότ επισκέπτες message52=επισκέψεις/επισκέπτη message53=Επισκέπτες Ρομπότ/ΑÏάχνες message54=ΕλεÏθεÏος αναλυτής καταγÏαφών Ï€ÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Ï‡Ïόνου για Ï€Ïοηγμένα στατιστικά κίνησης WWW message55=από message56=Σελίδες message57=Επιτυχίες message58=Εκδόσεις message59=Λ/Σ message60=Ιαν message61=Φεβ message62=ÎœÎ¬Ï message63=Î‘Ï€Ï message64=Μάϊ message65=ΙοÏν message66=ΙοÏλ message67=ΑÏγ message68=Σεπ message69=Οκτ message70=Îοέ message71=Δεκ message72=Πλοήγηση message73=ΤÏπος αÏχείων message74=Ανανέωση ΤώÏα message75=Bytes message76=ΕπιστÏοφή στην κεντÏική σελίδα message77=ΔημοφιλέστεÏα message78=dd mmm yyyy - HH:MM message79=ΦίλτÏο message80=ΠλήÏης κατάλογος message81=Διακομιστές message82=Γνωστοί message83=Ρομπότ message84=ÎšÏ…Ï message85=Δευ message86=ΤÏι message87=Τετ message88=Πεμ message89=Î Î±Ï message90=Σαβ message91=ΗμέÏες της εβδομάδας message92=Ποιος message93=Ποτε message94=ΑναγνωÏισμένοι χÏήστες message95=Ελάχιστο message96=Μέσος ÏŒÏος message97=Μέγιστο message98=Συμπίεση Î¹ÏƒÏ„Î¿Ï message99=ΕÏÏος που εξοικονομήθηκε message100=ΠÏιν τη συμπίεση message101=Μετά τη συμπίεση message102=ΣÏνολο message103=διαφοÏετικές φÏάσεις message104=Σελίδες Εισόδου message105=Κώδικας message106=Μέσο μέγεθος message107=ΣÏνδεσμοι από NewsGroup message108=KB message109=MB message110=GB message111=ΑÏπακτικό message112=Îαι message113=Όχι message114=ΠληÏοφ. message115=Εντάξει message116=Έξοδος message117=ΔιάÏκεια επισκέψεων message118=Κλείσιμο παÏαθÏÏου message119=Bytes message120=ΦÏάσεις-κλειδιά Î±Î½Î±Î¶Î·Ï„ήσεων message121=Λέξεις-κλειδιά Î±Î½Î±Î¶Î·Ï„ήσεων message122=ΔιαφοÏετικές αναφοÏές από μηχανές αναζήτησης message123=ΔιαφοÏετικές αναφοÏές από δικτυακοÏÏ‚ τόπους message124=Άλλες φÏάσεις message125=Άλλες συνδέσεις (και/ή ανώνυμοι χÏήστες) message126=ΑναφοÏές από μηχανές αναζήτησης message127=ΑναφοÏές από δικτυακοÏÏ‚ τόπους message128=ΠεÏίληψη message129=Η ακÏιβής τιμή δεν είναι διαθέσιμη στην Ï€Ïοβολή έτους message130=Πίνακες τιμών δεδομένων message131=ΔιεÏθυνση αποστολέα message132=ΔιεÏθυνση παÏαλήπτη message133=ΠεÏίοδος αναφοÏάς message134=ΕπιπÏόσθετα/Marketing message135=Μεγέθη οθόνης message136=Επιθέσεις σκουλικιών/ιών message137=ΠÏοσθήκη σελιδοδείκτη (κατά Ï€Ïοσέγγιση) message138=ΗμέÏες του μήνα message139=ΔιάφοÏα message140=ΦυλλομετÏητές με υποστήÏιξη Java message141=ΦυλλομετÏητές με υποστήÏιξη Macromedia Director message142=ΦυλλομετÏητές με υποστήÏιξη Flash message143=ΦυλλομετÏητές με υποστήÏιξη αναπαÏαγωγής ήχου Real message144=ΦυλλομετÏητές με υποστήÏιξη αναπαÏαγωγής ήχου Quicktime message145=ΦυλλομετÏητές με υποστήÏιξη αναπαÏαγωγής ήχου Windows Media message146=ΦυλλομετÏητές με υποστήÏιξη PDF message147=Κωδικοί σφαλμάτων SMTP message148=ΧώÏες message149=Επιστολές message150=Μέγεθος message151=ΠÏώτη message152=Τελευταία message153=ΕξαίÏεση φίλτÏου message154=Οι εμφανιζόμενοι κωδικοί αντιπÏοσωπεÏουν αιτήσεις ή κίνηση που "δεν Ï€Ïοβλήθηκε" στους επισκέπτες, οπότε δεν πεÏιλαμβάνονται σε άλλα γÏαφήματα. message155=ΣυγκÏότημα message156=Τα εμφανιζόμενα Ïομπότ αντιπÏοσωπεÏουν αιτήσεις ή κίνηση που "δεν Ï€Ïοβλήθηκε" στους επισκέπτες, οπότε δεν πεÏιλαμβάνονται σε άλλα γÏαφήματα. message157=Οι αÏιθμοί μετά το + είναι επιτυχημένες αιτήσεις σε αÏχεία "robots.txt". message158=Τα εμφανιζόμενα σκουλίκια αντιπÏοσωπεÏουν αιτήσεις ή κίνηση που "δεν Ï€Ïοβληθηκε" στους επισκέπτες, οπότε δεν πεÏιλαμβάνονται σε άλλα γÏαφήματα. message159=Στην κίνηση που δεν Ï€Ïοβλήθηκε πεÏιλαμβάνεται κίνηση που Ï€Ïοκλήθηκε από Ïομπότ, σκουλίκια ή απαντήσεις με ειδικοÏÏ‚ κωδικοÏÏ‚ κατάστασης HTTP. message160=Κίνηση που Ï€Ïοβλήθηκε message161=Κίνηση που δεν Ï€Ïοβλήθηκε message162=Μηνιαίο ιστοÏικό message163=Σκουλίκια message164=ΔιαφοÏετικά σκουλίκια message165=Επιτυχείς αποστολές μηνυμάτων message166=Αποτυχημένα/ΑπεÏÏιφθέντα μηνÏματα message167=Ευαίσθητοι στόχοιawstats-7.4/wwwroot/cgi-bin/lang/awstats-bg.txt0000640000175000017500000001430112410217071017452 0ustar sksk# Bulgarian message file translated by Aryan(aryan@bgns.net) # $Revision$ - $Date$ PageCode=utf-8 message0=Ðепознати message1=Ðепознати (непреобразувани ip-адреÑи) message2=Други message3=Детайли message4=Ден message5=МеÑец message6=Година message7=СтатиÑтики за message8=Първоначално поÑещение message9=ПоÑл. поÑещение message10=Брой поÑÐµÑ‰ÐµÐ½Ð¸Ñ message11=Уникални поÑетители message12=ПоÑещениe message13=различни ключови думи message14=ТърÑене message15=Процент message16=Трафик message17=Домейни/Държави message18=ПоÑетители message19=Страници-URL message20=По чаÑове message21=Браузъри message22=HTTP Грешки message23=Препратки message24=Ðикога не е обновÑвано message25=ПоÑетители по домейни/държави message26=хоÑтове message27=Ñтраници message28=различни Ñтраници-url message29=Разглеждани message30=Други ключови думи message31=Ðеоткрити Ñтраници message32=HTTP кодове за грешка message33=Netscape верÑии message34=IE верÑии message35=ПоÑледно обновÑване message36=Връзка към Ñайта от message37=Произход message38=Директни адреÑи / Bookmarks message39=ÐеизвеÑтен произход message40=Връзки от Интернет ТърÑачки message41=Връзки от външни Ñтраници (други Ñайтове оÑвен търÑачки) message42=Връзки от вътрешни Ñтраници (други Ñтраници от Ñайта) message43=Ключови фрази използвани в търÑачките message44=Ключови думи използвани в търÑачките message45=Ðепреобразувани IP адреÑи message46=Ðепозната ОС (поле "useragent") message47=ПоÑочени, но неоткрити URL-и (HTTP код 404) message48=IP ÐÐ´Ñ€ÐµÑ message49=Грешни Ð¥Ð¸Ñ‚ове message50=Ðепознати браузъри (поле "useragent") message51=различни роботи message52=поÑещениÑ/поÑетител message53=ПретърÑващи роботи message54=Безплатен логфайл-анализатор за разширени уеб ÑтатиÑтики в реално време message55=от message56=Страници message57=Хита message58=ВерÑии message59=Операционни СиÑтеми (ОС) message60=Яну message61=Фев message62=Мар message63=Ðпр message64=Май message65=Юни message66=Юли message67=Ðвг message68=Сеп message69=Окт message70=Ðое message71=Дек message72=ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ message73=Файлов тип message74=Обнови Ñега message75=Използван трафик message76=Обратно в главната message77=Топ message78=dd mmm yyyy - HH:MM message79=Филтър message80=Пълен ÑпиÑък message81=ХоÑтове message82=ИзвеÑтни message83=Роботи message84=Ðед message85=Пон message86=Вто message87=Ð¡Ñ€Ñ message88=Чет message89=Пет message90=Съб message91=По ден от Ñедмицата message92=Кой message93=Кога message94=Оторизирани потребители message95=Мин. message96=Средно message97=МакÑ. message98=Уеб компреÑÐ¸Ñ message99=СпеÑтен трафик message100=КомпреÑÐ¸Ñ Ð½Ð° message101=Резултат от компреÑиÑта message102=Общо message103=различни ключови фрази message104=ВходÑщи message105=Код message106=Приблизителен размер message107=Връзки от ÐовинарÑки групи message108=KB message109=MB message110=GB message111=Сайт рипър(Grabber) message112=Да message113=Ðе message114=WhoIs инфо message115=OK message116=ИзходÑщи message117=Продълж. на поÑещението message118=Затвори прозореца message119=Байта (Bytes) message120=ТърÑени ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸ фрази message121=ТърÑени ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸ думи message122=различни наÑочващи търÑачки message123=различни наÑочващи Ñайтове message124=Други фрази message125=Други Ð²ÐºÐ»ÑŽÑ‡Ð²Ð°Ð½Ð¸Ñ (и/или анонимни потребители) message126=ÐаÑочващи търÑачки message127=ÐаÑочващи Ñайтове message128=Сумарно message129=Ðе е възможна точна ÑтойноÑÑ‚ на 'Годишен' преглед message130=МаÑиви от данни message131=EMail на Изпращача message132=EMail на ÐŸÐ¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ message133=Докладван период message134=Допълнително/ТърговÑки message135=Размери на диÑÐ¿Ð»ÐµÑ message136=Worm/Ð’Ð¸Ñ€ÑƒÑ Ð°Ñ‚Ð°ÐºÐ¸ message137=ДобавÑне към любими (приблизително) message138=По дни от меÑеца message139=Разни message140=Браузъри Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на Java message141=Браузъри Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на Macromedia Director message142=Браузъри Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на Flash message143=Браузъри Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на Real audio playing message144=Браузъри Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на Quicktime audio playing message145=Браузъри Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на Windows Media audio playing message146=Браузъри Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на PDF message147=SMTP кодове за грешки message148=Държави message149=Пощи message150=Размер message151=Първи message152=ПоÑледен message153=Изключващ филтър message154=Кодовете показани тук показват хитове или трафик, "незабележим" за поÑетителите, и поради това Ñа отделени в тази таблица. message155=КлъÑтър awstats-7.4/wwwroot/cgi-bin/lang/awstats-pt.txt0000640000175000017500000001140712410217071017511 0ustar sksk# Portuguese message file # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Desconhecido message1=Desconhecido (ip não resolvido) message2=Outros visitantes message3=Ver detalhes message4=Dia message5=Mês message6=Ano message7=Estatísticas de message8=Primeira visita message9=Última visita message10=Numero de visitas message11=Visitantes únicos message12=Visita message13=Palavra chave message14=Pesquisa message15=Percentagem message16=Tráfego message17=Domínios/Países message18=Visitantes message19=Páginas/URL message20=Horas message21=Visualizadores message22=Erros HTTP message23=Referencias message24=Busca Palavras message25=Visitas domínios/países message26=hosts message27=páginas message28=paginas diferentes message29=Acesso message30=Outras palavras message31=Páginas não encontradas message32=Erros HTTP message33=Versões Netscape message34=Versões MS Internet Explorer message35=Ultima Actualização message36=Ligado a partir de message37=Origem message38=Endereço directo / Favoritos message39=Origem desconhecida message40=Ligações de um motor de busca message41=Ligações de páginas externas (outros que não motores de busca) message42=Ligações de páginas internas (páginas no mesmo site) message43=Frases usadas em motores de busca message44=Palavras usadas em motores de busca message45=Endereço IP não resolvido message46=SO Desconhecido (Campo Referer) message47=URLs solicitadas e não encontradas (HTTP code 404) message48=Endereço IP message49=Erro Hits message50=Browsers Desconhecidos (Campo Referer) message51=Motores visitantes message52=visitas/visitante message53=Motores/Spiders message54=Ferramenta de Análise de ficheiros de log em realtime para estatísticas avançadas message55=de message56=Páginas message57=Hits message58=Versões message59=SO message60=Jan message61=Fev message62=Mar message63=Abr message64=Mai message65=Jun message66=Jul message67=Ago message68=Set message69=Out message70=Nov message71=Dez message72=Navegação message73=Tipos de Arquivos message74=Actualizar message75=Bytes message76=Retorna à página inicial message77=Top message78=dd mmm yyyy - HH:MM message79=Filtro message80=Lista completa message81=Hosts message82=Conhecido(a)(s) message83=Robôs message84=Dom message85=Seg message86=Ter message87=Qua message88=Qui message89=Sex message90=Sab message91=Dias da semana message92=Quem message93=Quando message94=Utilizadores autenticados message95=Min message96=Med message97=Max message98=Compressão Web message99=Banda economizada message100=Antes da compressão message101=Depois da compressão message102=Total message103=palavras-chave(s) diferente(s) message104=Páginas de entrada message105=Código message106=Dimensão média message107=Ligações de um NewsGroup message108=KB message109=MB message110=GB message111=Grabber message112=Sim message113=Não message114=Info. message115=OK message116=Sair message117=Duração da visita message118=Fechar janela message119=Bytes message120=Frases de busca message121=Palavras de busca message122=Referenciados por diferentss motores de busca message123=Referenciados por diferentes páginas message124=Outras frases message125=Outros logins (e/ou utilizadores anónimos) message126=Motores de busca referenciadores message127=Páginas referenciadoras message128=Resumo message129=Valor exacto não disponível em vista 'Ano' message130=Lista de valores message131=Sender EMail message132=Receiver EMail message133=Período considerado message134=Extra/Marketing message135=Tamanhos de ecrã message136=Ataques de Worm/Virus message137=Adicionar a favoritos (estimado) message138=Dias do mês message139=Diversos message140=Browsers com suporte Java message141=Browsers com suporte Macromedia Director message142=Browsers com suporte Flash message143=Browsers com suporte para audio Real message144=Browsers com suporte para audio Quicktime message145=Browsers com suporte para audio Windows Media message146=Browsers com suporte para PDF message147=Códigos de erro SMTP message148=Países message149=Correios message150=Tamanho message151=Primeiro message152=Último message153=Filtro de exclusão message154=Códigos mostrados aqui deram 'hits' ou tráfego "não visto" pelos visitantes, por isso não serão incluidos em outros gráficos. message155=Cluster message156=Robots mostrados aqui deram 'hits' ou tráfego "não visto" pelos visitantes, por isso não serão incluidos em outros gráficos. message157=Valores após + são 'hits' directos em ficheiros "robots.txt". message158=Worms mostrados aqui deram 'hits' ou tráfego "não visto" pelos visitantes, por isso não serão incluidos em outros gráficos. message159=Tráfego "não visto" é tráfego gerado por robots, worms ou respostas a códigos de status HTTP especiais. message160=Tráfego visualizado message161=Tráfego não visualizado message162=Histórico mensal message163=Worms message164=Worms diferentes awstats-7.4/wwwroot/cgi-bin/lang/awstats-lv.txt0000640000175000017500000001267612410217071017520 0ustar sksk# LatvieÅ¡u valodas ziņojumu fails (madmaster@gobbo.caves.lv) # Updated by edvinsma@inbox.lv 2004/01/24 00:40:00 # $Revision$ - $Date$ PageCode=utf-8 message0=NezinÄms message1=NezinÄms (neatpazÄ«ts ip) message2=Citi message3=ApskatÄ«t izvÄ“rsti message4=Diena message5=MÄ“nesis message6=Gads message7=Statistika message8=Pirmais apmeklÄ“jums message9=PÄ“dÄ“jais apmeklÄ“jums message10=Vizīšu skaits message11=UnikÄlie apmeklÄ“tÄji message12=ApmeklÄ“jums message13=atšķirÄ«gi(s) atslÄ“gvÄrdi(s) message14=MeklÄ“t message15=Procenti message16=Trafiks message17=Domaini/Valstis message18=ApmeklÄ“tÄji message19=Lapas-URL message20=Stundas message21=PÄrlÅ«kprogrammas message22=HTTP Kļūdas message23=NorÄdÄ«tÄji message24=MeklÄ“t AtslÄ“gvÄrdus message25=ApmeklÄ“tÄju domaini/valstis message26=hosti message27=lapas message28=atšķirÄ«gas lapas message29=SkatÄ«tas lapas message30=Citi vÄrdi message31=Neatrastas lapas message32=HTTP Kļūdu kodi message33=Netscape versijas message34=IE versijas message35=PÄ“dÄ“jais jauninÄjums message36=Pievienoties saitei no message37=OriÄ£inÄli message38=TieÅ¡Ä adrese / GrÄmatzÄ«mes message39=OrÄ£inÄls nezinÄms message40=NorÄdes no Interneta Meklēšanas SaitÄ“m message41=NorÄdes no ÄrÄ“jÄm lapÄm (citas web lapas izņemot meklēšanas saites) message42=Links from an internal page (cita lapa Å¡ajÄ paÅ¡Ä saitÄ“) message43=AtslÄ“gvÄrdi kas lietoti meklēšanas saitÄ“s message44=Kb message45=NeatpazÄ«tas IP Addreses message46=NezinÄms OS (NorÄdes Lauks) message47=PieprasÄ«ts bet neatrasts URLs (HTTP kods 404) message48=IP Addrese message49=Kļuda TrÄpÄ«jumi message50=NezinÄmi pÄrlÅ«ki (NorÄdes lauks) message51=ApmeklÄ“juÅ¡ie roboti message52=apmeklÄ“jumi/apmeklÄ“tÄji message53=Roboti/Zirnekļi apmeklÄ“tÄji message54=BrÄ«vs reÄlÄ laika logfailu analizators advancÄ“tai web statistikai message55=no message56=Lapas message57=TrÄpÄ«jumi message58=Versijas message59=OperÄ“tÄjsistÄ“mas message60=Jan message61=Feb message62=Mar message63=Apr message64=Mai message65=JÅ«n message66=JÅ«l message67=Aug message68=Sep message69=Okt message70=Nov message71=Dec message72=NavigÄcija message73=Failu tips message74=Atjaunot message75=Baiti message76=Atpakaļ uz galveno lapu message77=AugÅ¡a message78=dd mmm yyyy - HH:MM message79=Filtrs message80=Pilns saraksts message81=Hosti message82=ZinÄms message83=Roboti message84=Sv message85=Pir message86=Ot message87=Tr message88=Ce message89=Pkt message90=Se message91=Nedēļas dienas message92=Kas message93=Kad message94=AutentificÄ“tie lietotÄji message95=Min message96=Vid message97=Maks message98=Web salÄ«dzinÄjums message99=saglabÄtais joslas platums message100=Pirms kompresijas message101=PÄ“c kompresijas message102=KopÄ message103=AtšķirÄ«gi atslÄ“gvÄrdi message104=Iejas lapas message105=Kods message106=VidÄ“jais izmÄ“rs message107=Saites no Ziņu grupÄm message108=KB message109=MB message110=GB message111=SavÄcÄ“js message112=JÄ message113=NÄ“ message114=WhoIs informÄcija message115=OK message116=Izejas pages message117=ApmeklÄ“juma ilgums message118=AizvÄ“rt logu message119=Baiti message120=Meklēšanas atslÄ“gfrÄzes message121=Meklēšanas atslÄ“gvÄrdi message122=Citas meklÄ“tÄju lapas ar atsaucÄ“m message123=Citas lapas ar atsaucÄ“m message124=Citas frÄzes message125=AnonÄ«mie lietotÄji message126=MeklÄ“tÄju lapas ar atsaucÄ“m message127=Lapas ar atsaucÄ“m message128=Kopsavilkums message129=PrecÄ«za vÄ“rtÄ«ba sadaÄ¼Ä "Gads" nav pieejama message130=Datu vÄ“rÄ«bu kopnes message131=SÅ«tÄ«tÄja adrese message132=SaņēmÄ“ja adrese message133=Atskaites periods message134=Papildus/MÄrketings message135=EkrÄna izšķirÅ¡anas spÄ“ja message136=VÄ«rusu uzbrukumi message137=Pievienots izlasei message138=MÄ“neÅ¡a dienas message139=DažÄdi message140=PÄrlÅ«kprogrammas ar Java atbalstu message141=PÄrlÅ«kprogrammas ar Macromedia Director atbalstu message142=PÄrlÅ«kprogrammas ar Flash atbalstu message143=PÄrlÅ«kprogrammas ar RealAudio atbalstu message144=PÄrlÅ«kprogrammas ar QuickTime atbalstu message145=PÄrlÅ«kprogrammas ar Windows Media atbalstu message146=PÄrlÅ«kprogrammas ar PDF atbalstu message147=SMTP kļūdu kodi message148=Valstis message149=E-pasti message150=IzmÄ“rs message151=SÄkums message152=Beigas message153=IzslÄ“gÅ¡anas filtrs message154=Å eit kodi parÄda Å¡Ävienus vai trafiku, ko nav apskatÄ«juÅ¡i lietotÄji, tÄpÄ“c viņi nav iekļauti citÄs diagrammÄs. message155=Puduris message156=Å eit uzrÄdÄ«tie roboti ir radÄ«juÅ¡i trÄpijumus vai "nepskatÄ«to" trafiku, tÄpÄ“c tie nav iekļauti citÄs diagrammÄs. message157=Skaitlis pÄ“c "+" ir veiksmÄ«go Å¡Ävienu skaits robots.txt failam. message158=Å ie ir uzrÄdÄ«ti trÄpijumi vai trafiks ko radÄ«ja tÄ«kla tÄrpi vai arÄ« "neapskatÄ«tÄs" lapas, tÄpÄ“c tie nav iekļauti citÄs diagrammÄs. message159="NeapskatÄ«to" trafiku Ä£enerÄ“ roboti, tÄ«kla tÄrpi, vai arÄ« atbildes ar specialo HTTP statusa kodu. message160=ApskatÄ«ts trafiks message161=Nav apskatÄ«ts trafiks message162=MÄ“neÅ¡a atskaite message163=TÄ«kla tÄrpi message164=DažÄdi tÄ«kla tÄrpi message165=VeiksmÄ«gi nosÅ«tÄ«ti e-pasti message166=NeveiksmÄ«gas e-pasta sÅ«tīšanas message167=IevainojamÄ«ba message168=AtslÄ“gtsw Javascript message169=Izveidojis message170=spraudņi message171=ReÄ£ioni message172=PilsÄ“tasawstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/0000750000175000017500000000000012410217071017026 5ustar skskawstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-is.txt0000750000175000017500000001451612410217071022325 0ustar sksk
Fjöldi mismunandi véla (IP-vistfanga) sem sendu bréf.
Fjöldi skipta sem tölvupóstur var giftusamlega sendur.
Þetta er heildargagnamagn sem halað var niður sem póstur.
Einingar eru í KB, MB eða GB (KílóBæti, MegaBæti eða GígaBæti)
Öll tímatengd tölfræði er byggð á klukku netþjóns.
Gögn í þessari skýrslu eru: meðalgildi (reiknuð út frá öllum gögnum milli fyrsta og síðasta bréfs á greindu tímabili)
Gögn í þessari skýrslu eru: samtölur (reiknuð út frá öllum gögnum milli fyrsta og síðasta bréfs á greindu tímabili)
Árangursríkt: Óstaðlað jákvætt svar
Árangursríkt: Staða kerfis, eða svar við hjálparbeiðni
Árangursríkt: Hjálparskilaboð
Árangursríkt: Þjónusta tilbúin
Árangursríkt: Þjónusta lokaði flutningsrás
Árangursríkt: Póstþjónn netveitu þinnar hefur framkvæmt skipun giftusamlega og nafnaþjónninn gefur til kynna að bréfinu hafi verið komið til skila
Árangursríkt: Bréf þitt til ákveðins netfangs er ekki staðbundið við póstþjóninn, en hann samþykkir bréfið og sendir það áfram á annað netfang
Árangursríkt: Ekki var hægt að staðfesta tilveru móttakanda en póstþjónninn tók á móti bréfinu og reynir afhendingu
Árangursríkt: Gefur til kynna að póstþjónn er tilbúinn að taka á móti bréfinu eða segja póstforriti þínu að senda aðaltexta bréfsins eftur að póstþjónninn hefur tekið á móti hausum bréfsins.
Tímabundin villa: Þetta gæti verið villa við hvaða skipun sem er ef póstþjónninn veit að verið er að slökkva á honum.
Tímabundin villa: Póstþjónn netveitu þinnar gefur til kynna að netfang sé ekki til, pósthólf sé upptekið eða póst sé hafnað tímabundið. Mögulegt er að nettengingin hafi rofnað í miðri sendingu, eða ef hinn póstþjónninn vill ekki taka á móti bréfum frá þér einhverra hluta vegna. (T.d. IP-vistfang, Frá netfang, móttakandi, o.s.frv.)
Tímabundin villa: Póstþjónn netveitu þinnar gefur til kynna að póstflutningur var truflaður, venjulega vegna þess að of mörg bréf eru í vinnslu eða tímabundin villa kemur í veg fyrir að bréfið sé sent þótt bréfið sé gilt. Sending í framtíðinni gæti verið árangursrík.
Tímabundin villa: Póstþjónn netveitu þinnar gefur til kynna að of mikið álag sé á honum vegna of marga bréfa í vinnslu. Sending í framtíðinni gæti verið árangursrík.
Tímabundin villa: Sumir póstþjónar hafa stillingu sem takmarkar fjölda tenginga í einu og einnig fjölda sendra bréfa í hverri tengingu. Ef þú ert með mörg bréf í bið gætu þau farið yfir hámarksfjölda bréfa frá hverri tengingu. Til að athuga hvort þetta sé vandamálið getur þú prófað að senda örfá bréf til þessa léns í einu og síðan hækkað fjöldann þar til þú finnur út hver hámarksfjöldi samþykktur af netþjóninum er
Varanleg villa: Stílvilla, óþekkt skipun eða skipanalína of löng
Varanleg villa: Stílvilla í færibreytu
Varanleg villa: Skipun ekki útfærð
Varanleg villa: Þjónn rakst á ranga röð af skipunum
Varanleg villa: Færibreyta skipunar ekki útfærð
Varanleg villa: Þú verður að auðkenna þig með POP áður en þú getur notað þennan SMTP þjón og þú verður að nota netfang þitt úr Frá reitinum.
Varanleg villa: Aðgangi hafnað. Sendmail-hegðun ?
Varanleg villa: Sending bréfa til móttakanda fyrir utan lén þitt er ekki leyfð eða póstþjónn þinn veit ekki að þú hafir aðgang að honum til að senda bréf í gegnum hann og auðkenningar er krafist. Einnig er mögulegt að til að hindra sendingu RUSLPÓSTS leyfi sumir póstþjónar ekki sendingu bréfa ef notað er netkerfi annars fyrirtækis..
Varanleg villa: Notandi ekki staðbundinn: vinsamlegast reyndu eða Ógilt netfang: Beiðni um sendingu bréfs í gegnum þjóninn hafnað
Varanleg villa: Hætt við umbeðna póstskipun: ekki nóg pláss eftir. Póstþjónn netveitu gefur til kynna að pósthólf sé fullt, mögulega vegna of margra bréfa..
Varanleg villa: Umbeðin póstskipun ekki framkvæmd: nafn pósthólfs ekki leyft. Sumir póstþjónar hafa möguleika á því að takmarka fjölda tenginga í einu og einnig fjölda bréfa sendra í hverri tengingu. Ef þú er með mikinn fjölda bréfa í bið (í sendingu) fyrir ákveðið lén, gæti sending farið yfir hámarksfjölda bréfa í tengingu og/eða breytingu sé krafist á bréfinu og/eða áfanganetfangi svo bréfið geti komist til skila.
Varanleg villa: Umbeðinni póstskipun hafnað: aðgangi hafnað
Varanleg villa: Of mörg afrit af bréfi. Póstþjónn ekki aðgengilegur í augnablikinu. Gefur (sennilega) til kynna að það er einhvers konar vörn gegn ruslpósti á póstþjóninum.
Þetta er óþekkt villa. Þessi villa kemur ekki frá póstþjóni heldur frá maillogconvert.pl tólinu þegar það finnur að sending hafi ekki tekist en annállinn inniheldur engar upplýsingar um villuna..
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-cz.txt0000640000175000017500000001237512410217071022325 0ustar sksk
PoÄet různých poÄítaÄů (IP adres), co odeslaly email.
PoÄet úspěšných emailových pÅ™enosů.
Celkový objem přenesených emailů.
Udáváno v KB, MB nebo GB (kilobajtech, megabajtech nebo gigabajtech).
VÅ¡echny Äasové statistiky vycházejí z Äasu na serveru.
Zde zobrazené údaje jsou průmÄ›rné hodnoty (poÄítané ze vÅ¡ech emailů ve sledovaném období).
Zde zobrazené údaje jsou celkové souÄty (poÄítané ze vÅ¡ech emailů ve sledovaném období).
Provedeno: Nestandardní kladná odpovÄ›Ä
Provedeno: Systémový status nebo nápověda
Provedeno: Nápověda
Provedeno: Služba připravena
Provedeno: Spojení ukonÄeno
Provedeno: Požadovaná emailová operace úspěšná provedena
Provedeno: Adresát zprávy není místní; zpráva bude přesměrována na jinou adresu
Provedeno: Adresáta nelze VRFYkovat, nicménÄ› systém zprávu pÅ™evezme a pokusí se o její doruÄení
Výzva serveru k zadání těla zprávy
DoÄasná chyba: Služba nedostupná, spojení ukonÄeno (toto může být odpovÄ›dí na jakýkoli příkaz, pokud služba ví, že musí být ukonÄena)
DoÄasná chyba: Požadovaná akce byla stornována, neboÅ¥ schránka není dostupná. Schránka může být zaneprázdnÄ›na, není k ní přístup, anebo server doÄasnÄ› blokuje vaÅ¡e emaily (napÅ™. na základÄ› IP adresy Äi odesílatele).
DoÄasná chyba: Požadovaná akce byla stornována z důvodu vnitÅ™ní chyby pÅ™i zpracování. Toto bývá způsobeno pÅ™etížením serveru nebo nÄ›jakým jeho doÄasným problémem. Zkuste zopakovat požadavek pozdÄ›ji.
DoÄasná chyba: Požadovaná akce byla stornována z důvodu nedostatku úložního prostoru. Zkuste zopakovat požadavek pozdÄ›ji.
DoÄasná chyba: NÄ›které poÅ¡tovní servery umožňují omezit maximální poÄet simultánních spojení a poÄet zpráv odeslaných v rámci jednoho spojení. Pokud máte hodnÄ› zpráv Äekajících na odeslání, zkuste snížit poÄet zpráv pÅ™edávaných v rámci jednoho spojení a následnÄ› jejich poÄet zvyÅ¡ovat, až zjistíte pÅ™esné omezení serveru.
Trvalá chyba: Syntaktická chyba; příkaz nerozpoznán nebo příliš dlouhý
Trvalá chyba: Syntaktická chyba v parametrech Äi argumentech
Trvalá chyba: Příkaz není implementován.
Trvalá chyba: Chybná posloupnost příkazů
Trvalá chyba: Parametr příkazu není implementován.
Trvalá chyba: Server nepřijímá poštu, anebo vyžaduje autorizaci POP before SMTP.
Trvalá chyba: Pro předávání pošty je vyžadována autorizace.
Trvalá chyba: Požadovaná akce nebyla provedena, neboÅ¥ schránka není dostupná. Schránka buÄ neexistuje, není k ní přístup, anebo doÅ¡lo k odmítnutí příkazu z důvodu vnitÅ™ního nastavení serveru.
Trvalá chyba: Adresát není místní, zkuste použít nabízenou jinou adresu.
Trvalá chyba: Požadovaná akce byla stornována z důvodu nedostatku úložního prostoru.
Trvalá chyba: Požadovaná akce nebyla provedena; nepovolený název schránky (např. špatná syntax)
Trvalá chyba: Transakce selhala.
Trvalá chyba: Příliš mnoho duplicitních zpráv, anebo odmítnutí na základě nějakého antispamového filtru
Toto je neznámá chyba. Tento chybový kód zaznamenává skript maillogconvert.pl, když při analyzování logu narazí na odeslání, které nebylo úspěšné, a log přitom neobsahuje žádné další vysvětlení této chyby.
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-gr.txt0000640000175000017500000002650612410217071022322 0ustar sksk
ΑÏιθμός από διαφοÏετικοÏÏ‚ πελάτες (IP διευθÏνσεις) που έστειλαν mails.
ΑÏιθμός επιτυχών μεταφοÏών email.
Αυτό είναι το συνολικό μέγεθος δεδομένων που μεταφέÏθηκαν μέσω email.
ΟΙ μονάδες είναι σε KB, MB ή GB (KiloBytes, MegaBytes ή GigaBytes)
Όλα τα στατιστικά που συσχετίζονται με χÏόνο είναι βάση της ÏŽÏας του διακομιστή.
Εδώ, τα δεδομένα που αναφέÏονται είναι: μέσος ÏŒÏος τιμών (έχουν υπολογιστεί από όλα τα δεδομένα Î¼ÎµÏ„Î±Î¾Ï Ï„Î¿Ï… Ï€Ïώτου και του τελευταίου e-mail στο εÏÏος της ανάλυσης)
Εδώ, τα δεδομένα που αναφέÏονται είναι: συγκεντÏωτικά σÏνολα (έχουν υπολογιστεί από όλα τα δεδομένα Î¼ÎµÏ„Î±Î¾Ï Ï„Î¿Ï… Ï€Ïώτου και του τελευταίου e-mail στο εÏÏος της ανάλυσης)
Επιτυχία: Μη τυπικό μÏνημα επιτυχίας
Επιτυχία: Κατάσταση συστήματος, ή απόκÏιση βοήθειας συστήματος
Επιτυχία: Μήνυμα βοήθειας
Επιτυχία: Η υπηÏεσία σε ετοιμότητα
Επιτυχία: Η υπηÏεσία κλείνει το κανάλι μετάδοσης
Επιτυχία: Ο διακομιστής mail του ISP σας εκτέλεσε με επιτυχία μία εντολή και ο DNS αναφέÏει επιτυχή παÏάδοση
Επιτυχία: Το μήνυμα για μια συγκεκÏιμένη email διεÏθυνση δεν είναι τοπικό όσον αφοÏά τον διακομιστή, αλλά θα το δεχτεί και θα το Ï€Ïοωθήσει σε μια διαφοÏετική διεÏθυνση παÏαλήπτη
Επιτυχία: Ο παÏαλήπτης δεν μποÏεί να επιβεβαιωθεί αλλά ο διακομιστής mail αποδέχεται το μήνυμα και δοκιμάζει την παÏάδοσή του
Επιτυχία: Δείχνει ότι ο διακομιστής mail είναι έτοιμος να παÏαλάβει το μήνυμα ή δίνει εντολή στο Ï€ÏόγÏαμμα πελάτη αλληλογÏαφίας να στείλει το σώμα του μυνήματος, Î±Ï†Î¿Ï Î¿ διακομιστής mail παÏαλάβει την επικεφαλίδα του μυνήματος.
ΠÏοσωÏινό σφάλμα: Αυτό μποÏεί να είναι απόκÏιση σε οποιαδήποτε εντολή όταν η υπηÏεσία γνωÏίζει ότι θα Ï€Ïέπει να τεÏματιστεί.
ΠÏοσωÏινό σφάλμα: Ο διακομιστής mail του ISP σας δείχνει ότι μια διεÏθυνση mail δεν υπάÏχει, ότι η θυÏίδα mail είναι απασχολημένη ή ότι το email αποÏÏίφθηκε Ï€ÏοσωÏινά. ΜποÏεί να σημαίνει Ï€ÏοσωÏινό Ï€Ïόβλημα στην σÏνδεση δικτÏου κατά την διάÏκεια της αποστολής, ή μποÏεί να συμβεί επίσης εάν ο απομακÏυσμένος διακομιστής mail δεν επιτÏέπει την αποδοχή email από εσάς για οποιονδήποτε λόγο Ï€.χ. (ΔιεÏθυνση IP, ΔιεÏθυνση Αποστολέα. ΔιεÏθυνση ΠαÏαλήπτη, κτλ.)
ΠÏοσωÏινό σφάλμα: Ο διακομιστής mail του ISP σας δείχνει ότι διεκόπη η υπηÏεσία mail, συνήθως λόγω υπεÏφόÏτωσης από πάÏα πολλά μυνήματα ή λόγω ενδιάμεσης αποτυχίας στην πεÏίπτωση κατά την οποία, παÏόλο που το μÏνημα είναι έγκυÏο, κάποιο Ï€ÏοσωÏινό σφάλμα αποτÏέπει την επιτυχή αποστολή του μυνήματος. Μελλοντική αποστολή θα είναι πιθανόν επιτυχής
ΠÏοσωÏινό σφάλμα: Ο διακομιστής mail του ISP σας δείχνει πιθανή υπεÏφόÏτωση από μεγάλο αÏιθμό μυνημάτων καθώς και ότι μελλοντική αποστολή πιθανόν να είναι επιτυχής
ΠÏοσωÏινό σφάλμα: Κάποιοι διακομιστές mail έχουν την επιλογή να μειώσουν τον αÏιθμό ταυτόχÏονων συνδέσεων καθώς και επίσης τον αÏιθμό των μυνημάτων που αποστέλλονται ανά σÏνδεση. Εάν έχετε μεγάλο αÏιθμό μυνημάτων στην ουÏά πιθανόν να ξεπεÏνάει αυτό το ÏŒÏιο. Για να δείτε εάν όντως αυτή είναι η πεÏίπτωση μποÏείται να δοκιμάσετε να αποστείλνετε μικÏÏŒ αÏιθμό μυνημάτων σε αυτόν τον διακομιστή mail κάθε φοÏά και να αυξάνεται σταδιακά τον αÏιθμό αυτό μέχÏις ότου να βÏείτε τον μέγιστο αÏιθμό μυνημάτων που γίνεται ταυτόχÏονα αποδεκτός από τον διακομιστή
Μόνιμο σφάλμα: Συντακτικό λάθος, μη αναγνωÏίσιμη εντολή ή Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· γÏαμμη εντολών ( με παÏαμέτÏους)
Μόνιμο σφάλμα: Συντακτικό λάθος στις παÏαμέτÏους της εντολής
Μόνιμο σφάλμα: Η εντολή δεν έχει υλοποιηθεί
Μόνιμο σφάλμα: Ο διακομιστής συνάντησε μία λανθασμένη αλληλουχία εντολών
Μόνιμο σφάλμα: Η παÏάμετÏος της εντολής δεν έχει υλοποιηθεί
Μόνιμο σφάλμα: Θα Ï€Ïέπει να πιστοποιηθεί η pop σÏνδεσή σας Ï€Ïιν την επιτυχή χÏήση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… διακομιστή SMTP και θα Ï€Ïέπει να χÏησιμοποιήσεται την διεÏθυνση email για το πεδίο Αποστολέα.
Μόνιμο σφάλμα: ΑπόÏÏιψη Ï€Ïόσβασης. Μήπως λόγω συμπεÏιφοÏάς που χαÏακτηÏίζεται ως sendmailism;
Μόνιμο σφάλμα: Αποστολές email σε αποδέκτες εκτός του domain σας δεν επιτÏέπονται ή ο διακομιστής email σας δεν γνωÏίζει ότι έχετε Ï€Ïόσβαση για να τον χÏησιμοποιήσετε για την αποστολή μυνημάτων και χÏειάζεται πιστοποίηση. Η για την αποφυγή αποστολής SPAM κάποιοι διακομιστές mail δεν επιτÏέπουν την αποστολή σε κανένα email χÏησιμοποιώντας το δίκτυο ή τους πόÏους άλλης εταιÏείας.
Μόνιμο σφάλμα: Ο χÏήστης δεν είναι τοπικός: παÏακαλώ Ï€Ïοσπαθήστε ή μη έγκυÏη διεÏθυνση: Η αίτηση αποστολής αποÏÏίφθηκε
Μόνιμο σφάλμα: Η αιτοÏμενη ενέÏγεια mail ακυÏώθηκε: υπέÏβαση οÏίου αποθήκευσης. Ο διακομιστής mail του ISP δείχνει πιθανή υπεÏφόÏτωση λόγω μεγάλου αÏÎ¹Î¸Î¼Î¿Ï Î¼Ï…Î½Î·Î¼Î¬Ï„Ï‰Î½.
Μόνιμο σφάλμα: Η αιτοÏμενη ενέÏγεια mail δεν Ï€Ïαγματοποιήθηκε: το όνομα της θυÏίδας mail δεν επιτÏέπεται. Κάποιοι διακομιστές mail έχουν την επιλογή να μειώσουν τον αÏιθμό των ταυτόχÏονων συνεσεων καθώς και επίσης τον αÏιθμό των ταυτόχÏονων μυνημάτων που αποστέλλονται ανά σÏνδεση. Εάν έχετε πολλά μυνήματα στην ουÏά σας για αποστολή Ï€Ïός ένα domain, μποÏεί να γίνει υπέÏβαση του οÏίου Î±Ï…Ï„Î¿Ï ÎºÎ±Î¹ θα Ï€Ïέπει να γίνουν κάποιες αλλαγές στα μηνÏματα ή στους παÏαλήπτες για επιτυχή παÏάδοση.
Μόνιμο σφάλμα: Η αιτοÏμενη ενέÏγεια mail αποÏÏίφθηκε: άÏνηση Ï€Ïόσβασης
Μόνιμο σφάλμα: Μεγάλος αÏιθμός όμοιων μηνυμάτων. Ο πόÏος είναι Ï€ÏοσωÏινά μη διαθέσιμος κάτι που δείχνει ότι (πιθανόν) να υπάÏχει κάποιος μηχανισμός anti-spam στον διακομιστή email.
Αυτό είναι ένα άγνωστο μÏνημα σφάλματος. Ένα τέτοιο σφάλμα δεν αναφέÏεται από τον διακομιστή mail αλλά από το εÏγαλείο maillogconvert.pl όταν ανιχνεÏει στο αÏχείο log ότι η αποστολή δεν ήταν επιτυχής αλλά δεν υπάÏχει κάποια εξήγηση του σφάλματος Î±Ï…Ï„Î¿Ï ÏƒÏ„Î¿ αÏχείο log.
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-en.txt0000640000175000017500000001456712410217071022320 0ustar sksk
Number of different client hosts (IP addresses) who sent mails.
Number of times an email was transfered by success.
This is the total amount of data transfered by mails.
Units are in KB, MB or GB (KiloBytes, MegaBytes or GigaBytes)
All time related statistics are based on server time.
Here, reported data are: average values (calculated from all data between the first and last email in analyzed range)
Here, reported data are: cumulative sums (calculated from all data between the first and last email in analyzed range)
Success: Non standard success response
Success: System status, or system help repl
Success: Help message
Success: Service ready
Success: Service closing transmission channel
Success: Your ISP mail server have successfully executes a command and the DNS is reporting a positive delivery
Success: Your message to a specified email address is not local to the mail server, but it will accept and forward the message to a different recipient email address
Success: Recipient cannot be verified but mail server accepts the message and attempts delivery
Success: Indicates mail server is ready to accept the message or instruct your mail client to send the message body after the mail server have received the message headers.
Temporary error: This may be a reply to any command if the service knows it must shut down.
Temporary error: Your ISP mail server indicates that an email address does not exist, mailbox is busy or mail temporarly refused. It could be the network connection went down while sending, or it could also happen if the remote mail server does not want to accept mail from you for some reason i.e. (IP address, From address, Recipient, etc.)
Temporary error: Your ISP mail server indicates that the mailing has been interrupted, usually due to overloading from too many messages or transient failure is one in which the message sent is valid, but some temporary event prevents the successful sending of the message. Sending in the future may be successful
Temporary error: Your ISP mail server indicates, probable overloading from too many messages and sending in the future may be successful
Temporary error: Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up it could go over the max number of messages per connection. To see if this is the case you can try submitting only a few messages to that domain at a time and then keep increasing the number until you find the maximum number accepted by the server
Permanent error: Syntax error, command unrecognized or command line too long
Permanent error: Syntax error in parameters or arguments
Permanent error: Command not implemented
Permanent error: Server encountered bad sequence of commands
Permanent error: Command parameter not implemented
Permanent error: You must be pop-authenticated before you can use this SMTP server and you must use your mail address for the Sender/From field.
Permanent error: Access denied. A sendmailism ?
Permanent error: Sending an email to recipients outside of your domain are not allowed or your mail server does not know that you have access to use it for relaying messages and authentication is required. Or to prevent the sending of SPAM some mail servers will not allow (relay) send mail to any e-mail using another company’s network and computer resources.
Permanent error: User not local: please try or Invalid Address: Relay request denied
Permanent error: Requested mail action aborted: exceeded storage allocation. ISP mail server indicates, probable overloading from too many messages.
Permanent error: Requested mail action not taken: mailbox name not allowed. Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up (being sent) for a domain, it could go over the maximum number of messages per connection and/or some change to the message and/or destination must be made for successful delivery.
Permanent error: Requested mail action rejected: access denied
Permanent error: Too many duplicate messages. Resource temporarily unavailable Indicates (probable) that there is some kind of anti-spam system on the mail server.
This is an unknown error. A such error is not reported by the mail server but by the maillogconvert.pl tool when it detects in the log that the sending was not successfull and the log file does not contains any explanation of the error.
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-gl.txt0000640000175000017500000001714012410217071022306 0ustar sksk
Número de máquinas cliente (enderezos IP) que envían correos electrónicos.
Número de veces que un correo electrónico foi transferido con éxito.
Esta é a cantidade total de datos transferidos por correo electrónico.
As unidades están en KB, MB ou GB (Kilooctetos, Megaoctetos ou Gigaoctetos)
Tódalas estatísticas relacionadas co tempo baséanse na hora do servidor.
Aquí, os datos expostos son valores medios (calculados a partir de tódolos datos entre o primeiro e derradeiro correo electrónico no rango analizado)
Aquí, os datos expostos son sumas acumulativas (calculados a partir de tódolos datos entre a primeiro e o derradeiro correo electrónico no rango analizado)
Éxito: Resposta non estándar de éxito
Éxito: Estado do sistema, ou axuda do sistema
Éxito: Mensaxe de axuda
Éxito: Servizo listo
Éxito: Servizo pechando canal de transmisión
Éxito: O servidor de correo do seu ISP executou un mandato con éxito e o DNS informa dunha entrega positiva
Éxito: A súa mensaxe para un enderezo de correo electrónico especificado non é local para o servidor de correo, pero aceptará e reenviará a mensaxe a un enderezo de correo electrónico de un recipiente diferente
Éxito: O Recipiente non se pode verificar pero o servidor de correo acepta a mensaxe e intenta a entrega
Éxito: Indica que o servidor de correo está listo para aceptar a mensaxe ou indicar ao seu cliente de correo que envíe o corpo da mensaxe despois de que o servidor de correo reciba as cabeceiras da mensaxe.
Erro temporal: Esta pode ser unha resposta a calquera mandato se o servizo sabe que debe pecharse.
Erro temporal: O servidor de correo do seu ISP indica que un enderezo de correo electrónico non existe, a caixa do correo está ocupada ou o correo temporalmente rexeitado. Podería ser que a conexión de rede fallara durante o envío, ou tamén podería ocorrer se o servidor remoto de correo non quere aceptar correo de vostede por algunha razón (enderezo IP, enderezo Desde, Recipiente, etc.)
Erro temporal: O servidor de correo do seu ISP indica que o envío foi interrumpido, usualmente debido a sobrecarga por demasiadas mensaxes ou fallo de transmisión no que a mensaxe enviada é válida, pero algún evento temporal evita o envío con éxito da mensaxe. Enviala no futuro pode ter éxito
Erro temporal: O servidor de correo do seu ISP indica, probable sobrecarga por exceso de mensaxes e enviar no futuro pode ter éxito
Erro temporal: Algúns servidores de correo teñen a opción de reducir o número de conexións concurrentes e tamén o número de mensaxes enviadas por conexión. Se ten un montón de mensaxes para enviar poderíase superar o número máximo de mensaxes por conexión. Para ver se este é o caso pode tentar de enviar soamente unhas poucas mensaxes a ese dominio por vez e entón seguir incrementando o número ata que atope o número máximo aceptado polo servidor
Erro permanente: Erro de sintaxe, mandato non recoñecido ou liña de mandato demasiado longa
Erro permanente: Erro de sintaxe en parámetros ou argumentos
Erro permanente: Mandato non implementado
Erro permanente: O servidor atopou unha mala secuencia de mandatos
Erro permanente: Parámetro de mandato non implementado
Erro permanente: Debe estar pop-autenticado antes de poder usar este servidor SMTP e debe usar o seu enderezo de correo no campo Remitente/Desde.
Erro permanente: Acceso denegado. ¿Unha routada do sendmail?
Erro permanente: Enviar un correo electrónico a recipientes fora do seu dominio non está permitido ou o seu servidor de correo non sabe que vostede ten acceso para usalo para despachar mensaxes e se require autenticación. Ou para evitar o envío de SPAM algúns servidores de correo non permitirán (despachar) enviar correo a calquera correo electrónico usando a rede e recursos computativos de outra compañía.
Erro permanente: Usuario non local: por favor probe ou Invalid Address: Relay request denied
Erro permanente: A acción de correo requirida foi abortada: excedeuse a capacidade de almacenamento. O servidor de correo do ISP indica, probable sobrecarga por exceso de mensaxes.
Erro permanente: A acción de correo requirida non se fixo: o nome da caixa de correo non está permitido. Algúns servidores de correo teñen a opción de reducir o número de conexións concurrentes e tamén o número de mensaxes enviadas por conexión. Se ten un montón de mensaxes para enviar para un dominio, poderíase superar o número máximo de mensaxes por conexión e/ou algún cambio á mensaxe e/ou destino debe facerse para unha entrega con éxito.
Erro permanente: A acción de correo requirida foi rexeitada: acceso denegado
Erro permanente: Demasiadas mensaxes duplicadas. Recurso temporalmente non dispñible indica (probablemente) que hai algunha clase de sistema anti-spam no servidor de correo.
Éste é un erro descoñecido. Tal erro non é indicado polo servidor de correo senón pola ferramenta maillogconvert.pl cando detecta no rexistro que o envío non tivo éxito e o rexistro non contén ningunha explicación do erro.
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-br.txt0000750000175000017500000001743112410217071022314 0ustar sksk
Número de hosts clientes diferentes (endereços IP) que enviaram mensagens.
Número de vezes que um email foi transmitido com sucesso.
Este é o volume total de dados transferidos por mensagens.
As unidades estão em KB, MB ou GB (KiloBytes, MegaBytes ou GigaBytes)
Todas as estatísticas reportadas são baseadas no horário do servidor.
Aqui os dados reportados são: valores médios (calculados a partir de todos os dados entre a primeira e a última mensagem no período analisado)
Aqui os dados reportados são: somas acumulativas (calculadas a partir de todos os dados entre a primeira e a última mensagem no período analisado)
Sucesso: Resposta de sucesso não padronizada
Sucesso: Estado do sistema, ou Ajuda do sistema
Sucesso: Mensagem de Ajuda
Sucesso: Serviço pronto
Sucesso: Serviço fechando canal de transmissão
Sucesso: O servidor de e-mail de seu ISP executou um comando com sucesso e o DNS está reportando uma entrega positiva
Sucesso: Sua mensagem para um endereço de e-mail especificado não é local ao servidor de e-mail, mas ele irá aceitar e encaminhar a mensagem para um novo endereço de e-mail de destino
Sucesso: Destinatários não podem ser verificados mas o servidor aceita a mensagem e tentará entregá-la
Sucesso: Indica que o servidor de mensagens está pronto para aceitar a mensagem ou instruir seu programa cliente de e-mail a enviar o corpo da mensagem após o servidor ter recebido os cabeçalhos da mensagem.
Erro temporário: Este pode ser um reply a qualquer comando se o setviço sabe que deve ser desligado.
Erro temporário: O servidor de e-mail de seu provedor indicou que o endereço de e-mail não existe, a caixa-postal está ocupada ou o e-mail foi temporariamente recusado. Isto pode ser devido a conexões de rede terem caído enquanto enviando, ou pode também acontecer se o servidor de e-mail remoto não quiser aceitar mensagens suas por alguma razão p.e. (endereço IP, endereço From, Destinatário, etc.)
Erro temporário: O servidor de e-mail do seu provedor indica que o envio foi interrompido, normalmente devido a sobrecarga de mensagens ou falha transiente em que a mensagem enviada é válida, mas algum evento temporário náo permitiu o envio com sucesso da mensagem. Enviar no futuro pode resultar em sucesso
Erro temporário: O servidor de e-mail do seu provedor indica provável sobrecarda de mensagens e enviar no futuro pode resultar em sucesso
Erro temporário: Alguns servidores têm a opção de reduzir o número de conexões simultâneas e também o número de mensagens enviadas por conexão. Se você tem várias mensagens enfileiradas pode ser devido a exceder o número máximo de mensagens por conexão. Para verificar se este é o caso você pode tentar enviar apenas algumas mensagens para aquele domínio de uma vez e aumentar o número de mensagens até encontrar o número máximo de mensagens aceito pelo servidor
Erro permanente: Erro de sintaxe, comando não reconhecido ou linha de comando muito longa
Erro permanente: Erro de sintaxe em parâmetros ou argumentos
Erro permanente: Comando não implementado
Erro permanente: Servidor encontrou uma seqüência de comandos incorretos
Erro permanente: Parâmetro de comando não implementado
Erro permanente: Você deve ser um usuário autenticado em pop antes de poder utilizar este servidor SMTP e você deve utilizar seu endereço de e-mail no campo de remetente (Sender/From).
Erro permanente: Acesso negado. Um sendmailismo ?
Erro permanente: Enviar e-mails para remetentes de fora de seu domínio não é permitido ou seu servidor de e-mail não reconhece que você tem acesso a utilizá-lo para relay de mensagens e autenticação é necessária. Ou para prevenir o envio de SPAM alguns servidores de e-mail não permitirão enviar (relay) e-mail para qualquer e-mail utilizando a rede ou recursos computacionais de outra empresa.
Erro permanente: Usuário não local: favor tentar ou Endereço Inválido: Requisição de Relay recusada
Erro permanente: Ação requisitada de e-mail abortada: excede espaço disponível. O servidor de e-mail do provedor indica uma provável sobrecarga devido a muitas mensagens.
Erro permanente: Ação requisitada de e-mail não realizada: nome de caixa-postal não permitido. Alguns servidores de e-mail têm a opção de reduzir o número de conexões simultâneas e tambám o número de mensagens por conexão. Se você tém várias mensagens enfileiradas (sendo enviadas) para um domínio, pode exceder o número máximo de mensagens por conexão e/ou alguma alteração na mensagem e/ou destinatário deve ser feita para o envio ter sucesso.
Erro permanente: Ação requisitada de e-mail rejeitada: accesso recusado
Erro permanente: Muitas mensagens duplicadas. Recursos temporariamente indisponíveis. Indica (possível) que exista algum tipo de sistema anti-spam no servidor de e-mail.
Este é um erro desconhecido. Erros deste tipo não são reportados pelo servidor de e-mail, mas pela ferramenta maillogconvert.pl quando ela detecta no log que o envio não teve sucesso e o arquivo de log não contém nenhuma explicação do erro.
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-ru.txt0000640000175000017500000001701112410217071022327 0ustar sksk
ЧиÑло различных хоÑтов (разные IP адреÑа), отправлÑвших пиÑьма.
ЧиÑло уÑпешных доÑтавок email.
Это общий объем почтовой корреÑпонденции.
Единицы указываютÑÑ Ð² Kb, Mb или Gb (килобайты, мегабайты или гигабайты).
Отраженное в ÑтатиÑтике Ð²Ñ€ÐµÐ¼Ñ Ñто Ñерверное времÑ.
ЗдеÑÑŒ, приведенные значениÑ: Ñредние Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ (вычиÑленные по вÑем данным между первым и поÑледним email в проанализированном диапазоне)
ЗдеÑÑŒ, приведенные значениÑ: кумулÑтивные Ñуммы (вычиÑленные по вÑем данным между первым и поÑледним email в проанализированном диапазоне)
УÑпешно: ÐеÑтандартный ответ.
УÑпешно: Ответ о ÑоÑтоÑнии ÑиÑтемы или помощь.
УÑпешно: Сообщение-подÑказка (помощь).
УÑпешно: Ñлужба готова к работе.
УÑпешно: Ñлужба закрывает канал ÑвÑзи.
УÑпешно: Запрошенное дейÑтвие почтовой транзакции уÑпешно завершилоÑÑŒ.
УÑпешно: ÐдреÑат ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ обÑлуживаетÑÑ Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÑŽÑ‰Ð¸Ð¼ Ñервером, однако почтовый Ñервер знает по какому маршруту отправить Ñообщение дальше, поÑтому принÑл его.
УÑпешно: ÐдреÑат ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ может быть проверен принимающим Ñервером ÑейчаÑ, но Ñервер принÑл Ñообщение и попытаетÑÑ ÐµÐ³Ð¾ доÑтавить.
Еще не завершено: Почтовый Ñервер готов принÑть Ñообщение и инÑтруктирует почтовый клиент.
Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Может быть ответом на любую команду, еÑли обÑлуживание клиентов почтовым Ñервером будет вÑкоре прервано.
Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° почтовой транзакции не выполнена, так как почтовый Ñщик недоÑтупен. Может указывать также на фильтрацию принимающим Ñервером клиента по каким-либо признакам (IP адреÑ, заголовки From, To и Ñ‚. п.).
Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° не выполнена; произошла Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при обработке ÑообщениÑ. Ðапример, принимающий Ñервер перегружен входÑщими ÑообщениÑми.
Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° не выполнена; ÑиÑтеме не хватило реÑурÑов.
Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Принимающий Ñервер имеет Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла одновременных Ñоещинений и/или чиÑла отправлÑемых Ñообщений в течение одной SMTP-ÑеÑÑии.
Ошибка: СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в текÑте команды; команда не опознана.
Ошибка: СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в аргументах или параметрах команды.
Ошибка: Ð”Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° не реализована.
Ошибка: ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть команд.
Ошибка: У данной команды не может быть аргументов.
Ошибка: Ð’Ñ‹ должны авторизоватьÑÑ Ð¿ÐµÑ€ÐµÐ´ иÑпользованием SMTP-Ñервера (иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ POP3 протокол) и указать Ваш почтовый Ð°Ð´Ñ€ÐµÑ Ð² поле From.
Ошибка: ДоÑтуп запрещен. (Ñендмализм?)
Ошибка: Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° не выполнена, так как почтовый Ñщик недоÑтупен.
Ошибка: Данный адреÑат не ÑвлÑетÑÑ Ð¼ÐµÑтным: попробуйте передать Ñообщение по маршруту или неправильный адреÑ: Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° передачу ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»Ð¾Ð½ÐµÐ½.
Ошибка: Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° почтовой транзакции прервана; диÑковое проÑтранÑтво, доÑтупное ÑиÑтеме, переполнилоÑÑŒ.
Ошибка: Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° не выполнена; указано недопуÑтимое Ð¸Ð¼Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñщика.
Ошибка: Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð½Ðµ выполнена.
Ошибка: Указывает (вероÑтно) на фильтрацию ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¾Ð¹-либо антиÑпам-ÑиÑтемой на принимающем Ñервере, учитывающей Ñодержимое пиÑьма.
ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Данный код генерирует утилита maillogconvert.pl, когда парÑинг почтового журнала указывает на неуÑпешную доÑтавку ÑообщениÑ, Ñ…Ð¾Ñ‚Ñ Ñтроки Ñ SMTP-ошибкой нет.
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-it.txt0000640000175000017500000001530212410217071022316 0ustar sksk
Numero di client host diversi (indirizzi IP) che hanno inviato email.
Numero di volte che una email è stata inviata con successo.
Questo valore indica la quantità totale di dati trasferita dalle email.
Le unità di misura sono espresse in KB, MB o GB (KiloByte, MegaByte o GigaByte)
Gli orari visualizzati sono basati sul fuso orario del server.
I dati qui riportati sono valori medi (calcolati su tutti i dati tra la prima e l'ultima email nel periodo di tempo analizzato)
I dati qui riportati sono somme cumulative (calcolate su tutti i dati tra la prima e l'ultima email nel periodo di tempo analizzato)
Operazione riuscita: Risposta di tipo non standard
Operazione riuscita: Stato del sistema o risposta d'aiuto del sistema
Operazione riuscita: Messaggio d'aiuto
Operazione riuscita: Servizio pronto
Operazione riuscita: Il servizio sta chiudendo il canale di trasmissione
Operazione riuscita: Il server mail del vostro ISP ha eseguito con successo un comando ed il DNS riporta una consegna effettuata
Operazione riuscita: Il messaggio contiene un indirizzo email non locale ma il server l'ha accettato e provvederà ad inoltrarlo verso un altro indirizzo di destinazione
Operazione riuscita: Il destinatario non può essere verificato ma il server l'ha accettato e proverà a recapitarlo
Operazione riuscita: Significa che il server mail è pronto a ricevere il messaggio oppure invita il vostro client ad inviare il corpo del messaggio dopo aver ricevuto l'intestazione.
Errore temporaneo: Potrebbe essere la risposta a qualsiasi comando se il servizio sta per essere disattivato.
Errore temporaneo: Il server mail del vostro ISP indica che un indirizzo di email non esiste, la casella è occupata oppure la email è stata temporaneamente rifiutata. E' possibile che la connessione sia caduta durante l'invio oppure che il server remoto non voglia accettare la email per qualche ragione (es. indirizzo IP, indirizzo mittente, destinatario, ecc.)
Errore temporaneo: Il server mail del vostro ISP indica che l'invio è stato interrotto, solitamente a causa di un sovraccarico dovuto a troppi messaggi, oppure che il messaggio è valido ma alcuni eventi transitori ne impediscono l'invio. Si consiglia di ripetere l'operazione in un secondo momento
Errore temporaneo: Il server mail del vostro ISP indica un probabile sovraccarico dovuto a troppi messaggi. Si consiglia di ripetere l'operazione in un secondo momento
Errore temporaneo: Alcuni server mail hanno l'opzione di ridurre il numero di connessioni contemporanee ed anche il numero di messaggi inviati per connessione. Se avete troppi messaggi in coda questi potrebbero superare il numero massimo per connessione. Per verificarlo provate ad inviare pochi messaggi per volta verso quel dominio aumentando il numero ad ogni invio fino a scoprire il valore massimo accettato dal server
Errore permanente: Errore di sintassi, comando non riconosciuto o linea di comando troppo lunga
Errore permanente: Errore di sintassi sui parametri o sugli argomenti
Errore permanente: Comando non implementato
Errore permanente: Il server ha incontrato una sequenza errata di comandi
Errore permanente: Parametro del comando non implementato
Errore permanente: Per usare questo server SMTP dovete autenticarvi tramite protocollo POP e specificare il vostro indirizzo email nel campo Sender/From (mittente)
Errore permanente: Accesso negato. Un sendmailismo ?
Errore permanente: L'invio di email a destinatari che non appartengono al proprio dominio non è consentito oppure è richiesta l'autenticazione per far sapere al server che siete autorizzati a farlo. Per evitare lo SPAM alcuni server non consentono l'invio di email verso qualsiasi indirizzo (relay) usando i computer e la rete di un'altra azienda.
Errore permanente: Utente non locale: provare con oppure Indirizzo Invalido: richiesta di relay negata
Errore permanente: Invio email interrotto: spazio su disco esaurito. Il server mail dell'ISP segnala un probabile sovraccarico dovuto all'invio di troppi messaggi.
Errore permanente: Invio email non iniziato: nome della casella di posta non consentito. Alcuni server mail hanno l'opzione di ridurre il numero di connessioni contemporanee ed anche il numero di messaggi inviati per connessione. Se avete troppi messaggi in coda per un dominio questi potrebbero superare il numero massimo per connessione e richiedere alcune modifiche al testo e/o al destinatario per poter essere inviati.
Errore permanente: Invio email rifiutato: accesso negato
Errore permanente: Troppi messaggi duplicati. Se la risorsa non è momentaneamente disponibile è possibile che sul server mail sia installato un sistema anti-spam.
Errore ti tipo sconosciuto. Questo errore non viene segnalato dal server mail ma dal tool maillogconvert.pl quando rileva nel file di log che l'invio non è andato a buon fine ma non sono presenti spiegazioni sull'errore.
awstats-7.4/wwwroot/cgi-bin/lang/tooltips_m/awstats-tt-fr.txt0000640000175000017500000001501212410217071022307 0ustar sksk
Nombre de hotes (adresses IP) utilisés pour envoyés un mail.
Nombre de fois qu'un email a été transféré avec succès.
Nombre d'octets représentant le volume des mails transférés.
Les unités sont en Ko, Mo ou Go (Kilooctets, Megaoctets or Gigaoctets)
Toutes les statistiques en rapport avec le temps sont basées sur les heures du serveur.
Ici les données rapportées sont des: valeurs moyennes (calculées à partir des données entre le premier et dernier email de la période analysée)
Ici les données rapportées sont des: sommes cumulées (calculées à partir des données entre le premier et dernier email de la période analysée)
Success: Non standard success response
Success: System status, or system help repl
Success: Help message
Success: Service ready
Success: Service closing transmission channel
Success: Your ISP mail server have successfully executes a command and the DNS is reporting a positive delivery
Success: Your message to a specified email address is not local to the mail server, but it will accept and forward the message to a different recipient email address
Success: Recipient cannot be verified but mail server accepts the message and attempts delivery
Success: Indicates mail server is ready to accept the message or instruct your mail client to send the message body after the mail server have received the message headers.
Temporary error: This may be a reply to any command if the service knows it must shut down.
Temporary error: Your ISP mail server indicates that an email address does not exist, mailbox is busy or mail temporarly refused. It could be the network connection went down while sending, or it could also happen if the remote mail server does not want to accept mail from you for some reason i.e. (IP address, From address, Recipient, etc.)
Temporary error: Your ISP mail server indicates that the mailing has been interrupted, usually due to overloading from too many messages or transient failure is one in which the message sent is valid, but some temporary event prevents the successful sending of the message. Sending in the future may be successful
Temporary error: Your ISP mail server indicates, probable overloading from too many messages and sending in the future may be successful
Temporary error: Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up it could go over the max number of messages per connection. To see if this is the case you can try submitting only a few messages to that domain at a time and then keep increasing the number until you find the maximum number accepted by the server
Permanent error: Syntax error, command unrecognized or command line too long
Permanent error: Syntax error in parameters or arguments
Permanent error: Command not implemented
Permanent error: Server encountered bad sequence of commands
Permanent error: Command parameter not implemented
Permanent error: You must be pop-authenticated before you can use this SMTP server and you must use your mail address for the Sender/From field.
Permanent error: Access denied. A sendmailism ?
Permanent error: Sending an email to recipients outside of your domain are not allowed or your mail server does not know that you have access to use it for relaying messages and authentication is required. Or to prevent the sending of SPAM some mail servers will not allow (relay) send mail to any e-mail using another company’s network and computer resources.
Permanent error: User not local: please try or Invalid Address: Relay request denied
Permanent error: Requested mail action aborted: exceeded storage allocation. ISP mail server indicates, probable overloading from too many messages.
Permanent error: Requested mail action not taken: mailbox name not allowed. Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up (being sent) for a domain, it could go over the maximum number of messages per connection and/or some change to the message and/or destination must be made for successful delivery.
Permanent error: Requested mail action rejected: access denied
Permanent error: Too many duplicate messages. Resource temporarily unavailable Indicates (probable) that there is some kind of anti-spam system on the mail server.
This is an unknown error. A such error is not reported by the mail server but by the maillogconvert.pl tool when it detects in the log that the sending was not successfull and the log file does not contains any explanation of the error.
awstats-7.4/wwwroot/cgi-bin/lang/awstats-de.txt0000640000175000017500000001311112410217071017450 0ustar sksk# German message file # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Unbekannt message1=Unbekannte (IP konnte nicht aufgelöst werden ) message2=Sonstige message3=Details anzeigen message4=Tag message5=Monat message6=Jahr message7=Statistik für message8=Erster Zugriff message9=Letzter Zugriff message10=Anzahl der Besuche message11=Unterschiedliche Besucher message12=Besuch message13=Suchbegriffe message14=Häufigkeit message15=Prozent message16=Datenvolumen message17=Domains/Länder message18=Besucher message19=Seiten-URL message20=Stunden (Serverzeit) message21=Browser message22=HTTP Fehlermeldungen message23=Verweise message24=Noch nie aktualisiert message25=Domains/Länder der Besucher message26=Rechner message27=Seiten message28=Unterschiedliche Seiten message29=Zugriffe message30=Weitere Suchbegriffe message31=Nicht gefundene Seiten message32=HTTP Fehlercodes message33=Netscape Versionen message34=Internet Explorer Versionen message35=Zuletzt aktualisiert message36=Woher die Besucher kamen message37=Herkunft message38=Direkter Zugriff/Bookmarks message39=Herkunft unbekannt message40=Links von einer Internet-Suchmaschine message41=Links von einer externen Seite (keine Suchmaschinen) message42=Links von einer internen Seite innerhalb der Web Site message43=Suchausdrücke (Suchmaschinen) message44=Suchbegriffe (Suchmaschinen) message45=Unaufgelöste IP Adressen message46=Unbekanntes Betriebssystem message47=Nicht auffindbare Seiten (Fehler 404) message48=IP Adresse message49=Fehlerhafte Zugriffe message50=Unbekannter Browser message51=Zugriffe durch Suchmaschinen message52=Besuche/Besucher message53=Robots/Spiders (Suchmaschinen) message54=Kostenloses Programm zur Echtzeitanalyse für moderne Webstatistiken message55=von message56=Seiten message57=Zugriffe message58=Versionen message59=Betriebssysteme message60=Jan message61=Feb message62=März message63=Apr message64=Mai message65=Juni message66=Juli message67=Aug message68=Sep message69=Okt message70=Nov message71=Dez message72=Navigation message73=Datei-Typen message74=Jetzt aktualisieren message75=Bytes message76=Zurück zur Hauptseite message77=Top message78=dd.mm.yyyy - HH:MM message79=Filter message80=Gesamte Liste message81=Rechner message82=Bekannte message83=Robots message84=So message85=Mo message86=Di message87=Mi message88=Do message89=Fr message90=Sa message91=Wochentage message92=Wer message93=Wann message94=beglaubigte Benutzer message95=Minimum message96=Durchschnitt message97=Maximum message98=Kompressionsrate message99=gesparte Bandbreite message100=unkomprimiert message101=komprimiert message102=Total message103=verschiedene Suchbegriffe message104=Einstiegsseiten message105=Code message106=durchschnitt. Größe message107=Links aus einer News Gruppe message108=KB message109=MB message110=GB message111=Grabber message112=Ja message113=Nein message114=Whois Informationen message115=OK message116=Exit Seiten message117=Aufenthaltsdauer message118=Fenster schließen message119=Bytes message120=Suchausdrücke message121=Suchbegriffe message122=Suchmaschinen message123=Websites message124=Weitere Suchausdrücke message125=Unbekannte Benutzer message126=Suchmaschinen message127=Websites message128=Zusammenfassung message129=Der genaue Wert ist nicht in der 'Jahres'-Ansicht verfügbar message130=Datenwert Arrays message131=E-Mail Sender message132=E-Mail Empfänger message133=Zeitraum message134=Extra/Marketing message135=Bildschirmauflösungen message136=Wurm/Virus Angriffe message137=Zu Favoriten hinzugefügt (Schätzung) message138=Tage im Monat message139=Verschiedenes message140=Browser mit Unterstützung für JAVA message141=Browser mit Unterstützung für Macromedia Director message142=Browser mit Unterstützung für Flash message143=Browser mit Unterstützung für Real Audio Klangwiedergabe message144=Browser mit Unterstützung für Quicktime Klangwiedergabe message145=Browser mit Unterstützung für Windows Media Klangwiedergabe message146=Browser mit Unterstützung für PDF message147=Browser mit Unterstützung für SMTP Fehlercodes message148=Länder message149=Mails message150=Größe message151=Erste message152=Letzte message153=Exklusiv-Filter message154=Die Codes, die hier angezeigt werden, zeigen Treffer oder Traffic welchen Besucher "nicht gesehen" haben und sind in den übrigen Diagrammen nicht enthalten. message155=Cluster message156=Die Robots, die hier angezeigt werden, zeigen Treffer oder Traffic welchen Besucher "nicht gesehen" haben und sind in den übrigen Diagrammen nicht enthalten. message157=Zahlen hinter + sind erfolgreiche Treffer auf die "robots.txt"-Datei message158=Die Würmer, die hier angezeigt werden, zeigen Treffer oder Traffic welchen Besucher "nicht gesehen" haben und sind in den übrigen Diagrammen nicht enthalten message159=Nicht gesehener Traffic ist Traffic, welcher von Robots, Würmern oder Antworten mit speziellem HTTP-Statuscode message160=gesehener Traffic message161=nicht gesehener Traffic message162=Monatliche Historie message163=Würmer message164=unterschiedliche Würmer message165=erfolgreich verschickte Mails message166=fehlgeschlagene/verweigerte Mails message167=Empfindliche Ziele message168=Javascript deaktiviert message169=Erstellt durch message170=Erweiterungen message171=Regionen message172=Städte message173=Opera Versionen message174=Safari Versionen message175=Chrome Versionen message176=Konqueror Versionen message177=. message178=Downloads awstats-7.4/wwwroot/cgi-bin/lang/awstats-cz.txt0000640000175000017500000001277212410217071017510 0ustar sksk# Czech message file (David Jurenka ) # $Revision$ - $Date$ PageCode=utf-8 message0=Neznámé message1=neznámých (nepÅ™eložené IP) message2=Ostatní message3=Zobrazit podrobnosti message4=Den message5=MÄ›síc message6=Rok message7=Statistiky domény message8=První návÅ¡tÄ›va message9=Poslední návÅ¡tÄ›vy message10=NávÅ¡tÄ›vy message11=Unikátní návÅ¡tÄ›vníci message12=NávÅ¡tÄ›va message13=různých výrazů message14=Vyhledávání message15=Podíl message16=Zátěž message17=Domény/zemÄ› message18=NávÅ¡tÄ›vníci message19=Stránky/URL message20=Hodiny message21=ProhlížeÄe message22= message23=Odkazující stránky message24=Nikdy nezaktualizováno (viz 'Build/Update' v awstats_setup.html) message25=Domény/zemÄ› návÅ¡tÄ›vníků message26=poÄítaÄů message27=stránek message28=různých stránek/URL message29=Zobrazeno message30=Ostatní slova message31=Nenalezené stránky message32=Stavové kódy HTTP message33=Verze Netscape message34=Verze MS Internet Explorer message35=Poslední aktualizace message36=Přístup na server z message37=Původ message38=Přímá adresa / Záložka / Odkaz v emailu... message39=Neznámý původ message40=Odkazy z internetových vyhledávaÄů message41=Odkazy z externích stránek (kromÄ› vyhledávaÄů) message42=Odkazy z interních stránek (jiných stránek na témže serveru) message43=Slovní spojení použitá pro vyhledávání message44=Výrazy použité pro vyhledávání message45=NepÅ™eložené IP adresy message46=Neznámý OS (z identifikace klientu) message47=Požadovaná, ale nenalezená URL (kód HTTP 404) message48=IP adresa message49=Chybové hity message50=Neznámé prohlížeÄe (z identifikace klientu) message51=různých robotů message52=návÅ¡tÄ›v/návÅ¡tÄ›vník message53=Roboty message54=VolnÄ› Å¡iÅ™itelný nástroj pro analýzu logů a tvorbu pokroÄilých webových statistik v reálném Äase message55=z message56=Stránky message57=Hity message58=Verze message59=OperaÄní systémy message60=Led message61=Úno message62=BÅ™e message63=Dub message64=KvÄ› message65=ÄŒvn message66=ÄŒvc message67=Srp message68=Zář message69=Říj message70=Lis message71=Pro message72=Prohlížení message73=Typy souborů message74=Zaktualizovat message75=PÅ™enesená data message76=ZpÄ›t na hlavní stránku message77=Top message78=dd mmm yyyy - HH:MM message79=Filtr message80=Úplný seznam message81=PoÄítaÄe message82=známých message83=Roboty message84=Ne message85=Po message86=Út message87=St message88=ÄŒt message89=Pá message90=So message91=Dny v týdnu message92=Kdo message93=Kdy message94=PÅ™ihlášení uživatelé message95=Min message96=PrůmÄ›r message97=Max message98=Webová komprese message99=UÅ¡etÅ™ený objem message100=Komprimovaná data message101=Výsledná komprese message102=Celkem message103=různých slovních spojení message104=Vstup message105=Kód message106=PrůmÄ›rná velikost message107=Odkazy z diskuzních skupin message108=KB message109=MB message110=GB message111=Grabber message112=Ano message113=Ne message114=Whois info message115=OK message116=Odchod message117=Délka návÅ¡tÄ›v message118=Zavřít okno message119=bajtů message120=Hledaná slovní spojení message121=Hledané výrazy message122=různých vyhledávaÄů message123=různých stránek message124=Ostatní fráze message125=Ostatní pÅ™ihlášení (a anonymní uživatelé) message126=Odkazující vyhledávaÄe message127=Odkazující stránky message128=Souhrn message129=PÅ™esná hodnota není dostupná v celoroÄním pohledu message130=Datová pole message131=Odesílatelé message132=Adresáti message133=Zobrazený Äasový úsek message134=Extra/Marketing message135=RozliÅ¡ení obrazovky message136=Útoky Äervů/virů message137=Úspěšná stažení souboru favicon.ico message138=Denní pÅ™ehled message139=Různé message140=ProhlížeÄe s podporou Javy message141=ProhlížeÄe s podporou Macromedia Director message142=ProhlížeÄe s podporou Flash message143=ProhlížeÄe s podporou pÅ™ehrávání zvuku Real message144=ProhlížeÄe s podporou pÅ™ehrávání zvuku QuickTime message145=ProhlížeÄe s podporou pÅ™ehrávání zvuku Windows Media message146=ProhlížeÄe s podporou PDF message147=Chybové kódy SMTP message148=ZemÄ› message149=Zprávy message150=Velikost message151=První message152=Poslední message153=Neobsahuje message154=Zde uvedené kódy pÅ™edstavují nestandardní odpovÄ›di serveru, které netvoří běžný provoz, a proto tato zátěž není zahrnuta v ostatních tabulkách. message155=Cluster message156=Zde uvedené roboty pÅ™edstavují zátěž, která nebyla způsobena běžnými uživateli, a proto není zahrnuta v ostatních tabulkách. message157=Čísla po + udávají poÄet úspěšných stažení souboru robots.txt. message158=Zde uvedené Äervy pÅ™edstavují zátěž, která nebyla způsobena běžnými uživateli, a proto není zahrnuta v ostatních grafech. message159=Zbylá zátěž sestává z návÅ¡tÄ›v robotů a Äervů a z odpovÄ›dí serveru s nestandardními stavovými kódy HTTP. message160=Běžná uživatelská zátěž message161=Zbylá zátěž message162=MÄ›síÄní pÅ™ehled message163=ÄŒervy message164=různých Äervů message165=ÚspěšnÄ› odeslané emaily message166=Neúspěšné emaily message167=Zranitelné cíle message168=JavaScript vypnut message169=Vygenerováno programem message170=pluginy message171=Regiony message172=MÄ›sta message173=Verze Opera message174=Verze Safari message175=Verze Chrome message176=Verze Konqueror awstats-7.4/wwwroot/cgi-bin/lang/awstats-et.txt0000640000175000017500000000755212410217071017504 0ustar sksk# Estonian message file Andrei Kolu(antik@nek.ee) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Tundmatu message1=Tundmatut (domeeninimeta ip-d) message2=Teised message3=Täpsem ülevaade message4=Päev message5=Kuu message6=Aasta message7=Statistika message8=Esimene Külastus message9=Viimane Külastus message10=Külastuste arv message11=üksik-külastajat message12=Külastus message13=erinevat märksõna message14=Otsi message15=Protsent message16=Traffik message17=Domeenid/Riigid message18=Külastajaid message19=Lehekülgi-URL-e message20=Tunnid message21=Brauserid message22=HTTP Vead message23=Referers message24=Pole varem uuendatud message25=Külastajaid domeenis/riike message26=Külastajaid message27=lehekülgi message28=erinevat lehekülge- url-i message29=Vaadatud message30=Muud sõnad message31=Lehekülgi mida pole leitud message32=HTTP veakoodid message33=Netscape versioonid message34=IE versioonid message35=Viimati Uuendatud message36=Lingitud teise kodulehekülje kaudu message37=Päritolu message38=Otsene aadress / Järjehoidjad message39=Tundmatu päritolu message40=Lingid Interneti otsingusüsteemidelt message41=Lingid välistelt lehekülgedelt (muud koduleheküljed väljaarvatud otsingusüsteemid) message42=Lingid sisemistelt lehekülgedelt (muud koduleheküljed samalt serverilt) message43=Otsingusüsteemides kasutatud märgulaused message44=Otsingusüsteemides kasutatud märgusänad message45=Domeeninimeta IP Aadress message46=Tundmatu OS (useragent field) message47=Nõutud, kuid leidmata URL-id (HTTP kood 404) message48=IP Aadress message49=Vigaseid tabamusi message50=Tundmatud brauserid (useragent field) message51=erinevad robotid message52=külastust/külastaja kohta message53=Robotid message54=Tasuta reaalajas Weebiserveri logifailide statistika analüüsija message55=millest message56=Lehekülgi message57=Tabamusi message58=Versioone message59=Operatsioonisüsteemid message60=Jaan message61=Veeb message62=Märt message63=Apr message64=Mai message65=Juun message66=Juul message67=Aug message68=Sept message69=Okt message70=Nov message71=Dets message72=Navigatsioon message73=Failitüübid message74=Uuendada message75=Läbilase message76=Tagasi pealehele message77=TOP message78=dd mmm yyyy - HH:MM message79=Filter message80=Täisnimekiri message81=Külastajad message82=Teada message83=Robotid message84=Püh message85=Esm message86=Tei message87=Kol message88=Nel message89=Ree message90=Lau message91=Nädalapäevad message92=Kes message93=Millal message94=Autoriseerinud kasutajad message95=Min. message96=Keskmine message97=Maks. message98=Pakkimine message99=Salvestatud läbilase message100=Enne pakkimist message101=Pärast pakkimist message102=Kokku message103=erinevat märksõna message104=Esimesena läbi vaadatud message105=Kood message106=Keskmine suurus message107=Lingid UudisteGruppidest message108=KB message109=MB message110=GB message111=Allalaadija message112=Jah message113=Ei message114=WhoIs info message115=OK message116=Väljumisi message117=Külastuste kestvus message118=Sulge aken message119=Baiti message120=Otsitavad märklaused message121=Otsitavad märksõnad message122=erinevad suunavad otsingusüsteemid message123=erinevad suunavad leheküljed message124=Muud märksõnad message125=Muud logimised (ja/või anonüümsed kasutajad) message126=Suunavad otsingusüsteemid message127=Suunavad leheküljed message128=Kokkuvõte message129=Täpne väärtus 'Aasta' ülevaates pole saadaval message130=Andmete massiiv message131=Saatja EMail message132=Vastuvötja EMail message133=Perioodi aruanne message134=Lisa awstats-7.4/wwwroot/cgi-bin/lang/awstats-fi.txt0000640000175000017500000001161412410217071017464 0ustar sksk# Finnish message file (skyde@welho.com) # Original by (zebi@kanetti.com) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Tuntematon message1=Tuntematon (Selvittämätön IP) message2=Muut message3=Katso tiedot message4=Päivä message5=Kuukausi message6=Vuosi message7=Statistiikat: message8=Ensimmäinen vierailu message9=Viimeisin vierailu message10=Vierailujen määrä message11=Uniikkia vierailijaa message12=Vierailu message13=eri hakusanaa message14=Hakuja message15=Prosentti message16=Liikenne message17=Domainit/maat message18=Vierailija message19=Sivujen URL message20=Tunnit message21=Selaimet message22=HTTP Virheet message23=Viittaajat message24=Päivittämätön message25=Vierailijoiden domainit/maat message26=hostit message27=sivut message28=eri sivua message29=Ladatut sivut message30=Muut sanat message31=Sivuja ei löytynyt message32=HTTP-virhekoodit message33=Netscapen versiot message34=IE:n versiot message35=Edellinen päivitys message36=Sivuille saavuttu osoitteesta: message37=Alkuperä message38=Suora osoite / Kirjanmerkit message39=Tuntematon alkuperä message40=Linkit Internetin hakukoneista message41=Linkit ulkopuolisilta sivuilta (poislukien hakukoneet) message42=Linkit sisäisiltä sivuilta (omasta domainista) message43=Hakukoneissa käytetyt hakulauseet message44=Hakukoneissa käytetyt hakusanat message45=Selvittämätön IP-osoite message46=Tuntematon käyttöjärjestelmä (käyttäjän mukana lähetetty tieto) message47=Pyydetyt, mutta ei löytyneet osoitteet (HTTP virhekoodi 404) message48=IP-osoite message49=Virheosumat message50=Tuntemattomia selaimia (käyttäjän mukana lähetetty tieto) message51=Vierailleet robotit message52=käyntiä/vierailija message53=Robotteja/"Spider" -vierailijoita message54=Ilmainen reaaliaikainen lokitiedoston analysoija kehittyneiden web-tilastojen laadintaan message55=josta message56=Sivuja message57=Osumia message58=Versiot message59=Käyttöjärjestelmät message60=Tammi message61=Helmi message62=Maalis message63=Huhti message64=Touko message65=Kesä message66=Heinä message67=Elo message68=Syys message69=Loka message70=Marras message71=Joulu message72=Navigaatio message73=Tiedostotyyppi message74=Päivitä nyt message75=Kaista message76=Takaisin pääsivulle message77=Yleisimmät message78=dd.mm.yyyy - HH:MM message79=Filtteri message80=Täysi lista message81=Hosteja message82=Tunnettuja message83=Robotteja message84=Su message85=Ma message86=Ti message87=Ke message88=To message89=Pe message90=La message91=Viikonpäivät message92=Kuka message93=Milloin message94=Kirjautuneet käyttäjät message95=Minimi message96=Keskiarvo message97=Maksimi message98=Pakkaus message99=Kaistaa säästetty message100=Pakkaus käytössä message101=Pakattuna message102=Yhteensä message103=eri hakulausetta message104=Saapumissivu message105=Koodi message106=Keskimääräinen koko message107=Linkit uutisryhmistä message108=Kt message109=Mt message110=Gt message111=Grabber message112=Kyllä message113=Ei message114=WhoIs -tiedot message115=OK message116=Poistumissivu message117=Vierailujen kestot message118=Sulje ikkuna message119=Tavua message120=Hakulauseet message121=Hakusanat message122=eri viittaavaa hakukonetta message123=eri viittaavaa sivustoa message124=Muut lausekkeet message125=Anonyymit käyttäjät message126=Viittaavat hakukoneet message127=Viittaavat sivustot message128=Yhteenveto message129=Tarkkaa arvoa ei saatavilla vuosinäkymässä message130=Data value arrays message131=Lähettäjän EMail-osoite message132=Vastaanottajan EMail-osoite message133=Raportin aikaväli message134=Extra/Markkinointi message135=Näytön resoluutiot message136=Mato-/Virushyökkäykset message137=Lisätty suosikkeihin (arvio) message138=Kuukausi päivittäin message139=Sekalaista message140=Selaimet Java -tuella message141=Selaimet Macromedia Director -tuella message142=Selaimet Flash -tuella message143=Selaimet Real audio -tuella message144=Selaimet Quicktime audio -tuella message145=Selaimet Windows Media audio -tuella message146=Selaimet PDF -tuella message147=SMTP-virhekoodit message148=Maat message149=Viestiä message150=Koko message151=Ensimmäinen message152=Viimeinen message153=Exclude filter message154=Tässä luetellut koodit luetaan "ei näytetty" -liikenteeksi, eikä niitä ole näinollen sisällytetty muihin tilastoihin. message155=Rypäs message156=Tässä luetellut robotit luetaan "ei näytetty" -liikenteeksi, eikä niitä ole näinollen sisällytetty muihin tilastoihin. message157=Luvut + -merkin jälkeen ovat onnistuneita osumia "robots.txt"-tiedostoihin. message158=Tässä luetellut madot luetaan "ei näytetty" -liikenteeksi, eikä niitä ole näinollen sisällytetty muihin tilastoihin. message159="Ei näytetty"-liikenne sisältää hakurobottien, matojen ja poikkeavien HTTP-tilakoodien aiheuttaman liikenteen. message160=Näytetty liikenne message161=Ei näytetty liikenne message162=Kuukausittaittaiset tilastot message163=Matoja message164=erilaista matoa message165=Viestiä lähetetty onnistuneesti message166=Viestiä epäonnistunut/torjuttu message167=Herkkiä kohteita awstats-7.4/wwwroot/cgi-bin/lang/awstats-tw.txt0000640000175000017500000001052312410217071017516 0ustar sksk# Chinese (traditionnal) message file # (by Geoffrey Hoo geoffrey.hoo@NOSPAMmyrealbox.com, remove "NOSPAM" to contact) # $Revision$ - $Date$ PageCode=big5 message0=µLªk±oª¾ message1=µLªk±oª¾ (¤£¯à¤Ï¸Ñºô°ì¦WºÙ) message2=¨ä¥L message3=À˵ø¸Ô²Ó¸ê®Æ message4=¬P´Á message5=¤ë¥÷ message6=¦~¥÷: message7=²Î­pºô¯¸ message8=­º¦¸°ÑÆ[¤é´Á message9=³Ìªñ°ÑÆ[¤é´Á message10=°ÑÆ[¦¸¼Æ message11=°ÑÆ[ªÌ message12=°ÑÆ[¦¸¼Æ message13=­ÓÃöÁä¦rµü message14=·j´M message15=¦Ê¤À¤ñ message16=¬y¶q²Î­p message17=ºô°ì©Î°ê®a message18=«ô³XªÌ message19=ºô­¶ªº URL ºô§} message20=¨C¤p®É message21=ÂsÄý¾¹ message22=HTTP ¿ù»~ message23=°Ñ¦Ò¸ê°T message24=±q¥¼§ó·s message25=°ÑÆ[ªÌªººô°ì©Î°ê®a message26=¥D¾÷ message27=ºô­¶¼Æ message28=­Ó¤£¦Pªººô­¶ message29=¦s¨ú¦¸¼Æ message30=¤£¦Pªº¦rµü message31=§ä¤£¨ìªººô­¶ #message32=HTTP ¿ù»~½X message32=HTTP ª¬ºA½X message33=Netscape ª©¥» message34=IE ª©¥» message35=³Ìªñ§ó·s message36=³sµ²ºô¯¸ªº¤èªk message37=¨Ó·½ºô§} message38=ºô§}¥Ñ°ÑÆ[ªÌ¦Û¦æ¿é¤J¡A©Î±q®ÑÅÒ¨ú¥X message39=µLªk±oª¾³sµ²ªº¤èªk message40=±q·j´Mºô¯¸³sµ² message41=±q¦¹ºô¯¸¥~ªº¨ä¥L (¨Ã«D¬O·j´M¤ÞÀºªº) ºô­¶³sµ² message42=±q¦¹ºô¯¸¤º³¡³sµ² message43=ºô¯¸·j´MªºÃöÁä¦r¥y message44=ºô¯¸·j´MªºÃöÁä¦rµü message45=µLªk¤Ï¸ÑĶªºIP¦ì§} message46=µLªk±oª¾ªº§@·~¨t²Î message47=§ä¤£¨ìªººô§}³sµ² (HTTP ¿ù»~½X 404) message48=IP ¦ì§} message49=¿ù»~¦¸¼Æ message50=µLªk±oª¾ªºÂsÄý¾¹ message51=­Óº©¹C¾¹ message52=°ÑÆ[¦¸¼Æ/°ÑÆ[ªÌ message53=·j´M¤ÞÀººô¯¸ªºº©¹C¾¹ message54=ºô­¶¬ö¿ý¤ÀªR¨t²Î message55=­Ó©ó message56=ºô­¶¼Æ #message57=ÀÉ®×¼Æ message57=ÂIÀ»¼Æ message58=ª©¥» message59=§@·~¨t²Î #message60=¤@¤ë #message61=¤G¤ë #message62=¤T¤ë #message63=¥|¤ë #message64=¤­¤ë #message65=¤»¤ë #message66=¤C¤ë #message67=¤K¤ë #message68=¤E¤ë #message69=¤Q¤ë #message70=¤Q¤@¤ë #message71=¤Q¤G¤ë message60=1¤ë message61=2¤ë message62=3¤ë message63=4¤ë message64=5¤ë message65=6¤ë message66=7¤ë message67=8¤ë message68=9¤ë message69=10¤ë message70=11¤ë message71=12¤ë message72=ÂsÄý¾¹²Î­p message73=ÀÉ®×Ãþ§O message74=¥ß§Y§ó·s message75=¦ì¤¸²Õ message76=¦^¨ì¥D­¶ message77=«e message78=yyyy¦~ mmm dd¤é HH:MM #message79=¹LÂo message79=¥]§t message80=¥þ³¡¦C¥X message81=¥D¾÷ message82=­Ó¸Ñͦ¨¥\ message83=·j´M¤ÞÀººô¯¸ message84=¤é message85=¤@ message86=¤G message87=¤T message88=¥| message89=¤­ message90=¤» message91=¬P´Á´X message92=«ö°ÑÆ[ªÌ message93=«ö°ÑÆ[®É¶¡ message94=ų§O¥Xªº¨Ï¥ÎªÌ message95=³Ì¤p message96=¥­§¡¼Æ message97=³Ì¤j message98=ºô­¶À£ÁY message99=¸`¬Ù¤FªºÀW¼e message100=À£ÁY«e message101=À£ÁY«á message102=Á`¼Æ message103=­Ó¤£¦PªºÃöÁä¦r¥y message104=¤J¯¸³B message105=½s½X message106=¥­§¡¤j¤p message107=±q·s»D¸s²Õ³sµ² #message108=K­Ó¦ì¤¸²Õ #message109=M­Ó¦ì¤¸²Õ #message110=G­Ó¦ì¤¸²Õ message108=KB message109=MB message110=GB message111=ºô­¶§ì¨ú¾¹ message112=¬O message113=§_ message114=WhoIs ¸ê°T message115=OK message116=¥X¯¸³B message117=¨C¦¸°ÑÆ[©Òªá®É¶¡ message118=Ãö³¬¦¹µøµ¡ #message119=­Ó¦ì¤¸²Õ message119=Bytes message120=¥Î¥H·j´MªºÃöÁä¦r¥y message121=¥Î¥H·j´MªºÃöÁä¦rµü message122=­Ó¤£¦Pªº·j´M¤ÞÀºÂश°ÑÆ[ªÌ¨ì³o¯¸ message123=­Ó¤£¦Pªº¨ä¥Lºô¯¸Âश°ÑÆ[ªÌ¨ì³o¯¸ message124=¨ä¥L¦r¥y message125=¨ä¥Lµn¿ý (¥]§t°Î¦Wµn¿ý) message126=¥Ñ¨º¨Ç·j´M¤ÞÀºÂश message127=¥Ñ¨º¨Ç¨ä¥Lºô¯¸Âश message128=¼¼­n message129=§@¥þ¦~²Î­p®É¡AµLªk·Ç½T±oª¾°ÑÆ[ªÌªº¼Æ¥Ø message130=Data value arrays message131=µo«H¤H¶l§} message132=¦¬«H¤H¶l§} message133=³øªí¤é´Á message134=ÃB¥~ / ¥«³õ¾Ç message135=¿Ã¹õ¤j¤p message136=įÂÎ/¯f¬r §ðÀ» message137=¥[¤J§Úªº³Ì·R (¦ô­p) message138=¨C¤é message139=Âø¶µ message140=ÂsÄý¾¹¤ä«ù Java message141=ÂsÄý¾¹¤ä«ù Macromedia Director message142=ÂsÄý¾¹¤ä«ù Flash message143=ÂsÄý¾¹¤ä«ù Real audio playing message144=ÂsÄý¾¹¤ä«ù Quicktime audio playing message145=ÂsÄý¾¹¤ä«ù Windows Media audio playing message146=ÂsÄý¾¹¤ä«ù PDF message147=SMTP ¿ù»~½X message148=°ê®a message149=¶l¥ó¼Æ message150=¤j¤p message151=­º¦¸ message152=³Ìªñ message153=¹LÂo #message154=* Codes shown here gave hits or traffic "not viewed" by visitors, so are isolated in this chart. message154=³o¨Çª¬ºA½X·|¼W¥[°ÑÆ[ªÌ"¬Ý¤£¨ì"ªºÂIÀ»¼Æ©Î¬y¶q, ©Ò¥H¤£¥]¬A¦b¨ä¥L²Î­pªí¤¤. message155=Cluster message156=³o¨Ç·j¯Á¾÷¾¹¤H(Robots)·|¼W¥[°ÑÆ[ªÌ"¬Ý¤£¨ì"ªºÂIÀ»¼Æ©Î¬y¶q, ©Ò¥H¤£¥]¬A¦b¨ä¥L²Î­pªí¤¤. message157="+" «áªº¼Æ¦r¬O "robots.txt" ªºÂIÀ»¼Æ. message158=³o¨ÇįÂη|¼W¥[°ÑÆ[ªÌ"¬Ý¤£¨ì"ªºÂIÀ»¼Æ©Î¬y¶q, ©Ò¥H¤£¥]¬A¦b¨ä¥L²Î­pªí¤¤. message159="¬Ý¤£¨ì"ªº¬y¶q¬O¥Ñ·j¯Á¾÷¾¹¤H(Robots),įÂΩίS§Oªº HTTP ¦^ÂФޭPªº. message160=´¶³q¬y¶q message161="¬Ý¤£¨ì"ªº¬y¶q message162=¨C¤ë°O¿ý message163=įÂÎ message164=¤£¦PªºÄ¯ÂÎawstats-7.4/wwwroot/cgi-bin/lang/awstats-fr.txt0000640000175000017500000001236412410217071017500 0ustar sksk# French message file (eldy@users.sourceforge.net) # $Revision$ - $Date$ PageCode=utf-8 message0=Inconnu message1=Inconnus (IP non résolue) message2=Autres message3=Voir détails message4=Jour message5=Mois message6=Année message7=Statistiques de message8=Première visite message9=Dernière visite message10=Visites message11=Visiteurs différents message12=Visite message13=mots clé différents message14=Recherche message15=Pourcentage message16=Trafic message17=Domaines/Pays message18=Visiteurs message19=Pages-URL message20=Heures message21=Navigateurs message22= message23=Origine/Referer message24=Jamais mis à jour (Voir 'Build/Update', page awstats_setup.html) message25=Domaines/pays visiteurs message26=des hôtes message27=des pages message28=pages différentes message29=Pages vues message30=Autres mots message31=Pages non trouvées message32=Codes Status HTTP message33=Versions de Netscape message34=Versions de MS Internet Explorer message35=Dernière mise à jour message36=Connexions au site par message37=Origine de la connexion message38=Adresse directe / Bookmark / Lien dans email... message39=Origine inconnue message40=Lien depuis un moteur de recherche Internet message41=Lien depuis une page externe (autres sites, hors moteurs) message42=Lien depuis une page interne (autre page du site) message43=Phrases clés de recherche message44=Mots clés de recherche message45=Adresses IP non résolues message46=OS non reconnus (champ useragent brut) message47=URLs du site demandées non trouvées (Code HTTP 404) message48=Adresse IP message49=Hits en Ã©chec message50=Navigateurs non reconnus (champ useragent brut) message51=robots différents message52=visites/visiteur message53=Visiteurs Robots/Spiders message54=Analyseur de log libre pour statistiques Web avancées message55=sur message56=Pages message57=Hits message58=Versions message59=Systèmes exploitation message60=Jan message61=Fév message62=Mar message63=Avr message64=Mai message65=Juin message66=Juil message67=Aoû message68=Sep message69=Oct message70=Nov message71=Déc message72=Navigation message73=Types de fichiers message74=Mise à jour immédiate message75=Bande passante message76=Retour page principale message77=Top message78=dd mmm yyyy - HH:MM message79=Filtre message80=Liste complète message81=Hôtes message82=Connus message83=Robots message84=Dim message85=Lun message86=Mar message87=Mer message88=Jeu message89=Ven message90=Sam message91=Jours de la semaine message92=Qui message93=Quand message94=Logins utilises message95=Min message96=Moyenne message97=Max message98=Compression web message99=Bande-passante économisée message100=Compression sur message101=Résultat compression message102=Total message103=phrases clé différentes message104=Entrée message105=Code message106=Taille moyenne message107=Lien depuis un NewsGroup message108=Ko message109=Mo message110=Go message111=Aspirateur message112=Oui message113=Non message114=Info. message115=OK message116=Sortie message117=Durée des visites message118=Fermer message119=Octets message120=Phrases clés message121=Mots clés message122=moteurs de recherche différents message123=sites différents message124=Autres phrases message125=Autres logins (et/ou utilisateurs anonymes) message126=Moteurs de recherche message127=Sites référenceurs message128=Résumé message129=Valeur exacte indisponible en vue 'annuelle' message130=Tableaux des valeurs message131=EMail Emetteur message132=EMail Destinataire message133=Période d'analyse message134=Extra/Marketing message135=Résolution écran message136=Attaques Worm/Virus message137=Hits avec succès sur favicon.ico message138=Jours du mois message139=Divers message140=Navigateurs avec support Java actif message141=Navigateurs avec support Macromedia Director message142=Navigateurs avec support Flash message143=Navigateurs avec support audio Real message144=Navigateurs avec support audio QuickTime message145=Navigateurs avec support audio Windows Media message146=Navigateurs avec support PDF message147=Codes Erreurs SMTP message148=Pays message149=Mails message150=Taille message151=Premier message152=Dernier message153=Filtre exclusion message154=Les codes présentées ici sont à l'origine de hits ou de traffic "non vus" par les visiteurs donc non représentés dans les autres tableaux. message155=Cluster message156=Les robots présentés ici sont à l'origine de hits ou de traffic "non vus" par les visiteurs donc non représentés dans les autres tableaux. message157=Les nombres après le + indiquent les hits avec succès sur les fichiers "robots.txt". message158=Les vers présentés ici sont à l'origine de hits ou de traffic "non vus" par les visiteurs donc non représentés dans les autres tableaux. message159=Le trafic 'non vu' est le trafic généré par les robots, vers ou réponses HTTP avec code retour spécial. message160=Trafic 'vu' message161=Trafic 'non vu' message162=Historique mensuel message163=Vers message164=vers differents message165=Mails transférés message166=Mails en échec/refusés message167=Cibles sensibles message168=Javascript désactivé message169=Généré par message170=plugins message171=Regions message172=Villes message173=Versions Opera message174=Versions Safari message175=Versions Chrome message176=Versions Konqueror message177= awstats-7.4/wwwroot/cgi-bin/lang/awstats-pl.txt0000640000175000017500000001202412410217071017475 0ustar sksk# Polish message file (review: momat@users.sourceforge.net) # $Revision$ - $Date$ PageCode=iso-8859-2 message0=Nieznane message1=Nieznane (brak odwzorowania IP w DNS) message2=Inne message3=Szczegó³y... message4=Dzieñ message5=Miesi±c message6=Rok message7=Statystyki dla message8=Pierwsza wizyta message9=Ostatnia wizyta message10=Liczba wizyt message11=Unikatowych go¶ci message12=Wizyt message13=ró¿ne s³owa kluczowe message14=Szukane message15=Procent message16=Ruch message17=Domeny/Kraje message18=Go¶cie message19=Strony message20=Rozk³ad godzinny message21=Przegl±darki message22=B³êdy HTTP message23=Referenci message24=Nie uaktualniany (zobacz 'Build/Update' na stronie awstats_setup.html) message25=Domeny/Kraje go¶ci message26=hosty message27=strony message28=ró¿nych stron message29=Odwiedziny message30=Inne s³owa message31=Nie znalezione strony message32=Kody b³êdów HTTP message33=Wersje Netscape'a message34=Wersje IE message35=Ostatnia aktualizacja message36=¬ród³a po³±czeñ message37=Pochodzenie message38=Bezpo¶redni adres / Zak³adki(Ulubione) message39=Nieznane Pochodzenie message40=Odno¶nik z wyszukiwarki internetowej message41=Odno¶nik ze strony zewnêtrznej (innej ni¿ strona wyszukiwarki) message42=Odno¶nik ze strony wewnêtrznej (inna strona w tym samym serwisie) message43=Frazy u¿yte w wyszukiwarkach internetowych message44=S³owa kluczowe u¿yte w wyszukiwarkach internetowych message45=Nieznane (brak odwzorowania IP w DNS) message46=Nieznany system operacyjny message47=Nie znaleziony (B³±d HTTP 404) message48=Adres IP message49=B³êdne ¿±dania message50=Nieznane przegl±darki message51=ró¿ne roboty sieciowe message52=wizyt/go¶ci message53=Roboty sieciowe message54=Analizator logów on-line message55=z message56=Strony message57=¯±dania message58=Wersje message59=Systemy operacyjne message60=Sty message61=Lut message62=Mar message63=Kwi message64=Maj message65=Cze message66=Lip message67=Sie message68=Wrz message69=Pa¼ message70=Lis message71=Gru message72=Nawigacja message73=Typ pliku message74=Aktualizuj message75=Pasmo message76=Z powrotem message77=Pierwsze message78=dd mmm yyyy - HH:MM message79=Filtr message80=Pe³na lista message81=Hosty message82=Znane message83=Roboty sieciowe message84=Ni message85=Pn message86=Wt message87=¦r message88=Cz message89=Pt message90=So message91=Dni tygodnia message92=Kto message93=Kiedy message94=Uwierzytelnieni u¿ytkownicy message95=Min message96=¦rednio message97=Max message98=Kompresja message99=Pasmo zaoszczêdzone message100=Przed skompresowaniem message101=Po skompresowaniu message102=Razem message103=ró¿ne frazy message104=Strona wej¶ciowa message105=Kod message106=¦rednia wielko¶æ message107=Linki z grup dyskusyjnych message108=KB message109=MB message110=GB message111=Grabber message112=Tak message113=Nie message114=Informacja Whois message115=OK message116=Strona wyj¶ciowa message117=Czasy wizyt message118=Zamknij okno message119=Bajtów message120=Poszukiwane frazy message121=Poszukiwane s³owa kluczowe message122=ró¿ne wyszukiwarki message123=ró¿ne strony message124=Inne frazy message125=U¿ytkownicy anonimowi message126=Linkuj±ce wyszukiwarki internetowe message127=Linkuj±ce strony message128=Podsumowanie message129=Dok³adna warto¶æ nie jest dostêpna w widoku rocznym message130=Tablice z warto¶ciami danych message131=Nadawca wiadomo¶ci pocztowych message132=Odbiorca wiadomo¶ci pocztowych message133=Raportowany okres message134=Extra/Marketing message135=Rozmiary ekranów message136=Ataki robaków/wirusów internetowych message137=Dodaj do ulubionych (szacunkowo) message138=Dni miesi±ca message139=Rozmaito¶ci message140=Przegl±darki z obs³ug± Java message141=Przegl±darki z obs³ug± Macromedia Director message142=Przegl±darki z obs³ug± Flash message143=Przegl±darki z obs³ug± odtwarzacza Real audio message144=Przegl±darki z obs³ug± odtwarzacza Quicktime audio message145=Przegl±darki z obs³ug± odtwarzacza Windows Media audio message146=Przegl±darki z obs³ug± PDF message147=Kody b³êdów SMTP message148=Kraje message149=Wiadomo¶ci pocztowe message150=Rozmiar message151=Pierwszy message152=Ostatni message153=Filtr wykluczaj±cy message154=Pokazane tutaj kody dotycz± ¿±dañ lub ruchu "nieogl±danego" przez go¶ci, dlatego nie s± zawarte w innych zestawieniach. message155=Klaster message156=Pokazane tutaj roboty sieciowe generuj± ruch "nieogl±dany" przez go¶ci, dlatego nie s± zawarte w innych zestawieniach. message157=Liczby po + dotycz± udanych odwo³añ do plików "robots.txt". message158=Pokazane tutaj robaki internetowe generuj± ruch "nieogl±dany" przez go¶ci, dlatego nie s± zawarte w innych zestawieniach. message159=Ruch nieogl±dany zawiera ruch generowany przez roboty, robaki internetowe lub odpowiedzi ze specjalymi kodami statusu HTTP. message160=Ruch ogl±dany message161=Ruch nieogl±dany message162=Historia miesiêczna message163=Robaki internetowe message164=ró¿ne robaki internetowe message165=Wiadomo¶ci pocztowe wys³ane prawid³owo message166=Wiadomo¶ci pocztowe nie wys³ane/odrzucone message167=Wra¿liwe cele message168=Javascript wy³±czony message169=Wygenerowane przez message170=wtyczkiawstats-7.4/wwwroot/cgi-bin/lang/awstats-jp.txt0000640000175000017500000001236412410217071017502 0ustar sksk# Japanese message file (info@kchosting.jp) # $Revision$ - $Date$ PageCode=UTF-8 message0=䏿˜Ž message1=䏿˜Ž(ipãŒè§£ã‚Šã¾ã›ã‚“) message2=ãã®ä»– message3=詳細を見る message4=æ—¥ message5=月 message6=å¹´ message7=統計 message8=最åˆã®è¨ªå• message9=最後ã®è¨ªå• message10=è¨ªå•æ•° message11=訪å•者 message12=è¨ªå• message13=キーワード message14=検索 message15=パーセント message16=å®¹é‡ message17=ドメイン/国å message18=訪å•者 message19=URLページ message20=時間 message21=ブラウザ message22=HTTPエラー message23=å‚ç…§ message24=æ›´æ–°ãªã— message25=訪å•者・ドメイン/国å message26=ホスト message27=ページ message28=ページ message29=アクセス message30=ä»–ã®è¨€è‘‰ message31=ページãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ message32=HTTPエラーコード message33=Netscapeãƒãƒ¼ã‚¸ãƒ§ãƒ³ message34=IEãƒãƒ¼ã‚¸ãƒ§ãƒ³ message35=æœ€çµ‚ã®æ›´æ–° message36=ã“ã®ã‚µã‚¤ãƒˆã¸ã®ã‚¢ã‚¯ã‚»ã‚¹å…ƒ message37=アクセス元 message38=直接URLを入力/ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ message39=起点ãŒä¸æ˜Ž message40=インターãƒãƒƒãƒˆæ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã‹ã‚‰ã®ãƒªãƒ³ã‚¯ message41=外部ページã‹ã‚‰ã®ãƒªãƒ³ã‚¯(検索エンジンを除ãä»–ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸) message42=内部ページã‹ã‚‰ã®ãƒªãƒ³ã‚¯(åŒã˜ã‚µã‚¤ãƒˆã®ä»–ã®ãƒšãƒ¼ã‚¸) message43=æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã®æ–‡å­—列(キーフレーズ) message44=æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã®æ–‡å­—列(キーワード) message45=䏿˜ŽãªIPアドレス message46=䏿˜ŽãªOS(å‚照フィールド) message47=è¦æ±‚ã•れãŸURLã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“(HTTPコード404) message48=未解決ã®IPアドレス message49=エラー ä»¶æ•° message50=䏿˜Žãƒ–ラウザ(å‚照フィールド) message51=ロボットã®è¨ªå• message52=訪å•/訪å•者 message53=ロボット/スパイダーã®è¨ªå•者 message54=上級web統計ã®ãƒ•ãƒªãƒ¼ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ãƒ­ã‚°ãƒ•ã‚¡ã‚¤ãƒ«åˆ†æž message55=ã® message56=ページ message57=ä»¶æ•° message58=ãƒãƒ¼ã‚¸ãƒ§ãƒ³ message59=オペレーティングシステム message60=1月 message61=2月 message62=3月 message63=4月 message64=5月 message65=6月 message66=7月 message67=8月 message68=9月 message69=10月 message70=11月 message71=12月 message72=ナビゲーション message73=ファイルã®ç¨®é¡ž message74=æ›´æ–°ã™ã‚‹ message75=ãƒã‚¤ãƒˆ message76=ãƒ¡ã‚¤ãƒ³ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹ message77=トップ message78= yyyyå¹´ mmm ddæ—¥ - HH:MM message79=フィルター message80=全リスト message81=ホスト message82=既知 message83=ロボット message84=日曜日 message85=月曜日 message86=ç«æ›œæ—¥ message87=水曜日 message88=木曜日 message89=金曜日 message90=土曜日 message91=曜日 message92=ã ã‚Œ message93=ã„㤠message94=èªè¨¼ã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ message95=æœ€å° message96=å¹³å‡ message97=最大 message98=Web圧縮 message99=帯域幅ã®ä¿å­˜ message100=åœ§ç¸®å‰ message101=圧縮後 message102=åˆè¨ˆ message103=キーフレーズ message104=å…¥ã‚Šå£ message105=コード message106=å¹³å‡ã‚µã‚¤ã‚º message107=ニュースグループã‹ã‚‰ã®ãƒªãƒ³ã‚¯ message108=Kb message109=Mb message110=Gb message111=Grabber message112=Yes message113=No message114=WhoIs情報 message115=OK message116=å‡ºå£ message117=訪å•ã®é•·ã• message118=ウィンドーを閉ã˜ã‚‹ message119=ãƒã‚¤ãƒˆ message120=検索文字列(キーフレーズ) message121=検索文字列(キーワード) message122=検索エンジン message123=ホームページ message124=ä»–ã®ãƒ•レーズ message125=ä»–ã®ãƒ­ã‚°ã‚¤ãƒ³ message126=検索エンジン message127=ホームページ message128=サマリー message129=「年ã€ãƒ“ューã§ã¯ç²¾å¯†ãªæ•°å­—ã¯ã‚りã¾ã›ã‚“ message130=データé…列関数 message131=é€ä¿¡è€…ã®EMail message132=å—信者ã®EMail message133=表示ã™ã‚‹ãƒ¬ãƒãƒ¼ãƒˆ message134=エキストラ/マーケティング message135=ç”»é¢è§£åƒåº¦ message136=ワーム/ウィルス攻撃 message137=ãŠæ°—ã«å…¥ã‚Šã«è¿½åŠ  message138=日付 message139=ãã®ä»– message140=Java 対応ブラウザー message141=Macromedia Director 対応ブラウザー message142=Flash 対応ブラウザー message143=Real Audio 対応ブラウザー message144=Quicktime Audio 対応ブラウザー message145=Windows Media 対応ブラウザー message146=PDF 対応ブラウザー message147=SMTP エラーコード message148=国 message149=メール message150=サイズ message151=æœ€åˆ message152=最後 message153=除外フィルター message154=ã“ã®ãƒãƒ£ãƒ¼ãƒˆã®ã‚³ãƒ¼ãƒ‰ã¯è¨ªå•者ã«ã‚ˆã‚‹ã‚¢ã‚¯ã‚»ã‚¹ã§ã¯ã‚りã¾ã›ã‚“ã®ã§ä»–ã®ãƒãƒ£ãƒ¼ãƒˆã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 message155=クラスター message156=ロボットã«ã‚ˆã‚‹ã‚¢ã‚¯ã‚»ã‚¹ã¯è¨ªå•者ã®é–²è¦§ã¨ã¯é•ã„ã¾ã™ã®ã§ä»–ã®ãƒãƒ£ãƒ¼ãƒˆã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 message157=+ã®å¾Œã®æ•°å­—ã¯ã€Œrobots.txtã€ã®è¡¨ç¤ºãŒæˆåŠŸã—ãŸå›žæ•°ã§ã™ã€‚ message158=ワームã«ã‚ˆã‚‹ã‚¢ã‚¯ã‚»ã‚¹ã¯è¨ªå•者ã®é–²è¦§ã¨ã¯é•ã„ã¾ã™ã®ã§ä»–ã®ãƒãƒ£ãƒ¼ãƒˆã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 message159=閲覧ã«å«ã¾ã‚Œãªã„アクセスã¯ãƒ­ãƒœãƒƒãƒˆã€ãƒ¯ãƒ¼ãƒ ãªã©ã«ã‚ˆã‚‹ã‚‚ã®ã§ã™ã€‚ message160=閲覧アクセス message161=閲覧ã«å«ã¾ã‚Œãªã„アクセス message162=月 message163=ワーム message164=ãã®ä»–ã®ãƒ¯ãƒ¼ãƒ  message165=Mails successfully sent message166=Mails failed/refused message167=Sensitive targetsawstats-7.4/wwwroot/cgi-bin/lang/awstats-tr.txt0000640000175000017500000001215012410217071017507 0ustar sksk# Turkish message file # by giray@pultar.org 2002/08/29 # by Hakan A. 2007/05/18 # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Bilinmeyen message1=Bilinmeyen (çözülemeyen IP) message2=Diðerleri message3=Detaylarý Gör message4=Gün message5=Ay message6=Yýl: message7=Site message8=Ýlk ziyaret message9=Son ziyaret message10=Ziyaretçi sayýsý message11=Ayrý Ziyaretçi message12=Ziyaret message13=Anahtar Sözcük message14=Arama message15=Yüzde message16=Trafik message17=Alan Adlarý/Ülkeler message18=Ziyaretçiler message19=Sayfalar-URL message20=Ziyaret Saatleri (Sunucu saati) message21=Tarayýcýlar message22=HTTP Hatalarý message23=Yönlendirenler message24=Aramada kullanýlan Anahtar Sözcükler message25=Ziyaretçilerin alan adlarý/ülkeleri message26=) bilgisayar message27=) sayfa message28=farklý sayfa message29=Eriþim message30=Diðer kelimeler message31=Bulunamayan Sayfalar message32=HTTP Hata kodlarý message33=Netscape sürümleri message34=IE sürümleri message35=Son Ýstatistik Güncellemesi message36=Siteye baðlantý yapanlar message37=Köken message38=Doðrudan adres / Yer imi message39=Kökeni bilinmeyen message40=Ýnternet arama motorundan baðlantý message41=Dýþ sayfalardan baðlantýlar (arama motorlarý hariç diðer web siteleri) message42=Ýçten sayfalar (ayný sitede bulunan baþka sayfalardan baðlantýlar) message43=) kullanýlan anahtar sözcükler (arama motorlarýnda) message44= message45=Çözülemeyen IP Adresleri message46=Bilinmeyen Ýþletim Sistemi (Yönlendiren alanýnda) message47=Gereken fakat bulunmayan URLler (HTTP kodu 404) message48=IP Adresi message49=Hata Hit sayýsý message50=Bilinmeyen Tarayýcýlar (Yönlendiren alanýnda) message51=Ziyaret eden robot message52=Ziyaret sayýsý/ziyaretçi sayýsý message53=Robot/Örümcek ziyaretleri message54=Geliþmiþ web istatistikleri için özgür, gerçek zamanlý kütük analizi programý message55=( toplam message56=Sayfa message57=Hit message58=Sürümler message59=Ýþletim Sistemleri message60=Oca message61=Þub message62=Mar message63=Nis message64=May message65=Haz message66=Tem message67=Agu message68=Eyl message69=Eki message70=Kas message71=Ara message72=Gezinim message73=Günlük istatistikler message74=Þimdi güncelle message75=Bayt message76=Ana sayfaya dön message77=En sýk kullanýlan message78=dd mmm yyyy - HH:MM message79=Süzgeç message80=Tüm liste message81=Hosts message82=Bilinen message83=Robotlar message84=Pzr message85=Pzt message86=Sal message87=Çar message88=Per message89=Cum message90=Cts message91=Haftanýn günleri message92=Kim message93=Ne zaman message94=Authenticated users message95=En düþük message96=Ortalama message97=En yüksek message98=Web sýkýþtýrmasý message99=kazanýlan bant geniþliði message100=Sýkýþtýrma öncesi message101=Sýkýþtýrma sonrasý message102=Toplam message103=Farklý Anahtar Kelime message104=Giriþ sayfalarý message105=Code message106=Ortalama boyut message107=Haber grubundan baðlantýlar message108=KB message109=MB message110=GB message111=Grabber message112=Evet message113=Hayýr message114=Info. message115=OK message116=Çýkýþ message117=Ziyaret süresi message118=Pencereyi kapat message119=Bytes message120=Arama Kalýplarý message121=Arama Kelimeleri message122=yönlendiren farklý arama motoru message123=yönlendiren farklý site message124=Diðer kalýplar message125=Diðer loginler (ve/veya anonim kullanýcý) message126=Yönlendiren arama motorlarý message127=Yönlendiren siteler message128=Özet message129='Yýl' görünümünde tam deðer yok message130=Data value arrays message131=Gönderen EMail message132=Alan EMail message133=Raporlama dönemi message134=Extra/Marketing message135=Ekran boyutlarý message136=Solucan/Virus saldýrýlarý message137=Favorilere ekle (relative indicator) message138=Ayýn günleri message139=Çeþitli message140=Java destekli tarayýcýlar message141=Macromedia Director destekli tarayýcýlar message142=Flash destekli tarayýcýlar message143=Real audio çalma destekli tarayýcýlar message144=Quicktime ses çalma destekli tarayýcýlar message145=Windows Media ses çalma destekli tarayýcýlar message146=PDF destekli tarayýcýlar message147=SMTP Hata kodlarý message148=Ülkeler message149=Postalar message150=Boyut message151=Ýlk message152=Son message153=Exclude filter message154=Burada görüntülenen kodlar ziyaretçiler tarafýndan görüntülenmeyen hit veya trafik yarattýðýndan diðer grafiklere dahil edilmemiþtir. message155=Cluster message156=Burada görülen robotlar, ziyaretçiler tarafýndan görüntülenmeyen hit veya trafik yarattýðýndan diðer grafiklere dahil edilmemiþtir. message157=+ iþaretinden sonraki numaralar "robots.txt" dosyasýndaki baþarýlý hitlerdir. message158=Burada görülen solucanlar, ziyaretçiler tarafýndan görüntülenmeyen hit veya trafik yarattýðýndan diðer grafiklere dahil edilmemiþtir. message159=Görüntülenmeyen trafik robotlar, solucanlar ve özel HTTP statüsü içeren yanýtlardýr. message160=Görüntülenen trafik message161=Görüntülenmeyen trafik message162=Aylýk geçmiþ message163=Solucanlar message164=farklý solucan message165=Baþarýyla gönderilen postalar message166=Gönderilemeyen/reddedilen postalar message167=Duyarlý hedef message168=Javascript kapalý message169=Hazýrlayan message170=eklentiler message171=Bölgeler message172=Þehirler awstats-7.4/wwwroot/cgi-bin/lang/awstats-si.txt0000640000175000017500000001167712410217071017512 0ustar sksk# Slovenian message file (goran@dodig.org) # $Revision$ - $Date$ PageCode=utf-8 message0=Neznanih message1=Neznanih (nepoznan IP) message2=Drugi message3=Glej detajle message4=Dan message5=Mesec message6=Leto message7=Statistike za message8=Prvi obisk message9=Zadnji obisk message10=Å t. obiskov message11=RazliÄnih obiskovalcev message12=Obisk message13=razliÄnih kljuÄnih besed message14=Iskanje message15=Procentov message16=Promet message17=Domene/Države message18=Obiskovalcev message19=Strani-URL message20=Promet po urah dneva message21=Brskalniki message22= message23=Refererji message24=Nikoli posodobljen (Glej 'Build/Update' na awstats_setup.html strani) message25=Obiskovalcev iz domene/države message26=obiskovalcev message27=strani message28=razliÄnih strani-urljev message29=Obiskane strani message30=Druge besede message31=Strani, ki niso bile najdene message32=HTTP statusne kode message33=Netscape verzije message34=IE verzije message35=Zadnja osvežitev message36=Povezave z drugih strani message37=Izvor message38=Direktni naslovi / zaznambe message39=Neznan izvor message40=Povezave z internet iskalnikov message41=Povezave z zunanjih strani (z drugih internet strani, razen iskalnikov) message42=Povezave z internih strani message43=Iskalne fraze uporabljene na iskalnikih message44=Iskalni termini uporabljeni na iskalnikih message45=Nepoznani IP naslovi message46=Nepoznan OS (polje useragent) message47=URLji, ki niso bili najdeni (HTTP koda 404) message48=IP Naslov message49=Napaka Zadetkov message50=Neznani brskalniki (polje useragent) message51=razliÄni roboti message52=obiskov/obiskovalca message53=Robotov/spiderjev message54=BrezplaÄen realtime logfile analizator za web statistike message55=od message56=strani message57=Zadetkov message58=Po verzijah message59=Operacijski sistemi message60=Jan message61=Feb message62=Mar message63=Apr message64=Maj message65=Jun message66=Jul message67=Avg message68=Sep message69=Okt message70=Nov message71=Dec message72=Navigacija message73=Tip datoteke message74=Osveži zdaj message75=Promet message76=Nazaj na glavno stran message77=Top message78=dd mmm yyyy - HH:MM message79=Filter message80=Cela lista message81=Obiskovalcev message82=Znanih message83=Robotov message84=Ned message85=Pon message86=Tor message87=Sre message88=ÄŒet message89=Pet message90=Sob message91=Promet po dnevih v tednu message92=Kdo message93=ÄŒasovni pregled message94=Prijavljenih uporabnikov message95=Min message96=PovpreÄno message97=Max message98=Web kompresija message99=Prihranjena pasovna Å¡irina message100=Kompresija vklopljena message101=Rezultat kompresije message102=Skupaj message103=razliÄnih fraz message104=Vpis message105=Koda message106=PovpreÄna velikost message107=Povezav iz NewsGroup message108=KB message109=MB message110=GB message111=Grabber message112=Da message113=Ne message114=Info. message115=OK message116=Izhod message117=Trajanje obiskov message118=Zapri okno message119=Bytov message120=Iskalne fraze message121=Iskalne kljuÄne besede message122=razliÄnih iskalnikov message123=razliÄnih internet strani message124=Druge fraze message125=Druge prijave (in/ali anonimni uporabniki) message126=Iskalniki message127=Internet strani message128=Zbirno poroÄilo message129=NatanÄna vrednost v pogledu 'Leto' ni na voljo message130=Polja podatkovnih vrednosti message131=Email poÅ¡iljatelja message132=Email prejemnika message133=Obobje poroÄila message134=Ekstra/Marketing message135=Velikosti ekranov message136=Worm/Virus napadi message137=Dodano med priljubljene (približno) message138=Promet po dnevih v mesecu message139=Razno message140=Brskalniki s podporo Javi message141=Brskalniki s podporo Macromedia Directorju message142=Brskalniki s podporo Flashu message143=Brskalniki s podporo Real audia message144=Brskalniki s podporo Quicktime message145=Brskalniki s podporo Windows Media audia message146=Brskalniki s podporo PDF message147=SMTP Error kode message148=Države message149=SporoÄil message150=Velikost message151=Prvi message152=Zadnji message153=Filter za izloÄanje message154=Tu prikazane kode generirajo promet, ko ga obiskovalci ne vidijo, za to ta promet ni vkljuÄen v drugih pregledih. message155=Cluster message156=Tu prikazani roboti generirajo promet, ki ga obiskovalci ne vidijo, zato ta promet ni vkljuÄen v drugih pregledih. message157=Å tevilke po + so uspeÅ¡ni zadetki "robots.txt" datotek. message158=Tu prikazani wormi generirajo promet, ki ga obiskovalci ne vidijo, zato ta promet ni vkljuÄen v drugih pregledih. message159=Promet brez ogledov predstavlja promet generiran z roboti, wormi, ali odgovori s HTTP statustnimi kodami. message160=Promet z ogledi message161=Promet brez ogledov message162=Promet po mesecih message163=Wormi message164=razliÄnih wormov message165=UspeÅ¡no poslanih sporoÄil message166=NeuspeÅ¡no poslana/zavrnjena sporoÄila message167=ObÄutljive tarÄe message168=Javascript izklopljen message169=Created by message170=plugini message171=ObmoÄja message172=Mestaawstats-7.4/wwwroot/cgi-bin/lang/awstats-he.txt0000640000175000017500000001555012410217071017465 0ustar sksk# Hebrew (Unicode) message file (http://lior.weissbrod.com) # $Revision$ - $Date$ # # Originally: # Hebrew message file (shimi@shimi.net) # $Revision$ - $Date$ PageCode=utf-8 PageDir=rtl message0=×œ× ×™×“×•×¢ message1=×œ× ×™×“×•×¢×™× (IP ×œ× ×ž×¤×•×¢× ×—) message2=××—×¨×™× message3=הצג ×¤×¨×˜×™× message4=×™×•× message5=חודש message6=שנה message7=סטטיסטיקה message8=ביקור ר×שון message9=ביקור ×חרון message10=מספר ×”×‘×™×§×•×¨×™× message11=×ž×‘×§×¨×™× ×™×™×—×•×“×™×™× (Unique) message12=ביקור message13=מילות מפתח שונות message14=חפש message15=××—×•×–×™× message16=תנועה message17=דומייני×/מדינות message18=×ž×‘×§×¨×™× message19=כתובות-×“×¤×™× message20=שעות message21=×“×¤×“×¤× ×™× message22= message23=×ž×¤× ×™× (Referers) message24=×ž×¢×•×œ× ×œ× ×¢×•×“×›×Ÿ message25=דומייני×/מדינות ×”×ž×‘×§×¨×™× message26=מ××¨×—×™× (hosts) message27=×“×¤×™× message28=דפי כתובת ×©×•× ×™× message29=נצפו message30=×ž×™×œ×™× ×חרות message31=×“×¤×™× ×©×œ× × ×ž×¦×ו message32=קודי סטטוס HTTP message33=גירס×ות נטסקייפ message34=גירס×ות ×קספלורר message35=עדכון ×חרון message36=התחברות ל×תר דרך message37=מקור message38=גישה ישירה / בוקמרק / קישור בתוך ×ימייל message39=מקור ×œ× ×™×“×•×¢ message40=×§×™×©×•×¨×™× ×ž×ž× ×•×¢ חיפוש message41=×§×™×©×•×¨×™× ×ž×“×¤×™× ×—×™×¦×•× ×™×™× (××ª×¨×™× ××—×¨×™× - למעט מנועי חיפוש) message42=×§×™×©×•×¨×™× ×ž×“×¤×™× ×¤× ×™×ž×™×™× (×“×¤×™× ××—×¨×™× ×‘×תר) message43=×‘×™×˜×•×™×™× ×©×”×©×ª×ž×©×• ×‘×”× ×‘×ž× ×•×¢×™ חיפוש message44=מילות מפתח שהשתמשו ×‘×”× ×‘×ž× ×•×¢×™ חיפוש message45=כתובת IP ×œ× ×ž×¤×•×¢× ×—×ª message46=מערכת הפעלה ×œ× ×™×“×•×¢×” (בשדה UserAgent) message47=Required but not found URLs (HTTP code 404) message48=כתובת IP message49=היטי ×©×’×™××” message50=×“×¤×“×¤× ×™× ×œ× ×™×“×•×¢×™× (בשדה UserAgent) message51=×¨×•×‘×•×˜×™× ×©×•× ×™× message52=ביקורי×/מבקר message53=ביקורי רובוטי×/×¡×¤×™×™×“×¨×™× message54=מנתח זמן-×מת של קבצי לוג עבור סטטיסטיקות גלישה מתקדמות message55=of message56=×“×¤×™× message57=×”×™×˜×™× message58=גירס×ות message59=מערכות הפעלה message60=ינו×ר message61=פברו×ר message62=מרץ message63=×פריל message64=מ××™ message65=יוני message66=יולי message67=×וגוסט message68=ספטמבר message69=×וקטובר message70=נובמבר message71=דצמבר message72=גלישה message73=סוגי ×”×§×‘×¦×™× message74=עדכן עכשיו message75=רוחב פס message76=חזרה לדף הר×שי message77=טופ message78=dd mmm yyyy - HH:MM message79=פילטר message80=רשימה מל××” message81=מ××¨×—×™× message82=×™×“×•×¢×™× message83=×¨×•×‘×•×˜×™× message84=ר×שון message85=שני message86=שלישי message87=רביעי message88=חמישי message89=שישי message90=שבת message91=ימי השבוע message92=מי message93=מתי message94=×ž×©×ª×ž×©×™× ×ž×–×•×”×™× message95=×ž×™× ×™×ž×•× message96=ממוצע message97=×ž×§×¡×™×ž×•× message98=דחיסת Web message99=רוחב פס נחסך message100=דחיסה פעילה message101=תוצ×ת הדחיסה message102=סך הכל message103=ביטויי מפתח ×©×•× ×™× message104=דף כניסה message105=קוד message106=גודל ממוצע message107=×§×™×©×•×¨×™× ×ž× ×™×•×–×’×¨×•×¤×¡ message108=קילובייט message109=מגהבייט message110=גיגהבייט message111=חוטף message112=כן message113=×œ× message114=מידע message115=OK message116=דף יצי××” message117=תקופת ×‘×™×§×•×¨×™× message118=סגור חלון message119=×‘×ª×™× message120=ביטויי ×ž×¤×ª×— ×‘×—×™×¤×•×©×™× message121=מילות ×ž×¤×ª×— ×‘×—×™×¤×•×©×™× message122=הפניות ממנועי חיפוש ×©×•× ×™× message123=הפניות מ××ª×¨×™× ×©×•× ×™× message124=×‘×™×˜×•×™×™× ××—×¨×™× message125=כניסות ×חרות (ו/×ו ×ž×©×ª×ž×©×™× ×נונימיי×) message126=הפניות מנועי חיפוש message127=הפניות מ××ª×¨×™× ××—×¨×™× message128=×¡×™×›×•× message129=ערך מדוייק ×œ× ×ž×•×¤×™×¢ בתצוגת 'שנה' message130=Data value arrays message131=כתובת ×”××™-מייל של השולח message132=כתובת ×”××™-מייל של המקבל message133=תקופה מדווחת message134=נוסף/שיווק message135=גדלי מסך message136=התקפות וירוסי×/×ª×•×œ×¢×™× message137=טעינות מוצלחות של הקובץ favicon.ico message138=ימי החודש message139=שונות message140=×“×¤×“×¤× ×™× ×¢× ×ª×ž×™×›×” ב Java message141=×“×¤×“×¤× ×™× ×¢× ×ª×ž×™×›×” ב Macromedia Director message142=×“×¤×“×¤× ×™× ×¢× ×ª×ž×™×›×” בפל×ש message143=×“×¤×“×¤× ×™× ×¢× ×ª×ž×™×›×” ב Real audio message144=×“×¤×“×¤× ×™× ×¢× ×ª×ž×™×›×” ב Quicktime audio message145=×“×¤×“×¤× ×™× ×¢× ×ª×ž×™×›×” ב Windows Media audio message146=×“×¤×“×¤× ×™× ×¢× ×ª×ž×™×›×” ב PDF message147=קודי שגי×ות SMTP message148=מדינות message149=××™-×ž×™×™×œ×™× message150=גודל message151=ר×שון message152=×חרון message153=פילטר נפוי message154=×§×•×“×™× ×”×ž×•×¤×™×¢×™× ×›×ן נתנו ×”×™×˜×™× ×ו תעבורה "×©×œ× × ×¨×תה" על ידי מבקרי×, ולכן ×”× ×ž×•×¤×¨×“×™× ×‘×˜×‘×œ×” זו.

  • הדו"×— ×ª×•×¨×’× ×¢"×™ LWC. message155=Cluster message156=×¨×•×‘×•×˜×™× ×”×ž×•×¦×’×™× ×›×ן נתנו ×”×™×˜×™× ×ו תעבורה ש"×œ× × ×¦×¤×ª×”" על ידי ×’×•×œ×©×™× ×מיתיי×, כך ×©×”× ×œ× ×ž×—×•×©×‘×™× ×‘×¨×™×©×•×ž×™× ×”××—×¨×™× message157=- ×”×ž×¡×¤×¨×™× ×œ×¤× ×™ הפלוס ×”× ×”×™×˜×™× ×ž×•×¦×œ×—×™× ×œ×§×‘×¦×™× ×‘-"robots.txt". message158=×”×ª×•×œ×¢×™× ×©× ×¨×ות ×›×ן נתנו ×”×™×˜×™× ×ו תנועה "×œ× × ×¨××™×" למבקרי×, ולכן ×”× ×œ× × ×›×œ×œ×• בטבל×ות ×חרות. message159=תנועה בלתי נר×ית כוללת תנועה שיוצרת ×¢"×™ רובוטי×, ×ª×•×œ×¢×™× ×ו תשובות ×¢× ×§×•×“×™ סטטוס ×ž×™×•×—×“×™× ×©×œ HTML. message160=תנועה נר×ית message161=תנועה בלתי נר×ית message162=היסטוריה חודשית message163=×ª×•×œ×¢×™× message164=×ª×•×œ×¢×™× ×חרות message165=דו×ר שנשלח בהצלחה message166=דו×ר שנדחה/סורב message167=מטרות רגישות message168=Javascript נוטרל message169= × ×•צר ×¢"×™ message170=plugins message171=××™×–×•×¨×™× message172=×¢×¨×™× message173=גרס×ות Opera message174=גרס×ות Safari message175=גרס×ות Chrome message176=גרס×ות Konqueror message177=, message178=הורדותawstats-7.4/wwwroot/cgi-bin/lang/awstats-ua.txt0000640000175000017500000001017212410217071017471 0ustar sksk# Ukrainian message file (roman@elsyst.km.ua) # $Revision$ - $Date$ PageCode=windows-1251 message0=Íåâiäîìèé message1=Íåâiäîìèõ (íå âäàëîñü ïåðåòâîðèòè IP) message2=Iíøi message3=Äåòàëüíiøå... message4=Äåíü message5=Ìiñÿöü message6=Ðiê message7=Ñòàòèñòèêà ñàéòó message8=Ïåðøèé âiçèò message9=Îñòàííié âiçèò message10=Êiëüêiñòü âiçèòiâ message11=Óíiêàëüíèõ âiäâiäóâà÷iâ message12=Âiçèò message13=ðiçíèõ êëþ÷îâèõ ñëiâ message14=Ïîøóê message15=Âiäñîòîê message16=Ñóìàðíèé òðàôiê message17=Äîìåíè/êðà¿íè message18=Âiäâiäóâà÷i message19=Ñòîðiíêè-URLè message20=Ãîäèíè äîáè message21=Ïðîãðàìè ïåðåãëÿäó message22=Ïîìèëêè HTTP message23=Ïîñèëà÷i message24=Íå îíîâëþâàëîñü message25=Äîìåíè/êðà¿íè âiäâiäóâà÷iâ message26=õîñòiâ message27=ñòîðiíîê message28=ðiçíèõ ñòîðiíîê-URLiâ message29=Ïåðåãëÿíóòî message30=Iíøi ñëîâà message31=Íå çíàéäåíi ñòîðiíêè message32=Êîäè ïîìèëîê HTTP message33=Âåðñi¿ Netscape message34=Âåðñi¿ IE message35=Îñòàííº îíîâëåííÿ message36=Øëÿõè, ÿêèìè âiäâiäóâà÷i ïîòðàïëÿëè íà ñàéò message37=Ïîõîäæåííÿ message38=Ïðÿìèé äîñòóï / Çàêëàäêè message39=Äæåðåëî ïîñèëàíü íå âñòàíîâëåíî message40=Ïîñèëàííÿ ç ïîøóêîâèõ ìàøèí message41=Ïîñèëàííÿ ç çîâíiøíiõ ñòîðiíîê (ç iíøèõ ñàéòiâ çà âèíÿòêîì ïîøóêîâèõ ìàøèí) message42=Ïîñèëàííÿ ç âíóòðiøíiõ ñòîðiíîê (iíøèõ ñòîðiíîê íà öüîìó æ ñàéòi) message43=Êëþ÷îâi ôðàçè, çà ÿêèìè çäiéñíþâàâñÿ ïîøóê íà ïîøóêîâié ìàøèíi message44=Êëþ÷îâi ñëîâà, çà ÿêèìè çäiéñíþâàâñÿ ïîøóê íà ïîøóêîâié ìàøèíi message45=IP-àäðåñè, ÿêi íå âäàëîñü ïåðåòâîðèòè â iìåíà message46=Íåâiäîìà ÎÑ message47=Çàïèòàíi, àëå íåçíàéäåíi URL-è (HTTP êîä 404) message48=IP-àäðåñà message49=Ïîìèëêà Ïîïàäàííÿ message50=Íåâiäîìi ïåðåãëÿäà÷i message51=ðiçíèõ ðîáîòiâ message52=Âiçèò/âiäâiäóâà÷ message53=Ðîáîòè àáî ïàâóêè-âiäâiäóâà÷i message54=Áåçêîøòîâíèé àíàëiçàòîð ïðîòîêîëiâ äëÿ ðîçâèíóòî¿ ñòàòèñòèêè ñàéòiâ message55=ç message56=Ñòîðiíîê message57=Ïîïàäàíü message58=Âåðñi¿ message59=Îïåðàöiéíi ñèñòåìè message60=Ñi÷ message61=Ëþò message62=Áåð message63=Êâi message64=Òðà message65=×åð message66=Ëèï message67=Ñåð message68=Âåð message69=Æîâ message70=Ëèñ message71=Ãðó message72=Íàâiãàöiÿ message73=Òèïè ôàéëiâ message74=Îíîâèòè message75=Ðîçìið message76=Íàçàä äî ãîëîâíî¿ ñòîðiíêè message77=Íàéóæèâàíiøi message78=dd mmm yyyy - HH:MM message79=Ôiëüòð message80=Âåñü ñïèñîê message81=Õîñòè message82=Âiäîìèõ message83=Ðîáîòè message84=Íä message85=Ïí message86=Ââ message87=Ñð message88=×ò message89=Ïò message90=Ñá message91=Äíi òèæíÿ message92=Õòî message93=Êîëè message94=Àâòîðèçîâàíi êîðèñòóâà÷i message95=Ìií. message96= ñåðåäíüîìó message97=Ìàêñ. message98=Ñòèñíåííÿ message99=Åêîíîìiÿ message100=Ñòèñêàëîñü message101=Ðåçóëüòàò ñòèñíåííÿ message102=Çàãàëîì message103=ðiçíèõ ôðàç message104=Âõiä message105=Êîä message106=Ñåðåäíié ðîçìið message107=Ïîñèëàííÿ ç ãðóï íîâèí message108=êÁ message109=ÌÁ message110=ÃÁ message111=Õàïóãà message112=Òàê message113=Íi message114=Iíôîðìàöiÿ ç áàçè WhoIs message115=OK message116=Âèõiä message117=Òðèâàëiñòü âiçèòiâ message118=Çà÷èíèòè âiêíî message119=áàéòiâ message120=Ïîøóê: Êëþ÷îâi ôðàçè message121=Ïîøóê: Êëþ÷îâi ñëîâà message122=ðiçíèõ ïîøóêîâèõ ìàøèí-ïîñèëà÷iâ message123=ðiçíèõ ñàéòiâ-ïîñèëà÷iâ message124=Iíøi ôðàçè message125=Iíøi iìåíà êîðèñòóâà÷iâ (i/àáî àíîíiìíi êîðèñòóâà÷i) message126=Ïîøóêîâi ìàøèíè-ïîñèëà÷iâ message127=Ñàéòè-ïîñèëà÷i message128=Ïiäñóìîê message129=Òî÷íå çíà÷åííÿ íåäîñòóïíå â ði÷íié ñòàòèñòèöi message130=Ìàñèâè çíà÷åíü äàíèõ message131=Åëåêòðîííà àäðåñà âiäïðàâíèêà message132=Åëåêòðîííà àäðåñà îòðèìóâà÷à message133=Çâiòíèé ïåðiîä message134=Äîäàòêîâî/Ìàðêåòèíã message135=Ðåæèìè åêðàíó message136=Àòàêè âiðóñiâ/÷åðâ'ÿêiâ message137=Äîäàííÿ äî 'Âèáðàíîãî' message138=Äíi ìiñÿöÿ message139=Ðiçíå message140=Áðîóçåðè ç ïiäòðèìêîþ Java message141=Áðîóçåðè ç ïiäòðèìêîþ Macromedia Director message142=Áðîóçåðè ç ïiäòðèìêîþ Flash message143=Áðîóçåðè ç ïiäòðèìêîþ ïðîãðàâàííÿ Real audio message144=Áðîóçåðè ç ïiäòðèìêîþ ïðîãðàâàííÿ Quicktime audio message145=Áðîóçåðè ç ïiäòðèìêîþ ïðîãðàâàííÿ Windows Media audio message146=Áðîóçåðè ç ïiäòðèìêîþ PDF message147=Êîäè ïîìèëîê SMTP message148=Êðà¿íè message149=Ëèñòè message150=Ðîçìið message151=Ïåðøèé message152=Îñòàííié message153=Ôiëüòð âèêëþ÷åííÿawstats-7.4/wwwroot/cgi-bin/lang/awstats-ro.txt0000640000175000017500000000537612410217071017516 0ustar sksk# Romanian message file (Codre Adrian - Florin Radulescu ) # $Revision$ - $Date$ PageCode=iso-8859-2 message0=Necunoscute message1=Necunoscute (adresã ip nerezolvatã) message2=Alte message3=Detalii message4=Ziua message5=Luna message6=Anul message7=Statistici pentru: message8=Prima vizitã message9=Ultima vizitã message10=Numãrul de vizite message11=Vizitatori unici message12=Vizitã message13=Cuvânt cheie message14=Cãutare message15=Procent message16=Trafic message17=Domenii/þãri message18=Vizitatori message19=Pagini-URL message20=Ore (Timp server) message21=Browsere message22=Erori HTTP message23=Referiri message24=Cãutare Cuvinte cheie message25=Domenii vizitatori/þãri message26=gazde message27=pagini message28=pagini diferite message29=Contor vizualizãri message30=Alte cuvinte message31=Pagini negãsite message32=Coduri de eroare HTTP message33=Versiuni Netscape message34=Versiuni IE message35=Ultima actualizare message36=Conectare de la message37=Origine message38=Adresã directã / Semn de carte message39=Origine necunoscutã message40=Legãturã de la un motor de cãutare message41=Legaturã de la o paginã externã (alt site cu excepþia motoarelor de cãutare) message42=Legãturã de la o paginã internã (altã paginã de pe acelaºi site) message43=Cuvinte cãutate cu motoare de cãutare message44= message45=IP nerezolvat message46=Sistem de operare necunoscut message47=Pagini cerute dar negãsite (cod eroare HTTP numãrul 404) message48=Adresã IP message49=Eroare Accesãri message50=Browsere necunoscute message51=Roboþi message52=vizite/vizitatori message53=Roboþi/Motoare de cãutare message54=Analizator de trafic în timp real pentru statistici web avansate message55=din message56=Pagini message57=Accesãri message58=Versiuni message59=Sisteme de operare message60=Ian message61=Feb message62=Mar message63=Apr message64=Mai message65=Iun message66=Iul message67=Aug message68=Sep message69=Oct message70=Nov message71=Dec message72=Navigare message73=Statistici zilnice message74=Actualizeazã acum message75=Octeþi message76=Înapoi la pagina principalã message77=Primele message78=dd mm yyyy - HH:MM message79=Filtru message80=Toatã lista message81=Gazde message82=Cunoscute message83=Roboþi message84=Dum message85=Lun message86=Mar message87=Mie message88=Joi message89=Vin message90=Sam message91=Zilele sãptãmânii message92=Cine message93=Când message94=Utilizatori autentificati message95=Min message96=Medie message97=Max message98=Compresie web message99=Bandã economisitã message100=Inainte de compresie message101=Dupa compresie message102=Total message103=fraze cheie diferite message104=Paginã de intrare message105=Cod message106=Trafic mediu message107=Legaturi de la un grup de News message108=KB message109=MB message110=GBawstats-7.4/wwwroot/cgi-bin/lang/awstats-ar.txt0000640000175000017500000001011412410217071017462 0ustar sksk# Arabic message file (SanDan u2canbe@hotmail.com) # $Revision$ - $Date$ PageCode=windows-1256 PageDir=rtl message0=ãÌåæá message1=ãÌåæá (ÚäæÇä IP ÛíÑ ãÚÑæÝ) message2=ÃÎÑì message3=ãÔÇåÏÉ ÇáÊÝÇÕíá message4=íæã message5=ÔåÑ message6=ÓäÉ message7=ÇÍÕÇÆÇÊ á message8=Ãæá ÒíÇÑÉ message9=ÂÎÑ ÒíÇÑÉ message10=ÚÏÏ ÇáÒíÇÑÇÊ message11=ÇáÒæÇÑ message12=ÒíÇÑÉ message13=ßáãÇÊ ÈÍË ãÎÊáÝÉ message14=ÈÍË message15=ÇáäÓÈÉ message16=ÍÑßÉ message17=ÇáÏæãíä\ÇáÏæá message18=ÇáÒæÇÑ message19=æÕáÇÊ ÇáÕÝÍÇÊ message20=ÇáÓÇÚÇÊ message21=ÈÑÇãÌ ÇáÊÕÝÍ message22= message23=ÇáãÍæáæä message24=áã íÊã ÇáÊÍÏíË (See 'Build/Update' on awstats_setup.html page) message25=ÇáÒæÇÑ ÇáÏæãíä\ÇáÏæá message26=ÇáåæÓÊ message27=ÕÝÍÇÊ message28=æÕáÇÊ ÕÝÍÇÊ ãÎÊáÝÉ message29=ÔæåÏÊ message30=ßáãÇÊ ÃÎÑì message31=ÕÝÍÇÊ ÛíÑ ãæÌæÏÉ message32=ÑãÒ ÍÇáÉ HTTP message33=ÇÕÏÇÑ äÊÓßíÈ message34=ÇÕÏÇÑ ÇßÓÈáæÑÑ message35=ÂÎÑ ÊÍÏíË message36=ÇÊÕá ÈÇáãæÞÚ Úä ØÑíÞ message37=ÇáãÕÏÑ message38=Úäæä ãÈÇÔÑ \ æÕáÉ ãÝÖáÇÊ message39=ãÕÏÑ ãÌåæá message40=æÕáÇÊ ãä ãÍÑßÇÊ ÈÍË message41=æÕáÇÊ ãä ÕÝÍÇÊ ÎÇÑÌíÉ (Óæì ãÍÑßÇÊ ÇáÈÍË) message42=æÕáÇÊ ãä ÕÝÍÇÊ ÏÇÎáíÉ (ÕÝÍÇÊ ãä ÏÇÎá ÇáãæÞÚ) message43=Ìãá ÇáÈÍË ÇáãÓÊÎÏãÉ Ýí ãÍÑßÇÊ ÇáÈÍË message44=ßáãÇÊ ÇáÈÍË ÇáãÓÊÎÏãÉ Ýí ãÍÑßÇÊ ÇáÈÍË message45=ÚäÇæíä IP áã íÊã ãÚÑÝÊåÇ message46=äÙÇã ÊÔÛíá ãÌåæá message47=æÕáÇÊ ãØáæÈÉ áßä ÛíÑ ãÊæÝÑÉ (ÑãÒ HTTP 404 ) message48=ÚäæÇä IP message49=ÎØÇÁ ØáÈ message50=ãÊÕÝÍ ãÌåæá message51=ÑæÈæÊ ãÎÊáÝ message52=ÒíÇÑÇÊ\ÒæÇÑ message53=ÇáÒæÇÑ ÑæÈæÊ\ÓÈÇíÏÑ message54=ãÍáá ãÌÇäí æÝæÑí áÇÍÕÇÆÇÊ ãÊØæÑÉ message55=ãä message56=ÕÝÍÇÊ message57=ØáÈÇÊ message58=ÇÕÏÇÑÇÊ message59=ÇäÙãÉ ÇáÊÔÛíá message60=íÇäÇíÑ message61=ÝÈÑÇíÑ message62=ãÇÑÓ message63=ÇÈÑíá message64=ãÇíæ message65=íæäíæ message66=íæáíæ message67=ÇÛÓØÓ message68=ÓÈÊãÈÑ message69=ÇßÊæÈÑ message70=äæÝãÈÑ message71=ÏíÓãÈÑ message72=ÇáÊÕÝÍ message73=äæÚ ÇáãáÝ message74=ÍÏË ÇáÂä message75=ÇáÓÚÉ message76=ÇáÚæÏÉ ááÕÝÍÉ ÇáÑÇÆíÓíÉ message77=ÃÚáì message78=dd mmm yyyy - HH:MM message79=ãÑÔÍ message80=ßÇãá ÇáÞÇÆãÉ message81=ÇáåæÓÊ message82=ãÚÑæÝ message83=ÑæÈæÊ message84=ÇáÃÍÏ message85=ÇáÃËäíä message86=ÇáËáÇËÇÁ message87=ÇáÃÑÈÚÇÁ message88=ÇáÎãíÓ message89=ÇáÌãÚÉ message90=ÇáÓÈÊ message91=ÃíÇã ÇáÃÓÈæÚ message92=ãä message93=ãÊì message94=ÇáãÓÊÎÏãíä ÇáãÚÑÝæä message95=ÃÞá message96=ãÚÏá message97=ÃßËÑ message98=ÇÎÊÒÇá ÇáÔÈßÉ message99=ÇáÓÚÉ ÇáãæÝÑÉ message100=ÇáÇÎÊÒÇá ãÝÚá message101=äÊÇÆÌ ÇáÇÎÊÒÇá message102=ÇÌãÇáí message103=Ìãá ÈÍË ãÎÊáÝÉ message104=ÏÎæá message105=ÑãÒ message106=ãÚÏá ÇáÍÌã message107=æÕáÇÊ ãä ãÌãæÚÇÊ ÇÎÈÇÑíÉ message108=ß.È message109=ã.È message110=Þ.È message111=ãÎÒä message112=äÚã message113=áÇ message114=ãÚáæãÉ message115=ãæÇÝÞ message116=ÎÑæÌ message117=ãÏÉ ÇáÒíÇÑÇÊ message118=ÃÛáÞ ÇáäÇÝÐÉ message119=ÈÇíÊ message120=ÈÍË ÌãáÉ ÈÍË message121=ÈÍË ßáãÉ ÈÍË message122=ãÍÑßÇÊ ÈÍË ãÍæáÉ ãÎÊáÝÉ message123=ãæÇÞÚ ãÍæáÉ ãÎÊáÝÉ message124=Ìãá ÃÎÑì message125=ÍÇáÇÊ ÊÓÌíá ÏÎæá ÃÎÑì message126=ãÍÑßÇÊ ÈÍË ãÍæáÉ message127=ãæÇÞÚ ãÍæáÉ message128=ÇáÎáÇÕÉ message129=ÇáÞíãÉ ÇáÝÚáíÉ ÛíÑ ãÊæÝÑÉ Ýí ÚÑÖ ÇáÓäÉ message130=ãÕÝæÝÇÊ Þíã ÇáÊÇÑíÎ message131=ÈÑíÏ ÇáãÑÓá message132=ÈÑíÏ ÇáãÓÊÞÈá message133=ÇáãÏÉ ÇáãÐßæÑÉ message134=ÇßËÑ\ÊÓæíÞ message135=ÍÌã ÇáÔÇÔÉ message136=åÌæã ãä ÝíÑæÓ\ææÑã message137=ÇÖÇÝÉ Çáì ÇáãÝÖáÉ (ÊÞÑíÈí) message138=ÇíÇã ÇáÔåÑ message139=ÛíÑ ãÕäÝÉ message140=ãÊÕÝÍ ÈÏÚã ÇáÌÇÝÇ message141=ãÊÕÝÍ ÈÏÚã ÇáãÇíßÑæãíÏíÇ ÏÇíÑßÊÑ message142=ãÊÕÝÍ ÈÏÚã ÇáÝáÇÔ message143=ãÊÕÝÍ ÈÏÚã ÇáÑíá ÈáÇíÑ message144=ãÊÕÝÍ ÈÏÚã Çá ßæíß ÊÇíã message145=ãÊÕÝÍ ÈÏÚã Çá ãíÏíÇ ÈáÇíÑ message146=ãÊÕÝÍ ÈÏÚã Çá PDF message147=ÑãæÒ ÃÎØÇÁ Çá SMTP message148=Ïæá message149=ÈÑíÏ message150=ÍÌã message151=Ãæá message152=ÂÎÑ message153=ãÑÔÍ ÇáÊÞÕíÉ message154=ÇáÑãæÒ ÇáæÇÑÏ ÐßÑåÇ åäÇ ÇÚØÊ ÑÏæÏ HTTP ÛíÑ ãÑÆíÉ ãä ÞÈá ÇáÒÇÆÑ message155=ãÌãæÚÉ message156=ÇáÑæÈæÊÇÊ ÇáæÇÑÏ ÐßÑåÇ åäÇ ÇÚØÊ ÑÏæÏ ÛíÑ ãÑÆíÉ ãä ÞÈá ÇáÒÇÆÑ message157=ÇáÃÑÞÇã ÈÚÏ + åí ØáÈÇÊ ãæÝÞÉ áãáÝ 'robots.txt' message158=ÝíÑæÓÇÊ ÇáÏæÏ ÇáæÇÑÏ ÐßÑåÇ åäÇ ÇÚØÊ ÑÏæÏ ÛíÑ ãÑÆíÉ ãä ÞÈá ÇáÒÇÆÑ message159=ÇáÍÑßÉ ÛíÑ ÇáãÔÇåÏÉ åí ÇáÊí ÇÍÏËÊåÇ ÇáÑæÈæÊÇÊ Çæ ÝíÑæÓÇÊ ÇáÏæÏ Çæ ÑãæÒ ÍÇáÉ Çá HTTP message160=ÇáÍÑßÉ ÇáãÔÇåÏÉ message161=ÇáÍÑßÉ ÛíÑ ÇáãÔÇåÏÉ message162=ÇáÇÌãÇáí ÇáÔåÑí message163=ÝíÑæÓÇÊ ÇáÏæÏ message164=ÝíÑæÓÇÊ ÏæÏ ãÎÊáÝÉ awstats-7.4/wwwroot/cgi-bin/lang/awstats-hr.txt0000640000175000017500000001176712410217071017510 0ustar sksk# Croatian message file (coolbiza@yahoo.com) # $Revision$ - $Date$ PageCode=iso-8859-2 message0=Nepoznat message1=nepoznatih (IP adresa nije razrije¹ena) message2=Ostalo message3=Vidi detalje message4=Dan message5=Mjesec message6=Godina message7=Statistika za message8=Prvi posjet message9=Zadnji posjet message10=Broj posjeta message11=Jedinstvenih posjetitelja message12=Posjet message13=Kljuèna rijeè message14=Potraga message15=Postotak message16=Promet message17=Domene/Zemlje message18=Posjetitelji message19=Stranice-URL message20=Sati (Serversko vrijeme) message21=Browseri (preglednici) message22=HTTP Gre¹ke message23=Refereri (linkovi) message24=Nikad nije osvje¾eno (Pogledaj 'Build/Update' na awstats_setup.html stranici) message25=Domene/zemlje posjetitelja message26=raèunala message27=stranica message28=razlièite stranice-url message29=Viðeno message30=Ostale rijeèi message31=Nepronaðene stranice message32=HTTP Kodovi gre¹ke message33=Verzije Netscape-a message34=Verzije IE-a message35=Posljednje osvje¾avanje message36=Link na sajt sa: message37=Odakle je korisnik do¹ao message38=Direktan pristup / Bookmarks message39=Nepoznato porijeklo message40=Posjeta sa Internet pretra¾ivaèa message41=Posjeta sa druge stranice (drugi web sajtovi osim pretra¾ivaèa) message42=Posjeta sa vlastite stranice (druga stranica unutar istog sajta) message43=Fraze kori¹tene na pretra¾ivaèima message44=Rijeèi kori¹tene na pretra¾ivaèima message45=Nerazrije¹ena IP Adresa message46=Nepoznat OS (useragent field) message47=Zahtjevan URL koji nije pronaðen (HTTP kod 404) message48=IP Adresa message49=Gre¹ke Pogodci message50=Nepoznat preglednik (useragent field) message51=Roboti posjetitelji message52=posjeta/posjetitelju message53=Posjetitelji roboti/spideri message54=Besplatan analizator logova za napredne web statistike message55=od message56=Stranica message57=Pogodaka message58=Verzije message59=Operativni susutav message60=Sij message61=Velj message62=O¾u message63=Tra message64=Svi message65=Lip message66=Srp message67=Kol message68=Ruj message69=Lis message70=Stu message71=Pro message72=Navigacija message73=Tip datoteka message74=Osvje¾i sada! message75=Bajta message76=Nazad na glavnu stranicu message77=Prvih message78=dd mmm yyyy - HH:MM message79=Filter message80=Puna lista message81=Raèunala message82=Poznatih message83=Roboti message84=Ned message85=Pon message86=Uto message87=Sri message88=Èet message89=Pet message90=Sub message91=Dani tjedna message92=Tko message93=Kada message94=Prijavljenih korisnika message95=Min message96=Prosjeèno message97=Max message98=Web sa¾imanje message99=Saèuvani promet message100=Before compression message101=After compression message102=Ukupno message103=razlièitih kluènih fraza message104=Ulaz message105=Kod message106=Prosjeèna velièina message107=Dolazaka sa NewsGroupa message108=KB message109=MB message110=GB message111=Grabber message112=Da message113=Ne message114=Info. message115=OK message116=Izlaz message117=Trajanje posjeta message118=Zatvori prozor message119=Bajta message120=Tra¾ene Fraze message121=Tra¾ene Rijeèi message122=razlièitih tra¾ilica message123=razlièitih sajtova message124=Ostale fraze message125=Ostali posjeti (i/il anonimni korisnici) message126=Sa kojih tra¾ilica message127=Sa kojih stranica message128=Sa¾etak message129=Toèan broj nije dostupan u godi¹njen pregledu message130=Data value arrays message131=EMail po¹iljaoca message132=EMail primatelja message133=Period izvje¹taja message134=Extra/Marketing message135=Velièine ekrana message136=Worm/Virus napadi message137=Stavljeno u favorite (procjenjeno) message138=Dani u mjesecu message139=Razno message140=Preglednici sa podr¹kom za javu message141=Preglednici sa podr¹kom za Macromedia Directora message142=Preglednici sa podr¹kom za Flash message143=Preglednici sa podr¹kom za sviranje Real audia message144=Preglednici sa podr¹kom za sviranje Quicktime audia message145=Preglednici sa podr¹kom za sviranje Windows Media audia message146=Preglednici sa podr¹kom za PDF message147=SMTP kodovi gre¹ka message148=Dr¾ave message149=Mails message150=Velièina message151=Prvi message152=Posljednji message153=Exclude filter message154=Ovdje prikazani podaci svrstani su pod "neviðeno" od ¾ivih korisnika, tako da nisu ukljuèeni u ostale rezultate. message155=Cluster message156=Promet ovdje prikazanih robota svrstan je pod "neviðeno" od ¾ivih korisnika, tako da ti podaci nisu ukljuèeni u ostale rezultate. message157=Broj nakon + je broj uspje¹nih pogodaka na "robots.txt" datoteku. message158=Promet ovdje prikazanih crva svrstan je pod "neviðeno" od ¾ivih korisnika, tako da ti podaci nisu ukljuèeni u ostale rezultate. message159=Neviðen promet ukljuèuje promet stvoren robotima, crvima, ili kao odgovor specijalnim HTTP status kodovima. message160=Viðen promet message161=Neviðen promet message162=Mjeseèni promet message163=Crv message164=Razlièitih crva message165=Uspje¹no poslanih mailova message166=Mails failed/refused message167=Sensitive targets message168=Onemoguèen Javascript message169=Napravio message170=plugins awstats-7.4/wwwroot/cgi-bin/lang/awstats-hu.txt0000640000175000017500000001204712410217071017503 0ustar sksk# Hungarian message file (gabor.funk@hunetkft.hu) # based on $Revision$ - $Date$ PageCode=iso-8859-2 message0=Ismeretlen message1=Ismeretlen (feloldatlan ip) message2=Egyebek message3=Részletek message4=Nap message5=Hónap message6=Év message7=Statisztikai alap message8=Elsõ látogatás message9=Utolsó látogatás message10=Látogatások száma message11=Egyedi látogató message12=Látogatás message13=Különbözõ kulcsszó message14=Keresés message15=Százalék message16=Forgalom message17=Tartományok-Országok message18=Látogatók message19=Oldalak/URL message20=Óránkénti bontás message21=Böngészõk message22= message23=Hivatkozások message24=Nem frissített (Lásd 'Build/Update' fejezet az awstats_setup.html oldalon) message25=Látogatók tartományok/országok szerint message26=host message27=oldal message28=különbözõ oldalak-url message29=letöltött oldalak message30=Egyéb szavak message31=Nem talált oldalak message32=HTTP státuszkódok message33=Netscape verziók message34=IE verziók message35=Utolsó frissítés message36=Csatlakozások származási helyei message37=Származási hely message38=Direkt elérés / könyvjelzõ message39=Ismeretlen eredetû message40=Internet keresõkbõl message41=Linkek külsõ oldalakról (a keresõket kivéve) message42=Belsõ linkek (oldalon belül) message43=Keresõmotorokban használt kifejezések message44=Keresõmotorokban használt kulcsszavak message45=Feloldatlan IP címek message46=Ismeretlen OS (Hivatkozó mezõ) message47=Igényelt, de nem talált URL-ek (HTTP code 404) message48=IP cím message49=Hibás kérések message50=Ismeretlen böngészõk (Hivatkozó mezõ) message51=Látogató robot message52=látogatás/látogató message53=Robot/Spider látogatók message54=Ingyenes, valósidejû naplófájl analizátor fejlett web statisztikák készítéséhez message55=/ message56=Oldalak message57=Találatok message58=Verziók message59=Operációs Rendszerek message60=Jan message61=Feb message62=Már message63=Ápr message64=Máj message65=Jún message66=Júl message67=Aug message68=Szept message69=Okt message70=Nov message71=Dec message72=Navigáció message73=Fájltípus message74=Frissítés message75=Adatmennyiség message76=Vissza a fõoldalra message77=TOP message78=yyyy mmm dd - HH:MM message79=Szûrõ message80=Teljes lista message81=Host-ok message82=ismert message83=Robotok message84=V message85=H message86=K message87=Sze message88=Cs message89=P message90=Szo message91=Heti bontás message92=Ki message93=Mikor message94=Bejelentkezett felhasználók message95=Min message96=Átlag message97=Max message98=Web tömörítés message99=Nyert sávszélesség message100=Tömörítés bekapcsolva message101=Tömörítés eredménye message102=Összesen message103=különbözõ kifejezés message104=Belépõ oldalak message105=Kód message106=Átlagméret message107=Kapcsolódás hírcsoportból message108=KB message109=MB message110=GB message111=Grabber message112=Igen message113=Nem message114=információk message115=OK message116=Kilépõ oldalak message117=Látogatások hossza message118=Ablak bezárása message119=Bájt message120=Kifejezések keresése message121=Kulcsszavak keresése message122=különbözõ hivatkozó keresõmotor message123=különbözõ hivatkozó oldal message124=Egyéb kifejezések message125=Egyéb, vagy "Anonymous" látogatók message126=Hivatkozó keresõmotorok message127=Hivatkozó oldalak message128=Összesítés message129=Pontos érték nem áll rendelkezésre "éves" nézetben message130=Adat érték tömbök message131=Küldõ E-Mail címe message132=Fogadó E-Mail címe message133=Statisztikai idõszak message134=Extra/Marketing message135=Képernyõméretek message136=Worm/Virus kérések message137=Hozzáadás a kedvencekhez (becslés) message138=Napi bontás message139=Vegyes message140=Böngészõk Java támogatással message141=Böngészõk Macromedia Director támogatással message142=Böngészõk Flash támogatással message143=Böngészõk Real audio támogatással message144=Böngészõk Quicktime audio támogatással message145=Böngészõk Windows Media audio támogatással message146=Böngészõk PDF támogatással message147=SMTP hibakódok message148=Országok message149=Levelek message150=Méret message151=Elsõ message152=Utolsó message153=Szûrõ (kizárás) message154=Az itt listázott speciális HTTP statuszkódot generált kérések forgalma csak a "nem nézett forgalom" alatt szerepel, más statisztikába nincs beleszámítva. message155=Cluster message156=Az itt listázott robotok forgalma csak a "nem nézett forgalom" alatt szerepel, más statisztikába nincs beleszámítva message157=A pluszjel utáni számok a sikeres "robots.txt" fájllekéréseket jelentik. message158=Az itt listázott férgek forgalma csak a "nem nézett forgalom" alatt szerepel, más statisztikába nincs beleszámítva. message159=A "nem nézett forgalom" tartalmazza a robotok, férgek által lekért oldalakat illetve a speciális HTTP statuszkódot generált kérések forgalmát. message160=Nézett forgalom message161=Nem nézett forgalom message162=Havi bontás message163=Férgek message164=különféle féreg message165=Sikeresen elküldött levelek message166=Sikertelen/visszapattanó levelek message167=Érzékeny tartalom message168=Javascript kikapcsolva message169=Készítette az message170=beépülõ modulok message171=Régiók message172=Városokawstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/0000750000175000017500000000000012410217071017017 5ustar skskawstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-is.txt0000750000175000017500000000213212410217071022305 0ustar sksk
    Fjöldi mismunandi véla (IP-vistfanga) sem notaðar voru til að tengjast.
    Þetta er heildargagnamagn sem halað var niður með ftp.
    Einingar eru í KB, MB eða GB (KílóBæti, MegaBæti eða GígaBæti)
    Öll tímatengd tölfræði er byggð á klukku netþjóns.
    Gögn í þessari skýrslu eru: meðalgildi (reiknuð út frá öllum gögnum milli fyrsta og síðasta bréfs á greindu tímabili)
    Gögn í þessari skýrslu eru: samtölur (reiknuð út frá öllum gögnum milli fyrsta og síðasta bréfs á greindu tímabili)
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-cz.txt0000640000175000017500000000220212410217071022302 0ustar sksk
    PoÄet různých poÄítaÄů (IP adres), ze kterých bylo zaznamenáno pÅ™ipojení.
    Celkový objem dat přenesených přes FTP.
    Udáváno v KB, MB nebo GB (kilobajtech, megabajtech nebo gigabajtech).
    VÅ¡echny Äasové statistiky vycházejí z Äasu na serveru.
    Zde zobrazené údaje jsou průmÄ›rné hodnoty (poÄítané ze vÅ¡ech pÅ™enosů ve sledovaném období).
    Zde zobrazené údaje jsou celkové souÄty (poÄítané ze vÅ¡ech pÅ™enosů ve sledovaném období).
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-gr.txt0000640000175000017500000000316712410217071022311 0ustar sksk
    ΑÏιθμός από διαφοÏετικοÏÏ‚ πελάτες (IP διευθÏνσεις) που χÏησιμοποιήθηκαν για σÏνδεση.
    Αυτό είναι το συνολικό μέγεθος δεδομένων που μεταφέÏθηκαν μέσω ftp.
    Οι μονάδες είναι σε KB, MB ή GB (KiloBytes, MegaBytes ή GigaBytes)
    Όλα τα στατιστικά που συσχετίζονται με χÏόνο είναι βάση της ÏŽÏας του διακομιστή.
    Εδώ, τα δεδομένα που αναφέÏονται είναι: μέσος ÏŒÏος τιμών (έχουν υπολογιστεί από όλα τα δεδομένα Î¼ÎµÏ„Î±Î¾Ï Ï„Î¿Ï… Ï€Ïώτου και του τελευταίου e-mail στο εÏÏος της ανάλυσης)
    Εδώ, τα δεδομένα που αναφέÏονται είναι: συγκεντÏωτικά σÏνολα (έχουν υπολογιστεί από όλα τα δεδομένα Î¼ÎµÏ„Î±Î¾Ï Ï„Î¿Ï… Ï€Ïώτου και του τελευταίου e-mail στο εÏÏος της ανάλυσης)
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-en.txt0000640000175000017500000000215012410217071022272 0ustar sksk
    Number of different client hosts (IP addresses) used to connect.
    This is the total amount of data transfered by ftp downloads.
    Units are in KB, MB or GB (KiloBytes, MegaBytes or GigaBytes)
    All time related statistics are based on server time.
    Here, reported data are: average values (calculated from all data between the first and last email in analyzed range)
    Here, reported data are: cumulative sums (calculated from all data between the first and last email in analyzed range)
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-gl.txt0000640000175000017500000000246112410217071022277 0ustar sksk
    Número de máquinas cliente (enderezos IP) usados para conectarse.
    Esta é a cantidade total de datos transferidos por descargas ftp.
    As unidades están en KB, MB ou GB (Kilooctetos, Megaoctetos ou Gigaoctetos)
    Tódalas estatísticas relacionadas co tempo baséanse na hora do servidor.
    Aquí, os datos expostos son valores medios (calculados a partir de tódolos datos entre o primeiro e derradeiro correo electrónico no rango analizado)
    Aquí, os datos expostos son sumas acumulativas (calculados a partir de tódolos datos entre o primeiro e o derradeiro correo electrónico no rango analizado)
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-br.txt0000750000175000017500000000230312410217071022275 0ustar sksk
    Número de hosts (endereços IP) clientes diferentes utilizados para conectar.
    Esta é a quantidate total de dados transferidos por download de ftp.
    Unidades estão em KB, MB ou GB (KiloBytes, MegaBytes ou GigaBytes)
    Todas estatísticas relacionadas a tempo são baseadas no horário do servidor.
    Aqui os dados reportados são: valores médios (calculados a partir de todos os dados na faixa analisada)
    Aqui os dados reportados são: somas cumulativas (calculados a partir de todos os dados na faixa analisada)
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-ru.txt0000640000175000017500000000231212410217071022316 0ustar sksk
    ЧиÑло различных хоÑтов (разных IP адреÑов), ÑоединÑвшихÑÑ Ñ FTP-Ñервером.
    Это общее количеÑтво данных, переданых по протоколу FTP.
    Единицы указаны в Kb, Mb или Gb (килобайты, мегабайты или гигабайты).
    Отраженное в ÑтатиÑтике Ð²Ñ€ÐµÐ¼Ñ Ñто Ñерверное времÑ.
    ЗдеÑÑŒ, приведенные данные: Ñредние значениÑ
    ЗдеÑÑŒ, приведенные данные: кумулÑтивные Ñуммы
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_f/awstats-tt-it.txt0000640000175000017500000000225412410217071022311 0ustar sksk
    Numero di client host diversi (indirizzi IP) che si sono connessi.
    Questo valore indica la quantità totale di dati trasferita dai download ftp.
    Le unità di misura sono espresse in KB, MB o GB (KiloByte, MegaByte o GigaByte)
    Gli orari visualizzati sono basati sul fuso orario del server.
    I dati qui riportati sono valori medi (calcolati su tutti i dati tra il primo e l'ultimo accesso nel periodo di tempo analizzato)
    I dati qui riportati sono somme cumulative (calcolate su tutti i dati tra il primo e l'ultimo accesso nel periodo di tempo analizzato)
    awstats-7.4/wwwroot/cgi-bin/lang/awstats-ko.txt0000640000175000017500000001246412410217071017503 0ustar sksk# Korean message file (translator unknown in previous R1.6/ currently power@k-june.com after 1.7) # $Revision$ - $Date$ PageCode=UTF-8 message0=ë¯¸í™•ì¸ message1=알수없는 ì ‘ì†ìž(알수없는 ip) message2=기타 message3=ìžì„¸ížˆ 보기 message4=ì¼ message5=ì›” message6=ë…„ message7=통계 message8=ì²˜ìŒ ì ‘ì† message9=마지막 ì ‘ì† message10=ì ‘ì† íšŒìˆ˜ message11=ì ‘ì†ìžìˆ˜ message12=ì ‘ì† message13=단어를 검색했습니다 message14=검색어 message15=비율 message16=Traffic message17=ë„ë©”ì¸/êµ­ê°€ message18=ë°©ë¬¸ìž message19=페ì´ì§€/URL message20=시간별 통계 message21=브ë¼ìš°ì € message22=HTTP ì—러 message23=참조한 경로 message24=ì—…ë°ì´íЏëœì  ì—†ìŒ(awstats_setup.htmlì˜ Build/Update를 참고하세요) message25=ë°©ë¬¸ìž ë„ë©”ì¸/êµ­ê°€ message26=호스트 message27=페ì´ì§€ message28=다른 페ì´ì§€ message29=ì½ê¸° 회수 message30=다른 단어 message31=페ì´ì§€ì—†ìŒ message32=HTTP ì—러 코드 message33=넷스케ì´í”„ 버전 message34=MS ì¸í„°ë„· ìµìŠ¤í”Œë¡œëŸ¬ 버전 message35=마지막 ì—…ë°ì´íЏ message36=ì ‘ì† ì‚¬ì´íŠ¸ë³„ 통계 message37=주소 message38=ì§ì ‘ 주소 ìž…ë ¥ / ì¦ê²¨ì°¾ê¸° message39=ì•Œìˆ˜ì—†ìŒ message40=ë‚´ë¶€ 검색 엔진ì—서 ì—°ê²° message41=외부페ì´ì§€ì—서 ì—°ê²° (ê²€ìƒ‰ì—”ì§„ì„ ì œì™¸í•œ 다른 웹사ì´íЏ) message42=내부페ì´ì§€ì—서 ë§í¬(ê°™ì€ ì‚¬ì´íŠ¸ì˜ ë‹¤ë¥¸ 페ì´ì§€) message43=검색엔진ì—서 사용한 문장(문구) message44=검색엔진ì—서 사용한 단어 message45=알수없는 IP 주소 message46=알수없는 OS (íŽ˜ëŸ¬í¼ í•„ë“œ) message47=존재하지 않는 URL ì ‘ì†ì‹œë„ (HTTP 코드 404) message48=IP 주소 message49=ì ‘ì†ì˜¤ë¥˜ 회수 message50=알수없는 브ë¼ìš°ì € (ë ˆí¼ëŸ¬ 필드) message51=ì¢…ë¥˜ì˜ ê²€ìƒ‰ì—”ì§„ì´ ë°©ë¬¸í•˜ì˜€ìŠµë‹ˆë‹¤. message52=ì ‘ì†/ë°©ë¬¸ìž message53=검색로봇/스파ì´ë” 방문 message54=ì§„ë³´ì ì¸ 웹 통계를 위한 ìžìœ ë¡œìš´ 실시간 ë¡œê·¸íŒŒì¼ message55=- message56=ì½ì€ 페ì´ì§€ message57=조회수 message58=버전별 보기 message59=ìš´ì˜ì²´ì œ message60=1ì›” message61=2ì›” message62=3ì›” message63=4ì›” message64=5ì›” message65=6ì›” message66=7ì›” message67=8ì›” message68=9ì›” message69=10ì›” message70=11ì›” message71=12ì›” message72=방문종류/ë°©ì‹ í†µê³„ message73=íŒŒì¼ ì¢…ë¥˜ message74=Update now message75=전송량 message76=처ìŒìœ¼ë¡œ ëŒì•„가기 message77=ìƒìœ„ message78=yyyyë…„ mmì›” ddì¼ - HH시 MMë¶„ message79=찾기 message80=전체보기 message81=호스트 message82=알려진 ì ‘ì†ìž message83=검색엔진 message84=ì¼ message85=ì›” message86=í™” message87=수 message88=목 message89=금 message90=토 message91=ìš”ì¼ë³„ 통계 message92=ë°©ë¬¸ìž í†µê³„ message93=방문시간 통계 message94=ì¸ì¦ëœ ì‚¬ìš©ìž message95=최소 message96=í‰ê·  message97=최대 message98=ì••ì¶• message99=압축으로 절약 message100=ì••ì¶•ì „ message101=압축후 message102=합계 message103=문장(문구)ì„ ê²€ìƒ‰í–ˆìŠµë‹ˆë‹¤ message104=ì ‘ì†íšŸìˆ˜ message105=코드 message106=í‰ê· í¬ê¸° message107=뉴스그룹ì—서 ë§í¬ message108=KB message109=MB message110=GB message111=Grabber message112=예 message113=아니오 message114=ì •ë³´. message115=OK message116=마지막 ì ‘ì† message117=머무른 시간 message118=ì°½ 닫기 message119=Bytes message120=검색한 문장 message121=검색한 단어 message122=different refering search engines message123=different refering sites message124=그외 message125=다른 ë¡œê·¸ì¸ (그리고/ë˜ëŠ” ìµëª…ì˜ ì‚¬ìš©ìž) message126=참조한 검색엔진 message127=참조한 사ì´íЏ message128=ì „ì²´ 요약 message129=Exact value not available in 'Year' view message130=Data value arrays message131=Sender EMail message132=Receiver EMail message133=기간 message134=Extra/Marketing message135=화면해ìƒë„ message136=웜/ë°”ì´ëŸ¬ìŠ¤ì˜ ê³µê²© message137=ì¦ê²¨ì°¾ê¸°ì— 추가 (추정값) message138=ì´ë²ˆë‹¬ ì ‘ì†í†µê³„ message139=기타 ì •ë³´ message140=Javaì§€ì› ë¸Œë¼ìš°ì € message141=Macromedia Directorì§€ì› ë¸Œë¼ìš°ì € message142=Flashì§€ì› ë¸Œë¼ìš°ì € message143=Real audio ìž¬ìƒ ì§€ì› ë¸Œë¼ìš°ì € message144=Quicktime audio ìž¬ìƒ ì§€ì› ë¸Œë¼ìš°ì € message145=Windows Media audio ìž¬ìƒ ì§€ì› ë¸Œë¼ìš°ì € message146=PDFì§€ì› ë¸Œë¼ìš°ì € message147=SMTP ì—러코드 message148=êµ­ê°€ message149=편지 message150=í¬ê¸° message151=ì²˜ìŒ message152=마지막 message153=제외할 단어 message154=ì´ê³³ì— í‘œì‹œëœ ì½”ë“œëŠ” 기타접ì†ì— 해당하므로,다른 통계ì—는 í¬í•¨ë˜ì§€ 않았습니다. message155=Cluster message156=ì´ê³³ì— í‘œì‹œëœ ê²€ìƒ‰ë¡œë´‡ì˜ ë°©ë¬¸ì€ ê¸°íƒ€ì ‘ì†ì— 해당하므로,다른 통계ì—는 í¬í•¨ë˜ì§€ 않았습니다. message157= + 표시 ë’¤ì˜ ìˆ«ìžëŠ” robots.txt파ì¼ì„ ì •ìƒì ìœ¼ë¡œ 확ì¸í•œ 숫ìžìž…니다. message158=ì´ê³³ì— í‘œì‹œëœ ì›œë°”ì´ëŸ¬ìŠ¤ì˜ ë°©ë¬¸ì€ ê¸°íƒ€ì ‘ì†ì— 해당하므로,다른 통계ì—는 í¬í•¨ë˜ì§€ 않았습니다. message159=기타 ì ‘ì†ì€ 검색엔진,웜바ì´ëŸ¬ìФ,특수한HTTPì½”ë“œì— ì˜í•œ ì ‘ì†ì„ ë§í•©ë‹ˆë‹¤. message160=ì ‘ì† í˜„í™© message161=기타 ì ‘ì† message162=ì˜¬í•´ì˜ ì ‘ì†í†µê³„ message163=웜바ì´ëŸ¬ìФ message164=웜바ì´ëŸ¬ìФ message165=편지가 ì •ìƒì ìœ¼ë¡œ 발송ë˜ì—ˆìŒ message166=편지 보내기가 실패함/ê±°ë¶€ë¨ message167=Sensitive targets message168=Javascript disabled message169=제작 message170=í”ŒëŸ¬ê·¸ì¸ awstats-7.4/wwwroot/cgi-bin/lang/awstats-sr.txt0000640000175000017500000001635512410217071017521 0ustar sksk# Serbian message file (Tomislav Loncar, tomo@inecco.net; Bojan Suzic, bojans@teol.net; Mihailo Stefanović, mst@mikis.org) # $Revision$ - $Date$ PageCode=utf-8 message0=Ðепознато message1=непознатих (IP адреÑа није разрешена) message2=ОÑтало message3=Види детаље message4=Дан message5=МeÑец message6=Година message7=СтатиÑтике за message8=Прва поÑета message9=ПоÑледња поÑета message10=Број поÑета message11=ЈединÑтвених поÑетилаца message12=поÑета message13=кључних речи message14=Претрага message15=Проценат message16=Саобраћај message17=Домени/земље message18=поÑетилаца message19=Странице/URL message20=ЧаÑова (ÑерверÑко време) message21=Прегледници message22=HTTP грешке message23=Везе message24=Ðије ажурирано message25=Домени/земље поÑетилаца message26=рачунара message27=Ñтраница message28=различитих Ñтраница message29=ПриÑтуп message30=ОÑтале речи message31=Ðепронађене Ñтранице message32=HTTP кодови грешака message33=Верзије Netscape-a message34=Верзије IE-a message35=Ðжурирано message36=Спољне везе: message37=Како је кориÑник дошао message38=Директан приÑтуп message39=Ðепознато порeкло message40=Везе Ñа интернет претраживача message41=Везе Ñа Ñпољних Ñтраница (оÑим интернет претраживача) message42=Везе Ñа влаÑтитих Ñтраница (оÑтале Ñтранице унутар вашег Ñајта) message43=Фраза коришћених на претраживачима message44=Кључне речи коришћене на претраживачима message45=Ðеразрешена IP адреÑа message46=Ðепознат оперативни ÑиÑтем message47=Захтевана локација није пронађена (HTTP грешка 404) message48=IP адреÑа message49=Погодака Ñа грешкама message50=Ðепознат интернет прегледник message51=робота поÑетилаца message52=ПоÑета по поÑетиоцу message53=ПоÑетиоци роботи message54=БеÑплатни анализатор поÑета за напредне веб ÑтатиÑтике message55=од message56=Страница message57=Погодака message58=Верзије message59=Оперативни ÑиÑтем message60=Јан message61=Феб message62=Мар message63=Ðпр message64=Мај message65=Јун message66=Јул message67=Ðвг message68=Сеп message69=Окт message70=Ðов message71=Дец message72=Ðавигација message73=Ð’Ñ€Ñте датотека message74=Ðжурирај Ñада message75=Проток message76=Ðазад на главну Ñтрану message77=првих message78=dd mmm yyyy - HH:MM message79=Филтер message80=Пуна лиÑта message81=Рачунари message82=познатих message83=Роботи message84=Ðед message85=Пон message86=Уто message87=Сре message88=Чет message89=Пет message90=Суб message91=Дани у недељи message92=Ко message93=Када message94=Пријављени кориÑници message95=Минимално message96=проÑечно message97=МакÑимално message98=Веб компреÑија message99=Уштеда Ñаобраћаја message100=Пре компреÑије message101=Ðакон компреÑије message102=Укупно message103=различитих кључних фраза message104=Улазне Ñтранице message105=Код message106=ПроÑечна величина message107=Везе Ñа диÑкуÑионих група message108=KB message109=MB message110=GB message111=МаÑовно преузимање Ñтрана (grabber) message112=Да message113=Ðе message114=WhoIs информације message115=У реду message116=Излаз message117=Трајање поÑета message118=Затвори прозор message119=Бајтова message120=Фразе Ð·Ð° претрагу message121=Кључне Ñ€ÐµÑ‡Ð¸ за претрагу message122=различитих претраживача Ñа везом message123=различитих Ñајтова Ñа везом message124=ОÑтале фразе message125=ОÑтале пријаве (и/или анонимни кориÑници) message126=Претраживачи Ñа везама message127=Сајтови Ñа везама message128=Преглед message129=Тачна вредноÑÑ‚ није доÑтупна у годишњем прегледу message130=ВредноÑти поља message131=Е-пошта пошиљаоца message132=Е-пошта примаоца message133=Период обухваћен извештајем message134=Додатно/маркетинг message135=Величине екрана message136=Ðапади црва/вируÑа message137=Додавања у омиљене локације (оквирно) message138=Дани у меÑецу message139=Разно message140=Прегледници Ñа Java подршком message141=Прегледници Ñа Macromedia Director подршком message142=Прегледници Ñа Flash подршком message143=Прегледници Ñа Real audio подршком message144=Прегледници Ñа Quicktime audio подршком message145=Прегледници Ñа Windows Media audio подршком message146=Прегледници Ñа PDF подршком message147=SMTP кодови грешака message148=Земље message149=Порука message150=Величина message151=Први message152=ПоÑледњи message153=Exclude filter message154=Овде приказани кодови Ñу направили поÑете или Ñаобраћај који кориÑници ниÑу видели, па зато ниÑу укључени у оÑтале извештаје. message155=КлаÑтер message156=Овде приказани роботи Ñу направили поÑете или Ñаобраћај који кориÑници ниÑу видели, па зато ниÑу укључени у оÑтале извештаје. message157=Бројеви приказани иза + Ñу уÑпешни погодци на "robots.txt" датотеке. message158=Овде приказани црви Ñу направили поÑете или Ñаобраћај који кориÑници ниÑу видели, па зато ниÑу укључени у оÑтале извештаје. message159=Ðеприказан Ñаобраћај је Ñаобраћај који Ñу направили роботи, црви, или одговори Ñа Ñпецијалним HTTP ÑÑ‚Ð°Ñ‚ÑƒÑ ÐºÐ¾Ð´Ð¾Ð²Ð¸Ð¼Ð°. message160=Приказаног Ñаобраћаја message161=Ðеприказаног Ñаобраћаја message162=МеÑечне ÑтатиÑтике message163=Црви message164=различитих црва awstats-7.4/wwwroot/cgi-bin/lang/awstats-en.txt0000640000175000017500000001162012410217071017465 0ustar sksk# English message file (eldy@users.sourceforge.net) # $Revision$ - $Date$ PageCode=utf-8 message0=Unknown message1=Unknown (unresolved ip) message2=Others message3=View details message4=Day message5=Month message6=Year message7=Statistics for message8=First visit message9=Last visit message10=Number of visits message11=Unique visitors message12=Visit message13=different keywords message14=Search message15=Percent message16=Traffic message17=Domains/Countries message18=Visitors message19=Pages-URL message20=Hours message21=Browsers message22= message23=Referrers message24=Never updated (See 'Build/Update' on awstats_setup.html page) message25=Visitors domains/countries message26=hosts message27=pages message28=different pages-url message29=Viewed message30=Other words message31=Pages not found message32=HTTP Status codes message33=Netscape versions message34=IE versions message35=Last Update message36=Connect to site from message37=Origin message38=Direct address / Bookmark / Link in email... message39=Unknown Origin message40=Links from an Internet Search Engine message41=Links from an external page (other web sites except search engines) message42=Links from an internal page (other page on same site) message43=Keyphrases used on search engines message44=Keywords used on search engines message45=Unresolved IP Address message46=Unknown OS (useragent field) message47=Required but not found URLs (HTTP code 404) message48=IP Address message49=Error Hits message50=Unknown browsers (useragent field) message51=different robots message52=visits/visitor message53=Robots/Spiders visitors message54=Free realtime logfile analyzer for advanced web statistics message55=of message56=Pages message57=Hits message58=Versions message59=Operating Systems message60=Jan message61=Feb message62=Mar message63=Apr message64=May message65=Jun message66=Jul message67=Aug message68=Sep message69=Oct message70=Nov message71=Dec message72=Navigation message73=File type message74=Update now message75=Bandwidth message76=Back to main page message77=Top message78=dd mmm yyyy - HH:MM message79=Filter message80=Full list message81=Hosts message82=Known message83=Robots message84=Sun message85=Mon message86=Tue message87=Wed message88=Thu message89=Fri message90=Sat message91=Days of week message92=Who message93=When message94=Authenticated users message95=Min message96=Average message97=Max message98=Web compression message99=Bandwidth saved message100=Compression on message101=Compression result message102=Total message103=different keyphrases message104=Entry message105=Code message106=Average size message107=Links from a NewsGroup message108=KB message109=MB message110=GB message111=Grabber message112=Yes message113=No message114=Info. message115=OK message116=Exit message117=Visits duration message118=Close window message119=Bytes message120=Search Keyphrases message121=Search Keywords message122=different referring search engines message123=different referring sites message124=Other phrases message125=Other logins (and/or anonymous users) message126=Referring search engines message127=Referring sites message128=Summary message129=Exact value not available in 'Year' view message130=Data value arrays message131=Sender EMail message132=Receiver EMail message133=Reported period message134=Extra/Marketing message135=Screen sizes message136=Worm/Virus attacks message137=Successful hits on favicon.ico message138=Days of month message139=Miscellaneous message140=Browsers with Java support message141=Browsers with Macromedia Director Support message142=Browsers with Flash Support message143=Browsers with Real audio playing support message144=Browsers with Quicktime audio playing support message145=Browsers with Windows Media audio playing support message146=Browsers with PDF support message147=SMTP Error codes message148=Countries message149=Mails message150=Size message151=First message152=Last message153=Exclude filter message154=Codes shown here gave hits or traffic "not viewed" by visitors, so they are not included in other charts. message155=Cluster message156=Robots shown here gave hits or traffic "not viewed" by visitors, so they are not included in other charts. message157=Numbers after + are successful hits on "robots.txt" files. message158=Worms shown here gave hits or traffic "not viewed" by visitors, so they are not included in other charts. message159=Not viewed traffic includes traffic generated by robots, worms, or replies with special HTTP status codes. message160=Viewed traffic message161=Not viewed traffic message162=Monthly history message163=Worms message164=different worms message165=Mails successfully sent message166=Mails failed/refused message167=Sensitive targets message168=Javascript disabled message169=Created by message170=plugins message171=Regions message172=Cities message173=Opera versions message174=Safari versions message175=Chrome versions message176=Konqueror versions message177=, message178=Downloadsawstats-7.4/wwwroot/cgi-bin/lang/awstats-nb.txt0000640000175000017500000001126112410217071017463 0ustar sksk# Norwegian Bokmål message file (by Vemund F Jensen ) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Ukjent message1=Ukjente (fant ikke vertsnavn) message2=Andre message3=Vis detaljer message4=Dag message5=Måned message6=År message7=Statistikk for message8=Første besøk message9=Siste besøk message10=Antall besøk message11=Unike gjester message12=Besøk message13=forskjellige søkeord message14=Søk message15=Prosent message16=Trafikk message17=Domene/land message18=Gjester message19=Sider/url-er message20=Timefordeling message21=Nettlesere message22= message23=Referenter message24=Aldri oppdatert message25=Besøkendes domener/land message26=verter message27=sider message28=forskjellige sider/url-er message29=Viste sider message30=Andre ord message31=Manglende sider message32=HTTP statuskoder message33=Netscape-versjoner message34=IE-versjoner message35=Siste oppdatering message36=Koblet til siden fra message37=Opphav message38=Direkteadresse/bokmerke message39=Ukjent opphav message40=Lenker fra søkemotorer message41=Lenker fra eksterne sider (andre nettsteder unntatt søkemotorer) message42=Lenker fra interne sider (andre sider på samme nettsted) message43=Søkeuttrykk brukt i søkemotorer message44=Søkeord brukt i søkemotorer message45=Ukjent vertsnavn message46=Ukjent operativsystem (referentfelt) message47=Dokument ikke funnet (HTTP feilkode 404) message48=IP-adresse message49=Feiltreff message50=Ukjent nettleser (referentfelt) message51=ulike roboter message52=besøk/gjest message53=Robotbesøk message54=Gratis sanntids logganalysator for avansert webstatistikk message55=av message56=Sider message57=Treff message58=Versjoner message59=Operativsystemer message60=Jan message61=Feb message62=Mar message63=Apr message64=Mai message65=Jun message66=Jul message67=Aug message68=Sep message69=Okt message70=Nov message71=Des message72=Navigasjon message73=Filtype message74=Oppdater nå message75=Datamengde message76=Tilbake til hovedsiden message77=øverste message78=yyyy-mm-dd - HH:MM message79=Filter message80=Full liste message81=Verter message82=kjente message83=Roboter message84=Søn message85=Man message86=Tir message87=Ons message88=Tor message89=Fre message90=Lør message91=Ukedagsfordeling message92=Hvem message93=Når message94=Autentiserte brukere message95=Min. message96=Snitt message97=Maks. message98=Komprimering message99=Båndbredde spart message100=Komprimering på message101=Komprimeringsresultat message102=Total message103=forskjellige søkeuttrykk message104=Inngangssider message105=Kode message106=Gjennomsnittstørrelse message107=Lenker fra diskusjonsgrupper message108=KB message109=MB message110=GB message111=Grabber message112=Ja message113=Nei message114=Info message115=OK message116=Utgangssider message117=Besøkslengde message118=Lukk vindu message119=Bytes message120=Søkeuttrykk message121=Søkeord message122=forskjellige refererende søkemotorer message123=forskjellige refererende nettsteder message124=Andre uttrykk message125=Andre pålogginger (og/eller anonyme brukere) message126=Refererende søkemotorer message127=Refererende nettsteder message128=Sammendrag message129=Nøyaktig antall ikke tilgjengelig i årssammendraget message130=Verditabeller message131=E-post (avsender) message132=E-post (mottaker) message133=Rapportperiode message134=Ekstra message135=Skjermstørrelser message136=Orm-/virusangrep message137=Lagt til favoritter (estimat) message138=Månedsoversikt message139=Forskjellig message140=Nettlesere med støtte for Java message141=Nettlesere med støtte for Macromedia Director message142=Nettlesere med støtte for Flash message143=Nettlesere med støtte for Real lydavspilling message144=Nettlesere med støtte for Quicktime lydavspilling message145=Nettlesere med støtte for Windows Media lydavspilling message146=Nettlesere med støtte for PDF message147=SMTP feilkoder message148=Land message149=Meldinger message150=Størrelse message151=Første message152=Siste message153=Sperrefilter message154=Disse kodene gav treff eller trafikk som ikke ble vist i nettleseren, og er ikke inkludert i andre oversikter. message155=Klynge message156=Roboter vist her gav treff eller trafikk som ikke ble vist i nettleseren, og er ikke inkludert i andre oversikter. message157=Antall etter + er treff på "robots.txt"-filer. message158=Ormer vist her gav treff eller trafikk som ikke ble vist i nettleseren, og er ikke inkludert i andre oversikter. message159=Ikke-vist trafikk er trafikk generert av roboter, ormer eller HTTP-trafikk med spesielle statuskoder. message160=Vist trafikk message161=Ikke-vist trafikk message162=Årsoversikt message163=Ormer message164=Ulike ormer message165=Vellykkede e-postforsendelser message166=Mislykkede/avviste e-postforsendelser message167=Sensitive målawstats-7.4/wwwroot/cgi-bin/lang/awstats-it.txt0000640000175000017500000001274012410217071017503 0ustar sksk# Italian message file # $Revision$ - $Date$ # PaniC! - panic@freemail.it # Francesco Potorti - pot@gnu.org # iDave - idave@idave.it # Salvo - salvo@scicli.com # CereS - ceres@divxmania.it # StarKnight - starknight@starkingdom.it PageCode=utf-8 message0=Sconosciuti message1=Sconosciuti (ip non risolto) message2=Altri message3=Mostra dettagli message4=Giorno message5=Mese message6=Anno message7=Statistiche di message8=Prima visita message9=Ultima visita message10=Numero di visite message11=Visitatori diversi message12=Visita message13=parole chiave diverse message14=Ricerche message15=Percentuale message16=Traffico message17=Domini/Nazioni message18=Visitatori message19=Pagine-URL message20=Ore message21=Browser message22= message23=Provenienza message24=Non aggiornato (Vedi 'Build/Update' sulla pagina awstats_setup.html) message25=Domini o nazioni dei visitatori message26=host message27=pagine message28=pagine-url diverse message29=Accessi message30=Altre parole message31=Pagine non trovate message32=Codici di errore HTTP message33=Versioni di Netscape message34=Versioni di Internet Explorer message35=Ultimo Aggiornamento message36=Provenienza delle connessioni message37=Provenienza message38=Accessi diretti, via segnalibro o link nelle email message39=Accessi di origine sconosciuta message40=Accessi da motore di ricerca message41=Accessi da pagina esterna (altri siti eccetto i motori di ricerca) message42=Accessi da pagina interna (altra pagina dello stesso sito) message43=Frasi usate nei motori di ricerca message44=Parole usate nei motori di ricerca message45=Indirizzi IP non risolti message46=Sistemi operativi sconosciuti (campo 'useragent') message47=URL richieste ma non trovate (codice HTTP 404) message48=Indirizzo IP message49=Accessi con errore message50=Browser sconosciuti (campo 'useragent') message51=robot diversi message52=visite/visitatore message53=Accessi di robot e spider message54=Analizzatore in tempo reale di log gratuito per statistiche web avanzate message55=su message56=Pagine message57=Accessi message58=Versioni message59=Sistemi operativi message60=Gen message61=Feb message62=Mar message63=Apr message64=Mag message65=Giu message66=Lug message67=Ago message68=Set message69=Ott message70=Nov message71=Dic message72=Navigazione message73=Tipi di file message74=Aggiorna message75=Banda usata message76=Pagina principale message77=Prime message78=dd mmm yyyy / HH:MM message79=Filtro message80=Elenco completo message81=Host message82=Conosciuti message83=Robot message84=Dom message85=Lun message86=Mar message87=Mer message88=Gio message89=Ven message90=Sab message91=Giorni della settimana message92=Chi message93=Quando message94=Utenti autenticati message95=Min message96=Media message97=Max message98=Compressione Web message99=Banda risparmiata message100=Prima della compressione message101=Dopo la compressione message102=Totale message103=frasi chiave diverse message104=Pagine iniziali message105=Codice message106=Dimensione media message107=Accessi da un NewsGroup message108=KB message109=MB message110=GB message111=Grabber message112=Si message113=No message114=Informazioni message115=OK message116=Pagine d'uscita message117=Durata delle visite message118=Chiudi questa finestra message119=Byte message120=Frasi cercate message121=Parole cercate message122=differenti motori di ricerca message123=differenti siti message124=Altre frasi message125=Altre login (e/o utenti anonimi) message126=Motori di ricerca message127=Siti message128=Sommario message129=Valori esatti non disponibili nella vista 'Anno' message130=Tabelle dei valori message131=EMail del mittente message132=EMail del ricevente message133=Periodo di riferimento message134=Extra/Marketing message135=Risoluzione video message136=Worm/Attacchi di virus message137=Accessi riusciti a favicon.ico message138=Giorni del mese message139=Informazioni varie message140=Browser con supporto per Java message141=Browser con supporto per Macromedia Director message142=Browser con supporto per Flash message143=Browser con supporto audio per Real Player message144=Browser con supporto audio per Quicktime Player message145=Browser con supporto audio per Windows Media Player message146=Browser con supporto PDF message147=Codici di errore SMTP message148=Nazioni message149=Mail message150=Dimensione message151=Prima message152=Ultima message153=Escludi message154=I codici elencati hanno generato accessi o traffico "non visualizzato" dai visitatori, pertanto non vengono inclusi negli altri grafici. message155=Raggruppato message156=I robot elencati hanno generato accessi o traffico "non visualizzato" dai visitatori, pertanto non vengono inclusi negli altri grafici. message157=I numeri dopo il + rappresentano gli accessi effettuati verso i file "robot.txt". message158=I worm elencati hanno generato accessi o traffico "non visualizzato" dai visitatori, pertanto non vengono inclusi negli altri grafici. message159=Il traffico "non visualizzato" è il traffico generato da robot, worm oppure da risposte con codici di errore HTTP speciali. message160=Traffico visualizzato message161=Traffico non visualizzato message162=Riepilogo mensile message163=Worm message164=worm diversi message165=Mail inviate correttamente message166=Mail fallite/rifiutate message167=Obiettivi sensibili message168=Javascript disabilitato message169=Creato da message170=plugin message171=Regioni message172=Città message173=Versioni di Opera message174=Versioni di Safari message175=Versioni di Chrome message176=Versioni di Konqueror message177=. message178=File scaricatiawstats-7.4/wwwroot/cgi-bin/lang/awstats-se.txt0000640000175000017500000001222612410217071017475 0ustar sksk# Swedish message file # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Okänd message1=Okända (ip-adress ej uppslagen) message2=Övriga message3=Visa detaljer message4=Dag message5=Månad message6=År message7=Statistik för message8=Första besök message9=Senaste besök message10=Antal besök message11=Unika besökare message12=Besök message13=Nyckelord message14=Sök message15=Procent message16=Trafik message17=Domäner/Länder message18=Besökare message19=Sidor/URL message20=Tidpunkt (Servertid) message21=Webbläsare message22=HTTP-fel message23=Refererande sidor message24=Söktermer message25=Besökandes domäner/länder message26=hosts message27=sidor message28=olika sidor message29=Besökta sidor message30=Övriga ord message31=Sidan hittades inte message32=HTTP-felmeddelanden message33=Netscape-versioner message34=IE-versioner message35=Senaste uppdatering message36=Besökarna nådde siten genom message37=Ursprung message38=Direkt adress / Bokmärken message39=Okänt ursprung message40=Länkar från sökmotorer message41=Länkar från externa sidor (andra webbsidor med undantag för sökmotorer) message42=Länkar från interna sidor (annan sida på samma sajt) message43=Nyckelfraser som använts på sökmotorer message44=Nyckelord som använts på sökmotorer message45=Ip-adress ej uppslagen message46=Okänt operativsystem (Referer-fält) message47=Efterfrågade men ej funna URL:er (HTTP fel 404) message48=IP-adress message49=Fel träffar message50=Okända webbläsare (Referer-fält) message51=Besökande webbrobotar/spindlar message52=besök/besökare message53=Besökande webbrobotar/spindlar message54=Gratis loggfilsanalysator för avancerad realtids webbstatistik message55=av message56=Sidor message57=Träffar message58=Versioner message59=Operativsystem message60=Jan message61=Feb message62=Mar message63=Apr message64=Maj message65=Jun message66=Jul message67=Aug message68=Sep message69=Okt message70=Nov message71=Dec message72=Navigering message73=Filtyper message74=Uppdatera nu message75=Byte message76=Tillbaka till första sidan message77=Topp message78=dd mmm yyyy - HH:MM message79=Filter message80=Fullständig lista message81=Besökare message82=Kända message83=Robotar message84=Sön message85=Mån message86=Tis message87=Ons message88=Tor message89=Fre message90=Lör message91=Veckodagar message92=Vem message93=När message94=Verifierade användare message95=Min message96=Medel message97=Max message98=Webbkomprimering message99=Sparad bandbredd message100=Före komprimering message101=Efter komprimering message102=Totalt message103=olika söksträngar message104=Entrésidor message105=Kod message106=Medelstorlek message107=Länkar från en Nyhetsgrupp message108=KB message109=MB message110=GB message111=Grabber message112=Ja message113=Nej message114=WhoIs information message115=OK message116=Avslut message117=Besökets Längd message118=Stäng Fönster message119=Bytes message120=Söknyckelfraser message121=Söknyckelord message122=olika refererande sökmotorer message123=olika refererande siter message124=Andra fraser message125=Andra logins (och/eller anonyma användare) message126=Refererande sökmotorer message127=Refererande siter message128=Summering message129=Exakt värde inte tillgängligt i 'År' vy message130=Datavärde vektor message131=Avsändare E-post message132=Mottagare E-post message133=Rapporterad period message134=Extra/Marknadsföring message135=Skärmstorlekar message136=Maskar/Virus attacker message137=Lägg till i Favoriter (estimerat) message138=Dag i månad message139=Diverse message140=Webbläsare med Java stöd message141=Webbläsare med Macromedia Director stöd message142=Webbläsare med Flash stöd message143=Webbläsare som kan spela upp Real audio message144=Webbläsare som kan spela upp Quicktime audio message145=Webbläsare som kan spela upp Windows Media audio message146=Webbläsare med PDF stöd message147=SMTP Felkoder message148=Länder message149=E-postmeddelanden message150=Storlek message151=Första message152=Sista message153=Exclude filter message154=Koder som visas i detta diagram anger automatisk trafik. message155=Kluster message156=De robotar som visas här orsakade automatisk trafik som ej är inkluderad i de övriga resultaten. message157=Siffror efter + anger träffar på "robots.txt" filer. message158=De maskar som visas här orsakade automatisk trafik som ej är inkluderad i de övriga resultaten. message159=Automatisk trafik betyder trafik orsakad av robotar, maskar och svar med särskilda HTTP statuskoder. message160=Manuell trafik message161=Automatisk trafik message162=Månatlig statistik message163=Maskar message164=olika maskar message165=E-post sänd ok message166=E-post misslyckad/nekad message167=Känsliga målawstats-7.4/wwwroot/cgi-bin/lang/awstats-eu.txt0000640000175000017500000001272112410217071017477 0ustar sksk# Basque - Euskara message file # $Revision$ - $Date$ # aktor - aktor@aktornet.ath.cx # agonirena - agonirena@gmail.com PageCode=iso-8859-1 message0=Ezezaguna message1=IP helbide ezezagunekoa message2=Beste batzuk message3=Xehetasunak ikusi message4=Eguna message5=Hilabetea message6=Urtea message7=Lekuko estadistikak message8=Lehenengo bisita message9=Azken bisita message10=Bisita kopurua message11=Bisitari desberdinak message12=Bisita message13=Gako-hitz message14=Bilaketak message15=Ehunekoa message16=Trafiko message17=Domeinuak/Herriak message18=Bisitariak message19=Orriak/URLak message20=Orduko bisitak message21=Nabigatzaileak message22=Akatsak message23=Loturak (Links) message24=Bilaketarako hitz gakoa message25=Domeinuko/Herrialdeko bisitak message26=zerbitzariak message27=orriak message28=orri desberdinak message29=Sarbideak message30=Beste hitz batzuk message31=Aurki gabeko orriak message32=HTTP akats kodeak message33=Netscape bertsioak message34=MS Internet Explorer bertsioak message35=Azken eguneratzea message36=Lekurako loturak (links) message37=Lotura-iturburua message38=Helbide zuzenetik edo Gogokoetatik message39=Iturburu ezezaguna message40=Bilaketa-tresnaren batetik loturak message41=Kanpoko horrietatik loturak (bilaketa-tresnak salbuesten) message42=Barneko horrietatik loturak (gunearen beste orriak) message43=Bilaketa-tresna erabilitako gako-esaldiak message44=Bilaketa-tresna erabilitako gako-hitzak message45=IP helbide ezezaguna message46=Sistema Eragile ezezaguna (useragent) message47=Eskatutako baina bilatugabeko URLak (404 kodea HTTP protokoloan) message48=IP Helbidea message49=Hits okerrak message50=Bilatzaile ezezagunak (useragent) message51=Robot bisitak message52=Bisitak/Bisitariak message53=Robot bisitak/Armiarmak message54=Web estatistika aurreratuentzat doako 'log' aztertzailea message55=de message56=Orriak message57=Hits message58=Bertsioak message59=Sistema Eragileak message60=Urt message61=Ots message62=Mar message63=Api message64=Mai message65=Eka message66=Uzt message67=Abu message68=Ira message69=Urr message70=Aza message71=Abe message72=Nabigazioa message73=Fitxategi mota message74=Eguneratu orain message75=Bytes message76=Orri nagusira itzuli message77=Gora message78=dd mmm yyyy - HH:MM message79=Iragazki message80=Zerrenda osoa message81=Zerbitzariak message82=Ezagunak message83=Robotak message84=Igandea message85=Astelehena message86=Asteartea message87=Asteazkena message88=Osteguna message89=Ostirala message90=Larunbata message91=Asteko egunak message92=Nork message93=Noiz message94=Erabiltzaile Baimenduak message95=Gut message96=Batazbeste message97=Geh message98=Web konpresioa message99=Banda-zabalera aurreztua message100=Konpresio aurretik message101=Konpresio ondoren message102=Guztira message103=Gako-esaldi ezberdinak message104=Sarrerako orria message105=Kodea message106=BatazBesteko neurria message107=NewsGroup-etik loturak message108=KB message109=MB message110=GB message111=Grabber message112=Bai message113=Ez message114=Whois informazioa message115=Onartu message116=Irteera message117=Bisiteen iraupena message118=Leihoa itxi message119=Bytes message120=Esaldi bilaketa-tresna message121=Gako-hitz bilaketa-tresna message122=Bilaketa-tresna igortzaile desberdinak message123=Gune igortzaile desberdinak message124=Beste gako-esaldi batzuk message125=Beste login batzuk (eta/edo erabiltzaile anonimoak) message126=Bilaketa-tresna igortzaileak message127=Gune igortzaileak message128=Laburpena message129=Balio zehatza ez dago eskuragarri 'Urte' ikuspegian message130=Datu taula message131=Bidaltzailearen EPosta message132=Jasotzilearen EPosta message133=Erakutsitako denboraldia message134=Extra/Marketing message135= Pantailaren tamainak message136=HAr/Birus erasoak message137=Laster-marka gehitu (adierazle erlatiboa) message138=Hilabeteko eguna message139=Hainbat message140=Java euskarria duten nabigatzaileak message141=Macromedia Director euskarria duten nabigatzaieak message142=Flash euskarria duten nabigatzaileak message143=Real audio errprodukzio euskarria duten nabigatzaileak Browsers with Real audio playing support message144=Quicktime audio erreprodukzio euskarria duten nabigatzaileak message145=Windows Media audio erreprodukzio euskarria duten nabigatzaileak message146=PDF euskarria duten nabigatzaileak message147=SMTP errore kodeak message148=Herrialdeak message149=Postak message150=Tamaina message151=Lehendabizikoa message152=Azkena message153=Iragazkia baztertu message154=Hemen erakutsitako kodeak, bisitariak "ez ikusitako" trafiko edo eskakizunek sortutakoak dira, beraz, ez dira beste grafika batzuetan kontan hartzen. message155=Taldea message156=Hemen erakutsitako robotak, bisitariak "ez ikusitako" trafiko edo eskakizunek sortutakoak dira, beraz, ez dira beste grafika batzuetan kontan hartzen. message157=+ ondoren dauden zenbakiak, "robots.txt" fitxategien eskakizun arrakastatsuak dira. message158=Hemen erakutsitako harrak, bisitariak "ez ikusitako" trafiko edo eskakizunek sortutakoak dira, beraz, ez dira beste grafika batzuetan kontan hartzen. message159=Ez ikusitako trafikoa, robot, har edo HTTP egoera kode berezien erantzunek sortzen duten trafikoa da. message160=Ikusitako trafikoa message161=Ez ikusitako trafikoa message162=Hileroko historia message163=Harrak message164=har desberdinak message165=Postak ondo bidali dira message166=Postak hutsegin/errefusatu message167=Helburu sentikorrak message168=Javascript ezgaitua message169=Honek sortua message170=pluginak message171=Eskualdeak message172=Hiriak awstats-7.4/wwwroot/cgi-bin/lang/awstats-br.txt0000640000175000017500000001327412410217071017475 0ustar sksk# Brazilian Portuguese message file (urban@ite.net.br) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Desconhecido message1=Desconhecido (ip não resolvido) message2=Outros visitantes message3=Ver detalhes message4=Dia message5=Mês message6=Ano message7=Estatísticas da message8=Primeira visita message9=Última visita message10=Número de visitas message11=Visitantes únicos message12=Visita message13=Palavra(s) chave(s) message14=Pesquisa message15=Por cento message16=Tráfego message17=Domínios/Países message18=Visitantes message19=Páginas/URL message20=Horas message21=Browsers message22=Erros HTTP message23=Referências message24=Busca Palavras message25=Visitas domínios/países message26=hosts message27=páginas message28=paginas diferentes message29=Acesso message30=Outras palavras message31=Páginas não existentes message32=Erros HTTP message33=Versões Netscape message34=Versões MS Internet Explorer message35=Última Atualização message36=Conectado a partir de message37=Origem message38=Endereço direto / Favoritos message39=Origem Desconhecida message40=Link de um Buscador message41=Link de uma página externa (outros sites que não buscadores) message42=Link de uma página interna (outras páginas no mesmo site) message43=Frases usadas em buscadores message44=Palavras usadas em mecanismos de busca message45=Endereço IP não resolvido message46=Sistemas Operacional Desconhecido (Campo Referer) message47=URLs solicitadas e não encontradas (HTTP code 404) message48=Endereço IP message49=Erro Hits message50=Browsers Desconhecidos(Campo Referer) message51=Buscadores Visitantes message52=visitas/visitante message53=Buscadores/Spiders visitantes message54=Estatísticas de acesso ao servidor WEB message55=de message56=Páginas message57=Hits message58=Versões message59=Sistema Operacional message60=Jan message61=Fev message62=Mar message63=Abr message64=Mai message65=Jun message66=Jul message67=Ago message68=Set message69=Out message70=Nov message71=Dez message72=Navegação message73=Tipos de Arquivos message74=Atualiza Agora message75=Bytes message76=Retorna à página inicial message77=Primeiros message78=dd mmm yyyy - HH:MM message79=Filtro message80=Lista completa message81=Hosts message82=Conhecido(a)(s) message83=Robôs message84=Dom message85=Seg message86=Ter message87=Qua message88=Qui message89=Sex message90=Sab message91=Dias da semana message92=Quem message93=Quando message94=Usuários autenticados message95=Min message96=Med message97=Max message98=Compressão Web message99=Banda economizada message100=Antes da compressão message101=Depois da compressão message102=Total message103=frases(s) diferente(s) message104=Páginas de entrada message105=Código message106=Tamanho médio message107=Links de um NewsGroup message108=KB message109=MB message110=GB message111=Grabber message112=Sim message113=Não message114=informação WhoIs (Quem é) message115=OK message116=Sair message117=Duração das visitas message118=Fechar janela message119=Bytes message120=Busca por Frases message121=Busca por Palavras message122=diferente referências em mecanismos de busca message123=diferente referências em sites message124=Outras frases message125=Outros logins (e/ou usuários anônimos) message126=Referência em mecanismos de busca message127=Referência em sites message128=Sumário message129=Valor exato não disponível na visualização 'Ano' message130=Disposições do valor dos dados message131=EMail Originário message132=EMail Destinatário message133=Período reportado message134=Extra/Marketing message135=Tamanhos de tela message136=Ataques de Worm/Virus message137=Adicionar em favoritos message138=Dias do Mês message139=Variados message140=Browsers com suporte ao Java message141=Browsers com suporte ao Macromedia Director message142=Browsers com suporte ao Flash message143=Browsers com suporte ao Real áudio message144=Browsers com suporte ao Quicktime áudio message145=Browsers com suporte ao Windows Media áudio message146=Browsers com suporte ao PDF message147=Códigos de Erro SMTP message148=Países message149=Mensagens message150=Tamanho message151=Primeiro message152=Último message153=Filtro de Exclusão message154=Códigos exibidos aqui indicam hits ou tráfego "não visto" pelos visitantes, então eles não são incluídos em outros gráficos. message155=Cluster message156=Robots exibidos aqui indicam hits ou tráfego "não visto" pelos visitantes, então eles não são incluídos em outros gráficos. message157=Números após + são hits com sucesso em arquivos "robots.txt". message158=Worms exibidos aqui indicam hits ou tráfego "não visto" pelos visitantes, então eles não sã incluídos em outros gráficoss. message159=Tráfego não visto é tráfego gerado por robots, worms ou respostas com código especial de status HTTP. message160=Tráfego visto message161=Tráfego não visto message162=Histórico Mensal message163=Worms message164=worms diferentes message165=Mails enviados com sucesso message166=Mails recusados/falha de entrega message167=Alvos sensíveis message168=Javascript desabilitado awstats-7.4/wwwroot/cgi-bin/lang/awstats-dk.txt0000640000175000017500000001311512410217071017462 0ustar sksk# Danish message file by Ole Stanstrup (revised and amended by soren@dacafe.com) # $Revision$ - $Date$ # Danish message file Update by Michael Andreassen (revised michael@the-exterminator.dk) PageCode=iso-8859-1 message0=Ukendt message1=Ukendt (uopløst IP-adresse) message2=Andre message3=Se detaljer message4=Dag message5=Måned message6=År message7=Statistik for message8=Første besøg message9=Sidste besøg message10=Antal besøg message11=Unikke besøgende message12=Besøg message13=forskellige søgeord message14=Søg message15=Procent message16=Trafik resume message17=Domæner/Lande message18=Besøgende message19=Sider/URL message20=Klokkeslæt (Servertid) message21=Browsere message22= message23=Henvisende sider message24=Aldrig opdateret (Se 'Build/Update' i awstats_setup.html) message25=Besøgende domæner/lande message26=hosts message27=sider message28=forskellige sider/URL message29=Viste sider message30=Andre ord message31=Ikke fundne sider message32=HTTP statuskoder message33=Netscape versioner message34=IE versioner message35=Seneste opdatering message36=Forbundet til websitet fra message37=Oprindelse message38=Direkte adgang/via bogmærker message39=Ukendt oprindelse message40=Links fra en internet søgemaskine message41=Links fra en ekstern side (andre websites, undtagen søgemaskiner) message42=Links fra en intern side (anden side på samme site) message43=Anvendte søgesætninger på søgemaskiner message44=Anvendte søgeord på søgemaskiner message45=Uopløste IP-adresser message46=Ukendte OS (useragent felt) message47=Krævet, men ikke fundet URL (HTTP-kode 404) message48=IP-adresse message49=Fejl Hits message50=Ukendte browsere (useragent felt) message51=forskellige robotter message52=besøg/besøgende message53=Robotter/Spiders besøgende message54=Gratis realtidsanalyse af logfiler med avancerede web-statistikker message55=af message56=Sider message57=Hits message58=Versioner message59=Operativsystemer message60=Jan message61=Feb message62=Mar message63=Apr message64=Maj message65=Jun message66=Jul message67=Aug message68=Sep message69=Okt message70=Nov message71=Dec message72=Navigation message73=Filtyper message74=Opdater nu message75=Båndbredde message76=Tilbage til forsiden message77=Top message78=dd mmm yyyy - HH:MM message79=Filter message80=Komplet liste message81=Hosts message82=Kendte message83=Robotter message84=Søn message85=Man message86=Tir message87=Ons message88=Tor message89=Fre message90=Lør message91=Dage i ugen message92=Hvem message93=Hvornår message94=Godkendte brugere message95=Min message96=Gennemsnit message97=Max message98=Webkomprimering message99=Båndbredde sparet message100=Før komprimering message101=Efter komprimering message102=Total message103=forskellige søgesætninger message104=Indgangssider message105=Kode message106=Gennemsnitsstørrelse message107=Links fra en nyhedsgruppe message108=KB message109=MB message110=GB message111=Grabber message112=Ja message113=Nej message114=WhoIs information message115=OK message116=Udgangssider message117=Besøgets varighed message118=Luk vindue message119=Bytes message120=Søgning Søgesætninger message121=Søgning Søgeord message122=forskellige henvisende søgemaskiner message123=forskellige henvisende sites message124=Andre sætninger message125=Andre logins (og/eller anonyme brugere) message126=Henvisende søgemaskiner message127=Henvisende web-steder message128=Sammendrag message129=Præcis værdi ikke tilgængelig ved 'helårlig' visning message130=Ordnet liste message131=Afsenderens E-mail message132=Modtagerens E-mail message133=Rapporteret periode message134=Ekstra message135=Skærmopløsninger message136=Orme/Virus angreb message137=Tilføjet til Foretrukne (estimeret) message138=Dage i måneden message139=Diverse message140=Browsere med Java understøttelse message141=Browsere med Macromedia Director understøttelse message142=Browsere med Flash Player understøttelse message143=Browsere med RealPlayer understøttelse message144=Browsere med Quicktime audio understøttelse message145=Browsere med Windows Mediaplayer understøttelse message146=Browsere med PDF understøttelse message147=SMTP Fejlkoder message148=Lande message149=E-Mails message150=Størrelse message151=Først message152=Sidst message153=Exclude filter message154=Koder, der er vist her, gav hits eller trafik, der 'ikke er set' af besøgende, så de medtages ikke i andre tabeller. message155=Cluster message156=Robotter, der er vist her, gav hits eller trafik, der 'ikke er set' af besøgende, så de medtages ikke i andre tabeller. message157=Tallet efter + er antallet af succesfulde hits på 'robots.txt'-filer. message158=Orme, der er vist her, gav hits eller trafik, der 'ikke er set' af besøgende, så de medtages ikke i andre tabeller. message159='Ikke set trafik' er trafik genereret af robotter, orme eller svar med speciel HTTP statuskode. message160=Set trafik message161=Ikke set trafik message162=Månedlig historie message163=Orme message164=forskellige orme message165=Antal succesfuldt afsendte e-mails message166=Antal fejlede/afviste e-mails message167=Sårbare systemer message168=Browsere med Javascript slået fra message169=Lavet af message170=plugins message171=Regioner message172=Byer awstats-7.4/wwwroot/cgi-bin/lang/awstats-es.txt0000640000175000017500000001300312410217071017467 0ustar sksk# Spanish message file (Temu-BCN temujinnn@hotmail.com, Sergio Bayarri Gausi euimail@aiind.upv.es) # $Revision$ - $Date$ PageCode=utf-8 message0=Desconocido message1=Desconocidos (Dirección IP desconocida) message2=Otros message3=Ver detalles message4=Día message5=Mes message6=Año message7=Estadísticas de message8=Primera visita message9=Última visita message10=Número de visitas message11=Visitantes distintos message12=Visita message13=palabras clave diferentes message14=Búsquedas message15=Porcentaje message16=Tráfico message17=Dominios/Países message18=Visitantes message19=Páginas-URLs message20=Visitas por Horas message21=Navegadores message22= message23=Enlaces message24=Nunca se ha actualizado (Consulte 'Build/Update' en la página awstats_setup.html) message25=Visitas por Dominios/Países message26=servidores message27=páginas message28=páginas diferentes message29=Accesos message30=Otras palabras message31=Páginas no encontradas message32=Códigos de error HTTP message33=Versiones de Netscape message34=Versiones de MS Internet Explorer message35=Última actualización message36=Conectado al sitio desde message37=Origen de la conexión message38=Entrada directa o desde Favoritos message39=Origen desconocido message40=Enlaces desde algún buscador de Internet message41=Enlaces desde páginas externas (otros sitios web, excepto buscadores) message42=Enlaces desde páginas internas (otras páginas del sitio) message43=Frases clave utilizadas en el buscador message44=Palabras clave utilizadas en el buscador message45=Dirección IP no identificada message46=Sistema Operativo desconocido (campo de referencia) message47=URLs solicitadas pero no encontradas (código 404 del protocolo HTTP) message48=Dirección IP message49=Solicitudes erróneas message50=Navegadores desconocidos (campo de referencia) message51=robots distintos message52=visitas/visitante message53=Visitas de Robots/Spiders message54=Analizador de históricos libre para estadísticas Web avanzadas message55=de message56=Páginas message57=Solicitudes message58=Versiones message59=Sistemas Operativos message60=Ene message61=Feb message62=Mar message63=Abr message64=May message65=Jun message66=Jul message67=Ago message68=Sep message69=Oct message70=Nov message71=Dic message72=Navegación message73=Tipos de ficheros message74=Actualizar ahora message75=Tráfico message76=Volver a la página principal message77=Top message78=dd mmm yyyy - HH:MM message79=Filtro message80=Lista completa message81=Servidores message82=Conocidos message83=Robots message84=Dom message85=Lun message86=Mar message87=Mie message88=Jue message89=Vie message90=Sab message91=Días de la semana message92=Quién message93=Cuándo message94=Usuarios autentificados message95=Min message96=Media message97=Max message98=Compresión Web message99=Tráfico ahorrado message100=Antes de la compresión message101=Después de la compresión message102=Total message103=frases clave diferentes message104=Página de entrada message105=Código message106=Tamaño medio message107=Enlaces desde grupos de noticias message108=KB message109=MB message110=GB message111=Grabber message112=Sí message113=No message114=Información Whois message115=Aceptar message116=Salida message117=Duración de las visitas message118=Cerrar ventana message119=Bytes message120=Búsquedas por frases clave message121=Búsquedas por palabras clave message122=enlaces desde buscadores diferentes message123=enlaces desde sitios diferentes message124=Otras cadenas de búsqueda message125=Otros usuarios (y/o usuarios anónimos) message126=Enlaces desde buscadores message127=Sitios de enlace message128=Resumen message129=Valor exacto no disponible en la vista anual message130=Tabla de datos message131=Correo electrónico del emisor message132=Correo electrónico del receptor message133=Periodo mostrado message134=Extra/Marketing message135=Resoluciones de pantalla message136=Ataques de Gusanos/Virus message137=Añadido a favoritos (estimado) message138=Días del mes message139=Misceláneos message140=Navegadores con soporte Java message141=Navegadores con soporte Macromedia Director message142=Navegadores con soporte Flash message143=Navegadores con soporte de reproductor Real audio message144=Navegadores con soporte de reproductor Quicktime audio message145=Navegadores con soporte de reproductor Windows Media audio message146=Navegadores con soporte PDF message147=Códigos de error SMTP message148=Países message149=Correos message150=Tamaño message151=Primero message152=Último message153=Excluir Filtro message154=Los códigos mostrados aquí son dados por solicitudes o tráfico "no visto" por los visitantes, y no se incluyen en otros apartados. message155=Cluster message156=Los Robots mostrados aquí son dados por solicitudes o tráfico "no visto" por los visitantes, y no se incluyen en otros apartados. message157=Los números mostrados trás el + son solicitudes con éxito de archivos "robots.txt". message158=Los Gusanos mostrados aquí son dados por solicitudes o tráfico "no visto" por los visitantes, y no se incluyen en otros apartados. message159=El tráfico "no visto" es tráfico generado por robots, gusanos o respuestas de código especial de estado HTTP. message160=Tráfico visto message161=Tráfico no visto message162=Histórico Mensual message163=Gusanos message164=gusanos diferentes message165=Correos electrónicos enviados con éxito message166=Correos electrónicos incorrectos o rechazados message167=Destinos sensibles message168=Javascript deshabilitado message169=Generado por message170=plugins awstats-7.4/wwwroot/cgi-bin/lang/awstats-th.txt0000750000175000017500000002416112410217071017504 0ustar sksk# Thai message file (kamthorn@users.sourceforge.net) # $Revision$ - $Date$ PageCode=utf-8 message0=ไม่ทราบ message1=ไม่ทราบ (ไอพีไม่สามารถค้นà¸à¸¥à¸±à¸šà¹„ด้) message2=อื่นๆ message3=à¹à¸ªà¸”งรายละเอียด message4=วัน message5=เดือน message6=ปี message7=สถิติสำหรับ message8=เยี่ยมชมครั้งà¹à¸£à¸ message9=เยี่ยมชมล่าสุด message10=จำนวนà¸à¸²à¸£à¹€à¸¢à¸µà¹ˆà¸¢à¸¡à¸Šà¸¡ message11=ผู้เยี่ยมชม (ไม่ซ้ำ IP) message12=à¸à¸²à¸£à¹€à¸¢à¸µà¹ˆà¸¢à¸¡à¸Šà¸¡ message13=คำสำคัà¸à¸—ี่à¹à¸•à¸à¸•่างà¸à¸±à¸™ message14=ค้นหา message15=ร้อยละ message16=ปริมาณข้อมูล message17=โดเมน/ประเทศ message18=ผู้เยี่ยมชม message19=หน้า-URL message20=à¹à¸¢à¸à¸•ามชั่วโมง message21=บราวเซอร์ message22= message23=ผู้อ้างอิง message24=ยังไม่เคยถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡ (ดู 'Build/Update' ในหน้าเว็บ awstats_setup.html) message25=โดเมน/ประเทศ ของผู้เยี่ยมชม message26=โฮสต์ message27=หน้าเว็บ message28=หน้า-url ที่à¹à¸•à¸à¸•่างà¸à¸±à¸™ message29=เข้าชม message30=คำอื่นๆ message31=หน้าที่ไม่พบ message32=รหัสสถานะ HTTP message33=รุ่นของเน็ตสเคป message34=รุ่นของ IE message35=ปรับปรุงล่าสุด message36=เชื่อมต่อมายังไซต์นี้ จาภmessage37=ต้นทาง message38=เข้ามาโดยตรง / บุ๊คมาร์ค message39=ไม่ทราบที่มา message40=ลิงà¸à¹Œà¸¡à¸²à¸ˆà¸²à¸à¹€à¸ªà¸´à¸£à¹Œà¸Šà¹€à¸­à¸™à¸ˆà¸´à¹‰à¸™à¸šà¸™à¸­à¸´à¸™à¹€à¸—อร์เน็ต message41=ลิงà¸à¹Œà¸¡à¸²à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸šà¸ à¸²à¸¢à¸™à¸­à¸ (เว็บอื่นๆ ที่ไม่ใช่เสิร์ชเอนจิ้น) message42=ลิงà¸à¹Œà¸¡à¸²à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸šà¸ à¸²à¸¢à¹ƒà¸™ (หน้าอื่นๆ บนไซต์เดียวà¸à¸±à¸™) message43=ประโยคสำคัà¸à¸—ี่ใช้บนเสิร์ชเอนจิ้น message44=คำสำคัà¸à¸—ี่ใช้บนเสิร์ชเอนจิ้น message45=ที่อยู่ไอพีที่ค้นà¸à¸¥à¸±à¸šà¹„ม่ได้ message46=โอเอสที่ไม่รู้จัภ(useragent field) message47=URL ที่ถูà¸à¹€à¸£à¸µà¸¢à¸à¹ƒà¸Šà¹‰à¹à¸•่ไม่มี (รหัส HTTP 404) message48=ที่อยู่ IP message49=จำนวนครั้งที่ผิดพลาด message50=บราวเซอร์ที่ไม่รู้จัภ(useragent field) message51=โรบ็อตที่à¹à¸•à¸à¸•่างà¸à¸±à¸™ message52=จำนวนà¸à¸²à¸£à¹€à¸‚้าชม/ผู้เยี่ยมชม message53=จำนวนผู้เยี่ยมชมที่เป็น โรบ็อต/สไปเดอร์ message54=ตัววิเคราะห์à¹à¸Ÿà¹‰à¸¡à¸›à¸¹à¸¡à¸šà¸±à¸™à¸—ึà¸à¸•ามเวลาจริงฟรี สำหรับสถิติเว็บขั้นสูง message55=ของ message56=หน้า message57=ครั้ง message58=รุ่น message59=ระบบปà¸à¸´à¸šà¸±à¸•ิà¸à¸²à¸£ message60=ม.ค. message61=à¸.พ. message62=มี.ค. message63=เม.ย. message64=พ.ค. message65=มิ.ย. message66=à¸.ค. message67=ส.ค. message68=à¸.ย. message69=ต.ค. message70=พ.ย. message71=ธ.ค. message72=à¸à¸²à¸£à¹€à¸‚้าเยี่ยมชม message73=ชนิดà¹à¸Ÿà¹‰à¸¡ message74=ปรับปรุงเดี๋ยวนี้ message75=à¹à¸šà¸™à¸”์วิดธ์ message76=à¸à¸¥à¸±à¸šà¸ªà¸¹à¹ˆà¸«à¸™à¹‰à¸²à¸«à¸¥à¸±à¸ message77=สูงสุด message78=dd mmm yyyy - HH:MM message79=ตัวà¸à¸£à¸­à¸‡ message80=ทุà¸à¸£à¸²à¸¢à¸à¸²à¸£ message81=à¹à¸¢à¸à¸•ามโฮสต์ message82=รู้จัภmessage83=โรบ็อต message84=อา. message85=จ. message86=อ. message87=พ. message88=พฤ. message89=ศ. message90=ส. message91=à¹à¸¢à¸à¸•ามวันในสัปดาห์ message92=เป็นใคร message93=เมื่อไหร่ message94=ผู้ใช้ที่ได้รับสิทธิอนุà¸à¸²à¸• message95=น้อยที่สุด message96=เฉลี่ย message97=สูงที่สุด message98=à¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸”เว็บ message99=ประหยัดà¹à¸šà¸™à¸”์วิดธ์ได้ message100=เปิดใช้à¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸” message101=ผลลัพธ์à¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸” message102=ทั้งหมด message103=ประโยคสำคัà¸à¸—ี่à¹à¸•à¸à¸•่างà¸à¸±à¸™ message104=เข้า message105=รหัส message106=ขนาดเฉลี่ย message107=ลิงà¸à¹Œà¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡à¸‚่าว message108=KB message109=MB message110=GB message111=Grabber message112=ใช่ message113=ไม่ใช่ message114=Info. message115=ตà¸à¸¥à¸‡ message116=ออภmessage117=ระยะเวลาที่เยี่ยมชม message118=ปิดà¸à¸£à¸­à¸šà¸™à¸µà¹‰ message119=ไบต์ message120=ประโยคค้นหา message121=คำค้นหา message122=เสิร์ชเอนจิ้นที่อ้างอิงมาที่à¹à¸•à¸à¸•่างà¸à¸±à¸™ message123=ไซต์ที่อ้างอิงมาที่à¹à¸•à¸à¸•่างà¸à¸±à¸™ message124=ประโยคอื่น message125=ผู้เข้าใช้อื่น (à¹à¸¥à¸°/หรือผู้ใช้ที่ไม่ออà¸à¸™à¸²à¸¡) message126=เสิร์ชเอนจิ้นที่อ้างอิงมา message127=ไซต์ที่อ้างอิงมา message128=โดยสรุป message129=ค่าเจาะจงที่ไม่อยู่ในมุมมองà¹à¸šà¸š 'ปี' message130=อาเรย์ของค่าข้อมูล message131=ผู้ส่งอีเมล message132=ผู้รับอีเมล message133=ช่วงที่รายงาน message134=พิเศษ/เพื่อà¸à¸²à¸£à¸„้า message135=ขนาดจอภาพ message136=à¸à¸²à¸£à¹‚จมตีโดยหนอนหรือไวรัส message137=Add to favorites (estimated) message138=à¹à¸¢à¸à¸•ามวันที่ message139=Miscellaneous message140=บราวเซอร์ที่สนับสนุนจาวา message141=บราวเซอร์ที่สนับสนุนà¹à¸¡à¹‚ครมีเดียไดเรà¸à¹€à¸•อร์ message142=บราวเซอร์ที่สนับสนุนà¹à¸Ÿà¸¥à¸Š message143=บราวเซอร์ที่สนับสนุนตัวเล่นเรียลออดิโอ message144=บราวเซอร์ที่สนับสนุนตัวเล่นควิà¸à¹„ทม์ออดิโอ message145=บราวเซอร์ที่สนับสนุนตัวเล่นวินโดวส์มีเดียออดิโอ message146=บราวเซอร์ที่สนับสนุน PDF message147=รหัสข้อผิดพลาด SMTP message148=à¹à¸¢à¸à¸•ามประเทศ message149=เมล message150=ขนาด message151=à¹à¸£à¸à¸ªà¸¸à¸” message152=หลังสุด message153=ตัวà¸à¸£à¸­à¸‡à¸­à¸­à¸ message154=รหัสที่à¹à¸ªà¸”งนี้ให้ค่าจำนวนครั้งà¹à¸¥à¸°à¸›à¸£à¸´à¸¡à¸²à¸“ข้อมูลในà¸à¸¥à¸¸à¹ˆà¸¡ "ไม่à¹à¸ªà¸”ง" โดยผู้เยี่ยมชม ดังนั้นค่าเหล่านี้จะไม่ถูà¸à¸™à¸³à¹„ปรวมในชาร์ตอื่นอีภmessage155=คลัสเตอร์ message156=โรบ็อตที่à¹à¸ªà¸”งนี้ให้ค่าจำนวนครั้งà¹à¸¥à¸°à¸›à¸£à¸´à¸¡à¸²à¸“ข้อมูลในà¸à¸¥à¸¸à¹ˆà¸¡ "ไม่à¹à¸ªà¸”ง" โดยผู้เยี่ยมชม ดังนั้นค่าเหล่านี้จะไม่ถูà¸à¸™à¸³à¹„ปรวมในชาร์ตอื่นอีภmessage157=จำนวนที่อยู่หลัง + คือจำนวนครั้งที่อ่านไฟล์ "robots.txt" สำเร็จ message158=หนอนที่à¹à¸ªà¸”งนี้ให้ค่าจำนวนครั้งà¹à¸¥à¸°à¸›à¸£à¸´à¸¡à¸²à¸“ข้อมูลในà¸à¸¥à¸¸à¹ˆà¸¡ "ไม่à¹à¸ªà¸”ง" โดยผู้เข้าเยี่ยมชม ดังนั้นค่าเหล่านี้จะไม่ถูà¸à¸™à¸³à¹„ปรวมà¸à¸±à¸šà¸Šà¸²à¸£à¹Œà¸•อื่นอีภmessage159=ปริมาณของข้อมูลที่ไม่ถูà¸à¹à¸ªà¸”ง ประà¸à¸­à¸šà¸”้วยปริมาณข้อมูลที่ถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¹‚ดยโรบ็อต หนอน หรือà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸šà¸”้วยรหัสสถานะพิเศษของ HTTP message160=ปริมาณของข้อมูลที่ถูà¸à¹à¸ªà¸”ง message161=ปริมาณของข้อมูลที่ไม่ถูà¸à¹à¸ªà¸”ง message162=ประวัติรายเดือน message163=จำนวนหนอน message164=หนอนที่à¹à¸•à¸à¸•่างà¸à¸±à¸™ message165=เมลที่ส่งได้สำเร็จ message166=เมลที่ล้มเหลวหรือถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜ message167=Sensitive targets message168=ปิดà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ JavaScript awstats-7.4/wwwroot/cgi-bin/lang/awstats-is.txt0000640000175000017500000001116312410217071017500 0ustar sksk# Icelandic message file (throstur@bylur.net) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Óþekkt message1=óþekktar (ekki tókst að fletta upp IP-vistfangi) message2=Annað message3=Nánari upplýsingar message4=Dagur message5=Mánuður message6=Árið message7=Tölfræði fyrir message8=Fyrsta innlit message9=Síðasta innlit message10=Fjöldi innlita message11=Fjöldi gesta message12=Innlit message13=mismunandi leitarorð message14=Leit message15=Hlutfall message16=Umferð message17=Lén/lönd message18=Gestir message19=Vefsíður-URL message20=Klukkustundir message21=Vafrar message22= message23=Tilvísandi slóð message24=Aldrei verið uppfært (Sjá 'Build/update' á awstats_setup.html síðunni) message25=Lén/land gesta message26=vélar message27=síður message28=mismunandi síður message29=Skoðað message30=Önnur orð message31=Síða fannst ekki message32=HTTP villuboð message33=Netscape útgáfur message34=IE útgáfur message35=Síðast uppfært message36=Tengdist vefsvæði frá message37=Uppruni message38=Beinar tengingar / Bókamerki message39=Uppruni óþekktur message40=Tilvísanir frá leitarvélum message41=Tilvísanir utan vefs (önnur vefsvæði fyrir utan leitarvélar) message42=Tilvísanir innan vefs (önnur síða innan þessa vefsvæðis) message43=Setningar notaðar á leitarvélum message44=Leitarorð notuð á leitarvélum message45=Óþekkt IP vistfang message46=Óþekkt stýrikerfi (useragent reitur) message47=Skrár sem óskað var eftir en fundust ekki (HTTP kóði 404) message48=IP-vistfang message49=Villa Sótt message50=Óþekktir vafrar (useragent reitur) message51=mismunandi leitarormar message52=innlit/gest message53=Heimsóknir leitarorma message54=Ókeypis rauntíma annálagreinir fyrir veftölfræði message55=af message56=Síður message57=Skrár message58=Útgáfur message59=Stýrikerfi message60=jan message61=feb message62=mar message63=apr message64=maí message65=jún message66=júl message67=ágú message68=sep message69=okt message70=nóv message71=des message72=Vafur message73=Tegundir skráa message74=Uppfæra núna message75=Bandvídd message76=Til baka á aðalsíðu message77=efstu message78=dd mmm yyyy - HH:MM message79=Sía message80=Heildarlisti message81=Vélar message82=þekktar message83=leitarormar message84=sun message85=mán message86=þri message87=mið message88=fim message89=fös message90=lau message91=Vikudagar message92=Hver message93=Hvenær message94=Innskráðir notendur message95=Lægsta message96=Meðaltal message97=Hæsta message98=Þjöppun vefs message99=Spöruð bandvídd message100=Kveikt á þjöppun message101=Útkoma þjöppunar message102=Samtals message103=mismunandi leitarsetningar message104=Fyrsta síða message105=Kóði message106=Meðalstærð message107=Tilvísanir frá fréttahópum message108=KB message109=MB message110=GB message111=Þjófur message112=Já message113=Nei message114=Upplýsingar um lén message115=Í lagi message116=Síðasta síða message117=Lengd innlits message118=Loka glugga message119=bæti message120=Leitarsetningar message121=Leitarorð message122=mismunandi tilvísandi leitarvélar message123=mismunandi tilvísandi vefir message124=Aðrar setningar message125=Aðrar innskráningar (og/eða gestir) message126=Tilvísandi leitarvélar message127=Tilvísandi vefsvæði message128=Samantekt message129=Nákvæmur fjöldi ekki mögulegur þegar heilt ár er birt message130=Gildisfylki gagna message131=Netföng sendanda message132=Netföng viðtakanda message133=Skýrslutímabil message134=Annað/markaðsmál message135=Skjástærðir message136=Ormar og vírusar message137=Bætt við sem bókamerki (áætlun) message138=Mánaðardagar message139=Ýmislegt message140=Vafrar með Java stuðning message141=Vafrar með Macromedia Director stuðning message142=Vafrar með Flash stuðning message143=Vafrar með Real audio stuðning message144=Vafrar með Quicktime hljóðspilunarstuðning message145=Vafrar með Windows Media hljóðspilunarstuðning message146=Vafrar með PDF stuðning message147=SMTP villuboð message148=Lönd message149=Bréf message150=Stærð message151=Fyrsta message152=Síðasta message153=Útilokunarsía message154=Þessi villuboð þýða að gestir hafi í raun ekki séð síðurnar, svo þeir eru ekki taldir annars staðar en hér. message155=Klasi message156=Þessar heimsóknir komu ekki frá raunverulegum gestum, svo þær eru ekki taldar með annars staðar en hér. message157=Tölur eftir + tákna hversu oft "robots.txt" skrár voru sóttar. message158=Þessar heimsóknir komu ekki frá raunverulegum gestum, svo þær eru ekki taldar með annars staðar en hér. message159=""Engin augu" tákna umferð leitarorma, vírusa og sérstakra HTTP kóða. message160=Augu message161=Engin augu message162=Mánaðarleg saga message163=Ormar message164=mismunandi ormar message165=Send bréf message166=Höfnuð bréf message167=Sýkjanlegt message168=Slökkt á Javascript awstats-7.4/wwwroot/cgi-bin/lang/awstats-al.txt0000640000175000017500000000636612410217071017472 0ustar sksk# Vargjet e mesazheve në Shqip. Ju lutem më kontaktoni për korrigjime (artonberisha@radiokosova.net, http://www.radiokosova.net) # $Revision$ - $Date$ PageCode=utf-8 message0=Panjohur message1=Panjohur (IP e Pazgjidhur) message2=Tjera message3=Paraqit Detajet message4=Ditës message5=Muajit message6=Viti message7=Statistikat për message8=Vizita e parë message9=Vizita e fundit message10=Numri i vizitave message11=Vizitor të përbashkët message12=Vizita message13=Fjali të ndryshme message14=Kërkesa message15=Përqind message16=Trafiku message17=Vendet message18=Vizitorë message19=Faqe-URL message20=Orës message21=Shfletues message22=Gabime HTTP message23=Dërguest message24=Pafreskuar message25=Vizitorët sipas Vendeve message26=Strehues message27=Faqe message28=Faqe të ndryshme-url message29=Paraqitur message30=Fjali tjera message31=Faqet që nuk janë gjetur message32=HTTP kodi gabimeve message33=Botimi Netscape message34=Botimi IE message35=Freskimi Fundit message36=Lidhu te faqja nga message37=Origjina message38=Adresa direkte/Shenjime message39=Origjinë e Panjohur message40=Nyjet nga Kërkuest message41=Nyjet nga Faqet e jashtme (Faqe tjera n'përjashtim me Kërkuest) message42=Nyjet nga faqet e mbrendshme (Mbrenda faqes) message43=Kryefrazat e kërkuara message44=Kryefjalitë e përdorura nga kërkuest message45=Adresa IP e pazgjidhur message46=SO i panjohur(përdoruesi) message47=Nevojitur mirpo nuk janë gjetur URL't(HTTP kodi 404) message48=IP Adresa message49=Gabimet gjatë hyrjes message50=Shfletuest e panjohur(Përdoruest) message51=Robotat e ndryshëm message52=Vizita/Vizitor message53=Robota/Vizitor marimange message54=AWStats - Analizues falas për çdo faqe message55=Prej message56=Faqe message57=Hyrje message58=Botimet message59=Sistemi Operues message60=Jan message61=Shk message62=Mar message63=Pr message64=Maj message65=Qër message66=Korr message67=Gush message68=Sht message69=Tet message70=Nën message71=Dhjet message72=Lundrimi message73=Tipi Vargjeve message74=Freskoje message75=Transmetim message76=Prapa te faqja kryesore message77=Top message78=dd mmm yyyy - HH:MM:SS message79=Filteri message80=Lista message81=Strehuest message82=Njohur message83=Robotat message84=Diel message85=Hën message86=Mar message87=Mer message88=Enj message89=Pre message90=Sht message91=Javës message92=Kush vizitoi message93=Rezultatet Sipas message94=Vërtetimet message95=Min message96=Mesatarja message97=Maks message98=Ngjeshja e Faqes message99=Transmetimi i Ruajtur message100=Ngjeshe message101=Ngjeshja message102=Shuma message103=Kryefraza të ndryshme message104=Hyrjet message105=Kodi message106=Sasia mesatare message107=Lidhjet nga lajmëruest message108=KB message109=MB message110=GB message111=Rrëmbyes message112=Po message113=Jo message114=WhoIs info message115=N'rregull message116=Dalje message117=Zgjatja e Vizitës message118=Mbylle dritaren message119=Bajta message120=Kryefrazat e Kërkuara message121=Kryefjalit e Kërkuara message122=Makinat e ndryshme kërkuese message123=Nga Faqet e ndryshme message124=Fraza tjera message125=Hyrjet tjera (dhe/ose t'panjohurit) message126=Makinat kërkuese message127=Faqet drejtuese message128=Pëgjithësia message129=Valuta është pavlerë në shiqimin 'Vjetor' message130=Vititawstats-7.4/wwwroot/cgi-bin/lang/awstats-nn.txt0000640000175000017500000000751312410217071017504 0ustar sksk# Norwegian Nynorsk message file (by Karl Ove Hufthammer ) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Ukjent message1=ukjente (fann ikkje vertsnamn) message2=Andre message3=Vis detaljar message4=Dag message5=Månad message6=År message7=Statistikk for message8=Første besøk message9=Siste besøk message10=Talet på besøk message11=Unike gjestar message12=Besøk message13=forskjellige søkjeord message14=Søk message15=Prosent message16=Trafikk message17=Domene/land message18=Gjestar message19=Sider message20=Timar message21=Nettlesarar message22=HTTP-feil message23=Referentar message24=Aldri oppdatert message25=Domene/land message26=vertar message27=sider message28=forskjellige sider message29=Viste sider message30=Andre ord message31=Manglande sider message32=HTTP-feilkodar message33=Netscape-versjonar message34=IE-versjonar message35=Siste oppdatering message36=Kopla til sida frå message37=Opphav message38=Direkteadresse/bokmerke message39=Ukjent opphav message40=Lenkjer frå søkjemotorar message41=Lenkjer frå eksterne sider (ikkje søkjemotorar) message42=Lenkjer frå interne sider (sider på same nettstad) message43=Søkjeuttrykk brukt message44=Søkjeord brukt message45=Ukjente vertsnamn (IP-adresse) message46=Ukjente OS (referentfelt) message47=Manglande sider (HTTP-feilkode 404) message48=IP-adresse message49=Feiltreff message50=Ukjente nettlesarar message51=forskjellige robotar message52=besøk/gjest message53=Robotbesøk message54=Gratis logganalysator for avansert vevstatistikk message55=av message56=Sider message57=Treff message58=Versjonar message59=Operativsystem message60=Jan message61=Feb message62=Mar message63=Apr message64=Mai message65=Jun message66=Jul message67=Aug message68=Sep message69=Okt message70=Nov message71=Des message72=Navigasjon message73=Filtypar message74=Oppdater no message75=Bandbreidd message76=Tilbake til hovudsida message77=øvste message78=yyyy-mm-dd - HH:MM message79=Berre vis message80=Full liste message81=Vertar message82=kjente message83=Robotar message84=Sø. message85=Må. message86=Ty. message87=On. message88=To. message89=Fr. message90=La. message91=Dagar i veka message92=Kven message93=Når message94=Autentiserte brukarar message95=Min. message96=Snitt message97=Maks. message98=Komprimering message99=Bandbreidd spart message100=Komprimering på message101=Komprimeringsresultat message102=Totalt message103=forskjellige søkjeuttrykk message104=Inngangssider message105=Kode message106=Snittstorleik message107=Lenkjer frå njusgrupper message108=KiB message109=MiB message110=GiB message111=Hentar message112=Ja message113=Nei message114=WhoIs-info message115=OK message116=Utgangssider message117=Besøkslengd message118=Lukk vindauge message119=Byte message120=Søkjeuttrykk message121=Søkjeord message122=forskjellige søkjemotorar message123=forskjellige nettstadar message124=Andre uttrykk message125=Andre pålogginar (og/eller anonyme brukarar) message126=Søkjemotorar message127=Nettstadar message128=Samandrag message129=Nøyaktige tal finst ikkje for årsoversikta message130=Verditabellar message131=E-post (avsendar) message132=E-post (mottakar) message133=Rapportperiode message134=Ekstra message135=Skjermstorleik message136=Orm- og virusåtak message137=Lagt til i bokmerkesamling (ikkje nøyaktig) message138=Dagar i månaden message139=Ymse message140=Nettlesarar med Java-støtte message141=Nettlesarar med Macromedia Director-støtte message142=Nettlesarar med Flash-støtte message143=Nettlesarar med RealAudio-lydstøtte message144=Nettlesarar med QuickTime-lydstøtte message145=Nettlesarar med Windows Media-lydstøtte message146=Nettlesarar med PDF-støtte message147=SMTP-feilkodar message148=Land message149=E-postar message150=Storleik message151=Første message152=Siste message153=Ikkje vis message154=* Kodar her gav treff eller trafikk «ikkje sett» av gjestane, og blir derfor vist for seg. message155=Klyngeawstats-7.4/wwwroot/cgi-bin/lang/awstats-lt.txt0000640000175000017500000001337412410217071017512 0ustar sksk# Lithuanian message file (varas@lzuu.lt) # Updated by edmondas@datalogistiikka.fi # $Revision$ - $Date$ PageCode=utf-8 message0=Nežinomas message1=Nežinomi (nenustatyas ip adresas) message2=Kiti message3=Rodyti iÅ¡samiau message4=Diena message5=MÄ—nuo message6=Metai message7=Statistika message8=Pirmas apsilankymas message9=Paskutinis apsilankymas message10=Viso aplankymų message11=UnikalÅ«s lankytojai message12=Apsilankymas message13=skirtingas(-i) raktinis(-iai) žodis(-žiai) message14=PaieÅ¡ka message15=Procentai message16=Duomenų srautas message17=Domenai/Å alys message18=Lankytojai message19=Puslapių adresai message20=Valandos message21=NarÅ¡yklÄ—s message22= message23=PersiuntÄ—jai message24=Duomenų bazÄ—je nÄ—ra įrašų (Skaitykite 'Build/Update' skyrių awstats_setup.html puslapyje) message25=Lankytojai domenai/Å¡alys message26=Å¡altiniai(hosts) message27=puslapiai message28=skirtingas(-i) puslapio(-ių)-adresas(-ai) message29=PeržiÅ«rÄ—ta message30=Kiti žodžiai message31=Nerasti puslapiai message32=HTTP bÅ«senų kodai message33=Netscape versijos message34=IE versijos message35=Paskutinis atnaujinimas message36=Prisijungta prie svetainÄ—s iÅ¡ message37=KilmÄ— message38=Tiesioginis adresas / Adresyno įraÅ¡as / Nuoroda el. paÅ¡te... message39=Nežinoma kilmÄ— message40=Nuorodos iÅ¡ interneto paieÅ¡kos sistemų message41=Nuorodos iÅ¡ iÅ¡orinų puslapių (kitos interneto svetainÄ— iÅ¡skyrus paieÅ¡kos sistemas) message42=Nuorodos iÅ¡ vidinių puslapių (kiti puslapiai iÅ¡ tos paÄios svetainÄ—s) message43=RaktinÄ—s frazÄ—s naudotos paieÅ¡kos sistemose message44=Raktiniai žodžiai naudoti paieÅ¡kos sistemose message45=Nenustatyti IP adresai message46=Nežinoma OS (narÅ¡yklÄ—s identifikacinis laukas) message47=IeÅ¡koti bet nerasti adresai (HTTP kodas 404) message48=IP adresas message49=Klaida Lankymų skaiÄius message50=Nežinomos narÅ¡yklÄ—s (narÅ¡yklÄ—s identifikacinis laukas) message51=skirtingas(-i) robotas(-ai) message52=apsilankymai/lankytojai message53=Robotai/PaieÅ¡kos sistemų apsilankymai message54=Nemokamas sisteminių įrašų failų analizatorius iÅ¡plÄ—stinei tinklapių statistikai message55=iÅ¡ message56=Puslapiai message57=Apsilankymai message58=Versijos message59=OperacinÄ—s sistemos message60=Sau message61=Vas message62=Kov message63=Bal message64=Geg message65=Bir message66=Lie message67=Rgp message68=Rgs message69=Spa message70=Lap message71=Gru message72=NarÅ¡ymo juosta message73=Failo tipas message74=Atnaujinti dabar message75=Srautas message76=Atgal į pagrindinį puslapį message77=TOP message78=yyyy mmm dd - HH:MM message79=Filtras message80=Visas sÄ…raÅ¡as message81=Lankytojų kompiuteriai message82=Žinomi message83=Robotai message84=Sek message85=Pir message86=Ant message87=Tre message88=Ket message89=Pen message90=Å eÅ¡ message91=SavaitÄ—s dienos message92=Kas message93=Kada message94=PrisijungÄ™ vartotojai message95=Minimaliai message96=VidutiniÅ¡kai message97=Maksimaliai message98=Tinklapio suspaudimo bÅ«das message99=IÅ¡saugota srauto message100=Suspaudimas įjungtas message101=Suspaudimo rezultatas message102=Viso message103=skirtingos raktinÄ—s frazÄ—s message104=Ä®raÅ¡as message105=Kodas message106=Vidutinis dydis message107=Nuorodos iÅ¡ naujienų grupių message108=KB message109=MB message110=GB message111=Duomenų vagis message112=Taip message113=Ne message114=Info. message115=Gerai message116=IÅ¡eiti message117=Apsilankymo trukmÄ— message118=Uždaryti langÄ… message119=Baitai message120=PaieÅ¡ka RaktinÄ—s frazÄ—s message121=PaieÅ¡ka Raktiniai žodžiai message122=skirtingos nukreipianÄios paieÅ¡kos sistemos message123=skirtingi nukreipiantys puslapiai message124=Kitos frazÄ—s message125=Kiti prisijungimai (ir/arba anoniminiai vartotojai) message126=NukreipianÄios paieÅ¡kos sistemos message127=Nukreipiantys puslapiai message128=SuvestinÄ— message129=NÄ—ra tikslių duomenų 'MetinÄ—je' ataskaitoje message130=Duomenų reikÅ¡mių masyvai message131=SiuntÄ—jo el. paÅ¡to adresas message132=GavÄ—jo el. paÅ¡to adresas message133=PraneÅ¡imo periodas message134=Papildomai/Marketingas message135=Ekrano dydžiai message136=Kirminų/Virusų atakos message137=PridÄ—ta į adresynÄ… message138=MÄ—nesio dienos message139=Ä®vairÅ«s message140=NarÅ¡yklÄ—s su Java palaikymu message141=NarÅ¡yklÄ—s su Macromedia Director palaikymu message142=NarÅ¡yklÄ—s su Flash palaikymu message143=NarÅ¡yklÄ—s su Real audio palaikymu message144=NarÅ¡yklÄ—s su Quicktime garso grojimo palaikymu message145=NarÅ¡yklÄ—s su Windows Media garso grojimo palaikymu message146=NarÅ¡yklÄ—s su PDF palaikymu message147=SMTP klaidų kodai message148=Å alys message149=PaÅ¡tai message150=Dydis message151=Pirmas message152=Paskutinis message153=IÅ¡jungi filtrÄ… message154=Kodai kurie yra pateikti Äia yra "nematomi" lankytojų, todÄ—l jie nÄ—ra pateikti kituose grafikuose. message155=Klasteris message156=Robotų užklausos pažymÄ—tos Å¡iais kodais yra "nematomos" lankytojų, taigi jie nÄ—ra pateikti kituose grafikuose. message157=SkaiÄiai nurodyti po + yra sÄ—kmingų užklausų į "robots.txt" failÄ… suma. message158=Kirminų užklausos pažymÄ—tos Å¡iais kodais yra "nematomos" lankytojų, taigi jie nÄ—ra pateikti kituose grafikuose. message159=Nematomas srautas - srautas generuojamas robotų, kirminų arba serverio atsakymų su specialiais HTTP bÅ«senos kodais. message160=Matomas srautas message161=Nematomas srautas message162=MÄ—nesio istorija message163=Kirminai message164=skirtingi kirminai message165=SÄ—kmingai iÅ¡siųsti el. laiÅ¡kai message166=Atmesti el. laiÅ¡kai message167=Neskelbtini adresai message168=Javascript iÅ¡jungtas message169=Sukurta su message170=Pluginai message171=Regionai message172=Miestai message173=Opera versijos message174=Safari versijos message175=Chrome versijos message176=Konqueror versijos message177=, message178=Atsiuntimai awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/0000750000175000017500000000000012410217071017040 5ustar skskawstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ro.txt0000640000175000017500000001304312410217071022334 0ustar sksk
    O noua vizita este definita ca fiind orice acces al unui vizitator care nu a fost conectat la site in ultimele #VisitTimeOut# mn.
    Numarul de masini client (adresa IP) care vin sa viziteze site-ul (si care au vizionat cel putin o pagina).
    Aceste date se refera la numarul de persoane fizice diferite care au ajuns pe site in oricare din zile.
    De cate ori o pagina a site-ului este vizionata (suma pentru toti vizitatorii si toate vizitele).
    Aceasta informatie difera de "Accesari" deoarece numara doar paginile HTML si nu si imaginile sau alte tipuri de fisiere.
    De cate ori o pagina, imagine, fisier de pe site a fost vizionata sau descarcata (download) de catre cineva.
    Aceasta informatie este furnizata doar ca referinta deoarece pentru marketing este de multe ori preferat numarul de "pagini" vazute.
    Aceasta informatie contine traficul total de date pentru toate paginile, imaginile si fisierele de pe site.
    Unitatea de masura este KB, MB sau GB (KiloBytes, MegaBytes sau GigaBytes)
    #PROG# recunoaste accesele la site rezultate dintr-o cautare efectuata cu ajutorul a #SearchEnginesArray# din cele mai cunoscute motoare de cautare si repertoare (ca Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Lista tuturor paginilor externe care au fost punctul de plecare (si de intrare) in site (sunt listate doar primele #MaxNbOfRefererShown# in ordinea numarului de utilizari). Intrarile pe site din rezultatul generat de motoarele de cautare sunt excluse aici deoarece ele au fost deja incluse in precedenta linie a acestui tabel.
    Acest tabel contine lista celor mai frecvente cuvinte cheie care au fost utilizate de motoarele de cautare sau repertoare pentru a gasi acest site. (Cuvintele cheie folosite de cele mai cunoscute #SearchEnginesArray# motoare de cautare sau repertoare - Yahoo, Altavista, Lycos, Google, Voila, etc... - sunt recunoscute de #PROG#).
    Robotii sunt programe vizitator automate utilizate de multe motoare de cautare si care scaneaza situl web pentru a-l indexa si evalua, pentru a colecta statistici despre siturile web din Internet si/sau pentru a verifica daca situl este online.
    #PROG# recunoaste #RobotArray# roboti.
    Toate statisticile referitoare la timp sunt bazate pe timpul din masina care gazduieste serverul web.
    Aici, datele listate sunt: valori medii (calculate din toate datele intre prima si ultima vizita)
    Aici, datele listate sunt: insumari cumulative (calculate din toate datele intre prima si ultima vizita)
    Nici o descriere pentru aceasta eroare.
    Cererea a fost inteleasa de server dar va fi procesata mai tarziu.
    Serverul a procesat cererea dar nu exista nici un document de trimis.
    Continut partial.
    Documentul cerut a fost mutat si este acum la o alta adresa continuta in raspuns.
    Nici o descriere pentru aceasta eroare.
    Eroare de sintaxa, serverul nu a inteles cererea.
    Incercare de a accesa un URL unde este necesara autentificarea cu user/parola.
    Un numar mare in acest loc poate insemna ca cineva (de exemplu un hacker) incearca sa sparga sau sa intre in site (sperand sa intre intr-o zona securizata incercand de exemplu diferite perechi user/parola).
    Incercare de a accesa un URL care nu a fost configurat sa fie atins, nici macar cu o autentificare user/parola (de exemplu un URL dintr-un director care nu este definit ca accesibil).
    Incercare de a accesa un URL inexistent. Aceasta eroare inseamna adesea ca exista o legatura invalida undeva pe site sau ca un vizitator a tastat gresit un URL.
    Serverul a consumat prea mult timp pentru a raspunde cererii. Aceasta eroare indica adesea un script CGI lent pe care serverul a incercat sa-l aborteze sau un server web extrem de incarcat.
    Eroare interna. Aceasta eroare este deseori cauzata de un program CGI care s-a terminat anormal (de exemplu prin coredump).
    Cerere de actiune necunoscuta.
    Cod returnat de un server HTTP care lucreaza ca un proxy sau gateway in cazul in care un server tinta real nu a raspuns cu succes cererii client.
    Eroare interna server.
    Depasire timp la Gateway.
    Versiune HTTP nesuportata.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-is.txt0000640000175000017500000001430512410217071022331 0ustar sksk
    Nýtt innlit er skilgreint sem hver nýr gestur (sem skoðar síðu) sem var ekki tengdur við vefsvæði þitt síðustu #VisitTimeOut# mínúturnar
    Fjöldi véla (IP-vistfanga) sem litu inn á vefinn (og sóttu að lágmarki eina síðu.
    Gögnin gefa til kynna fjölda einstakra gesta sem litu inn á síðuna.
    Fjöldi skipta sem b>síða á þessu vefsvæði var skoðuð (Samtölur allra gesta fyrir öll innlit).
    Munurinn á þessum gögnum og "skrár" liggur í því að eingöngu eru taldar HTML síður en ekki myndir eða annars konar skrár.
    Fjöldi skipta sem síða, mynd eða skrá á vefsvæðinu var skoðuð eða sótt af einhverju(m).
    Þessi gögn eru einungis höfð með til hliðsjónar, þar sem fjöldi "síðna" sem skoðaðar voru eru oft talin vera betri markaðsgögn.
    Þessar upplýsingar gefa mynd af því gagnamagni sem sótt var af vefnum, síðum, myndum og skrám.
    Einingar eru í KB, MB eða GB (Kílóbæti, MegaBæti eða GígaBæti)
    #PROG# greinir hvert innlit á vefinn eftir leit á #SearchEnginesArray# vinsælustu leitarvélunum (Yahoo, Altavista, Lycos, Google, Voila, o.s.frv.).
    Listi yfir allar tilvísanir utan þessa vefsvæðis sem notaðar voru til að vísa til vefsvæðis þíns (Einungis #MaxNbOfRefererShown# oftast notuðu tilvísanirnar eru birtar hér). Links used by the results of the search engines are excluded here because they have already been included on the previous line within this table. Tilvísunum frá niðurstöðusíðum leitarvéla er sleppt hér þar sem þær hafa nú þegar verið notaðar í línunni hér fyrir ofan.
    Taflan sýnir þau leitarorð og setningar sem oftast hafa verið notuð á leitarvélum til að finna vefsvæði þitt. (Leitarorð frá #SearchEnginesArray# algengustu leitarvélunum sem #PROG# þekkir, svo sem Yahoo, Altavista, Lycos, Google, Voila, o.s.frv.).
    Athugið að heildarfjöldi leita með leitarorðum gæti verið hærri en heildarfjöldi leita eftir leitarsetningum (réttur fjöldi leita) því að ef notuð eru 2 leitarorð í sömu leitinni er leitin talin tvisvar sem orðaleit en einu sinni sem setningaleit.
    Leitarormar ("robots" og "spiders") eru 'sjálfvirkir gestir' notaðir af mörgum leitarvélum sem skoða, skrásetja og flokka innihald vefsins, safna tölulegum upplýsingum um tilvísanir og/eða hvort vefsvæðið sé enn nettengt.
    #PROG# þekkir allt að #RobotArray# leitarorma.
    Öll tímatengd tölfræði er byggð á klukku netþjóns.
    Gögn í þessari skýrslu eru: meðalgildi (reiknuð út frá öllum gögnum milli fyrsta og síðasta innlits á greindu tímabili)
    Gögn í þessari skýrslu eru: samtölur (reiknuð út frá öllum gögnum milli fyrsta og síðasta innlits á greindu tímabili)
    Ekki er alltaf hægt að reikna út Lengd innlita. Helstu ástæður þess eru eftirfarandi:
    - Innliti var ekki lokið þegar tölfræðin var reiknuð út.
    - Innlit byrjaði á síðasta klukkutíma (eftir kl 23:00) sólarhrings síðasta dags mánaðar (Tæknileg ástæða í #PROG# hindrar útreikning slíkra innlita)
    Ormar eru 'sjálfvirkir gestir'/b> sem eru í raun aðrir netþjónar sem sýktir eru af vírusi, sem reyna að framkvæma ákveðnar heimsóknir á vefþjón þinn til að sýkja hann. Í flestum tilfellum nýta slíkir ormar sér öryggisholur í gömlum vefþjónum. Ef kerfi þitt er ekki sýkjanlegt af þessum ormi getur þú hunsað þessi innlit.
    Það eru mjög fáir 'netþjónaormar' til í heiminum en þeir eru mjög virkir á ákveðnum tímum. #PROG# getur þekkt #WormsArray# mismunandi orma (Nimda, Code Red...).
    Engin lýsing er til á þessari villu.
    Þjónninn skildi beiðnina en afgreiðir hana síðar.
    Þjónninn hefur afgreitt beiðnina en það vantar skrána sem á að senda.
    Einungis hluti skráar afgreiddur.
    Umbeðin skrá hefur verið færð á nýtt veffang sem sent var með í svarinu.
    Engin lýsing er til á þessari villu.
    Stílvilla, þjónninn skildi ekki beiðnina.
    Beðið var um vefslóð þar sem notandanafns er krafist.
    Ef mikið er um þetta getur það bent til þess að tilraunir séu gerðar til að brjótast inn á síðu á með mörgum samsetningum af notendanöfnum og lykilorðum (til að fá aðgang að gögnum sem eru háð aðgangsstýringu).
    Beðið var um afgreiðslu á vefslóð sem ekki á að vera aðgengileg jafnvel þótt rétt notendanafn og lykilorð hafi verið notað) (Gæti verið mappa sem ekki er merkt "vafranleg".).
    Beðið var um vefslóð sem ekki er til. Þessi villa kemur oft upp þegar tengill á vefsíðu inniheldur villu eða gestur slær vitlausa slóð í vafrann sinn.
    Þjónninn hefur tekið of langan tíma í afgreiðslu beiðninnar. Þessi villa gefur oft til kynna hæga CGI skriftu sem þjónninn neyddist til að drepa eða mjög upptekinn vefþjón.
    Innri villa hefur komið upp á þjóni. Þessi villa kemur oft upp ef CGI forrit hefur lokið keyrslu á óeðlilegan hátt.
    Beiðni er ekki þekkt.
    Villuboð sem skilað er af vefþjóni sem þjónar sem vefsel eða gátt þegar umbeðin þjónustuvél svarar ekki fyrirspurnum frá gestum.
    Innri villa kom upp á þjóni.
    Samband rofnaði við gátt.
    HTTP útgáfa er ekki studd.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-jp.txt0000640000175000017500000000766112410217071022336 0ustar sksk
    #VisitTimeOut# 分å‰ã¾ã§ã®è¨ªå•数。
    最低1ページを訪å•ã—ãŸã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãƒ›ã‚¹ãƒˆï¼ˆIPアドレス)。
    ã“れã¯è¨ªå•者ã®å®Ÿæ•°ã§ã™ã€‚
    ページãŒè¡¨ç¤ºã•れãŸå›žæ•°ï¼ˆã™ã¹ã¦ã®è¨ªå•者ã¨è¨ªå•ã®åˆè¨ˆï¼‰ã€‚
    ã“ã®ãƒ‡ãƒ¼ã‚¿ã¯ã€Œä»¶æ•°ã€ã¨ã¯é•ã„ã€HTMLファイルã®ã¿ãŒå…¥ã£ã¦ã„ã¾ã™ã€‚
    ページã€ç”»åƒã€ãƒ•ァイルãŒè¡¨ç¤ºã•れãŸå›žæ•°ã€‚
    å‚照程度ã«ãŠä½¿ã„ãã ã•ã„。
    ã™ã¹ã¦ã®ãƒšãƒ¼ã‚¸ã€ç”»åƒã€ãƒ•ァイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«ã‚ˆã‚‹ãƒ‡ãƒ¼ã‚¿è»¢é€é‡ã€‚
    å˜ä½ã¯ KB ã€MB ã¾ãŸã¯ GB 。
    人気ã®ã‚る検索エンジン(Yahooã€Altavistaã€Lycosã€Googleã€Voilaãªã©ï¼‰ã§ã®æ¤œç´¢ã«ã‚ˆã‚‹ã‚¢ã‚¯ã‚»ã‚¹ã€‚
    ユーザー(コンピュータ)ãŒã“ã®ã‚µã‚¤ãƒˆã«ã¤ã„ã¦ã®æƒ…報を得ãŸå¤–部ページ。
    ã“ã®ã‚µã‚¤ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã§å…¥åŠ›ã•れãŸã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã®ãƒªã‚¹ãƒˆã€‚
    ロボット(別åスパイダー)ã¨ã¯ã€ã‚¦ã‚§ãƒ–中を動ã回ã£ã¦å…¨ã¦ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を中央サーãƒãƒ¼ä¸Šã«ä¿å­˜ã™ã‚‹ã‚³ãƒ³ãƒ”ューター・プログラム。
    ã“れらã®ãƒ‡ãƒ¼ã‚¿ã¯ã‚µãƒ¼ãƒãƒ¼æ™‚é–“ã«åŸºã¥ã„ã¦ã„ã¾ã™ã€‚
    最åˆã‹ã‚‰æœ€å¾Œã¾ã§ã®è¨ªå•ã§é›†ã‚ãŸãƒ‡ãƒ¼ã‚¿ã«ã‚ˆã£ã¦è¨ˆç®—ã—ãŸå¹³å‡æ•°ã€‚
    最åˆã‹ã‚‰æœ€å¾Œã¾ã§ã®è¨ªå•ã§é›†ã‚ãŸãƒ‡ãƒ¼ã‚¿ã«ã‚ˆã£ã¦è¨ˆç®—ã—ãŸç·æ•°ã€‚
    POST ãŒæˆåŠŸã€‚ã¾ãŸã¯PUT ãŒæ–°ã—ã„オブジェクトを作æˆã€‚
    è¦æ±‚ã¯ã€å—付ãŸãŒã€å‡¦ç†æœªå®Œäº†ã€‚
    サーãƒãƒ¼ã¯è¦æ±‚ã‚’å—付ã‘ãŸãŒã€è¿”ã™æƒ…å ±ãŒãªã„。
    サーãƒãƒ¼ã¯ã€æƒ…å ±ã®ä¸€éƒ¨ã‚’å¾—ãŸã€‚
    è¦æ±‚ã•ã‚ŒãŸæƒ…å ±ã¯ã€æ’ä¹…çš„ã«ç§»å‹•ã—ãŸã€‚
    è¦æ±‚ã•ã‚ŒãŸæƒ…å ±ã¯ã€ä¸€æ™‚çš„ã«ç§»å‹•ã—ãŸã€‚
    è¦æ±‚を実行ã§ããªã„。(構文ãŒä¸æ­£ï¼‰
    情報ã®è¦æ±‚ã«èªè¨¼ã‚’å¿…è¦ã¨ã™ã‚‹ã€‚ã¾ãŸã¯ã€èªè¨¼ã®æ‹’å¦ã€‚
    è¦æ±‚ã®æ‹’å¦ã€‚èªè¨¼ãŒä¸å®Œå…¨ã€‚
    è¦æ±‚ã•ã‚ŒãŸæƒ…報(ファイル)ãŒãªã„。
    サーãƒãƒ¼ãŒå¾…機時間内ã«ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒè¦æ±‚ã‚’é€ã‚Œãªã‹ã£ãŸã€‚
    予期ã—ãªã„サーãƒãƒ¼ã‚¨ãƒ©ãƒ¼ã®ãŸã‚ã€è¦æ±‚を実行ã§ããªã‹ã£ãŸã€‚
    サーãƒãƒ¼ã¯ã€è¦æ±‚ã•ã‚ŒãŸæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„。
    クライアントより見ã¦ã€ã‚²ãƒ¼ãƒˆã‚¦ã‚¨ã‚¤ã¾ãŸã¯ãƒ—ロキシーサーãƒã®æŽ¥ç¶šå…ˆã‚µãƒ¼ãƒã®å¿œç­”ãŒå¦¥å½“ã§ãªã„ã“ã¨ã‚’示ã™ã€‚
    サービス(サーãƒãƒ¼ï¼‰ãŒé«˜è² è·ã€‚Retry-Afterヘッダã«ç¤ºã™æ™‚間後ã«ã¯ç·©å’Œã•れる。応答文中ã«Retry-AfterヘッダãŒãªã‘れã°ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¯å¿œç­”ã‚’500番ã¨åŒç­‰ã«æ‰±ã†å¿…è¦ãŒã‚る。
    ゲートウエイã¾ãŸã¯ãƒ—ロキシã®å¿œç­”ãŒã‚²ãƒ¼ãƒˆã‚¦ã‚¨ã‚¤ã®æŒ‡å®šæ™‚間内ã«å¾—られãªã„。
    HTTP ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„。
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-kr.txt0000640000175000017500000000762212410217071022336 0ustar sksk
    »õ·Î¿î ¹æ¹®Àº ÀÌÀü¿¡(#VisitTimeOut# ºÐÀ̳») ´ç½ÅÀÇ »çÀÌÆ®¿¡ Á¢¼ÓÇÏÁö ¾ÊÀº(º¸°Å³ª ºê¶ó¿ì¡ ÇÏÁö ¾ÊÀº) »õ·Î¿î ¹æ¹®ÀÚ¸¦ ³ªÅ¸³À´Ï´Ù.
    Ŭ¶óÀÌ¾ðÆ® È£½ºÆ® ¼ö(IP ÁÖ¼Ò)´Â ¹æ¹®ÇÑ »çÀÌÆ® ¼ö¸¦ ³ªÅ¸³À´Ï´Ù.(ÃÖ¼ÒÇÑ ÇÑ ÆäÀÌÁö¶óµµ º» »çÀÌÆ®)
    ÀÌ ÀÚ·á´Â ÀϺ° ¹°¸®ÀûÀ¸·Î ´Ù¸¥ »ç¿ëÀÚ¼ö¸¦ ³ªÅ¸³À´Ï´Ù.
    »çÀÌÆ®¿¡¼­ º»(view) ÆäÀÌÁö ȸ¼ö¸¦ ³ªÅ¸³À´Ï´Ù. (¸ðµç ¹æ¹®ÀÚÀÇ ÇÔ)
    ÀÌ ÀÚ·á´Â À̹ÌÁö, ÆÄÀϰú ´Þ¸® HTML ÆäÀÌÁö¿¡¼­ÀÇ "Á¶È¸¼ö(hit)"¿Í´Â ´Ù¸¨´Ï´Ù.
    ÆäÀÌÁö, À̹ÌÁö, ÆÄÀÏÀ» º¸°Å³ª ´Ù¿î·ÎµåÇÑ È¸¼ö¸¦ ³ªÅ¸³À´Ï´Ù.
    ÀÌ ÀÚ·á´Â ÂüÁ¶¿ëÀ¸·Î¸¸ Á¦°øµË´Ï´Ù. ¿Ö³ÄÇÏ¸é º» "ÆäÀÌÁö"´Â Á¾Á¾ ½ÃÀåÁ¶»ç ¸ñÀûÀ¸·Î »ç¿ëµÉ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.
    ÀÌ Á¤º¸µéÀº ´Ù¿î·ÎµåÇÑ ¸ðµç ÆäÀÌÁö, À̹ÌÁö, ÆÄÀÏ µéÀ» Kb´ÜÀ§·Î ³ªÅ¸³À´Ï´Ù.
    #PROG# ´Â #SearchEnginesArray#ÀÇ °Ë»öÀ¸·Î ´ç½ÅÀÇ »çÀÌÆ®¿¡ ´ëÇÑ Á¢±ÙÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.
    ´ç½ÅÀÇ »çÀÌÆ®¿¡ ¸µÅ©µÈ ¸ðµç ¿ÜºÎ ÆäÀÌÁö
    (#MaxNbOfRefererShown#´Â °¡Àå ÀÚÁÖ »ç¿ëµÇ´Â ¿ÜºÎ ÆäÀÌÁö¸¦ ³ªÅ¸³À´Ï´Ù.) °Ë»ö ¿£Áø¿¡ ÀÇÇÑ °á°úÆäÀÌÁö¿¡ »ç¿ëµÈ ¸µÅ©´Â ¿©±â¿¡¼­ Á¦¿ÜµË´Ï´Ù. (ÀÌ Å×À̺íÀÇ ÀÌÀü¿¡ ÀÌ¹Ì ³ª¿Í ÀÖ½À´Ï´Ù.)
    ÀÌ Å×À̺íÀº ´ç½ÅÀÇ »çÀÌÆ®¿¡¼­ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Ű¿öµå ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù. (°¡Àå ¾ÖÈ£ÇÏ´Â °Ë»ö¿£Áø Yahoo, Altavista, Lycos, Google, Voilaµî°ú °°Àº #SearchEnginesArray#ÀÇ Å°¿öµå¸¦ #PROG#´Â ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.
    ·Îº¸Æ® (¶§·Î´Â ½ºÆÄÀÌ´õ¸¦ ¶æÇÔ)´Â ¸¹Àº °Ë»ö ¿£Áø¿¡¼­ »ç¿ëµÇ´Â ÀÚµ¿È­µÈ À¥Á¢¼Ó µµ±¸ÀÔ´Ï´Ù. ÀÌ ¿£ÁøÀº (1) À¥»çÀÌÆ®¸¦ ¸ñ·ÏÈ­ÇÏ°í ¼ø¼­¸¦ ºÎ¿©Çϰí (2) ÀÎÅÍ³Ý À¥ »çÀÌÆ®ÀÇ Åë°è¸¦ ¼öÁýÇϰí (3) ´ç½ÅÀÇ »çÀÌÆ®°¡ ¿©ÀüÈ÷ »ç¿ë°¡´ÉÇÑÁö Á¶»çÇÕ´Ï´Ù.
    #PROG#´Â #RobotArray# ·Îº¸Æ®¸¦ ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.
    ÀÌ ¿À·ù¿¡ ´ëÇÑ ¼³¸íÀÌ ¾ø½À´Ï´Ù.
    ¿äûÀÌ ¼­¹ö¿¡ ÀÇÇØ ´õÀÌ»ó ÁøÇàµÉ ¼ö ¾ø½À´Ï´Ù.
    ¼­¹ö°¡ ¿äûÀ» ó¸®ÇßÁö¸¸ Àü¼ÛÇÒ ¹®¼­°¡ ¾ø½À´Ï´Ù.
    ÀϺΠ³»¿ë.
    ¿äûµÈ ¹®¼­´Â ¿Å°ÜÁ®¼­ ´Ù¸¥ ÁÖ¼Ò¸¦ »ç¿ëÇÕ´Ï´Ù.
    ÀÌ ¿À·ù¿¡ ´ëÇÑ ¼³¸íÀÌ ¾ø½À´Ï´Ù.
    ±¸¹® ¿À·ù, ¼­¹ö°¡ ÀÌ ¿äûÀ» ¾Ë ¼ö ¾ø½À´Ï´Ù.
    URL¿¡ Á¢¼ÓÀ» À§Çؼ­´Â ·Î±×ÀÎ/ÆÐ½º¿öµå °¡ ÇÊ¿äÇÕ´Ï´Ù.
    ÀÌ Ç׸ñÀÇ ÃÖ°í°ªÀº ´©±º°¡ Å©·¢À» ½ÃµµÇϰųª ´ç½ÅÀÇ »çÀÌÆ®¿¡ Á¢¼ÓÀ» ½ÃµµÇϰí ÀÖ´Â °Í(´Ù¸¥ ·Î±×ÀÎ/ÆÐ½º¿öµå¸¦ »ç¿ëÇÏ¿© ½ÃµµÇϴ°Í) À» ÀǹÌÇÕ´Ï´Ù.
    »ç¿ë°¡´ÉÇÏ°Ô ¼³Á¤µÇ¾î ÀÖÁö ¾Ê´Â URL¿¡ ´ëÇÑ Á¢¼Ó½Ãµµ ¿À·ù ÀÔ´Ï´Ù. (¿¹¸¦ µé¾î, µð·ºÅ丮¿¡¤Ô´ëÇÑ "ºê¶ó¿ì¡"ÀÌ Á¤ÀǵÇÁö ¾ÊÀº °æ¿ìÀÔ´Ï´Ù.)
    Á¸ÀçÇÏÁö ¾Ê´Â URL¿¡ ´ëÇÑ Á¢¼Ó ½Ãµµ ¿À·ùÀÔ´Ï´Ù. ÀÌ ¿À·ù´Â Á¾Á¾ ´ç½ÅÀÇ »çÀÌÆ® ¾îµò°¡¿¡¼­ À߸øµÈ ¸µÅ©°¡ ÀÖ¾î ¹æ¹®ÀÚµéÀÌ À߸øµÈ URL·Î Á¢¼ÓÇÏ´Â °æ¿ì¿¡ ¹ß»ýÇÕ´Ï´Ù.
    ¼­¹ö¿¡°Ô ¿äûµÈ °ÍÀÌ ³Ê¹« ¸¹Àº ÀÀ´ä ½Ã°£À» ¿ä±¸ÇÕ´Ï´Ù. ÀÌ ¿À·ù´Â Á¾Á¾ ´À¸° CGI ½ºÅ©¸³Æ® ¹®Á¦À̰ųª À¥¼­¹ö »ç¿ë·®ÀÌ ¸¹Àº °æ¿ì¿¡ ¹ß»ýÇÕ´Ï´Ù.
    ³»ºÎ ¿À·ù. ÀÌ ¿À·ù´Â Á¾Á¾ CGIÇÁ·Î±×·¥ÀÌ ºñÁ¤»óÀûÀ¸·Î Á¾·áµÇ¾úÀ» ¶§ ¹ß»ýÇÕ´Ï´Ù.
    ¿äûµÈ µ¿ÀÛÀ» ¾Ë¼ö ¾ø½À´Ï´Ù.
    HTTP ¼­¹ö¿¡ ÀÇÇØ ¹Ý¼ÛµÈ Äڵ尡 ÇÁ¶ô½Ã³ª °ÔÀÌÆ®¿þÀÌ·Î µ¿ÀÛÇÕ´Ï´Ù. ´ë»ó ¼­¹ö°¡ Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ Á¤È®ÇÏ°Ô ÀÀ´äÀ» ÇÏÁö ¸øÇÕ´Ï´Ù.
    ³»ºÎ ¼­¹ö ¿À·ù.
    °ÔÀÌÆ®¿þÀÌ ½Ã°£Ãʰú.
    HTTP ¹öÀüÀÌ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-dk.txt0000640000175000017500000001563312410217071022321 0ustar sksk
    Et nyt besøg defineres som hver ny indkommende besøger, der ser eller browser en side, og ikke har været inde på hjemmesiden i #VisitTimeOut# minutter.
    Antal besøgende (IP-adresser), som har besøgt hjemmesiden (og som har fået vist mindst en side).
    Dette refererer til antallet af forskellige, fysiske personer, der har fået vist siden.
    Antal gange en side på hjemmesiden har været vist. (Summen af alle sider for alle besøgende).
    Sider adskiller sig fra hits, idet det kun er html-sider, men ikke billeder eller andre filer, der tæller.
    Antal gange en side, fil eller et billede på hjemmesiden er blevet vist eller hentet af nogen.
    Hits er kun med som reference, idet det oftest er Sider eller Besøg (eller Unikke besøg), man reelt ønsker statistik for.
    Dette er mængden af data hentet (sider, billeder og filer) fra hjemmesiden.
    Enhederne er KB, MB eller GB (KiloBytes, MegaBytes eller GigaBytes)
    #PROG# kan se, hvis en besøgende har fundet hjemmesiden gennem en søgning fra en af de #SearchEnginesArray# mest brugte Internet søgemaskiner eller kataloger (så som Google, Yahoo, Altavista, Lycos, Voila etc.).
    En liste med alle eksterne sider, der linker til (og er blevet brugt til at komme ind på) din hjemmeside (kun de #MaxNbOfRefererShown# mest anvendte eksterne sider vises).
    Links fra søgemaskiner er ikke medregnet, da de er medtaget for sig selv i en separat tabel.
    Denne tabel viser de mest benyttede søgesætninger og søgeord, som anvendes for at finde din hjemmeside gennem søgemaskiner og kataloger. (søgeord fra de #SearchEnginesArray# mest populære søgemaskiner og kataloger genkendes af #PROG#, så som Google, Yahoo, Altavista, Lycos, Voila etc.).
    Bemærk at det samlede antal søgninger ud fra søgeord kan være større end det samlede antal søgninger ud fra søgesætninger (det reelle antal søgninger), da to søgeord brugt i samme søgning tæller to gange (en gang for hvert ord).
    Robotter (også kaldet Spiders) er automatiske computerbesøgende, som anvendes af mange søgemaskiner. De scanner hjemmesider for at indeksere og rangordne dem, samle statistik om hjemmesider og/eller se om din hjemmeside eksisterer endnu.
    #PROG# genkender op til #RobotArray# søgerobotter.
    Al tidsrelateret statistik baseres på servertiden (OBS: ved IIS-servere er klokkeslætsangivelser normalt altid baseret på UTC-tid).
    Her vises gennemsnit (beregnet ud fra alle data mellem første og sidste besøg i det analyserede udsnit).
    Her vises sammenlagte summer (beregnet ud fra alle data mellem første og sidste besøg i det analyserede udsnit).
    Besøgenes længde er undertiden 'ukendt', fordi de ikke altid kan beregnes. Følgende er hovedårsagerne til dette:
    - Besøget var ikke afsluttet, da 'opdateringen' fandt sted.
    - Besøget startede den sidste time (efter kl. 23:00) på den sidste dag i måneden (En teknisk årsag forhindrer #PROG# i at beregne varigheden af sådanne besøg).
    Orme er automatiske computerbesøgende, der i virkeligheden består af eksterne servere, der er inficeret med en virus, som forsøger at lave et specifikt hit på din server for at inficere den også. I de fleste tilfælde udnytter sådanne orme huller i kommercielle eller ikke-opdaterede servere. Hvis dit system ikke er defineret som et sårbart system i forhold til ormen, kan du normalt bare ignorere disse hits.
    Der er kun meget få 'server orme' i verden, men de er meget aktive til tider. #PROG# er i stand til at genkende #WormsArray# kendte orme-signaturer (Nimda, Code Red osv.).
    Ingen beskrivelse af denne fejl.
    Serveren forstod forespørgslen, som udføres senere.
    Serveren har udført forespørgslen, men der er ikke noget dokument at sende.
    Partielt indhold.
    Sider er flyttet og den nye URL er givet i svaret.
    Ingen beskrivelse af denne fejl.
    Syntaksfejl, serveren forstod ikke forespørgslen.
    Der er blevet forespurgt en URL hvor brugernavn/kode var krævet.
    Et højt antal her kan betyde, at nogen (måske en hacker) forsøger at komme ind på dit site (f.eks. ved at prøve forskellige kombinationer af brugernavne/koder).
    Der er blevet forespurgt en URL der er opsat ikke tilgængelig, selv med et korrekt brugernavn/kode (for eksempel en URL i et bibliotek, der er defineret som ikke 'browsable'.).
    Der er blevet forespurgt en ikke eksisterende URL. Denne fejl skyldes ofte, at der er en forkert link på hjemmesiden, eller at en besøgende har tastet en forkert URL.
    Serveren har taget for lang tid om at besvare forespørgslen. Dette skyldes ofte et langsomt cgi-script, eller at serveren er overbelastet.
    Intern fejl. Dette skyldes ofte, at et cgi-script er afsluttet unormalt (med coredump f.eks.).
    Ukendt forespørgsel.
    Kode returneret af en HTTP server, der fungerer som proxy eller gateway, når den rigtige destinationsserver ikke svarer rigtigt på en klientforespørgsel.
    Intern serverfejl.
    Gateway timeout
    HTTP-version understøttes ikke.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ca.txt0000640000175000017500000001373312410217071022305 0ustar sksk
    Es considera una nova visita per cada nou visitant que consulta una pàgina i que hagi accedit al lloc en els últims #VisitTimeOut# mins..
    Nombre de clients (adreces IP) que entren a un lloc (i que com a mínim visiten una pàgina).
    Aquesta xifra reflecteix el nombre de persones físiques diferents que han accedit al lloc en un dia.
    Nombre de vegades que una pàgina del lloc ha estat visualitzada (La suma de tots els visitants inclouen visites múltiples).
    Aquest comptador es distingeix de "hits" perquè només conta les pàgines HTML, i no pas els gràfics o altres arxius o fitxers.
    El nombre de vegades que una pàgina, imatge, arxiu o fitxer d'un lloc és visualitzat o descarregat per visitant.
    Aquest comptador serveix de referència, però el comptador de "pàgines" representa una dada mercadotécnica generalment més útil, i per tant, més recomanada.
    El nombre de kilo bytes descagarregats pels visitants del lloc.
    Es refereix al volum de dades descarregades per totes les pàgines, imatges i arxius o fitxers mesurats en bytes.
    El programa #PROG# és capaç de reconèixer una visita a un lloc després de cadascuna de les cerques des de qualsevol dels #SearchEnginesArray# motors de cerca i directoris Internet més populars (Yahoo, Altavista, Lycos, Google, Terra, etc...).
    Llista de pàgines de llocs externs utilitzades para accedir o enllaçar-se amb el seu lloc (Només les #MaxNbOfRefererShown# pàgines més utilitzades es troben numerades). Els enllaços emprats pels motors de cerca o directoris són exclosos perquè ja han estat comptabilitzats a l'anterior apartat.
    Aquesta taula mostra la llista de les paraules clau més utilitzades en els motors de cerca i directoris Internet per trobar el seu lloc. (El programa #PROG# reconeix paraules claus util.litzades en els #SearchEnginesArray# motors de cerca més populars, com Yahoo, Altavista, Lycos, Google, Voila, Terra etc...).
    Els Robots son visitants automàtics que escanejan o viatgen pel seu lloc per a indexar-lo, o jerarquitzar-lo, per tal de recollir estadístiques de llocs Web, o per verificar si el seu lloc es troba connectat a la Xarxa.
    El programa #PROG# reconeix fins a #RobotArray# robots.
    Els temps relacionats amb les estadístiques estan basats en temps de servidor.
    Aquí, les dates reportades son: valors medis (calculat desde totes les dates entre les primeres y les ultimes visites en la franja analitzada)
    Aquí, les dates reportades son: sumes acumulatives (calculat desde totes les dates entre les primeres y les ultimes visites en la franja analitzada)
    Algunes Duracions de les visites son 'desconegudes' perquè no poden ser calculades sempre. La raó principal d'axó es:
    - La visita no va acabà quan es va fer 'l'actualizació'.
    - La visita va començar en la hora anterior (després de les 23:00) del passat dia de un mes (la raó tècnica de prevenir a #PROG# de la duració calculada de tales sessions)
    Error sense descripció.
    La petició ha estat computada però el servidor la processarà més tard.
    El servidor ha processat la petició però no existeixen documents per enviar.
    Contingut parcial.
    El document sol·licitat ha estat reubicat i es troba en una URL proporcionada en la mateixa resposta.
    Error sense descripció.
    Error de sintaxis, el servidor no ha entès la seva petició.
    Nombre d'intents per accedir a una URL que exigeix una combinació usuari/contrasenya que ha estat invàlida..
    Un nombre d'intents molt elevat pot suggerir la possibilitat que un hacker (o pirata) ha intentat entrar a una zona restringida del lloc (p.e., intentant múltiples combinacions de usuari/contrasenya).
    Nombre d'intents per accedir a una URL configurada per a no ser accessible ni amb una combinació usuari/contrasenya (p.e., una URL prèviament definida com a "no navegable").
    Nombre d'intents per accedir a una URL inexistent. Sovint, aquests es refereixen a un enllaç (link) no vàlid o a un error mecanogràfic quan el visitant tecleja una URL errònia.
    El servidor ha trigat massa temps a respondre a una petició. Sovint, és degut a un programa CGI molt lent, el qual ha estat abandonat pel servidor, o bé per un servidor molt saturat.
    Error intern. Aquest error generalment és provocat per una terminació anormal o prematura d'un programa CGI (p.e., un CGI corromput o malmès).
    Petició desconeguda pel servidor.
    Codi retornat per un servidor de protocol HTTP que funciona com a proxy o pont (gateway) quan el servidor objectiu no funciona o no interpreta correctament la petició del client (o visitant).
    Error intern del servidor.
    Passarel·la fora de línia.
    Versió de protocol HTTP no suportada.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tw.txt0000640000175000017500000000456712410217071022361 0ustar sksk
    ¦¹Äæ¦ì¬°°ÑÆ[ºô¯¸ªºÁ`¦¸¼Æ¡A±q¬Û¦P¦ì§}¨ÓÂsø°¥»ºô¯¸¡A®É¶¡¶¡¹j¶·¦Ü¤Ö#VisitTimeOut#¤ÀÄÁ¤~·|¦A°O¿ý¤@¦¸¡C
    ¦¹Äæ¦ì¬°°ÑÆ[ºô¯¸ªº¤H¼Æ¡C¥H±q¤£¦Pªº¹q¸£ÂsÄý¥»ºô¯¸ªº­Ó¼Æ¨Ó­pºâºô¯¸ªº¤H¼Æ¡C
    ¦¹Äæ¦ì¬°ºô­¶Åª¨úªºÁ`¦¸¼Æ¡C¥u°O¿ýºô­¶(.html)ªº­Ó¼Æ¡C
    ¦¹Äæ¦ì¬°ºô­¶¤º®eŪ¨úªºÁ`¦¸¼Æ¡A¥]§tºô­¶ÀÉ¡A¹Ï¤ùÀÉ¡A¼v¹³Àɵ¥¡C
    ¦¹Äæ¦ì¬°ºô­¶¤º®eŪ¨úªºÁ`®e¶q¤j¤p¡A¥]§tºô­¶ÀÉ¡A¹Ï¤ùÀÉ¡A¼v¹³Àɵ¥¡C
    ¦¹Äæ¦ì¬°°O¿ý¨Ï¥ÎªÌ±q¨º¨Ç·j´Mºô¯¸¶i¤J¦¹ºô¯¸¡C¨t²Î·|¦Û°Ê¤ÀªR³Ì±`¨Ï¥Îªº#SearchEnginesArray#ªº·j´Mºô¯¸¡C
    Åã¥Ü¨ä¥¦ºô¯¸ªººô­¶¦³¨ä¤º®e³sµ²¦Ü¥»¯¸ªººô­¶¦Cªí¡C ¨t²Î·|¦C¥X¸û±`³sµ²ªº«e#MaxNbOfRefererShown#­Óºô­¶ºô§}¡C
    ³o­Óªí®æÅã¥Ü¨Ï¥ÎªÌ¦b·j´Mºô¯¸¤¤¸û±`¨Ï¥ÎªºÃöÁä¦r¨Óµn¤Jºô¯¸¡C¨t²Î·|°O¿ý³Ì±`¨Ï¥Îªº#SearchEnginesArray#­Ó·j´Mºô¯¸ÃöÁä¦r¡C
    ·j´Mºô¯¸ªºº©¹C¾¹(Robots)·|¦Û°Êªº§ä´Mºô¯¸¤ºªº©Ò¦³¤º®e¡C
    ¦¹Äæ¦ì°O¿ý¸û±`¨Ï¥Îªº#RobotArray#­Óº©´å¾¹§ä´Mºô¯¸ªº°O¿ý¡C
    ¨S¦³Ãö©ó³o¶µ¿ù»~½Xªº´y­z
    ºô­¶¦øªA¾¹¤£¤F¸Ñ¨Ï¥ÎªÌªº»Ý¨D
    ºô­¶¦øªA¾¹¥|³B²z§¹¨Ï¥ÎªÌªº»Ý¨D¡A¦ý¬O«o¨S¦³¤å¥ó¶Ç°e¥X
    ºô­¶¤º®eŪ¨ú¤£§¹¥þ
    §ä´Mªººô­¶¤w¸g²¾¨ì¨ä¥¦¦a¤è¡A¦Ó¥B¥H¤w¸g§ä´M¨ì¤F
    ºô­¶­ì¥ý§ä¤£¨ì¡A²{¦b¤w¸g¦b§Oªº¦a¤è§ä¨ì¤F
    »yªk¿ù»~¡Aºô­¶¦øªA¾¹¤£¤F¸Ñ¨Ï¥ÎªÌªº»Ý¨D
    ¹Á¸Õ³sµ²¦Ü»Ý¿é¤J±K½Xªººô­¶ºô§}¦Óµo¥Í¿ù»~
    ¹Á¸Õ³sµ²¦Ü¥¼¶}©ñÂsÄýªººô­¶ºô§}¦Óµo¥Í¿ù»~
    ¹Á¸Õ³sµ²¦Ü¤£¦s¦bªººô­¶ºô§}¦Óµo¥Í¿ù»~
    ºô­¶¦øªA¾¹ªá¶O¤Ó¦h®É¶¡³B²z³o­Ó»Ý¨D
    ¤º³¡¦øªA¾¹µo¥Í¿ù»~¡A¤@¯ë¬O CGI µ{¦¡µo¥Í°ÝÃD
    ¤£¤F¸Ñ»Ý¨D
    ºô­¶¦øªA¾¹¦] proxy ¦Ó¥¼¯à¦^À³¯u¥¿¨Ï¥ÎªÌªº»Ý¨D
    ¤º³¡¦øªA¾¹µo¥Í¿ù»~
    ³q°T¹h¹O®É
    ³o­Ó HTTP ªºª©¥»¨S¦³¤ä´©
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cz.txt0000640000175000017500000001503712410217071022335 0ustar sksk
    Za novou návštěvu se považuje každý přístup návštěvníka, který nebyl připojen na serveru v průběhu předchozích #VisitTimeOut# minut.
    PoÄet poÄítaÄů (IP adres), které se pÅ™ipojily na server (a stáhly alespoň jednu stránku).
    To zhruba odpovídá poÄtu různých osob, které navÅ¡tívily stránky.
    Celkový poÄet zhlédnutí jednotlivých stránek (souÄet za vÅ¡echny návÅ¡tÄ›vy vÅ¡ech návÅ¡tÄ›vníků).
    Toto Äíslo se liší od „hitů“ tím, že sem jsou zapoÄítávány pouze stažení HTML stránek, a nikoli obrázků a jiných souborů.
    Celkový poÄet zhlédnutí nebo stažení jednotlivých stránek, obrázků, Äi souborů.
    Tento údaj je udáván spíše pro zajímavost, neboÅ¥ poÄet zhlédnutých „stránek“ má obecnÄ› vÄ›tší vypovídací hodnotu pro marketingové úÄely.
    Celkový objem dat přenesených při návštěvách vašich stránek.
    Tento údaj zahrnuje jak zobrazené stránky, tak stažené obrázky a soubory.
    #PROG# umí rozpoznat přístupy na server z #SearchEnginesArray# nejznámÄ›jších internetových vyhledávaÄů a adresářů (napÅ™. Yahoo, Altavista, Lycos, Google, Voila).
    Seznam externích stránek obsahujících odkazy na vaÅ¡e stránky, pÅ™es které pÅ™iÅ¡li nÄ›kteří návÅ¡tÄ›vníci. (Zobrazuje se pouze #MaxNbOfRefererShown# nejÄastÄ›ji použitých). Odkazy z internetových vyhledávaÄů jsou uvedeny v samostatné tabulce, a proto zde nejsou zahrnuty.
    Tato tabulka obsahuje nejÄastÄ›jší výrazy a slovní spojení použité ve vyhledávaÄích a internetových adresářích pro vyhledání tÄ›chto stránek. (#PROG# podporuje #SearchEnginesArray# nejpopulárnÄ›jších vyhledávaÄů a adresářů, jako Yahoo, Altavista, Lycos, Google, Voila a další.)
    VÅ¡imnÄ›te si, že celkový poÄet vyhledání vÅ¡ech výrazů může být vyšší než souÄet vyhledání slovních spojení, neboÅ¥ každé víceslovné vyhledávání je zapoÄítáno právÄ› jednou do slovních spojení, ale vícenásobnÄ› do výrazů (jednou pro každé obsažené slovo).
    Roboty jsou automatizovaní poÄítaÄoví návÅ¡tÄ›vníci používaní pro skenování a indexování obsahu World Wide Webu a pro kontrolu, zda jsou jednotlivé stránky stále dostupné.
    #PROG# dokáže rozpoznat #RobotArray# robotů.
    VÅ¡echny Äasové statistiky vycházejí z Äasu na serveru.
    Zde zobrazené údaje jsou průmÄ›rné hodnoty (poÄítané ze vÅ¡ech návÅ¡tÄ›v ve sledovaném období).
    Zde zobrazené údaje jsou celkové souÄty (poÄítané ze vÅ¡ech návÅ¡tÄ›v ve sledovaném období).
    NÄ›které délky návÅ¡tÄ›v jsou uvedeny jako „neznámé“, neboÅ¥ je nelze vždy pÅ™esnÄ› urÄit. Hlavními důvody k tomu jsou:
    • NávÅ¡tÄ›va nebyla dokonÄena v okamžiku, kdy probíhala aktualizace statistik. (Délka bude doplnÄ›na pÅ™i následné aktualizaci.)
    • NávÅ¡tÄ›va zaÄala v poslední hodinÄ› (po 23:00) posledního dne v mÄ›síci. (Z technických důvodů #PROG# nedokáže urÄit délku takovýchto návÅ¡tÄ›v.)
    ÄŒervy jsou poÄítaÄové programy napadající poÄítaÄe na síti, které pak dále využívají pro své další šíření. Ve vÄ›tÅ¡inÄ› případů se Äervy snaží využít chyb v neaktualizovaných komerÄních aplikacích. Pokud váš systém není mezi zranitelnými cíly Äervu, můžete takovou zátěž jednoduÅ¡e ignorovat.
    Existuje jen velice málo internetových Äervů; pÅ™esto ale bývají ve své dobÄ› velice rozšíření. #PROG# umí rozliÅ¡it stopy #WormsArray# známých Äervů (Nimda, Code Red aj.).
    Požadavek byl splněn a nový objekt byl vytvořen.
    Požadavek byl přijat, ale bude zpracován později.
    Server úspěšně zpracoval požadavek, nicméně nebylo třeba vrátit žádný obsah.
    Server na přání klienta vrátil pouze Äást obsahu.
    Požadovaný dokument byl trvale přemístěn na jiné URI.
    Požadovaný dokument byl doÄasnÄ› pÅ™emístÄ›n na jiné URI.
    Požadavek je syntakticky chybný.
    Neúspěšná autentikace pro URL vyžadující jméno a heslo.
    Vysoký poÄet tÄ›chto chyb znaÄí, že se nÄ›kdo opakovanÄ› pokouÅ¡el uhodnout správné jméno a heslo.
    Požadavek na URL, které nelze zobrazit (napÅ™. v URL v rámci adresáře, jehož obsah není urÄen k prohlížení).
    Požadavek na neexistující URL. Tato chyba zpravidla znaÄí, že se nÄ›kde vyskytuje neplatný odkaz, anebo uživatel Å¡patnÄ› napsal požadované URL.
    Klient neodeslal svůj požadavek serveru ve stanoveném Äase (chyba klienta, pÅ™etíženého serveru, anebo pomalého CGI skriptu).
    VnitÅ™ní chyba serveru (Äasto způsobena chybným zpracováním skriptu).
    Server nepodporuje funkce potřebné k vyřízení požadavku.
    Chyba vracená serverem HTTP, který funguje jako brána nebo proxy, když cílový server vrací chybovou odpovÄ›Ä na klientův požadavek.
    Služba je momentálnÄ› nedostupná z důvodu pÅ™etížení, Äi probíhající údržby serveru.
    Chyba vracená serverem HTTP, který funguje jako brána nebo proxy, když cílový server neodpoví ve stanoveném Äasovém limitu.
    Nepodporovaná verze protokolu HTTP.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-hu.txt0000640000175000017500000001222712410217071022333 0ustar sksk
    Új látogatásnak számít minden olyan új beérkezett látogató aki megtekint egy oldalt és a legutolsó látogatása óta eltelt legalább #VisitTimeOut# perc.
    Azon egyedi számítógépek száma (IP címek) akik az oldalon jártak (és legalább egy oldalt megnéztek).
    Ez az adat a fizikailag különbözõ gépekre vonatkozik ahonnan az oldalt látogatták bármelyik nap.
    Az oldal összesített találatai (Összes látogató összes látogatása).
    Ez annyiban különbözik a "találatok"-tól, hogy csak a HTML oldalak találatait összesíti, a képeket és egyéb fájlokat nem.
    Oldalak, képek, fájlok összesített találatai és letöltései.
    Ez az összesítés csak referencia célokat szolgál, hiszen marketing szempontból az "oldalak találatai" adat az érdekesebb.
    Ez az adat az összes letöltött adatmennyiséget jelzi beleértve az összes oldalt, képet és fájlt kilobájt, megabájt illetve gigabájt-ban (Kb, Mb, Gb).
    Az #PROG# felismeri, ha az oldalakat a #SearchEnginesArray# legismertebb keresõprogramok egyikén keresztül érték el (például Yahoo, Altavista, Lycos, Google, Voila, stb...).
    Az olyan külsõ oldalak listája, amely erre a honlapra mutat, vagy rajtuk keresztül érkezett a kérés (Csak a leggyakoribb #MaxNbOfRefererShown# külsõ oldal). A keresõkön keresztül érkezett találatok itt nincsenek listázva, azok az elõzõ részben találhatóak.
    Ebben a táblázatban találhatóak a keresõprogramokban leggyakrabban használt kulcsszavak és kifejezések amelyeken keresztül ezen honlapot megtalálták. (Az #PROG# a #SearchEnginesArray# leggyakoribb keresõmotort ismeri. Például Yahoo, Altavista, Lycos, Google, Voila, stb...).
    Az összes keresett kulcsszó száma nagyobb mint a keresett kifejezéseké (azaz az igazi keresések számáé) mert 2 keresett kulcsszó esetén a keresés kétszer számít (egyszer-egyszer mindkét szóra).
    A robot-ok (spider-nek vagy webcrawler-nek is mondják) automatikus számítógép látogatók melyet számos keresõprogram használ arra hogy az oldalt átnézze, index-elje és kategorizálja, statisztikát gyûjtsön a weboldalakról és/vagy megnézze, hogy a honlap még mindig elérhetõ-e.
    Az #PROG# #RobotArray# különbözõ robotot ismer fel.
    Minden itt feltûntetett idõnek a szerveridõ szolgált alapul.
    Az itteni adat átlagos érték (az elsõ és az utolsó látogatás közötti idõszakra)
    Az itteni adat összegzett adat (az elsõ és az utolsó látogatás közötti idõszakra)
    Néha a látogatási idõszak "ismeretlen"-nek látszik, mert nem mindig kiszá mítható. Ennek fõ okai:
    - A látogatás nem fejezõdött be a frissítéskor.
    - A látogatás a hónap utolsó napjának utolsó órájában kezdõdött (23:00 után).
    Nincs hibaleírás.
    A kérést felismerte a szerver, de csak a késõbbiekben feldolgozva végre.
    A szerver feldolgozta a kérést, de az nem eredményezett kimeneti dokumentumot.
    Résztartalom.
    A kért dokumentum helye megváltozott, új cím a válaszban.
    Nincs hibaleírás.
    Szintaktikai hiba, a szerver nem értette a kérést.
    Jelszóvédett tartalom sikertelen elérése.
    Nagyszámú ilyen hiba jelentheti azt, hogy valaki (egy hacker) megpróbál elérni egy jelszóvédett oldalt felhasználói nevek és jelszavak folyamatos próbálgatásával.
    Nem tallózható könyvtár (még felhasználó azonosító és jelszó ismeretében sem) (például egy könyvtáron belüli "tallózásra" nem engedélyezett link).
    Nem létezõ oldal (URL). Érvénytelen link, mely lehet az oldalon belül, más külsõ oldalon, vagy csak a látogató vétett hibát a beírás közben.
    A szerver túl sokáig nem válaszolt. Általában lassú CGI program vagy nagyon leterhelt szerver esetén fordul elõ.
    Belsõ hiba. Általában CGI program abnormális futása után keletkezik (pl. coredump).
    Ismeretlen kéréstípus.
    Proxy szerver hibakód, melyet a távoli szerver sikeres válaszának hiányában küld a kérést küldõ kliensnek.
    Belsõ szerverhiba.
    Gateway idõtúllépés.
    Nem támogatott verziójú HTTP kérés.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-pl.txt0000640000175000017500000001245612410217071022336 0ustar sksk
    Wizyty ka¿dego nowego go¶cia, który ogl±da³ stronê i nie ³±czy³ siê z ni± przez ostatnie #VisitTimeOut# mn.
    Adres numeryczny hosta klienta (tzw. adres IP) odwiedzaj±cego tê stronê.
    Ten numer mo¿e byæ identyczny dla kilku ró¿nych Internautów którzy odwiedzili stronê tego samego dnia.
    ¦rednia liczba obejrzanych stron przypadaj±ca na jednego Internautê. (Suma go¶ci, wszystkich wizyt).
    Ten licznik ró¿ni siê od kolumny z prawej, gdy¿ zlicza on tylko strony html (bez obrazków i innych plików).
    Liczba wszystkich stron, obrazków, d¼wiêków, plików, które zosta³y obejrzane lub ¶ci±gniête przez kogo¶.
    Warto¶æ jest jedynie orientacyjna, zaleca siê spogl±daæ na licznik "strony".
    Liczba kilobajtów ¶ci±gniêtych przez Internautów.
    Jest to suma wszystkich ¶ci±gniêtych danych (strony html, obrazki, d¼wiêki).
    #PROG# rozró¿nia dostêp do stron z zagranicznych wyszukiwarek dziêki #SearchEnginesArray# najpopularniejszym przegl±darkom internetowym (Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Lista wszystkich stron spoza serwera z których trafiono na ten serwer (wy¶wietlanych jest #MaxNbOfRefererShown# stron z których najczê¶ciej siê odwo³ywano.
    Ta kolumna pokazuje listê najczê¶ciej u¿ywanych s³ów kluczowych, dziêki którym znaleziono t± stronê w wyszukiwarkach. (#PROG# rozró¿nia zapytania s³ów kluczowych z #SearchEnginesArray# najpopularniejszych wyszukiwarek, takich jak Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Roboty s± programami sieciowymi skanuj±cymi strony w celu zebrania/aktualizacji danych (np. s³owa kluczowe do wyszukiwarek), lub sprawdzaj±cymi czy strona nadal istnieje w sieci.
    #PROG# rozró¿nia obecnie #RobotArray# robów.
    Wszystkie statystyki bazuj± na czasie serwera.
    Here, reported data are: average values (calculated from all data between the first and last visit)
    Here, reported data are: cumulative sums (calculated from all data between the first and last visit)
    Pewne d³ugo¶ci wizyt s± podane jako nieznae, gdy¿ nie zawsze mog± zostaæ obliczone. Najczê¶ciej wynika to z:
    - Wizyta jeszcze trwa³a podczas aktualizacji statystyki,
    - Wizyta rozpoczê³a siê po 23:00 ostatniego dnia miesi±ca (ze wzglêdów technicznych #PROG# nie przelicza d³ugo¶ci takich sesji)
    Zlecenie POST zosta³o zrealizowane pomy¶lnie.
    ¯±danie zosta³o odebrane poprawnie, lecz bêdzie pó¼niej zrealizowane przez serwer.
    Serwer przetworzy³ ¿±danie, lecz nie posiada ¿adnych danych do wys³ania.
    Czê¶ciowa zawarto¶æ.
    Dokument zosta³ przeniesiony pod inny adres.
    Dokument zosta³ czasowo przeniesiony pod inny adres.
    Zlecenie by³o b³êdne, lub niemo¿liwe do zrealizowania przez serwer.
    B³±d powstaje wtedy, kiedy serwer WWW otrzymuje do wykonania instrukcjê, której nie rozumie.
    B³±d autoryzacji. Strona wymaga podania has³a i loginu - b³±d pokazuje siê wtedy, gdy które¶ z tych danych siê nie zgadza lub zosta³y podane niew³a¶ciwiwe.
    Je¶li liczba ta jest du¿a, jest to sygna³ dla webmastera, i¿ kto¶ próbuje z³amaæ has³o do strony nim zabezpieczonej.
    B³±d wystêpuje wtedy, gdy katalog/strona do którego siê odwo³ywano nie ma ustawionych w³a¶ciwych praw dostêpu, lub prawa te nie pozwalaj± na obejrzenie zawarto¶ci katalogu/strony.
    Spróbuj wpisaæ nie istniej±cy adres URL (np. adres tej strony ze skasowan± jedn± literk±). Znaczy to, ¿e posiadasz gdzie¶ na swoich stronach b³êdny link, lub link odnosz±cy siê do nieistniej±cej strony.
    Przegl±darka nie wys³a³a ¿±dañ do serwera w czasie jego oczekiwania. Mo¿esz powtórzyæ ¿±danie bez jego modyfikacji w czasie pó¼niejszym.
    B³±d wewnêtrzny. Ten b³±d czêsto pojawia siê, gdy aplikacja CGI nie zakoñczy³a siê normalnie (podobno ka¿dy program zawiera przynajmniej jeden b³±d...:-).
    Serwer nie umo¿liwia obs³ugi mechanizmu.
    Serwer jest chwilowo przeci±¿ony i nie mo¿e obs³u¿yæ zlecenia.
    Serwer zdecydowa³ siê przerwaæ oczekiwanie na inny zasób lub us³ugê, i z tego powodu nie móg³ obs³u¿yæ zlecenia.
    Serwer docelowy nie otrzyma³ odpowiedzi od serwera proxy, lub bramki.
    Nie obs³ugiwana wesja protoko³u HTTP.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fi.txt0000640000175000017500000001355312410217071022320 0ustar sksk
    Tässä uudeksi vierailuksi on laskettu sivustolle saapunut vierailija (sivuja selannut), joka ei ole ollut yhteydessä sivustoon viimeisen #VisitTimeOut# minuutin aikana.
    Asiakaskoneiden (IP-osoitteiden) määrä, jotka ovat käyneet sivustoilla (ja selanneet ainakin yhtä sivua).
    Tämä tieto viittaa eri fyysisten henkilöiden määrään, jotka ovat käyneet sivustolla.
    Näytettyjen sivujen määrä. (kaikkien vierailujen aikana näytettyjen sivujen yhteismäärä).
    Tämä tieto eroaa kohdasta "osumat" siinä, että mukaan lasketaan ainoastaan HTML-sivut, ei kuvia tai muita tiedostoja.
    Näytettyjen tai ladattujen sivujen, kuvien ja tiedostojen yhteismäärä.
    Tämä tieto tarjotaan ainoastaan viitteeksi, koska markkinointitarkoituksissa suositaan yleensä näytettyjen "sivujen" määrää.
    Tämä tieto viittaa sivustoltasi sivujen, kuvien ja tiedostojen muodossa ladatun datan määrään.
    Yksikkönä Kt, Mt tai Gt (Kilotavu, Megatavu tai Gigatavu)
    #PROG# tunnistaa #SearchEnginesArray# suosituimman hakukoneen (kuten Yahoo, Altavista, Lycos, Google, Voila, jne...) hakutulosten avulla sivustolle löytäneet.
    Luettelo ulkopuolisista sivuista, joilta löytyy linkki (jota on seurattu) sivustollesi (Näkyvissä ainoastaan #MaxNbOfRefererShown# useimmin käytettyä ulkopuolista sivua). Hakukoneiden hakutuloksista löytyviä linkkejä ei ole sisällytetty mukaan, koska nämä näkyvät jo tämän taulukon edellisellä rivillä.
    Tästä taulukosta nähdään luettelo yleisimmistä hakulauseista tai hakusanoista, joiden avulla sivustoillesi on löydetty Internetin hakukoneiden ja hakemistojen avulla. (#PROG# tunnistaa hakusanat #SearchEnginesArray#:sta suosituimmasta hakukoneesta ja hakemistosta, kuten Yahoo, Altavista, Lycos, Google, Voila, jne...).
    Huomaa, että hakusanojen kokonaismäärä voi olla suurempi kuin hakulauseiden (todellinen hakujen määrä), koska silloin kun kahta hakusanaa on käytetty samassa haussa, lasketaan tämä hakusana-tilastossa kahdesti (jokainen hakusana erikseen).
    Robotit (käytetään joskus myös nimitystä "Spider") ovat automaattisia tietokonevierailijoita, joita useat hakukoneet käyttävät indeksoidakseen, arvostellakseen ja kerätäkseen tilastoa sivustoista ja/tai tutkiakseen vieläkö sivustot ovat saatavilla.
    #PROG# tunnistaa jopa #RobotArray# robottia.
    Kaikki kelloaikoihin liittyvät tilastot perustuvat palvelimen kelloon.
    Tässä kerrotut tiedot ovat: keskimääräisiä arvoja (laskettu kaikkien ensimmäisen ja viimeisimmän vierailun välisten tietojen perusteella)
    Tässä kerrotut tiedot ovat: kumulatiivisia summia (laskettu kaikkien ensimmäisen ja viimeisimmän vierailun välisten tietojen perusteella)
    Jotkut Vierailujen kestot ovat 'tuntemattomia', koska niitä ei aina voida laskea. Pääasiallinen syy tälle on:
    - Vierailu ei ollut loppunut 'päivityksen' tapahtuessa.
    - Vierailu alkoi kuukauden viimeisen vuorokauden viimesen tunnin aikana (klo 23:00 jälkeen) (Tekniset syyt estävät laskutoimituksen tällaisessa tapauksessa)
    Tälle virheelle ei ole kuvausta.
    Palvelin on ymmärtänyt palvelupyynnön, mutta se käsitellään myöhemmin.
    Palvelin on käsitellyt pyynnön, mutta lähetettäväksi ei ole mitään tietoa.
    Osittainen sisältö.
    Pyydetty tiedosto on siirretty toiseen, vastauksessa kerrottuun osoitteeseen.
    Tälle virheelle ei ole kuvausta.
    Kielioppivirhe. Palvelin ei ymmärtänyt palvelupyyntöä.
    Pyydetty URL, johon tarvitaan tunnus/salasana -kaksikko.
    Suuri määrä näitä virheitä saattaa tarkoittaa sitä, että joku (kuten hakkeri) yrittää murtautua, tai päästä sivustoille (toivoen päätyvänsä suojatulle alueelle kokeilemalla eri tunnus/salasana -pareja, esimerkiksi).
    Tried to reach an URL not configured to be reachable, even with an login/password pair (for example, an URL within a directory not defined as "browsable".).
    Pyydetty URL, jota ei ole olemassa. Tämä virhe tarkoittaa usein sitä, että jossakin sivustollasi on virheellinen linkki, tai että vierailija on kirjoittanut URL:n väärin.
    Server has taken too much time to respond to a request. This error frequently involves either a slow CGI script which the server was required to kill or an extremely congested web server.
    Sisäinen virhe. Tämä virhe on usein epänormaalisti keskeytyneen CGI-ohjelman aiheuttama (tuloksena esim. coredump).
    Pyydetty toiminto tuntematon.
    Välityspalvelimena tai yhdyskäytävänä toimivan HTTP-palvelimen palauttama koodi, kun todellinen kohteena ollut palvelin ei vastannut palvelupyyntöön hyväksyttävästi.
    Palvelimen sisäinen virhe.
    Yhdyskäytävän aikaraja täyttynyt.
    HTTP-versio ei tuettu.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cn.txt0000640000175000017500000000504512410217071022317 0ustar sksk
    ´Ë×Ö¶ÎΪ²Î¹ÛÍøÕ¾µÄ×ÜÈ˴Σ¬´ÓÏàͬµØÖ·À´ä¯ÀÀ±¾ÍøÕ¾£¬Ê±¼ä¼ä¸ôÐëÖÁÉÙ#VisitTimeOut#·ÖÖӲŻáÔټǼһ´Î¡£
    ´Ë×Ö¶ÎΪ²Î¹ÛÍøÕ¾µÄÈËÊý¡£ÒÔ´Ó²»Í¬µÄ¼ÆËã»úIPä¯ÀÀ±¾ÍøÕ¾µÄ¸öÊýÀ´¼ÆËãÍøÕ¾µÄÈËÊý¡£
    ´Ë×Ö¶ÎΪËùÓвιÛÕßËùÓвιÛÖÐÍøÒ³·ÃÎʵÄ×Ü´ÎÊý¡£Ö»¼ÇÂ¼ÍøÒ³(.html£¬²»°üÀ¨Í¼Æ¬£¬CSSµÈÎļþ)µÄ·ÃÎÊ´ÎÊý¡£
    ´Ë×Ö¶ÎΪÇëÇó¶ÁÈ¡µÄ×Ü´ÎÊý£¬°üº¬ÍøÒ³Îļþ£¬Í¼Æ¬Îļþ£¬Ó°ÏñÎļþµÈ¡£
    ÕâЩÊý¾Ý½öÓÃ×ö²Î¿¼£¬¡°ÍøÒ³·ÃÎÊÁ¿ Page View¡±¸ü¶àÓÃÓÚÉÌÒµÆÀ²â
    ´Ë×Ö¶ÎΪ·þÎñÆ÷ÎļþÄÚÈݵÄÊý¾ÝÁ÷Á¿£¬°üº¬ÍøÒ³Îļþ£¬Í¼Æ¬Îļþ£¬Ó°ÏñÎļþµÈ¡£
    ´Ë×Ö¶ÎΪ¼Ç¼ʹÓÃÕß´ÓÄÇЩËÑÑ°ÍøÕ¾½øÈë´ËÍøÕ¾¡£#PROG# »á×Ô¶¯·ÖÎö×ʹÓõÄ#SearchEnginesArray#¸öËÑË÷ÒýÇæ£¬Èç(Yahoo! Google...)¡£
    ÏÔʾÆäËüÍøÕ¾µÄÍøÒ³ÓÐÆäÄÚÈÝÁ¬½áÖÁ±¾Õ¾µÄÍøÒ³ÁÐ±í¡£ ϵͳ»áÁгö½Ï³£Á¬½áµÄǰ#MaxNbOfRefererShown#¸öÍøÒ³ÍøÖ·¡£
    Õâ¸ö±í¸ñÏÔʾʹÓÃÕßÔÚËÑÑ°ÍøÕ¾Öнϳ£Ê¹ÓõĹؼü´ÊÀ´µÇÈëÍøÕ¾¡£ÏµÍ³»á¼Ç¼×ʹÓõÄ#SearchEnginesArray#¸öËÑÑ°ÍøÕ¾¹Ø¼ü´Ê¡£
    ËÑÑ°ÍøÕ¾µÄ»úÆ÷ÈË(Robots)»á×Ô¶¯µÄÕÒÑ°ÍøÕ¾ÄÚµÄËùÓÐÄÚÈÝ¡£
    #PROG#¼Ç¼½Ï³£Ê¹ÓõÄ#RobotArray#¸ö»úÆ÷ÈËÕÒÑ°ÍøÕ¾µÄ¼Ç¼¡£
    ûÓйØÓÚÕâÏî´íÎóÂëµÄÃèÊö
    ÍøÒ³·þÎñÆ÷²»Á˽âʹÓÃÕßµÄÐèÇó
    ÍøÒ³·þÎñÆ÷ËÄ´¦ÀíÍêʹÓÃÕßµÄÐèÇ󣬵«ÊÇȴûÓÐÎļþ´«Ëͳö
    ÍøÒ³ÄÚÈݶÁÈ¡²»ÍêÈ«
    ÕÒѰµÄÍøÒ³ÒѾ­ÒƵ½ÆäËüµØ·½£¬¶øÇÒÒÔÒѾ­ÕÒѰµ½ÁË
    ÍøÒ³Ô­ÏÈÕÒ²»µ½£¬ÏÖÔÚÒѾ­ÔÚ±ðµÄµØ·½ÕÒµ½ÁË
    Óï·¨´íÎó£¬ÍøÒ³·þÎñÆ÷²»Á˽âʹÓÃÕßµÄÐèÇó
    ³¢ÊÔÁ¬½áÖÁÐèÊäÈëÃÜÂëµÄÍøÒ³ÍøÖ·¶ø·¢Éú´íÎó
    ³¢ÊÔÁ¬½áÖÁ먦·Åä¯ÀÀµÄÍøÒ³ÍøÖ·¶ø·¢Éú´íÎó
    ³¢ÊÔÁ¬½áÖÁ²»´æÔÚµÄÍøÒ³ÍøÖ·¶ø·¢Éú´íÎó
    ÍøÒ³·þÎñÆ÷»¨·ÑÌ«¶àʱ¼ä´¦ÀíÕâ¸öÐèÇó
    ÄÚ²¿·þÎñÆ÷·¢Éú´íÎó£¬Ò»°ãÊÇ CGI ³ÌÐò·¢ÉúÎÊÌâ
    ²»Á˽âÐèÇó
    ·¢¸ø´úÀí·þÎñÆ÷»òÍø¹Ø·þÎñÆ÷µÄÒ³ÃæÇëÇóûÓгɹ¦·µ»Ø¸ø¿Í»§¶Ë
    ÄÚ²¿·þÎñÆ÷·¢Éú´íÎó
    ͨѶ³¬Ê±
    Õâ¸ö HTTP µÄ°æ±¾Ã»ÓÐÖ§³Ö
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gr.txt0000640000175000017500000002737012410217071022334 0ustar sksk
    Ως νέα επίσκεψη οÏίζεται η Ï€Ïοβολή μιας σελίδας από έναν εισεÏχόμενος επισκέπτης ο οποιός δεν είχε συνδεθεί στο site κατά τα τελευταία #VisitTimeOut# λεπτά.
    ΑÏιθμός τον πελατών (IP διευθÏνσεις) που επισκέφθηκαν το site (και που Ï€Ïόβαλλαν τουλάχιστον μια σελίδα).
    Τα δεδομένα αυτά αναφέÏονται στον αÏιθμό των διαφοÏετικών φυσικών Ï€Ïοσώπων που είχαν Ï€Ïόσβαση στο site.
    ΑÏιθμός Ï€Ïοβολών μιας σελίδας του site (ΣÏνολο για όλους τους επισκέπτες και για όλες τις επισκέψεις).
    Αυτό το κομμάτι των δεδομένων διαφέÏει από τα "χτυπήματα" στο ότι μετÏάει μόνο τις HTML σελίδες σε αντίθεση με εικόνες και άλλα αÏχεία.
    ΑÏιθμός Ï€Ïοβολών ή λήψεων μιας σελίδας, εικόνας ή αÏχείου του site από κάποιον επισκέπτη.
    Αυτό το κομμάτι των δεδομένων δίνεται ως αναφοÏά μόνο, Î±Ï†Î¿Ï Î¿ αÏιθμός των "σελίδων" που Ï€Ïοβάλλονται είναι συνήθως Ï€ÏοτιμότεÏος για λόγους marketing.
    Αυτό το κομμάτι των δεδομένων αναφέÏεται στην ποσότητα των δεδομένων που λαμβάνονται από όλες τις σελίδες, εικόνες και αÏχεία μέσα στο site.
    Οι μονάδες είναι σε KB, MB ή GB (KiloBytes, MegaBytes ή GigaBytes)
    #PROG# αναγνωÏίζει κάθε Ï€Ïόσβαση στο site μετά από μια αναζήτηση από τις #SearchEnginesArray# πιο δημοφιλείς Μηχανές Αναζήτησης και Καταλόγους στο Internet (όπως Yahoo, Altavista, Lycos, Google, Voila, κτλ...).
    Λίστα από όλους τους εξωτεÏικοÏÏ‚ συνδέσμους που χÏησιμοποιήθηκαν για να συνδέθοÏν (και να εισαχθοÏν) στο site (Μόνο οι #MaxNbOfRefererShown# πιο συχνά χÏησιμοποιημένες εξωτεÏικές σελίδες εμφανίζονται). Οι συνδέσμοι που χÏησιμοποιοÏνται από τα αποτελέσματα των μηχανών αναζήτησης δεν συμπεÏιλαμβάνονται εδώ Î±Ï†Î¿Ï Î­Ï‡Î¿Ï…Î½ ήδη συμπεÏιληφθεί στην Ï€ÏοηγοÏμενη γÏαμμή στον πίνακα αυτό.
    Αυτός ο πίνακας εμφανίζει την λίστα από τις πιο συχνά χÏησιμοποιοÏμενες εκφÏάσεις και λέξεις-κλειδιά για τον εντοπισμό του site από τις Μηχανές Αναζήτησης και τους Καταλόγους στο Internet. (Λέξεις-κλειδιά από #SearchEnginesArray# πιο δημοφιλείς Μηχανές Αναζήτησης και Καταλόγους στο Internet αναγνωÏίζονται από #PROG#, όπως Yahoo, Altavista, Lycos, Google, Voila, κτλ...).
    Σημειώνεται ότι ο συνολικός αÏιθμός αναζητήσεων για λέξεις-κλειδιά πιθανόν να είναι μεγαλÏτεÏος από τον συνολικό αÏιθμό αναζητήσεων για εκφÏάσεις (Ï€Ïαγματικό αÏιθμό αναζητήσεων) γιατί όταν 2 λέξεις-κλειδιά χÏησιμοποιοÏνται στην ίδια αναζήτηση, η αναζήτηση μετÏάει δÏο φοÏές (μία για κάθε λέξη).
    Τα Robot (κάποιες φοÏές αναφέÏονται ως ΑÏάχνες (Spiders)) είναι αυτόματοι επισκέπτες που χÏησιμοποιοÏνται από πολλές μηχανές αναζήτησης που σαÏώνουν το site σας για να το Ï€Ïοσθέσουν στην βάση τους και να βαθμολογήσουν την θέση του, ή που συλλέγουν στατιστικά ή ελέγχουν εάν το site σας είναι ακόμα ενεÏγό.
    #PROG# είναι ικανό να αναγνωÏίσει έως #RobotArray# robots.
    Όλα τα στατιστικά που συσχετίζονται με χÏόνο είναι βάση της ÏŽÏας του διακομιστή.
    Εδώ, τα δεδομένα που αναφέÏονται είναι: μέσος ÏŒÏος τιμών (έχουν υπολογιστεί από όλα τα δεδομένα Î¼ÎµÏ„Î±Î¾Ï Ï„Î¿Ï… Ï€Ïώτου και του τελευταίου e-mail στο εÏÏος της ανάλυσης)
    Εδώ, τα δεδομένα που αναφέÏονται είναι: συγκεντÏωτικά σÏνολα (έχουν υπολογιστεί από όλα τα δεδομένα Î¼ÎµÏ„Î±Î¾Ï Ï„Î¿Ï… Ï€Ïώτου και του τελευταίου e-mail στο εÏÏος της ανάλυσης)
    Κάποιες διάÏκειες Επισκέψεων είναι 'άγνωστες' Î±Ï†Î¿Ï Î´ÎµÎ½ μποÏοÏν πάντα να υπολογιστοÏν. Αυτός είναι ο βασικός λόγος για αυτό:
    - Η επίσκεψη δεν ολοκληÏώθηκε όταν συνέβει ή 'ανανέωση'.
    - Η επίσκεψη ξεκίνησε την τελευταία ÏŽÏα (μετά τις 23:00) της τελευταίας μέÏας ενός μήνα (Ένα τεχνικό ζήτημα αποτÏέπει το #PROG# από τον υπολογισμό διάÏκειας τέτοιων συνεδÏιών)
    Τα Σκουλήκια (Worms) είναι αυτόματοι επισκέπτες που στην Ï€Ïαγματικότητα Ï€Ïοήλθαν από εξωτεÏικοÏÏ‚ διακομιστές, που Ï€Ïοσβλήθηκαν από ιό, που Ï€Ïοσπαθεί να κάνει συγκεκÏιμένα χτυπήματα-επισκέψεις στον διακομιστή σας ώστε να τον Ï€Ïοσβάλλει με τον ιό. Στις πεÏισσότεÏες των πεÏιπτώσεων, τέτοια σκουλήκια εκμεταλλεÏονται bugs από εμποÏικοÏÏ‚ διακομιστές που δεν έχουν ενημεÏωθεί με τις τελευταίες αναβαθμίσεις. Εάν το σÏστημά σας δεν είναι ο ευαίσθητος στόχος του σκουληκιοÏ, μποÏείτε απλά να αγνοήσετε τέτοιες επισκέψεις.
    Εμφανίζονται ελαχιστα 'σκουλήκια διακομιστών' στον κόσμο αλλά είναι Ï€Î¿Î»Ï ÎµÎ½ÎµÏγά κατά διαστήματα. #PROG# είναι ικανό να αναγνωÏίσει #WormsArray# γνωστές υπογÏαφές σκουληκιών (nimda,code red,...).
    Καμία πεÏιγÏαφή για αυτό το σφάλμα.
    Η αίτηση αναγνωÏίστηκε από τον διακομιστή αλλά θα επεξεÏγαστεί αÏγότεÏα.
    Ο διακομιστής επεξεÏγάστηκε την αίτηση αλλά δεν υπάÏχει κανένα έγγÏαφο Ï€Ïος αποστολή.
    ΜεÏικό πεÏιεχόμενο.
    Το έγγÏαφο για το οποίο έγινε η αίτηση μετακινήθηκε και βÏίσκεται τώÏα σε μια άλλη διεÏθυνση που αναφέÏεται στην απάντηση.
    Καμία πεÏιγÏαφή για αυτό το σφάλμα.
    Συντακτικό σφάλμα, ο διακομιστής δεν κατανόησε το αίτημα.
    ΠÏοσπάθεια Ï€Ïόσβασης σε ένα URL όπου χÏειάζεται όνομα χÏήστη και κωδικός.
    Μια υψηλή τιμή στο στοιχείο αυτό θα μποÏοÏσε να σημαίνει ότι κάποιος (όπως ένας hacker) Ï€Ïοσπαθεί να σπάσει, ή να εισέλθει στο site σας (Ï€Ïοσπαθώντας να εισέλθει σε μια ασφαλή πεÏιοχή δοκιμάζοντας για παÏάδειγμα διαφοÏετικά ονόματα χÏήστη/κωδικοÏÏ‚).
    ΠÏοσπάθεια Ï€Ïόσβασης ενός URL που δεν έχει Ïυθμιστεί να είναι Ï€Ïοσβάσιμο, ακόμα και με ένα όνομα χÏήστη/κωδικό (για παÏάδειγμα, ένα URL μεσα σε ένα φάκελο που δεν έχει οÏιστεί ως "πλοηγήσιμος".).
    ΠÏοσπάθεια Ï€Ïόσβασης σε ένα URL που δεν υπάÏχει. Αυτό το σφάλμα συνήθως σημαίνει ότι υπάÏχει κάποιος άκυÏος σÏνδεσμος κάπου στο site σας ή ότι κάποιος επισκέπτης πληκτÏολόγησε λανθασμένα κάποιο URL.
    Ο διακομιστής έκανα υπεÏβολικά μεγάλο χÏονικό διάστημα να αποκÏιθεί σε μία αίτηση. Αυτό το σφάλμα συνήθως εμπεÏιέχει είτε κάποιο αÏγό CGI script που ο διακομιστής χÏειάστηκε να τεÏματίσει είτε υπεÏβολικά Ï€Î¿Î»Ï ÎºÎ¯Î½Î·ÏƒÎ· στον διακομιστή.
    ΕσωτεÏικό σφάλμα. Αυτό το σφάλμα συνήθως Ï€Ïοκαλείται από ένα Ï€ÏόγÏαμμα CGI που τεÏματίστηκε ανώμαλα (coredump για παÏάδειγμα).
    Άγνωστο αίτημα ενέÏγειας.
    Κώδικας που επιστÏέφεται από έναν HTTP διακομιστή που λειτουÏγεί ως μεσολαβητής ή δÏομολογητής όταν ένας Ï€Ïαγματικός, διακομιστής Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï Î´ÎµÎ½ αποκÏίνεται με επιτυχία στο αίτημα του πελάτη.
    ΕσωτεÏικό σφάλμα διακομιστή.
    Τέλος χÏόνου διακομιστή Ï€Ïλης.
    Η HTTP έκδοση δεν υποστηÏίζεται.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-se.txt0000640000175000017500000001141012410217071022317 0ustar sksk
    Ett nytt besök är en besökare (som tittar på en sida) som inte varit inne på sajten på #VisitTimeOut# minuter.
    Antal besökare (IP-adresser) som besökte sajten (och som tittade på minst en sida).
    Detta värde anger antalet olika fysiska personer som nått siten på en dag.
    Antal gånger en sida på sajten har besökts (Summa för alla besökare för alla besök).
    Detta värde skiljer sig från "träffar" genom att det bara räknar HTML-sidor, ej bilder eller andra filer.
    Antal gånger en sida, bild eller fil från sajten har besökts eller laddats hem av någon.
    Detta värde finns bara med som referens eftersom antalet "sidor" som besökts oftast är bättre att titta på ur marknadsföringssynpunkt.
    Detta värde visar hur mycket data som har laddats hem genom alla sidor, bilder och filer på hela sajten.
    Enheterna är Kb, Mb or Gb (KiloByte, MegaByte eller GigaByte)
    #PROG# känner igen när besökare hittar din sajt genom en sökning i de #SearchEnginesArray# populäraste sökmotorerna och katalogerna (såsom Yahoo, Altavista, Lycos, Google, Voila, osv...).
    En lista på alla externa sidor som länkar till (och besökare använt för att komma till) din sida (Bara de #MaxNbOfRefererShown# mest använda länkarna visas). Länkar i sökresultaten från sökmotorerna tas inte med här eftersom de redan räknats in i föregående rad i tabellen.
    Denna tabell visar de vanligaste nyckelorden som använts för att hitta din sajt genom sökmotorer och kataloger. (#PROG# känner igen nyckelord från de #SearchEnginesArray# vanligaste sökmotorerna och katalogerna, såsom Yahoo, Altavista, Lycos, Google, Voila, osv...).
    Robotar (kallas också Spindlar) är automatiska datoriserade besökare som används av många sökmotorer som söker av din webbsajt för att indexera och rangordna den, samla statistik för webbsajter och/eller se om din sajt fortfarande finns kvar.
    #PROG# känner igen upp till #RobotArray# olika robotar.
    All tidsrelaterad statistik baseras på klockan på webbservern.
    Här visas medelvärden (beräknade för alla besök från det första till det sista)
    Här visas ackumulerade summor (beräknade för alla besök från det första till det sista)
    Ingen beskrivning finns för detta fel.
    Servern förstod begäran men kommer bearbeta den senare.
    Servern har bearbetat begäran men har inte genererat något svar.
    Endast en del av innehållet överfördes.
    Sidan har flyttats och ny adress finns i svaret.
    Ingen beskrivning finns för detta fel.
    Syntax fel, servern förstod inte begäran.
    Någon försökte komma åt en URL där inloggning krävdes.
    Ett högt värde här skulle kunna innebära att någon (t.ex. en hacker) försöker bryta sig in i din sajt (t.ex. genom att pröva sig fram tills de hittar rätt lösenord).
    Någon försökte komma åt en URL som är inställd så att man inte kommer åt den ens med rätt lösenord (till exempel en katalog som är inställd att inte tillåta bläddring.).
    Någon försökte nå en icke existerande URL. Detta betyder ofta att det finns en felaktig länk på din sajt eller att någon stavade fel till en URL.
    Servern har tagit för lång tid på sig att besvara en begäran. Detta beror ofta på ett långsamt cgi-skript eller att servern är överbelastad.
    Internt fel. Detta fel orsakas ofta av att ett cgi-skript går fel (t.ex. gör en coredump).
    Okänd begäran.
    Felkod som genereras då en HTTP-server som arbetar som proxy eller gatewayt ine får svar från den verkliga servern som skulle ha svarat på klientens begäran.
    Internt serverfel.
    Timeout i gateway
    HTTP-versionen stöds ej.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-bg.txt0000640000175000017500000002150312410217071022304 0ustar sksk
    Ðово поÑещение Ñе отчита при вÑеки нов входÑщ поÑетител (разглеждащ Ñтраница), който не е поÑещавал през поÑледните #VisitTimeOut# min.
    БроÑÑ‚ на клиентÑките хоÑтове (IP адреÑи), които Ñа поÑетили Ñайта (и Ñа разгледали поне една Ñтраница).
    Тези данни показват Ð±Ñ€Ð¾Ñ Ð½Ð° различните физичеÑки лица, поÑетили Ñайта във вÑеки един ден.
    Колко пъти тази Ñтраница от Ñайта е разгледана (Общо за вÑички поÑетители за вÑички поÑещениÑ).
    Тези данни Ñе различават от "хитове" по това, че отброÑват Ñамо HTML Ñтраници (без картинките и другите видове файлове).
    Колко пъти Ñтраница, картинка или друг файл от Ñайта е разгледан или Ñвален от поÑетител.
    Тези данни Ñа Ñамо Ñправочни, тъй като Ð±Ñ€Ð¾Ñ Ð½Ð° разгледаните "Ñтраници" чеÑто Ñа обект на маркетингова политика.
    Тази Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñе отнаÑÑ Ð´Ð¾ количеÑтвото данни Ñвалени Ñ Ð²Ñички Ñтраници, картинки и файлове във вашиÑÑ‚ Ñайт.
    Мерните единици Ñа в KB, MB или GB (Килобайти, Мегабайти или Гигабайти)
    #PROG# разпознава вÑеки доÑтъп до Ð²Ð°ÑˆÐ¸Ñ Ñайт Ñлед претърÑване от #SearchEnginesArray# популÑрните търÑачки (като Yahoo, Altavista, Lycos, Google, Voila, и Ñ‚.н....).
    СпиÑък на вÑички външни Ñтраници използвани за връзка (и вход) към вашиÑÑ‚ Ñайт (Само #MaxNbOfRefererShown#-те най-чеÑто използвани външни Ñтраници Ñа показани). Връзките, използвани като резултат от търÑачките Ñа изключени, Ñ‚.к. вече Ñа показани в Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ñ€ÐµÐ´ от тази таблица.
    Таблицата показва ÑпиÑък Ñ Ð½Ð°Ð¹-чеÑто използваните ключови фрази или думи използвани за намиране на вашиÑÑ‚ Ñайт Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰Ñ‚Ð° на интернет търÑачки. (Ключовите думи от #SearchEnginesArray# най-популÑрните търÑачки Ñа разпознати от #PROG#, като Yahoo, Altavista, Lycos, Google, Voila, и Ñ‚.н...).
    Заб.: общиÑÑ‚ брой на търÑениÑта по ключови думи може да превишава Ð±Ñ€Ð¾Ñ Ð½Ð° търÑениÑта по ключови фрази (иÑтинÑкиÑÑ‚ брой на търÑениÑта), защото ако Ñе използват 2 кл. думи при едно и Ñъщо търÑене Ñе отброÑват 2 търÑÐµÐ½Ð¸Ñ Ð¿Ð¾ думи (по веднъж за вÑÑка дума).
    Роботите (извеÑтни и като ПаÑци) Ñа автоматизирани компютърни поÑетители използвани от търÑачките да Ñканират Ñайта ви за индекÑиране и клаÑифициране: те Ñъбират Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Уеб Ñайтовете и/или проверÑват дали Ñайтът ви е онлайн.
    #PROG# може да разпознае до #RobotArray# робота.
    Ð’Ñички времеви ÑтатиÑтики Ñа базирани на чаÑовото време на Ñървъра.
    Докладваните данни Ñа: приблизителни ÑтойноÑти (изчиÑлени от вÑички данни между началното и поÑледното поÑещение)
    Докладваните данни Ñа: нараÑтващи Ñуми (изчиÑлени от вÑички данни между началното и поÑледното поÑещение)
    ÐÑкои ÑтойноÑти на ПродължителноÑÑ‚ на поÑещениÑта Ñа 'неизвеÑтни' защото невинаги могат да бъдат изчиÑлени. ОÑновната причина за това е:
    - ПоÑещението още не е приключило, когато е предизвикано 'обновÑване'.
    - ПоÑещението е започнало в поÑледниÑÑ‚ Ñ‡Ð°Ñ (Ñлед 23:00) от поÑледниÑÑ‚ ден на меÑеца (по техничеÑки причини #PROG# е възпрепÑÑ‚Ñтван да изчиÑли продължителноÑтта на такива ÑеÑии).
    ÐÑма опиÑание на тази грешка.
    ЗаÑвката ще бъде обработена по-къÑно от Ñървъра.
    Сървърът обработи заÑвката, но Ñ‚Ñ Ð½Ðµ Ñъдържа нищо.
    ЧаÑтично Ñъдържание
    Ð’ отговора на заÑвката можете да видите новиÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ð½Ð° поиÑканиÑÑ‚ документ.
    ÐÑма опиÑание на тази грешка.
    Синтактична грешка, Ñървърът не разбира вашата заÑвка.
    Опитвате Ñе да доÑтигнете URL защитен Ñ Ð¸Ð¼Ðµ/парола.
    Многократни такива ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³Ð°Ñ‚ да означават опит за неоторизиран и/или злонамерен доÑтъп до вашиÑÑ‚ Ñайт.
    Опитвате Ñе да доÑтигнете URL недоÑтъпен и за оторизирани потребители (например, URL Ð°Ð´Ñ€ÐµÑ Ð² директориÑ, коÑто не е дефинирана за "преглед".).
    Опитвате Ñе да доÑтигнете неÑъщеÑтвуващ URL. Това показва ÑъщеÑтвуването на невалидна връзка в Ñайта или погрешно напиÑан от поÑÐµÑ‚Ð¸Ñ‚ÐµÐ»Ñ URL адреÑ.
    Сървърът е отделил твърде много време за да отговори на заÑвката. Тази грешка обикновено означава или бавен CGI Ñкрипт, който Ñървърът Ñе е принудил да прекрати или извънредно претоварен ÑÑŠÑ Ð·Ð°Ñвки Ñървър.
    Вътрешна грешка. Тази грешка обикновено е причинена от CGI програма коÑто е прекратила дейÑтвието Ñи абнормално(coredump например).
    ИÑканото дейÑтвие е непознато.
    Код за грешка, върнат от HTTP Ñървър, работещ като прокÑи или gateway, когато Ñървърът-цел не е отговорил уÑпешна на клиентÑката заÑвка.
    Вътрешна грешка на Ñървъра.
    Портално(Gateway) прекъÑване.
    HTTP верÑиÑта не Ñе поддържа.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nn.txt0000640000175000017500000001225712410217071022335 0ustar sksk
    Eit nytt besøk er ein ny gjest som ikkje har vore tilkopla nettstaden siste #VisitTimeOut# minutt.
    Talet på klientvertar (IP-adresser) som har besøkt nettstaden, og har sett minst éi side).
    Denne informasjonen gjeld talet på forskjellige personar som har besøkt sida.
    Talet på gongar ei side på nettstaden har blitt vist.
    Denne informasjonen skil seg frå «treff» ved å berre telja HTML-sider, og ikkje bilde og andre filer.
    Talet på gongar ei side, eit bilde eller ei fil på nettstaden har blitt vist eller lasta ned.
    Denne informasjonen viser kor mykje data som har blitt lasta ned totalt (sider, bilde eller andre filer).
    Einingane er KiB, MiB eller GiB (kibibyte, mebibyte eller gibibyte)
    #PROG# kan sjå når eit besøk på nettstaden din kjem frå eit søk på dei #SearchEnginesArray# mest populære søkjemotorane og emnekatalogane (f.eks. Yahoo, Altavista, Lycos, Google og Kvasir).
    Liste over alle eksterne sider som har lenkjer til nettstaden din (berre dei #MaxNbOfRefererShown# mest brukte eksterne sider blir vist). Lenkjer frå søkjemotorar er ikkje tatt med her, då desse allereie er oppført i tidlegare i tabellen.
    Denne tabellen viser dei mest brukte søkjeorda og søkjeuttrykka brukt til å finna nettstaden i søkjemotorar og emnekatalogar. (Søkjeord frå dei #SearchEnginesArray# mest populære søkjemotorane og emnekatalogane kan lesast av #PROG#, f.eks. Yahoo, Altavista, Lycos, Google, og Kvasir).
    Merk at talet på søkjeord kan vera høgare enn talet på søkjeuttrykk, for når to eller fleire søkjeord blir brukt i same søk, vil kvart ord telja med i oversikta over søkjeord.
    Robotar blir brukt av mange søkjemotorar som besøkjer nettstaden din for å indeksera og rangera han, samla statistikk om nettstader, og/eller sjå om nettstaden framleis er tilgjengeleg.
    #PROG# kjenner til #RobotArray# robotar.
    All tidsrelatert statistikk er basert på tenartida.
    Rapporterte tal er gjennomsnittsverdiar (rekna ut frå all data mellom første og siste besøk i analyseperioden)
    Rapporterte tal er kumulative summar (rekna ut frå all data mellom første og siste besøk i analyseperioden)
    Nokre besøkslengder er «ukjente» fordi dei ikkje kan reknast ut. Hovudgrunnane for dette er:
    – Besøket er ikkje ferdig når rapportoppdateringa skjer.
    – Besøket starta etter klokka 23:00 på den siste dagen i månaden. (Tekniske grunnar hindrar AWStats å rekna ut besøkslengda i desse tilfella.)
    Inga beskriving av denne feilen.
    Førespurnaden vart forstått av tenaren men vil bli prosessert seinare.
    Tenaren har prosessert førespurnaden men har ikkje noko innhald å senda.
    Delvis innhald.
    Det førespurte dokumentet er flytta, og finst no på ei anna sida. Brukaren blir auomatisk vidaresendt til den nye adressa.
    Inga beskriving av denne feilen.
    Syntaksfeil. Tenaren forsto ikkje førespurnaden.
    Prøvde å henta ei side som var passordsikra.
    Mange slike feilmeldingar kan tyda på at nokon prøver å bryta seg inn på nettstaden din.
    Prøvde å henta side som er utilgjengeleg (sjølv med passord) (for eksempel ein katalog som er definert som ikkje lesbar).
    Prøvde å henta ei ikkje-eksisterande side. Denne feilen tyder oftast at det er ei lenkje ein eller annan plass på nettstaden din (eller på ei ekstern side) som ikkje fungerer, og som må oppdaterast.
    Tenaren har brukt for mykje tid på å svara på ein førespurnad. Denne feilen gjeld enten eit treigt CGI-skript tenaren måtte avslutta, eller tungt trafikkert tenar.
    Intern feil. Denne feiled kjem ofte av CGI-skript som har blitt avslutta unormalt.
    Ukjent førespurnad.
    Kode returnert av ein HTTP-tenar som fungerer som proxy eller systemport når ein ekte tenar ikkje svarer på førespurnaden.
    Intern tenarfeil.
    Systemport tidsavbroten.
    Støttar ikkje HTTP-versjonen.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-en.txt0000640000175000017500000001441112410217071022316 0ustar sksk
    A new visits is defined as each new incoming visitor (viewing or browsing a page) who was not connected to your site during last #VisitTimeOut# mn.
    Number of client hosts (IP address) who came to visit the site (and who viewed at least one page).
    This data refers to the number of different physical persons who had reached the site.
    Number of times a page of the site is viewed (Sum for all visitors for all visits).
    This piece of data differs from "hits" in that it counts only HTML pages as oppose to images and other files.
    Number of times a page, image, file of the site is viewed or downloaded by someone.
    This piece of data is provided as a reference only, since the number of "pages" viewed is often prefered for marketing purposes.
    This piece of information refers to the amount of data downloaded by all pages, images and files within your site.
    Units are in KB, MB or GB (KiloBytes, MegaBytes or GigaBytes)
    #PROG# recognizes each access to your site after a search from the #SearchEnginesArray# most popular Internet Search Engines and Directories (such as Yahoo, Altavista, Lycos, Google, Voila, etc...).
    List of all external pages which were used to link (and enter) to your site (Only the #MaxNbOfRefererShown# most often used external pages are shown). Links used by the results of the search engines are excluded here because they have already been included on the previous line within this table.
    This table shows the list of the most frequent keyphrases or keywords used to find your site from Internet Search Engines and Directories. (Keywords from the #SearchEnginesArray# most popular Search Engines and Directories are recognized by #PROG#, such as Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Note that total number of searches for keywords might be greater than total number of searches for keyphrases (real number of searches) because when 2 keywords were used on same search, search is counted twice for keywords (once for each word).
    Robots (sometimes refer to Spiders) are automatic computer visitors used by many search engines that scan your web site to index it and rank it, collect statistics on Internet Web sites and/or see if your site is still online.
    #PROG# is able to recognize up to #RobotArray# robots.
    All time related statistics are based on server time.
    Here, reported data are: average values (calculated from all data between the first and last visit in analyzed range).
    Here, reported data are: cumulative sums (calculated from all data between the first and last visit in analyzed range).
    Some Visits durations are 'unknown' because they can't always be calculated. This is the major reason for this:
    - Visit was not finished when 'update' occured.
    - Visit started the last hour (after 23:00) of the last day of a month (A technical reason prevents #PROG# from calculating duration of such sessions)
    Worms are automatic computer visitors that are in fact external servers, infected by a virus, that try to make particular hits on your server to infect it. In most cases, such worms exploit some bugs of not up to date or commercial servers. If your system is not the sensitive target of the worm, you can simply ignore those hits.
    There is very few 'server worms' in the world but they are very active at some times. #PROG# is able to recognize #WormsArray# known worm's signatures (nimda,code red,...).
    No description for this error.
    Request was understood by server but will be processed later.
    Server has processed the request but there is no document to send.
    Partial content.
    Requested document was moved and is now at another address given in answer.
    No description for this error.
    Syntax error, server didn't understand request.
    Tried to reach an URL where a login/password pair was required.
    A high number within this item could mean that someone (such as a hacker) is attempting to crack, or enter into your site (hoping to enter a secured area by trying different login/password pairs, for instance).
    Tried to reach an URL not configured to be reachable, even with an login/password pair (for example, an URL within a directory not defined as "browsable".).
    Tried to reach a non existing URL. This error often means that there is an invalid link somewhere in your site or that a visitor mistyped a certain URL.
    Server has taken too much time to respond to a request. This error frequently involves either a slow CGI script which the server was required to kill or an extremely congested web server.
    Internal error. This error is often caused by a CGI program that had finished abnormally (coredump for example).
    Unknown requested action.
    Code returned by a HTTP server that works as a proxy or gateway when a real, targeted server doesn't answer successfully to the client's request.
    Internal server error.
    Gateway Time-out.
    HTTP Version Not Supported.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-de.txt0000640000175000017500000001337312410217071022312 0ustar sksk
    Ein neuer Besucher wird definiert als jeder neue Besucher, der eine Seite abgerufen hat und der auf Ihre Web Site in den letzten #VisitTimeOut# min. nicht zugegriffen hat.
    Anzahl der Rechner (IP-Adressen), die Ihre Web Site besuchten und mindestens eine Seite aufgerufen haben.
    Diese Anzahl entspricht der Zahl an unterschiedlichen physikalischen Personen, die Ihre Web Site an irgendeinem Tag besuchten.
    Anzahl der insgesamt angezeigten Seiten Ihrer Web Site (Summe aller Zugriffe von allen Besuchern).
    Diese Zahl unterscheidet sich von den "Zugriffen", da nur HTML Seiten und keine Grafiken oder andere Dateien gezählt werden.
    Anzahl der insgesamt angezeigten oder heruntergeladenen Seiten, Grafiken, Dateien Ihrer Web Site.
    Diese Zahl wird nur als Referenz angegeben, da meistens die Anzahl der angezeigten "Seiten" für Marketingzwecke bevorzugt wird.
    Dieser Wert entspricht der Menge an Daten, die aufgrund aller Seiten, Grafiken und Dateien Ihrer Web Site übertragen worden sind.
    Einheiten sind in Kb, Mb oder Gb (KiloBytes, MegaBytes oder GigaBytes)
    #PROG# erkennt jeden Zugriff auf Ihre Web Site aufgrund einer Suche von einer der #SearchEnginesArray# beliebtesten Internet-Suchmaschinen und -Verzeichnisse (wie z.B. Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Eine Liste aller externen Seiten, von denen ein Verweis auf Ihre Web Site erfolgte (nur die #MaxNbOfRefererShown# am häufigsten aufgetretenen externen Seiten werden angezeigt). Verweise aufgrund eines Suchergebnisses einer Suchmaschine werden hier nicht aufgeführt, da diese bereits in der vorherigen Tabellenzeile angegeben worden sind.
    Diese Tabelle zeigt die Liste der am häufigsten verwendeten Schlüsselwörter, um Ihre Web Site mit einer Internet-Suchmaschine bzw. -Verzeichnis zu finden. (#PROG# erkennt die Schlüsselwörter der #SearchEnginesArray# beliebtesten Internet-Suchmaschinen und -Verzeichnisse, wie z.B. Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Robots (manchmal auch als Spider bezeichnet) sind automatische Computerbesucher, die von vielen Suchmaschinen eingesetzt werden, um Ihre Web Seite aufzunehmen und auszuwerten.
    #PROG# ist in der Lage, bis zu #RobotArray# Robots zu erkennen.
    Alle zeitbezogenen Statistiken basieren auf der Serverzeit.
    Die angezeigten Werte sind Durchschnittswerte (berechnet aus allen Werten zwischen dem ersten und letzten Besuch).
    Die angezeigten Werte sind Summenwerte (berechnet aus allen Werten zwischen dem ersten und letzten Besuch).
    Für diesen Fehler liegt keine Beschreibung vor.
    Die Anfrage wurde vom Server akzeptiert, aber sie wird erst später verarbeitet.
    Der Server hat die Anfrage verarbeitet, aber es wurde kein Ergebnis übertragen.
    Unvollständiger Inhalt.
    Das angeforderte Dokument wurde verschoben und ist nun unter der angegebenen Adresse erreichbar.
    Die angeforderten Daten wurden vorübergehend zu einem anderen URI verschoben.
    Syntaxfehler, der Server kann die Anfrage nicht verarbeiten.
    Es wurde versucht, auf eine URL zuzugreifen, für die eine Authentifizierung notwendig war.
    Eine hohe Anzahl kann darauf hindeuten, daß jemand (z.B. ein Hacker) vesucht, sich unerlaubten Zugang zu Ihrer Web Site zu verschaffen, indem er z.B. verschiedene Login/Passwort Kombinationen durchprobiert.
    Es wurde versucht, auf eine unerreichbare URL zuzugreifen, für die selbst eine Authentifizierung nicht ausreicht
    (z.B. eine URL innerhalb eines für Browserzugriffe gesperrten Verzeichnisses).
    Es wurde versucht, auf eine ungültige URL zuzugreifen. Dieser Fehler bedeutet meistens, daß es einen
    ungültigen Link irgendwo in Ihrer Web Site gibt oder daß ein Besucher einen Schreibfehler bei einer URL gemacht hat.
    Der Server benötigte zu viel Zeit, um auf eine Anfrage zu reagieren. Dieser Fehler bezieht sich meistens auf ein
    langsam arbeitendes CGI-Skript, welches durch den Server vorzeitig abgebrochen werden mußte, oder einen überlasteten Web Server.
    Interner Fehler. Dieser Fehler wird meist durch ein CGI-Skript verursacht, das z.B. durch einen Programmfehler unerwarteterweise beendet worden ist.
    Unbekannte Art der Anfrage.
    Dieser Fehler wird von einem HTTP-Server gemeldet, der als ein Proxy oder Gateway fungiert, wenn der eigentliche Zielserver auf
    die Anfrage nicht erfolgreich geantwortet hat.
    Interner Serverfehler.
    Gateway Zeitüberschreitung.
    HTTP-Version wird nicht unterstützt.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gl.txt0000640000175000017500000001705512410217071022325 0ustar sksk
    Unha nova visita defínese por cada novo visitante entrante (accedendo a unha páxina) que non estivera conectado ó sitio durante os últimos #VisitTimeOut# mins..
    Número de máquinas cliente (enderezos IP) que viñeron a visitar o sitio (e que miraron polo menos unha páxina).
    Este dato refire o número de diferentes persoas físicas que accederan o sitio.
    Número de veces que unha páxina deste sitio é vista (Suma de tódolos visitantes para tódalas visitas).
    Esta dato difire de "accesos" en que somente conta páxinas HTML e non imaxes e outros ficheiros.
    Número de veces que unha páxina, imaxe ou ficheiro do sitio e vista ou descargada por alguén.
    Este dato provese como referencia somente, dado que o número de "páxinas" vistas é a miudo preferido para propósitos de mercadotecnia.
    Este dato refírese á cantidade de datos descargados de tódalas páxinas, imaxes e ficheiros no sitio.
    As unidades están en KB, MB ou GB (Kilooctetos, Megaoctetos ou Gigaoctetos)
    #PROG# recoñece cada acceso ó sitio feito despois dunha procura dende os #SearchEnginesArray# Procuradores e Directorios mais populares da Interrede (como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Lista de tódalas páxinas externas que foron usadas para enlazar (e entrar) ó sitio (Somente as #MaxNbOfRefererShown# páxinas externas máis frecuentemente usadas son amosadas). Os enlaces usados polos resultados dos procuradores son excluídos aquí porque xa foron incluídos na liña anterior desta táboa.
    Esta táboa amosa a lista de mais frecuentes palabras ou frases clave usadas para atopa-lo sitio dende Procuradores e Directorios da Interrede. (Palabras clave dos #SearchEnginesArray# Procuradores e Directorios mais populares son recoñecidas por #PROG#, como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Decátese de que o número total de procuras por palabras clave pode ser maior co número total de procuras por frases clave (número real de procuras) porque cando dúas palabras clave sexan usadas na mesma procura, a procura e contada dúas veces por palabras clave (unha vez por cada palabra).
    Os Robots (ás veces refírese a Arañas) son ordenadores automáticos visitantes usados por moitos procuradores que exploran o sitio web para indicalo e clasificalo, recoller estatísticas sobre sitios web da Interrede e/ou mirar se o sitio de vostede está aínda en liña.
    #PROG# é capaz de recoñecer ata #RobotArray# robots.
    Tódalas estadísticas feitas en relación ó tempo están baseadas na hora do servidor.
    Aquí, os datos expostos son valores medios (calculados a partir de tódolos datos entre a primeira e última visita no rango analizado)
    Aquí, os datos expostos son sumas acumulativas (calculados a partir de tódolos datos entre a primeira e última visita en un rango analizado)
    Algunhas Duracións de visitas son 'descoñecidas' porque non sempre poden ser calculadas. As principais razóns disto son:
    - A visita non rematara cando a 'actualización' ocurríu.
    - A visita escomenzóu na derradeira hora (despois das 23:00) do derradeiro día dun mes (Unha razón técnica evita que #PROG# calcule a duración de tales sesións)
    Os Gusanos son ordenadores automáticos visitantes que son de feito servidores externos, infectados por un virus, que intentan realizar accesos particulares no servidor para infectalo. Na maioría dos casos, ditos gusanos explotan algúns erros de servidores sen actualizar ou comerciais. Se o sistema non é o obxectivo sensible do gusano, pódese sinxelamente ignorar estes accesos.
    Hai moi poucos 'gusanos de servidor' no mundo pero están moi activos ás veces. #PROG# é capaz de recoñecer #WormsArray# sinaturas de gusanos coñecidos (nimda, code red, ...).
    Error sen descripción.
    A petición foi comprendida polo servidor pero se procesará máis tarde.
    O servidor procesóu a petición pero non hai documento para enviar.
    Contido parcial.
    O documento pedido foi reubicado e está agora noutro enderezo amosado na resposta.
    Error sen descripción.
    Error de sintaxe, o servidor non comprendéu a petición.
    Intentos de acceder un URL onde un par identificador/contrasinal foi requirido.
    Un número alto neste apartado podería significar que alguén (como un intruso) está intentando romper ou introducirse no sitio (esperando entrar nunha área segura probando diferentes pares identificador/contrasinal, por exemplo).
    Intentos de acceder a un URL non configurado para ser accesible, nin siquera con un par identificador/contrasinal (por exemplo, un URL nun directorio non definido como "navegable").
    Intentos de acceder un URL non existente. Este erro a miúdo significa que hai un enlace inválido nalgures no sitio ou que un visitante escribíu mal un certo URL
    O servidor tardóu demasiado tempo para responder unha petición. Este erro frecuentemente implica ben un lento guión (script) CGI que o servidor foi requirido para matar ou ben un servidor web extremadamente conxestionado.
    Erro interno. Este erro é a miúdo causado por un programa CGI que finalizóu anormalmente (volcado de núcleo, por exemplo).
    Acción requirida descoñecida
    Código retornado por un servidor HTTP que funciona como atallo ou pasarela cando un servidor real destinatario non responde axeitadamente á petición do cliente
    Erro interno do servidor.
    A pasarela non responde.
    Versión de HTTP non soportada.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tr.txt0000640000175000017500000000774512410217071022355 0ustar sksk
    Yeni ziyaretçi, geçmiþ #VisitTimeOut# dakika içinde sitenize baðlanmamýþ ve o anda sitenize bakan kullanýcýdýr.
    Sitenizi ziyaret eden ve en az bir sayfa gören bilgisayar (IP adresi) sayýsý. Bu sayý sitenizi bir gün içinde ziyaret eden farklý kiþileri temsil eder.
    Sitedeki bir sayfanýn kaç kere görüldüðü (Tüm ziyaretçilerin tüm ziyatlerinin toplamý). Bu sayý "hits" sayýsýndan farklýdýr: sadece HTML dosyalarý sayýlýr, resim ve diðer dosyalar sayýlmaz.
    Sitedeki sayfa, resim, ve dosyalarýn biri tarafýndan kaç kere indirlmiþ veya görülmüþ olmasý. Bu bilgi kaynak olarak verilmiþtir. Genelde pazarlama alanýnda görüntülenen sayfa sayýsý tercih edilir.
    Bu sayý sitenizden tüm resimler, sayfalar ve dosyalar dahil indirilen toplam bilgi miktarýný belirtir.
    #PROG# sitenize en popüler #SearchEnginesArray# Ýnternet dizini ve arama motorundan gelen eriþimleri anlar.
    Sitenize baðlantý veren (ve giriþ yapmak için kullanýlan) dýþ sayfalar (Sadece en çok kullanýlan #MaxNbOfRefererShown# dýþ sayfa gösterilmiþtir.) Arama motorlarý tarafýndan kullanýlan arama sonuçlarý bu listeye dahil deð idir, çünkü bu tabloda bir üst satýrda bu bilgi verilmiþtir.
    Bu tablo sitenizi Ýnternet dizinlerinden ve arama motorlarýndan bulmak için en çok kullanýlan anahtar sözcükleri gösterir. (#PROG# en popüler #SearchEnginesArray# Ýnternet dizini ve arama motorundan kullanýlan anahtar sözcükleri gösterir.
    Robotlar (basþka bir deyiþle Örümcekler) sitenizi (1) dizinlemek ve sýralamak, (2) istatistik toplamak, ve/veya (3) sitenizin iþler durumda olduðunu kontol etmek amacýyla tarayan otomatik bilgisayar programlarýdýr. #PROG# #RobotArray#adet robotu tanýr.
    Bu hatanýn açýklamasý yok.
    Sunucu isteðinizi anladý fakat daha sonra iþlem görecek.
    Sunucu isteðinizi yerine getirdi fakat yollanacak dosya yok.
    Kýsmi içerik.
    Ýstenilen belge cevapta verilen baþka bir adrese taþýnmýþtýr.
    Bu hatanýn açýklamasý yok.
    Sözdizimi hatasý, sunucu isteðinizi anlamadý.
    Kulannýcý adý ve þifre gerektiren bir URLe ulaþýldý.
    Burada yüksek bir sayý bir korsanýn sitenize girmeye çalýþtýðýný belirtebilir.
    Þifre kullanarak bile ulaþýlmasý yasaklanmýþ bir URL (örneðýn, "bakýlabilir" olarak tanýnlanmamýþ bir klasör.).
    Varolmayan bir URLLe ulaþmaya çalýþýldý. Bu hata genellikle sitenizin bir yerinde geçersiz bir baðlantýý olduðunu veya ziyaretçinin URLi yanlýþ yazmasýndan kaynaklanýr.
    Sunucu iþleme cevap vermek için çok fazla zaman harcadý. Bu genellikle yavaþ bir CGI programýnýn kalabalýk bir veb sunucusunda durdurulmasýndan kaynaklanýr.
    Dahiki hata. Bu hata genellikle bir CGI programýnýn beklenmeyen bir þekilde sonuþlanmasý (çekirdek bellek dökümü) ile oluþur.
    Ýstenilen iþlem bilinmiyor.
    Ulaþýlmaya çalýþýlan sunucu cevap vermeyince að geçidi olarak iþleyen bir HTTP sunucunun belirttiði hata.
    Dahili sunucu hatasý.
    Að geçidi zaman aþýmý.
    HTTPnin bu sürümü desteklenmiyor.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-al.txt0000640000175000017500000001403512410217071022312 0ustar sksk
    Vizita është përkufizuar si vizitor risi (Shfletimin apo Shiqimin e faqes) të cilët nuk e kan vizituar faqen që nga #VisitTimeOut# min.
    Numri i klientëve strehues (IP adresa) të cilët erdhën ta vizitojnë faqen (dhe që shfletuan se paku një faqe).
    Këto t'dhëna tregojnë numrin e personave të ndryshëm fizikë të cilët arritën faqen në çdo ditë.
    Hera e faqeve që është shiquar (Shuma e të gjitha vizitave).
    Kjo pjes e t'dhënave ndryshon nga "Hyrjet" në atë mënyr i numron vetëm faqet HTML kundër atyre për figur dhe të tjera.
    Hera e faqes, figurës, vargut që është shiquar ose shkarkuar nga dikush.
    Këto t'dhëna janë ofruar vetëm si referencë, pasi që numri i shiqimeve "Faqe" është menduar për qëllime tregtie.
    Kjo informatë trtegon sasinë e t'dhënave shkarkuar nga të gjitha faqet, figurat dhe vargjet mbrenda një Faqësie.
    Njesitë janë në KB, MB ose GB (KiloBajt, MegaBajta or GigaBajta)
    #PROG# e njeh çdo lidhje në faqe search nga #SearchEnginesArray# Makinat Kërkuese në Internet më të popullarizuara si dhe Tregues (si Yahoo, Altavista, Lycos, Google, Voila, etj...).
    Lista e të gjitha faqeve jashta faqës që nyjëzuan (dhe hyrje) te faqja e juaj (Vetëm #MaxNbOfRefererShown# faqe më të shpeshta). Nyjet që janë përdor nga rezultatet e makinave kërkuese janë përjashtu këtu sepse ato përfshi në rreshtat e tabelave.
    Kjo tabelë tregon kryefrazat dhe kryefjalitë më të shpeshta që janë përdorur ta gjejnë faqen tënde nga Makinat Kërkuese dhe tregues në Internet. (kryefjalë nga #SearchEnginesArray# Makinat Kërkuese dhe Treguest më të popullarizuar janë njohur nga #PROG#, si Yahoo, Altavista, Lycos, Google, Voila, etj...).
    Vështri se shuma e kryefalive mund të jet më i madh se sa shume për kryefraza (numri real i kërkesave) sepse ndoshta dy fjali janë përdor në të njejtin Kërkues, kërkuese është numruar dy herë për fjali (një herë për çdo fjalë).
    Robotat (rrallë emruar si Marimanga) janë vizita automatike kompjuterike përdorur nga shumë Makina Kërkuese që e Shiqon faqen tënga për tregues dhe radhitje, grumbullon statistika në Faqet e Internetit dhe/ose shiqon nëse faqja e juajështë ende në linje.
    #PROG# Ka mundësi që t'i njohë #RobotArray# robota.
    Të gjitha vizitat janë bazuar nga koha reale e Shërbyesit.
    Këtu, t'dhënat e raportuara janë: valutat mesatare (llogaritur nga t'dhëant ndërmjet vizites së parë dhe të fundit)
    Këtu, t'dhënat e raportuara janë: Shuma grumbulluese (llogaritur nga t'dhëant ndërmjet vizites së parë dhe të fundit)
    Disa zgjatje të vizitave janë 'panjohur' sepse gjithmonë ato nuk mund të llogariten. Kjo është arsya kryesore për këtë:
    - vizita nuk ishte përfundur kur 'freskimi' ndodhi.
    - vizita filloi në orën e fundit (pas 23:00) te fundi i ditës së muajit (Një arsye teknike parandalon #PROG# për llogaritjen e një zgjatje të një mbledhje të tillë)
    Nuk ka përshkrim për këtë gabim.
    Kërkesa është kuptuar nga shërbyesi por do të kryesohet më vonë.
    Shërbyesi ka kryesuar mirpo atje nuk ka dokument për ta dërguar.
    Përmbajtje gjysore.
    Dokumenti i kërkuar ishte larguar dhe tani një adres tjetër është përgjigj.
    Nuk ka përshkrim për këtë gabim.
    Gabim sintaksor, shërbyesi nuk e ka kuptuar kërkesen.
    Provoi që ta arrij një URL ku një hyrje/parullë është nevojitur.
    Numri i madh në këtë gjë d.m.th. se (si psh. Grepi) është duke provuar që ta then, ose për të hyr në faqen tënde të siguruar (si shembull, duke shpresuar se duke provu parulla të ndryshme mund të hynë në hapsiren e siguruar).
    Provoi që ta arrij një URL pa trajtur për arritje, edhe me parullë (për shembull, një URL mbrenda Treguesit jo e përkufizuar si "shfletuese".).
    Provoi që ta arrij një URL joekzistuese. Ky gabim shpesh dmth një nyje pavlerë diku në faqen tënde ekziston ose vizitori e ka gabuar një URL të caktuar.
    Shërbyesi shfrytëzoi shumë kohë ti përgjigjet kërkesës. Ky gabim shpesh përfshin skriptat (CGI, PHP) e ngadalshëm që shërbyesi është detyru që ta zhduk Faqe shërbyesin jashtëzakonisht të dyndur.
    Gabim i mbrendshëm. Ky gabim shpesh shkaktohet nga një program CGI që përfundoi parregull (psh trajtim i keq).
    Kërkes e panjohur.
    Kodi i kthyer nga një shërbyes HTTP që punon si portë prokurie kur realisht, shërbyesi shenjuar nuk përgjigjet sukseshëm te kërkesat e klientëve.
    Gabim mbrenda shërbyesit.
    Parta tejkaloi kohën.
    Botimi i HTTP Nuk është i Përkrahur
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-br.txt0000750000175000017500000001731012410217071022322 0ustar sksk
    Uma nova visita é definida como cada novo visitante entrando (vendo ou navegando por uma página) que não estava conectado a seu site pelos últimos #VisitTimeOut# minutos.
    Número de hosts clientes (endereços IP) que vieram visitar o site (e que viram pelo menos uma página).
    Estes dados se referem ao número de pessoas físicas diferentes que chegaram no site.
    Número de vezes que uma página do site é vista (Soma de todos os visitantes e todas visitas).
    Estes dados diferem dos "hits" pois somente conta a exibição de páginas HTML, enquanto os "hits" contam também imagens e outros arquivos.
    Número de vezes uma página, imagem, ou arquivo do site é visto ou recebido por alguém.
    Estes dados são fornecidos apenas como referência, já que o número de "páginas" visto é freqüentemente preferido para fins de marketing.
    Esta parte de informação refere-se à quantidade de dados recebidos de todas páginas, imagens e arquivos de seu site.
    Unidades estão em KB, MB ou GB (KiloBytes, MegaBytes ou GigaBytes)
    #PROG# reconhece cada accesso ao seu site após uma busca a partir das #SearchEnginesArray# mais populares Ferramentas de Busca da Internet e Diretórios (como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Lista de todas páginas externas que foram utilizadas como origem de acesso (e entrada) ao seu (Somente as #MaxNbOfRefererShown# páginas externas mais freqüentemente utilizadas são exibidas). Links utilizados pelos resultados de ferramentas de busca não são incluídos aqui pois já foram incluídos na linha anterior desta tabela.
    Esta tabela mostra a lista das mais freqüentes palavras-chave ou frases usadas para encontrar seu site a partir de Ferramentas de Busca da Internet e Diretórios. (Palavras-chave das #SearchEnginesArray# mais populares Ferramentas de Busca e Diretórios são reconhecidas pelo #PROG#, como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Note que o número total de buscas por palavras-chave pode ser maior que o número total de buscas por frases (número real de buscas) porque quando 2 palavras-chave são usadas em uma mesma busca, a busca é contada em dobro para palavras-chave (uma para cada palavra).
    Robots (também chamados de Spiders) são computadores visitantes automáticos utilizados por várias ferramentas de busca que podem rastrear seu web site para indexá-lo e classificá-lo, coletar estatisticas em Web sites da Internet e/ou verificar se seu site ainda está disponível.
    #PROG# é capaz de reconhecer até #RobotArray# robots.
    Todas as estatíticas de tempo relatadas são baseadas no horário do servidor.
    Aqui os dados reportados são: valores médios (calculados a partir de todos os dados entre a primeira e última visitas no intervalo analisado)
    Aqui os dados reportados são: somas cumulativas (calculadas a partir de todos os dados entre a primeira e última visitas no intervalo analisado)
    Some Duraçãoes de visitas são 'desconhecidas' porque não podem ser sempre calculadas. Esta é a principal razão para isso:
    - A Visita não tinha sido encerrada quando a 'atualização' ocorreu.
    - Visitas iniciadas na última hora (depois de 23:00) do último dia do mês (Uma razão técnica previne #PROG# de calcular as durações destas sessões)
    Worms (vermes) são visitas automáticas de computadores que na realidade são servidores externos, infectados por um vírus, que tenta realizar hits específicos em seu site para infectá-lo. Na maioria dos casos, estes "vermes" exploram defeitos ("bugs") de servidores. Se o seu sistema não é o alvo sensível do worm, você pode simplesmente ignorar estes hits.
    Existem poucos 'vermes de servidor' no mundo, mas eles costumam ser muito ativos às vezes. #PROG# é capaz de reconhecer #WormsArray# assinaturas conhecidas de vermes (nimda,code red,...).
    Erro sem descrição.
    Requisição foi entendida pelo servidor, mas será processada depois.
    O servidor processou a requisição, mas não há documento a ser enviado.
    Conteúdo parcial.
    O documento requisitado foi movido e está agora em outro endereço fornecido como resposta.
    Erro sem descrição.
    erro de sintaxe, o servidor não entendeu a requisição.
    Tentou alcançar uma URL em que um par usuário/senha foi requisitado.
    Um grande número neste item pode significar que alguém (como um hacker) está tentando quebrar, ou entrar em seu site (esperando entrar em uma área segura tentando diferentes pares de usuários/senhas, por exemplo).
    Tentou alcançar uma URL não configurada como acessível, mesmo com um par userio/senha (por exemplo, uma URL com um diretório não definido como "navegável".).
    Tentou alcançar uma URL inexistente. Este erro freqüentemente significa que há um link inválido em algum ponto de seu site ou que um visitante errou a digitaço de uma URL.
    O servidor levou muito tempo para responder a requisição. Este erro freqüentemente indica ou um script CGI lento que o servidor teve que interromper ou um servidor Web extremamente congestionado.
    Erro interno. Este erro é freqüentemente causado por um programa CGI que terminou de forma anormal (por exemplo um coredump).
    Ação requisitada desconhecida.
    Código retornado pelo servidor HTTP que trabalha como proxy ou gateway quando um servidor real algo não respondeu com sucesso à requisição do cliente.
    Erro interno do servidor.
    Tempo esgotado no Gateway.
    Versão de HTTP Não Suportada.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ru.txt0000640000175000017500000001536312410217071022351 0ustar sksk
    Ðовым поÑетителем ÑчитаетÑÑ Ð¿Ñ€Ð¸ÑˆÐµÐ´ÑˆÐ¸Ð¹ поÑетитель, которого не было на Ñайте более #VisitTimeOut# минут.
    КоличеÑтво хоÑтов (IP адреÑов), которые поÑетили Ñайт (кто проÑмотрел как минимум одну Ñтраницу).
    Ð”Ð°Ð½Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð° отражает количеÑтво различных поÑетителей, зашедших на Ñайт в течении одного днÑ.
    КоличеÑтво проÑмотренных Ñтраниц Ñайта (Ñумма вÑех поÑетителей).
    Эти данные отличаютÑÑ Ð¾Ñ‚ "хитов", так как здеÑÑŒ учтены только HTML-Ñтраницы без учета графики и прочих файлов.
    КоличеÑтво Ñтраниц, изображений и файлов Ñайта, которые были проÑмотрены или Ñкачаны поÑетителÑми.
    Эти данные приведены только Ð´Ð»Ñ ÑравнениÑ, Ñ‚.к. количеÑтво проÑмотренных "Ñтраниц" кораздо важнее Ð´Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ° Ñайта.
    ЗдеÑÑŒ отражен объем вÑех Ñтраниц, изображений и файлов, Ñкачанных Ñ Ñайта.
    #PROG# раÑпознает каждое поÑещение поÑÐµÑ‚Ð¸Ñ‚ÐµÐ»Ñ Ð¿Ð¾Ñле поиÑка в #SearchEnginesArray# наиболее популÑрных поиÑковых Ñерверах и каталогах (таких, как Yahoo, Altavista, Lycos, Google, Yandex, и пр...).
    СпиÑок вÑех внешних Ñтраниц, на которых была размещена ÑÑылка на данный Ñайт (показано только #MaxNbOfRefererShown# наиболее популÑрных внешних Ñтраниц). СÑылки Ñ Ð¿Ð¾Ð¸Ñковых Ñерверов здеÑÑŒ не отображены.
    ЗдеÑÑŒ указаны наиболее раÑпроÑтраненные ключевые Ñлова, иÑпользованные Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка в поиÑковых машинах и каталогах. (#PROG# раÑпознает ключевые Ñлова Ñ #SearchEnginesArray# поиÑковых Ñерверов и каталогов).
    Роботы (иногда называемые пауками) - Ñто автоматичеÑкие компьютерные поÑетители, иÑпользуемые многими поиÑковыми ÑиÑтемами Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы (1) индекÑировать и ранжировать Ñтраницу, (2) Ñобирать ÑтатиÑтику по Ñайтам и/или (3) Ñмотреть, доÑтупна ли до Ñих пор ваша Ñтраница on-line.
    #PROG# раÑпознает до #RobotArray# роботов.
    Ð”Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ошибки нет опиÑаниÑ.
    Данный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» понÑÑ‚ Ñервером, но будет обработан позднее.
    Сервер обработал запроÑ, но не обнаружил данных Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ поÑетителю.
    ЧаÑтичное Ñодержание.
    Документ был перемещен и находитÑÑ Ð¿Ð¾ адреÑу, находÑщемуÑÑ Ð² ответе.
    Ð”Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ошибки нет опиÑаниÑ.
    СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°, Ñервер не может обработать запроÑ.
    Попытка доÑтупа к URL где логин/пароль обÑзательны.
    Большое количеÑтво данных ошибок говорит о том, что некто (например, хакер) пыталÑÑ Ð¿Ñ€Ð¾Ð½Ð¸ÐºÐ½ÑƒÑ‚ÑŒ в закрытую облаÑть Ñайта Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ перебора различных вариантов логина и паролÑ.
    Попытка доÑтупа к URL который не был наÑтроен Ð´Ð»Ñ Ð´Ð¾Ñтупа (даже Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ логина и паролÑ) (к примеру, дирректориÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ была помечена как "browsable").
    Попытка доÑтупа к неÑущеÑтвующему URL. Ð”Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° говорит о неправильном указании ÑÑылки на данном Ñайте или уÑтаревшей ÑÑылке Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñайта.
    Сервер затратил Ñлишком много времени на подготовку ответа на запроÑ. Эта ошибка возникает в Ñлучает либо медленного CGI Ñкрипта, который Ñервер завершает, не дождавшиÑÑŒ ответа, либо при Ñильно загруженном Ñервере.
    ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Ð¢Ð°ÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° поÑвлÑетÑÑ Ð¿Ð¾Ñле CGI Ñкриптов, которые завершаютÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹.
    ÐеизвеÑтное требуемое дейÑтвие.
    Код, возвращенный HTTP Ñервером, который работает в качеÑтве proxy или шлюза, когда наÑтоÑший Ñервер неправильно ответил на Ð·Ð°Ð¿Ñ€Ð¾Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð°
    ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñервера.
    Тайм-аут шлюза.
    Ð”Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ HTTP не поддерживаетÑÑ.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nl.txt0000640000175000017500000001170212410217071022325 0ustar sksk
    Een nieuw bezoek is elke binnenkomende bezoeker (die een pagina bekijkt) die de laatste #VisitTimeOut# mn niet met uw site verbonden was.
    Aantal client hosts (IP adres) die de site bezochten (en minimaal een pagina bekeken).
    Dit geeft aan hoeveel verschillende fysieke personen de site op een bepaalde dag bezocht hebben.
    Aantal malen dat een pagina van de site bekeken is (Som voor alle bezoekers voor alle bezoeken).
    Dit onderdeel verschilt van "hits" in het feit dat het alleen HTML pagina's telt, in tegenstelling tot plaatjes en andere bestanden.
    Aantal malen dat een pagina, plaatje of bestand op de site door iemand is bekeken of gedownload.
    Dit onderdeel is alleen als referentie gegeven, omdat het aantal bekeken "pagina's" voor marketingdoeleinden de voorkeur heeft.
    Aantal door uw bezoekers gedownloade kibibytes.
    Dit onderdeel geeft de hoeveelheid gedownloade gegevens in alle pagina's, plaatjes en bestanden van uw site, gemeten in KiBs.
    Dit programma, #PROG#, herkent elke benadering van uw site na een zoekopdracht van de #SearchEnginesArray# meest populaire Internet zoekmachines (zoals Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Lijst van alle externe pagina's die zijn gebruikt om naar uw site te linken (of deze te benaderen) (Alleen de #MaxNbOfRefererShown# meest gebruikte externe pagina's zijn getoond. Links gebruikt door de resultaten van zoekmachines worden hiet niet getoond omdat deze al zijn opgenomen in de vorige regel van deze tabel.
    Deze tabel toont de lijst van keywords die het meest zijn gebruikt om uw site te vindein in Internet zoekmachines. (Keywords van de #SearchEnginesArray# meest populaire zoekmachines worden door #PROG# herkend, zoals Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Robots (soms Spiders genoemd) zijn automatische bezoekcomputers die door veel zoekmachines worden gebruikt om uw site te scannen om (1) deze te indexeren, (2) statistieken over Internet sites te verzamelen en/of (3) te kijken of site nog steeds on-line is.
    Dit programma, #PROG#, is in staat maximaal #RobotArray# robots te herkennen
    .
    Geen beschrijving voor deze foutmelding.
    De server heeft het verzoek begrepen, maar zal deze later behandelen.
    De server heeft het verzoek verwerkt, maar er is geen document om te verzenden.
    Gedeeltelijke inhoud.
    Het aangevraagde document is verplaatst en is nu op een andere locatie die in het antwoord gegeven is.
    Geen beschrijving voor deze foutmelding.
    "Taalfout", de server begreep het verzoek niet.
    Er is gepoogd een URL waarvoor een usernaam/wachtwoord noodzakelijk is te benaderen.
    Een hoog aantal van deze meldingen kan betekenen dat iemand (zoals een hacker) probeert uw site te kraken, of uw site binnen te komen (pogend een beveiligd onderdeel van uw site te benaderen door verschillende usernamen/wachtwoorden te proberen, bijvoorbeeld).
    Er is gepoogd een URL die is ingesteld om niet benaderbaar te zijn, zelfs met usernaam/wachtwoord te benaderen (bijvoorbeeld, een URL in een directory die niet "doorbladerbaar" is).
    Er is gepoogd een niet bestaande URL te benaderen. Deze fout betekent vaak dat er een ongeldige link in uw site zit of dat een bezoeker een URL foutief heeft ingevoerd.
    De server heeft er te lang over gedaan om een antwoord op een aanvraag te geven. Het kan een CGI script zijn dat zo traag is dat de server hem heeft moeten afbreken of een overbelaste web server.
    Interne fout. Deze error wordt vaak veroorzaakt door een CGI programma dat abnormaal is beeindigd (een core dump, bijvoorbeeld).
    Onbekende actie aangevraagd.
    Melding die door een proxy of gateway HTTP server wordt gegeven als een echte doelserver niet succesvol op de aanvraag van een client antwoordt.
    Interne server fout.
    Gateway time-out.
    HTTP versie niet ondersteund.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-es.txt0000640000175000017500000001426312410217071022330 0ustar sksk
    Se considera un nueva vista por cada nuevo visitante que consulta una página y que no haya accedido al sitio en los últimos #VisitTimeOut# mins..
    Número de Servidores (direcciones IP) que entran a un sitio (y que por lo menos visitan una página).
    Esta cifra refleja el número de personas físicas diferentes que hayan accedido al sitio en un día.
    Número de ocasiones que una página del sitio ha sido vista (La suma de todos los visitantes incluyendo múltiples visitas).
    Este contador se distingue de "hits" porque cuenta sólo las páginas HTML y no los gráficos u otros archivos o ficheros.
    El número de ocasiones que una página, imagen, archivo o fichero de un sitio es visto o descargado por un visitante.
    Este contador sirve de referencia, pero el contador de "páginas" representa un dato mercadotécnico generalmente más útil y por lo tanto se recomienda.
    El número de kilo bytes descargados por los visitantes del sitio.
    Se refiere al volumen de datos descargados por todas las páginas, imágenes y archivos o ficheros medidos en kilo bytes.
    El programa #PROG# es capaz de reconocer una visita a su sitio luego de cada búsqueda desde cualquiera de los #SearchEnginesArray# motores de búsqueda y directorios Internet más populares (Yahoo, Altavista, Lycos, Google, Terra, etc...).
    Lista de páginas de sitios externos utilizadas para acceder o enlazarse con su sitio (Sólo las #MaxNbOfRefererShown# páginas más utilizadas se encuentras enumeradas). Los enlaces utilizados por los motores de búsqueda o directorios son excluidos porque ya han sido contabilizados en el rubro anterior.
    Esta tabla muestra la lista de las palabras clave más utilizadas en los motores de búsqueda y directorios Internet para encontrar su sitio. (El programa #PROG# reconoce palabras clave usadas en los #SearchEnginesArray# motores de búsqueda más populares, tales como Yahoo, Altavista, Lycos, Google, Voila, Terra etc...).
    Los Robots son visitantes automáticos que escanean o viajan por su sitio para indexarlo, o jerarquizarlo, para recopilar estadísticas de sitios Web, o para verificar si su sitio se encuentra conectado a la Red.
    El programa #PROG# reconoce hasta #RobotArray# robots.
    Todos los tiempos relacionados con las estadísticas están basados en tiempos de servidor.
    Aquí, las fechas reportadas son: valores medios (calculado desde todos los datos entre las primeras y los ultimas visitas en el rango analizado)
    Aquí, las fechas reportadas son: sumas acumulativas (calculado desde todos los datos entre las primeras y los ultimas visitas en el rango analizado)
    Algunas Duraciones de las visitas son 'desconocidas' porque no pueden ser calculadas siempre. La razón principal de esto es:
    - La visita no fue acabada cuando ocurrió la 'actualización'.
    - La visita comenzó en la hora anterior (después de las 23:00) del pasado día de un mes (la razón técnica de previene a #PROG# de la duración calculada de tales sesiones)
    Error sin descripción.
    La solicitud ha sido computada pero el servidor la procesará más tarde.
    El servidor ha procesado la solicitud pero no existen documentos para enviar.
    Contenido parcial.
    El documento solicitado ha sido reubicado y se encuentra en un URL proporcionado en la misma respuesta.
    Error sin descripción.
    Error de sintaxis, el servidor no ha comprendido su solicitud.
    Número de intentos por acceder un URL que exige una combinación usuario/contraseña que ha sido invalida..
    Un número de intentos muy elevado pudiera sugerir la posibilidad de que un hacker (o pirata) ha intentado entrar a una zona restringida del sitio (p.e., intentando múltiples combinaciones de usuario/contraseña).
    Número de intentos por acceder un URL configurado para no ser accesible, aún con una combinación usuario/contraseña (p.e., un URL previamente definido como "no navegable").
    Número de intentos por acceder un URL inexistente. Frecuentemente, éstos se refieren ya sea a un enlace (link) inválido o a un error mecanográfico cuando el visitante tecleó el URL equivocado.
    El servidor ha tardado demasiado tiempo para responder a una solicitud. Frecuentemente se debe ya sea a un programa CGI muy lento, el cual tuvo que ser abandonado por el servidor, o bien por un servidor sobre-saturado.
    Error interno. Este error generalmente es causado por una terminación anormal o prematura de un programa CGI (p.e., un CGI corrompido o dañado).
    Solicitud desconocida por el servidor.
    Código retornado por un servidor de protocolo HTTP el cual funciona como proxy o puente (gateway) cuando el servidor objetivo no funciona o no interpreta adecuadamente la solicitud del cliente (o visitante).
    Error interno del servidor.
    Pasarela fuera de linea.
    Versión de protocolo HTTP no soportada.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sk.txt0000640000175000017500000001030512410217071022327 0ustar sksk
    Noví návštevníci su definovaní ako ka¾dý prichádzajuci (prehliadajúci si alebo prechádzajúci), kto sa na stránky nepripojil posledních #VisitTimeOut# min.
    Poèet klientov (IP address), ktorí pri¹li na stránky (a ktori si prehliadli aspoò jednu stránku). Toto èíslo prislucha èíslu roznych fyzických osob, ktori navštívili stránky ktorýkolvek jeden den.
    Poèet kolkokrát bola stránka na tomto servery pozreta (Suèet za všetky navštevujucí a ich návštevy). To se liši od Hitov tak, ¾e su zapoèítane iba stránky (nie obrázky a ostatne...).
    Poèet kolkokrát bola stránka, obrázok, subor na tomto servery stiahnuta (Suèet za všetky navštevující a jejich návštevy). Toto èíslo je uvedene kvoli porovnániu zo Stránkami.
    Velkost všetkych stránok, obrázkov a suborov stiahnutych z tohoto serveru.
    #PROG# rozpozná prístup na server od vyhladávanie z #SearchEnginesArray# najznámejších internetových vyhledávaèov a zoznamov (ako je Yahoo, Altavista, Lycos, Google, Voila, atd...).
    Seznam všech externích stránek (mimo server), které byly pou¾ity jako odkaz na tento server (Je zobrazeno jen #MaxNbOfRefererShown# nejèastìjších). Odkazy pou¾ité z vyhledávaèù nejsou zaøazeny, nebo» je obsahuje jiný údaj.
    Tato tabulka zobrazuje zoznam nejèastejsie zadavaných výrazov, ktoré boly zadávane vo vyhladávaèoch k najdeniu tohoto serveru. (Výrazy od #SearchEnginesArray# najznámejších vyhladávaèov a zoznamov su #PROG# rozpoznany, ako je Yahoo, Altavista, Lycos, Google, Voila, atd...).
    Roboti (niekedy oznaèováni ako pavuci alebo èmuchalové) su poèítaèoví automat. návštevníci pou¾ivaní vela vyhledávajucimi slu¾bami k (1) indexovániu a hodnoteniu, (2) zbieraniu statistik z webov a/alebo (3) k zistsniu, ci stránky stále existuju.
    #PROG# je schopmy rozpoznat #RobotArray# robotov.
    Bolo vytvoreno nové miesto s datami a odeslane.
    Po¾adavka bola rozeznana, ale bude vybaveny neskor.
    Po¾iadavka bola rozeznana, ale nieje co odoslat spet.
    Poziadavka bol zpracovany iba èiastoène.
    Po¾adovaný dokument bol presunuty a adresa bola odoslana.
    Dokument sa doèasne nachádza na inej adrese.
    Syntaktická chyba, chybný po¾iadavok.
    Po¾iadavka neobsahovala ¾iadanu autorizaciu meno/heslo pre vstup na stránku. Ak se vyskytujeèasto,pokuša sa niekdo o prielom-hack.
    Po¾iadavka bola odmietnuta serverom (neprístupne data, neviditelný adresár...).
    Pokus o vstup na neexistujuci stránku alebo soubor.
    Cela po¾iadavka nebola serveru od klienta odoslana v po¾adovanom èase (chyba klienta alebo serveru alebo skriptu).
    Chyba serveru (èasto sa vyskytuje pri chybnom zpracovaní skriptu).
    Po¾iadavku, ktora bola zaslana nieje mo¾no vyriedit, pretoze ho server nevie zpracovat.
    Server prijal chybnu po¾iadavku od iného serveru (proxy nebo brány).
    Chyba serveru, slu¾ba nieje k dispozicii.
    Vypršal èasový interval u proxy serveru alebo brány.
    Nepodporovaná verzia protokolu HTTP.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nb.txt0000640000175000017500000001113712410217071022315 0ustar sksk
    Ett nytt besøk er en ny gjest som ikke har vært tilkoplet nettstedet siste #VisitTimeOut# min.
    Antall klientverter (IP-adresser) som har besøkt nettstedet, og har sett minst en side).
    Denne informasjonen gjelder antallet forskjellige personer som har besøkt siden.
    Antall ganger en side på nettstedet har blitt vist.
    Denne informasjonen skiller seg fra «treff» ved å bare telle HTML-sider, og ikke bilder og andre filer.
    Antall ganger en side, et bilde eller en fil på nettstedet har blitt vist eller lastet ned.
    Denne informasjonen viser hvor mye data som har blitt lastet ned totalt (sider, bilder eller andre filer).
    Enhetene er KB, MB eller GB (kilobyte, megabyte eller gigabyte)
    #PROG# kan se når et besøk på nettstedet ditt kommer fra et søk på de #SearchEnginesArray# mest populære søkemotorene og emnekatalogane (f.eks. Yahoo, Altavista, Lycos, Google og Kvasir).
    Liste over alle eksterne sider som har lenker til nettstedet ditt (bare de #MaxNbOfRefererShown# mest brukte eksterne sider blir vist). Lenker fra søkemotorer er ikke inkludert her, siden disse allerede er oppført i forrige del av denne tabellen.
    Denne tabellen viser de mest brukte søkeordene brukt til å finna nettstedet ditt i søkemotorer og emnekataloger. (Søkeord fra de #SearchEnginesArray# mest populære søkemotorene og emnekatalogene kan leses av #PROG#, f.eks. Yahoo, Altavista, Lycos, Google, og Kvasir).
    Roboter blir brukt av mange søkemotorer som besøker nettstedet ditt for å indeksere og rangere det, samle statistikk om nettsteder, og/eller se om nettstedet fremdeles er tilgjengelig.
    #PROG# kjenner til #RobotArray# roboter.
    All tidsrelatert statistikk er basert på tjenertid.
    Rapporterte tall er gjennomsnittsverdier (regnet ut fra alle data mellom første og siste besøk)
    Rapporterte tall er kumulative summer (regnet ut fra alle data mellom første og siste besøk)
    Ingen beskrivelse av denne feilen.
    Forespørselen var forstått av tjeneren men vil bli prosessert senere.
    Tjeneren har prosessert forespørselen men har ikke noe innhold å sende.
    Delvis innhold.
    Det forespurte dokumentet er flyttet, og finnes nå på en annen side. Brukeren blir automatisk videresendt til den nye adressen.
    Ingen beskrivelse av denne feilen.
    Syntaksfeil. Tjeneren forsto ikke forespørselen.
    Prøvde å hente en side som var passordbeskyttet.
    Mange slike feilmeldinger kan bety at noen prøver å bryte seg inn på nettstedet ditt.
    Prøvde å hente en side som er utilgjengelig (selv med passord) (for eksempel en katalog som er definert som ikke lesbar).
    Prøvde å hente en ikke-eksisterende side. Denne feilen betyr oftest at det er en lenke en eller annen plass på nettstedet ditt (eller på en ekstern side) som ikke fungerer, og som må oppdateres.
    Tjeneren har brukt for mye tid på å svare på en forespørsel. Denne feilen gjelder enten et tregt CGI-skript tjenaren måtte avslutte, eller tungt trafikkert tjenar.
    Intern feil. Denne feilen kommer ofte av CGI-skript som har blitt avsluttet unormalt.
    Ukjent forespørsel.
    Kode returnert av ein HTTP-tjener som fungerer som proxy eller systemport når en ekte tjener ikke svarer på forespørselen.
    Intern tjenerfeil.
    Systemport tidsavbrutt.
    Støtter ikke HTTP-versjonen.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ba.txt0000640000175000017500000001220112410217071022271 0ustar sksk
    Novi posjet se defini¹e kao svaki novi dolazeæi posjetitelj (koji pregleda stranicu) koji se nije konektovao na va¹ sajt u toku posljednjih #VisitTimeOut# minuta.
    Broj korisnièkih raèunara (IP adresa) koji su posjeæivali sajt (i vidjeli najmanje jednu stranicu).
    Ovaj podatak govori o broju fizièki razlièitih osoba koji su posjetili sajt tokom jednog dana.
    Koliko puta je jedna stranica sajta bila pregledana (Suma za sve posjetitelje tokom svih posjeta).
    Ovaj podatak se razlikuje od "pogodaka" po tome ¹to broji samo HTML stranice za razliku od slika i drugih datoteka.
    Koliko puta je jedna stranica, slika, datoteka sajta bila pregledana ili downloadovana od strane nekoga.
    Ovaj podatak slu¾i samo kao referenca, po¹to je broj "stranica" znatno korisniji za razne marketin¹ke potrebe.
    Ova informacija govori o kolièini downloadiranih podataka za sve stranice, slike i datoteke u okviru va¹eg sajta.
    Jedinice su Kb, Mb ili Gb (kilobajti, megabajti ili gigabajti). Ovaj podatak je koristan kako biste pratili ostvareni transfer sa va¹e stranice.
    #PROG# prepoznaje svaki pristup va¹em sajtu nakon pretrage pomoæu #SearchEnginesArray# najpopularnijih Internet pretra¾ivaèa i direktorija (kao ¹to su Yahoo, Altavista, Lycos, Google, Voila, itd...).
    Lista svih vanjskih stranica na kojima se nalazi link koji je korisnik upotrijebio da bi do¹ao na va¹u stranicu (Samo #MaxNbOfRefererShown# najèe¹æih linkova je prikazano). Linkovi koji su rezultat pretra¾ivaèa su iskljuèeni jer smo ih veæ prikazali u prethodnom redu ove tabele.
    Ova tabela prikazuje listu kljuènih rijeèi koje se najèe¹æe koriste za pronala¾enje va¹eg sajta pomoæu Internet pretra¾ivaèa ili direktorija. (#PROG# prepoznaje kljuène rijeèi #SearchEnginesArray# najèe¹æih pretra¾ivaèa i direktorija, meðu kojima su i Yahoo, Altavista, Lycos, Google, Voila, itd...).
    Roboti (koji se ponekad nazivaju Spideri) su raèunarski programi koje koriste mnogi pretra¾ivaèi kako bi analizirali va¹u stranicu i time (1) indeksirali i rangirali va¹u stranicu, (2) prikupili statistike o Web stranicama i/ili (3) provjerili da li je va¹ sajt jo¹ uvijek online.
    #PROG# mo¾e prepoznati do #RobotArray# robota.
    Nema opisa za ovu gre¹ku.
    Server je razumio zahtjev, ali æe ga obraditi kasnije.
    Server je obradio zahtjev ali nema ¹ta da po¹alje korisniku.
    Djelomièan sadr¾aj (korisnik je prekinuo otvaranje stranice).
    Tra¾eni dokument je premje¹ten na novo mjesto i nova adresa je data korisniku (redirekcija).
    Tra¾eni dokument je premje¹ten na novo mjesto i nova adresa je data korisniku (redirekcija).
    Sintaksna gre¹ka, server nije razumio zahtjev.
    Korisnik je poku¹ao otvoriti URL za koji je potrebno dati login/¹ifru.
    Veliki broj pod ovom stavkom mo¾e znaèiti da neko (npr. hacker) poku¹ava provaliti u va¹ sajt (npr. isprobavajuæi razne kombinacije logina/¹ifre za ulazak).
    Korisnik je poku¹ao otvoriti URL koji je pode¹en da mu se ne mo¾e pristupiti, èak ni sa loginom/¹ifrom (npr. URL unutar direktorija koji nije definisan kao pristupaèan.).
    Korisnik je poku¹ao pristupiti nepostojeæem URLu. Ova gre¹ka obièno znaèi da negdje na va¹em sajtu postoji neispravan link ili da je korisnik neispravno ukucao odreðeni URL.
    Serveru je trebalo previ¹e vremena da odgovori na zahtjev. Kod ove gre¹ke se obièno radi ili o sporoj CGI skripti koju je server morao prekinuti, o sporoj konekciji korisnika ili o ekstremnom zagu¹enju saobraæaja na web serveru.
    Interna gre¹ka. Ovu gre¹ku uzrokuje CGI program koji sadr¾i neku gre¹ku te je prekinuo rad abnormalno.
    Zahtjevana je nepoznata akcija.
    Ovaj kod vraæa HTTP server koji radi kao proxy ili gateway, i to ako stvarni server ne odgovori uspje¹no na zahtjev klijenta.
    Interna gre¹ka na serveru.
    Ovaj kod vraæa HTTP server koji radi kao gateway, i to ako prilikom kontaktiranja stvarnog servera istekne predviðeno vrijeme (gateway timeout).
    Klijent zahtjeva verziju HTTPa koja nije podržana.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-it.txt0000640000175000017500000001540212410217071022331 0ustar sksk
    Per nuova visita si intende ogni nuovo visitatore che visualizza o consulta una pagina e non si è connesso al sito negli ultimi #VisitTimeOut# minuti.
    Numero di client host (indirizzi IP) che hanno visitato il sito (e visualizzato almeno una pagina).
    Questa cifra riflette il numero di persone fisiche diverse che si sono collegate al sito.
    Numero di volte in cui una pagina del sito è stata visualizzata (somma di tutti i visitatori, per tutte le visite).
    Questo valore è diverso dagli "accessi" perchè considera solamente le pagine HTML e non le immagini o gli altri elementi.
    Numero di volte in cui una pagina, una immagine o un elemento è stato visualizzato o scaricato da qualcuno.
    Questo valore viene fornito solo per completezza in quanto il numero delle "pagine" visualizzate spesso è preferibile ai fini commerciali.
    Questo valore indica la quantità di dati scaricati per tutte le pagine, le immagini e i file presenti sul sito.
    Le unità di misura sono espresse in KB, MB o GB (KiloByte, MegaByte o GigaByte)
    #PROG# è in grado di riconoscere gli accessi al sito provenienti dalle ricerche sui #SearchEnginesArray# motori di ricerca più famosi (come Yahoo, Altavista, Lycos, Google, Voila, ecc.).
    Elenco delle pagine di siti esterni contenenti un link che è stato seguito per accedere a questo sito (solo le #MaxNbOfRefererShown# pagine esterne più utilizzate sono visualizzate). I link presenti nelle pagine dei motori di ricerca sono esclusi in quanto già conteggiati nel riquadro soprastante.
    Questa tabella offre l'elenco delle parole o frasi chiave utilizzate più spesso per trovare il sito sui motori di ricerca. (#PROG# è in grado di riconoscere le ricerche sui #SearchEnginesArray# motori di ricerca più famosi come Yahoo, Altavista, Lycos, Google, Voila, ecc.).
    Notare che il totale delle ricerche sulle parole chiave potrebbe essere maggiore di quello sulle frasi chiave (il numero reale di ricerche) perchè quando 2 parole chiavi sono presenti sulla stessa ricerca questa viene conteggiata due volte (una per ciascuna parola).
    I robot (noti anche col nome di spider) sono dei visitatori automatici utilizzati da molti motori di ricerca per analizzare il sito al fine di indicizzarlo, generare statistiche sui siti Web in Internet e/o verificare che sia ancora in linea.
    #PROG# è in grado di riconoscere #RobotArray# robot.
    Gli orari visualizzati sono basati sul fuso orario del server.
    I dati qui riportati sono valori medi (calcolati su tutti i dati tra la prima e l'ultima visita nel periodo di tempo analizzato)
    I dati qui riportati sono somme cumulative (calcolate su tutti i dati tra la prima e l'ultima visita nel periodo di tempo analizzato)
    Alcune Durate delle visite sono 'sconosciute' perchè non possono essere sempre calcolate. Questi sono i casi più ricorrenti:
    - La visita non era ancora conclusa quando sono state aggiornate (funzione 'update') le statistiche.
    - La visita è iniziata durante l'ultima ora (dopo le 23:00) dell'ultimo giorno del mese (Una ragione tecnica impedisce ad #PROG# di calcolare la durata di queste sessioni)
    I Worm sono dei visitatori automatici provenienti da server esterni, infettati da un virus, che provano ad effettuare particolari visite al server del sito al fine di infettarlo. In molti casi questi worm sfruttano i bug di alcuni server non aggiornati o di tipo commerciale. Se il vostro server non è l'obiettivo sensibile del worm potete tranquillamente ignorare queste visite.
    Ci sono pochissimi 'server worm' al mondo ma questi talvolta dimostrano di essere veramente efficaci. #PROG# è in grado di riconoscere #WormsArray# firme di worm noti (nimda, code red, ecc.).
    Nessuna descrizione per questo errore.
    Il server ha processato la richiesta ma verrà eseguita più tardi.
    Il server ha processato la richiesta ma non ci sono documenti da visualizzare.
    Contenuto parziale.
    Il documento richiesto è stato spostato e si trova al momento ad un altro indirizzo, indicato nella risposta.
    Nessuna descrizione per questo errore.
    Errore di sintassi, il server non ha compreso la richiesta.
    Tentativo di accesso a un URL che richiede un'autenticazione tramite login e password.
    Un numero troppo elevato può significare che qualcuno (es. un hacker) sta cercando di forzare l'accesso al sito (ad esempio provando diverse combinazioni di login e password).
    Tentativo di accesso a un URL non configurato per essere accessibile, neppure tramite autenticazione (ad esempio l'URL di una cartella il cui contenuto non può essere sfogliato).
    Tentativo di accesso a un URL inesistente. Si tratta di un link non valido sul sito o di un errore di battitura del visitatore che ha indicato un URL non corretto.
    Il server ha impiegato troppo tempo per rispondere alla richiesta. Può trattarsi di uno script CGI troppo lento obbligato ad abbandonare la richiesta oppure di un timeout dato dalla saturazione del sito.
    Errore interno del server. Questo errore è quello restituito più di frequente durante la terminazione anormale di uno script CGI (per esempio a seguito di un coredump).
    Azione richiesta di tipo sconosciuto.
    Codice ritornato da un server HTTP che funge da proxy o da gateway quando il vero server destinatario non risponde alla richiesta del client.
    Errore interno del server.
    Time-out del gateway.
    Versione HTTP non supportata.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sr.txt0000640000175000017500000002177612410217071022354 0ustar sksk
    Ðова поÑета Ñе дефинише као Ñваки нови поÑетилац који Ñе није повезао на ваш Ñајт у току поÑледњих #VisitTimeOut# минута.
    Број кориÑничких рачунара (IP адреÑа) који Ñу поÑећивали овај Ñајт (и видели најмање једну Ñтраницу).
    Овај податак говори о броју физички различитих оÑоба које Ñу поÑетиле Ñајт током једног дана.
    Колико пута је једна Ñтраница Ñајта била прегледана (укупно за Ñве поÑетиоце током Ñвих поÑета).
    Овај податак Ñе разликује од "погодака" по томе што броји Ñамо HTML Ñтранице за разлику од Ñлика и других датотека.
    Колико пута је једна Ñтраница, Ñлика, датотека Ñајта била прегледана или преузета од Ñтране некога.
    Овај податак Ñлужи Ñамо као референца, пошто је број "Ñтраница" много кориÑнији за разне маркетиншке потребе.
    Ова информација говори о количини преузетих података за Ñве Ñтранице, Ñлике и датотеке у оквиру вашег Ñајта.
    Јединице Ñу KB, MB или GB (килобајти, мегабајти или гигабајти). Овај податак је кориÑтан како биÑте пратили оÑтварени Ñаобраћај у оквиру вашег Ñајта.
    #PROG# препознаје Ñваки приÑтуп вашем Ñајту након претраге помоћу #SearchEnginesArray# најпопуларнијих интернет претраживача и директоријума (Yahoo, Altavista, Lycos, Google, Voila, итд...).
    ЛиÑта Ñвих Ñпољних Ñтраница на којима Ñе налази веза коју је кориÑник употребио да би дошао на вашу Ñтраницу (Само #MaxNbOfRefererShown# највећих веза је приказано). Везе које Ñу резултат претраживања Ñу иÑкључене јер Ñу већ приказане у претходном реду ове табеле.
    Ова табела приказује лиÑту кључних речи које Ñе најчешће кориÑте за проналажење вашег Ñајта помоћу интернет претраживача или директоријума. (#PROG# Препознаје кључне речи #SearchEnginesArray# највећих претраживача и директоријума, међу којима Ñу и Yahoo, Altavista, Lycos, Google, Voila, итд...).
    Роботи Ñу рачунарÑки програми које кориÑте многи претраживачи како би анализирали вашу Ñтраницу и тиме (1) је индекÑирали и рангирали, (2) прикупили ÑтатиÑтике о интернет Ñтранама и/или (3) проверили да ли је ваш Ñајт још увек активан.
    #PROG# Може препознати до #RobotArray# робота.
    Све ÑтатиÑтике везане Ñа временом Ñу базиране на времену на Ñерверу.
    Приказани подаци овде Ñу: проÑечне вредноÑти (израчунате на оÑнову Ñвих података између прве и поÑледње поÑете у анализираном опÑегу)
    Приказани подаци овде Ñу: кумулативне Ñуме (израчунате на оÑнову Ñвих података између прве и поÑледње поÑете у анализираном опÑегу)
    Ðека Трајања поÑета Ñу 'непозната' јер Ñе не могу увек израчунати. Ово Ñу главни разлози за то:
    - ПоÑета није завршена када је вршено 'ажурирање'.
    - ПоÑета је почела у поÑледњем Ñату (након 23:00) поÑледњег дана у меÑецу (технички разлози Ñпречавају #PROG# да израчуна трајање такве поÑете)
    Ðема опиÑа ове грешке.
    Сервер је разумео захтев, али ће га обрадити каÑније.
    Сервер је обрадио захтев, али нема шта да пошаље кориÑнику.
    Делимичан Ñадржај (кориÑник је прекинуо отварање Ñтранице).
    Тражени документ је премештен на ново меÑто и нова адреÑа је дата кориÑнику (преуÑмеравање).
    Ðема опиÑа ове грешке.
    СинтакÑна грешка. Сервер није разумео захтев.
    КориÑник је покушао да отвори Ñтрану за коју је потребно дати кориÑничко име и лозинку.
    Велики број под овом Ñтавком може значити да неко покушава провалити на ваш Ñајт (нпр. иÑпробавајући разне комбинације кориÑничког имена и лозинке за улазак).
    КориÑник је покушао да отвори Ñтрану која је подешена да јој Ñе не може приÑтупити, чак ни Ñа кориÑничким именом и лозинком (нпр. Ñтрана унутар директоријума који није дефиниÑан као приÑтупачан.).
    КориÑник је покушао приÑтупити непоÑтојећој Ñтрани. Ова грешка обично значи да негде на вашем Ñајту поÑтоји неиÑправна веза или да је кориÑник неиÑправно унео адреÑу одређене Ñтранице.
    Серверу је требало превише времена да одговори на захтев. Код ове грешке Ñе обично ради о Ñпором CGI Ñкрипту који је Ñервер морао да прекине, о Ñпорој вези кориÑника или о екÑтремном загушењу Ñаобраћаја на Ñерверу.
    Интерна грешка. Ову грешку узрокује CGI програм који Ñадржи неку грешку, па је прекинуо рад.
    Захтевана је непозната акција.
    Овај код враћа HTTP Ñервер који ради као поÑредник или пролаз, и то ако Ñтварни Ñервер не одговори уÑпешно на захтев клијента.
    Интерна грешка на Ñерверу.
    Овај код враћа HTTP Ñервер који ради као пролаз, и то ако приликом контактирања Ñтварног Ñервера иÑтекне предвиђено време (gateway timeout).
    Клијент захтева верзију HTTP-а која није подржана.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fr.txt0000640000175000017500000001524112410217071022325 0ustar sksk
    On considère une nouvelle visite pour chaque arrivée d'un visiteur consultant une page et ne s'étant pas connecté dans les dernières #VisitTimeOut# mn.
    Nombre de hotes (adresse IP) utilisés pour accéder au site (et voir au moins une page).
    Ce chiffre reflète le nombre de personnes physiques différentes ayant un jour accédées au site.
    Nombre de fois qu une page du site est vue (Cumul de tout visiteur, toute visite).
    Ce compteur différe des "hits" car il ne comptabilise que les pages HTML et non les images ou autres fichiers.
    Nombre de fois qu une page, image, fichier du site est vu ou téléchargé par un visiteur.
    Ce compteur est donné à titre indicatif, le compteur "pages" etant préféré.
    Nombre d'octets téléchargés lors des visites du site.
    Il s'agit aussi bien du volume de données du au chargement des pages et images que des fichiers téléchargés.
    #PROG# est capable de reconnaitre l'acces au site issu d'une recherche depuis les #SearchEnginesArray# moteurs de recherche Internet les plus connus (Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Liste des pages de sites externes contenant un lien suivi pour accéder à ce site (Seules les #MaxNbOfRefererShown# pages externes les plus utilisées sont affichées). Les liens issus du résultat d'un moteur de recherche connu n'apparaissent pas ici, car comptabilisés à part sur la ligne juste au-dessus.
    Ce tableau offre la liste des phrases ou mots clés les plus souvent utilisés pour retrouver et accéder au site depuis un moteur de recherche Internet (Les recherches depuis #SearchEnginesArray# moteurs de recherche parmi les plus populaires sont reconnues, comme Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Notez que le nombre total de recherche de mots clés peut être supérieur au nombre total de recherche de phrases clés (nombre réel de recherche) dans la mesure où une recherche est comptée 2 fois (1 pour chaque mot) si 2 mots furent utilisés comme critères.
    Les robots sont des automates visiteurs scannant le site dans le but de l'indexer, d'obtenir des statistiques sur les sites Web Internet ou de vérifier sa disponibilié.
    #PROG# reconnait #RobotArray# robots.
    Toutes les statistiques en rapport avec le temps sont basées sur les heures du serveur.
    Ici les données rapportées sont des: valeurs moyennes (calculées à partir des données entre la première et dernière visite de la période analysée).
    Ici les données rapportées sont des: sommes cumulées (calculées à partir des données entre la première et dernière visite de la période analysée).
    Certaines Durée de visites sont 'inconnues' car elles ne peuvent pas toujours etre calculées. En voici les raisons principales:
    - La visite n'étaient pas terminée lorsque la mise à jour eut lieu (Sera comptée à la prochaine mise à jour).
    - La visite a commencé la derniere heure (après 23:00) du dernier jour du mois (Un raison technique empêche #PROG# de calculer la durée des visites de telles sessions).
    Les Vers (Worms) sont des visiteurs automatiques qui sont en fait des serveurs externes infectés par un virus, réalisant des hits particuliers sur votre serveur afin de l'infecter à son tour. Dans la plupart des cas, de telles attacks exploitent des bugs des serveurs commerciaux et non à jour. Si votre system n'est pas celui indiqué comme cible sensible du vers, vous pouvez ignorer de tel hits.
    Il existe très peu de 'vers serveur' mais il sont très actifs à certaines période. #PROG# reconnait #WormsArray# signatures de vers connus (nimda,code red,...).
    Contenu partiel renvoyé.
    La requête a été enregistrée par le serveur mais sera exécutée plus tard.
    Le serveur a traité la demande mais il n'existe aucun document à renvoyer.
    Contenu partiel renvoyé.
    Le document réclamé a été déplacé et se trouve maintenant à une autre adresse mentionnée dans la réponse.
    Aucun descriptif pour cette erreur.
    Erreur de syntaxe, le serveur n'a pas compris la requête.
    Tentatives d'accès à une URL nécessitant identification avec un login/mot de passe invalide.
    Un nombre trop élévé peut mettre en évidence une tentative de crackage brute du site (par accès répété de différents logins/mots de passe).
    Tentatives d'accès à une URL non configurée pour etre accessible, même avec une identification (par exemple, une URL d'un répertoire non défini comme étant "listable").
    Tentatives d'accès à une URL inexistante. Il s'agit donc d'un lien invalide sur le site ou d'une faute de frappe d'un visiteur qui a saisie une mauvaise URL directement.
    Le serveur mis un temps trop important pour répondre à la requête. Il peut s'agir d'un script CGI trop lent sur le serveur forcé d'abandonner le traitement ou d'une saturation du site.
    Erreur interne au serveur. Cette erreur est le plus souvant renvoyé lors de l'arrêt anormal d'un script CGI (par exemple suite à un coredump du CGI).
    Le serveur ne prend pas en charge l'action demandée.
    Code renvoyé par un serveur HTTP qui fonctionne comme proxy ou gateway lorsque le serveur réel consulté ne réagit pas avec succès à la demande du client.
    Erreur interne au serveur.
    Gateway Time-out.
    Version HTTP non supporté.
    awstats-7.4/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ua.txt0000640000175000017500000001452112410217071022323 0ustar sksk
    Íîâèé âiçèò çàðàõîâóºòüñÿ òîäi, êîëè ç'ÿâëÿºòüñÿ (çàâàíòàæóº iïåðåãëÿäຠñòîðiíêè) íîâèé âiäâiäóâà÷ ç õîñòà, ç ÿêîãî íiõòî íå ç'ºäíóâàâñÿ ç ñåðâåðîì ïðîòÿãîì îñòàííiõ ".(#VisitTimeOut#)." õâ.
    Êiëüêiñòü êëiºíòñüêèõ õîñòiâ (IP-àäðåñ), ç ÿêèõ çäiéñíþâàëèñü âiäâiäóâàííÿ ñàéòó i ÿêèìè áóëî îòðèìàíî ïðèíàéìíi îäíó ñòîðiíêó.
    Öi äàíi âiäîáðàæàþòü, ñêiëüêè ðiçíèõ ëþäåé çàâiòàëî íà ñàéò ïðîòÿãîì îäíîãî äíÿ.
    Öå ÷èñëî ïîçíà÷ຠçàãàëüíó êiëüêiñòü ïåðåãëÿäiâ âñiõ ñòîðiíîê ñàéòó âñiìà âiäâiäóâà÷àìè ïiä ÷àñ óñiõ âiçèòiâ.
    Öi äàíi âiäðiçíÿþòüñÿ âiä êiëüêîñòi "ïîïàäàíü" òèì, ùî ðàõóþòüñÿ òiëüêè HTML-ñòîðiíêè, à ðåøòà ôàéëiâ, â ò.÷. çîáðàæåííÿ, iãíîðóºòüñÿ.
    Êiëüêiñòü âèïàäêiâ, êîëè ñòîðiíêà, çîáðàæåííÿ, ÷è ÿêèéñü iíøèé ôàéë äàíîãî ñàéòó ïåðåãëÿäàºòüñÿ àáî ïðîñòî çàâàíòàæóºòüñÿ êèìîñü.
    Öi äàíi ìàþòü ÷èñòî ïiçíàâàëüíó öiííiñòü ùîäî ðîáîòè ñåðâåðà, áî êiëüêiñòü ïåðåãëÿäiâ ñòîðiíîê º íàáàãàòî iëþñòðàòèâíiøîþ ùîäî ëþäñüêî¿ àóäèòîði¿.
    Öå ñóìàðíèé îá'ºì äàíèõ, ïåðåäàíèõ ñåðâåðîì âiäâiäóâà÷àì ïðè çàâàíòàæåííi íèìè ñòîðiíîê, çîáðàæåíü òà iíøèõ ôàéëiâ. Âèìiðþºòüñÿ â êiëîáàéòàõ (êÁ), ìåãàáàéòàõ (ÌÁ), ãiãàáàéòàõ (ÃÁ).
    #PROG# âèðiçíÿº êîæåí äîñòóï äî ñàéòó ïiñëÿ ïîøóêó ç äîïîìîãîþ #SearchEnginesArray# íàéáiëüø ïîïóëÿðíèõ ïîøóêîâèõ ñèñòåì i êàòàëîãiâ (òàêèõ ÿê Altavista, Lycos, Google, Voila, AllTheWeb, òà ií.).
    Ñïèñîê çîâíiøíiõ ñòîðiíîê, ïîñèëàííÿ ç ÿêèõ áóëè âèêîðèñòàíi äëÿ çàõîäó íà ñàéò. (Ïîêàçàíî ëèøå #MaxNbOfRefererShown# çîâíiøíiõ ñòîðiíîê, ç ÿêèõ áóëî íàéáiëüøå âiäâiäóâà÷iâ).
    Ïîñèëàííÿ ç ðåçóëüòàòiâ ïîøóêîâèõ ìàøèí òóò íå âðàõîâàíi, áî âîíè âæå âêëþ÷åíi äî ïîïåðåäíüî¿ ñåêöi¿ äàíî¿ òàáëèöi.
     öié òàáëèöi ïîêàçàíî ñïèñîê íàé÷àñòiøå âèêîðèñòîâóâàíèõ êëþ÷îâèõ ñëiâ àáî ôðàç, çà ÿêèìè âiäâiäóâà÷i çíàõîäèëè äàíèé ñàéò â ïîøóêîâèõ ñèñòåìàõ i êàòàëîãàõ. ( #PROG# ðîçïiçíàþòüñÿ êëþ÷îâi ñëîâà ç #SearchEnginesArray# íàéáiëüø ïîïóëÿðíèõ ïîøóêîâèõ ñèñòåì i êàòàëîãiâ, òàêèõ ÿê Altavista, Lycos, Google, Voila, i ò.ä.). Çàãàëüíà êiëüêiñòü êëþ÷îâèõ ñëiâ ìîæå áóòè áiëüøîþ çàãàëüíî¿ êiëüêîñòi ôðàç (äiéñíî¿ êiëüêîñòi çäiéñíåíèõ ïîøóêîâèõ îïåðàöié), áî êîæíå êëþ÷îâå ñëîâî, âèêîðèñòàíå â ïîøóêó, ðàõóºòüñÿ îêðåìî.
    Ðîáîòè (ÿêèõ ùå ÷àñòî íàçèâàþòü ïàâóêàìè) — öå àâòîìàòè÷íi êîìï'þòåðíi "âiäâiäóâà÷i", ÿêi âèêîðèñòîâóþòüñÿ áàãàòüìà ïîøóêîâèìè ìåõàíiçìàìè äëÿ ñêàíóâàííÿ ñàéòó ç ìåòîþ
    1. iíäåêñóâàííÿ i êëàñèôiêàöi¿ éîãî âìiñòó
    2. çáèðàííÿ ñòàòèñòèêè (ïî äàíîìó ñàéòó ÷è ÿêî¿ñü çàãàëüíî¿)
    3. âèçíà÷åííÿ, ÷è ñàéò [âñå ùå] àêòèâíèé
     ïîòî÷íié âåðñi¿ #PROG# âìiº ðîçïiçíàâàòè #RobotArray# ðîáîòiâ.
    Âñÿ ñòàòèñòèêà, ïîâ'ÿçàíà ç ÷àñîì, áàçóºòüñÿ íà ÷àñîâi, âñòàíîâëåíîìó íà ñåðâåði.
    Òóò ïîêàçóþòüñÿ ñåðåäíi çíà÷åííÿ (ðîçðàõîâàíi çà âñiìà äàíèìè, íàêîïè÷åíèìè ìiæ ïåðøèì i îñòàííiì âiçèòàìè, ùî âiäáóëèñÿ ïðîòÿãîì ïåðiîäó)
    Òóò ïîêàçóþòüñÿ ñóêóïíi çíà÷åííÿ (ðîçðàõîâàíi çà âñiìà äàíèìè, íàêîïè÷åíèìè ìiæ ïåðøèì i îñòàííiì âiçèòàìè, ùî âiäáóëèñÿ ïðîòÿãîì ïåðiîäó)
    Äåÿêi òðèâàëîñòi âiçèòiâ º 'íåâiäîìèìè', áî íå çàâæäè ìîæëèâî ¿õ âèðàõóâàòè. Îñíîâíi ïðè÷èíè öüîãî:
    - Âiçèò íå áóâ çàêií÷åíèé, êîëè âiäáóâàëîñü îíîâëåííÿ ñòàòèñòèêè.
    - Âiçèò ðîçïî÷àâñÿ â îñòàííþ ãîäèíó (ïiñëÿ 23:00) îñòàííüîãî äíÿ ìiñÿöÿ (×åðåç òåõíi÷íi ïðè÷èíè #PROG# íå ìîæå îá÷èñëþâàòè òðèâàëiñòü òàêèõ ñåñié).
    Äëÿ öiº¿ ïîìèëêè íåìຠîïèñàííÿ.
    Ñåðâåð çðîçóìiâ çàïèò, àëå âèêîíຠéîãî ïiçíiøå.
    Ñåðâåð îáðîáèâ çàïèò, àëå äîêóìåíò äëÿ âiäïðàâêè âiäñóòíié.
    ×àñòêîâèé âìiñò.
    Äîêóìåíò, ùî çàïèòóâàâñÿ, áóëî ïåðåìiùåíî i çàðàç çíàõîäèòüñÿ çà iíøîþ àäðåñîþ, ÿêà ïåðåäàºòüñÿ ó âiäïîâiäi.
    Äëÿ öiº¿ ïîìèëêè íåìຠîïèñàííÿ.
    Ñèíòàêñè÷íà ïîìèëêà, ñåðâåð íå çðîçóìiâ çàïèò.
    Ñïðîáà çàâàíòàæèòè URL, ÿêèé ïîòðåáóº iì'ÿ êîðèñòóâà÷à i ïàðîëü äëÿ äîñòóïó.
    Âåëèêà êiëüêiñòü òàêèõ ïîìèëîê ìîæå îçíà÷àòè, ùî õòîñü (íàïðèêëàä, õàêåð) íàìàãàºòüñÿ ïðîðâàòèñü äî çàõèùåíî¿ ÷àñòèíè ñàéòó øëÿõîì ïiäáîðó ïàðîëiâ.
    Ñïðîáà çàâàíòàæèòè URL, ÿêèé º íåäîñòóïíèì, íàâiòü çà íàÿíîñòi iìåíè êîðèñòóâà÷à i ïàðîëÿ äëÿ äîñòóïó.
    (Íàïðèêëàä, URL â ìåæàõ êàòàëîãó, íå ïðèçíà÷åíîãî äëÿ ïåðåãëÿäó ÷åðåç Internet.).
    Ñïðîáà äîñòóïó äî íåiñíóþ÷îãî ðåñóðñó. Öÿ ïîìèëêà ÷àñòî îçíà÷àº, ùî äåñü íà ñòîðiíêàõ äàíîãî ñàéòó àáî iíøèõ ñàéòiâ º ïîìèëêîâi ïîñèëàííÿ, àáî âiäâiäóâà÷ ïîìèëèâñÿ ïðè ââåäåííi URL.
    Ñåðâåð âèòðàòèâ çàáàãàòî ÷àñó äëÿ âiäïîâiäi íà çàïèò. Öÿ ïîìèëêà ÷àñòî º íàñëiäêîì çàíàäòî ïîâiëüíîãî CGI-ïðîãðàìè, ÿêó ñåðâåð áóâ çìóøåíèé çíèùèòè àáî ñàì ñåðâåð íàäìiðó ïåðåâàíòàæåíèé.
    Âíóòðiøíÿ ïîìèëêà. Öÿ ïîìèëêà âèäàºòüñÿ ïðè ïîìèëêîâîìó çàâåðøåííi CGI-ïðîãðàìè.
    Âèìàãàºòüñÿ íåâiäîìà äiÿ.
    Êîä, ïîâåðíåíèé HTTP-ñåðâåðîì, ÿêèé ïðàöþº â ÿêîñòi øëþçó, êîëè ðåàëüíèé ñåðâåð ïðèçíà÷åííÿ íå äຠóñïiøíî¿ âiäïîâiäi íà çàïèòè êëiºíòà.
    Âíóòðiøíÿ ïîìèëêà ñåðâåðà.
    Òàéì-àóò øëþçó.
    Âåðñiÿ HTTP íå ïiäòðèìóºòüñÿ.
    awstats-7.4/wwwroot/cgi-bin/lang/awstats-mk.txt0000640000175000017500000001217512410217071017500 0ustar sksk# Ìàêåäîíñêè ïðåâîä çà awstats (editor@alibi.com.mk) # $Ðåâèçè¼à: 1.12 $ - $Äàòóì: 2005/06/01 00:40:00 $ PageCode=iso-8859-1 message0=Íåïîçíàòè message1=Íåïîçíàòè (áåç îòêðèåíà ip àäðåñà) message2=Îñòàíàòè message3=Âèäè äåòàëè message4=Äåí message5=Ìåñåö message6=Ãîäèíà message7=Ñòàòèñòèêà çà message8=Ïðâà ïîñåòà message9=Ïîñëåäíà ïîñåòà íà message10=Áðî¼ íà ïîñåòè message11=Unique ïîñåòè message12=Ïîñåòè message13=ðàçëè÷íè êëó÷íè çáîðîâè message14=Ïðåáàðóâ༠message15=Ïðîöåíò message16=Ñîîáðà༠message17=Äîìåèíè/Çåì¼è message18=Ïîñåòèòåëè message19=Ñòðàíèöè-URL message20=×àñîâè message21=Áðàóñåðè message22= message23=Ðåôåðåíòè message24=Íèêîãàø íå å àïäå¼òèðàíî (Âèäè âî 'Build/Update' âî awstats_setup.html ñòðàíàòà) message25=Ïîñåòèòåëè îä äîìåèíè/çåì¼è message26=õîñòîâè message27=ñòðàíè message28=ðàçëè÷íè ñòðàíè-url message29=Ïðåãëåäàíî message30=Îñòàíàòè çáîðîâè message31=Ñòðàíàöè êîè íå ñå íà¼äåíè message32=HTTP Ñòàòóñ êîäîâè message33=Netscape âåðçèè message34=IE âåðçèè message35=Ïîñëåäåí àïäå¼ò message36=Ëèíê äî ñà¼òîò îä message37=Ïîòåêëî message38=Äèðåêòíà àäðåñà / Áóêìàðê message39=Íåïîçíàòî ïîòåêëî message40=Ëèíêîâè îä ïðåáàðóâà÷êè ñà¼òîâè message41=Ëèíêîâè îä åêñòåðíè ñòðàíèöè (ñèòå îñòàíàòè âåá ñà¼òîâè, áåç ïðåáàðóâà÷êèòå) message42=Ëèíêîâè îä âíàòðåøíè ñòðàíè (äðóãè ñòðàíè íà èñòèîò âåá ñà¼ò) message43=Êëó÷íè ôðàçè êîðèñòåíè âî ïðåáàðóâà÷êè ñà¼òîâè message44=Êëó÷íè çáîðîâè êîðèñòåíè âî ïðåáàðóâà÷êè ñà¼òîâè message45=Íåîòêðèåíè IP Àäðåñè message46=Íåïîçíàò Îïåðàòèâåí Ñèñòåì (ãðåøêà ïðè äåòåêöè¼à) message47=Ãðåøêà ïðè ïðåáàðóâàœå íà URL (HTTP êîä 404) message48=IP Àäðåñè message49=Ãðåøêà Õèòîâè message50=Íåïîçíàòè áðàóñåðè (ãðåøêà ïðè äåòåêöè¼à) message51=ðàçëè÷íè ðîáîòè message52=ïîñåòè/ïîñåòèòåëè message53=Ðîáîò/Ñïà¼äåð ïîñåòèòåëè message54=Áåñïëàòåí ïðîãðàì çà àíàëèçà íà ëîã ôà¼ëîâè âî ðåàëíî âðåìå. Ãåíåðèðà íàïðåäíà ñòàòèñòèêà message55=îä message56=Ñòðàíè message57=Õèòîâè message58=Âåðçèè message59=Îïåðàòèâíè Ñèñòåìè message60=£àí message61=Ôåâ message62=Ìàð message63=Àïð message64=Ì༠message65=£óí message66=£óë message67=Àâã message68=Ñåï message69=Îêò message70=Íîå message71=Äåê message72=Íàâèãàöè¼à message73=Òèï íà ôà¼ë message74=Îñâåæè ¼à ñòàòèñòèêàòà message75=Bandwidth message76=Íàçàä íà ïî÷åòíà ñòðàíà message77=Ãîðå message78=dd mmm yyyy - HH:MM message79=Ôèëòåð message80=Öåëà ëèñòà message81=Õîñòîâè message82=Ïîçíàòè message83=Ðîáîòè message84=Íåä message85=Ïîí message86=Âòî message87=Ñðå message88=×åò message89=Ïåò message90=Ñàá message91=Äåíîâè âî íåäåëàòà message92=Êîè message93=Êîãà message94=Àâòîðèçèðàíè êîðèñíèöè message95=Ìèí message96=Ñðåäíà âðåäíîñò message97=Ìàêñ message98=Âåá êîìïðåñè¼à message99=Çà÷óâàí bandwidth message100=Ñî êîìïðåñè¼à message101=Ðåçóëòàòè îä êîìïðåñè¼à message102=Âêóïíî message103=ðàçëè÷íè êëó÷íè ôðàçè message104=Ïî÷åòíà message105=Êîä message106=Ñðåäíà ãîëåìèíà message107=Ëèíêîâè îä œóç ãðóïè message108=KB message109=MB message110=GB message111=Grabber message112=Äà message113=Íå message114=Èíôî. message115=Âî ðåä message116=Èçëåç message117=Âðåìåòðàåœå íà ïîñåòèòå message118=Çàòâîðè ãî ïðîçîðîò message119=Bytes message120=Áàð༠êëó÷íè ôðàçè message121=Áàð༠êëó÷íè çáîðîâè message122=ðàçëè÷íè ïðåáàðóâà÷êè ñà¼òîâè message123=ðàçëè÷íè ñà¼òîâè message124=Îñòàíàòè ôðàçè message125=Îñòàíàòè ëîãèðàœà (è/èëè àíîíèìíè êîðèñíèöè) message126=Ïîâðçàíè ïðåáàðóâà÷êè ñà¼òîâè message127=Ïîâðçàíè ñà¼òîâè message128=Ñòàòèñòèêà message129=Òî÷íàòà âðåäíîñò íå å âîçìîæíà âî ïðåãëåäîò çà 'Ãîäèíà' message130=Data value arrays message131=EMail íà èñïðàà÷îò message132=EMail íà ïðèìà÷îò message133=Çà ïåðèîä message134=Åêñòðà/Ìàðêåòèíã message135=Ãîëåìèíà íà åêðàíîò message136=Öðâè(Worm)/Âèðóñè message137=Êîëêó ïàòè ñà¼òîò å äîäàäåí âî îìèëåíè (îòïðèëèêà) message138=Äåíîâè âî ìåñåöîò message139=Ðàçíî message140=Áðàóñåð ñî Java ïîääðøêà message141=Áðàóñåð ñî Macromedia Director ïîääðøêà message142=Áðàóñåð ñî Flash ïîääðøêà message143=Áðàóñåð ñî Real audio playing ïîääðøêà message144=Áðàóñåð ñî Quicktime audio playing ïîääðøêà message145=Áðàóñåð ñî Windows Media audio playing ïîääðøêà message146=Áðàóñåð ñî PDF ïîääðøêà message147=SMTP Error êîäîâè message148=Çåì¼è message149=Ìå¼ëîâè message150=Ãîëåìèíà message151=Ïðâ message152=Ïîñëåäåí message153=Îòñòðàíè ãî ôèëòåðîò message154=Êîäîâèòå ïîêàæàíè îâäå ãî äàâààò áðî¼îò íà ïîñåòè èëè ñîîáðàà¼îò êîè íå ñå "ïðåãëåäàíè" îä ïîñåòèòåëèòå, ïà çàòîà íå ñå âêëó÷åíè âî îñòàíàòèòå òàáåëè. message155=Êëàñòåð message156=Ðîáîòèòå ïðèêàæàíè âî ëèñòàòà íå ñå "ïðåãëåäàíè" îä ïîñåòèòåëèòå, ïà çàòîà íå ñå âêëó÷åíè âî îñòàíàòèòå òàáåëè. message157=Áðîåâèòå ïî çíàêîò + ñå óñïåøíè ïîñåòè íà ôà¼ëîò "robots.txt". message158=Öðâèòå (Worms) èçëèñòàíè âî òàáåëàòà íå ñå "ïðåãëåäàíè" îä ïîñåòèòåëèòå, ïà çàòîà íå ñå âêëó÷åíè âî îñòàíàòèòå òàáåëè. message159=Ñîîáðàà¼îò êî¼ íå å ïðåãëåäàí ãî âêëó÷óâà è ñîîáðàà¼îò îä ðîáîòè, öðâè, èëè ïðåáàðóâàœà ñî ñïåöè¼àëíè HTTP ñòàòóñíè êîäîâè. message160=Ïðåãëåäàí ñîîáðà༠message161=Íå ïðåãëåäàí ñîîáðà༠message162=Ìåñå÷íà àðõèâà message163=Öðâè message164=ðàçëè÷íè öðâè message165=Óñïåøíî èñïðàòåíè ìå¼ëîâè message166=Íåóñïåøíè/îäáèåíè ìå¼ëîâè message167=Îñåòëèâè öåëè message168=Áåç Java ïîääðøêà message169=Èçðàáîòåíî îä message170=Plugins awstats-7.4/wwwroot/cgi-bin/lang/awstats-sk.txt0000640000175000017500000001201712410217071017501 0ustar sksk# Slovak message file (lecram@lecram.sk) # $Revision$ - $Date$ PageCode=utf-8 message0=Neznámy message1=Neznámy (nepreložená IP) message2=Ostatné message3=PrehliadnuÅ¥ detaily message4=Deň message5=Mesiac message6=Rok message7=Å tatistika pre message8=Prvá návÅ¡teva message9=Posledná návÅ¡teva message10=PoÄet návÅ¡tev message11=Unikátne návÅ¡tevy message12=NávÅ¡teva message13=Výrazy message14=Hľadanie message15=Percentá message16=Traffic message17=Domény/krajina message18=NávÅ¡tevy message19=Stránky/URL message20=Hodiny message21=Browsery (prehliadaÄe) message22=Chybové kódy HTTP message23=Referencie message24=Hľadané výrazy message25=Domény/krajiny návÅ¡tevníkov message26=hosts message27=stránok message28=rôzne stránky message29=Prístup message30=Iné slová message31=Nenájdené stránky message32=Chybové kódy HTTP message33=Verzie Netscape message34=Verzie MS Internet Explorer message35=Posledná aktualizácia message36=Príchod z message37=Pôvod message38=Priama adresa / Obľúbené (Bookmark) message39=Neznámý pôvod message40=Odkaz z internetového vyhľadávaÄa message41=Odkaz z inej stránky (ine stránky ako vyhľadávaÄe) message42=Odkaz z vlastnej stránky (iná stránka na serveri) message43=Výrazy použité vo vyhľadávaÄi message44=Vyhľadávané slová message45=Nepreložená IP adresa message46=Neznámy OS (položka User-Agent) message47=Požadované, ale nenájdené URL (HTTP 404) message48=IP adresa message49=Chyba Dotazov message50=Neznámy prehliadaÄ (položka User-Agent) message51=NávÅ¡tevnosÅ¥ robotov message52=návÅ¡tev/návÅ¡tevníka message53=Roboti message54=Volne šíriteľný nástroj pre vytváranie Å¡tatistík návÅ¡tevnosti message55=z message56=Stránok message57=Hity message58=Verzie message59=OperaÄné systémy message60=Jan message61=Feb message62=Mar message63=Apr message64=Máj message65=Jún message66=Júl message67=Aug message68=Sep message69=Okt message70=Nov message71=Dec message72=Navigácia message73=Typy súborov message74=AktualizovaÅ¥ message75=Bajtov message76=Späť na hlavnú stránku message77=naj message78=dd mmm yyyy - HH:MM message79=Filter message80=Úplny výpis message81=Hosts message82=Známe message83=Roboti message84=Ned message85=Pon message86=Uto message87=Str message88=Å tv message89=Pia message90=Sob message91=Dni v týždni message92=Kto message93=Kedy message94=Prihlásení užívatelia message95=Min message96=Priemer message97=Max message98=Web kompresia message99=UÅ¡etrená šírka pásma message100=Pred kompresiou message101=Po kompresii message102=Celkom message103=KľúÄové slová message104=Vstupné stránky message105=Kód message106=Priemerná velkosÅ¥ message107=Linky z NewsGroup message108=KB message109=MB message110=GB message111=ZachycovaÄ message112=Ãno message113=Nie message114=WhoIs informácie message115=OK message116=Exit stránky message117=Trvanie návÅ¡tevy message118=ZavrieÅ¥ okno message119=Bytov message120=Hľadané kľúÄové frázy message121=Hľadané kľúÄové slová message122=Odkazy z rôznych vyhladávaÄov message123=Odkazy z rôznych stránok message124=Iné frázy message125=Anonymný užívateľ message126=Odkazy z vyhľadávaÄov message127=Odkazy zo stránok message128=Súhrn message129=V zobrazení 'Rok' nie je dostupná presná hodnota message130=Polia s hodnotami message131=E-mail odosielatela message132=E-mail prijemcu message133=Zobrazený Äasový úsek message134=Extra/Marketing message135=Veľkosti obrazovky message136=Útoky Äervov/vírusov message137=PridaÅ¥ do obľúbených message138=Dni v mesiaci message139=Rôzne message140=PrehliadaÄe s podporou Java message141=PrehliadaÄe s podporou Macromedia Director message142=PrehliadaÄe s podporou Flash message143=PrehliadaÄe s podporou Real audio playing message144=PrehliadaÄe s podporou Quicktime audio playing message145=PrehliadaÄe s playing podporou Windows Media audio message146=PrehliadaÄe s podporou PDF message147=SMTP Error kódy message148=Krajiny message149=E-maily message150=VeľkosÅ¥ message151=Prvý message152=Posledný message153=Filter výnimiek message154=Zobrazené kódy generovali hity a ruch bez uživateľských prehliadnutí, takže nebudú zahrnuté v ostatných grafoch message155=Cluster (Zoskupenie) message156=Zobrazení roboti generovali hity a ruch bez uživateľských prehliadnutí, takže nebudú zahrnuté v ostatných grafoch message157=Čísla za + zobrazujú úspeÅ¡né hity na súbory "robots.txt". message158=Zobrazené Äervy generovali hity a ruch bez uživateľských prehliadnutí, takže nebudú zahrnuté v ostatných grafoch message159=Neprehliadajúce hity a ruch zahŕňajú hity generované robotmi, Äervami alebo Å¡pecifikými HTTP kódmi message160=Prehliadajúci ruch message161=Neprehliadajúci ruch message162=MesaÄná história message163=ÄŒervy message164=Iné Äervy message165=ÚspeÅ¡ne odoslané e-maily message166=Chybné/Odmietnuté e-maily message167=Citlivé ciele message168=Vypnutý JavaScript message169=Vytvorené message170=Zásuvné moduly (plug-ins) awstats-7.4/wwwroot/cgi-bin/lang/awstats-id.txt0000640000175000017500000000655612410217071017473 0ustar sksk# Indonesian message file (oleh Steven Haryanto) # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Tidak Diketahui message1=Tidak Diketahui (IP tidak teresolve) message2=Lainnya message3=Lihat Rincian message4=Hari message5=Bulan message6=Tahun message7=Statistik untuk message8=Kunjungan Pertama message9=Kunjungan Terakhir message10=Jumlah Kunjungan message11=Pengunjung Unik message12=Kunjungan message13=Kata Kunci message14=Pencarian message15=Persen message16=Trafik message17=Domain/Negara message18=Pengunjung message19=Halaman-URL message20=Jam (Waktu Server) message21=Browser message22=Error HTTP message23=Referer message24=Tidak pernah diupdate message25=Domain/negara pengunjung message26=host message27=halaman message28=halaman-url unik message29=Halaman yang Dilihat message30=Kata lain message31=Halaman tidak ditemukan (not found) message32=Kode error HTTP message33=Versi Netscape message34=Versi IE message35=Terakhir diupdate message36=Asal koneksi dari message37=Asal message38=Direct address / Bookmark message39=Asal tidak diketahui message40=Link dari Search Engine message41=Link dari situs lain (yang bukan search engine) message42=Link dari situs sendiri (situs yang sama dengan halaman yang diakses) message43=Frase yang dipakai di search engine message44=Kata kunci yang dipakai di search engine message45=Alamat IP yang tidak teresolve message46=OS tidak diketahui (field useragent) message47=URL tidak ditemukan (kode HTTP 404) message48=Alamat IP message49=Jumlah Hit Error message50=Browser tidak diketahui (field useragent) message51=robot unik message52=kunjungan/pengunjung message53=Robot/Spider message54=Tool gratis penganalisis log realtime dan penghasil statistik web advanced message55=dari message56=Halaman message57=Hit message58=Versi message59=Sistem Operasi message60=Jan message61=Feb message62=Mar message63=Apr message64=Mei message65=Jun message66=Jul message67=Agu message68=Sep message69=Okt message70=Nov message71=Des message72=Navigasi message73=Jenis File message74=Update Sekarang message75=Bandwidth message76=Kembali ke halaman utama message77=Kembali Ke Atas message78=dd mmm yyyy - HH:MM message79=Filter message80=Daftar Lengkap message81=Host message82=Diketahui message83=Robot message84=Min message85=Sen message86=Sel message87=Rab message88=Kam message89=Jum message90=Sab message91=Hari message92=Siapa message93=Kapan message94=User yang memiliki password message95=Min message96=Rata-Rata message97=Maks message98=Kompresi web message99=Penghematan bandwidth message100=Sebelum kompresi message101=Sesudah kompresi message102=Total message103=Frase unik message104=Halaman masuk (entry page) message105=Kode message106=Ukuran rata-rata message107=Link dari newsgroup message108=KB message109=MB message110=GB message111=Grabber message112=Ya message113=Tidak message114=Info WhoIs message115=OK message116=Halaman keluar (exit page) message117=Lama kunjungan message118=Tutup window message119=Byte message120=Frase Pencarian message121=Kata Kunci Pencarian message122=search engine referer unik message123=situs referer unik message124=Frase lain message125=Login lain (dan/atau user anonim) message126=Search engine referer message127=Situs referer message128=Ringkasan message129=Nilai pasti tidak tersedia di tampilan 'Tahunan' message130=Array nilai data message131=Email Pengirim message132=Email Penerima message133=Periode Laporanawstats-7.4/wwwroot/cgi-bin/lang/awstats-be.txt0000640000175000017500000001656412410217071017465 0ustar sksk# Belarusian message file (piatruk.p@gmail.com) # $Revision$ - $Date$ PageCode=utf-8 message0=ÐевÑдомы message1=ÐевÑдомы (невызначаны ip) message2=Ð†Ð½ÑˆÑ‹Ñ message3=ПраглÑдзець падрабÑзнаÑці message4=Дзень message5=МеÑÑц message6=Год message7=СтатыÑтыка Ð´Ð»Ñ message8=Першае наведванне message9=ÐпошнÑе наведванне message10=КолькаÑць наведваннÑÑž message11=Ð£Ð½Ñ–ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð»ÑŒÐ½Ñ–ÐºÑ– message12=Ðаведванне message13=разнаÑÑ‚Ð°Ð¹Ð½Ñ‹Ñ ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы message14=Пошук message15=ПрацÑнт message16=Трафік message17=Дамены/Краіны message18=Ðаведвальнікі message19=Pages-URL message20=Гадзіны message21=Браузеры message22=Памылкі HTTP message23=РÑферÑры message24=Ðе абнаўлÑлаÑÑ (ГлÑдзі 'Збудаваць/Ðбнавіць' на Ñтаронцы awstats_setup.html) message25=Дамены/краіны наведвальнікаў message26=машыны message27=Ñтаронкі message28=разнаÑÑ‚Ð°Ð¹Ð½Ñ‹Ñ Ñтаронкі-url message29=Прагледжана message30=Ð†Ð½ÑˆÑ‹Ñ Ñловы message31=Старонкі не знойдзены message32=Коды ÑтатуÑу HTTP message33=ВерÑÑ–Ñ– Netscape message34=ВерÑÑ–Ñ– IE message35=ÐпошнÑе абнаўленне message36=ЗлучÑнне з Ñайтам з message37=Паходжанне message38=Прамы доÑтуп / Закладкі / СпаÑылка па пошце message39=ÐевÑдомае паходжанне message40=СпаÑылка з Пошукавых ÑÑ–ÑÑ‚Ñм message41=СпаÑылка Ñа знешнÑй Ñтаронкі (з іншага Ñайта, не пошукавай ÑÑ–ÑÑ‚Ñмы) message42=СпаÑылка з унутранай Ñтаронкі (іншай Ñтаронкі на тым жа Ñайце) message43=ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñ„Ñ€Ð°Ð·Ñ‹ з пошукавай ÑÑ–ÑÑ‚Ñмы message44=ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы з пошукавай ÑÑ–ÑÑ‚Ñмы message45=ÐÑвызначаны IP-Ð°Ð´Ñ€Ð°Ñ message46=ÐевÑÐ´Ð¾Ð¼Ð°Ñ OS (поле useragent) message47=ЗапатрабаваныÑ, але не Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹Ñ Ð°Ð´Ñ€Ð°ÑÑ‹ (код HTTP 404) message48=IP-адраÑÑ‹ message49=Памылка Ð¥Ñ–ты message50=ÐевÑÐ´Ð¾Ð¼Ñ‹Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ñ‹ (поле useragent) message51=разнаÑÑ‚Ð°Ð¹Ð½Ñ‹Ñ Ñ€Ð¾Ð±Ð°Ñ‚Ñ‹ message52=наведванні/наведвальнік message53=Робаты/Павукі-наведвальнікі message54=Вольны аналізатар логаў Ð´Ð»Ñ Ð¿Ð°ÑˆÑ‹Ñ€Ð°Ð½Ð°Ð¹ веб-ÑтатыÑтыкі message55= message56=Старонак message57=Хітоў message58=ВерÑій message59=Ðперацыйных ÑÑ–ÑÑ‚Ñм message60=Сту message61=Лют message62=Сак message63=Кра message64=Тра message65=ЧÑÑ€ message66=Ліп message67=Жні message68=Вер message69=ÐšÐ°Ñ message70=Ð›Ñ–Ñ message71=Сне message72=ÐÐ°Ð²Ñ–Ð³Ð°Ñ†Ñ‹Ñ message73=Тып файла message74=Ðбнавіць зараз message75=Трафік message76=Ð’Ñрнуцца на галоўную message77=ÐÐ°Ð¹Ð±Ð¾Ð»ÑŒÑˆÑ‹Ñ message78=dd mmm yyyy - HH:MM message79=Фільтр message80=Поўны ÑÐ¿Ñ–Ñ message81=Машыны message82=Ð’ÑÐ´Ð¾Ð¼Ñ‹Ñ message83=Робаты message84=ÐÑд message85=Пан message86=Ðўт message87=Сер message88=Чац message89=ПÑÑ‚ message90=Суб message91=Дні Ñ‚Ñ‹Ð´Ð½Ñ message92=Хто message93=Калі message94=ÐўтÑÐ½Ñ‚Ñ‹Ñ„Ñ–ÐºÐ°Ð²Ð°Ð½Ñ‹Ñ message95=Мін. message96=СÑÑ€Ñдне message97=МакÑ. message98=СціÑк Web message99=Ðшчаджана трафіку message100=СціÑк у message101=Вынік ÑціÑку message102=Ðгулам message103=разнайÑÑ‚Ð°Ð¹Ð½Ñ‹Ñ ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñ„Ñ€Ð°Ð·Ñ‹ message104=Уваход message105=Код message106=СÑÑ€Ñдні памер message107=СпаÑылкі з груп навін message108=KB message109=MB message110=GB message111=Grabber message112=Так message113=Ðе message114=Whois message115=Добра message116=Выхад message117=ПрацÑглаÑць наведваннÑÑž message118=Закрыць акно message119=Байтаў message120=Пошук Ð¤Ñ€Ð°Ð·Ñ‹ message121=Пошук Ð¡Ð»Ð¾Ð²Ñ‹ message122=разнаÑÑ‚Ð°Ð¹Ð½Ñ‹Ñ Ð¿Ð¾ÑˆÑƒÐºÐ°Ð²Ñ‹Ñ ÑÑ–ÑÑ‚Ñмы, што ÑпаÑылаюцца message123=разнаÑÑ‚Ð°Ð¹Ð½Ñ‹Ñ Ñайты, што ÑпаÑылаюцца message124=Ð†Ð½ÑˆÑ‹Ñ Ñ„Ñ€Ð°Ð·Ñ‹ message125=Ð†Ð½ÑˆÑ‹Ñ Ð»Ð¾Ð³Ñ–Ð½Ñ‹ (Ñ–/ці Ð°Ð½Ð°Ð½Ñ–Ð¼Ð½Ñ‹Ñ ÐºÐ°Ñ€Ñ‹Ñальнікі) message126=ÐŸÐ¾ÑˆÑƒÐºÐ°Ð²Ñ‹Ñ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹, што ÑпаÑылаюцца message127=Сайты, што ÑпаÑылаюцца message128=Ðгульна message129=Такое значÑнне недаÑтупна Ñž выглÑдзе 'Год' message130=МаÑівы значÑннÑÑž дадзеных message131=EMail адпраўніка message132=EMail атрымальніка message133=Справазадача за message134=Дадаткова/Маркетынг message135=Памеры Ñкрану message136=Ðтакі чарвей/віруÑаў message137=Дадаць у Ð’Ñ‹Ð±Ñ€Ð°Ð½Ñ‹Ñ (магчыма) message138=Дні меÑÑца message139=Рознае message140=Браузеры з падтрымкай Java message141=Браузеры з падтрымкай Macromedia Director message142=Браузеры з падтрымкай Flash message143=Браузеры з падтрымкай Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Real audio message144=Браузеры з падтрымкай Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Quicktime audio message145=Браузеры з падтрымкай Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Windows Media audio message146=Браузеры з падтрымкай PDF message147=Коды памылак SMTP message148=Краіны message149=ЛіÑты message150=Памер message151=Першы message152=Ðпошні message153=Фільтр выключÑÐ½Ð½Ñ message154=Коды, Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñ‚ÑƒÑ‚, даюць трафік або хіты, нÑÐ±Ð°Ñ‡Ð½Ñ‹Ñ Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð»ÑŒÐ½Ñ–ÐºÐ°Ð¼, таму Ñны не ўключаны Ñž Ñ–Ð½ÑˆÑ‹Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ‹. message155=КлаÑцер message156=Робаты, Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñ‚ÑƒÑ‚, даюць трафік або хіты, нÑÐ±Ð°Ñ‡Ð½Ñ‹Ñ Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð»ÑŒÐ½Ñ–ÐºÐ°Ð¼, таму Ñны не ўключаны Ñž Ñ–Ð½ÑˆÑ‹Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ‹. message157=Лічбы паÑÐ»Ñ + паÑпÑÑ…Ð¾Ð²Ñ‹Ñ Ñ…Ñ–Ñ‚Ñ‹ на файлы "robots.txt". message158=ЧÑрві, Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñ‚ÑƒÑ‚, даюць трафік або хіты, нÑÐ±Ð°Ñ‡Ð½Ñ‹Ñ Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð»ÑŒÐ½Ñ–ÐºÐ°Ð¼, таму Ñны не ўключаны Ñž Ñ–Ð½ÑˆÑ‹Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ‹. message159=ÐÑбачны трафік уключае трафік, згенераваны робатамі, чарвÑмі або адказамі Ñа Ñпецыльным кодам HTTP. message160=Бачны трафік message161=ÐÑбачны трафік message162=МеÑÑÑ†Ð¾Ð²Ð°Ñ Ð³Ñ–ÑÑ‚Ð¾Ñ€Ñ‹Ñ message163=ЧÑрві message164=разнаÑÑ‚Ð°Ð¹Ð½Ñ‹Ñ Ñ‡Ñрві message165=ПаÑпÑхова даÑÐ»Ð°Ð½Ñ‹Ñ Ð»Ñ–Ñты message166=ÐедаÑÐ»Ð°Ð½Ñ‹Ñ Ð»Ñ–Ñты message167=ÐдчувальнаÑць мÑтаў message168=Javascript адключана message169=Створана message170=плагіны message171=РÑгіёны message172=Гарады awstats-7.4/wwwroot/cgi-bin/lang/awstats-cy.txt0000640000175000017500000000731612410217071017505 0ustar sksk# Welsh message file (jim@hebffinia.com) # Cyfieithiad gan Maredudd ap Rheinallt # $Revision$ - $Date$ PageCode=iso-8859-1 message0=Anhysbys message1=Anhysbys (cyfeiriad IP heb ei ganfod) message2=Eraill message3=Gweld manylion message4=Dydd message5=Mis message6=Blwyddyn message7=Ystadegau o message8=Ymweliad cyntaf message9=Ymweliad diwethaf message10=Cyfanswm ymweliadau message11=Ymwelwyr unigryw message12=Ymweliad message13=allweddeiriau gwahanol message14=Chwilio message15=Y Cant message16=Traffig message17=Parthau/Gwledydd message18=Ymwelwyr message19=Tudalennau-URL message20=Oriau message21=Poryddion message22=Gwallau HTTP message23=Atgyfeirwyr message24=Byth wedi'i diweddaru message25=Parthau/Gwledydd Ymwelwyr message26=gwesteiwyr message27=tudalennau message28=Gwahanol dudalennau-URL message29=Tudalennau a welwyd message30=Geiriau eraill message31=Tudalennau heb eu canfod message32=Codau gwallau HTTP message33=Fersiynau Netscape message34=Fersiynau IE message35=Diweddariad diwethaf message36=Cyswllt i'r wefan o message37=Tardd message38=Cyfeiriad uniongyrchol / Nodau tudalen message39=Tardd anhysbys message40=Cysylltau o Beiriant Chwilio message41=Cysylltau o dudalen allanol (gwefannau eraill ac eithrio peiriannau chwilio) message42=Cysylltau o dudalen fewnol (tudalen arall ar yr un wefan) message43=Allweddfrawddegau a ddefnyddiwyd mewn periannau chilio message44=Allweddeiriau a ddefnyddiwyd mewn periannau chilio message45=Cyfeiriad IP heb ei ganfod message46=System Weithredu anhysbys (maes Atgyfeiriwr) message47=URLau a geisiwydwyd ond na chanfuwyd (côd HTTP 404) message48=Cyfeiriad IP message49=Gwall Trawiad message50=Poryddion anhysbys (maes Atgyfeiriwr) message51=Robotiaid ar ymweliad message52=Ymweliadau/ymwelydd message53=Ymwelwyr robot a phry cop message54=Yn Rhad ac am Ddim: Dadansoddydd Ffeiliau Log Amser Real ar gyfer Ystadegau Gwe Uwch message55=o message56=Tudalennau message57=Trawiadau message58=Fersiynau message59=Systemau Gweithredu message60=Ion message61=Chwef message62=Mawrth message63=Ebr message64=Mai message65=Meh message66=Gorff message67=Awst message68=Medi message69=Hydref message70=Tach message71=Rhagfyr message72=Gwe-lywio message73=Math o ffeil message74=Diweddaru yn awr message75=Beitiau message76=Yn ôl i'r brif dudalen message77=Pwysicach hyd at message78=dd mmm bbbb - AA:MM message79=Hidlydd message80=Rhestr Lawn message81=Gwesteiwyr message82=Hysbys message83=Robotiaid message84=Sul message85=Llun message86=Mawrth message87=Mercher message88=Iau message89=Gwe message90=Sad message91=Diwrnodau'r wythnos message92=Pwy message93=Pryd message94=Defnyddwyr Dilys message95=Lleiafswm message96=Cyfartaledd message97=Mwyafswm message98=Cywasgedd GWe message99=Lled band a arbedwyd message100=Cyn cywasgu message101=Wedi Cywasgu message102=Cyfanswm message103=allweddfrawddegau gwahanol message104=Tudalennau mynediad message105=Côd message106=Maint ar gyfartaledd message107=Cysylltau oddi wrth Grŵp Newyddion message108=KB message109=MB message110=GB message111=Grabwr message112=Yes message113=No message114=Gwybodaeth Dynodi message115=Iawn message116=Gadael message117=Parhau ag Ymweliadau message118=Cau ffenest message119=Beitiau message120=Allweddfrawddegau Chwilio message121=Allweddeiriau Chwilio message122=peiriannau chwilio gwahanol yn atgyfeirio message123=gwefannau gwahanol yn atgyfeirio message124=Brawddegau Eraill message125=Mewnbynnau eraill (ac/neu ddefnyddwyr di-enw) message126=Peiriannau Chwilio Atgyfeirio message127=Gwefannau Atgyfeirio message128=Crynodeb message129=Union werth ddim ar gael tra'n defnyddio modd gweld 'Blwyddyn' message130=Araeau gwerthoedd data message131=Ebost yr anfonydd message132=Ebost y derbynnydd message133=Cyfnod adroddawstats-7.4/wwwroot/cgi-bin/awredir.pl0000750000175000017500000002070312410217071015713 0ustar sksk#!/usr/bin/perl #------------------------------------------------------- # Save the click done on managed hits into a trace file # and return to browser a redirector to tell browser to visit this URL. # Ex: XXX # Where ABCDEFGH is md5(YOURKEYFORMD5.url) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . #------------------------------------------------------- #use DBD::mysql; use Digest::MD5 qw(md5 md5_hex md5_base64); #------------------------------------------------------- # Defines #------------------------------------------------------- use vars qw/ $REVISION $VERSION /; $REVISION='20140126'; $VERSION="1.2 (build $REVISION)"; use vars qw / $DIR $PROG $Extension $DEBUG $DEBUGFILE $REPLOG $DEBUGRESET $SITE $REPCONF /; ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; $DEBUG=0; # Debug level $DEBUGFILE="$PROG.log"; # Debug output (A log file name or "screen" to have debug on screen) $REPLOG="$DIR"; # Debug directory $TRACEBASE=0; # Set to 1 to track click on links that point to extern site into a database $TRACEFILE=0; # Set to 1 to track click on links that point to extern site into a file $TXTDIR="$DIR/../../../logs"; # Directory where to write tracking file (if TRACEFILE=1) $TXTFILE="awredir.trc"; # Tracking file (if TRACEFILE=1) $EXCLUDEIP="127.0.0.1"; # Put here a personalised value. # If you dont want to use the security key in link to avoid use of awredir by an external web # site you can set this to empty string, but warning this is a security hole as everybody # can use awredir on your site to redirect to any web site (even non legal web sites). $KEYFORMD5='YOURKEYFORMD5'; # Put here url pattern you want to allow event if parameter key is not provided. $AUTHORIZEDWITHOUTKEY=''; #------------------------------------------------------- # Functions #------------------------------------------------------- sub error { print "Content-type: text/html; charset=iso-8859-1\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "

    \n"; print "AWRedir
    \n\n"; print "$_[0].

    \n"; print "Setup (setup or logfile permissions) may be wrong.\n"; $date=localtime(); print "

    $date - Advanced Web Redirector $VERSION
    \n"; print "
    \n"; print ""; print ""; die; } #------------------------------------------------------------------------------ # Function: Decode an URL encoded string # Parameters: stringtodecode # Input: None # Output: None # Return: decodedstring #-------------------------------------------------------------------- sub DecodeEncodedString { my $stringtodecode=shift; $stringtodecode =~ s/\+/ /g; $stringtodecode =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # Decode encoded URL return $stringtodecode; } #------------------------------------------------------------------------------ # Function: Clean a string of HTML tags to avoid 'Cross Site Scripting attacks' # and clean | char. # Parameters: stringtoclean # Input: None # Output: None # Return: cleanedstring #------------------------------------------------------------------------------ sub CleanXSS { my $stringtoclean = shift; # To avoid html tags and javascript $stringtoclean =~ s//>/g; $stringtoclean =~ s/|//g; # To avoid onload=" $stringtoclean =~ s/onload//g; return $stringtoclean; } #------------------------------------------------------- # MAIN #------------------------------------------------------- if ($DEBUG) { open(LOGFILE,">$REPLOG/$PROG.log"); print LOGFILE "----- $PROG $VERSION -----\n"; } if (! $ENV{'GATEWAY_INTERFACE'}) { # Run from command line print "----- $PROG $VERSION (c) Laurent Destailleur -----\n"; print "This script is absolutely not required to use AWStats.\n"; print "It's a third tool that can help webmaster in their tracking tasks but is\n"; print "not used by AWStats engine.\n"; print "\n"; print "This tools must be used as a CGI script. When called as a CGI, it returns to\n"; print "browser a redirector to tell it to show the page provided in 'url' parameter.\n"; print "So, to use this script, you must replace HTML code for external links onto your\n"; print "HTML pages from\n"; print "Link\n"; print "to\n"; print "Link\n"; print "\n"; print "For your web visitor, there is no difference. However this allow you to track\n"; print "clicks done on links onto your web pages that point to external web sites,\n"; print "because an entry will be seen in your own server log, to awredir.pl script\n"; print "with url parameter, even if link was pointing to another external web server.\n"; print "\n"; sleep 2; exit 0; } if ((! $AUTHORIZEDWITHOUTKEY) && ($KEYFORMD5 eq 'YOURKEYFORMD5')) { error("Error: You must change value of constant KEYFORMD5 in awredir.pl script."); } # Extract tag $Tag='NOTAG'; if ($ENV{QUERY_STRING} =~ /tag=\"?([^\"&]+)\"?/) { $Tag=$1; } $Key='NOKEY'; if ($ENV{QUERY_STRING} =~ /key=\"?([^\"&]+)\"?/) { $Key=$1; } # Extract url to redirect to $Url=$ENV{QUERY_STRING}; if ($Url =~ /url=\"([^\"]+)\"/) { $Url=$1; } elsif ($Url =~ /url=(.+)$/) { $Url=$1; } $Url = DecodeEncodedString($Url); $UrlParam=$Url; # Sanitize parameters $Tag=CleanXSS($Tag); $Key=CleanXSS($Key); $UrlParam=CleanXSS($UrlParam); if (! $UrlParam) { error("Error: Bad use of $PROG. To redirect an URL with $PROG, use the following syntax:
    /cgi-bin/$PROG.pl?url=http://urltogo"); } if ($Url !~ /^http/i) { $Url = "http://".$Url; } if ($DEBUG) { print LOGFILE "Url=$Url\n"; } if ((! $AUTHORIZEDWITHOUTKEY || $UrlParam !~ /$AUTHORIZEDWITHOUTKEY/) && $KEYFORMD5 && ($Key ne md5_hex($KEYFORMD5.$UrlParam))) { # error("Error: Bad value for parameter key=".$Key." to allow a redirect to ".$UrlParam." - ".$KEYFORMD5." - ".md5_hex($KEYFORMD5.$UrlParam) ); error("Error: Bad value for parameter key=".$Key." to allow a redirect to ".$UrlParam.". Key must be hexadecimal md5(KEYFORMD5.".$UrlParam.") where KEYFORMD5 is value hardcoded into awredir.pl. Note: You can remove use of key by setting KEYFORMD5 to empty string in script awredir.pl"); } # Get date ($nowsec,$nowmin,$nowhour,$nowday,$nowmonth,$nowyear,$nowwday,$nowyday,$nowisdst) = localtime(time); if ($nowyear < 100) { $nowyear+=2000; } else { $nowyear+=1900; } $nowsmallyear=$nowyear;$nowsmallyear =~ s/^..//; if (++$nowmonth < 10) { $nowmonth = "0$nowmonth"; } if ($nowday < 10) { $nowday = "0$nowday"; } if ($nowhour < 10) { $nowhour = "0$nowhour"; } if ($nowmin < 10) { $nowmin = "0$nowmin"; } if ($nowsec < 10) { $nowsec = "0$nowsec"; } if ($TRACEBASE == 1) { if ($ENV{REMOTE_ADDR} !~ /$EXCLUDEIP/) { if ($DEBUG == 1) { print LOGFILE "Execution requete Update sur BASE=$BASE, USER=$USER, PASS=$PASS\n"; } my $dbh = DBI->connect("DBI:mysql:$BASE", $USER, $PASS) || die "Can't connect to DBI:mysql:$BASE: $dbh->errstr\n"; my $sth = $dbh->prepare("UPDATE T_LINKS set HITS_LINKS = HIT_LINKS+1 where URL_LINKS = '$Url'"); $sth->execute || error("Error: Unable execute query:$dbh->err, $dbh->errstr"); $sth->finish; $dbh->disconnect; if ($DEBUG == 1) { print LOGFILE "Execution requete Update - OK\n"; } } } if ($TRACEFILE == 1) { if ($ENV{REMOTE_ADDR} !~ /$EXCLUDEIP/) { open(FICHIER,">>$TXTDIR/$TXTFILE") || error("Error: Enable to open trace file $TXTDIR/$TXTFILE: $!"); print FICHIER "$nowyear-$nowmonth-$nowday $nowhour:$nowmin:$nowsec\t$ENV{REMOTE_ADDR}\t$Tag\t$Url\n"; close(FICHIER); } } # Redir html instructions print "Location: $Url\n\n"; if ($DEBUG) { print LOGFILE "Redirect to $Url\n"; close(LOGFILE); } 0; awstats-7.4/wwwroot/icon/0000750000175000017500000000000012235577675013364 5ustar skskawstats-7.4/wwwroot/icon/mime/0000750000175000017500000000000012551203300014257 5ustar skskawstats-7.4/wwwroot/icon/mime/library.png0000640000175000017500000000072312410217071016440 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<eIDAT¥Á±N“a†áûm> IF4°H:aºùž‚a1„8¹°9¹HJ   ŽuSš( 2”:ü}Ÿ‡~!$@ÒôºÂ6‹ˆWïß6/ûÏ'îÚ€„%R‰edáLdãLRbùa{9ž¾ÿöió ô_ô÷,u;+KÌ£{9É}à LZw&çcæõ¯u‡™â4»¯3¯íÁ U±…mLe0Á÷ãcîò|cƒTRl2“­Á/n|ÝyJÕ4 ·ÇhšT%•ÈæóöƒÙÜGJQË(EXÌÂôz=..þbóŸLRR)‘s-˜1  ¹Ë³õu$Q•iÛ’™ì|ùÍÁÖ UÓ4ÜæììÓvJUœB{o¦’Ä}2…%ª" É€À\[]]c4a‚À†ƒÙTåôçÉчÃvS™(Ef"‰l[$!+qYXB¢:b&l³ˆ ºÝ ð:ÓL·°IEND®B`‚awstats-7.4/wwwroot/icon/mime/text.png0000640000175000017500000000052612410217071015761 0ustar sksk‰PNG  IHDRµú7êgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<èIDATÁ1nSAÀÙÇž4A¸‚Ž‚(¡I“Sp.KPp"„ÒQÒAŠ7%Žƒßþû1Ó¢;ó°ó+„‹çýZ######Ïù´µ±DWk=æCù›?ù‘û|ÞÚX‚æjä˜9昇ì³ËÈSóekMs9¾•¯NNV«ÕG@ÿà¶‹kD)ÃÞ4¼hn­†“¡”éÐ.Q¦@ønJ)1]:À;1@ø¡ ÓT˜Þ:Àt€Ÿ¦išÞ:ˆö€I²$fM³ž-Ú+g”]îþ´•Ï^LvIEND®B`‚awstats-7.4/wwwroot/icon/mime/encrypt.png0000640000175000017500000000135512410217071016462 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAT8ËmRAkA}›¤I›µ54JM›hAAÄ[=‚=ˆâA½ySP„@Ní±sì¯ð"zöˆ©ZÐF›–4(”“&¦Ivvf}³kÚµ:ð13ß|ß›÷ÞŒaÛ6¼ciiiD)5'¥œaœd€ñ“±bYÖb.—ûå­7¼…Bá ›—“Éäd,ƒÏç÷èõz¨×ëØâ нùùùµØ<ÂÃét:cš&jµ:޾@‰D©+‹Ì]^XXèê½o€Ää³ñññŒåry³Ýn§¸êÐëR©ôC“]†R²ƒ¾À`ÁäL$A¥R›îd³ÙªGj5ŸÏ߬V«ÅT*åÔþ`Lkæmz½…#Cç4;]C¶cy°ý摽R™ÆÎ^ØÑ|÷Ò*ü¶€--Ø–BH¼X»ê˜šnàö™UL?ù`¸ òàþ ´Äð‡9ß”A~Ãú H«ç³æ…Ó²ñòí¡}“.´v_!…aŒ°pÇ™VÀþdëÌîw(káÉ,l³ï E(}“‰æú{ê<†øÅk¨½^dÿiL\ŸEóë:ˆ¦N°„-L/€pdؤŸ¾_p”î(ȾħÝ0&`"žžD¯bí¾Ãjàü›îjT­µñy,ÞñÄ‚ê)ô»¤j“Yé šåmW®RNÏ!½Ñ¨”?Ÿ‚?rŠ&¦>Å”`CkÇÓI[C.Ê=`:¨ÊÒ¬ ÓÈ@y ÐD·Q‡è´ˆÑnåÊöh ¡³>ç‡ ¹OèãK(J3»ˆvÛTØ'Qéú¥?à“l.Ϲ^8Gü ë`æs?–”îZqür²²Í‡oÁEIEND®B`‚awstats-7.4/wwwroot/icon/mime/html.png0000640000175000017500000000133612410217071015741 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<pIDAT8Ë“ÝORaÇ­¿#·þË+/ºñ²ÕÚ¢«µ2¢+uËæ6S‘QÐÂH¦e‡°UV"5’L²ˆùÉKsµa¼ ž=Ï)އÊÕÙ>;Ïù}Îó{+PB!ÏB¡üì%ìæâx‚²õõõÄæææV>ŸÇß çP«Õ*¾„/(§ÁkkkÈd2Édñx+++¬$C£Ñp’Bð®'÷W3N:Ì ¨Ó‹É»£Óz,,»‘H$‰DXA6›ý‰V«ý)¡‚Zð„D+ šÞ¨`óO`<¸ý{+:ŸÈquL†©ÅI¬®®þ‘[騢þnÕüÔW Ü)^}[„)€ÜáG¿cÆÙAt[š1ÿÙ…h4ÊÞ$  ”·Ý`’“°Fßaг„Kv/jlÏqÑ{ªå>´›¥¸OÒI¥Rl=b±Ø¶€ä»dú¤FØ€—$O? Ù9 qà *ý§ vœ†~ªL#›:fE|Áw}@‰Ÿog!qá‚ͩی£:>‹Q§Ò!1r¹+¡l§ -æèò<‹ǘPyÍŽC*;ΙºpÓz¤+T@¡óÀ¯Á€â… ­ÓMŒ?Àña£_pð– C/z·¢NWfÆ€ 6øwAEíáÜ £ ³c¨·|Äy³5ÃFôNÔ¡ížò‡2øHw¨ '(ÌAµFlešÐ7>ųI\·ªHÞ"ÒÂÌø^ƒLiEnÉ5Û™¶`t§þ;ìÆ'ø%ÙG ”¡;-?˜|›f·—'(¥’ÿXçtõK<§PUÌ—IEND®B`‚awstats-7.4/wwwroot/icon/mime/script.png0000640000175000017500000000135412410217071016301 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<~IDATÁ1lTeàïÿß»»^ w¥@J àä`4: ÄMŒ†ÄÁÙ¸0:bœ4qb6ÑÁÉQÙtp’ÈŠ‰‘èড–¶\Û»öýïýï÷ûB)\ýîÑE|þìêÒ¥EÛ[´½¶ïvý ûx‚Œ]lãküXô]÷Ê‹gŽ]úèõÓ`žúé"õÓÝ£|6µì7Ùƒ'~ø{þ®Õ}×­O†‹¹m'+5]Ï~ f-OfGÌŽØ>促 >¾ñÐ¥ +ž?58]ä¶];>Œæ ó£,Æ FU+*AèòžŸÿÙõÛÃÙF SZŸŽ+³Ã΢)b,ªHÌA©U…RÙÜk|që¯=\­º”ίOfGE…*± S)êõ…<ȺÔ]øþÃ×v"@NÍù3Ó‘y*B¤ ADD„B)tM#§&C W®ß×UŽQÊYTPdÄH›³ƒù¢ÃDèštzˆ Q ãÛ®I›7?½R BNÍr­WGª‘ôèû@a¹Ž¶våÔlÄË×nœêRº~ñ¹sï6³ýlžÈ¥¡/1Yf{o¡Ki Î)½‰w~½{ßîaí )Ú\4mº^—{})Ö¦S¼}Æãí…œÒ@ÛöåwßxaüÉû¯€\hs‘:¾¼¹ayÀþÁBnÛm€:·íýÇOf¾¹u×ê±±ÕÉ’Õ•‘éÊÈñå¡Ñ0ÕÑ{—×j¶vöå¶ý î»îÛÛwî½}çÞyœÄIœÀ L—†ƒÁÒÒÀdelu²ì÷?ý‰Ÿþ{Š;,¦EõIEND®B`‚awstats-7.4/wwwroot/icon/mime/other.png0000640000175000017500000000044612410217071016117 0ustar sksk‰PNG  IHDRµú7êgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¸IDAT(Ïu‘[ E§®Ã&î†}šè‡ÔøŠµO(Ôë@_Ö–œá‡9a.Ñ–É?v´9\ •šÖbBá°WÒ´JÏ/\Y¹àØ+DI‹šO)n,T(pbe´§æF†û8гD½`ü…áéñ_9Ï…NÉ8És]蔊³d!Á¢á4Œ¬Öãiš‘À/&~…Ï;Ïù}Îó{+PB!ÏB¡üì%ìæâx‚²õõõÄæææV>ŸÇß çP«Õ*¾„/(§ÁkkkÈd2Édñx+++¬$C£Ñp’Bð®'÷W3N:Ì ¨Ó‹É»£Óz,,»‘H$‰DXA6›ý‰V«ý)¡‚Zð„D+ šÞ¨`óO`<¸ý{+:ŸÈquL†©ÅI¬®®þ‘[騢þnÕüÔW Ü)^}[„)€ÜáG¿cÆÙAt[š1ÿÙ…h4ÊÞ$  ”·Ý`’“°Fßaг„Kv/jlÏqÑ{ªå>´›¥¸OÒI¥Rl=b±Ø¶€ä»dú¤FØ€—$O? Ù9 qà *ý§ vœ†~ªL#›:fE|Áw}@‰Ÿog!qá‚ͩی£:>‹Q§Ò!1r¹+¡l§ -æèò<‹ǘPyÍŽC*;ΙºpÓz¤+T@¡óÀ¯Á€â… ­ÓMŒ?Àña£_pð– C/z·¢NWfÆ€ 6øwAEíáÜ £ ³c¨·|Äy³5ÃFôNÔ¡ížò‡2øHw¨ '(ÌAµFlešÐ7>ųI\·ªHÞ"ÒÂÌø^ƒLiEnÉ5Û™¶`t§þ;ìÆ'ø%ÙG ”¡;-?˜|›f·—'(¥’ÿXçtõK<§PUÌ—IEND®B`‚awstats-7.4/wwwroot/icon/mime/notavailable.png0000640000175000017500000000036112410217071017433 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ$Œ6i& pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿ/Ý {tRNS@æØfIDATxÚc` 0 ® I#wëóIEND®B`‚awstats-7.4/wwwroot/icon/mime/document.png0000750000175000017500000000044612410217071016616 0ustar sksk‰PNG  IHDRµú7êgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¸IDAT(Ïu‘[ E§®Ã&î†}šè‡ÔøŠµO(Ôë@_Ö–œá‡9a.Ñ–É?v´9\ •šÖbBá°WÒ´JÏ/\Y¹àØ+DI‹šO)n,T(pbe´§æF†û8гD½`ü…áéñ_9Ï…NÉ8És]蔊³d!Á¢á4Œ¬Öãiš‘À/&~…ÏŸï·$'´Þ– = ‘kneTßM,žnÇÐëÉ’OÒz¢ ã—‡ÚDôÀ\d² ÒÒV»»±\oÄ|½gÜ£xÖÞ$ŰSý¡6YŽT?¶@þ¾ ¤s7–êv"n©FÄZ‹c×ühè a$ð‰D¢ èýxîgÏø%ºÝÝzELŽ@þRªË²DÍ6,ï3€ýü“aî{O¯‚¦é‚ g̹z¾ÿ ßìxxKÒ`/a2€0êAÔUAx®G–—fÐ5æ@Ëè.­‘y}ø™³óþ4NÝ ŠA‡ c¥V0mïÛ Ì+mú¶/‚{ÐðÊŠ¡Ú<üÕÄŽ»!WÇ>Øš0T º½œÿ ä…f`J)™Öáå„×.Ð]*P㋃?? òà^°~¿V ñ çZ!ÏZ03Ó ^`!Š¢F‰ 7Hÿ¢LgYÖÈkíA²yÁÉ~eúXõ`=a¥–Ѷ·H`V%ëXçêꛎ¿˜©³²yIEND®B`‚awstats-7.4/wwwroot/icon/mime/unknown.png0000640000175000017500000000142212410217071016470 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¤IDAT8Ë¥“ÝO’aÆý[àOh­æjÕjÕÖ8è §æ'ÐÔrµ –³t˜Ó,)53 j꜊o"ˆ&Ê— ðb"_ÊÇDxáU³íê5œËÙZ¿“{ÏõÛ®g÷ çøc #ÙZ÷@ãÜ'Uë4õÅž¢6Šœ±$S¦=ö™µ“æÌ:Ò!Oø;4ÜA*ƒg; G ‘Åhhh!Ì9U@¬¥8rk2µÙ‡ùÛ.¤s~ˆÆœ¨YG±ƒ# WˆÂ'•?ÕElqNdækr5ÜÓXpÆPË„: ü1¾Xc‹ÔH­P®†`÷%Ð:I›Ç]¬¬`t)*\ó§°â‰C8hÇã3ÒG ?~s„ÚA júM˜·G ]‹ Njf}s!ÒÅtí&6QÝcBU÷ üÑ4¦–PÛ¶A3µ-n»­SX½»xÒm$³‚…—v“J,¨üh¯ÓÀ<ÖcÚèÃ.u€]½³.”¶iQùA‡o<±žÎ ZÆ]´+ÄÓ ¸z”¿×¡ìIú;¶"øb-ŠZT¸ÏÀk`÷Ǒߤ>¼ÚHÛVb™ ¼vÊÄó(y;‡â×ê …¯6*PÐ(G½tFOwëäǘ>B…1½#‚ÊC6Kì#²G#O4“¡P$±êƒ„©s«fâøùâVù›ùà’3åŠÜ6 š”h7eøÎo˜À°Æ %€›ÕcÁëGY')O4˹×@¤töm¨­A¼”,¡¤YŽ¢Æi<ïÕCiôBeöãjÅçÔåCœSWùŽPƹýl2ÔG¬ã«; ‹7–aѹƒ.™ ¹}ø @ ÷>ôû¾¦hÉ—/¾ãýwìÅÙ¾ÿÿÃ༠€ÿßáÚ¦Óÿþ1üû+@L ŠwµÙ´¶üòˆñ?ÃÏ|ÿE\w|Pb —áÎRÆës Y£¿m€ê,ãIEND®B`‚awstats-7.4/wwwroot/icon/mime/glasses.png0000640000175000017500000000104312410217071016431 0ustar sksk‰PNG  IHDR*º†tIMEÖ + æBjî×IDATxœMQMkQ}o>2Žé@JÜÄàÂ…HpÕ€ËÔm• ³™Uº4ÿH³sJKݸsS‘JSÐ8Ђ)p£00vêŒwîíâÉY\îçápCÄív‹ˆDôððÓ¶íóó·ý~ŸˆQô$DTe6›5›W——ï÷÷_@§ÓaŒí–ÄA»Ý¾»ûqvö¦V{wt” Ã?ˆÈ㜋(V¯×MÓ<<Ìöz=z$I’$!¢§§ß®ëÎçs9•JM§Ó8Žîï'år9›Í2Æ0Æ4mïññ×·áw¹R©xž,‹ÑhœNë½^ÏuÝ|>¯ë:"FqôùÓ—“ãcÖl6ªª¯OON5mÏ0 ˲žŸŸ‰èæÃÍííG"’[­V·Û¸¾¾Êår_ûý8Ž'“‰ïû¾ï˲rqa!" Ãв,!Îó¼Á` ˲$Iªª2ÆjµZþM’ ‡Ãb±hÛ6Çc]×…¤t:=ˆˆˆ ?V«UEA¡P«¥R)ñ5D”8çˆhš¦,ËDd†ã8Š¢H’T­V3™ "þwaçÛëõÚqœF£±\.QADœˆØ ç|³ÙpÎ5M¥ýwÝM«RR6IEND®B`‚awstats-7.4/wwwroot/icon/mime/ai.png0000640000175000017500000000127712410217071015372 0ustar sksk‰PNG  IHDRóÿasRGB®Îé pHYs  šœtIMEÚ - ìA>ýQIDAT8Ë¥“?‹]UÅçÜû™ŒŠEÀ ©ÆÂÆB± ‚u¾˜ÂÂÊVÐÎBÁRlü¢(‰,, † !eP‘©M2É»ïþ={-‹óF§wÃ>ì½9k±ktï“§^;»×¼’×™Ôfr›¡M¤”±„eT„Cx.B‹ÐbÆm|Ü:§ƒ´J/Ñ$hk¦6Cœp@mV¦Î2”Ìw™¦†ÙHB’1ÆÉnÓdƒþ½2­‹ñ"dH64‰"~ý3âÅgÚöÜ£)¯’Óël<W—/6gµ£b²¦@c ¡ ¾†Â‡_ ǯ¾?þñÑ—ÃÆ}¡t çZÎï'¢1 BcՋر-”.hÆÂg×§îÒsì}þíÔ­Ç‚»àï»CºoJêm£bz‘ËI³±Y¸q{^ºM™ß|9=~x´ô¿ü6Ë]áÊ÷åþÍÃè¢ Êàt—51‰2VÆk?ÌÝ œyr«vm®Ý\ºÒ )– Æ æ*c,cÚåJâêíÒÝø]Ãù·úCÙ\½›&TUÄ,N0^D«EDª2þµµo¹¿ry}áÙ'Ò™OoŃw¾)wû^`p¸‚Õl1Y³‰¹®õÕè ùâ…Øß§4—žöcˆòõOÑ?œ¬a¶uj-"ýüÆÞ»{+ÞX7‰u“ØŒ2®{df±Î‰fœdÛÉ‚~ö{mLb÷D†]b66›Ñ`L²Œ´˜6v.< û¿Â®¶µ\í.×z7W˜ö¸ Í)Ÿ"2ø„Ñàzì>Lø¿ñT÷÷DÃUhÇIEND®B`‚awstats-7.4/wwwroot/icon/mime/jnlp.png0000640000175000017500000000217612410217071015743 0ustar sksk‰PNG  IHDR(–ÝãsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEeV:nZ9UUUj\Bj\Ds`AsbDdddeeefffnnnqqq{{{we†zc‚yj…q‚‚‚†††‰‰‰ŠŠŠŽŽŽ’’’“““˜˜˜ŸžšžžžŸŸŸ   ¡¡¡¤¤¤¨¨¨ªªª«««®®®¯¯¯°°°³³³´´´µµµ¶¶¶···ººº»»»¼¼¼¿¿¿ÀÀÀÁÁÁÃÂÀÂÂÂÃÃÃÅÅÅÆÆÆÇÇÇÈÈÈÌËÊÍÍÍÏÏÏÑÐÏÐÐÐÒÒÒÓÓÓÕÕÕÖÖÖ×××ÙÙÙÚÚÚÜÜÜÝÝÝÞÞÞßßßàààâââãããäääæææçççèèèéééëëëìììíííîîîïïïðððñññòòòóóóõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿŸ‹?tEXtSoftwarePaint.NET v3.36©çâ%ÌIDATWÍi_Q€ñc­HÃPŒÕdËíÑ‚A2Ó$ÍÜ{Ïùþ_¡ñòÿ{^< ¢@þõ¹F"a<_;üyí>²-[ É«uFÀ2ûÙ-‰ôÓÁ{¬ièsm¶btŸ\AMþ½xÁnˆ?© y¼‰ú]¾ƒ¥rP9§»v·š—Óæ‡¤À ÀgÅ3E¥†Á,KSÞ9Ž*SSÝyìU¾-íi²a‰Ý#h\]¾ÙÎÙÞs—9 5i–û ŽVV9DdúÜäNfˆÿ3he¯¿IEND®B`‚awstats-7.4/wwwroot/icon/mime/real.png0000640000175000017500000000257612410217071015727 0ustar sksk‰PNG  IHDRñl¸gAMA±Ž|ûQ“ cHRMz%€ƒùÿ€èu0ê`:—o—©™ÔPLTEÿÿÿÿÿÌÿÿ™ÿÿfÿÿ3ÿÿÿÌÿÿÌÌÿÌ™ÿÌfÿÌ3ÿÌÿ™ÿÿ™Ìÿ™™ÿ™fÿ™3ÿ™ÿfÿÿfÌÿf™ÿffÿf3ÿfÿ3ÿÿ3Ìÿ3™ÿ3fÿ33ÿ3ÿÿÿÌÿ™ÿfÿ3ÿÌÿÿÌÿÌÌÿ™ÌÿfÌÿ3ÌÿÌÌÿÌÌÌÌÌ™ÌÌfÌÌ3ÌÌÌ™ÿÌ™ÌÌ™™Ì™fÌ™3Ì™ÌfÿÌfÌÌf™ÌffÌf3ÌfÌ3ÿÌ3ÌÌ3™Ì3fÌ33Ì3ÌÿÌÌÌ™ÌfÌ3Ì™ÿÿ™ÿÌ™ÿ™™ÿf™ÿ3™ÿ™Ìÿ™Ì̙̙™Ìf™Ì3™Ì™™ÿ™™Ì™™™™™f™™3™™™fÿ™fÌ™f™™ff™f3™f™3ÿ™3Ì™3™™3f™33™3™ÿ™Ì™™™f™3™fÿÿfÿÌfÿ™fÿffÿ3fÿfÌÿfÌÌfÌ™fÌffÌ3fÌf™ÿf™Ìf™™f™ff™3f™ffÿffÌff™fffff3fff3ÿf3Ìf3™f3ff33f3fÿfÌf™fff3f3ÿÿ3ÿÌ3ÿ™3ÿf3ÿ33ÿ3Ìÿ3ÌÌ3Ì™3Ìf3Ì33Ì3™ÿ3™Ì3™™3™f3™33™3fÿ3fÌ3f™3ff3f33f33ÿ33Ì33™33f333333ÿ3Ì3™3f333ÿÿÿÌÿ™ÿfÿ3ÿÌÿÌÌÌ™ÌfÌ3Ì™ÿ™Ì™™™f™3™fÿfÌf™fff3f3ÿ3Ì3™3f333ÿÌ™f3­œ­)R{{­RZ­)9­­½ÿÖÞÿ{œÿ)Z­)9RRœÿR{­{½ÿ¥Î÷{œ­Rœ­)ZRÆÞÆRZR­½­¥¥¥„„„ÿÿÿˆñ\ïtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç;\"IDATxœb|Ço¹ÿ200s€˜ÄÄ?~p3üaþóåÿ  €€ßÿÿ÷“•ç믷 ÄÂðñ?» HõÓÿ<Ÿyˆå;ÿNööþO?•î³ü  ¦ï üì¿ØØ¸¾Pà'ÃK†ï¿ÈQbøÃÀ@,ŒÿÙY˜îý`àePb¸÷ï/#@1q0üûóžO€UŠá5ë^€b|÷÷÷?æ,\Þs3üå`c æßß8Ùÿ¼fâføÇ´ €X8þ~åæbdøÇ r @€" ?Y \€b“Øa|€ÍJIGWßÛ[IEND®B`‚awstats-7.4/wwwroot/icon/mime/archive.png0000640000175000017500000000060212410217071016411 0ustar sksk‰PNG  IHDRµú7êgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAT(Ï]ÑMJÆáÑ+¸µà"/$Bׂ¸QìBT)ø¯´¢"Vt£â DÑ*ÖôǦIúú%­¡ ßìæÉÌ$1ÌÆÍ17— ÅâÄåtêAôÈŽ&é°²ôOârƒ¨É/ìòÃ7ï"oÄlÄÜ_¸jPçC M“U‘øìë©5(ŒMÍ_ÌÜÇ™®ýrÇ ØL°[ÆnЬÂIEND®B`‚awstats-7.4/wwwroot/icon/mime/csv.png0000750000175000017500000000052612410217071015572 0ustar sksk‰PNG  IHDRµú7êgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<èIDATÁ1nSAÀÙÇž4A¸‚Ž‚(¡I“Sp.KPp"„ÒQÒAŠ7%Žƒßþû1Ó¢;ó°ó+„‹çýZ######Ïù´µ±DWk=æCù›?ù‘û|ÞÚX‚æjä˜9昇ì³ËÈSóekMs9¾•¯NNV«ÕG@ÿà¶‹kD)ÃÞ4¼hn­†“¡”éÐ.Q¦@ønJ)1]:À;1@ø¡ ÓT˜Þ:Àt€Ÿ¦išÞ:ˆö€I²$fM³ž-Ú+g”]îþ´•Ï^LvIEND®B`‚awstats-7.4/wwwroot/icon/mime/lit.png0000640000175000017500000000174012410217071015564 0ustar sksk‰PNG  IHDR(–ÝãPLTE|‚„lÂ\ÄÖÄäòܔ΄ôöì,.4dºLÄæ¼üþü„Ælüúôœ¢¤ |Âd¬ÚœôöüDFLÔÖÜìòìôúìÔêÌ´²¼´Ú¤ tÂ\4:<Q ²ºtIMEÕ  5EºÅˆIDATxœMŽë‚0 …+:ÝŽ·ªËXp( ‹&êôýßMØ0Òm¿´==„>´(f±¡˜­l^ •}"s ¸0“wŽ!dÐ0¡)Hm3iL0¨—N2áê%Ç;ïm/57Óª:¬'z5(çD :ïÒ£O"Úìë–÷®Ë¾ñs§GüMæclq*?·„_Á C$qÙÜIEND®B`‚awstats-7.4/wwwroot/icon/mime/xls.png0000640000175000017500000000122712410217071015602 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<)IDAT8Ë“OHTQÆ÷½;£DŽ:ÈLÓÉÕ&ŠÂ¢…DDá²·)-7A¶•¨‰QÛZ…ÛµŒ©bˆ3™cÍ8oÞ»÷ž6ãØT¤|Ëóã;œó)@)µH>ÿW˜€ˆPƒ ‚ E‘5ÆÈ¿ŒŽŽÞvžˆ4²QÙR©$år¹î••Y^^–ÅÅE1ÆÈ‚ŒÕ!jp²WÖ²9'ˆu8'8+XãpÖaãöéq’É$aâœ#—Ë Üep²W6RßÃ) ­dõÒ\‰Ë÷/°-“$Ë4E¼˜ ­%‰¥ßȤÓÄãqŠÅ"Î9Œ1¤R)ôÖŽ&޵Ÿ -ÑJ”™Còí4Åcü”ïÌçç¹yñׯûÑZ£”ÂZ‹ï¯Ê‹ª†¾ž~>|™¢4Ó¼ÌМˆófê5WÏ ³ÇŠÁ÷}´Öh­‰Åbë€0°Ì|æùô3ž¾ËÑY=ÌjK™ìÁã<~ùˆ ªžçáû~TTÊçïœ$ÕšF´021Ìö ‹LW'$š¹õdˆ0°(¥ð}Ïóêmª–+g†HliÅZÞô>ÞϾâÓ焞Á‹QÕ "(¥pÎ5þåÙÙ ÏØ}i¯„aØàúÃÀpêú!¬i|g¥á±ÖVøSªMÝÆ˜·€bsrZë£^­P8kmp›¶Ö®VýVç]µ:{›L`ü/ž«G*Ó_>IEND®B`‚awstats-7.4/wwwroot/icon/mime/php.png0000640000175000017500000000103212410217071015555 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¬IDAT8Ë“KKQ€­ý€‚Úô [Õ¦}‹ˆˆ¶mJ"ÛÖ&¥µ¥‹zl²4‚ÀE¶i›E­¬$nfÔ”y«ãëtÏ­î„’wæÜs¾¹O8òŒ\÷?Œú­:FàªÕjR£Ñh5›Mèé‡P(d%¬ÀÅš¦®ë²,ƒ(ŠP(¨D‡Ã–Ä,îC&T«U0 ƒ¶ˆªª I‹E*¨T*€?á8îG‚÷ÔæÀÐðÄlüæ ¶½qØõÝÂâR„²åÁe4¹d„¶)Ñ5!Iƒ nÏ,@Òï<°ß&Ñ«'àù<· v°3õœ¥…‰DšÌW±ÞÙ8æÅã/P.—m;>³%X߸ ¼ ÓwŒ±ñýƒ¬­Ÿƒ¢(6A›6&f2Ek*lׯ³¡ É Î0AÓ š|{µ†‹-ÇXðø‘žV0J¸ë¶pl$ñäÃ|•¨×뛀=HÁ½ïD7A»Û=è@ËüJ&ÉÖ±£—b’«ÒÛËœ(éá:›àÕw~â­ž)‚’ãIEND®B`‚awstats-7.4/wwwroot/icon/mime/phshop.png0000640000175000017500000000134012410217071016271 0ustar sksk‰PNG  IHDRóÿasRGB®Îé pHYs  šœtIMEÚ %ÐL¤rIDAT8Ë¥=ˆ]e†ŸùÎwïÝeWEB ¸‰’ Ea±Á --Ôí­;AHi°°‘”ÁRÁ? ˆ`@ƒìª«{î=çû›×â\ÔÞafžw~l÷Òáþ|±ùübXtÆ"æ1ï j¹‰ÔDnNª"U'‘Òð^ ¦ ³ÎÁˆÑˆÌ:£ë —#Ñ®)6Dóöyà¬h8Ö&°:”:MŸœÿä"–*¬:.cyóȇ×2-·O…Ûxj^KVu¬¸(Í)u-PE.N‹Ó:'cùý«ƒw_üuëâÞæxãë¶Noœí›êR¥³Ú:JÉ*MVª(Ù‰«ÔèhtÁŠèήžmé¯vøú}?þ~íýe8óàÆò£·ŽÕªÂÞ+wèÔÅ™¼¢´"¬R£“¡1dàV¿Rï›ÀPƒn^~ú—*²Ÿy(Ôß¾}ìÑУ´"¦œ1E0C¥ÐvùD?}Ü[4ÓÝmƒùá·-ÜûÌv¸çÑ¹Ò xCyI -QîQêñ<`^ïÃÎî,¾üÉy Çêž»rŽmµ«û?×O/+¯&&¯¾†•N ŒbïÕ»lwÿ´+t^³µ>Höä›çììÃ[|Õ« ø8qQi ÞP鏯[R77äF˜Ãõ+GþåÛÖxâ ÇÈ+”¨ÜOÀÎ#·…—>¼_c5jÒ³ï\ ô®°Ô~P‡õµ­„$ GÈ wÔ#wPCÞ ŽDO=í “8käH>MV›Î®‰¨å®.:bm>­Ž@š é”uÔ¿}¯Îÿµ¿>5îŸX‘ˆiIEND®B`‚awstats-7.4/wwwroot/icon/mime/svg.png0000640000175000017500000000110712410217071015570 0ustar sksk‰PNG  IHDR*º†tIMEÕ 6Rx±sûIDATxœEŽÝRÓ@@¿o7!)mCÒ¦èH¥Pad¯_ÅWó-¼VGª…)?Ã_‰”PKBÚ¦ÙìnÖÎå™sq~D•"»;9>ŽzW†1–dº“G޲w‹ï?,ÕžQMWJiòê“Aç´õåk'oB/‚i^­Â0„},g ]¶ÛÕê B¡ñ5‰=ËL+P€ª Î;pïßln7¶ P€q{}ëûz³Ùœžª<Ÿ)çÇóL Úp˜˜—¹™0¼ ‚`må *¥ÚÀ÷ýÑ(±m§ëÏ/-çÆsY&EoÆŽ[ K1“ Àë?Þ·Ïñý]erR7 ¶S:;;“Tˆ4Iؘ™×P)%"ö£ˆ³´ü´ú¤âŸDQ”2fÛ%–ÄÅÂDØ „ Á¢]*-ïò²ìºJ°…—‹«kow~nÖææ ¶#¥Ôà¢ëvÙ­Õ³ &Ý’[rZ­ƒå×+žç †CRTJ)¥±†"ç\pnš¹^¯{°ûË4ôÝß­‚åPªýO€%‰’s.…È”2 ƒâƩم³‹‹Û››ÇJi4Da(„D]× !³õe.Ä(Že–i ”B$„ÒÝæÎÞþ!PA–¦¼^¯?b¯Û½¿;++Üf€bbaaax ”¸xñ"ƒ””;;;Xâê—/ wr:@Ïýþÿ,@LÀðcàääd`cccdàææfø Tغ{7ƒ‘²2C„ª*Ç_¿ÀŠˆé÷ïß <<< ééé [¶la˜;gCäÒ¥ Ÿž?g¨tvf`àà`ø÷÷/X1@±ü‡Z‘™™É ##Ãðúõko† §ø¥¥ÁrŒŒŒ` €XþþýËtçΰ€••Û7o„€Îú —·n @1Ýùš••ž˜˜˜À¡ƒ @!´ñ@€ æÀ{WPº¿IEND®B`‚awstats-7.4/wwwroot/icon/mime/doc.png0000640000175000017500000000121312410217071015534 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAT8Ë“»k”QÅ÷ñ}É¢ÁÍ7.Ĥ±Sc´´³ÁR+SYˆ­`+"ˆ’ô6ù_‚…’F‘€àƒ,›Ù]Èf¿Ç½3Y7QƒäÀ[Ìœ{†™cTcÌi`pü›À7UT•¡È…,˺eYÆ‚Æ,Ëtiié50XUýC`¾,˸³³£ý~Ä^¯§NG[­–†´ÙlêòòòHÄÜ{³ö£ÈB7ƒñ™zuN¢B‰ A¥CäÅõZ¢(VVVÞ,..¾âÎËŸyÐ2È¡lýÌôþ³÷Ún·ÿ ˜÷±ˆ!q–§o?ÓË"çêÖ7L$ŽêqÇÚ—]b©¤iJ·ÛED!P¯×°²\IÕИ®Ðé '«ž,h¦T¼÷¤iJ’$ŒVbµØ{Œ’+«k]ÊBØhå|ý^°pþ6(Î9¼÷xïI’d_ {ë,s¥¹ÙÚ.©ÃúFÄåÖÕi$*ÖZœs#¡‘€ä ý`såæåµžJÅríâ$SÕ‰Š1çÖÚƒë ™©„Û×O¡À„n,ÔqÖ Ã[1Æü¾™¼‰T¶¶sž?> ƒ,ðäÁܨ ½Šý¦ƒ¿x)„»Þ} y6>Û˜œATƒ5û#ü 3´f€K!„UÀp4ˆ÷þŠJ‰19JsŒqˆæ@œÃ8Û#:ˆÀæ/nµy£ŽžªÎIEND®B`‚awstats-7.4/wwwroot/icon/mime/css.png0000640000175000017500000000062212410217071015562 0ustar sksk‰PNG  IHDRµú7êgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<$IDAT(ÏmÑ=KB†áÇ[üÊù#­. 54¶ÕPQC5h8¤B”¶EI´ô1ôaEZ=Çsônð#ŽÅ³^¼ïp iDA} h!$¤ Uvš.¿³X‹t‰ §YÅÄĤÂ'¯¸<³Þ!’O†K›:u¾)SÂ¥F•hD°±±©Sã‹·Þ+òu€ƒ‹‹ƒ…I…wJ‹x@‚ˆÓ Á×D™ð‚ä9"NŒ49ÂÉðp´ºd“< äØâ”)¦…²M·+Í$E¶Yá¼5ÎèY;–_!oìÆ¡ ü覢\†H°ÖIEND®B`‚awstats-7.4/wwwroot/icon/mime/xsl.png0000750000175000017500000000062212410217071015602 0ustar sksk‰PNG  IHDRµú7êgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<$IDAT(ÏmÑ=KB†áÇ[üÊù#­. 54¶ÕPQC5h8¤B”¶EI´ô1ôaEZ=Çsônð#ŽÅ³^¼ïp iDA} h!$¤ Uvš.¿³X‹t‰ §YÅÄĤÂ'¯¸<³Þ!’O†K›:u¾)SÂ¥F•hD°±±©Sã‹·Þ+òu€ƒ‹‹ƒ…I…wJ‹x@‚ˆÓ Á×D™ð‚ä9"NŒ49ÂÉðp´ºd“< äØâ”)¦…²M·+Í$E¶Yá¼5ÎèY;–_!oìÆ¡ ü覢\†H°ÖIEND®B`‚awstats-7.4/wwwroot/icon/mime/quicktime.png0000640000175000017500000000114412410217071016765 0ustar sksk‰PNG  IHDR*º†tIMEÕ 1è/øÒIDATxœ…ÊOKaðçyßqÆ™Ýu¶¶mm3-AY4*¨(:D……!tè”õêÔÅCG !‚¾@Ç2Õ¡ C$ ý#S×\wµÝÙ™?;ó>O‡>@¿ó™˜™"QÔ‰b¥ëšÔ Pĵ•¤€ú¶ót©ý±&V š^?º7Ïõ)bŒDÄaq¥q÷}Wö¶ŸÔÚq²áB£m’33aO]JkŠXJQ©µn½JT67¬ê“£<”××]ýÉB|~lÿìÜz!W™8QÒ)¹=Wÿ{OG›³çRù¼ £QÔxáËfÅ,Ì/¹g¢KàZÕ}¾^’Ü(‹|ÞŽý¨ºw^4º¯Í·ÃÀ5³_×\ÁÌÕ;J×;þHÑ$æ_5oúõöá>yr03ÜkM6RzÃO"Z:Ë8ôA+"f´-c|8}q$+pC Q+eÀЄ`†‚9h„±/¿oJÁ»mãÊ¡]¶etI|ôÁ52é+.å ÑIÈJYSG,ËrúÙꟖÏ7½`æÍæ½·áÎÕÞ×›A¥ˆTM>ü9_Í‚.÷¤¢Ò¹É Nyn’KËËÅÎõ1B“j8Îý òZ_¥›¼ ô|îdÙH—Sḽ.£Ø™å­‰:q¾FÁâ²óé7oÅzˆÊqlÀ|¹¬<´NõÈÌÌŒˆð?»K Mb6µIEND®B`‚awstats-7.4/wwwroot/icon/mime/rar.png0000640000175000017500000000237012410217071015560 0ustar sksk‰PNG  IHDR(–ÝãgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€èu0ê`:—o—©™ÔPLTEÿÿÿëë zb!b Ü2‰E‡]X2x`ax{ ‡ „}QjïLÀ Ÿ7‹£{¢ëìêéQNQ¢œ ^ba"e©]´ÀjÏ  ";B6‡CHG¡„‚s\W5LL³MM«RR°‚‚¬°°±‰€«Ž³>G«#L‹‡z`/C{?ÙCe½DÕCÒBÐ?Ì@Ì>É2a|æÜ‚ÜÛgª…Ým³Ïu½¾H§§ÉÎÍÕÚÙ‰Jvˆ}ß1Ú-z«…ÚèÝKáTmÉo010ÛÝÛôõôáâáËÌËÉÊÉC¡)  ŽÅLŠÆ5P^$€• 893ÕÖÎýþñ-.ÿÿøÿÿûÿÿüÊšP“f\v‰ŠŒùùù³³³±±±555""" ÿÿÿèÛ¶ËtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá< ìIDATxœb,ÿÇ8‹éïà. f±÷_ÞD]øâŠ þ Šÿÿýýâþe &n†ï³ÿ³0ƒ["@±7üÏiòë÷b¬ @1K±°¼û÷l\þ @,欌÷Ä_Û3ÿgüÇÈü €X¾,bðÿôá?ûoæÿÿ™¿³—Ý÷[Æ^ä¸ô„ý"?@11=4åZõ—‰ñ#…³<7³¹4Ï ð €X˜2DýùÁ v†ÿs€b‘d`øÅóôˆûì=@1±ÔÖžã~ú•.†©NöA±>¤IEND®B`‚awstats-7.4/wwwroot/icon/mime/image.png0000640000175000017500000000113612410217071016055 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ðIDAT8Ë¥“=kTA†Ÿ3÷Þ½÷& »a#Q’€`ÄTFÿ€……URXHú€?Âß ¦³ÐÊB,LþA@°„AÍùØl6Ù¹;sÆ"fÉn‚¦›™çœ÷÷Hë¬`ùãÚkU™?)4³îŠ[5’²„7/žÎ.ÅdáÉ£‰Ñ,ËD$úgÅŽ‚w]>|ÙxœN¬¦išÉòêöhÉ:“c;äI”ý£œo†Â]bFxùl¯"= …c"Œ@a¶˜¬í–~д-œwÄiÊÔDïaª¥ª(`Œ`Ã.¥ä€ÃÓ&Öw(œÃ…6išÒ¶9#¹!zÆôDN±¾KÇYN»–B^éÔáâÏ™žÑá 1J«=L ÁªÇ:H‰v«L¹4NrYBgÊÑM~mmSÉ66¤â8Þb{«N½2ElärÂE@rƒñü>?×V¨–#Þ“tF¹5½@9«ãUûbÑ×ÁúÞ"^¯Ê»ËÜÄmhlnóéøz¤¨*ðy ƒàñìRï š9䤽G¶ù•ÚÃE棤/™ç>ÆrE^}^ÅçUlmúŠ<˜˜%ÒD»•{c@ä/*œïK+ˆ# =@)–wïWs…3ÿ3œq‰á-€\wœÿoÚ“¯Ä¿IEND®B`‚awstats-7.4/wwwroot/icon/mime/audio.png0000640000175000017500000000114212410217071016071 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ôIDAT8ËÅÓÏKÛ`ð€ÀNcÃÓc0V·!sŒ‰¬8©Û˜%iŵY“61ýa££®ˆd!Ò_ZoZ,¨Lèax/=Í£ÿ€0/ÏaÁ\½~÷š1‡XƆÈ_òòÂóyŸ÷Íûr¸«„»6 TZÛ¶õýŸr¹ÔÇŠ-DZO-k ½ŠH3d’ô~¨Õª|­VñR©”yVüms³½½/X\üx  ä\áDKƒ¦âP­–±¶VG½¾‚ÕÕììl¡Õja{{ fþÀY…Þ©¾n$wZŠ:kyûû_ÑétÐn·Ñl6aYë0r™s€äŒ|¢è ·1“^…3®ù_rl¯ØÝý Çq`Û6ŠÅ" Ã`ãOH§58žˆQD ‡ÙªãSÞñã Á¸³ƒj4Ö¡( ¢Ñ(DQD0„¦%Y¿—B3ö¼ù <~ºïW(˜ØØX‡iæ‘Íf M@†Í ™ŒÿÞÂØ¤æ¾ž=3éÑHÆõ‚î<9är˜ŸÏ²bÝk9•Ò‘xÏ+Jìè Êç Èrìòo¼ûlÉÝòô¼HlÕ>9³YN{róJ7îõÿñ*3hš¥ûÿÓßæ´¤|Uo<>IEND®B`‚awstats-7.4/wwwroot/icon/mime/jscript.png0000640000175000017500000000153312410217071016452 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<íIDATMÁKh\U€áÿž{î<3LRjŒ´¢"[[lEP,U¡ ·±ÆU7W ®DÜ(èBPëN"vÝb´V°¦Š(eb‰¦vì4“y?3÷<îq³è÷yÎ9ö¬\(><˜O‡:b¨#t±k¢Ðê€Z@øøV2süо©âOÎq·ŠrCåZ#» 4ôBËÍzŸ‹Nç$‘1ó٘ǞrÛxÒ_B<,ƾ><¶d.]8ÿKåÁ„Õ:+q˜zÊ££¡Bg4va§oÙóæê-ŠÒ,Ís’ šùËeËÛU^;Zà³ë]íX9œe*!ðñð=ˆÏvùùŸ¿ÝêTc‡ßÛ*ŒDîÙBFâ…0 ‘rdRç¯vØéZaÄ@Gà Ú ùhm³k•Z‡ÞÝzaéôí‡îIåšMÙ#Y pê`ší¦%“†Ï¯µùázŸ‘ñˆØÀb”:páõÇ×ÄÃ÷'?]Ìø‰;mÍÙcâ1O@!%9¹˜¦Ú1ìO{\­ ±Æá˜0ĪÐ2&~¿Ö=»y'ŸO.·©¶ G{ ¹Xê—‚›UÅÑÙ±ÀC[K04F©.cbãý¿ú÷ÏÇ7JubqÕïëààëõ6Ù” SS¼Rœ¡¸”%@£bBU½ôösŽ1ÉXʯ©iB7ƒu<5–îŽå¥s$c>8HIA­µ‹Ua… ¹|nux§øÈ½œ~zïJŠfÏòòò<‰ÀH>Ä|Ȧ`³<Ä(UeBZ¥N§~-mÑÚ•ôC‡¶ŽP{(alDä…\ŽWŸÙÇvcˆUªÆ„´Zyþ©G“o½øw³´u(8øøR…T½þ«uƒ iµÞÚ®wør­D~*I>› ŸŽ“KÇɤbÄc‚¸œ^ž'.¡Öìaµþ óÍ•õ…+ë÷3À 0 L¹D,‰€l:I>›â¿Ê7€Ÿ˜ørp{"V­IEND®B`‚awstats-7.4/wwwroot/icon/mime/runtime.png0000750000175000017500000000217612410217071016465 0ustar sksk‰PNG  IHDR(–ÝãsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEeV:nZ9UUUj\Bj\Ds`AsbDdddeeefffnnnqqq{{{we†zc‚yj…q‚‚‚†††‰‰‰ŠŠŠŽŽŽ’’’“““˜˜˜ŸžšžžžŸŸŸ   ¡¡¡¤¤¤¨¨¨ªªª«««®®®¯¯¯°°°³³³´´´µµµ¶¶¶···ººº»»»¼¼¼¿¿¿ÀÀÀÁÁÁÃÂÀÂÂÂÃÃÃÅÅÅÆÆÆÇÇÇÈÈÈÌËÊÍÍÍÏÏÏÑÐÏÐÐÐÒÒÒÓÓÓÕÕÕÖÖÖ×××ÙÙÙÚÚÚÜÜÜÝÝÝÞÞÞßßßàààâââãããäääæææçççèèèéééëëëìììíííîîîïïïðððñññòòòóóóõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿŸ‹?tEXtSoftwarePaint.NET v3.36©çâ%ÌIDATWÍi_Q€ñc­HÃPŒÕdËíÑ‚A2Ó$ÍÜ{Ïùþ_¡ñòÿ{^< ¢@þõ¹F"a<_;üyí>²-[ É«uFÀ2ûÙ-‰ôÓÁ{¬ièsm¶btŸ\AMþ½xÁnˆ?© y¼‰ú]¾ƒ¥rP9§»v·š—Óæ‡¤À ÀgÅ3E¥†Á,KSÞ9Ž*SSÝyìU¾-íi²a‰Ý#h\]¾ÙÎÙÞs—9 5i–û ŽVV9DdúÜäNfˆÿ3he¯¿IEND®B`‚awstats-7.4/wwwroot/icon/mime/flash.png0000640000175000017500000000110612410217071016065 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ØIDAT8Ë“ËKQƵE ]7®¢‚4‘m°¸”ZµàÂ… QÛ A|ÑE)…d‘?F(Rh¡tÓ¢­ .Dój2;¯;É×{®f˜‰ø6sï÷;ç|—Ó ƒ$¾.¡ÐÀz&ôÄóù!˲jœóºëºh'qŽt:ýÙñȬë:cžEAµZE¡P|>L&ãAšæNÐÓ4aÛ6Ìoßaîíƒm§P«ÕP,%À0 P‘l6{iÙ>8€ùvn* ör ªª¢T*ÝIfÒ pÎÎaμ_[†13 ¶úÁ¥\.ËNr¹Ü=Îamí€'ßÃH¬ƒ‹ªœþ‰ðBP•J¥=€ÿ=9÷zìì/‡àÿªòbBókš&AmÖÇOà‰¸ ¨#a°Í”7¯ã82‚î6Ÿ÷ÌQežˆ sÊàX@]È€…¨› |šÿåÄ— †£°ü„süÎå•4’¨™}"öU‹DO•‘·ÞíìªúÍ~y-üBW‡Ã {iJlüºxë&¤U@ƒÒ?Œ‹ÞÐoçè¸qß´QÝËà6È>£ƒÇ˜Å]Mn¯ÐMG¬sS´úÝÿv¦¾üÖí/”IEND®B`‚awstats-7.4/wwwroot/icon/mime/rss.png0000640000175000017500000000126312410217071015603 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<EIDATÁÝk•uàç÷{ßsœîØÎhÛ9.Šv±0š“ÑÄn즂 „è¦î‚¼ËCKú†„7Qt/HŸiöqQ¸Ð…Ù¡N´‰‹sÛy¿ÎÛó„ìUíæ¬©€ˆ€(±a58“6g­˜;ÞÓ9BÒ ¦„@ „H Ä€„€€ºbãÇ^ó³ R©žÎ²„î nßàï5b$‰ˆ$‘º¦5ÅÌ"3z)HÄ1Ÿœ Øæ×‹Üü”êuÀ¿·»ŸÑ!eg“õóô¿e{‹Æ8¾À³g9° Â2'';›üü11F¦Xx…‰Yž8ÅÚ9n^$+É3ŠŠ!QDDw‰?â©wyäyîöùêMW€Å×è,e KŠ’œh q¦çyüež9Kû!®¾Ïï—£§¨÷0,(*†Dÿ\ãó×¹zŽí-ûxòmZpe•{·h¶8ôÃ’bDN#ud÷6ƒK\z‹?.ÓØÇÑÓhðÍ{Àá—Ø-É+rR#$5˧i´|ÍÚLÍÓêÐ]äú—ÿ±ýL¤¬È‰ ÖLâÀÓó<ÆÝ;¬Ÿ>ÆnEÿàÁÇ(kr"ØÝ¢Ø¶~#Ëøë ÕeXðç  ¹—ª¢$•£.QñÅ4&\#+éÿć')Jv+¾û„ëßSVì'’¼3§­»wÙäͱæ¾&:´;ÄHL˜é21ÉžIJ;›«!{Z»Ùµ¢«g„CäÈ1D‰%r¤hZn8ó?¡ÖÒÀ‚ò¤îIEND®B`‚awstats-7.4/wwwroot/icon/mime/crystal.png0000640000175000017500000000142112410217071016451 0ustar sksk‰PNG  IHDRÉV%sRGB®Îé pHYs  šœtIMEÚ ,ÙL+¢tEXtCommentCreated with GIMPW~IDAT(Ï’KHTaÇßw¯×æqg³íÁXXÑ;CìÍ‚ˆA«FEPѲE’h0à²Ç¶u›(ZÑcq-(°A©,$ìaCÖÌhŽ:ÎŒÍtç¶2 ú/Ï9¿sÎw¾¿à7…B¡öÚ-ÛÚ\’¿êÅËW$Æ’í­-AõÏ‚šuu0ùEJ)ŠqÛ¶‰'8rl·Àl¿ÐTù‡ò¶·Qea ! t‡Æ‰Sg ÀT~o?y˧9µcÉ,óçº)Q)@ƒ‘Ãqñ¯ø+«EøS÷£û7V<ºÏèéqþê3zû¿áukªt¤”¸ÜR“YòBå£]:óÍ¥šJSÃRöl^ĹËO9Óñ˜úÕ„Nod¿¿¿l+gÆ]GrßP„À_îäZëæ•9èêqèüCFÇ'Q¥@Q Ø4xv­8/¹4x!—Æ]5 f¸m~@U$%Š˜ /©[Ò¦+úÕ0ϳOB0×ç(æs?ò(R Åðø]s¶âÅ-]ÌÂÅ£ÑDsƒt÷ aK+ÀSÿ¯ÜŒÞ6ÒiøK*IY)æhex¥NÛõ{<é,LÞ¼¶’æ†e(R ìB3õt_«ù.óÞX¬U£Á"Ϭœ÷a9KPߦqÍzš·nBS§5µ¶ÚõîþÅ.0ôrUeëÐ,=ãOÉ-Ì’´&X9g5{W4aÙö4«ÈîÆp'œHLð%!m§È$Ò$û’T¥vŸa06ÂçT–èˆY· “‹Îßp§Îpzæ<ß|Þ>~>¢³Ëy©HJ.TÝ=ÍvæûtƒÔ¿9nÃ;횎å&ÿ¡Ÿš:Ù0à$@ÞIEND®B`‚awstats-7.4/wwwroot/icon/mime/video.png0000640000175000017500000000121512410217071016077 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAT8Ë¥“OhAÅßn»›Ì›ƒ‰ ÒRK‚%Jðè©zQAP4ƒ ÕKO¼yôdÿ€^Ч*DêQŠT4"RKmN‚ZIcgöo tד ?v˜ï½7ßðíaâžÁþ¢Z­¾‚`”|«Õj¹8q¹\þ ”Êyž·R¯× И÷}ÿ>9[©TbÛ¢Y3CG: 1AN0]e§f¼¤™€ôBÈ8—½†‘púü‹Aš'Éö¾Ïì/h|G®“¥WÖMÑa:ŠŒh¢(Òâ‹R.“{¤逯!2I¼´õÏ{ Ø=p¦?ŽùÖq4ÚòŒÇÓO’t\€"M'ܰgS m9ï?Šhub©›Õ÷ˆÖ¸‘nÊõ€‡ÜlÇ1ôÒ«À– …ÛRb=`g\À9æºniþâ瘘¼‚ܦ5Z°FæšÍ¦7~yn—à”Ht*sÃ)ûö¿^d—©+G¦Àt›Œ‘—?¯`Í_Aàë`àSw3†¼7úSkø¶#°`± ‹Æ¿¦ Ô#SkØ…逅™%–žÂQ~9NfÞÆ X ŸàY·­5ͳ¤×A‰‚SdëÌhhJ £—âÜ» ÐPj„æ½übKqôª[¶mßyzékd@ŽãlhµZpäwIÿΚb±¸X(d>Ÿ_èïýM2™ühYVhšærï©ñãЂ¬IEND®B`‚awstats-7.4/wwwroot/icon/mime/mdb.png0000640000175000017500000000110312410217071015527 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÕIDAT8Ë“Ëj"A†MbV ä2äõ2/àbP$jšlu!šÑíq'Fñ†÷ÆkNÎ’.Û\˜ü‹®ªóÕÿŸê²‘ âqƺd]ýG¬SUg\®V«Év»Ýïv;úL¼NN§ó·b\¡x±XÐr¹TšN§4©×ë ¤Ûí’ËåR›Ýnÿqÿðø‹Åö©TŠ’É$e2Òu†Ã!ÍçsšL&Ôï÷`áÇó ¹½»û[«Õz£ÑˆÖë5± )h4”H$¤`6›Ñ`0øIz¢Åµ ojPiš&¹Í(p'N縉Þè|Â'¶ÛmjµZT(¤  ЄÀ ú· ÀÙk¼aÖl6e±R©ˆ0‚Á l4!p…žtˆ ýipgjµ*€R©$Âðûý*ïf³‘ˆf<ˆFc:f×s¹åóyx½^€ ¸±¢:ß±Q¯×%±X¤r¹,‡Ã!…@(>ðOqÍf tׇ|pÏç;*¶JÂáði øåv»ÿÅãqŠD"Äs”N§h:x/xûOðÁ“Ï_½ƒO´W€7ÈOnÐ ß)æ½sy½À9 ßxΦðôÏ_K–û<ãòâïIEND®B`‚awstats-7.4/wwwroot/icon/mime/ooffice.png0000640000175000017500000000126212410217071016405 0ustar sksk‰PNG  IHDRísO/sRGB®Îé pHYs  šœtIMEÚ  ï’DIDAT(ÏuMHTa†ŸïÞ;wîè8þ…c#&A3“¡™Ñ -ZA˰EPmªUÿmŒ ]ä¢M-‚D‹Ò"I$³01)ÉJ» 95ŽãèuîÌ|mšñç]ïœ÷<çýkX)AÕn®\­¯:âÈ^Ãé,íºßûêÁÍ÷“èŠÀÐiêl›yûÎcçF}›¶·Fêio!X[G öu¨ãÃoGs±É)£²á‚ªjÞ¼ÁNÎஉ"„Ø …Š*ӋʆS!°âfÑe™Ë¡ê®ýÚš¦”+5 „€U½u7@([ ‡®£Æ*‡‚Ëp²hŠ%Ýá(Jʼ%îUükR­W*6enW”zü…xgg¨®®.ö„LOŒŒË‹É~MSæßªá#7‹^W5Mü1¿=ý4ǰ»!›¨IEND®B`‚awstats-7.4/wwwroot/icon/mime/ppt.png0000640000175000017500000000111412410217071015572 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÞIDAT8Ë“¿‹SAÇ?»ïåŒb.Hîôl´±,mÅ^¼ÊB ZZhaëPñH ±5þ-×^c£ Ø„$BÉ;ß{;»cñ’è‘ va™Ï|gvƨ*Ƙ-à,ñoßU5 ªÌ W³,;缈è*ϲLÛíö[à"`Uõ`Ç9ç§Ó©¦iºðÉd¢£ÑHûý¾Šˆöz=ít: ˆ™¾n)€†^QïQ™¹+Oœ OÞÑh4(Š‚Ýnw¿Õj½aúê¾þÏ~<¸¥Ãáp©$`'V){Ò)éÇ€Åû‚ݾÂÉÛ±§ëhîH’„ñxL¡Ùl`Õ é‡gœ¸yÚî!=Âðóýóž;â8&I*• Õjuñ%ñ Lý ¶VC3‡ŠÇ}:,ßrGEc0ÆÌ›^BQü×ÏŒ÷v "PA f°ÖbŒY «¹+/›— yæŽP84sÄç6Ë YGQ„µvpêî#¢ —P ¨â­m6¿,8AU—ä—%ÌÔl<Ý_9»ó>Dz—M̃;7Ê,îÏ!õaá«ê03i¸&"€a= q_·³…R xïa`ïýàÍ_ë|~¶ÎvMüõ,|ý—NIEND®B`‚awstats-7.4/wwwroot/icon/mime/readme.txt0000640000175000017500000000037012410217071016262 0ustar skskMany of the icons in this directory were created by Mark James and are licensed under the Creative Commons Attribution 2.5 License Find more of the Silk 1.3 series at: http://famfamfam.com/lab/icons/silk/ http://creativecommons.org/licenses/by/2.5/awstats-7.4/wwwroot/icon/mime/pdf.png0000640000175000017500000000111712410217071015543 0ustar sksk‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<áIDAT8Ë“ËKQ‡ÕeV‹Jÿ®qåÒ•`¡¸´¸QªX>b%‚ëBB –*t!îºÐ•B»iU| Q”d&“d’Ì+3“D½çê ièÀ÷νçãœs9Uªöµ0ÚOÐÆ¨qã í–e¥s¹Ü]>ŸG9Ø9|>ßçBI¡ “‚uE²ô Úî ÀÂö©T ’$q‰(Šðûý®Ä ®&]05ŠwÆñLÓ„¦iH§ÓˆÅb\Éd ë:Àƒ¤X`Û6’ž¨ë߸€TUE</)‰÷¤XÀÊ@Ò;mk¯©n§”D"Á3¡²€ˆ}@Â3GèH(ê‡,Ë•Öß+ïß!::óüô? •C=!QE8ýò×/0¯/a’« ¿œÍfyHB”Ø’ˆP/¬H™àÂãÃv½Aèmn‡™€¼¹Á³)+/Ì ²8‡ÔöÄ¿¯Bù¹ýìÂò"nƆž÷@Z[)üj~Uh¨õ^ö÷ÁNÊî3Qí¥O˜R6ë­]ÁáëúnÆò^SÝ‘ºÿ»ä­I1®àOcí cÇ÷ò…—ý¼¯4e¸sKxìCë²AÏ fw5>½‚V’>è–Ê&Õ7¬6 # ΰÔ]øÊ)l)Í„|Ÿ=Ï WŠô0MðIEND®B`‚awstats-7.4/wwwroot/icon/cpu/digital.png0000640000175000017500000000040612410217071016247 0ustar sksk‰PNG  IHDRíf0âtIMEÐ ''™. pHYs  ÒÝ~ügAMA± üa0PLTEœ1œBœ9΄œœ9­)R¥!N¥B·Rsâ³ÂÊwñÙÞÓ”ªµ=gÆkŒg¹BñtRNS@æØfLIDATxÚc`À€Ap¦¢øsAqáe†BµF% ¿Î¾9²kî†åkw»ì¶Z° Èß»k ƒXyçʦ6  >W°>¨~4ÚñŒWº¤IEND®B`‚awstats-7.4/wwwroot/icon/cpu/intel.png0000640000175000017500000000045612410217071015752 0ustar sksk‰PNG  IHDRíf0âtIMEÐ ''™. pHYs  ÒÝ~ügAMA± üa0PLTEœ±ÿkŒÿ!JÿDmÿ{šÿ)Vÿe†ÿRwÿÿÿÿ9cÿ¹Éÿ^ÿÚâÿFÿ1ÿm®çtRNS@æØftIDATxÚc```àUR’ êïßýQ/g 000eÌž´)YM2ØeçÄG á1QËwÎgXYåÒ´Ó{ ÃÉCг “÷0œ” ”òZ&Áph¦Ë¯³‚ {fº·Üœ½€½Sræ¤( Á®Jn ó·C"Íí.›IEND®B`‚awstats-7.4/wwwroot/icon/cpu/motorola.png0000640000175000017500000000045012410217071016465 0ustar sksk‰PNG  IHDRíf0âtIMEÐ ''™. pHYs  ÒÝ~ügAMA± üa0PLTE^R(uou¨ ÂÊÒÛ¸»Ì^T7A…NW k“¼ VîðõkÇQ ñ{IDATxÚpÿ°FÌF0{{<’x)4Ѓˬ–sG–E‡Î‡3ÉîŸ^§%âzî9îÇv[ îÃî[[Þ"TŸR|Rœp£<Ö:Êw¼”¶§‡pI‰bp·, –¢")jw4Vc'ˆÓ8*q)QMuIEND®B`‚awstats-7.4/wwwroot/icon/cpu/hp.png0000640000175000017500000000052212410217071015240 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ ''™. pHYs  ÒÝ~ügAMA± üa0PLTEJ9¥1!½B1­œ”Ösk½”„ÖZJ­½µçÿ÷ÿïïÿÎÆïcZµ„{ÆÖÖ÷çÞ÷­¥Þ鳚tRNS@æØfrIDATxÚcTRdøV³IHûþ~1?QAì†kGÇAù>•Ÿ_? 2ðõgïOÙÅȰsö±Ó'72d.3+¨Ldàµ>mà6—‘AxÕrïãSVt±wÍIoæœ4GPÉ$8 d.Ä=º#Yz€¹IEND®B`‚awstats-7.4/wwwroot/icon/clock/0000750000175000017500000000000012410217071014427 5ustar skskawstats-7.4/wwwroot/icon/clock/hr2.png0000640000175000017500000000050012410217071015624 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '<}ÿ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿççÞ{{s!!!11œœ”­­­BBBkZÆ­ÿÞ½œsk„„{k …ÀtRNS@æØf`IDATxÚc``Tv‰```HwqqyÀÀÀ¤œÏ0ˆiß3T€ôš3×L€ô™«ž @Êk«‹3˜vqq‹»¸x‚Õ¹¸¸õ¹¸€Íqqi``HR@óö10Wv‹@è^KIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr12.png0000640000175000017500000000050012410217071015705 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '<}ÿ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿ{{s!!!ççç­­­”””BBBœŒscÖ½çÆkZÿÞçÖ{|’ÓþtRNS@æØf`IDATxÚc``øsD1€!óÝ76ãs[\\ ˜]îiS† íÈÐââ¤T\\¦¸¸¸€hÝâN@u àÔ¦ l`º€!HÍe`2Ú I~וo•IEND®B`‚awstats-7.4/wwwroot/icon/clock/hr11.png0000640000175000017500000000047612410217071015720 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '<}ÿ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿ{{s11!!!ççÞ­­­œœ”BBBkZÆ­½œÿÞsk„„{déUBtRNS@æØf^IDATxÚc``ýdìÀÀÀÀgll\ÁÀÀz×ÈH`à¾{H›2ôܽ¤ &ëÜÒ& ÎÆÚ‹ †bcc0=ÙØ,Þ ¦ ØÁ´)˜N``HR@ó„@öQ‘u¾ÇIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr10.png0000640000175000017500000000046212410217071015712 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '<}ÿ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿ{{s)))çÞÖ­­­”””JB!cZscœŒÎ½1ÿÞµœ„„{x¥QtRNS@æØfRIDATxÚc``ød¬èÀÀÀfllœÊÀÀj  `Ú„Á·D2œ½— ¤ÎÞ½b0Ìœµ{2ˆKÅ‹!êØ ú`æ€ÍMšÏ ²§¶Š›;"âIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr1.png0000640000175000017500000000047612410217071015637 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '¢qè\ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿççç{{s!!!­­­”””BBBœŒÖ½scçÆÿÞkZçÖ{ó»­tRNS@æØf^IDATxÚc``Tö9Ï).>w§10°»¸xÝ M`Ò÷\T€ôQw ½ÅŃÁÅÅÅÓÅÅD»‚h 8x€Ô;H€Ì‚¹..a@ó•]!ÖSœ ÆIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr9.png0000640000175000017500000000046012410217071015640 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '<}ÿ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿ„„{))){{sçÞÖ­­­JB!ÿÞν1µœsccZœŒ”””AõtRNS@æØfPIDATxÚc``p2V ```H766®g``3v0mÊðL›04ƒi#†»wÞ]2VΜS ¦gƒÅ#›!ê8 ú`æ€Í-šÏ ².J˜j”IEND®B`‚awstats-7.4/wwwroot/icon/clock/hr8.png0000640000175000017500000000047012410217071015640 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '¢qè\ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿççÞ„„{11!!!{{sskœœ”ÿÞ­­­Æ­½œkZBBB§˜ÆtRNS@æØfXIDATxÚc``Hv ```ØáâââÉÀÀí8À´#Ã0íÆðL»2´¸¸<2B\lÀôÛU`ñ¹«ÖÕñ¬ºÖǸ*l;êšÏ¨ ²eY±/H'xIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr7.png0000640000175000017500000000047412410217071015643 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '¢qè\ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿçÖ{çÆ!!!{{sççç­­­œŒÿÞÖ½”””kZBBBsc½ÑðtRNS@æØf\IDATxÚc``YìšÀÀÀPelllÎÀÀn ¸Àô2†Ã`Ú”á1˜6ap66^ d€èfýØØ~3Hü°ñ¢Í u\Æ77ƒô±¯ÒÜ 2‡¡b¦2È\!e =ÊÊ›w‘¸£IEND®B`‚awstats-7.4/wwwroot/icon/clock/hr4.png0000640000175000017500000000045612410217071015640 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '¢qè\ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿçÞÖ{{s)))„„{­­­JB!ÿÞµœÎ½1sccZœŒ”””µg®ÑtRNS@æØfNIDATxÚc``Tv1b‚ï...e l. À ¦ TÀ´?ƒ ˜ö`¾ïÎÞÑî'g΋»¯œ Qç1ª¯nC:Ä\=¦ óI>Ò9üWIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr5.png0000640000175000017500000000046712410217071015643 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '¢qè\ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿççÞ{{s!!!11„„{œœ”sk­­­ÿÞ½œÆ­kZBBBÜä´=tRNS@æØfWIDATxÚc``Tv b‚—..XÀ ¦TÀ´;ƒ ˜ög~..`úª‹3X|÷Q°º×»ƒõùì¾6Çy·C1h>О0¿"Ê>•pIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr6.png0000640000175000017500000000047212410217071015640 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '¢qè\ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿççç{{s!!!çÆçÖ{­­­ÿÞœŒ”””Ö½kZscBBB©w~jtRNS@æØfZIDATxÚc``Tö1b‚—ã \. PÀ ¦0¨€i/0íÏ$|\\œA´'ˆŠ{?ŠÕyÇÕõy÷õÍñn=S2×µc:Ð|Fe×0s\ixdIEND®B`‚awstats-7.4/wwwroot/icon/clock/hr3.png0000640000175000017500000000045612410217071015637 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ '<}ÿ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿçÞÖ{{s)))”””­­­JB!cZœŒscÿÞν1µœ„„{I®rtRNS@æØfNIDATxÚc``Tv±g‚2—tv(`Ó * Êã ƒ r{s–Dí9¦=Wíœ *€¨sq…êK€›Ã1düÅû•6—IEND®B`‚awstats-7.4/wwwroot/icon/browser/0000750000175000017500000000000012551203300015013 5ustar skskawstats-7.4/wwwroot/icon/browser/hotjava.png0000640000175000017500000000142712410217071017166 0ustar sksk‰PNG  IHDRH-ÑbKGDÿÿÿ ½§“ pHYs  šœtIMEÕ/ Û?³Š¤IDATxÚ=Iog@ß÷ÍŒÇãïÎ$n%40Khqiª $„T©£§öHOÐcÕâÆ›ÛÁš¡dqÂÄÆŽÓØñþõ€è;>é]žB i+€¦¦VüRâØÎÁ'/… T*Ðjµâ±mÖÊe:b—“Nü´µÿBÁºôQü¸ÆøäUîŒ]Ÿãψוÿì¹c«?>—½#x ¡ 9ºÆÓñ{üþç/ÌÎMþ_j–³\Û¹m„ž Û øüX†EGÔæŸ7iæÒ9"aÉ{wåõ›g–ÜùßB¡²­š®ˆ6t"ôlˆòúmšb©@b¨Bi 7·JW4ÎéFJ‰R ¹~‡ë扅øm¿Ï(JkEº»úzbT*uî>˜`pë>öìQ †!™ÎŒ“ÎÎ`™’z³Db ›L¶Âèý˜ºF `!„ ŸoÐO~ºlyúð½\»yŸQcÇP”owoäзÆ&øãâ(…•*ѰÃüÂ3Œ&µ#ÚàÐ×g¼†Ží 0—Í#Zý›#Ä»;1M‡ÔßO˜ËLbš1Êë5jõÓ³cKrà‹Ar…@#51Í­‡iÔ4ÖëM’û8uü0ryÜå%MA©œÑB E:£ÿ–]ÚHîùŠzµAj"K¥Zex×0]Ajžwî3r] õ«Ì.§0ônP nÙË÷ûR®6yü,Åìâ{Þç‘FÇ×E,æãÒ¥ …B×½™Å—x­~Ž}w’•² Ý4Ñ|žž>}MÓ4Ðï÷­µh·Û“É$"BDÕ ZŒ™‰hͱ~ˆcæ_¢°®{ìÿÑ/n»›t(•àIEND®B`‚awstats-7.4/wwwroot/icon/browser/aweb.png0000640000175000017500000000113712410217071016446 0ustar sksk‰PNG  IHDR*º†gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ñIDATxÚb\¶l`fffdffúúUôÖ=ýµ8n<Ø;µõ%@1Á?$äÞ¿wïÄÅ‹¢·ïZÔ×q^ºÆðï§ö¢Õ lÄÄ€ ¶mÜx~߾ǦÆOÝþþ“¼_äæ]€bASúýçÏC'O²³³Ç}þt5"@òð±;·#ý?rrŠRNŽ-»w«ªª^½råÃ³ç¬ ëMÿÃÉùÿÿ–_¿áFFƯ߾ýúõËÞÁȽzí3ó?¦ß¿™ÿüŠB)++ëýû÷…ùø xøù9Âüÿ?и€B(ýñë×Ý´••å%%Uääî?}úèÙ3ff¸€bAØþîݱãǸ¹/]¹" $ôåòe ¤¥¤þ€m€‚š Œ… .xØÛ ÉÊŠ©¨éë?½xñïï_¸©R ö¯Ÿ?zÿÞÌÊJKAAS^ÞÒÆ†‡—÷ÈéÓ¿‘”$&ïÝ»§¤¬ÌÆÎþë÷o baaqµ±¹wÿþÛ§OYaÑ@ ¥ÿüysÿ>·€#Ì¿ŒLLÒJJ@WmÚ½ûÍÛ·q€bÆûffckkvž¿à4 ZY[ËÉËÿü@Áß¿‡îɪ«ˆ´¤IEND®B`‚awstats-7.4/wwwroot/icon/browser/ibrowse.png0000640000175000017500000000041512410217071017200 0ustar sksk‰PNG  IHDRíf0âtIMEÒ;á\í pHYs ð ðB¬4˜gAMA± üa0PLTEs­{­k¥w±s¥1f”!Œ½9•À©7PÞiu–ÇàïÄÉëõûÿïïÿ÷÷ÿÿÿ¬'˜§`IDATxÚc`žÿÿ¤¸„®_ÀsDWtÌÑ û4ûr†]ó‹¡cæ<†ô_,·{¸¾³vÿÒ6‡Y{Îj?eÚ»ó>¿Œ©s.D?ÈÜ4 Èûÿ2(ÅN4JëIEND®B`‚awstats-7.4/wwwroot/icon/browser/webcopier.png0000640000175000017500000000043112410217071017503 0ustar sksk‰PNG  IHDRíf0âtIMEÓ-r^\ pHYs ð ðB¬4˜gAMA± üa0PLTE„ÿ„„„ÿÿÿ„„„ÖÖÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿglKlIDATxÚË1 ƒ@„áiÓù® ‚µî’ì –öBÈ Ö²Ù-£`pnëÆi>¦øA¦8Áɹ pu]ç<öf†ßË“Ìø<Ã&’ñ^ÃÞ¶Iã­W­ÕR²íßÑ çý¿RÊR%QwÔM$³GŒ IEND®B`‚awstats-7.4/wwwroot/icon/browser/netpositive.png0000640000175000017500000000056412410217071020104 0ustar sksk‰PNG  IHDR(–ÝãtIMEÒ60~É…u pHYs  ÒÝ~ügAMA± üa]PLTEÿÿÿÿ—g`/È/—ÿÿÿÿÈ—/ÏggP`Ï—` gÿ—/ÿÿ‡ÿÿÿÿÈ€ÿ0//ÈÏÈߨÿØ "1ßtRNS@æØfIDATxÚ-ÎYƒ Ði‘E.hÌý™Á¤ÿ^uÍB$ ‰@ÿ”‚O­ÍýĨõ¬hî1óußxŸ[)¥Ïå«]BHfâCnÛ¹çÞR®ë¶ó¡ƒ§°äŒXj4Æ8&v@ŒvPš‚ÐZÄ j–Õ³í´ÃË/rÒL“T~ìo˜Þ@9§Ÿ1Ô¨Ññ‰‡sÄ¤ÆæIEND®B`‚awstats-7.4/wwwroot/icon/browser/icecat.png0000640000175000017500000000064512410217071016763 0ustar skskÿØÿàJFIFÿÛC     "" $(4,$&1'-=-157:::#+?D?8C49:7ÿÛC 7%%77777777777777777777777777777777777777777777777777ÿÀ"ÿÄÿÄ !1ÿÄÿıÿÚ ?Ðíù‰¹=ʲ ÈXqÖ]RÈ5VE§ðŠãNiY·¤Æ“”•CHCÌ<¥¡@ R»êOÓÉ6Ý-åΗ/ÄÔ§PòÛîP¦ž» €~€,) êî`œÉN•!2%ä qÀ*È*$Õ,¨ú~I@œ‚í3ÿÙawstats-7.4/wwwroot/icon/browser/lotusnotes.png0000640000175000017500000000053012410217071017743 0ustar sksk‰PNG  IHDRšattIMEÓ /,Í@i pHYs ð ðB¬4˜gAMA± üa0PLTE”k˜oïo÷ ÿ‰ÿ¤ ûµÿµÅ}+ûž-ÿÀÿ»*½ sÿ©JƵŒÿÿÿÄyçJtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]IDATxÚ„{ÿñÏ'Åxøßðð¶`¤0êøVyà$b`ûYvÿÏðévXð†u[ÀdRDuR*u›ðñÚŽðÿáªØÿñÕ&Bb= “63c9° ¥%Bb: È¥%Bb:Œþªº«¸ïÿÿÁÿÿ–Ü7¼xj§oIEND®B`‚awstats-7.4/wwwroot/icon/browser/feedreader.png0000640000175000017500000000105012410217071017610 0ustar sksk‰PNG  IHDR*º†tIMEÕ  óeòiÜIDATxœ]RÏoaùvYº1MÙ n"JR¼5¡ñª­ú¨õß3ñG<¨wcÓjIhZ‹a0¡AJZ*»ß²îO{p.oò’É{oò€ˆ˜™ˆ’$aff–Òü諈ˆOøP€ï{ß»"fæ@úŵr¡P"BDT }¿Ýq£ùï|¡hÛ6H)]§²TZ[-™‰ÈuZçë•Û¹Ü (i!Ìç3×q†ÃÁÖöCˆýþi’°3"""ÀhtÙÛÛëîî÷ûüöýýöñúýû+ÔÿþÚÖå½¼ð%**)ööþüýþìèøïïüÈÃù&( +ÔÿÿÿúÆÆâÅÈýãäôÝÙòüýýüýÿ   )/€°¾l_ ¸t6 nÖ5ñ›.’ ÞÉç›èG±®„¶$ëoV>æ¿eqÀVçŸÛ÷êû¤À&_¹EcäIEND®B`‚awstats-7.4/wwwroot/icon/browser/ericsson.png0000640000175000017500000000203112410217071017347 0ustar sksk‰PNG  IHDR(–ÝãPLTEJ¦LdftŒ¦œ¤Ú¤z4ÔÖÔD‚dÔîälŽl´º¼,fD”’œšDb„ÂŒÔæäVìîìL®ddš„zDôúüL†\„†Œ´Î´´ž´’\¤¦¬ ŽDœžœìÚäœÊœäâäV,üöü\Ê|R‚<ÜÞÜn4^,ôöôLŽdÌÎÔœº¬$¶tdz||ŠŒœ–œ ¢Tlªt„’”$¢däêìN~4ÔÚÜ4’LtŠ|¼ÂÄ žLb<”¾¤Z$ôòô\²„üúü¬®´¤¢¬¬Ò¬\’|ÌÒÔŒŽœª\djt„®œ¬Þ¬ÔÖÜ<ŠdÜîÔ¼¾ÄLrl”–¤šLb,ÜæÜV$ìîôTª„Œ¢œ,ŠL\‚t´ÊÄ$–d¬¦´ŽLœ¢¤¤Ò¤äæä|ÊœR$‚DÜÞäv4 ^,ôöüT–tÔÊÔ¬²´4¶l|z„œ–¤,ždìêìN$~XSYDq9ãQµ;®lM·VzqM>3yRB BÛ·ÿžû!˜19Œqă‘˜ÿ¼tvj"`äœSÊ$@à}y÷vv±µÐÐßC!åæ@îÎ…4Lò —ø(ðLôºAÑßIEND®B`‚awstats-7.4/wwwroot/icon/browser/seamonkey.png0000640000175000017500000000065512410217071017527 0ustar skskÿØÿàJFIFÿÛC     "" $(4,$&1'-=-157:::#+?D?8C49:7ÿÛC 7%%77777777777777777777777777777777777777777777777777ÿÀ"ÿÄÿÄ%!1a"2QqÿÄÿÄ!2AqðÿÚ ?‹—p\·A,]?½Ó-£ ^~Äçó­0¸·6«öÐBe¹¦;o!Íß5²2–d|O‘£nzìÊ‹êôÔ!Ç~Ùß”g'&13ïÖ—´m3\µq¶ Õô!Šãœÿ?^Ψ¤e8€Htë$û”ayzÿÙawstats-7.4/wwwroot/icon/browser/rssbandit.png0000640000175000017500000000120212410217071017512 0ustar sksk‰PNG  IHDR*º†tIMEÕ  5;cfþ|6IDATxœ-ÂMHQð÷þóÆsw53]Kݵò‹Ú¤Syð"”h_x‹N%Q‡.Qt-³èƒÈC‡B²@A‰!Ló‹XM×DÜfwÆy3óÞÿߥ?FDZ+""RþÖeŸ½ºnIøK·vçžúö !jDäJ…†!ÜüÎê—;ñŠåÔ©xg÷·c©øËF/cûvĨ¼k¸N¨¹”Ò¶íóÝçf¦g+«KŽ$‹IãÄx‡“eÙŒ- aïw´ùYIÝEˆD"ýý§¾ÏÙMwbr'UgÉœÜÞ(wÑ©X‘Üx«•„¡#ƒƒo8¢æœ°Ã[KK9× ÷ür{ÚS{£`æÇ˜ÎqÎc–ј¹¶8ý¤·güÝk+b…ró3tõí»×DÄÿ¿ÜU•¬± h>)kk]Ž®Áöf~~Ùéh¯ŒÇøÂª{éìÁ·S† ާ‹“©¤•½¼DÓ"ÝþðLGß·y­_^}ƒ1FDWËLÀBYžÐ2 ýñFñid¬.xAÎ|`‹íÉÜßæ¡û¸AÛ+þúL¡¾¢1ÓªjãDäï.äg®DK!»@k³ž’¸&IJÃPӢϷê¯UŸîã*” "Þúpaî>ç^ßQ¨7¸WBª¾šjdšE‘i†“ýZX€`M`žˆBŠ—5Ý,mìe„Ä8'"Æb`2Æ ™!eÿ䢘i'ZÛ-ÊZ ãÀ9üÄfA è§ÿIEND®B`‚awstats-7.4/wwwroot/icon/browser/mozilla.png0000640000175000017500000000044112410217071017174 0ustar sksk‰PNG  IHDRíf0âtIMEÓ $£R¼ pHYs  ÒÝ~ügAMA± üa0PLTE%Gg† ¦  ÞðXRN{ml¦––ÊÁÁçÞâïææ÷÷÷ÿÿÿ4ä· tIDATxÚcøÿï̹wÿÿ3ü;%$¹úþ†×&ÉŒûþ3Ü`v 6ìþÏÐÁZbâ²aZX˜išƒ¤»[£{Ã1ã2C ' |¹s°…$ÂÖô„®•ûf7—ìš÷gršÆ{°¹.œÿôÿÿwÎi2=5Õ/ þZIEND®B`‚awstats-7.4/wwwroot/icon/browser/notavailable.png0000640000175000017500000000036112410217071020167 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ$Œ6i& pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿ/Ý {tRNS@æØfIDATxÚc` 0 ® I#wëóIEND®B`‚awstats-7.4/wwwroot/icon/browser/cyberdog.png0000640000175000017500000000126112410217071017324 0ustar sksk‰PNG  IHDR*º†gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<CIDATxÚbü÷ÿ#ã†ÿ ¨€‘!a ú÷ïߥK—þþýÃÈÈôùÕ]I~Ö/?þýfbãüõñÕÙC[ä”4Lì<ˆ¨çøñcÝÝÝ‚‚BW¯_«‰Ðeûÿæ;#¯¢Cœ’Ò‹'LîœüxjÕÝ7+ÔÿÊÊʲ³³ª©©ŸŸž¸±£ àïÿ  ùïïîïòúYi{Üàá+Ôÿ¹¹¹VVVâááØÃ®ý  úüøäØìüáãçüûØÞìøó+ÔÿÇÇÇ///ððñžŸ¢/öâ«ÆñþXB)Âï ¬¨¦- éìýq†•ˆñÿ¿ÿ@îÝ»ODTPàíé××~üËùüÉ#-3§Ÿ2ާŽìSfQ6vÖÐ5 &PH00™((i¾áP¸ó[‚ŸÕÌÆVÅ6ìÌñ“_~ÒóHªûûŸ €þƒÁß¿ÿ¾ÿýïßÿÞÎÖ“6ÿùñáɳçÚš6B¦––Þ/^<(@1A™‰‰‘ƒƒ…‘ñÿçïÿ~0 ¾xóí×/ M²µUû÷ç##H@1„E ñ÷Ç/_¿~ýõë×ÏŸß:dkëxõêU;€*ÿWøÿ?0¤ß¿ÿpïÞKKKiiñ·o_¾yó¨ €˜þ3üEÄ;ã666ssóóçÏmÓÖÖyüøÉ·oßEEÅ€²ÄL.h©€NcdD8 ÀrJ <nÿÞIEND®B`‚awstats-7.4/wwwroot/icon/browser/netscape_large.png0000640000175000017500000000067012410217071020505 0ustar sksk‰PNG  IHDR„ÖštIMEÐ & +ÕÄŒ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿŸ·½Ev†14 ÷ûû6QUÁØÛÔãäK—¨™o ^oV[>V‹Ïz/tRNS@æØfþIDATxÚc` ˜”@ÈÏûŸßƒÈ_@>ïÿÿþ½{÷HBøïÞ¿ƒ€÷ï!üG³Þ½û$9CïÝE0ÿíEN= 1éÞ»W`þ›WlMwϽšóæÝC ŸçÍK{î^šs÷Ì-ÿÎ[MmÝgn͹s¤ŸéÌ™S=;2öœê9{ÄÏñOOë>5ûô™ƒ@>÷™Ý»zv¯HÜ5{Ï™ þéÝ»ºwïJ“ž½g÷) ?HuïÞ½,söîÝ`y Õ­¤¤%!µ{÷. Ÿq‘záôÐÐÐ`ãr¥@~ºi°ÄDU p 5òY´kˆ ù@ >3Ÿ-üQϱ¡·cÆIEND®B`‚awstats-7.4/wwwroot/icon/browser/newsfire.png0000640000175000017500000000120612410217071017347 0ustar sksk‰PNG  IHDR*º†tIMEÕ  Ñ™L:IDATxœ=ÊÍOÓPð÷ýÜÚ Û¶H42—h†¬hpÝG=É‘ƒÙŽr0‘‹g¼’È…ƒ2æ<”ƒVùØ‚£®¥{kéÖ½õy0ñüûÁ8Ž)¥!Û¶[­–,Ë,ËFQD Ã0 ÃB¡ iZÇp<#„®¯¯»Ýn&“i4'' Ïó¢0ŸÏ ß÷‹ÅâÌÌ ¤”z^¯Óù-B­V;<<x~^½³==elÛfYöøøxooO’eǾB4){/ÁÛΔ²¦i6›MŽãã8¢(Öëu×uon{êÀ~/—^ôÝ(\¶Û]·±išcÆq˲~þø.¦C% ­j1—E‹)ª2Ptà?ÝÇ=˲&*•êöö»[׉&ÄWÙ~YóQE î0zp/>ð³ †º·Z[[M&“¢9%¹ëÏqÒÄ}0"g9`azøÁ»ŸS$¡ hvvÖ0Œ«Ë+QàS)õ}û!×Óªý}lÍ|vR.¯ÚårB0Ư×׿5›ËKº˜VÄð.õ{Œè$R£ Wo|-•JŸvwÁh4¢”žŸŸW*ÀÔ”ödáiñÙóÇ‹‹¹ì4 Z­^\\PJ¥”B) ‚`ssS×uUQR’”Q]×·¶¶‚ øw ¥@a0 ŽŽŽ:N.—[YYáyþ¿þ 'ùݰmlIEND®B`‚awstats-7.4/wwwroot/icon/browser/iceweasel.png0000640000175000017500000000064312410217071017472 0ustar skskÿØÿàJFIFÿÛC     "" $(4,$&1'-=-157:::#+?D?8C49:7ÿÛC 7%%77777777777777777777777777777777777777777777777777ÿÀ"ÿÄÿÄ#!1"QAÿÄÿÄ!2AqÿÚ ?cW݉•Xz$­ß¬¸ËŒØ¨«xôsß­]¢Þï\˜Ð_zžün qæÀä y8¶5¼§DصççÉ„™ê„–Ïš\·– ¬3Ø?§H~1‡ tµÖáG1ÑQÊZ+äR”’Ͼñ«¯Š˜Ël{ÒŒ:ÿÙawstats-7.4/wwwroot/icon/browser/unknown.png0000640000175000017500000000033212410217071017223 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿUÂÓ~tRNS@æØf$IDATxÚc`€FA-„ .!h˜8˜Å•A¡Ñ¤á™%‹™¬ ½IEND®B`‚awstats-7.4/wwwroot/icon/browser/sharpreader.png0000640000175000017500000000121312410217071020023 0ustar sksk‰PNG  IHDR*º†tIMEÕ  //C¼Q?IDATxœ%ÊËKTQðï;çܹ3–£“è hVNd0f¨-TÂjÕ¢ˆ‚ È]Ò?.‚hW´(ÉE›Bˆˆ „ÚcáÔ`ƒ4D¯Ïqœœ—sgæÎ½ç|-ú­¨!‚TŠ3¦”ü] ÏÛ“þJ­³µéLg c\JÅ9C"%%qÎ&Œlÿàddnr[Xí£Õ)(lžl;ôðöŽ–f)%Z¶t ^Ìž½?żþr>a§7B§sës»F4µ©ö¨‘¡®öt¤Ê­¶ÉŒv¼#”Ng¨Êª*Ç2ãÓßÌØh1“<ì÷„_?fœáóÑØòJ&x´ÉQX*˜›±™ÝT2>ûc{á»dz¥×û³öâÍ{F'–ÀLüŽ|)™ù„±7~s)··F¸<¨¦}G"lÅã ”Ï[§i¼þPê«jë¹¾ºµ±AU´±TF€®ò.Qh êî=‚œìö2'é©®]ÂRŽƒekœ ":v°fügdÉÜÚß}9>óÕL,Yþ{÷änB d$Á*ij@"Îö\»çöä ¨\PeS0be“‘eîl޽zÊʶÓݺuå”iÌëNNØY,¥¹cºÐŽ)Ðέ-÷_¿ÔÓu)@)yó—# {tÝ… HÚV1…\ßÕóOÜaŒ# âðÛφß-ë–e¹ 6úz/ô^<÷ R •""âœÀôì|"™ò×Ö´†š@J…Œ±ùY9»Oo@IEND®B`‚awstats-7.4/wwwroot/icon/browser/webzip.png0000640000175000017500000000040112410217071017021 0ustar sksk‰PNG  IHDRíf0âtIMEÒRá§ pHYs  ÒÝ~ügAMA± üa0PLTE€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿO&ITIDATxÚcø pºH~ègø_ð¿£ÿC=CLJE*~0Ô”`r¨gxþàü‡ç@úä¡#@º£àÏ‘ þ»ðx€Ð2ñ?šù¥KÓ9 ²£IEND®B`‚awstats-7.4/wwwroot/icon/browser/chimera.png0000640000175000017500000000044012410217071017134 0ustar sksk‰PNG  IHDRíf0â0PLTE!!!-)--2>FŸyËLLPmr}U|¹…—µ¯¶Á»ÄÝÚÚâòñó%m¡ˆtRNS@æØfbKGDˆH pHYs ð ðB¬4˜tIMEÕ.?ˆTÜiIDATxÚc¸ÀPÞìÎÀËp¡x‡Uˆ.[¦{ßžÒ'8Þ½ÙÝÜÇpÛûÍ®™Ë÷1ÜÛ9{jèÚw «v†îÛ:»Á3lÝ«É ?ÒòN6iæ™y+€4ƒù'0èP ì@ Ò'Kv1IEND®B`‚awstats-7.4/wwwroot/icon/browser/phoenix.png0000640000175000017500000000100212410217071017171 0ustar sksk‰PNG  IHDRH-ÑbKGDùC» pHYs ð ðB¬4˜tIMEÕ$•Ÿ¯“IDATxÚ’?HaÆßå/^2H°Ú‡H9®ƒP2et®!S uè*¸›¡K8*(8YBÚ‚PŠArØ:(B›KÊ!’HÌçPrLƒÏôññþxŸç}_Á3•1T `¦ü,™1Äs lDH#@ é|ßµ'ƒC•¯ß„XÛŒr¶Hõ¬Ç å#Yì ud¦üh!…‹ÝÕëF<€[Š ”Éίƒ;æÞuxÿùnÊùæÿ-÷‚Ò±6dîÓ´t¬ Y>y)³!³!‡5O2 r}{ ·a¡W¹)¥q–7˜p¬*ž€Ch(·ayïJî„ËãÉb_3†*×6£c­wÛ6s+úÈŸš)?Zpul·qR‡ ^2cÿ,}ÝA éçÃÌÌ.ÒmÛÜþlv̪4ânJijß®:žE€zåœr¾éåPýžá·tÛ6W?l ¦^õ¨WΨ}Qøó»ÉÇS92HQH,Hm¹ƒSêó·æ2hùPô{ï¼Æe|nU Ñ ²¹þIEND®B`‚awstats-7.4/wwwroot/icon/browser/newsgator.png0000640000175000017500000000104612410217071017540 0ustar sksk‰PNG  IHDR*º†tIMEÕ  $)ì$ÚIDATxœ=‘KKUa…×z¿½ŠYa ´eƒRÐ&q…åhbD úAPjÐÜþ@ t!§Ah8ÊAʉ MNÇ.lÄK‰·sö÷®[ƒÅ3z`±( w'Y­V+•JOOÏòòr¹\βL’™0DÉZ­–eYš¦yž“üï: Éå„þln¾Ÿþ@²TJ‡/^himHHÈ]±»$—$Õë<Ï›Üly””GÑ`sQkÕ×BßMZ)î­ké¥uœ@çttÀBòÅçœçÆ¿ÐÔh±6¯×#ae–‡J…Á1ªØwKâôíðé)J`Bò4±FÁ”¨Ë#¼ü( QˆžØÂ8wj€S.ø‘> =°Þ«ôÈæ”dÁw~cî1¾½BcmÇcß­0xß’6zC–üÿɧ†p¸ÐIEND®B`‚awstats-7.4/wwwroot/icon/browser/avant.png0000640000175000017500000000140212410217071016634 0ustar sksk‰PNG  IHDR*º†gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<”IDATxÚbüÿÿÿ³ßO{ÍÅÎÀÄÈÈÄÄøÿ?Ãß @ð÷ï¿_¿ÿÿþËhm.*)Î @Œ@uû½dcøÿ÷ïŸßþþÿ÷¬‘ñ?#3 #Óç?ÌNb+Ôÿ«´ââÔîûöûúþþõõù÷öøýýý  þÿÿÿþý îóû+ÔÿØàïÝËçùòñø;>ýýÿ¿ºàáÞô ùùùþôõ ˆ……‰…‰•‰á?ó§/¿M­e½å?}þ¡ª&¦©'ÞÛtäý›œÜl,,ÌŒŒ ÄôèFF†/ß~ªk $fjŸ=ûrRÏ•ãGžzø©Å¥ëÿ:ëï?&f&  & Ûÿ1020±z¨²±³¼}ó/!M—“aÿÞ;1)FÁ±º¿~ýýóç/У´ŸåÏ_FN61.YY~ská£GŸ:þZD”]^‘?,^çÆ•×ïÿcdd+Ôÿ þ  û òóù¥¥ßãáù ïïüŽ†Ê íìú ˆ…•K„‰í‡€Ðnîÿoß~eçáøÃÁÉÂÉÆþêáן¾²° 3³ñ±°òÐû<|ŠLl–,õøÑ¿ÏßE¹ùY¹xxx99˜X?þæütê_nN.>€bùÇÃÄ&ÃóëÇþcŸÿýcæåegggaçú•…‰‘ƒ•›‰áß/î|¿ˆñÚ³ÿSvþÿòŒ‘í+Ãßß ¿~1üû  Qï¿ýÿÎÅðG÷W~$3@Çÿ›oÿ­¼þ‹‹‰ñÇo†?þýeøûŸy쿘ÿÿÿù‡%ÜšIWŠ Àc~ fÉÙˆ'IEND®B`‚awstats-7.4/wwwroot/icon/browser/sagem.png0000640000175000017500000000113012410217071016615 0ustar sksk‰PNG  IHDR*º†tIMEÕ  fXo IDATxœ%ÈOHTQ†ñ÷=÷Ü;:†J(‘ ¡¡µHÈ@Üm*QEdD‹‚¢¥´Š ‚3Ú»0«EФ´Â($'¥Ñ¢ §T†´ùÓÜ{Ï÷µp÷üŠ* P€U¶H$T·š*¢Qˆˆ5¤1†T’tª[Ï·@®®¬åÃR\‘êwTø¾$ŒÕz`‹Ç˜†³?úG?/grUåL$‚¸ˆ¥\c]ÍÕîý›kc'Œ£µ‚}?޾žïénoi¬Êç5 ʤ$“Ajn}ðeúì‘æ¾‹¬g«GÆfŒÌM žK=Z¨©NTú‰¿±ä²ùÃí;Ÿßïº|ûUC]%â°°¾Yèè}V~tðÚÀäúfQ5RUÃÕ?—îŒïëz3ÿ}&µdÀ`!ýõÖ…Ö½õe™Lî[&[,DEh¶è–~²ùÜêZØ÷ä]Kcõ¬™_-õMÜ8>þa±÷Þ[ÏhB©óŽu6œîÚsîæÄûOËŒÃØóqwdæáPêÌ¡Ým»J†âÂ!Çg3/&Ó×Ï·õžhaìUŒgW~=þ2½¸¢t¾‘8¿£©æÊÉÖ¦†Ú’s$kðù½Q,Eq²ÌlßVn`‰"¥%U€ªŠFp–†Æ#@@çèy4T@)"$PuT‹S Ϩ!E Pÿ}B'ûÆÞŽ<IEND®B`‚awstats-7.4/wwwroot/icon/browser/sharp.png0000640000175000017500000000045312410217071016645 0ustar sksk‰PNG  IHDR*º†tIMEÕ  Z‹ïßIDATxœµ‘1KÃ`†ßûš¶Ô|tL«(…‚:ˆJéèOu/n*nÁQ§®)8h±iâwßCýÉà-ÇÁ󼤪¨7¦&×  ª"Ñ~AÆ@ Dõ]Ï~3ä²hEQïlÀYÞ9Š·É‹½™ì²¡”¸lGqà[ÝÞ¹4§ýé˜WYë$.ž’ìþÚ¯3T?ü±>˜]˜Ã1sñ¶pËw²6_ºÏ/¿ùîNóç×îðXòBÛ«óJ¤‰+TUP0û$D@ 0@ƒ¯ÿÓVôNKngf¾ÜTIEND®B`‚awstats-7.4/wwwroot/icon/browser/adobe.png0000640000175000017500000000052412410217071016601 0ustar sksk‰PNG  IHDRíf0â.tEXtCreation Timedim. 31 mars 2002 06:28:20 +0100ñ˜ñtIMEÓ3ÂtË pHYs\\hÄ6‰gAMA± üa0PLTEÖÞÖØÝ+*äWXì{xí—’ó±µó»¹üáÓûäæÿçïÿóóÿ÷ÿÿÿÿÕÒ”èmIDATxÚcHKËúÿ<-ÁîÿW É ÿÿˆfZÿÿŸ#ƒ Ëÿÿÿ€|Žÿ7ÿ/``°ý_ V˜ÿÏyÿ²Ÿ@¦ëÿ¯Œ¶@…ÿ¿…püß4íÿw Cþÿÿöÿdšò×ùÿh5‹m£Ý£IEND®B`‚awstats-7.4/wwwroot/icon/browser/fpexpress.png0000640000175000017500000000064412410217071017551 0ustar sksk‰PNG  IHDR´ЭgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<6IDATxÚbúO: l€“‘Îþþÿ?š,@1aÕ^2 ¨‚õC@±ˆ ÊÂ9¯ß?† Qç¬îäáá"Û@ ·½þðDT@Èêÿòá ’ñÓ€‚˜Úˆè' ˆ  ˜_2mïö½¯CÄ € Vm@ÕpmD €à!T Ñ$áFBTC4ÀõZ@¼÷Ü@ÏlݾˆÃ €ÿ#P80€hq ôøY¹|!®X†@èé`ÑÞ›m@WÁÕ¡Å@¡èG 06÷íØ‡UºÛ€Ò+{²€¶Ù@m˜€ €°¤Q¸m@ÍÀÃÔ@ ¸<jÌ"Kö¼· Khöæ™#zäÝØ’IEND®B`‚awstats-7.4/wwwroot/icon/browser/real.png0000640000175000017500000000257612410217071016463 0ustar sksk‰PNG  IHDRñl¸gAMA±Ž|ûQ“ cHRMz%€ƒùÿ€èu0ê`:—o—©™ÔPLTEÿÿÿÿÿÌÿÿ™ÿÿfÿÿ3ÿÿÿÌÿÿÌÌÿÌ™ÿÌfÿÌ3ÿÌÿ™ÿÿ™Ìÿ™™ÿ™fÿ™3ÿ™ÿfÿÿfÌÿf™ÿffÿf3ÿfÿ3ÿÿ3Ìÿ3™ÿ3fÿ33ÿ3ÿÿÿÌÿ™ÿfÿ3ÿÌÿÿÌÿÌÌÿ™ÌÿfÌÿ3ÌÿÌÌÿÌÌÌÌÌ™ÌÌfÌÌ3ÌÌÌ™ÿÌ™ÌÌ™™Ì™fÌ™3Ì™ÌfÿÌfÌÌf™ÌffÌf3ÌfÌ3ÿÌ3ÌÌ3™Ì3fÌ33Ì3ÌÿÌÌÌ™ÌfÌ3Ì™ÿÿ™ÿÌ™ÿ™™ÿf™ÿ3™ÿ™Ìÿ™Ì̙̙™Ìf™Ì3™Ì™™ÿ™™Ì™™™™™f™™3™™™fÿ™fÌ™f™™ff™f3™f™3ÿ™3Ì™3™™3f™33™3™ÿ™Ì™™™f™3™fÿÿfÿÌfÿ™fÿffÿ3fÿfÌÿfÌÌfÌ™fÌffÌ3fÌf™ÿf™Ìf™™f™ff™3f™ffÿffÌff™fffff3fff3ÿf3Ìf3™f3ff33f3fÿfÌf™fff3f3ÿÿ3ÿÌ3ÿ™3ÿf3ÿ33ÿ3Ìÿ3ÌÌ3Ì™3Ìf3Ì33Ì3™ÿ3™Ì3™™3™f3™33™3fÿ3fÌ3f™3ff3f33f33ÿ33Ì33™33f333333ÿ3Ì3™3f333ÿÿÿÌÿ™ÿfÿ3ÿÌÿÌÌÌ™ÌfÌ3Ì™ÿ™Ì™™™f™3™fÿfÌf™fff3f3ÿ3Ì3™3f333ÿÌ™f3­œ­)R{{­RZ­)9­­½ÿÖÞÿ{œÿ)Z­)9RRœÿR{­{½ÿ¥Î÷{œ­Rœ­)ZRÆÞÆRZR­½­¥¥¥„„„ÿÿÿˆñ\ïtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç;\"IDATxœb|Ço¹ÿ200s€˜ÄÄ?~p3üaþóåÿ  €€ßÿÿ÷“•ç믷 ÄÂðñ?» HõÓÿ<Ÿyˆå;ÿNööþO?•î³ü  ¦ï üì¿ØØ¸¾Pà'ÃK†ï¿ÈQbøÃÀ@,ŒÿÙY˜îý`àePb¸÷ï/#@1q0üûóžO€UŠá5ë^€b|÷÷÷?æ,\Þs3üå`c æßß8Ùÿ¼fâføÇ´ €X8þ~åæbdøÇ r @€" ?Y \€b“Øa|€ÍJIGWßÛ[IEND®B`‚awstats-7.4/wwwroot/icon/browser/abilon.png0000640000175000017500000000105512410217071016773 0ustar sksk‰PNG  IHDR*º†tIMEÖ 8‹0áIDATxœUÁÛnÓ@Й±½vì\œô’¤)E¤RP…xä;ù~„gÞP¸U-MJ[âºn'vìÝá™s°i,œ_¯¿Î¡2¡1u#HlL“,‹I·|w²¯X³ €¿¹úðñS¾Ê¢Ý‘×îžMúE–:õF³mX¬fïßN„fß¾_þÆÏ&ÏO^¼¦Ú8žÞ<.†­á}áü:¿d@c€£^{ Áðp0£!RÛª ȸÕ"M+°o^Ÿ–…ŽÂ8ö<(©íkÍ@èkg³Xùƒ‰p¯jdfxLosRAä7@°5«mÇŒ€"¤«VW|׷Ɔ ÷Y¾¬[”R`6eÁì*"¼¸]ÿ¸[-o ëî ú$•Ëx.+°Æ  ÈÏyÎÌ®æ¦6¡*¶DªÑNSå­Nä1ˆD¥PD¬h¶–­¸ —Ív],­5ˆA€°ã™Ü%¥DŪZ)íè,©#·E­v&Žc¬Qˆx´¯Û\ö¿xmíUv•ÝMwà8z¨¯c˜˜Edo7>Zf7‹ljÐôþOrýùœΠ(Írž”åñÓøßGc ¢B°Óé—E’ €i¶§§¯F£øß?í‘ç˜pí†^IEND®B`‚awstats-7.4/wwwroot/icon/browser/android.png0000640000175000017500000000034612410217071017151 0ustar sksk‰PNG  IHDR(–ÝãtIMEÙ œ©¦ pHYs  ÒÝ~ügAMA± üa!PLTEÿÿÿ–À$—À$”¿˜À%ÿÿþíôÚ—Á$—À%—À"æðË4ƒ²ÈtRNS@æØf;IDATxÚ•Ì9À ÄPc²Áý чHy5ÒÀ«²xÔò•—Þ8ê4Œ#Ä.sýŸ°½UÎU·Ww*…Í<À"""”ü™5C"ñŠYO±”×2¯oÁõ§dü{Mz'p øéÁžðúK? IEND®B`‚awstats-7.4/wwwroot/icon/browser/flock.png0000640000175000017500000000064412410217071016630 0ustar skskÿØÿàJFIFÿÛC     "" $(4,$&1'-=-157:::#+?D?8C49:7ÿÛC 7%%77777777777777777777777777777777777777777777777777ÿÀ"ÿÄÿÄ&!#1qABRaÿÄÿÄ1qÑáÿÚ ?g[1Þ˜Þ–««zíÚîèGK§¦]‰#·#Æ,¯tÌO^:nq¨—*Šs?HäQï /–áuµ8e¸i iX¤‚ãäH7”rÓ–N+8zé HI¤ŠtAd¢Iþ<áÄÐÝ.æüh,3˜VÞëåÿÙawstats-7.4/wwwroot/icon/browser/lg.png0000640000175000017500000000103512410217071016127 0ustar sksk‰PNG  IHDR*º†tIMEÕ  ; Ÿ;JùÑIDATxœ=’ÍKTq…Ÿ÷Þ¹Š3Ž1î¢Á ¥Lì \¤S+Zf‘Ô¢(¶þ ÿ7%¸‹JkQ+A±À‰‹E(‹Ôp>îï=-ÆzVgõÀá“;f„@SS|ü¤ƒ::¾n##îD’”¦’´¼¬‹—|`ÀïÜö çÖæ¦$…€j5¹ûÊŠ þä±ß»ëgÏ(›U&£8¨»[»»JST«)ï¿ìîûà57 <Ÿ?²&‰@IŠ”$ÌÏS«R©ðù‹ÿ9ÐÀ£7iP¯cÆ‹)¶¶"$>¼çô)©V¹Qfu•lÎ3¢3YXȘßÐ’µ½=êu{ýŽ8V+нeÅÊçyóÖÖÖ2H´åùõ“\+f˜ÇV©àΫ—H”J´æÔv,’ƒCllª¯ 3ÜÕÙ©R Pôô°ñ͆#KSÊeö÷­X¤«‹HSffHÒ”R‰½ßtœTo/ªV%ùÜœçóáù³P.{{»@-->6¦‰  ¾¾®LRcUÍÎòtB½ç8^´L‚V¿²³Ãô´õ÷‚} MÉd´½Íä$KKÔªd³\½fããär —Ij´Q­FSÿ°ÿ©^'Iþ [×üb¶IEND®B`‚awstats-7.4/wwwroot/icon/browser/freshdownload.png0000640000175000017500000000115712410217071020371 0ustar sksk‰PNG  IHDR*º†tIMEÖ* Wµ#IDATxœÁKKTaàïýnçœ9“£3Õ4Z E#0²)ZADsÓ¢?ЦڴÜF? E-ZDжE`í¢Eˆ¡""JY*š–å4gæ\æ|··çm5GÑ‚ÍÿÑFË!‚àúLEV{uÀ¥•¹1»Àäüº]ÚW.dÈŒ%Âç’$ª‡Ù›c´¢ *©àŸ¿áüfÞWc¡# ;íB¹/Éi¥Óu¿¿L(cäË÷ìÓš {¥{£§½Ëƒl{ÿÉl¹©ç½SÍXSMÌò&É¥gˆ „€Rç¸`¨ÁÌ^®ïrº¸êÆäŽ$ÑÞ¯(¥Ô$ ËuœtZ‡ŠQ³Û t;1©E—Ùc—,oý&Œ€sQË™n÷úÙØÞ҆ĤÌú]e¢K}pkxÀ6’n/¤wë^­ì%Gw µHÇû˜:xñ~Oûpzä˜'ê™;ã'ŽŸ¼^ÉŒT+% cüRÌcÃ~ü«Ì¼ÜJ³´‡SA_È=Ÿû°€µÁ!¥ÝÙGµéL](ñi±¸“W¿jFª-¥¹÷lqv ë'›1qÒN:ˆÓ4ôÅÊÏÖÓ7¢E‹Iܘ¨¶-Ì.—ÎÆF_æ÷oó€QȵBtž _Ô»¸Û+ûʵۧª…¡ZX?g¦®_M<ÐN#¢q4àšl#ò—V•Ô¥Boruz€;´Cøjl/ÝÑûÁIEND®B`‚awstats-7.4/wwwroot/icon/browser/winxbox.png0000640000175000017500000000122512410217071017224 0ustar sksk‰PNG  IHDR*º† pHYs  šœtIMEÖ-)ˆ0~i4IDAT(ÏÁÝKSaðïï÷œçœíœ³¹|-uŠ:_È -ñ )ƒèÆ‹®òŠPH¼$"Hˆn"ºˆþ‰BvU7VB"aiE!£’“œnÍé¶sÎÓç#ÛJÓéœb@#³'$Ø#“&À‚”” ÍmGDß¹ò ãÕ[2{ Éô¨@Ò…p4r{®)ºB“7z~Å’"þ£PU«ßzTVÑa¦RYS/éìnÝÜOûs—§ƒcS•OÆWÞ&ÀÂ&.]-[K¶<Û)™xn½Ùj±&éújèõvóùË¡ ‚­\Z_Éeã<4ˆŠÈV.¢b…Ôè¸5x,¼÷±sîÁ÷é‚£LÁÂUÊu™¿Åò]aëìqÐçTÖ»Ãu‡³‹‘B¦?úb1•q šð\(öà8ÂɆAÉÃm¯±-m?úf}#nxy‚C®pØU>OèJªÚ3²ød6CþWÏkÖß—æéÀÈÌÿ}¹Û5áÀ“€40œúš­»s¯!djÕå4=:¿žùT_s*  0Iºu¢7°ü»æK¢ñÊXu‘˜,Afq§¦+—RUO?4•ÔJÉ6ê#Æòçþ¥µ¶¾Ó¶ŸmMHhÌ$ bÝσ#%_~v<Ž6YA“æ:v7o_Kn$Hy.{D$\_Ž<Õ1ïÞo_XMââDKÀfƒ€ˆ@$Á ¦^T’Ó3½¤Dp/(@  @@lb‡µýÿ«0Ñ~<i¡IEND®B`‚awstats-7.4/wwwroot/icon/browser/w3c.png0000640000175000017500000000110412410217071016216 0ustar sksk‰PNG  IHDR*º†tIMEÕ  5:àü¡øIDATxœ}‘Oh’aÆß÷ýüüÃÐ6·i)_sÍ66Fd¬±KAÇíÝ;˜Á×Ñ1ÑÁŒZ s…™‘%«¶‘ŠfN—-¾÷}:Øa‡êwúñÀó\ʹ IŒ B$F´ £”ι$Ih¥ ”’ÿ"_Н÷›—b©o[U¥ÛX®ÔgBñÅè×7sZl7‚÷CŠ¢0ƨvEåâK®|ý^À£WÓÁ·•º:ys¹&ä©kWý~¿ÇsQ3:lï2^¯æ]NK`v…Rú4–ºqylÀÞž*VÝy>_L$ÞG^F€£-ÏÞ¥ãë›ùl9™*eK•^«éô•{ÐV«lŸ=GqŸpK@ óË«Õz³¿·+’Ì5Uá95¤—53â‡tqîk3šTUeN²%3[k¹òÔ…ãwž|PÌ{ “®‰‘¾‡±ü^»Ro4eYf •tšaGgÕÔgk·ZŒCJGôSž¢ÕÊ›…ª×ikµš θzÌF=€ó#ÎcýVï­çŽŽ¶ÅDö¶wôîÜÜöN#Î9€\éW±¼`-û@úûOïôRðÅgéLÆçó=^XøóÖnv?'„`Œµ\JI«@)%TpF‰$1œsJé_VÿÅoB Ó,]IEND®B`‚awstats-7.4/wwwroot/icon/browser/feeddemon.png0000640000175000017500000000124512410217071017456 0ustar sksk‰PNG  IHDR*º†tIMEÕ  !!:‡QYIDATxœ%ÒMHSqðÿ×›ÛsŽí=Ñæ'[™¦v3ðPBä!ÉJ Q ¤C‰·/¡EBu,£ ¢²eD‡,S<Ôa2Å5LIÓ9uÛ›ÛÜæÞÞ×ÿßÁëïüŒ1J©¡ëŒ±?++o^{UcŒiº“¤}gŒy<Ä ”"Œ£’ôíÌ9ÛÚª‰#99;rc( !Œ~ÿÐà`8AÔÐDÙÔîÛîKF4ýÉ»tïÅ»;=W*&¾:EñÃ裱–VWyùµþ~B)Ã„Ž½6µ>íˆ+?þIþʶCÑ/ÖÆã¥9½ÎÆ»0„„ã¸ï?}9ױޮ£4“š…»¥yaº¸VÈ8;n½x¡ÊíFÁ@ 0îOÖ»K8³“‘ɽ )5‘¼Y¢ËÊÉ÷Ÿ}SáXü×ô4æ«OpEm(Ç#Õlá ò-PS¦$#šƒÄn7!òòÁÌäTkOòF²;²“å¬4É””UVbCa*µZà®&'Ïwu®©FÙ¤ ­/§Åh6‘Uƒ›ËR²»¾ÐSö^Sõ¥šÚŠæSÔ0ÐÙ:çêFäw\ߊçT{¡ +9‡÷1™ãÁðæzËý‘RQdŒÁt"Ö>ütºJD¾@Kº ­Û{ºjÊËÞ¥P¯°}wàªn0Œ²ÚÅ‘ËÍʼn€“ÓÍŽ’¿2OxÑí°o,“¾›}”B!jšFY˜Ÿ»õüãšfÅùÕTËÞV•ݾÞ[ä,£…Báþ Ž ËŸ<›ñΛ9ÒÚÜÔÖÑ0 c üw£9b2xIEND®B`‚awstats-7.4/wwwroot/icon/browser/epiphany.png0000640000175000017500000000116712410217071017350 0ustar sksk‰PNG  IHDR*º†tIMEÕ  8%)ˆ«×+IDATxœ%’KHTqÅ¿ïÿ¿]S‡,%£”“æ´ke>°…¯E$H­ J‹À­8‹¢(„A(Q ˜‹¨Üô@̸ eiZ*–«I&›ñÞ¹ÿïkq7‡ßâ,çdffFD‡wc»®d L,O,…—*½•Þ,/ÙÊ&"Ó2IÑÐôPÓ½¦í­íÁwƒþþ¢[E½#½Ì¬! 1I! ãIG]n±ṋͯ…×úE*C˨>ZÍÀš"%PCAô…ï‹nëpÃÉúì¤Ì’Bßn<Ê1èªê*ó•š S×ô¶¡¶høoOc7J*t_ ýŒ[æÊÖBq~¡/¯˜ˆQ( ýTûØÜh–+àéèøÇç{V‚§êIë÷Ë)@@fVФ¡íËÝw4)ÛÎ×ø}ï޿œ žÈ=ØèD”̬3ÑÍþÇ–™¸­ÕëÍg"fò<é­Íµ(4v³”B)µޤ§¹6‘PÄ2‚+iÉÚí«-YÓ7" DTŠ„9™¿£ñ¾á·GŒÒ¼C-5ј=ûe™H!"3 D`D¼ÐpF%¬X|/û€V_Un|úÚyýAÏÝÁˆ³¥ ˆHÌG™ÜÝ(W*2ò‡5,CEת¦ö÷÷AHBZ\ŠÅW’=7£ Ë©Ô62ÐùÜ‘¿µ|ùüIÆŠ„å\>ǸšìöW£SÂJoÏu«Õ¢Èª!c¤ ÓéÚÎì ߺè÷ ì)Iè—B•K¥ãß[[²$e·3ñx"»›ýrô3±~»>œIEND®B`‚awstats-7.4/wwwroot/icon/browser/pluck.png0000640000175000017500000000122612410217071016645 0ustar sksk‰PNG  IHDR*º†tIMEÕ  9-:ÅnJIDATxœuÎKOAà™éc‘íB)X·ò 4!%D ƒøèÉ £4!Tðx©¦èÍ£’xÐĈe“/¦Å ±š"• …–ºÛvw…vfǃg¿_ðAJ)€ƒ`%£-e¶ Äyì«?ÏÇŠÅÇq’$I’ăEB cSK÷æ4½@K¬¸ºbÇÝ€óêðpNÓLj"ŒN÷÷ƒƒ#îþË¡7jCt±SÜbxÝ YÍð67!lUTÕøcÜÛÊe½ûbµÛ϶–ºŒŸS3s~éÉßùdÒf·uwûëëjw{<Ñh”[]]ÛÔ ŒC+:ìï= Ôvâ¹|Þ×î Oõõ¶‹ÔdÔdØbã%¬›ÙÄøëu˜KÞ<Óò6QBPÏAJé­ÑÑ™™iˆ° 1L¢¨jN3–WÛ÷yBÀPu>þ½±Îãàme¢§ÓéÐõŠ¢(™ŒÏ×v¨£Í‚1PbC§—ï‹.«Ù\a<?Ò{4•JNŸ”'ÇE"ѵ3 Å®u}ådøé¬bïðØ9·Ûí,/c̬p¹žG"‡{z.]¾’U2#·Ç]{øvÙhØå´èN+Å¢(úýþX,&ËòÄÄJ©×Û\_S]Y2û)žúºÀóü¶žëÚ߈ !ápx1‘xþ+¦S©Jgy~s-o »Í¢44éóCBBˆ*Ëòââ7ÆÌª*÷…óç<{‘Õ·1_ÚÚ²÷˜oc 2Æ(¥!𔚂¿ËÁ·ÒÛÀIEND®B`‚awstats-7.4/wwwroot/icon/browser/fresco.png0000640000175000017500000000130412410217071017005 0ustar sksk‰PNG  IHDR*º†gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<VIDATxÚbüÿÿ?üg¸sçÖ›÷ßÿþ+ÇÏýòÝ;=UeI$@Œ@¥¿~þ8qäÈ«—Ï¥e¥v]¸ÍÎʾëåŸo^´D9ÛXZÁ•ã¿?¿7îØõœõÍ·¿×®œeçdùûWt×Ó_â¢Ò_¶¹›8X›A”ÓÃ÷[Î>:üôã¿?åe¤µ5ä>0±¨òý³`úòä'Ǻýß¾|†( ¦Ë¯?ý•;õô×§÷Ï ”ÿ1ˆ¼þÏüèÊÍÝ.‰}{øýñƒ#‡@”+ÔÿÚñúøùôõüó $ øïžÀÑêÛè'2)(*&¼÷òÌǹÔáFGýˆIœ…û×UÑ{·?øË§ÂþßÞÆxvY†¹Š"Û‹gÂî~癸vï?4 +Ôÿ;#ü¿ÖÜ veX÷ÐÅÙáâ&=(ùëÖÐÏþþþ+ÔÿìïîQ@'N,âèëÂì÷CBõÈåóü***ûûû+Ôÿ-'&9éáá + ïóïÕÞìÁù É ÔÈþïó󈉑1Å×Õ_’çðµ»þãûyáÈ N…KŸXÞܾjÌúéóû÷ªÊê@· 8˜½<= ž<ÙyààV '?ȳ>û~äN÷—¯l,{¿®¿Â®­­ @ŒÐ4€ þûòí÷oFVö>5­®>ù|e¼F5@1ü'¾ýÙ2¿éøù£X#&7¾³ö9IEND®B`‚awstats-7.4/wwwroot/icon/browser/pdaphone.png0000640000175000017500000000053712410217071017331 0ustar sksk‰PNG  IHDRíf0â.tEXtCreation Timejeu. 27 nov. 2003 19:42:30 +0100×™YtIMEÓ ,ä•ì pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿÌÒÔage†ŒŠ÷÷÷s{x’˜šâââ³·¹¢¨­µ½½MPT*35·ÀÃÁÆÎïïï±]ôtRNS@æØfkIDATxÚc``¨xáÀÂ3²€—ñÖ¤í@ú[ô¡Ö£@ 6£ÓÝ؃vg>ÓJ¤iOìÐÒe³3Ö&5LÕ¼¡¶€e¦jÌæv„ÑžÝ@š#)lò Í¢¤š²€AÈÐö\œØIEND®B`‚awstats-7.4/wwwroot/icon/browser/konqueror.png0000640000175000017500000000043512410217071017555 0ustar sksk‰PNG  IHDR !}}™!tEXtDescriptionCreated with The GIMP•~L‰tIMEÒ&1±Ôd pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿÌÌÌ™™™333fffÿÿÿ™™f3:ø’žtRNS@æØfKIDATxÚ5ŽIÀ@Ôäÿ/Ž8“¾Ø…K ˜Hª]F´¦˜Êޱ M˜€ø¼ ‡Èb‹W[^::èh}ÓÉ«`âW£:—üuít炈ûÎIEND®B`‚awstats-7.4/wwwroot/icon/browser/mediaplayer.png0000640000175000017500000000056212410217071020025 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timedim. 24 févr. 2002 17:14:50 +0100Ìb;“tIMEÓ4jp pHYs\\hÄ6‰gAMA± üa0PLTE))QQ5‡‡_œœ”¼¼ÅÅ»»¶ÛÛÅùùJùù±ïïÚçççïïï÷÷÷ÿÿ÷ÿÿÿXU¹tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]nIDATxÚcøÿÿ¯Aþÿÿ ÿÿ?UÔÓ%Jåÿ÷2üÿîªvùwÃ÷)ÒŸ·gXšÙÊöùΆ%S‹ê–Dµ1o6fØ(2…ù3ÿMÐUúói þÏ"êŸíšc \ ÔÿÿÿeFmy{?uÔ­1cIEND®B`‚awstats-7.4/wwwroot/icon/browser/philips.png0000640000175000017500000000125612410217071017202 0ustar sksk‰PNG  IHDR*º†sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<tIMEÕ  8›IDAT(S-ËOQ‡ÏL ± Á(nˆ)ˆÕêFWîA­BécÚ HµZšJ[†G.TTšLª@1 ­n|„Wšøoø¸bãÌtfúºóºÞÛ²¹÷ä»_~çœË8"ºŽl#ƒú©^t$±v;°,° 0 èœqá#Åù篜Q¦¬á Jï)·Ô»ÅW¨ßxÚ¼žo$wÕÙ·ªo]É!ðcpP¥õ½ßòú¡DÎç_ÔŸåü§ÚöOåÙW‘¡´FœNª_â© >ÃDýÚ^¾éÎ4`J‡IÊ=¼FS©:‰½Kˆ Qíö+y®T»šk\[i¯)'§)¿²‚ˆsœ:º¨(Öö¥Ä¶ÐÓ`»fµ±5™ð‹ÝÔî¬îÚè2_ÏÔÏÍ7a„>ìŒR>œíª:ëhN+ ɲ|¯$¹SˆlÍW¤;åBºETïòñ:ø-Ï¢¶ñ]œÞ”—«â›âêG!RTòUáõ7±ü럇oÓT;§CÀ:›DÙýøLÒd ¡Û¦3¤ÅJêù'¥JmpÑÏbƳÀo&ÊòØË:ÜÂdY§s›b®"ϽíÈŒ¿ã0¹L&ˆûfÚ«U!PTNÇÑ@¼ßR»BîƒèºÈ+UYÎ`­VoL mÈÙ)µ£¦Þ+Á¢Ò7ƒ @=6ÜQYZa[CÃ8vDÌþÇzOÌ„›˜xöõlþV½9ÕÖ~ËØIEND®B`‚awstats-7.4/wwwroot/icon/browser/akregator.png0000640000175000017500000000105212410217071017503 0ustar sksk‰PNG  IHDR*º†tIMEÖ 1}öÞIDATxœ5‘AnÓPEï{ÿ×NêÄuÜ$?%EbЖ‚ 1aÀ©û` ưVäH•˜D Ej‹Ò*Å‚6Ø$ö·ÿ  ¸çH÷{s €  /Bßx­f/߆q/ŠÂÕºÚÚÒ¯žƒ$ "ÞàñýÄݤ»Û‹ŠbµXüÒ¸ù06PòG´˜ÕuË?LVyîê*ÏW̤a¿Ay(ïДRÈoqåOßy÷FÛ¤¶ŒI•RëSèÊ ,XönÇǾ¼[ælLÀ{ÏPw l[t¼t5Ǩü|üá·ëLî§y^žœL‹bMDLs—iÜwšìèc>Cy».ëÁ Íééצi´«|ͬÛ]áEùàõM1Šƒ?ž]\\O§Y« ³ÒÓâ} {ä.˜TjXæË¤cÁš™ö뺞Ï3cR¥˜>}>·¥eøv›FÃîzeûƒÞÕUÇÑd²mçÞ¶ÛÅôƒn{<¾·“Ä——‹Ñ(ÏXk8çE„ˆ¸qh´\"bL†ÁÙÙ<ŠÚ3mòèá0™Í.seY‘÷þðp?ËîŒI7ÞÍ÷ûI«Zëúýä\2&õþŸWDDÀ_ ×ï{îÏ„9IEND®B`‚awstats-7.4/wwwroot/icon/browser/gnus.png0000640000175000017500000000164212410217071016505 0ustar sksk‰PNG  IHDR(–ÝãÓPLTEÉö±òÿêñÿéïÿç¬×›÷ÿòöÿñôÿïÀì«ýÿûüÿúûÿùúÿøùÿ÷¼è§¤Í–ôùò¢Í”¶×«ÞíٵתÝíØ´×©ð÷îÛëÖ²Õ§ìõêÖÿ½Õÿ¼Ôÿ»ÓÿºÒÿ¹Íù´Ë÷²ÛÿÅÙÿÃ×ÿÁ±ÜŸ°ÜžàÿÍßÿÌÝÿÊÈæ¼ÖìÍ¿ë©åÿÕäÿÔ¦Ò—¹Ú­¤Ð•ßð٣ΔÇí´´Ö¨°Ô¤ØêÒëôèéÿÜêôçþþþÁÞ¸èÿÛÕèϬҠ«ÒŸÑþ·¨Ðœµá¢íÿãìÿâòÿëÜþÈÇô°Äð­×ïͫכùÿõøÿô÷ÿó¦Ñ–ÿÿþþÿýýÿüéóåüÿûûÿúüýûçñãªÑÒçËúýù©Ñœ½Û³¼Û²Ðåɺ榻۱øû÷ÏåÈ÷ûö¦Ï™ºÙ°âïÞáïÝôùóËãÄ×ÿ¿Öÿ¾Õÿ½Ôÿ¼äøÙÌù´Éõ±Èõ°ÜÿÇÛÿÆÇó¯ÚÿÅÙÿĮڭ؜¬Ø›àÿÎËõ¶ßÿÍçÿØæÿ×½é¨äÿÕÑæÉ¼Ú±âýÓºå¥ãðÞ÷úõ¦Î˜¥Î—õú󏨭£Î•óøñ¢Ì”Êâ¡̓³Ö¨Çà¿Æà¾îöìÅà½ÙêÔìÿàëÿ߯ԤêÿÞëôééÿÝèÿÜÏü¶Íú´Ìø³ðÿç³ß¡îÿå¯ÛÔü¾öÿðõÿïôÿîóÿíÄð®Ãð­Âê¨ûÿøúÿ÷ùÿö§Ó˜¦Ñ—¤Ï•óùðÈῲզÚëÔîõëìõéØéÒÃߺ¯Ó£ÿÿÿþÿþÂݹ­Ó¡Óÿ¹Òÿ¸ûýûªÑžÐý¶½Û´¼Û³äñá¦Ïš¹ä¦ØÿÁ×ÿÀÖÿ¿ÜÿÈÛÿÇÇó°Æó¯Ò÷¾ªÖš©Ô™âÿѧҗÝîÖÂÞ¸­Ò ýþü¬ÒŸüþûçôã¿Üµ¾Ü´úüùÑæÊùüø¨Ð›ÐæÉ»Ú±ãðßöúõ¥Î˜ÍäÆõúô·ã£¡Ì”ñøðÈâÁíÿâìÿáÍúµùʦ pHYs  šœtIMEÖ-4è²ÆÞbIDAT×c؃ú÷0ìÙ3µ¿¿ÿ „wÁ²_ÄŠKÊîóöR 5ý«ôö3ÀŒš¾ÎÜøg Œ+",öÀeöƒ´B¹a: &† q·"œ ⪣r‘¶†íèœgÇIEND®B`‚awstats-7.4/wwwroot/icon/browser/newzcrawler.png0000640000175000017500000000172412410217071020075 0ustar sksk‰PNG  IHDR(–ÝãPLTEÿ÷ŒœÞ„ œ1CÏqvŸÝ Æœ3fÌ­{""!îéÕ¯§ µÓ¹×û¾¾¾+Wƒ¿½¯!µ•“…4lò&ŠíêÜëöÿ‚Zø‘§´„„„÷÷÷„ Îÿõõðÿfimš½«œàÞÎüÚl™™™€hUZçïïæäbB+9P,Šÿ¼ÎúÐÝüÿ„ÎRfÿ„„ò¯8Ù×Äfff±ÁãÌ™3ÿÿ¥‚‰ÆSæÌÌÌ ?¶h×¹SSSRÿEÿ‡¯òÙÕ¾333š~gÞÞÞWÁ4ÜEV`™€€^ñâçíW{©ææ–3A„x˜µršøÿÇ<rÿce(Ma…A˜ÿïîÞ°t@ÆÖýsssËǵ¸Š~±ÅóïïבּÕè-ÿµ„oÕ÷yQÿÿæ‹,ŒŒŒJÝÍͼm†¿ï÷Þþí-¨ÿÖ³MGöBBBç­cÿÿÿÒÞ‘< Tº¶Îû¬¬¬qodèæÙ™Ìÿ„…¿qu´²é岆fI(þÏÿ‚tIMEÕ  , Êös¹|IDATxœUÎ1 Ã0 P¢hÊžh0„/þ`(hhÊ\Òݽz§”äOz`ë+í·¤ÿ\YèNr?¾2÷¾éG"žv°tU£Ÿã/ÖÜÔ^“ã Èy«š×±9T`­éÅ Æ mÙÞÁ…g£µ~žÑ\ëýæ‘/Å1GHû^ÓIEND®B`‚awstats-7.4/wwwroot/icon/browser/nokia.png0000640000175000017500000000061512410217071016631 0ustar sksk‰PNG  IHDR*º†tIMEÕ  $rÓÕAIDATxœ•‘=KBqÆÏó¿ï‹iˆd/Z*”QKS-mÍAs}ƒ¢EZú ¶E[[Ð}‚p‚† Ì¢4Š+¡×—‹÷å4$¤ Ïtxçœß3ÓpCæˆHú>]ÓBÏ‚@ÄD  ˜ÀßB–ÞÚ“1UW…Õò¬¦W5äœ&€HXËvÈSÑ€Ys‚š€±”_Y å²éãÓ÷oËÓ™\‰T"šÑê-¿VwŽö;ÅíˆHÏcº8ÉU*Ÿ­õñÛ‹å !ò÷Íó+3»ŸÐ¤rySm7Ü»‚…Ôfáúlq÷°8UE(>9Ä ³Z&­?>ÛºŽ‡'{5|1;xý°“Ój­á¹·mÿ«ê$ãšT ËRÙV©>3˜¹wc_Däº,%ày>@]`ý¸ÓoË@®ÿ5ÂcGˆþ²iŠS ƒô®IEND®B`‚awstats-7.4/wwwroot/icon/browser/encompass.png0000640000175000017500000000136512410217071017523 0ustar sksk‰PNG  IHDR*º†gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<‡IDATxÚbüÿÿ? |ûôžéÿ_^ÁŸŸß°p 0³²3 €b³žÞ¾ññè^I±½G:h2Ê:Gý³bdD( „Òû÷þòôùï¿›ÖÖá¼{îÞVUEyNV =@+Ôÿííðê͸ÎåøåA ÓÍãñÔçø&õßþñÙé8)<\j%+ÔÿÝ××è·£ÔýSkh3&T"ñê:ìàÞÙýèîìëÓïçõÇê "À*?+ÔÿÐ5ôþùþøàèíöï îîòù öðîñÒâïô+Ôÿþÿå8Ôæñî¶û-Í ÷þùþìóÿ´Êóäâþ ßéóæçí+Ôÿûú÷ýüãë)öëìôüûÙæùÕÞïþÿëñüäààïòö+Ôÿ þöòìÿ  äûïÑÝùÂÖðþùîýÿúûöÛÖÑÎÌ++Ôÿýô( íøóëïíîö÷õþþÕâøâéõ ðûüöüúõþóêü÷À¾¹+Ôÿ4Ù¹ëõúÝîüòôÿðìøÈÖõîò÷ùûûýÿýôæ úò)úý+Ôÿ-HXÕõ âÄëÈÌÌÙ§Àéñöûüþÿúúüþíãøëâôõø+Ôÿ„Š’-=G þ ÷ýþúüóëôæÙøïçüüÿ LTX+ÔÿÝáî óòîÜÛÛÙÙÞæéðøùüõöõýûø,/1,+( =DyÕOÖHIEND®B`‚awstats-7.4/wwwroot/icon/browser/shrook.png0000640000175000017500000000113012410217071017026 0ustar sksk‰PNG  IHDR*º†tIMEÕ  %2U7B  IDATxœM’MOQ@ï}óÞ|S°¥”Ú€J”%F¢F1 .LL\ú³ün•!ÁTˆZ‚F0­TÚ:¶ÓaÞÌuQžíYžƒiš""€$èw|×óêõz,%Ü,—3™ 1Æ8¸®çznßõâæéa3¦uå¹l{aØô{ëψˆˆ8"~?Ø?õ}]K3òs“[»-½=üÚö¼/{ûw×Ö2™Q"bi’˜Ù¼6:kONµ“ü»ÍÐïè×–—nßûUëìUë;•D$"&œ˜Mýü=²õ9REóùÓÚ«ÆõÅÕ' ¥«AnÜJ¤DƘª(æx&(äêë½Õ[´råÛ3è)mrË÷·LN}‰©ªÕjEúàÞ¥ÅïÓ ó£‚§âÊlÚŽX—iuÕ㋌ÉO3“ñ±‘¸ªTº]¶TJÇQÑ‹èµ?ŸdózN¢±%X% ‰F®nk ddlÄö_Þ3…î[Çû3wæd¯(IÎeôô©Šü¼ü”®–V9…ux»ûDq^£m©q[ú7ÁçY8!(>zÄxY]í½N" 3läzv*ki}+!< 3Æ`!Þàr57?*=ž»´ÆŒqŒ„ïùÌ­›ƒ¡ÁµD\$¢išÐß×§ºi»È™„Bœó55ï‚ð$Az?:2*djÆç\ïÀÀ9·Yåo_g»ºü!ÆçcL™Ùtû®®'%sKVV¤ לóºÚZ%«ˆ‰$ˆ’ ,ÀØDèáÓ‹¿~Gþ_n0Z‡ZØ]IEND®B`‚awstats-7.4/wwwroot/icon/browser/pulpfiction.png0000640000175000017500000000126112410217071020062 0ustar sksk‰PNG  IHDR*º†tIMEÕ  0[ÎVLeIDATxœZ¥ýÿÿÿêêéÎÌÅ  ðêéÙÖÓäåêùYwˆ ×ÖÕѾ¶ÊÄ»àåæ,31#ïôú!'.ÈÐÑѼ§ gluWQ]ýýýèáÜãëð&7KZh ýòÛîÇL#öÆÚú%.4315ýýýafjª£õ×´ðÕ($×Ûöïúò5 Cd/ãìÎ$,'.K.ÿǹæáúðìòÿÿÿþÿþïùíîÝê9 ö'ÕÉñ  %÷ëó'! ÿþþÿÿ ïùý ö$- 俥Õåø ù ðæãøöõ òìñ ùÏĽ÷ñêÛÚÕ¨¶Å†·S µ¬§ÚÙØ¼Å# Þàà×ÖÖ"¤³ÆÁÎìíë  áèî¶|ÿÿÿõóòëõÝÎØÿ-8F )ä#À +åÈÄÑÏÜñ½ÆÚƒ‡†ùüþðæÜ:89/9þç´ÎõðùÊ üýù83L'7L8<=þýü3)(ü²{áç3)øó)ç/Úîøàóõqcwûûûýýþ )6Ø×F7/Xú5%(ýúý ÿýýþáÅ ñ(à‰IEND®B`‚awstats-7.4/wwwroot/icon/browser/rssreader.png0000640000175000017500000000203512410217071017520 0ustar sksk‰PNG  IHDR(–ÝãPLTEÝãés”Ä”áF)` ¢Æìÿ™{œËãÁÁÁ)+˜ëºí†4wJh¡iм¢¤¤¦ÉðFcy{{˜»„ƒ¥Òw¸8³ëyeµK‡Tsªš½å«×‘ŠÜ9xÔÚø»ØØØ$© $jêüØžÁéS¡"~ŸÍްÛQ§c» ŒÊxSø”ª’\|±Æò˜ÈÕëÇÙ¶b‚¶Br"³Ý‹­Ù¬jéêê=~{ø5y¶¯ÓÈ×éÖ¤¼¾¾ßøÇÁÆá¼èþ¢èY‚4_³öÿ뉲­Š¡ØtŠ8®òËøT—¾÷[zH‹ŒŽ¡ÃùŠ›³o¯Ž}²oµè(^«7þøÖÁÐëÙåÌΫNm¥½Ðìo7SÖùy7­'GUkx¨®ÌÌÌM™ÓbDÉäÇX5hÓ’­Íù,S²Ð󝧨¤‘й1‰HZ’Îé®Þ~)yÙ/ÆVƶÙe€´®Ô–ppaµê,ˆÄÀÏóN©pRdrQp§wKE‡­O”M?Y+G†§×%X«ÛkJc§Á¥>W/‡«ámÔ÷¡¬®)nŽÜùz™¤u™ØCL^W8udˆÏEg¾“·ç»à¿ åõ²Â±£Ü³Ý°¥µ­J”sÔ«èk¬µ¶KœÎô¥@øÜ|ÿ$ƒÛ)lÉõÛ•Wv¬Y·‹Õ@T›pÁx™Èæü͇¿Q˜ö¦Ôï¶v–Æ?\—]¤¿Ú¤Š™‘GGH®À°·Î¢qtrTlÓn“¡#D¯˜ÆVv£Mba‚ãûÿB{­—ºé ÅÇ­®®,PpS¿Gwˆ¨š9oœÉ#c¥™’‹³äŽ±Ç•»¼lkl€€€€€ÿÔÐÈÿÿÿv•íùtIMEÕ  ù­‹ÅIDATxœUͯ ÂP€ñla6£°"Û}‚õ½€Ù`›p0艇›‚Ö. ‹ƒÝ ·>ÁèÝŸ I°:5ùµ_úÀûÕéôïùÞÀ«^{“‚7•ès‰Njžñ${èÊ€mÞZ’ƒ”ŒQÙL4DUå;ê¦tVmŠ/<TŒ„†Ö)fÆlkžk ÇÉãa66‘b gœ‡ˆI ËŠj@WUÎ`¡Ô6òãÈÔuáGÌš¯\‚I›ÐZ‡aX–ð§ò Æl]ë.s6IEND®B`‚awstats-7.4/wwwroot/icon/browser/httrack.png0000640000175000017500000000157612410217071017177 0ustar sksk‰PNG  IHDR(–ÝãPLTEZû>ïëÞ­08ÞŒµË÷„Þ49q÷ac§Þ¶9™™ÌsmcYïέªœï÷ÿÿû÷{¦ïZYZ÷÷﵎ïïçÎÏÞQçfÿÆ×ÿÿç„¥)’ÿiïAÎçmR{¢ÖM÷8µUÞZŽ÷|PÞëÿqÿÿ÷€ûÓu½Ïÿ½ž1„†„{†­ÞU1ÎÛÿJa„33fœ¶Öÿÿÿœy"[»ÿÿ™Y÷ï’{3™ÿçI!ÿÌfŒ¶ÿµÏÿså%tIMEÕ  #£,¹œ&IDATxœc0f``à. Ød.À¹p@ WŒÉ³'”ÇÞX|ž‚IEND®B`‚awstats-7.4/wwwroot/icon/browser/amigavoyager.png0000640000175000017500000000044012410217071020177 0ustar sksk‰PNG  IHDRíf0âtIMEÓ  &†Jг pHYs ð ðB¬4˜gAMA± üa0PLTE .Z9%d Zœ-½BµâZçÿ”­ÆÞÎ)Þ1ÿBÿÿÿbÍÊtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]WIDATxÚcø ÿÿM•Óa©A@Zã^X™Ë{†Ï³]C]vò3üŸíââ¼(ϵQкH^½{7?H}×ê `}œ³ìÁô‡ü`úÄÜÿüPH„E=ãIEND®B`‚awstats-7.4/wwwroot/icon/browser/lynx.png0000640000175000017500000000044012410217071016516 0ustar sksk‰PNG  IHDRíf0â!tEXtDescriptionCreated with The GIMP•~L‰tIMEÓ-1×Tév pHYs ð ðB¬4˜gAMA± üa0PLTE!!!JJRsssœœœÆÆÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH\UtRNSÿÿÿÿÿ³¿¤¿4IDATxÚc…†P&Í(¥¡|aeì|˜z!%4}B... 𑑍*TYYII HCoôk=QýIEND®B`‚awstats-7.4/wwwroot/icon/browser/sony.png0000640000175000017500000000203112410217071016512 0ustar sksk‰PNG  IHDR(–ÝãPLTEJ¦LdftŒ¦œ¤Ú¤z4ÔÖÔD‚dÔîälŽl´º¼,fD”’œšDb„ÂŒÔæäVìîìL®ddš„zDôúüL†\„†Œ´Î´´ž´’\¤¦¬ ŽDœžœìÚäœÊœäâäV,üöü\Ê|R‚<ÜÞÜn4^,ôöôLŽdÌÎÔœº¬$¶tdz||ŠŒœ–œ ¢Tlªt„’”$¢däêìN~4ÔÚÜ4’LtŠ|¼ÂÄ žLb<”¾¤Z$ôòô\²„üúü¬®´¤¢¬¬Ò¬\’|ÌÒÔŒŽœª\djt„®œ¬Þ¬ÔÖÜ<ŠdÜîÔ¼¾ÄLrl”–¤šLb,ÜæÜV$ìîôTª„Œ¢œ,ŠL\‚t´ÊÄ$–d¬¦´ŽLœ¢¤¤Ò¤äæä|ÊœR$‚DÜÞäv4 ^,ôöüT–tÔÊÔ¬²´4¶l|z„œ–¤,ždìêìN$~yñüõ«× ,NNVñoß~–––•=¿dÉõÿ~Xš]ß¶%àõ37Û‡Áþøøy[?þa`xqäÈý{÷xÞ¾ýóèÑ;&&ù—¯¸™˜¾ûþä çóç~üÐ R//.®G?²IK³øúþÏÍ5þüùÇŸ? ÿûÇXW÷ÕÚZ“—— €1“ |ûö-.î±f4Ë%à&N;7IEND®B`‚awstats-7.4/wwwroot/icon/browser/dillo.png0000640000175000017500000000140012410217071016624 0ustar sksk‰PNG  IHDR*º†gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<’IDATxÚbü÷ï###÷§Ïß½xõî7+Ÿ4?/?óÇçÿx¸ÙD¥…²ÿÿÿ* Æÿÿÿx÷þþýû'O^UûÇÊÈÄ÷—_@ŠG”“ÿÛw–ÿòbRÌŒL@µÄð÷×ÏË“Ö{Û‡ñûdö,¶qre``vJ ©›wìì•Ï_ß½úüæï¿¿@Ë+ÔÿýýûèåãÍÕÞp•­ úìÿ÷ Ïðëôªƒq#+ +ÔÿûýLA<&ÚÕÕ$#F™¢…x'êßÒÏ‹¥¯  æõåþÿˆåÓ¯O,¿þ±q2]/£Ï¡¨%þû¿¶¶–‡‹ëCf±+ß¼~ú’_Làë‹7+ÔÿýüüþþýýíäôîT  þÆöÝÔúúûæëç ø+ÔÿÏðæúû  ÿ  û÷úÒÞäêâßÿ+Ôÿ# ñýóÿ÷îýøðòóÍÕÜ«»Ç¶µ³ýUTDûáê, +Ôÿ÷ýùÑñÓµ‘´­»Çèçà÷ ÷öþUB6–qlúïõ!#+Ôÿ.'Ñ×Ï<9Uöíè÷úû&>71MA8ÛòïÀ÷ îï9ˆ±O?ùþë›2‡ò§ïïøy„~300ÿùÁ°héfM&>U }5€bF.0Š¥YeX¾ÿû¾ÿËGfÇî¾ý÷Öâ«©·¦3/@1üCÀ8|òùë·ßþþÿûúÞãck¶={üô?-(@šIIEND®B`‚awstats-7.4/wwwroot/icon/browser/msie_large.png0000640000175000017500000000073312410217071017640 0ustar sksk‰PNG  IHDR&òtIMEÐ & +ÕÄŒ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿ÷÷ûÆÒâx‹­ïï÷&Qºj’Þ~ÍûA`ß 8|)`å÷ÿÿÔÝñÐËŸVˆðÞæüÕªtRNS@æØf!IDATxÚc`À|"qÕ:ž)ÀØ..jËŠ <µ®Uë90ˆ €å*€¼gyù |`®X躴w@ æ2šFäæ½Ë+/Ä’žÚ{­kÝ»òòw@\Íà»ËÊûÊËë@j;m¯­Jaðx^S÷dËÌ»Y«˜ÚËËŸ€¸“/¯Zõ,- ¨ù˜kµjÐÞwÏËŸ¹¼“»V¬ZµâÐbWxƪÐU`вgÖÒP Q Ÿ””´Ü›Q‘¡«xZß½ r-W͜ڵLÉ4ªï•ˆ»tfhÔ*X r¤é*Ë©¡`î"“¯.ž9,_âº.âÖœºª2Ìa ,–@ù$H@…¦§6¹¸8‚TÈØHGÐÉŸuØ-^pqIEND®B`‚awstats-7.4/wwwroot/icon/browser/subversion.png0000640000175000017500000000162412410217071017730 0ustar sksk‰PNG  IHDR(–ÝãÄPLTEàæñË×è·Çࣷצ΀œÈÿÿÿöøûáçòËÖèµÅßž³Õ†¡Êþþþíñ÷ÕÞì½Ë⤸׊¤ÌïòøÕÞí»Êá¡¶Ö‡¡ËêïöÏÚê´ÄÞ™¯Ó‚ÉÛãïîòøýþþúûüßæñÃÐ妺؊£Ì„ŸÉ•­Ñª¼Ú¾ÌâÒÜëæëôùúüìðöÎÙê°ÁÜ’ªÏ‘©Ï¼ËâèíõüüýòõùÔÝì¶Æß—®ÒœÈƒžÉ˜®Ò¯ÁÜÇÓæ÷ùûØàî¸Èà™°ÓȪ½ÚÝäð÷øûøùûÚâЮÀÜÉÕèäêóüýþôöúÔÞì³ÄÞ’ªÐ‰£Ìœ²Ô„ŸÊž´ÕðóøÍØé«½Ú·ÆßÖßíÂÏä‚žÉøúü×àí²ÃÞŽ¦ÎÀÎäâèòýýýÄÑ嫾ÛÐÚêëïöûüýÚâ͖­Ñ¿Íãêîöáèò¨Ïüýý‹¥Í½Ìâðôø°Á݇¢ËÆÓæÅÒæÓÜìÌ×èîîîÒÒÒÐÐÐêêêúúúÚÚÚðððÖÖÖøøøæææÔÔÔÜÜÜöööää䨨Øàààôôô¯ÀÜúûý¢·×îò÷š°ÓÆÒæùûüÈÔçóõùˆ¢Ë µÖššš™™™³³³žžžœœœ®®®òòòìì캺ºªªªüüüâââ´´´¶¶¶ÞÞÞÀÀÀÈÈÈ¢¢¢¾¾¾   ¬¾Û… Ê•¬ÑéîõæìôµÅÞ† ÊÄÄÄÆÆÆ¨¨¨¸¸¸îñ÷ïóø˜¯ÒÊÊʼ¼¼°°°¤¤¤°ÂݧºÙ¤¸ØÙâԨμÊ⦦¦èè虯Ҧ͂Ȩ»ÙÌÌÌóöúÙáîÞå𬬬ºÉáÓÜëÎÎÎÊÕèÎÙ醡ËÒÛ다ÌÊÖèÂÂÂøùü²Ãݦ¹Øœ±ÔÀÎãêîõ¾Ìã©¼ÙØáî´ÅÞÞæñ©¼Úûûý×àîÂÐ䢶֧»ÙÇÓç·ÇßÏÙꃟÉÀÍãÓÃl[ pHYs ð ðB¬4˜tIMEÖ *Ê>÷cIDAT×c`E66û5Û1V÷.ÛK0ÄŠÃÔ0€8ápí @ž&ˆáá d±¸HÎ=©w Ì5ÙÓȆd/k["+Œ›ÂÆæ29Ùf56$W€ìBòßâ ë×&p‹IEND®B`‚awstats-7.4/wwwroot/icon/browser/neon.png0000640000175000017500000000051012410217071016461 0ustar sksk‰PNG  IHDRH-Ñ pHYs  ÒÝ~ütIMEÖ¹œP~çIDAT(ÏÕÒ±JAÐ3»K²$B°³X; ØZÛXØØŠÿàŸø#‚•EJ@›‚‚i4û,fÉIPì¼ðf†;ïw¸/‰:>º‚ºÛ_ƒƒÄ¥*°ÀÝ’Ydö¤à 7Ÿ¼á qZrXôŠ:̇Რä:+Â~ {©ç¦E¸DvXGa‚«’ëŠiÊܬå¶å}Ýêw\T ‘pÞ}þ9Xã´ExT2B&mlÙlu´õæá/ð„ÕjmRŸÙd­c¢ç›´ 0‰:,1^º‘kŠ<›äÀÛ|ÞIìfqþ_E??ù$T÷IEND®B`‚awstats-7.4/wwwroot/icon/browser/siemens.png0000640000175000017500000000042512410217071017172 0ustar sksk‰PNG  IHDR*º†tIMEÕ   ¤(óËÉIDATxœµ‘1kÂP…Ïy//DÐ’¨C]: uÿ@ÿoéoè/(ÄY—" ± ØÀ3ò §CHçdè™—oøî½”„~1=¹ah ‘hU ëèæØß5’´-ŠÄÚØÚËífÉY’²¬ë 9cG£“÷ç"¯û}y¿[ò»®_‹·Ã!cC®§Ók»¢XeÙƒs”ô~<~äù2M¿ªê9ËÎވȟ6óùgž?ÇgÔtËøëm$Rƒ.ð?߀þ{5V\#ØjÖIEND®B`‚awstats-7.4/wwwroot/icon/browser/rssowl.png0000640000175000017500000000124212410217071017056 0ustar sksk‰PNG  IHDR*º†tIMEÕ  %ÕEVIDATxœ-È[HSaðÿ÷Ï™ÎÍ3•cÞ±ËÔ9 Ó¼Fô†…öbáSÑK=D‚„D "Ò劢aÕJWVZdËKM·•­6·Ü™ÛÎÎwþ½ô{üD¦ª\Zšw~úÁðÀ&ëÖ }zõ®½R‚ˆc”ãÜÓ#§Žð _‚I ¦L>]8Ø?œg­—#áŠÊZD¨)…R.àÿv±s§ÉlÑhî8dnh ù£ö†ãƒvûXooOYY ¥ÎËgøàª&d–Ö7ïèîþ4ñ({KYU[[dåÇþÎ.ŸwYQÖ)' Ÿ§¾;lk:ÁHÕÒÚ:©Ä°y;Í”XiÕ¸s²¨¨hÕ»82tŽÀ[ÛõX$)ŠK¾IM®Ëáp}ãîœ?³wneè>ÿb"òs橃@pižð`Ð žHÂ÷þµ˜]v»®\»'W´4×™Ëó½.çº,SP G9 1¯&?ú_8\sQ·Ø¼­±±ÜR8k»9íxYÓÚFÀ´±\ˆÆ%¹Yr,þðîxAt¥«Fâ¿>sþ䳡QO²rr "ºgœƒ]ífIŒ#W¹Aœòü²JzƒŽWR,¦°ˆÂ¦<¡¾[6ª¦TKmkugÇJãèÜï5k±ô*ç³wËá}§Ï6µw¦ª@ˆ¢ÈŽuûž<º¸Ê22ÄhB „`Oßá¾þš†QÓ¥ ûÕKîr„éò åð*ÞÒÔtàè }z6j"2¦"""ÆRòJp ÿ"jCÄÌ"7›Âù ÅIEND®B`‚awstats-7.4/wwwroot/icon/browser/opera.png0000640000175000017500000000043412410217071016635 0ustar sksk‰PNG  IHDRíf0âtIMEÒm¹þÇ pHYs  ÒÝ~ügAMA± üa0PLTE–‹DCµ"&Ë==umm¤xwÖig틊¨¤¤ÏÆÆó¹³óëëÿëë÷÷÷ÿ÷÷ÿÿÿ#7“HoIDATxÚcøÿÿÿîÝûþ3üÿÿS(Yý=ž¨þS¨HÙÿo°føÿ3,ÿƒÃÿYõÿ”´8˜ÞÂlº(ÉÂ#0Á¥CȶE¬Š¡ÅÃÁ~‡[ ÃMGõŸÂëþîp2™ûw7Èäi6›„Z=KIEND®B`‚awstats-7.4/wwwroot/icon/browser/safari.png0000640000175000017500000000050412410217071016772 0ustar sksk‰PNG  IHDRíf0âtIMEÓ-%ÍŽ= pHYs ð ðB¬4˜gAMA± üa0PLTE]`aQ~®€qq‡Š’1˜ÕT¡Õv™¿|´Ù ‡§¥¥¢µÌÇÍнàòæææ÷÷÷ÿÿÿ£”¹CtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]{IDATxÚpÿÿÿéžîÿÿÿþ¹™™¿ÿÿ¹#©39ïû’ªªª0Ÿé&f¦3c.³1s;“g›™aWaTF9™dFWUJ9²”UGU{ ò+uDWÒý¼|Ë ßÿ°™ ÿÿþ’#;ÿÿë>2éú2ûÅIEND®B`‚awstats-7.4/wwwroot/icon/browser/panasonic.png0000640000175000017500000000045612410217071017506 0ustar sksk‰PNG  IHDR*º†tIMEÕ   ,¤lâIDATxœÅ‘1KA…ßÛ]îr9 *¤ÄÆF ±{Á?àOð¯Y¤ ‚?ÄF-ÍáÅ‹ñr{»ÏâˆVbR9ÅÀð>†÷fBÀjeVäÖC]ˆ’dHòWH JZΑ$´”!’’¾wØ“ó«›Û‡^Âávö1÷’ÚÛ Õ‹–ÐÛtqÿXö3Ç‹ëñëd¾·ÓžÔy湫fÞGä™ÝÈ\Q6‹i}|°å.ÏvO†Õg;º{:Ü߬fMùÞ¤©µ†Îš$1½Ô¾õ O~¼þ}ïCç;v $º]8ÿý­5Ð/£;gíPEƒIEND®B`‚awstats-7.4/wwwroot/icon/browser/trium.png0000640000175000017500000000065012410217071016667 0ustar sksk‰PNG  IHDR*º†tIMEÕ :ÒKŒ4\IDATxœ‘ÁjÂ@†wWcR0dµB=UÄ¢Çê!¥úb/9x¬gŸÄ'ŠW ‹ÔS¥&BRiÊF›ÝR¢ÅCý3óÏ0|9çà2ÅÏKçã5jsÎ!„a/c B)¥aŽŠ„Ïó²,cŒwŸîÛn·¦e.-Ëu¿EQ€û{_H$r¹Ü]© ¾ïKWRý±N™½Í ‚ívûô€ÕêóËucF£×ë ¬`ÆÆ8sÙûþn·[¯×”ÒÉë$†b›Í&Þl6 Ãè@ ƒU%!‰`'²Ù»3cñoÖÃÇaŠÃ93'(FHèžÇÉãøó1ÂÞC°‘VVÐïƒ)àå+´dkOÓæ£ÇL‰!@C s3ú¹#›ý¾íîÊVo^@ à œ>Ëí²9Ðæü}ŒSBTJpá"¾nâÁ"^½ñÚç3ž>ÃÄ>­ay{l€)ñùm~ßÖÍ;¼q[/_Óæï_ìΨn)·FFÌ-ÒæÆ¦Þ¾£­o[:uZì´™+(BÏeoŠ—&õäE_ë[œæµÀëmÉJŒP€N´†«í⊽¬[ Zý¢«ÓeÅVª“rãµ¹^WÃ÷u1¸°_Ý©²âÈ{ÙHª«ñ³h²3ü¸¯eÅ‘w“ÕlAÿc1@È:Ô~HÅ‘s•P©Xq<×ô¡Ö±ÌÙJˆMâ1A1Bì‚áP`4k€€QýWËþÄC6»IEND®B`‚awstats-7.4/wwwroot/icon/browser/netnewswire.png0000640000175000017500000000123312410217071020077 0ustar sksk‰PNG  IHDR*º†tIMEÕ  ''Q¸×OIDATxœ5ÒÏK“aðïó¼ïæë^}ßÍ\þjÆPJY$¥‡*<¢ké).xèÖÅ.%ÙIˆ¼D? Œ„ tbdºhÎwÚTöõwnóÝëÞí}žo‡èôù>!Àµßñ –ë6Éhê| zð±åc\aŒ´­™Ù£¡µù°g-RœyI'óÀ÷.ž&÷®·ôœضM9"¥|êÕB¸ª½óxSB³‚ó%µÚÕÜàvIê÷mï­ñEm}ME‚ˆ_ç—‡Ÿn_º[‰*Š,ÌJYVy!gPЉ­Äfø—gKç¨QÈï–]6™mêz)ó‡›%ôµ+ÞF)›Õw3©è‚µÎ8ÅZ·GvZV¦hU“˜F´ÖzI’ ”»Ü•ºÚÆßÎígvcU>·â¢ÉÛÛáâFŽ•ÍL2œ íÄŠmŽØèS£·gŸõùk¸δRD¸ssÀ]•¬”EnéûzRû¹z¶Ó#JFxéÚâÇûi£{°_è9Ù+Œ=h9â“a{ösªÓ_ç¿ínõL¶¯;Z MŒO)¶Ð2ùhÈ]×Dcˆ |êùËÉ;&o£NQV…ÕñMÉæŸ]œs‚ÿPë‘Õ÷–6¶Œr™y<²ÿhTâÃ#w9ç„òD´mæpˆP°j€q@ÎBþè<ÁÑL$|IEND®B`‚awstats-7.4/wwwroot/icon/browser/staroffice.png0000640000175000017500000000041512410217071017653 0ustar sksk‰PNG  IHDRíf0âtIMEÓ- ‚ä¹ pHYs ð ðB¬4˜gAMA± üa0PLTE„„„„„„„„„„ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“æ`IDATxÚ%ÌA €0 À+æRZð9DìZèGªäÙ¦šË° 8Ö~p™~õ+0=%ug)©@’CÆ$nµÁUïD-ïˉ |Þ¶£1Àv¤WSõêͶš/㺣øÞ‚ÁIEND®B`‚awstats-7.4/wwwroot/icon/browser/motorola.png0000640000175000017500000000121712410217071017363 0ustar sksk‰PNG  IHDR*º†tIMEÕ  /FýT;CIDATxœ%ÒÛK“aðïïyÞ½Ûœ§ò¸ÔpäPçRC1'!TbZ£ ê I¤›è"ØUÚEÝ AGD¬¼‰¢(LP!;I-FY¤fH²VæÜû¾Ï¯‹>ǘ™™"ÂÐë™;"¦~­ÅÍ4§^]’Ù,¯õç+ÅD ÓR[g.õ¼C\Á¡A( †HÖÏ tvÔ›–J))ÐqéYï·°ÛƒÁâ¤-v”³-¥¹©T1u]=mD“BØ498O†B´6úXòR4>¿´Î `äÕ"Ù4Øå—ïV׬˶&?†i)uàôÀØÐŒæNS–b)f!@DÖâʉÖÊþ®f2 SJù3ºz,ô`tì:t ˜‘0±iµKnwtè:1³R,%L³{`¢ïñÇÙ¥µM“6éÍOm– îH1Óÿ –¥¤óExîÇrl»;½Ú—@)Xñ0’’¸ÅfIEND®B`‚awstats-7.4/wwwroot/icon/browser/netshow.png0000640000175000017500000000117412410217071017220 0ustar sksk‰PNG  IHDR*º†tIMEÕ  5)?™Q:0IDATxœUOH“qÇŸç}零xSl¹MÔ2q¤i Da¡*V(t±ƒV§†—<ä5­C"È6Ê‹âÐQÒ’AZ’ˆ)lš.Ä‘‹½›‚¯ïÞ÷÷tX}Îß|ñðð`f/nME_®<ªÙ-g«]×Ù­V]7Ao44ò¢ÓóÑðôû¬û -M';Ú¯1&dDDD±¶ùfc^Õâ‡ØG6ÉÔóGŸ:¶WÆ#›Ëß×¾,,,Ȳ¥ ÀÆ9áÕ¶·;ܯZ’YòvÉÃÇx1€¨ß¾Ãúúlñø~{ûýuD䜋Ý÷îz_¤¿¾yb._Lí:U_5Àü)‹ÝëõiZ¬­­!+ËQZZÂ9g¼HV7ÜG{{j(Á×Óã:8XÑõnw‹¢üÒõËååÅD„‘vœò¾^ôï˜rRuõÎ@àYg祮®d(”=1v¹<••97ÿÞ££C##ïjjœ’Ÿ› ÷÷?mjª7 ‘ˆˆÈ0H×uÆÄáá·²ì ‡ógg“yyg%fµÊ››±¢"ËÜÆ!cb"¡ä暺ö÷ß÷ö~[^¾º´”ïp¸››°“jD$¢ª*ûà )‘#ú]\¬9·ÌfY’|­­õHD)qÎEQœššò(J¢¢¢Ìf³lm%Tu·¶öÊ?iι švì÷û×ÖÖƒÁPYÙ¹Hd§°°ð¿ÔÌ MÓL&Ó‰9NK’dúu¸ í[ñTBIEND®B`‚awstats-7.4/wwwroot/icon/browser/amaya.png0000640000175000017500000000047412410217071016623 0ustar sksk‰PNG  IHDRíÝâRtIMEÓ0;a» pHYsttk$³ÖgAMA± üa0PLTE9{½ÿ!!99999{Bc{„½ÿÿÿÿŸ’IDATxÚÍ!1„á) }½@ÛÅàH¸…à$(ƒ"H4¶!!‹$$ì zµÙ&Ã.£¾Q?H~ø¾]€÷d0Ö‚ã‰ø #B±V£2ƨÊ-€‘µÞ©Œi˜Õ"2G§ôy½ò;tlËo(L×mdƒ÷‡Û ^‰,1=ÑÜlŽ}«GþöŽ1FÑ*×IEND®B`‚awstats-7.4/wwwroot/icon/browser/rss.png0000640000175000017500000000062312410217071016336 0ustar sksk‰PNG  IHDR*º†tIMEÕ  :‰ÓóÃGIDATxœ•‘¿.da‡Ÿ÷ý>gfYd³K$þT+² Õº¡Ð+4z…V­Qp$n@²µèD¶ÚBC61„12vÆçœ÷Ý‚ ¿ú)ž'?13:›¸{‡ht3{MAQÁ7DÅr ¸a&]!>lIå8òúLLHJ¤mI[ž|B#/O.QK=µòKÌZõ¾æybÁ‡¾Ëc™Ë3¾Ûà´V~Ó¨ÚÄ‚èˆÊ› Ž‚ æÉs¾•>tÑ‘NÐü+ÜU; IEND®B`‚awstats-7.4/wwwroot/icon/browser/dreamcast.png0000640000175000017500000000045712410217071017477 0ustar sksk‰PNG  IHDR;x87tIMEÓ..t?H pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿJs¥Rs¥R{¥Z{­Z„­c„­cˆµkŒµk½u˜Ã„¥ÊŒ­ÎŒ­Ö˜¹Ú©ÉêYÿGtRNS@æØfuIDATxÚc`ÀV9u/ѧ"¶D``à©Ü¹Z·(Ä[¿¼+ä†/ïò“'Þm .ßË–Çx¥`zõ¼*¹òõ†´g¡*Ö›€ºf¤Í¬\dp×mk¹ådð,_ó»e?Èä·YÀvý©þ€l5a)*î]^d”IEND®B`‚awstats-7.4/wwwroot/icon/browser/frontpage.png0000640000175000017500000000122612410217071017514 0ustar sksk‰PNG  IHDR*º†tIMEÖI9Y)JIDATxœ5Á[HSaðÿ÷³‹Ç©Û4Óææ.Zd͘—” Ò.R]ž-$©È"¥ˆ¢(ÊÇ$¢½¨=D&$Ia E”$¥Š(Ã[²157Ýξs¾¯§~?’_zHT2ÈBB€!`6JJŠ1gªÊ$J„z’ɳsËçNW7ÚË4]¢Tn0ÊÁéÅ¡3•åGncbna¹¾©êI=ÝbqçÙ ÝY^—Ý—Ÿ•L°®ÞÑ€ßñêÍw¦r¯ËîrØ8@A éš¦s4MØ­ ôä¦‚ìÆ†ªÖ'ý ¡Y¦œ ²D{?þ>ròqÕñ{­û”TsóÍ×6‹ùÐþ¢º ¡pÌd”%SºómF“ŽDû¿N·¢×/Ö´Ü«› ×g'ƒa Áƒ¡£sP6>u5t6Ursq`nfÚ¤èåò‡×ïµõ¯{åœÉmwÑ-@Â`(æ<3“PTýŽ2S¬{™¥üNBj0ÎZN$Éd’3}qA=5Ç€DE§;Üë9éŒHmOËÈÖ,ƒqèöcè $ž~•_yü¹°ºI-³]1õí“Õéë½²„DA·®©W/øOŽ‹7Ñ›ßÁªÀ!fÔYHBámî K=b,$£ÈG:¢CR¸Ÿž¿ÒeÙ®ð0D˜xeÿéK``¬9ܧ”?e¾·!iè¼^w)q ‹æ‘c^ˆD–MµÕˆ$û%,¹ÙÚj¥2ƃgÉçK¬Z%DpH€6ÞÍ·šm§@ÜïÿhjÊm²g˜;Å}m©´0#¦þŽÓÔ†§ÃE¤Qùæ¸5ÝVrÛ®[ÁÑ1ävW«ú¯TQ7L2 ÓÓ û³%vi+«ù­œÅCa‚½0~˜.WóÒn¾¢ ðÜÒŒÎMgÿx:·öèÉzA€³s„K"?7 ú-ï—fS¨Õ*^9!p˵ÜÓÿÖÔ‹ôì ý¤¸— ‡‚´§ÛÇ´@(@„úöVÖ4a ÌWrMÕñà7àü?™œ Dƒ$TIEND®B`‚awstats-7.4/wwwroot/icon/browser/multizilla.png0000640000175000017500000000044112410217071017713 0ustar sksk‰PNG  IHDRíf0âtIMEÓ $ ¹ˆho pHYs  ÒÝ~ügAMA± üa0PLTE%Gg† ¦  ÞðXRN{ml¦––ÊÁÁçÞâïææ÷÷÷ÿÿÿ4ä· tIDATxÚcøÿï̹wÿÿ3ü;%$¹úþ†×&ÉŒûþ3Ü`v 6ìþÏÐÁZbâ²aZX˜išƒ¤»[£{Ã1ã2C ' |¹s°…$ÂÖô„®•ûf7—ìš÷gršÆ{°¹.œÿôÿÿwÎi2=5Õ/ þZIEND®B`‚awstats-7.4/wwwroot/icon/browser/leechget.png0000640000175000017500000000125212410217071017306 0ustar sksk‰PNG  IHDR*º†tIMEÖ  Û^IDATxœÁËOÓ`ðïë×®í^tlŽ<&q"Hâ¨( ÁøÀ¸z2ž49y3&þ¼@"^Æg8`ŒFâÌ&êaŽÉ¸°1Z¶vë×~þ~PÅeÝÃìÅÖ璉ßßÝDf;+vò}ý¬ÐHJ|‰B&H@¡¨:Yz3=5عî+_¬6ZaÒ͇›[wDea²ƒ‰R: ÍˆJ¯­Ÿ?=_ÍK)=*•²Å(hKÙ|ú¥Œ,¿R_ÛZû¯xhÕDÍ|œè¨åØÎJ´ˆ}{0È É“(Pñ3³>×W\8rÉKç?ãH¬ýœËØHb-š&¥^õÛ¨¹¢÷0Wp.†cŸ¢3ôª?d’ i¬ƒ2ƒFøRè‚95äņÆÔFœ9˜¯C;™4å:Ý(È2 5 …€n2‹=ûò°PéõÔp‚­Æ¤´ŠÊÙ©aQ´ çì\ˆw  ˆ Öe–¯ü½·?ÔŽ¿ö0ͦ£×ê)¡…w@ ãíðòøH÷½Á6Qha¿¶±«Åu5‹Òä1Tx|ÕÚ€¸Ç`LÅU,Š„üGnôñüåCyw.—Ï€@Ž_uXNŒÝŸ]û#5ß¼ ËÅŒŽm&+L&þ½xö2|_Kò%Ješºnutv!V5B Árd9É&X§Ëaq}ùxS…÷o& ¡]UrÙ¿û§zZ«ê«hB±; ­F­\”’ yÑ–DÊvnq=/; ˆÛׯ™^Ÿt¨k @\Ji—"{:þv%ð [A÷ÙGœµînó–ˆ(ÿæ¹'slXÄGIEND®B`‚awstats-7.4/wwwroot/icon/browser/analogx.png0000640000175000017500000000121712410217071017160 0ustar sksk‰PNG  IHDR*º†tIMEÖ(6lJ·CIDATxœÁKHTQàóŸsî=w†;3WGÍÐñUAE‘DAn +s’›= 2Ú.¢Z‚Òƒ‹ 1 …^´ [ô ²‡†ŽŽæ0Îãν÷œ{Îéû€sa"BeæÊÒÒÔôK—.‹6gc×CRk @)éI’1cêËëó7*Y<Ê ‹€µoÛž×oLD¡\áÌ€÷ßßõ]:©k¬Pr­l!³R; UÒGÛ;ïÝTBCQ†naµ»§3ý'›õ¥—èÜT‰ÿÿ QmkÛ¼›ëëî½v‡Æ0»?“›ßÚ³»&½¥äÌöTAÊú¦¸cÒŲk~Ⓦb„Ò¨°Q"‚IÇ^¾µ?Ýå…|!AiÐÒ`æôç·#†—óÿ¬ ×y­<=pfo{Gà„ …–X*PJÛf!„<…ˆJEU|XiõKlÊÁIEND®B`‚awstats-7.4/wwwroot/icon/browser/getright.png0000640000175000017500000000042612410217071017345 0ustar sksk‰PNG  IHDRíf0âtIMEÒ+ÃY pHYs  ÒÝ~ügAMA± üa0PLTE€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿO&IiIDATxÚ̱ ƒ0á_,àšÊÊ[À+¸ÈÈMJ–a%D‰DÅ ŽxE$GnOºOðÕkAPÒ/"w¨ý ëA”ŸÍ>45ÖÙ¦‹ÝÞ¡i;vSèýÊÙOÉI}ÆýñFRyܺØ@÷!Á "}ErÉ^ÕIEND®B`‚awstats-7.4/wwwroot/icon/browser/msie.png0000640000175000017500000000047212410217071016466 0ustar sksk‰PNG  IHDRíf0âtIMEÓ3)yNÿ pHYs ð ðB¬4˜gAMA± üa0PLTE=V—.WÀ)]á@mçXŒë|–×§Üyµ÷±½ÏÉÖí±Ë÷ÎÛøéññ÷÷ÿ÷ÿÿÿÿÿÃK9(tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]qIDATxÚcøwÿ3€È©YóôRc×ýkþqq©ÜÏð¿!ÕĽd?Ã_ޤ5éË×3üeS K)¯gøÃ¬¤ìâRÏðUPhå´´õ „<ƒŒû4£’’Ê}†¯> ‚B>ÿ~K¥¦eßšb>È&Ò 6Ÿr»ÚIEND®B`‚awstats-7.4/wwwroot/icon/browser/webtv.png0000640000175000017500000000047712410217071016665 0ustar sksk‰PNG  IHDR(–ÝãtIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üaZPLTEÿÿÿBBB!!!¥¥¥„„„””µ11­Þcc¥cccœœœ!!œ{{{ÿ½½½ÞÞZZ{RR­!!½kksBB„µµµ­­­½ÞÞÞÆÆÆRRR”””sssQ{vhIDATxÚeÎY€ EQZ (8¢(î›q Êß¹iÂcìûøAÔ8·mÖ{ÂDã)²oŒ^çìî1±§Ù.ÅÅnhKÊØ¿¬¤ª›—Iª"RCú BpO fK9ü泜ë Θ!+IEND®B`‚awstats-7.4/wwwroot/icon/browser/galeon.png0000640000175000017500000000044012410217071016771 0ustar sksk‰PNG  IHDRíf0âtIMEÓ24jdg pHYs ð ðB¬4˜gAMA± üa0PLTE ""*1;@92FU:\xjj`v‰“”­µª§Ÿµ±œ¿Ã½ÎÎÎÖÖÖ÷÷Öÿÿÿ¤Íe{tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]WIDATxÚcøÿÿ[þÿÿÿþÿΡ3ëÁô1!}0=ésZ2þ™}Ì€é?Ã÷ľzC øÇ £' ýµ<ÍL‡/6qÒÿ]K\äA4““"H?Àhž@G7wŸ!IEND®B`‚awstats-7.4/wwwroot/icon/browser/kmeleon.png0000640000175000017500000000044012410217071017156 0ustar sksk‰PNG  IHDRíf0âtIMEÓ $Dê‘ pHYs ð ðB¬4˜gAMA± üa0PLTE;;EwK+”>•s›;›‘XÎ3•ÔƒÎ×Åáæáô÷ñïÿÿÿ÷ÿÿÿÿ‚ùªsIDATxÚcøÿkÕþÿÿÿ3üÞ:û=þ³b†û9 =£ÅÅñîûÿ -Ž.®Ååÿ¶¹¸801×3üž& ¤¤$ÅðÿÝc&%‹p†ÿÿ¾+›¥3üÿÿ\-ÍL3‡‰‰é_BŒÉ@uÿÿ-P`¬Òÿ_WŸQ=9lô¹¬±IEND®B`‚awstats-7.4/wwwroot/icon/browser/omniweb.png0000640000175000017500000000054312410217071017170 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timedim. 24 févr. 2002 16:56:37 +0100¦v tIMEÓ-+*6 pHYs\\hÄ6‰gAMA± üa0PLTE<›fÐ<{Ïi¹W¦ìk·ïƒµè‚Ðû­¸Î¬Èé˜àúµàøÒâóêëðó÷ûÿÿÿ¶æ;g{IDATxÚpÿÿÿØ8ÿÿÿø8œƒ>ÿÿ3kË–0ïøi™– ?àVzt ÀUwB! GUT!‘EwvBÑ$Uz»¥)ô$WªË§.ü$zª¼¤Ÿÿ”WªºYÿÿØEWuïÿ숙ˆÍïés3oßÔèIEND®B`‚awstats-7.4/wwwroot/icon/browser/macweb.png0000640000175000017500000000122612410217071016765 0ustar sksk‰PNG  IHDRH-ÑgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<(IDATxÚbܽ{÷C~àbF €X€Xˆ¹HÄ݈ÿâÏ@ü —F€bAá03uügxúú ÃÉ[/þ}üø!ÎÝ«F€kddibfxùþ+é[϶½Å(Æò‘ßTE„a×Ñ Oß32iJ0˜¨I0üþ r ÃO€bibbdb¸x÷%ÃË·ïnÞÇÀÍôƒá÷Ÿ¿ ‡ïþ`xøöë·þ~àdP“ð`fø÷ï߀jdd8sûÃ×Ïø€ŽßxÅÀËöÁ@šA€ý?÷,e~0¨JË0|üÉÄððî †?2Ó½g˜þý`Pçdxý‹›áïÏO †|o\ å®áaàÆÏÍÃðø· ÃµÏþüüÊ ÈÁÈ@,ÿþfÐeàâädÐ`þÌàªÊÆ`¥§ÁÀ%¦ÌpñÞ}QVFNYnM9V6vp ‹´07'7ß¿”%øB¼D……Ö¿Ïðãý;9ùŸ .úz Zê@ L ÿ#ë?@±üüù‹““‹ä׿ÿþ3ˆŠI0p°130CÙE—‡ÁËLA[Ïá/Ð`°&( F`’û€–ä )h*#0N™˜YÀlFˆ=À“#P#Èiÿ¡ 5þ¤é-¶d²à?¦¸p3¯w—¡4pIEND®B`‚awstats-7.4/wwwroot/icon/browser/mplayer.png0000640000175000017500000000126112410217071017177 0ustar sksk‰PNG  IHDR*º†tIMEÕ  .¾­">eIDATxœZ¥ýþþþÿÿù³ù½ªØÛà ã–Uïõ';']<-XþþýûùöŸˆûyX ÒÈ ÷ó þ#÷õ ÝÖë¶€£Y¤®ÿÿþö£‹¡Š 6Aý&òô ú3èìÐÓúÀºt VQfúÓÇõ€` ý`àúËðƒáõ_âfX#Ãù˜Aä7P#@±€œxD„Aù ƒè†o PÀÍÀpŠŸa½Èj•o ýÌ ÄÄð‡á5ƒÂ >瀈“á$?ÃNq†¸G u?¡âÄ2hÏ&Vÿ.ò~[-÷¨NñÈO uLÜLĘRwùùQ¶3‚ßÿ3ûý|þôËãÐ׌²ß~2BÔ1üaä¸-@,«i³þ`æyþoƒšõÿ—œ?òõ…§\fcÛöŸá6'Ã3&€bbàø¹‚EDõ›û£.¶»ÜR‡ù˜~1œqý/F† ºˆ‰‘áÿ{ÎkŒœÿ^nb’=Ï(ÄÅøù?ÈÝ@SæË1°ýc0ü@,@1×ÿ/lþ.gRIù÷Rýÿ¯¿þÏÆðÿ?Ã}n†“B â?‚ž20ð‹ñŸ÷ÿä3)fVaøœÅð<äÕ–ùò xçýÍàøŠAÿ3Ão Ïþã Ÿðâo¢W¹Aæ02üf1S|¶-s ë_¶ÿ „Ä33?@€{²º´Ø?èIEND®B`‚awstats-7.4/wwwroot/icon/browser/da.png0000640000175000017500000000041112410217071016106 0ustar sksk‰PNG  IHDRíf0â0PLTEñ ô²Ñ—èN ÑÓ‚ÄÁÃöù ãéFà+.áckÔz<Á«¬àJDÑuzó÷+ÇÉ«8¢`tRNS@æØfbKGDˆH pHYs  ÒÝ~ütIMEÕy¬RIDATxÚc```Øðç<ðÿáÓç>€©ÿÀÏ;0ÍÿïÝýïÝ»5 «ν{÷Ž»£$ÄÑÑÒÈÏÑÑߦ¸OœæËž rAäz(¤»*(mIEND®B`‚awstats-7.4/wwwroot/icon/browser/gnome.png0000640000175000017500000000130612410217071016633 0ustar sksk‰PNG  IHDRH-Ñ pHYs  d_‘tIMEÖU|qÝeIDAT(ÏmÑ]HSaðÿ{ÞsŽçœmz6·Ùl.g(gså´E‚ócó‹´nUú0K‚."‚.¼ñª‹À‹®„ K//¬¬-2É‹Ò2,,Ê´L¢†3ug½Ý¤LØsõ<ðüàù Ȧìl0Æ$ 0Fc&²,ËQyùæØè(ãÒA®ÕÆ[¬6‰òB.Çѳ@àåyGé ŽãÆÜnwWG{»øtÈQZªªj ‹é}^¯w|öí»Œ±Ó³™„Bኪªª!8Øë*T ‹¼»Î¹íî{÷žsúý !„RŠŠE“?¾­§2ÍrRŒ 9íàt{d¼÷¤O „@MÓY–™Ÿûóùc¬I-ݶL MâœÂ!ðíä\YI憇‡‡}RYˆ¿³l±[':Âö\›) 8£*<øRz´øs߀ðô‹QæÉÔóï~U4îž;|C'jשg<:šKÞUgCþ‚Úqgã¯\¯·˜ l7Qõš3“âËï‡wå¦wRœµ2õ"nﲲʊxq8šñT E”Íä5jô[âˆÕ/9W7k}¯R3‹…±¶.GˆÎkÅÄBY­³„¬ëMl<*ÙY›vϬU¯æuÇ, ºV 5L‘R `}±…•¼mt©ûÒ+¸´o5$5Rô;9Éh¾’‘N ëñòÛ›J©¬÷ \œkT4ÐÒ€œ®Çÿ¥—7ök¦¢²70ÔÍXÑPµÒ2°B¬µ´j¹a73Š”eH=¶º•Ë͆.vñãAtö¼›Øáv2,ûu~ýíìÒÖV^èä)dTµ‘Lù3Nvêéõ芴Ùí yÛ[°¿KÓtEVåt±¢6x—%wP>åo§”BB ðS8Ê™X—Ëjs˜x—ÅjãìSda+º’èíoÞB ƈ܉+9EM' J¶¬ëØl6b_è¯!Âÿ0'ëמIEND®B`‚awstats-7.4/wwwroot/icon/other/0000750000175000017500000000000012551203300014451 5ustar skskawstats-7.4/wwwroot/icon/other/vk.png0000640000175000017500000000035412410217071015606 0ustar sksk‰PNG  IHDR ÷94/tEXtCreation Timejeu. 16 janv. 2003 13:52:20 +0100 » tIMEÓ 4"RWñy pHYs ð ðB¬4˜gAMA± üa$PLTE€QˆV q%µœ?«¢.¤•• Ž}ˆmxLfAN2E°FIDATxÚc`TvMï\½n¬]Ì}5IEND®B`‚awstats-7.4/wwwroot/icon/other/vp.png0000640000175000017500000000037012410217071015611 0ustar sksk‰PNG  IHDR ÷94/tEXtCreation Timejeu. 16 janv. 2003 13:53:24 +0100‡ô'tIMEÓ û=þŽ pHYs ð ðB¬4˜gAMA± üa0PLTEJÎ!cÖB„ï{­ÿœ½ÿ„¥ïs”çcŒÞR{Î)Z½9­B”R­— ôIDATxÚc`TvMï\}ŽÌuSFIEND®B`‚awstats-7.4/wwwroot/icon/other/vv.png0000640000175000017500000000035712410217071015624 0ustar sksk‰PNG  IHDR ÷94/tEXtCreation Timejeu. 16 janv. 2003 13:51:06 +0100ÄÈ2NtIMEÓ 3/Î ] pHYs ð ðB¬4˜gAMA± üa'PLTEÓÉTØÆdèÝzóæžóí®éã£ãݘÞ׎Ó̓Ⱦn¾µO®šO¾®Y‘>ŽIDATxÚc`TvMï\}ŽÌuSFIEND®B`‚awstats-7.4/wwwroot/icon/other/menu6.png0000640000175000017500000000230112410217071016212 0ustar sksk‰PNG  IHDRa~e/tEXtCreation Timedim. 27 juil. 2003 14:24:20 +0100´+ètIMEÓ ° pHYs ð ðB¬4˜gAMA± üaPLTEÆ)1919B1ŒB9BJ9JR9¥RBJRBJZBRZB”RBÿBJZcJZkJ”cRZkRcsZcsZksZk{cs{cs„k{„k­{skks„Œs„”{Zc{Œ”{ŒœŒRZŒœ¥”ks”„Œ”Î¥œ­µ¥­µ¥­½­µ½­ç½µ½Æµ½Î½œ­½ÆÎÆÎÖÎJRÎÖÞÖÖÞÖÞçÞÞçççïçïï÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*¯YÊ7tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿY‹ÆIDATxÚeÐÝ‚0 `À6-°LQ•‰‹NDPÞÿÑÊÔÄÞ´ùrÒ‹cµc½óq?ä>Bœ‡íTS¥œóˆGˆ8/òÛRfq§Cµ’"Á4f´'v¯ÏòÌËۧ¥S)»¦=±ê"O 2©¦…ZªQ9³ŽÌ/¨F·\Œ§{þy7©l5,4¹&唹X^NøM¥²ÏëÇ{òx&Är³EÖ…ÞM—bì­ð%¦œ–èj¨óÛ—ž»9žz,*¸e§ÊIEND®B`‚awstats-7.4/wwwroot/icon/other/menu2.png0000640000175000017500000000106212410217071016211 0ustar sksk‰PNG  IHDR Ù˰/tEXtCreation Timedim. 27 juil. 2003 14:18:11 +0100 ”0tIMEÓ 3—Zâ pHYs ð ðB¬4˜gAMA± üa†IDATxÚcüÿÿ?!ÀgÍ\æìçp®±†dz  „Í4éÌõg‘ [$%ååä•þýùÃÅÍóóçÏÇï½xñtI­»‰¦ãékO 'ï“R0äææaøÏòþbŸN!;;;3Û÷ïßßÜ?ßlÌôìå› Ü|‚âŒÿ˜þ\­Š0ÚóåjÏf6Iv¡'Ïž1ýûóã××wýúzmB€ñ)ks&©{>Þeç`ºæÉ½+ÿ~ýdaø÷ÿéƒkRw'º]õõ‘bøóÇÓúãÌ­Óï˸síøÝËÇÿGh|'ÄÏÍÿuÃί¹„Å…äUyÿ\Ù¸n;'/»(¤$„Tx¯;j}~úàó™c¯þ10üøÉxÿ1/+Ÿ¿ó' 3=UuF1Vuy ¢_?þ}:|ýõϯ×-¨47ÒY§®eqýÇÇEŸ°Éð_^Í¢É)0/9˜ÖÍkÇß¾~a«iYˆˆÊÂC´­£Ý1I©IEND®B`‚awstats-7.4/wwwroot/icon/other/hh.png0000640000175000017500000000041212410217071015560 0ustar sksk‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:50:24 +0100þ°O$tIMEÓ 2#s fi pHYs ð ðB¬4˜gAMA± üa*PLTE””ÆÎ!ÎÖBçï{ÿÿ­÷ÿœ÷ÿ„çïsÞçcÖÞRÆÎ1µ½¥­­­#W–4(IDATxÚc¸ÉÀÈpžaÆ õ ! Á ^ ö " ü_hð*CÞIEND®B`‚awstats-7.4/wwwroot/icon/other/page.png0000640000175000017500000000037412410217071016104 0ustar sksk‰PNG  IHDR ¦Ši/tEXtCreation Timelun. 22 juil. 2002 19:16:45 +0100«è÷"tIMEÒ;5#•!‹ pHYsttÞfxgAMA± üaPIDATxÚc\$ÇGYø>).QF^i–ÿ_¸™þ=dâàaûsŸ‡‡‰áÁÓ÷¯Î00°00|¿ÿ‡í˜¥)|E]šq½ ÈÿW0#ºÖ5IEND®B`‚awstats-7.4/wwwroot/icon/other/awstats_logo1.png0000640000175000017500000000414012410217071017752 0ustar sksk‰PNG  IHDRo3®W¦ÞtIMEÒ!WY"D pHYs  ÒÝ~ügAMA± üaPLTE™™Ì­­µ”Œ­ssŒZZsZRZscR{kRŒsksss„„Œœœ­{{ŒRZ„RZ{JR{JJscc„¥¥µkk„JRŒRZ”JZ”cc¥œ¥µRZŒZcœZc¥RZ¥ksµZZ„Zc­ZkµZk½{„ÎÆ­ÆÆŒ½Œ””csÆckÎÆRµ½1µcsÎksÎÆ¥Æ½)µ½Jµ½µÆs½ZkÎÆZ½Æ½ÆÆc½Æ„½½!µÆµÆ„{„sk{Œ{ss{ÎÆ”½½9µ­­­cZkRR{ZZŒœ„c¥Œs­”s­”{„{µ¥Œk­Œs½œ„­œœ½Z­Æ¥„έŒœœ¥½¥­µ¥­ÆœÆkZZ½¥„½¥œk{ΔŒÆÞ½”½k½½½ÆccccZZRZsJZ„Jc„cs„JZ{”Œ{œŒs¥”s­œ{µœ„Öµœc{Îs„ÎÖµ”ZsÎRkÎkck”ŒŒµœ{Þ½œçƜƭ­œŒ”µ¥½µ¥µs{Ö½œ{ÖµŒ„ŒÞïÆ¥µ¥Îœ”Μ­çµµç½Æï{{{ïÎ¥ÎÆÎÿçÆµµÞçï÷ÎÖïZRccZcÿÞ½ÿïÎïçÖÿÿÿscJÿÿÞïïç÷÷÷÷Ö­ÞÖÖÖÖÞÿÿ÷ÆÆÖÖÞïÆk½Æ{½½­½½½ÖÿÿÖ÷÷ÞÖ½¥ÖÎÖœ”½ÆBµÖÎÆµµÎÞ½­ÞƵµ¥”­œµÆ­¥Î­œÖµ¥Îµ­s{½ss{½¥¥¥”ŒÎ­”Îc­Î­­­œ½½µ­Ý½¬tRNS@æØf½IDATxÚí˜WZuÇø6åwˆæËPAP.o*ŠÊ…éP( gpkåÖ¬,ÌáÛB§Û¹¦¡¶VÃZåjSW­ÙË_Øóû]@®ˆ)CÏéœÇð~ø|Ïó»÷"ü·Ër¼8u³ú8qÍÖxÞú·P\Ywú7-­Ê°s[tù<óœ”WÔÖ¸7¼ÞõõÀv`(í¹aÃ`1µä‘VFÊFË•/6Ü›Áñg›á¿¶‚É'íV¸Ùó((—Éd£ÕÕ•u÷ 7Œ*ö†·¶ð“kÖfÔœù,“ \yµxÚåñxÂ\Í2~*°´˜ãÜ,Bвßôh€&#ÊâP(äñ€^p;ÈŒcMoøÏ6sR+»àîó¿5q¶ûò Í´P¨ònStÀ;D3ALü£1õÊ,‚–];ïF#köÂ^T²Þ綱ʺz·psÐçÛú}“ñ†AÄ´ï)h0™Û éø¸¹¹3kö§¤–Ë»EÓÓn·–ÐC>U™b™¹`Üã(êv«ÃÎÇ[×,Ù³' J›­ÏÒÀ°Ó´žÞdvjŽe†Ì8ŠeÍhìà-d9¼Oöbƒ/¢Ûé|µßõ©¦oË·þŒù…ýõI$2Ë2û ÚÖ8ï8Ë}²?A 8áq¾¸C0М×X6ò”žYä€YVÐÐl6x‡ã²Ìš½@ "œæärq1æÀ@æÊÕÈýÅŸnüLÏ=É&Ø·êùsÌ2» èI%„t²hy ö»FFÃTÑèÒJTp¦ƒa6q˜•D¥²LÐC¯…dÁò2æa?/æý@ÿøheee~ÆO­³,µ[ÐþØÜ–Wœÿ,ŽŽÝ¯ ˜t q/É{ û±³ß~÷håûÕ‡ó4åÞÎ ªÛ̦aÁ¿VG† ê0<—à9ω~óàáj,v,åOl·ê:ru‘!X&ÅqJ“~h‚7{?úÕƒÕ¯c±Ø¼Ÿ¢Y*-P‹ÉÑÒyÚ‚bÀIà…þD<èÎF¢KK+à÷åMZO±4Eïü—Á~0Z¦`êMd(ù¼ð^yÛæä#‹Ñ¥/b±X@Šâ ¢v Þ&pžX‘ ªÕcý¡ÔÞ‰~vkaáî<­×ë)*ÏâhLÿõ$ž>(¥R‰y¨a‚³7æèù›·æg O-EÝ̉'h1¥ ÷p‚¤\N*ϼÌcØ€ßOÏÌì¨ôõ;L©ué‹]RÔ†„R.‹H E®ÐÀ€× 8æÄè§éë G5µ6ésãñmEÅ(N¥¨´´T®$ŠêéàÐþÂ^Õ£òë1®UëϑǼT8 /QŠ'VJ ÐËœßË^Á<œ¥¶‰JxA-®½_{´uܼ}L“õ–éíÔÏçßywêÂE‘èâ…÷FG+.½ÿÁ‡#ÞñÀG}(ÏO ²8d©­Ýb;W@à%IuN•ÜéìsÁ¾IùŒ Á` [[[ý™¼·L[[’lz£¨@Š÷Px &Âæìë‡ ¤¨!4 êÀµæØ¸ :î¢ÃàÐÙm4ïDrß&ªºÑIpàõ­V…&]ÏárÛ=ù‚v£C-8ÓÓ‹¼¸=ímg!Ð~—»¡A‹³Äa¾œ^B°ÃŠ/6º›5^F,h³uUÖ7P‹—ãf–&7=íÜFCJ±6D‚ ²¦¦®›´ ^®{ÙŽ Ñ”ºé9E)ÃÄY €u CÈ3ÇS¯šu;ç% ²“pçAô½ ¶Q¬CÄ&PT½(QêôÓ †ç·cȵyÀí*!¾æåÖ/¡¢rÄüã` •» 9Eè›# ¡©…[] ÇÚÓG„EyJÝ\åèÑWŽ uBLà­F*EȤdÙQÒ8¤PTPXT\Tr²ôèaÿ×þõB©ÛEs7FIEND®B`‚awstats-7.4/wwwroot/icon/other/button.gif0000640000175000017500000000022312410217071016455 0ustar skskGIF89aÄÿÿÿþþþüüüûûûúúúùùùøøø÷÷÷õõõôôôóóóòòòñññïïïîîîíííìììëëëêêêèèèçççæææååå¹¹¹!ùÿ, BYœHº,M ½Sl]!;awstats-7.4/wwwroot/icon/other/menu5.png0000640000175000017500000000101112410217071016206 0ustar sksk‰PNG  IHDR Ù˰/tEXtCreation Timedim. 27 juil. 2003 14:23:31 +0100<*»tIMEÓ 3dã᪠pHYs ð ðB¬4˜gAMA± üa]IDATxÚcüÿÿ? <ûâü­ þjJŠJÂÅ‘ÅLÈzÈúãá»'Zïxvô¯ƒ‹3ÁY9“ UÌÌ+¼ ¬Ô÷«|M+Kâèφ ¿ï}s’‰á ¯ç…[àêXஹóôÅÅÇ/èýúÇôéä‹ Ÿo¼8ÉR—5­iTQÖÜÒ ,·ÿ\ûþùæg —›áßþŸ? –°üúõ«`Z©½¯ý+¿ïI¿ÿõ‹åߟ¿ /n¾ùõ‹‡áß¿,lllLLL¿ÿýüüä]ˆ‹«ä©·_ü~ôæÚ+Æ?¨¿ðþú›kϹ8Ù%…8Ù˜þ30þcpú)­¯¢4ê¦g_ŸÉÏŸ¿?dxùé˯߿˜nNÍIõsõƒùîëïW^iKh;uH˜CèçãOÚL2Q¡žÐ?wýÜóÏ µ Ï]95Õ3ÚBŒ‡£æ/W‚IEND®B`‚awstats-7.4/wwwroot/icon/other/menu4.png0000640000175000017500000000104412410217071016213 0ustar sksk‰PNG  IHDR Ù˰/tEXtCreation Timedim. 27 juil. 2003 14:19:07 +0100_µÊªtIMEÓ 2“ö±Ç pHYs ð ðB¬4˜gAMA± üaxIDATxÚcüÿÿ? ¬^½°°°••…‹3A¨ãLJ……½ÿãóg†Îξ®®þ¾¾>¸" IÇŽËÍÍ=uêÚãÇ_üýC׬ÙçÎÿÂÂÎööžÿ`2©¿¿?66ó÷ïmsæLûþÁÀÀ†›[b ЪÊNBüš¬l?Øÿúÿý'++;;+ƒ©© ƒ’#Ðq “¶o_8kNÏßl/Þ¼yøâ©‰‰>77Õ‹ÇóŠÂ=AÿóçOjzQNvÉ¿¿L‚¼‚v^Û·oyÿþ±±‘i÷*N"–W¯žýøÅðõ;Ã÷?‚YMz–)ia2 Ll¯Îž= TÄt<ÐuþH^¹rº¢¢ŸŸaá‚>]= ‡xyyW­ZrSQQÑ‹§•••99˜˜~Ì™ÝsôèÑ“'OBà z{{åårr ÃÂ"mllddd€á‘bÄŒ–_¿~*''gii z±öô±üIEND®B`‚awstats-7.4/wwwroot/icon/other/vu.png0000640000175000017500000000035712410217071015623 0ustar sksk‰PNG  IHDR ÷94/tEXtCreation Timejeu. 16 janv. 2003 13:52:55 +0100V÷´tIMEÓ 5p"àð pHYs ð ðB¬4˜gAMA± üa'PLTEÎsÖŒ!ï¥BÿÆ{ÿÖœïÆ„çµsÞ­cΜR½„1­c”J­cþ1IDATxÚc`TvMï\}‡Åw˜IEND®B`‚awstats-7.4/wwwroot/icon/other/ht.png0000640000175000017500000000041512410217071015577 0ustar sksk‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:54:20 +0100ËMtIMEÓ :o! pHYs ð ðB¬4˜gAMA± üa-PLTE„•¬†˜»Œž½•§Ä¥²É²¹É²·É®·É§°Ä£¬Âž©Àš¥»œ·„“²ˆš²,9©“(IDATxÚcxÀÀÀpáÆ   će˜ƒk IEND®B`‚awstats-7.4/wwwroot/icon/other/hx.png0000640000175000017500000000041512410217071015603 0ustar sksk‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:42:18 +0100rä-NtIMEÓ 3E~+¯ pHYs ð ðB¬4˜gAMA± üa-PLTE”x»«xÖ¯…Ú¸—æÄ·îÍÒîÒÒîËÊîÅ»çÁ²â»©ß´ Ö«ŠÎ¢xÇœ|ÆòÎ4(IDATxÚcxÀÀÀpáÆ   ‡P‘©¸PIEND®B`‚awstats-7.4/wwwroot/icon/other/hk.png0000640000175000017500000000040612410217071015566 0ustar sksk‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:51:50 +0100ïø tIMEÓ 39—s®R pHYs ð ðB¬4˜gAMA± üa'PLTEN2€QˆV q%µœR²±?«¢.¤•• Ž}ˆmxLfA5QÍ'IDATxÚc8ÀÀÀp€aÆ  @èÀ`À À ÎÀy…ø&ƒ‘-IEND®B`‚awstats-7.4/wwwroot/icon/other/vh.png0000640000175000017500000000035712410217071015606 0ustar sksk‰PNG  IHDR ÷94/tEXtCreation Timejeu. 16 janv. 2003 13:53:53 +0100ÚåðtIMEÓ 6[³3 pHYs ð ðB¬4˜gAMA± üa'PLTEÆÎ!ÎÖBçï{ÿÿœ÷ÿ„çïsÞçcÖÞRÆÎ1µ½¥­””­­HÑ \IDATxÚc`TvMï\}‡Åw˜IEND®B`‚awstats-7.4/wwwroot/icon/other/menu1.png0000640000175000017500000000072212410217071016212 0ustar sksk‰PNG  IHDR Ù˰/tEXtCreation Timedim. 27 juil. 2003 14:19:26 +0100»çÆctIMEÓ 21Øòe€ pHYs ð ðB¬4˜gAMA± üa&IDATxÚcüÿÿÿ¥K—^½zÅÀÀà↰UTVVrqqÕ½|ù2::‹" Ð0eee 1{÷îŠêêêBPEêþýûüüü·nÝêïïꑘ7o\sssKIIéèè°³³KJJzyy}øða5éçÏŸPcYXÞ½{4UHH¨°|æ'ÑæþöövI@ Š€ >>>---NN΂)BŽ´]€ŽF1 °½Âsu?»‚P' ²IþüÚdppp¼góù/¡*,¹hÖÐûøñ#2—ILLìÛ·oŸ?^´hÐç@‡>|˜™™Y’¡ƒ÷Ó‘ß[ú !ÑÔ 4†À ‚0._¾ t0ðôôôù©„úŽ6&IEND®B`‚awstats-7.4/wwwroot/icon/other/he.png0000640000175000017500000000041512410217071015560 0ustar sksk‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:49:38 +0100È!ÑÄtIMEÓ 19¥EÌÐ pHYs ð ðB¬4˜gAMA± üa-PLTE«”ɼ”Þ¿žáÇ­ëÐÅñØÛñÛÛñÖÕñÑÉìÎÂèÉ»åÄ´Þ¼£Øµ”Ò±˜ÒþY8(IDATxÚcxÀÀÀpáÆ   ‡P‘©¸PIEND®B`‚awstats-7.4/wwwroot/icon/other/awstats_logo5.png0000640000175000017500000000715512410217071017767 0ustar sksk‰PNG  IHDRî6÷]URtIMEÒ('Åæ pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿôôôíííãããÝÝÝÓÓÓÌÌÌÅÅż¼¼µµµ«««¤¤¤“““­­µ‘ŽªwwŠZZsZRcscR~hTˆvhsss„„Œœœ­ƒƒƒŒRZ„RZ{JR{NNwee­œµkk„NRŒRZ”JZ”cc¥RZŒZcœZc¥RZ¥mp²ZZ„Zc­Zkµœ ÊZg±^k½„ÎÆ­ÆÆŒ½Œ””csÆckÎÆRµ½1µcsÎksÎÆ¥Æ½)µ½Jµ½µÆs½ZkÎÆZ½Æ½ÆÆc½Æ„½½!µÆµÆ„{„skŽ}us{ÎÆ”½½9µcZkRR{ZZŒœ„g¥Œs­”s­”{ƒ·¥Œk­Œs½œ„¡¡¡Æ¥„έŒœœ¥½¥­µ¥­ÆœÆkZZ½¥„½¥œk{ΔŽÁÞ½”Æk½¿¿¿cZccZZJZ„bs„JZ{Š{œŒs¥”sÖµœs„ÎÖµ”ZsÎRkÎ¥µ½ogkµœ{Þ½œçƜƭ­œŒ”µ¥µwÒ½œ{ÖµŒ†ØïÆ¥µ¥Îœ”Μ­çµµç{{{ïÎ¥ÎÆÎÿçÆµµÞçï÷ÖÞïÿÞ½ÿïÎïçÖscJÿÿÞïïç÷Ö­ÞÖÖÖÖÖñññÆÆÖÆ{½½½ÖÖÎÖœ”½ÖÎÆµµÎÞ½­·§”Æ­¥Î­œÎ­­s{½ws{½¥¥¦”È©Ž­œ½ÿc ïIDATxÚíZ‹_×fÞ3 ‹€`t–QÑ, Ës• -]V1–]jMc-6†ltF ¥>ª¦immÕ¤iì_Ùsν3;³¯ØVÃã×ãÏwçîìÞï~ç|çœ;[Vöû,ºÞ øQ-Üa½WñcÙñîÑI·^£ª~ïáwÿÑk?”Cdx¢o°',Ë’¸Þk|Sæû.Ô¼çÀþé‰Ä³gÉWÉó.*/ôLD¢ýƒªªH[ƒß]¡ÆË»[öìýþÅô‹¦Å«ß4-ÿëå¢í¼ã£ýaEï ëš¼%èmnll¼ÜÚº÷pçô¹Ä2Zr9±üò%~:ÚUTè5tu л«Ñîn­¿15;;»Ìl//?—¢ƒ €VÓ ¤WÝôFKeÍNÛhîn©_ZZšr_-¦®ɉåo‡e@ p^]+Hotc%åH_X,–E:ƒhæû'?ù¾óFUU{â••I&ÎgR‹øX`EÓu W+@ot¤ç|ú†ñò޾ž‰AI*œEªN£5žþnìÊÞ竚ÎÍͽügSj.™J¥°a躦*+@¯–Oo¤`8"m˜¤]è>Ä(J!¼MA“ðîn>Y}ãÆôtW,;?×¾˜úô|:u{öùÀ‡UQ*@oøØèĸ¬(²´1rr¤ôi”S(k†+ n;3µÔ 5F,ÖkJ¥ÒŸÞN§SäÑ>Td#æÑ}Ú×7‚B¦Þ@/8òtµHÖ¬G¬ðÏ<99ù“³SŸÏBÖ}9÷ì›ÔÕô·ÏWWo¥ÑŸ+|º‚w ¹ôŽOŒ.„eŠmUÙì’#ãz(kæÇÝ6}þ_ªÛx—f ,ßL§WŸÇV0¼>M¦½ôFºú#¤Ú Ë™dÕ((«Õ¦I®|ýQ]Á½™h1•úìæêWþöÅß3·Ÿ#½À®„owÓ{|a´§#ÊÁæ ƒÙJ òRÃ8³7 ìÜ‘Y)(«@n°Á ^¯}ôé=;uñ"²›J%Û×ÖÞ];”‰e—ýI».z!ùÀNÊXÙóÁ¸~[ªa(ŠE‡ñ¬ÑŒkGr­Ä™íÈhŠ¢tLDséí„ Ä5\b7Ap¯Æþúø±$ÝY™·ž*-ƒßhÓ;É‚ÖF›Ó)±åË| : ãÎ $‘®È`öû];R®(–Ãgûq=Rtb$—Þ FƒyɆûSÐ*b7}ëæ_?~"Ü¿“±æn»­êDoxx ÿ‚ìòãœE0¸»l²Â¡ÄãŠ=Äk´+ŠJÆfØ>UbŠ™ ±%5¼É£E øý€ÃD¸‰e@›^]ûó×÷…€pè ø­ycBzöŒ¸‚VÎÓ(×à6!Ç!,7×ø¯)ˆVu sß±0ÜbSÌD‰(Pì¸Ë¥wW|9h³ ÞÌáÞújí_?) þtgÞŠù-ëí°@ïÄàq -«ø~äP'¼$p0Â]AŒà³p£ÂàÂEö?†¡u²àˆS1ïTY!}$Äkï~>½õ€¶þ“7ƒ2#\*À{kuíáÃÇO•ÂÝL¯•ŒY³(H‘qÝ€ÂÃ’|çB×ÇÚEtPj-.mÁÔu‚‹;§Bôb]–ÅĈv©X‘)w0 "àÍ.(Þ¨ÊÈoÃöí—jB_ŽM2­zW¬=üýJÿ=^Ëj·, …m”(ã n~ÐæÁÅ[. Á—]e0‰Ý¸N%›€k%ÂÛÊ}x$`QŦb˜OÙçÒCŽ×ƒ>—Þ/Mrf"Ø4÷µ´^9»äïïÖ~÷Þ=ЪÞÞ^ËJÂ*Ñ#‚ÖñeM÷§¶76COc!þ^ÍéTYR#¸åúé¸ìTVà¸òe!zb9:Ñá¦÷ʺ`mmmµŠÓ{ë‹Û™;wïÞY‰õZ] I.Î’‚ßUT4˜§¶ à ,bitцëv_ CA(¿Ïs £oE¤KûÝôÖbô†š›Cmw àÎÜT:9?ŸYYYÉ ·ÈU¹spC!R4#Ä=ÎèåÞLºDpã¤È †.4Y²ê C—Ç’Ùs°GŠ×™q»Úâ¹I ÷Œ»èÝQ{ ø5Ûšëë«C €·zjif&‘´©›àÃó™LȵŽíõWÎ}B©tïÈ Y^ThàÆ ô‰*Âå‚ s‚¤Ú[·²a ¿KnuÂP²S’½JI´¹ôŽÕÖ¡/·Uïܹ³¹Ílii½±h±ªJ#\ÜKh‡ºæ+]pKšk‘¤P"^€¨dá"¹È¼È ! aEb²†­¯JTæÌHjvJtX¥*µ(/½m¿…FC[=À­okoþ„±ûi:ýÁ%Gî:jYn¸ÈŠÔôq1±»è{ ƒË‹t O(éù›&•×`¬A¸>]ÍNQvˆg]"kÞ®}üq.jòe€hNê¥à¥‚ŠÉ "s6j!Us²• .¯¸òáb hº–÷-Ã%sš!ÍðáùwBîÍšbWN8 ¼Ç¹H”] ÝöX—W\ùp‘^•…€ê-‹©ÔPSõ…þ_ÐèÓ‹K¿¬¹Œöauõ‡—uùòž®\ùõÔÌÅÄÕäüoç®]»†Îü[°@¥O¬è3\Hó¤‘ HƒniN!IºjWD4ÆZ²,›€Œ|¸$yL£Üpá.'Eåt=sÇ´pß~Xt샓´9 ¡híkžœ<3™÷çÖ|2ÕŽX!|‡††æ9\2†´’%Å—-Ò Éj3‰¬ª,>D…eñi·¹T^)qçvÉP¹æéªgJäUU bq¸ª6<Œßë ÷w×Ö©n†:£ÁÄT46yæ,dÞs–u~t ¥ Ð TBá|„î+¯ðWp¼žC9›$]v´Ù·Ì†«HžæžnSí:+. Na,ò­)×]´o¹u³â25Ò1Ð#=ãc Xf˜v«`î;‰MïÌÏŽtuµÇ€Ø^†ÖrËy`IîZîb7{¤Î H”X, %G› ¢ؘ NJáç{NN—á©å[Ù™’œ-2rØ%¼n“•áaÜÿñ¾‰°î;uYeu3”ïƒ7Ÿš>r¤‹™<É%´²äTvXP—€4 îº+jN$ tŠ%Ê•èØ,Ò`&HY×ã¬Áï’é[(*œ+vû„­ó3=ïNðšôjÚÈh÷qøÞ¼? &zÇÆNì=xðv^D ü>Ö·±ø¤(S¢ç7 LCØA^Y™¤¨¬“ ê‰/ + ûY“(y Ê_Ú"â™%dºN¨a£ù”,“Ù§¥«AŽcõBAâ–øEz[Bû÷¿wñíâp{H®{™Çä ÍJ…“ z!Ra Ø Ø&°öJ”Ýëæ»ÁkaÆú£w¹¾Þ|"æÒÉÙœ”!È‘ að<(ê+(†G}#ÅWïð%†hºrMןÃh=÷[ôJG÷É©zÇ…¹¹ßÒ\Z’$D <¯×C…² ¨/W C¸úî ÌöÁͱl%¢Ã&b›óLÃòòÔ”7–ŽÍι3ÒõÙ¬t+ƒ–F#dÌttEÏH$gX–¡wo ò ,ß\¥.²# ˜®hôüäR/t},æ9$){ýV6+‘¼±:£+S ?Å’âXf7¨±§t‘iðO83>þÊÄä'3Ð…;s–³¿<ÚØXÍbVk<‹ß¤Jã‰È¼‡!ḵ»éÄOH•çÿ €…ŸË͇‘¸4 m%z#›Ýx[¹+kz†|±X1Ð? .åt’3T,±A ½¶ÕÜL€— /2’ôñ/ïþxó§Ü­G¨†d‰´Šcó_OXÁÞM§\ÔK mVÁv­ik '&/]BCIJ»77ï­ovåb¹LÞ”–×P£­.LÇà…Õtb°,Û“—*öÂâ³qk‹‰a’c?loÓôÚJJ|h® ÊUÅ8´,žÊSv‘ùÂ-à't81Zªh å­Âeø*T 1Ì®Þø~{û>ug-'¦èV+œ(zBƒÁ‹Œ&›j×S´ü!ÜŒ–)b¹€ãë pÉ<ð²›ß}}‡2Sw@ÑlSz媨8ñjÙuÐÑä6X5ÿ¥Š-6’Q›j9U€«_n~õõýoÌæo×RbÌ$Š]jÚ@114ÆãðAW´'S4Õ;(W´Ï ?$§P¥„¢âêÆæ½{Û÷ÍuÔzÎ/¦cbN¯˜Pt Î`¨K¥]"JÄÝÊOc…¢£õСËöO£ãrÕ€âÆÝÍ{_Ü®3݆EE·(ò@”ü¨Y¼]¢vŠ—)~*”IA8ÖÞyeb©°ˆŸm~¾~û6TßïÅ´‘çX]QahOƒÔþŠ=ZÅHB¸\.ĪQWoÞÊ­­¯¯­Äü¢€8Þ”B¥Y–+Y¼§EµŠÍgeE»Óiw!0 Ài”²éT*·²²’C? §¦p¼ µ·#£Îã‹k7GÁå´XìV 6L.MO'“À“n@&S¹\žá>¿©ÖPø^ñJ=ƒb´©3êj8räˆÓ%´·w./'M€ôÞ°7U§>C+¾{è´¾Õe Åe…œ~$^Ïf?&@’NoŸ(j'H<åÜâùƇ–rŸ3Dñz’æg ÁñóÁ7 °“?.¿Õ¸€ñvCÃÛ ï,,}÷Ê•÷&§/%Ó©÷3sW¯^Å”~a®3áɆ\CÃâ°˦ ƒm£†Þ3pÑh"D8úz£@êÔn·cùsŽŸŸ„N|CL¥%7Ò`‡‡‡S „̪©1âqŸ7Šˆ¥@N qrœ'ØßÔh#ó:ß*`cDÇÏO@'^ÅÙ9¨,à w™ë ó —à5µ¦Z…È2¥@mJ!_À€I $|ñ¨_P‡¸pì nŠÓ¯òzÝ1óË<k”uÀ1Ó»Fc¨£J'¸66ÂÝ%>ððƳçÐLž§8æ^†œNLN:å%é$ùDAÂcÔ+ $Ù¡8<Ò¥•J Šzýh¤ îô´2¹ÉRÅhôtÇÉS@ô"òbf3¬ ‡&$äUŒîŸÄ):‚G¢ù‘Èn#~ÄÛíÇ¿t‰}^è7£ v#•³¶–2nÁÁ!ù,gpBÁQÙ¤€Ø­8BJa·'S|l§žå E÷ûzxòˆKÑ‹~Vy_ÄßÇ`¤"±‘} éFÁ=?VVôôè¡PI‰q\o‘¡êø’BôžAÏÒÿžФÊÈ#Msõä0,¯!YÆöNpTÀ#-¸¿Gm8—`ãüßá*u”%¡xºÞ>_&Pd(g<Y„BÂÃ0!‚å‰ÍÏ*ð”ºÖ©ÇGégAŸ¿…6|‡ÒbÆ ƒÇ§ý¿»€î-\|a´dèØløŽ¡Õfo!z5ð0ÊTíuPÁ—!ù`}C㡦æ¦Ã/AZ õä…j‡ÓjÀ=ÀT§„IÞ8¶šï×4’8 »@- Ø ®êéÔHⓞâIðêV÷œp ;§ºË²ì^O»ûbj6Ͻv÷Ë,ij~ó/ðд–æà›IEND®B`‚awstats-7.4/wwwroot/icon/other/menu3.png0000640000175000017500000000233312410217071016214 0ustar sksk‰PNG  IHDRç„ Ë/tEXtCreation Timedim. 27 juil. 2003 14:18:36 +0100˜­ÃtIMEÓ u><û pHYs ð ðB¬4˜gAMA± üaPLTEBsRkR”k­kµs¥s½{¥{ƌΔ½”֜ƜޥΥ֥ç­ç­ïµçµï½÷Æ÷ÆÿRkZ­”֜ޭçµçµï9Z­çµï!9!R1JœÖ­ç!”Æ!œÖ!µï)µç)½ï19J9­ç9½ïBBRB­ÞJJZRRcRR{ZZkZZsZÖ÷ksœkÖ÷ssss½ÖsÖ÷„„„„Þ÷”Ö÷”çÿœÞÿ¥ïÿ­ïÿµïÿ½÷ÿÎÞÿÎïÿï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíºJtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ+¿ÍIDATxÚeÐën‚@`«;..ŠAH5¢E ©ÖÞ¼_3xôý_¨è‚1vlÎ~9™d¶pùw y8ÜßšŠa?i– AÞèë%‹‘BdDdPÄb×zlµh ¹Ÿ ’9QB ˜¼•2£Cò”O&³Šà­o$£øÔN¾¥­ ޼®¤cv4«}=«¢v#Äñ²3ªª&Cø~`]Mʲð:@½áwºõ]ÚNà¢ázž§[¿¾ãºŽ…ÒK/|ÿÔk‡ËôÆüùs.ç<üÆ@;ÿÄÉIEND®B`‚awstats-7.4/wwwroot/icon/other/menu7.png0000640000175000017500000000111712410217071016217 0ustar sksk‰PNG  IHDR Ýâ/tEXtCreation Timedim. 27 juil. 2003 14:52:40 +0100Var«tIMEÓ 55Ô‚5 pHYs ð ðB¬4˜gAMA± üa£IDATxÚm‘Ë/QÆïLgÒщgh ”ª„ b‡±±°“ˆÄÂÎÖ¿`a)±iXˆ "ÑÄBª‰Wª¡1}(ÎÓ{çq]H4NÎâK¾_N¾|‡Âƒ¿“#0§R€"ìà‹‹]ÑL÷p<\]TÓ÷¦ie²²w`|ri=_‡v— %β†('ÏÿºЗ§XuUa}o“¢(†ŽNÃÁÿQš¬†áœeq,ËꢯÐù¨iIÕ©WŠÆ¦´B$¯Iÿ ‰D"Øl6ªÖÕ¶Ž´ÔóñÔd%ûžŒ>ž¹[ú»Ý.‚išÇýFëµ}h˜+¯§Kꀖå÷Ö’ñžþÖðî °1’$ùý~Ò.†Js%e¢Üs4ty¹)iH¨­ž˜™:; VxÇÝm „PErÊie¼·³£¡{PVsw7у ßX×ÈôgV]×I\¢æçf›ËèÛà^dc« Ðù&g\¾Ñš¾©oŽ ¥ªj,#Êãñv2É{å%¾ÞZêE%¿ý|q­Ì©¡LÀIEND®B`‚awstats-7.4/wwwroot/icon/os/0000750000175000017500000000000012551203300013751 5ustar skskawstats-7.4/wwwroot/icon/os/winlong.png0000640000175000017500000000133112410217071016137 0ustar sksk‰PNG  IHDR(–ÝãgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ƒPLTEýýýó÷úùùùùúúßåéêôùãï÷ö÷÷ûÿÿÚâçÝâæñøýÓßç¦ÀÓúúúäïôáæêÅÝîÇÞîñòóÕçõøøøÈÜèâïøðòóØæï¡ÅàÖßäÝåêïñòÀÏØøüýîñòÕàèúýÿÙåꓺÖÐÞåÙäéõúü÷ûþÙæì¯Ïç·Ê×Ûáå£ÅÝ¦ÄØì÷ü·Óèïñó½ÕåÏÞçìõûÀÔâÃÔÞ–¿Þ¯Ç×úûûéôûøýÿÈÚçÑáë¨ÂÓÚãéáíôòóôÛáæüÿÿÒãîÑãïùüþýÿÿÐÚáåïøðùýàæéÇÖáãèìÚåëÍáñàèíÙâè¦ÊäÖçðÕçñóúýûýýÍÜçÔåð°ÇØ´Ñæ¿ÐÜïôøªÃÔ¸ÐáÚåêÊ×àñóôñóó½ÏÚ¤ÀÓØâè½ÏÛîðñëîðþÿÿ÷ûý¼ØíÝã瘺Òï÷úÞäçËÝèÛãçàæêÄÕáÈÛåóøû×âç²ÊÚæëíîðòâìò§ÊäÎÜä×âêŸÀØþþþÿÿÿ‹æL—ÜIDATxÚbh@ÄÐÐÀ , Í™Äæ”0c ŽÒËgg¨gb ·("ÔU«®<œË;> €ê=õ«yØb«|ˆ¡AÔØÁÖ@ÊBˆU]¾6 €Ò£’í"ãDøk,ˆ¡Þ#$S<(EÛTY³¤° €øŠM²üÍc%ýTÕxˆÁQŒÃ+[%M‰Ã=€½ €œl}ts ¬4ÜJeêˆA6ðRGÎ%ÏÙš¿¢¡ € ncbI-³ganh T/¿S<á—LxIEND®B`‚awstats-7.4/wwwroot/icon/os/java.png0000640000175000017500000000044012410217071015403 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿñï÷fm£¼˜·’¸ÒÒãÿó÷÷÷ÿ÷äéÿ÷ÿ÷ÿÿÿÁÊûÖÚ÷™ªÿÿ÷ÿëïíYܹtRNS@æØffIDATxÚc``˜°gðv3ð€èÝlÀô‡îûwA4ÏßkûAô†½Ýl šûì °S]”¯­®ž’ÁT AGOž6rt3sõ2€ÜÿÿÿCÄÅ5ô¾ÿød€ðøÒY ©®¢üèÉÓ{@îÃÇO¼<€ŒOŸ? )k‚ì…› 7ÂMJûüåë®ý€ 9;øÍÛw˜JHÞÀ´¦µóÅ«W³-:Þ¾{ÏÍÅD@DäÕë7@ÿÙûE¢ÖÍ;wåd¤•ä º›W ¡ô 3ŠÒí{öùxùy¸í>pÈÝøHCY133sLhðáã' Þ‚¸(WoÜ" âн‡ŽÝ}ñÊUm+{ #MÒ|‡’5È,ß3IEND®B`‚awstats-7.4/wwwroot/icon/os/linuxasplinux.png0000640000175000017500000000050012410217071017402 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ05 Ü pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿÎÆ½ï½¥sŒŒ{µ­”œœ”ÆœskZïÞµÿÿÿïïç))½½µEA= LItRNS@æØf`IDATxÚc```™›Àœ3'€iþ/ó ´úU0ÍQúL;®É|¤ï^y$üf÷–i@šw÷é­óô‹Ó»i.¥žÝÇ/100)•ìWZ¤U2&i!“ÐäËCb†QIEND®B`‚awstats-7.4/wwwroot/icon/os/wince.png0000640000175000017500000000051612410217071015573 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/osf.png0000640000175000017500000000045312410217071015255 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿáÞÞ— ¡ezx}ÆÎÎ÷÷÷²º¸ÓØØ-XZ÷ÿ÷ëïï6Z`ÁÆÆEhhï÷÷©´‘·tRNS@æØfqIDATxÚc```Û[»H©-ßÀÀ°eryI·åk®&3–3 ÓdÕðNa¨y ¤™3X:é‡,€tÍ\ 2î7f 74˹†‹Ýl:gXÕ [&wÕ›„10ÄQfõˆ¾IEND®B`‚awstats-7.4/wwwroot/icon/os/ibm.png0000640000175000017500000000035612410217071015237 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿŒŒÆ½½Þçç÷ÎÎçµµÞss½RR­„„ÆJJ­ZZ­””Îccµ¥¥ÖBB¥œœÎš%PtRNS@æØf4IDATxÚc` •åÒÕ*¦¬ó}ÃàÆr"¡«g-˜n\Õ _š-V'âHÈ8PI¬¡IEND®B`‚awstats-7.4/wwwroot/icon/os/syllable.png0000640000175000017500000000105012410217071016267 0ustar sksk‰PNG  IHDR*º†tIMEÕ  óeòiÜIDATxœ]RÏoaùvYº1MÙ n"JR¼5¡ñª­ú¨õß3ñG<¨wcÓjIhZ‹a0¡AJZ*»ß²îO{p.oò’É{oò€ˆ˜™ˆ’$aff–Òü諈ˆOøP€ï{ß»"fæ@úŵr¡P"BDT }¿Ýq£ùï|¡hÛ6H)]§²TZ[-™‰ÈuZçë•Û¹Ü (i!Ìç3×q†ÃÁÖöCˆýþi’°3"""ÀhtÙ0þZ}ÛËö¦‡åý˜«Êã´íÃv4°’@À¿£QT>„ ´3Ên°¢}•j —ëtØëݤnwµ·ë[ò9ÐuÃØØ—å9AÍnpFkZ+ÖBNú?újù"›ô«™ƒh-äjÌ‚É/£ê~àÚQÿóÈhÓ6¶âIEND®B`‚awstats-7.4/wwwroot/icon/os/openbsd.png0000640000175000017500000000054612410217071016123 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÒ¶³ssskUU? Z{½”§. Þ½ic9JJøÍÂïmÃÏŒ…tRNS@æØfwIDATxÚc``ú÷þOLJå¸ßl_õÿƒÜ›Æg ²Úçžgt0¼>Ý¢ªU–Âpzw›©U‹#Ê%g%Z$:;::Ê8ÚÓËÒS;ÚÓÊ]ØÊS\ƒæ2¹„†(i!c ^£$où=àiIEND®B`‚awstats-7.4/wwwroot/icon/os/macintosh.png0000640000175000017500000000043212410217071016450 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa*PLTEÀÀÀÆÖç!1RJs”c„½1J„BJRµÎïZks)Zœ)œµÎkŒ½¥­µÐ tRNS@æØffIDATxÚc```àHÎ..V…åå &Î>²ÇË\\]–W4iO×ôÚí@ÚçÐñr¼‹ÓEíââ¥Ö^?l”âGšënÚÎ`â9uÒ¢nq ¼‹S#X½‹k:P0*00[ó!µùÌôZIEND®B`‚awstats-7.4/wwwroot/icon/os/wii.png0000640000175000017500000000105012410217071015250 0ustar sksk‰PNG  IHDR*º†ïIDAT(Ï5‘KoÓ@Fï‰'qŠZbê´‰0PÚT-?ƒß ,»)jØ„&(/ E$M›‡ã{ì{YD|»#Å‘>äÿ[.Ö«Õ¦Z-í=ßeæÅb±\.}ß×Z»®+¥Ì «ÍÃÃìït À`Y–B)…ˆ[A âJ¥R±èDQD̈X´mfFqK)@(¥’$)%qþlgâ8ž?=ÍQÈélfŒ1 ...„··?®®¾:¥RÞ}þòi:›u:?§Óy§ÓUJ#bÁó¼ËËËñxÜï÷G£¡”»Ý7×Ëhw¯æVË*0³ð}ßqœ~¿'¥¬Õj“Éä÷¯»óç÷axÓú6Úí¶Ö…"‚Vë»m;ÇG'ív;ÚÄo^%&%Ê´ÖR¤  ÙlÄqlÛÅ}ÿ`<÷÷_€ÖÚ“çDLijÒ4E¢Ü˜ìúú@ØVññi~vö®^? ‡½Þ \©æFŸž¾¯T*€lÛ>~{R.—•R¯‚—õú×S]”¯­®ž’ÁT AGOž6rt3sõ2€ÜÿÿÿCÄÅ5ô¾ÿød€ðøÒY ©®¢üèÉÓ{@îÃÇO¼<€ŒOŸ? )k‚ì…› 7ÂMJûüåë®ý€ 9;øÍÛw˜JHÞÀ´¦µóÅ«W³-:Þ¾{ÏÍÅD@DäÕë7@ÿÙûE¢ÖÍ;wåd¤•ä º›W ¡ô 3ŠÒí{öùxùy¸í>pÈÝøHCY133sLhðáã' Þ‚¸(WoÜ" âн‡ŽÝ}ñÊUm+{ #MÒ|‡’5È,ß3IEND®B`‚awstats-7.4/wwwroot/icon/os/win16.png0000640000175000017500000000051612410217071015432 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/linuxzenwalk.png0000640000175000017500000000050012410217071017212 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ05 Ü pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿÎÆ½ï½¥sŒŒ{µ­”œœ”ÆœskZïÞµÿÿÿïïç))½½µEA= LItRNS@æØf`IDATxÚc```™›Àœ3'€iþ/ó ´úU0ÍQúL;®É|¤ï^y$üf÷–i@šw÷é­óô‹Ó»i.¥žÝÇ/100)•ìWZ¤U2&i!“ÐäËCb†QIEND®B`‚awstats-7.4/wwwroot/icon/os/macosx10.png0000640000175000017500000000051112540637257016134 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/bsddflybsd.png0000640000175000017500000000051112410217071016601 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿÐËДioX/=[Mb¥–žÇ©±ïïïA"+³¿ÊÞÞâ•4=b%-ïÖÖÞµ½¤gtRNS@æØf]IDATxÚc``(bÌs`‚à»@tÆ™ô šA'Ó LÇl:$¢+No ÑÌg’À4Çéƒ`yŽæPzˆ*S6V,``UQ6ÈPê&Ôìâ¹€AÈ$P,±€÷€ü¦ë"ÆIEND®B`‚awstats-7.4/wwwroot/icon/os/linuxandroid.png0000640000175000017500000000034612410217071017167 0ustar sksk‰PNG  IHDR(–ÝãtIMEÙ â§Õ pHYs  ÒÝ~ügAMA± üa!PLTEÿÿÿ–À$—À$”¿˜À%ÿÿþíôÚ—Á$—À%—À"æðË4ƒ²ÈtRNS@æØf;IDATxÚ•Ì9À ÄPc²Áý чHy5ÒÀ«²xÔò•—Þ8ê4Œ#Ä.sýŸ°ÓJ¤iOìÐÒe³3Ö&5LÕ¼¡¶€e¦jÌæv„ÑžÝ@š#)lò Í¢¤š²€AÈÐö\œØIEND®B`‚awstats-7.4/wwwroot/icon/os/winunknown.png0000640000175000017500000000051612410217071016703 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/unknown.png0000640000175000017500000000033212410217071016161 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿUÂÓ~tRNS@æØf$IDATxÚc`€FA-„ .!h˜8˜Å•A¡Ñ¤á™%‹™¬ ½IEND®B`‚awstats-7.4/wwwroot/icon/os/winnt.png0000640000175000017500000000051612410217071015625 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/linuxubuntu.png0000640000175000017500000000116412410217071017070 0ustar sksk‰PNG  IHDRH-Ñ;IDAT(‘m’ËKUQ‡¿½Ïõú Í.ef‘iƒ&Iö*šTPFDРl õTƒF(‘ÃfF“šXÑÃE…=4M)Í<ÞsöÞ¿ õÁ‚5Y°~k}è?øàgË;9ïþ¢¡övM È/I2’ij­pãĽø¡¨¬aìöâŽìî=Tß¾…2d˜‡äqŸzñ_cÌÕŠò¿ÈWÕ­=ÄÔâ%”¬¯c0sÛ"}}ó°m½Dò¨ŸL’G£87 x‚ƒ§‰Ê—‚$…”þUÒ¹R®-£äÑY97#ïS9ï4óæ±âÃ+”îŠwŸ“÷NÖÇ?™¹ßMÚÿ² ñ¥«°u-[€1ÖX ÖÔöŸDÂó»„|LÆ=»Ctù(邾åvì ¶¤cìlîÙDdwÁÕÖe‹¡ ‹eY5iÅJT³3=Óßnš €H˜÷ò¡qƒGO¢é\H•NŽ)ùþAùkËå®”h¦ÿº¼K‚WAù‘Q½Û²YoÑ`s³¼K•±DhÁ"ÐBÜêèUL~d¼§k-~ô“]]äûú°••äŽÇØèÏ;„ ™$yz$ÓÈðÞ#˜ï?ðegZY´½Š«£xm#‘°Æ¬±ØÂrŠÏ#SNvÇ6ìº:Š›šÈ5LQøòÙ÷1€¿Íaî‚e7Qz³¥)ÆZÒ7„Á*¯æ™óïð| …|‚â(Êa3%cù ׯV4ºÉhIEND®B`‚awstats-7.4/wwwroot/icon/os/freebsd.png0000640000175000017500000000051112410217071016073 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿÐËДioX/=[Mb¥–žÇ©±ïïïA"+³¿ÊÞÞâ•4=b%-ïÖÖÞµ½¤gtRNS@æØf]IDATxÚc``(bÌs`‚à»@tÆ™ô šA'Ó LÇl:$¢+No ÑÌg’À4Çéƒ`yŽæPzˆ*S6V,``UQ6ÈPê&Ôìâ¹€AÈ$P,±€÷€ü¦ë"ÆIEND®B`‚awstats-7.4/wwwroot/icon/os/win2008.png0000640000175000017500000000047612410217071015602 0ustar sksk‰PNG  IHDRíf0âtIMEÒ ZøË pHYsttk$³ÖgAMA± üa0PLTEMao„pB{°:Š©VÅv'ωG߸"ß²Z5q¸p˜Ç¹ÉÒìèÎ÷ëÞúøóÿÿ÷ÿÿÿª‡TötRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]uIDATxÚcøçîÙ÷ÿÿ3ü--u\sï-Ão÷RGáÕû€t‰£’.ÃëðG%e]†«¡!‚JF¶ fNÒkVÌì`46>Ïй²C$4e?nIKòg4ˆ¥e¿gXµ’Á Dÿ»X4­ö?ÃÿÿÏÞ½ÿ" 3ÒÐI)JIEND®B`‚awstats-7.4/wwwroot/icon/os/palmos.png0000640000175000017500000000053712410217071015764 0ustar sksk‰PNG  IHDRíf0â.tEXtCreation Timejeu. 27 nov. 2003 19:42:30 +0100×™YtIMEÓ ,ä•ì pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿÌÒÔage†ŒŠ÷÷÷s{x’˜šâââ³·¹¢¨­µ½½MPT*35·ÀÃÁÆÎïïï±]ôtRNS@æØfkIDATxÚc``¨xáÀÂ3²€—ñÖ¤í@ú[ô¡Ö£@ 6£ÓÝ؃vg>ÓJ¤iOìÐÒe³3Ö&5LÕ¼¡¶€e¦jÌæv„ÑžÝ@š#)lò Í¢¤š²€AÈÐö\œØIEND®B`‚awstats-7.4/wwwroot/icon/os/linuxdebian.png0000640000175000017500000000115712410217071016772 0ustar sksk‰PNG  IHDRH-Ñ6IDAT(‘’]H“qÆŸÿ»íÝØ‡Fscfm–ÑÈ.Ö`»ÐæV]D–X‚– ^¬’"胨,ØEV&ÔMš$DšEÔœ,®\]„ Í}Yátcê»O÷ï"6¶¨èsq>~8Ï!”Rä5ÕdeVÞ|Þ‰Lî*²8 ¬àA(¯‹ –í5Ö>ºð4?KŠÁ žå1V"û¸Æez²‰D ʇFb5åœJ)Bv»êÓnëñ ‘…›2Ÿ½v8¤”RÇä–C÷\¼Î%7ë)¥à÷£|OÄ5~JÑ9o?€Ù›C¦ùîFV"M©NX†¤Zµ¡ä¤¼U@L6uX´I,^o®q@ø±»œóz{Õ§êÇ á;HL²¶–h‚·ÜBRàׯì× ’ßVG ƒ÷— Úÿ¤“OØ.Í6 ˆW@ $üî_ãv,@¬rÃÖ‘x¢L#”›…B°ß8ç‹Ì²5´½öb¤²\œó,æPYÕ›ð½³Mwžž‘$—´qÔ¾\§¼`¢Üëê3M.` àúÒ‰e•GÝÊ€253Ég"c«þØð‚—iÏÎÍd—bw·\¹\â£[¶OšK'ß"0îJ¾Šå›á[Ï«à(HnFÝ^—@±ò>ù4Ç:¼Š–‘ßýû[”$.ÒÐã››ÿdŠ·³•çy|ÖàQìroß/Æ?Tò«ð¥¹›‡BõI–tThNMßµ‡Ü\+9§>IEND®B`‚awstats-7.4/wwwroot/icon/os/hpux.png0000640000175000017500000000052212410217071015447 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEJ9¥1!½B1­œ”Ösk½”„ÖZJ­½µçÿ÷ÿïïÿÎÆïcZµ„{ÆÖÖ÷çÞ÷­¥Þ鳚tRNS@æØfrIDATxÚcTRdøV³IHûþ~1?QAì†kGÇAù>•Ÿ_? 2ðõgïOÙÅȰsö±Ó'72d.3+¨Ldàµ>mà6—‘AxÕrïãSVt±wÍIoæœ4GPÉ$8 d.Ä=º#Yz€¹IEND®B`‚awstats-7.4/wwwroot/icon/os/aix.png0000640000175000017500000000051212410217071015243 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿœ1”Z„!ss½Œ!B„)”cÿ)Z!c¥9ÿscJïsïBR9k¥s1 °wIDATxÚc``pÜ*ÏÀÀÀ"(Ê*øçæDAAAyöU+Þd8µj¥ÀÆPA†Y+W=J dX5cÕÁ4Q†U«ŽlTSfXµjUµ`X"ˆ^ ¢WJH­4Ne¨”œ)”ÌÀ((h*˜ÆÀÀ((¤$d¸^!ûÔŠü¢IEND®B`‚awstats-7.4/wwwroot/icon/os/win7.png0000640000175000017500000000133112410217071015346 0ustar sksk‰PNG  IHDR(–ÝãgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ƒPLTEýýýó÷úùùùùúúßåéêôùãï÷ö÷÷ûÿÿÚâçÝâæñøýÓßç¦ÀÓúúúäïôáæêÅÝîÇÞîñòóÕçõøøøÈÜèâïøðòóØæï¡ÅàÖßäÝåêïñòÀÏØøüýîñòÕàèúýÿÙåꓺÖÐÞåÙäéõúü÷ûþÙæì¯Ïç·Ê×Ûáå£ÅÝ¦ÄØì÷ü·Óèïñó½ÕåÏÞçìõûÀÔâÃÔÞ–¿Þ¯Ç×úûûéôûøýÿÈÚçÑáë¨ÂÓÚãéáíôòóôÛáæüÿÿÒãîÑãïùüþýÿÿÐÚáåïøðùýàæéÇÖáãèìÚåëÍáñàèíÙâè¦ÊäÖçðÕçñóúýûýýÍÜçÔåð°ÇØ´Ñæ¿ÐÜïôøªÃÔ¸ÐáÚåêÊ×àñóôñóó½ÏÚ¤ÀÓØâè½ÏÛîðñëîðþÿÿ÷ûý¼ØíÝã瘺Òï÷úÞäçËÝèÛãçàæêÄÕáÈÛåóøû×âç²ÊÚæëíîðòâìò§ÊäÎÜä×âêŸÀØþþþÿÿÿ‹æL—ÜIDATxÚbh@ÄÐÐÀ , Í™Äæ”0c ŽÒËgg¨gb ·("ÔU«®<œË;> €ê=õ«yØb«|ˆ¡AÔØÁÖ@ÊBˆU]¾6 €Ò£’í"ãDøk,ˆ¡Þ#$S<(EÛTY³¤° €øŠM²üÍc%ýTÕxˆÁQŒÃ+[%M‰Ã=€½ €œl}ts ¬4ÜJeêˆA6ðRGÎ%ÏÙš¿¢¡ € ncbI-³ganh T/¿S<á—LxIEND®B`‚awstats-7.4/wwwroot/icon/os/kfreebsd.png0000640000175000017500000000051112410217071016246 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿÐËДioX/=[Mb¥–žÇ©±ïïïA"+³¿ÊÞÞâ•4=b%-ïÖÖÞµ½¤gtRNS@æØf]IDATxÚc``(bÌs`‚à»@tÆ™ô šA'Ó LÇl:$¢+No ÑÌg’À4Çéƒ`yŽæPzˆ*S6V,``UQ6ÈPê&Ôìâ¹€AÈ$P,±€÷€ü¦ë"ÆIEND®B`‚awstats-7.4/wwwroot/icon/os/macosx5.png0000640000175000017500000000051112410217071016040 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/psp.png0000640000175000017500000000062412410217071015270 0ustar sksk‰PNG  IHDR Àç+5 pHYs  šœtIMEÖ) N;Ê3IDATÓ}?«‚`…Þ+&A¡àfÐD[º9DBCàêàä‡èKôšÝ£-‡wJÜG·ÔÂE¡Ë?oƒp©ˆûŒç<Ã9Æ^X¯×ãét:™L:ÎkEÂ;§ÓÉqœÝnÇ0Œªªš¦Ñ4ý]mE1ÏóÍfS×µaMøóUm·ÛÝnBEQü§þQ–e]×_Ô‹Ðï÷)ŠzÛšçùápØï÷eY6Ér¹¤iZ’$ß÷yžoµZäù|6MÓ¶íëõ:I’€$IV«UUUqgY†¡®ë¿Çm·ÛÁ``AišFQ$Âl6[,·ÛÍó¼ûý>‰4MBžç].–e“$q]W’¤8Žƒ èõzóù\–ežç‰+ÇãѲ¬ÇãAQ”¢(£Ñ¨™Oª2ŒÃ “H´IEND®B`‚awstats-7.4/wwwroot/icon/os/linuxfedora.png0000640000175000017500000000077012410217071017010 0ustar sksk‰PNG  IHDRH-Ñ¿IDAT(‘e’=h“Q†Ÿ÷žûÝ|µ I5JƒkEÁ‚b\üAqÁAgÝDŠ“{ÁU]\ÄÉ¥{ƒb°ÖÅXƒR Æþ™Ïዟ$=˽\xîyß÷9góCÃÅ)J’²{v Ú?WjΗ’s×fhwVˆ¢@Ççr!PeöÁu<@»³J­ÞȺMTJLìSðn±I}±Éå §Rp°.9ÎÝ›çÙÜü“½Ý{øŒúÂ'|”‚’ëWËÜžyÌòr äxó¾A’tñ! àýÿÆCq`¢2Àþ}{™>qŒfk￲æ= ¼œ0³ Ü^a×ÎQnÝ8ÍÚú/^¾ MZ©GõÉ/(—Fxò|Ž;÷gAò¸\¡—z”†ã$BxèÀ>|l ¿ Eù¾Í ¹Ìc*UÀÁÉÔßÛ…/ÈË9þæ{2Œ#Õ2ßk|^ZËm½7$ð’ð–Ž£ÛMxôtŽdã+?Ú âVÐ Ñ›ãŽR‘‹gOBÀÌ#º\½RŇï=f†“ðQ 2¾;µåÌÏç ¥©Á¥éB‹­Ëþ­õµör ]®}C«ÃIEND®B`‚awstats-7.4/wwwroot/icon/os/debian.png0000640000175000017500000000047312410217071015712 0ustar sksk‰PNG  IHDR ο§lPLTEÁ#Å0Å 1Î OÎ"QÐ1XÓ:b×KqØNsÛ]~Üa‚ÞkŠàt’áy•â~™ãƒœå‹¤æ‘§ç“ªè—­é›°ê¡µë¦¹ì¨ºî´Ãï¹ÈóËÕôÏØõÓÝ÷Üãøàçøâéúéíûíñüòõþþþå÷2¼ pHYs  ÒÝ~üuIDATxÚE‹ÙÂ0(BzÑr„’¶$óÿÿÈ‚øÅ#-@ÜWÚÍ àE›F7ƒqØFs´r“{µÀ’ z!§™.ˆÚéò ^…bj¥Åe¨L¡ˆ{XûñT?‘^m»F3HÞÍ|#\ÝŸéCþ1±K~Á^ƸÕÜIEND®B`‚awstats-7.4/wwwroot/icon/os/win98.png0000640000175000017500000000051612410217071015444 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/winxbox.png0000640000175000017500000000122512410217071016162 0ustar sksk‰PNG  IHDR*º† pHYs  šœtIMEÖ-)ˆ0~i4IDAT(ÏÁÝKSaðïï÷œçœíœ³¹|-uŠ:_È -ñ )ƒèÆ‹®òŠPH¼$"Hˆn"ºˆþ‰BvU7VB"aiE!£’“œnÍé¶sÎÓç#ÛJÓéœb@#³'$Ø#“&À‚”” ÍmGDß¹ò ãÕ[2{ Éô¨@Ò…p4r{®)ºB“7z~Å’"þ£PU«ßzTVÑa¦RYS/éìnÝÜOûs—§ƒcS•OÆWÞ&ÀÂ&.]-[K¶<Û)™xn½Ùj±&éújèõvóùË¡ ‚­\Z_Éeã<4ˆŠÈV.¢b…Ôè¸5x,¼÷±sîÁ÷é‚£LÁÂUÊu™¿Åò]aëìqÐçTÖ»Ãu‡³‹‘B¦?úb1•q šð\(öà8ÂɆAÉÃm¯±-m?úf}#nxy‚C®pØU>OèJªÚ3²ød6CþWÏkÖß—æéÀÈÌÿ}¹Û5áÀ“€40œúš­»s¯!djÕå4=:¿žùT_s*  0Iºu¢7°ü»æK¢ñÊXu‘˜,Afq§¦+—RUO?4•ÔJÉ6ê#Æòçþ¥µ¶¾Ó¶ŸmMHhÌ$ bÝσ#%_~v<Ž6YA“æ:v7o_Kn$Hy.{D$\_Ž<Õ1ïÞo_XMââDKÀfƒ€ˆ@$Á ¦^T’Ó3½¤Dp/(@  @@lb‡µýÿ«0Ñ~<i¡IEND®B`‚awstats-7.4/wwwroot/icon/os/bsd.png0000640000175000017500000000037512410217071015241 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿH=3.&#%FB99q¢˜œµ±ra­½½9ƒ¥­¥Z]]¬­‚ÂtRNS@æØfCIDATxÚc`À!€A~ƪEJJ‹äæ,rR5¹ÄݳXÅIׄ¡³k±–‘º"CšR‘³²r ƒ’±‘²‘s \_è¡q§âIEND®B`‚awstats-7.4/wwwroot/icon/os/linuxvine.png0000640000175000017500000000050012410217071016500 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ05 Ü pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿÎÆ½ï½¥sŒŒ{µ­”œœ”ÆœskZïÞµÿÿÿïïç))½½µEA= LItRNS@æØf`IDATxÚc```™›Àœ3'€iþ/ó ´úU0ÍQúL;®É|¤ï^y$üf÷–i@šw÷é­óô‹Ó»i.¥žÝÇ/100)•ìWZ¤U2&i!“ÐäËCb†QIEND®B`‚awstats-7.4/wwwroot/icon/os/win8.png0000640000175000017500000000133112410217071015347 0ustar sksk‰PNG  IHDR(–ÝãgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ƒPLTEýýýó÷úùùùùúúßåéêôùãï÷ö÷÷ûÿÿÚâçÝâæñøýÓßç¦ÀÓúúúäïôáæêÅÝîÇÞîñòóÕçõøøøÈÜèâïøðòóØæï¡ÅàÖßäÝåêïñòÀÏØøüýîñòÕàèúýÿÙåꓺÖÐÞåÙäéõúü÷ûþÙæì¯Ïç·Ê×Ûáå£ÅÝ¦ÄØì÷ü·Óèïñó½ÕåÏÞçìõûÀÔâÃÔÞ–¿Þ¯Ç×úûûéôûøýÿÈÚçÑáë¨ÂÓÚãéáíôòóôÛáæüÿÿÒãîÑãïùüþýÿÿÐÚáåïøðùýàæéÇÖáãèìÚåëÍáñàèíÙâè¦ÊäÖçðÕçñóúýûýýÍÜçÔåð°ÇØ´Ñæ¿ÐÜïôøªÃÔ¸ÐáÚåêÊ×àñóôñóó½ÏÚ¤ÀÓØâè½ÏÛîðñëîðþÿÿ÷ûý¼ØíÝã瘺Òï÷úÞäçËÝèÛãçàæêÄÕáÈÛåóøû×âç²ÊÚæëíîðòâìò§ÊäÎÜä×âêŸÀØþþþÿÿÿ‹æL—ÜIDATxÚbh@ÄÐÐÀ , Í™Äæ”0c ŽÒËgg¨gb ·("ÔU«®<œË;> €ê=õ«yØb«|ˆ¡AÔØÁÖ@ÊBˆU]¾6 €Ò£’í"ãDøk,ˆ¡Þ#$S<(EÛTY³¤° €øŠM²üÍc%ýTÕxˆÁQŒÃ+[%M‰Ã=€½ €œl}ts ¬4ÜJeêˆA6ðRGÎ%ÏÙš¿¢¡ € ncbI-³ganh T/¿S<á—LxIEND®B`‚awstats-7.4/wwwroot/icon/os/imode.png0000640000175000017500000000042012410217071015555 0ustar sksk‰PNG  IHDRíf0âtEXtCreation Time01/14/03“¡‰tIMEÓ*@vÜ pHYs ð ðB¬4˜gAMA± üa0PLTE¥½¥Æ­½¥½­½­µ)µœ1¹œVƈy¿`¦Ð?ÛÜ÷çûï÷ïÿ÷·™kÌAIDATxÚc`@6e}÷^ˆæ¾{§D´€)›ÿÿ€åÿÞM€¨»[¿{wˆæú{×DÇBÕ±ÎZ‰03OÞ¸rw{IEND®B`‚awstats-7.4/wwwroot/icon/os/symbian.png0000640000175000017500000000045212410217071016127 0ustar sksk‰PNG  IHDRíf0â.tEXtCreation Timejeu. 27 nov. 2003 19:47:39 +0100¤(ÎtIMEÓ 3Úvf: pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿ÷÷ÿZš½Þï÷–¿Ôc”5ƒ±!{¥÷ÿÿÿÿ÷ÿç½ÿ÷çÿÆsÿ”ÿµBÿÞ¤ð9¤štRNS@æØf6IDATxÚc```àd®÷šçÞ0͹ÂgT†Ð,!š)LB‡Cè¦pT>Lž%U?¦²"ÿŒIEND®B`‚awstats-7.4/wwwroot/icon/os/macosx9.png0000640000175000017500000000051112410217071016044 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/qnx.png0000640000175000017500000000037112410217071015273 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÆÿÿÎ1»¢5wy1ãº1XoR¬ºº*RCÖµ9ÎÖÖ†•ŠÞççÖÞÞÿÿÿ¿¯d®=ewtRNS@æØfBIDATxÚc`À!€Áï]£ D£CÚ²MŽêi³¦V^;½‰!,-sõšÔ*cã°ð4àze'c z˜>û1G4GúÇIEND®B`‚awstats-7.4/wwwroot/icon/os/macosx6.png0000640000175000017500000000051112410217071016041 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/next.png0000640000175000017500000000044412410217071015444 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿhe_ ="VIœ˜˜½½½„U\Œ7L¦"<•Š4νÖÖÖ€:ÈçtRNS@æØfjIDATxÚc````´gÆ»ÁÔî». ¬Ûv½vÒ«ÖøÞœ^m½sf ‹WZ[¦Y“PG[òäf¥Œe% ¼‘E²’!»±’в)Ð1C%ã Íl¢6W h¸ÄƒF|KéIEND®B`‚awstats-7.4/wwwroot/icon/os/win81.png0000640000175000017500000000073412540637360015451 0ustar sksk‰PNG  IHDR*º†£IDATxœ=ŽKk“Q„gÞsRë544(qa‚‹Òºé¦îÄàÂÿäŸq)¸Ü܈ µ.š¤Msmîý¾sÞqÛ‡YÍ ÃЕ%‘”È3rN«î²;;£«óÅèlrù·ø~?.ÇëóÓÞ´?·çí?Ç/jÇ_]ý«-_ÏÊR‚‹Ø{ÛŠß¿üüôñór¶òáðÃAy¦ý5TÐ °b àˆëÅz6ZB@á­€æÙr Ñ2D’4F‚I^zÅ*Ä]*VC !HPtâšÆ¹ !ej+$'€"c½QÝ;zŽž4ëJ¬=Ý51¡Œ´_oT£¸ÙüCT’‘Àm$2Û“ßNn«;êÉq»{Ú a’´ñ_½yi„Lnòš@$c ™ e¡(D$ŒR2Dú6“–³œ.ÐÔîï>«Ý{´u'`ÛËÙÊL“ PÁŒ0@ñõ»Vs¿1,¦ýå ;Ù©>,9çÂçy¹.R™òµCÈ›çÚ(Ƀ ™óáâòl2íMGãagÒ:jþá …›˜TÒIEND®B`‚awstats-7.4/wwwroot/icon/os/winvista.png0000640000175000017500000000047612410217071016337 0ustar sksk‰PNG  IHDRíf0âtIMEÒ ZøË pHYsttk$³ÖgAMA± üa0PLTEMao„pB{°:Š©VÅv'ωG߸"ß²Z5q¸p˜Ç¹ÉÒìèÎ÷ëÞúøóÿÿ÷ÿÿÿª‡TötRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]uIDATxÚcøçîÙ÷ÿÿ3ü--u\sï-Ão÷RGáÕû€t‰£’.ÃëðG%e]†«¡!‚JF¶ fNÒkVÌì`46>Ïй²C$4e?nIKòg4ˆ¥e¿gXµ’Á Dÿ»X4­ö?ÃÿÿÏÞ½ÿ" 3ÒÐI)JIEND®B`‚awstats-7.4/wwwroot/icon/os/linuxgentoo.png0000640000175000017500000000126512410217071017043 0ustar sksk‰PNG  IHDRhOGsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEØ1-Ÿ,h5IDAT(Sm]K…ŸÙÙ×µÕÄ]3K3Á¤ÐeÐMAEÿ ~Wä?+CòÆ´„ÓÄ\ÖuÝ©]ÇÙwgÜ™ÓÅVtà½z9ç}ÏcHR»-bžk€ïw$IF£ÑÑêê†$¼{³K:3QiiéXÛ_ö$IH’Uiõ|µjK›Ÿ,RÉI8³}…¡T,Jñ÷Ë{œ7Nyþâ>HÒÉñ¹Â0”çJ×#m}¾èeHÒÊòAk€‡îrZƒÃ„]zçËGm¾ä:R¡àkqqíÒ `Ÿ¶‘ Fr þ(P9i2t5‰ç%x÷¶…놽åþ®Åõñ ž±²òšÑÑk l»‹áû^½\æé³ fS@­É>¿¨V ÈåÓ´[`Y`;ub†Mìû¾M&“Æo‚ïÃ×½Ò)‡……iâåJ™b)¤f[Ä3?¹‡7.¹XŸ0E&Íf §aù|ŒÉÉ$¦iü­iHÒOË£ÓY:°~T« úRÃ8g&®’ì2;k’ÏljÊ”J í9&nfI$bHqú’&­Àehh0 “ˆññîå«’ø¶[À;™››bàJ‚° õ:84}0€nÔÀ9+÷Œn= ÙÉ¥‰'zå£..z#à°`Q>.qûÖ0ó 3AÐÒæúùü™ó7Ѽ¨œT)•ŠäsýÌß™bl,÷/œZÍfksÛö@1†G²LL\cjz’þþ4ÿÓ/þÁkÄ?÷¨IEND®B`‚awstats-7.4/wwwroot/icon/os/bsdfreebsd.png0000640000175000017500000000051112410217071016564 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿÐËДioX/=[Mb¥–žÇ©±ïïïA"+³¿ÊÞÞâ•4=b%-ïÖÖÞµ½¤gtRNS@æØf]IDATxÚc``(bÌs`‚à»@tÆ™ô šA'Ó LÇl:$¢+No ÑÌg’À4Çéƒ`yŽæPzˆ*S6V,``UQ6ÈPê&Ôìâ¹€AÈ$P,±€÷€ü¦ë"ÆIEND®B`‚awstats-7.4/wwwroot/icon/os/sunos.png0000640000175000017500000000032212410217071015630 0ustar sksk‰PNG  IHDRíf0âtIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üa PLTEÿÿÿ¥Î÷ZZ½î»€-tRNS@æØf?IDATxÚEŒÁ 0‘ AÝÈRú¨‰¹ ðg°*¬îÀ𦴒,‰šg@:I¦obí¤G¯/nš¼‰Ü£|1ËIEND®B`‚awstats-7.4/wwwroot/icon/os/win2000.png0000640000175000017500000000051612410217071015565 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/bsdnetbsd.png0000640000175000017500000000051112410217071016431 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿÐËДioX/=[Mb¥–žÇ©±ïïïA"+³¿ÊÞÞâ•4=b%-ïÖÖÞµ½¤gtRNS@æØf]IDATxÚc``(bÌs`‚à»@tÆ™ô šA'Ó LÇl:$¢+No ÑÌg’À4Çéƒ`yŽæPzˆ*S6V,``UQ6ÈPê&Ôìâ¹€AÈ$P,±€÷€ü¦ë"ÆIEND®B`‚awstats-7.4/wwwroot/icon/os/macosx4.png0000640000175000017500000000051112410217071016037 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/iphone.png0000640000175000017500000000074612410217071015755 0ustar sksk‰PNG  IHDR*º†-tEXtCreation Timemer. 4 août 2010 12:39:39 +0100wÛtIMEÚ ,ËÆ+ pHYs ð ðB¬4˜gAMA± üaS]”¯­®ž’ÁT AGOž6rt3sõ2€ÜÿÿÿCÄÅ5ô¾ÿød€ðøÒY ©®¢üèÉÓ{@îÃÇO¼<€ŒOŸ? )k‚ì…› 7ÂMJûüåë®ý€ 9;øÍÛw˜JHÞÀ´¦µóÅ«W³-:Þ¾{ÏÍÅD@DäÕë7@ÿÙûE¢ÖÍ;wåd¤•ä º›W ¡ô 3ŠÒí{öùxùy¸í>pÈÝøHCY133sLhðáã' Þ‚¸(WoÜ" âн‡ŽÝ}ñÊUm+{ #MÒ|‡’5È,ß3IEND®B`‚awstats-7.4/wwwroot/icon/os/linux.png0000640000175000017500000000050012410217071015616 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ05 Ü pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿÎÆ½ï½¥sŒŒ{µ­”œœ”ÆœskZïÞµÿÿÿïïç))½½µEA= LItRNS@æØf`IDATxÚc```™›Àœ3'€iþ/ó ´úU0ÍQúL;®É|¤ï^y$üf÷–i@šw÷é­óô‹Ó»i.¥žÝÇ/100)•ìWZ¤U2&i!“ÐäËCb†QIEND®B`‚awstats-7.4/wwwroot/icon/os/netware.png0000640000175000017500000000044412410217071016133 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÆØ± "ÁÎȵÑÖyµÖ.>ÿü÷© æÂ¾½)îúõTÇwIDATxÚc`2teäbpdt©S÷cx×{Øeî•w ïú/™ÌÿóˆáP÷߃o·fîÞÿ©öc0s÷Ýo70é{Ý»w20¬¾T±ÿž%çêv»þ}œ •«Øðî+``¨˜ÂÙÉÌÀ(, (’À±‡=z*œ^’úIEND®B`‚awstats-7.4/wwwroot/icon/os/digital.png0000640000175000017500000000040612410217071016101 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEœ1œBœ9΄œœ9­)R¥!N¥B·Rsâ³ÂÊwñÙÞÓ”ªµ=gÆkŒg¹BñtRNS@æØfLIDATxÚc`À€Ap¦¢øsAqáe†BµF% ¿Î¾9²kî†åkw»ì¶Z° Èß»k ƒXyçʦ6  >W°>¨~4ÚñŒWº¤IEND®B`‚awstats-7.4/wwwroot/icon/os/bsdkfreebsd.png0000640000175000017500000000051112410217071016737 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿÐËДioX/=[Mb¥–žÇ©±ïïïA"+³¿ÊÞÞâ•4=b%-ïÖÖÞµ½¤gtRNS@æØf]IDATxÚc``(bÌs`‚à»@tÆ™ô šA'Ó LÇl:$¢+No ÑÌg’À4Çéƒ`yŽæPzˆ*S6V,``UQ6ÈPê&Ôìâ¹€AÈ$P,±€÷€ü¦ë"ÆIEND®B`‚awstats-7.4/wwwroot/icon/os/winxp.png0000640000175000017500000000047612410217071015640 0ustar sksk‰PNG  IHDRíf0âtIMEÒ ZøË pHYsttk$³ÖgAMA± üa0PLTEMao„pB{°:Š©VÅv'ωG߸"ß²Z5q¸p˜Ç¹ÉÒìèÎ÷ëÞúøóÿÿ÷ÿÿÿª‡TötRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]uIDATxÚcøçîÙ÷ÿÿ3ü--u\sï-Ão÷RGáÕû€t‰£’.ÃëðG%e]†«¡!‚JF¶ fNÒkVÌì`46>Ïй²C$4e?nIKòg4ˆ¥e¿gXµ’Á Dÿ»X4­ö?ÃÿÿÏÞ½ÿ" 3ÒÐI)JIEND®B`‚awstats-7.4/wwwroot/icon/os/linuxredhat.png0000640000175000017500000000106512410217071017015 0ustar sksk‰PNG  IHDRH-ÑüIDAT(‘…‘AKTa…ŸïûîÌ0£Xi%1ƒ˜å%¥ "õ-lÕ.•‹@Ú¶ËàÚeHkB5$m‰’hS¶r¨1Çštš™{¿{O §IôÀ»y9Þ÷ ×9îZË­8&Ë!¬åc&é$á%Pñžb.Ç^t4”’„+I¦µx‰PâNšR‰"ŽI4¡j •v›b6‹íuŽa ú€¶µÃWcÈç%N£ÏZ*QDpÏ€Ï@Ù9†Ò” iÊYÀ #Þ3ä{ÆK˜uPØžZË» àÀ{nJÜ0ÀOർVõ²Ù‡ašÒ K%ò_€«“€ pFâ²Ä7c0ÝÖêz&Ãí(✄ë¿]ÅÁ&ÀÁÈùy6''©ôôP³–ã@ú×à“1¼Êå®MLÐêîf )ÍÍñdi‰÷ \ÚÙád>@œ$ì×ëTšM–c³ÝÆ|ØÚÒë ªÕ*ÓÓÓüØßg¹\fow—®L† ðÏy¾ºJÝûÛ%É{¯F£¡(Šôï½fffô¢\Ööö¶îOMi´XÔhj4 8ç( G‚˜§X*±¾¶Fµ^çÁì,¥ÁÁʤNYÿ V«±²²Âéþ~ÆÇÆÈwþþ¯1Žcš­…BÀ¹?û_Dâë„Tá{`IEND®B`‚awstats-7.4/wwwroot/icon/os/winphone.png0000640000175000017500000000073412410217071016317 0ustar sksk‰PNG  IHDR*º†£IDATxœ=ŽKk“Q„gÞsRë544(qa‚‹Òºé¦îÄàÂÿäŸq)¸Ü܈ µ.š¤Msmîý¾sÞqÛ‡YÍ ÃЕ%‘”È3rN«î²;;£«óÅèlrù·ø~?.ÇëóÓÞ´?·çí?Ç/jÇ_]ý«-_ÏÊR‚‹Ø{ÛŠß¿üüôñór¶òáðÃAy¦ý5TÐ °b àˆëÅz6ZB@á­€æÙr Ñ2D’4F‚I^zÅ*Ä]*VC !HPtâšÆ¹ !ej+$'€"c½QÝ;zŽž4ëJ¬=Ý51¡Œ´_oT£¸ÙüCT’‘Àm$2Û“ßNn«;êÉq»{Ú a’´ñ_½yi„Lnòš@$c ™ e¡(D$ŒR2Dú6“–³œ.ÐÔîï>«Ý{´u'`ÛËÙÊL“ PÁŒ0@ñõ»Vs¿1,¦ýå ;Ù©>,9çÂçy¹.R™òµCÈ›çÚ(Ƀ ™óáâòl2íMGãagÒ:jþá …›˜TÒIEND®B`‚awstats-7.4/wwwroot/icon/os/os2.png0000640000175000017500000000050112410217071015163 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üa0PLTEÆÿÆ÷ûûÁÁΠ  âçëÖÖÞÎÎÎïï÷Qa¦ÆÖÒa„Ó¿ÇàéìôÒÚïçïÿ<©þtRNS@æØfRIDATxÚc`Àì‘' €TH٪݄Âk}Vtïb06Ò¹(²ºƒÁØXg×Ù× ʪ!+ºv´2T¨9JJ­R``5N,q``2VRRaÀd‡› Ó„³IEND®B`‚awstats-7.4/wwwroot/icon/os/win10.png0000640000175000017500000000073412540637324015441 0ustar sksk‰PNG  IHDR*º†£IDATxœ=ŽKk“Q„gÞsRë544(qa‚‹Òºé¦îÄàÂÿäŸq)¸Ü܈ µ.š¤Msmîý¾sÞqÛ‡YÍ ÃЕ%‘”È3rN«î²;;£«óÅèlrù·ø~?.ÇëóÓÞ´?·çí?Ç/jÇ_]ý«-_ÏÊR‚‹Ø{ÛŠß¿üüôñór¶òáðÃAy¦ý5TÐ °b àˆëÅz6ZB@á­€æÙr Ñ2D’4F‚I^zÅ*Ä]*VC !HPtâšÆ¹ !ej+$'€"c½QÝ;zŽž4ëJ¬=Ý51¡Œ´_oT£¸ÙüCT’‘Àm$2Û“ßNn«;êÉq»{Ú a’´ñ_½yi„Lnòš@$c ™ e¡(D$ŒR2Dú6“–³œ.ÐÔîï>«Ý{´u'`ÛËÙÊL“ PÁŒ0@ñõ»Vs¿1,¦ýå ;Ù©>,9çÂçy¹.R™òµCÈ›çÚ(Ƀ ™óáâòl2íMGãagÒ:jþá …›˜TÒIEND®B`‚awstats-7.4/wwwroot/icon/os/win80.png0000640000175000017500000000073412540637342015450 0ustar sksk‰PNG  IHDR*º†£IDATxœ=ŽKk“Q„gÞsRë544(qa‚‹Òºé¦îÄàÂÿäŸq)¸Ü܈ µ.š¤Msmîý¾sÞqÛ‡YÍ ÃЕ%‘”È3rN«î²;;£«óÅèlrù·ø~?.ÇëóÓÞ´?·çí?Ç/jÇ_]ý«-_ÏÊR‚‹Ø{ÛŠß¿üüôñór¶òáðÃAy¦ý5TÐ °b àˆëÅz6ZB@á­€æÙr Ñ2D’4F‚I^zÅ*Ä]*VC !HPtâšÆ¹ !ej+$'€"c½QÝ;zŽž4ëJ¬=Ý51¡Œ´_oT£¸ÙüCT’‘Àm$2Û“ßNn«;êÉq»{Ú a’´ñ_½yi„Lnòš@$c ™ e¡(D$ŒR2Dú6“–³œ.ÐÔîï>«Ý{´u'`ÛËÙÊL“ PÁŒ0@ñõ»Vs¿1,¦ýå ;Ù©>,9çÂçy¹.R™òµCÈ›çÚ(Ƀ ™óáâòl2íMGãagÒ:jþá …›˜TÒIEND®B`‚awstats-7.4/wwwroot/icon/os/linuxpclinuxos.png0000640000175000017500000000050012410217071017563 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ05 Ü pHYs ð ðB¬4˜gAMA± üa0PLTEÿÿÿÎÆ½ï½¥sŒŒ{µ­”œœ”ÆœskZïÞµÿÿÿïïç))½½µEA= LItRNS@æØf`IDATxÚc```™›Àœ3'€iþ/ó ´úU0ÍQúL;®É|¤ï^y$üf÷–i@šw÷é­óô‹Ó»i.¥žÝÇ/100)•ìWZ¤U2&i!“ÐäËCb†QIEND®B`‚awstats-7.4/wwwroot/icon/os/macosx8.png0000640000175000017500000000051112410217071016043 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/amigaos.png0000640000175000017500000000052612410217071016107 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÆÿÿ¬œ¬JÎÿÎÞ¬½1JJ11c1ÿÎεccœæ1JÿÿæÞîc‰”gDPtRNS@æØfvIDATxÚc``˜"%Ì&óß{-Òÿ}ŽØ¼r``9s×gÙ®†YOîž{(Õ uäâ»D 5†…2«v'J„1,”Þ(•–Ä ¸z£ ’RƒWöÆJAŠ mmªJ‘ ,jJAªê N¡Aª! „” nå!Îúù—_IEND®B`‚awstats-7.4/wwwroot/icon/os/cpm.png0000640000175000017500000000027712410217071015251 0ustar sksk‰PNG  IHDRÞôtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿ¥ÙŸÝtRNSÿå·0J.IDATxÚcøÿÿ ÏxÝÀÝÀPÉÀPÉÀPq ÈÞ ÁÙÕ ³ª gìòIEND®B`‚awstats-7.4/wwwroot/icon/os/dos.png0000640000175000017500000000045412410217071015254 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEåßÞÀŒ(:@¬STµµU/C©A¯ÐÐ)¼³¨3  U;]ç›tRNS@æØfuIDATxÚc¸¼€Ï˜ïΫ®µïÞY1X=µ¶ÎnƒÝªµ¿ªb°³ZûÖîù+†3·Ïî=s惠 GKæÌ, ÝQ1-tƒÐá=§„7m0vÍÒN@(¾ qÃÔ¨L :q°™@¾’²‹iZ*E³.†4Þ_IEND®B`‚awstats-7.4/wwwroot/icon/os/irix.png0000640000175000017500000000047512410217071015445 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üaPLTEÆÿƵÆÎRs”ÎÖÞk„œççïÿÿÿŒœ¥¥­½œ£¿ŽtRNS@æØfrIDATxÚÍKE0Ðo ”Ä´T˜û…iÓzLÝ\éÜ1âvì‘tÙ88Èãx(´Lÿ+· ©©ÜHa<×âŸÐ‹?ó:F?ŸÎf;”,>>è–Ê&Õ7¬6 # ΰÔ]øÊ)l)Í„|Ÿ=Ï WŠô0MðIEND®B`‚awstats-7.4/wwwroot/icon/os/win2003.png0000640000175000017500000000047612410217071015575 0ustar sksk‰PNG  IHDRíf0âtIMEÒ ZøË pHYsttk$³ÖgAMA± üa0PLTEMao„pB{°:Š©VÅv'ωG߸"ß²Z5q¸p˜Ç¹ÉÒìèÎ÷ëÞúøóÿÿ÷ÿÿÿª‡TötRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]uIDATxÚcøçîÙ÷ÿÿ3ü--u\sï-Ão÷RGáÕû€t‰£’.ÃëðG%e]†«¡!‚JF¶ fNÒkVÌì`46>Ïй²C$4e?nIKòg4ˆ¥e¿gXµ’Á Dÿ»X4­ö?ÃÿÿÏÞ½ÿ" 3ÒÐI)JIEND®B`‚awstats-7.4/wwwroot/icon/os/win.png0000640000175000017500000000051612410217071015263 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/bsdi.png0000640000175000017500000000037512410217071015412 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿH=3.&#%FB99q¢˜œµ±ra­½½9ƒ¥­¥Z]]¬­‚ÂtRNS@æØfCIDATxÚc`À!€A~ƪEJJ‹äæ,rR5¹ÄݳXÅIׄ¡³k±–‘º"CšR‘³²r ƒ’±‘²‘s \_è¡q§âIEND®B`‚awstats-7.4/wwwroot/icon/os/j2me.png0000640000175000017500000000105012410217071015315 0ustar sksk‰PNG  IHDR*º†tIMEÕ  óeòiÜIDATxœ]RÏoaùvYº1MÙ n"JR¼5¡ñª­ú¨õß3ñG<¨wcÓjIhZ‹a0¡AJZ*»ß²îO{p.oò’É{oò€ˆ˜™ˆ’$aff–Òü諈ˆOøP€ï{ß»"fæ@úŵr¡P"BDT }¿Ýq£ùï|¡hÛ6H)]§²TZ[-™‰ÈuZçë•Û¹Ü (i!Ìç3×q†ÃÁÖöCˆýþi’°3"""ÀhtÙ†w Ö½{Íå#‚~xîÝ9 ý¨ïÝ3? ýTãM`ÈÜ 3„ù=‚JP= IEND®B`‚awstats-7.4/wwwroot/icon/os/win8.1.png0000640000175000017500000000133112410217071015506 0ustar sksk‰PNG  IHDR(–ÝãgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ƒPLTEýýýó÷úùùùùúúßåéêôùãï÷ö÷÷ûÿÿÚâçÝâæñøýÓßç¦ÀÓúúúäïôáæêÅÝîÇÞîñòóÕçõøøøÈÜèâïøðòóØæï¡ÅàÖßäÝåêïñòÀÏØøüýîñòÕàèúýÿÙåꓺÖÐÞåÙäéõúü÷ûþÙæì¯Ïç·Ê×Ûáå£ÅÝ¦ÄØì÷ü·Óèïñó½ÕåÏÞçìõûÀÔâÃÔÞ–¿Þ¯Ç×úûûéôûøýÿÈÚçÑáë¨ÂÓÚãéáíôòóôÛáæüÿÿÒãîÑãïùüþýÿÿÐÚáåïøðùýàæéÇÖáãèìÚåëÍáñàèíÙâè¦ÊäÖçðÕçñóúýûýýÍÜçÔåð°ÇØ´Ñæ¿ÐÜïôøªÃÔ¸ÐáÚåêÊ×àñóôñóó½ÏÚ¤ÀÓØâè½ÏÛîðñëîðþÿÿ÷ûý¼ØíÝã瘺Òï÷úÞäçËÝèÛãçàæêÄÕáÈÛåóøû×âç²ÊÚæëíîðòâìò§ÊäÎÜä×âêŸÀØþþþÿÿÿ‹æL—ÜIDATxÚbh@ÄÐÐÀ , Í™Äæ”0c ŽÒËgg¨gb ·("ÔU«®<œË;> €ê=õ«yØb«|ˆ¡AÔØÁÖ@ÊBˆU]¾6 €Ò£’í"ãDøk,ˆ¡Þ#$S<(EÛTY³¤° €øŠM²üÍc%ýTÕxˆÁQŒÃ+[%M‰Ã=€½ €œl}ts ¬4ÜJeêˆA6ðRGÎ%ÏÙš¿¢¡ € ncbI-³ganh T/¿S<á—LxIEND®B`‚awstats-7.4/wwwroot/icon/os/dreamcast.png0000640000175000017500000000050212410217071016424 0ustar sksk‰PNG  IHDR;x87tIMEÓ+ G—B pHYs ð ðB¬4˜gAMA± üa0PLTEJs¥Rw¥Z­c„­e‰µm‘½s”ƢȌ­ÎŒ­Ö”µÖœ½â¥Æç­ÎïµÖïÿÿÿ¦ PÍtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]yIDATxÚcøáŠîñ F»ªb‘zÿ†.¥å’Nñ~ú„¸*-ÑüÀpÔÅCh“ºó¥#Î!ê& Œ[·¸ºnŸÀ`¼YIH¼¨ý¨‰q¨k ñÝ»Øiº:ñ#¤â¸S-Èä&.æïÁvÝp?l;—OLÆž¯IEND®B`‚awstats-7.4/wwwroot/icon/os/winme.png0000640000175000017500000000051612410217071015605 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/win95.png0000640000175000017500000000051612410217071015441 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTE÷ÿ÷Ú¬Z)11ZRRR91µÖÞkÆïZc1Z‡¹wo9ÞÖÆá?cÎ1ùdItRNS@æØfnIDATxÚc`ACÉhâââÌ (l4s‰… Ãeaãw/ÿ·0Þ3z÷H3^4òMåL_MQra¸(hª¢rf ƒ¨‘éîÁ# iéF»;4{:„ŸžnÔ¡2K…-ÝØÅIÅ…AÈÄTAŠç")sµ¥…IEND®B`‚awstats-7.4/wwwroot/icon/os/macosx.png0000640000175000017500000000051112410217071015753 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/macosx7.png0000640000175000017500000000051112410217071016042 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timelun. 10 févr. 2003 14:08:05 +0100?LtIMEÓ ,¿Ú pHYs  ÒÝ~ügAMA± üa0PLTE÷÷÷Ž­Å`¦ÐLŽ¿t«ÏÃÓäÿÿÿÐáé ¾Ö±ÎÞÞçïï÷÷ïï÷»ÖçïóI˜Ïz¬pòaIDATxÚcÈì¼ø@ðↄm6Þ¾4†´Ì¯ Ÿé„û íl º~VCNãø² L穤Ahû2ˆx‰7˜®`×ÑÙ2 —@ú9Òµ¥1°1¤q¸§10*»2‹.%š4[æ@IEND®B`‚awstats-7.4/wwwroot/icon/os/gnu.png0000640000175000017500000000047112410217071015257 0ustar sksk‰PNG  IHDRíf0âtIMEÓ'o ™ pHYs ð ðB¬4˜gAMA± üa0PLTEF>3]VNpZJqk[‰kVƒeœ|a©‡g€y¡˜„¹’qµ¨µ¥œÅµ§÷÷ïÿÿÿ1'YtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#]pIDATxÚcøÓùÿE(Ãmûˆ¾ #†ËŸ'20Ä73lýÊÀÈ`ÜÌ0QhIUZ¡(C©UŠÕ¢Ô`†ÏéîUËÔø>%e-Ë*øÏðŸHçéO^Ë’ôA´Û*{ ýQe•á ýßhï^0ýgŽÄÿÿª6s^’ksIEND®B`‚awstats-7.4/wwwroot/icon/os/ios_iphone.png0000640000175000017500000000074612410217071016627 0ustar sksk‰PNG  IHDR*º†-tEXtCreation Timemer. 4 août 2010 12:39:39 +0100wÛtIMEÚ ,ËÆ+ pHYs ð ðB¬4˜gAMA± üaS]”¯­®ž’ÁT AGOž6rt3sõ2€ÜÿÿÿCÄÅ5ô¾ÿød€ðøÒY ©®¢üèÉÓ{@îÃÇO¼<€ŒOŸ? )k‚ì…› 7ÂMJûüåë®ý€ 9;øÍÛw˜JHÞÀ´¦µóÅ«W³-:Þ¾{ÏÍÅD@DäÕë7@ÿÙûE¢ÖÍ;wåd¤•ä º›W ¡ô 3ŠÒí{öùxùy¸í>pÈÝøHCY133sLhðáã' Þ‚¸(WoÜ" âн‡ŽÝ}ñÊUm+{ #MÒ|‡’5È,ß3IEND®B`‚awstats-7.4/wwwroot/icon/os/linuxsuse.png0000640000175000017500000000066212410217071016527 0ustar sksk‰PNG  IHDR MiyIDAT(‘mÐÍJaÆñÿ›É;™Ñ‰ÑŒÆJ¢.‚«hEŒ.\¹iq[è]½…nÚ}/ Ðm©.K‚"-¤HÉFAq4É$N2oBCJÏæÀ¿Ï7έâ?ó´¨w~Ó»XÒ&©O!O[âÿ/pùvñŸ]‚Èû› b˜ñ¥±%^ß Ã0òùTÛ¡í7£ÞÐAEDJŸ¦Ù¿ÂõaxîcÉI2æ Åië+¹WÖ?RÉlbÏHyƹ|p]´0M7h¢ IÚ(°>½Ca´L¾´Èuû’ÒØZ,ð[Ý.¯ß½åÅóeòÙ-Š““ZŸ÷_?³]½gÿ×1B6<¶«kh&tªåyö¾QÌf©8³\8 *3s|9:À2Mr6«åùÁ³nœ[¥”¢V?C—-®èx=ÆGR´;>RšäÎm2›Í*KÚƒŽÛ R!¡ê“I¢TÄ„eÓìÕ‘1Lø‘‡¶±dš?Xˆ»2<IEND®B`‚awstats-7.4/wwwroot/icon/os/commodore.png0000640000175000017500000000151212410217071016447 0ustar sksk‰PNG  IHDR(–ÝãPLTE333fff™™™ÌÌÌÿÿÿ™fff33Ì™™™33ÌffÌ333f™ÌÿÿÐÐÿààÿèèÿððÿ€pÿ¸°ÿ0ÿP8ÿ`HÿhPÿ˜ˆÿÈÀÿ(ÿ0ÿ@ ÿH(ÿP0ÿX8ÿpXÿx`ÿ€hÿ¨˜ÿÐÈÿ8ÿ@ÿH ÿ`@ÿpPÿxÿØÐÿàØÌ3ÿèàÌf3™3ÿðè™f3Ì™ff3ÌfÌ™3™fÌ™™™fff3ÌÌ™™™3ÌÌfÌÌ333ff™™ÌÌÌÿ™ÌÌÿ3™Ì3f™Ìÿf™ÿf™3™Ìf3ffÌ™ÿ3Ìÿ™fÿfÌ33™™ÿf3Ìfÿ33ÿf™f3f3™Ì™3™3fÌf3Ì33f™Ìÿ3ÿ3fÿf™ÿ™ÌÿÌÿ3Ì33ÿf3Ìf™3fÿ™ÿf3™ffÌ™f3Ìf3ÿ™™ÿÌÿ™3Ì™™ffÿÌÌ™3ÿÌÿÌf™™3ff™ÌÌ3™™fÌÌ3ÌÌ33ff™™ÌÌÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÌÿ™Ì3Ìÿ3™Ìf™fÌÿ™ÿ3f™f™Ì3ffÌ3™ÿ™Ìÿfÿ3fÌ3™f™ÿ3Ì3fÿ3ÿff™33f™™ÌààðØØðÀÀè33™ffÌ  à¸¸èÐÐð€€Ø˜˜à``Ð@@Èxxذ°èXXÐà88ÈppØÈÈðPPШ¨èˆˆàHHÐhhØ33Ì@@Ð``Ø€€à  è00ÈÀÀð((È À ÈÀÀÀ3f™ÀÌÿ33ÿffÿ™™ÿÌÌÿààÿèèÿððÿ&–vƒtRNS@æØf pHYs  šœtIMEÖ0E„~–QIDAT×c`‚•§OŸf€ƒÓ§‘¹§Q¸ öj¥ j'Hø ˆ·ÄÝd…K2¬‡0`\EYYYw;ˆ«$ çù²‹Ž2lÅá tG"Ï/<ÁÆÝ?D9m;øØ£Ñ¨=ª_¶p¥æ‚#$Øð-:þnö‘å¹Icžçì¾éqýj“öµNš÷Py E„1uP{«¯×‰;)ÎÞOÄ$IèRàº.¥MPÆ¢ X£ÜEÆWvPí-†ª9YU)E8HIÒ‚Š'ɾ¢¢ŽÑÀâˆ2s·Ÿáû-‚ ˜4zžG³&y±ÿ$aŸ’Õ×Ù+Ê”*(•Ê8Ž3‹ð}Ÿ;7¸ÿx——·©U¶iµÚl®Ý$6vîrQÅÀüìªÎôs²,ãkï˜~8fy©ÅåùBŒ1DÃ.U눒@E¿Åå ¿Ø—ï‡IEND®B`‚awstats-7.4/wwwroot/icon/os/bsdopenbsd.png0000640000175000017500000000054612410217071016614 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÒ¶³ssskUU? Z{½”§. Þ½ic9JJøÍÂïmÃÏŒ…tRNS@æØfwIDATxÚc``ú÷þOLJå¸ßl_õÿƒÜ›Æg ²Úçžgt0¼>Ý¢ªU–Âpzw›©U‹#Ê%g%Z$:;::Ê8ÚÓËÒS;ÚÓÊ]ØÊS\ƒæ2¹„†(i!c ^£$où=àiIEND®B`‚awstats-7.4/wwwroot/icon/os/netbsd.png0000640000175000017500000000051112410217071015740 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿÐËДioX/=[Mb¥–žÇ©±ïïïA"+³¿ÊÞÞâ•4=b%-ïÖÖÞµ½¤gtRNS@æØf]IDATxÚc``(bÌs`‚à»@tÆ™ô šA'Ó LÇl:$¢+No ÑÌg’À4Çéƒ`yŽæPzˆ*S6V,``UQ6ÈPê&Ôìâ¹€AÈ$P,±€÷€ü¦ë"ÆIEND®B`‚awstats-7.4/wwwroot/icon/os/webtv.png0000640000175000017500000000047712410217071015623 0ustar sksk‰PNG  IHDR(–ÝãtIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üaZPLTEÿÿÿBBB!!!¥¥¥„„„””µ11­Þcc¥cccœœœ!!œ{{{ÿ½½½ÞÞZZ{RR­!!½kksBB„µµµ­­­½ÞÞÞÆÆÆRRR”””sssQ{vhIDATxÚeÎY€ EQZ (8¢(î›q Êß¹iÂcìûøAÔ8·mÖ{ÂDã)²oŒ^çìî1±§Ù.ÅÅnhKÊØ¿¬¤ª›—Iª"RCú BpO fK9ü泜ë Θ!+IEND®B`‚awstats-7.4/wwwroot/icon/os/apple.png0000640000175000017500000000047612410217071015574 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿïÖÖ””ÿ÷”cέœïs9έ!{ÿ””ÿ½ŒÿÿcBÿ÷B¥BcµR­Ö­ŒwÛtRNS@æØf^IDATxÚc```à¿Ë|÷ÀÔþ€ÔÛ»ÿßÞ2îÝ»÷öÝž3@p€N3΂ »`'ç*˜ÀÀX aiii)@sÄŒ€4£²’sjŠ(eÏý+IEND®B`‚awstats-7.4/wwwroot/icon/os/atari.png0000640000175000017500000000053312410217071015565 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timemer. 19 févr. 2003 19:10:20 +0100-,ÀƒtIMEÓ$;GŒ, pHYs  ÒÝ~ügAMA± üa0PLTEfffÚÚÚµµµ‹‹‹JJJÎÎΩ©©999)))ççç÷÷÷111ÿÿÿÁÁÁïïïÕø˜\sIDATxÚcXsæ{Eå™S gÀô =ãD¯1÷p^¤6xØÅœa8ýÐcvÓ)áww*Žö12ìs<ã±Fàƒéš5ɧN3f&x6Q–a9Ó&–#&Æ "žžîS ÌÌ›Ü:RœŒ•BYÌh{04zúÔpIEND®B`‚awstats-7.4/wwwroot/icon/os/riscos.png0000640000175000017500000000042112410217071015763 0ustar sksk‰PNG  IHDRíf0âtIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿ ½ f–fçïçÖÞÖs¾sÀéÀ”­”$c$BJh Þ § Û ç÷çKÎtRNS@æØfWIDATxÚc```º—ÀÚ÷ž(–Ù[Ÿ‚h¦YûÞ}Ò³ö¾;¦wß Ñ½wA4“’j(Hœkæ¬Ý þÌ™³@+f¶€Íoc€W5(ƒQ™cêÌ´Š0IEND®B`‚awstats-7.4/wwwroot/icon/os/sco.png0000640000175000017500000000037412410217071015254 0ustar sksk‰PNG  IHDRíf0âtIMEÐ )+—#ø‹ pHYs  ÒÝ~ügAMA± üa-PLTEÿÿÿVˆ½ÿÎÿÖÿÞÿï&ˆÿÆ!ÿÎ!϶-ùΧœ?>gd F|‘ŽL15øštRNS@æØfEIDATxÚc`À´ÊÕ‹tÒn1(•—W^KËÒ­³ß½.eP*ª~sæÞT µç ùŽÎ¤&e×TAÀe,€Î—€ß)3IEND®B`‚awstats-7.4/wwwroot/icon/os/vms.png0000640000175000017500000000045512410217071015275 0ustar sksk‰PNG  IHDRíf0â)tEXtDescriptionGifBuilder 0.5 by Yves Piguet>¹ˆ©tIMEÐ ), Gm( pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿooo÷÷÷½½½ŒŒŒÎÎÎÚÚÚZZZ­­­{{{œœœÆÆÆïïï???çççOhÖ{tRNS@æØf>IDATxÚc`ÀLšuÇ-¦ÙÞþÓ²ÇË\\]–W4iO×ôÚí@ÚçÐñr¼‹ÓEíââ¥Ö^?l”âGšënÚÎ`â9uÒ¢nq ¼‹S#X½‹k:P0*00[ó!µùÌôZIEND®B`‚awstats-7.4/wwwroot/icon/flags/0000750000175000017500000000000012551203300014424 5ustar skskawstats-7.4/wwwroot/icon/flags/cc.png0000640000175000017500000000040412410217071015522 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTE›M(ŽÜ¯Âf_¸öàäÑŒ¢Õ\gÞ hUÝ‚IIDATxÚ…N À@ÒšÞÿ¼¶ÝƒM“ „Aa‚J×,™ +÷]Ëuh„Ü·A§­x13….kÐ.¯=ó¡cÓ „0ßV–òIEND®B`‚awstats-7.4/wwwroot/icon/flags/uz.png0000640000175000017500000000036712410217071015603 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa$PLTE~JB þþüJ D77œ®®ÔŒJJ¤}––Ìnn·„'0IDATxÚcààâæ@. —Æå²Ø\V6$.3 ``B¤qQvïRÝâv¯IEND®B`‚awstats-7.4/wwwroot/icon/flags/za.png0000640000175000017500000000037312410217071015554 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTE†’É’[U޽zzü¸Æ^þPRþ ID©@IDATxÚeÎQ À Ñ1[ëýoÜàZ18 ¿cÅôb¢-;d7—´WëØzbæC-äüÆ/1—:¸—Ù"ÆG ]óIEND®B`‚awstats-7.4/wwwroot/icon/flags/pt.png0000640000175000017500000000037112410217071015563 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTETzRP0ùÕ‰\ÐK.à'Ü´¤ÑÏ´ÖNv|>IDATxÚÎQ À0ÐØ$zÿo…núÙüÈ# ;±NpA؃ïT“*Êݲ2Ôt¥G«$±óзé꫟„lGÀÖƒ…IEND®B`‚awstats-7.4/wwwroot/icon/flags/nb.png0000640000175000017500000000036312410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTEþ þ€11›dd³þ[[þ¦¨ààðŽj‘Y8IDATxÚ•Î1 Á59ãÿ¬A´œT W ˜‹í‘B3E^ æ±Ðw^cIÕ¼(ñõÆ3;ç↶†™IEND®B`‚awstats-7.4/wwwroot/icon/flags/com.png0000640000175000017500000000057512410217071015724 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ 8#Ö8Âã pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/ga.png0000640000175000017500000000030712410217071015526 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa PLTE¬JJ|þþe -”IDATxÚc0†B´à¤!€c )¢HyIEND®B`‚awstats-7.4/wwwroot/icon/flags/gh.png0000640000175000017500000000035512410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTE ¹¹üüjj00ýUþjK×92IDATxÚc`G $qÙP02Bh—™……‰ËÈÊŠ,ËÈÌQÍÀ†$(v¨]êÅê7IEND®B`‚awstats-7.4/wwwroot/icon/flags/nl.png0000640000175000017500000000032612410217071015551 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTE2Ü~jäþþüþNDþþ Ñ!IDATxÚc`A ¬(‹¦˜00¡Ò¸Œ(€û¥Œ ¬IEND®B`‚awstats-7.4/wwwroot/icon/flags/na.png0000640000175000017500000000045412410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üa0PLTE¶qpa¯`~SO¢Â˜utŒ“)(‰|NN”´‹µ­™((„ØØøø§óåáYIDATxÚUÍÛ€0ÐNvqôÿÿVΞ¤iÑwT€­Á0Žª®š€†~ÝÕ•MdS.de±²4 DˆI›œ:']“~ 'ý „¯ã`?QÜ}yˆAãÑs¡IEND®B`‚awstats-7.4/wwwroot/icon/flags/i0.png0000640000175000017500000000034212410217071015446 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿUÂÓ~tRNS@æØf,IDATxÚc`€F0)F`#„ "¡* JPh˜8TLÔ¸¹,¶ÍV~k’IEND®B`‚awstats-7.4/wwwroot/icon/flags/se.png0000640000175000017500000000034512410217071015550 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTE2ÜÚÎ$æÞš†lîâòè þö~f„–§©*IDATxÚc`F&d@.—˜XÙ¡€  s™€…• (²• ŽO'VàIEND®B`‚awstats-7.4/wwwroot/icon/flags/uk.png0000640000175000017500000000043412410217071015557 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTEÿ„JŒŒkc­ÿccïçïÿŒ„¥¥Î Ÿá…aIDATxÚcWRfSRrc`-RfQRIeWfSt bPf gSIUb. eK 6dpKKcIKKc@iPqãPW–Ðdcåa6Õ%SG ¹aN !B@Z5…Q h¾Rñ[Ù·9á IEND®B`‚awstats-7.4/wwwroot/icon/flags/jm.png0000640000175000017500000000040612410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEð÷˜dÀº×OO®®ôÜÛ KIDATxÚUQÀ CßDËýo<ƈ „H[°çª2˜069’ƒ+°8•¨……È7e“ƒéàâ_Þdz°Imã4j1BÃZHÚ /ÐÕ÷Èp¿JIEND®B`‚awstats-7.4/wwwroot/icon/flags/bg.png0000640000175000017500000000034212410217071015526 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEþþ ÆBVªT¾Þ¼þþü‰“ù-IDATxÚc`E $qYP3 Ë„‘ —B 0„ ‘6Å? öZªIEND®B`‚awstats-7.4/wwwroot/icon/flags/hu.png0000640000175000017500000000032212410217071015550 0ustar sksk‰PNG  IHDRíf0âgAMA± üa0PLTEŸ$þþüþUj tIMEÐ (?3 îtEXtDescriptionMade with GIMPõT1³IDATÓcP‚B´ ¤ %úl@LIEND®B`‚awstats-7.4/wwwroot/icon/flags/th.png0000640000175000017500000000034512410217071015554 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEþ þÊÄþþüª®ä&´þ–1qŒ0IDATxÚc`eCV†ð€+X00¡fÀÀ‚H㢅fš3ðÖ¡ÏwõÈIEND®B`‚awstats-7.4/wwwroot/icon/flags/net.png0000640000175000017500000000057512410217071015734 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ /+Ý`ÎG pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/gov.png0000640000175000017500000000040012410217071015724 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTEÿÿÖÎÿZZÿŒŒŒ„Î¥c!{cJ­t¾^¤EIDATxÚmÇQ À0EÑ 8 X¨6ÿNF×}î$ï%—ª‹­êÖÆO»˜ïŽù¶ûd­•}9?ÑÃD =ø<ÌÛ¶1«ö‹IEND®B`‚awstats-7.4/wwwroot/icon/flags/pk.png0000640000175000017500000000041512410217071015551 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üa$PLTEþþüÞîÜR¨P°Ø¯‚„a¯_uºtÈäÈ‹6›6'“'Íâ‹\FIDATxÚ}ÎQ €0 ИuÝÒÝÿ¾*hÝDÌߣ6fðÍÐÌpr(iÇ¥›:éɰ¥êEa}Ô©‡ÕÛ4£Xýye¸ µ@£½·IEND®B`‚awstats-7.4/wwwroot/icon/flags/aw.png0000640000175000017500000000033612410217071015550 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEüþú::Ä&äf¬>ÔÒ–nzWIDATxÚ] À ±Vå¨úÿߖØÖM8&$°¤+¦KÛäE•ï­¬Xf[ªÅÙÉÉ1‹òšbúhÓûFD–Ödc¥ïªú;tØ8L†ýõ ^¤R-Ã\ÝIEND®B`‚awstats-7.4/wwwroot/icon/flags/ky.png0000640000175000017500000000046512410217071015567 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa0PLTE¼spÖÕÐÃhS«ôöó@3¾¶•:z¶”˰¤jÕ—o;yÑy‡È’§¿M\¾V™åbIDATxÚ}ÌIÃ0 CQjríDTîÛ HwÕ¿â°Bdà®h´GÈÌJf/¡×]ËÍ d–¦ÜW°¬Œ'ÂÇ ÃpöN˜Ï©þ~l®õÃ>^Ç&t|ÆÜ4UMˆ þ÷™hÞ¬« IEND®B`‚awstats-7.4/wwwroot/icon/flags/gy.png0000640000175000017500000000043712410217071015562 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üa0PLTEVŠT2ª4—iŽŽ|¹ã¯KµLºrj ôútÆrZJýýL(ÜܺºÿßµŒLIDATxÚmÏK€0P*¶ãTª÷¿­Áú)FvDÒ4”èœË@èBÖ—ÀjÆœ¢mÞ(7O›ÏtBwób /¶®ú·*Š1>!ã ÕUrÿÃMÅIEND®B`‚awstats-7.4/wwwroot/icon/flags/bd.png0000640000175000017500000000037012410217071015524 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEzoMXgOþ æ2dœ6Ñh7=IDATxÚmÎÛ P/Óþÿ,2qo‡Œh«)óªZr¥<ûº·ÝØÊíIyž#¥Ž|Ù.VMÃ'IEND®B`‚awstats-7.4/wwwroot/icon/flags/pr.png0000640000175000017500000000047112410217071015562 0ustar sksk‰PNG  IHDRíf0âtEXtCreation Time12/9/2002eëÏUtIMEÒ $= pHYs ð ðB¬4˜gAMA± üa0PLTEï÷ï!ï)Þ-û%¢7TùƒqRD¢PL®]O­®˜ÁèàîÿçÞÿ÷÷ÿÿÿºp²uiIDATxÚcH5†iÁÆÆÊ@zeª‘‘‘²êÕwA€aÕªsïÞ½ùǰbÕœÚÛwkº~w80 1¬:µÒV­Z]¾½¼šaÕÊýÿ€aÕìaeŠ 0Ls5 †æ`°=“m16 ¢Ü IEND®B`‚awstats-7.4/wwwroot/icon/flags/md.png0000640000175000017500000000041412410217071015536 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa$PLTE¬SSjüûÌO¾˲žŠÄ•yo#¯s´6âÕ j%§EIDATxÚ]ÎK €@ ÐŽNú½ÿ}§ bjvˆHg]{wäaM¢˜VeDPn3¹µËî‹Û&oÕLÀÆ ŒW¿Ï/÷P•ª2µIEND®B`‚awstats-7.4/wwwroot/icon/flags/nr.png0000640000175000017500000000071512410217071015561 0ustar sksk‰PNG  IHDR*º†tIMEÙ  å]1 pHYs  ÒÝ~ügAMA± üa\IDATxÚe’ÁJA †“ÌL[µºX‹`^¼ôô xóVテ'õ Ôƒ  ¨àA(Šb«e»›ÄLÛ­Z†d¾Éä'ƒ~㌔H@…1%ÁXˆåsÊÐP$TCÕ8A±CRSż‚Å%Ve+UäHUÏP¢H[U°b qŸiÎ2¬“¬yjg$6eb²xFÇ.Ð7üµNcÊ A”è„­Zñ¾91ÏèO[[¸èÇPCÌ”5ÇX 8¡O—¶Aò@TûƒO!ÏŠÌàÈÍ:Ÿ^¨5[d³±¾¿·{Þnwº= •,s%ø+ÿþV êÍã“£›ÛÎÝý•/WYƒ2Í£ë(9Âòj’8L¼[³vTm&:‡:·r¨ ™K­}q9øRÖãÉÇûÏr!9`Ɇý‡§çÞk\I!¸²ý AG¿—50‚ø †Ý—G"Ÿg©°°ÿô fü²ñYýIEND®B`‚awstats-7.4/wwwroot/icon/flags/dk.png0000640000175000017500000000033712410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTE¾¿ÆÿÿÿÈ$$òÍÍôÓÓôÔÔÄñj$IDATxÚc``d`dbfa`d±¨Èe6fvV@çÒÌ^…'CHeäIEND®B`‚awstats-7.4/wwwroot/icon/flags/mc.png0000640000175000017500000000027012410217071015535 0ustar sksk‰PNG  IHDR%†¿’tEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEþþýûKzï/IDATxÚc`ÀþÿÁD‘Å Þv)Ê—IEND®B`‚awstats-7.4/wwwroot/icon/flags/jp.png0000640000175000017500000000037012410217071015550 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEþþüþÖØþþ Ÿþáàþ{yþþ¿Zó=IDATxÚ…ÎI @Öúÿ«AEÆÞ&Ñ?¦j)ÁˆºØ‚-ÄX±JŽ1Êò®:Õ>åy˜å~㙘7r­9iIEND®B`‚awstats-7.4/wwwroot/icon/flags/mn.png0000640000175000017500000000036512410217071015555 0ustar sksk‰PNG  IHDR(–ÝãtIMEѰyÉ pHYs  ÒÝ~ügAMA± üa6PLTEï)Jµïï(âÚð*Ýÿèî9Ôÿëdæ³ï$êbï%ï'î?âÎð"amèBIDATxÚc`F`€AT® —U–…ËÃÆË‡ÄeåbåFær²"+få@å²£rÙP¸Ì,ÌÈ\& Dv²‡P(@¯<`IEND®B`‚awstats-7.4/wwwroot/icon/flags/sv.png0000640000175000017500000000033312410217071015566 0ustar sksk‰PNG  IHDRíf0âtIMEÒ($t pHYs  ÒÝ~ügAMA± üa$PLTEk½kÆZœÖZ¥Þÿ÷÷ÿÿÿ{œkïïçk”cÅËÀRœÖR”Îä‘|Š:IDATxÚc`€FA0À µV­Ú½jÕ*×ÐЙ¡¡!@:<­Bw@è4 fP66V266Âi„a½iÓÅIEND®B`‚awstats-7.4/wwwroot/icon/flags/en.png0000640000175000017500000000045612410217071015546 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÓ#•øt pHYs ð ðB¬4˜gAMA± üa0PLTE¥c!{cJ­Œ„ÎÿÿZZÿŒŒÿÖÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±6ä[IDATxÚ%Ë1€ DÑ/×0z9‰P[ˆÖš°´Æ®/+ÓLÞfèÖÀ”šŸæ„:¸wT'Qïúo­ýw"ÑE9átåžÉeò}„ý2ž¼Q㨇…Úä“|ÍÐHUIEND®B`‚awstats-7.4/wwwroot/icon/flags/si.png0000640000175000017500000000037112410217071015553 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üa$PLTEþÆ<üO5Þ¬ŽàººüsoùÊÊüðÚèìfJÜþþüGQ+2IDATxÚ¥Ç1 °ZEÿÿ_7XÍÜ­ÛÝré'Õl‰P§0€¢Ì-zGî'Dæ›èIEND®B`‚awstats-7.4/wwwroot/icon/flags/bo.png0000640000175000017500000000034012410217071015534 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTE6 ýüØÊï± öh¨’,ŠŠ ùgÀ™Ø%IDATxÚc`G $qYP#0±Ah(—…•—‰ª˜zUòÛsuIEND®B`‚awstats-7.4/wwwroot/icon/flags/bs.png0000640000175000017500000000036212410217071015544 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEagÂÌtzŠyTÖˆÀÀþþ¨Ý9,7IDATxÚc``D L̨\>ËÄ‚Êeba…0—‰ \8+U1ªQÌxœâhT/Öú FÜdIEND®B`‚awstats-7.4/wwwroot/icon/flags/bi.png0000640000175000017500000000036412410217071015534 0ustar sksk‰PNG  IHDRíf0âtIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa$PLTEcccÿÿÿÎ1ÿÿÎÿœœ1œÎ11œÎœïïïÎΜÎÎÎΜœÖQùSIDATxÚc`RA ¥"ÁÀÚ褤äØÊÀ.!-!ÊÀZ($X ¢¥CÁ´ ”VTÓ…'‚äÃ%Áê Ô”M˜Áæ 3À̇õ9ìw¦ªŽIEND®B`‚awstats-7.4/wwwroot/icon/flags/cd.png0000640000175000017500000000041412410217071015524 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa$PLTEY×Ï2Îü¥êoAÒê°ì`MÖÜsÞ¬}ß þþ·îYÂòLjÚ¼Ý?EIDATxÚ}ŽQ À0CujªÛýï;VK©¥,IHx …ÜìU˜†~Ø>4Ä ™ÈêÝf±¸KVuFNCZoðÿb_žumä5ÊIEND®B`‚awstats-7.4/wwwroot/icon/flags/ca.png0000640000175000017500000000040212410217071015516 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTE¾⃅ýûùÚqsöÚÛÆòÊÈa•hGIDATxÚ}ÏQÀ ÐVJwÿOg”¹ñÑäAHØž Ìê”’•ö¥Í°Ýs‘³¹§#£v ¸vG•©Ÿ«>\/Ühå:=bcIEND®B`‚awstats-7.4/wwwroot/icon/flags/gn.png0000640000175000017500000000031012410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTE¾ÒRþþR¶–ªÿ«ÒIDATxÚc`F& `f†¡Ïœô‰Ü0ü«IEND®B`‚awstats-7.4/wwwroot/icon/flags/bt.png0000640000175000017500000000044612410217071015550 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa0PLTEúþ®ªÑ('ýýÖÒ™ePœqÂVT­­]nnd“,*œPHcPNÖÖÔþz‹o8SIDATxÚ}ÊA€0DQ¤¥8´èýo«T1q¡ÅË@õ}"{ئ¤ªé¸)‘wÖ‹p·á®cRÌ»Ÿ¯I”Þc B[,¥¥éЏf 3Ó£ÿŒ;A ¡IEND®B`‚awstats-7.4/wwwroot/icon/flags/at.png0000640000175000017500000000034112410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEöþöRTþVTööôþþüöFDuÖa2)IDATxÚc``D $qÙP +2`@á± Êbp™˜‘iÎ@åÒïjZIEND®B`‚awstats-7.4/wwwroot/icon/flags/eu.png0000640000175000017500000000041512410217071015550 0ustar sksk‰PNG  IHDRíf0âtIMEÓ81àáb pHYs ð ðB¬4˜gAMA± üa0PLTE1­1ç11­1kk1k­kkkkk­k­k­kk­­1­­kç­1ÿÿÿÿÿÿÿÿÿÿÿÿœ.á2`IDATxÚc```Pb€* Í´ˆISA€A ÈVâVFO ÍÈVÆd²&0°ÅY@@= Œ­@#4˜( 0¨€ÌṲ̂ 2A!’…(ÏÀÈäÖËI~€IEND®B`‚awstats-7.4/wwwroot/icon/flags/unknown.png0000640000175000017500000000027712410217071016644 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿ§ÄÈtRNS@æØf IDATxÚc` /pS÷iÒIEND®B`‚awstats-7.4/wwwroot/icon/flags/ba.png0000640000175000017500000000035212410217071015521 0ustar sksk‰PNG  IHDRíf0âtIMEÓ8¿ä‡j pHYs ð ðB¬4˜gAMA± üa0PLTE)ï9÷!J÷µÆÿÿÞÿÞÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñDŸ;=IDATxÚc4 AAÅT-. ¡…Ä ´`”Vt…Ð  ZHB BiE( T¦… 4P„Ï¡‘YÀIEND®B`‚awstats-7.4/wwwroot/icon/flags/lu.png0000640000175000017500000000031612410217071015557 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTE<<ÿÿÿÿÿÿjjÿö¬tIDATxÚc`A $q™Q ˈ(çT‰Õ$»lIEND®B`‚awstats-7.4/wwwroot/icon/flags/im.png0000640000175000017500000000044312410217071015545 0ustar sksk‰PNG  IHDRíf0â/tEXtCreation Timeven. 28 févr. 2003 13:15:26 +0100²?tIMEÓ9¨$> pHYs ð ðB¬4˜gAMA± üa0PLTEÎ1Î9Î9Î9ÎBÎJÊJÎ^ÊN%Ò^9Ò‡ Ô‡?ÖsRÜ­`ÞÀxäŪrJò;IDATxÚc`@0Éb¹€ Äb¹ÿ8×$Pô²"÷ ˜âøÿLsOP€Ð ÒÌÏ æL‡Ò) ˜!n _>ââ²IEND®B`‚awstats-7.4/wwwroot/icon/flags/td.png0000640000175000017500000000033612410217071015550 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTE""¤[[mÚÚø[æªîîþ5S„#IDATxÚc`F6 `f4.^ÙA¢™€€™ªJê¼mJIEND®B`‚awstats-7.4/wwwroot/icon/flags/gp.png0000640000175000017500000000040112410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa$PLTE2î zôdþ’œþvwþ*<þ<4þD4þP4þÚ,þ¼,þú,þ¦,@ʦü:IDATxÚ}Î1 À*Pÿÿ_ã`/]š.¾JI@*/Pg¬æcÆÕ»„Ú”×u““÷Æ×Êã÷ZqIEND®B`‚awstats-7.4/wwwroot/icon/flags/om.png0000640000175000017500000000034612410217071015555 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTE¾\M–2nÈ&&Ö]_çž þþü<:…è+IDATxÚc`a`a`c‡VT.>Y deƒJ#3 @¸L0@ŸìFÕžÓIEND®B`‚awstats-7.4/wwwroot/icon/flags/bh.png0000640000175000017500000000034512410217071015532 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEø÷÷õÐÐõŠŠ÷;:÷ø´´øUVø`—ƒ/*IDATxÚc````dbf •™ËÀŠ*ËŒWU/šÉ$ZÄB–Eôé\sZå*IEND®B`‚awstats-7.4/wwwroot/icon/flags/cl.png0000640000175000017500000000035512410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEÝõ8fÚž´èÄÖ ‚þöü:9žD]ß2IDATxÚc`6(``eeGá²3³£È²¡Ê¢*F5Š ˜Y € ò)“EVJV(¡²‘IEND®B`‚awstats-7.4/wwwroot/icon/flags/tv.png0000640000175000017500000000042212410217071015566 0ustar sksk‰PNG  IHDRíf0âtIMEÒ&8œ.­ pHYs  ÒÝ~ügAMA± üa-PLTEJ­ÖB­ÖRµÆB­Þ–©uZµ½gµ±JµÎæ‹ccœ={¹ãF:t…Á­–³ñº¹ÞÝv—hIDATxÚcèY½²QP°€aÆé‡Ýî½~wÙØ ‰a÷îÝ›Cü—ÝNÌ>1ÙXÙ¡sõšfcã4accãR#b¢¦Í•Át‘ƒ!ˆ6M Ó&FƆ Œ‚‚B‚‚Pë!Î@ âIEND®B`‚awstats-7.4/wwwroot/icon/flags/gs.png0000640000175000017500000000032712410217071015552 0ustar sksk‰PNG  IHDR(–ÝãtIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa!PLTE¼y7‚©PyKIÓÀo‰ÎŒžooé=0¼Á¬Å¶ ”’Ú7Åç¢9IDATxÚ½ËÛ €@BQ@˜}ô_°&ºS‚÷ï„€‚_ÞçhÆJ|¸ÞŸÅ3Õ¤Tî/Aáêï_ÝŠ_ÚÅå¤XIEND®B`‚awstats-7.4/wwwroot/icon/flags/cy.png0000640000175000017500000000040012410217071015544 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEþýúðíÆ¾Û²•À„h¤Qëæ´úÄ þÚfë+REIDATxÚM1À0%ñÿ?ncãX5XPSÅÊb¶…ÔBî9+Óë`_©cŒêq4òœl? ß·?x²W²vjIIEND®B`‚awstats-7.4/wwwroot/icon/flags/ar.png0000640000175000017500000000034712410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTE½ü¾ý½ýQÒýþþþÿÿÿP ò2IDATxÚc`D L@B€.‹ ˜Q ``a’¬¬0.+ @WŒfé T¡Exj‘NIEND®B`‚awstats-7.4/wwwroot/icon/flags/sg.png0000640000175000017500000000035112410217071015547 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEþþüúæä÷ËÇÝ+â<.çe\åQGý>=.IDATxÚc`F ̬l,È\&vvv. —…·^fd“!€ €fÓÔ]ª*æqIEND®B`‚awstats-7.4/wwwroot/icon/flags/io.png0000640000175000017500000000053712410217071015553 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üapú°Ù TÜ)#zó›Ûð<9žìIÁo>ï|…s94Å!Võ#ò6ª­èV§%}’ÑŠ¢¢^‚wqkv ©­¤%aá&æaîxS屜ŽG­œ•5¾xü@ÍŠ Ž;eIEND®B`‚awstats-7.4/wwwroot/icon/flags/la.png0000640000175000017500000000035712410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEþžT>:¬TP´™•Ñûûûdb¼Z2”'ê 4IDATxÚc` °£&0`caÓ.+++3‚Ëä²àä2¹Hz™˜Y˜!\F@’ GY7ª_ÔIEND®B`‚awstats-7.4/wwwroot/icon/flags/id.png0000640000175000017500000000033112410217071015530 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEÚÚÜææäîîìþþüîBDþ64îþ“IDATxÚc`cG Tä²°"&fd@M.#2Ðo¾IEND®B`‚awstats-7.4/wwwroot/icon/flags/er.png0000640000175000017500000000037212410217071015547 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (Å< pHYs  ÒÝ~ügAMA± üa*PLTEœ9JkïÞ!÷)1Rµsÿ÷)÷1ÿ½B÷!÷Z!kRŒ„6§ƒSIDATxÚcPÛsÔÒt¡tÚ^0Ñ–¶Dgµ¥¥èŽô´´´= jY@: ÈŸ¤Xê:Ó’]CÔÒÕÒXC4ˆ¦< ­ âiFA0Áÿ(8L†|IEND®B`‚awstats-7.4/wwwroot/icon/flags/bn.png0000640000175000017500000000043612410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa$PLTEîîÑ­Seb*àF&Ù _ èÒt‰Š ËkKúöâZο‡WIDATxÚ}Ž[ €0 M6ïÞÿ¾¦UÄ‚¸?ËÀfÈqüfŒUþàŒ×†%~­˜Ü‡¨jWÈ *'¹i–!5‘XZrL¿‡hª¦õnéHÚ5 ¯‡ˆ7üÈ .k®£p¬IEND®B`‚awstats-7.4/wwwroot/icon/flags/gm.png0000640000175000017500000000034412410217071015543 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTEÎÊÊöÌ""üüþÎÌþ‰ú½,IDATxڕʱ Ä@'öÑát¹ê-=Gå–PÒ³Sq‚6Ÿw½q¹ Î©.¤IEND®B`‚awstats-7.4/wwwroot/icon/flags/vc.png0000640000175000017500000000032212410217071015544 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTE­÷÷Œ„sÆÎïïï¥ÖRµ”¿(J7IDATxÚc``RbÀB'Š‚i‰‰Å`ZHQ) D ùbÅuBÚÉʇêÆb.î·˜‹é]IEND®B`‚awstats-7.4/wwwroot/icon/flags/rs.png0000640000175000017500000000125412410217071015565 0ustar sksk‰PNG  IHDR(–Ýã¡PLTEÿÿÿõõõþþþööö÷÷÷·¿×>U”ãcÛLFÝS/Sa™Ÿ8U—`{AW–葎ÿþý¸ÁØ+K’úûûÞ17Ö…>×mR¸ÀØýÿÿë–—1IÈŒ“壢Þ+25LŽœ‘­Þ+1Û#*â272JŽÜ&,Ü%,Ö‘55R;S”Í»Æ/GŒÓËÕ.N’Ý%Ý+.à',Ñ@?3Q=U•â.8æˆà(-–pŒß28(I‘*K‘ž9WÜ$+Ü$*Ü%+Ý%+Þ/6Ì¡ŒÊvyÞ-3ÖZ롎Ý&.㜎Ý'.M[—Ý’G]›ôôôÝ%,ㆄ©;Xá%*¼ÄÚ*N•×dUá+0Ÿ8V7V˜ ›··Äßž7T¾ÀÒ1KÝ=C2J5NÜ)01S—Â8E抉6LŽÝ*1碙O`™:R’ï±°ß-3ºÅÜÝ(.6SÛ$*Ý,3â'/Ý\0Ü!(Ü")Ü#*5M8R’ûèã4LŽÖ‹Z4LÞ/5ã39Ý.5õÈÀCZ—Þ,2£A\¡@\7O6NÝ&--M’Ü)/á*/9P‘øøøÜ '3KŽÝ(/\^ñ÷¾IDAThÞcH¯•Oêrkò¶*,èèÐa¨¨r”ÑÍléjR¶ÉVÈg0Ήr ´k‰írQ±µf¨T4UáÈ jm5Ñóc¨«÷ÕÏ㌷ æÏR3`‰ótpuæ Ðnn´0gàUOÑð–ëlhŒ‘-Ub¨1äÒ’H MLmkkh,b`+v—Jà3,ï쌖Ôdðψ(Kf·c~†jã(`fdg`‚¼™YXÚÂ…fö,‰0Œ¤IEND®B`‚ awstats-7.4/wwwroot/icon/flags/cs.png0000640000175000017500000000035712410217071015551 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTE|pû -³àÜôüüûƾ좘ÜjZÌî Sã4IDATxÚUËA ÄÀTþÿc‰‘ö6‡ê¬™|“ 'é‡{Óƒ´WSàWq¨h /ÿâtsIEND®B`‚awstats-7.4/wwwroot/icon/flags/wlk.png0000640000175000017500000000041412410217071015733 0ustar sksk‰PNG  IHDRíf0âtIMEÓ8)ó—4 pHYs ð ðB¬4˜gAMA± üa0PLTEwZsZ{c†h:RG pZh53›·¸".½ioÓ©¬æÊÊõìê÷ÿÿÿÿÿ^®¸,_IDATxÚcø Hô{0ýv×þßgî3ü?U±vF×+†ÿ«wìŠáÝêÓ;fõ0»Wt”w83(™f¤´…%1(‰¥„•¹%3(‰8й1()+1(AŒо5»”úIEND®B`‚awstats-7.4/wwwroot/icon/flags/arpa.png0000640000175000017500000000034212410217071016061 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿUÂÓ~tRNS@æØf,IDATxÚc`€F0)F`#„ "¡* JPh˜8TLÔ¸¹,¶ÍV~k’IEND®B`‚awstats-7.4/wwwroot/icon/flags/kh.png0000640000175000017500000000035712410217071015546 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE¤z Uôü‚þ¯²ú?Aú(0±-ŒùМ4IDATxÚ•ÎA A´-þÿÇMŽìmnkÖi•l–.åòDÐ'ÉDýŒG©õ¸šùSB¬šöIEND®B`‚awstats-7.4/wwwroot/icon/flags/ru.png0000640000175000017500000000033412410217071015565 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEç!ïÿÞ)9!Ö1Þ{kïÿÿÿ?¦1(!IDATxÚc(‡\t0¸†‚NÚ„”Àƒ†ìÚa²ìjIEND®B`‚awstats-7.4/wwwroot/icon/flags/pe.png0000640000175000017500000000035612410217071015547 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTE™¹jhõöòŸ¿”ÄÛ·cN)ŠnDŸ­ÿûQ3IDATxÚc`F& `d€¹,(\vf$.ÇŽÄefeEæ²°²!+fbf!ß0.NðÀØxwIEND®B`‚awstats-7.4/wwwroot/icon/flags/fj.png0000640000175000017500000000045312410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa0PLTE‚ö‹’ì¨WÇÍÇäE)’º©á_RÑ|†þ24S3† „nj´Û‘—⬰¾BB¤ÝTP[XIDATxÚŒAÀ qE¥õÿ¿-F“Ú[ç@˜À.ùh@3§…iàc«ª³¨#-½7±BAýRñK§ s|ƒ¨d.$6›û<{½¨T9”²äFö ÑIEND®B`‚awstats-7.4/wwwroot/icon/flags/ne.png0000640000175000017500000000036712410217071015547 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üa$PLTE–Zº\þþüþîÜþ–,þš8þòäþ²dþþºtþ¶lþ’$žÕ¤é0IDATxÚcà@ $qÙ‘0s³°.;*—‰ËÌ Ü(Äëï¶ÍLIEND®B`‚awstats-7.4/wwwroot/icon/flags/jo.png0000640000175000017500000000036612410217071015554 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE ‹ÌZXC죢ýù÷ÜNP,ü¦b;IDATxÚ}ÌY Ñ4V½ÿ­´¿!è!H$)‘d"¥œ6I­+£êt{0­‚Ûú…£ ø4bØg^þ;ÃIEND®B`‚awstats-7.4/wwwroot/icon/flags/ai.png0000640000175000017500000000041712410217071015532 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üa$PLTED+‚äÈΖ‘¾«s’`EžMpïEGfe±ÕˆÓin¾Ì™²HIDATxÚ¥ŒA€0Ä ”ÅÿÿWŪWsËd&`"BA#5"œþŒ¬IÚÒc±ÕÒ®jIÈ>q˜ßgïzé†êK¿þp®¦]+¿SIEND®B`‚awstats-7.4/wwwroot/icon/flags/mk.png0000640000175000017500000000040012410217071015540 0ustar sksk‰PNG  IHDRíf0â0PLTEìô~ìJú²ë2ë&ú™ôkúÊ$óŠúÀ$ë=ü§üØ$òuôV²m}EtIMEÓ VÛ&SxIDATxœcìÝåÊßÈ09t³«—ƒ+g‚[ÀAV†P‡<>Æ ® ® Œu… ¬ 6ó~çNù>‡¡÷nó‰œÞ» ™õ[çNØ_ÉÀÊXXÇÊÀ0/ŽSÀ¬?ÔŽ•!@*ÔÇÁëC`7«ÖÖ >†\5¶:Ìøç%Ö•“IEND®B`‚awstats-7.4/wwwroot/icon/flags/ma.png0000640000175000017500000000036212410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEþÚ}ahqX}R«>Â,YGíù7IDATxÚ¥1 [ øÿë¤u3‘ ’"”w¬qEàx£$c¥4ÝX²ZUÛÍbüj3p­²žIEND®B`‚awstats-7.4/wwwroot/icon/flags/sa.png0000640000175000017500000000036512410217071015546 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTE€6›6‰ÅŠD¢C ÏŸŽvºu^¯^KR]Ÿ:IDATxÚ•Ì1À0 BQ6ÜÿÆ”¨]Ó¿½ª~B´{kÚ±©ÃB'ŽxHÓáîZÔóz¼Ü~=O飃8#ÀIEND®B`‚awstats-7.4/wwwroot/icon/flags/aq.png0000640000175000017500000000037712410217071015547 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTE3šüs¹üY¬üüýü©ÕüÕêüÎæü–ÊüI¶ÕiDIDATxÚmŽQ B#¨îãÒ™ÕÖûQ´”µ>ФNG4d%俢¹Õ¹ÉEžé‘²»Û¹ ÄY@™œy÷gÀç÷ uŒ% \tIEND®B`‚awstats-7.4/wwwroot/icon/flags/vi.png0000640000175000017500000000042312410217071015554 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa-PLTEïïçÿÿ÷ïï÷÷÷µÖÞνœÖÞœÖ9½Bïïk÷Þk9BµÎ!œ)”µWÛ~âiIDATxÚc`剂‚‚“ …“-' ‹2°¸YÞ½b,ÂÀsbòÝg62 ìλ‚ydT$wqºË00 vr± éæi††‚ Š‚¢Âé‚ ZPXHÃÌÒBJJJºÇrö-wûIEND®B`‚awstats-7.4/wwwroot/icon/flags/cn.png0000640000175000017500000000037512410217071015544 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEï!þþMþtþþ‘þÖþ÷wQIBIDATxÚÍQÀ0Pœ÷¿ñFÚ4öwü=£Ä LE‡HO´‰*ϸ™Ý\kùi*•{ÄÓì“¿äÍøÁo,úñ¿è®IEND®B`‚awstats-7.4/wwwroot/icon/flags/to.png0000640000175000017500000000034712410217071015565 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEþþüúþÑÐþ››þqsþRPþ†ˆþ64äy_ ,IDATxÚc`ddbfddda€FFfd.3+‚Ë$˜qÊ¢éE5™^Fâq¨%WIEND®B`‚awstats-7.4/wwwroot/icon/flags/bm.png0000640000175000017500000000045212410217071015536 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa0PLTEþò6*˜q_&Òò›QpvÃTêθúQRâ«” ß’™æn{M?—L |>tÛH¿{WIDATxÚ•±ƒ0 —IJeÈÿÿ-åµC`ã¶N‚öäÌ)ü˜ÚÙ{­ŠVRáI# ój!@§Cõm­ŽKå`fëi¼tøÒ2"íÃÇ:ýÙìödxÅ ns™Ùf6IEND®B`‚awstats-7.4/wwwroot/icon/flags/wf.png0000640000175000017500000000040412410217071015551 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa$PLTE¾È()ÐFHÅÎ::öØØÝvwÉÃæà‚„¬ýüúÖZX¥EÁo=IDATxÚ¥‹A Æ  üÿ¿jb”£‰½5ÝКuÅa©ƒ³¾T‰Ø•ge©!÷E•Ý“iÒ9VBÊ¥à‡ã^†óô[CIEND®B`‚awstats-7.4/wwwroot/icon/flags/fr.png0000640000175000017500000000027712410217071015554 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa PLTE¶þþüþ 3‰¸yIDATxÚc```RRb  4űù M8IEND®B`‚awstats-7.4/wwwroot/icon/flags/is.png0000640000175000017500000000036212410217071015553 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE„ï”üfdOO¤¾¾ÛóÜãýs&}Ð7IDATxÚ•Î1 CÑ‚ïc›à"ƒÆ·ýÀP€¤ù`AKþ\SÌsÃ<ô ÑsÜgL}úp½Jë4IEND®B`‚awstats-7.4/wwwroot/icon/flags/bv.png0000640000175000017500000000036312410217071015550 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEþ þ€11›dd³þ[[þ¦¨ààðŽj‘Y8IDATxÚ•Î1 Á59ãÿ¬A´œT W ˜‹í‘B3E^ æ±Ðw^cIÕ¼(ñõÆ3;ç↶†™IEND®B`‚awstats-7.4/wwwroot/icon/flags/es.png0000640000175000017500000000034712410217071015552 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTEþ ò þþšþöþ~Ôg›2IDATxÚc`D L(€01°¢@M.3 ``b„Bˆ«\t1ÐeŒ ‚@Iå&h”ÏdIEND®B`‚awstats-7.4/wwwroot/icon/flags/lc.png0000640000175000017500000000042112410217071015532 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa$PLTEü))õ……kzz^ÊÊXûû¼¼<’’Ð""KK8VVü“_?}JIDATxÚmŽQ À0C«ÖÚèýï»Êئ°ÄŸÇƒà¿¡Fa ­!‰G•U ßX8Pô‘IàçâbÕµ=§fÖ=FÌ,Ùþhæ…y……3!IEND®B`‚awstats-7.4/wwwroot/icon/flags/gb.png0000640000175000017500000000043012410217071015524 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTEþ ‚NŒ‰lc¬ø`dïáèýˆ‡¤ Í ˆ%‚]IDATxÚ}Î11@üÿG$NqÍQØìØ‚NwÎÙc`MÌWB­÷µ¢FZé„«FñŒÛ" ã­{eÔkùù™”FÈ8“Ì"Mí^9Q°ú…\cu3Ç@õ?süþŸaõ¹OÒIEND®B`‚awstats-7.4/wwwroot/icon/flags/mt.png0000640000175000017500000000034512410217071015561 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEþýü¾áÊÉðàಞ¤Æ°°ùë욌ŒÞŠÿø*IDATxÚc``cF```eBæ2±³³!q™YX‘¹ LÌ(zOV– ƒÆIEND®B`‚awstats-7.4/wwwroot/icon/flags/mp.png0000640000175000017500000000072212410217071015554 0ustar sksk‰PNG  IHDR*º†tIMEÓ 9?b¾  pHYsÂÂnÐu>gAMA± üaaIDATxÚc4ЛÆ@`b`øÄ²ÿssÿacÿÍðÿ?L XáF&†Ô8~w“ç'¾üùpMjöÂ/ ŒŒÈ¦"€¹«µÆÓu'•ïžWu·øjn„æu¸Ñ¹Xâñ£ï›°LDÖˆ »RV–¿Æß”¯\ùÄÍÍÁÁÁvèÐK!µwÌ,(nýq.;Ó—Ÿ<êêÿò lÿüýûðáf©‚ü|_Þ½û‡î­ÿÞ *ݾuùÂ…?~üyôð÷å÷ÿÙØ°9àÛ7If..VÖïì?¸¸-äåß¾ý f qoxXéËqÊ+ ügüüðá[Meá?_Xx‡=æ/èa)øáý·Ÿ?ÿ¨®ÛüYÙT†Ÿ?ÿß}üÙÖXTKUtÂ̛ׯFVÊNŒàXa‚ÿÿþþÆéÿÿLHñ &V¸ÃÁqËÔRüï2¯d`ÄB9à‡YIDATxÚMYÀ BI³ˆöþ÷m¢£•?ò`4»žÛªŠ¼ÜV´Gïû8ž/³¤hBɲ¤²E¸”´4®æéyšcû¤aÆäà¢êáõögKRCr”ÃV‡‹IEND®B`‚awstats-7.4/wwwroot/icon/flags/ac.png0000640000175000017500000000060512410217071015523 0ustar sksk‰PNG  IHDR(–ÝãtIMEÓ"ÿ;Áæ pHYs  ÒÝ~ügAMA± üa¢PLTE„{JR)k!9)BZsÖk„)„11œÞ9J„RR¥µR{!1c9k”B¥kc­ïs{kZ¥ÿBBZZ­ï{„B!„Œs9¥ŒkZJ­sœï­½ÿ””ÿ11ÿ½½ÎŒ¥{Zœ”s1Æ¥kRJÿÎsÎsŒÿœœÿ))ÿ„„猜¥ZŒR){{{½k1{99œuq ìfIDATxÚc045ã5Öb€C#1cnWKB[GWOÆU FMWVN^AQI™AEU È—d`’–r9¹¸yxùø…;2—™…™ËÈÄ@¿ {‘ë¬IEND®B`‚awstats-7.4/wwwroot/icon/flags/nn.png0000640000175000017500000000036312410217071015554 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTEþ þ€11›dd³þ[[þ¦¨ààðŽj‘Y8IDATxÚ•Î1 Á59ãÿ¬A´œT W ˜‹í‘B3E^ æ±Ðw^cIÕ¼(ñõÆ3;ç↶†™IEND®B`‚awstats-7.4/wwwroot/icon/flags/tn.png0000640000175000017500000000035212410217071015560 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEþþ-.þSSþ±¯þééþ––Ã蘖5IDATxÚ•Œ¹0ÃüÀþ+ÇÐFN>ߨ›k—¶¡ÂDÊÔäh±GÙðCÖ¹J—ˆo=œ£9´!IEND®B`‚awstats-7.4/wwwroot/icon/flags/gf.png0000640000175000017500000000041012410217071015526 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa$PLTE¾üýXÔ­‚^¥èíÂFúIþ2þŠþ®|T¼¾AIDATxÚ]ÍIÀ Á‰1 $ÿÿo– ºuI.sXèN7NâÜ‹ßÁ,l95®Õ6i”1ÒÙK›äÿ‘’pÂÆ=qÌêxbKÏIEND®B`‚awstats-7.4/wwwroot/icon/flags/cr.png0000640000175000017500000000036112410217071015543 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEryÅëàêþûùÔ¹·ì óvrÙ„Ÿèü¥6IDATxÚ}Î; Pìîc§ÆšhßF…u0ï@RbAfFdyDényb¸ùh]æËã  -Ê0¤IEND®B`‚awstats-7.4/wwwroot/icon/flags/zw.png0000640000175000017500000000041712410217071015601 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üa*PLTEpp ˜ éÙÙóòðÔ¾®ãؾ<ÆJô3 ¢Yí~rt ½s!H<ŸFBIDATxÚeÏ1€0Ñ•!ƨÜÿºV‰ Óý‚H[N|h{{T:ý\‰pKôtÏÄ\…žg¡«ÿ¢–iõÈú· -‹¤IEND®B`‚awstats-7.4/wwwroot/icon/flags/tt.png0000640000175000017500000000033712410217071015571 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEþ þ ¬—–ê™”þ\TWWWYȼ$IDATxÚc`eaffbd€F&ffV8—™™ ÁüÊ&5£ÙætIEND®B`‚awstats-7.4/wwwroot/icon/flags/gl.png0000640000175000017500000000036012410217071015540 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa PLTE¿覧ýüúÕXYé\î¯AIDATxÚ]ËÁ €0 @&,к DÊþ»a^øsRbƒo@ÖÕ&`€Cn9ä”§¼K‰ð_§U‡îxœèƒ§ÿ<ù™B: UIEND®B`‚awstats-7.4/wwwroot/icon/flags/info.png0000640000175000017500000000057512410217071016101 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ 0:zŠà+ pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/sc.png0000640000175000017500000000051212410217071015542 0ustar sksk‰PNG  IHDRíf0â.tEXtCreation Timelun. 21 oct. 2002 16:35:30 +0100®"ZtIMEÓ8"d_N¼ pHYs ð ðB¬4˜gAMA± üa0PLTE„Œ½JcÿœZ9¤˜B‘µ‰ÿÿUÿçÿÿÿXTÿççÿïïÿÿÿ^bÝcIDATxÚȱ À DÑLGFHë‚‚:Ê„Ž!Øf ¦Š˜$r ×<ÝÑÙ23ˆJKÛVyiWVÝÊt¬ÜA§æ( ’8Lµ²Ÿ"°™»È€KQ¾paà~õè.³ù¿µ'ïô:7IEND®B`‚awstats-7.4/wwwroot/icon/flags/nato.png0000640000175000017500000000023612410217071016101 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTE€ÿÿÿH€)æIDATxÚc`ÀŒ8 gAMA± üa¦IDATxÚcd°œÃÀ𙙉—›íç ŒÝ/–¦¼?À€X€˜Ÿ—CFŠ_‡åÚwï>þdÀ˜€˜›“ÕÐD^ÑR‡——7)ýûïÿ·ß__~ý%)ÊC@);+“Џ Š´è—/?ð(¹õ篿‡Ýcá~Ç¡P¥/ß~ûüí·ˆç³W_ñ(e¼/Ä…&Äùÿûÿ?XLø÷8ÀD¤º!¦jü5®±/ÞIEND®B`‚awstats-7.4/wwwroot/icon/flags/ht.png0000640000175000017500000000027012410217071015551 0ustar sksk‰PNG  IHDR%†¿’tEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE«¾9Âs„IDATxÚc`ÀþÿÁD‘Å Þv)Ê—IEND®B`‚awstats-7.4/wwwroot/icon/flags/af.png0000640000175000017500000000036012410217071015524 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTE00' llžž$ýýØiÎ[™ß,®`Ñ5IDATxÚc`G ÄpYÙ \V`# ``A¤qÁ€‰‰™ Âb&&BÂ:¤Ÿ\馪òIEND®B`‚awstats-7.4/wwwroot/icon/flags/tw.png0000640000175000017500000000034212410217071015570 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEõ ¦88´eeÈÂÂ䬚šØööôŒQî'IDATxÚc`„(`ddbfBæ2³0#qYÙØÙXqÊ¢ëE1™^<‘` |IEND®B`‚awstats-7.4/wwwroot/icon/flags/cv.png0000640000175000017500000000036712410217071015555 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTE"!¢«A@¹~ptŸaYU¬ûñÜág8˜¦ÄÜÿÈEõc›´ƒˆ&0EŒ¶+®ãço.èIVs¾`š¨í¯eÇ|Hè]IEND®B`‚awstats-7.4/wwwroot/icon/flags/hn.png0000640000175000017500000000037512410217071015551 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üa$PLTE¬JJÄþþüÜzzÔ¡¡áÊÊ쾾閖ÜÖÖô²²äZZËùÔB¨6IDATxÚc` p£& `å`bbæ±À\. `e‡sÙØ9XÙ9á\ff&&V0—Pâ(°cxÏÀŽÆIEND®B`‚awstats-7.4/wwwroot/icon/flags/kg.png0000640000175000017500000000037512410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEþþ/þ±þÐþnþóþZþ–íëèBIDATxÚ…ŽA! ¤üÿÇëEëÅ,·É4…1þƒYh*Z<ŒErŽ4iëX¡Œ¶dÛ’H÷/ÚVuí:¸wÜðÌ]²×’hÁIEND®B`‚awstats-7.4/wwwroot/icon/flags/yu.png0000640000175000017500000000031612410217071015574 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTEÿÿZZÿÿÿjjÙ¿Ö>·IDATxÚc`A $q™Q ˈ(çT‰Õ$»lIEND®B`‚awstats-7.4/wwwroot/icon/flags/cf.png0000640000175000017500000000043112410217071015525 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa0PLTEþþò× þýŽHjÚš¶ ¨|d»fc$ûþùýÙÙ––äÂR„¹))¡nlÉÚV€FIDATxڅ̱€ CÑ-‚Úúÿ+Í‹‡»4o)<¼#ß<ް:§[Ìy§B>hé"wEžBVÝEÉÈ¢Ùú+ ù¬SôNŽ:ÅIEND®B`‚awstats-7.4/wwwroot/icon/flags/ad.png0000640000175000017500000000037712410217071015532 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa$PLTEd]];ýüþVþíìçåßÔòfÛ¾¼¼ òqû9`8IDATxÚÎ; QPùéýïë6&P˜0Ýë†ñ@s!êP$SÍ4qó±BDóÐ?ªô¯/Ó5Õž†TIEND®B`‚awstats-7.4/wwwroot/icon/flags/mo.png0000640000175000017500000000043312410217071015552 0ustar sksk‰PNG  IHDRíf0âtIMEÓ8_1nt pHYs  ÒÝ~ügAMA± üa0PLTEk{ŒŒ)”9œŒ-”-BœBj·kµk‹Å‹±Ö±ÎçÎï÷ïÿÿÿ ó,ÓnIDATxÚcPTTbA!ÁHAA!EAQW!A!a±U‰‚@qUwÍAâï|!±Sï×$ùÒÿÞ½ßT'õÿßÿ…B ‚{wßiTdP”ZµbÕB ¸àêÝ»€ê¥Î,éTÚê¼W®s×IEND®B`‚awstats-7.4/wwwroot/icon/flags/bj.png0000640000175000017500000000026612410217071015536 0ustar sksk‰PNG  IHDRíf0âtIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEckÞïsÿÿÞÿÿàn½!IDATxÚcqq)è4 Ñ¡@@4Í((¨lll ]„é8#:IEND®B`‚awstats-7.4/wwwroot/icon/flags/pf.png0000640000175000017500000000042412410217071015544 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üa-PLTEþû”ŽØn”þþù‚‚ü{yú¨¨ül]òæâÔŠ>¬þþe̺Ìî.$îºTÞJTÇ;DIDATxÚ•A€ [° õÿÏe=²§ìd2ÙAHlðNì¡+y^_ÕR”¯&Ï@öÙ`X3ÛqÂs´C¸Jµ‰Ó˜PIEND®B`‚awstats-7.4/wwwroot/icon/flags/vg.png0000640000175000017500000000034212410217071015552 0ustar sksk‰PNG  IHDR(–ÝãtIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa$PLTE¼Ào‰‚ªpy7‚©PyKIÓÎŒžooé=0¼Á¬Å¶ ”’Úeð>#AIDATxÚ¥É1€0BQÈ"›èýïkœ¸ÚÙø+Þ€„„0îxH1úCS6‹ûª8ç\­] )Ù‹6ß¾IâW'¤¯ P3IEND®B`‚awstats-7.4/wwwroot/icon/flags/coop.png0000640000175000017500000000057512410217071016106 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ 8#Ö8Âã pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/biz.png0000640000175000017500000000057512410217071015732 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ 0:zŠà+ pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/bw.png0000640000175000017500000000035012410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTE2Öäæüæü®¶´RRTvòüfæ¯È0IDATxÚc`D L(€¿, ``E ,(ËŒÐ-Bbƒ,bÂebD8Ӈώ„èIEND®B`‚awstats-7.4/wwwroot/icon/flags/do.png0000640000175000017500000000034212410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEþú÷ùüþrtþþürrüÜ@-IDATxÚc`FF „Ë ŒŒÌ`ÀÀ‚йEŒ,MP!FRÂ’(d~KwËIEND®B`‚awstats-7.4/wwwroot/icon/flags/tm.png0000640000175000017500000000044312410217071015560 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üa'PLTEÿÿÿv¦ò~ÌôˆפDæ˜,Ó…$@Ø>¢í¡pâp#Ó$Šn<ôÆœttRNS@æØfLIDATxÚ]ŽWÀ0C ÌÞÿ¼M%:\þž<ð˜bÄϹbçªFÚª'G£)ùÖ²¯lqÔkf¼Í˾ÍDðè§ÎPX…(XÍ'L§äxWÓ IEND®B`‚awstats-7.4/wwwroot/icon/flags/es_cat.png0000640000175000017500000000034512410217071016377 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÒ :6í– pHYs ð ðB¬4˜gAMA± üa0PLTE€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿO&IIDATxÚcØ9{&íf  Z@'+®;VIEND®B`‚awstats-7.4/wwwroot/icon/flags/ke.png0000640000175000017500000000037212410217071015540 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE„4AK.ÆPRôÑÓ̤¤Ý„Á Öë²}?IDATxÚŒA ! c´úÿ«‰°öàHJ0.ð§EÙª ²Yë¦-Õ.H·u(I™õ{>Sž2$2/L§1"-IEND®B`‚awstats-7.4/wwwroot/icon/flags/fk.png0000640000175000017500000000046612410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa0PLTE¼=0¼”’ÚÁ¬ÅÆÆ?ÎŒž‚ªpooéïïö^4ÕÍñy7‚©PyKIÓÀo‰¶ «Íg'cIDATxÚmÌKÃ0EјàðËþw[KMâzG€!¡¸kÎ ¡—Ú©Úk/àú˜UÖ¦E $<‹¡‘iM0©£HTƒ]Üçóq‘Â6mž§øK¢c_1h“X~ô·¤x–!&3IEND®B`‚awstats-7.4/wwwroot/icon/flags/vn.png0000640000175000017500000000035512410217071015565 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTEþ þ:þoþ¢þÒþòþ¼þT¶rrø2IDATxÚc` 0¡rYøLìL¬lììŒP.#+°!ä÷¿oI¢ª›zz̹ÛWîð~\ Øt?Än’5¨Ü3–Ke,f¨®<š+Ù‚ùB“qÎBãæUq•fU›¥ì`^G›°QXZÕJÜÅL¡%ßYŒdmÓoçzì>ÙŠnB?IEND®B`‚awstats-7.4/wwwroot/icon/flags/ec.png0000640000175000017500000000036512410217071015532 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEªªgUBxt2¯£CÍ¡U•?ûûÊÑ:IDATxÚ•É[ DQsFÛÿŽ{Xduñ Ô+y É‹»é ³Å2‚9æ$4S”2g¯Ÿ£ëÆE!IEND®B`‚awstats-7.4/wwwroot/icon/flags/ax.png0000640000175000017500000000074412410217071015554 0ustar sksk‰PNG  IHDR(–ÝãsRGB®ÎéÀPLTE6¢$— ‹ÏÚÖmlN|£ÒtœÌíÑyôh_óÆe]ŠÂV…ÅQƒ¾K~¾Ex¹iiVê¦íz΃Û}ò–Ç,/øy™–Õ¥¼‚›ÂS‹Rlj© .óü \Å[À˜ì5Ý0-j;ÿ\žË BH]óòaà«Å÷yIEND®B`‚awstats-7.4/wwwroot/icon/flags/hk.png0000640000175000017500000000037012410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEþþ0.þ’“þVVþõ÷þÎÏþzzþ¯¯Öú¥=IDATxÚ•1 [ öÿ?V­nJXÈA0{P´+2à&J± Õbð]pŽ¥,8ÇÁºr¸ ÿªK ®«!sNIEND®B`‚awstats-7.4/wwwroot/icon/flags/al.png0000640000175000017500000000036712410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEáüªËUu‰‡p¾È™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/cm.png0000640000175000017500000000034212410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEV©TŠz<ý ý‘ýÞ‚v<þ&þ‚é&ª}'IDATxÚc`V& `f*pÙP¸į̀\v.¹1ââ¾ðÕeØ0ðIEND®B`‚awstats-7.4/wwwroot/icon/flags/ao.png0000640000175000017500000000037312410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTE KV7 |cΗaL ÝnæEè; Ë@IDATxÚmÉÀ CÑ*»ÿ3uê~ á<[øehÿ¾ÆÀÁˆNfÖ6ò@O f|ÑÛØzºäåãÌW‡ò†–ÔâgIEND®B`‚awstats-7.4/wwwroot/icon/flags/a2.png0000640000175000017500000000057512410217071015450 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ /1 7= pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/eh.png0000640000175000017500000000040612410217071015533 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üa$PLTE–ª.»V[MJ¶LÒBDýûúÛooî··à„„V><0‡b?IDATxÚ}ÊKÀ ÑãÉýïYøÁ…½{U/¹SÊ[gÁBRQP”¦ôI§9u°åùYuVle¡àÒ:oÚŠ6\IEND®B`‚awstats-7.4/wwwroot/icon/flags/dz.png0000640000175000017500000000037512410217071015561 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEø÷ùîînpaú¸¸m*3ÔBIDATxÚuÎI ÀJþÿcAÜ&”˜Uf-Á3•¬A¥˜û&™g{f‰ŠJÿ)|­‡,Âã÷çÅtÕž€ÔIEND®B`‚awstats-7.4/wwwroot/icon/flags/mw.png0000640000175000017500000000074012410217071015563 0ustar sksk‰PNG  IHDR(–ÝãgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÞPLTEï)iÉMQЙ9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/st.png0000640000175000017500000000035112410217071015564 0ustar sksk‰PNG  IHDRíf0âtIMEÓ6#ô½] pHYs  ÒÝ~ügAMA± üa'PLTEBsœÆ!ÿÿ½ÿÿïïÿ9ççÖÖœœ11ssÀv4ˆEIDATxÚc`E(m¥ ´±[XjZj*ƒqihGèÔPc“Ð3‘;ÁôªÐ­¡ ñÎÐi@Ú554,4 ®ÏÍ\¨=càpQÀäIEND®B`‚awstats-7.4/wwwroot/icon/flags/mg.png0000640000175000017500000000025012410217071015537 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEÖÖÖÿÿÿsÞÿCožIDATxÚc`qâiac ÒBJ@@* .â ꮪÈIEND®B`‚awstats-7.4/wwwroot/icon/flags/fo.png0000640000175000017500000000035212410217071015543 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTEþþüJ”þVTòòü>"¤::¼.œßJ\àþ/IDATxÚc`&FfÀÏeÄ)Ë lLŒ¬ÀÀLìP€ÎESŒßdR\¨1–¦‚¥IEND®B`‚awstats-7.4/wwwroot/icon/flags/gi.png0000640000175000017500000000044112410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa0PLTEþþ.÷”OùOQåuWþþüçÅÇÙ‡‡Á²òÜÜ¥®âµ¶º34¶JL|R%NIDATxÚm‰À QœŠ‚ûÿoÇddaÙ¥I{)øQ‘µZ®Ì«Ÿ³ºõÎ$޹iï«7¹Vݚ⊈Ms+nJ¶#eDý¾ÉêÚØrmì-|IEND®B`‚awstats-7.4/wwwroot/icon/flags/ip.png0000640000175000017500000000033212410217071015545 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿUÂÓ~tRNS@æØf$IDATxÚc`€FA-„ .!h˜8˜Å•A¡Ñ¤á™%‹™¬ ½IEND®B`‚awstats-7.4/wwwroot/icon/flags/bb.png0000640000175000017500000000037412410217071015526 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEkG{L$Šd_ö× Þ½Æ¥-²Ž=–tVtÎ ÝAIDATxÚ…Î1APƒÄýo¼Ö4QÂó¥ÀN—E—Ïô7ßœ´”Д(*%Ì„¦AB鶘\w¯.­7æÐ>—zi®‚šÕIEND®B`‚awstats-7.4/wwwroot/icon/flags/au.png0000640000175000017500000000040412410217071015542 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTE›M(ŽÜ¯Âf_¸öàäÑŒ¢Õ\gÞ hUÝ‚IIDATxÚ…N À@ÒšÞÿ¼¶ÝƒM“ „Aa‚J×,™ +÷]Ëuh„Ü·A§­x13….kÐ.¯=ó¡cÓ „0ßV–òIEND®B`‚awstats-7.4/wwwroot/icon/flags/ph.png0000640000175000017500000000041312410217071015544 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üa$PLTEþYYþþþðþ®¨þþŸòæðþþ:ÄÄüû˜˜øhhü::ü¤(0ÕDIDATxÚUÎI€0 AI±³ñÿÿ)Hì¹ué"̃LµHI~%JóÐj•F¤ÉZZ͹úXøó ô->7 OH"ÅÌS>P? IEND®B`‚awstats-7.4/wwwroot/icon/flags/mr.png0000640000175000017500000000035612410217071015561 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTE¾#¾6¾¶¾x¾L¾–ùr–9IDATxÚc` °² pY˜QeYlFTP}¬Paf&°f¸9,¬¬@¦— àF0¡ð@ ÐLÇ, t½r‡IEND®B`‚awstats-7.4/wwwroot/icon/flags/kn.png0000640000175000017500000000046112410217071015550 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa0PLTE//îñ¼°6ÕÓ˜2¢JPPŒoÒÒÔˆˆDR©~ŠœÎnÝv^IDATxÚEËIÀ ÁшëÿˆQçÖh¡ïMÎþ1N6žÀÉÆ7U?œ±±R€Ìèc1"TV\8 ìRÕ_cL"¦©gAlþ+”Uv:{ä$g;i±o/{ôU ceIEND®B`‚awstats-7.4/wwwroot/icon/flags/pa.png0000640000175000017500000000041112410217071015533 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üa$PLTEüýýûþÈÈ÷îôþþ``þjlþÚÜüÒÒüÇÇüffü÷0eµBIDATxÚUÌÛ ЕV–ÿÿ¿ÙåÁMQ^ô±N¦ž¹leN!Òg¢&RÎà'F4±›¶Ìª•(Ä› âB·Å}N½IEND®B`‚awstats-7.4/wwwroot/icon/flags/kw.png0000640000175000017500000000035212410217071015560 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEŽù  ÆÅÄþüú“f¾l N òð</IDATxÚ•Ç1 À4Tþÿc,%6·”7P^>•—9Ênëå»q¬ÂÖ°Â:B¯g¬úð?IEND®B`‚awstats-7.4/wwwroot/icon/flags/glg.png0000640000175000017500000000163212410217071015712 0ustar sksk‰PNG  IHDR(–ÝãPLTE@€ÿ @ € ÿ@@@@€@ÿ``@`€`ÿ€€@€€€ÿ  @ € ÿÀÀ@À€Àÿÿÿ@ÿ€ÿÿ @ € ÿ @ € ÿ @ @@ @€ @ÿ ` `@ `€ `ÿ € €@ €€ €ÿ    @  €  ÿ À À@ À€ Àÿ ÿ ÿ@ ÿ€ ÿÿ@@@@€@ÿ@ @ @@ €@ ÿ@@@@@@@€@@ÿ@`@`@@`€@`ÿ@€@€@@€€@€ÿ@ @ @@ €@ ÿ@À@À@@À€@Àÿ@ÿ@ÿ@@ÿ€@ÿÿ``@`€`ÿ` ` @` €` ÿ`@`@@`@€`@ÿ````@``€``ÿ`€`€@`€€`€ÿ` ` @` €` ÿ`À`À@`À€`Àÿ`ÿ`ÿ@`ÿ€`ÿÿ€€@€€€ÿ€ € @€ €€ ÿ€@€@@€@€€@ÿ€`€`@€`€€`ÿ€€€€@€€€€€ÿ€ € @€ €€ ÿ€À€À@€À€€Àÿ€ÿ€ÿ@€ÿ€€ÿÿ  @ € ÿ    @  €  ÿ @ @@ @€ @ÿ ` `@ `€ `ÿ € €@ €€ €ÿ    @  €  ÿ À À@ À€ Àÿ ÿ ÿ@ ÿ€ ÿÿÀÀ@À€ÀÿÀ À @À €À ÿÀ@À@@À@€À@ÿÀ`À`@À`€À`ÿÀ€À€@À€€À€ÿÀ À @À €À ÿÀÀÀÀ@ÀÀ€ÀÀÿÀÿÀÿ@Àÿ€Àÿÿÿÿ@ÿ€ÿÿÿ ÿ @ÿ €ÿ ÿÿ@ÿ@@ÿ@€ÿ@ÿÿ`ÿ`@ÿ`€ÿ`ÿÿ€ÿ€@ÿ€€ÿ€ÿÿ ÿ @ÿ €ÿ ÿÿÀÿÀ@ÿÀ€ÿÀÿÿÿÿÿ@ÿÿ€ÿÿÿ£0 pHYs u uJ%Ýý@IDATxœUÏÁ 0@v`öŸÒÚj-åw‰!щ1!èNº“aÞ<æãvÇÍèÂË*0V!lC>QÂ÷’«j5Xƒt}IEND®B`‚awstats-7.4/wwwroot/icon/flags/yt.png0000640000175000017500000000027712410217071015601 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa PLTE¶þþüþ 3‰¸yIDATxÚc```RRb  4űù M8IEND®B`‚awstats-7.4/wwwroot/icon/flags/ls.png0000640000175000017500000000043112410217071015553 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa$PLTE-æûUŒ½ííÐRRüýýøxxü˜˜ü’<ÕÕq¿¿H—@ðRIDATxÚ]ÍQ€0Ð"¸)Üÿ¾BGÌ´/PÀø?š¹¿š›NG´ ’ô‡dr9¨‹‚yk™Có‘­ZIQpêV­éªQÅÉ#ÊÀúH»ô´Z‚[±ÈsIEND®B`‚awstats-7.4/wwwroot/icon/flags/es_eu.png0000640000175000017500000000046512410217071016244 0ustar sksk‰PNG  IHDR*º† pHYs  šœgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF«IDATxÚbd«ad``ø1‰™?þ’ÿùYá"y$@1!s°¸@1ÁÍê.T@Lȶ£©FV$ˆ ™ƒ,¦ˆ n²Ï° ãÿÿÿˆÄÄ@4 ÌðûÙüH²×2¡9 €˜0ý‹5€ €˜pù3Lˆ «:¬ªˆ’%ÐÒÜ €b¨hRõA2´¦ÄëIEND®B`‚awstats-7.4/wwwroot/icon/flags/br.png0000640000175000017500000000042712410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTE†k¬0ñî•¥Q^r~¬Ô 0­C\·\IDATxÚ=M1BäÿÿøÂÞ™·•¬ÌüÎõÃAÛÖ|Jܬ.O9ѪD¬¬‘Òô-%FcøŠ·,»]æÑ ›˜ê.òåxÈ+9x“Æ/Žm–îµ°ø¾ÇEð\IEND®B`‚awstats-7.4/wwwroot/icon/flags/nt.png0000640000175000017500000000057512410217071015567 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ 0:zŠà+ pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/ps.png0000640000175000017500000000033612410217071015563 0ustar sksk‰PNG  IHDRíf0âtIMEÓ ðˆù pHYs  ÒÝ~ügAMA± üa*PLTEBsœÆ!ÿs„1R½Rÿ99ÿÿÿÿ½½s11RRRÆBÓíØs7IDATxÚc¸s ö@i[(m ¥g­ãôr`0¶@£a⮡ À`$ PZJ3Bh…(ãÚV-IEND®B`‚awstats-7.4/wwwroot/icon/flags/iq.png0000640000175000017500000000035612410217071015554 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE224 Áê¿÷ûöiÎißžõfe파R3IDATxڕʱ Á`Çdÿ‰ 2 ⻓>ÊŠ/N+h5”PRÛR>_ ëA÷•Ìál °IEND®B`‚awstats-7.4/wwwroot/icon/flags/fm.png0000640000175000017500000000040712410217071015542 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa!PLTEüüü))ü¢¢ü––ü··üü""ü²²ü¬¬üÅêÏCIDATxÚc` 02!ó˜YX˜‘ùlœHr@Å` ˜X¸\,ýŒ,œ@.'” TÅŽ¤lªE¬Œ¸ FªñëÌIEND®B`‚awstats-7.4/wwwroot/icon/flags/lr.png0000640000175000017500000000040112410217071015547 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEþnk÷ñ‘˜ó°¸ùÙÞýýûAØnRßã`LðFIDATxÚ]Œ À@B½2ûÿ?^ v£ž"&Tœ ¤/H2ñ#wÖ¶>Ídt5ˆ5å,½Ñ‚ °`¯gsÿ\±gûÕ›»WyÊIEND®B`‚awstats-7.4/wwwroot/icon/flags/am.png0000640000175000017500000000033312410217071015533 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEþ¦LF¼J¼®Dm?Ôp)IDATxÚc` ° &dÀÌÀŒ€\I&&(H¬˜Pâ(ZvÍÕ°PIEND®B`‚awstats-7.4/wwwroot/icon/flags/va.png0000640000175000017500000000033412410217071015545 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa!PLTEÆÆïïÎÎÎïïïÿÿÿÿÿïïÞÎ¥¥ÆÆœ„„)¥œ9òAÃ÷>IDATxÚcqqq eÒÎh´[¨„Ž\5,ÑÀ ‘o‚ˆ'”+CøIÁ:ª/…›Ç(((dll ËU¢mž—ôIEND®B`‚awstats-7.4/wwwroot/icon/flags/mx.png0000640000175000017500000000034712410217071015567 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTEŽLªNôõôøY[÷Ž¢”»Ã¸ET?ÜbÔ,IDATxÚc`F& `f2¸ll(\vvd.;;*E1++ùöâൖÁÌûæ‹IEND®B`‚awstats-7.4/wwwroot/icon/flags/tf.png0000640000175000017500000000034712410217071015554 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üa0PLTEccc1œ1cœÿÿÿ1cÎcœÎÎÎÿœÎÿœÎÎΜœÎccÿœcÎ1ccÎÿ1ÿœœ,ÜÖÂ:IDATxÚc`tÞsQPPÑy”þ‡Æ‡È³„Író„x„4„ÐÂ.P:J»Bå¡ê »9ðNF¢KIEND®B`‚awstats-7.4/wwwroot/icon/flags/zm.png0000640000175000017500000000036012410217071015564 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTE; *Ž â) ©}ö™æx^î5IDATxÚc`D ¸¸ llì Ȳ@.ÅLl,¬@ÕL0.3˜ ã1 pqÈ’¤—‘  ²ˆÛ½¶öIEND®B`‚awstats-7.4/wwwroot/icon/flags/fx.png0000640000175000017500000000027712410217071015562 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa PLTE¶þþüþ 3‰¸yIDATxÚc```RRb  4űù M8IEND®B`‚awstats-7.4/wwwroot/icon/flags/hm.png0000640000175000017500000000040412410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE›M(ŽÜ¯Âf_¸öàäÑŒ¢Õ\gÞ hUÝ‚IIDATxÚ…N À@ÒšÞÿ¼¶ÝƒM“ „Aa‚J×,™ +÷]Ëuh„Ü·A§­x13….kÐ.¯=ó¡cÓ „0ßV–òIEND®B`‚awstats-7.4/wwwroot/icon/flags/et.png0000640000175000017500000000040312410217071015544 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa$PLTEë$òZ–B\D´ûÅ&Tm’hx„¨˜\L®r¢ :~D,Ž\Ì8TÍRoçt|à ÀŠà;IDATxÚ…ÉQ DÁuÓ¼ÿ 3Èz~´CðÞ„#û<3µhÉx“Vyýê¦DäÉ݇µišx'oJIEND®B`‚awstats-7.4/wwwroot/icon/flags/cg.png0000640000175000017500000000037312410217071015533 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üaPLTEæé%´ÓDþg úýýùÐs¯sþ˜ N¢ù÷@IDATxÚMÌÁÀ Ã@‡ºÿÆ%` úÝG$aÅTÇ+$1ÍR3kóåa©ç¡µ¨Úˆ¸š¤¦›w³ D3kéÊÒ•¥IEND®B`‚awstats-7.4/wwwroot/icon/flags/ua.png0000640000175000017500000000035712410217071015551 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEýÉþÉþÊýʪÿ©ÿªþ©þßþ4IDATxÚc`‡Vb`C ì(]–X€˜ sñFÀÀŒй`5L` $ÑLmc‘ €ÔIEND®B`‚awstats-7.4/wwwroot/icon/flags/sr.png0000640000175000017500000000031512410217071015562 0ustar sksk‰PNG  IHDRH-ÑsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ  )ý@£ÖMIDAT(Ïcd(ÒüÏ@`b 0þÿÿŸÎ6^0Áj£îÞ3 —MH³QwßF(M¬FtŸ4ch¼ìd‚—O0ppi 8ƒ0éžVÕ %ø…xõIEND®B`‚awstats-7.4/wwwroot/icon/flags/an.png0000640000175000017500000000036112410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEþþüÚnl°¦¦äŽF„¬""´::¼÷{:S6IDATxÚc`F&&F –Ë ,LL,`+°±Ah—Œà\8€pÙØÙ!ªÑ¢ÀU®~©"Ÿx~IEND®B`‚awstats-7.4/wwwroot/icon/flags/km.png0000640000175000017500000000040412410217071015544 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEÿÿÿÍ bàaëûëŸìŸÐ§ntRNS@æØfEIDATxÚUŽY  ¼ÿ™£¤E>ôMb£)ª1U€Bˆ yJêéš±­“µhäÆÑð7k”x_¡Åè‡øòœËátÖrtó‹} IEND®B`‚awstats-7.4/wwwroot/icon/flags/org.png0000640000175000017500000000057512410217071015735 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ /1 7= pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/py.png0000640000175000017500000000040012410217071015561 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üa$PLTEüZYûZ*ÔþýûÉ–ÄëÆÜ„ªx–±¸vÊDþXZþ*,þsF7¬9IDATxÚcàF $q9Á€ Bq20ƒ ; ˜fsYÙ9ØY‘¸lllH\fV˜bF0`‚PŒ RfdžÝIEND®B`‚awstats-7.4/wwwroot/icon/flags/lk.png0000640000175000017500000000043712410217071015551 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa$PLTEõùåàØÐj–˜‚þjþ𵦆lƺ{o]ãùŸXIDATxÚMŽQÀ0BÅVíýï;Ýl:¾x!Dˆ¢%×½Æ4ÅHä˜l´+0£ÔhÌ®“ZýÒƒ*©Ë‘ôK©´8ËžÞ6ö ïW}Òs°ŽCKéÇU.®™IEND®B`‚awstats-7.4/wwwroot/icon/flags/ly.png0000640000175000017500000000026512410217071015566 0ustar sksk‰PNG  IHDR%†¿’tEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTE¾ÿÿÿÈ„ô IDATxÚc` *\§ïIEND®B`‚awstats-7.4/wwwroot/icon/flags/ie.png0000640000175000017500000000034512410217071015536 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE’ V¶\þþüþÂ\þž– ÉV8q0IDATxÚc`F& `f@å"ËÕâ‘òeY È¢ÚËŠn/ Ý^VÜŠÎåí}…ÑUIEND®B`‚awstats-7.4/wwwroot/icon/flags/tk.png0000640000175000017500000000041612410217071015556 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEªbbq˜˜E}}VVZl 9qBB„p,sIŠSIDATxÚeŽ[ 1“hÛûßx} «_ ð—Ivi3H®]´@JŒ#XÂpR¦J4¶†ÖìfuçœrLŒØ×'~d4u ÞZñâ)ùÌ_Øæ›0IEND®B`‚awstats-7.4/wwwroot/icon/flags/qa.png0000640000175000017500000000036212410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTEãÜÜÔ’‘¢,/ùù÷ªÓzæ°´êÄÄI+ϸ7IDATxÚc````d‚fffF8qP¹¬¨\v8¬—HÅ`. ——^&,Î@VŒêò ½3IEND®B`‚awstats-7.4/wwwroot/icon/flags/sz.png0000640000175000017500000000047712410217071015603 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üa3PLTEg™ËþÎÉd `0›X ßÑÐÆ¹¸¢+ôôôdhv­HOOP)-4Þ’,G¡tRNS@æØf\IDATxÚ}Ž1À C±ŠDìýO[ûè¢CÿÉ„ÒòÚ ÜqˆuZoú~Kju4 %&ÍCܧ–1Róé8ÒÄUDÐÁlQ" åë;gün~liÍRIEND®B`‚awstats-7.4/wwwroot/icon/flags/ze.png0000640000175000017500000000037512410217071015562 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTE µ[ÁÁf‡ËÚ’äÞî:ý †}óBIDATxÚ…Î1À0CÑþáþ7.JÉP¦'Y†µþ' 5A 2÷ 2½ÓÅ3¬ZÞf¿«›æš‡Ê1Þøœ j…ù˜—÷IEND®B`‚awstats-7.4/wwwroot/icon/flags/re.png0000640000175000017500000000046412410217071015551 0ustar sksk‰PNG  IHDR*º†!tEXtSoftwareGraphicConverter (Intel)w‡úÎIDATxœbøO4`¥¾­”!n ^¥O@‚_~þaŒ^"•·¯Ò· ¡“S’V2Ä­`ˆÁaê¦KO‚ç;4—2$®bˆ[)³ž!aÙ‹ïQ”2$-fˆ_½•!f5CÒ†è%@W2$/cˆ_ɲŽ!t>Té´)“&M›4yòÄiÓ&O‚€iPzÒ(â€7ÞÉ]»vI..®ÂÂÂÊÊÊ¢¢",nýýû÷—¯_>þ dÿû÷Èøõëן?ð†@‚Rÿÿ$ÿÅñ³[IEND®B`‚awstats-7.4/wwwroot/icon/flags/sk.png0000640000175000017500000000037312410217071015557 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEô »CXŽ4 *{ö««Œ”»öhdöööª#ø@IDATxÚËA À0ÑùjÒûß8&•b鮃”ëFÖznƒ9sßá®y•D¢3Ÿu¦h¶iûTüj_LKW{ÆšIEND®B`‚awstats-7.4/wwwroot/icon/flags/me.png0000640000175000017500000000052312410217071015540 0ustar sksk‰PNG  IHDR(–ÝãsRGB®Îé`PLTEêÃ;á»:׳7ÿØ9æA6ØA5Ú©*â Ù Îé»>ßm(äœ3ÿÜB÷B7ë ];há®+ÿáF2¡rç²<ÿé?ô ì2í¶>f±è#í·.è¤7äýÓAôÍ?oÌiRbKGDˆH pHYs  ÒÝ~ütIMEÜ .— WlIDAT×uÌKƒ QP´ùI'ŠM‚ûߥÎôÎjRb,È9ﻘÃE)õE.À@ôì"]3mÑo^×äôY׈ìÞb ÌÎNStÚ ‡€YÛ¼LÉVáatÙߤSœ ]Õ‹BBs:¼ý Lo ÖÇIEND®B`‚awstats-7.4/wwwroot/icon/flags/cz.png0000640000175000017500000000035712410217071015560 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTE|pû -³àÜôüüûƾ좘ÜjZÌî Sã4IDATxÚUËA ÄÀTþÿc‰‘ö6‡ê¬™|“ 'é‡{Óƒ´WSàWq¨h /ÿâtsIEND®B`‚awstats-7.4/wwwroot/icon/flags/lt.png0000640000175000017500000000030012410217071015547 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa PLTEì¾éù{sXkIDATxÚcP‚B´ उVƒj5²IEND®B`‚awstats-7.4/wwwroot/icon/flags/ge.png0000640000175000017500000000033712410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTE~¡AB† þþü–64ææäb¯ò§O$IDATxÚc`vÀÏe8—иŒp.#01Ð|h·ØÎþIEND®B`‚awstats-7.4/wwwroot/icon/flags/rw.png0000640000175000017500000000036712410217071015575 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEþþBùùIJ²ddŒŒ+Í IDATxÚU1  Ôþÿãj¨§[FGfÅ»ŒŸƒê¨ÍóŒâ×™d3K,S¥™åE¾Ê7û à™ö¤ÆKIEND®B`‚awstats-7.4/wwwroot/icon/flags/kr.png0000640000175000017500000000041612410217071015554 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üaPLTEúùøÖÏÓpgnŵ¹¦”7#ó ÷YY)K`SIDATxÚ}N[ À0 2æÑûßx6Í ìcˆ"Ñÿc´aA)4œô †UUKn´±U•c®Ä3s½iGÆæS¢ØfG1¦È~¿ñ}²ëf€A8ƒx‚IEND®B`‚awstats-7.4/wwwroot/icon/flags/ag.png0000640000175000017500000000037712410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTE÷ ò“”èé™ñja#\Ž –š]'vgDIDATxÚUŒA À@ÄâÔºÿÿqU°¬¹ !"ï‚ÓãÑs &¤v¨ìJ¼cåŒ ï>Àò­ õIö«•ÂíR[1ó³tN?ý «³èK¬IEND®B`‚awstats-7.4/wwwroot/icon/flags/mz.png0000640000175000017500000000044612410217071015571 0ustar sksk‰PNG  IHDR(–Ýã+tEXtCreation Timeseg 6 Mai 2002 00:17:58 -0000³}ì¯tIMEÒ ;ƒƒ pHYs  ÒÝ~ügAMA± üa0PLTEÌ3ÿÌÿf3ÿÿÌfff»ÿÌ™ÿf333™™™ff™3Ìf3ÝÝÝ3™LnçªBIDATxÚ]ËIÀ Ávdáÿ¿%²bĤO. ´)£vÞOäd‹Þû¼ ÁQ*ð§4¯ÿ_XÖÈi#•©LeM¹ò6d0IEND®B`‚awstats-7.4/wwwroot/icon/flags/gr.png0000640000175000017500000000040012410217071015541 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTE%-·}ÔþþüJNÄbfÌìíùÒÖô³´äÕ|›×EIDATxÚ]Î À0Áõÿ7•¤Å  \\Þz›º‘©öE«´ÊWºÝáíX]Øðá°ý\aæ÷y¤7zê QIEND®B`‚awstats-7.4/wwwroot/icon/flags/ae.png0000640000175000017500000000034012410217071015521 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( +2|¡ pHYs  ÒÝ~ügAMA± üaPLTEþ ZTRþ¼þþüBrN®R• ˆPߦ%IDATxÚc````e‡’¹lpâ2³ÀÉ\&q€$.E·\ÙƒÒ_IEND®B`‚awstats-7.4/wwwroot/icon/flags/sb.png0000640000175000017500000000045312410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üa0PLTE¨îËÈÈ,è÷Ì——Q^Þuuª99È&&ÎÜܶ¶*Oë(&Ë"‚ÿ^¬¢|næçOÆÄIEND®B`‚awstats-7.4/wwwroot/icon/flags/su.png0000640000175000017500000000035612410217071015572 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTE¾ÔXÏ;É(ì²õÓûñâŠô¦î3IDATxڥ˹0 AzúïØQäÀd;ï1èÔæõbʦQòo–ÕYÝV¤ð½'Ž\kunkIEND®B`‚awstats-7.4/wwwroot/icon/flags/tg.png0000640000175000017500000000035612410217071015555 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEÂþþø¦) åþV~þef~†m´#3IDATxÚc`VÀÆeGpÙØXX˜¡€ÈDá‚e™¡€¿ÉL À Ẅй¤žW.ÆªŠ°IEND®B`‚awstats-7.4/wwwroot/icon/flags/ml.png0000640000175000017500000000021112410217071015541 0ustar sksk‰PNG  IHDRíf0âtIMEÒ ×J'Q pHYs  ÒÝ~ü PLTEªýýýZl,IDATxÚc```TRb  1ãÑUz³IEND®B`‚awstats-7.4/wwwroot/icon/flags/gt.png0000640000175000017500000000042612410217071015553 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTE¦ú¦ë¡ïh¼ØõýúýýüYÁë«û'8“—[IDATxÚ][À Ã’ÒÇýo¼´ 1ía¹4rE„'i†ªBº8«¯ÍB÷}¤ÞFB®-„Ñ8m•ªÑ¯…kOøkylüÕ´µGbvj2 lõ’KŸ±}·…¹LrIEND®B`‚awstats-7.4/wwwroot/icon/flags/pg.png0000640000175000017500000000032712410217071015547 0ustar sksk‰PNG  IHDR(–ÝãtIMEÑ  $“ˆûà pHYs  ÒÝ~ügAMA± üaPLTE­÷÷÷Æïœÿÿsç„1±p?IDATxÚUÌQ€ ÑYôþ'6q)²ýâ…ia^ÇÏzʤ-Êt/éþ؉¸ú¡"ÿåÓx¹zˆÒ»µ‰iI^©Á0éÓ% IEND®B`‚awstats-7.4/wwwroot/icon/flags/kp.png0000640000175000017500000000042012410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (H4x pHYs  ÒÝ~ügAMA± üa$PLTE¬nnÐÛtuâ‹‹¾ý÷õóÕ×Î:8Äë­¬Ê((Ö_a#À%¥IIDATxÚ}ŽA€0Zºÿÿ¯5U‰:{šD¶„JpEd:±˜jÎð^:ÐÉW#1¼ÔÔZÔð\ŽöT]WÌôæÿÆ–õ 3ÖƒÛIEND®B`‚awstats-7.4/wwwroot/icon/flags/cx.png0000640000175000017500000000043012410217071015546 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üa$PLTEº(¸#7´\`¿¢ŽŽXNN¬óûžá tPdØ €/|QIDATxÚUÌ[À Á Æáþ÷ ¢‰ºÅ‡]‹pa‡äÍ >Ð::Ï44Ë++É--ÑÅ À  êŠŠå‚‚â||àzyÝssÜnnÙjj×eeÖóóúþþþüüüûûûúúúøøøöööõõõôôôóóóÓÓßÖÖâ;Ô;§í§“铎莊抅ä…â{â{tÝslÝl‚߳Âæ‚gáhcÝb^Þ^\Û\VÙVS×SK×KBÔBtâtÁ¼§Ì7ŒbKGDˆH pHYs  ÒÝ~ütIMEÜ .%E-Ò|ŽIDAT×mÇÛB@Ð# JÑ…È(YjšåñÿÕ´ê-ûmCʽº®cŒõ}i–e„´-¥÷¢lþ›ç¢¬êúU D§8N’ó…+½1Ø:Žãî<Ï÷÷88~ú[Õu¿Ã!>€>7ÍÅÒ²íÕzcÀXQ5!Ã0fH䕤‰,+êTCaĉÜ…zÀVË•IEND®B`‚awstats-7.4/wwwroot/icon/flags/gg.png0000640000175000017500000000113512410217071015534 0ustar sksk‰PNG  IHDR*º†sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ  (;êüœ÷ÝIDAT(Ï=’½jTQF¿³Ï>÷Ι51BŠ0бPâOì|‚ø‚ÚØÙkç;Ø B ÑFˆÆE‰ 1cþMâdæÎÜ{ÏÞÛBã*W»–[__WU\`y»%à ê îÍÇ««–ÌÑòò²H‚Áš±ÚÜ®vŸ†Å|øaµsë<Šªž¹Ûí2±ŸžžÆ¥ õà söËNŒˆñ¯'ölIh-Ðà“ˆ"%%àê€[–žlmÉ$y3™šÒÞ×䘷߯>}öÅf3Ùé¹' —Úíb&£"‰cÛ> ‡ù5­y=5—i¢ã>þJÏ8ôz>]þœÑ0‘±žn»9k<Þ£Aî[î øì,Smš¯.ƒ1¨ $MÑin&ÀõÌlÝΫ—‘^$Jl{¯Ýeªnf¶8+ mq9WÔƒ‚q÷6Ÿ=sl¢NL§N¤Gíû?ðuçBëþ?)††Ç›.çKK‹+R%¬«gïʨ›ŸWVh46€3Γ²‹ „àCø×¶•‹ö³,h%ˆ ¶:õú*bšÍjÐ/Õ†ÕÈ&7:4³·”ØT77^0y>þ±+5ÓžÓÏ“¯¨œüßå}ýM8%V²IEND®B`‚awstats-7.4/wwwroot/icon/flags/nz.png0000640000175000017500000000037612410217071015574 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTE ”P*ßz˜É/^}s¶¾W†dH™Ð¦ÂR†^6CIDATxÚ­Ë1À0CQcŒ¹ÿÒTÝ:õO<$£N˜8¹Ë¯$²(Ï@žFë§n²¥gÊÈTÝ0‰±÷ø§âCÓƒÔÒl3°IEND®B`‚awstats-7.4/wwwroot/icon/flags/gu.png0000640000175000017500000000045712410217071015560 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üa0PLTEÁ?–mùž0uW¬UK¤êèÑns¡›‰††Ü¹³àzrøÑ´ÄÄöÐV|UhAÍÏ \IDATxÚMÎ` %âýßöên:MåÛlþ”xû0d¯‚ï‚…eý,so… ¨‘‚‹YTJÖ¢ ‡SUTƒØ¥­kÅÿ#ÊÜðŠQ]©2ž–Ú_¬6ƒÄ BEIEND®B`‚awstats-7.4/wwwroot/icon/flags/gw.png0000640000175000017500000000036412410217071015557 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üa$PLTE¾bJ–¤2f®NzÝzöúþþBKµŒ-IDATxڭDZ@ÁG”øÿÿÕÒÐÌmÁOâ©Zª¶ð`LZO Rþôôˆ›7Ìc³IEND®B`‚awstats-7.4/wwwroot/icon/flags/ki.png0000640000175000017500000000052012410217071015537 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaB£7Ç™\¹íÕøŸÕÔœOXMÞ²…k—°Žèêô×»$+IEND®B`‚awstats-7.4/wwwroot/icon/flags/sd.png0000640000175000017500000000045312410217071015547 0ustar sksk‰PNG  IHDRíf0âtEXtCreation Time12/9/2002eëÏUtIMEÒ 3™Ñžú pHYs ð ðB¬4˜gAMA± üa0PLTE EO¢7ZÆ9RÐ?^Ê=ï ÃU÷!ÿk¸JÉGâ÷Þÿÿÿáø1˜[IDATxÚc¸Ñ ); tø‰@ÈS>kÕŠ® áå•·nÞºÅ^öîÿÿÿ ¡¥¥>ïtLxh8ˆ­ ?/ñµñµê3`ðb0ÅP"¡!ðÁ,')]0IEND®B`‚awstats-7.4/wwwroot/icon/flags/co.png0000640000175000017500000000034512410217071015542 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTEÖn,äm"þb½SE33˲²Mîîþþ¦'Êî*IDATxÚc`cG Tä²¢@€ËŒ™*— ÀÜ  ­IEND®B`‚awstats-7.4/wwwroot/icon/flags/sy.png0000640000175000017500000000035612410217071015576 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (¦:qT pHYs  ÒÝ~ügAMA± üaPLTEJJLýþûåñå^¯_¢Ð þJLþ|ƒÔr3IDATxÚc`G $qÙP3Œr™YX™Á$„ËÄ„̅*Q Œ(€€]wÂHIEND®B`‚awstats-7.4/wwwroot/icon/flags/de.png0000640000175000017500000000030012410217071015520 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üa PLTEþòþ §ëøIDATxÚcP‚B´ ¤ %úÆ-ŒIEND®B`‚awstats-7.4/wwwroot/icon/flags/in.png0000640000175000017500000000035712410217071015552 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTE/²- ¡ ú÷ó’¾ÐÒä_ežÂ´¸û’(8Ì4IDATxÚc`G $qY˜@€ L11€IfVd.+*U–‰™ª 0¢\ˆTj%pµ'ÁíIEND®B`‚awstats-7.4/wwwroot/icon/flags/my.png0000640000175000017500000000042012410217071015560 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTEøøÐÈøXXøŒˆˆ€Èøüø `L¨` x¼.÷¶OIDATxÚUŒ À@ãmÿÿáêÚk‡!"“Ì3pÓ-Ý’ïÚ•ü¯,º|V³ÒæCS¸“îaìC«êĤ\QBQVÌÙÀÎåu Û”IEND®B`‚awstats-7.4/wwwroot/icon/flags/aero.png0000640000175000017500000000057512410217071016074 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ 7 úqãu pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/ye.png0000640000175000017500000000031212410217071015550 0ustar sksk‰PNG  IHDRíf0âtEXtDescriptionMade with GIMPõT1³tIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üa PLTEþjlþþüþÃLâIDATxÚc0†\´ 0(ANZq 4>ƒVIEND®B`‚awstats-7.4/wwwroot/icon/flags/bf.png0000640000175000017500000000040212410217071015522 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa$PLTEp&‚V žÆôööâ®#´œ÷öWúŽö¨Y)¶;IDATxÚcà@ Dq9Q¹¬H\N.nn.6`gaaa1À€‘……•˜˜™™\F(¦áqÂIN¯IEND®B`‚awstats-7.4/wwwroot/icon/flags/um.png0000640000175000017500000000025312410217071015560 0ustar sksk‰PNG  IHDRíf0âtIMEÐ (8^ä÷ pHYs  ÒÝ~ügAMA± üaPLTE­ïïïïè!4Ñ(IDATxÚc`À¡”€R`® „†@qFˆ:¨4ƒ£n#;ál ¯ÌIEND®B`‚awstats-7.4/wwwroot/icon/flags/dm.png0000640000175000017500000000041312410217071015535 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Å< pHYs  ÒÝ~ügAMA± üaPLTE ” °ª<‘^?8S0ñõí>v¨ jòÔ+PIDATxÚuŽQÀ B+¼ÿsɶ_bä¥[8ëe ÿНÊp AI[µì·.#µORyª–o¢¦±{𔲢Çh÷<¥™Ç5N;_¬¡£«¨]IEND®B`‚awstats-7.4/wwwroot/icon/flags/az.png0000640000175000017500000000040412410217071015547 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ ( \5L7 pHYs  ÒÝ~ügAMA± üa$PLTEqsRr„@þ)þ›ŠþÖÐþiPþS8þôòþŽ|v.Œ1ú*y«ð=IDATxÚ¥ÊA!CÑb@½ÿ}G ]ߪ?)ÆWÙƒô’õSÒ"}Îê-Ó\÷Œ³Q×2•" ~aìM³ íIEND®B`‚awstats-7.4/wwwroot/icon/flags/museum.png0000640000175000017500000000057512410217071016461 0ustar sksk‰PNG  IHDR(–Ýã.tEXtCreation Timemer. 13 juin 2001 17:45:43 +0100ãN¨ëtIMEÑ 0:zŠà+ pHYsÃÃÇo¨dgAMA± üaTPLTEÿÿÿf™Ì333ff™3f3™33fff333f3Ìfÿ™f33fÿ™™f3™3f3Ìÿ3f™3™ÌÌ™3ÌÌ3fÌ3f™f™™™33f™f¸ÐÓtRNS@æØfeIDATxÚ…ÎÉ€ P 0ŠTq_ÿÿ?­âr1qn¯“¦Uê+‹ÝòÌù:5×@÷Ã8Í>™9¶]@Ÿ%W±¬á eæ’$H ðÞ¸Ô*Ù"2¾pö¢ÈPv_6"÷ü¡EVýf³7DÈ&0IEND®B`‚awstats-7.4/wwwroot/icon/flags/fi.png0000640000175000017500000000035712410217071015542 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (²;- pHYs  ÒÝ~ügAMA± üaPLTEþþü¶ªôrZäŠvìvbäv^är^äzfäܸA4IDATxÚ¥Í1ÑIîcŠo†–×mµÐÜqh|Ì$"SÀÅ*„is3†,éë{çŠOI†ÞIEND®B`‚awstats-7.4/wwwroot/icon/flags/il.png0000640000175000017500000000037212410217071015545 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (?3 î pHYs  ÒÝ~ügAMA± üaPLTEûûüüÜÜü¸¸üuuüŠŠü[[ü¢¢ü_û^?IDATxÚŽQ CÍÖºÿS"Ó¾z:SQÑTÒ ¯Ü¸/ÜYI€ =lÇ^¬œ!i€9jÄ §ï¦__aè³"ûKIEND®B`‚awstats-7.4/wwwroot/icon/flags/mu.png0000640000175000017500000000032612410217071015561 0ustar sksk‰PNG  IHDR(–ÝãtEXtDescriptionMade with GIMPõT1³tIMEÐ (Ñ=A pHYs  ÒÝ~ügAMA± üaPLTEÎræþþùz„þº+!IDATxÚc`E ø¹,(€à2¡\FÀ@ ÖëÌŽŽyIEND®B`‚awstats-7.4/wwwroot/css/0000750000175000017500000000000012410217071013174 5ustar skskawstats-7.4/wwwroot/css/awstats_default.css0000640000175000017500000000507612410217071017111 0ustar skskbody { font: 11px verdana, arial, helvetica, sans-serif; background-color: #FFFFFF; margin-top: 0 } .aws_bodyl { background-image: url(/awstatsicons/other/backleft.png); background-repeat: repeat-y; } .aws_border { background-color: #CCCCDD; padding: 1px 1px 1px 1px; margin-top: 0 } .aws_title { font: 13px verdana, arial, helvetica, sans-serif; font-weight: bold; background-color: #CCCCDD; text-align: center; margin-bottom: 0; padding: 1px 1px 1px 1px; } .aws_blank { font: 13px verdana, arial, helvetica, sans-serif; background-color: #FFFFFF; text-align: center; margin-bottom: 0; padding: 1px 1px 1px 1px; } .aws_data { background-color: #FFFFFF; border-top-width: 1px; border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; } .aws_formfield { font: 13px verdana, arial, helvetica; } .aws_button { font-family: arial,verdana,helvetica, sans-serif; font-size: 12px; border: 1px solid #ccd7e0; background-image: url(/awstatsicons/other/button.gif); } th { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font: 11px verdana, arial, helvetica, sans-serif; text-align:center; color: #000000; } th.aws { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font-size: 13px; font-weight: bold; } td { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font: 11px verdana, arial, helvetica, sans-serif; text-align:center; color: #000000; } td.aws { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font: 11px verdana, arial, helvetica, sans-serif; text-align:left; color: #000000; } td.awsm { border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; padding: 0px 0px 0px 0px; font: 11px verdana, arial, helvetica, sans-serif; color: #000000; } b { font-weight: bold; } a { font: 11px verdana, arial, helvetica, sans-serif; } a:link { color: #0011BB; text-decoration: none; } a:visited { color: #0011BB; text-decoration: none; } a:hover { color: #605040; text-decoration: underline; } div { font: 12px arial,verdana,helvetica; text-align:justify; } .ctooltip { position:absolute; top:0px; left:0px; z-index:2; width:380; visibility:hidden; font: 8pt MS Comic Sans,arial,sans-serif; background-color: #FFFFE6; padding: 8px; border: 1px solid black; }awstats-7.4/wwwroot/css/awstats_bw.css0000640000175000017500000000475012410217071016073 0ustar skskbody { font: 11px verdana, arial, helvetica, sans-serif; background-color: #FFFFFF; margin-top: 0 } .aws_bodyl { } .aws_border { background-color: #BBBBBB; padding: 1px 1px 1px 1px; margin-top: 0 } .aws_title { font: 13px verdana, arial, helvetica, sans-serif; font-weight: bold; background-color: #BBBBBB; text-align: center; margin-bottom: 0; padding: 1px 1px 1px 1px; } .aws_blank { font: 13px verdana, arial, helvetica, sans-serif; background-color: #FFFFFF; text-align: center; margin-bottom: 0; padding: 1px 1px 1px 1px; } .aws_data { background-color: #FFFFFF; border-top-width: 1px; border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; } .aws_formfield { font: 13px verdana, arial, helvetica; } .aws_button { font-family: arial,verdana,helvetica, sans-serif; font-size: 12px; border: 1px solid #ccd7e0; background-image: url(/awstatsicons/other/button.gif); } th { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font: 11px verdana, arial, helvetica, sans-serif; text-align:center; color: #000000; } th.aws { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font-size: 13px; font-weight: bold; } td { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font: 11px verdana, arial, helvetica, sans-serif; text-align:center; color: #000000; } td.aws { border-color: #ECECEC; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 0px; padding: 2px 2px 2px 2px; font: 11px verdana, arial, helvetica, sans-serif; text-align:left; color: #000000; } td.awsm { border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; padding: 0px 0px 0px 0px; font: 11px verdana, arial, helvetica, sans-serif; color: #000000; } b { font-weight: bold; } a { font: 11px verdana, arial, helvetica, sans-serif; } a:link { color: #001133; text-decoration: none; } a:visited { color: #001133; text-decoration: none; } a:hover { color: #444444; text-decoration: underline; } div { font: 12px arial,verdana,helvetica; text-align:justify; } .ctooltip { position:absolute; top:0px; left:0px; z-index:2; width:380; visibility:hidden; font: 8pt MS Comic Sans,arial,sans-serif; background-color: #EEEEEE; padding: 8px; border: 1px solid black; }awstats-7.4/wwwroot/classes/0000750000175000017500000000000012410217071014041 5ustar skskawstats-7.4/wwwroot/classes/src/0000750000175000017500000000000012551203300014624 5ustar skskawstats-7.4/wwwroot/classes/src/Makefile.pl0000640000175000017500000000035212410217071016703 0ustar sksk#!/usr/bin/perl $FILENAME=awgraphapplet; print "Build class file by compiling .java file\n"; $ret=`javac AWGraphApplet.java`; print $ret; print "Build jar file\n"; $ret=`jar cvf ../$FILENAME.jar AWGraphApplet.class`; print $ret; awstats-7.4/wwwroot/classes/src/AWGraphApplet.java0000640000175000017500000003146112410217071020140 0ustar sksk/* * @(#)AWGraphApplet.java * */ import java.applet.Applet; import java.awt.*; import java.util.Vector; public class AWGraphApplet extends Applet { public AWGraphApplet() { special = "Not yet defined"; textVertSpacing = 0; b_fontsize = 11; blockSpacing = 5; valSpacing = 0; valWidth = 5; maxLabelWidth = 0; background_color = Color.white; border_color = Color.white; special_color = Color.gray; backgraph_colorl = Color.decode("#F6F6F6"); backgraph_colorm = Color.decode("#EDEDED"); backgraph_colorh = Color.decode("#E0E0E0"); } // public synchronized void init() { public synchronized void start() { special = getParameter("special"); if (special == null) { special = ""; } Log("Applet "+VERSION+" init"); String s = getParameter("b_fontsize"); if (s != null) { b_fontsize = Integer.parseInt(s); } title = getParameter("title"); if (title == null) { title = "Chart"; } s = getParameter("nbblocks"); if (s != null) { nbblocks = Integer.parseInt(s); } s = getParameter("nbvalues"); if (s != null) { nbvalues = Integer.parseInt(s); } s = getParameter("blockspacing"); if (s != null) { blockSpacing = Integer.parseInt(s); } s = getParameter("valspacing"); if (s != null) { valSpacing = Integer.parseInt(s); } s = getParameter("valwidth"); if (s != null) { valWidth = Integer.parseInt(s); } s = getParameter("orientation"); if (s == null) { orientation = VERTICAL; } else if (s.equalsIgnoreCase("horizontal")) { orientation = HORIZONTAL; } else { orientation = VERTICAL; } s = getParameter("barsize"); if (s != null) { barsize = Integer.parseInt(s); } s = getParameter("background_color"); if (s != null) { background_color = Color.decode("#"+s); } s = getParameter("border_color"); if (s != null) { border_color = Color.decode("#"+s); } s = getParameter("special_color"); if (s != null) { special_color = Color.decode("#"+s); } Log("bblocks "+nbblocks); Log("nbvalues "+nbvalues); Log("barsize "+barsize); font = new Font("Verdana,Arial,Helvetica", 0, b_fontsize); fontb = new Font("Verdana,Arial,Helvetica", Font.BOLD, b_fontsize); fontmetrics = getFontMetrics(font); blabels = new String[nbblocks]; vlabels = new String[nbvalues]; styles = new int[nbvalues]; max = new float[nbvalues]; colors = new Color[nbvalues]; values = new float[nbblocks][nbvalues]; for (int i=0; i < nbvalues; i++) { parseLabel(i); parseStyle(i); parseColor(i); parseMax(i); } for (int j=0; j < nbblocks; j++) { parsebLabel(j); parseValue(j); } for (int i=0; i < nbvalues; i++) { if (max[i]<=0.0F) { max[i]=1.0F; } Log("max["+i+"]="+max[i]); } } private synchronized void Log(String s) { System.out.println(getClass().getName()+" ("+special+"): "+s); } private synchronized void parsebLabel(int i) { String s = getParameter("b" + (i+1) + "_label"); if (s==null) { blabels[i] = ""; } else { blabels[i] = s; } maxLabelWidth = Math.max(fontmetrics.stringWidth(blabels[i]), maxLabelWidth); } private synchronized void parseLabel(int i) { String s = getParameter("v" + (i+1) + "_label"); if (s==null) { vlabels[i] = ""; } else { vlabels[i] = s; } } private synchronized void parseStyle(int i) { String s = getParameter("v" + (i+1) + "_style"); if (s == null || s.equalsIgnoreCase("solid")) { styles[i] = SOLID; } else if (s.equalsIgnoreCase("striped")) { styles[i] = STRIPED; } else { styles[i] = SOLID; } } private synchronized void parseColor(int i) { String s = getParameter("v" + (i+1) + "_color"); if (s != null) { colors[i] = Color.decode("#"+s); } else { colors[i] = Color.gray; } } private synchronized void parseMax(int i) { String s = getParameter("v" + (i+1) + "_max"); if (s != null) { max[i] = Float.valueOf(s).floatValue(); } else { max[i] = 1.0F; } } private synchronized void parseValue(int i) { String s = getParameter("b" + (i+1)); if (s != null) { String[] as=split(s," ",0); for (int j=0; j"+width+","+h+"=>"+height); polygon.addPoint(x,y); polygon.addPoint(x+width,y); polygon.addPoint(x+width,y-height); polygon.addPoint(x,y-height); g.setColor(color); g.fillPolygon(polygon); g.setColor(color.darker()); g.drawPolygon(polygon); Polygon polygon2 = new Polygon(); polygon2.addPoint(x+width,y); polygon2.addPoint(x+width+shift,y-shift); polygon2.addPoint(x+width+shift,y-shift-height); polygon2.addPoint(x+width,y-height); g.setColor(color.darker()); g.fillPolygon(polygon2); g.setColor(color.darker().darker()); g.drawPolygon(polygon2); Polygon polygon3 = new Polygon(); polygon3.addPoint(x,y-height); polygon3.addPoint(x+width,y-height); polygon3.addPoint(x+width+shift,y-height-shift); polygon3.addPoint(x+shift,y-height-shift); g.setColor(color); g.fillPolygon(polygon3); g.setColor(color.darker()); g.drawPolygon(polygon3); } private synchronized void paintHorizontal(Graphics g) { } private synchronized void paintVertical(Graphics g) { g.setColor(Color.black); g.setFont(font); int shift=10; int allbarwidth=(((nbvalues*(valWidth+valSpacing))+blockSpacing)*nbblocks); int allbarheight=barsize; int axepointx=(getSize().width-allbarwidth)/2 - 2*shift; int axepointy = getSize().height - (2*fontmetrics.getHeight()) - 2 - textVertSpacing; int cx=axepointx; int cy=axepointy; // Draw axes Polygon polygon = new Polygon(); polygon.addPoint(cx,cy); polygon.addPoint(cx+allbarwidth+3*shift,cy); polygon.addPoint(cx+allbarwidth+4*shift,cy-shift); polygon.addPoint(cx+shift,cy-shift); g.setColor(backgraph_colorl); g.fillPolygon(polygon); g.setColor(Color.lightGray); g.drawPolygon(polygon); Polygon polygon2 = new Polygon(); polygon2.addPoint(cx,cy); polygon2.addPoint(cx+shift,cy-shift); polygon2.addPoint(cx+shift,cy-shift-barsize); polygon2.addPoint(cx,cy-barsize); g.setColor(backgraph_colorh); g.fillPolygon(polygon2); g.setColor(Color.lightGray); g.drawPolygon(polygon2); Polygon polygon3 = new Polygon(); polygon3.addPoint(cx+shift,cy-shift); polygon3.addPoint(cx+allbarwidth+4*shift,cy-shift); polygon3.addPoint(cx+allbarwidth+4*shift,cy-shift-barsize); polygon3.addPoint(cx+shift,cy-shift-barsize); g.setColor(backgraph_colorm); g.fillPolygon(polygon3); g.setColor(Color.lightGray); g.drawPolygon(polygon3); cx+=2*shift; // Loop on each block for (int j = 0; j < nbblocks; j++) { // Draw the block label // Log("Write block j="+j+" with cx="+cx); cy = getSize().height - fontmetrics.getHeight() - 3 - textVertSpacing; g.setColor(Color.black); // Check if bold or highlight int bold=0; int highlight=0; String label=blabels[j]; if (blabels[j].indexOf(":")>0) { bold=1; label=remove(blabels[j],":"); } if (blabels[j].indexOf("!")>0) { highlight=1; label=remove(blabels[j],"!"); } if (bold==1) { g.setFont(fontb); } String as[] = split(label, "\247", 0); // Write background for block legend if (highlight==1) { g.setColor(special_color); g.fillRect(cx-Math.max(-1+blockSpacing>>1,0),cy-fontmetrics.getHeight()+2,(nbvalues*(valWidth+valSpacing))+Math.max(blockSpacing-2,0)+1,((fontmetrics.getHeight()+textVertSpacing)*as.length)+2); g.setColor(Color.black); } // Write text for block legend for (int i=0; i>1; if (cxoffset<0) { cxoffset=0; } g.drawString(as[i], cx+cxoffset, cy); cy+=fontmetrics.getHeight()+textVertSpacing-1; } if (bold==1) { g.setFont(font); } // Loop on each value for (int i = 0; i < nbvalues; i++) { cy = getSize().height - fontmetrics.getHeight() - 6 - textVertSpacing; cy -= fontmetrics.getHeight() - 4; // draw the shadow and bar draw3DBar(g,cx,cy,valWidth,(values[j][i]*(float)barsize)/max[i],SHIFTBAR,colors[i]); cy = (int)((float)cy - (values[j][i] + 5F)); cx += (valWidth + valSpacing); } cx += blockSpacing; } } public synchronized String getAppletInfo() { return "Title: " + title + "\n"; } public synchronized String[][] getParameterInfo() { String[][] as = { {"version", "string", "AWGraphApplet "+VERSION}, {"copyright", "string", "GPL"}, {"title", "string", title} }; return as; } private static final int VERTICAL = 0; private static final int HORIZONTAL = 1; private static final int SOLID = 0; private static final int STRIPED = 1; private static final int DEBUG = 3; private static final int SHIFTBAR = 3; private static final String VERSION = "1.1"; private String title; private String special; private Font font; private Font fontb; private FontMetrics fontmetrics; private int orientation; private int barsize; private int nbblocks; private String blabels[]; private int b_fontsize; private int blockSpacing; private int textVertSpacing; private int nbvalues; private Color colors[]; private String vlabels[]; private int styles[]; private float max[]; private int valSpacing; private int valWidth; private float values[][]; private int maxLabelWidth; private Color background_color; private Color border_color; private Color special_color; private Color backgraph_colorl; private Color backgraph_colorm; private Color backgraph_colorh; } // # Applet Applet.getAppletContext().getApplet( "receiver" ) // that accesses another Applet uniquely identified via a name you assign in the HTML >œÐèiEˆðT+5z9KOÓèµ,Ô¸ÊÞ©Ú§[#½˜š¡ñLÕñ,^Ê2gkôŽ"¼<ÇGsÅß#e^Ç'i|²ÆÍ>^Ï4>EãSí¸mäM>náˆÆ­¶ÍmöÕØÔ¸Ý¦:,yú6w ˆÙìÓdܬq\BÕ%3Ý^NøèLÖ…Ó#àtIáõ H è“u[òx+Ÿ‘Ŷ ¶]¼<ÓÇgñÙ‚ãã¯ñ%bç'Ïìëv y¾—/ðÑ5¬{ùbÏ…¾)œ‹dúbɯKû–¤Ý¥‚]–»áF¾\&®P¤ÆWŠñW qµÆ×h|­,øvvÁw\Çï"Òø:¯÷Ò+Wã4¾Qã›4¾ÙË»¼¼›ÉÙÚžd[wZdKdfdkjæòd¤§3ÖÖ;s±®¦â¡¹pW¤ÃÄ„¶nÙÚ¦ð’EuLf*X’èîMEºSë"ñ>Ó‰;GL¾ kÃëê›Õ ‡™Ü uá¥LÞÆ¦µáÕË€¹—.[|âr™vbÓÆáڦŋÖBû7†ê™ Ky<ÒÝ1³1•ŒuwÌÓø{X™Š¥â&${{̶X$ÎäjOt§˜Š†¬­ƺe¢•)_Æ.›´õ2• —[eñ!žŸHÆÌîT$KtcÿÖH²7¶š´îÖÖx¢ms¯0ã‘V3l솃íƒë­›D—µNW«{"m˜„})óŒÔ:3™Êr°ñ‰¶ó´%â‰$1†Ì["<ìêÝ’ÑêéMm‹‹¼c¢ï슜!h-c£¡}Aœ‹¦:± £À¹AÄ °¢Nö²§‹[#m›;’‰¾îè&eÁ°CÏè×[ɨ™ÌHؑϮ°6AòXœøÁ¬®ƒYbÜq±îXjŒ«œ¶ç¸$5åcÝf}_W«™lŠ´ÊQ»‘bIœ°³.ïü•G^–ç÷àÀÌVå6« Ó§˜6Ï"%„b‰å‚¦ˆUN‹¯òY4÷ÄcÐ\3ŠÎƒ9ái£&…'iv%¶`·¹ÿÓ.ÓFÛÃ%‘‚==‘˜äzIå(×VüÍ‹&#[\º8§ªF ‡kkÃ#XV©­WàlG˽*PÉØX›¢;ÌÔ¢žž¸™ w·'˜ÆUŽjj1ÄVG’\83iI–TNÛ0ú}iLô%ÛÌÚ˜œˆ±è$e¦¥c†ˆëôgú¶Õ'RÛÌTEÔlGrDuz†žÒéWô°N¯ ø¥€? xCÀÛü}zW§w¼À?ì}z×irmHþé| ߪӟ,Þ²¥òO§lr–üÓéCYÛÏ·±T¶I–i³gÌ®¨œ²ÖÜëE­¨}tÅ”irF:ýþîåÛu¾ƒïÔéiz §¶¤ù«ÓËbÛkôp¦4ôf.¬ÜÞÞÜÛ»U®§N/Ь¯3{&:ÿïÒé%a—Œ çâ¾övÇΓu¾›ïÑù^öb7»vUó>$H¦æTÈœU†«‰LãqìÑHw¤zQ7½z…ßbJà@xNÏÒÏuz€ïç½:=O/àÜG¤Ó/è~+àwô{^§?0Ï=~M¿ÑéMzK§Oéþ)à_>ðÿ¦OpP»6 Ü:_\ðrZçAÞçåéü?èå‡t~X\vTT¢VL«©ðò~LGLð x6©*êåGtþ ßéåGa?†É-2Ùk•wo"‹Êóz̨LÙuε èüS~\ç'øI,¬Ðé?ô_ u~ ÇÍ?ã§3èKÅâ3×™m)øÈÏð³:ÿœŸÓùy~Açù%_ìüŠÎ¯ò/½ü+_“´ýµ€ßðouz€àÔïtþ=¿®Ó>ú‘—ÿ óù ßä·t~[€‹Yg·€wøÝŒj îêD|[‡¼cECÇRODRr‚ïéü¾hÿ ó‡üg?âuþ‹`•„ÿÿ]çˆÈ'r¸F\@:N_€: 1~´_çO‘ ì`¼àÞ&y”kHì“÷ÊLöªGÔÓ«2ÏÚ°»-©Ø–èÙ–ŒutJi_¾-EÁ0)TËEÍÌ0j±{kg,…óráIÙEQ³M½SF{FyÒr‹Ó_¾jxÁ3Ä w§Ì3ûx„åÚŒú6á¥.6OïÃwt'’æ’H¯ù%¢ëá Ü5»‘wÕÿ“MÖ­—Î,•h´ƒ]Š·ïËDzoX=–…JNKÄ4µrDO5íËz§ÒÊÚ¯P™[¶õ¦L´ÎDŸÄËZKÌ\),3#]Ã4´ž†Kÿ`Ü’x¤Wz¯abΖ趜KêqÄX1ŠÌ÷GžŽÍ-´VúÚÍRá‚Ua¸+·°ä»TÔ†v¦ÃÿŸ3S7PÞ½vAì&ÝO­º ]H$³)‘éA”ð—$ xcÝQó ÑZ2Ú‰Šay½}­™X"ÆŽÚžÄÍîqv`/.‹›]æAùl„j\V‡›gZ‚‹”è°ímaë•tIeNú,a¡‰yÙkžË• nw°¦U"òÛpj)S}‰Hó‘u'÷û¤p8« >Óüˆ‘ÓFé‰2×:—‰„ëEÂY•låh“Ö‹ÇתäôÂëiÒ€YLÕ‹ÙfY9ÒÖpNŽÅohí5“¨Ÿª¸p«dÏXw&W4œÎê„êUöIß+fd˽?G‘ÍTÆz¢‘äf©VFå(å0_LÍîáÆWNÛfy­z ‹Fé5ÚöáäÅe\®j±O6³Ò‹£4 â+o 9ä æw ã!ô=Œžj¿âýô#9ôO@?:bþ±ó?Í¡ýÄúIz*Kÿ ?ôb ÆÑĨñ9{D£Ft]j|É_¶Gt3j|Õ¦i¿²Ç×ì kË£÷Q#Ú5þÑ–{ÃÑû¨ñm›FϪÆ÷ìñ}{ü“=~`ªÑ€h’?uøhUi}p8h8Èt+Xœ?@î 6@¡½‚i‚å÷o€ò­AÇP0@…A£hИ a(dlЧÿ}êÿ/€ ¨°˜\4†|°£ˆÆ’ŸÆ!ò~:”JpæãiM Y cÀ]@¥´œÊh5•S3MDnü5c·ójòNí ’4»÷’óIØgL Ò!A£4MeuUOÀÞª}T..‰i:t€* _¡ä˜”¦É¹’S‚Æái:"—55hT¦iZ.Ë4‚iªÊeyƒFuš¦ç²´ 1#M3몞 AœÕO*cvšæ\†K1Ttg#ÓtTîÚ£ƒF(MÇ«<ø Ím¤cš4Í«Â/MÇ©(çùiZðÕBzÐX˜¦ã¿Z¨0;³\ÄhJšcR¢™™YbÍL=xf©5stî̲f£VÇ=HËh…Íqe9á`øŠ40@+ò0Õ Ð*A§*´^¡!ß,Ì3@«íé5´V-òqjD79ç÷CsÙ (`€“œ¼ÓÁe"·ûÀ[ÎýT,¤fëw:¹\vÙ}à#gÈÕO‹@¬ö»få_{#‚«p}MÖÍ pÓï‚“Æ)–Ã"š¦S-ŸwºØï²Ô<4”ýoÐ\ÀÉÈ|Éó#Ó•À¦!Û«¨†ª‘é3¨žfÒzšMšC]t¥èhÚA!úîÃUX=K·Ò<º‹ŽCmœ µUh!*ÌñØ1nþöÒR.¤e\Mµ|$-ç5æÍtŸO+ùfZÅ÷Q=?F ü<­Á·ÃZ~›ùcjâÏèD‡‹Ö9ÆÑÉŽ5;&ÒzÇdÚਤSÓÁ›Kói“c1µ8–_K­Ž“©Í§¨ã*à7S;M’Y»²Ô‘µ…hÖÚhÇ 7eSšZ2#bÅÍ)xëP ¦©m(b>µþ4Äd3vƇ½óvTùK`}ö<¢X]êj‘13µ¯ª~Ù¼—V•ûɧÐêFI–• Ÿ“¦ yû¨umHï!¨-D Ô¤œ×é8—^œC­¢-°ãÓ¬m;BY;b£ØqZÆŽú!;êaǾ©dðêP:ú΂¾sÔ¹O’o[[×¹¶®5£éÚœÑ_UýéÕF—ª,ÐÔPêlè§òj£;‡åj°ÌÉ!3&’p'Ì8éxJ»…t!…é"”àK`ο²æ¤lsêF3'‘1§GÌ™EkKsËMu¶Ü ºšÆ+rP@.‡%W W"±¯¦•t-,ø,kA›mÁ¼Ñ,8=cAR,+´´zõ¦)µÆr}u©¾f¤Âë¡ð»PxI7áNî‚Âg^…"%ë”®>ѵ,XmlqÒÖzUFfN÷»æg¤iÛõ¨6{©©tŽß•ÆfØGÛר¢1}ÿî/ ™5‰4À !oÁéÜJS©Ÿ¦ÓíT‹g{ðºWä?ô_ÛÄa¢ã%Ò™°ð¬—3ä6&ÔxÊ]Ñ×ï iý´P†ªj¿&†Ÿ-\Ü\£Jh¿7MçÔxúiœ"q%¿¦®;à xÒ´Ãï¾îÀ£¾sQ—kòœ!o?ùy~oÀ%‹Ï{„êwzYhÈì>ðn ïÞ¬7õxî‰öPÝO:íE#€îí^^ÊY½*´z³ÑÖ® Þ4q'cþT4hhغФ…ñ›ªAûœ¾°=ÿžK¬.³=—èÃq·#äñ{ÄÊ2Àm¯å6¸–Û ýñÒ­Üö¹ív…\ÓnñÚuÝÇd7gÁ™l¿LÍ›.‹Åm+ájÜ;=ì÷LWÎÿ:àéüs0òyÊGßX„®Ñ@ÇX‚.1€¾¯5¼â t…óÑ®D7X° óÍèOE}oCç·ã%èü˜d{¸Åp^z¸IxHÓôõ½´Ãù{é‚4}c€.”‚waš¾9@ ¥V¡º<†þÐW}L‡±ü¿‹µß.ä¹TÞ8^„_~š.Ôéľ—XÛKm©-¡çJ\fI\®$®{–k  ÌÒ•ýxN-ôª*1L-¹ú¤‘IÿDéUm§£ .Å=< ‰¾ G¾‡>IþŠdY˃ð¾cÕƒt ÎåÚíAúvóx× }'M×…òå¶)_@++OÓõüy-9˜ßµ« Ÿ/® hiú®ÂoÈ7fôäò³›(ÌïÁ>žèHÚÞ:?GOÎŽù9 ²œ¬= g,–c¨žUà‹Ú:ÁÊ¥3èÃ=yãP°·£®B™Ç.Ïn:œ5ªæ< ±­D>ÚíA5£¥hå"êäb:ÇЙlÐÅ<–nâqt'ûi/—Ð<žžà ô,#¡ùzKéC.£\ÎE<‘ý|(—rOáÃ8È“pˆ®lÊÔ L2Í#9ÍG@ÌsÝ„â{ä<¯jÝ$îXãÍžùÒoá§áçméô´H?×¹@ÚÑ I¶ yYuÇÝeÑŒÝÈP·tiú^gÔŠ:éñ»Q=!-syRàüš„Hy‹§¬³%‡ô*²,j3Ê2„Ø6F…av¨0uöëê#é #{OQ(ÉËUTÄÓÉàTÅ3i6Ï¢Å<›NÁWH EQ>†ºx.mácé|®¡ky}ŸCù˜O÷ñÚÇ i?OOò"zÓïx }ÌKés^† PËù¼œ ^Á8ŒrÏà•¼ëøD^Å\Ï nà>^Ígñ>ù"^Ç—óz¾7ð=¼‘÷ó&~[Ä­ŽBnsØtÊ펩ÜáèåNÇvÞìØÁqÇÍÜåèçnÇ 'Oƒ÷ Ÿîx“SŽ÷y‹ÓÁ[żݹ€Ïr®å³-œrÆy‡³×9ÏåóðŠzðýe•´£ì¿¬”eÚÅ»­Ož ùä¹ÇêîQí.ÀʯµCr)Š+=Ó½ÍNÀºf§q_c³ËØÓØì6îojs÷f¹àºmîÄ Wô66ÖU )TW|1>/ÇË/]£ƒóÿPKÜ£0m¶%PKä»'0 META-INF/þÊPKä»'0 ˆìTGG=META-INF/MANIFEST.MFPKå»'0Ü£0m¶%ÆAWGraphApplet.classPK¾½awstats-7.4/wwwroot/js/0000750000175000017500000000000012410217071013020 5ustar skskawstats-7.4/wwwroot/js/awstats_misc_tracker.js0000640000175000017500000001651412410217071017602 0ustar sksk// awstats_misc_tracker.js //------------------------------------------------------------------- // You can add this file onto some of your web pages (main home page can // be enough) by adding the following HTML code to your page body: // // // // // * This must be added after the tag, not placed within the // tags, or the resulting tracking tag will not be handled // correctly by all browsers. Internet explorer will also not report // screen height and width attributes until it begins to render the // body. // // This allows AWStats to be enhanced with some miscellanous features: // - Screen size detection (TRKscreen) // - Browser size detection (TRKwinsize) // - Screen color depth detection (TRKcdi) // - Java enabled detection (TRKjava) // - Macromedia Director plugin detection (TRKshk) // - Macromedia Shockwave plugin detection (TRKfla) // - Realplayer G2 plugin detection (TRKrp) // - QuickTime plugin detection (TRKmov) // - Mediaplayer plugin detection (TRKwma) // - Acrobat PDF plugin detection (TRKpdf) //------------------------------------------------------------------- // If you use pslogger.php to generate your log, you can change this line with // var awstatsmisctrackerurl="pslogger.php?loc=/js/awstats_misc_tracker.js"; var awstatsmisctrackerurl="/js/awstats_misc_tracker.js"; var TRKresult; var TRKscreen, TRKwinsize, TRKcdi, TRKjava, TRKshk, TRKsvg, TRKfla; var TRKrp, TRKmov, TRKwma, TRKpdf, TRKpdfver, TRKuserid, TRKsessionid; var TRKnow, TRKbegin, TRKend; var TRKnse, TRKn; function awstats_setCookie(TRKNameOfCookie, TRKvalue, TRKexpirehours) { TRKExpireDate = new Date (); TRKExpireDate.setTime(TRKExpireDate.getTime() + (TRKexpirehours * 3600 * 1000)); document.cookie = TRKNameOfCookie + "=" + escape(TRKvalue) + "; path=/" + ((TRKexpirehours == null) ? "" : "; expires=" + TRKExpireDate.toGMTString()); } //function awstats_runvbscript() { // TRKresult = false; // p=false; // document.write('\n'); // alert(p); // if (TRKresult) return 'y'; // else return 'n'; //} function awstats_detectIE(TRKClassID) { TRKresult = false; // !!! Adding var in front of TRKresult break detection !!! document.write('\n on error resume next \n TRKresult = IsObject(CreateObject("' + TRKClassID + '")) \n \n'); if (TRKresult) return 'y'; else return 'n'; } function awstats_detectNS(TRKClassID) { TRKn = "n"; if (TRKnse.indexOf(TRKClassID) != -1) if (navigator.mimeTypes[TRKClassID].enabledPlugin != null) TRKn = "y"; return TRKn; } function awstats_getCookie(TRKNameOfCookie){ if (document.cookie.length > 0){ TRKbegin = document.cookie.indexOf(TRKNameOfCookie+"="); if (TRKbegin != -1) { TRKbegin += TRKNameOfCookie.length+1; TRKend = document.cookie.indexOf(";", TRKbegin); if (TRKend == -1) TRKend = document.cookie.length; return unescape(document.cookie.substring(TRKbegin, TRKend)); } return null; } return null; } if (window.location.search == "" || window.location.search == "?") { // If no query string TRKnow = new Date(); TRKscreen=screen.width+"x"+screen.height; if (navigator.appName != "Netscape") { TRKcdi=screen.colorDepth; } else {TRKcdi=screen.pixelDepth}; TRKjava=navigator.javaEnabled(); TRKuserid=awstats_getCookie("AWSUSER_ID"); TRKsessionid=awstats_getCookie("AWSSESSION_ID"); var TRKrandomnumber=Math.floor(Math.random()*10000); if (TRKuserid == null || (TRKuserid=="")) { TRKuserid = "awsuser_id" + TRKnow.getTime() +"r"+ TRKrandomnumber; } if (TRKsessionid == null || (TRKsessionid=="")) { TRKsessionid = "awssession_id" + TRKnow.getTime() +"r"+ TRKrandomnumber; } awstats_setCookie("AWSUSER_ID", TRKuserid, 10000); awstats_setCookie("AWSSESSION_ID", TRKsessionid, 1); TRKuserid=""; TRKuserid=awstats_getCookie("AWSUSER_ID"); TRKsessionid=""; TRKsessionid=awstats_getCookie("AWSSESSION_ID"); var TRKnav=navigator.appName.toLowerCase(); // "internet explorer" or "netscape" var TRKagt=navigator.userAgent.toLowerCase(); // "msie...", "mozilla...", "firefox..." //alert(TRKnav); alert(TRKagt); var TRKwin = ((TRKagt.indexOf("win")!=-1) || (TRKagt.indexOf("32bit")!=-1)); var TRKmac = (TRKagt.indexOf("mac")!=-1); var TRKns = (TRKnav.indexOf("netscape") != -1); var TRKopera= (TRKnav.indexOf("opera") != -1); var TRKie = (TRKagt.indexOf("msie") != -1); // Detect the browser internal width and height var TRKwinsize; if (document.documentElement && document.documentElement.clientWidth) TRKwinsize = document.documentElement.clientWidth + 'x' + document.documentElement.clientHeight; else if (document.body && document.body.clientWidth) TRKwinsize = document.body.clientWidth + 'x' + document.body.clientHeight; else TRKwinsize = window.innerWidth + 'x' + window.innerHeight; if (TRKie && TRKwin) { TRKshk = awstats_detectIE("SWCtl.SWCtl.1"); TRKsvg = awstats_detectIE("Adobe.SVGCtl"); TRKfla = awstats_detectIE("ShockwaveFlash.ShockwaveFlash.1"); TRKrp = awstats_detectIE("rmocx.RealPlayer G2 Control.1"); TRKmov = awstats_detectIE("Quicktime.Quicktime"); TRKwma = awstats_detectIE("wmplayer.ocx"); TRKpdf = 'n'; TRKpdfver=''; if (awstats_detectIE("PDF.PdfCtrl.1") == 'y') { TRKpdf = 'y'; TRKpdfver='4'; } // Acrobat 4 if (awstats_detectIE('PDF.PdfCtrl.5') == 'y') { TRKpdf = 'y'; TRKpdfver='5'; } // Acrobat 5 if (awstats_detectIE('PDF.PdfCtrl.6') == 'y') { TRKpdf = 'y'; TRKpdfver='6'; } // Acrobat 6 if (awstats_detectIE('AcroPDF.PDF.1') == 'y') { TRKpdf = 'y'; TRKpdfver='7'; } // Acrobat 7 } if (TRKns || !TRKwin) { TRKnse = ""; for (var TRKi=0;TRKi') } } awstats-7.4/README.md0000640000175000017500000001610712551202666012153 0ustar sksk # AWStats - Advanced Web Statistics ----------------------------------- AWStats (Advanced Web Statistics) is a powerful, full-featured web server logfile analyzer which shows you all your Web statistics including: visitors, pages, hits, hours, search engines, keywords used to find your site, broken links, robots and many more... It works with IIS 5.0+, Apache and all major web, wap, proxy, streaming server log files (and even ftp servers or mail logs) on all Operating Systems. License: GNU GPL v3+ (GNU General Public License. See LICENSE file), OSI Certified Open Source Software license. Version: 7.4 Release date: July 2015 Platforms: All (Linux, NT, BSD, Solaris and other *NIX's, BeOS, OS/2...) Author: Laurent Destailleur AWStats official web site and latest version: http://www.awstats.org I - Features and requirements of AWStats I - 1) Features, what AWStats can show you I - 2) Requirements for using AWStats I - 3) Files II - Install, Setup and Use AWStats III - Benchmark IV - About the author, license and support # - FEATURES AND REQUIREMENTS ------------------------------------ ## Features A full log analysis enables AWStats to show you the following information: * Number of VISITS and UNIQUE VISITORS * Visits duration and last visits * Authenticated users, and last authenticated visits * Days of week and rush hours (pages, hits, KB for each day and hour) * Domains/countries of hosts visitors (pages, hits, KB) * Hosts list, last visits and unresolved IP addresses list * Most viewed, entry and exit pages * File types * Web compression statistics (for mod_gzip or mod_deflate) * Browsers used (pages, hits, kb for each browser) * OS used (pages, hits, KB for each OS) * Robot visits * Worm attacks * Download and continuation detection * Search engines, keyphrases and keywords used to find your site * HTTP errors (Page not found with last referer, etc,) * Screen size report * Number of times your site is "added to favourites bookmarks" * Ratio of Browsers that support: Java, Flash, RealG2 reader, Quicktime reader, WMA reader, PDF reader * Cluster report for load balanced servers ratio * Other personalized reports... It supports the following features as well: * Can analyze all log formats * Works from command line and from a browser as a CGI (with dynamic filters capabilities for some charts) * Update of statistics can be made on demand from the web interface and not only from your scheduler * Unlimited log file size, support split log files (load balancing system) * Support 'nearly sorted' log files even for entry and exit pages * Reverse DNS lookup before or during analysis, supports DNS cache files * Country detection from IP location or domain name * WhoIS links * A lot of options/filters and plugins can be used * Multi-named web sites supported (virtual servers) * Cross Site Scripting Attacks protection * Several languages * No need of rare perl libraries * Dynamic reports as CGI output * Static reports in one or framed HTML or XHTML pages * Experimental PDF export * Look and colors can match your site design (CSS) * Help and tooltips on HTML reported pages * Easy to use (Just one configuration file to edit) * Analysis database can be stored in XML format (for XSLT processing, ...) * A Webmin module * Free (GNU GPL) with sources (perl scripts) * Available on all platforms ## Requirements To use AWStats CGI script, you need the following requirements: * Your server must log web access in a log file you can read. * To run awstats, from command line, your operating system must be able to run perl scripts (.pl files). * Perl module "Encode" must be available. To run awstats as a CGI (for real-time statistics), your web server must also be able to run such scripts. If not, you can solve this by downloading last Perl version at: http://www.activestate.com/ActivePerl/ (Windows) http://www.perl.com/pub/language/info/software.html (All OS) ## Files The distribution of AWStats package includes the following files: README.TXT This file docs/LICENSE GNU General Public Licence docs/* AWStats documentation (setup/usage...) wwwroot/cgi-bin/awstats.pl THE MAIN AWSTATS PROGRAM (CLI/CGI) wwwroot/cgi-bin/awredir.pl A tool to track exit clicks wwwroot/cgi-bin/awstats.model.conf An model configuration file wwwroot/cgi-bin/lang Directory with languages files wwwroot/cgi-bin/lib Directory with awstats reference info wwwroot/cgi-bin/plugins Directory with optional plugins wwwroot/icon/browser Directory with browsers icons wwwroot/icon/clock Directory with clock icons wwwroot/icon/cpu Directory with cpu icons wwwroot/icon/flags Directory with country flag icons wwwroot/icon/os Directory with OS icons wwwroot/icon/other Directory with all others icons wwwroot/classes Java applet for graphapplet plugin wwwroot/css Samples of CSS files wwwroot/js Javascript sources for "Misc" feature tools/* Other provided tools tools/webmin/awstats-x.x.wbm A Webmin module for AWStats tools/xslt/awstats61.xsd AWStats XML database schema descriptor tools/xslt/* Demo to manipulate AWStats XML database # INSTALL, SETUP AND USE AWSTATS ----------------------------------- The documentation available for this release in HTML format is in the docs/ directory. You can find a most up-to-date documentation at: # BENCHMARK ----------------------------------- Tests and results are available in AWStats documentation, in docs/ directory. # SOCIAL NETWORKS ----------------------------------- Follow AWStats project on Facebook: Google+: Twitter: # ABOUT THE AUTHOR, LICENSE AND SUPPORT --------------------------------------- Copyright (C) 2000-2014 - Laurent Destailleur - eldy@users.sourceforge.net - Laurent Destailleur is also the project leader of [Dolibarr ERP CRM Opensource project] , and author of AWBot, CVSChangeLogBuilder, DoliDroid and founder of DoliCloud SaaS . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . awstats-7.4/tools/0000750000175000017500000000000012540636305012025 5ustar skskawstats-7.4/tools/dolibarr/0000750000175000017500000000000012410217071013612 5ustar skskawstats-7.4/tools/dolibarr/README.md0000640000175000017500000000333212410217071015073 0ustar sksk # AWStats Dolibarr module ----------------------------------- AWStats (Advanced Web Statistics) module for Dolibarr is an add-on for Dolibarr ERP & CRM web software Once AWStats is installed, if you install this module into Dolibarr, you will be able to read AWStats statistcs from your Dolibarr interface. Platforms: All (Linux, NT, BSD, Solaris and other *NIX's, BeOS, OS/2...) Author: Laurent Destailleur # INSTALL, SETUP AND USE AWSTATS ----------------------------------- You can download AWStats module for Dolibarr on Dolistore market place Install dwonloaded package (file .zip) by unzipping it into your Dolibarr root directory. # ABOUT THE AUTHOR, LICENSE AND SUPPORT --------------------------------------- Copyright (C) 2000-2014 - Laurent Destailleur - eldy@users.sourceforge.net - Laurent Destailleur is also the project leader of Dolibarr ERP CRM Open-Source project , and author of AWBot, CVSChangeLogBuilder, DoliDroid and founder of DoliCloud SaaS . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . awstats-7.4/tools/awstats_buildstaticpages.pl0000750000175000017500000004651312410217071017462 0ustar sksk#!/usr/bin/perl #------------------------------------------------------------------------------ # Launch awstats with -staticlinks option to build all static pages. # See COPYING.TXT file about AWStats GNU General Public License. #------------------------------------------------------------------------------ #$|=1; #use warnings; # Must be used in test mode only. This reduce a little process speed #use diagnostics; # Must be used in test mode only. This reduce a lot of process speed use strict;no strict "refs"; use Time::Local; # use Time::Local 'timelocal_nocheck' is faster but not supported by all Time::Local modules #------------------------------------------------------------------------------ # Defines #------------------------------------------------------------------------------ my $REVISION='20140126'; my $VERSION="1.2 (build $REVISION)"; # ---------- Init variables -------- my $Debug=0; my $DIR; my $PROG; my $Extension; my $SiteConfig; my $Update=0; my $BuildPDF=0; my $BuildDate=0; my $Lang; my $YearRequired; my $MonthRequired; my $DayRequired; my $Awstats='awstats.pl'; my $AwstatsDir=''; my $HtmlDoc='htmldoc'; # ghtmldoc.exe my $StaticExt='html'; my $DirIcons=''; my $DirConfig=''; my $OutputDir=''; my $OutputSuffix; my $OutputFile; my @pages=(); my @OutputList=(); my $FileConfig; my $FileSuffix; my $DatabaseBreak; use vars qw/ $ShowAuthenticatedUsers $ShowFileSizesStats $ShowScreenSizeStats $ShowSMTPErrorsStats $ShowEMailSenders $ShowEMailReceivers $ShowWormsStats $ShowClusterStats $ShowMenu $ShowMonthStats $ShowDaysOfMonthStats $ShowDaysOfWeekStats $ShowHoursStats $ShowDomainsStats $ShowHostsStats $ShowRobotsStats $ShowSessionsStats $ShowPagesStats $ShowFileTypesStats $ShowOSStats $ShowBrowsersStats $ShowDownloadsStats $ShowOriginStats $ShowKeyphrasesStats $ShowKeywordsStats $ShowMiscStats $ShowHTTPErrorsStats $BuildReportFormat $TrapInfosForHTTPErrorCodes @ExtraName @PluginsToLoad /; @ExtraName = (); @PluginsToLoad = (); # ----- Time vars ----- use vars qw/ $starttime $nowtime $tomorrowtime $nowweekofmonth $nowweekofyear $nowdaymod $nowsmallyear $nowsec $nowmin $nowhour $nowday $nowmonth $nowyear $nowwday $nowyday $nowns /; #------------------------------------------------------------------------------ # Functions #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # Function: Write error message and exit # Parameters: $message # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub error { print STDERR "Error: $_[0].\n"; exit 1; } #------------------------------------------------------------------------------ # Function: Write a warning message # Parameters: $message # Input: $WarningMessage %HTMLOutput # Output: None # Return: None #------------------------------------------------------------------------------ sub warning { my $messagestring=shift; debug("$messagestring",1); print STDERR "$messagestring\n"; } #------------------------------------------------------------------------------ # Function: Write debug message and exit # Parameters: $string $level # Input: %HTMLOutput $Debug=required level $DEBUGFORCED=required level forced # Output: None # Return: None #------------------------------------------------------------------------------ sub debug { my $level = $_[1] || 1; if ($Debug >= $level) { my $debugstring = $_[0]; if ($ENV{"GATEWAY_INTERFACE"}) { $debugstring =~ s/^ /   /; $debugstring .= "
    "; } print localtime(time)." - DEBUG $level - $debugstring\n"; } } #------------------------------------------------------------------------------ # Function: Read config file # Parameters: None or configdir to scan # Input: $DIR $PROG $SiteConfig # Output: Global variables # Return: - #------------------------------------------------------------------------------ sub Read_Config { # Check config file in common possible directories : # Windows : "$DIR" (same dir than awstats.pl) # Standard, Mandrake and Debian package : "/etc/awstats" # Other possible directories : "/usr/local/etc/awstats", "/etc" # FHS standard, Suse package : "/etc/opt/awstats" my $configdir=shift; my @PossibleConfigDir=(); if ($configdir) { @PossibleConfigDir=("$configdir"); } else { @PossibleConfigDir=("$AwstatsDir","$DIR","/etc/awstats","/usr/local/etc/awstats","/etc","/etc/opt/awstats"); } # Open config file $FileConfig=$FileSuffix=''; foreach my $dir (@PossibleConfigDir) { my $searchdir=$dir; if ($searchdir && $searchdir !~ /[\\\/]$/) { $searchdir .= "/"; } if (open(CONFIG,"${searchdir}awstats.$SiteConfig.conf")) { $FileConfig="${searchdir}awstats.$SiteConfig.conf"; $FileSuffix=".$SiteConfig"; last; } if (open(CONFIG,"${searchdir}awstats.conf")) { $FileConfig="${searchdir}awstats.conf"; $FileSuffix=''; last; } } if (! $FileConfig) { error("Couldn't open config file \"awstats.$SiteConfig.conf\" nor \"awstats.conf\" after searching in path \"".join(',',@PossibleConfigDir)."\": $!"); } # Analyze config file content and close it &Parse_Config( *CONFIG , 1 , $FileConfig); close CONFIG; } #------------------------------------------------------------------------------ # Function: Parse content of a config file # Parameters: opened file handle, depth level, file name # Input: - # Output: Global variables # Return: - #------------------------------------------------------------------------------ sub Parse_Config { my ( $confighandle ) = $_[0]; my $level = $_[1]; my $configFile = $_[2]; my $versionnum=0; my $conflinenb=0; if ($level > 10) { error("$PROG can't read down more than 10 level of includes. Check that no 'included' config files include their parent config file (this cause infinite loop)."); } while (<$confighandle>) { chomp $_; s/\r//; $conflinenb++; # Extract version from first line if (! $versionnum && $_ =~ /^# AWSTATS CONFIGURE FILE (\d+).(\d+)/i) { $versionnum=($1*1000)+$2; #if ($Debug) { debug(" Configure file version is $versionnum",1); } next; } if ($_ =~ /^\s*$/) { next; } # Check includes if ($_ =~ /^Include "([^\"]+)"/ || $_ =~ /^#include "([^\"]+)"/) { # #include kept for backward compatibility my $includeFile = $1; if ($Debug) { debug("Found an include : $includeFile",2); } if ( $includeFile !~ /^[\\\/]/ ) { # Correct relative include files if ($FileConfig =~ /^(.*[\\\/])[^\\\/]*$/) { $includeFile = "$1$includeFile"; } } if ($level > 1) { warning("Warning: Perl versions before 5.6 cannot handle nested includes"); next; } local( *CONFIG_INCLUDE ); # To avoid having parent file closed when include file is closed if ( open( CONFIG_INCLUDE, $includeFile ) ) { &Parse_Config( *CONFIG_INCLUDE , $level+1, $includeFile); close( CONFIG_INCLUDE ); } else { error("Could not open include file: $includeFile" ); } next; } # Remove comments if ($_ =~ /^\s*#/) { next; } $_ =~ s/\s#.*$//; # Extract param and value my ($param,$value)=split(/=/,$_,2); $param =~ s/^\s+//; $param =~ s/\s+$//; # If not a param=value, try with next line if (! $param) { warning("Warning: Syntax error line $conflinenb in file '$configFile'. Config line is ignored."); next; } if (! defined $value) { warning("Warning: Syntax error line $conflinenb in file '$configFile'. Config line is ignored."); next; } if ($value) { $value =~ s/^\s+//; $value =~ s/\s+$//; $value =~ s/^\"//; $value =~ s/\";?$//; # Replace __MONENV__ with value of environnement variable MONENV # Must be able to replace __VAR_1____VAR_2__ while ($value =~ /__([^\s_]+(?:_[^\s_]+)*)__/) { my $var=$1; $value =~ s/__${var}__/$ENV{$var}/g; } } # Extra parameters if ($param =~ /^ExtraSectionName(\d+)/) { $ExtraName[$1]=$value; next; } # Plugins if ( $param =~ /^LoadPlugin/ ) { push @PluginsToLoad, $value; next; } # If parameters was not found previously, defined variable with name of param to value if ($Debug) { debug($param."-".$value); } $$param=$value; } if ($Debug) { debug("Config file read was \"$configFile\" (level $level)"); } } #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; my $QueryString=''; for (0..@ARGV-1) { $QueryString .= "$ARGV[$_]&"; } if ($QueryString =~ /(^|-|&)month=(year)/i) { error("month=year is a deprecated option. Use month=all instead."); } if ($QueryString =~ /(^|-|&)debug=(\d+)/i) { $Debug=$2; } if ($QueryString =~ /(^|-|&)configdir=([^&]+)/i) { $DirConfig="$2"; } if ($QueryString =~ /(^|-|&)config=([^&]+)/i) { $SiteConfig="$2"; } if ($QueryString =~ /(^|-|&)databasebreak=([^&]+)/i) { $DatabaseBreak="$2"; } if ($QueryString =~ /(^|-|&)awstatsprog=([^&]+)/i) { $Awstats="$2"; } if ($QueryString =~ /(^|-|&)buildpdf/i) { $BuildPDF=1; } if ($QueryString =~ /(^|-|&)buildpdf=([^&]+)/i) { $HtmlDoc="$2"; } if ($QueryString =~ /(^|-|&)staticlinksext=([^&]+)/i) { $StaticExt="$2"; } if ($QueryString =~ /(^|-|&)dir=([^&]+)/i) { $OutputDir="$2"; } if ($QueryString =~ /(^|-|&)diricons=([^&]+)/i) { $DirIcons="$2"; } if ($QueryString =~ /(^|-|&)update/i) { $Update=1; } if ($QueryString =~ /(^|-|&)builddate=?([^&]*)/i) { $BuildDate=$2||'%YY%MM%DD'; } if ($QueryString =~ /(^|-|&)year=(\d\d\d\d)/i) { $YearRequired="$2"; } if ($QueryString =~ /(^|-|&)month=(\d{1,2})/i || $QueryString =~ /(^|-|&)month=(all)/i) { $MonthRequired="$2"; } if ($QueryString =~ /(^|-|&)day=(\d{1,2})/i) { $DayRequired="$2"; } if ($QueryString =~ /(^|-|&)lang=([^&]+)/i) { $Lang="$2"; } if ($OutputDir) { if ($OutputDir !~ /[\\\/]$/) { $OutputDir.="/"; } } if (! $SiteConfig) { print "----- $PROG $VERSION (c) Laurent Destailleur -----\n"; print "$PROG allows you to launch AWStats with -staticlinks option\n"; print "to build all possible pages allowed by AWStats -output option.\n"; print "\n"; print "Usage:\n"; print "$PROG.$Extension (awstats_options) [awstatsbuildstaticpages_options]\n"; print "\n"; print " where awstats_options are any option known by AWStats\n"; print " -config=configvalue is value for -config parameter (REQUIRED)\n"; print " -update option used to update statistics before to generate pages\n"; print " -lang=LL to output a HTML report in language LL (en,de,es,fr,...)\n"; print " -month=MM to output a HTML report for an old month=MM\n"; print " -year=YYYY to output a HTML report for an old year=YYYY\n"; print "\n"; print " and awstatsbuildstaticpages_options can be\n"; print " -awstatsprog=pathtoawstatspl AWStats software (awstats.pl) path\n"; print " -dir=outputdir Output directory for generated pages\n"; print " -diricons=icondir Relative path to use as icon dir in links\n"; print " -builddate=%YY%MM%DD Used to add build date in built pages filenames\n"; print " -staticlinksext=xxx Build pages with .xxx extension (default .html)\n"; print " -buildpdf[=pathtohtmldoc] Build a PDF file after building HTML pages.\n"; print " Output directory must contains icon directory\n"; print " when this option is used (need 'htmldoc')\n"; print "\n"; print "New versions and FAQ at http://www.awstats.org\n"; exit 0; } my $retour; # Check if AWSTATS prog is found my $AwstatsFound=0; if (-s "$Awstats") { $AwstatsFound=1; } elsif (-s "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl") { $Awstats="/usr/local/awstats/wwwroot/cgi-bin/awstats.pl"; $AwstatsFound=1; } elsif (-s "/usr/lib/cgi-bin/awstats.pl") { $Awstats="/usr/lib/cgi-bin/awstats.pl"; $AwstatsFound=1; } if (! $AwstatsFound) { error("Can't find AWStats program ('$Awstats').\nUse -awstatsprog option to solve this"); exit 1; } $AwstatsDir=$Awstats; $AwstatsDir =~ s/[\\\/][^\\\/]*$//; debug("AwstatsDir=$AwstatsDir"); # Check if HTMLDOC prog is found if ($BuildPDF) { my $HtmlDocFound=0; if (-x "$HtmlDoc") { $HtmlDocFound=1; } elsif (-x "/usr/bin/htmldoc") { $HtmlDoc='/usr/bin/htmldoc'; $HtmlDocFound=1; } if (! $HtmlDocFound) { error("Can't find htmldoc program ('$HtmlDoc').\nUse -buildpdf=htmldocprog option to solve this"); exit 1; } } # Read config file (SiteConfig must be defined) &Read_Config($DirConfig); if ($BuildReportFormat eq 'xhtml') { $StaticExt="xml"; if ($BuildPDF) { error("Building PDF file is not compatible with building xml output files. Change your parameter BuildReportFormat to html in your config file"); } } # Define list of output files if ($ShowDomainsStats) { push @OutputList,'alldomains'; } if ($ShowHostsStats) { push @OutputList,'allhosts'; push @OutputList,'lasthosts'; push @OutputList,'unknownip'; } if ($ShowAuthenticatedUsers) { push @OutputList,'alllogins'; push @OutputList,'lastlogins'; } if ($ShowRobotsStats) { push @OutputList,'allrobots'; push @OutputList,'lastrobots'; } if ($ShowEMailSenders) { push @OutputList,'allemails'; push @OutputList,'lastemails'; } if ($ShowEMailReceivers) { push @OutputList,'allemailr'; push @OutputList,'lastemailr'; } if ($ShowSessionsStats) { push @OutputList,'session'; } if ($ShowPagesStats) { push @OutputList,'urldetail'; push @OutputList,'urlentry'; push @OutputList,'urlexit'; } #if ($ShowFileTypesStats) { push @OutputList,'filetypes'; } # There is dedicated page for filetypes if ($ShowOSStats) { push @OutputList,'osdetail'; push @OutputList,'unknownos'; } if ($ShowBrowsersStats) { push @OutputList,'browserdetail'; push @OutputList,'unknownbrowser'; } if ($ShowDownloadsStats) { push @OutputList,'downloads'; } if ($ShowScreenSizeStats) { push @OutputList,'screensize'; } if ($ShowOriginStats) { push @OutputList,'refererse'; push @OutputList,'refererpages'; } if ($ShowKeyphrasesStats) { push @OutputList,'keyphrases'; } if ($ShowKeywordsStats) { push @OutputList,'keywords'; } #if ($ShowMiscStats) { push @OutputList,'misc'; } # There is no dedicated page for misc if ($ShowHTTPErrorsStats) { #push @OutputList,'errors'; # There is no dedicated page for errors $TrapInfosForHTTPErrorCodes = '404' if ( ! $TrapInfosForHTTPErrorCodes ); foreach my $code (split(' ', $TrapInfosForHTTPErrorCodes)) { push @OutputList,"errors$code"; } } #if ($ShowSMTPErrorsStats) { push @OutputList,'errors'; } foreach my $extranum (1..@ExtraName-1) { push @OutputList,'allextra'.$extranum; } #Add plugins foreach ( @PluginsToLoad ) { if ($_ =~ /^(geoip_[_a-z]+)\s/) { push @OutputList,'plugin_'.$1; } # Add geoip maxmind subpages } # Launch awstats update if ($Update) { my $command="\"$Awstats\" -config=$SiteConfig -update"; $command .= " -configdir=$DirConfig" if defined $DirConfig; $command .= " -databasebreak=$DatabaseBreak" if defined $DatabaseBreak; print "Launch update process : $command\n"; $retour=`$command 2>&1`; } # Built the OutputSuffix value (used later to build page name) $OutputSuffix=$SiteConfig; if ($BuildDate) { ($nowsec,$nowmin,$nowhour,$nowday,$nowmonth,$nowyear,$nowwday,$nowyday) = localtime(time); $nowweekofmonth=int($nowday/7); $nowweekofyear=int(($nowyday-1+6-($nowwday==0?6:$nowwday-1))/7)+1; if ($nowweekofyear > 52) { $nowweekofyear = 1; } $nowdaymod=$nowday%7; $nowwday++; $nowns=Time::Local::timegm(0,0,0,$nowday,$nowmonth,$nowyear); if ($nowdaymod <= $nowwday) { if (($nowwday != 7) || ($nowdaymod != 0)) { $nowweekofmonth=$nowweekofmonth+1; } } if ($nowdaymod > $nowwday) { $nowweekofmonth=$nowweekofmonth+2; } # Change format of time variables $nowweekofmonth="0$nowweekofmonth"; if ($nowweekofyear < 10) { $nowweekofyear = "0$nowweekofyear"; } if ($nowyear < 100) { $nowyear+=2000; } else { $nowyear+=1900; } $nowsmallyear=$nowyear;$nowsmallyear =~ s/^..//; if (++$nowmonth < 10) { $nowmonth = "0$nowmonth"; } if ($nowday < 10) { $nowday = "0$nowday"; } if ($nowhour < 10) { $nowhour = "0$nowhour"; } if ($nowmin < 10) { $nowmin = "0$nowmin"; } if ($nowsec < 10) { $nowsec = "0$nowsec"; } # Replace tag with new value $BuildDate =~ s/%YYYY/$nowyear/ig; $BuildDate =~ s/%YY/$nowsmallyear/ig; $BuildDate =~ s/%MM/$nowmonth/ig; #$BuildDate =~ s/%MO/$MonthNumLibEn{$nowmonth}/ig; $BuildDate =~ s/%DD/$nowday/ig; $BuildDate =~ s/%HH/$nowhour/ig; $BuildDate =~ s/%NS/$nowns/ig; $BuildDate =~ s/%WM/$nowweekofmonth/g; my $nowweekofmonth0=$nowweekofmonth-1; $BuildDate =~ s/%Wm/$nowweekofmonth0/g; $BuildDate =~ s/%WY/$nowweekofyear/g; my $nowweekofyear0=sprintf("%02d",$nowweekofyear-1); $BuildDate =~ s/%Wy/$nowweekofyear0/g; $BuildDate =~ s/%DW/$nowwday/g; my $nowwday0=$nowwday-1; $BuildDate =~ s/%Dw/$nowwday0/g; $OutputSuffix.=".$BuildDate"; } my $cpt=0; my $NoLoadPlugin=""; if ($BuildPDF) { $NoLoadPlugin.="tooltips,rawlog,hostinfo"; } my $smallcommand="\"$Awstats\" -config=$SiteConfig".($BuildPDF?" -buildpdf":"").($NoLoadPlugin?" -noloadplugin=$NoLoadPlugin":"")." -staticlinks".($OutputSuffix ne $SiteConfig?"=awstats.$OutputSuffix":""); if ($StaticExt && $StaticExt ne 'html') { $smallcommand.=" -staticlinksext=$StaticExt"; } if ($DirIcons) { $smallcommand.=" -diricons=$DirIcons"; } if ($DirConfig) { $smallcommand.=" -configdir=$DirConfig"; } if ($Lang) { $smallcommand.=" -lang=$Lang"; } if ($DayRequired) { $smallcommand.=" -day=$DayRequired"; } if ($MonthRequired) { $smallcommand.=" -month=$MonthRequired"; } if ($YearRequired) { $smallcommand.=" -year=$YearRequired"; } if ($DatabaseBreak) { $smallcommand.=" -databasebreak=$DatabaseBreak"; } # Launch main awstats output my $command="$smallcommand -output"; print "Build main page: $command\n"; $retour=`$command 2>&1`; $OutputFile=($OutputDir?$OutputDir:"")."awstats.$OutputSuffix.$StaticExt"; open("OUTPUT",">$OutputFile") || error("Couldn't open log file \"$OutputFile\" for writing : $!"); print OUTPUT $retour; close("OUTPUT"); $cpt++; push @pages, $OutputFile; # Add page to @page for PDF build # Launch all other awstats output for my $output (@OutputList) { my $command="$smallcommand -output=$output"; print "Build $output page: $command\n"; $retour=`$command 2>&1`; $OutputFile=($OutputDir?$OutputDir:"")."awstats.$OutputSuffix.$output.$StaticExt"; open("OUTPUT",">$OutputFile") || error("Couldn't open log file \"$OutputFile\" for writing : $!"); print OUTPUT $retour; close("OUTPUT"); $cpt++; push @pages, $OutputFile; # Add page to @page for PDF build } # Build pdf file if ($QueryString =~ /(^|-|&)buildpdf/i) { # my $pdffile=$pages[0]; $pdffile=~s/\.\w+$/\.pdf/; $OutputFile=($OutputDir?$OutputDir:"")."awstats.$OutputSuffix.pdf"; my $command="\"$HtmlDoc\" -t pdf --webpage --quiet --no-title --textfont helvetica --left 16 --bottom 8 --top 8 --browserwidth 800 --headfootsize 8.0 --fontsize 7.0 --header xtx --footer xd/ --outfile $OutputFile @pages\n"; print "Build PDF file : $command\n"; $retour=`$command 2>&1`; my $signal_num=$? & 127; my $dumped_core=$? & 128; my $exit_value=$? >> 8; if ($? || $retour =~ /error/) { if ($retour) { error("Failed to build PDF file with following error: $retour"); } else { error("Failed to run successfuly htmldoc process: Return code=$exit_value, Killer signal num=$signal_num, Core dump=$dumped_core"); } } $cpt++; } print "$cpt files built.\n"; print "Main HTML page is 'awstats.$OutputSuffix.$StaticExt'.\n"; if ($QueryString =~ /(^|-|&)buildpdf/i) { print "PDF file is 'awstats.$OutputSuffix.pdf'.\n"; } 0; # Do not remove this line awstats-7.4/tools/maillogconvert.pl0000750000175000017500000006617012410217071015413 0ustar sksk#!/usr/bin/perl #------------------------------------------------------- # Convert a mail log file to a common log file for analyzing with any log # analyzer. #------------------------------------------------------- # Tool built from original work of Odd-Jarle Kristoffersen # Note 1: QMail must log in syslog format for timestamps to work. # Note 2: QMail logging is not 100% accurate. Some messages might # not be logged correctly or completely. # # A mail received to 2 different receivers, report 2 records. # A mail received to a forwarded account is reported as to the original receiver, not the "forwarded to". # A mail locally sent to a local alias is reported as n mails to all addresses of alias. #------------------------------------------------------- use strict;no strict "refs"; #------------------------------------------------------- # Defines #------------------------------------------------------- use vars qw/ $REVISION $VERSION /; $REVISION = '20140126'; $VERSION="1.2 (build $REVISION)"; use vars qw/ $DIR $PROG $Extension $Debug %mail %qmaildelivery $help $mode $year $lastmon $Debug $NBOFENTRYFOFLUSH $MailType %MonthNum /; $Debug=0; $NBOFENTRYFOFLUSH=16384; # Nb or records for flush of %entry (Must be a power of 2) $MailType=''; # Mail server family (postfix, sendmail, qmail) %MonthNum = ( 'Jan'=>1, 'Feb'=>2, 'Mar'=>3, 'Apr'=>4, 'May'=>5, 'Jun'=>6, 'Jul'=>7, 'Aug'=>8, 'Sep'=>9, 'Oct'=>10, 'Nov'=>11, 'Dec'=>12 ); #------------------------------------------------------- # Functions #------------------------------------------------------- sub error { print STDERR "Error: $_[0].\n"; exit 1; } sub debug { my $level = $_[1] || 1; if ($Debug >= $level) { my $debugstring = $_[0]; if ($ENV{"GATEWAY_INTERFACE"}) { $debugstring =~ s/^ /   /; $debugstring .= "
    "; } print localtime(time)." - DEBUG $level - $. - : $debugstring\n"; } 0; } sub CleanVadminUser { $_=shift||''; s/[#<|>\[\]]//g; # Remove unwanted characters first s/^(.*?)-//gi; # Strip off unixuser- at beginning return $_; } sub CleanEmail { $_=shift||''; s/[#<|>\[\]]//g; # Remove unwanted characters first return $_; } # Clean host addresses # Input: "servername[123.123.123.123]", "servername [123.123.123.123]" # "root@servername", "[123.123.123.123]" # Return: servername or 123.123.123.123 if servername is 'unknown' sub CleanHost { $_=shift||''; if (/^\[(.*)\]$/) { $_=$1; } # If [ip] we keep ip if (/^unknown\s*\[/) { $_ =~ /\[(.*)\]/; $_=$1; } # If unknown [ip], we keep ip else { $_ =~ s/\s*\[.*$//; } $_ =~ s/^.*\@//; # If x@y, we keep y return $_; } # Return domain # Input: host.domain.com, , <> # sub CleanDomain { $_=shift; s/>.*$//; s/[<>]//g; s/^.*@//; if (! $_) { $_ = 'localhost'; } return $_; } # Return string without starting and ending space # sub trim { $_=shift; s/^\s+//; s/\s+$//; return $_; } # Write a record # sub OutputRecord { my $year=shift; my $month=shift; # Jan,Feb,... or 1,2,3... my $day=shift; my $time=shift; my $from=shift; my $to=shift; my $relay_s=shift; my $relay_r=shift; my $code=shift; my $size=shift||0; my $forwardto=shift; my $extinfo=shift||'-'; # Clean day and month $day=sprintf("%02d",$day); $month=sprintf("%02d",$MonthNum{$month}||$month); # Clean from $from=&CleanEmail($from); $from||='<>'; # Clean to if ($mode eq 'vadmin') { $to=&CleanVadminUser($to); } else { $to=&CleanEmail($to); } $to||='<>'; # Clean relay_s $relay_s=&CleanHost($relay_s); $relay_s||=&CleanDomain($from); $relay_s=~s/\.$//; if ($relay_s eq 'local' || $relay_s eq 'localhost.localdomain') { $relay_s='localhost'; } # Clean relay_r $relay_r=&CleanHost($relay_r); $relay_r||="-"; $relay_r=~s/\.$//; if ($relay_r eq 'local' || $relay_r eq 'localhost.localdomain') { $relay_r='localhost'; } #if we don't have info for relay_s, we keep it unknown, awstats might then guess it # Write line print "$year-$month-$day $time $from $to $relay_s $relay_r SMTP $extinfo $code $size\n"; # If there was a redirect if ($forwardto) { # Redirect to local address # TODO # Redirect to external address # TODO } } #------------------------------------------------------- # MAIN #------------------------------------------------------- # Prepare QueryString my %param=(); for (0..@ARGV-1) { $param{$_}=$ARGV[$_]; } foreach my $key (sort keys %param) { if ($param{$key} =~ /(^|-|&)debug=([^&]+)/i) { $Debug=$2; shift; next; } if ($param{$key} =~ /^(\d+)$/) { $year=$1; shift; next; } if ($param{$key} =~ /^(standard|vadmin)$/i) { $mode=$1; shift; next; } } if ($mode ne 'standard' and $mode ne 'vadmin') { $help = 1; } ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; my $starttime=time(); my ($nowsec,$nowmin,$nowhour,$nowday,$nowmonth,$nowyear,$nowwday,$nowyday) = localtime($starttime); $year||=($nowyear+1900); # Show usage help if ($help) { print "----- $PROG $VERSION -----\n"; print < output The first parameter specifies what format the mail logfile is : standard - logfile is standard postfix,sendmail,qmail or mdaemon log format vadmin - logfile is qmail log format with vadmin multi-host support The second parameter specifies what year to timestamp logfile with, if current year is not the correct one (ie. 2002). Always use 4 digits. If not specified, current year is used. If no output is specified, it goes to the console (stdout). HELPTEXT sleep 1; exit; } # # Start Processing Input Logfile # $lastmon=0; my $numrecord=0; my $numrecordforflush=0; while (<>) { chomp $_; s/\r//; $numrecord++; $numrecordforflush++; my $mailid=0; if (/^__BREAKPOINT__/) { last; } # For debug only ### ### my ($mon)=m/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s/; if ($mon) { $mon = $MonthNum{$mon}; if ($mon==12 && $lastmon==1 ){$year--;} if ($mon==1 && $lastmon==12){$year++;} $lastmon=$mon; } ### ### if (/^#/) { debug("Comment record"); next; } # # Get sender host for postfix # elsif (/: client=/) { $MailType||='postfix'; # Example: # postfix: Jan 01 07:27:32 apollon.com postfix/smtpd[1684]: 2BC793B8A4: client=remt30.cluster1.abcde.net[209.225.8.40] my ($id,$relay_s)=m/\w+\s+\d+\s+\d+:\d+:\d+\s+[\w\-\.\@]+\s+(?:sendmail|postfix\/(?:local|lmtp|smtpd|smtp|virtual|pipe))\[\d+\]:\s+(.*?):\s+client=(.*)/; $mailid=$id; $mail{$id}{'relay_s'}=$relay_s; debug("For id=$id, found host sender on a 'client' line: $mail{$id}{'relay_s'}"); } # # See if we received postfix email reject error # elsif (/: reject/) { $MailType||='postfix'; # Example: # postfix ?.? : Jan 01 12:00:00 halley postfix/smtpd[9245]: reject: RCPT from unknown[203.156.32.33]: 554 : Recipient address rejected: Relay access denied; from= to= # postfix 2.1+: Jan 01 12:00:00 localhost postfix/smtpd[11120]: NOQUEUE: reject: RCPT from unknown[62.205.124.145]: 450 Client host rejected: cannot find your hostname, [62.205.124.145]; from= to= proto=ESMTP helo= # postfix ?.? : Jan 01 12:00:00 apollon postfix/smtpd[26553]: 1954F3B8A4: reject: RCPT from unknown[80.245.33.2]: 450 : User unknown in local recipient table; from= to= proto=ESMTP helo= my ($mon,$day,$time,$id,$code,$from,$to)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-\.\@]+\s+(?:postfix\/(?:local|lmtp|smtpd|smtp|virtual|pipe))\[\d+\]:\s+(.*?):\s+(.*)\s+from=([^\s,]*)\s+to=([^\s,]*)/; # postfix: Jan 01 14:10:16 juni postfix/smtpd[2568]: C34ED1432B: reject: RCPT from relay2.tp2rc.edu.tw[163.28.32.177]: 450 : User unknown in local recipient table; from=<> proto=ESMTP helo= if (! $mon) { ($mon,$day,$time,$id,$code,$from)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-\.\@]+\s+(?:postfix\/(?:local|lmtp|smtpd|smtp|virtual|pipe))\[\d+\]:\s+(.*?):\s+(.*)\s+from=([^\s,]*)/; } $mailid=($id eq 'reject' || $id eq 'NOQUEUE'?'999':$id); # id not provided in log, we take '999' if ($mailid) { # $code='reject: RCPT from unknown[203.156.32.33]: 554 : Recipient address rejected: Relay access denied;' # or 'reject: RCPT from unknown[62.205.124.145]: 450 Client host rejected: cannot find your hostname, [62.205.124.145]; from= to= proto=ESMTP helo=' # or 'reject: RCPT from unknown[80.245.33.2]: 450 : User unknown in local recipient table;' if ($code =~ /\s+(\d\d\d)\s+/) { $mail{$mailid}{'code'}=$1; } else { $mail{$mailid}{'code'}=999; } # Unkown error if (! $mail{$mailid}{'relay_s'} && $code =~ /from\s+([^\s]+)\s+/) { $mail{$mailid}{'relay_s'}=&trim($1); } $mail{$mailid}{'from'}=&trim($from); if ($to) { $mail{$mailid}{'to'}=&trim($to); } elsif ($code =~ /<(.*)>/) { $mail{$mailid}{'to'}=&trim($1); } $mail{$mailid}{'year'}=$year; ### ### $mail{$mailid}{'mon'}=$mon; $mail{$mailid}{'day'}=$day; $mail{$mailid}{'time'}=$time; if (! defined($mail{$mailid}{'size'})) { $mail{$mailid}{'size'}='?'; } debug("For id=$mailid, found a postfix error incoming message: code=$mail{$mailid}{'code'} from=$mail{$mailid}{'from'} to=$mail{$mailid}{'to'} time=$mail{$mailid}{'time'}"); } } # # See if we received postfix email bounced error # elsif (/stat(us)?=bounced/) { $MailType||='postfix'; # Example: # postfix: Sep 9 18:24:23 halley postfix/local[22003]: 12C6413EC9: to=, relay=local, delay=0, status=bounced (unknown user: "etavidian") my ($mon,$day,$time,$id,$to,$relay_r)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-\.\@]+\s+(?:postfix\/(?:local|lmtp|smtpd|smtp|virtual|pipe))\[\d+\]:\s+(.*?):\s+to=([^\s,]*)[\s,]+relay=([^\s,]*)/; $mailid=($id eq 'reject'?'999':$id); # id not provided in log, we take '999' if ($mailid) { $mail{$mailid}{'code'}=999; # Unkown error (bounced) $mail{$mailid}{'to'}=&trim($to); $mail{$mailid}{'relay_r'}=&trim($relay_r); $mail{$mailid}{'year'}=$year; ### ### $mail{$mailid}{'mon'}=$mon; $mail{$mailid}{'day'}=$day; $mail{$mailid}{'time'}=$time; if (! defined($mail{$mailid}{'size'})) { $mail{$mailid}{'size'}='?'; } debug("For id=$mailid, found a postfix bounced incoming message: code=$mail{$mailid}{'code'} to=$mail{$mailid}{'to'} relay_r=$mail{$mailid}{'relay_r'}"); } } # # See if we received sendmail reject error # elsif (/, reject/) { $MailType||='sendmail'; # Example: # sm-mta: Jul 27 04:06:05 androneda sm-mta[6641]: h6RB44tg006641: ruleset=check_mail, arg1=<7ms93d4ms@topprodsource.com>, relay=crelay1.easydns.com [216.220.57.222], reject=451 4.1.8 Domain of sender address 7ms93d4ms@topprodsource.com does not resolve # sm-mta: Jul 27 06:21:24 androneda sm-mta[11461]: h6RDLNtg011461: ruleset=check_rcpt, arg1=, relay=freedom.myhostdns.com [66.246.77.42], reject=550 5.7.1 ... Relaying denied # sendmail: Sep 30 04:21:32 halley sendmail[3161]: g8U2LVi03161: ruleset=check_rcpt, arg1=, relay=moon.partenor.fr [10.0.0.254], reject=550 5.7.1 ... Relaying denied # sendmail: Jan 10 07:37:48 smtp sendmail[32440]: ruleset=check_relay, arg1=[211.228.26.114], arg2=211.228.26.114, relay=[211.228.26.114], reject=554 5.7.1 Rejected 211.228.26.114 found in dnsbl.sorbs.net # sendmail: Jan 10 07:37:08 smtp sendmail[32439]: ruleset=check_relay, arg1=235.Red-213-97-175.pooles.rima-tde.net, arg2=213.97.175.235, relay=235.Red-213-97-175.pooles.rima-tde.net [213.97.175.235], reject=550 5.7.1 Mail from 213.97.175.235 refused. Rejected for bad WHOIS info on IP of your SMTP server - see http://www.rfc-ignorant.org/ # sendmail: Jan 10 17:15:42 smtp sendmail[12770]: ruleset=check_relay, arg1=[63.218.84.21], arg2=63.218.84.21, relay=[63.218.84.21], reject=553 5.3.0 Rejected - see http://spamhaus.org/ my ($mon,$day,$time,$id,$ruleset,$arg,$relay_s,$code)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-\.\@]+\s+(?:sendmail|sm-mta)\[\d+\][:\s]*(.*?):\sruleset=(\w+),\s+arg1=(.*),\s+relay=(.*),\s+(reject=.*)/; # sendmail: Jan 10 18:00:34 smtp sendmail[5759]: i04Axx2c005759: Milter: data, reject=511 Virus found in email! if (! $mon) { ($mon,$day,$time,$id,$ruleset,$code)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-\.\@]+\s+(?:sendmail|sm-mta)\[\d+\]:\s+(.*?):\s\w+:\s(\w+),\s+(reject=.*)/; } $mailid=(! $id && $mon?'999':$id); # id not provided in log, we take '999' if ($mailid) { if ($ruleset eq 'check_mail') { $mail{$mailid}{'from'}=$arg; } if ($ruleset eq 'check_rcpt') { $mail{$mailid}{'to'}=$arg; } if ($ruleset eq 'check_relay') { } if ($ruleset eq 'data') { } $mail{$mailid}{'relay_s'}=$relay_s; # $code='reject=550 5.7.1 ... Relaying denied' if ($code =~ /=(\d\d\d)\s+/) { $mail{$mailid}{'code'}=$1; } else { $mail{$mailid}{'code'}=999; } # Unkown error $mail{$mailid}{'year'}=$year; ### ### $mail{$mailid}{'mon'}=$mon; $mail{$mailid}{'day'}=$day; $mail{$mailid}{'time'}=$time; if (! defined($mail{$mailid}{'size'})) { $mail{$mailid}{'size'}='?'; } debug("For id=$mailid, found a sendmail error incoming message: code=$mail{$mailid}{'code'} from=$mail{$mailid}{'from'} to=$mail{$mailid}{'to'} relay_s=$mail{$mailid}{'relay_s'}"); } } # # See if we send a sendmail (with ctladdr tag) email # elsif (/, ctladdr=/) { $MailType||='sendmail'; # # Matched outgoing sendmail/postfix message # my ($mon,$day,$time,$id,$to,$fromorto)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-\.\@]+\s+(?:sm-mta|sendmail(?:-out|)|postfix\/(?:local|lmtp|smtpd|smtp|virtual|pipe))\[.*?\]:\s+([^:]*):\s+to=(.*?)[,\s]+ctladdr=([^\,\s]*)/; $mailid=$id; if (m/\s+relay=([^\s,]*)[\s,]/) { $mail{$id}{'relay_r'}=$1; } elsif (m/\s+mailer=local/) { $mail{$id}{'relay_r'}='localhost'; } if (/, stat\=Sent/) { $mail{$id}{'code'}=1; } elsif (/, stat\=User\s+unknown/) { $mail{$id}{'code'}=550; } elsif (/, stat\=Local\s+configuration/) { $mail{$id}{'code'}=451; } elsif (/, stat\=Deferred:\s+(\d*)/) { $mail{$id}{'code'}=$1; } else { $mail{$id}{'code'}=999; } $mail{$mailid}{'year'}=$year; ### ### $mail{$id}{'mon'}=$mon; $mail{$id}{'day'}=$day; $mail{$id}{'time'}=$time; if (&trim($to)=~/^\|/) { # In particular case of mails are sent to a pipe, the ctladdr contains the to $mail{$id}{'to'}=&trim($fromorto); } else { # In most cases $mail{$id}{'to'}=&trim($to); $mail{$id}{'from'}=&trim($fromorto); } if (! defined($mail{$id}{'size'})) { $mail{$id}{'size'}='?'; } debug("For id=$id, found a sendmail outgoing message: to=$mail{$id}{'to'} from=$mail{$id}{'from'} size=$mail{$id}{'size'} relay_r=".($mail{$id}{'relay_r'}||'')); } # # Matched incoming qmail message # elsif (/info msg .* from/) { # Example: Sep 14 09:58:09 gandalf qmail: 1063526289.292776 info msg 270182: bytes 10712 from qp 54945 uid 82 $MailType||='qmail'; #my ($id,$size,$from)=m/info msg \d+: bytes (\d+) from <(.*)>/; my ($id,$size,$from)=m/info msg (\d+): bytes (\d+) from <(.*)>/; $mailid=$id; delete $mail{$mailid}; # If 'info msg' found, we start a new mail. This is to protect from wrong file if (! $mail{$id}{'from'} || $mail{$id}{'from'} ne '<>') { $mail{$id}{'from'}=$from; } # TODO ??? $mail{$id}{'size'}=$size; if (m/\s+relay=([^\,]+)[\s\,]/ || m/\s+relay=([^\s\,]+)$/) { $mail{$id}{'relay_s'}=$1; } debug("For id=$id, found a qmail 'info msg' message: from=$mail{$id}{'from'} size=$mail{$id}{'size'}"); } # # Matched incoming sendmail or postfix message # elsif (/: from=/) { # sm-mta: Jul 28 06:55:13 androneda sm-mta[28877]: h6SDtCtg028877: from=, size=2556, class=0, nrcpts=1, msgid=, proto=ESMTP, daemon=MTA, relay=smtp.easydns.com [205.210.42.50] # postfix: Jul 3 15:32:26 apollon postfix/qmgr[13860]: 08FB63B8A4: from=, size=3302, nrcpt=1 (queue active) # postfix: Sep 24 14:45:15 wideboy postfix/qmgr[22331]: 7E0E6196: from=, size=1141 (queue active) my ($id,$from,$size)=m/\w+\s+\d+\s+\d+:\d+:\d+\s+[\w\-\.\@]+\s+(?:sm-mta|sendmail(?:-in|)|postfix\/qmgr|postfix\/nqmgr)\[\d+\]:\s+(.*?):\s+from=(.*?),\s+size=(\d+)/; $mailid=$id; if (! $mail{$id}{'code'}) { $mail{$id}{'code'}=1; } # If not already defined, we define it if (! $mail{$id}{'from'} || $mail{$id}{'from'} ne '<>') { $mail{$id}{'from'}=$from; } $mail{$id}{'size'}=$size; if (m/\s+relay=([^\,]+)[\s\,]/ || m/\s+relay=([^\s\,]+)$/) { $mail{$id}{'relay_s'}=$1; } debug("For id=$id, found a sendmail/postfix incoming message: from=$mail{$id}{'from'} size=$mail{$id}{'size'} relay_s=".($mail{$id}{'relay_s'}||'')); } # # Matched exchange message # elsif (/^([^\t]+)\t([^\t]+)\t[^\t]+\t([^\t]+)\t([^\t]+)\t([^\t]+)\t[^\t]+\t([^\t]+)\t([^\t]+)\t([^\t]+)\t[^\t]+\t[^\t]+\t([^\t]+)\t[^\t]+\t[^\t]+\t[^\t]+\t[^\t]+\t[^\t]+\t([^\t]+)\t([^\t]+)/) { # date hour GMT ip_s relay_s partner relay_r ip_r to code id size subject from # Example: 2003-8-12 0:58:14 GMT 66.218.66.69 n14.grp.scd.yahoo.com - PACKRAT 192.168.1.2 christina@pirnie.org 1019 bh9e3f+5qvo@eGroups.com 0 0 4281 1 2003-8-12 0:58:14 GMT 0 Version: 6.0.3790.0 - [SRESafeHaven] Re: More Baby Stuff jtluvs2cq@wmconnect.com - $MailType||='exchange'; my $date=$1; my $time=$2; my $relay_s=$3; my $partner=$4; my $relay_r=$5; my $to=$6; $to =~ s/\s/%20/g; my $code=$7; my $id=$8; my $size=$9; my $subject=&trim($10); my $from=$11; $from =~ s/\s/%20/g; $id=sprintf("%s_%s_%s",$id,$from,$to); # Check if record is significant record my $ok=0; # Code 1031=SMTP End Outbound Transfer if ($code == 1031) { # This is for external bound mails $ok=1; my $savrelay_s=$relay_s; $relay_s=$relay_r; $relay_r=$savrelay_s; #$relay_s=$relay_r; #$relay_r=$partner; $code=1; } # Code 1028=SMTP Store Driver: Message Delivered Locally to Store if ($code == 1028) { # This is for local bound mails $code=1; $ok=1; } # Code 1030=SMTP: Non-Delivered Report (NDR) Generated if ($code == 1030) { # This is for errors. $code=999; $ok=1; } if ($ok && !$mail{$id}{'code'} ) { $mailid=$id; if ($date =~ /(\d+)-(\d+)-(\d+)/) { $mail{$id}{'year'}=sprintf("%02s",$1); $mail{$id}{'mon'}=sprintf("%02s",$2); $mail{$id}{'day'}=sprintf("%02s",$3); } if ($time =~ /^(\d+):(\d+):(\d+)/) { $mail{$id}{'time'}=sprintf("%02s:%02s:%02s",$1,$2,$3); } if ( $from eq '<>' && $subject =~ /^Delivery\s+Status/) { $from='postmaster@localhost'; } $mail{$id}{'from'}=$from; $mail{$id}{'to'}=$to; $mail{$id}{'code'}=$code; $mail{$id}{'size'}=$size; $mail{$id}{'relay_s'}=$relay_s; $mail{$id}{'relay_r'}=$relay_r; debug("For id=$id, found an exchange message: year=$mail{$id}{'year'} mon=$mail{$id}{'mon'} day=$mail{$id}{'day'} time=$mail{$id}{'time'} from=$mail{$id}{'from'} to=$mail{$id}{'to'} size=$mail{$id}{'size'} code=$mail{$id}{'code'} relay_s=$mail{$id}{'relay_s'} relay_r=$mail{$id}{'relay_r'}"); } } # # Matched sendmail or postfix "to" message # elsif (/: to=.*stat(us)?=sent/i) { # Example: # postfix: Jan 01 07:27:38 apollon postfix/local[1689]: 2BC793B8A4: to=, orig_to=, relay=local, delay=6, status=sent ("|/usr/bin/procmail") my ($mon,$day,$time,$id,$to)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-\.\@]+\s+(?:sm-mta|sendmail(?:-out|)|postfix\/(?:local|lmtp|smtpd|smtp|virtual|pipe))\[.*?\]:\s+(.*?):\s+to=(.*?),/; $mailid=$id; $mail{$id}{'code'}='1'; if (m/\s+relay=([^\s,]*)[\s,]/) { $mail{$id}{'relay_r'}=$1; } elsif (m/\s+mailer=local/) { $mail{$id}{'relay_r'}='localhost'; } if (m/forwarded as/) { # If 'forwarded as idnewmail' is found, we discard this mail to avoid counting it twice debug("For id=$id, mail was forwarded to other id, we discard it"); delete $mail{$id}; } ########################################### elsif (m/\s*dsn=2.6.0\s*/) { # if the DSN is not 2.0.0, we discard this mail to avoid counting it twice # postfix: Aug 29 19:22:38 example postfix/smtp[1347]: D989FD6C302: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=2.9, delays=0.31/0.01/0/2.6, dsn=2.6.0, status=sent (250 2.6.0 Ok, id=01182-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 995DCD6C315) debug("For id=$id, mail DSN is not 2.0.0, we discard it"); delete $mail{$id}; } ########################################### else { if (m/\s+orig_to=([^\s,]*)[\s,]/) { # If we have a orig_to, we used it as receiver $mail{$id}{'to'}=&trim($1); $mail{$id}{'forwardedto'}=&trim($to); } else { $mail{$id}{'to'}=&trim($to); } $mail{$mailid}{'year'}=$year; ### ### $mail{$id}{'mon'}=$mon; $mail{$id}{'day'}=$day; $mail{$id}{'time'}=$time; debug("For id=$id, found a sendmail/postfix record: mon=$mail{$id}{'mon'} day=$mail{$id}{'day'} time=$mail{$id}{'time'} to=$mail{$id}{'to'} relay_r=$mail{$id}{'relay_r'}"); } } # # Matched qmail "to" record # elsif (/starting delivery/) { # Example: Sep 14 09:58:09 gandalf qmail: 1063526289.574100 starting delivery 251: msg 270182 to local spamreport@john.do # Example: 2003-09-27 11:22:07.039237500 starting delivery 3714: msg 163844 to local name_also_removed@maildomain.com $MailType||='qmail'; my ($yea,$mon,$day,$time,$delivery,$id,$relay_r,$to)=(); ($mon,$day,$time,$delivery,$id,$relay_r,$to)=m/^(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+.*\s+\d+(?:\.\d+)?\s+starting delivery (\d+):\s+msg\s+(\d+)\s+to\s+(.*)?\s+(.*)$/; if (! $id) { ($yea,$mon,$day,$time,$delivery,$id,$relay_r,$to)=m/^(\d+)-(\d+)-(\d+)\s+(\d+:\d+:\d+).*\s+starting delivery (\d+):\s+msg\s+(\d+)\s+to\s+(.*)?\s+(.*)$/; } $mailid=$id; if ($relay_r eq 'local') { $mail{$id}{'relay_r'}='localhost'; } elsif (m/\s+relay=([^\s,]*)[\s,]/) { $mail{$id}{'relay_r'}=$1; } elsif (m/\s+mailer=local/) { $mail{$id}{'relay_r'}='localhost'; } $qmaildelivery{$delivery}=$id; # Save mail id for this delivery to be able to get error code if ($yea) { $mail{$id}{'year'}=$yea; } $mail{$id}{'mon'}=$mon; $mail{$id}{'day'}=$day; $mail{$id}{'time'}=$time; $mail{$id}{'to'}{$delivery}=&trim($to); debug("For id=$id, found a qmail 'start delivery' record: year=".($mail{$id}{'year'}||'')." mon=$mail{$id}{'mon'} day=$mail{$id}{'day'} time=$mail{$id}{'time'} to=$mail{$id}{'to'}{$delivery} relay_r=".($mail{$id}{'relay_r'}||'')." delivery=$delivery"); } # # Matched qmail status code record # elsif (/delivery (\d+): (\w+):/) { # Example: Sep 14 09:58:09 gandalf qmail: 1063526289.744259 delivery 251: success: did_0+0+1/ # Example: 2003-09-27 11:22:07.070367500 delivery 3714: success: did_1+0+0/ $MailType||='qmail'; my ($delivery,$code)=($1,$2); my $id=$qmaildelivery{$delivery}; $mailid=$id; if ($code =~ /success/i) { $mail{$id}{'code'}{$delivery}=1; } elsif ($code =~ /deferral/i) { $mail{$id}{'code'}{$delivery}=999; } else { $mail{$id}{'code'}{$delivery}=999; } debug("For id=$qmaildelivery{$delivery}, found a qmail 'delivery' record: delivery=$delivery code=$mail{$id}{'code'}{$delivery}"); } # # Matched qmail end of mail record # elsif (/end msg (\d+)/ && scalar %{$mail{$1}{'to'}}) { # If records for mail id are finished and still mails with no delivery status # Example: Sep 14 09:58:12 gandalf qmail: 1063526292.782444 end msg 270182 $MailType||='qmail'; my ($id)=($1); $mailid=$id; foreach my $delivery (keys %{$mail{$mailid}{'to'}}) { $mail{$id}{'code'}{$delivery}||=1; } debug("For id=$id, found a qmail 'end msg' record. This replace 'delivery' record for delivery=".join(',',keys %{$mail{$id}{'code'}})); } # # Matched MDaemon log file record # elsif (/^\"(\d\d\d\d)-(\d\d)-(\d\d) (\d\d:\d\d:\d\d)\",\"[^\"]*\",(\w+),\d+,\"([^\"]*)\",\"([^\"]*)\",\"([^\"]*)\",\"[^\"]*\",\"([^\"]*)\",\"([^\"]*)\",\"([^\"]*)\",(-?[\.\d]+),(\d+),(\d+)/) { # Example: "2003-11-06 00:00:42","2003-11-06 00:00:45",SMTPI,9443,"dillon_fm@aaaaa.net","cpeltier@domain.com","","","10.0.0.16","","",0,4563,1 $MailType||='mdaemon'; my ($id)=($numrecord); if ($5 eq 'SMTPI' || $5 eq 'SMTPO') { $mail{$id}{'year'}=$1; $mail{$id}{'mon'}=$2; $mail{$id}{'day'}=$3; $mail{$id}{'time'}=$4; $mail{$id}{'direction'}=($5 eq 'SMTPI'?'in':'out'); $mail{$id}{'from'}=$6; $mail{$id}{'to'}=$7||$8; if ($5 eq 'SMTPI') { $mail{$id}{'relay_s'}=$9; $mail{$id}{'relay_r'}='-'; } if ($5 eq 'SMTPO') { $mail{$id}{'relay_s'}=$9; $mail{$id}{'relay_r'}='-'; } $mail{$id}{'code'}=1; $mail{$id}{'size'}=$13; $mail{$id}{'extinfo'}="?virus=$10&rbl=$11&heuristicspam=$12&ssl=$14"; $mail{$id}{'extinfo'}=~s/\s/_/g; $mailid=$id; } } # # Write record if all required data were found # if ($mailid) { my $code; my $to; my $delivery=0; my $canoutput=0; debug("ID:$mailid RELAY_S:".($mail{$mailid}{'relay_s'}||'')." RELAY_R:".($mail{$mailid}{'relay_r'}||'')." FROM:".($mail{$mailid}{'from'}||'')." TO:".($mail{$mailid}{'to'}||'')." CODE:".($mail{$mailid}{'code'}||'')); # Check if we can output a mail line if ($MailType eq 'qmail') { if ($mail{$mailid}{'code'} && scalar %{$mail{$mailid}{'code'}}) { # This is a hash variable foreach my $key (keys %{$mail{$mailid}{'code'}}) { $delivery=$key; $code=$mail{$mailid}{'code'}{$key}; $to=$mail{$mailid}{'to'}{$key}; } $canoutput=1; } } elsif ($MailType eq 'mdaemon') { $code=$mail{$mailid}{'code'}; $to=$mail{$mailid}{'to'}; $canoutput=1; } else { $code=$mail{$mailid}{'code'}; $to=$mail{$mailid}{'to'}; if ($mail{$mailid}{'from'} && $mail{$mailid}{'to'}) { $canoutput=1; } if ($mail{$mailid}{'from'} && $mail{$mailid}{'code'} > 1) { $canoutput=1; } if ($mailid && $mail{$mailid}{'code'} > 1) { $canoutput=1; } } # If we can if ($canoutput) { &OutputRecord($mail{$mailid}{'year'}?$mail{$mailid}{'year'}:$year,$mail{$mailid}{'mon'},$mail{$mailid}{'day'},$mail{$mailid}{'time'},$mail{$mailid}{'from'},$to,$mail{$mailid}{'relay_s'},$mail{$mailid}{'relay_r'},$code,$mail{$mailid}{'size'},$mail{$mailid}{'forwardto'},$mail{$mailid}{'extinfo'}); # Delete mail with generic unknown id (This id can by used by another mail) if ($mailid eq '999') { debug(" Delete mail for id=$mailid",3); delete $mail{$mailid}; } # Delete delivery instance for id if qmail (qmail can use same id for several mails with multiple delivery) elsif ($MailType eq 'qmail') { debug(" Delete delivery instances for mail id=$mailid and delivery id=$delivery",3); if ($delivery) { delete $mail{$mailid}{'to'}{$delivery}; delete $mail{$mailid}{'code'}{$delivery}; } } # We flush %mail if too large if (scalar keys %mail > $NBOFENTRYFOFLUSH) { debug("We reach $NBOFENTRYFOFLUSH records in %mail, so we flush mail hash array"); #foreach my $id (keys %mail) { # debug(" Delete mail for id=$id",3); # delete $mail{$id}; #} %mail=(); %qmaildelivery=(); } } } else { debug("Not interesting row"); } } #foreach my $key (keys %mail) { # print ".$key.$mail{$key}{'to'}.\n"; #} 0; awstats-7.4/tools/logresolvemerge.pl0000740000175000017500000010076012540636305015571 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # Allows you to get one unique output log file, sorted on date, # built from particular sources. # This tool is part of AWStats log analyzer but can be use # alone for any other log analyzer. # See COPYING.TXT file about AWStats GNU General Public License. #----------------------------------------------------------------------------- use strict; no strict "refs"; #use diagnostics; use POSIX qw( strftime ); #----------------------------------------------------------------------------- # Defines #----------------------------------------------------------------------------- # ENABLETHREAD --> COMMENT THIS BLOCK TO USE A THREADED VERSION my $UseThread=0; &Check_Thread_Use(); my $NbOfDNSLookupAsked = 0; my %threadarray = (); my %MyDNSTable = (); my %TmpDNSLookup = (); # ENABLETHREAD --> UNCOMMENT THIS BLOCK TO USE A THREADED VERSION #my $UseThread=1; #&Check_Thread_Use(); #my $NbOfDNSLookupAsked : shared = 0; #my %threadarray : shared = (); #my %MyDNSTable : shared = (); #my %TmpDNSLookup : shared = (); # ---------- Init variables -------- use vars qw/ $REVISION $VERSION /; $REVISION = '20140126'; $VERSION="1.2 (build $REVISION)"; use vars qw/ $NBOFLINESFORBENCHMARK /; $NBOFLINESFORBENCHMARK=8192; use vars qw/ $DIR $PROG $Extension $Debug $ShowSteps $AddFileNum $AddFileName $LastLogNum $PrintFields $MaxNbOfThread $DNSLookup $DNSCache $DirCgi $DirData $DNSLookupAlreadyDone $NbOfLinesShowsteps $AFINET $QueueCursor $StopOnFirstEof $IgnoreMissing /; $DIR=''; $PROG=''; $Extension=''; $Debug=0; $ShowSteps=0; $AddFileNum=0; $AddFileName=0; $LastLogNum=0; $PrintFields=0; $MaxNbOfThread=0; $DNSLookup=0; $DNSCache=''; $DirCgi=''; $DirData=''; $DNSLookupAlreadyDone=0; $NbOfLinesShowsteps=0; $AFINET=''; $StopOnFirstEof=0; $IgnoreMissing=0; # ---------- Init arrays -------- use vars qw/ @SkipDNSLookupFor @ParamFile @Fields /; # ---------- Init hash arrays -------- use vars qw/ %LogFileToDo %linerecord %timerecord %corrupted %QueueHostsToResolve %QueueRecords /; %LogFileToDo = %linerecord = %timerecord = %corrupted = (); %QueueHostsToResolve = %QueueRecords = (); # DRA2: the order of timerecords are kept here, each index in the array is the filerecordnumber, which # DRA2: is used as the key for the other hashes use vars qw/ @timerecordorder /; @timerecordorder = (); # ---------- External Program variables ---------- # For gzip compression my $zcat = 'gzip -cd'; my $zcat_file = '\.gz$'; # For bz2 compression my $bzcat = 'bzip2 -cd'; my $bzcat_file = '\.bz2$'; # For xz compression my $xzcat = 'xz -cd'; my $xzcat_file = '\.xz$'; #----------------------------------------------------------------------------- # Functions #----------------------------------------------------------------------------- #------------------------------------------------------------------------------ # Function: Add all files of a specific directory # Parameters: $message # Input: Directory path # Output: None # Return: Array with list of files #------------------------------------------------------------------------------ sub addDirectory { my ($dir,@list) = @_; my $dirH; opendir($dirH, $dir) || die ("Can't open '$dir'"); while ($_ = readdir($dirH) ) { if (-f "$dir/$_") { push @list, "$dir/$_"; } } closedir($dirH); return @list; } #------------------------------------------------------------------------------ # Function: Write an error message and exit # Parameters: $message # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub error { print STDERR "Error: $_[0].\n"; exit 1; } #------------------------------------------------------------------------------ # Function: Write a debug message # Parameters: $message # Input: $Debug # Output: None # Return: None #------------------------------------------------------------------------------ sub debug { my $level = $_[1] || 1; if ($Debug >= $level) { my $debugstring = $_[0]; print "DEBUG $level - ".localtime(time())." : $debugstring\n"; } } #------------------------------------------------------------------------------ # Function: Write a warning message # Parameters: $message # Input: $Debug # Output: None # Return: None #------------------------------------------------------------------------------ sub warning { my $messagestring=shift; if ($Debug) { debug("$messagestring",1); } print STDERR "$messagestring\n"; } #----------------------------------------------------------------------------- # Function: Return 1 if string contains only ascii chars # Input: String # Return: 0 or 1 #----------------------------------------------------------------------------- sub IsAscii { my $string=shift; if ($Debug) { debug("IsAscii($string)",5); } if ($string =~ /^[\w\+\-\/\\\.%,;:=\"\'&?!\s]+$/) { if ($Debug) { debug(" Yes",5); } return 1; # Only alphanum chars (and _) or + - / \ . % , ; : = " ' & ? space \t } if ($Debug) { debug(" No",5); } return 0; } #----------------------------------------------------------------------------- # DRA Function: Return 1 if DNS lookup should be skipped # Input: String # Return: 0 or 1 #----------------------------------------------------------------------------- sub SkipDNSLookup { foreach my $match (@SkipDNSLookupFor) { if ($_[0] =~ /$match/i) { return 1; } } 0; # Not in @SkipDNSLookupFor } #----------------------------------------------------------------------------- # Function: Function that wait for DNS lookup (can be threaded) # Input: String # Return: 0 or 1 #----------------------------------------------------------------------------- sub MakeDNSLookup { my $ipaddress=shift; $NbOfDNSLookupAsked++; use Socket; $AFINET=AF_INET; my $tid=0; $tid=$MaxNbOfThread?eval("threads->self->tid()"):0; if ($Debug) { debug(" ***** Thread id $tid: MakeDNSlookup started (for $ipaddress)",4); } my $lookupresult=gethostbyaddr(pack("C4",split(/\./,$ipaddress)),$AFINET); # This is very slow, may took 20 seconds if (! $lookupresult || $lookupresult =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ || ! IsAscii($lookupresult)) { $TmpDNSLookup{$ipaddress}='*'; } else { $TmpDNSLookup{$ipaddress}=$lookupresult; } if ($Debug) { debug(" ***** Thread id $tid: MakeDNSlookup done ($ipaddress resolved into $TmpDNSLookup{$ipaddress})",4); } delete $threadarray{$ipaddress}; return; } #----------------------------------------------------------------------------- # Function: WriteRecordsReadyInQueue # Input: - # Return: 0 #----------------------------------------------------------------------------- sub WriteRecordsReadyInQueue { my $logfilechosen=shift; if ($Debug) { debug("Check head of queue to write records ready to flush (QueueCursor=$QueueCursor, QueueSize=".(scalar keys %QueueRecords).")",4); } while ( $QueueHostsToResolve{$QueueCursor} && ( ($QueueHostsToResolve{$QueueCursor} eq '*') || ($MyDNSTable{$QueueHostsToResolve{$QueueCursor}}) || ($TmpDNSLookup{$QueueHostsToResolve{$QueueCursor}}) ) ) { # $QueueCursor point to a ready record if ($QueueHostsToResolve{$QueueCursor} eq '*') { if ($Debug) { debug(" First elem in queue is ready. No change on it. We pull it.",4); } } else { if ($MyDNSTable{$QueueHostsToResolve{$QueueCursor}}) { if ($MyDNSTable{$QueueHostsToResolve{$QueueCursor}} ne '*') { $QueueRecords{$QueueCursor}=~s/$QueueHostsToResolve{$QueueCursor}/$MyDNSTable{$QueueHostsToResolve{$QueueCursor}}/; if ($Debug) { debug(" First elem in queue has been resolved (found in MyDNSTable $MyDNSTable{$QueueHostsToResolve{$QueueCursor}}). We pull it.",4); } } } elsif ($TmpDNSLookup{$QueueHostsToResolve{$QueueCursor}}) { if ($TmpDNSLookup{$QueueHostsToResolve{$QueueCursor}} ne '*') { $QueueRecords{$QueueCursor}=~s/$QueueHostsToResolve{$QueueCursor}/$TmpDNSLookup{$QueueHostsToResolve{$QueueCursor}}/; if ($Debug) { debug(" First elem in queue has been resolved (found in TmpDNSLookup $TmpDNSLookup{$QueueHostsToResolve{$QueueCursor}}). We pull it.",4); } } } } # Record is ready, we output it. if ($AddFileNum) { print "$logfilechosen "; } if ($AddFileName) { print "$LogFileToDo{$logfilechosen} "; } # see if we need to dump fields if ($PrintFields && $LastLogNum != $logfilechosen){ print($Fields[$logfilechosen]."\n"); $LastLogNum = $logfilechosen; } print "$QueueRecords{$QueueCursor}\n"; delete $QueueRecords{$QueueCursor}; delete $QueueHostsToResolve{$QueueCursor}; $QueueCursor++; } return 0; } #----------------------------------------------------------------------------- # Function: Check if thread are enabled or not # Input: - # Return: - #----------------------------------------------------------------------------- sub Check_Thread_Use { if ($] >= 5.008) { for (0..@ARGV-1) { if ($ARGV[$_] =~ /^-dnslookup[:=](\d{1,2})/i) { if ($UseThread) { if (!eval ('require "threads.pm";')) { &error("Failed to load perl module 'threads' required for multi-threaded DNS lookup".($@?": $@":"")); } if (!eval ('require "threads/shared.pm";')) { &error("Failed to load perl module 'threads::shared' required for multi-threaded DNS lookup".($@?": $@":"")); } } else { &error("Multi-thread is disabled in default version of this script.\nYou must manually edit the file '$0' to comment/uncomment all\nlines marked with 'ENABLETHREAD' string to enable multi-threading"); } } } } } #----------------------------------------------------------------------------- # MAIN #----------------------------------------------------------------------------- ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; # Get parameters (Note: $MaxNbOfThread is already known my $cpt=1; for (0..@ARGV-1) { if ($ARGV[$_] =~ /^-/) { if ($ARGV[$_] =~ /debug=(\d)/i) { $Debug=$1; } elsif ($ARGV[$_] =~ /dnscache=/i) { $DNSLookup||=2; $DNSCache=$ARGV[$_]; $DNSCache =~ s/-dnscache=//; } elsif ($ARGV[$_] =~ /dnslookup[:=](\d{1,2})/i) { $DNSLookup||=1; $MaxNbOfThread=$1; } elsif ($ARGV[$_] =~ /dnslookup/i) { $DNSLookup||=1; } elsif ($ARGV[$_] =~ /showsteps/i) { $ShowSteps=1; } elsif ($ARGV[$_] =~ /addfilenum/i) { $AddFileNum=1; } elsif ($ARGV[$_] =~ /addfilename/i) { $AddFileName=1; } elsif ($ARGV[$_] =~ /stoponfirsteof/i) { $StopOnFirstEof=1; } elsif ($ARGV[$_] =~ /printfields/i) { $PrintFields=1; } elsif ($ARGV[$_] =~ /ignoremissing/i) { $IgnoreMissing=1; } else { print "Unknown argument $ARGV[$_] ignored\n"; } } elsif ($ARGV[$_] =~ /addfolder=(.*)$/i) { @ParamFile = addDirectory($1, @ParamFile); } else { push @ParamFile, $ARGV[$_]; $cpt++; } } if ($Debug) { $|=1; } if ($Debug) { debug(ucfirst($PROG)." - $VERSION - Perl $^X $]",1); debug("DNSLookup=$DNSLookup"); debug("DNSCache=$DNSCache"); debug("MaxNbOfThread=$MaxNbOfThread"); } # Disallow MaxNbOfThread and Perl < 5.8 if ($] < 5.008 && $MaxNbOfThread) { error("Multi-threaded DNS lookup is only supported with Perl 5.8 or higher (not $]). Use -dnslookup option instead"); } # Warning, there is a memory hole in ActiveState perl version (in delete functions) if ($^X =~ /activestate/i || $^X =~ /activeperl/i) { # TODO Add a warning } if (scalar @ParamFile == 0) { print "----- $PROG $VERSION (c) Laurent Destailleur -----\n"; print "$PROG allows you to get one unique output log file, sorted on date,\n"; print "built from particular sources:\n"; print " - It can read several input log files,\n"; print " - It can read .gz/.bz2/.xz log files,\n"; print " - It can also makes a fast reverse DNS lookup to replace\n"; print " all IP addresses into host names in resulting log file.\n"; print "$PROG comes with ABSOLUTELY NO WARRANTY. It's a free software\n"; print "distributed with a GNU General Public License (See COPYING.txt file).\n"; print "$PROG is part of AWStats but can be used alone as a log merger\n"; print "or resolver before using any other log analyzer.\n"; print "\n"; print "Usage:\n"; print " $PROG.$Extension [options] file\n"; print " $PROG.$Extension [options] file1 ... filen\n"; print " $PROG.$Extension [options] *.*\n"; print " $PROG.$Extension [options] addfolder=dirname\n"; print " perl $PROG.$Extension [options] *.* > newfile\n"; print "Options:\n"; print " -dnslookup make a reverse DNS lookup on IP adresses\n"; print " -dnslookup=n same with a n parallel threads instead of serial requests\n"; print " -dnscache=file make DNS lookup from cache file first before network lookup\n"; print " -showsteps print on stderr benchmark information every $NBOFLINESFORBENCHMARK lines\n"; print " -addfilenum if used with several files, file number can be added in first\n"; print " -addfilename if used with several files, file name can be added in first\n"; print " field of output file. This can be used to add a cluster id\n"; print " when log files come from several load balanced computers.\n"; print " -stoponfirsteof Stop processing when any logfile reaches end-of-file.\n"; print " -printfields For IIS or W3C logs, prints the latest field header for\n"; print " the currentlog file when switching between log file entries\n"; print " so that the parsercan automatically determine which fields\n"; print " are avaiable.\n"; print " -ignoremissing will not fail if a log file is missing\n"; print "\n"; print "This runs $PROG in command line to open one or several\n"; print "server log files to merge them (sorted on date) and/or to make a reverse\n"; print "DNS lookup (if asked). The result log file is sent on standard output.\n"; print "Note: $PROG is not a 'sort' tool to sort one file. It's a\n"; print "software able to output sorted log records (with a reverse DNS lookup\n"; print "included or not) even if log records are dispatched in several files.\n"; print "Each of thoose files must be already independently sorted itself\n"; print "(but that is the case in all web server log files). So you can use it\n"; print "for load balanced log files or to group several old log files.\n"; print "\n"; print "Don't forget that the main goal of logresolvemerge is to send log records to\n"; print "a log analyzer in a sorted order without merging files on disk (NO NEED\n"; print "OF DISK SPACE AT ALL) and without loading files into memory (NO NEED\n"; print "OF MORE MEMORY). Choose of output records is done on the fly.\n"; print "\n"; print "So logresolvemerge is particularly usefull when you want to output several\n"; print "and/or large log files in a fast process, with no use of disk or\n"; print "more memory, and in a chronological order through a pipe (to be used by a log\n"; print "analyzer).\n"; print "\n"; print "Note: If input records are not 'exactly' sorted but 'nearly' sorted (this\n"; print "occurs with heavy servers), this is not a problem, the output will also\n"; print "be 'nearly' sorted but a few log analyzers (like AWStats) knowns how to deal\n"; print "with such logs.\n"; print "\n"; print "WARNING: If log files are old MAC text files (lines ended with CR char), you\n"; print "can't run this tool on Win or Unix platforms.\n"; print "\n"; print "WARNING: Because of memory holes in ActiveState Perl version, use another\n"; print "Perl interpreter if you need to process large log files.\n"; print "\n"; print "Now supports/detects:\n"; print " Automatic detection of log format\n"; print " Files can be .gz/.bz2/.xz files if gzip/bzip2/xz tools are available in PATH.\n"; print " Multithreaded reverse DNS lookup (several parallel requests) with Perl 5.8+.\n"; print "New versions and FAQ at http://www.awstats.org\n"; exit 0; } # Get current time my $nowtime=time; my ($nowsec,$nowmin,$nowhour,$nowday,$nowmonth,$nowyear) = localtime($nowtime); if ($nowyear < 100) { $nowyear+=2000; } else { $nowyear+=1900; } my $nowsmallyear=$nowyear;$nowsmallyear =~ s/^..//; if (++$nowmonth < 10) { $nowmonth = "0$nowmonth"; } if ($nowday < 10) { $nowday = "0$nowday"; } if ($nowhour < 10) { $nowhour = "0$nowhour"; } if ($nowmin < 10) { $nowmin = "0$nowmin"; } if ($nowsec < 10) { $nowsec = "0$nowsec"; } # Get tomorrow time (will be used to discard some record with corrupted date (future date)) my ($tomorrowsec,$tomorrowmin,$tomorrowhour,$tomorrowday,$tomorrowmonth,$tomorrowyear) = localtime($nowtime+86400); if ($tomorrowyear < 100) { $tomorrowyear+=2000; } else { $tomorrowyear+=1900; } my $tomorrowsmallyear=$tomorrowyear;$tomorrowsmallyear =~ s/^..//; if (++$tomorrowmonth < 10) { $tomorrowmonth = "0$tomorrowmonth"; } if ($tomorrowday < 10) { $tomorrowday = "0$tomorrowday"; } if ($tomorrowhour < 10) { $tomorrowhour = "0$tomorrowhour"; } if ($tomorrowmin < 10) { $tomorrowmin = "0$tomorrowmin"; } if ($tomorrowsec < 10) { $tomorrowsec = "0$tomorrowsec"; } my $timetomorrow=$tomorrowyear.$tomorrowmonth.$tomorrowday.$tomorrowhour.$tomorrowmin.$tomorrowsec; # Init other parameters $NBOFLINESFORBENCHMARK--; if ($ENV{"GATEWAY_INTERFACE"}) { $DirCgi=''; } if ($DirCgi && !($DirCgi =~ /\/$/) && !($DirCgi =~ /\\$/)) { $DirCgi .= '/'; } if (! $DirData || $DirData eq '.') { $DirData=$DIR; } # If not defined or choosed to "." value then DirData is current dir if (! $DirData) { $DirData='.'; } # If current dir not defined then we put it to "." $DirData =~ s/\/$//; #my %monthlib = ( "01","$Message[60]","02","$Message[61]","03","$Message[62]","04","$Message[63]","05","$Message[64]","06","$Message[65]","07","$Message[66]","08","$Message[67]","09","$Message[68]","10","$Message[69]","11","$Message[70]","12","$Message[71]" ); # monthnum must be in english because it's used to translate log date in apache log files which are always in english my %monthnum = ( "Jan","01","jan","01","Feb","02","feb","02","Mar","03","mar","03","Apr","04","apr","04","May","05","may","05","Jun","06","jun","06","Jul","07","jul","07","Aug","08","aug","08","Sep","09","sep","09","Oct","10","oct","10","Nov","11","nov","11","Dec","12","dec","12" ); if ($DNSCache) { if ($Debug) { debug("Load DNS Cache file $DNSCache",2); } open(CACHE, "<$DNSCache") or error("Can't open cache file $DNSCache"); while () { my ($time, $ip, $name) = split; if ($ip && $name) { $name="$ip" if $name eq '*'; $MyDNSTable{$ip}=$name; } } close CACHE; } #----------------------------------------------------------------------------- # PROCESSING CURRENT LOG(s) #----------------------------------------------------------------------------- my $NbOfLinesRead=0; my $NbOfLinesParsed=0; my $logfilechosen=0; my $starttime=time(); # Define the LogFileToDo list $cpt=1; foreach my $key (0..(@ParamFile-1)) { if ($ParamFile[$key] !~ /\*/ && $ParamFile[$key] !~ /\?/) { if ($Debug) { debug("DBG1 Log file $ParamFile[$key] is added to LogFileToDo with number $cpt."); } # Check for supported compression if ($ParamFile[$key] =~ /$zcat_file/) { if ($Debug) { debug("GZIP compression detected for Log file $ParamFile[$key]."); } # Modify the name to include the zcat command $ParamFile[$key] = $zcat . ' ' . $ParamFile[$key] . ' |'; } elsif ($ParamFile[$key] =~ /$bzcat_file/) { if ($Debug) { debug("BZ2 compression detected for Log file $ParamFile[$key]."); } # Modify the name to include the bzcat command $ParamFile[$key] = $bzcat . ' ' . $ParamFile[$key] . ' |'; } elsif ($ParamFile[$key] =~ /$xzcat_file/) { if ($Debug) { debug("XZ compression detected for Log file $ParamFile[$key]."); } # Modify the name to include the xzcat command $ParamFile[$key] = $xzcat . ' ' . $ParamFile[$key] . ' |'; } $LogFileToDo{$cpt}=@ParamFile[$key]; $cpt++; } else { my $DirFile=$ParamFile[$key]; $DirFile =~ s/([^\/\\]*)$//; $ParamFile[$key] = $1; if ($DirFile eq '') { $DirFile = '.'; } $ParamFile[$key] =~ s/\./\\\./g; $ParamFile[$key] =~ s/\*/\.\*/g; $ParamFile[$key] =~ s/\?/\./g; if ($Debug) { debug("Search for file \"$ParamFile[$key]\" into \"$DirFile\""); } opendir(DIR,"$DirFile"); my @filearray = sort readdir DIR; close DIR; foreach my $i (0..$#filearray) { if ("$filearray[$i]" =~ /^$ParamFile[$key]$/ && "$filearray[$i]" ne "." && "$filearray[$i]" ne "..") { if ($Debug) { debug("DBG2 Log file $filearray[$i] is added to LogFileToDo with number $cpt."); } # Check for supported compression if ($filearray[$i] =~ /$zcat_file/) { if ($Debug) { debug("GZIP compression detected for Log file $filearray[$i]."); } # Modify the name to include the zcat command $LogFileToDo{$cpt}=$zcat . ' ' . "$DirFile/$filearray[$i]" . ' |'; } elsif ($filearray[$i] =~ /$bzcat_file/) { if ($Debug) { debug("BZ2 compression detected for Log file $filearray[$i]."); } # Modify the name to include the bzcat command $LogFileToDo{$cpt}=$bzcat . ' ' . "$DirFile/$filearray[$i]" . ' |'; } elsif ($filearray[$i] =~ /$xzcat_file/) { if ($Debug) { debug("XZ compression detected for Log file $filearray[$i]."); } # Modify the name to include the xzcat command $LogFileToDo{$cpt}=$xzcat . ' ' . "$DirFile/$filearray[$i]" . ' |'; } else { $LogFileToDo{$cpt}="$DirFile/$filearray[$i]"; } $cpt++; } } } } # If no files to process if (scalar keys %LogFileToDo == 0) { error("No input log file found"); } # Open all log files if ($Debug) { debug("Start of processing ".(scalar keys %LogFileToDo)." log file(s), $MaxNbOfThread threads max"); } foreach my $logfilenb (keys %LogFileToDo) { if ($Debug) { debug("Open log file number $logfilenb: \"$LogFileToDo{$logfilenb}\""); } if ($IgnoreMissing){ if (!open("LOG$logfilenb","$LogFileToDo{$logfilenb}")){ debug("Couldn't open log file \"$LogFileToDo{$logfilenb}\" : $!"); delete $LogFileToDo{$logfilenb}; } }else{ open("LOG$logfilenb","$LogFileToDo{$logfilenb}") || error("Couldn't open log file \"$LogFileToDo{$logfilenb}\" : $!"); } binmode "LOG$logfilenb"; # To avoid pb of corrupted text log files with binary chars. } $QueueCursor=1; STOPONFIRSTEOF: while (1 == 1) { # BEGIN Read new record # For each log file if logfilechosen is 0 # If not, we go directly to log file instead of iterating over all keys for a match #---------------------------------------------------------------------------------- my @readlist; if($logfilechosen == 0) { @readlist = keys %LogFileToDo; } else { @readlist = ($logfilechosen); } foreach my $logfilenb (@readlist) { if ($Debug) { debug("Search next record in file number $logfilenb",3); } # Read chosen log file until we found a record with good date or reaching end of file while (1 == 1) { my $LOG="LOG$logfilenb"; $_=<$LOG>; # Read new line if (! $_) { # No more records in log file number $logfilenb if ($Debug) { debug(" No more records in file number $logfilenb",2); } delete $LogFileToDo{$logfilenb}; if ($StopOnFirstEof) { if ($Debug) { debug("Exiting loop due to EOF of logfile $logfilenb",1); } last STOPONFIRSTEOF; } last; } # Get the latest Fields header for printing IIS and W3C logs if ($PrintFields && $_ =~ m/#Fields:/){ my $field = $_; # strip whitespace $field =~ s/^\s+|\s+$//g; if (!$Fields[$logfilenb] || $field != $Fields[$logfilenb]){ $Fields[$logfilenb] = $field; debug("Found new fields in $logfilenb: $Fields[$logfilenb]"); } } $NbOfLinesRead++; chomp $_; s/\r$//; if (/^#/) { next; } # Ignore comment lines (ISS writes such comments) if (/^!!/) { next; } # Ignore comment lines (Webstar writes such comments) if (/^$/) { next; } # Ignore blank lines (With ISS: happens sometimes, with Apache: possible when editing log file) $linerecord{$logfilenb}=$_; # Check filters #---------------------------------------------------------------------- # Split YYYY-MM-DD HH:MM:SS # or DD/Month/YYYY:HH:MM:SS # or MM/DD/YY\tHH:MM:SS # or 9999.999 # or Month DD HH:MM:SS my $year=0; my $month=0; my $day=0; my $hour=0; my $minute=0; my $second=0; if ($_ =~ /(\d\d\d\d)-(\d\d)-(\d\d)\s(\d\d):(\d\d):(\d\d)/) { $year=$1; $month=$2; $day=$3; $hour=$4; $minute=$5; $second=$6; } elsif ($_ =~ /\[(\d?\d)[\/:\s](\w+)[\/:\s](\d\d\d\d)[\/:\s](\d\d)[\/:\s](\d\d)[\/:\s](\d\d) /) { $year=$3; $month=$2; $day=$1; $hour=$4; $minute=$5; $second=$6; } elsif ($_ =~ /\w+ (\w+) {1,2}(\d?\d) (\d\d)[\/:\s](\d\d)[\/:\s](\d\d) (\d\d\d\d)/) { $year=$6; $month=$1; $day=$2; $hour=$3; $minute=$4; $second=$5; } elsif ($_ =~ /^(\d\d\d\d+\.\d\d\d) /) { my $timetime = strftime('%Y-%m-%d-%T', gmtime($1)); $timetime =~ /(\d\d\d\d)-(\d\d)-(\d\d)-(\d\d):(\d\d):(\d\d)/; $year=$1; $month=$2; $day=$3; $hour=$4; $minute=$5; $second=$6; } elsif ($_ =~ /(\w+)\s\s?(\d?\d) (\d\d):(\d\d):(\d\d) /) { # Month DD HH:MM:SS $month=$1; $day=$2; $hour=$3; $minute=$4; $second=$5; if (($monthnum{$month}>$monthnum{$nowmonth}) || ($monthnum{$month}==$monthnum{$nowmonth} && $day>$nowday)) { $year=$nowyear-1; } else { $year=$nowyear; } } if (length $day == 1) { $day = "0".$day; } if ($monthnum{$month}) { $month=$monthnum{$month}; } # Change lib month in num month if necessary # Create $timerecord like YYYYMMDDHHMMSS $timerecord{$logfilenb}=int("$year$month$day$hour$minute$second"); if ($timerecord{$logfilenb}<10000000000000) { if ($Debug) { debug(" This record is corrupted (no date found)",3); } $corrupted{$logfilenb}++; next; } if ($Debug) { debug(" This is next record for file $logfilenb : timerecord=$timerecord{$logfilenb}",3); } # Sort and insert into timerecordorder, oldest at end/back of array # At the beginning, timerecordorder is empty. Then beceause the first pass is # a loop on each file to read each first line, the timerecordorder size is # number of input files. # After, each new loop, read only one new line, so timerecordorder size increase # by one but decrease just after by the pop command later. my $inserted=0; for(my $c=$#timerecordorder; $c>=0 ; $c--) { if($timerecord{$logfilenb} <= $timerecord{$timerecordorder[$c]}) { # Is older or equal than index at $c, add after $timerecordorder[$c + 1]=$logfilenb; $inserted = 1; last; } else { $timerecordorder[$c + 1]=$timerecordorder[$c]; } } if(! $inserted) { $timerecordorder[0] = $logfilenb; } last; } } # END Read new lines for each log file. After this, following var are filled # $timerecord{$logfilenb} # @timerecordorder array # We choose which record of which log file to process if ($Debug) { debug("Choose which record of which log file to process",3); } $logfilechosen=pop(@timerecordorder); if(!defined($logfilechosen)) { last; } # No more record to process # Record is chosen if ($Debug) { debug(" We choosed to qualify record of file number $logfilechosen",3); } if ($Debug) { debug(" Record is $linerecord{$logfilechosen}",3); } # Record is approved. We found a new line to parse in file number $logfilechosen #------------------------------------------------------------------------------- $NbOfLinesParsed++; if ($ShowSteps) { if ((++$NbOfLinesShowsteps & $NBOFLINESFORBENCHMARK) == 0) { my $delay=(time()-$starttime)||1; print STDERR "$NbOfLinesParsed lines processed (".(1000*$delay)." ms, ".int($NbOfLinesShowsteps/$delay)." lines/seconds)\n"; } } # Do DNS lookup #-------------------- my $Host=''; my $ip=0; if ($DNSLookup) { # DNS lookup is 1 or 2 if ($linerecord{$logfilechosen} =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) { $ip=4; $Host=$1; } # IPv4 elsif ($linerecord{$logfilechosen} =~ /([0-9A-F]*:)/i) { $ip=6; $Host=$1; } # IPv6 if ($ip) { # Check in static DNS cache file if ($MyDNSTable{$Host}) { if ($Debug) { debug(" DNS lookup asked for $Host and found in static DNS cache file: $MyDNSTable{$Host}",4); } } elsif ($DNSLookup==1) { # Check in session cache (dynamic DNS cache file + session DNS cache) if (! $threadarray{$Host} && ! $TmpDNSLookup{$Host}) { if (@SkipDNSLookupFor && &SkipDNSLookup($Host)) { $TmpDNSLookup{$Host}='*'; if ($Debug) { debug(" No need of reverse DNS lookup for $Host, skipped at user request.",4); } } else { if ($ip == 4) { # Create or not a new thread if ($MaxNbOfThread) { if (! $threadarray{$Host}) { # No thread already launched for $Host while ((scalar keys %threadarray) >= $MaxNbOfThread) { if ($Debug) { debug(" $MaxNbOfThread thread running reached, so we wait",4); } sleep 1; } $threadarray{$Host}=1; # Semaphore to tell thread for $Host is active # my $t = new Thread \&MakeDNSLookup, $Host; my $t = threads->create(sub { MakeDNSLookup($Host) }); if (! $t) { error("Failed to create new thread"); } if ($Debug) { debug(" Reverse DNS lookup for $Host queued in thread ".$t->tid,4); } $t->detach(); # We don't need to keep return code } else { if ($Debug) { debug(" Reverse DNS lookup for $Host already queued in a thread"); } } # Here, this is the only way, $TmpDNSLookup{$Host} can be not defined } else { &MakeDNSLookup($Host); if ($Debug) { debug(" Reverse DNS lookup for $Host done: $TmpDNSLookup{$Host}",4); } } } elsif ($ip == 6) { $TmpDNSLookup{$Host}='*'; if ($Debug) { debug(" Reverse DNS lookup for $Host not available for IPv6",4); } } } } else { if ($Debug) { debug(" Reverse DNS lookup already queued or done for $Host: $TmpDNSLookup{$Host}",4); } } } else { if ($Debug) { debug(" DNS lookup by static DNS cache file asked for $Host but not found.",4); } } } else { if ($Debug) { debug(" DNS lookup asked for $Host but this is not an IP address.",4); } $DNSLookupAlreadyDone=$LogFileToDo{$logfilechosen}; } } else { if ($linerecord{$logfilechosen} =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) { $ip=4; $Host=$1; } # IPv4 elsif ($linerecord{$logfilechosen} =~ /([0-9A-F]*:)/i) { $ip=6; $Host=$1; } # IPv6 if ($Debug) { debug(" No DNS lookup asked.",4); } } # Put record in record queue if ($Debug) { debug("Add record $NbOfLinesParsed in record queue (with host to resolve = ".($Host?$Host:'*').")",4); } $QueueRecords{$NbOfLinesParsed}=$linerecord{$logfilechosen}; # Put record in host queue # If there is a host to resolve, we add line to queue with value of host to resolve # $Host is '' (no ip found) or is ip if ($DNSLookup==0) { $QueueHostsToResolve{$NbOfLinesParsed}='*'; } if ($DNSLookup==1) { $QueueHostsToResolve{$NbOfLinesParsed}=$Host?$Host:'*'; } if ($DNSLookup==2) { $QueueHostsToResolve{$NbOfLinesParsed}=$MyDNSTable{$Host}?$Host:'*'; } # Print all records in head of queue that are ready &WriteRecordsReadyInQueue($logfilechosen); } # End of processing new record. Loop on next one. if ($Debug) { debug("End of processing log file(s)"); } # Close all log files foreach my $logfilenb (keys %LogFileToDo) { if ($Debug) { debug("Close log file number $logfilenb"); } close("LOG$logfilenb") || error("Command for pipe '$LogFileToDo{$logfilenb}' failed"); } while ( $QueueHostsToResolve{$QueueCursor} && $QueueHostsToResolve{$QueueCursor} ne '*' && ! $MyDNSTable{$QueueHostsToResolve{$QueueCursor}} && ! $TmpDNSLookup{$QueueHostsToResolve{$QueueCursor}} ) { sleep 1; # Print all records in head of queue that are ready &WriteRecordsReadyInQueue($logfilechosen); } # Waiting queue is empty if ($MaxNbOfThread) { foreach my $t (threads->list()) { if ($Debug) { debug("Join thread $t"); } $t->join(); } } # DNSLookup warning if ($DNSLookup==1 && $DNSLookupAlreadyDone) { warning("Warning: $PROG has detected that some host names were already resolved in your logfile $DNSLookupAlreadyDone.\nIf DNS lookup was already made by the logger (web server) in ALL your log files, you should not use -dnslookup option to increase $PROG speed."); } if ($Debug) { debug("Total nb of read lines: $NbOfLinesRead"); debug("Total nb of parsed lines: $NbOfLinesParsed"); debug("Total nb of DNS lookup asked: $NbOfDNSLookupAsked"); } #if ($DNSCache) { # open(CACHE, ">$DNSCache") or die; # foreach (keys %TmpDNSLookup) { # $TmpDNSLookup{$_}="*" if $TmpDNSLookup{$_} eq "ip"; # print CACHE "0\t$_\t$TmpDNSLookup{$_}\n"; # } # close CACHE; #} 0; # Do not remove this line awstats-7.4/tools/webmin/0000750000175000017500000000000012551203300013271 5ustar skskawstats-7.4/tools/webmin/awstats-2.0.wbm0000640000175000017500000055000012551203252015772 0ustar skskawstats/0000777000175000017500000000000012410217071014507 5ustar ldestailleurldestailleurawstats/config.info0000644000175000017500000000264012410217071016627 0ustar ldestailleurldestailleurawstats=Absolute filesystem path to AWStats update statistics command
    (Example:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0 awstats_cgi=Absolute or relative URL path to AWStats CGI (Example:/awstats/awstats.pl),0 alt_conf=Sample AWStats configuration file,3,/etc/awstats/awstats.model.conf plugin_1_geoip=Path for Maxmind GeoIP country database file
    (if AWStats geoip plugin is enabled),3,/usr/local/share/GeoIP/GeoIP.dat plugin_2_geoip_region_maxmind=Path for Maxmind GeoIP region database file
    (if AWStats geoip_region_maxmind plugin is enabled),3,/usr/local/share/GeoIP/GeoIPRegion.dat plugin_3_geoip_city_maxmind=Path for Maxmind GeoIP city database file
    (if AWStats geoip_city_maxmind plugin is enabled),3,/usr/local/share/GeoIP/GeoIPCity.dat plugin_4_geoip_isp_maxmind=Path for Maxmind GeoIP isp database file
    (if AWStats geoip_isp_maxmind plugin is enabled),3,/usr/local/share/GeoIP/GeoIPISP.dat plugin_5_geoip_org_maxmind=Path for Maxmind GeoIP org database file
    (if AWStats geoip_org_maxmind plugin is enabled),3,/usr/local/share/GeoIP/GeoIPOrg.dat awstats/help.cgi0000644000175000017500000000304512410217071016121 0ustar ldestailleurldestailleur#!/usr/bin/perl # help.cgi # Show help for a config parameter require './awstats-lib.pl'; &ReadParse(); # Display file contents &header($title || $text{'help_title'}, "", undef, 0, 1, 1); print "
    \n"; my $helpparam=$in{'param'}; my $isplugin=0; if ($helpparam =~ s/^plugin_//) { $isplugin=1; } if ($isplugin) { print &text('help_subtitleplugin',$helpparam)."

    \n"; } else { print &text('help_subtitle',$helpparam)."

    \n"; } open(CONF, $config{'alt_conf'}) || &error("Failed to open sample config file"); my $output=""; my $savoutput=""; my $found=0; while() { chomp $_; s/\r//; my $line="$_"; if ($line !~ /#LoadPlugin/i && $line =~ s/^#//) { if ($line =~ /-----------------/) { if ($output) { $savoutput=$output; } $output=""; next; } $line =~ s//>/g; $output.="$line
    "; } else { # Remove comments $_ =~ s/\s#.*$//; # Extract param and value my ($param,$value)=split(/=/,$_,2); $param =~ s/^\s+//; $param =~ s/\s+$//; if (defined($param) && defined($value)) { if ((! $isplugin && $param =~ /$helpparam/i) || ($isplugin && $value =~ /$helpparam/i)) { $found=1; last; } else { if ($output) { $savoutput=$output; } $output=""; } } } } close(CONF); if ($found) { if ($output) { print "$output\n"; } else { print "$savoutput"; } } else { print &text('help_notfound',$config{'alt_conf'}); # print "Parameter not found in your sample file $config{'alt_conf'}.\nMay be your AWStats version does not support it, so no help is available."; } 0; awstats/update_stats.cgi0000644000175000017500000000161212410217071017667 0ustar ldestailleurldestailleur#!/usr/bin/perl # update_stats.cgi # Run AWStats update process require './awstats-lib.pl'; &ReadParse(); if (! $access{'update'}) { &error($text{'update_ecannot'}); } my $conf=""; my $dir=""; if ($in{'file'} =~ /awstats\.(.*)\.conf$/) { $conf=$1; } if ($in{'file'} =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; } # Display file contents &header($title || $text{'update_title'}, ""); print "
    \n"; my $command=$config{'awstats'}." -update -config=$conf -configdir=$dir"; print $text{'update_run'}.":\n
    \n"; print "$command
    \n"; print $text{'update_wait'}."...
    \n"; print "
    \n"; &foreign_require("proc", "proc-lib.pl"); proc::safe_process_exec_logged($command,$config{'user'},undef, STDOUT,undef, 1, 1, 0); #$retour=`$command 2>&1`; #print "$retour\n"; print "
    \n"; print $text{'update_finished'}.".
    \n"; print "
    \n"; # Back to config list &footer("", $text{'index_return'}); 0; awstats/save_config.cgi0000644000175000017500000000725012410217071017456 0ustar ldestailleurldestailleur#!/usr/bin/perl # save_config.cgi # Save, create or delete options for a config file require './awstats-lib.pl'; &foreign_require("cron", "cron-lib.pl"); &ReadParse(); &error_setup($text{'save_err'}); if (! $in{'file'}) { $in{'file'}=$in{'new'}; } if ($in{'new'} && ! $access{'add'}) { &error($text{'edit_ecannot'}); } if (! $in{'new'} && $access{'edit'}) { &error($text{'edit_ecannot'}); } if ($in{'view'}) { my $dir=$in{'file'}; $dir =~ s/[\\\/][^\\\/]+$//; if (! $dir) { $dir="/etc/awstats"; } &can_edit_config($in{'file'}) || &error($text{'edit_efilecannot'}." ".$in{'file'}); # Re-direct to the view page &redirect("view_config.cgi/".&urlize(&urlize($in{'file'}))."/index.html"); } elsif ($in{'delete'}) { my $dir=$in{'file'}; $dir =~ s/[\\\/][^\\\/]+$//; if (! $dir) { $dir="/etc/awstats"; } &can_edit_config($in{'file'}) || &error($text{'edit_efilecannot'}." ".$in{'file'}); # Delete this config file from the configuration local $cfile = $in{'file'}; local $cfileold = $in{'file'}.".old"; &lock_file($cfile); unlink($cfile); &unlock_file($cfile); &lock_file($cfileold); unlink($cfileold); &unlock_file($cfileold); &webmin_log("delete", "log", $cfile); # Create or delete the cron job # &lock_file($job->{'file'}); # &foreign_call("cron", "delete_cron_job", $job); # &unlock_file($job->{'file'}); } else { # Validate and store inputs. $in{'new'} is new file to create or update. if (!$in{'new'} && !$in{'file'}) { &error($text{'save_efile'}); } my $dir=$in{'file'}; $dir =~ s/[\\\/][^\\\/]+$//; if (! $dir) { $dir="/etc/awstats"; } if (! &can_edit_config($dir)) { &error(&text('save_edir',"$dir")."
    \n".&text('index_changeallowed',"Menu Webmin - Utilisateurs Webmin puis clic sur $text{'index_title'}")."
    \n"); } if ($in{'new'} && -r $in{'$file'}) { &error($text{'save_fileexists'}); } if (! -d $dir) { &error($text{'save_dirnotexists'}); } my $modelconf=$config{'alt_conf'}; # If create by copy if ($in{'new'} && $in{'create_mode'} eq 'by_copy') { $modelconf=$in{'file_to_copy'}; $in{'new'} =~ s/([^\\\/]+)$//; my $to=$1; if (! $modelconf || ! -r $modelconf) { &error('You must choose a config to copy'); } # Add a new config file &system_logged("cp '$modelconf' '$dir/$to'"); } else { %conf=(); foreach my $key (keys %in) { if ($key eq 'file') { next; } if ($key eq 'new') { next; } if ($key eq 'submit') { next; } if ($key eq 'oldfile') { next; } $conf{$key} = $in{$key}; if ($conf{key} ne ' ') { $conf{$key} =~ s/^\s+//; $conf{$key} =~ s/\s+$//; } } if ($conf{'LogSeparator'} eq '') { $conf{'LogSeparator'}=' '; } # Check data my $logfile=''; if ($conf{'LogFile'} !~ /|\s*$/) { # LogFile is not a piped valued $logfile=$conf{'LogFile'}; } else { # LogFile is piped # It can be # '/xxx/maillogconvert.pl standard /aaa/mail.log |' # '/xxx/logresolvermerge.pl *' # TODO test something here ? } if ($logfile && ! -r $logfile) { &error(&text(save_errLogFile,$logfile)); } if (! $conf{'SiteDomain'}) { &error(&text(save_errSiteDomain,$conf{'SiteDomain'})); } if (! -d $conf{'DirData'}) { &error(&text(save_errDirData,$conf{'DirData'})); } if ($in{'new'}) { # Add a new config file &system_logged("cp '$modelconf' '$in{'new'}'"); } # Update the config file's options local $cfile = $in{'file'}; &lock_file($cfile); &update_config($cfile, \%conf); &unlock_file($cfile); } &webmin_log($in{'new'} ? "create" : "modify", "log", $in{'file'}); } &redirect(""); awstats/uninstall.pl0000644000175000017500000000016112410217071017047 0ustar ldestailleurldestailleur# uninstall.pl # Called when webmin is uninstalled require 'awstats-lib.pl'; sub module_uninstall { } 1; awstats/config.info.zh_TW.Big50000644000175000017500000000314012410217071020442 0ustar ldestailleurldestailleurawstats=��s AWStats ������ɮ׸��|�M��O
    (�Ҧp:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0 awstats_cgi=AWStats CGI �� URL ����Ϊ̬O�۹���|
    (�Ҧp:/awstats/awstats.pl),0 alt_conf=AWStats �]�w�ɼ˥�,3,/etc/awstats/awstats.model.conf plugin_1_geoip=Maxmind GeoIP ��a��Ʈw�ɮ� ���|
    (�p�G AWStats geoip �X�R�M��l�Ұʪ����p�U),3,/usr/local/share/GeoIP/GeoIP.dat plugin_2_geoip_region_maxmind=Maxmind GeoIP �ϰ��Ʈw�ɮ� ���|
    (�p�G AWStats geoip_region_maxmind �X�R�M��l�Ұʪ����p�U),3,/usr/local/share/GeoIP/GeoIPRegion.dat plugin_3_geoip_city_maxmind=Maxmind GeoIP �{����Ʈw�ɮ� ���|
    (�p�G AWStats geoip_city_maxmind �X�R�M��l�Ұʪ����p�U),3,/usr/local/share/GeoIP/GeoIPCity.dat plugin_4_geoip_isp_maxmind=Maxmind GeoIP isp ��Ʈw�ɮ� ���|
    (�p�G AWStats geoip_isp_maxmind �X�R�M��l�Ұʪ����p�U),3,/usr/local/share/GeoIP/GeoIPISP.dat plugin_5_geoip_org_maxmind=Maxmind GeoIP org ��Ʈw�ɮ� ���|
    (�p�G AWStats geoip_org_maxmind �X�R�M��l�Ұʪ����p�U),3,/usr/local/share/GeoIP/GeoIPOrg.dat awstats/schedule_stats.cgi0000644000175000017500000000641512410217071020207 0ustar ldestailleurldestailleur#!/usr/bin/perl # schedule_stats.cgi # schedule AWStats update process from cron or logrotate require './awstats-lib.pl'; &ReadParse(); if (! $access{'update'}) { &error($text{'schedule_cannot'}); } my $conf=""; my $dir=""; if ($in{'file'} =~ /awstats\.(.*)\.conf$/) { $conf=$1; } if ($in{'file'} =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; } # Display file contents &header($title || $text{'schedule_title'}, ""); print "
    \n"; print "AWStats scheduled update processes detected for config file ".$in{'file'}."
    \n"; print "
    \n"; print "
    \n"; # Load other modules lib &foreign_require("cron", "cron-lib.pl"); &foreign_require("logrotate", "logrotate-lib.pl"); # For global update print "List of update processes scheduled by a cron task :

    "; print "\n"; print ""; print "\n"; my $globalupdate=0; my $confupdate=0; if ( foreign_installed('cron', 0) ) { # Show cron found my $regupdateall="awstats_updateall\.pl"; my $regupdate="awstats\.pl"; foreach my $j (grep { $_->{'command'} =~ /$regupdate/ || $_->{'command'} =~ /$regupdateall/ } &foreign_call("cron","list_cron_jobs")) { my $global=0; if ($j->{'command'} =~ /$regupdateall/) { $globalupdate++; $global=1; } my $confparam=""; if ($j->{'command'} =~ /$regupdate/) { $j->{'command'} =~ /config=(\S+)/; $confparam=$1; if ($confparam ne $conf) { next; } } print ""; print ""; print ""; print ""; if ($global) { print ""; } else { print ""; } print ""; print ""; } } else { print ""; } print "
    UserTaskActiveNote on taskAction
    ".$j->{'user'}."".$j->{'command'}."".($j->{'active'}?'yes':'no')."Update all config filesUpdate this config file only{'index'}."\">Jump to cron task
    Webmin cron module is not installed. It is required to setup cron scheduled tasks
    "; print "
    \n"; print "Add an AWStats cron task to update all AWStats config files
    "; print "(You must add the command \"/usr/local/awstats/tools/awstats_updateall.pl now >/dev/null\")
    \n"; print "
    \n"; print "Add an AWStats cron task to update config file $conf
    \n"; print "(You must add the command \"$config{'awstats'} -update -config=$conf >/dev/null\")
    \n"; print "
    \n"; print "
    \n"; print "
    \n"; # For logrotate scheduling print "List of update processes scheduled by a logrotate task :

    "; print "\n"; print ""; print "\n"; if ( foreign_installed('logrotate', 0) ) { print ""; } else { print ""; } print "
    Logrotate fileTaskNote on taskAction
    This feature is not yet available
    Webmin logrotate module is not installed. It is required to setup logrotate scheduled tasks
    "; print "

    \n"; # Back to config list print "
    \n"; &footer("", $text{'index_return'}); 0; awstats/view_all.cgi0000644000175000017500000004217112410217071016776 0ustar ldestailleurldestailleur#!/usr/bin/perl # view_all.cgi # Display summary of all available config files require './awstats-lib.pl'; &ReadParse(); my $BarWidth=120; my $BarHeight=3; # Check if awstats is actually installed if (!&has_command($config{'awstats'})) { &header($text{'index_title'}, "", undef, 1, 1, 0, undef); print "
    \n"; print "

    ",&text('index_eawstats', "$config{'awstats'}","$gconfig{'webprefix'}/config.cgi?$module_name"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } &header($text{'viewall_title'}, "", undef, 1, 1, 0, undef, undef, undef, undef); my $widthtooltip=560; print < EOF print "
    \n"; if (! $access{'view'}) { print &text('viewall_notallowed')."
    \n"; } my @configdirtoscan=split(/\s+/, $access{'dir'}); if (! @configdirtoscan) { print &text('index_nodirallowed',"$remote_user")."
    \n"; print &text('index_changeallowed',"Webmin - Utilisateurs Webmin", $text{'index_title'})."
    \n"; print "
    \n"; # print "

    ",&text('index_econfdir', "$config{'awstats_conf'}", # "$gconfig{'webprefix'}/config.cgi?$module_name"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } # Build list of config files from allowed directories foreach my $dir (split(/\s+/, $access{'dir'})) { my @conflist=(); push(@conflist, map { $_->{'custom'} = 1; $_ } &scan_config_dir($dir)); foreach my $file (@conflist) { next if (!&can_edit_config($file)); push @config, $file; } } # Write message for allowed directories print &text('viewall_allowed',"$remote_user"); print ":
    \n"; foreach my $dir (split(/\s/,$access{'dir'})) { print "$dir
    "; } print "
    \n"; print &text('index_changeallowed',"Webmin - Webmin Users", $text{'index_title'})."
    \n"; print "
    "; $starttime=time(); ($nowsec,$nowmin,$nowhour,$nowday,$nowmonth,$nowyear,$nowwday,$nowyday) = localtime($starttime); if ($nowyear < 100) { $nowyear+=2000; } else { $nowyear+=1900; } $nowmonth=sprintf("%02d",$nowmonth+1); my $YearRequired=$in{'year'}||$nowyear; my $MonthRequired=$in{'month'}||$nowmonth; my %dirdata=(); my %view_u=(); my %view_v=(); my %view_p=(); my %view_h=(); my %view_k=(); my %notview_p=(); my %notview_h=(); my %notview_k=(); my %version=(); my %lastupdate=(); my $max_u=0; my $max_v=0; my $max_p=0; my $max_h=0; my $max_k=0; my $nomax_p=0; my $nomax_h=0; my $nomax_k=0; my %ListOfYears=(($nowyear-9)=>1,($nowyear-8)=>1,($nowyear-7)=>1,($nowyear-6)=>1,($nowyear-5)=>1,($nowyear-4)=>1,($nowyear-3)=>1,($nowyear-2)=>1,($nowyear-1)=>1,$nowyear=>1); # If required year not in list, we add it $ListOfYears{$YearRequired}||=$MonthRequired; # Set dirdata for config file my $nbofallowedconffound=0; if (scalar @config) { # Loop on each config file foreach my $l (@config) { next if (!&can_edit_config($l)); $nbofallowedconffound++; # Read data files $dirdata{$l}=get_dirdata($l); } } # Show summary informations $nbofallowedconffound=0; if (scalar @config) { my %foundendmap=(); my %error=(); # Loop on each config file to get info #-------------------------------------- foreach my $l (@config) { next if (!&can_edit_config($l)); # Config file line #local @files = &all_config_files($l); #next if (!@files); local $lconf = &get_config($l); my $conf=""; my $dir=""; if ($l =~ /awstats([^\\\/]*)\.conf$/) { $conf=$1; } if ($l =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; } my $confwithoutdot=$conf; $confwithoutdot =~ s/^\.+//; # Read data file for config $l my $dirdata=$dirdata{$l}; if (! $dirdata) { $dirdata="."; } my $filedata=$dirdata."/awstats${MonthRequired}${YearRequired}${conf}.txt"; my $linenb=0; my $posgeneral=0; if (! -f "$filedata") { $error{$l}="No data for this month"; } elsif (open(FILE, "<$filedata")) { $linenb=0; while() { if ($linenb++ > 100) { last; } my $savline=$_; chomp $_; s/\r//; # Remove comments not at beginning of line $_ =~ s/\s#.*$//; # Extract param and value my ($param,$value)=split(/=/,CleanFromTags($_),2); $param =~ s/^\s+//; $param =~ s/\s+$//; $value =~ s/#.*$//; $value =~ s/^[\s\'\"]+//; $value =~ s/[\s\'\"]+$//; if ($param) { # cleanparam is param without begining # my $cleanparam=$param; my $wascleaned=0; if ($cleanparam =~ s/^#//) { $wascleaned=1; } if ($cleanparam =~ /^AWSTATS DATA FILE (.*)$/) { $version{$l}=$1; next; } if ($cleanparam =~ /^POS_GENERAL\s+(\d+)/) { $posgeneral=$1; next; } if ($cleanparam =~ /^POS_TIME\s+(\d+)/) { $postime=$1; next; } if ($cleanparam =~ /^END_MAP/) { $foundendmap{$l}=1; last; } } } if ($foundendmap{$l}) { # Map section was completely read, we can jump to data GENERAL if ($posgeneral) { $linenb=0; my ($foundu,$foundv,$foundl)=(0,0,0); seek(FILE,$posgeneral,0); while () { if ($linenb++ > 50) { last; } # To protect against full file scan $line=$_; chomp $line; $line =~ s/\r$//; $line=CleanFromTags($line); if ($line =~ /TotalUnique\s+(\d+)/) { $view_u{$l}=$1; if ($1 > $max_u) { $max_u=$1; } $foundu++; } elsif ($line =~ /TotalVisits\s+(\d+)/) { $view_v{$l}=$1; if ($1 > $max_v) { $max_v=$1; } $foundv++; } elsif ($line =~ /LastUpdate\s+(\d+)/) { $lastupdate{$l}=$1; $foundl++; } if ($foundu && $foundv && $foundl) { last; } } } else { $error{$l}.="Mapping for section GENERAL was wrong."; } # Map section was completely read, we can jump to data TIME if ($postime) { seek(FILE,$postime,0); $linenb=0; while () { if ($linenb++ > 50) { last; } # To protect against full file scan $line=$_; chomp $line; $line =~ s/\r$//; $line=CleanFromTags($line); if ($line =~ /^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) { $view_p{$l}+=$2; $view_h{$l}+=$3; $view_k{$l}+=$4; $noview_p{$l}+=$5; $noview_h{$l}+=$6; $noview_k{$l}+=$7; } if ($line =~ /^END_TIME/) { last; } } if ($view_p{$l} > $max_p) { $max_p=$view_p{$l}; } if ($view_h{$l} > $max_h) { $max_h=$view_h{$l}; } if ($view_k{$l} > $max_k) { $max_k=$view_k{$l}; } if ($noview_p{$l} > $nomax_p) { $nomax_p=$noview_p{$l}; } if ($noview_h{$l} > $nomax_h) { $nomax_h=$noview_h{$l}; } if ($noview_k{$l} > $nomax_k) { $nomax_k=$noview_k{$l}; } } else { $error{$l}.="Mapping for section TIME was wrong."; } } close(FILE); } else { $error{$l}="Failed to open $filedata for read"; } } ($total_u,$total_v,$total_p,$total_h,$total_k)=(); # Loop on each config file to show info #-------------------------------------- foreach my $l (@config) { next if (!&can_edit_config($l)); $nbofallowedconffound++; # Config file line #local @files = &all_config_files($l); #next if (!@files); local $lconf = &get_config($l); my $conf=""; my $dir=""; if ($l =~ /awstats([^\\\/]*)\.conf$/) { $conf=$1; } if ($l =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; } my $confwithoutdot=$conf; $confwithoutdot =~ s/^\.+//; # Read data file for config $l my $dirdata=$dirdata{$l}; if (! $dirdata) { $dirdata="."; } my $filedata=$dirdata."/awstats${MonthRequired}${YearRequired}${conf}.txt"; # Head of config file's table list if ($nbofallowedconffound == 1) { print "\n"; print "\n"; print ""; print "\n"; print "\n"; print "
    ".&text('viewall_period').":"; print "\n"; print "\n"; print ""; print "
    \n"; print "\n"; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print "\n"; } my @st=stat($l); my $size = $st[7]; my ($sec,$min,$hour,$day,$month,$year,$wday,$yday) = localtime($st[9]); $year+=1900; $month++; print '
    '; printf("Configuration file: %s
    \n",$l); printf("Created/Changed: %04s-%02s-%02s %02s:%02s:%02s
    \n",$year,$month,$day,$hour,$min,$sec); print "
    \n"; my @st2=stat($filedata); printf("Data file for period: %s
    \n",$filedata); printf("Data file size for period: %s".($st2[7]?" bytes":"")."
    \n",($st2[7]?$st2[7]:"unknown")); printf("Data file version: %s",($version{$l}?" $version{$l}":"unknown")."
    "); printf("Last update: %s",($lastupdate{$l}?" $lastupdate{$l}":"unknown")); print '
    '; print "\n"; print ""; print ""; print ""; if ($error{$l}) { print ""; } elsif (! $foundendmap{$l}) { print ""; } else { $total_u+=$view_u{$l}; $total_v+=$view_v{$l}; $total_p+=$view_p{$l}; $total_h+=$view_h{$l}; $total_k+=$view_k{$l}; print ""; print ""; print ""; print ""; print ""; # Print bargraph print ''; } if ($access{'view'}) { if ($config{'awstats_cgi'}) { print "\n"; } else { print ""; } } else { print ""; } print "\n"; } if ($nbofallowedconffound > 0 && 1==2) { print "\n"; print ""; print ""; print ""; print ""; print ""; print ""; print ""; # Print bargraph print ''; print "\n"; } print "
    $text{'index_path'}$text{'viewall_u'}$text{'viewall_v'}$text{'viewall_p'}$text{'viewall_h'}$text{'viewall_k'} $text{'index_view'}
    $nbofallowedconffound"; print "$confwithoutdot"; if ($access{'global'}) { # Edit config print "
    $text{'index_edit'}"; } print "
    "; print "$error{$l}"; print ""; print "Unable to read summary info in data file. File may have been built by a too old AWStats version. File was built by version: $version{$l}."; print ""; print Format_Number($view_u{$l}); print ""; print Format_Number($view_v{$l}); print ""; print Format_Number($view_p{$l}); print ""; print Format_Number($view_h{$l}); print ""; print Format_Bytes($view_k{$l}); print "'; my $bredde_u=0; my $bredde_v=0; my $bredde_p=0; my $bredde_h=0; my $bredde_k=0; my $nobredde_p=0; my $nobredde_h=0; my $nobredde_k=0; if ($max_u > 0) { $bredde_u=int($BarWidth*($view_u{$l}||0)/$max_u)+1; } if ($max_v > 0) { $bredde_v=int($BarWidth*($view_v{$l}||0)/$max_v)+1; } if ($max_p > 0) { $bredde_p=int($BarWidth*($view_p{$l}||0)/$max_p)+1; } if ($max_h > 0) { $bredde_h=int($BarWidth*($view_h{$l}||0)/$max_h)+1; } if ($max_k > 0) { $bredde_k=int($BarWidth*($view_k{$l}||0)/$max_k)+1; } if ($nomax_p > 0) { $nobredde_p=int($BarWidth*($noview_p{$l}||0)/$nomax_p)+1; } if ($nomax_h > 0) { $nobredde_h=int($BarWidth*($noview_h{$l}||0)/$nomax_h)+1; } if ($nomax_k > 0) { $nobredde_k=int($BarWidth*($noview_k{$l}||0)/$nomax_k)+1; } if (1) { print "
    "; } if (1) { print "
    "; } if (1) { print "
    "; } if (1) { print "
    "; } if (1) { print "
    "; } print '
    $text{'index_view2'}".&text('index_cgi', "$gconfig{'webprefix'}/config.cgi?$module_name")."NA
     Total"; print Format_Number($total_u); print ""; print Format_Number($total_v); print ""; print Format_Number($total_p); print ""; print Format_Number($total_h); print ""; print Format_Bytes($total_k); print " 

    \n"; } if (! $nbofallowedconffound) { print "

    $text{'index_noconfig'}


    \n"; } # Back to config list print "
    \n"; &footer("", $text{'index_return'}); awstats/defaultacl0000644000175000017500000000011412410217071016526 0ustar ldestailleurldestailleurnoconfig=0 view=1 update=1 dir=/etc/awstats ~/awstats user=* global=1 add=1 awstats/config0000644000175000017500000000021612410217071015672 0ustar ldestailleurldestailleurawstats=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl awstats_cgi=http://127.0.0.1/awstats/awstats.pl alt_conf=/etc/awstats/awstats.model.confawstats/awstats-webmin_changelog.txt0000644000175000017500000000467212410217071022231 0ustar ldestailleurldestailleurAWStats-Webmin module Changelog ------------------------------- 2.0 Just minor bug fixes. 1.9 Just minor bug fixes. 1.800 Just minor bug fixes. 1.700 Just minor bug fixes. 1.600 New features/improvements: - Added Spanish translation by Patricio Mart�nez Ros Fixes: - Update version of webmin module 1.500 Fixes: - Minor fixes 1.400 New features/improvements: - Some change to add scheduler management for update process. - Creating new config files can be done by copying an old one. - Add a page for a summary of all config files on same pages. - Added a row number on each row of index page. - Translation more complete. - Report GeoIP country, regions, city, isp and organizations versions. 1.300 New features/improvements: - Added a warning to explain to add '/private/etc' to webmin ACL for MacOS users. - A first screen for the schedule update feature. - Better description for ACL page. Fixes: - Translation was in french for some texts, whatever was choosed language. 1.210 New features/improvements: - Added following parameters parameter in edit config area: BuildHistoryFormat BuildReportFormat LevelForFileTypesDetection LevelForWormsDetection URLWithQueryWithOnlyFollowingParameters ShowWormsStats - Removed LinkToIPWhoIs and LinkToWhoIs obsolete parameters. - Module setup parameter awstats_conf has been removed since now directories into wich you can scan/edit AWStats configuration files are defined in ACL users. Defined to /etc/awstats by default. Also added a link the the ACL page to edit this directory listing. - Added a streaming server log file type. Fixes: - Better error messages - Fixed ACL management on directory that contains config files. Other/Documentation: - Added german translation. 1.100 New features/improvements: - All AWStats config parameters can be edited. - Added management of plugins - Added a file/dir selector for parameters that are files or directories. - Added javascript test in edit config pages. - Added a check that LogFile used with maillogconvert.pl has a 'Mail' type. Fixes: - Modify of old config files add the new parameters if not found. - Fixed wrong value saved for LogSeparator parameter. - Better check of old versions incompatibility. - Fix help page for parameters not found in model config file. - Fixed check of logfile for piped values. - Minor bug fixes. Other/Documentation: - Added French translation. - Removed unused files. 1.000 - First release version. awstats/lang/0000777000175000017500000000000012410217071015430 5ustar ldestailleurldestailleurawstats/lang/es0000644000175000017500000001405412410217071015762 0ustar ldestailleurldestailleurall_gb=GB all_mb=MB all_kb=KB all_b=Bytes index_title=AWStats Logfile Analyzer index_version=AWStats versión $1 index_eawstats=La orden de análisis $1 no se encontró en su sistema. Puede que AWStats no esté instalado, o que su Configuración de módulo sea incorrecta. index_econfdir=El directorio de configuración de AWStats $1 no se encontró en su sistema. Puede que AWStats no esté instalado, o que su Configuración de módulo sea incorrecta. index_econf=El fichero de configuración de ejemplo de AWStats $1 no se encontró en su sistema. Puede que AWStats no esté instalado, o que su Configuración de módulo sea incorrecta. index_cgi=Ruta del CGI no configurada index_add=Añadir un nuevo fichero de configuración para analizar. index_path=Fichero de configuración index_type=Tipo index_size=Tamaño index_create=Creado/Modificado index_databasesize=Tamaño de la base de datos index_noconfig=Ningún fichero de configuración se ha encontrado o ha sido añadido para analizar. index_edit=Editar/Borrar configuración index_del=Borrar configuración index_scheduled=Planificado index_sched2=Planificador index_now=Ahora index_update=Actualizar estadísticas index_update2=Actualizar index_view=Ver estadísticas index_view2=Ver index_return=Lista de ficheros de configuración index_eversion=La orden de AWStats $1 en su sistema tiene la versión $2, pero este módulo sólo acepta versiones $3 y superiores. index_egetversion=Fallo al obtener la versión de AWStats. La orden $1 devolvió : $2.
    Puede que su Configuración de módulo sea incorrecta. index_advanced1=Ver directivas para 'OPTIONAL SETUP SECTION' index_advanced2=Ver directivas para 'OPTIONAL ACCURACY SETUP SECTION' index_advanced3=Ver directivas para 'OPTIONAL APPEARANCE SETUP SECTION' index_advanced4=Ver directivas para 'OPTIONAL PLUGINS SETUP SECTION' index_advanced5=Ver directivas para 'OPTIONAL EXTRA SETUP SECTION' index_hideadvanced=Ocultar directivas opcionales index_nodirallowed=Su usuario $1 no tiene permisos para leer/escribir los ficheros de configuración de AWStats. index_allowed=Su cuenta $1 tiene permisos para leer/editar los ficheros de configuración (o sus enlaces) index_changeallowed=Los permisos de los directorios donde usted puede buscan/editar los ficheros de configuración de AWStats le pueden otorgados por un administrador de Webmin desde el editor de ACL de Webmin (Menú $1 y luego haga clic en $2) index_viewall=Ver un resumen de todas las configuraciones disponibles edit_title1=Añadir un fichero de configuración edit_title2=Editar un fichero de configuración edit_header=Asistente de edición del fichero de configuración $1 edit_headernew=Asistente de creación de un nuevo fichero de configuración edit_file=Contenido del fichero edit_add=Nombre del fichero de configuración a crear edit_create_by_copy=Crear un nuevo fichero de configuración copiando uno existente edit_create_from_scratch=Crear un nuevo fichero de configuración con los siguientes parámetros edit_config_to_copy=Fichero de configuración a copiar edit_user=Ejecutar AWStats como usuario edit_ecannot=No tiene permisos para editar este fichero de configuración edit_efilecannot=El fichero de configuración '$1' no está en un directorio permitido save_err=Error en la construcción del fichero de configuración save_efile=No se ha introducido el nombre del fichero de configuración save_fileexists=El fichero de configuración ya existe save_edir=El directorio '$1' elegido para escribir su fichero de configuración no tiene permisos de Webmin. save_ecannot=Sólo tiene permisos para ver o generar informes para la configuraición en $1 save_errLogFile=Error en el parámetro LogFile. El fichero de log $1 no existe o no se puede leer save_errLogFormat=Error en el parámetro LogFile. El parámetro no está definido save_errSiteDomain=Error en el parámetro SiteDomain. El parámetro no está definido save_errDirData=Error en el parámetro DirData. El parámetro no está definido o el directorio no existe save_dirnotexists=El directorio no existe update_title=Actualizar estadísticas update_ecannot=No está autorizado para actualizar estadísticas update_run=Ejecutar el poceso actualización con la orden update_finished=Porceso de actualización finalizado update_wait=Por favor, espere schedule_title=Planificar actualizaciones de las estadísticas schedule_ecannot=No está autorizado para actualizar o planificar el proceso de actualización log_create_log=Fichero de configuración de AWStats $1 creado log_modify_log=Fichero de configuración de AWStats $1 modificado log_delete_log=Fichero de configuración de AWStats $1 borrado log_generate_log=Actualizar estadísticas AWStats para $1 acl_view=¿Puede ver los informes para los ficheros de configuración? acl_global=¿Puede editar los ficheros de configuración de AWStats? acl_add=¿Puede añadir y borrar ficheros de configuración? acl_update=¿Puede actualizar las estadísticas para los ficheros de configuración existentes? acl_user=Ejecutar AWStats como usuario Unix acl_this=Usuario actual de Webmin acl_any=Cualquier usuario acl_dir=Sólo permitir ver informes y editar ficheros de configuración en (rutas reales de directorios, no enlaces) help_title=Pagina de ayuda help_subtitle=Ayuda sobre los parámetros del fichero de configuración $1 help_subtitleplugin=Ayuda sobre el plugin $1 help_notfound=Parámetro no encontrado en su fichero de ejemplo $1.
    Puede que su versión de AWStata no lo soporte, así que no hay ayuda disponible. help_help=Ayuda help_starrequired=parametros requeridos sin valor por defecto. No pueden estar vacíos. viewall_title=Summary for all configurations files viewall_notallowed=You don't have rights to see statisitics viewall_allowed=This page presents a summary of all configurations files found in directories allowed to user $1 viewall_period=Period viewall_u=Visitantes distintos viewall_v=Visitas viewall_p=Páginas viewall_h=Solicitudes viewall_k=Ancho de banda month01=Enero month02=Febrero month03=Marzo month04=Abril month05=Mayo month06=Junio month07=Julio month08=Agosto month09=Septiembre month10=Octubre month11=Noviembre month12=Diciembreawstats/lang/fr0000644000175000017500000001410412410217071015756 0ustar ldestailleurldestailleurall_gb=Go all_mb=Mo all_kb=Ko all_b=Octets index_title=Analyseur de Logs AWStats index_version=AWStats version $1 index_eawstats=La commande du log analyseur $1 n'a pas été trouvée sur le système. Peut-etre AWStats n'est-il pas installé, ou la configuration du module est incorrecte. index_econfdir=Le répertoire des fichiers de configuration AWStats $1 n'a pas été trouvé sur le système. Peut-etre AWStats n'est-il pas installé, ou la configuration du module est incorrecte. index_econf=Le fichier de configuration modèle $1 n'a pas été trouvé sur le système. Peut-etre AWStats n'est-il pas installé, ou la configuration du module est incorrecte. index_cgi=CGI path non configuré index_add=Ajout d'un nouveau fichier de configuration d'analyse index_path=Fichier configuration index_type=Type index_size=Taille index_create=Créé/Modifié index_databasesize=Taille des fichiers de la base index_noconfig=Aucun fichier de configuration n'a été trouvé ou ajouté pour analyse, dans le ou les répertoires autorisés. index_edit=Edition/Suppression index_del=Suppression config index_scheduled=Programmée index_now=Immédiate index_sched2=Programme index_update=Mise à jour stats index_update2=Mettre à jour index_view=Voir les stats index_view2=Voir index_return=Liste des fichiers de configuration index_eversion=La commande AWStats $1 sur votre système est en version $2, mais ce module ne gère que les version $3 ou supérieures. index_egetversion=Echec de la récupération de la varsion d'AWStats. La command $1 a retourné : $2.
    Peut-etre la configuration du module est incorrecte. index_advanced1=Voir paramètres de la 'OPTIONAL SETUP SECTION' index_advanced2=Voir paramètres de la 'OPTIONAL ACCURACY SETUP SECTION' index_advanced3=Voir paramètres de la 'OPTIONAL APPEARANCE SETUP SECTION' index_advanced4=Voir paramètres de la 'OPTIONAL PLUGINS SETUP SECTION' index_advanced5=Voir paramètres de la 'OPTIONAL EXTRA SETUP SECTION' index_hideadvanced=Cacher paramètres optionnels index_allowed=Votre login $1 est autorisé à voir/editer les fichiers de config dans (ou pointant vers) index_nodirallowed=Votre compte $1 n'a aucun répertoire autorisé en lecture/écriture de fichier de configuration AWStats. index_changeallowed=Les permissions des répertoires dans lesquels vous pouvez voir/éditer des fichiers de configuration AWStats peuvent vous être accordées par un administrateur Webmin via l'éditeur des ACL utilisateurs Webmin (Menu $1 puis clic sur $2) index_viewall=Voir un résumé pour toutes les configurations disponibles edit_title1=Ajout d'un fichier de config edit_title2=Edition d'un fichier de config edit_header=Assistant d'édition du fichier de configuration $1 edit_headernew=Assistant de création de nouveau fichier de configuration edit_file=Contenu du fichier edit_add=Nom du fichier de config à créer edit_create_by_copy=Créer une nouvelle configuration par recopie d'une existante edit_create_from_scratch=Créer une nouvelle configuration avec les paramètres suivants edit_config_to_copy=Nom de la configuration à recopier edit_user=Lancer AWStats sous l'utilisateur edit_ecannot=Vous n'êtes pas autorisés à éditer ce fichier de configuration edit_efilecannot=Le fichier de configuration '$1' n'est pas dans un répertoire autorisé save_err=Erreur dans la construction du fichier de configuration save_efile=Le nom du fichier de configuration n'a pas été entré save_fileexists=Fichier de configuration déjà existant save_edir=Le répertoire '$1', choisi pour le fichier de configuration n'est pas autorisé par les permissions Webmin. save_ecannot=Vous n'êtes autorisés à voir ou générer des rapports que pour des fichiers de config dans $1 save_errLogFile=Erreur sur le paramètre LogFile. Le fichier de log $1 n'existe pas ou n'est pas lisible save_errLogFormat=Erreur sur le paramètre LogFormat. Paramètre non défini save_errSiteDomain=Erreur sur le paramètre SiteDomain. Paramètre non défini save_errDirData=Erreur sur le paramètre DirData. Paramètre non défini ou répertoire inexistant save_dirnotexists=Répertoire inexistant update_title=Mise à jour des statistiques update_ecannot=Vous n'êtes pas autorisé à mettre à jour les statistiques update_run=Lancement de la mise à jour par la commande update_finished=Mise a jour terminée update_wait=Merci de patienter schedule_title=Programmation de mise à jour schedule_ecannot=Vous n'êtes pas autorisé à mettre à jour ou programmer une mise à jour des statistiques log_create_log=Fichier de config AWStats $1 créé log_modify_log=Fichier de config AWStats $1 modifié log_delete_log=Fichier de config AWStats $1 effacé log_generate_log=Mise à jour statistiques AWStats pour $1 acl_view=Peut voir les stats pour les fichiers config existant? acl_global=Peut editer les fichiers config AWStats? acl_add=Peut ajouter/supprimer des fichiers config? acl_update=Peut mettre à jour les stats pour les fichiers config existants? acl_user=Lancer AWStats sour l'utilisateur Unix acl_this=Utilisateur webmin actuel acl_any=Tout utilisateur acl_dir=Autorise la vue de stats et l'édition de fichier de config pour les fichiers config dans (chemin de répertoires en durs, pas de liens) help_title=Page d'aide help_subtitle=Aide sur le paramètre de configuration $1 help_subtitleplugin=Aide sur le plugin $1 help_notfound=Paramètre non trouvé dans votre fichier de configuration modèle $1.
    Peut-être votre version d'AWStats ne le supporte pas, aussi aucune aide n'est disponible. help_help=Aide help_starrequired=paramètres obligatoires sans valeurs par défaut. Ils ne peuvent etre vide. viewall_title=Résumé pour tout fichier de configuration viewall_notallowed=Vous n'avez pas les droits pour voir les stats viewall_allowed=Cette page présente un résumé de toutes les configurations trouvés dans les répertoires autorisés à l'utilisateur $1 viewall_period=Période viewall_u=Visiteurs uniques viewall_v=Visites viewall_p=Pages viewall_h=Hits viewall_k=Bande passante month01=Janvier month02=Février month03=Mars month04=Avril month05=Mai month06=Juin month07=Juillet month08=Aout month09=Septembre month10=Octobre month11=Novembre month12=Décembreawstats/lang/de0000644000175000017500000001143212410217071015740 0ustar ldestailleurldestailleurindex_title=AWStats Logfile Analyse index_version=AWStats Version $1 index_eawstats=Das Logfile Analyse Programm $1 wurde nicht auf Ihrem System gefunden. Vieleicht ist es nicht installiert, oder Ihre module configuration ist fehlerhaft. index_econfdir=Das AWStats Konfigurations Verzeichniss $1 wurde nicht auf Ihrem System gefunden. Vieleicht ist es nicht installiert, oder Ihre module configuration ist fehlerhaft. index_econf=Die AWStats Beispiel-Konfigurations Datei $1 wurde nicht auf ihrem System gefunden. Vieleicht ist es nicht installiert, oder Ihre module configuration ist fehlerhaft. index_cgi=CGI path not configured index_add=Hinzufügen einer neuen Analyse-Konfiguration. index_path=Konfigurations Datei index_type=Typ index_size=Größe index_create=Erstellt/Geändert index_noconfig=Es wurden keine Analyse-Konfigurations Dateien gefunden bzw. hinzugefügt. index_edit=Konfiguration Bearbeiten/Löschen index_del=Konfiguration Löschen index_scheduled=Eingeplant index_now=Jetzt index_update=Statistik aktualisieren index_update2=Aktualisieren index_view=Statistik anzeigen index_view2=Anzeigen index_return=Konfigurations Dateien index_eversion=Das AWStats Programm auf Ihrem System hat die Version $2, aber dieses Modul unterstüzt nur Versionen $3 und aufwärts. index_egetversion=Die Versions Nr. Ihrer AWStats Installation konnte nicht ermittelt werden. Die Abfrage ergab : $2.
    May be your module configuration fehlerhaft. index_advanced1=Direktiven für den OPTIONALEN EINSTELLUNGS BEREICH anzeigen index_advanced2=Direktiven für die OPTIONALEN DETAIL-EINSTELLUNGEN anzeigen index_advanced3=Direktiven für das OPTIONALE ERSCHEINUNGSBILD anzeigen index_advanced4=Direktiven für die OPTIONALEN PLUGINS anzeigen index_advanced5=Direktiven für die OPTIONALEN EXTRA EINSTGELLUNGEN anzeigen index_hideadvanced=Optionale Direktiven verbergen index_nodirallowed=Der Benutzer $1 hat kein berechtigtes Verzeichniss zum lesen/speichern von AWStats Konfigurationen index_allowed=Ihr Benutzer-Konto $1 ist berechtigt, um Dateien anzusehen/bearbeiten in index_changeallowed=Berechtigungen für Verzeichnisse, die es Ihnen erlaube AWStats Konfigurationen zu listen/berabeiten, kann Ihnen der Webmin Administrator über den Benutzer ACL Editor zuweisen (Menu $1 then clic on $2) edit_title1=Konfiguration hinzufügen edit_title2=Konfiguration bearbeiten edit_header=Bearbeitungs Assisitent für die Konfiguration $1 edit_headernew=Assistent zum Erstellen von Konfigurationen edit_file=Datei Inhalt edit_add=Dateiname der zu erstellenden Konfigurationsdatei edit_user=AWStats unter folgendem Benutzer ausführen edit_ecannot=Sie sind nicht berechtigt, diese Konfiguration zu bearbeiten edit_efilecannot=Die Konfigurationsdatei '$1' liegt nicht in einem berechtigten Verzeichniss. save_err=Fehler beim Erzeugen der Konfigurationsdatei save_efile=Dateiname für die Konfigurationsdatei wurde nicht angegeben save_fileexists=Konfigurationsdatei existiert bereits save_edir=Für das gewählte Verzeichniss '$1' zum speichern der Konfigurationen existieren keine Webmin Rechte. save_ecannot=Sie haben keinen Berechtigung zum erzeugen/ansehen von Auswertugen unter $1 save_errLogFile=Fehler im LogFile Parameter. Das Logfile $1 existiert nicht, oder nicht lesbar save_errLogFormat=Fehler im LogFormat Parameter. Der parameter ist nicht definiert save_errSiteDomain=Fehler im SiteDomain Parameter. Der Parameter ist nicht definiert save_errDirData=Fehler im DirData Parameter. Der Parameter ist nicht definiert oder das verzeichniss existiert nicht save_dirnotexists=Verzeichniss existiert nicht update_title=Statistik aktualisieren update_ecannot=Sie sind nicht berechtigt die Statistik zu aktualisieren scheduled_title=Statistik Aktualisierung einplanen scheduled_ecannot=Sie sind nicht berechtigt, die Statistik zu aktualisieren oder einzuplanen log_create_log=Erstellte Awstats Konfigurationsdatei $1 log_modify_log=AWStats Konfigurationsdatei geändert $1 log_delete_log=Gelöschte AWStats Konfigurationsdatei $1 log_generate_log=Aktualisiere folgende AWStats Konfigurationsdatei $1 acl_view=Darf Auswertungen für Bestehende Konfigurationen anzeigen ? acl_global=Darf AWStats Konfigurationen bearbeiten ? acl_add=Darf Konfigurationen bearbeiten und löschen ? acl_update=Darf Auswertungen für Bestehende Konfigurationen anzeigen ? acl_user=AWStats unter folgendem Unix benutzer ausführen acl_this=Aktueller Webmin Benutzer acl_any=Jeder Benutzer acl_dir=Berechtigung zum Ansehen und Berabeiten von Konfigurationen unter help_title=Hilfe Seite help_subtitle=Help for config file parameter $1 help_subtitleplugin=Help for plugin $1 help_notfound=Parameter wurde nicht in Ihrer Beispiel Datei $1 gefunden.
    May be your AWStats version does not support it, so no help is available. help_help=Hilfeawstats/lang/en0000644000175000017500000001225412410217071015755 0ustar ldestailleurldestailleurall_gb=GB all_mb=MB all_kb=KB all_b=Bytes index_title=AWStats Logfile Analyzer index_version=AWStats version $1 index_eawstats=The logfile analysis command $1 was not found on your system. Maybe AWStats is not installed, or your module configuration is incorrect. index_econfdir=The AWStats configuration directory $1 was not found on your system. Maybe AWStats is not installed, or your module configuration is incorrect. index_econf=The AWStats sample configuration file $1 was not found on your system. Maybe AWStats is not installed, or your module configuration is incorrect. index_cgi=CGI path not configured index_add=Add a new config file for analysis. index_path=Config file index_type=Type index_size=Size index_create=Created/Modified index_databasesize=Database file size index_noconfig=No config files were found or have been added for analysis. index_edit=Edit/Delete config index_del=Delete config index_scheduled=Scheduled index_sched2=Scheduler index_now=Now index_update=Update stats index_update2=Update index_view=View stats index_view2=View index_return=Config files list index_eversion=The AWStats command $1 on your system is version $2, but this module only supports versions $3 and above. index_egetversion=Failed to get the version of AWStats. Command $1 returned : $2.
    May be your module configuration is incorrect. index_advanced1=View directives for OPTIONAL SETUP SECTION index_advanced2=View directives for OPTIONAL ACCURACY SETUP SECTION index_advanced3=View directives for OPTIONAL APPEARANCE SETUP SECTION index_advanced4=View directives for OPTIONAL PLUGINS SETUP SECTION index_advanced5=View directives for OPTIONAL EXTRA SETUP SECTION index_hideadvanced=Hide optional directives index_nodirallowed=Your user $1 has no allowed directory to read/store AWStats configuration files. index_allowed=Your account $1 is allowed to view/edit config files into (or that are links to) index_changeallowed=Permissions on directories into which you are allowed to scan/edit AWStats configuration files can be granted to you by a webmin administrator from the Webmin user ACL editor (Menu $1 then clic on $2) index_viewall=Show a summary of all available configurations edit_title1=Add config File edit_title2=Edit config File edit_header=Editor Assistant for config file $1 edit_headernew=Config file Builder Assistant edit_file=File content edit_add=Config file name to create edit_create_by_copy=Create a new config file by copying an existing one edit_create_from_scratch=Create a new config file with folowing parameters edit_config_to_copy=Config file name to copy edit_user=Run AWStats as user edit_ecannot=You are not allowed to edit this config file edit_efilecannot=The config file '$1' is not in an allowed directory save_err=Error in config file build save_efile=Config file name was not entered save_fileexists=Config file already exists save_edir=Directory '$1' choosed to write your config file into is not allowed by Webmin permissions. save_ecannot=You are only allowed to view or generate reports for config under $1 save_errLogFile=Error in LogFile parameter. Log file $1 does not exists or is not readable save_errLogFormat=Error in LogFormat parameter. Parameter is nto defined save_errSiteDomain=Error in SiteDomain parameter. Parameter is not defined save_errDirData=Error in DirData parameter. Parameter is not defined or directory does not exists save_dirnotexists=Directory does not exists update_title=Update statistics update_ecannot=You are not allowed to update statistics update_run=Run update process with command update_finished=Update process finished update_wait=Please wait schedule_title=Schedule statistic's update schedule_ecannot=You are not allowed to update or schedule update process log_create_log=Created AWStats config file $1 log_modify_log=Modified AWStats config file $1 log_delete_log=Deleted AWStats config file $1 log_generate_log=Update AWStats statistics for $1 acl_view=Can view reports for existing config files? acl_global=Can edit awstats config files? acl_add=Can add and delete config files? acl_update=Can update stats for existing config files? acl_user=Run AWStats as Unix user acl_this=Current webmin user acl_any=Any user acl_dir=Only allow viewing reports and editing config for config files under (hard directory paths, no links) help_title=Help page help_subtitle=Help for config file parameter $1 help_subtitleplugin=Help for plugin $1 help_notfound=Parameter not found in your sample file $1.
    May be your AWStats version does not support it, so no help is available. help_help=Help help_starrequired=required parameters with no default value. They can't be empty. viewall_title=Summary for all configurations files viewall_notallowed=You don't have rights to see statisitics viewall_allowed=This page presents a summary of all configurations files found in directories allowed to user $1 viewall_period=Period viewall_u=Unique visitors viewall_v=Visits viewall_p=Pages viewall_h=Hits viewall_k=Bandwith month01=January month02=February month03=Mars month04=April month05=May month06=June month07=July month08=August month09=September month10=October month11=November month12=Decemberawstats/lang/zh_TW.Big50000644000175000017500000000757612410217071017206 0ustar ldestailleurldestailleurall_gb=GB all_mb=MB all_kb=KB all_b=Bytes index_title=AWStats °O¿ýÀɤÀªR¾¹ index_version=AWStats ª©¥» $1 index_eawstats=°O¿ýÀɤÀªR«ü¥O $1 ¦b±zªº¨t²Î¤¤§ä¤£¨ì. ¤]³\ AWStats ©|¥¼¦w¸Ë, ©ÎªÌ±zªº ¼Ò²Õ²ÕºA ¦³°ÝÃD. index_econfdir=AWStats ³]©w¥Ø¿ý $1 ¦b±zªº¨t²Î¤¤§ä¤£¨ì. ¤]³\ AWStats ©|¥¼¦w¸Ë, ©ÎªÌ±zªº ¼Ò²Õ²ÕºA ¦³°ÝÃD. index_econf=AWStats ³]©wÀɽd¥» $1 ¦b±zªº¨t²Î¤¤§ä¤£¨ì. ¤]³\ AWStats ©|¥¼¦w¸Ë, ©ÎªÌ±zªº ¼Ò²Õ²ÕºA ¦³°ÝÃD. index_cgi=CGI ¸ô®|¨S¦³³]©w index_add=·s¼W¤@­Ó¤ÀªR³]©wÀÉ. index_path=³]©wÀÉ index_type=Ãþ«¬ index_size=¤j¤p index_create=«Ø¥ß/­×§ï¤é´Á index_databasesize=¸ê®Æ®wÀɮפj¤p index_noconfig=§ä¤£¨ì³]©wÀɩΤw¤ÀªRÀÉ. index_edit=½s¿è/§R°£³]©w index_del=§R°£³]©w index_scheduled=¤w±Æµ{§ó·s index_sched2=±Æµ{ index_now=²{¦b index_update=§ó·sª¬ºA index_update2=¥ß§Y§ó·s index_view=À˵øª¬ºA index_view2=À˵ø index_return=³]©wÀɦCªí index_eversion=AWStats «ü¥O $1 ¦b±zªº¨t²Î¤¤ªºª©¥»¬O $2, ¦ý¬O³o­Ó¼Ò²Õ¶È¤ä´©ª©¥» $3 ©Î¥H¤Wª©¥». index_egetversion=AWStats ª©¥»¨ú±o¥¢±Ñ. «ü¥O $1 ¶Ç¦^ : $2.
    ¤]³\±zªº ¼Ò²Õ²ÕºA ¦³°ÝÃD. index_advanced1=À˵ø OPTIONAL SETUP SECTION ¤Uªº¿ï¶µ index_advanced2=À˵ø OPTIONAL ACCURACY SETUP SECTION ¤Uªº¿ï¶µ index_advanced3=À˵ø OPTIONAL APPEARANCE SETUP SECTION ¤Uªº¿ï¶µ index_advanced4=À˵ø OPTIONAL PLUGINS SETUP SECTION ¤Uªº¿ï¶µ index_advanced5=À˵ø OPTIONAL EXTRA SETUP SECTION ¤Uªº¿ï¶µ index_hideadvanced=ÁôÂëD¥²­n¿ï¶µ index_nodirallowed=±zªº¨Ï¥ÎªÌ $1 ¤£¤¹³\¦s¨ú AWStats ³]©wÀÉ. index_allowed=±zªº±b¸¹ $1 ¤¹³\±zÀ˵ø©M­×§ï¬ö¿ýÀɨì (©ÎªÌ¬O³sµ²¨ì) index_changeallowed=¦b AWStats ³]©wÀɤ¤¥i¦s¨úªº¸ô®|¡A±z¥i¦b webmin ¤ºÃö©ó Webmin ¨Ï¥ÎªÌªº¬ÛÃöÅv­­¤¤³]©w (¿ï³æ $1 µM«á¿ï¾Ü $2) index_viewall=À˵ø¥þ³¡¦³®Äªº³]©wÀÉ edit_title1=·s¼W³]©wÀÉ edit_title2=½s¿è³]©wÀÉ edit_header=³]©wÀÉ $1 »²§U½s¿è¾¹ edit_headernew=³]©wÀɲ£¥Í§U¤â edit_file=Àɮפº®e edit_add=­n·s¼Wªº³]©wÀɦW edit_create_by_copy=±q¤w¦³ªº³]©wÀɽƻs¨ì¥t¥~¤@­Ó·sªº³]©wÀÉ edit_create_from_scratch=«Ø¥ß¤@­Ó·sªº³]©wÀɦp¥H¤U°Ñ¼Æ©M³]©w edit_config_to_copy=­n½Æ»sªº³]©wÀɦWºÙ edit_user=°õ¦æ AWStats ªº¨Ï¥ÎªÌ edit_ecannot=±z¤£¥i¥H½s¿è³o­Ó³]©wÀÉ edit_efilecannot=³]©wÀɦW '$1' ¤£¦b±z¥i¥H¦s¨úªº¥Ø¿ý¤¤ save_err=²£¥Í³]©wÀÉ¥¢±Ñ save_efile=³]©wÀɦW¨S¦³¿é¤J save_fileexists=³]©wÀɤw¦s¦b save_edir=¦b±zªº Webmin Åv­­±±¨î¤¤¤£¤¹³\ '$1' ¥Ø¿ý¼g¤J±zªº³]©wÀÉ. save_ecannot=±z¶È¥i¥HÀ˵ø©Î²£¥Í³øªí¦b $1 ¤§¤U save_errLogFile=LogFile °Ñ¼Æ³]©w¦³°ÝÃD. °O¿ýÀÉ $1 ¤£¦s¦b©ÎµLªkŪ¨ú. save_errLogFormat=LogFormat °Ñ¼Æ³]©w¦³°ÝÃD. °Ñ¼Æ¨S¦³©w¸q. save_errSiteDomain=SiteDomain °Ñ¼Æ³]©w¦³°ÝÃD. °Ñ¼Æ¨S¦³©w¸q. save_errDirData=DirData °Ñ¼Æ³]©w¦³°ÝÃD. °Ñ¼Æ¨S¦³©w¸q©Î¥Ø¿ý¤£¦s¦b. save_dirnotexists=¸ô®|¤£¦s¦b update_title=§ó·sª¬ºA update_ecannot=±z¤£¥i¥H§ó·sª¬ºA update_run=³z¹L«ü¥O°õ¦æ§ó·s§@·~ update_finished=§ó·s§@·~§¹¦¨ update_wait=½Ðµy­Ô schedule_title=±Æµ{ª¬ºA§ó·s schedule_ecannot=±zµLªk§ó·s©Î±Æµ{§ó·s log_create_log=«Ø¥ß AWStats ³]©wÀÉ $1 log_modify_log=­×§ï AWStats ³]©wÀÉ $1 log_delete_log=§R°£ AWStats ³]©wÀÉ $1 log_generate_log=§ó·s AWStats ª¬ºAµ¹ $1 acl_view=¤w¦s¦bªº³]©wÀÉ¥i¥HÀ˵ø³øªí? acl_global=¥i¥H½s¿è awstats ³]©wÀÉ? acl_add=¥i¥H·s¼W©M§R°£³]©wÀÉ? acl_update=¥Ø«e¤w¦s¦bªº³]©wÀÉ¥i¥HÅܧ󪬺A? acl_user=°õ¦æ AWStats ¬° Unix ¥Î¤á acl_this=¥Ø«e webmin ¥Î¤á acl_any=¥ô¦ó¥Î¤á acl_dir=¶È¤¹³\À˵ø³øªí©M½s¿è³]©w¦b (¥Ø¿ý¸ô®|¡A¤£¥i¬°³sµ²) help_title=»¡©ú­¶­± help_subtitle=³]©wÀɰѼƻ¡©ú $1 help_subtitleplugin=¥~±¾®M¥ó»¡©ú $1 help_notfound=°Ñ¼Æ¦b±zªº½d¥»ÀÉ $1 ¤º¨S¦³§ä¨ì.
    ¤]³\±zªº AWStats ª©¥»¤£¤ä´©, ©Ò¥H¨S¦³¿ìªk´£¨Ñ¬ÛÃö»¡©ú¨ó§U. help_help=»¡©ú help_starrequired=¹w³]­È¨Ã¨S¦³¥ô¦ó³]©w¡A¥B¸Ó¿ï¶µ¥²¶·³]©w°Ñ¼Æ. ¤£¯à¬OªÅ¥Õ. viewall_title=À˵ø¥þ³¡³]©wÀÉ viewall_notallowed=±z¨S¦³Åv­­¬Ý³o­Óª¬ºA viewall_allowed=¥H¤U¸ê®Æ§¨¤¤¡A§ä¨ì¨Ï¥ÎªÌ $1 ¥i¦s¨úªº³]©wÀÉ viewall_period=°Ï¶¡ viewall_u=°ß¤@³X«È¼Æ viewall_v=³X«È¼Æ viewall_p=­¶­± viewall_h=ÂIÀ» viewall_k=ÀW¼e month01=¤@¤ë month02=¤G¤ë month03=¤T¤ë month04=¥|¤ë month05=¤­¤ë month06=¤»¤ë month07=¤C¤ë month08=¤K¤ë month09=¤E¤ë month10=¤Q¤ë month11=¤Q¤@¤ë month12=¤Q¤G¤ëawstats/lang/zh_TW.UTF-80000644000175000017500000001137612410217071017214 0ustar ldestailleurldestailleurall_gb=GB all_mb=MB all_kb=KB all_b=Bytes index_title=AWStats 記錄檔分æžå™¨ index_version=AWStats 版本 $1 index_eawstats=è¨˜éŒ„æª”åˆ†æžæŒ‡ä»¤ $1 在您的系統中找ä¸åˆ°. 也許 AWStats 尚未安è£, 或者您的 模組組態 有å•題. index_econfdir=AWStats 設定目錄 $1 在您的系統中找ä¸åˆ°. 也許 AWStats 尚未安è£, 或者您的 模組組態 有å•題. index_econf=AWStats 設定檔範本 $1 在您的系統中找ä¸åˆ°. 也許 AWStats 尚未安è£, 或者您的 模組組態 有å•題. index_cgi=CGI 路徑沒有設定 index_add=新增一個分æžè¨­å®šæª”. index_path=設定檔 index_type=類型 index_size=å¤§å° index_create=建立/修改日期 index_databasesize=è³‡æ–™åº«æª”æ¡ˆå¤§å° index_noconfig=找ä¸åˆ°è¨­å®šæª”æˆ–å·²åˆ†æžæª”. index_edit=編輯/刪除設定 index_del=刪除設定 index_scheduled=已排程更新 index_sched2=排程 index_now=ç¾åœ¨ index_update=更新狀態 index_update2=ç«‹å³æ›´æ–° index_view=檢視狀態 index_view2=檢視 index_return=設定檔列表 index_eversion=AWStats 指令 $1 在您的系統中的版本是 $2, 但是這個模組僅支æ´ç‰ˆæœ¬ $3 或以上版本. index_egetversion=AWStats 版本å–得失敗. 指令 $1 傳回 : $2.
    也許您的 模組組態 有å•題. index_advanced1=檢視 OPTIONAL SETUP SECTION 下的é¸é … index_advanced2=檢視 OPTIONAL ACCURACY SETUP SECTION 下的é¸é … index_advanced3=檢視 OPTIONAL APPEARANCE SETUP SECTION 下的é¸é … index_advanced4=檢視 OPTIONAL PLUGINS SETUP SECTION 下的é¸é … index_advanced5=檢視 OPTIONAL EXTRA SETUP SECTION 下的é¸é … index_hideadvanced=éš±è—éžå¿…è¦é¸é … index_nodirallowed=您的使用者 $1 ä¸å…è¨±å­˜å– AWStats 設定檔. index_allowed=您的帳號 $1 å…許您檢視和修改紀錄檔到 (或者是連çµåˆ°) index_changeallowed=在 AWStats 設定檔中å¯å­˜å–的路徑,您å¯åœ¨ webmin 內關於 Webmin 使用者的相關權é™ä¸­è¨­å®š (é¸å–® $1 ç„¶å¾Œé¸æ“‡ $2) index_viewall=檢視全部有效的設定檔 edit_title1=新增設定檔 edit_title2=編輯設定檔 edit_header=設定檔 $1 輔助編輯器 edit_headernew=設定檔產生助手 edit_file=檔案內容 edit_add=è¦æ–°å¢žçš„設定檔å edit_create_by_copy=從已有的設定檔複製到å¦å¤–一個新的設定檔 edit_create_from_scratch=å»ºç«‹ä¸€å€‹æ–°çš„è¨­å®šæª”å¦‚ä»¥ä¸‹åƒæ•¸å’Œè¨­å®š edit_config_to_copy=è¦è¤‡è£½çš„設定檔å稱 edit_user=執行 AWStats 的使用者 edit_ecannot=您ä¸å¯ä»¥ç·¨è¼¯é€™å€‹è¨­å®šæª” edit_efilecannot=設定檔å '$1' ä¸åœ¨æ‚¨å¯ä»¥å­˜å–的目錄中 save_err=產生設定檔失敗 save_efile=è¨­å®šæª”åæ²’有輸入 save_fileexists=設定檔已存在 save_edir=在您的 Webmin æ¬Šé™æŽ§åˆ¶ä¸­ä¸å…許 '$1' 目錄寫入您的設定檔. save_ecannot=您僅å¯ä»¥æª¢è¦–或產生報表在 $1 之下 save_errLogFile=LogFile åƒæ•¸è¨­å®šæœ‰å•題. 記錄檔 $1 ä¸å­˜åœ¨æˆ–無法讀å–. save_errLogFormat=LogFormat åƒæ•¸è¨­å®šæœ‰å•題. åƒæ•¸æ²’有定義. save_errSiteDomain=SiteDomain åƒæ•¸è¨­å®šæœ‰å•題. åƒæ•¸æ²’有定義. save_errDirData=DirData åƒæ•¸è¨­å®šæœ‰å•題. åƒæ•¸æ²’有定義或目錄ä¸å­˜åœ¨. save_dirnotexists=路徑ä¸å­˜åœ¨ update_title=更新狀態 update_ecannot=您ä¸å¯ä»¥æ›´æ–°ç‹€æ…‹ update_run=é€éŽæŒ‡ä»¤åŸ·è¡Œæ›´æ–°ä½œæ¥­ update_finished=æ›´æ–°ä½œæ¥­å®Œæˆ update_wait=è«‹ç¨å€™ schedule_title=排程狀態更新 schedule_ecannot=您無法更新或排程更新 log_create_log=建立 AWStats 設定檔 $1 log_modify_log=修改 AWStats 設定檔 $1 log_delete_log=刪除 AWStats 設定檔 $1 log_generate_log=æ›´æ–° AWStats 狀態給 $1 acl_view=已存在的設定檔å¯ä»¥æª¢è¦–報表? acl_global=å¯ä»¥ç·¨è¼¯ awstats 設定檔? acl_add=å¯ä»¥æ–°å¢žå’Œåˆªé™¤è¨­å®šæª”? acl_update=ç›®å‰å·²å­˜åœ¨çš„設定檔å¯ä»¥è®Šæ›´ç‹€æ…‹? acl_user=執行 AWStats 為 Unix 用戶 acl_this=ç›®å‰ webmin 用戶 acl_any=任何用戶 acl_dir=僅å…許檢視報表和編輯設定在 (目錄路徑,ä¸å¯ç‚ºé€£çµ) help_title=說明é é¢ help_subtitle=è¨­å®šæª”åƒæ•¸èªªæ˜Ž $1 help_subtitleplugin=外掛套件說明 $1 help_notfound=åƒæ•¸åœ¨æ‚¨çš„範本檔 $1 內沒有找到.
    也許您的 AWStats ç‰ˆæœ¬ä¸æ”¯æ´, 所以沒有辦法æä¾›ç›¸é—œèªªæ˜Žå”助. help_help=說明 help_starrequired=é è¨­å€¼ä¸¦æ²’有任何設定,且該é¸é …å¿…é ˆè¨­å®šåƒæ•¸. ä¸èƒ½æ˜¯ç©ºç™½. viewall_title=檢視全部設定檔 viewall_notallowed=您沒有權é™çœ‹é€™å€‹ç‹€æ…‹ viewall_allowed=以下資料夾中,找到使用者 $1 å¯å­˜å–的設定檔 viewall_period=å€é–“ viewall_u=唯一訪客數 viewall_v=訪客數 viewall_p=é é¢ viewall_h=點擊 viewall_k=頻寬 month01=一月 month02=二月 month03=三月 month04=四月 month05=五月 month06=六月 month07=七月 month08=八月 month09=乿œˆ month10=åæœˆ month11=å一月 month12=å二月awstats/install_check.pl0000644000175000017500000000057512410217071017652 0ustar ldestailleurldestailleur# install_check.pl do 'awstats-lib.pl'; # is_installed(mode) # For mode 1, returns 2 if AWStats is installed and configured for use by # Webmin, 1 if installed but not configured, or 0 otherwise. # For mode 0, returns 1 if installed, 0 if not sub is_installed { if (! -r $config{'awstats'}) { return 0; } if ($_[0]) { if (-r $config{'alt_conf'}) { return 2; } } return 1; } awstats/config.info.fr0000644000175000017500000000257212410217071017241 0ustar ldestailleurldestailleurawstats=Chemin absolu du programme AWStats de mise a jour des statistiques
    (Exemple:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0 awstats_cgi=URL absolue ou relative d'AWStats en CGI (Exemple:/awstats/awstats.pl),0 alt_conf=Fichier mod�le de configuration AWStats,3,/etc/awstats/awstats.model.conf plugin_1_geoip=Chemin du fichier de la base Maxmind GeoIP country
    (pour plugin AWStats geoip),3,/usr/local/share/GeoIP/GeoIP.dat plugin_2_geoip_region_maxmind=Chemin du fichier de la base Maxmind GeoIP region
    (pour plugin geoip_region_maxmind),3,/usr/local/share/GeoIP/GeoIPRegion.dat plugin_3_geoip_city_maxmind=Chemin du fichier de la base Maxmind GeoIP city
    (pour plugin geoip_city_maxmind),3,/usr/local/share/GeoIP/GeoIPCity.dat plugin_4_geoip_isp_maxmind=Chemin du fichier de la base Maxmind GeoIP isp
    (pour plugin geoip_isp_maxmind),3,/usr/local/share/GeoIP/GeoIPISP.dat plugin_5_geoip_org_maxmind=Chemin du fichier de la base Maxmind GeoIP org
    (pour plugin geoip_org_maxmind),3,/usr/local/share/GeoIP/GeoIPOrg.dat awstats/module.info0000644000175000017500000000057312410217071016652 0ustar ldestailleurldestailleurcategory=system desc=AWStats Logfile Analyzer longdesc=Generate and analyze graphicaly statistics from web, proxy, wap, ftp or mail server log files name=AWStats version=2.000 depends=webmin 1.510 depends=cron 1.000 depends=logrotate 1.131 desc_fr=Analyseur de Logs AWStats long_desc_fr=Generation et analyse graphique de statistiques a partir des logs de server web, ftp ou mailawstats/images/0000777000175000017500000000000012410217071015754 5ustar ldestailleurldestailleurawstats/images/hp.png0000644000175000017500000000041512410217071017065 0ustar ldestailleurldestailleur‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:54:20 +0100ËMtIMEÓ 6?dó pHYs ð ðB¬4˜gAMA± üa-PLTEB”JÎ!cÖB„ï{­ÿ­Æÿ­½ÿœ½ÿ„¥ïs”çcŒÞR{Î)Z½9­R­i;¾(IDATxÚcxÀÀÀpáÆ   će˜ƒk IEND®B`‚awstats/images/.cvsignore0000644000175000017500000000000512410217071017743 0ustar ldestailleurldestailleur*.db awstats/images/icon.gif0000644000175000017500000000264612410217071017377 0ustar ldestailleurldestailleurGIF87a00÷JR{JR„JZŒRR{RR„RZ{RZ„RZŒRZ”RZœRZ¥ÿÿÿZZsZZ„Zc„ZcŒZc”Zc¥Zc­Zc½ZkµZk½ZkÆZkÎcZZccscc{cc„ccŒcc”ckŒck½ckÆcsÎkZZkc„kk„kkŒkk”kk½ksÎk{Öss”s{½s{Ö{cR{kR{kc{s{{{œ{{Æ{„µ{„½{„΄{„„„µ„„Æ„Œ¥„ŒÆ„ŒÖŒ{”Œ„ŒŒ„­ŒŒœŒŒ½Œ”ÎŒ”ÞŒœÞ”{””„„”ŒŒœ{½œ„kœŒœœœÎœ¥Îœ¥Þ¥„k¥Œk¥”¥¥¥½¥¥Î­””­­½­­Îµ”{µœ{µ¥­µ¥ÎµµÆµµÎµ½Þ½œ{½¥„½¥œ½­Ö½½Ö½½ç½ÆÞ½ÆçÆ¥¥Æ­”Æ­¥ÆÆÖÎsÆÎ{Î΄ÆÎŒÆÎ”­Î”ÎέŒÎ­œÎµ”ε¥Îµ½ÎÎÖÎÎÞÎÎçÎÖïÖ„ÎÖŒÎÖ”ÎÖœÎÖœÖÖ¥ÖÖµŒÖ½œÖÖÞÖÖçÖÞïÞœÖÞ¥ÖÞ­ÖÞ­ÞÞµŒÞµÞÞ½”Þ½œÞƵÞç÷çµÞç½Þç½ççÆœçÆÞçÆççÎççÖÎçÞÖççÞçççççïçç÷çï÷ïÎ¥ïÎçïÎïïÖïïÞÎïÞÖïÞïïçïïï÷÷ç÷÷ï÷÷÷÷÷÷ÿ÷ÿÿÿ÷ïÿ÷÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,00þH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£ÇtxÍÈg|ÜP¢$ŒË%ÑHúxFÅ?¼˜ñråS˜%Û@Zã1ËzHqÓÇ—2ŠJªˆF$I¢ ³Ð@©”2OÊxéÓ‡ÍTz¬<¤(4z†i0`€*n¹rÅ œ7}~ ,Ùv0š60Ѭ!ŒÐGÝ0œHÑ ¤L¢8‰àÀ¼@ÍL‚zª&ƺÒÁ?ê2xÄ —2oâ(Š¢(Q`˜ˆ¾U[2Ï@Ig fP€A Hªtéƒèʤ9Tt¼©ÁÙ¤ÛÅ aÕ]xAŒ0þOÞÅ ¢8sJÙa†úÀÅ¡M3äC¨`˜ˆG®œ¹¦?¡”„5Ô˜hY7Ð\P€-ØàDyˆhâ‰%©„B CÄDžFƒ8hÀNpaÞ#Šh±È(„°„EC‰È€ƒl`­-‡ˆ5BJXĘ@a´Ÿ 68p€ *"âÇ (TÂBØ÷ÒAZ,E^F¡×—Kát`iòÀÃ9œ Áœs®@f+( €—gD…K*èJ€.ÑÁ@Љª B +œ '@hžz*Ä€0„ $0€4¸AreÜðD C^p[6tH}%=QÀ&`€„Rl#° QU‡B‚ƒà ^€ ®rvp ”…‰àù D;¤±’›@?0Û 7Í- °Ž¤‚º¾"ð­hqº¾–X" |@Ǿe¡‚ À€9XKð.EüðÄWlñÅg¬ñÆwLq@;awstats/images/hh.png0000644000175000017500000000041212410217071017052 0ustar ldestailleurldestailleur‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:50:24 +0100þ°O$tIMEÓ 2#s fi pHYs ð ðB¬4˜gAMA± üa*PLTE””ÆÎ!ÎÖBçï{ÿÿ­÷ÿœ÷ÿ„çïsÞçcÖÞRÆÎ1µ½¥­­­#W–4(IDATxÚc¸ÉÀÈpžaÆ õ ! Á ^ ö " ü_hð*CÞIEND®B`‚awstats/images/smallicon.gif0000644000175000017500000000175712410217071020432 0ustar ldestailleurldestailleurGIF89a‡JR{JR„JZŒRR{RR„RZ{RZ„RZŒRZ”RZœRZ¥ÿÿÿZZsZZ„Zc„ZcŒZc”Zc¥Zc­Zc½ZkµZk½ZkÆZkÎcZZccscc{cc„ccŒcc”ckŒck½ckÆcsÎkZZkc„kk„kkŒkk”kk½ksÎk{Öss”s{½s{Ö{cR{kR{kc{s{{{œ{{Æ{„µ{„½{„΄{„„„µ„„Æ„Œ¥„ŒÆ„ŒÖŒ{”Œ„ŒŒ„­ŒŒœŒŒ½Œ”ÎŒ”ÞŒœÞ”{””„„”ŒŒœ{½œ„kœŒœœœÎœ¥Îœ¥Þ¥„k¥Œk¥”¥¥¥½¥¥Î­””­­½­­Îµ”{µœ{µ¥­µ¥ÎµµÆµµÎµ½Þ½œ{½¥„½¥œ½­Ö½½Ö½½ç½ÆÞ½ÆçÆ¥¥Æ­”Æ­¥ÆÆÖÎsÆÎ{Î΄ÆÎŒÆÎ”­Î”ÎέŒÎ­œÎµ”ε¥Îµ½ÎÎÖÎÎÞÎÎçÎÖïÖ„ÎÖŒÎÖ”ÎÖœÎÖœÖÖ¥ÖÖµŒÖ½œÖÖÞÖÖçÖÞïÞœÖÞ¥ÖÞ­ÖÞ­ÞÞµŒÞµÞÞ½”Þ½œÞƵÞç÷çµÞç½Þç½ççÆœçÆÞçÆççÎççÖÎçÞÖççÞçççççïçç÷çï÷ïÎ¥ïÎçïÎïïÖïïÞÎïÞÖïÞïïçïïï÷÷ç÷÷ï÷÷÷÷÷÷ÿ÷ÿÿÿ÷ïÿ÷÷ÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù ,ÌH° Áƒ*\Ȱ¡Ã‡ŠèCI˜0Ñ<Ì ‡7e©‘x‚ahPä œ>5 <ÔfÆ5 xa¥Lœ(‰0N´9‘ÐÀ¡ `pQÅMœR,jÌ”YPf˜Z8q£ÉR©$BÆÀHº ªQ#B-Q–D2AxäÀ7î QJ.TÀ@ Un´½ p Œi’ÀjÀF /¬¹À@$T@±3>”&{qµë×°cË^;awstats/images/hv.png0000644000175000017500000000030312410217071017067 0ustar ldestailleurldestailleur‰PNG  IHDR šùÁ'PLTEÖÎRÞÆcïÞ{÷çœ÷ï­ïç¥çÞœÞÖŒÖ΄νk½µJ­œJ½­Zì ŸƒbKGDˆH pHYs ð ðB¬4˜tIMEÕ)ÆúÀâ"IDATxÚc```P`0`p``H`(`h`˜À°€aÃ(ºá­›IEND®B`‚awstats/images/hk.png0000644000175000017500000000040612410217071017060 0ustar ldestailleurldestailleur‰PNG  IHDR%±„/tEXtCreation Timejeu. 16 janv. 2003 13:51:50 +0100ïø tIMEÓ 39—s®R pHYs ð ðB¬4˜gAMA± üa'PLTEN2€QˆV q%µœR²±?«¢.¤•• Ž}ˆmxLfA5QÍ'IDATxÚc8ÀÀÀp€aÆ  @èÀ`À À ÎÀy…ø&ƒ‘-IEND®B`‚awstats/images/hu.png0000644000175000017500000000025612410217071017075 0ustar ldestailleurldestailleur‰PNG  IHDR 絓¥bKGDÿÿÿ ½§“ pHYs ð ðB¬4˜tIMEÕ*}hް;IDATxÚÁ¡À0 AÍ!Cч*#u¥Ï¤C›½X ³Ï=R‘uYtoŽÍwš¶ñžô|Y+òÍ$9“ø›vIEND®B`‚awstats/images/info.png0000644000175000017500000000120112410217071017403 0ustar ldestailleurldestailleur‰PNG  IHDR(-SgAMA± üaAPLTE>k>m>nDm@l EqCq'\~,p—'hŽV„Fl 0W Cn*a:§;€¨ÿÿÿHgT€ Cs)KGt<¥G޲I‘¶$RoaŠ O~6a -O=i!aŽBˆ±Q™¾VšÁL³?{ž5q”-n˜M}?r6c.Nd”G¶VžÃ)Wt-n”XƒHv0Z-S`?l,R%K*NM}OQ~Pz9c2V&G8c:k)J%F.P-T,Q'O)JÙÉ[½tRNS@æØfbKGDˆH pHYs  ÒÝ~ütIMEÑ 8|"„n©IDATxœc` 021³°"¸lìœ\Ü<¼lP>¿€ °ˆ¨TD\BRJHHZFVNÌWPTRVQUS×ÐÔÒÖ 0éêé ›˜‚ÌÌ-”U„„,­¬mlí@öŽ 3œœ]\ÝÜAž^ÞBB>¾~þ`Sƒ‚CB†„…GDBÝÅŸs[TR²}DJ*Œié™Yؽ š@Ú|ÆqçIEND®B`‚awstats/postinstall.pl0000644000175000017500000000007312410217071017414 0ustar ldestailleurldestailleur require 'awstats-lib.pl'; sub module_install { } 1; awstats/acl_security.pl0000644000175000017500000000463212410217071017533 0ustar ldestailleurldestailleur do 'awstats-lib.pl'; # acl_security_form(&options) # Output HTML for editing security options for the awstats module sub acl_security_form { print " $text{'acl_view'}\n"; printf " %s\n", $_[0]->{'view'} ? "checked" : "", $text{'yes'}; printf " %s \n", $_[0]->{'view'} ? "" : "checked", $text{'no'}; print " $text{'acl_global'}\n"; printf " %s\n", $_[0]->{'global'} ? "checked" : "", $text{'yes'}; printf " %s \n", $_[0]->{'global'} ? "" : "checked", $text{'no'}; print " $text{'acl_add'}\n"; printf " %s\n", $_[0]->{'add'} ? "checked" : "", $text{'yes'}; printf " %s \n", $_[0]->{'add'} ? "" : "checked", $text{'no'}; print " $text{'acl_update'}\n"; printf " %s\n", $_[0]->{'update'} ? "checked" : "", $text{'yes'}; printf " %s \n", $_[0]->{'update'} ? "" : "checked", $text{'no'}; print " $text{'acl_user'}\n"; printf " %s\n", $_[0]->{'user'} eq "" ? "checked" : "", $text{'acl_this'}; printf " %s\n", $_[0]->{'user'} eq "*" ? "checked" : "", $text{'acl_any'}; printf "\n", $_[0]->{'user'} eq "*" || $_[0]->{'user'} eq "" ? "" : "checked"; printf " %s \n", $_[0]->{'user'} eq "*" ? "" : $_[0]->{'user'}, &user_chooser_button("user"); print " $text{'acl_dir'}\n"; print " \n"; } # acl_security_save(&options) # Parse the form for security options for the shell module sub acl_security_save { $_[0]->{'view'} = $in{'view'}; $_[0]->{'global'} = $in{'global'}; $_[0]->{'add'} = $in{'add'}; $_[0]->{'update'} = $in{'update'}; $_[0]->{'dir'} = $in{'dir'}; $_[0]->{'user'} = $in{'user_def'} == 2 ? "*" : $in{'user_def'} == 1 ? "" : $in{'user'}; } awstats/config.info.zh_TW.UTF-80000644000175000017500000000276212410217071020470 0ustar ldestailleurldestailleurawstats=æ›´æ–° AWStats 紀錄的完整檔案路徑和指令
    (例如:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0 awstats_cgi=AWStats CGI çš„ URL çµ•å°æˆ–者是相å°è·¯å¾‘
    (例如:/awstats/awstats.pl),0 alt_conf=AWStats 設定檔樣本,3,/etc/awstats/awstats.model.conf plugin_1_geoip=Maxmind GeoIP 國家資料庫檔案 路徑
    (如果 AWStats geoip 擴充套件始啟動的情æ³ä¸‹),3,/usr/local/share/GeoIP/GeoIP.dat plugin_2_geoip_region_maxmind=Maxmind GeoIP å€åŸŸè³‡æ–™åº«æª”案 路徑
    (如果 AWStats geoip_region_maxmind 擴充套件始啟動的情æ³ä¸‹),3,/usr/local/share/GeoIP/GeoIPRegion.dat plugin_3_geoip_city_maxmind=Maxmind GeoIP 程å¼è³‡æ–™åº«æª”案 路徑
    (如果 AWStats geoip_city_maxmind 擴充套件始啟動的情æ³ä¸‹),3,/usr/local/share/GeoIP/GeoIPCity.dat plugin_4_geoip_isp_maxmind=Maxmind GeoIP isp 資料庫檔案 路徑
    (如果 AWStats geoip_isp_maxmind 擴充套件始啟動的情æ³ä¸‹),3,/usr/local/share/GeoIP/GeoIPISP.dat plugin_5_geoip_org_maxmind=Maxmind GeoIP org 資料庫檔案 路徑
    (如果 AWStats geoip_org_maxmind 擴充套件始啟動的情æ³ä¸‹),3,/usr/local/share/GeoIP/GeoIPOrg.dat awstats/awstats-lib.pl0000644000175000017500000003466712410217071017312 0ustar ldestailleurldestailleur# awstats-lib.pl # Common functions for editing the awstats config file BEGIN { push(@INC, ".."); }; use WebminCore; &init_config(); #$config{'awstats'}||='/usr/local/awstats/wwwroot/cgi-bin/awstats.pl'; $config{'awstats_conf'}||='/etc/awstats'; $config{'alt_conf'}||='/etc/awstats/awstats.model.conf'; $ENV{'AWSTATS_DEL_GATEWAY_INTERFACE'}=1; $cron_cmd = "$module_config_directory/awstats.pl"; %access = &get_module_acl(); #------------------------------------------------------------------------------ # Function: Show help tooltip # Parameters: message urltotooltip # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub hblink { my $t=shift; my $url=shift; return "$t"; } #------------------------------------------------------------------------------ # Function: Update the awstats config file # Parameters: configfile conf # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub update_config { my ($file,$conf)=@_; if (! $file) { error("Call to update_config with wrong parameter"); } open(FILE, $file) || error("Failed to open $file for update"); open(FILETMP, ">$file.tmp") || error("Failed to open $file.tmp for writing"); # $%conf contains param and values my %confchanged=(); my $conflinenb = 0; # First, change values that are already present in old config file while() { my $savline=$_; chomp $_; s/\r//; $conflinenb++; # Remove comments not at beginning of line $_ =~ s/\s#.*$//; # Extract param and value my ($param,$value)=split(/=/,$_,2); $param =~ s/^\s+//; $param =~ s/\s+$//; $value =~ s/#.*$//; $value =~ s/^[\s\'\"]+//; $value =~ s/[\s\'\"]+$//; if ($param) { # cleanparam is param without begining # my $cleanparam=$param; my $wascleaned=0; if ($cleanparam =~ s/^#//) { $wascleaned=1; } if ($cleanparam !~ /LoadPlugin/i && defined($conf->{$cleanparam})) { # Value was provided from submit form in %conf hash array so we change line with this new value $savline = "$cleanparam=\"".($conf->{$cleanparam})."\"\n"; $confchanged{$cleanparam}=1; } if ($cleanparam =~ /^LoadPlugin/i && $conf->{"advanced"} == 4) { # It's a plugin load directive my ($pluginname,$pluginparam)=split(/\s/,$value,2); if ($conf->{"plugin_$pluginname"}) { # Plugin loaded is asked $savline = "$cleanparam=\"$pluginname".($conf->{"plugin_param_$pluginname"}?" ".$conf->{"plugin_param_$pluginname"}:"")."\"\n"; } else { # Plugin loaded is not asked $savline = "#$cleanparam=\"$pluginname".($conf->{"plugin_param_$pluginname"}?" ".$conf->{"plugin_param_$pluginname"}:"")."\"\n"; } $confchanged{"plugin_$pluginname"}=1; } } # Write line print FILETMP "$savline"; } # Now add values for directives that were not present in old config file foreach my $key (keys %$conf) { if ($key eq 'advanced') { next; } # param to know if plugin setup section was opened if ($key =~ /^plugin_/) { next; } # field from plugin section, not an awstats directive if ($confchanged{$key}) { next; } # awstats directive already changed print FILETMP "\n"; print FILETMP "# Param $key added by AWStats Webmin module\n"; print FILETMP "$key=\"$conf->{$key}\"\n"; } # Now add plugin load that were not already present in old config file foreach my $key (keys %$conf) { my $pluginname = $key; if ($pluginname !~ s/^plugin_//) { next; } # not a plugin load row if ($pluginname =~ /^param_/) { next; } # not a plugin load row if ($confchanged{"plugin_$pluginname"}) { next; } # awstats directive or load plugin already changed print FILETMP "\n"; print FILETMP "# Plugin load for plugin $pluginname added by AWStats Webmin module\n"; print FILETMP "LoadPlugin=\"$pluginname".($conf->{"plugin_param_$pluginname"}?" ".$conf->{"plugin_param_$pluginname"}:"")."\"\n"; } close(FILE); close(FILETMP); # Move file to file.sav if (rename("$file","$file.old")==0) { error("Failed to make backup of current config file to $file.old"); } # Move tmp file into config file if (rename("$file.tmp","$file")==0) { error("Failed to move tmp config file $file.tmp to $file"); } return 0; } #------------------------------------------------------------------------------ # Function: Read config file to return value of dirdata parameter # Parameters: configfile # Input: None # Output: None # Return: string dirdata #------------------------------------------------------------------------------ sub get_dirdata { my $dirdata="notfound"; my ($file)=@_; if (! $file) { error("Call to get_dirdata with wrong parameter"); } open(FILE, "<$file") || error("Failed to open $file for read"); # First, search value of DirData parameter while() { my $savline=$_; chomp $_; s/\r//; # Remove comments not at beginning of line $_ =~ s/\s#.*$//; # Extract param and value my ($param,$value)=split(/=/,$_,2); $param =~ s/^\s+//; $param =~ s/\s+$//; $value =~ s/#.*$//; $value =~ s/^[\s\'\"]+//; $value =~ s/[\s\'\"]+$//; if ($param) { # cleanparam is param without begining # my $cleanparam=$param; my $wascleaned=0; if ($cleanparam =~ s/^#//) { $wascleaned=1; } if ($cleanparam =~ /^DirData/) { $dirdata=$value; last; } } } close(FILE); return $dirdata; } use vars qw/ $regclean1 $regclean2 /; $regclean1=qr/<(recnb|\/td)>/i; $regclean2=qr/<\/?[^<>]+>/i; #------------------------------------------------------------------------------ # Function: Clean tags in a string # Parameters: stringtodecode # Input: None # Output: None # Return: decodedstring #------------------------------------------------------------------------------ sub CleanFromTags { my $stringtoclean=shift; $stringtoclean =~ s/$regclean1/ /g; # Replace or with space $stringtoclean =~ s/$regclean2//g; # Remove return $stringtoclean; } #------------------------------------------------------------------------------ # Function: Format value in bytes in a string (Bytes, Kb, Mb, Gb) # Parameters: bytes (integer value or "0.00") # Input: None # Output: None # Return: "x.yz MB" or "x.yy KB" or "x Bytes" or "0" #------------------------------------------------------------------------------ sub Format_Bytes { my $bytes = shift||0; my $fudge = 1; # Do not use exp/log function to calculate 1024power, function make segfault on some unix/perl versions if ($bytes >= ($fudge << 30)) { return sprintf("%.2f", $bytes/1073741824)." $text{'all_gb'}"; } if ($bytes >= ($fudge << 20)) { return sprintf("%.2f", $bytes/1048576)." $text{'all_mb'}"; } if ($bytes >= ($fudge << 10)) { return sprintf("%.2f", $bytes/1024)." $text{'all_kb'}"; } if ($bytes < 0) { $bytes="?"; } return int($bytes).(int($bytes)?" $text{'all_b'}":""); } #------------------------------------------------------------------------------ # Function: Format a number # Parameters: number # Input: None # Output: None # Return: "999 999 999 999" #------------------------------------------------------------------------------ sub Format_Number { my $number = shift||0; $number=~s/(\d)(\d\d\d)$/$1 $2/; $number=~s/(\d)(\d\d\d\s\d\d\d)$/$1 $2/; $number=~s/(\d)(\d\d\d\s\d\d\d\s\d\d\d)$/$1 $2/; return $number; } #------------------------------------------------------------------------------ # Function: save_directive(&config, name, [value]*) # Parameters: &config name [value]* # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub save_directive { local ($conf, $name, @values) = @_; local @old = &find($name, $conf); local $lref = &read_file_lines($conf->[0]->{'file'}); local $i; for($i=0; $i<@old || $i<@values; $i++) { if ($i < @old && $i < @values) { # Just replacing a line $lref->[$old[$i]->{'line'}] = "$name $values[$i]"; } elsif ($i < @old) { # Deleting a line splice(@$lref, $old[$i]->{'line'}, 1); &renumber($conf, $old[$i]->{'line'}, -1); } elsif ($i < @values) { # Adding a line if (@old) { # after the last one of the same type splice(@$lref, $old[$#old]->{'line'}+1, 0, "$name $values[$i]"); &renumber($conf, $old[$#old]->{'line'}+1, 1); } else { # at end of file push(@$lref, "$name $values[$i]"); } } } } #------------------------------------------------------------------------------ # Function: renumber # Parameters: &config line offset # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub renumber { foreach $c (@{$_[0]}) { $c->{'line'} += $_[2] if ($c->{'line'} >= $_[1]); } } #------------------------------------------------------------------------------ # Function: temp_file_name # Parameters: file # Input: None # Output: None # Return: temp_file #------------------------------------------------------------------------------ sub temp_file_name { local $p = $_[0]; $p =~ s/^\///; $p =~ s/\//_/g; return "$module_config_directory/$p.tmp"; } #------------------------------------------------------------------------------ # Function: find # Parameters: name &config #------------------------------------------------------------------------------ sub find { local @rv; foreach $c (@{$_[1]}) { push(@rv, $c) if (lc($c->{'name'}) eq lc($_[0])); } return wantarray ? @rv : $rv[0]; } #------------------------------------------------------------------------------ # Function: find_value # Parameters: name &config #------------------------------------------------------------------------------ sub find_value { local @rv = map { $_->{'value'} } &find(@_); return wantarray ? @rv : $rv[0]; } #------------------------------------------------------------------------------ # Function: all_config_files # Parameters: file #------------------------------------------------------------------------------ sub all_config_files { $_[0] =~ /^(.*)\/([^\/]+)$/; local $dir = $1; local $base = $2; local ($f, @rv); opendir(DIR, $dir); foreach $f (readdir(DIR)) { if ($f =~ /^\Q$base\E/ && -f "$dir/$f") { push(@rv, "$dir/$f"); } } closedir(DIR); return @rv; } #------------------------------------------------------------------------------ # Function: Get the configuration for some log file # Parameters: path #------------------------------------------------------------------------------ sub get_config { local %rv; &read_file($_[0], \%rv) || return undef; return \%rv; } #------------------------------------------------------------------------------ # Function: generate_report_as_pdf # Parameters: file, handle, escape #------------------------------------------------------------------------------ sub generate_report_as_pdf { local $h = $_[1]; local $lconf = &get_config($_[0]); local @all = &all_config_files($_[0]); if (!@all) { print $h "Log file $_[0] does not exist\n"; return; } local ($a, %mtime); foreach $a (@all) { local @st = stat($a); $mtime{$a} = $st[9]; } local $type = $lconf->{'type'} == 1 ? "" : $lconf->{'type'} == 2 ? "-F squid" : $lconf->{'type'} == 3 ? "-F ftp" : ""; local $cfile = &temp_file_name($_[0]); local $conf = -r $cfile ? "-c $cfile" : ""; if ($lconf->{'over'}) { unlink("$lconf->{'dir'}/awstats.current"); unlink("$lconf->{'dir'}/awstats.hist"); } local $user = $lconf->{'user'} || "root"; if ($user ne "root" && -r $cfile) { chmod(0644, $cfile); } foreach $a (sort { $mtime{$a} <=> $mtime{$b} } @all) { local $cmd = "$config{'awstats'} $conf -o '$lconf->{'dir'}' $type -p '$a'"; if ($user ne "root") { $cmd = "su \"$user\" -c \"$cmd\""; } open(OUT, "$cmd 2>&1 |"); while() { print $h $_[2] ? &html_escape($_) : $_; } close(OUT); return 0 if ($?); &additional_config("exec", undef, $cmd); } return 1; } #------------------------------------------------------------------------------ # Function: spaced_buttons #------------------------------------------------------------------------------ sub spaced_buttons { local $pc = int(100 / scalar(@_)); print "\n"; foreach $b (@_) { local $al = $b eq $_[0] && scalar(@_) != 1 ? "align=left" : $b eq $_[@_-1] && scalar(@_) != 1 ? "align=right" : "align=center"; print "\n"; } print "\n"; print "
    $b
    \n"; } #------------------------------------------------------------------------------ # Function: Scan directory $dir for config file. Return an array with full path #------------------------------------------------------------------------------ sub scan_config_dir { my $dir=shift; opendir(DIR, $dir) || return; local @rv = grep { /^awstats\.(.*)conf$/ } sort readdir(DIR); closedir(DIR); foreach my $file (0..@rv-1) { if ($rv[$file] eq 'awstats.model.conf') { next; } $rv[$file]="$dir/".$rv[$file]; #print "$rv[0]\n
    "; } return @rv; } #------------------------------------------------------------------------------ # Function: can_edit_config #------------------------------------------------------------------------------ sub can_edit_config { foreach $d (split(/\s+/, $access{'dir'})) { local $ok = &is_under_directory($d, $_[0]); return 1 if ($ok); } return 0; } 1; awstats/log_parser.pl0000644000175000017500000000103512410217071017174 0ustar ldestailleurldestailleur# log_parser.pl # Functions for parsing this module's logs do 'awstats-lib.pl'; # parse_webmin_log(user, script, action, type, object, ¶ms) # Converts logged information from this module into human-readable form sub parse_webmin_log { local ($user, $script, $action, $type, $object, $p) = @_; if ($type eq "log") { return &text("log_${action}_log", "".&html_escape($object).""); } elsif ($type eq "global") { return $object eq "-" ? $text{"log_global"} : &text("log_global2", "".&html_escape($object).""); } } awstats/index.cgi0000644000175000017500000002207712410217071016306 0ustar ldestailleurldestailleur#!/usr/bin/perl # index.cgi # Display available config files require './awstats-lib.pl'; # Check if awstats is actually installed if (!&has_command($config{'awstats'})) { &header($text{'index_title'}, "", undef, 1, 1, 0, undef); print "
    \n"; print "

    ",&text('index_eawstats', "$config{'awstats'}","$gconfig{'webprefix'}/config.cgi?$module_name"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } # Check AWStats URL # TODO # Get the version number $out = `$config{'awstats'} 2>&1`; if ($out !~ /^----- awstats (\S+)\.(\S+)\s(\S+\s\S+)/) { &header($text{'index_title'}, "", undef, 1, 1, 0, undef); if ($out =~ /^content-type/i) { # To old version. Does not support CLI launch from CGI_GATEWAY interface print "

    ",&text('index_eversion', "$config{'awstats'}", "5.7 or older", "5.8"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } print "
    \n"; print "

    ",&text('index_egetversion', "$config{'awstats'}", "

    $out
    ", "$gconfig{'webprefix'}/config.cgi?$module_name"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } &header($text{'index_title'}, "", undef, 1, 1, 0, undef, undef, undef, &text('index_version', "$1.$2 $3")); my $widthtooltip=560; print < EOF print "
    \n"; if ($1 < 5 || ($1 == 5 && $2 < 8)) { print "

    ",&text('index_eversion', "$config{'awstats'}", "$1.$2", "5.8"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } # Check if sample file exists if (!-r $config{'alt_conf'}) { print "

    ",&text('index_econf', "$config{'alt_conf'}", "$gconfig{'webprefix'}/config.cgi?$module_name"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } my @configdirtoscan=split(/\s+/, $access{'dir'}); if (! @configdirtoscan) { print &text('index_nodirallowed',"$remote_user")."
    \n"; print &text('index_changeallowed',"Webmin - Utilisateurs Webmin", $text{'index_title'})."
    \n"; print "
    \n"; # print "

    ",&text('index_econfdir', "$config{'awstats_conf'}", # "$gconfig{'webprefix'}/config.cgi?$module_name"),"

    \n"; print "


    \n"; &footer("/", $text{'index'}); exit; } # Query apache and squid for their logfiles %auto = map { $_, 1 } split(/,/, $config{'auto'}); if (&foreign_check("apache") && $auto{'apache'}) { &foreign_require("apache", "apache-lib.pl"); $confapache = &apache::get_config(); @dirs = ( &apache::find_all_directives($confapache, "CustomLog"), &apache::find_all_directives($confapache, "TransferLog") ); $root = &apache::find_directive_struct("ServerRoot", $confapache); foreach $d (@dirs) { local $lf = $d->{'words'}->[0]; next if ($lf =~ /^\|/); if ($lf !~ /^\//) { $lf = "$root->{'words'}->[0]/$lf"; } open(FILE, $lf); local $line = ; close(FILE); if (!$line || $line =~ /^([a-zA-Z0-9\.\-]+)\s+\S+\s+\S+\s+\[\d+\/[a-zA-z]+\/\d+:\d+:\d+:\d+\s+[0-9\+\-]+\]/) { push(@config, { 'file' => $lf, 'type' => 1 }); } } } # Build list of config files from allowed directories foreach my $dir (split(/\s+/, $access{'dir'})) { my @conflist=(); push(@conflist, map { $_->{'custom'} = 1; $_ } &scan_config_dir($dir)); foreach my $file (@conflist) { next if (!&can_edit_config($file)); push @config, $file; } } # Write message for allowed directories print &text('index_allowed',"$remote_user"); print ":
    \n"; foreach my $dir (split(/\s/,$access{'dir'})) { print "$dir
    "; } print "
    \n"; print &text('index_changeallowed',"Webmin - Webmin Users", $text{'index_title'})."
    \n"; print "
    "; my $nbofallowedconffound=0; if (scalar @config) { # Loop on each config file foreach my $l (@config) { next if (!&can_edit_config($l)); $nbofallowedconffound++; # Head of config file's table list if ($nbofallowedconffound == 1) { print "$text{'index_add'}

    \n" if ($access{'add'}); if (scalar @config >= 2 && $access{'view'}) { print "$text{'index_viewall'}

    \n"; } print "\n"; print ""; print ""; print ""; print ""; print ""; print "\n"; print "\n"; } # Config file line #local @files = &all_config_files($l); #next if (!@files); local $lconf = &get_config($l); my $conf=""; my $dir=""; if ($l =~ /awstats([^\\\/]*)\.conf$/) { $conf=$1; } if ($l =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; } my $confwithoutdot=$conf; $confwithoutdot =~ s/^\.+//; local ($size, $latest); local @st=stat($l); my ($sec,$min,$hour,$day,$month,$year,$wday,$yday) = localtime($st[9]); $year+=1900; $month++; print '
    '; printf("Configuration file: %s
    \n",$l); printf("Created/Changed: %04s-%02s-%02s %02s:%02s:%02s
    \n",$year,$month,$day,$hour,$min,$sec); print '
    '; print "\n"; print ""; print ""; print ""; printf("",$year,$month,$day,$hour,$min,$sec); # Database size #print ""; if ($access{'update'}) { # Update print ""; print "\n"; } else { print ""; print ""; } # print "\n"; # print "\n"; # print "\n"; # if ($lconf->{'dir'} && -r "$lconf->{'dir'}/index.html") { if ($access{'view'}) { if ($config{'awstats_cgi'}) { print "\n"; } else { print ""; } } else { print ""; } print "\n"; } if ($nbofallowedconffound > 0) { print "
    $text{'index_path'}$text{'index_create'}$text{'index_update'}$text{'index_view'}
    $text{'index_scheduled'}$text{'index_now'}
    $nbofallowedconffound"; print "$confwithoutdot"; if ($access{'global'}) { # Edit config print "
    $text{'index_edit'}\n"; } print "
    %04s-%02s-%02s %02s:%02s:%02sNA$text{'index_sched2'}$text{'index_update2'}NANA",$size > 10*1024*1024 ? int($size/1024/1024)." MB" : # $size > 10*1024 ? int($size/1024)." KB" : # $size ? "$size B" : $text{'index_empty'},"$latest",$lconf->{'sched'} ? $text{'yes'} # : $text{'no'},"$text{'index_view2'}".&text('index_cgi', "$gconfig{'webprefix'}/config.cgi?$module_name")."NA

    \n"; } } if (! $nbofallowedconffound) { print "

    $text{'index_noconfig'}


    \n"; } print "
    \n"; &footer("/", $text{'index'}); awstats/edit_config.cgi0000644000175000017500000014115712410217071017452 0ustar ldestailleurldestailleur#!/usr/bin/perl # edit_config.cgi # Display a form for adding a new config or editing an existing one. require './awstats-lib.pl'; &ReadParse(); if (! $access{'global'}) { &error($text{'edit_ecannot'}); } my $filecontent=""; my $filetoopen=""; if ($in{'new'}) { $filetoopen=$config{'alt_conf'}; } else { $filetoopen=$in{'file'}; } if ($in{'new'}) { $access{'add'} || &error($text{'edit_ecannot'}); &header($text{'edit_title1'}, ""); } else { &can_edit_config($in{'file'}) || &error($text{'edit_ecannot'}); &header($text{'edit_title2'}, ""); } # Get parameters $lconf = &get_config($filetoopen); foreach my $key (keys %$lconf) { $lconf->{$key}=~s/^\s*//g; $lconf->{$key}=~s/^\s*[\"\']//; $lconf->{$key}=~s/#.*$//; $lconf->{$key}=~s/\s*$//g; $lconf->{$key}=~s/[\"\']\s*$//; } # Put in @conflist, list of all existing config my @conflist=(); foreach my $dir (split(/\s+/, $access{'dir'})) { push(@conflist, map { $_->{'custom'} = 1; ($_ !~ /^[\/\\]/ ? $dir.'/':'').$_ } &scan_config_dir($dir)); } print "
    \n"; print < function Submit_onClick() { EOF # If create if ($in{'new'} && scalar @conflist) { print < 1) ? argv[1] : 640; var h = (argc > 2) ? argv[2] : 450; var wfeatures="directories=0,menubar=1,status=0,resizable=1,scrollbars=1,toolbar=0,width="+l+",height="+h+",left=" + eval("(screen.width - l)/2") + ",top=" + eval("(screen.height - h)/2"); fen=window.open(tmp,'window',wfeatures); } EOF if (-d "/private/etc" && ! &can_edit_config("/private/etc")) { # For MacOS users print "Warning: It seems that you are a MacOS user. With MacOS, the '/etc/awstats' directory is not a hard directory but a link to '/private/etc/awstats' which is not by default an allowed directory to store config files, so if you want to store config files in '/etc/awstats', you must first change the Webmin ACL for AWStats module to add '/private/etc' in the allowed directories list:
    \n"; print &text('index_changeallowed',"Webmin - Webmin Users", $text{'index_title'})."
    \n"; } print "
    \n"; print "\n"; print "\n"; print "
    "; if ($in{'new'}) { print &text('edit_headernew'); } else { print &text('edit_header',$in{'file'}); } print "
    \n"; my $filenametosave=""; if ($in{'new'}) { print "\n"; print "
    $text{'edit_add'} \n"; my $newfile="/etc/awstats/awstats.newconfig.conf"; print ""; print "
    \n"; if (scalar @conflist) { print "
    ".$text{'edit_create_by_copy'}; print "
    \n"; print "\n"; print "\n"; print "
    $text{'edit_config_to_copy'} \n"; print ""; print "
    \n"; } print "
    ".$text{'edit_create_from_scratch'}; print "
    \n"; print "\n"; } else { print "\n"; } print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; if ($in{'advanced'} == 1) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } else { print "\n"; } print "\n"; print "\n"; if ($in{'advanced'} == 2) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } else { print "\n"; } print "\n"; print "\n"; if ($in{'advanced'} == 3) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; # print "\n"; # print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; # print "\n"; print "\n"; } else { print "\n"; } print "\n"; print "\n"; if ($in{'advanced'} == 4) { my $conflinenb = 0; my @pconfparam=(); my @pconfvalue=(); my @pconfvaluep=(); my %pluginlinefound=(); # Search the loadable plugins in edited config file open(FILE, $filetoopen) || error("Failed to open $filetoopen for reading plugins' config"); while() { my $savline=$_; chomp $_; s/\r//; $conflinenb++; if ($_ =~ /^#?LoadPlugin/i) { # Extract param and value my ($load,$value)=split(/=/,$_,2); # Remove comments not at beginning of line $param =~ s/^\s+//; $param =~ s/\s+$//; $value =~ s/#.*$//; $value =~ s/^[\s\'\"]+//g; $value =~ s/[\s\'\"]+$//g; ($value1,$value2)=split(/\s/,$value,2); if ($value1 =~ /^graph3d$/i) { next; } if (! $pluginlinefound{$value1}) { # To avoid plugin to be shown twice $pluginlinefound{$value1}=1; push @pconfparam, $value1; push @pconfvaluep, $value2; my $active=0; if ($load !~ /#.*LoadPlugin/i) { $active=1; } push @pconfactive, $active; } } } close FILE; # Search the loadable plugins in sample config file (if not new) if (! $in{'new'}) { open(FILE, $config{'alt_conf'}) || error("Failed to open $config{'alt_conf'} for reading available plugins"); while() { my $savline=$_; chomp $_; s/\r//; $conflinenb++; if ($_ =~ /^#?LoadPlugin/i) { # Extract param and value my ($load,$value)=split(/=/,$_,2); # Remove comments not at beginning of line $param =~ s/^\s+//; $param =~ s/\s+$//; $value =~ s/#.*$//; $value =~ s/^[\s\'\"]+//g; $value =~ s/[\s\'\"]+$//g; ($value1,$value2)=split(/\s/,$value,2); if ($value1 =~ /^graph3d$/i) { next; } if (! $pluginlinefound{$value1}) { # To avoid plugin to be shown twice push @pconfparam, $value1; push @pconfvaluep, $value2; # Plugin in sample but not in config file is by default not enabled. my $active=0; push @pconfactive, $active; } } } close FILE; } print "\n"; foreach my $key (0..(@pconfparam-1)) { print "\n"; } print "\n"; } else { print "\n"; } print "\n"; if ($advanced) { print "\n"; print "\n"; print "\n"; } print "
    MAIN SETUP SECTION (Required to make AWStats work)

    LogFile* ".&file_chooser_button("LogFile",0,0)." "; print &hblink($text{'help_help'}, "help.cgi?param=LogFile")."
    LogType* "; print "\n"; print " "; print &hblink($text{'help_help'}, "help.cgi?param=LogType")."
    LogFormat* "; print &hblink($text{'help_help'}, "help.cgi?param=LogFormat"),"
    LogSeparator "; print &hblink($text{'help_help'}, "help.cgi?param=LogSeparator")."
    SiteDomain* "; print &hblink($text{'help_help'}, "help.cgi?param=SiteDomain")."
    HostAliases "; print &hblink($text{'help_help'}, "help.cgi?param=HostAliases")."
    DNSLookup "; print &hblink($text{'help_help'}, "help.cgi?param=DNSLookup")."
    DirData "; print &hblink($text{'help_help'}, "help.cgi?param=DirData")."
    DirCgi "; print &hblink($text{'help_help'}, "help.cgi?param=DirCgi")."
    DirIcons "; print &hblink($text{'help_help'}, "help.cgi?param=DirIcons")."
    AllowToUpdateStatsFromBrowser "; print &hblink($text{'help_help'}, "help.cgi?param=AllowToUpdateStatsFromBrowser")."
    AllowFullYearView "; print &hblink($text{'help_help'}, "help.cgi?param=AllowFullYearView")."
    * ".$text{'help_starrequired'}." "; print "

    OPTIONAL SETUP SECTION (Not required but increase AWStats features)

    EnableLockForUpdate "; print &hblink($text{'help_help'}, "help.cgi?param=EnableLockForUpdate")."
    DNSStaticCacheFile ".&file_chooser_button("DNSStaticCacheFile",0,0)." "; print &hblink($text{'help_help'}, "help.cgi?param=DNSStaticCacheFile")."
    DNSLastUpdateCacheFile "; print &hblink($text{'help_help'}, "help.cgi?param=DNSLastUpdateCacheFile")."
    SkipDNSLookupFor "; print &hblink($text{'help_help'}, "help.cgi?param=SkipDNSLookupFor")."
    AllowAccessFromWebToAuthenticatedUsersOnly "; print &hblink($text{'help_help'}, "help.cgi?param=AllowAccessFromWebToAuthenticatedUsersOnly")."
    AllowAccessFromWebToFollowingAuthenticatedUsers ".&user_chooser_button('AllowAccessFromWebToFollowingAuthenticatedUsers', multiple, 0)." "; print &hblink($text{'help_help'}, "help.cgi?param=AllowAccessFromWebToFollowingAuthenticatedUsers")."
    AllowAccessFromWebToFollowingIPAddresses "; print &hblink($text{'help_help'}, "help.cgi?param=AllowAccessFromWebToFollowingIPAddresses")."
    CreateDirDataIfNotExists "; print &hblink($text{'help_help'}, "help.cgi?param=CreateDirDataIfNotExists")."
    BuildHistoryFormat "; print &hblink($text{'help_help'}, "help.cgi?param=BuildHistoryFormat")."
    BuildReportFormat "; print &hblink($text{'help_help'}, "help.cgi?param=BuildReportFormat")."
    SaveDatabaseFilesWithPermissionsForEveryone "; print &hblink($text{'help_help'}, "help.cgi?param=SaveDatabaseFilesWithPermissionsForEveryone")."
    PurgeLogFile "; print &hblink($text{'help_help'}, "help.cgi?param=PurgeLogFile")."
    ArchiveLogRecords "; print &hblink($text{'help_help'}, "help.cgi?param=ArchiveLogRecords")."
    KeepBackupOfHistoricFiles "; print &hblink($text{'help_help'}, "help.cgi?param=KeepBackupOfHistoricFiles")."
    DefaultFile "; print &hblink($text{'help_help'}, "help.cgi?param=DefaultFile")."
    SkipHosts "; print &hblink($text{'help_help'}, "help.cgi?param=SkipHosts")."
    SkipUserAgents "; print &hblink($text{'help_help'}, "help.cgi?param=SkipUserAgents")."
    SkipFiles "; print &hblink($text{'help_help'}, "help.cgi?param=SkipFiles")."
    OnlyHosts "; print &hblink($text{'help_help'}, "help.cgi?param=OnlyHosts")."
    OnlyUserAgents "; print &hblink($text{'help_help'}, "help.cgi?param=OnlyUserAgents")."
    OnlyFiles "; print &hblink($text{'help_help'}, "help.cgi?param=OnlyFiles")."
    NotPageList "; print &hblink($text{'help_help'}, "help.cgi?param=NotPageList")."
    ValidHTTPCodes "; print &hblink($text{'help_help'}, "help.cgi?param=ValidHTTPCodes")."
    ValidSMTPCodes "; print &hblink($text{'help_help'}, "help.cgi?param=ValidSMTPCodes")."
    AuthenticatedUsersNotCaseSensitive "; print &hblink($text{'help_help'}, "help.cgi?param=AuthenticatedUsersNotCaseSensitive")."
    URLNotCaseSensitive "; print &hblink($text{'help_help'}, "help.cgi?param=URLNotCaseSensitive")."
    URLWithAnchor "; print &hblink($text{'help_help'}, "help.cgi?param=URLWithAnchor")."
    URLQuerySeparators "; print &hblink($text{'help_help'}, "help.cgi?param=URLQuerySeparators")."
    URLWithQuery "; print &hblink($text{'help_help'}, "help.cgi?param=URLWithQuery")."
    URLWithQueryWithOnlyFollowingParameters "; print &hblink($text{'help_help'}, "help.cgi?param=URLWithQueryWithOnlyFollowingParameters")."
    URLWithQueryWithoutFollowingParameters "; print &hblink($text{'help_help'}, "help.cgi?param=URLWithQueryWithoutFollowingParameters")."
    URLReferrerWithQuery "; print &hblink($text{'help_help'}, "help.cgi?param=URLReferrerWithQuery")."
    WarningMessages "; print &hblink($text{'help_help'}, "help.cgi?param=WarningMessages")."
    ErrorMessages "; print &hblink($text{'help_help'}, "help.cgi?param=ErrorMessages")."
    DebugMessages "; print &hblink($text{'help_help'}, "help.cgi?param=DebugMessages")."
    NbOfLinesForCorruptedLog "; print &hblink($text{'help_help'}, "help.cgi?param=NbOfLinesForCorruptedLog")."
    WrapperScript "; print &hblink($text{'help_help'}, "help.cgi?param=WrapperScript")."
    DecodeUA "; print &hblink($text{'help_help'}, "help.cgi?param=DecodeUA")."
    MiscTrackerUrl "; print &hblink($text{'help_help'}, "help.cgi?param=MiscTrackerUrl")."
    $text{'index_hideadvanced'}
    $text{'index_advanced1'}


    OPTIONAL ACCURACY SETUP SECTION (Not required but increase AWStats features)

    LevelForBrowsersDetection "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForBrowsersDetection")."
    LevelForOSDetection "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForOSDetection")."
    LevelForRefererAnalyze "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForRefererAnalyze")."
    LevelForRobotsDetection "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForRobotsDetection")."
    LevelForSearchEnginesDetection "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForSearchEnginesDetection")."
    LevelForKeywordsDetection "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForKeywordsDetection")."
    LevelForFileTypesDetection "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForFileTypesDetection")."
    LevelForWormsDetection "; print &hblink($text{'help_help'}, "help.cgi?param=LevelForWormsDetection")."
    $text{'index_hideadvanced'}
    $text{'index_advanced2'}


    OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features)

    UseFramesWhenCGI "; print &hblink($text{'help_help'}, "help.cgi?param=UseFramesWhenCGI")."
    DetailedReportsOnNewWindows "; print &hblink($text{'help_help'}, "help.cgi?param=DetailedReportsOnNewWindows")."
    Expires "; print &hblink($text{'help_help'}, "help.cgi?param=Expires")."
    MaxRowsInHTMLOutput "; print &hblink($text{'help_help'}, "help.cgi?param=MaxRowsInHTMLOutput")."
    Lang "; print &hblink($text{'help_help'}, "help.cgi?param=Lang")."
    DirLang ".&file_chooser_button("DirLang",1,0)." "; print &hblink($text{'help_help'}, "help.cgi?param=DirLang")."
    ShowMenu "; print &hblink($text{'help_help'}, "help.cgi?param=ShowMenu")."
    ShowMonthStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowMonthStats")."
    ShowDaysOfMonthStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowDaysOfMonthStats")."
    ShowDaysOfWeekStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowDaysOfWeekStats")."
    ShowHoursStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowHoursStats")."
    ShowDomainsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowDomainsStats")."
    ShowHostsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowHostsStats")."
    ShowAuthenticatedUsers "; print &hblink($text{'help_help'}, "help.cgi?param=ShowAuthenticatedUsers")."
    ShowRobotsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowRobotsStats")."
    ShowWormsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowWormsStats")."
    ShowEMailSenders "; print &hblink($text{'help_help'}, "help.cgi?param=ShowEMailSenders")."
    ShowEMailReceivers "; print &hblink($text{'help_help'}, "help.cgi?param=ShowEMailReceivers")."
    ShowSessionsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowSessionsStats")."
    ShowPagesStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowPagesStats")."
    ShowFileTypesStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowFileTypesStats")."
    ShowFileSizesStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowFileSizesStats")."
    ShowOSStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowOSStats")."
    ShowBrowsersStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowBrowsersStats")."
    ShowScreenSizeStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowScreenSizeStats")."
    ShowOriginStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowOriginStats")."
    ShowKeyphrasesStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowKeyphrasesStats")."
    ShowKeywordsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowKeywordsStats")."
    ShowMiscStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowMiscStats")."
    ShowHTTPErrorsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowHTTPErrorsStats")."
    ShowSMTPErrorsStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowSMTPErrorsStats")."
    ShowClusterStats "; print &hblink($text{'help_help'}, "help.cgi?param=ShowClusterStats")."
    AddDataArrayMonthStats "; print &hblink($text{'help_help'}, "help.cgi?param=AddDataArrayMonthStats")."
    AddDataArraySHowDaysOfMonthStats "; print &hblink($text{'help_help'}, "help.cgi?param=AddDataArraySHowDaysOfMonthStats")."
    AddDataArrayShowDaysOfWeekStats "; print &hblink($text{'help_help'}, "help.cgi?param=AddDataArrayShowDaysOfWeekStats")."
    AddDataArrayShowHoursStats "; print &hblink($text{'help_help'}, "help.cgi?param=AddDataArrayShowHoursStats")."
    IncludeInternalLinksInOriginSection "; print &hblink($text{'help_help'}, "help.cgi?param=IncludeInternalLinksInOriginSection")."
    MaxNbOfDomain "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfDomain ")."
    MinHitDomain "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitDomain ")."
    MaxNbOfHostsShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfHostsShown ")."
    MinHitHost "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitHost ")."
    MaxNbOfLoginShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfLoginShown ")."
    MinHitLogin "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitLogin ")."
    MaxNbOfRobotShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfRobotShown ")."
    MinHitRobot "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitRobot ")."
    MaxNbOfPageShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfPageShown ")."
    MinHitFile "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitFile ")."
    MaxNbOfOsShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfOsShown ")."
    MinHitOs "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitOs ")."
    MaxNbOfBrowsersShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfBrowsersShown ")."
    MinHitBrowser "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitBrowser ")."
    MaxNbOfScreenSizesShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfScreenSizesShown ")."
    MinHitScreenSize "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitScreenSize ")."
    MaxNbOfRefererShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfRefererShown ")."
    MinHitRefer "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitRefer ")."
    MaxNbOfKeyphrasesShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfKeyphrasesShown ")."
    MinHitKeyphrase "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitKeyphrase ")."
    MaxNbOfKeywordsShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfKeywordsShown ")."
    MinHitKeyword "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitKeyword ")."
    MaxNbOfEMailsShown "; print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfEMailsShown ")."
    MinHitEMail "; print &hblink($text{'help_help'}, "help.cgi?param=MinHitEMail ")."
    FirstDayOfWeek "; print &hblink($text{'help_help'}, "help.cgi?param=FirstDayOfWeek")."
    ShowFlagLinks "; print &hblink($text{'help_help'}, "help.cgi?param=ShowFlagLinks")."
    ShowLinksOnUrl "; print &hblink($text{'help_help'}, "help.cgi?param=ShowLinksOnUrl")."
    UseHTTPSLinkForUrl "; print &hblink($text{'help_help'}, "help.cgi?param=UseHTTPSLinkForUrl")."
    MaxLengthOfShownURL "; print &hblink($text{'help_help'}, "help.cgi?param=MaxLengthOfShownURL")."
    LinksToWhoIs "; # print &hblink($text{'help_help'}, "help.cgi?param=LinksToWhoIs")."
    LinksToIPWhoIs "; # print &hblink($text{'help_help'}, "help.cgi?param=LinksToIPWhoIs")."
    HTMLHeadSection "; print &hblink($text{'help_help'}, "help.cgi?param=HTMLHeadSection")."
    HTMLEndSection "; print &hblink($text{'help_help'}, "help.cgi?param=HTMLEndSection")."
    Logo "; print &hblink($text{'help_help'}, "help.cgi?param=Logo")."
    LogoLink "; print &hblink($text{'help_help'}, "help.cgi?param=LogoLink")."
    BarWidth / BarHeight / "; print &hblink($text{'help_help'}, "help.cgi?param=BarWidth ")."
    StyleSheet "; print &hblink($text{'help_help'}, "help.cgi?param=StyleSheet")."
    color_Background "; # print &hblink($text{'help_help'}, "help.cgi?param=color_Background")."
    color_TableBGTitle "; # print &hblink($text{'help_help'}, "help.cgi?param=color_TableBGTitle")."
    color_TableTitle "; # print &hblink($text{'help_help'}, "help.cgi?param=color_TableTitle")."
    color_TableBG "; # print &hblink($text{'help_help'}, "help.cgi?param=color_TableBG")."
    color_TableRowTitle "; # print &hblink($text{'help_help'}, "help.cgi?param=color_TableRowTitle")."
    color_TableBGRowTitle "; # print &hblink($text{'help_help'}, "help.cgi?param=color_TableBGRowTitle")."
    color_TableBorder "; # print &hblink($text{'help_help'}, "help.cgi?param=color_TableBorder")."
    color_text "; # print &hblink($text{'help_help'}, "help.cgi?param=color_text")."
    color_textpercent "; # print &hblink($text{'help_help'}, "help.cgi?param=color_textpercent")."
    color_titletext "; # print &hblink($text{'help_help'}, "help.cgi?param=color_titletext")."
    color_weekend "; # print &hblink($text{'help_help'}, "help.cgi?param=color_weekend")."
    color_link "; # print &hblink($text{'help_help'}, "help.cgi?param=color_link")."
    color_hover "; # print &hblink($text{'help_help'}, "help.cgi?param=color_hover")."
    color_u "; # print &hblink($text{'help_help'}, "help.cgi?param=color_u")."
    color_v "; # print &hblink($text{'help_help'}, "help.cgi?param=color_v")."
    color_p "; # print &hblink($text{'help_help'}, "help.cgi?param=color_p")."
    color_h "; # print &hblink($text{'help_help'}, "help.cgi?param=color_h")."
    color_k "; # print &hblink($text{'help_help'}, "help.cgi?param=color_k")."
    color_s "; # print &hblink($text{'help_help'}, "help.cgi?param=color_s")."
    color_e "; # print &hblink($text{'help_help'}, "help.cgi?param=color_e")."
    color_x "; # print &hblink($text{'help_help'}, "help.cgi?param=color_x")."
    $text{'index_hideadvanced'}
    $text{'index_advanced3'}


    PLUGINS SETUP SECTION (Not required but increase AWStats features)

    Loaded plugins Plugin's parameters  
    $pconfparam[$key] "; my ($type,$p,$geoipdatafile)=(); if ($pconfparam[$key] =~ /^geoip$/) { $type="geoip_country"; $p="GeoIP Country"; $geoipdatafile=$config{'plugin_1_geoip'}||"/usr/local/share/GeoIP/GeoIP.dat"; } if ($pconfparam[$key] =~ /^geoip_region_maxmind$/) { $type="geoip_region"; $p="GeoIP Region"; $geoipdatafile=$config{'plugin_2_geoip_region_maxmind'}||"/usr/local/share/GeoIP/GeoIPRegion.dat"; } if ($pconfparam[$key] =~ /^geoip_city_maxmind$/) { $type="geoip_city"; $p="GeoIP City"; $geoipdatafile=$config{'plugin_3_geoip_city_maxmind'}||"/usr/local/share/GeoIP/GeoIPCity.dat"; } if ($pconfparam[$key] =~ /^geoip_isp_maxmind$/) { $type="geoip_isp"; $p="GeoIP ISP"; $geoipdatafile=$config{'plugin_4_geoip_isp_maxmind'}||"/usr/local/share/GeoIP/GeoIPISP.dat"; } if ($pconfparam[$key] =~ /^geoip_org_maxmind$/) { $type="geoip_org"; $p="GeoIP Organization"; $geoipdatafile=$config{'plugin_5_geoip_org_maxmind'}||"/usr/local/share/GeoIP/GeoIPOrg.dat"; } if ($p) { # If a geoip plugin my $datafile=$geoipdatafile; if ($pconfvaluep[$key] =~ /^\w+\s+(.+)$/) { $datafile=$1; } print "$p database version"; } print " "; print &hblink($text{'help_help'}, "help.cgi?param=plugin_$pconfparam[$key]")."
    $text{'index_hideadvanced'}
    $text{'index_advanced4'}



    $text{'index_hideadvanced'}

    \n"; print "
    \n"; @b=(); if ($in{'new'}) { push(@b, ""); } else { if ($access{'global'}) { push(@b, ""); } if ($access{'add'}) { push(@b, ""); } } &spaced_buttons(@b); print "
    \n"; # Back to config list print "
    \n"; &footer("", $text{'index_return'}); awstats/geoip_info.cgi0000644000175000017500000000353112410217071017307 0ustar ldestailleurldestailleur#!/usr/bin/perl # geoip_info.cgi # Report geoip informations require './awstats-lib.pl'; &ReadParse(); if (! $access{'update'}) { &error($text{'geoip_cannot'}); } my $conf=""; my $dir=""; if ($in{'file'} =~ /awstats\.(.*)\.conf$/) { $conf=$1; } if ($in{'file'} =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; } # Display file contents &header($title || $text{'geoip_title'}, ""); print "
    \n"; my $type=$in{'type'}; my $size=-1; print "GeoIP information for file ".$in{'file'}."

    \n"; # Try to get the GeoIP data file version at end of file if (-f "$in{'file'}") { my @st=stat($in{'file'}); my $size = $st[7]; my ($sec,$min,$hour,$day,$month,$year,$wday,$yday) = localtime($st[9]); $year+=1900; $month++; print "Geoip data file type: $type
    \n"; print "Geoip data file size: $size bytes
    \n"; printf("Geoip data file date: %04s-%02s-%02s %02s:%02s:%02s
    \n",$year,$month,$day,$hour,$min,$sec); my $version='unknown'; # Try to get version from API # Try to get version from file if (! $version || $version eq 'unknown') { if (open(GEOIPFILE,"<$in{'file'}")) { my $seekpos=($size-100); if ($seekpos < 0) { $seekpos=0; } binmode GEOIPFILE; seek(GEOIPFILE,$seekpos,0); my $nbread=0; while (($nbread < 100) && ($line=)) { $nbread++; if ($line =~ /(Geo-.*)Copyright/i) { $version=$1; last; } } close (GEOIPFILE); } } print "Geoip data file version: $version
    \n"; } else { print "GeoIP datafile $in{'file'} does not exist or can not be read.
    \n"; } print "
    \n"; # Back to config list print "
    \n"; &footer("", $text{'index_return'}); 0; awstats-7.4/tools/webmin/README.md0000640000175000017500000000310712410217071014556 0ustar sksk # AWStats Webmin module ----------------------------------- AWStats (Advanced Web Statistics) module for Webmin is an add-on for Webmin administration tool Once AWStats is installed, if you install this module into Webmin, you will be able to read AWStats statistcs from your webmin dashboard. Platforms: All (Linux, NT, BSD, Solaris and other *NIX's, BeOS, OS/2...) Author: Laurent Destailleur # INSTALL, SETUP AND USE AWSTATS ----------------------------------- Install package (file .wbm) from webmin menu "Modules". # ABOUT THE AUTHOR, LICENSE AND SUPPORT --------------------------------------- Copyright (C) 2000-2014 - Laurent Destailleur - eldy@users.sourceforge.net - Laurent Destailleur is also the project leader of Dolibarr ERP CRM Open-Source project] , and author of AWBot, CVSChangeLogBuilder, DoliDroid and founder of DoliCloud SaaS . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . awstats-7.4/tools/webmin/.gitignore0000640000175000017500000000000612410217071015262 0ustar sksk*.wbm awstats-7.4/tools/httpd_conf0000640000175000017500000000152712410217071014075 0ustar sksk# # Content of this file, with correct values, can be automatically added to # your Apache server by using the AWStats configure.pl tool. # # If using Windows and Perl ActiveStat, this is to enable Perl script as CGI. #ScriptInterpreterSource registry # # Directives to add to your Apache conf file to allow use of AWStats as a CGI. # Note that path "/usr/local/awstats/" must reflect your AWStats install path. # Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/" Alias /awstatscss "/usr/local/awstats/wwwroot/css/" Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/" ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/" # # This is to permit URL access to scripts/files in AWStats directory. # Options None AllowOverride None Order allow,deny Allow from all awstats-7.4/tools/nginx/0000750000175000017500000000000012410217071013137 5ustar skskawstats-7.4/tools/nginx/awstats-nginx.conf0000750000175000017500000000211412410217071016616 0ustar skskserver { listen 127.0.0.1:80; server_name localhost; access_log /var/log/nginx/localhost.access_log main; error_log /var/log/nginx/localhost.error_log info; root /var/www/localhost/htdocs; index index.html; # Restrict access #auth_basic "Restricted"; #auth_basic_user_file /etc/awstats/htpasswd; # Static awstats files: HTML files stored in DOCUMENT_ROOT/awstats/ location /awstats/classes/ { alias /usr/share/awstats/wwwroot/classes/; } location /awstats/css/ { alias /usr/share/awstats/wwwroot/css/; } location /awstats/icon/ { alias /usr/share/awstats/wwwroot/icon/; } location /awstats-icon/ { alias /usr/share/awstats/wwwroot/icon/; } location /awstats/js/ { alias /usr/share/awstats/wwwroot/js/; } # Dynamic stats. location ~ ^/cgi-bin/(awredir|awstats)\.pl { gzip off; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /usr/share/awstats/wwwroot/cgi-bin/fcgi.php; fastcgi_param X_SCRIPT_FILENAME /usr/share/awstats/wwwroot$fastcgi_script_name; fastcgi_param X_SCRIPT_NAME $fastcgi_script_name; include fastcgi_params; } } awstats-7.4/tools/nginx/README.txt0000750000175000017500000000012212410217071014633 0ustar skskThis directory contains samples files to setup a NGinx server to use AWStats with.awstats-7.4/tools/nginx/awstats-fcgi.php0000750000175000017500000000170712410217071016254 0ustar sksk array('pipe', 'r'), // stdin is a pipe that the child will read from 1 => array('pipe', 'w'), // stdout is a pipe that the child will write to 2 => array('pipe', 'w') // stderr is a file to write to ); $newenv = $_SERVER; $newenv['SCRIPT_FILENAME'] = $_SERVER['X_SCRIPT_FILENAME']; $newenv['SCRIPT_NAME'] = $_SERVER['X_SCRIPT_NAME']; if (is_executable($_SERVER['X_SCRIPT_FILENAME'])) { $process = proc_open($_SERVER['X_SCRIPT_FILENAME'], $descriptorspec, $pipes, NULL, $newenv); if (is_resource($process)) { fclose($pipes[0]); $head = fgets($pipes[1]); while (strcmp($head, "\n")) { header($head); $head = fgets($pipes[1]); } fpassthru($pipes[1]); fclose($pipes[1]); fclose($pipes[2]); $return_value = proc_close($process); } else { header('Status: 500 Internal Server Error'); echo('Internal Server Error'); } } else { header('Status: 404 Page Not Found'); echo('Page Not Found'); } ?>awstats-7.4/tools/awstats_configure.pl0000750000175000017500000006260212410217071016111 0ustar sksk#!/usr/bin/perl #------------------------------------------------------- # This script configures AWStats so that it works immediately. # - Get Apache config file from registry (ask if not found) # - Change common log to combined (ask to confirm) # - Add AWStats directives # - Restart web server # - Create AWStats config file # See COPYING.TXT file about AWStats GNU General Public License. #------------------------------------------------------- require 5.005; use strict; #------------------------------------------------------- # IF YOU ARE A PACKAGE BUILDER, CHANGE THIS TO MATCH YOUR PATH # SO THAT THE CONFIGURE WILL WORK ON YOUR DISTRIB !!! # Following path are the one #------------------------------------------------------- use vars qw/ $AWSTATS_PATH $AWSTATS_ICON_PATH $AWSTATS_CSS_PATH $AWSTATS_CLASSES_PATH $AWSTATS_CGI_PATH $AWSTATS_MODEL_CONFIG $AWSTATS_DIRDATA_PATH /; $AWSTATS_PATH=''; $AWSTATS_ICON_PATH='/usr/local/awstats/wwwroot/icon'; $AWSTATS_CSS_PATH='/usr/local/awstats/wwwroot/css'; $AWSTATS_CLASSES_PATH='/usr/local/awstats/wwwroot/classes'; $AWSTATS_CGI_PATH='/usr/local/awstats/wwwroot/cgi-bin'; $AWSTATS_MODEL_CONFIG='/etc/awstats/awstats.model.conf'; # Used only when configure ran on linux $AWSTATS_DIRDATA_PATH='/var/lib/awstats'; # Used only when configure ran on linux #------------------------------------------------------- # Defines #------------------------------------------------------- # For windows registry management my $reg; eval('use Win32::TieRegistry ( Delimiter=>"/", TiedRef=>\$reg )'); use vars qw/ $REVISION $VERSION /; $REVISION='20140126'; $VERSION="1.0 (build $REVISION)"; use vars qw/ $DIR $PROG $Extension $Debug /; use vars qw/ @WEBCONF /; # Possible dirs for Apache conf files @WEBCONF=( 'C:/Program Files/Apache Group/Apache2/conf/httpd.conf', 'C:/Program Files/Apache Group/Apache/conf/httpd.conf', '/Applications/MAMP/conf/apache/httpd.conf', '/etc/httpd/httpd.conf', '/usr/local/apache/conf/httpd.conf', '/usr/local/apache2/conf/httpd.conf', ); use vars qw/ $WebServerChanged $UseAlias $Step %LogFormat %ConfToChange %OSLib /; $WebServerChanged=0; $UseAlias=0; %LogFormat=(); %ConfToChange=(); %OSLib=('linux'=>'Linux, BSD or Unix','macosx'=>'Mac OS','windows'=>'Windows'); $Step=0; #------------------------------------------------------- # Functions #------------------------------------------------------- #------------------------------------------------------- # error #------------------------------------------------------- sub error { print STDERR "Error: $_[0].\n"; exit 1; } #------------------------------------------------------- # debug #------------------------------------------------------- sub debug { my $level = $_[1] || 1; if ($Debug >= $level) { my $debugstring = $_[0]; if ($ENV{"GATEWAY_INTERFACE"}) { $debugstring =~ s/^ /   /; $debugstring .= "
    "; } print "DEBUG $level - ".time." : $debugstring\n"; } 0; } #------------------------------------------------------- # update_httpd_config # Replace common to combined in Apache config file #------------------------------------------------------- sub update_httpd_config { my $file=shift; if (! $file) { error("Call to update_httpd_config with wrong parameter"); } open(FILE, $file) || error("Failed to open $file for update"); open(FILETMP, ">$file.tmp") || error("Failed to open $file.tmp for writing"); # $%conf contains param and values my %confchanged=(); my $conflinenb = 0; # First, change values that are already present in old config file while() { my $savline=$_; chomp $_; s/\r//; $conflinenb++; # Remove comments not at beginning of line $_ =~ s/\s#.*$//; # Change line if ($_ =~ /^(\s*)CustomLog\s(.*)\scommon$/i) { $savline="$1CustomLog $2 combined"; } # Write line print FILETMP "$savline"; } close(FILE); close(FILETMP); # Move file to file.sav if (rename("$file","$file.old")==0) { error("Failed to make backup of current config file to $file.old"); } # Move tmp file into config file if (rename("$file.tmp","$file")==0) { error("Failed to move tmp config file $file.tmp to $file"); } return 0; } #------------------------------------------------------- # update_awstats_config # Update an awstats model [to another one] #------------------------------------------------------- sub update_awstats_config { my $file=shift; my $fileto=shift||"$file.tmp"; if (! $file) { error("Call to update_awstats_config with wrong parameter"); } if ($file =~ /Developpements[\\\/]awstats/i) { print " This is my dev area. Don't touch.\n"; return; } # To avoid script working in my dev area open(FILE, $file) || error("Failed to open '$file' for read"); open(FILETMP, ">$fileto") || error("Failed to open '$fileto' for writing"); # $%conf contains param and values my %confchanged=(); my $conflinenb = 0; # First, change values that are already present in old config file while() { my $savline=$_; chomp $_; s/\r//; $conflinenb++; # Remove comments not at beginning of line $_ =~ s/\s#.*$//; # Extract param and value my ($param,$value)=split(/=/,$_,2); $param =~ s/^\s+//; $param =~ s/\s+$//; $value =~ s/#.*$//; $value =~ s/^[\s\'\"]+//; $value =~ s/[\s\'\"]+$//; if ($param) { # cleanparam is param without begining # my $cleanparam=$param; my $wascleaned=0; if ($cleanparam =~ s/^#//) { $wascleaned=1; } if (defined($ConfToChange{"$cleanparam"}) && $ConfToChange{"$cleanparam"}) { $savline = ($wascleaned?"#":"")."$cleanparam=\"".$ConfToChange{"$cleanparam"}."\"\n"; } } # Write line print FILETMP "$savline"; } close(FILE); close(FILETMP); if ($fileto eq "$file.tmp") { # Move file to file.sav if (rename("$file","$file.old")==0) { error("Failed to make backup of current config file to $file.old"); } # Move tmp file into config file if (rename("$fileto","$file")==0) { error("Failed to move tmp config file $fileto to $file"); } # Remove .old file unlink "$file.old"; } else { print " Config file $fileto created.\n"; } return 0; } #------------------------------------------------------- # MAIN #------------------------------------------------------- ($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; $DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; my $QueryString=""; for (0..@ARGV-1) { $QueryString .= "$ARGV[$_] "; } if ($QueryString =~ /debug=/i) { $Debug=$QueryString; $Debug =~ s/.*debug=//; $Debug =~ s/&.*//; $Debug =~ s/ .*//; } my $helpfound=0; my $OS=''; my $CR=''; for (0..@ARGV-1) { if ($ARGV[$_] =~ /^-*h/i) { $helpfound=1; last; } if ($ARGV[$_] =~ /^-*awstatspath=([^\s\"]+)/i) { $AWSTATS_PATH=$1; last; } } # If AWSTATS_PATH was not forced on command line if (! $AWSTATS_PATH) { $AWSTATS_PATH=($DIR eq '.'?'..':$DIR); $AWSTATS_PATH=~s/tools[\\\/]?$//; $AWSTATS_PATH=~s/[\\\/]$//; } # On utilise le format de spearateur / partout (dans Apache et appels Perl) $AWSTATS_PATH =~ s/\\/\//g; # Show usage help if ($helpfound) { print "----- AWStats $PROG $VERSION (c) Laurent Destailleur -----\n"; print "$PROG is a tool to setup AWStats. It works with Apache only.\n"; print " - Detect Apache config file (ask if not found)\n"; print " - Change common log to combined (ask to confirm)\n"; print " - Add AWStats directives\n"; print " - Restart web server\n"; print " - Create one AWStats config file (if asked)\n"; print "\n"; print "Usage: $PROG.$Extension\n"; print "\n"; exit 0; } # Get current time my $nowtime=time; my ($nowsec,$nowmin,$nowhour,$nowday,$nowmonth,$nowyear) = localtime($nowtime); if ($nowyear < 100) { $nowyear+=2000; } else { $nowyear+=1900; } my $nowsmallyear=$nowyear;$nowsmallyear =~ s/^..//; if (++$nowmonth < 10) { $nowmonth = "0$nowmonth"; } if ($nowday < 10) { $nowday = "0$nowday"; } if ($nowhour < 10) { $nowhour = "0$nowhour"; } if ($nowmin < 10) { $nowmin = "0$nowmin"; } if ($nowsec < 10) { $nowsec = "0$nowsec"; } print "\n"; print "----- AWStats $PROG $VERSION (c) Laurent Destailleur -----\n"; print "This tool will help you to configure AWStats to analyze statistics for\n"; print "one web server. You can try to use it to let it do all that is possible\n"; print "in AWStats setup, however following the step by step manual setup\n"; print "documentation (docs/index.html) is often a better idea. Above all if:\n"; print "- You are not an administrator user,\n"; print "- You want to analyze downloaded log files without web server,\n"; print "- You want to analyze mail or ftp log files instead of web log files,\n"; print "- You need to analyze load balanced servers log files,\n"; print "- You want to 'understand' all possible ways to use AWStats...\n"; print "Read the AWStats documentation (docs/index.html).\n"; # Detect OS type # -------------- if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; } if ("$^O" !~ /linux/i && -d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } if ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; } if (! $OS) { print "configure.pl was not able to detect your OS. You must configure AWStats\n"; print "manually following the setup documentation (docs/index.html).\n"; print "configure.pl aborted.\n"; exit 1; } #print "Running OS detected: $OS (Perl $^[)\n"; print "\n-----> Running OS detected: $OSLib{$OS}\n"; if ($OS eq 'linux') { $AWSTATS_PATH=`pwd`; $AWSTATS_PATH =~ s/[\r\n]//; $AWSTATS_PATH=~s/tools[\\\/]?$//; $AWSTATS_PATH=~s/[\\\/]$//; if ($AWSTATS_PATH ne '/usr/local/awstats') { print "Warning: AWStats standard directory on Linux OS is '/usr/local/awstats'.\n"; print "If you want to use standard directory, you should first move all content\n"; print "of AWStats distribution from current directory:\n"; print "$AWSTATS_PATH\n"; print "to standard directory:\n"; print "/usr/local/awstats\n"; print "And then, run configure.pl from this location.\n"; print "Do you want to continue setup from this NON standard directory [yN] ? "; my $bidon=''; while ($bidon !~ /^[yN]/i) { $bidon=; } if ($bidon !~ /^y/i) { print "configure.pl aborted.\n"; exit 1; } $AWSTATS_ICON_PATH="$AWSTATS_PATH/wwwroot/icon"; $AWSTATS_CSS_PATH="$AWSTATS_PATH/wwwroot/css"; $AWSTATS_CLASSES_PATH="$AWSTATS_PATH/wwwroot/classes"; $AWSTATS_CGI_PATH="$AWSTATS_PATH/wwwroot/cgi-bin"; } } elsif ($OS eq 'macosx') { $AWSTATS_PATH=`pwd`; $AWSTATS_PATH =~ s/[\r\n]//; $AWSTATS_PATH=~s/tools[\\\/]?$//; $AWSTATS_PATH=~s/[\\\/]$//; if ($AWSTATS_PATH ne '/Library/WebServer/awstats') { print "Warning: AWStats standard directory on Mac OS X is '/Library/WebServer/awstats'.\n"; print "If you want to use standard directory, you should first move all content\n"; print "of AWStats distribution from current directory:\n"; print "$AWSTATS_PATH\n"; print "to standard directory:\n"; print "/Library/WebServer/awstats\n"; print "And then, run configure.pl from this location.\n"; print "Do you want to continue setup from this NON standard directory [yN] ? "; my $bidon=''; while ($bidon !~ /^[yN]/i) { $bidon=; } if ($bidon !~ /^y/i) { print "configure.pl aborted.\n"; exit 1; } $AWSTATS_ICON_PATH="$AWSTATS_PATH/wwwroot/icon"; $AWSTATS_CSS_PATH="$AWSTATS_PATH/wwwroot/css"; $AWSTATS_CLASSES_PATH="$AWSTATS_PATH/wwwroot/classes"; $AWSTATS_CGI_PATH="$AWSTATS_PATH/wwwroot/cgi-bin"; } } elsif ($OS eq 'windows') { # We do not use default values for awstats directives # but thoose defined from AWSTATS_PATH $AWSTATS_ICON_PATH="$AWSTATS_PATH/wwwroot/icon"; $AWSTATS_CSS_PATH="$AWSTATS_PATH/wwwroot/css"; $AWSTATS_CLASSES_PATH="$AWSTATS_PATH/wwwroot/classes"; $AWSTATS_CGI_PATH="$AWSTATS_PATH/wwwroot/cgi-bin"; } # Detect web server path # ---------------------- print "\n-----> Check for web server install\n"; my %ApachePath=(); # All Apache path found (used on windows only) my %ApacheConfPath=(); # All Apache config found my $tips; if ($OS eq 'linux' || $OS eq 'macosx') { my $found=0; foreach my $conf (@WEBCONF) { if (-s "$conf") { print " Found Web server Apache config file '$conf'\n"; $ApacheConfPath{"$conf"}=++$found; } } } if ($OS eq 'windows' && "$^O" !~ /cygwin/i) { $reg->Delimiter("/"); if ($tips=$reg->{"LMachine/Software/Apache Group/Apache/"}) { # If Apache registry call successfull my $found=0; foreach( sort keys %$tips ) { my $path=$reg->{"LMachine/Software/Apache Group/Apache/$_/ServerRoot"}; $path=~s/[\\\/]$//; if (-d "$path" && -s "$path/conf/httpd.conf") { print " Found a Web server Apache install in '$path'\n"; $ApachePath{"$path"}=++$found; $ApacheConfPath{"$path/conf/httpd.conf"}=++$found; } } } } if (! scalar keys %ApacheConfPath) { my $bidon=''; if ($OS eq 'windows') { # Ask web server path (need to restart on windows) print "$PROG did not find your Apache web main runtime.\n"; print "\nPlease, enter full directory path of your Apache web server or\n"; print "'none' to skip this step if you don't have local web server or\n"; print "don't have permission to change its setup.\n"; print "Example: c:\\Program files\\apache group\\apache\n"; while ($bidon ne 'none' && ! -d "$bidon") { print "Apache Web server path ('none' to skip):\n> "; $bidon=; chomp $bidon; if ($bidon && ! -d "$bidon" && $bidon ne 'none') { print "- The directory '$bidon' does not exists.\n"; } } } if ($bidon ne 'none') { if ($bidon) { $ApachePath{"$bidon"}=1; } print "\n".($bidon?"Now, enter":"Enter")." full config file path of your Web server.\n"; print "Example: /etc/httpd/httpd.conf\n"; print "Example: /usr/local/apache2/conf/httpd.conf\n"; print "Example: c:\\Program files\\apache group\\apache\\conf\\httpd.conf\n"; $bidon=''; while ($bidon ne 'none' && ! -f "$bidon") { print "Config file path ('none' to skip web server setup):\n> "; $bidon=; chomp $bidon; if ($bidon && ! -f "$bidon" && $bidon ne 'none') { print "- This file does not exists.\n"; } } if ($bidon ne 'none') { $ApacheConfPath{"$bidon"}=1; } } } if (! scalar keys %ApacheConfPath) { print "\n"; print "Your web server config file(s) could not be found.\n"; print "You will need to setup your web server manually to declare AWStats\n"; print "script as a CGI, if you want to build reports dynamically.\n"; print "See AWStats setup documentation (file docs/index.html)"; print "\n"; } # Open Apache config file # ----------------------- foreach my $key (keys %ApacheConfPath) { print "\n-----> Check and complete web server config file '$key'\n"; # Read config file to search for awstats directives my $commonchangedtocombined=0; READ: $LogFormat{$key}=4; open(CONF,"<$key") || error("Failed to open config file '$key' for reading"); binmode CONF; my $awstatsjsfound=0; my $awstatsclassesfound=0; my $awstatscssfound=0; my $awstatsiconsfound=0; my $awstatscgifound=0; my $awstatsdirectoryfound=0; while() { if ($_ =~ /^\s*CustomLog\s(.*)\scommon$/i) { print "Warning: You Apache config file contains directives to write 'common' log files\n"; print "This means that some features can't work (os, browsers and keywords detection).\n"; print "Do you want me to setup Apache to write 'combined' log files [y/N] ? "; my $bidon=''; while ($bidon !~ /^[yN]/i) { $bidon=; } if ($bidon =~ /^y/i) { close CONF; update_httpd_config("$key"); $WebServerChanged=1; $commonchangedtocombined=1; goto READ; } } if ($_ =~ /^\s*CustomLog\s(.*)\scombined$/i) { $LogFormat{$key}=1; } if ($_ =~ /Alias \/awstatsclasses/) { $awstatsclassesfound=1; } if ($_ =~ /Alias \/awstatscss/) { $awstatscssfound=1; } if ($_ =~ /Alias \/awstatsicons/) { $awstatsiconsfound=1; } if ($_ =~ /ScriptAlias \/awstats\//) { $awstatscgifound=1; } my $awstats_path_quoted=quotemeta($AWSTATS_PATH); if ($_ =~ /Directory "$awstats_path_quoted\/wwwroot"/) { $awstatsdirectoryfound=1; } } close CONF; if ($awstatsclassesfound && $awstatscssfound && $awstatsiconsfound && $awstatscgifound && $awstatsdirectoryfound) { $UseAlias=1; if ($commonchangedtocombined) { print " Common log files changed to combined.\n"; } print " All AWStats directives are already present.\n"; next; } # Add awstats directives open(CONF,">>$key") || error("Failed to open config file '$key' for adding AWStats directives"); binmode CONF; if (! $awstatsclassesfound || ! $awstatscssfound || ! $awstatsiconsfound || ! $awstatscgifound) { print CONF "$CR\n"; print CONF "#$CR\n"; print CONF "# Directives to allow use of AWStats as a CGI$CR\n"; print CONF "#$CR\n"; } if (! $awstatsclassesfound) { print " Add 'Alias \/awstatsclasses \"$AWSTATS_CLASSES_PATH\/\"'\n"; print CONF "Alias \/awstatsclasses \"$AWSTATS_CLASSES_PATH\/\"$CR\n"; } if (! $awstatscssfound) { print " Add 'Alias \/awstatscss \"$AWSTATS_CSS_PATH\/\"'\n"; print CONF "Alias \/awstatscss \"$AWSTATS_CSS_PATH\/\"$CR\n"; } if (! $awstatsiconsfound) { print " Add 'Alias \/awstatsicons \"$AWSTATS_ICON_PATH\/\"'\n"; print CONF "Alias \/awstatsicons \"$AWSTATS_ICON_PATH\/\"$CR\n"; } if (! $awstatscgifound) { print " Add 'ScriptAlias \/awstats\/ \"$AWSTATS_CGI_PATH\/\"'\n"; print CONF "ScriptAlias \/awstats\/ \"$AWSTATS_CGI_PATH\/\"$CR\n"; } if (! $awstatsdirectoryfound) { print " Add '' directive\n"; print CONF "$CR\n"; print CONF < Options None AllowOverride None Order allow,deny Allow from all EOF } close CONF; $UseAlias=1; $WebServerChanged=1; print " AWStats directives added to Apache config file.\n"; } # Define model config file path # ----------------------------- my $modelfile=''; if ($OS eq 'linux') { if (-f "$AWSTATS_PATH/wwwroot/cgi-bin/awstats.model.conf") { $modelfile="$AWSTATS_PATH/wwwroot/cgi-bin/awstats.model.conf"; } else { $modelfile="$AWSTATS_MODEL_CONFIG"; if (! -s $modelfile || ! -w $modelfile) { $modelfile="$AWSTATS_PATH/wwwroot/cgi-bin/awstats.model.conf"; } } } elsif ($OS eq "macosx") { $modelfile="$AWSTATS_PATH/wwwroot/cgi-bin/awstats.model.conf"; } elsif ($OS eq 'windows') { $modelfile="$AWSTATS_PATH\\wwwroot\\cgi-bin\\awstats.model.conf"; } else { $modelfile="$AWSTATS_PATH\\wwwroot\\cgi-bin\\awstats.model.conf"; } # Update model config file # ------------------------ if (-s $modelfile && -w $modelfile) { print "\n-----> Update model config file '$modelfile'\n"; %ConfToChange=(); if ($OS eq 'linux' || $OS eq "macosx") { $ConfToChange{'DirData'}="$AWSTATS_DIRDATA_PATH"; } elsif ($OS eq 'windows') { $ConfToChange{'DirData'}='.'; } else { $ConfToChange{'DirData'}='.'; } if ($UseAlias) { $ConfToChange{'DirCgi'}='/awstats'; $ConfToChange{'DirIcons'}='/awstatsicons'; } update_awstats_config("$modelfile"); print " File awstats.model.conf updated.\n"; } # Ask if we need to create a config file #--------------------------------------- my $site=''; my $configfile=''; print "\n-----> Need to create a new config file ?\n"; print "Do you want me to build a new AWStats config/profile\n"; print "file (required if first install) [y/N] ? "; my $bidon=''; while ($bidon !~ /^[yN]/i) { $bidon=; } if ($bidon =~ /^y/i) { # Ask value for web site name #---------------------------- print "\n-----> Define config file name to create\n"; print "What is the name of your web site or profile analysis ?\n"; print "Example: www.mysite.com\n"; print "Example: demo\n"; ASKCONFIG: my $bidon=''; while (! $bidon) { print "Your web site, virtual server or profile name:\n> "; $bidon=; chomp $bidon; if ($bidon =~ /\s/) { print " Space chars are not allowed.\n"; $bidon=''; } } $site=$bidon; # Define config file path # ----------------------- if ($OS eq 'linux') { print "\n-----> Define config file path\n"; print "In which directory do you plan to store your config file(s) ?\n"; print "Default: /etc/awstats\n"; my $bidon=''; print "Directory path to store config file(s) (Enter for default):\n> "; $bidon=; chomp $bidon; if (! $bidon) { $bidon = "/etc/awstats"; } my $configdir=$bidon; if (! -d $configdir) { # Create the directory for config files my $mkdirok=mkdir "$configdir", 0755; if (! $mkdirok) { error("Failed to create directory '$configdir', required to store config files."); } } $configfile="$configdir/awstats.$site.conf"; } elsif ($OS eq "macosx") { $configfile="$AWSTATS_PATH/wwwroot/cgi-bin/awstats.$site.conf"; } elsif ($OS eq 'windows') { $configfile="$AWSTATS_PATH\\wwwroot\\cgi-bin\\awstats.$site.conf"; } else { $configfile="$AWSTATS_PATH\\wwwroot\\cgi-bin\\awstats.$site.conf"; } if (-s "$configfile") { print "Warning: A config file for this name already exists. Choose another one.\n"; goto ASKCONFIG; } # Create awstats.conf file # ------------------------ print "\n-----> Create config file '$configfile'\n"; if (-s $configfile) { print " Config file already exists. No overwrite possible on existing config files.\n"; } else { %ConfToChange=(); if ($OS eq 'linux' || $OS eq "macosx") { $ConfToChange{'DirData'}="$AWSTATS_DIRDATA_PATH"; } if ($OS eq 'windows') { $ConfToChange{'DirData'}='.'; } if ($UseAlias) { $ConfToChange{'DirCgi'}='/awstats'; $ConfToChange{'DirIcons'}='/awstatsicons'; } $ConfToChange{'SiteDomain'}="$site"; my $sitewithoutwww=lc($site); $sitewithoutwww =~ s/^www\.//i; $ConfToChange{'HostAliases'}="$sitewithoutwww www.$sitewithoutwww 127.0.0.1 localhost"; update_awstats_config("$modelfile","$configfile"); } } # Restart Apache if change were made # ---------------------------------- if ($WebServerChanged) { if ($OS eq 'linux') { if (-f "/etc/debian_version") { # We are on debian my $command="/etc/init.d/apache restart"; print "\n-----> Restart Web server with '$command'\n"; my $ret=`$command`; print "$ret"; } elsif (-x "/sbin/service") { # We are not on debian my $command="/sbin/service httpd restart"; print "\n-----> Restart Web server with '$command'\n"; my $ret=`$command`; print "$ret"; } else { print "\n-----> Don't forget to restart manually your web server\n"; } } elsif ($OS eq 'macosx') { print "\n-----> Restart Web server with '/usr/sbin/apachectl restart'\n"; my $ret=`/usr/sbin/apachectl restart`; print "$ret"; } elsif ($OS eq 'windows') { foreach my $key (keys %ApachePath) { if (-f "$key/bin/Apache.exe") { print "\n-----> Restart Apache with '\"$key/bin/Apache.exe\" -k restart'\n"; my $ret=`"$key/bin/Apache.exe" -k restart`; } } } else { foreach my $key (keys %ApachePath) { if (-f "$key/bin/Apache.exe") { print "\n-----> Restart Apache with '\"$key/bin/Apache.exe\" -k restart'\n"; my $ret=`"$key/bin/Apache.exe" -k restart`; } } } } # TODO # Scan logorate for a log file # If apache log has a logrotate log found, we create a config and add line in prerotate # prerotate # ... # endscript # If not found # Schedule awstats update process # ------------------------------- print "\n-----> Add update process inside a scheduler\n"; if ($OS eq 'linux' || $OS eq "macosx") { print "Sorry, configure.pl does not support automatic add to cron yet.\n"; print "You can do it manually by adding the following command to your cron:\n"; print "$AWSTATS_CGI_PATH/awstats.pl -update -config=".($site?$site:"myvirtualserver")."\n"; print "Or if you have several config files and prefer having only one command:\n"; print "$AWSTATS_PATH/tools/awstats_updateall.pl now\n"; print "Press ENTER to continue... "; $bidon=; } elsif ($OS eq 'windows') { print "Sorry, for Windows users, if you want to have statistics to be\n"; print "updated on a regular basis, you have to add the update process\n"; print "in a scheduler task manually (See AWStats docs/index.html).\n"; print "Press ENTER to continue... "; $bidon=; } else { print "Sorry, if you want to have statistics to be\n"; print "updated on a regular basis, you have to add the update process\n"; print "in a scheduler task manually (See AWStats docs/index.html).\n"; print "Press ENTER to continue... "; $bidon=; } #print "\n-----> End of configuration\n"; print "\n\n"; if ($site) { print "A SIMPLE config file has been created: $configfile\n"; print "You should have a look inside to check and change manually main parameters.\n"; print "You can then manually update your statistics for '$site' with command:\n"; print "> perl awstats.pl -update -config=$site\n"; if (scalar keys %ApacheConfPath) { print "You can also read your statistics for '$site' with URL:\n"; print "> http://localhost/awstats/awstats.pl?config=$site\n"; } else { print "You can also build static report pages for '$site' with command:\n"; print "> perl awstats.pl -output=pagetype -config=$site\n"; } print "\n"; } else { print "No config file was built. You can run this tool later to build as\n"; print "much config/profile files as you want.\n"; print "Once you have a config/profile file, for example 'awstats.demo.conf',\n"; print "You can manually update your statistics for 'demo' with command:\n"; print "> perl awstats.pl -update -config=demo\n"; if (scalar keys %ApacheConfPath) { print "You can also read your statistics for 'demo' with URL:\n"; print "> http://localhost/awstats/awstats.pl?config=demo\n"; } else { print "You can also build static report pages for 'demo' with command:\n"; print "> perl awstats.pl -output=pagetype -config=demo\n"; } print "\n"; } print "Press ENTER to finish...\n"; $bidon=; 0; # Do not remove this line awstats-7.4/tools/xslt/0000750000175000017500000000000012410217071013006 5ustar skskawstats-7.4/tools/xslt/awstats.datademo2.xml0000640000175000017500000004010112410217071017052 0ustar sksk AWSTATS DATA FILE 6.7 (build 1.892) # If you remove this file, all statistics for date 200101 will be lost/reset.
    # LastLine = Date of last record processed - Last record line number in last log - Last record offset in last log - Last record signature value # FirstTime = Date of first visit for history file # LastTime = Date of last visit for history file # LastUpdate = Date of last update - Nb of parsed records - Nb of parsed old records - Nb of parsed new records - Nb of parsed corrupted - Nb of parsed dropped # TotalVisits = Number of visits # TotalUnique = Number of unique visitors # MonthHostsKnown = Number of hosts known # MonthHostsUnKnown = Number of hosts unknown BEGIN_GENERAL8
    LastLine20010101170000 84 10496 69181820316
    FirstTime20010101000010
    LastTime20010101163000
    LastUpdate20070712233159 84 0 45 38 1
    TotalVisits5
    TotalUnique4
    MonthHostsKnown6
    MonthHostsUnknown0
    END_GENERAL
    # Misc ID - Pages - Hits - Bandwidth BEGIN_MISC10
    QuickTimeSupport000
    JavaEnabled010
    JavascriptDisabled000
    PDFSupport010
    WindowsMediaPlayerSupport010
    AddToFavourites010
    RealPlayerSupport010
    TotalMisc010
    DirectorSupport000
    FlashSupport010
    END_MISC
    # Hour - Pages - Hits - Bandwidth - Not viewed Pages - Not viewed Hits - Not viewed Bandwidth BEGIN_TIME24
    04642054000
    1000000
    2000000
    3000000
    4000000
    5000000
    6000000
    7000000
    8000000
    9000000
    10000000
    11000000
    12816108122337607
    132214018168829
    14000220
    1500011299
    1666422856000
    170001170476
    18000000
    19000000
    20000000
    21000000
    22000000
    23000000
    END_TIME
    25 # Host - Pages - Hits - Bandwidth - Last visit date - [Start date of last visit] - [Last page of last visit] # [Start date of last visit] and [Last page of last visit] are saved only if session is not finished # The 25 first Hits must be first (order not required for others) BEGIN_VISITOR6
    camarche8149410420010101120025
    alamentin-104-1-77-10.w80-8.abo.wanadoo.fr664228562001010116300020010101160000/page1.html
    alamentin-104-1-77-3.w80-8.abo.wanadoo.fr464205420010101120125
    camarchesuperbienmeme221401820010101130100
    camarchetresbienmeme017009
    alamentin-104-1-77-2.w80-8.abo.wanadoo.fr017009
    END_VISITOR
    # Date - Pages - Hits - Bandwidth - Visits BEGIN_DAY1
    2001010120305870505
    END_DAY
    25 # Domain - Pages - Hits - Bandwidth # The 25 first Pages must be first (order not required for others) BEGIN_DOMAIN2
    fr1013471919
    ip1017115131
    END_DOMAIN
    # Cluster ID - Pages - Hits - Bandwidth BEGIN_CLUSTER0
    END_CLUSTER
    5 # Login - Pages - Hits - Bandwidth - Last visit # The 5 first Pages must be first (order not required for others) BEGIN_LOGIN1
    john_begood221401820010101130100
    END_LOGIN
    25 # Robot ID - Hits - Bandwidth - Last visit - Hits on robots.txt # The 25 first Hits must be first (order not required for others) BEGIN_ROBOT3
    up\.browser68829200101011300000
    googlebot27308200101011202051
    unknown1299200101011202001
    END_ROBOT
    5 # Worm ID - Hits - Bandwidth - Last visit # The 5 first Hits must be first (order not required for others) BEGIN_WORMS1
    code_red129920010101150000
    END_WORMS
    20 # EMail - Hits - Bandwidth - Last visit # The 20 first Hits must be first (order not required for others) BEGIN_EMAILSENDER0
    END_EMAILSENDER
    20 # EMail - Hits - Bandwidth - Last visit # The 20 first hits must be first (order not required for others) BEGIN_EMAILRECEIVER0
    END_EMAILRECEIVER
    # Session range - Number of visits BEGIN_SESSION1
    0s-30s4
    END_SESSION
    25 # URL - Pages - Bandwidth - Entry - Exit # The 25 first Pages must be first (order not required for others) BEGIN_SIDER7
    /837340740
    /page1.html49150300
    /page332102703
    /page2.cgi21401800
    /cgi-bin/order.cgi;family%3df&type%3dt&titi%3di1700910
    /page2.cgi?x%3da&family%3da&y%3db&familx%3dx1700900
    /do/Show1700901
    END_SIDER
    # Files type - Hits - Bandwidth - Bandwidth without compression - Bandwidth after compression BEGIN_FILETYPES6
    png32102700
    html1246491000
    js2999600
    cgi42803600
    Unknown42803600
    gif53504500
    END_FILETYPES
    # OS ID - Hits BEGIN_OS6
    linuxmandr1
    macosx1
    linuxredhat1
    win958
    win200018
    win981
    END_OS
    # Browser ID - Hits BEGIN_BROWSER7
    firefox1.06
    mozilla2
    firebird6
    netscape7.11
    msie5.56
    opera1
    netscape4.78
    END_BROWSER
    # Screen size - Hits BEGIN_SCREENSIZE1
    1024x7681
    END_SCREENSIZE
    # Unknown referer OS - Last visit date BEGIN_UNKNOWNREFERER0
    END_UNKNOWNREFERER
    # Unknown referer Browser - Last visit date BEGIN_UNKNOWNREFERERBROWSER0
    END_UNKNOWNREFERERBROWSER
    # Origin - Pages - Hits BEGIN_ORIGIN6
    From0919
    From100
    From211
    From399
    From411
    From500
    END_ORIGIN
    # Search engine referers ID - Pages - Hits BEGIN_SEREFERRALS1
    a911
    END_SEREFERRALS
    25 # External page referers - Pages - Hits # The 25 first Pages must be first (order not required for others) BEGIN_PAGEREFS5
    http://us.f109.mail.yahoo.com/ym/ShowLetter55
    http://www.sitereferer:81/cgi-bin/azerty.pl11
    http://WWW.SiteRefereR:80/cgi-bin/azerty.pl11
    http://www.freeweb.hu/icecat/filmek/film04.html11
    http://www.sitereferer/cgi-bin/search.pl11
    END_PAGEREFS
    10 # Search keyphrases - Number of search # The 10 first number of search must be first (order not required for others) BEGIN_SEARCHWORDS1
    searchkeyfroma91
    END_SEARCHWORDS
    25 # Search keywords - Number of search # The 25 first number of search must be first (order not required for others) BEGIN_KEYWORDS1
    searchkeyfroma91
    END_KEYWORDS
    # Errors - Hits - Bandwidth BEGIN_ERRORS3
    302170476
    40510
    40410
    END_ERRORS
    # URL with 404 errors - Hits - Last URL referer BEGIN_SIDER_4041
    /404notfoundpage.html1http://refererto404nofoundpage/pageswithbadlink.html
    END_SIDER_404
    20 # Extra key - Pages - Hits - Bandwidth - Last access # The 20 first number of hits are first BEGIN_EXTRA_12
    99911020010101130100
    99811020010101130000
    END_EXTRA_1
    20 # Extra key - Pages - Hits - Bandwidth - Last access # The 20 first number of hits are first BEGIN_EXTRA_21
    http://xxx.com/aa.html01020010101170000
    END_EXTRA_2
    awstats-7.4/tools/xslt/awstats.datademo2.xslt0000640000175000017500000001717212410217071017260 0ustar sksk ---------------- Period Total unique visitors : Total visits : Total viewed pages : Total viewed hits : Total not viewed pages : Total not viewed hits : Added to favourites (?) : ---------------- Visit duration: 0s-30s : 30s-2mn : 2mn-5mn : 5mn-15mn : 15mn-30mn : 30mn-1h : 1h+ : ---------------- Countries top 5: : pages ---------------- Users arrived via: Typed in / from bookmarks : pages Unknown : pages Linked from an Internet Search Engine : pages Linked from an external page : pages Linked from an internal page : pages Linked from newsgroups : pages ---------------- Top search phrases: - hits ---------------- Robots/spiders: - hits ---------------- awstats-7.4/tools/xslt/awstats.datademo1.xslt0000640000175000017500000000272412410217071017254 0ustar sksk



     


    awstats-7.4/tools/xslt/README.txt0000640000175000017500000000171712410217071014513 0ustar sksk----- README.txt about AWStats XSLT demo ----- This directory is absolutely not required to make AWStats working. All files here are demo files you can use if you want to manipulate AWStats XML database to build report by yourself and without using AWStats output features. The following file describe the structure of the AWStats XML database (built when BuildHistoryOutput is set to 'xml'). * awstats.xsd File descriptor for AWStats xml database schema. The following two files can be used to test a xslt processing to transform an AWStats XML database (built when BuildHistoryOutput is set to 'xml'). into a report. * awstats.datademo1.xml A xml data demo file to test xslt transform with style sheet. * awstats.datademo1.xslt A demo xsl style sheet to transform de xml data demo file. To build a report using this 2 files and a xslt processor, you must run the command: xsltproc awstats.datademo1.xslt awstats.datademo1.xml > output.html awstats-7.4/tools/xslt/awstats.datademo1.xml0000640000175000017500000004771412410217071017072 0ustar sksk AWSTATS DATA FILE 6.5 (build 1.856) # If you remove this file, all statistics for date 200101 will be lost/reset.
    # LastLine = Date of last record processed - Last record line number in last log - Last record offset in last log - Last record signature value # FirstTime = Date of first visit for history file # LastTime = Date of last visit for history file # LastUpdate = Date of last update - Nb of parsed records - Nb of parsed old records - Nb of parsed new records - Nb of parsed corrupted - Nb of parsed dropped # TotalVisits = Number of visits # TotalUnique = Number of unique visitors # MonthHostsKnown = Number of hosts known # MonthHostsUnKnown = Number of hosts unknown BEGIN_GENERAL 8
    LastLine 20010102030000 84 10496 69181820316
    FirstTime 20010101100010
    LastTime 20010102023000
    LastUpdate 20051124203512 84 0 45 38 1
    TotalVisits 6
    TotalUnique 5
    MonthHostsKnown 0
    MonthHostsUnknown 7
    END_GENERAL
    # Misc ID - Pages - Hits - Bandwidth BEGIN_MISC 10
    QuickTimeSupport 0 0 0
    JavaEnabled 0 1 0
    JavascriptDisabled 0 0 0
    PDFSupport 0 1 0
    WindowsMediaPlayerSupport 0 1 0
    AddToFavourites 0 1 0
    RealPlayerSupport 0 1 0
    TotalMisc 0 1 0
    DirectorSupport 0 0 0
    FlashSupport 0 1 0
    END_MISC
    # Hour - Pages - Hits - Bandwidth - Not viewed Pages - Not viewed Hits - Not viewed Bandwidth BEGIN_TIME 24
    0 0 0 0 2 2 0
    1 0 0 0 1 1 299
    2 6 6 422856 0 0 0
    3 0 0 0 1 1 70476
    4 0 0 0 0 0 0
    5 0 0 0 0 0 0
    6 0 0 0 0 0 0
    7 0 0 0 0 0 0
    8 0 0 0 0 0 0
    9 0 0 0 0 0 0
    10 4 6 42054 0 0 0
    11 0 0 0 0 0 0
    12 0 0 0 0 0 0
    13 0 0 0 0 0 0
    14 0 0 0 0 0 0
    15 0 0 0 0 0 0
    16 0 0 0 0 0 0
    17 0 0 0 0 0 0
    18 0 0 0 0 0 0
    19 0 0 0 0 0 0
    20 0 0 0 0 0 0
    21 0 0 0 0 0 0
    22 8 16 108122 3 3 7607
    23 3 8 22847 0 0 0
    END_TIME
    10 # Host - Pages - Hits - Bandwidth - Last visit date - [Start date of last visit] - [Last page of last visit] # [Start date of last visit] and [Last page of last visit] are saved only if session is not finished # The 10 first Hits must be first (order not required for others) BEGIN_VISITOR 7
    80.8.55.1 8 14 94104 20010101220025
    80.8.55.10 6 6 422856 20010102023000 20010102020000 /page1.html
    80.8.55.3 4 6 42054 20010101220125
    80.8.55.7 2 2 14018 20010101230100
    80.8.55.6 1 6 8829 20010101230000
    80.8.55.4 0 1 7009
    80.8.55.2 0 1 7009
    END_VISITOR
    # Date - Pages - Hits - Bandwidth - Visits BEGIN_DAY 2
    20010101 15 30 173023 5
    20010102 6 6 422856 1
    END_DAY
    10 # Domain - Pages - Hits - Bandwidth # The 10 first Pages must be first (order not required for others) BEGIN_DOMAIN 1
    ip 21 36 595879
    END_DOMAIN
    # Cluster ID - Pages - Hits - Bandwidth BEGIN_CLUSTER 0
    END_CLUSTER
    10 # Login - Pages - Hits - Bandwidth - Last visit # The 10 first Pages must be first (order not required for others) BEGIN_LOGIN 2
    John_Begood 2 2 14018 20010101230100
    john 1 6 8829 20010101230000
    END_LOGIN
    10 # Robot ID - Hits - Bandwidth - Last visit - Hits on robots.txt # The 10 first Hits must be first (order not required for others) BEGIN_ROBOT 2
    googlebot 2 7308 20010101220205 1
    unknown 1 299 20010101220200 1
    END_ROBOT
    5 # Worm ID - Hits - Bandwidth - Last visit # The 5 first Hits must be first (order not required for others) BEGIN_WORMS 0
    END_WORMS
    20 # EMail - Hits - Bandwidth - Last visit # The 20 first Hits must be first (order not required for others) BEGIN_EMAILSENDER 0
    END_EMAILSENDER
    20 # EMail - Hits - Bandwidth - Last visit # The 20 first hits must be first (order not required for others) BEGIN_EMAILRECEIVER 0
    END_EMAILRECEIVER
    # Session range - Number of visits BEGIN_SESSION 1
    0s-30s 5
    END_SESSION
    10 # URL - Pages - Bandwidth - Entry - Exit # The 10 first Pages must be first (order not required for others) BEGIN_SIDER 6
    / 8 373407 4 0
    /page1.html 4 91503 0 0
    /page3 3 21027 0 3
    /page2.cgi 3 21027 0 0
    /cgi-bin/order.cgi 2 14018 2 1
    /do/Show 1 7009 0 1
    END_SIDER
    # Files type - Hits - Bandwidth - Bandwidth without compression - Bandwidth after compression BEGIN_FILETYPES 7
    php 8 373407 0 0
    png 3 21027 0 0
    html 4 91503 0 0
    js 2 9996 0 0
    cgi 5 35045 0 0
    Unknown 4 28036 0 0
    gif 10 36865 0 0
    END_FILETYPES
    # OS ID - Hits BEGIN_OS 7
    linuxmandr 1
    macosx 1
    linuxredhat 1
    win95 8
    win2000 18
    Unknown 6
    win98 1
    END_OS
    # Browser ID - Hits BEGIN_BROWSER 8
    firefox1.0 6
    mozilla 2
    netscape7.1 1
    opera 1
    sagem 6
    firebird 6
    msie5.5 6
    netscape4.7 8
    END_BROWSER
    # Screen size - Hits BEGIN_SCREENSIZE 1
    1024x768 1
    END_SCREENSIZE
    # Unknown referer OS - Last visit date BEGIN_UNKNOWNREFERER 1
    SAGEM-myX-5m/1.0_UP.Browser/6.1.0.6.1.103_(GUI)_MMP/1.0_(Google_WAP_Proxy/1.0) 20010101230000
    END_UNKNOWNREFERER
    # Unknown referer Browser - Last visit date BEGIN_UNKNOWNREFERERBROWSER 0
    END_UNKNOWNREFERERBROWSER
    # Origin - Pages - Hits BEGIN_ORIGIN 6
    From0 9 19
    From1 0 0
    From2 2 7
    From3 9 9
    From4 1 1
    From5 0 0
    END_ORIGIN
    # Search engine referers ID - Pages - Hits BEGIN_SEREFERRALS 2
    google 1 6
    a9 1 1
    END_SEREFERRALS
    10 # External page referers - Pages - Hits # The 10 first Pages must be first (order not required for others) BEGIN_PAGEREFS 5
    http://us.f109.mail.yahoo.com/ym/ShowLetter 5 5
    http://www.sitereferer:81/cgi-bin/azerty.pl 1 1
    http://WWW.SiteRefereR:80/cgi-bin/azerty.pl 1 1
    http://www.freeweb.hu/icecat/filmek/film04.html 1 1
    http://www.sitereferer/cgi-bin/search.pl 1 1
    END_PAGEREFS
    10 # Search keyphrases - Number of search # The 10 first number of search must be first (order not required for others) BEGIN_SEARCHWORDS 2
    ma%c3%aetre+è­¨ve 1
    searchkeyfroma9 1
    END_SEARCHWORDS
    10 # Search keywords - Number of search # The 10 first number of search must be first (order not required for others) BEGIN_KEYWORDS 3
    searchkeyfroma9 1
    ma%c3%aetre 1
    è­¨ve 1
    END_KEYWORDS
    # Errors - Hits - Bandwidth BEGIN_ERRORS 3
    302 1 70476
    405 1 0
    404 2 299
    END_ERRORS
    # URL with 404 errors - Hits - Last URL referer BEGIN_SIDER_404 2
    /default.ida 1 -
    /404notfoundpage.html 1 http://refererto404nofoundpage/pageswithbadlink.html
    END_SIDER_404
    20 # Extra key - Pages - Hits - Bandwidth - Last access # The 20 first number of hits are first BEGIN_EXTRA_1 2
    999 1 1 0 20010101230100
    998 1 1 0 20010101230000
    END_EXTRA_1
    awstats-7.4/tools/xslt/awstats.xsd0000640000175000017500000000564212410217071015224 0ustar sksk awstats-7.4/tools/geoip_generator.pl0000750000175000017500000003774512410217071015545 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # Generates override files for the GEOIP databases for a given IP range # This tool is part of AWStats log analyzer but can be use # alone for any other log analyzer. # See COPYING.TXT file about AWStats GNU General Public License. #----------------------------------------------------------------------------- use strict; no strict "refs"; use Switch; #------------------------------------------------------------------------------ # Defines #------------------------------------------------------------------------------ my $REVISION = '20140126'; my $VERSION="0.5 (build $REVISION)"; use vars qw/ $DirData /; # Variables my %temp = {}; my $SiteConfig = ""; my $Output = ""; my $IPStart = ""; my $IPEnd = ""; my $DBType = ""; my $OutputDir = ""; my $Debug = 0; my $Overwrite = 0; my $Fields = ""; my $DIR=""; my $PROG; my $FileConfig; my $DirData; my @Values = (); # each array entry consists of the commandline name and the pluginname my %Types = ( lc("GeoIP") => "geoip", lc("GeoIPCity") => "geoip_city_maxmind", lc("GeoIPCityLite") => "geoip_city_maxmind", lc("GeoIPRegion") => "geoip_region_maxmind", lc("GeoIPOrg") => "geoip_org_maxmind", lc("GeoIPASN") =>"geoip_asn_maxmind" ); #----------------------------------------------------------------------------- # Functions #----------------------------------------------------------------------------- #------------------------------------------------------------------------------ # Function: Write an error message and exit # Parameters: $message # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub error { print "Error: $_[0].\n"; exit 1; } #------------------------------------------------------------------------------ # Function: Write a debug message # Parameters: $message # Input: $Debug # Output: None # Return: None #------------------------------------------------------------------------------ sub debug { my $level = $_[1] || 1; if ($Debug >= $level) { my $debugstring = $_[0]; print "DEBUG $level - ".localtime(time())." : $debugstring\n"; } } #------------------------------------------------------------------------------ # Function: Write a warning message # Parameters: $message # Input: $Debug # Output: None # Return: None #------------------------------------------------------------------------------ sub warning { my $messagestring=shift; if ($Debug) { debug("$messagestring",1); } print "$messagestring\n"; } #------------------------------------------------------------------------------ # Function: CL - returns just the root name of the config file. I.e. if the # site config name is "awstats.conf" this will return "awstats" # Parameters: - # Input: $SiteConfig # Output: String with the root config name # Return: - #------------------------------------------------------------------------------ sub Get_Config_Name{ my $temp = shift; my $idx = -1; # check for slash $idx = rindex($temp, "/"); if ($idx > -1){ $temp = substr($temp, $idx+1);} else{ $idx = rindex($temp, "\\"); if ($idx > -1){ $temp = substr($temp, $idx+1);} } # get the dot $idx = rindex($temp, "."); if ($idx > -1){ $temp = substr($temp, 0, $idx);} return $temp; } #------------------------------------------------------------------------------ # Function: Read config file # Parameters: None or configdir to scan # Input: $DIR $PROG $SiteConfig # Output: Global variables # Return: - #------------------------------------------------------------------------------ sub Read_Config { # Check config file in common possible directories : # Windows : "$DIR" (same dir than awstats.pl) # Standard, Mandrake and Debian package : "/etc/awstats" # Other possible directories : "/usr/local/etc/awstats", "/etc" # FHS standard, Suse package : "/etc/opt/awstats" my $configdir=shift; my @PossibleConfigDir=(); my $FileSuffix; # if an output was specified, then skip this if (!($Output eq '')){return;} if ($configdir) { @PossibleConfigDir=("$configdir"); } else { @PossibleConfigDir=("$DIR","/etc/awstats","/usr/local/etc/awstats","/etc","/etc/opt/awstats"); } # Open config file $FileConfig=$FileSuffix=''; foreach my $dir (@PossibleConfigDir) { my $searchdir=$dir; if ($searchdir && $searchdir !~ /[\\\/]$/) { $searchdir .= "/"; } if (open(CONFIG,"${searchdir}awstats.$SiteConfig.conf")) { $FileConfig="${searchdir}awstats.$SiteConfig.conf"; $FileSuffix=".$SiteConfig"; last; } if (open(CONFIG,"${searchdir}awstats.conf")) { $FileConfig="${searchdir}awstats.conf"; $FileSuffix=''; last; } if (open(CONFIG,"$SiteConfig")) { $FileConfig="$SiteConfig"; $FileSuffix=''; last; } } if (! $FileConfig) { error("Couldn't open config file \"awstats.$SiteConfig.conf\" nor \"awstats.conf\" nor \"$SiteConfig.conf\" after searching in path \"".join(',',@PossibleConfigDir)."\": $!"); } # Analyze config file content and close it &Parse_Config( *CONFIG , 1 , $FileConfig); close CONFIG; } #------------------------------------------------------------------------------ # Function: Parse content of a config file # Parameters: opened file handle, depth level, file name # Input: - # Output: Global variables # Return: - #------------------------------------------------------------------------------ sub Parse_Config { my ( $confighandle ) = $_[0]; my $level = $_[1]; my $configFile = $_[2]; my $versionnum=0; my $conflinenb=0; if ($level > 10) { error("$PROG can't read down more than 10 level of includes. Check that no 'included' config files include their parent config file (this cause infinite loop)."); } while (<$confighandle>) { chomp $_; s/\r//; $conflinenb++; # Extract version from first line if (! $versionnum && $_ =~ /^# AWSTATS CONFIGURE FILE (\d+).(\d+)/i) { $versionnum=($1*1000)+$2; #if ($Debug) { debug(" Configure file version is $versionnum",1); } next; } if ($_ =~ /^\s*$/) { next; } # Check includes if ($_ =~ /^Include "([^\"]+)"/ || $_ =~ /^#include "([^\"]+)"/) { # #include kept for backward compatibility my $includeFile = $1; if ($Debug) { debug("Found an include : $includeFile",2); } if ( $includeFile !~ /^[\\\/]/ ) { # Correct relative include files if ($FileConfig =~ /^(.*[\\\/])[^\\\/]*$/) { $includeFile = "$1$includeFile"; } } if ($level > 1) { warning("Warning: Perl versions before 5.6 cannot handle nested includes"); next; } if ( open( CONFIG_INCLUDE, $includeFile ) ) { &Parse_Config( *CONFIG_INCLUDE , $level+1, $includeFile); close( CONFIG_INCLUDE ); } else { error("Could not open include file: $includeFile" ); } next; } # Remove comments if ($_ =~ /^\s*#/) { next; } $_ =~ s/\s#.*$//; # Extract param and value my ($param,$value)=split(/=/,$_,2); $param =~ s/^\s+//; $param =~ s/\s+$//; if ($param =~ /^DirData/){ $DirData = $value; #$DirData =~ s/"//g; } # If not a param=value, try with next line if (! $param) { warning("Warning: Syntax error line $conflinenb in file '$configFile'. Config line is ignored."); next; } if (! defined $value) { warning("Warning: Syntax error line $conflinenb in file '$configFile'. Config line is ignored."); next; } if ($value) { $value =~ s/^\s+//; $value =~ s/\s+$//; $value =~ s/^\"//; $value =~ s/\";?$//; # Replace __MONENV__ with value of environnement variable MONENV # Must be able to replace __VAR_1____VAR_2__ while ($value =~ /__([^\s_]+(?:_[^\s_]+)*)__/) { my $var=$1; $value =~ s/__${var}__/$ENV{$var}/g; } } # Extra parameters # if ($param =~ /^ExtraSectionName(\d+)/) { $ExtraName[$1]=$value; next; } # # # Plugins # if ( $param =~ /^LoadPlugin/ ) { push @PluginsToLoad, $value; next; } # If parameters was not found previously, defined variable with name of param to value $$param=$value; } if ($Debug) { debug("Config file read was \"$configFile\" (level $level)"); } } #------------------------------------------------------------------------------ # Function: Attempts to load an existing override file # Parameters: $SiteConfig $DirData # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub Load_File{ my $conf = Get_Config_Name($SiteConfig); my $file = $DirData; $file =~ s/"//g; if (!(rindex($file, "/") >= length($file)-1)){$file .= "/";} $file .= $Types{lc($DBType)}.".$conf.txt"; if (!($Output eq "")){$file = $Output;} # see if file exists if (!(-s $file)){debug("$file does not exist"); return;} # try loading debug("Attempting to load data from $file"); if (!open(DATA, $file)){error("Unable to open the data file: $file");} while () { chomp $_; s/\r//; # skip comments if ($_ =~ m/^#/){next;} my $idx = index($_, ","); if ($idx < 0) { debug("Invalid line: $_"); next; } my $ip = substr($_, 0, $idx); my $vals = substr($_, $idx); $temp{$ip} = $vals; } close(DATA); debug("Loaded ".scalar(%temp)." entries from the file"); } #------------------------------------------------------------------------------ # Function: Dumps the temp hash to the file # Parameters: $SiteConfig $DirData # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub Write_File{ my $conf = Get_Config_Name($SiteConfig); my $file = $DirData; $file =~ s/"//g; if (!(rindex($file, "/") >= length($file)-1)){$file .= "/";} $file .= $Types{lc($DBType)}.".$conf.txt"; if (!($Output eq '')){$file = $Output;} # try loading debug("Attempting to write data to $file"); if (!open(DATA, ">$file")){error("Unable to open the data file: $file");} my $counter = 0; # sort to make it easier to find ips foreach my $key (sort keys %temp){ if ($temp{$key}){ print DATA "$key$temp{$key}\n"; $counter++; } } close(DATA); debug("Wrote $counter entries to the data file"); } #------------------------------------------------------------------------------ # Function: Converts an IPv4 address to a decimal value # Parameters: IP address in dotted notation # Input: None # Output: None # Return: Integer #------------------------------------------------------------------------------ sub addr_to_num { unpack( N => pack( C4 => split( /\./, $_[0] ) ) ) } #------------------------------------------------------------------------------ # Function: Converts an IPv4 address from decimal to it's dotted form # Parameters: IP address as an integer # Input: None # Output: None # Return: Dotted IP address #------------------------------------------------------------------------------ sub num_to_addr { join q{.}, unpack( C4 => pack( N => $_[0] ) ) } #----------------------------------------------------------------------------- # MAIN #----------------------------------------------------------------------------- ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; my $QueryString=''; for (0..@ARGV-1) { $QueryString .= "$ARGV[$_]&"; } if ($QueryString =~ /(^|-|&)debug=(\d+)/i) { $Debug=$2; } if ($QueryString =~ /(^|-|&)config=([^&]+)/i) { $SiteConfig="$2"; } if ($QueryString =~ /(^|-|&)output=([^&]+)/i) { $Output="$2"; } if ($QueryString =~ /(^|-|&)type=([^&]+)/i) { $DBType="$2"; } if ($QueryString =~ /(^|-|&)start=([^&]+)/i) { $IPStart="$2"; } if ($QueryString =~ /(^|-|&)end=([^&]+)/i) { $IPEnd="$2"; } if ($QueryString =~ /(^|-|&)overwrite/i) { $Overwrite=1; } # Values if ($QueryString =~ /(^|-|&)cc=([^&]+)/i) { $Values[1]="$2"; } if ($QueryString =~ /(^|-|&)rc=([^&]+)/i) { $Values[2]="$2"; } if ($QueryString =~ /(^|-|&)cn=([^&]+)/i) { $Values[3]="$2"; } if ($QueryString =~ /(^|-|&)pc=([^&]+)/i) { $Values[4]="$2"; } if ($QueryString =~ /(^|-|&)la=([^&]+)/i) { $Values[5]="$2"; } if ($QueryString =~ /(^|-|&)lo=([^&]+)/i) { $Values[6]="$2"; } if ($QueryString =~ /(^|-|&)mc=([^&]+)/i) { $Values[7]="$2"; } if ($QueryString =~ /(^|-|&)ac=([^&]+)/i) { $Values[8]="$2"; } if ($QueryString =~ /(^|-|&)is=([^&]+)/i) { $Values[9]="$2"; } if ($QueryString =~ /(^|-|&)as=([^&]+)/i) { $Values[10]="$2"; } if ($OutputDir) { if ($OutputDir !~ /[\\\/]$/) { $OutputDir.="/"; } } if ((!$SiteConfig && !$Output) || !$DBType || !$IPStart) { print "----- $PROG $VERSION (c) Chris Larsen -----\n"; print "$PROG generates GeoIP Override files using data you provide.\n"; print "Very useful for Intranet reporting or correcting an old database.\n"; print "\n"; print "Usage:\n"; print "$PROG -type={type} <-config={site config} | -output={file_path}>\n"; print " -start{IP} [data options] [script options]\n"; print "\n"; print " Required:\n"; print " -type=val Type of database you want to override.\n"; print " -config=val The full path to your AWStats config file\n"; print " -output=val The full path to an output file\n"; print " -start=dotted IP Starting IP address in 127.0.0.1 format\n"; print "\n"; print " Data Options: (surround in quotes if spaces)\n"; print " -cc=xx Two character country code \n"; print " -rc=xx Region code or name\n"; print " -cn=xx City name\n"; print " -pc=xx Postal code\n"; print " -la=xx Latitude\n"; print " -lo=xx Longitude\n"; print " -mc=xx Metro code (US only)\n"; print " -ac=xx Area code (US only)\n"; print " -is=xx ISP\n"; print " -as=xx AS Number\n"; print "\n"; print " Script Options:\n"; print " -end=dotted IP Ending IP address for a range \n"; print " -debug=level Debug level to print\n"; print " -overwrite Deletes any entries in the file. Otherwise appends.\n"; print "\n"; print "Allowable Type Values: GeoIP | GeoIPFree | GeoIPCity | GeoIPCityLite\n"; print " GeoIPRegion | GeoIPOrg | GeoIPASN \n"; exit 0; } # check the db type my $matched=0; if (!$Types{lc($DBType)}){error("Invalid database type: $DBType");} else {debug("Using Database type: $DBType");} # Read config file (SiteConfig must be defined) &Read_Config($SiteConfig); # see if we have valid IPs if ($IPStart =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address debug("Starting IPv4 Address: $IPStart"); } elsif ($IPStart =~ /^[0-9A-F]*:/i) { # IPv6 address error("Starting IPv6 Address: $IPStart"); }else{error("Invalid starting IP address: $IPStart");} # for the end IP, if it's empty, we copy the start if ($IPEnd eq ""){ $IPEnd = $IPStart; debug ("Using IPStart for IPEnd: $IPEnd"); } elsif($IPEnd =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address debug("Ending IPv4 Address: $IPEnd"); } elsif ($IPEnd =~ /^[0-9A-F]*:/i) { # IPv6 address error("Ending IPv6 Address: $IPEnd"); }else{error("Invalid ending IP address: $IPEnd");} # load the file before anything happens if (!$Overwrite){ Load_File(); } # get the start and end IPs as integers my $start = addr_to_num($IPStart); my $end = addr_to_num($IPEnd); # loop and dump while ($start <= $end){ # add the IP and values to the hash my $f = ","; # clean start and end quotes if ($f =~ m/^"/) {$f = substr($f, 1);} # build the fields by switching on the dbtype switch (lc($DBType)){ case "geoip" {$f .= $Values[1]; } case "geoipfree" {$f .= $Values[1]; } case "geoipcity" { $f .= $Values[1].",".$Values[2].",\"".$Values[3]."\",\""; $f .= $Values[4]."\",".$Values[5].",".$Values[6].",\""; $f .= $Values[7]."\",\"".$Values[8]."\""; } case "geoipcitylite" { $f .= $Values[1].",".$Values[2].",\"".$Values[3]."\",\""; $f .= $Values[4]."\",".$Values[5].",".$Values[6].",\""; $f .= $Values[7]."\",\"".$Values[8]."\""; } case "geoipregion" {$f .= "\"".$Values[2]."\""; } case "geoiporg" {$f .= "\"".$Values[9]."\""; } case "geoipasn" {$f .= "\"".$Values[10]." ".$Values[9]."\""} } $temp{num_to_addr($start)} = $f; debug("Generating: ".num_to_addr($start)."$f",2); $start++; } # write Write_File(); 1; # Do not remove this line awstats-7.4/tools/awstats_exportlib.pl0000750000175000017500000003051212410217071016133 0ustar sksk#!/usr/bin/perl #----------------------------------------------------------------------------- # Export lib data values to a text files to allow to use AWStats robots, # os, browsers, search_engines database with other log analyzers #----------------------------------------------------------------------------- #use warnings; # Must be used in test mode only. This reduce a little process speed #use diagnostics; # Must be used in test mode only. This reduce a lot of process speed use strict;no strict "refs"; #----------------------------------------------------------------------------- # Defines #----------------------------------------------------------------------------- use vars qw/ $REVISION $VERSION /; $REVISION='20140126'; $VERSION="5.1 (build $REVISION)"; # ---------- Init variables ------- # Constants use vars qw/ $DEBUGFORCED /; $DEBUGFORCED=0; # Force debug level to log lesser level into debug.log file (Keep this value to 0) # Running variables use vars qw/ $DIR $PROG $Extension $Debug $DebugResetDone /; $DIR=$PROG=$Extension=''; $Debug=0; $DebugResetDone=0; use vars qw/ $LevelForRobotsDetection $LevelForBrowsersDetection $LevelForOSDetection $LevelForRefererAnalyze $LevelForSearchEnginesDetection $LevelForKeywordsDetection /; ($LevelForRobotsDetection, $LevelForBrowsersDetection, $LevelForOSDetection, $LevelForRefererAnalyze, $LevelForSearchEnginesDetection, $LevelForKeywordsDetection)= (2,1,1,1,1,1); use vars qw/ $DirLock $DirCgi $DirData $DirIcons $DirLang $AWScript $ArchiveFileName $AllowAccessFromWebToFollowingIPAddresses $HTMLHeadSection $HTMLEndSection $LinksToWhoIs $LinksToIPWhoIs $LogFile $LogFormat $LogSeparator $Logo $LogoLink $StyleSheet $WrapperScript $SiteDomain /; ($DirLock, $DirCgi, $DirData, $DirIcons, $DirLang, $AWScript, $ArchiveFileName, $AllowAccessFromWebToFollowingIPAddresses, $HTMLHeadSection, $HTMLEndSection, $LinksToWhoIs, $LinksToIPWhoIs, $LogFile, $LogFormat, $LogSeparator, $Logo, $LogoLink, $StyleSheet, $WrapperScript, $SiteDomain)= ("","","","","","","","","","","","","","","","","","","",""); use vars qw/ $QueryString $LibToExport $ExportFormat /; ($QueryString, $LibToExport, $ExportFormat)= ('','',''); # ---------- Init arrays -------- use vars qw/ @RobotsSearchIDOrder_list1 @RobotsSearchIDOrder_list2 @RobotsSearchIDOrder_listgen @SearchEnginesSearchIDOrder_list1 @SearchEnginesSearchIDOrder_list2 @SearchEnginesSearchIDOrder_listgen @BrowsersSearchIDOrder @OSSearchIDOrder @WordsToExtractSearchUrl @WordsToCleanSearchUrl @WormsSearchIDOrder @RobotsSearchIDOrder @SearchEnginesSearchIDOrder /; @RobotsSearchIDOrder = @SearchEnginesSearchIDOrder = (); # ---------- Init hash arrays -------- use vars qw/ %BrowsersHashIDLib %BrowsersHashIcon %BrowsersHereAreGrabbers %DomainsHashIDLib %MimeHashLib %MimeHashIcon %MimeHashFamily %OSHashID %OSHashLib %RobotsHashIDLib %SearchEnginesHashID %SearchEnginesHashLib %SearchEnginesKnownUrl %NotSearchEnginesKeys %WormsHashID %WormsHashLib /; #----------------------------------------------------------------------------- # Functions #----------------------------------------------------------------------------- #------------------------------------------------------------------------------ # Function: Write error message and exit # Parameters: $message $secondmessage $thirdmessage $donotshowsetupinfo # Input: $LogSeparator $LogFormat # Output: None # Return: None #------------------------------------------------------------------------------ sub error { my $message=shift||""; my $secondmessage=shift||""; my $thirdmessage=shift||""; my $donotshowsetupinfo=shift||0; if ($Debug) { debug("$message $secondmessage $thirdmessage",1); } print STDERR "$message"; print STDERR "\n"; exit 1; } #------------------------------------------------------------------------------ # Function: Write debug message and exit # Parameters: $string $level # Input: $Debug = required level $DEBUGFORCED = required level forced # Output: None # Return: None #------------------------------------------------------------------------------ sub debug { my $level = $_[1] || 1; if ($level <= $DEBUGFORCED) { my $debugstring = $_[0]; if (! $DebugResetDone) { open(DEBUGFORCEDFILE,"debug.log"); close DEBUGFORCEDFILE; chmod 0666,"debug.log"; $DebugResetDone=1; } open(DEBUGFORCEDFILE,">>debug.log"); print DEBUGFORCEDFILE localtime(time)." - $$ - DEBUG $level - $debugstring\n"; close DEBUGFORCEDFILE; } if ($level <= $Debug) { my $debugstring = $_[0]; print localtime(time)." - DEBUG $level - $debugstring\n"; } } #------------------------------------------------------------------------------ # Function: Load the reference databases # Parameters: None # Input: $DIR # Output: Arrays and Hash tables are defined # Return: None #------------------------------------------------------------------------------ sub Read_Ref_Data { # Check lib files in common possible directories : # Windows : "${DIR}lib" (lib in same dir than awstats.pl) # Debian package : "/usr/share/awstats/lib" # Other possible directories : "./lib" my $lib=shift; my $dir=$lib; $lib=~ s/^.*[\\\/]//; $dir =~ s/[^\\\/]+$//; $dir =~ s/[\\\/]+$//; debug("Lib: $lib, Dir: $dir"); my @PossibleLibDir=("$dir","{DIR}lib","/usr/share/awstats/lib","./lib"); my %FilePath=(); my @FileListToLoad=(); push @FileListToLoad, "$lib"; foreach my $file (@FileListToLoad) { foreach my $dir (@PossibleLibDir) { my $searchdir=$dir; if ($searchdir && (!($searchdir =~ /\/$/)) && (!($searchdir =~ /\\$/)) ) { $searchdir .= "/"; } if (! $FilePath{$file}) { if (-s "${searchdir}${file}") { $FilePath{$file}="${searchdir}${file}"; if ($Debug) { debug("Call to Read_Ref_Data [FilePath{$file}=\"$FilePath{$file}\"]"); } # push @INC, "${searchdir}"; require "${file}"; require "$FilePath{$file}"; } } } if (! $FilePath{$file}) { my $filetext=$file; $filetext =~ s/\.pm$//; $filetext =~ s/_/ /g; &error("Error: Can't read file \"$file\".\nCheck if file is in ".($PossibleLibDir[0])." directory and is readable."); } } } #------------------------------------------------------------------------------ # Function: Unregex a string # Parameters: String # Input: - # Output: - # Return: Unregexed string #------------------------------------------------------------------------------ sub unregex { my $ss=shift; $ss=~s/\\//g; return $ss; } #------------------------------------------------------------------------------ # Function: Unregex a keyword code extractor # Parameters: String # Input: - # Output: - # Return: Unregexed string #------------------------------------------------------------------------------ sub unregexkeywordcode { my $ss=shift; my $firstoneonly=shift||0; my @xx=split(/\|/,$ss); my @ll=map { s/[\(\)]//g; $_; } @xx; if ($firstoneonly) { return $ll[0]; } return join(',',@ll); } #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; my @AllowedArgs=('-lib','-exportformat','-debug'); $QueryString=""; for (0..@ARGV-1) { if ($_ > 0) { $QueryString .= "&"; } my $NewLinkParams=$ARGV[$_]; $NewLinkParams =~ s/^-+//; $NewLinkParams =~ s/\s/%20/g; $QueryString .= "$NewLinkParams"; } $ExportFormat="text"; if ($QueryString =~ /lib=([^\s&]+)/i) { $LibToExport="$1"; } if ($QueryString =~ /exportformat=([^\s&]+)/i) { $ExportFormat="$1"; } if ($QueryString =~ /debug=(\d+)/i) { $Debug=$1; } if ($Debug) { debug("$PROG - $VERSION - Perl $^X $]",1); debug("QUERY_STRING=$QueryString",2); } if (! $LibToExport || ! $ExportFormat) { print "----- $PROG $VERSION (c) Laurent Destailleur -----\n"; print "$PROG is a tool to export AWStats lib (Robots, Os, Browsers, search\n"; print "engines database) to text files. This allow you to use AWStats lib with some\n"; print "other log analyzers (to enhance their capabilities or to make comparison).\n"; print "$PROG comes with ABSOLUTELY NO WARRANTY. It's a free software distributed\n"; print "with a GNU General Public License (See LICENSE file for details).\n"; print "\n"; print "Syntax: $PROG.$Extension -lib=/awstatslibpath/libfile.pm [-exportformat=format]\n"; print "\n"; print "Where format can be:\n"; print " text (default)\n"; print " webalizer\n"; print " analog\n"; print "\n"; exit 2; } &Read_Ref_Data($LibToExport); my $libisexportable=0; # Export data #------------ if ($LibToExport =~ /browsers/) { foreach my $key (@BrowsersSearchIDOrder) { if ($ExportFormat eq 'text') { print "$key\t$BrowsersHashIDLib{$key}\n"; } if ($ExportFormat eq 'webalizer') { print "GroupAgent\t$key\n"; } if ($ExportFormat eq 'analog') { print "Analog does not support self-defined browsers.\nUse 'text' export format if you want an export list of AWStats Browsers.\n"; last; } } $libisexportable=1; } if ($LibToExport =~ /mime/) { if ($ExportFormat eq 'analog') { foreach my $key (sort keys %MimeHashFamily) { if ($MimeHashFamily{$key} =~ /(text|page|script|document)/) { print "PAGEINCLUDE *.$key\n"; } } } foreach my $key (sort keys %MimeHashFamily) { if ($ExportFormat eq 'text') { print "$key\t$MimeHashLib{$MimeHashFamily{$key}}\n"; } if ($ExportFormat eq 'webalizer') { print "Webalizer does not support self-defined mime types.\nUse 'text' export format if you want an export list of AWStats Mime types.\n"; last; } if ($ExportFormat eq 'analog') { print "TYPEALIAS .$key \"$key [$MimeHashLib{$MimeHashFamily{$key}}]\"\n"; } } $libisexportable=1; } if ($LibToExport =~ /operating_systems/) { foreach my $key (sort keys %OSHashLib) { if ($ExportFormat eq 'text') { print "Feature not ready yet\n"; last; } if ($ExportFormat eq 'webalizer') { print "Webalizer does not support self-defined added OS.\nUse 'text' export format if you want an export list of AWStats OS.\n"; last; } if ($ExportFormat eq 'analog') { print "Analog does not support self-defined added OS.\nUse 'text' export format if you want an export list of AWStats OS.\n"; last; } } $libisexportable=1; } if ($LibToExport =~ /robots/) { my %robotlist=(); my @list; # Init RobotsSearchIDOrder required for update process @list=(); foreach (1..2) { push @list,"list$_"; } push @list,"listgen"; foreach my $key (@list) { push @RobotsSearchIDOrder,@{"RobotsSearchIDOrder_$key"}; } foreach my $key (@RobotsSearchIDOrder) { if ($ExportFormat eq 'text') { print "$key\t$RobotsHashIDLib{$key}\n"; } if ($ExportFormat eq 'webalizer') { print "GroupAgent\t$key\n"; } if ($ExportFormat eq 'analog') { print "ROBOTINCLUDE REGEXPI:$key\n"; } } $libisexportable=1; } if ($LibToExport =~ /search_engines/) { my @list; # Init SearchEnginesIDOrder required for update process @list=(); foreach (1..2) { push @list,"list$_"; } push @list,"listgen"; # Always added foreach my $key (@list) { push @SearchEnginesSearchIDOrder,@{"SearchEnginesSearchIDOrder_$key"}; } foreach my $key (@SearchEnginesSearchIDOrder) { if ($ExportFormat eq 'text') { print "$key\t$SearchEnginesKnownUrl{$SearchEnginesHashID{$key}}\t$SearchEnginesHashLib{$SearchEnginesHashID{$key}}\n"; } if ($ExportFormat eq 'webalizer') { my $urlkeywordsyntax=$SearchEnginesKnownUrl{$SearchEnginesHashID{$key}}; $urlkeywordsyntax=&unregexkeywordcode($urlkeywordsyntax,1); if (! $urlkeywordsyntax) { next; } # This has no keywordextractcode my $newkey=&unregex($key); if ($newkey =~ /[\[\]\(\)\|\?\*\+]/) { next; } # This was a regex value that i can't clean print "SearchEngine\t$newkey\t$urlkeywordsyntax\n"; print "GroupReferrer\t$newkey\t$SearchEnginesHashLib{$SearchEnginesHashID{$key}}\n"; } if ($ExportFormat eq 'analog') { my $urlkeywordsyntax=$SearchEnginesKnownUrl{$SearchEnginesHashID{$key}}; $urlkeywordsyntax=~s/=$//; $urlkeywordsyntax=&unregexkeywordcode($urlkeywordsyntax); if (! $urlkeywordsyntax) { next; } # This has no keywordextractcode my $newkey=&unregex($key); if ($newkey =~ /[\[\]\(\)\|\?\*\+]/) { next; } # This was a regex value that i can't clean print "SEARCHENGINE http://*$newkey*/* $urlkeywordsyntax\n"; } } $libisexportable=1; } if (! $libisexportable) { print "Export for AWStats lib '$LibToExport' is not supported in this tool version.\n"; } 0; # Do not remove this line awstats-7.4/tools/awstats_updateall.pl0000750000175000017500000001241512410217071016100 0ustar sksk#!/usr/bin/perl #------------------------------------------------------------------------------ # Launch update process for all config files found in a particular directory. # See COPYING.TXT file about AWStats GNU General Public License. #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # Defines #------------------------------------------------------------------------------ my $REVISION = '20140126'; my $VERSION="1.0 (build $REVISION)"; # Default value of DIRCONFIG my $DIRCONFIG = "/etc/awstats"; my $Debug=0; my $Awstats='awstats.pl'; my $AwstatsDir=''; my $AwstatsProg=''; my $LastLine=''; #------------------------------------------------------------------------------ # Functions #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # Function: Write error message and exit # Parameters: $message # Input: None # Output: None # Return: None #------------------------------------------------------------------------------ sub error { print STDERR "Error: $_[0].\n"; exit 1; } #------------------------------------------------------------------------------ # Function: Write debug message and exit # Parameters: $string $level # Input: %HTMLOutput $Debug=required level $DEBUGFORCED=required level forced # Output: None # Return: None #------------------------------------------------------------------------------ sub debug { my $level = $_[1] || 1; if ($Debug >= $level) { my $debugstring = $_[0]; if ($ENV{"GATEWAY_INTERFACE"}) { $debugstring =~ s/^ /   /; $debugstring .= "
    "; } print localtime(time)." - DEBUG $level - $debugstring\n"; } } #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ # Change default value if options are used my $helpfound=0;my $nowfound=0; my %confexcluded=(); for (0..@ARGV-1) { if ($ARGV[$_] =~ /^-*h/i) { $helpfound=1; last; } if ($ARGV[$_] =~ /^-*awstatsprog=(.*)/i) { $Awstats="$1"; next; } if ($ARGV[$_] =~ /^-*configdir=(.*)/i) { $DIRCONFIG="$1"; next; } if ($ARGV[$_] =~ /^-*excludeconf=(.*)/i) { #try to get the different files to exclude @conftoexclude = split(/,/, $1); foreach (@conftoexclude) { $confexcluded{"$_"}=1; } next; } if ($ARGV[$_] =~ /^-*debug=(\d+)/i) { $Debug=$1; next; } if ($ARGV[$_] =~ /^-*lastline=(\d+)/i) { $LastLine=$1; next; } if ($ARGV[$_] =~ /^now/i) { $nowfound=1; next; } } # Show usage help my $DIR; my $PROG; my $Extension; ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; if (!$nowfound || $helpfound || ! @ARGV) { print "----- $PROG $VERSION (c) Laurent Destailleur -----\n"; print "awstats_updateall launches update process for all AWStats config files (except\n"; print "awstats.model.conf) found in a particular directory, so you can easily setup a\n"; print "cron/scheduler job. The scanned directory is by default $DIRCONFIG.\n"; print "\n"; print "Usage: $PROG.$Extension now [options]\n"; print "\n"; print "Where options are:\n"; print " -awstatsprog=pathtoawstatspl\n"; print " -configdir=directorytoscan\n"; print " -excludeconf=conftoexclude[,conftoexclude2,...] (Note: awstats.model.conf is always excluded)\n"; print "\n"; exit 0; } debug("Scan directory $DIRCONFIG"); # Scan directory $DIRCONFIG opendir(DIR, $DIRCONFIG) || error("Can't scan directory $DIRCONFIG"); my @filesindir = grep { /^awstats\.(.*)conf$/ } sort readdir(DIR); closedir(DIR); debug("List of files found :".join(",",@filesindir)); # Build file list my @files=(); foreach my $file (@filesindir) { if ($confexcluded{$file}) { next; } # Should be useless if ($file =~ /^awstats\.(.*)conf$/) { my $conf=$1; $conf =~ s/\.$//; if ($conf eq 'model') { next; } if ($confexcluded{$conf}) { next; } } push @files, $file; } debug("List of files qualified :".join(",",@files)); # Run update process for each config file found if (@files) { # Check if AWSTATS prog is found my $AwstatsFound=0; if (-s "$Awstats") { $AwstatsFound=1; } elsif (-s "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl") { $Awstats="/usr/local/awstats/wwwroot/cgi-bin/awstats.pl"; $AwstatsFound=1; } if (! $AwstatsFound) { error("Can't find AWStats program ('$Awstats').\nUse -awstatsprog option to solve this"); exit 1; } # Define AwstatsDir and AwstatsProg ($AwstatsDir=$Awstats) =~ s/([^\/\\]+)$//; $AwstatsProg=$1; $AwstatsDir||='.'; $AwstatsDir =~ s/([^\/\\])[\\\/]+$/$1/; debug("AwstatsDir=$AwstatsDir"); debug("AwstatsProg=$AwstatsProg"); foreach (@files) { if ($_ =~ /^awstats\.(.*)conf$/) { my $domain = $1||"default"; $domain =~ s/\.$//; # Define command line my $command="\"$AwstatsDir/$AwstatsProg\" -update -config=$domain"; $command.=" -configdir=\"$DIRCONFIG\""; if ($LastLine) { $command.=" -lastline=$LastLine"; } # Run command line print "Running '$command' to update config $domain\n"; my $output = `$command 2>&1`; print "$output\n"; } } } else { print "No AWStats config file found in $DIRCONFIG\n"; } 0; # Do not remove this line awstats-7.4/tools/urlaliasbuilder.pl0000750000175000017500000002303312410217071015540 0ustar sksk#!/usr/bin/perl #------------------------------------------------------- # Small script to auto-generate URL Alias files for 5.2+ AWStats # Requires two Perl modules below. # From original title-grabber.pl file # (Feedback/suggestions to: simonjw@users.sourceforge.net) # Modified by eldy@users.sourceforge.net # # Note: If you want to retrieve document titles over SSL you must have OpenSSL and # the Net::SSL(eay) Perl Module available. This code will check that SSL is # supported before attempting to retrieve via it. #------------------------------------------------------- use LWP::UserAgent; use strict;no strict "refs"; # variables, etc my $REVISION = '20140126'; my $VERSION="1.0 (build $REVISION)"; ############### EDIT HERE ############### # you can set this manually if you will only grep one site my $SITECONFIG = ""; # Where the default input is located. my $awStatsDataDir = "/var/lib/awstats"; # Throttle HTTP requests - help avoid DoS-like results if on a quick network. # Number is the number of seconds to pause between requests. Set to zero for # no throttling. my $throttleRequestsTime = 0; # LWP settings # UA string passed to server. You should add this to SkipUserAgents in the # awstats.conf file if you want to ignore hits from this code. my $userAgent = "urlaliasbuilder/$VERSION"; # Put a sensible e-mail address here my $spiderOwner = "spider\@mydomain.com"; # Timeout (in seconds) for each HTTP request (increase on slow connections) my $getTimeOut = 2; # Proxy server to use when doing http/s - leave blank if you don't have one #my $proxyServer = "http://my.proxy.server:port/"; my $proxyServer = ""; # Hosts not to use a proxy for my @hostsNoProxy = ("host1","host1.my.domain.name"); # Make sure we don't download multi-megabyte files! We need only head section my $maxDocSizeBytes = 4096; # number is bytes ############### DON'T EDIT BELOW HERE ############### # Don't edit these my $FILEMARKER1 = "BEGIN_SIDER"; my $FILEMARKER2 = "END_SIDER"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $fullMonth = sprintf("%02d",$mon+1); my $fullYear = sprintf("%04d",$year+1900); # ====== main ====== # Change default value if options are used my $helpfound=0; my $nohosts=0; my $overwritedata=0; my $hostname=""; my $useHTTPS=0; # Data file to open my $fileToOpen = $awStatsDataDir . "/awstats" . $fullMonth . $fullYear . ($SITECONFIG?".$SITECONFIG":"") . ".txt"; # URL Alias file to open my $urlAliasFile = "urlalias" . ($SITECONFIG?".$SITECONFIG":"") . ".txt"; for (0..@ARGV-1) { if ($ARGV[$_] =~ /^-*urllistfile=([^\s&]+)/i) { $fileToOpen="$1"; next; } if ($ARGV[$_] =~ /^-*urlaliasfile=([^\s&]+)/i) { $urlAliasFile="$1"; next; } if ($ARGV[$_] =~ /^-*site=(.*)/i) { $hostname="$1"; next; } if ($ARGV[$_] =~ /^-*h/i) { $helpfound=1; next; } if ($ARGV[$_] =~ /^-*overwrite/i) { $overwritedata=1; next; } if ($ARGV[$_] =~ /^-*secure/i) { $useHTTPS=1; next; } } # if no host information provided, we bomb out to usage if(! $hostname && ! $SITECONFIG) { $nohosts=1; } # if no hostname set (i.e. -site=) then we use the config value if(! $hostname && $SITECONFIG) { $hostname=$SITECONFIG; } # Show usage help my $DIR; my $PROG; my $Extension; ($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; if ($nohosts || $helpfound || ! @ARGV) { print "\n----- $PROG $VERSION -----\n"; print ucfirst($PROG)." generates an 'urlalias' file from an input file.\n"; print "The input file must contain a list of URLs (It can be an AWStats history file).\n"; print "For each of thoose URLs, the script get the corresponding HTML page and catch the\n"; print "header information (title), then it writes an output file that contains one line\n"; print "for each URLs and several fields:\n"; print "- The first field is the URL,\n"; print "- The second is title caught from web page.\n"; print "This resulting file can be used by AWStats urlalias plugin.\n"; print "\n"; print "Usage: $PROG.$Extension -site=www.myserver.com [options]\n"; print "\n"; print "The site parameter contains the web server to get the page from.\n"; print "Where options are:\n"; print " -urllistfile=Input urllist file\n"; print " If this file is an AWStats history file then urlaliasbuilder will use the\n"; print " SIDER section of this file as its input URL's list.\n"; print " -urlaliasfile=Output urlalias file to build\n"; print " -overwrite Overwrite output file if exists\n"; print " -secure Use https protocol\n"; print "\n"; print "Example: $PROG.$Extension -site=www.someotherhost.com\n"; print "\n"; print "This is default configuration used when no option are provided on command line:\n"; print "Input urllist file: $fileToOpen (overwritten by -urllistfile option)\n"; print "Output urlalias file: $urlAliasFile (overwritten by -urlaliasfile option)\n"; print "\n"; print "This script was written from Simon Waight original works title-grabber.pl.\n"; print "\n"; exit 0; } my @archivedKeys=(); my $counter = 0; my $pageTitle = ""; # only read the alias file if we want to do a comparison # and append new items only (i.e. not overwrite) if($overwritedata == 0) { open(FILE,$urlAliasFile); my @bits = (); while() { chomp $_; s/\r//; @bits=split(/\t/,$_); @archivedKeys[$counter]=@bits[0]; $counter++; #print "key: " . @bits[0] . "\n"; } close(FILE); @bits = (); } # open input file (might be an AWStats history data file) print "Reading input file: $fileToOpen\n"; open(FILE,$fileToOpen) || die "Error: Can't open input urllist file $fileToOpen"; binmode FILE; my @field=(); my @addToAliasFile=(); my $addToAliasFileCount=0; my $isawstatshistoryfile=0; while () { chomp $_; s/\r//; if ($_ =~ /^AWSTATS DATA FILE/) { print "This file looks like an AWStats history file. Searching URLs list...\n"; $isawstatshistoryfile=1; } # Split line out into fields @field=split(/\s+/,$_); if (! $field[0]) { next; } # If we're at the start of the URL section of file if (! $isawstatshistoryfile || $field[0] eq $FILEMARKER1) { $_=; chomp $_; s/\r//; my @field=split(/\s+/,$_); my $count=0; my $matched = 0; while ($field[0] ne $FILEMARKER2) { if ($field[0]) { # compare awstats data entry against urlalias entry # only if we don't just want to write current items # to the file (i.e. overwrite) if($overwritedata == 0) { foreach my $key (@archivedKeys) { if($field[0] eq $key) { $matched = 1; last; } } # it's a new URL, so add to list of items to retrieve if($matched == 0) { @addToAliasFile[$addToAliasFileCount] = $field[0]; $addToAliasFileCount++; #print "new: " . $field[0] . "\n" } $matched = 0; } else { # no comparison, so everything is 'new' @addToAliasFile[$addToAliasFileCount] = $field[0]; $addToAliasFileCount++; } } $_=; chomp $_; s/\r//; @field=split(/\s+/,$_); } } } close(FILE); if($addToAliasFileCount == 0) { print "Found no new documents.\n\n" ; exit(); } print "Found " . $addToAliasFileCount . " new documents with no alias.\n"; my $fileOutput = ""; print "Looking thoose pages on web site '$hostname' to get alias...\n"; # Create a user agent (browser) object my $ua = new LWP::UserAgent; # set user agent name $ua->agent($userAgent); # set user agents owners e-mail address $ua->from($spiderOwner); # set timeout for requests $ua->timeout($getTimeOut); if ($proxyServer) { # set proxy for access to external sites $ua->proxy(["http","https"],$proxyServer); # avoid proxy for these hosts $ua->no_proxy(@hostsNoProxy); } # set maximum size of document to retrieve (in bytes) $ua->max_size($maxDocSizeBytes); if(!($ua->is_protocol_supported('https')) && $useHTTPS) { print "SSL is not supported on this machine.\n\n"; exit(); } $fileOutput = ""; # Now lets build the contents to write (or append) to urlalias file foreach my $newAlias (@addToAliasFile) { sleep $throttleRequestsTime; my $newAliasEntry = &Generate_Alias_List_Entry($newAlias); $fileOutput .= $newAliasEntry . "\n"; } # write the data back to urlalias file if (! $overwritedata) { # Append to file open(FILE,">>$urlAliasFile") || die "Error: Failed to open file for writing: $_\n\n"; print FILE $fileOutput; close(FILE); } else { # Overwrite the file open(FILE,">$urlAliasFile") || die "Error: Failed to open file for writing: $_\n\n"; foreach my $newAlias (@addToAliasFile) { my $newAliasEntry = &Generate_Alias_List_Entry($newAlias); print FILE "$newAliasEntry\n"; } close(FILE); } print "File $urlAliasFile created/updated.\n"; exit(); #--------------------------- End of Main ----------------------------- # # Generate new lines for urlalias file by doing a http get using data # supplied. # sub Generate_Alias_List_Entry { # take in the path & document my $urltoget = shift; my $urlPrefix = "http://"; if($useHTTPS) { $urlPrefix = "https://"; } my $AliasLine = ""; $pageTitle = ""; $AliasLine = $urltoget; $AliasLine .= "\t"; # build a full HTTP request to pass to user agent my $fullurltoget = $urlPrefix . $hostname . $urltoget; # Create a HTTP request print "Getting page $fullurltoget\n"; my $req = new HTTP::Request GET => $fullurltoget; # Pass request to the user agent and get a response back my $res = $ua->request($req); # Parse returned document for page title if ($res->is_success()) { $pageTitle = $res->title; } else { print "Failed to get page: ".$res->status_line."\n"; $pageTitle = "Unknown Title"; } if ($pageTitle eq "") { $pageTitle = "Unknown Title"; } return $AliasLine . $pageTitle; } awstats-7.4/docs/0000750000175000017500000000000012551203300011600 5ustar skskawstats-7.4/docs/LICENSE.TXT0000640000175000017500000010451312410217071013274 0ustar sksk GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . awstats-7.4/docs/index.html0000640000175000017500000001350312510573663013621 0ustar sksk AWStats logfile analyzer Documentation

    AWStats logfile analyzer 7.4 Documentation

     

    Table of contents


    Release Notes
    What is AWStats / Features
    New Features / Changelog
    Upgrade
    Reference manual
    Install, Setup and Use AWStats
    Configuration Directives/Options
    Configuration for Extra Sections feature
    Contribs, plugins and resources
    Other provided utilities
    Glossary of terms
    Other Topics
    Comparison with other log analyzers FAQ and Troubleshooting
    Benchmarks AWStats License
    Plugin Developement
    AWStats modules for third tools
    AWStats module for Webmin AWStats module for Dolibarr ERP & CRM

    awstats-7.4/docs/awstats_license.html0000640000175000017500000000623712510306004015667 0ustar sksk AWStats Documentation - License description

    AWStats logfile analyzer 7.4 Documentation

     


    AWStats License / Copyright


    AWStats is distributed under the GNU General Public License (GPL).
    So you must follow the line "Free software - Copylefted - GPL" to know what are major license agreements with AWStats.






    Article written by .


    awstats-7.4/docs/pad_awstats.xml0000640000175000017500000002475112410217071014652 0ustar sksk 3.11 PADGen 3.1.1.47 http://www.padgen.org Portable Application Description, or PAD for short, is a data set that is used by shareware authors to disseminate information to anyone interested in their software products. To find out more go to http://pad.asp-software.org Laurent Destailleur 11 rue Raymond Queneau Rueil Malmaison Hauts-De-Seine 92500 FRANCE http://www.destailleur.fr Laurent Destailleur eldy@users.sourceforge.net Laurent Destailleur eldy@users.sourceforge.net eldy@users.sourceforge.net eldy@users.sourceforge.net eldy@users.sourceforge.net AWStats 7.3 01 26 2014 Freeware Major Update No Install Support Linux,Linux GPL,Linux Open Source,Mac OS X,Mac Other,OpenVMS,Unix,Win2000,Win7 x32,Win7 x64,WinServer,WinVista,WinVista x64,WinXP,Other English,Arabic,Armenian,Breton,Bulgarian,Catalan,Chinese,ChineseSimplified,ChineseTraditional,Croatian,Czech,Danish,Dutch,Estonian,Finnish,French,Galician,German,Greek,Hebrew,Hungarian,Icelandic,Indonesian,Italian,Japanese,Korean,Latvian,Norwegian,Other,Polish,Portuguese,Romanian,Russian,Serbian,Slovak,Slovenian,Spanish,Swedish,Thai,Turkish,Ukrainian,Welsh Development Tools Web Development::Log Analysers 1347670 1316 1.29 N Days awstats,opensource,log,logs,analyzer,analyze,webalyzer,analog,apache,iis,postfix,open,source,free,perl,mail,web,ftp,streaming,server,combined,file,webmin AWStats - Open source log file analyzer AWStats - Free log file analyzer for advanced web statistics (GNU GPL) AWStats is a free powerful and featureful server logfile analyzer that shows you AWStats is a free powerful and featureful web server logfile analyzer (Perl script) that shows you all your Web statistics including visits, unique visitors, pages, hits, rush hours, os, browser's versions, search engines, keywords, robots visits, broken links and more... Works with all major web, wap, proxy servers and some mail and ftp servers. Works as a CGI and/or from command line. Distributed under GNU General Public License. AWStats is a free powerful and featureful tool that generates advanced web (but also ftp or mail) server statistics, graphically. This log analyzer works as a CGI or from command line and shows you all possible information your log contains, in few graphical web pages like visits, unique vistors, authenticated users, pages, domains/countries, OS busiest times, robot visits, type of files, search engines/keywords used, visits duration, screen size, HTTP errors and more... Statistics can be updated from a browser or your scheduler. It uses a partial information file to be able to process large log files, often and quickly. It can analyze log files from IIS (W3C log format), Apache log files (NCSA combined/XLF/ELF log format or common/CLF log format), WebStar and most of all web, proxy, wap, streaming servers (and ftp servers or mail logs). The program also supports virtual servers, plugins and a lot of features. http://www.awstats.org http://www.awstats.org http://www.awstats.org/docs/images/screen_shot_1.png http://www.awstats.org/docs/images/awstats.gif http://www.awstats.org/docs/pad_awstats.xml http://www.awstats.org/files/awstats.zip http://downloads.sourceforge.net/project/awstats/AWStats/7.3/awstats-7.3.tar.gz Y N Y 1.4 http://pad.asp-software.org/extensions/Affiliates.htm awstats-7.4/docs/awstats_dev_plugins_hooks.html0000640000175000017500000005127512510306004017771 0ustar sksk AWStats Documentation - Plugins Development - Hooks

    AWStats logfile analyzer 7.4 Documentation

     


    Plugin Hooks

    The following is a list of hooks available to plugin developers. At various steps in the reporting or parsing process, AWStats will scan the plugin list for any matching hooks and execute them. All hooks start with the name of the hook, an underscore and then the plugin name. So for example, if I was creating a plugin called "mypluginname" then the initialization hook would look like:

    sub Init_mypluginname()

    If you need a hook that isn't listed, please contact the developers through Source Forge and place a request.
    Required Hooks

    Init_pluginname
    Type: All
    Parameters: Any parameters passed from the configuration file
    Called: After loading configuration file and parsing plugins. Before parsing or HTML output
    Description: The initialization hook is used to load parameters from the configuration file and initialize variables used in your plugin before any other hooks are called. This is a good place to initialize any hash tables you need or open data files.
    Note: Init_ must return a list of hooks that your plugin implements in order for it to be used by AWStats. For example:

    sub Init_geoip_region_maxmind {
    my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion);
    return ($checkversion?$checkversion:"$PluginHooksFunctions");
    }


    If your plugin will accept a number of parameters, insert a line similar to the following:

    my $InitParams=shift;
    my ($mode,$datafile,$override)=split(/\s+/,$InitParams,3);


    Be sure to perform validation on the local variables and change the number of splits to the number of parameters you expect to read.

    Common Hooks


    SectionInitHashArray_pluginname
    Type: All
    Parameters: None
    Called: When AWStats InitHash is called, such as at startup, when purging a history file or when a new month begins during processing.
    Description: Use to initialize or clear any hash variables local to your plugin

    Processing/Update Hooks


    SectionWriteHistory_pluginname
    Type: Update
    Parameters: $xml,   $xmlbb, $xmlbs, $xmlbe, $xmlrb,  $xmlrs, $xmlre, $xmleb, $xmlee
    Called: Whenever the history file is written in AWStats
    Description: Lets your plugin write a section to the history file. Please note that if your plugin stores a lot of data, it could greatly increase the history file size and slow down loading and processing. In such a situation, you may want to use this as a trigger to write to a separate history file and use the SectionReadHistory_ hook as a trigger to read that data.
    XML parameters are the pre-defined XML tags the history file is using

    SectionReadHistory_pluginname
    Type: Update, Output
    Parameters: $issectiontoload, $readxml, $xmleb,  $countlines
    Called: Whenever the history file is loaded in AWStats
    Description: Lets your plugin read a section that it had written to the history file. The history log is always loaded before parsing log entries and before outputing HTML.
    $issectiontoload - the name of the plugin section found in the history file. If this is true, then the plugin should process the field data
    $readxml - True if the history file is in XML format
    $xmleb - XML element opening tag
    $countlines - how many lines have been read from the history file so far

    SectionProcessHostname_pluginname
    Type: Update
    Required: No
    Parameters: Resolved hostname
    Called: On each line of a log file IF the hostname was resolved
    Description: Processes a resolved host name, i.e. www.google.com and is useful for counting hits to the host or looking up additional information.

    SectionProcessIP_pluginname
    Type: Update
    Parameters: $Host
    Called: On each line of a log file IF DNS resolution is turned off or a host was not resolved
    Description: Processes an IP address i.e. 192.168.1.1 and is useful for counting hits to the host or looking up additional information.

    Output/HTML Hooks


    AddHTMLMenuLink_pluginname
    Type: Output
    Parameters: $categ, $menu, $menulink, $menutext
    Called: Each time a new menu category is printed in the navigation frame or section
    Description: Inserts a menu item into the navigation area that will link back to the AddHTMLGraph_ hook defined in your plugin. If that hook is undefined, the user will experience an error. Requires AddHTMLGraph_ hook
    $categ - name of the main navigation category such as 'who' or 'hosts'
    $menu - passback where you assign the position your link should appear in the menu
    $menulink - passback declaring the type of link
    $menutext - passback of the text to be displayed to the user

    AddHTMLGraph_pluginname
    Type: Output
    Parameters:None
    Called: When the AddHTMLMenuLink_ created link is clicked, after HTML headers are sent and before HTML footers are sent
    Description: Used to generate a dedicated report page with information specific to your plugin such as the Hosts report or Regions page. You are only responsible for the HTML between the standard AWStats header and footer.

    AddHTMLStyles_pluginname
    Type: Output
    Parameters: None
    Called: Whenever HTML headers are printed IF the configuration file does not define a specific style sheet URL.
    Description: Use this section to output style information to the HTML header. Only print the individual style definitions, not the beginning or ending style tags (i.e. <style></style>)

    AddHTMLHeader_pluginname
    Type: Output
    Parameters: None
    Called: When HTML headers are printed, just before the closing </head> tag
    Description: If your plugin requires extra HTML header information such as java script includes or meta tags, print them within this hook.

    AddHTMLFooter_pluginname
    Type: Output
    Parameters: None
    Called: When HTML footers are printed
    Description: Prints footer HTML code before the AWStats copyright and closing </html> tag. Useful if you need to output tracking code or banner ads

    AddHTMLBodyHeader_pluginname
    Type: Output
    Parameters: None
    Called: After the HTML header is printed
    Description: Used to print information to the main HTML body before the banner or any other information is printed

    AddHTMLMenuHeader_pluginname
    Type: Output
    Parameters: None
    Called: After the HTML header and HTML body header
    Description: Used to print a header for the navigation menu whether it's inline on the page or in the navigation frame.

    AddHTMLMenuFooter_pluginname
    Type: Output
    Parameters: None
    Called: After the HTML navigation menu is printed
    Description: Used to print a footer for the navigation menu whether it's inline on the page or in the navigation frame.

    AddHTMLContentHeader_pluginname
    Type: Output
    Parameters: None
    Called: After the HTML navigation menu is printed
    Description: Outputs after the navigation menu but before any of the content tables in the report pages.

    TabHeadHTML_pluginname
    Type: Output
    Parameters: $title
    Called: When a new content table is beggining
    Description: Lets your plugin override the default table header style. Generally not used.
    $title - title to display to the user

    ShowInfoHost_pluginname
    Type: Output
    Parameters: $host
    Called: Each time a new host row is displayed, such as the main page host section or the full host list page.
    Description: Used to display a table column with detailed information about the host. The incoming parameter can be one of three values:
    '__title__' - literal value that indicates we're printing a column header
    $Resolved Hostname - name of the host
    $IP Address - an unresolved dotted decimal IP

    ShowInfoUser_pluginname
    Type: Output
    Parameters: $user
    Called: Each time a new authenticated user row is displayed
    Description: Used to display a table column with detailed information about the user. The incoming parameter can have one of two values:
    '__title__' - literal value that indicates we're printing a column header
    $user - the authenticated user name

    ShowInfoCluster_pluginname
    Type: Output
    Parameters: $cluster
    Called: Each time a new cluster row is displayed
    Description: Used to display a table column with cluster information. The incoming parameter can have one of two values:
    '__title__' - literal value that indicates we're printing a column header
    $cluster - the cluster name

    ShowInfoURL_pluginname
    Type: Output
    Parameters: $url
    Called: Each time a new page URL or referrer URL row is displayed
    Description: Used to display a table column with additional url information. The incoming parameter can have one of two values:
    '__title__' - literal value that indicates we're printing a column header
    url - the page or referrer URL

    ShowInfoGraph_pluginname
    Type: Output
    Parameters: $title, $type, $display, @blocklabel, @vallabel, @valcolor, @valmax, @valtotal, @valaverage, @valdata
    Called: Any time a graph, chart or map is output to HTML
    Description: Used to display charts or graphs. AWstats will generate arrays of data, colors and labels that your graphing plugin should be able to handle. For more information, see the graph plugin page

    ShowPagesAddField_pluginname
    Type: Output
    Parameters: $key
    Called: Each time a new page URL row is displayed on detailed URL pages and main summary
    Description: Used to display a table column with additional url information. The incoming parameter can have one of three values:
    'title' - literal value that indicates we're printing a column header
    $key - URL key to lookup in your hash
    '' - empty literal indicated the final row. Useful if you want to show total or averages



    Article written by .


    awstats-7.4/docs/awstats_dev_plugins_graphs.html0000640000175000017500000002155112510306004020124 0ustar sksk AWStats Documentation - Plugins Development - Graphs

    AWStats logfile analyzer 7.4 Documentation

     


    Plugin Graphs

    Charts, graphs and maps can be generated by your plugin and make AWStats reports look nice. AWStats generates arrays of values, label names and titles so that your plugin only has to handle the final data and display it as you wish.
    NOTE: Only one graphing plugin should be choose by a user at any given time, thus your plugin should generate as many graphs as possible. If more than one graphing plugin is enabled at any given time, multiple graphs will appear in the output for each graph type.

    Below is a list of variables passed to the graphin hook and how you should use them.
    • Title
    • Type
    • Block Label
    • Val Label
    • Val Color
    • Val Max
    • Val Total
    • Val Average
    • Val Data

    Title

    This is simply the title of the graph as it should be displayed to the end user. This could be "Hosts (Top 5)" or "Monthly History" or anything else. Of course, you don't have to show the title unless you want to.

    Type

    The type is important as your graphing plugin should determine what type of graph to output depending on the type AWStats is requesting. For information on types and the data order, check the Types and Data section.
    Block Label

    This is a label for each group of data, usually labels for the X axis such as the days of the week, months of the year, etc. Your plugin can use the scalar count of values in this array as the number of times a loop needs to iterate through an axis. For example:

    foreach my $j (1.. (scalar @$blocklabel)) { ... }

    Val Label

    @vallabel contains a list of labels for each of the data sets such as "pages", "hits", etc. Use the scalar count of values when accessing the data matrix.

    Val Color

    This is an array of color values associated with each type of data as assigned by the configuration file or the defaults in AWStats. Each color is a web formatted RGB hex encoded value such as "FFFFFF" or "000000".

    Val Max

    This array contains the maximum individual numeric value for each of the types of data stored in the data array. The count is the same as the the color array.

    Val Total

    This array contains the total numeric value for each type of data stored in the data array. The count is the same as the the color array.

    Val Average

    This array contains the average numeric value for each type of data stored in the data array. The count is the same as the the color array.

    Val Data

    This array contains the actual data values for each type of data indexed by each data type for a block of data, then the next set of types for a block and so on. Thus if we were looking at the monthly graph, the data would be laid out thusly:

    $valdata[0] --> January Unique Visitors
    $valdata[1] --> January Number of Visits
    $valdata[2] --> January Pages
    $valdata[3] --> January Hits
    $valdata[4] --> January Bandwidth
    $valdata[5] --> February Unique Visitors
    $valdata[6] --> February Number of Visits
    ....

    Graph Types and Data

    Below is a list of the different graph types and the order in which data appears in the associated arrays.

    • month - a graph of each month for a given year
      • Unique Visitors
      • Visits
      • Pages
      • Hits
      • Bandwidth
    • daysofmonth - each day of the month
      • Visits
      • Pages
      • Hits
      • Bandwidth
    • daysofweek - an averaged data set for each day of the week
      • Pages
      • Hits
      • Bandwidth
    • hours - an averaged data set for each hour of a day
      • Pages
      • Hits
      • Bandwidth
    • cluster - the top 5 clustered servers if the cluster option is enabled
      • Pages
    • filetypes - the top 5 file types reported on
      • Pages
    • httpstatus - the top 5 HTTP status codes
      • Pages
    • browsers - the top 5 browsers
      • Pages
    • oss - the top 5 operating systems
      • Pages
    • hosts - the top 5 hosts
      • Pages
    • countries_map - a list of all countries and their hit counts
      • Hits


    Article written by .


    awstats-7.4/docs/awstats_webmin.html0000640000175000017500000001175312510306004015525 0ustar sksk AWStats Documentation - AWStats Webmin module

    AWStats logfile analyzer 7.4 Documentation

     


    AWStats Webmin module

    This page is designed to help users of the 'Webmin' administration tool (www.webmin.com) to manage their AWStats config/tools. If you don't use it, you don't need to read what is described here.
    • Adding the AWStats Webmin module to Webmin interface
    • Setup of the AWStats Webmin module
    • Using the AWStats Webmin module


    Adding the AWStats Webmin module to Webmin interface

  • Run Webmin, go to "Webmin Configuration".
  • Click on "Webmin Modules".
  • Enter in the "Install module", the path of the awstats-x.x.wbm file (this file is provided with AWStats in tools/webmin directory or can be downloaded separately from AWStats web site) and click "Install module".
    After that a new entry "AWStats LogFile Analysis" should appear in your Webmin menu.


    Setup of the AWStats Webmin module

  • Run Webmin, go to the "AWStats LogFile Analysis" menu.
  • Click on the "Module configuration".
  • You must now enter here values for:
    - Absolute filesystem path to AWStats (CLI)
    It's the full path of the awstats.pl script. Path depends on package you use.
    It could be /usr/local/awstats/wwwroot/cgi-bin/awstats.pl
    - Absolute or relative URL path to AWStats (CGI)
    It's absolute or relative URL you must enter to run AWStats as a CGI. This depends on the way you setup your web server and cgi directories.
    It could be /cgi-bin/awstats.pl or http://127.0.0.1/awstats/awstats.pl.
    - Sample AWStats configuration file
    This is the sample file used to create a new config file.
    In most cases it must be /etc/awstats/awstats.model.conf.


    Using the AWStats Webmin module

  • Just run Webmin, go to the "AWStats LogFile Analysis" menu.
  • You can now, add, edit or delete config files.
  • You can also update or view statistics for a particular config file.


    Article written by .


    awstats-7.4/docs/awstats.pdf0000640000175000017500000121270112551203200013765 0ustar sksk%PDF-1.4 %âãÏÓ 1 0 obj<>endobj 2 0 obj<>endobj 3 0 obj<>endobj 4 0 obj<>endobj 5 0 obj<>endobj 6 0 obj<>endobj 7 0 obj<>endobj 8 0 obj<>endobj 9 0 obj<>stream xÚí˜{HSQÇ{øØ\ÓŒ@çc._a’&BYV¥EiF%!ô¢´¬þ ÒPû/TPˆÈ‚¢°,D,K-” ð¿ ö˜¯¶étç×¹înݽîÙÝdôϽçìüîÇßyüΡÿúGU]éOZÂŒÑ4Ñ{ gý‡»:‹Aç7Zªˆ üD xfbpàõŽöQ°¿¬÷hT’ª&Àå íÁ€Uä­„îù“h ðS$œ&çÀ¬Èýt³UÐÒyÂq-à, hf1¦zônX8®ÝÉ;‹føÍÖá»  ǹ¦1.òz‡ã:Á=Ïd«•éh¦2_da‚yØŽ²Ã4m^ï`•gø?»Ýu±ÜãE0•J Z[ng¶ *(‘ö¸,OçÇáVR§²Ñùq®Uœ¢´ÚÌÐB°«r  ¡¾é(RQwúÑ 8@Á½FsÇ\”Ÿ£ò†³ß†05Ë~ØŒŠa/WIú¡ÄÎ?4ao"ÀÚÖeàl¢àÖÀn’ŽÞô¢9$lÕ|ƒtéYI\ðüR¼ßçìàzx¥lÝ@œËµyàŸÍH4Uˆî@ —[­¯=¾ðÐ…ñ:ˆ¥áõµ¶÷K¸ð–‡¾ýФ®Â_9¹¾7>ñ®Ð£s(ídû±ü âÑ•ë0œ:»}ñ®øÇ žÃÍÕx€›öiÏøh@h|Yí/ò½Œg;ºD·Æ¸¹K´ƒGÜ|§yâzj¨<©ƒéT÷n»ßDšÍ=;éÀ“†@Nî;e}ç-ÌVÄð±>ÞõĉDb‰D"UΕJ‚ƒCBd2¹-óã½WÛü¤?q(èSú¯¿X¿¾qðendstream endobj 10 0 obj<>stream xÚÓy8ÔyðßoŽfHš×äÈ•Œ¬kÍ0F㨑#²ÒÌ0†'Æ-…$*;XgH<¦!t­£&¥‘òd…VŽÚ.‘!ëš+³ô´»ÿì»û~žÏ_ŸÏó}¾¯çóýJ‡¥³€¼;‚°µ€Ò1À@m”“—“EÉo’Ç Q Xœ*VYk¦«§³2§IæÄ¶Nþî¶»}v÷fødrB8»Ü"ðØ þAÖú! ƒÁ*aMTUMXT"•õŸ#mÐHÀàAA‚¡hPÚ h®Ý~ ð-  ƒo@ ed7® \G …À p8 ¶ÖMZë04£mf·Aq¡©ˆOÍ­DêRëÛ•<úç¶™3£NÈÈ*«`·¨êm×Çì° Xî$’¬ìw;Мéû<½¼}öûú±ØAÁœnhtLl\|‘Ĵ“é§NŸÉÌË/(,:[\R*¸ ¬ª¾XS[×ÐØtý†èfó­Ž{]÷»<ì|òËÐÓá‘ÑW¯ßŒ¿˜|7%ž_X\’|øøéóòº  àŸùGzÍÁ 0ĺ „į apm³ ;âP¤‚>©HÍ­¬o—Ñ5÷˜SbFõË*o³x¥7¿Nû*ûw°ÿKöìo×( ×–E6Àâ2Np\v½ .7üüÔ<`¥>µtXþéÃÅX£~Ñ—–ÛWIR…q(iôñçð¨%Ÿº,5zAšQ‹Ü#H-[ãtáý”oiQzUÒðIÆ’šgìûôcÂßíûB®høõj‹A51và´+"ø cÉo¦§º`´èôö®ï Wóè¡&†{–\6Š¥?Tô²pIÍ! Y”14wq¿à½©¸&.Í_ð!­ñâ}1Ï‹½~w‰TgN„#æ.iT65sÞæDô€”6o-•Ÿgv¸Œ5˜Ñó¬Ë“›§?IåÙR†ÿÂgÕÆÉ$áÝØ²c ô¾ÖÆÒš_N‘| =ðÆHl؇¨®mîž“¤-±Ðò’®½U^†‹F%„¼[eq)ƒ–dB HÔÙÜQ ¾@ÅX7ô+g‰3‰L­.×ú{ä\æXžŸ£¬¦TE/[YÛñ<jbà§"î¬*%ëq±£„Î -¸­l½Æ¿B‘s9»Â=äºa„1¥#éöùÓÏJÔ£Ú)aÊ*ªù¾¿:1<Ç mJKÓß/¡¨?YÍÔ#웳‰Á…UƳ#ä"1÷™·EøVdefHWÙß\Jà%FyŽ«³cëðŠ<®LŠíÆLzv…wOv×N–eòÏÏX€Žwì­c³rÑþƒ^êG7Ù¼ªd®çùö<]×BŠÌ¸ä~ÂäÒŠøré­œJL7üØÝÖœ…7óÌPdQ¤‚âZRÊ>ü&éE0g|³ÅIaÎtÔZkÛtÁÔàÇÚY)8 ܰù¤ècO:áM‰?.‹!!Ò²´øvn‚+D õIc˜î]=Êš/ùbð±ŸÆÆØw˜®Nô{NS{WûëÕ²Zá¹4€³Úz5,„Ž÷/ÚYu¤{D45-`#LvéÑMD²Irñ$9É0`Àå(Þï5É›šL{¹µ…YÏlàë:Go¾ˆ/ËXN”’V£Û›’Õ„fb[•ÏņÛÕYdYTÍ3•!`ük¹ŸÊ$8ºe”8 É{hÒÍ´ Ï­y´üÀ¡$óTÉe—›‘g\ò,ñê›N4muuw:qBΗ@Í‹,Ihè1rt*<·ð €ðØŸš‡xœböŒßrôdzÙð ·Zòbºa³Ý;<±ïÚÎA§§>{²fœÀ¸ù±ì”’]Ârn„IVÇwLÂÆÿÔOן¿>7‘Ãrêª\õ•(ž3å9­L5y„S2Ÿx˜&¦- ™¦‚LP{8xÁãʆö]Å êŒ{-<Õ<Ü6ßn9Z oÀ6)`3™yÍA±J_?“®E´öýsµ÷‚ß !ù¨…Úendstream endobj 11 0 obj<>stream xÚí˜{HSQÇ{øØ\ÓŒ@çc._a’&BYV¥EiF%!ô¢´¬þ ÒPû/TPˆÈ‚¢°,D,K-” ð¿ ö˜¯¶étç×¹înݽîÙÝdôϽçìüîÇßyüΡÿúGU]éOZÂŒÑ4Ñ{ gý‡»:‹Aç7Zªˆ üD xfbpàõŽöQ°¿¬÷hT’ª&Àå íÁ€Uä­„îù“h ðS$œ&çÀ¬Èýt³UÐÒyÂq-à, hf1¦zônX8®ÝÉ;‹føÍÖá»  ǹ¦1.òz‡ã:Á=Ïd«•éh¦2_da‚yØŽ²Ã4m^ï`•gø?»Ýu±ÜãE0•J Z[ng¶ *(‘ö¸,OçÇáVR§²Ñùq®Uœ¢´ÚÌÐB°«r  ¡¾é(RQwúÑ 8@Á½FsÇ\”Ÿ£ò†³ß†05Ë~ØŒŠa/WIú¡ÄÎ?4ao"ÀÚÖeàl¢àÖÀn’ŽÞô¢9$lÕ|ƒtéYI\ðüR¼ßçìàzx¥lÝ@œËµyàŸÍH4Uˆî@ —[­¯=¾ðÐ…ñ:ˆ¥áõµ¶÷K¸ð–‡¾ýФ®Â_9¹¾7>ñ®Ð£s(ídû±ü âÑ•ë0œ:»}ñ®øÇ žÃÍÕx€›öiÏøh@h|Yí/ò½Œg;ºD·Æ¸¹K´ƒGÜ|§yâzj¨<©ƒéT÷n»ßDšÍ=;éÀ“†@Nî;e}ç-ÌVÄð±>ÞõĉDb‰D"UΕJ‚ƒCBd2¹-óã½WÛü¤?q(èSú¯¿X¿¾qðendstream endobj 12 0 obj<>stream xÚÓy8ÔyðßoŽfHš×äÈ•Œ¬kÍ0F㨑#²ÒÌ0†'Æ-…$*;XgH<¦!t­£&¥‘òd…VŽÚ.‘!ëš+³ô´»ÿì»û~žÏ_ŸÏó}¾¯çóýJ‡¥³€¼;‚°µ€Ò1À@m”“—“EÉo’Ç Q Xœ*VYk¦«§³2§IæÄ¶Nþî¶»}v÷fødrB8»Ü"ðØ þAÖú! ƒÁ*aMTUMXT"•õŸ#mÐHÀàAA‚¡hPÚ h®Ý~ ð-  ƒo@ ed7® \G …À p8 ¶ÖMZë04£mf·Aq¡©ˆOÍ­DêRëÛ•<úç¶™3£NÈÈ*«`·¨êm×Çì° Xî$’¬ìw;Мéû<½¼}öûú±ØAÁœnhtLl\|‘Ĵ“é§NŸÉÌË/(,:[\R*¸ ¬ª¾XS[×ÐØtý†èfó­Ž{]÷»<ì|òËÐÓá‘ÑW¯ßŒ¿˜|7%ž_X\’|øøéóòº  àŸùGzÍÁ 0ĺ „į apm³ ;âP¤‚>©HÍ­¬o—Ñ5÷˜SbFõË*o³x¥7¿Nû*ûw°ÿKöìo×( ×–E6Àâ2Np\v½ .7üüÔ<`¥>µtXþéÃÅX£~Ñ—–ÛWIR…q(iôñçð¨%Ÿº,5zAšQ‹Ü#H-[ãtáý”oiQzUÒðIÆ’šgìûôcÂßíûB®høõj‹A51và´+"ø cÉo¦§º`´èôö®ï Wóè¡&†{–\6Š¥?Tô²pIÍ! Y”14wq¿à½©¸&.Í_ð!­ñâ}1Ï‹½~w‰TgN„#æ.iT65sÞæDô€”6o-•Ÿgv¸Œ5˜Ñó¬Ë“›§?IåÙR†ÿÂgÕÆÉ$áÝØ²c ô¾ÖÆÒš_N‘| =ðÆHl؇¨®mîž“¤-±Ðò’®½U^†‹F%„¼[eq)ƒ–dB HÔÙÜQ ¾@ÅX7ô+g‰3‰L­.×ú{ä\æXžŸ£¬¦TE/[YÛñ<jbà§"î¬*%ëq±£„Î -¸­l½Æ¿B‘s9»Â=äºa„1¥#éöùÓÏJÔ£Ú)aÊ*ªù¾¿:1<Ç mJKÓß/¡¨?YÍÔ#웳‰Á…UƳ#ä"1÷™·EøVdefHWÙß\Jà%FyŽ«³cëðŠ<®LŠíÆLzv…wOv×N–eòÏÏX€Žwì­c³rÑþƒ^êG7Ù¼ªd®çùö<]×BŠÌ¸ä~ÂäÒŠøré­œJL7üØÝÖœ…7óÌPdQ¤‚âZRÊ>ü&éE0g|³ÅIaÎtÔZkÛtÁÔàÇÚY)8 ܰù¤ècO:áM‰?.‹!!Ò²´øvn‚+D õIc˜î]=Êš/ùbð±ŸÆÆØw˜®Nô{NS{WûëÕ²Zá¹4€³Úz5,„Ž÷/ÚYu¤{D45-`#LvéÑMD²Irñ$9É0`Àå(Þï5É›šL{¹µ…YÏlàë:Go¾ˆ/ËXN”’V£Û›’Õ„fb[•ÏņÛÕYdYTÍ3•!`ük¹ŸÊ$8ºe”8 É{hÒÍ´ Ï­y´üÀ¡$óTÉe—›‘g\ò,ñê›N4muuw:qBΗ@Í‹,Ihè1rt*<·ð €ðØŸš‡xœböŒßrôdzÙð ·Zòbºa³Ý;<±ïÚÎA§§>{²fœÀ¸ù±ì”’]Ârn„IVÇwLÂÆÿÔOן¿>7‘Ãrêª\õ•(ž3å9­L5y„S2Ÿx˜&¦- ™¦‚LP{8xÁãʆö]Å êŒ{-<Õ<Ü6ßn9Z oÀ6)`3™yÍA±J_?“®E´öýsµ÷‚ß !ù¨…Úendstream endobj 13 0 obj<>stream xÚí›yPSGÇ‚ŠŠÜŠ r_Š*j©•jµi-ÚªÔ£¢¢¨ ˆ "hÑ©­Õj[­Uq‹Õ‘Z´ vÔƒ×x[<êQ/¤"‡9Þû6@€$$!o_% ß?x›ìËþòÉÛÝßo»PT§:Õ©+“ž#4¯K ð*F˜þSôù’ƽ§èõR¼¥ïc¯Ó}BÏ)‚ã¯×=2„")Ä9úLaQR÷,¤’¸è1Æðs`0Ä[õ—¢o6#{@]4-¢4‰¾g«“ $éus›âtÞ!f ÑRÌz®Í~xWÚŠ¸öUM}{å½ø…èzêTÕ“ç³ìiRM½÷Rß!‰ã•° š$4älaº×…`žšð‰q­é…7 Kl΂žÍ#…-4†‹ J¥‰è[<Æë9ÐN…ä½ökÐ )j%ƒøÃ(‡¶Z0Î(\z]޳üaˆ¡½²¸ªÕê Kñ&o"°cÌÞ‚E!^Õ—ý†ìD³¶Ðïû4çå £ lU«Ô‚ÙNkÜîá–“¬Ì[`õ9Ø+_¡Ïؤɂ .ÚðO™ƒD®r-L­’>!GõÆTà4a1Gu}à'Â%纂»„ñSÕ~Dœq¬ÄájÌÒjYrI}ô> [¶,ùy*ú÷vH"I1zãb·t<ÒfÝSÌã á‚Æ–…ÙbUvµÄ9\ƒŸñ¯eö )¼MVMdóˆæ¦6㤲wü•!Äþ ’qÒK*[OxrÁ@°B[¶Õ§ð†ÕY”cLbPßóoà›Vo®äÄ!QÒEò/nâ1†[9ö7”B!ñâmÒmìXòêS.¿@ò|ˆý‰1Ì®ãjYù”ªDqräPšÚSp¥éÀRœµ$–âeSÞ4€ÁXÍwïäÈñ£ÒøÓdÅJœ0#ÇXúÝæW{qA³'•pä(ûnÜnðòaµ8Еc­0Ù:Ö ‚¿YWÅ ×ôæÖ]#%ØÆ!×å\†\…°LyæÊ¢æãŠJ29,$º_ÆMÅ éÞ¥šƒsßE¬Ág`–rYíC…ò|½VmÉAEàùˆgpÁˆÓ"¿e| _µ)‡á5 &” Fˆ<ÄîmÉ!5XÌñGTM"·M9¨#C¸`˜žÇmsUAÊáßÜ”W>ªkö£È@o8©s*B„óåuÍ(‚úý»/pÏD'i]]e¬5¤ä·WŸY±(C¼šª+9D:š‚²x¼´P]Á‘cÕ–2ùùè&mÊA…CèÂË@o[ Ê T×Üâ„Q®í˜¦›mÿ`´Ì-5¬à8qøhí¥ Ä¿­ð7à’‹3ºïX,f]Ó|éý%»Ã-8r¸‹1UeE:Žl暣RntaÚN‡"¶àޱ®g,vŽ!¯ag(Û7ƒüüubTV&ÆØÎÒÃ5Y¢Á\Ì 6"ͤ¼0×éa“çÊmø•#åÓtfæ},,-­¬­mlíìúöëgßßÁÁqÀ§ÎÎ.®®nîž^^Þ>¾O±Ûoˆ¿ÿЀ€ÀaÇ 9jôè7‚ƒc96ΊZ°0:zÑâÅKbbc—ÆÅÅ/KHXž˜˜´"9yeJʪԴ´Õk‚ôŒŒÌµYYë֯ߠ˜Ü—þ€eÛÇ5ºÒÓÐgUåL‘ÍÆs³Öffd¤ kV§¥¥®Z•²29yERRâò„„eññqKccc–,Y¼(::ú!ÎΟ7ondäœOgÏž5sæŒO""¦O›öq8QÏò÷âç7x¯¯··—§‡‡»››«‹³ó@'§Žýííûõµ³³µ±¶¶²´´ècnÞ»W¯ñÕ´BϺšE4HBÀ SYÑ—ƒ`7|Ô+º¹G½:iO:gÅïª+’Ycd°·>R†!ýû׆c>Ä[‚ɪkγÄ8ÉÞxP]ÿ jŽ,tâlC±šyÆmö¦GTÕ}ð¦wÙU!ZMU Œ;ì-+‡ðXŒ›®øT>stream xÚ–w4Ü[»Ç D0¢ !D&"1Ê¢F]-ZD¢'áApH˜£6ˆA”#çD¯£EŒ2z óÊyï¹wû¾ë®{ïw­gÿó}vùìg­½Êe`Ruô´w3QQ&€[ËyF&F¦ L¬–‹P7”ƒ*%(Ì SA)ÉË ånj[ÜT·ÐCzYܳwvqVÖ÷ôr|líäìðs*++”*ÉÍ-é †Tsø?‹Ò @èk€¢¨!T ¥à;;#-ÕŸþCTÔ Ús`:z†óg µ,5DM¢¥¥¡9sCÏ|€BËzEJõÜE#;°€7›ôÓ¤:Aµª6vãþ !{ŸzN(·°ˆ(LL!{C)¯pK]CSK[綉©™¹ÅK+G§Î.®n¾~ÿ€ÇA‘Ï¢¢cžÇÆ%§¼JMKÿ5#37/¿ °W\ò¶º¦¶®þ]ÃûöŸºÝŸ‡†GFÇÆ‰³ßææ¾/.-“6·¶wv÷ö~rQ ª¿ôo¹ g\Ô44 ðO.*ꀟ Ú+RçXUÀvÞ¤ŸÒ±©%åTµÑ Êo°Ûûô3p!f…7¢ýIö¿‹ø‘ý'ØqFÕYñ@@Øa€å>ù×À]Þ"Þ€ wˆÄ9}4;fžkç%ÔS€–ÒSYBNR¤Ø’*þ>o1û’‹•{¬C´ðq¯ ­ÑD² õí¢b·:S»Ç¿~5Ù¿ÅSí·Å-[?jÙ¤ƒ#¸àñá]<Ù¯ïÌ¥,=F¹§”_kBÒJúºýû$?)ˆùÕ;þ«!¸Ì%óUfy"qºG÷ÎTo²ÐÃê®qÂ=©a›€ˆ“M@˜ªS™™Þ‡ñl† \nË-Æ=$æ¹Î&f¿[|ºò”äå«/²ÇýKZçgXîˈ8ØoÔÅ3$ˆ%lj[;Ž™J«hØÈaþIï‘ÿHxS×oxéÕ¦ô×d¡m®_×ÛcRâö@1<£'ä½ w~C³Ç õ…gŽê1 Ë§5KŒ>ÍAÞwFª„pû…šç›´xìªzy݉¢i\Tö‘H-CUö°h9Òï[®›*P¾Û9Iµ¯^[frÑQ€4øS^RsO©/›ª£¡6JõÓì \|Å3¹yû–̤³“7ÄûžW$ë›Mú=‡áëñ^׋V–wñiM…6ª×ú*^©wUɳÀm]÷l&B–T|ºŠA%Cwú挱~Ó] ƒ ½'º^]ß‘¦¶–RcŠVê{K;÷ƈð»iìbO˜¡üscA!ã¥/Än_Ó^‰¢ï¹¦ë¹âpv•pA–2,ÄÊÕ‚ãöQ;âe‡NÈéw¾ûšè­ÅéŠ{¶mvG9/Ô‚o*Tí\ÞýB´²>HÛ^«oírŒ|bžÞã:M¸ù +ÐÑñíÕ® ZGx„b–Ú@ûyEE'ÓÈ‹-§TŸ»ÅÊóXƒ@ÙÆý[ a™£ûtB¿ÒʃÞ!9s­6wúYE¿öÀ-ÿä'0U·À²6{‡«µÆ½iÈŽ#Ä¥˜ÁùsãÄÛãÄñyÁXgáŽü¼cï†F*}‘©—>þ’,n+…D¶Ø.b>_#´§*qgÿ‡û9²ZSåÛDãm®õ´´áõ ÅE´»×Ýß9ß»ª J:~&X”ªäýаºXò^Z!ÚÊ/"_ÒTQÙR -ùH„Œ¶²ŒÙì¾²Š§çDî º¾úšÃÓúÇk<ü=¤Í•Õ»¤8PÇALZ`Žú}æç2yáÂ^‡ìZYz×êaZ6#Kè›õ*qÝRM|ÇgkIû±Þ žt´—ÞÛù4Æ”5ã•} ú²iM|· Óœ¬ÚçãU=K cK¾(ijïvQ¯‹cÕvœIšŠ2¼Ô}‘xJ‹Ú<§µwœ4ðê÷ÒÞUÔ4ÊÀè,ãÍ’aóòÅ7Áñ{Ë£åèo(Åã[z¡¿däεÎ%dÌûïRçmø¦ot&‰"Á}ŠTwMƒ-ÅDCÆF²æDödü$t0(žJ™ß&`dì½® P’?ŒA"=oÜË襇*5Pæ ÅGù)­æ“;9ŽïF ‰ø'éQ3F’-V®ž‹Ü Õi©ÏÅÀf«t§ØlwWãˆòløpB†Q!¶Æs*8`çÊÀÎJ–-fcouu=´önµY¹ùä(Væfêë,k…Ïk1xËûƒp6ð7 ƒjCŸ|‰ûL{<Œá:Ú@›ÌÌ·lxÙ½^Gã²´ôëy?å–äÂÌŒž­ÔYìçHÆ®fΡ9¯'W±RÚH$yfŒ¯½Ü%€}¥þ(ÝÒ9Ý ¶€7Ër'f¿„tF\}ÔJÔ™e NYÒ!÷EÚ°œÌË+”[0&'krè’á°Ò]…LXnCIlþ0þw¯žt|¾ëîýf{¤J$ÉJ3Øgðáô¿);úxº-Í…Ì.§ÅO< AýNTR}98ú”Îþ‡éþýñ²ÕôÒ‚Û—t{én¶ä†—•Ç]+è!?×ä![~Æx*x¶ÅtѽêCƒn®8äP¿`1›á\ý¬'LLJÝwÌáhh¨(§óª²c|!âã¯vœh6·Òšð2ÁïžÞ–r惼ƒ‹_Œ½´Á‘z®;âÉ_RÂØÅï6Döœ½¤÷çdíüVžiç§*áæç9”æZØí‰S»pâØ®ÖfCqs*±Ïè¾g.йÝ¡ÌõÖ*¬FË—Sç(%Ä’oô¢˜;Êh Lµ|“¬ÁÓBÞ»î4)¡!£sãαYóŵÌ^Ù8é Fcq½Â/>.D>}©³ >ßKãP‰zK5mdà°)nÕ28Ò" Jm§ï}SFßá“?~Êd'§µ¸+%b“1bõ\¤™€úŠ•›¼´lcó:–‚?/.Kƒ[ ¾H ÀÉ}úrÍhSbm·BॺC½s¾ñ‹üG Ý *0Ÿô~!ŸìaècjÌŠ»á"pÁ¤¿ŒÎ|ìáA3ø0HbñïãPùÇQI ÐÞ4 ²ømÿô}*’¡òäª}}Rù5IÆY gk©$¨b¤‘[¬¤Ú`Ÿ'tÔ/p/r%hVû Ìñ¸GÈ̉Aæƒxp¸øàÛO?”«¯éffè*dO~4|ò $o{/iøO¶]¨jH6c‰šj‘‡®%Z”``Í|»ACy˜„ðÉï&­ÜÖ ×*žR|œÌ¡„½ÛåKº–™ÒNš«ÉР‘…ôçø™Õj'®ã•!,ޏü†y±ßÆêcÀåî¯ÕàÄ}—éB .XQdw5P¿'ÝBðÇP€AÁç][Ö\^ ÀZ׊ÍÔ÷X¥p’©^v^4_”ïûxÖÒµ4ÎØf› 7ùìhÔpÙ¹²NG?"Ë-B÷M Ô'OP¼ßÏ&E/C’1¾5{éuÝg5;pã¼äʉX±ò7½¶ºxk1iÂjq{áv÷¾^wƒGfüjæ«zÈí‡Þï.iå”FFbfƒQB±÷.N&$hRŸ€wËI¼ZýéPŒ³0`ØÖ¡Ø_fŽ×T2Ñ™è?l)ÀŒ+èµÑtU^çIüÿ"z&N®¡ß\þ,Aø_À ­‰N^MÐ=eÿžBT8[ö‰á›²¿Ôëö#”¬ˆhŒìa›xOßš]PöÇÍÞ’a$"Kyúëd§õ$§³ÌCÚ­ŽäÌzxêåÐvÂæ1“»Bô…º,ys}Òz#{ îA+ʽ°òÀÃgÀÙðC, ¤¨²›I>§"hûBãæ¨‹í™bå°î‹M?¥u ¼ÂŸ=}¢¦u¯=nòïí¦iŽ[ÞšxóH†Þ¨\>åSs]9P{ÁºFvrñ€þÆ«[)Š<ò‘éóçu¯Ì­‹rU»¡¹³ÉZtÙŒ0jyÒ˜÷ ]ç×î³3õ/†åVM¶5’Ú¶uÿC0SÆÿ˜Iz_endstream endobj 15 0 obj<]/Filter/FlateDecode/Width 965/Height 439/BitsPerComponent 4/Length 14376 >>stream xÚí}=oÛJÓö²K[ ˆ—*'•ÿp÷4Ná*“ÂÍi‚4)N¸ ð6>±Súixïsîþ¹gw>öƒ")’¢dR^F±(~ —{ñšÎÌîfYZv{Ñ© vb iÙáed þÿ'Ͼ,:‘2:IKÁ’ N//` Y®MM uqñEV@¼ÈÉXZ+.;TnœbnŽîo1‚“ðNíµñ¸í :¯_$ìF>øb‹\ GùBmâ¢zhsõJˆ›³8£>ĹÓêBKrG¿à¢b'ÂãC1åÕ±qˆÍhJ øäòÖþ°O2n5Eh±ò"#Ë4#Ù\mˆ"]›æ=Ȳ‰BäÆ3GÌ@Á#_]t]`‹©¸ OeË@á†_L`q¨ ìåJPM—¸þðGTÖKc‘6±ϵ xiS€‘»É4%òbÕEìÍ!4ô±+†¬ªãJ\àÁ$‘}$‡w¹¦…7Nè~Bñ,•6Ñ#,wŽ™p\ÈÕÁ•‚›‘C°@Õ¸Ës ùhµ=˜öÒãÂu²Aˆ‘²|ôC÷»‹ˆnº7|âkAÈÉqr²ð—,àÄ;dÄÃ'Ÿr‡’x$v 1 bòáX7!R½«¸&îÍ‚«#PäõžDÏ;’FŒØ=x6Ù ‡¥89‰œ¬ìŸ¤].à)É£é<«Þõx¹»dñɰ!öNÞ`|ŠãP ±è.†‹}ƒ%7eÄpB¼¿µ‹W9ˆÅÓ q³<ÄÞ[½ 0Œ6¡¨O`4TE½`Þ‚0^Œ|¬‚Å#çü!ÏrJXÌ=Äô9ˆÝ¡îRàÑäÀ™Ä—÷…Ä(å!µK“*„|r%[Ô†:§sEB u ^À"q[E 劊uñæuYY·R uFýa1™C#i„ÒnN<,%æPÚØL±¹åj:LÐqÚY.¹ ¨˜SÔA¸Š~8Eš[#4±ÕÙØ»ÈbÔÞÒˆ£Åðó¨ÓRin$ˆwâj?[‚x§ ~'ˆ·äúxÆ%A¼Yˆÿ¾~öåª)ã\|íêùû™«'A|ýûF¤v(`U ĉʼnÅ/ÅãÄâÝfñ8±x×Yl 1_Áµù$ï&‹®ÁTÐxü\|N,Þ‹mƒülmrbñÚâ1ýImñ.³øÅ*ê—Ãâkn%ïVbñ.°øeCœXœXü"X|¾áå´){íNûŸHíPÀª®X<Äã— ñŠ‹ÿsÝbýó™«'AœXLŸ%=…\ñaí[I,~~Ÿîù VqíôtØ'ħç{†½ ìžîäq£ý{º—X jl“êÅÞ @QzÒÎ÷lôlPùôôt¯8C!¶Ñ ÀoØ#ˆO7zì!­í:.6Ð…é&{3b‡±±Ìg6#®°¨_£MfͲ¦4'õlöšô]‹ú +`Öf¯›œOdÁÀÕÏ9Eç÷žKQïQh‘‹°‡ïSâÀiYàÑAl¡´°Ä´“‡Ìv‹9b²ÏìÞsŸ™ŠÄº4°Ð‡ãJŽœËÁE,ÎIÉSSû½Ø¾ ‰€¯Õ?ÛbÀÈ­yÊc®Èg‚ø41F”)‡?E"ÄHñy ñÄî(„ˆùâó . c^¿®C”S¬yC®×eq,uV`Ïuf³³†l ­VÄ  j<===ï-Ä{"–Åçå4 bÛXÐQçá=ˆšåÄåÄ\âwVfÇR›B¼A,kÍ|ÔT©=øÎ]Ð)+jJA S®¨Ï+õÞ’¢ >]bñŒð=kÀâòçáŸy©­Y<£¤ ‹É¦>ÝEÝ$j/M’bØHæÛ §§e"1RÎܳ÷bEMæÖéc{´ !߬ÓhƆÑë,.7·–¤¶aq `Ö†ÅDL®Bsë9!.~óß[! EšíÝÚã3Oa¯Ÿ§x±].írq¹±¥Ñû¹ø_ëë¯g®žñå§HíPÀª&ˆ‹‹‹‹‹‹_‹a?wwûr“ñÝî_„›Ó.À|]˜ƒ ]]~¼¼üØâù2ç^Ê©Kþj'5pHòw…ÅK‡5€á½ØoO—Ã6uùéãaÄ-¥FOÞÇ]b±Åç.÷Íç.ö/ö÷÷ 9Á‹KZÁý–³f·YÛ'ˆ-…Äö” Ø7¤Æ¿M žb~œ™ÏÇÙa-4'ÎíÁæl{º9EQSÚJj¤>^zf­¡€-²xeJ€SÍû|/pÕ {aµïþqyß~ì`,‚ìy@Ÿýº¼Þ¿ühº4°ØjÑç“…ϳàÚö—;»¥ÔèÉ;ôf¼6l„Õ}A€ÀÅ¿†™û„û>‘ØBl!¶ÿbj ëÚ5A]ÆÔãâ£``X<³?Í·ažÄm¤†5*`/ñ±§,¾\bn¤cÇCbû± ï7¸vF};ˆñ¯E™KMpK©‘r þØg×|à.XQ[<­6Þ_VÔ¸½âvŠšÁ˜‘JýX›ÅÄ3†cvyÈHüÕNj‹gô€ ÅÖž"s !¶æ–ýAæÖ%›[ˆ°UÝhxÄ—û±á­˜[ù&æšM¶Ñ0:¬Íb<ï£Õ¢dmY(ª½Ô˜Å€ÙÐY¿×}ñï£wëðz·Ö6–«&{èÝúø½[\’zx,N>êÄâÁ³ø£}¿]‡Åõ$?‹íîá:Ū/ ±øYXÌnŒö,n ±øYXÜ¡µ$?‹k‡‘×°#,Æd;´/ÒÐ.) eJÀ§ê”€b© Ú?,J hñ'¬ò纸ûþà ¦`l™ôÑ6xQðW¡Ô&,.tX6cñ¾uòcôf)µb`_:ˆÁ¥ú\b^@mˆ›ï?U§”H•ÿµ”KQJ@}†Å±ý"ˆï)jÌ ˆ/ö-¥%íêAÜ*xQðW±Ôúü«8% A«b«ëÀAŒá»‹á±cˆbL3AÔ„¸UðþSuJÀþº)ûk§|"l!†¸®ºîÄ—9ˆí!®mQ· Þ_T§üµnJÀ_k§\¶ÖC 1Ä-u«àý§ê”€ýuSö×N ø´dn RQG/MØôì³ân`nµ Þ_T§üµnJÀ_k§\D/Mö¯…xhæVÿ¼[‡ëI]»XÉ»µiïÖÇjçT#?oõ$ˆS¼8ù¨‹_(‹Õu¸V±>Z3>±¸¿,&Ø:,¶ï⇉Åýe1âs¸F±>ºïÄâ~²øíYŒnð—•õz7Ø—Õ4®¸ÍxqÇ‹±ø¢ý“Üwˆ›±x{ñâ—Å‹ëCL.Ë¡Cl]Ò6˜ˆ0‹)Òì¯^ ñæãÅ—³Y#E]/n¢¨?]¢Kzëbëh˜SE×)‘Ç  p„tS¬†x+ñbû‘ˆo½¶¸0^|xyÙÀ¢Æ÷ØÁó¢A6@!ÆîˆØ«Ä7¾”ÿÕæÖ6âÅñåáeý÷âÂxqÃáÓ%kã24 bÒÅDáKÉCÛwqcêL+-êmÄ‹¶ø]Ä‹i˜… )† ó ÆPâ>¬§¨·/n q7ñb›ÂvcâìTQ©c´©.©ë8u&gs ·¬4·¶/nÃâuãŬÏÀŽ^µ½íéú¸X7$³ÛñâÖþñPâÅ»ñ |ÔÛgñ†˜›^®:‘2ÞÈÅÿ^·X?sõ$ˆ¯o%õóç7Ÿ×,Ö—/o¿tQÂñfXüÆ üf=¿5¿M,î+‹?ÛÏ絊eðýrý%±¸¯,6辩 ñßkCœX‹¹µýÜ¥ÔP@ñÏâÖCÌUŽu×5Ä é蜢¾ ØŽHÚÆxYQ_áö<ÄdluñŒTêç,.WÔ·“ZÀâ9)ê6,¾Â*bÆðï+‚¢Ä׫^šÈŠB˜lCPlnY{ʈæ–ýAæÖ5›[ˆ0`“r-YüBÐâkc ÍØ0zÓ€ÅåæVK©1‹‘e¡Es‹Xü¶‹m½‘¹%Sõ^Œ»‚8zÏmrà¸Þc:8uwãjë›j ñU£kr€‘¦k©„Ûx'˜/'^üb! ‹ĉŠânYÜAÖ‡y…zû6±¸·,î ëþ:}I,î+‹;ˆ‰ß&÷”Åd}\cêÖÛÄâ&·K ø½ú´ ²øË|^“Åc'Æ9ºÆAíA¯!ŠA×bq«”€«êÓ6–õqÛ뱘\»bŽë@ ñÕUŸ!¦@1¬qó”€ß«S6–õQâß bëè·îBʬ°Ä樢åï˜ò4ƘmaóÆ’ Ôˆ1wkmˆ[¥\U§l.ëƒÓê”p<æpݪì1'I9ˆ)jgÃ:x!n¼ÿ½:%`sY×ok&öü.S&@l8{åXÌ^D¶)AnE †ñúmq«àýUuJ@?²>bÉ sBÌIÒn÷bLÚêâfÁûß«SƽÈú¸ºÎ+jJ¾€œ¢æDq5çå­ q‹àýUuJ@/²>°ÍE ŠÌ-²°(;­*Jˆ½Â´ÌÃ蟹uMmÇU,†í{·zõ‘\[÷n5bñóVO‚ø%Ä‹5¤e‡—©ø¿OϾ•ºˆA˜>tñãÓÓ#¯™;Äb‹Éƒùß„xúÔYu?,_âà){È?fü¦ÓUuû¸S,žÿZBl+ðÁV3¡=šGæZ>²æÄ©ù<ÁÃôa:‚ù ö×­à~ƒÛý âöðdö„÷4~àOþZñìèÉ|ð=Z°gOGvË`YS4Ÿ¬À)þ*ºöã£AA=²ÿŸfòË€ýXFì°øn±%Ä–!¦FŸb”¶ÛCl‹dP šVúƒ@ü´Ñ‚GÊ÷Á*c[ˆé¡ €¼Æ/zæP%Ôxµ€ÒS‹ìlf€%ˆ=à³#Ü3䶘”`Û¶øÉ’ì)‚x­æ+X9ÄÜHÇ,!f Ä–ÅO"Ô’ÖC<µ<(zþ¦„¬%mbÃâ£Ça·ÅO¬¨Û›[¨J#ˆÛ)êÒ*@ªÅjãé²¢~Àí1ÄO¤ H ÄOÜ@?Ä„qI³L{EÍ¿fvåè¨TQ£-~jil/M0 nkn=¡šÅ&N§8™[Oln!ÂVu£á%æV¨¨bRÔÓ"ˆKõ“˜[1þ²|>:¢Íf1âÑâî—©{z§5¹hdG³¹… ‘‰xØS±¹•[Žjr$y·ÚÝÖCðJû<ޭǧ..¾Þ­—íÀL,Þyˆ‹‹K–O>¬U¬º‹Ÿ‰Å¿ž~}øµ‹k è0Òô08Äd_±÷#os[`ÿû˪ñƒƒü°Æ“W[@,æHÓtº,>Š^™bˆ‹^£~UÖt ë!´¶€.Xz|ÄøÂìȾ!Û×_³pZæ£:د££¨S[bñ >zDGÖ#9<ÈÂßèÏzâµâÄâ!Alt?Igüc¹í ~|LmñîALÉ E'LQ?EŠzöøT¤¨#ƒ+±x`æ–Íñ@ Í,jŽcs+qbñ u°<æ¾K_›‹wâÇô^gsë=Bü¾‹sbñûí²˜âèhœL88I,^×9Е€N,j ¢+XM“ÄâjçT?oõ°E}ë!¦ÀNj‹w‹Å±þ`pè>±x§XLq ÛcDÃï‰Å»Õ¿h×GÊ£N,N,îâŸ],íNûQ½ûßëkm«J¸bIÿü‘Ú¡€U%L'÷âpðã ¼àFÍÁ…GÝÌí÷ÍOÿ×/Ǽõxˆ,>pbü—©ûùikê¥Ï›²–Cücé÷¢Š;0ð;pK $‹áçb[æûœüx?~ôbó(œÌcižIøy€?ŸOs`?v¯½¯øobƒßÍÍüøæÆ y37”>>¶Ä6ÀÓúñÜü³ëóùÀXŒcå`EýÄZAUv ·[7uôƒêª_Û›°¥¤Zóó€~ÙR„M¹íQ®€Ø|,Ä©%ï1ŽÎínþ9,X@ííÓO,¦º±:›·þ°ÿMÅýàƒûenaJ#Ä`ÉŒ­½{Èt*|ÄC†ÒY=?FÈç¢-&ˆí£.cp[l1&ˆ ¦Ž~Jì›Em!á-"L,þA̶V}ˆqÛ&Xl®t¼‹©€MXŒÔˆ܃wˆƒØ¸gŠ:‚ˆEQpÙ+Úblu’žöã¿›cj„;dñ±•¶‹í#rS—ÅVÇŠú h‚øÀAŒuXA}SÔøÒÄŠš^ Èê Ì­À„€ƒbˆ ˆb4´ð=Ê]áããùÍÍ1mY|³l~× !©‹5XœÔ*Yüã'™[dnĶºè}ÒVˆÙJúÚZ-Î4ˆë£èé Š.7Zº›Êš.'áq=ˆËàéÇõX¼ŽÏdÞ­ƒƒ:/³¹wàºõ€lœ7f±±äÖbñÍ|^—Å»ñf}Ô7HÈ2棗‡—¶Õdññò3wCæYœ|Ô®->®€øß@4‚øß²›Aœ"Mk³¸b´Óçt€5ç¬oìfίcµŠeOõÌ~ðäºu‚x]ßT²øæFÌtç*cxj¾{sZ»ùÉ4N,Þ‹«Ì­ƒŸ?„ÐOöóø¦Q±n~¬‡í¦¡Í/>,þ/ïJ?Q¦ñ:ñâbÏâú>êâÏâ&>jwsäâ ^1~¬º‚øîñññ\ZÍãõ[:ÇbŽiÜ´fñœuK Øëƒ^¡ŸèAÿæx!SÄá眛Ìy­š¬Ábû¬ÌÙÜÂxF=ï´gq `N,>nÊbô?SH~¢G}~?%:qð2 F%x,Ê} ]°¸ñbÀXCLÒÛ⃠1¾|vÂâÄ‹Q!;ˆßÎ÷xA[EmUb#E=Ü-£Ž] Mð…—ñmñ0Û£¹5[„`0‰^šœ¹…ÁD hÔî+êQˆ!çQ× rõ˃¸cŽôŸÅCr`~ïbyÕî´¯Õ»ÿµn±Ö°ª„+–ñ÷?6"µC«J˜ N,N,n)õÝ÷wïÖ*V]ßÿøj¥|ýZ€÷W°WøújÐn6wðõ´¯Ëoß¿½ëœÅVè·uX\[€×~ŠŠûÊb_ýp÷â¯UO"B¼]æuùÇ7{Dc©ÈÁwk°¸¶£g^ˆÍxõ¾~‡WoäïWû0[Àlî7ÄX^xeûºÐüa nïYl~àÆW´R¿. ]¾UÔå×o•5]FÂwVæ»5X\[À÷¯±%3àßWF«½bˆí/ƒ}™:êÄ`µuðÇ|,²ö¯…Øþ í¸ÒâwUÿÀü]S~›Ï×cq]–ÅF!3Ä_S|Ȉ¿–5uý…ðû;AŠÿNi¥ .¿Y8sðâ¶ùü]‹ñ(Såÿ*‘úî{]¿[n @ — ~õ5qßÛâ'ˆ-‘ÄßÝ®Bº¼+¬KüT±Ø4Šå—I­Ð«ÙÍ þƒ¡tŠÚþ{…êÍ­!(jkn•(êWõµ©²9¡õmn?óù7£€W@üµâ•Ký^Ï¢¶§zf ?õ ¤ 1™[øƒc ’“¹õªÈ¸îÓK“5¦ÄøƒÌ-ˆÌ­ïPnn}û†¦Õ71Wß}Ç×’w•uù½½”³¸\jÍ÷b|‚XÀœÖš(}s¯çØ1×GP—†1Fõ[ÑWªúwåq±ÔúÞ­oßF|ÿö½‰€ÒföÅCìù¶®w«ÔH ó,N>êöÏ ‰oõÀXíÝj#µ€ÅsRÔݱøeBlîœ £wÆ»XÜBjÌâ@ÀœXü.±8Eš‹7˜ÝÉÅ@¬!-;¼¼2§eÇ—ñ‹€Xá§ ü`—r?ý“¡Á²ð»HfZžâ¬5Ä*Sî#¿ð['ˆûÅbC;0þ5ÛÌ—¶k €€3ôTf—F¢Ú}Yˆ¯ƒØnM÷ b[¦5~,FvÍòÐ KÀ™oóÛ"ˆA€f ÄIQ÷bóò„ènZˆeÕ¯U¾`™lóhjY#Q¨ 2: -=ƒ˜P%hèGÜÂò‡vEÍ.­Y%O[@•˜pié—¢Î4©fÛR‹¢ÖKŠÚ­½ñUeÅ¥å9 T¿ÖÂ2?½¹e›c„ÞZlnÙoon!sñ´½”iHmñÐ\ ¯qZ†qZÄiI§%Aœ–qZÄiI'ˆÓ’ NK‚8- â´$ˆÓ²ˆ1Š˜q*VF‰ù¼<Šc®€v†öOT>?$K)ŸÑÅ)Aº²\yV‘,.k¾$YTÄâêºmMWÐù[Ò9Y=‡˜#ü>ÝJKT¿ bµtw…÷©–!ÎA®8qqÞPÄyü–¨§Àôje7ˆß0&{ØØ¾¶a}P6 SÒ.Í­p›¹%›ÂEÉšZ²€’zp` ЉJ2³)LS’ðç"HÎÂD1>É& ä/>™x8ˆ'y)A‹ ˆ9jJ¾3N?Ä´åO9ŽW˜°¨µ/1`Y¨¬½‡8ó»<,Jó‘´KLî¡Ä$eò¹<–7+´>¦ð)NáTÒ`².oÕ¬A‚<"·Fz…“N ã“èVÔŸ(%‘Ô3- ®ˆÅ”¤S J)Lx2Þ3ÃJ'á¹®œJ²Ö1Þ.Ķ>ùv(“ÚCMÚ£5egbêµýK§j•‹@zp<ħA­Ú 3%+nZÃ'B )a‹ (7HjAn[Q.ªRÔV¼,Z®Å)ªZòwb%mqÀb¥CËÃנ綘IÔªGû´Íbù­#öébone’˜ƒ8ØíŠXX@q˜NªÜwÄ.Euˆ«eˆ½¢Fýé!^RÔjU®n%ŠZ*jÉ»vƒS€WÔ>Q?|DF¤¨!PÔjIQG Ô -Ëg”—*WPQŠªÔ–ĨÕ8¯2#Ó…z¹`% Ôšë/c[Æõ[#uÎ~±Ñp!»$õÉæ–­;Ró¡Õ„kt!1·èCCœe„e Nd½é¥„E,. Ü žEBÙÜ¢ Ët¢ª¹gžm¼u¿½ :~/©|óÙa¯‹ªq»Cõ ¼eåØBµöâªÛ4ÄiI>ê´$ˆÓ’ NË3›[ôöÀ/~{áX: èU’s±"]ë1 "TËg¨L<Çk1Õ*›1¬«Þ'Tî"ªDH¯_š´Ä–ô2@kBœÅŠêCœCœ;Eç×–v«j{^µ…x(,V΋G®òL»„£Nn$ÛOOè'¡ðdžØÕP+Ò^ùÐÝ¢;5øR¬¢349:ĉ(ÅÝeG'É$ J.I²µ„¥ä|ô­h[|-›@>ÐZÑšî’œ5öÑÆÊÑÜWy!˜½….RdWœ{š=…⃔؜ߦ]¹Å±¢PŽŒB@žÁàR<Ò„õŸb Bœa*èÇNE`1¢a„2ðžhôœ¹¢ˆdH¡5,òåç&Çd$ìÆ)ÝkFª!F‡®ÆHù¦‘Îô ƒ8õ)ú”Iø +ÐÓY+â]@Ž|p±ŠN1Ó駦hµ‚ç(@Lá/êË.×rîq-a)Íçóˆ±$ ª­0ˆMa$ñXÊ`6€3EQ!@¬³eˆ¹‰Bˆ%F£âà“E› cE¡?–„–èTÏZ†8Œ9åXLtÕyˆ…c*`1$-“‡$[D &»CbbÁ • DQ+À%“ ¾Ü¹¯w¯ˆ%"ã¼ô¹ýU±¢XQëHQÓ¥@5^'†X*jÐ.:éôu¨¨]0SiŽMIQ¼¢Îä8ŒD‡ E­!€ØêEM& ™[XÕJÖÈÊÒ|×rwdnQø‰*N̨ŠX‘v#Š ¹¥¸òØÜÒ”&#F ž&ôCÛHVcEM,¦ì#:JvÓߌÍ8,:‹ÂæZTr'lYáØòäÌ-ü$¸Ÿ¼4Åö¿j÷60'ÊZUCz]Šß^utÍkAÃ@nzÍ‚ªR_Jr`¦%Aœ–qZÖC¬h¦ ;¨j÷sZzbQ»w|Ýâ,A<45}©ý\2æ8÷uQ¾%hjé(’ê²×kòa:ïcàb‡Pα \7y‚x,&Ÿ<;qÉ­Ï.'öÿø€w0Ra–´ bPP¾§Ëûwc’ç!Viš€ÞC,T|ä7èÞÃÁü¢æ“’¢‹y6ðoniŠ‘£ÚÍ­Œ«ÉÜÂKSã—ž„çà\M½\ â¡Aœ–qZÄiI§å¹Í-U:Ém<×Ò£ :¥r³¥ªôõæ¥I«|‡—0‹íèBˆ“áÝ3ˆ•Ÿ2‘$37×-¦>R²£ ÓAYŒè®Fw‰–!B@ú¿h‰úƒ *Ïi×!ŽF¹Ì%7G}IôâF® ÆS2üšR™ÏŒOîë>@¬9@2™ÃV:š€ïA‘ êBcåpWÅàN% â¾@Ì©ò:êײÄâ<ÄÜ $èŠBœXÜ+E³‚AÈb×»@ -ƒ¢±¢&¾ 7%ˆ{q0s-x#~ \ÞG]qw¸ÕÜ;¸/£ôI÷⥩ñ Nzáœë£fƒéÝ’–DÇqZÄiJ[L£ÅCy»’¦rãŠA\]Úeލü•º™;†˜rƒ\ x7@Г Ǧ¢ñĵ–‹Ã<²Ph–,¸O?dáí(î$ +ì­sÑŠÄøi_ârƒv3DB2冇¡̰~à&Ë–n¾íÈ1KC«ñ¬,Ú¥N›ޛij4å Ö2Ì‘„O:ù· 7©?¬n(eW6sŒà¼B<ç‹Ìª¤ù8,ø Y"ï:÷©ÂAˆe4J$ƒpù1¥è~äyUåæcÜ#¦• ó|U0W^Q+§¨¹]å„tùŠ'„Áž#Y0Ž— Á€q ]È`éæ×SÔ®-¦à‚ o™¹°€WÃQ¸(H©ål­x”* Røá®B{D†Ê’ѽܰW‘¹•Ÿ˜ÅÇGxîê~#ƒ˜zÐÁÝšP@!T&÷©ÝH`á¬1Šc)~.6·´[#s‹›\ûË•;sY2¼BJ™[r¨Œ2„X&^|ó-‡ø* CÔÒ j…Ìz‹jôÊ1ðE­ÞÔµÿ¿$ ÑdVвö½Á]ë—ÜЫQ×Û¸fZ’:- â´$ˆÓ²õHSy‡—Œg ÎÙº¶}‹àäÌm¶±rãH”½¦d“¶/M3¼DÕªjUpÅ,)åF£*™KF%ˆ»„X"MÎ…AÞi_Ñ.^$E‰»ÆHtȇiÜT-xƒX<Ìç&S¬Ó¯Â×b‡=Ïç’k 1Ä^t_á¹Ãµ’\»Þ¹ Á`þ.L#žE`OŸòó×k?œÏö žžŒûS¸ùüÌÖiiËbõ†Ð±ó]Â2ÊhÂHcú¡èM¦¡1û!ôysàD §Xáh‹â$7¹ƒìJob=M4Jt g}qa‰`…Á“ÄDS¬¸‰•–!V‰Å]B !Ä‘¢–®J9E KŠÚ‡i €ØOð¢´t†tû_”Xþª¼+AÜbŽ4¹/:ޝd~ô4‹¢D]csKÂ4Ë”KøÁ™]4Gte87šb…¶òt_™\?s»T2·Ú¾4mé}D7s»$¯L—®íÔ§nö–›´òfª=- â´$ˆÓÒGˆÀÍ€ZÒ †iC:Ü«JgÿP%ãxé¦ÏX±ÿZGTô†HO† ±Ì S¾—Bœõâ@œÎJ!Öú…B즨¦—Yå& …Ì º”LI=4¤/ N4ÏSÈû>)2<„³†r*¤VÒ%œŸ^ë`£öÈP0ÃçYÊû9&,Ê$€ºèp‡-‘7X˜+%Ö’ü1»£$>à“ƒÁx”tñÞDà#è¬O æ sB1Å2Âlee£òȸPˆÌ*øÛ2póƳc8‘™»‡(J^÷%p=H|äåAì¦`W2‹‡ÔRœàçávSEsŒ*ž@>˜¤ëd^yÊ¡†Ðm ’Å-c½Ùê®4Qçð‹ãJ:†°Ó[Ëäé\‚ ‚îx“/fT¿pr—ìÏ-oÌbWWAM LÒÎ] ²â,‹¦¨—ã !æÒä ö}Zbßã$†X‰i ;™/bì‡Å{Eí†Ôò=ë`Ýònúø œàÕ$T*ê,PÔ™›@&€ØE92™ˆS‰_^ïR·‰•ãn©å ¿Ñ ÕJ9>stream xÚc`ÀþÿGãâàÿ³þ#äÿú²dtè&àà"óMÇê`tÀ$bAdœendstream endobj 17 0 obj<]/Filter/FlateDecode/Width 16/Height 16/BitsPerComponent 4/Length 101 >>stream xÚûÿn@¨Ç!ôßm@âìÝÿo§éŸgïÞ™í\½²£sþÿÿß;;::Êâÿÿ˜ÑÑæÈðÿÿ¯í%@êÿïV× ~ ½Â€ÉD1|Òßôÿÿà‡üJÿÒÒlc[endstream endobj 18 0 obj<>stream xÚkendstream endobj 19 0 obj<]/Filter/FlateDecode/Width 1/Height 1/BitsPerComponent 1/Length 9 >>stream xÚcendstream endobj 20 0 obj<>endobj 21 0 obj<>endobj 22 0 obj<>endobj 23 0 obj<>endobj 24 0 obj<>endobj 25 0 obj<>endobj 26 0 obj<>endobj 27 0 obj<>endobj 28 0 obj<>endobj 29 0 obj<>endobj 30 0 obj<>endobj 31 0 obj<>endobj 32 0 obj<>endobj 33 0 obj<>endobj 34 0 obj<>endobj 35 0 obj<>endobj 36 0 obj<>endobj 37 0 obj<>endobj 38 0 obj<>endobj 39 0 obj[21 0 R 22 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R]endobj 40 0 obj<>endobj 41 0 obj<>endobj 42 0 obj<>endobj 43 0 obj<>endobj 44 0 obj<>endobj 45 0 obj<>endobj 46 0 obj<>endobj 47 0 obj<>endobj 48 0 obj<>endobj 49 0 obj<>endobj 50 0 obj<>endobj 51 0 obj<>endobj 52 0 obj<>endobj 53 0 obj<>endobj 54 0 obj<>endobj 55 0 obj<>endobj 56 0 obj<>endobj 57 0 obj<>endobj 58 0 obj[41 0 R 43 0 R 45 0 R 47 0 R 48 0 R 50 0 R 51 0 R 53 0 R 55 0 R 57 0 R]endobj 59 0 obj<>endobj 60 0 obj<>endobj 61 0 obj<>endobj 62 0 obj<>endobj 63 0 obj<>endobj 64 0 obj<>endobj 65 0 obj<>endobj 66 0 obj<>endobj 67 0 obj<>endobj 68 0 obj<>endobj 69 0 obj<>endobj 70 0 obj<>endobj 71 0 obj<>endobj 72 0 obj<>endobj 73 0 obj<>endobj 74 0 obj<>endobj 75 0 obj<>endobj 76 0 obj<>endobj 77 0 obj<>endobj 78 0 obj<>endobj 79 0 obj<>endobj 80 0 obj<>endobj 81 0 obj[59 0 R 61 0 R 63 0 R 65 0 R 67 0 R 68 0 R 69 0 R 71 0 R 73 0 R 75 0 R 76 0 R 78 0 R 80 0 R]endobj 82 0 obj<>endobj 83 0 obj<>endobj 84 0 obj<>endobj 85 0 obj<>endobj 86 0 obj<>endobj 87 0 obj[83 0 R 84 0 R 85 0 R 86 0 R]endobj 88 0 obj<>endobj 89 0 obj<>endobj 90 0 obj<>endobj 91 0 obj<>endobj 92 0 obj<>endobj 93 0 obj<>endobj 94 0 obj<>endobj 95 0 obj<>endobj 96 0 obj[88 0 R 89 0 R 90 0 R 91 0 R 93 0 R 94 0 R 95 0 R]endobj 97 0 obj<>endobj 98 0 obj<>endobj 99 0 obj<>endobj 100 0 obj<>endobj 101 0 obj<>endobj 102 0 obj<>endobj 103 0 obj<>endobj 104 0 obj<>endobj 105 0 obj<>endobj 106 0 obj<>endobj 107 0 obj<>endobj 108 0 obj<>endobj 109 0 obj[97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R]endobj 110 0 obj<>endobj 111 0 obj<>endobj 112 0 obj<>endobj 113 0 obj<>endobj 114 0 obj<>endobj 115 0 obj<>endobj 116 0 obj<>endobj 117 0 obj<>endobj 118 0 obj<>endobj 119 0 obj<>endobj 120 0 obj<>endobj 121 0 obj<>endobj 122 0 obj<>endobj 123 0 obj<>endobj 124 0 obj<>endobj 125 0 obj<>endobj 126 0 obj<>endobj 127 0 obj[110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R]endobj 128 0 obj<>endobj 129 0 obj<>endobj 130 0 obj[128 0 R 129 0 R]endobj 131 0 obj<>endobj 132 0 obj<>endobj 133 0 obj<>endobj 134 0 obj<>endobj 135 0 obj<>endobj 136 0 obj[131 0 R 133 0 R 135 0 R]endobj 137 0 obj<>endobj 138 0 obj<>endobj 139 0 obj<>endobj 140 0 obj<>endobj 141 0 obj<>endobj 142 0 obj<>endobj 143 0 obj<>endobj 144 0 obj<>endobj 145 0 obj<>endobj 146 0 obj<>endobj 147 0 obj<>endobj 148 0 obj<>endobj 149 0 obj<>endobj 150 0 obj[138 0 R 139 0 R 140 0 R 142 0 R 143 0 R 144 0 R 145 0 R 147 0 R 149 0 R]endobj 151 0 obj<>endobj 152 0 obj<>endobj 153 0 obj<>endobj 154 0 obj<>endobj 155 0 obj<>endobj 156 0 obj<>endobj 157 0 obj<>endobj 158 0 obj<>endobj 159 0 obj<>endobj 160 0 obj<>endobj 161 0 obj<>endobj 162 0 obj<>endobj 163 0 obj<>endobj 164 0 obj<>endobj 165 0 obj<>endobj 166 0 obj<>endobj 167 0 obj<>endobj 168 0 obj<>endobj 169 0 obj<>endobj 170 0 obj<>endobj 171 0 obj<>endobj 172 0 obj<>endobj 173 0 obj<>endobj 174 0 obj<>endobj 175 0 obj<>endobj 176 0 obj<>endobj 177 0 obj<>endobj 178 0 obj<>endobj 179 0 obj<>endobj 180 0 obj<>endobj 181 0 obj<>endobj 182 0 obj<>endobj 183 0 obj<>endobj 184 0 obj<>endobj 185 0 obj<>endobj 186 0 obj<>endobj 187 0 obj<>endobj 188 0 obj<>endobj 189 0 obj<>endobj 190 0 obj<>endobj 191 0 obj<>endobj 192 0 obj<>endobj 193 0 obj[152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R]endobj 194 0 obj<>endobj 195 0 obj<>endobj 196 0 obj<>endobj 197 0 obj<>endobj 198 0 obj<>endobj 199 0 obj<>endobj 200 0 obj<>endobj 201 0 obj<>endobj 202 0 obj<>endobj 203 0 obj<>endobj 204 0 obj<>endobj 205 0 obj<>endobj 206 0 obj<>endobj 207 0 obj<>endobj 208 0 obj<>endobj 209 0 obj<>endobj 210 0 obj<>endobj 211 0 obj<>endobj 212 0 obj<>endobj 213 0 obj<>endobj 214 0 obj<>endobj 215 0 obj<>endobj 216 0 obj<>endobj 217 0 obj<>endobj 218 0 obj<>endobj 219 0 obj<>endobj 220 0 obj<>endobj 221 0 obj<>endobj 222 0 obj<>endobj 223 0 obj<>endobj 224 0 obj<>endobj 225 0 obj<>endobj 226 0 obj<>endobj 227 0 obj<>endobj 228 0 obj<>endobj 229 0 obj<>endobj 230 0 obj<>endobj 231 0 obj<>endobj 232 0 obj<>endobj 233 0 obj<>endobj 234 0 obj<>endobj 235 0 obj<>endobj 236 0 obj<>endobj 237 0 obj<>endobj 238 0 obj<>endobj 239 0 obj<>endobj 240 0 obj<>endobj 241 0 obj<>endobj 242 0 obj<>endobj 243 0 obj<>endobj 244 0 obj<>endobj 245 0 obj<>endobj 246 0 obj<>endobj 247 0 obj<>endobj 248 0 obj<>endobj 249 0 obj<>endobj 250 0 obj<>endobj 251 0 obj[194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R]endobj 252 0 obj<>endobj 253 0 obj<>endobj 254 0 obj<>endobj 255 0 obj<>endobj 256 0 obj<>endobj 257 0 obj<>endobj 258 0 obj<>endobj 259 0 obj<>endobj 260 0 obj<>endobj 261 0 obj<>endobj 262 0 obj<>endobj 263 0 obj<>endobj 264 0 obj<>endobj 265 0 obj<>endobj 266 0 obj<>endobj 267 0 obj<>endobj 268 0 obj<>endobj 269 0 obj<>endobj 270 0 obj<>endobj 271 0 obj<>endobj 272 0 obj<>endobj 273 0 obj<>endobj 274 0 obj<>endobj 275 0 obj<>endobj 276 0 obj<>endobj 277 0 obj<>endobj 278 0 obj<>endobj 279 0 obj<>endobj 280 0 obj<>endobj 281 0 obj<>endobj 282 0 obj<>endobj 283 0 obj<>endobj 284 0 obj<>endobj 285 0 obj<>endobj 286 0 obj<>endobj 287 0 obj<>endobj 288 0 obj<>endobj 289 0 obj<>endobj 290 0 obj<>endobj 291 0 obj<>endobj 292 0 obj<>endobj 293 0 obj<>endobj 294 0 obj<>endobj 295 0 obj<>endobj 296 0 obj<>endobj 297 0 obj<>endobj 298 0 obj<>endobj 299 0 obj<>endobj 300 0 obj<>endobj 301 0 obj<>endobj 302 0 obj<>endobj 303 0 obj<>endobj 304 0 obj<>endobj 305 0 obj<>endobj 306 0 obj<>endobj 307 0 obj<>endobj 308 0 obj<>endobj 309 0 obj<>endobj 310 0 obj<>endobj 311 0 obj<>endobj 312 0 obj<>endobj 313 0 obj<>endobj 314 0 obj<>endobj 315 0 obj[252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 281 0 R 282 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R]endobj 316 0 obj<>endobj 317 0 obj<>endobj 318 0 obj<>endobj 319 0 obj<>endobj 320 0 obj<>endobj 321 0 obj<>endobj 322 0 obj<>endobj 323 0 obj<>endobj 324 0 obj<>endobj 325 0 obj<>endobj 326 0 obj<>endobj 327 0 obj<>endobj 328 0 obj<>endobj 329 0 obj[316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R]endobj 330 0 obj<>endobj 331 0 obj<>endobj 332 0 obj<>endobj 333 0 obj<>endobj 334 0 obj<>endobj 335 0 obj[330 0 R 332 0 R 334 0 R]endobj 336 0 obj<>endobj 337 0 obj<>endobj 338 0 obj<>endobj 339 0 obj<>endobj 340 0 obj<>endobj 341 0 obj<>endobj 342 0 obj<>endobj 343 0 obj<>endobj 344 0 obj<>endobj 345 0 obj<>endobj 346 0 obj<>endobj 347 0 obj[337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 346 0 R]endobj 348 0 obj<>endobj 349 0 obj<>endobj 350 0 obj<>endobj 351 0 obj<>endobj 352 0 obj<>endobj 353 0 obj[348 0 R 350 0 R 352 0 R]endobj 354 0 obj<>endobj 355 0 obj<>endobj 356 0 obj[355 0 R]endobj 357 0 obj<>endobj 358 0 obj<>endobj 359 0 obj<>endobj 360 0 obj<>endobj 361 0 obj<>endobj 362 0 obj[357 0 R 359 0 R 361 0 R]endobj 363 0 obj<>endobj 364 0 obj<>endobj 365 0 obj[364 0 R]endobj 366 0 obj<>endobj 367 0 obj<>endobj 368 0 obj<>endobj 369 0 obj<>endobj 370 0 obj<>endobj 371 0 obj<>endobj 372 0 obj<>endobj 373 0 obj<>endobj 374 0 obj<>endobj 375 0 obj[366 0 R 367 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R]endobj 376 0 obj<>endobj 377 0 obj[376 0 R]endobj 378 0 obj<>endobj 379 0 obj<>endobj 380 0 obj<>endobj 381 0 obj<>endobj 382 0 obj[378 0 R 379 0 R 380 0 R 381 0 R]endobj 383 0 obj<>endobj 384 0 obj<>endobj 385 0 obj<>endobj 386 0 obj<>endobj 387 0 obj[384 0 R 386 0 R]endobj 388 0 obj<>endobj 389 0 obj<>endobj 390 0 obj<>endobj 391 0 obj<>endobj 392 0 obj<>endobj 393 0 obj<>endobj 394 0 obj<>endobj 395 0 obj<>endobj 396 0 obj<>endobj 397 0 obj<>endobj 398 0 obj<>endobj 399 0 obj<>endobj 400 0 obj[389 0 R 391 0 R 393 0 R 395 0 R 397 0 R 399 0 R]endobj 401 0 obj<>endobj 402 0 obj<>endobj 403 0 obj<>endobj 404 0 obj<>endobj 405 0 obj<>endobj 406 0 obj<>endobj 407 0 obj<>endobj 408 0 obj<>endobj 409 0 obj<>endobj 410 0 obj<>endobj 411 0 obj<>endobj 412 0 obj<>endobj 413 0 obj<>endobj 414 0 obj<>endobj 415 0 obj<>endobj 416 0 obj<>endobj 417 0 obj<>endobj 418 0 obj<>endobj 419 0 obj<>endobj 420 0 obj<>endobj 421 0 obj[402 0 R 404 0 R 406 0 R 408 0 R 410 0 R 412 0 R 414 0 R 416 0 R 418 0 R 420 0 R]endobj 422 0 obj<>endobj 423 0 obj<>endobj 424 0 obj<>endobj 425 0 obj<>endobj 426 0 obj<>endobj 427 0 obj<>endobj 428 0 obj<>endobj 429 0 obj<>endobj 430 0 obj<>endobj 431 0 obj<>endobj 432 0 obj<>endobj 433 0 obj<>endobj 434 0 obj[423 0 R 425 0 R 427 0 R 429 0 R 431 0 R 433 0 R]endobj 435 0 obj<>endobj 436 0 obj<>endobj 437 0 obj<>endobj 438 0 obj<>endobj 439 0 obj<>endobj 440 0 obj<>endobj 441 0 obj<>endobj 442 0 obj<>endobj 443 0 obj[436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R]endobj 444 0 obj<>endobj 445 0 obj<>endobj 446 0 obj<>endobj 447 0 obj<>endobj 448 0 obj<>endobj 449 0 obj<>endobj 450 0 obj<>endobj 451 0 obj<>endobj 452 0 obj<>endobj 453 0 obj[445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 452 0 R]endobj 454 0 obj<>endobj 455 0 obj<>endobj 456 0 obj<>endobj 457 0 obj<>endobj 458 0 obj<>endobj 459 0 obj<>endobj 460 0 obj<>endobj 461 0 obj<>endobj 462 0 obj<>endobj 463 0 obj<>endobj 464 0 obj<>endobj 465 0 obj<>endobj 466 0 obj<>endobj 467 0 obj<>endobj 468 0 obj[454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 465 0 R 467 0 R]endobj 469 0 obj<>endobj 470 0 obj<>endobj 471 0 obj<>endobj 472 0 obj[470 0 R 471 0 R]endobj 473 0 obj<>endobj 474 0 obj<>endobj 475 0 obj<>endobj 476 0 obj<>endobj 477 0 obj<>endobj 478 0 obj<>endobj 479 0 obj<>endobj 480 0 obj<>endobj 481 0 obj<>endobj 482 0 obj<>endobj 483 0 obj<>endobj 484 0 obj[473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 483 0 R]endobj 485 0 obj<>endobj 486 0 obj<>endobj 487 0 obj[486 0 R]endobj 488 0 obj<>endobj 489 0 obj<>endobj 490 0 obj<>endobj 491 0 obj<>endobj 492 0 obj<>endobj 493 0 obj<>endobj 494 0 obj<>endobj 495 0 obj<>endobj 496 0 obj<>endobj 497 0 obj<>endobj 498 0 obj<>endobj 499 0 obj<>endobj 500 0 obj<>endobj 501 0 obj<>endobj 502 0 obj<>endobj 503 0 obj<>endobj 504 0 obj<>endobj 505 0 obj<>endobj 506 0 obj<>endobj 507 0 obj<>endobj 508 0 obj<>endobj 509 0 obj<>endobj 510 0 obj<>endobj 511 0 obj<>endobj 512 0 obj<>endobj 513 0 obj<>endobj 514 0 obj<>endobj 515 0 obj<>endobj 516 0 obj<>endobj 517 0 obj<>endobj 518 0 obj<>endobj 519 0 obj<>endobj 520 0 obj<>endobj 521 0 obj<>endobj 522 0 obj<>endobj 523 0 obj<>endobj 524 0 obj<>endobj 525 0 obj<>endobj 526 0 obj<>endobj 527 0 obj<>endobj 528 0 obj<>endobj 529 0 obj<>endobj 530 0 obj<>endobj 531 0 obj<>endobj 532 0 obj<>endobj 533 0 obj<>endobj 534 0 obj[489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R]endobj 535 0 obj<>endobj 536 0 obj<>endobj 537 0 obj<>endobj 538 0 obj<>endobj 539 0 obj<>endobj 540 0 obj<>endobj 541 0 obj[535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R]endobj 542 0 obj<>endobj 543 0 obj<>endobj 544 0 obj<>endobj 545 0 obj<>endobj 546 0 obj<>endobj 547 0 obj<>endobj 548 0 obj<>endobj 549 0 obj<>endobj 550 0 obj<>endobj 551 0 obj<>endobj 552 0 obj<>endobj 553 0 obj<>endobj 554 0 obj<>endobj 555 0 obj<>endobj 556 0 obj<>endobj 557 0 obj<>endobj 558 0 obj<>endobj 559 0 obj<>endobj 560 0 obj<>endobj 561 0 obj<>endobj 562 0 obj<>endobj 563 0 obj<>endobj 564 0 obj<>endobj 565 0 obj[542 0 R 544 0 R 546 0 R 548 0 R 550 0 R 552 0 R 554 0 R 556 0 R 558 0 R 560 0 R 562 0 R 564 0 R]endobj 566 0 obj<>endobj 567 0 obj<>endobj 568 0 obj<>endobj 569 0 obj<>endobj 570 0 obj<>endobj 571 0 obj[566 0 R 567 0 R 568 0 R 569 0 R 570 0 R]endobj 572 0 obj<>endobj 573 0 obj<>endobj 574 0 obj<>endobj 575 0 obj[573 0 R 574 0 R]endobj 576 0 obj<>endobj 577 0 obj<>endobj 578 0 obj<>endobj 579 0 obj<>endobj 580 0 obj<>endobj 581 0 obj[576 0 R 577 0 R 578 0 R 579 0 R 580 0 R]endobj 582 0 obj<>endobj 583 0 obj<>endobj 584 0 obj<>endobj 585 0 obj<>endobj 586 0 obj<>endobj 587 0 obj<>endobj 588 0 obj<>endobj 589 0 obj<>endobj 590 0 obj<>endobj 591 0 obj<>endobj 592 0 obj[582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R]endobj 593 0 obj<>endobj 594 0 obj<>endobj 595 0 obj<>endobj 596 0 obj<>endobj 597 0 obj<>endobj 598 0 obj<>endobj 599 0 obj<>endobj 600 0 obj<>endobj 601 0 obj<>endobj 602 0 obj<>endobj 603 0 obj<>endobj 604 0 obj[594 0 R 595 0 R 596 0 R 598 0 R 600 0 R 601 0 R 602 0 R 603 0 R]endobj 605 0 obj<>endobj 606 0 obj<>endobj 607 0 obj<>endobj 608 0 obj<>endobj 609 0 obj<>endobj 610 0 obj<>endobj 611 0 obj[605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R]endobj 612 0 obj<>endobj 613 0 obj<>endobj 614 0 obj<>endobj 615 0 obj<>endobj 616 0 obj[613 0 R 615 0 R]endobj 617 0 obj<>endobj 618 0 obj<>endobj 619 0 obj<>endobj 620 0 obj<>endobj 621 0 obj<>endobj 622 0 obj<>endobj 623 0 obj<>endobj 624 0 obj[618 0 R 620 0 R 622 0 R 623 0 R]endobj 625 0 obj<>endobj 626 0 obj<>endobj 627 0 obj<>endobj 628 0 obj<>endobj 629 0 obj[625 0 R 626 0 R 627 0 R 628 0 R]endobj 630 0 obj<>endobj 631 0 obj<>endobj 632 0 obj<>endobj 633 0 obj[630 0 R 631 0 R 632 0 R]endobj 634 0 obj<>endobj 635 0 obj<>endobj 636 0 obj<>endobj 637 0 obj<>endobj 638 0 obj<>endobj 639 0 obj<>endobj 640 0 obj<>endobj 641 0 obj<>endobj 642 0 obj<>endobj 643 0 obj[634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 640 0 R 642 0 R]endobj 644 0 obj<>endobj 645 0 obj<>endobj 646 0 obj<>endobj 647 0 obj<>endobj 648 0 obj<>endobj 649 0 obj<>endobj 650 0 obj<>endobj 651 0 obj<>endobj 652 0 obj[645 0 R 647 0 R 649 0 R 651 0 R]endobj 653 0 obj<>endobj 654 0 obj<>endobj 655 0 obj<>endobj 656 0 obj<>endobj 657 0 obj<>endobj 658 0 obj<>endobj 659 0 obj<>endobj 660 0 obj<>endobj 661 0 obj<>endobj 662 0 obj<>endobj 663 0 obj[654 0 R 655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R]endobj 664 0 obj<>endobj 665 0 obj<>endobj 666 0 obj<>endobj 667 0 obj<>endobj 668 0 obj[665 0 R 667 0 R]endobj 669 0 obj<>endobj 670 0 obj<>endobj 671 0 obj<>endobj 672 0 obj[670 0 R 671 0 R]endobj 673 0 obj<>endobj 674 0 obj<>endobj 675 0 obj[674 0 R]endobj 676 0 obj<>endobj 677 0 obj<>endobj 678 0 obj[677 0 R]endobj 679 0 obj<>endobj 680 0 obj<>endobj 681 0 obj<>endobj 682 0 obj<>endobj 683 0 obj<>endobj 684 0 obj<>endobj 685 0 obj[680 0 R 681 0 R 682 0 R 683 0 R 684 0 R]endobj 686 0 obj<>endobj 687 0 obj<>endobj 688 0 obj<>endobj 689 0 obj<>endobj 690 0 obj<>endobj 691 0 obj[686 0 R 688 0 R 690 0 R]endobj 692 0 obj<>endobj 693 0 obj<>endobj 694 0 obj<>endobj 695 0 obj<>endobj 696 0 obj<>endobj 697 0 obj<>endobj 698 0 obj<>endobj 699 0 obj<>endobj 700 0 obj<>endobj 701 0 obj[693 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R]endobj 702 0 obj<>endobj 703 0 obj[702 0 R]endobj 704 0 obj<>endobj 705 0 obj<>endobj 706 0 obj<>endobj 707 0 obj<>endobj 708 0 obj<>endobj 709 0 obj<>endobj 710 0 obj<>endobj 711 0 obj<>endobj 712 0 obj<>endobj 713 0 obj<>endobj 714 0 obj<>endobj 715 0 obj<>endobj 716 0 obj<>endobj 717 0 obj<>endobj 718 0 obj<>endobj 719 0 obj<>endobj 720 0 obj<>endobj 721 0 obj<>endobj 722 0 obj[705 0 R 707 0 R 709 0 R 711 0 R 713 0 R 715 0 R 717 0 R 719 0 R 721 0 R]endobj 723 0 obj<>endobj 724 0 obj<>endobj 725 0 obj<>endobj 726 0 obj<>endobj 727 0 obj<>endobj 728 0 obj<>endobj 729 0 obj<>endobj 730 0 obj<>endobj 731 0 obj<>endobj 732 0 obj<>endobj 733 0 obj[724 0 R 726 0 R 728 0 R 730 0 R 732 0 R]endobj 734 0 obj<>endobj 735 0 obj<>endobj 736 0 obj<>endobj 737 0 obj<>endobj 738 0 obj<>endobj 739 0 obj<>endobj 740 0 obj<>endobj 741 0 obj<>endobj 742 0 obj<>endobj 743 0 obj<>endobj 744 0 obj<>endobj 745 0 obj<>endobj 746 0 obj<>endobj 747 0 obj<>endobj 748 0 obj<>endobj 749 0 obj<>endobj 750 0 obj<>endobj 751 0 obj<>endobj 752 0 obj<>endobj 753 0 obj<>endobj 754 0 obj<>endobj 755 0 obj<>endobj 756 0 obj<>endobj 757 0 obj<>endobj 758 0 obj<>endobj 759 0 obj<>endobj 760 0 obj<>endobj 761 0 obj<>endobj 762 0 obj<>endobj 763 0 obj<>endobj 764 0 obj<>endobj 765 0 obj<>endobj 766 0 obj<>endobj 767 0 obj<>endobj 768 0 obj<>endobj 769 0 obj<>endobj 770 0 obj<>endobj 771 0 obj<>endobj 772 0 obj<>endobj 773 0 obj<>endobj 774 0 obj<>endobj 775 0 obj<>endobj 776 0 obj<>endobj 777 0 obj<>endobj 778 0 obj<>endobj 779 0 obj<>endobj 780 0 obj<>endobj 781 0 obj<>endobj 782 0 obj<>endobj 783 0 obj<>endobj 784 0 obj<>endobj 785 0 obj[735 0 R 737 0 R 739 0 R 741 0 R 743 0 R 745 0 R 747 0 R 749 0 R 751 0 R 753 0 R 755 0 R 757 0 R 759 0 R 760 0 R 762 0 R 763 0 R 765 0 R 767 0 R 769 0 R 771 0 R 773 0 R 775 0 R 776 0 R 778 0 R 780 0 R 782 0 R 784 0 R]endobj 786 0 obj<>endobj 787 0 obj<>endobj 788 0 obj<>endobj 789 0 obj<>endobj 790 0 obj[787 0 R 789 0 R]endobj 791 0 obj<>endobj 792 0 obj<>endobj 793 0 obj<>endobj 794 0 obj<>endobj 795 0 obj<>endobj 796 0 obj<>endobj 797 0 obj<>endobj 798 0 obj<>endobj 799 0 obj[792 0 R 794 0 R 796 0 R 798 0 R]endobj 800 0 obj<>endobj 801 0 obj<>endobj 802 0 obj<>endobj 803 0 obj<>endobj 804 0 obj<>endobj 805 0 obj<>endobj 806 0 obj<>endobj 807 0 obj<>endobj 808 0 obj<>endobj 809 0 obj<>endobj 810 0 obj<>endobj 811 0 obj<>endobj 812 0 obj<>endobj 813 0 obj<>endobj 814 0 obj[801 0 R 803 0 R 805 0 R 807 0 R 809 0 R 811 0 R 813 0 R]endobj 815 0 obj<>endobj 816 0 obj<>endobj 817 0 obj<>endobj 818 0 obj<>endobj 819 0 obj<>endobj 820 0 obj<>endobj 821 0 obj<>endobj 822 0 obj<>endobj 823 0 obj<>endobj 824 0 obj<>endobj 825 0 obj<>endobj 826 0 obj<>endobj 827 0 obj<>endobj 828 0 obj<>endobj 829 0 obj<>endobj 830 0 obj<>endobj 831 0 obj<>endobj 832 0 obj<>endobj 833 0 obj<>endobj 834 0 obj<>endobj 835 0 obj<>endobj 836 0 obj<>endobj 837 0 obj<>endobj 838 0 obj<>endobj 839 0 obj<>endobj 840 0 obj<>endobj 841 0 obj<>endobj 842 0 obj<>endobj 843 0 obj<>endobj 844 0 obj<>endobj 845 0 obj<>endobj 846 0 obj<>endobj 847 0 obj<>endobj 848 0 obj<>endobj 849 0 obj<>endobj 850 0 obj<>endobj 851 0 obj<>endobj 852 0 obj<>endobj 853 0 obj<>endobj 854 0 obj<>endobj 855 0 obj<>endobj 856 0 obj<>endobj 857 0 obj<>endobj 858 0 obj<>endobj 859 0 obj<>endobj 860 0 obj<>endobj 861 0 obj<>endobj 862 0 obj<>endobj 863 0 obj<>endobj 864 0 obj<>endobj 865 0 obj<>endobj 866 0 obj<>endobj 867 0 obj<>endobj 868 0 obj<>endobj 869 0 obj<>endobj 870 0 obj<>endobj 871 0 obj<>endobj 872 0 obj<>endobj 873 0 obj<>endobj 874 0 obj<>endobj 875 0 obj<>endobj 876 0 obj<>endobj 877 0 obj<>endobj 878 0 obj<>endobj 879 0 obj<>endobj 880 0 obj<>endobj 881 0 obj<>endobj 882 0 obj<>endobj 883 0 obj<>endobj 884 0 obj<>endobj 885 0 obj<>endobj 886 0 obj<>endobj 887 0 obj<>endobj 888 0 obj<>endobj 889 0 obj<>endobj 890 0 obj<>endobj 891 0 obj<>endobj 892 0 obj<>endobj 893 0 obj<>endobj 894 0 obj<>endobj 895 0 obj<>endobj 896 0 obj<>endobj 897 0 obj<>endobj 898 0 obj<>endobj 899 0 obj<>endobj 900 0 obj<>endobj 901 0 obj<>endobj 902 0 obj<>endobj 903 0 obj<>endobj 904 0 obj<>endobj 905 0 obj<>endobj 906 0 obj<>endobj 907 0 obj<>endobj 908 0 obj<>endobj 909 0 obj<>endobj 910 0 obj<>endobj 911 0 obj<>endobj 912 0 obj<>endobj 913 0 obj<>endobj 914 0 obj<>endobj 915 0 obj<>endobj 916 0 obj<>endobj 917 0 obj<>endobj 918 0 obj<>endobj 919 0 obj<>endobj 920 0 obj<>endobj 921 0 obj<>endobj 922 0 obj<>endobj 923 0 obj<>endobj 924 0 obj<>endobj 925 0 obj<>endobj 926 0 obj<>endobj 927 0 obj<>endobj 928 0 obj<>endobj 929 0 obj<>endobj 930 0 obj<>endobj 931 0 obj<>endobj 932 0 obj<>endobj 933 0 obj<>endobj 934 0 obj<>endobj 935 0 obj<>endobj 936 0 obj<>endobj 937 0 obj<>endobj 938 0 obj<>endobj 939 0 obj<>endobj 940 0 obj<>endobj 941 0 obj<>endobj 942 0 obj<>endobj 943 0 obj<>endobj 944 0 obj<>endobj 945 0 obj<>endobj 946 0 obj<>endobj 947 0 obj<>endobj 948 0 obj<>endobj 949 0 obj<>endobj 950 0 obj<>endobj 951 0 obj<>endobj 952 0 obj<>endobj 953 0 obj<>endobj 954 0 obj<>endobj 955 0 obj<>endobj 956 0 obj<>endobj 957 0 obj<>endobj 958 0 obj<>endobj 959 0 obj<>endobj 960 0 obj<>endobj 961 0 obj<>endobj 962 0 obj<>endobj 963 0 obj<>endobj 964 0 obj<>endobj 965 0 obj<>endobj 966 0 obj<>endobj 967 0 obj<>endobj 968 0 obj<>endobj 969 0 obj<>endobj 970 0 obj<>endobj 971 0 obj<>endobj 972 0 obj<>endobj 973 0 obj<>endobj 974 0 obj<>endobj 975 0 obj<>endobj 976 0 obj<>endobj 977 0 obj<>endobj 978 0 obj<>endobj 979 0 obj<>endobj 980 0 obj<>endobj 981 0 obj<>endobj 982 0 obj<>endobj 983 0 obj<>endobj 984 0 obj<>endobj 985 0 obj<>endobj 986 0 obj<>endobj 987 0 obj<>endobj 988 0 obj<>endobj 989 0 obj<>endobj 990 0 obj<>endobj 991 0 obj<>endobj 992 0 obj<>endobj 993 0 obj<>endobj 994 0 obj<>endobj 995 0 obj<>endobj 996 0 obj<>endobj 997 0 obj<>endobj 998 0 obj<>endobj 999 0 obj<>endobj 1000 0 obj<>endobj 1001 0 obj<>endobj 1002 0 obj<>endobj 1003 0 obj<>endobj 1004 0 obj<>endobj 1005 0 obj<>endobj 1006 0 obj<>endobj 1007 0 obj<>endobj 1008 0 obj<>endobj 1009 0 obj<>endobj 1010 0 obj<>endobj 1011 0 obj<>endobj 1012 0 obj<>endobj 1013 0 obj<>endobj 1014 0 obj<>endobj 1015 0 obj<>endobj 1016 0 obj<>endobj 1017 0 obj<>endobj 1018 0 obj<>endobj 1019 0 obj<>endobj 1020 0 obj<>endobj 1021 0 obj<>endobj 1022 0 obj<>endobj 1023 0 obj<>endobj 1024 0 obj<>endobj 1025 0 obj<>endobj 1026 0 obj<>endobj 1027 0 obj<>endobj 1028 0 obj<>endobj 1029 0 obj<>endobj 1030 0 obj<>/XObject<>>>/Annots 39 0 R>>endobj 1031 0 obj<>stream xÚ…U]sÚ:}çWìÓv¦ú–ý؆æNgú•”Nž#@½Æ¢²œÞö×w-cMRF6ÚÝsvÏ®Ä÷Š<}«ÝŒŠ¿§%l@ÂH"AIF4M ëYo‘œz°NÔ`á9C›¢ŠÀµBãß§0¥)¢p-ÏÂ(Bé¢ ”ø.ÅC‰ÆD‡%Oi}™¡pôý#CaiSH8¸bówŒÃÂÃÍlˆ ¼Ð˜ÉCj3áçúT Ÿ–ƒBšI\‡‚XŽQ':Œ6ufKê=éznE¯ÊŸÚ÷ä¸d:©$ë»qP•J"ôOŽD „ê2ˆP "¼Yö HËØòùuŒÂrC!‰2 C¤€å*1£­zñúîK,c µß¬]m¡lÊúç/À`M _u;Û ƒóÍËå·'RO,Çy²{Ë!S’paæÅ²¼GL¿†Ê7Úä˜XÆ(6YB†¡ØQŒ¸µµ-[ }´í@ÉÄHiÔ@™ñ…$ ËzqEŠ¿Û–\ c]s¸¶eì–ÑSßöÇdEÇ«mÙl, ‘hO¿î7¡\Ù¿(Òé[¨sœ{IDa†jÖ6ئ²°+›®¬/”ãx鳂Þ5m,ëú|±±ÛcVðõ9Ô÷(Õ+߬ݦ ©e°pÁVÑ=Øvþißï\ Xûoÿ¡Dº*ÀzPè©ÀÜ}û öu·qèÙç†Rú.Tö1ѧ¸Å±ÚÿàVv]tµ‹î Çkß¶eøÙÏM´a×^Ò=“¨)Ë!ãQøœÈ–~ïªËSÄž(Ê΋ÛíËàZ”䇋[ð gc: –›þ&3x>1æúõM’`|‡cßn½®IÓ”Ž'op.¶»2ü÷iÞ÷®²MkŸCøœt‡…}À©ÝÛþ¤^’ŠxeK}*ÕH¶ó«³N#·.¬ z__Vo‚<&v™ïìýÎ5ÏVzâ¹ðµ»/Îáígø®n?>/XObject<>>>/Annots 58 0 R>>endobj 1033 0 obj<>stream xÚ•YÛrÛ8}÷Wtåaãl1´Hêš7Ç·xÖNœHÏV¹j "!‰1E(iYóõ{¼ËV¦R“(‚šèëÁéçç‘G=üç‘oÿ„ë#Ïía]è%õÜ '×£Á À÷~àNHKZõÜ!vã½g½QÏ´žýIÏ-¬Ùƒ‰;*…Õ“kϧsE_Š}…ÀŸ ÝaKG8ªõ‡{®ôØ‹ê£t%è÷Ýqé¶¿¯=úíêh0„ÂÀãÙ5íF»Hhzä ||«„Þ¸ïZÒÖz ŽÝ~K:DˆA¯” J±`Qk¹¦¡UÒkoó'¥h„Š…5Ë5MšY6ðx9.£`•Å‚eª’y‡Ô½‘ïéíµ¤ÖȨÔ:a­£ŽhPˆßõË‹ZË5õG™ÝÖ/Ó2fÓý:-ͱ[ýnì¥Ì‚©‘y^€ÌWB/èu¥¾5”Ò¾ ?è¸ã—îXOýÚf‰àÇ[#k- ‹½–¸ó,ìÆÛó:2oR+­¥ÒFæù˜o„ì¨WV)`¤y"yöhXW¢Y®i4dµlìµöy“ÐCÙ&Ô"ª‘Z‹ýºöãrQÖ~\ˆ]™ÝÔÉ—‹2ÙãZ6äz6²Öµ$Ì 8iÕô›•Õêw¤¨Ó°-m­Ù!cçüz½vV{ݬ–²C¡‘›>Õ5ä¨& ë%dCNx-û85M²ùž\²fš- 87òhäùúÍ"Ë_…ǧ÷ÓLd†µ\ĉ$‘Šd÷·Ô4‚—ç*Ì×2űJßÍ~¼Â•Ö gvÞW†Þƒ–ü`CÇ÷+‘Ql¨²sB—Rd¹–†¾¹—Îöè}¿Ç;«ØlVJg´PšN£'‘†2¢{9'–Ç&‹Cã:ª€©µy£¶R/ò„ClÂÛ®âpE¡†3pETj·rîÐ"Û8´qbC¦÷žõG¤™ Öqº$ß¡ÆÔ. Clà¥éFsL4ŠUJÙJ’f«‘È… ySˆâ´ÒKtÎrx¾Ôb7E’ìhƒŒ¡öñn°µƒR˜e ŽmÄRîûõeT~'Ë‘|’‰Úpµ9(]XbJGÎUÈâ$©„8S‘ØÑ|GF¬œÂŸTm)R©äܾA¹”«H‹øYš7oÌÉ£TniQ¢Î¥oÈv@AÆØ,ý6™F™˜ü‘#ã~¯7 ”É:N¨­xoÌ1]ZýaF ’Ž B±H*­ Ðûz§*×Ðj͈ë‰ìHÓ¹Jâ¹Ðš.¾ÝÑ¿èìÛí,Ùªl•~z£¡äIáŽÊëúë0f2¼‰uA ” dG©ô4TëHw,»t ¤f„L‘VІlð×X´µÈ¶BK‡cŠ#>8‘…+i.ÏF„ŒÑn™Å\=!·ˆ…OüMœæÏáéxž3€l!#¥…ÓóX¤åó<Ír×už¾·xɧlg+Z$ò9žÇIœíÝ8ɨyuB‘ÒG4磪U¾\!;|ŽæZmqB÷9æì꺄{ë|!uk€` ZÙ 6’|D(ÞqÀQ¬–d׉w¡ÕÚ¦‹S:avÙ™L®÷ ²n®zÚxq¬g¥Ë¬(7’«c¯e ½+H‡¹ˆ˜çÓ¦H1óƒ9~æqø¸ç*Jƒ!ôRZ-÷ü(/@!ÅZF`–{αÉ7›Š®çŠÈà´Ð‘El˜› áZ=J¯ÚH.â4¶…íÔb|-o7öÉfíB¼ǟϦ§œŸ93êÉ_7—'7—œñ¢'gX56Þ9t‡Z1@ߺ¾žBÇ}pÖ}¦ã\Ó6&…¢U ;Ï;‡¶bCÝþ`Ó^òºá\m%Ñ\  Áïw`;•’Và7®¦µ¶k•†ºEqJ[½'S*ácQ¦yD¾ÔÒá6)’ øÃóá#囊 ™º«¯1c>6ÿ@–tÌô™1fÄ«&æšÉ†š3Ó™§Ìží^¼úü®dŠ’Ð]>OâÌÊx~ QäÃñÕÝ äÜQf‡u'¥¢p…¾wHZ «í¸°Eãè€c§rKá"} T+·óÄi3¤]Ÿúö©nE0Á8Û^g3ŸÅ|N-‘ˆ„Ùj¸X¢µ”Ëè+f*Ťkßì`ò)ÿeAÝ>ÿ°MÔ0ë¡­î ‹­)Ï÷[èx[O@b˜ä‘dê…÷¤Eº,ɬ8—à î²È¸¶äl⌠mäC'¨Óç|=ç–¼ ?c<Å”…4§õ¯ßÓøgø°Piãîm·›(ÊuaÓ–ˆ«Ÿ;^<ŠA“ æ5ôwíÒb¹Ktä¯ëøÎqð¹¼Åt¸Âþs±cšE¤òÑ*û„¸í/ ž¿Ží˜ç`*áÿó±é€•ÖsÅmÙœ„ MRÇ’™‚ui¹,X7ýòŒß®§w¿DØ­xæ®ÉèÚ@UÆ­e)•m/Ü]ÌÁ¡Ž.s Êe”š—Î;m³#| ‚ùà ŽÖ~8‘ÌÐVetx ÜËÈ'k=9Ý¢Úä)¬’'”éúwƒKDfŸß×t«ì^¹•˜$.àÏΪ¸xvll¯n(º†L-AÀ¸äÛW¶Û¼ÜÁW3œö‚‘Øâ} B|)*º`ÕlrcŠþ·ü;Þpäïh³)ÏÑ?_æäϺ6‹yç•òئ.a­š‰œbÅvášC¯—ïØóƒjÇ!€ÔEüÀ£s \¦u?½å~Úñ¸Ò‡¡ç ÃO2ßû‡¬Z¬óYz³Yñ]¢Òú¦Fô¯2õ¥žØ¦vbûeʾLæ§?€ô÷aüMaÀ2%t’:‹Û©Ð°(Ó%7•P‹mRÔó€ý`ì‘.”ý¶3ÍcŹڦ‰®‰97Cwç—L-%pðbnãÓa¯ fOÏ´í3§NîÐ)£bÇÝJ3¹ðdËOè¶Xþ?w}¦=Cu’õ<Š”Aãˆ?ÊŽ_ÿ+¥ºRj™àsšdéÎpõYèLÓ>ãÌfwt¡µ²e¸cšÿŒ;Ô¥…­aÉCZ.¤Ö|²:·™¦CØ ×¾9¨zfýŠ!׉àKyf{P¥víW; .b™ ·ò|DuÅFØûÓ*ò\„^w _Ú7'Ùd¸JùE9ÔêGiÏC«]»û2ßUM«Œ|‰¢¢Â•zduö•‘xR¼ Æiˆ‰Œˆ Ñaü·ó,³¸Í+Ü…?Íno0®.q9ÅÇ7¼Ú†°fm7ƒ|p_9cCu›ZjÛ¼K‚¤isÕù@ˆ' â2fåðK†„®|Ú$bǵüÊ7+{5×öEÃÇ£þ~{Z~çÎl^Þ†Û(b~k†Î'u1-Z±ñK¤×cá¡kRÎ\ã‰;î ~㽜?¸~Ÿÿç 7߯ggm¿ï»#PºýÕëŸôF'~ϰèbvôõèÿðv‚vendstream endobj 1034 0 obj<>/XObject<<>>>>/Annots 81 0 R>>endobj 1035 0 obj<>stream xÚ­XÛnÛ8}ÏW úRwáÊ·¦éåe½nÓHÓ´N6] À‚–h›­$ª$Çýú=3’|‹ÝE‘ÀŽer8—sÎ óý¨G]üô¨/¿qvÔºx²zùüîèytB'ƒ~Ô¥Œ/¢Aý!¥ñÑÆÇŒ^¼ŒŽ7¾Û1äfüNƒîs¼ðÊ+¦éÑWGÓÔëÒÕÞœ t•È6<‰[¿Ñ(-}ÐŽãƒ3“2›ÓÔ:J­Jh¢R•Ç:!¯Ýv>zrõ_® >íã¤u–“JÛÛ4¼<ÎÞ™D{ s¸bÓÔ.L>«,4.µ^ñgØé‰ßè;È©|¦ÉNáÄŒÉ`.¢•áXá¸\¥Ëú ÃþÅh<¤Øf“ÃÝÛÖ—óÓÎÛóÓÛ'„XðEÕ¢]P´¤Žú^e›ÛIôg]XW's‚”—(»³™ËÚ!F8í—@G& d§SdW¼—¥ŠÃ¥‰³ ÄA y Ñ»3ä«Î÷L½PË­ƒM´MU¬oŸ ¢À ïÈl¢Û”,sd*æœ2"cU¨‰I*Î0Ьî25IµÄ–ÏbØ S8›ØSY$pb/È=Ï:MùÝKI™B|†*ƒöàJkï‘’ÝîóÔd&`Gƒòæ‡ÞYu¾fÓFZ}ðÖ8Ú‹£,¸Fô8×Ê¥Kòø “Çø%}§+ºê<¸¥”FßÃf¡f•œ9¬éÍÃÛ~+ $›5s$){&¼òÆ¿&_îey,${ÐË‘-åìDWòÁ)>»Ä±’·­™¶¦¨È˜ ¥&‰2½kê2-g&÷Ðõ¸3‚3àLÇg0ƒpG5„?_…Ù|8?sÍš³ñ%/èàÛn¦róCœàU<·-§¿—açâ¬Þ.V˜—pÁ“2‡ø'ñTG _û§[c–ÿk£ñÅ!¶×Aÿl·u³C»Á5Qžy¹+És{¶ àÛþT>€¢N-Y´c›OͬtBU[Hò;©«Òu™k„éd×Þä>…Тy˜Y¾F¢Éc´+FŽiMµ ¥îŒjlïY,Ó`ž2桾c7&îŒ ¥j$8šA¸ƒ@žÎ­A¬›šóûy¡{xÃ2cg Y? AÅߤÖô8$Äky;DÝD+sA/ƒvÌJ¡õ¯i Ó’—B'¡ÃמkÃ*YÇW76Á:Ï*Ýr|åXh©Ã:€Ý/,庖Tí‘ÇŠª?qŠé­šûÂ:¤kaœ$›Å’.4ƒÈÆoêÞÑp<Ì-góº#­šÎƒb½ ‰·¹¨áÔ TÞ_}8ç_äÕ×X¸c2(.ªrùæ”°L7gX>З–ôh²4±ñ#â±b&¶‡L_6C¿~ ;b›âDnD™¦`…ÏiiK'¨­IñºJ£ï¶ 4¹õ*C4¹Ç„%÷¢¹Öá°¾×i5‡HdÁZð£Øa–Ý­o•_²c%ZÉS)ÒŠñÂÇÒó„Tµmù’‡2láìJ‹( §HH» ë´Ò¤¦#W†àÚ8] †µ)oÐÈÙ£ÉõÞ ¡h°U¡SóMÓ—ñùÕF7GÆØ§{Ÿ†í&€ÔóÍüÔ#ÙOåÃŒI˲…ÌUÂ’š}aN¼MË Ñ̹ïàôUgUz@dЇQù˜Ó˜ˆiÑÀD$뀼»¸¦w:Çx–d€ÎM¬s¯ÈÁ’/$D-¹ºEª§¢få%s±VνøjÏe<à×î›fÃu‰èö•nlª‡îŸ«†Îœô?½`4–\7·.'ä6 í^Mþ²%eà+¶aúW1CˆAÍÖƒ|%šü¬¢[yqȯ†v®n[¨x·ßöK°: ¸—La/ϯ"…Užx”‰Š´Òj W2wíŽê<4£9OÜSÖ붸Ĭ fæl¹ØEΗ@ÐpEJÏÝ‘«¥GCa?/>Ô¶±{‚—ã|scòAÿ LéðxçEˆý?Ÿx›ûιÉËûÎG¾ÂýKŽüÒ»3ëYäãX„ù†Ç”k7ŽôÃU @,œ êÅ;àɹÂ\ØX Kué~F¬} |¦„{* ¡ßÕÂslC¡¾Bä¶Æì{Ùðóy÷ßÌ`¬ÉM‡N›©í#"¼3zÁ¶úÏ£þ3þÏ ö :½î@ž>ëG'ýAõ´÷¬Ó=éô»½cþêíÕѧ£ÿ©Y¡endstream endobj 1036 0 obj<>/XObject<>>>/Annots 87 0 R>>endobj 1037 0 obj<>stream xÚµXmoÛ6þž_qh?,½[¶³a@š,E€¬]ãÝ€ƒ"Q6ItE)®÷ë÷”lÊu²­ÀDÖñ¨»çîž;Êù|䓇Ÿý›–Gž3‹iw©øô(œEN@ã`ì„䇸Ԍò#ßñðìöÒíg3ǧñ8Ä}:3³×sbx2—éÞ^â;‘µ÷3Í|Ç Ó‹‘çf+º×~@—‚>™çŒ"˜Mœ±e#Ч¸5ºi„‹ ÅS(úËí[µ‚àb+iº½/h~4µ4ãØ™Z*K,‘”¡Ò–¡Õ§¥µä’‚8hm¹¤Ð‹–m¹¤h¨doµ{±ui޼Ig1Péߦ¡««ZòUŽôº©ò!Í„¯MÅ!–«Ê»t¨;‘u­C SKg‰%ʈÚît–XÒ,¼ÎEÝcɦ*­µdÇx`Ø–¡±<[kɈÓ÷ÁØ2´áðY[Vl;[kÉŠ ÓA*lZÄ7ÐZ2´ãȉm­%C;ó~mœÀÑÖþu%›¤(´¥]ˆ*ç‹¶Ö"|ftËV¢nxµPnÜ«i݃QOÙ¹[2´M‚¿dÃV’AlÁ+j%£ÎÑ™é‡=ÌÉXÁ ãÞеCsÖ´«³$!µQ=®ßC;èy “÷A<¡Ã~w‘¨Ý§¾ ¿Ö"eRç]žÑ›–¢pÛU–¨, F|ʆ§’°’<$’ý¯ˆé¶­º2Xˆtbj–èûÚh¿ˆæINiž¨!¦Hý—Št…NÖ*7ò^ÇœU±õГ&ÔÞÏïOŒiÊE ƒt¾JÒ%#©(W°úʯÙIV?ô÷Çpó±â_Ü^µ_Fô‰W™XËý’¤ïçŽãÜŸèè{6}Os‘ü!kÏ›îyNÑ"P˜€á1Y0ZÕâ‰g,£5o–X×.)CÕkþÐꈴC@Üä†Õ#ͼ”|±lh™<Áh¡J´AC°Š2Q±ȸìp˜*Cñ]C•X4œ©QôfÉ¥1š,^í…xž7È 0T…H¶”`_š:I5Ud´oó.6c_.E[d v°p$Óš¯ÕÌ™@P„‹ªfèÊ•¨¤C¿ÃîšåÈ ñy± ‰p »¢{ÅAŠk–6¢Þ Þ×yG+eä@®Õr‡IJÚF” M 톊¤­@§ìþD×Ûwâ@ó Ð+VÏÒõ´Ûn·ß©2àw½LÛo&˜tù(·/’j(eæa™T­†¥Ðƒ $r•ú깞鲜Õ] »ª£u>r2=|3^”¼bÊ ª­kj ©nC–(¯Ei”]ßY6ìl}ô,›f•9J1(=º§!¾jb•4îR¡¯|ˆ¶Bº¶ZlŸhöÒLt›@::£&˜l &J—IµPI䚦°oþÝÅü|þ˜ÌýíæÊýùæjßs—Ÿ]9j(t2)Á2;‘˜¦IQ«ŒåÊ´­†B IM#<Ì‚§lØAh—2yDítwK$Wew»º,&•\£H&_ÊP)2žo4ðý” kiÅ>ÚåS¡ÍEQˆµ’LSò'vfžHvÃÜ@Sl`½ÐyºA\ QÄèï5¥~û|#žñôï ë ?ó¶2gÌL%Ã{Óšš¿¥À+ ¯Låôˆïæï6~Ðb%¤ÄÑ´Ù¢LmÓéÚ'Á˜X¯r#yÃçÒ5>võ4@Þ<ׯº€€ˆs6ËF}7õçx&ÑÌ£çj¤€ÝÙÚùþ‡lúÉöÊmeísÔí่§¢yeÚÛnàW®¢MSQ룧w»J¾ŸM“ׯér‚?Љ ÑCV¬u{bšö‡’ŸÐÅÛkgÏô;ÄK:F¡ _Q ráE*/€¢ó{àY[س?Î ½Ý´H¤DD/äÕíö¸¯^²#ÿÁ†|ùyŽä½lAíØ31×ÇÜÐû2Œ?EûíÙÙ¯tž¢Œ+uR5ôñöFqI½wcѯÒUµVgþ¶Û÷ƒ— ðãåö-â%6ÿÔOˆYÇJõ•qðÍ_ÔWÛ êÞ®#×÷B½Î$ͪ¹ÞÄ <¬T?ß}8úe_gendstream endobj 1038 0 obj<>/XObject<<>>>>/Annots 96 0 R>>endobj 1039 0 obj<>stream xÚ•Xmoã6þž_1ð—:W[²•÷ôp@’uÚ›ÍÞÚ½íá\´H[Ü•D­HÅq}Ÿ¡dÇrì=4 …çå™gFùv4¤¾‡ùŸ8;WçôúQ.ð{@WÃà”΢³à„†Ñ0Àº¢9dzýhd£á >Ï¢ó Âß—ÑZ ¯ £O~½Ö¹ogëÚ–¦ÛÉQx/h8 É¦_œœÐDz°wŸ §MnéƒÉÕñäËÑ€ú,*»7ij–OϪ,µTo·ŸJ©J,Ô“*_½=KóÒd,ÑÚúgøN—*v¦\ý‹7ÂûËmýÈ‹ÜMIÏ)ND¾P–– ~dFK:—:NI ..ƒ‹3êãûR†Y–…+|]'Éu–][K?ƒß©óóhB!ý2™| ‡Á°Cp2ŒNN©“8W\‡ár¹ 8µAl²Ð?$.K;Ôy4ê4ái0h¹1íB²NÏRõ=ŽFt †?ÑgdÓ,½ /L;-»ß{SºÄ-ÀÂW:d†å"SþÑgµŒl*JãÃÅr²”¦(5°TŸ¶Uœ0Â\‚D›yËü¥š!C%*‚š‹žué*‘’4™@ŠcºEºúSÉé@5įˆw)[YíTøÝ å÷aŸãR±¹ÂãÀ;£¼”ܽ¤ÑÔ—¬hçFš­¦b¥óE Jˆ²nÖzP‘*ݧáÞFîÆÀÔÄu´½nIôéQ|¯óê%¼¿ Íõ Uˆ¯½¦P¹8\ߺçÔ£ˆéiL¿õ6b0p©)'~Ù•…[PÇZN±\3çy­Á@º?Óùô¸ŠÑ!ª\ÚÜnýƒÆNí©]”OỷlCÕG,m3¥ò&ÛÖ!Yû¬èq=4Á_S) Â#ôKeKgÎ0å„ï"ûmn§Ç@®û앦t"w l ^ÏWuqp<;7èãͧ›ÇÑdôiÜÁ%ÔД’LªOÜØFØù¶¼æâÙ”_)©‘(øÎED¹AD… Ô øöYƒsy¿GÀ 2ÔGæÓèüÔ1€àïÄÊu+k¡¤ïᑉ¯Â'Ï–ß*àA¶3þªã* çTîóÒÐ3Š{Æ÷…Žà*4 àÊ1hw`úŸu¼ù`x²îü`atþî{³¸oŠíí\Ð¥g‘VðœÜÖõ¬n^ À¦ 7¹†”6aÚý/ˆ1f’K­ibR*Ô7¬¯úÖ̇÷‚ß” @V9œ½yÒè[ Li_+æoy>Aü[žw>wjª÷ìÊåÍt¼vù KÜ%*þÊCÄw‚ï[ú!#к­òÈï N»|wçÃÝÃFÝpÑÒ@J†£÷÷áoïï·Æ„0 ñ:î1ª±Þ"´Ocö×2›¸-Õ[‡vý+÷½QGï|S:äß¹ ˜Éw°¦‘ù~Øô8»Rä¸n«ýù}X+ù0X uÏ¢^ÂW°iê⨅®‰gˆ !d=ÔQI jnaÆZü…Öçßó8ŸëÑ:\o,çjR¶l`Aß ìÚáTƒ¹kã/ƺ›T û£¸›ŸV6ScÝŸ^)c „%(ÖwкÆj»,IeãRÏêéï€wÛíÃ6“5ŠÜ¢ ú¥Ã†/T›øêÖQ7"Ž`»5Á ¹ÎµM@˜ï¾TY±ç ?Ö,ÌPF'¾­t*Q¼aUȦIƒpà°Žá°pb&ìA^°ì›Éß¶ÝSïÀ-ªeQ':.5sndã¹-›>=ünŸ^GXy-ðµ™ÁØŸ=»ãRgô‚Æ!‘¸Ï'wÛ´°;ƒ½ò4€Ì3 =¡›e¾‡7˜‡­wPÛÜ”°Èjà´. D6—P­Í©õp±ámG²¦GþÁ˳Œ mÓo JÏæ¢èë’*E¼èÖìÜ2dC~ãæ¯ñâ`&sšß³îc,³9"³ Șj6îôX¾u¤Yà['b¶ÛW‘ÎÙHªòØó?ÓÈÊ%Œ³*ç×Õ=§ò£.À¤„4 ž³S…GLðµ?HùÖkø½–Õ͵JeÓôƒK pñ¿aÜ ‹ÓY{!î뢽`û<ú2{í®ƒ+#ßH—ºÏÓí¾õo¼n¿ÊÆ}®³Êî®ÎVNÙ]šEñrk}Úý&öo@ÇôxçдûIÍñž^Ö;Œò+y¿‰ÎÞA//ü¿>yÆ m¾éQ‹È<|>)ž>kÖŸÑ)ÿïÎÂáàįžFÁEtR¯OÃÁE †g¼5šýûè/Ó¶x endstream endobj 1040 0 obj<>/XObject<<>>>>/Annots 109 0 R>>endobj 1041 0 obj<>stream xÚ¥XßsÚH~÷_1å—Åg’ÀHíCâØ»®ZßecR®«âeF0»’F;#áeÿúûzF‰@œä JHšžþÝ_÷ð×EÀ||Úo”]øÞl½ƯÏf#oÊnÂoÄ‚.Z°ä‚&³À×+aàMö+>;\j&SlõA;ñB<¿9fB¯Â7ö½cyj¥-ö˜U[ê§_,i0›àš± Ü?¤ìé¢õ˜±iwmÚ^ ¢Z[Ï GoÖZm?gl䓳«íg¬NfðêaÕjëOOûÈF€Þc/h»èÄB+b>ïÃ{úl‘ êÓpıuÞD½…b+ÁLÚr#XªÖ,Q:ã%‹6<_ & I"¢RnEŸíTŲʔ̔ª`O}¶âÑŸUÁdÉp]ödb‰ba¤Ë+ÆóŠdj+OS¦+G¥1ɺZüqá³)÷™ Ó±)¹.‰¹Ý¼V¬TÄS³ÊDÁ×Âc‹ ô—çLüͳ" çrWØ{-"¥cc•1UA`"ÁNæ–,/ÎX[5¼7ÁˆT±¿P'„‡þt ´ã¹ý²Iè“À›¾ñ¦ e¿Ü-؉6³_‹ÃÀ :V=ªdšòáØó¯—½He/å*o¯Ÿî®o#5ØËFÔ³§G 4¬¨JÊ•»¥*â)Ûp³XÛ*UÇ?–ʽú'³#y¢Ré2ª´±Î£´BRuï1þbH¼W¤GæöÏQf*)š'Ç;lºÁ¦ã) á5î©\‘·cª"­Ö27Ç”¦Z ‹¥0Ë+¯»qµ:´£¯†ö‘j­˱v‹;¡7"hšÌ€ëQ¼-xÌ‘ÂlµsA~«:„}B¦$;q¾/—DŒ”ÖJ•Ë%©òŠã¯§0ô(*¤h"וFaÁ:ªhÒ,B†Ë&pß‘ÌZKø`9å<ñY&;#Kq’‹«KGqi±ªã-O+ TÖƒÑFÉj£x*S(w´ƒê+VGAÀ«[©ËŠŠII­÷ªZ`&4ç[±:ÂVì¸éhq(‚n,ë |5o¾›»`-ƒv?à=kFm#SˆH&2b"‡'Tž!7çcìÖõ,²Ûa:±¦74’ô~Së{Y§æK¹¨@0±H*4,Àõf¦C¢ï›üö_´˜ˆ§F!|”’Z¤œ:¦Ûn!Ó2èÂÕ^s4†Æí‡XÕ!ø^óh€¯šwù|i+•ç<Ýýƒ2±¦56™|oç†s¢!4dõpÀQ•!©'ÐöòîoÀužçÑmk ¹<ÎtƒHË•KuC9¼m²>âÆÀE¡²î aùõÙ¨¢¦Q#‘"Ÿ°¤¤®Eܳ¹Ïåà˜í ÿù2&8*%ê-È‚Ef€dÐT©tŸ‰r£bûVËôÍšû¿*Ê4Ñ€r£2t·Ú•ÂÐ:RͪEfÙû nƒwkäýòªc-~ G/¯Žüô]Qü õÊÑœ bÁ5¬)‘þ§IŠL=Êu8Ý6™}çÒ“(¿¦Â áƒÅ¼oR‚8Y€¬qÒzQ£÷h\šç×*[»Ž°ÄÎt!RKÉ.þ]ˆ´%‚ ËÞ] Œæ²lçDÒlöe©¾bå»4U/ õ¹ œ±úñ^cú› šbŠUþS‰ kK³\–Q÷NeŠ"aŒíævQåh*€™záXáOb+ÑHˆ¼žüôס†òsa¡%´ö:€ÿ#yÓÔµ`ˤӔѦ0}K³±Ç¼ü£ÊŠ&†güôQ+k ÒÌÙûJ¦1â3´~£B¥ŠAËÈ0¼á+”ý9ï:Ü9n½Î0TôÎöCÞ˜/ŠÊíZP‡µ»ŠZSXjd&S¾OO³çúCòƦ'§Ôöÿ­Ø/G—MVØ?‹r‹’ÞÖçK=öÙ¶©–)ä·¤üþQñ2iFýýÙN°<çì'œý€iSSµÖï3;Ü/>öÙ#—is 6£°c$“ü›Cra¶ÓÑFªÓB(VÀ2±åzïßý¿H¬9;çÐ nÿóèÏü9©ITãÐáhNŠÔËe2à´ÿõ–=Úįˆ ð;ኡ9¸ìk'ÝØ[ìƒÇÎTWõJuu:ª‡BenÔéàвGGñ,³=Ý5®³c#Å.‘m™’É"¯¡‚rç÷MÃ9á}îFd+Ìb[1XD®Ë5 ñmNU¾®O78j n¤ƒR£Òm÷°‚8ßd†¦x{µxe„èHSUI§ÝÃ$¾­I~; qŸ™?¥Å;w>/XObject<<>>>>/Annots 127 0 R>>endobj 1043 0 obj<>stream xÚ­XÛrÛ8}÷W`\µeK¦Dʊ׾8ÉzÆS'Ëå¿@$(bM ZÑ|ýžHI¤%Ídv+Ž.D£Ñ—Ó§úv³1þÅ,ñéòd½{ö/f÷1›žÇÑ9›&ÓhÂâ8ް Xáñ˜m_á7Ó mIÞD ¾¿Ýˆ6ZèQ'øä‚Ò½K»'w”½ŸŒ®!:f³æ_$6˼ x’V…€Ørm¥Ã[m› fë¹uÒÕNdl%]Á\!X¦—\ªÑ³4®æ%+4d_ ¶Ö5³¢)‰ nJ) Ëj#Õ‚]=Ü9î,KµÊå¢6ÜI­¢×³ÿœŒÙY ²A+²’e “yæOël`¹,ã+K‚Q06" ö8Іɜ)íX®k• 7b´þøšq•±jÕU†7&q>ð9·¢±$ö–xW9¬°õrÉÍšI•k³ &Hkkø—½„N^®ÿÀ·R/¼mû=";$™nÏóÒ–qÄÜòghŠeÒ vçe"— çk¯4Š'-l.¦›ÁGi>B]XíƒjÀ*n‡@÷Ë0F— ¡B¼»!²UÒõù-t]fH3ÒÀ¬\Ê’$ËÖ¥cP Ã,tuìz ³ÿŽsîƒ^„³1‰Ž„KGM²F{r{Ú5”rCQ$¯Ú°CIÅ]á4‡£æ=ÂÿÓ(êºú¥ øÇì’]KC8_WÜZ¦áâ¯Mf‡ð›´ à*±j÷õÜ푱s±JÑ’Î·ØØkG;nõŠUF§fìêz\—µ-Xð,4aÄ>1žSV“1•.•Ÿ}|ÝWþk½¬—€‘¥H‘—lL2g[ ¸±/…’dz1w´±k*)' ËŒ®Hsª®ÆFðí²kL]¹žd_pÜ û> X3ËRX¾nd.·*½Ë£ëw ©½@ÛÇ®±A¼åÀ¯¾6ÖlÊMFE'R^#3¨†5[+©œâ‘a¿Ìf_°å[-õS{ö GH4¥ßñáEÞ(­wB+ì»'YýBy=PÚÃcïaçÕB¨¿·ûšhéG7~VåúoÙKÿÔ^ÏÜG3yK‚T#ì&÷$¶âÊ1§;É!F[2-šrðymÀ¨/åŠñÌw¥.îì ´¸j„û Ó•§\ÝЫFGQ¡æzðÝ´ýÒ9†[Wp‡–ì1êÑçñœã[V¿—œ~Ò‹k¿rÚí´¸µ{:»Bo\‰9hÒ<¢}ËvëJ¦èškV £¡=ä¨Ù4ôÿkúôcñŒŽ³¢¶ƒOfí|Ù¬´y²~:a¹îrÚ <è³Ðôj"–6s?/X­ì%‹¡úacƒ{èÒl^/Àë Vç<Û-ØLPh°¼À«Ñ+l„à„&êÈŽ8`ÞƒŠWm‹Úez¥Ð-j„[V«ª„r„¢äÀ̬3„4[èæà6¡ÞØp/AE»¢d⟋?† ”cÙÇÛ»NFÀº¬=¶œ\Š­öLæ9¼Ào¾r ™µ•@ ùÁ+ÇíÝ'­ŸêêPÂY+|õÄžÅ7-ô2r·Ÿj˽±úèlô^¨´À¥ m¢â qÈrx©©… ÇqL¶{‡{ ¢‰?úŸ¬½žøË]Ûz€ºü³;ž'…F¢t²žÆ!!âYfÔ)›òÌ'i«bHÅ™–2}j{Éic™Ò«SBÇ“Gn'pÓ§fLDÞš…|x,£„8ûðó @7ƒºû¯Ÿh)¸«Éy¸~Ò1J|w„HœWRðµ¦\iãÐoßS…•”mÊ3>÷ è%$êò ¤¸Q²èÿôSw&ÐL(>÷• ‡(2ÃC¿l{ÈÇ0ÖèÕL‡Pûø]#mï·(؇´Ío%-ìC„}Žqv ÖzöÅdÆ1Ç4ØHÜÛ6éZ´šiˆ˜H›J˜¨ÒËÔá¶I›ºlËxí4¡>Lf®í)®óµ7‚;=šöµ3ó…FDÕL¿ì𦓀èˆÜß›ûÍõ³èû‚¦îº¥Ÿ ÝJ³´Ð›.;²gìF¥e‰]76–Úè7Y°ˆÑH”è“~cUĈN¤ûúê÷³Ÿ‹“ñ1 b£ž­ŸoüRYgj_/ö‘©Ñ ­¢oâãà^Éï£ORÕß1mâ¨}›Ç…¿Í˜y©ãA* ¡¸Ý }F,ê’dºäµj†ž«ð›JÒnçþ0M~$LI‡Ë[6úß9´íŽ Á§Ñ¨íUºŽÚX½k'®$Ž&绤}ƒì¡.>/XObject<<>>>>/Annots 130 0 R>>endobj 1045 0 obj<>stream xÚ¥XmoÛ6þž_qȇÁlÙ–_â膶[· í°µ.†Z¦m.’¨‘”ÿûݑԛã4ZܶIï¹{îHÝéß«! ðÿBû%Wƒàn Õ‡Úâ7 Œ&Á&á$áoüP6W´†³`vve4 ƒ¡_ ¥é€&Ïl@õñùg+{Þ"tÃi9ˆáËUm˜ÀxÖX« qß`ŒëkcÒ:;QÛØ{GßµÕÚ8p2j¬ÖÇ Œ·èXµzâ'v:œYb§AˆãÙ)E45#vÞvn¥NêU“é3 .B4N@Î.Õ£úDY8~nÁfÈ9OέÔsê‰ªáø¹›Ÿç0έÔ3º¡êÝâªÿáŽ$ǰØ%…g±¶1À"êÜßßð9OqC&•Ñsx—‹x-Ò-°t³Ìþö«7‹P#bœ¾Þ¬; šs0;Ž›X|ÔBãÇFwá(sر=G‘=W,™!S kžñÔj—)I) õƒ`8*òêvByÕÑ<Ê•0GÈd,¢£“:;N`ç¡Z“~“†Ï-v’kã ˆÐÃ×À@f„6"B+˜a°bù’ªéBÆ•kX!°’ךlµ†Ær s +ŽÛ¸2êFz+†Ö ‡X°|ñ4eŠï…Ì5’Mã‡,Ph#šîè´ÇHXQp¬†„‰2h]ÀßÞ«~Y|úÛò.l”L¬t$“„â‹§së ÍodËô15ì–ý ²†K¢h©D …9ë³Lã£#÷ýÏ÷À"biy3§ýÃ`N1CÜ7êA:c`²RY =Ô·Û7 ’$õdn²Ü@Ϲ–>hø¾ÜंIbÒÞóêÃRýaÇ1^™ ú ÎWf“SØÂì¬'kIäõ÷B™óq'Q6e‰‹¢æ1†Å9S±à Ö˜{ÈÏÛ?¿àŒÎ{6<>à:ã‘Ø`,&ø^¬ ¦Œ•[Ãû‚vv‘/X³Šoùc†E>þÈc¦GŠ™"…+9rŽÉg|`©)k_dÚ¬(J5*6%,£.ëeß&ø*>c kZoW‰¯9ÍSuMƒëùu36$™Ä’,Æ.ze¤·zÔ:¨ç‰âÜ÷Ø…¸ü8ìD´£"ÝPÔOùÁæ j ¾~þø4mËÈ5;·Z~QÙ]Ú=·ÆœfE˺zçòŒVÁ~zZWMZm«ãTš]FQBp› R¶ëÚÌ·atMºZUæZ±7Ÿ>Aïˆ Ò›¿ðßiæ¹F E¨e¥N•¶4ÈõYG­8Š$¬ÅVØ66à F]›\PèØP×m¥ì4„g\²ÙK2m}Á“×0îyÇ–S)fÊÕ¢aø'7†S®Ñ¾ˆc¦áP‹=·$b»36ÏÄÍžH,âhõýï_ѯ©xìiþˆ©ö@¶ÒEvšú¨ O´×¸ÂÛnƒLØîžÔ£bòó:¿.îÆ`yãu¸—4!æÄâioOõúˆ¨ˆŠ#ì?¸·µ·$ŠAQ©Xú×ÒÒÐ-O¯óGegL6ï÷‡%6W{T‘}îS¾_¥'éÝþéMXm¨‡Í7ã\ûöºÖ¿Û—8D¹°ì÷ÜA`•÷‰Æ ž byÓ¼ÙÞ¢F›5üâeØEij“›ÄzØy‘ >†çÊ=Ÿöx'°†<¤þ}Ne½ÙÕcõk®M#›¼g >ŒYuWë9D;–n1•zΰk"çú;?ð´ð÷οœM‚Élf½ô&ܧèE[Ž»ð¾A9ùôÙžXŸåát„czsfýá`dgÇapŽÜìpÜÜöÃÁpBK?-®þ¸úî°)endstream endobj 1046 0 obj<>/XObject<<>>>>/Annots 136 0 R>>endobj 1047 0 obj<>stream xÚu“ÛnÓ@†ïý£^TA >æ@‘"HHEô0B\¡µ=N¶YïšÝ1VÞžÙuR©¨õam53ßÿïøO”AÊgy¸ê.Jã”#‹Ýû'¬+^—˂לo‹ÐF·e”ì*ÈR([.². (›Æ‘zv êß&É8Žqwrhÿ¢å—ÆtBêDŒŽ¹Ë3îÕ»Îh:lîï¯O(ìæ×f ~ Í ÚŒÚ¸Wå·|óØòuÎ/ÍìöÆ’ÁX{ÔhaR3¦P@²cZk: ‚o'ÉÚA#H@%Æw-•ørÊŒs0¸5I½2º¡>€2¢£ád “¢¹Gb,€ÔF;Ù ½Pøìаf”‰QjG(šøœ7 ÝB,Ί‹ÿë¥÷¶ULTš=ãwo׎ÕÜZ32ÔóÿžÍ VtHÌâ%!± Þfödû3”fmå~ð”,©• ç^ŒR)ʨD¥ÐgÚA{Â'b‡À½55:79œ©&²>Ž V²>z×¼B%õ®&%À{zuña‘û’[ËVqÇÑJ"ÔP^òä‹,j‚Èþ21/9?_{AÆÎx{áýy³ž¬éùj~ønγ·J³À|öóŽ7V(ìœÃ‡'î ÝÀ4¤<¾r¾ZÆùÂÿ|\á&ÉÒ"Dy¼Î‹)š-’täi¶ôŸ>•Ñ×è°endstream endobj 1048 0 obj<>/XObject<>>>/Annots 150 0 R>>endobj 1049 0 obj<>stream xÚ¥XmsÛ¸þî_±ã/VZ&%J²®Ó™¦çø^ÆiîlerñL"A 1I(¨—üúîEJöõÚNM»Ï>û ½ˆ!Â1ŒÜOZ^Ä,ÂßÛ‡^AÄ"˜Îç,†ÉdŒïɘÍA È/"6ÅÓþqs²7žÅ,éìý ó˜ymîc±Q³µ^ÿàVÁ¯þœ_ÍglÒ‘‘LoðÕ¯Ý$øèB‰Ex<ü@_ ™"0(aÒ¾ðèWb¿2e³æ=¬ŒoüÊ ñù÷v¥#mÜ“6N:g’ÎJSCO÷Ä_ßÍ!Ž`‘£k&l>aOY”Œa‘9‘¸–Þ}~´Ü(Ô*—…^ñâðMh“ ¥i]Š 7HU½Y|y“Ó2ccÒó6(z;MØh>/XObject<>>>/Annots 193 0 R>>endobj 1051 0 obj<>stream xÚÅX]oê8}çWŒîS‘–HÈJûBPÑRÊ…´ÕJH•›ðâÔqàrýŽ>Ú[­v÷Jf²ÀûœÛg&ykX`âÇ»úÆÛ†e˜øÿ܈˜† ®ït»þî8†‚²a.ή›Þ¶–gÝw¶oà[FVu:¾áMµ=²lpøÚ¨çÕ¶ïî»5:®w^¿ç~ r!ߪ91o}°Lˆ–è[ÇèzxNë8%Š*ZEñMð<—DòÕ’¥HFÒÃw*À3:È).·4CƳfôgCMƒKsBñ Gá´N@-·cØŽ‡@çõcž-ÙªÕR0AcÉv´hó\õjõö°wdlBË1ÕôÄë‹5a)yEž,¹¦ðqy¨\XÜêï¢ ýb…¤ ¬©P{&×@¿‘mžÒ}M ¡KR¦v$-i±h5ÿBÄ®ˆL¸¤?¼ˆ#8-7 ÙŽ ž©€ár‚x’ì9dK%ÆuqÉž¥)î_ž’í$TäT\`¿¦“„e+ì^4%OS¾WŽW›-«âvtèך¹P¯‡§'ìß¾¼¼„“§Ip¾¼|ùäh§²Œfa?=…sMà>ÀfFSl±ûa‚Ìè[‰[’€ä°%›Ë.ì¹Ø,šõA±œÓAñºõA9ÅÍqOAóÕwìïN–ušÑòªËƒ3¶ëÁ?(ë£ïˆrÍC.¶DêŘSu„$a“ù˜óM™ëÄ`b@$Ñ‹Ð_1½£ø(Yš æLÒß–i¹ã… RF ªÓ•@IVÄó„HZÉÄPðí­àû‚ ݸÃ2Mÿ D<1ºÿ¬‹>¶ìfÛcVú¨‘S¥‹Áø“NbÎ@?jåk)U²@A/.‚¹¤D–Bå/ša¦˘ÇÔ:¬z5AQeq31Õ¬ÖJ€H!k§®8ß°ü¬zC®ý<qL‹ê<Ó׈%¦ò ƒ‹î&xЇ,=\™Ä°**°ÈøÌæÿb2šI‚×B¯2õñ.¢ÌÖ i´ÄÛ~ÃjQ'ämÉÒäA¸8h¯*°͹ڱædGU_QÝÔ-ž±˜R±eE¡Ê{$î¨8ðLçuž–bEõ•ˆ×ø4‚@3s‘è<1¿Sšß’åéaYWÖ)Ãõ3Ñ´W• …f ¥dÁ …M7îmQ¹AwÀÆUvÒ¡{S0kL Š^M(O$eÉ]Mû<ÑêN4¿×ô¹ØÀHö1{ÌiV0õ²G#øãl|]4• ƒ,^ÿ\…©Võß=„ø–Ñ3»ÿõíšíÚ†çøõÚ–Õ¶L§êît Ûî»;mÓkÛ¦ÕUCaÔøÚø Óz8Zendstream endobj 1052 0 obj<>/XObject<<>>>>/Annots 251 0 R>>endobj 1053 0 obj<>stream xÚ½˜Moâ0†ïü Û ¥”c`‹%aÑJ½˜doƒŽ¥ôׯʪ—Õj?<E‘íøñkÇãyóÒðXÇþ<æ×ÿôиO–×eVÇÖ´ú=†;Öß1¯Ã’-ëÞ²~·Ë’¬n`‹Ò«ÕrúXžb(8r£P_'ßïÏ_.u'Þ¥—f¿U“ìêÉ¿í³sû_C«ÖM¯noakaö5SÝD2?Už«£»…•ydB«Uò,a ˆ€3¾æ(­´hÍwàRØQ!g›’BÏ|m§B‚+ bYȦjç¹01pL÷±A»l._ äE§( ãt¹R•Á*pˆ˜ &ÈÓgÀæj—Jÿ®5`Íîyì“å(L&_F1›ÌY´H&Ñ<˜² WË üÊâQ²ZØkXU°§«¹2 á¥Û”† ™"p ,XdžͶÀM‰ Ÿ®§ÏžM¿Å¾Cn_Â{TGmƒÓІ¨Ô%Né…Å”´:0’ç§7 ª2¤zÞÝ#¹«" %ø3œŽ 3RæXäœ Z¡k…‡þa4X,FÁ2˜‡#¢x°Ò0®½Þƒ ?MœoÃífK(É9×Bf6¹Ì$^ ;c. 3þº´&ò!™M£Ò¥Ë#pÊžäCŽ ñ^€g€Ž!3¥cD\ÜiÊ] QÒìë-î4ä'm‰qk€g Úƒ*Q“ÈR.¤¦Ñ¤ ((=ŒH¹õ-+íÖÕVÀs2E!­>â)@±µ™6‰ a-*?K Õ¡À³0 ÜÏ$ ‹7 ŠG™+ž‘À¢˜‚rñ˜$›ËæÂ «Õ"™?ÖsQ¬Ó*öh³|MD«}«úÐBrF&É¢þœHóÎ(ia^jèdÙ òIvøø¿Ó 4øàÃÝšôîS%·bW"¯|>ˬe´Žÿ;è¶*ª’šèßú­~wpî×óÛ^§[ßôZ¾ß{/¾iwúm¿ãõªªQÒxlü}BXendstream endobj 1054 0 obj<>/XObject<<>>>>/Annots 315 0 R>>endobj 1055 0 obj<>stream xÚ½™]oÚ0†ïù¾ì.òQ \–AH4Ú0bÆÍ¤É$‡à5µ;Çد_ìЭš4Mªt,¶u¿ÇÇGoÈ^@üöÐ~‹§Þ„ö|/ˆˆïùíŒ7U‘~|KŸÐ‰†dE„–vA;T\Ý•å”iv§;ç{yœ²s“í6¹fºù@¿÷.Á^lÄà5äõÈ3» åÕ×p8"ÝúïÀ¬¾ìú¿É‰<¨šŠ¢>” J°zÁÅc“ŠLñŠ‹ Í¥@¤ß³ÓÃ6ÛMåã¨.®ñ1œD6º1'ˆ/É ð-¤©'‚, _ÑJn¥v£È¢\Ü¡£¨%+Þo¾²%«]T‡Êe/s¶‰’Ç”#E:'æ5àç./€ÈùOp”¾?@½v @9ê~†¯éœR¹j~"'æªÑ­õìœ'"È$,®Ye2Ç22±V5nA,@TzŸíÖ«… ETnö2ÅLÞº„Òenq±T¸t$ê‚I—Ø „Þ/`%þãŒ!Í„Є© /õ‘¯ö˜Öµ5û9¼©2Ì& ÏukN0ÓTÈZªoV>/XObject<<>>>>/Annots 329 0 R>>endobj 1057 0 obj<>stream xÚÅWmOã8þί±B‚Ûæµ-]Ðñ단EG»t‘Nn⤾MœlìE÷ão&i mÊ]{:XNëñóÌxl?c~ì9`ã¯nñxñžmÚØ³l²Þд©mÖ±uñ/ãìý6Ú³z'àØ0 ¤åÖaä0ìñ;ý›n{Ô¿í¡?€î·ÑÍ9 ©çz0<ý‰žœúÂS«Iž¬Þ—9[ý ?ù‡Ý'±!÷´Hä€Åü[ ]Òê9 ¬Ñ2iVˆ½w[ðo®h´áT|µŸ÷D¤yöq¥/èÃG9ì‰Lévå± ñŸà÷–E9W?Áq/Éb¦?ÊñP3=š¥7Ósß?à ùMòøN‡yüίØÓ`r~ßÕB¿»›ÂÁ(cÞwîcæÔ¥ˆ…þ/þ^”Øp¿˜'`Ô {оüÚéî ¸}éE¹Ïÿ—š.Ù/“•´d\Ìû–g · œ–¸é!8¦ýyedÝt>Cd Y¨àà Y;(Û«+j;j/. ¹†t—H8_­™èéÅÜWÌÎ+ó`¸fn® Çwókô8Æñ5+^Çåà2åŸ`ž£}ð©™ ô”Ã#ŸÔ Ð) QÌDŠgx¬!JÂGƒN€IÍž¹¹âýÜ%9xLB®80ò(‚”é)e±8ø)ì[,³0‹¥Ì›r‹yWÊÄžý71¦IeÅ3/‰'Br¿n‚,g‘JŠè‹eó!Ь%Þ@0Ñ’sççϰSx…ȾFêó”cq•!à–󙿔-çþð†§óxÌ¥ô3ŸÃdçcmL+1á¡Ö˜“ŽâOÜËIïLQ¤ø°\26‰æs8]ƒÎ·2ÌÊ|x¸$ \„Xgœe¸ðÁû–„i’gÈ&U¢M4î®4t˜ª41nÈéVðëMð:D\ã-JmODǹJä³Ù6`R*˜†oƒ¦c^EË<žà©ÃµVϧ_ì Û>EMTBzœ“–½N5Þ˜ÍòTóï NÜØe^î£yTa‰wd±Æ–»-YŠ­‚$‹»f¶#m4* IífZã–‚”òÒªs¦r‰æ I„üúvé1Ãgøk=Š~@kŠG—ZqºGK÷ªt%̇ ‹˜ô¨>”¶*Ö¯ÒLeS':I"E¡d\%ÑÖ,äT@¡h*¡¬|›'õìeɦZ§>Ç×E‘nE'å¿Öˆs¸(J(BóŒQÉ™—l¬èÊJRêQw]³U?)¯hNÃrìzÑÝhš®Û\vÛ-˵&™º£½ß÷þD‚{Sendstream endobj 1058 0 obj<>/XObject<<>>>>>>endobj 1059 0 obj<>stream xÚ•WmsÚ8þž_±C‡;2ul0fú!—À]fBßB4G‡X€/¶åXr€üúÛ•Í‹$½´Y»ûhwµo<Ô Šÿjàêÿ“ð¤jWqgóHfô õs|6›u|ºøI8L‰š­Æ>áþ‰ÓmA­ ý)¢_ rßÓx¸3©ÜŠYóÓþ¿'U8#.¯ò7O¤/"hÓ®Óý W i_¼Ï9]Íù:‘â ¨9‡@Ì`êâÁJ¤°`‘%€E,X½p»pÈ;ø"¤ôÇ(ðÌ‚”˶AÀtE |¼A7˜z¦ùÁ1®î†kªâcL% 〷a`®ù”¥Ú#Þr?~d>Û:ü¬îætÔ dê×<íÚµ÷Î:nÀmPl&¡<RYe´$b!·ÊÊy-ûr­rÈÕ\xiì,#'B­7¬2Q ”ŸRž¬¬òDx8^).‘-áSžðä)%Ùü…Y¶‘2«,ðîCUwWÕÙ‹û‘¥¿EZ´ãÕdM˜ò…U–+‰ÖÌ[@ùÙOTʲ¿ÀÕ´Ïw¸<> F(ØÎ `丆Aw zý`ä£ñ:Ø“,¬ôðÒK¥6K8‡…¯æűäÉ3Ol¸CŠä*`ó#©’t‚êF_à[çòº×±ÕRgÒc$0Ç®'"šú³t}üœˆsölÆ7åhŸR?áÞŽ²ÃÓ·òj–kÕ­ 7JtÖH,¢QŒ¡+0±ýîn”Á• °¦ÞeÌ&x8Šß •Jø$0¸œkú‘€¯æ™£5áØ š¡?]Ý]nHÎým×éÜv ÊǹxÜÍÍuƒ¢ ÚÔ¯ŠvëKè^~=»úܫ՚ºD ”é:bøX*–¬µÝ˜̂½wènoÇÄsý Hp®^7m@q´)#Hb…çLaH'b! -øyä«…HWµ3·è˜C¸C¸iä/õ+–„0ÞãmþL¤M†ž^i¼ïßn«ü³ÓÇÇ[ÚsðW¿ÿÅYÚû×ktõÿ…zlQEQ“›Œ 3D¬ŠÌ;g˜Bz´€¯ú¹InŒCÆ+B£Ò–QELo?1h*ÁìÂJ^£ë©• +;:èÍ«@Z­Ö>N6×À–8SðÄ$ © `§Õ$“gþÁãõb63¬4W*n;Î4¡Õ<[ 'JGð^Á:µwzƒï”Í‚6Uê‰?˜C? †Dб aW·@7„Ò>ÞQ¬¨Ñ.”2q²qBáhIÍ-¦ÚGc®Å©Ê݆›¨}H§ÄÃòHØÀo §º6|NUûÇ퇇x²×·3åaÈã°ìîô¨Åó}„¢Ã†•‡‡}Ïp]÷;=zʬ³¼Õ´ö•L(Yw—·Ävfcš\ð4’Êw7½É¦ ÇÞ‹ýœ†Üv $bÞïhÖT GSð˜b”8±Ö˜ÛéSÚp9¸Ãì”ëß4­ü‡Ð‡åÄÍøJÞÃZŒS鄦$éd%@K»ç®}QoÖ¢ÖtjU=„»¦íºÍ|»áT/·Zk©Ó?ùzò8Éendstream endobj 1060 0 obj<>/XObject<<>>>>>>endobj 1061 0 obj<>stream xÚVïOãFýÎ_1¢B€š ‰Ã‰\éz¢ -ý/{œlÏöúv× ©úÇ÷ÍÚÎ% GÂyÇoç½™y»ßö†4ÀÏ¢ð/Î÷ýž¬?ìL¾éìì<|Žðá×2¥J§Ñéë ÃËhwáÓÓÞÉýGè)Ŷ£=%a#<‰~¢¥Î2J´‹•MðJllâ¨0žtAcíùÖä ÆÒ¯Æù›L+ÇîøéŸ½}Ø qV9Ï–RÊÌŒR1iG¥5 pB©599^°UÅ&/+D;šålgXŸ®:ˆ@±ìL¶àÑ/³Éqü ^Í(áTà§9KȤÔ~75~ñVýM7à4GDýŠŸ+O+SQ™©‚¼¡Ê §•Î]ÌHupJäk •éYt*õÐÎÏéNðÇ{m JYù ÂOŽÆÌ”)ä49°µ­•26G*såÈ™¼aÔ¬D<ȈgÚùždÚ¥X3ûUáHmò|5ð[ðí`Ù¸ %¦š¢t"UÛÅè Þ½¨¼ÌØínJÏYÊ;Eqá'%NM–™¥hê—†¸}CA&þVé…ʸð“ã«ôg3»¯Å¹¦á;kûsôe+Â6-„<ð:ç!äìç&©l†&5 žOWž]B–S¶•’ïýá¨><ŒßË7zhwXÜ_®§óÃ(j"Æ\*«¼±[¯þ…”.»ª_lÇúˆÎúƒŸ›Èèµ&“:¢ÃZT™M©¹"‡šq/ŒBŒIˆçª˜qÝn õØvû÷ikµÅ ý£Ó ° `\kB¨t%£1ìE½QïtrüºÀW´Oûo.M&þíÅÿºK·œª*ó¯@vk²Vüº }¥0·_ÆŸùZ•?V•!ªºRœÐ45ÿhÍ{»T´T…+š«“ô´k|&ø#…®ÖlNËÓ%©$IºÝ<½ò]W.o0W_P0_˜8 '„„Ì&êú ³@]aü Ùc³s2Þ5°gñ½µ²Å Œ¬É:)SÞÊé16mÎbEן$•:–Òª ´Aw¡Fu$i~‰¹ôÒk²X;IË@-”Î<¬ RoóÙ(ÀI+šc¿MqØy½”r†Åp„„A |ÑæUÜÝ5ÁŒ(¯ch³j‹DU™à\³1†˜@ìØ§[ÓN¡—2…=hÉSkvÝ„¿Àž¯è’ÊÈ…âáqqŠol<9º+D´Ìâ'^5ƒÁÅç»j´àƒ#Ê |#ƒX F’„Ã2”ëSÞ®š’÷qUXJrÝ"O˜ëÙ<[…»Fž£ j,®S°&ÃÃ]¦–ùlýßCÄvPü 1Ç•e·“©OéÂÔã°Å§ËüÑ8§%‹0©®ëðøâl¼ßYb}C,P•.^5ÔºÍíDç*áºbõuÉK넘8¬áVfBò nnÇC׆÷Þ´îëëè-§ÓöVyõã>×±´ç9†wÈÚÕ¤xÁµÀÂa¤Y|NšÍ[óâ *[9(¢‹=‘@, …°šâBŠ.¦L!ÎzÇM”ØÂÒjï‘J¸B1î¹è:lÙ½m¶'Tc>û ýý3ÆÜŒ{mãhÙ-DZâúÑÿµ­·ùбH»êÜÅiiìW¹"Õ©ë›ÓU¶@ÄU÷¸À<Ö“S_bCþ7rãz2áÃÎ÷è¨OÖ,ÛîùýÎê¾ßYë+AÑåþ›k' àD&X 0ⲩ¿mº²¶âôÛ–¹lºìã…D´ªÄ¦HõL†Wú«~K/ؘRžØè<ê_Œ.)@ÏO†ƒQx|zÖ¢³æñéÉàâ$ Ïdéîiï÷½ÿ€#©endstream endobj 1062 0 obj<>/XObject<<>>>>>>endobj 1063 0 obj<>stream xÚ½VkoÛ6ýž_qáahŠ6’qÒÈ€¶I׆5î@€‚–i‹ Ej$×ýõ;—z8Vâ¦û2$‘#òòÜ×¹‡þç`DCüŒh³â`˜ ±Ò=ÜŠ?éääÏét‚çNÒ’Miz|üðÆñhüðÆèlxãõì }û‚FCš-ÏédB³EŒ+ÙátùE¥–/iÞ —j5OÅÚüàéìïƒ!ñÙÅŽe’¤ Ä~ƒ7/[Ïløy¡\ßøB.E¥£ èú°Âxò¢c™ë6$<50I©¯Ÿî"ì¼](wGçãõôíY—òÑdÜX¼Y©C¿Kç•5ô²>ÒVéFÉðYc9nÂý(µêV’u$æÞê*HZË9}úøì’6¶rm°”­ÔÑ\™m&I/ùY®<•Â!Ý á¥òrAÖè ­sièÕW ;NZ:[Pf‹B˜iedo­BNG¶ eÈ–³º> –VÒH'*ÝÎлÙ/@Òº¥XÉë§ÉÞFîã¶{i“춉ۖqøp9H¹:ëõÚY:ûÇú‰noÑ÷wõ}fÿúªàjSßGkšWJ/ˆ¨¬)´Gm04I×¢Ÿ¨þ§!Oë“<EyNÒ€=l6äpv#|=ZrÙ Þ1x²õóäñ.3ú·Çž-¾Á…¸Ý«QT>€¹åf7t%f›–ñìc¤ˆÍ>lãx€W*È [e¾“dÜgÅ`‹1hS0o±Ê¼L‹¸K† ÜéÖ• ˜X˜D½Byén1íñHœwtÍI‘åñ4“ÎÃíZù\@ÐÙ0Ф¶+Z* ‰‡s/+4Ý**|F¨èÌ?Çåﱩ¯<Ì©u§;x:[ _ÖÁ ]|³èÙyš½uqä•«+ÄÊv}xe)ËevSÃݳ¦ônÞ¸¥­ |(oœÇ.y–CÄO‚JäjÐê+²‰ûÖÑÊdºZÄêõplÜGÏA¬îkákÌ׸ÅUŒR™ÎeàòDÅ`Z©X´\°”˜^¸Ç=Øû­J轩K’ /ë¾ív*±mW«ìýBUè"´ë‰o$?^'W¹]à×_Í'§ÛDØèÒ Tsã9YðZsB4Q.&îÌÀ²¶k’Ù+"ŦÚr¿Ü@’ÚC‚«o¿Ý2”ße·×fçm;ùçƒ} ó,x¥Úô.Кœ<‹„øxùóåŸä7§/äµâs¹-²@3-*í¨´Þ«¹Þ©9†[,NzÄÁtw”zUu´ k!™ž>/XObject<<>>>>>>endobj 1065 0 obj<>stream xÚµVaS7ýίØq;ƒi±ÏBfø@$Ì„ &!§ùN¶UîNޤ³ñL|ßJw”@Òlì“ô´Ú}ïi¿nô©‡ß>%þ/-6zÝž¬ßÌ”ÿÓ³ýgxßÛà=ÁËHšðTÚÝßýþ@²—|;ðr¸±súœú=N°íþ`@ÃÌo„'iûz§|AWV’‹TÒXº¥”%I‘Îh!òJv·†oôh›1²õŠOº¢T”Ta¥‘Ó*†äíÜHk•.ÃJKK£œ*§á+-•›Ñû“×'ןýƒ/1ôÉ­(æ9Ð[Ëå²[¬¬4 iº©.(שÈgÚ:ê'û] Û¯¡F#ÌÌt!T‰£v)Ý?ÚLG[¿~i=Äðí °Žr%¬´‡­ÇÑÿìþæ7¡à#‚©wNÖ‰Ý$ z”çz9ÔWóL8y鄳§F/^býƒí?Hãõ" 5%jÊ÷{=3©Óòq†‚¸™²4FÒICøb¥#§©ß¡£~/YF‚Æ•s@ÆŸ‘smVM%fFÉ+´*n‹,@”u*µ4AØ€ZÊ1Cô]ú(L‰bvhÉñ¬W)"“ @½ø.DÄm@`éÕë3¯p2é7 )fF™1“UÊŒTI+]™û³GmžO­Ru¶j1f‹*wnG`õLv¨uvuùþ¯ëëëˆaÖÙÙåh«CVû`ZÇÊ 'Z”)#S§ÍŠD™qÆð2Rd+p3j£,~ÂDå2ÎĨ-–œT{~þ ?Ÿ»···_ºîÖ¶¨¨À¶±ôã\†L =•Oö«™(Qµ¹4…ò’бÕåýZ!À,–Q](ÈÚ—ˆæF§Ð¥×+vÌ5ÂÆQ‘J*ÔtæX¸Ò(YBÿ-§ IºrqžêJ’4FËÛóúL—›ŽrQ•°‹¦Æ²ÔÕt >Yº|õM€L š¾½&15t™¯<Ç"ÒxNq Á‰Psp:&ìd£¶6 ™ö†,8U9¼Çr¡‘^ΰ¬3Öõ£YÇS}ÂRžTÿaï)Ï8­òü“惒˟ó‰½îAìMº¬XHOXËêWx‚€ÄVǦ ¨Ð%8ïÊvç¼X.ǸRyœXÿ ëj;éÒ•Þè¥\°¸k2¤3­±WhÛïqÈŠñU{¢bÈv¸6·9Û›a›V5M´)8´™?VÅ„« øÖt"Ü&¥”™?•‘¹AÀœ ¿xR5«}®ps1,‚÷Ñâr2_ÅÈAr¬{Ö(Tº*é ±r:TÈ¢ñ‹WW]r~ƒÌÆ>Ķ.Ä®Æw£cÖBe¨=Œ>ôšcñä°¹UN²jÈÎŒ  éPbÂTNé ^ûÑFc=œÜs>guÙñåÜ\'ks-SYzÛbàP\zËå¼3à¹iÒ`m~̆ø#G\°\n 3dð#ÙFÃøHÚߤ¦ñ£0âOðö̪Cƒ5#qß "²R;Z(¿g„•üg¬‡ojûýÀ]³ö´z}ö˜;%?r§û>s˜<âH'¾²ouz27ûYOz¬w‘É7w‘©Ê»¦€YÁ×à6ïÆ_¥œ¯áÉùx~7ͽ\ëË/Sžéb¡U¶¶‹$ÚWúK/`/öX2`Ÿ2# ›]àþ¢ª¼)õ’ëWNr•"àZÄ6´~Çc} H'Òë/¯Ø’žºîws1Ñ_JhÖʺëb›å–{§Np^$ðÞ%n¡l>Ľ@UÐ]¦™©6œQÈÚÀ¿`ò¨}£òšŠ±ëÈР7Gp§˜ã ¾î~ ØC%ò÷X^æzî˜@µ¬‚“d÷{·Qû8îWïf>Àðý[©¹8Vc¬î EÊAÿ¯×ýwdÒ\òÏé VÔÁ¾×^Ct0HM+#|èÅj!íN8Œïñ’gIwp@~þó~oàïîu“d¯~¼»ÓÛßIzý=:nü±ñ/9zÑendstream endobj 1066 0 obj<>/XObject<<>>>>>>endobj 1067 0 obj<>stream xÚ½VaSã6ýž_±Ã}α3| éÜÌ w-¹ÒN¹v[Ž}Ø’+É ù÷}Rœ”„ÂL§qI»ûvõÞnþêDâ/¢Øý'U' B¬¬jjßé´w‚ç`ÐÃ3ÆKqÊìQœõ·oôãxûF|n߈â³ÍÆîhHQHã @Orœ:hXI®nno 3Eò%9%?ï„ôÞ¤¿p¥ )èÜ®vGg­ŸáQ{2v'ßÑåõ¤)a‚R‰è3sB*¥|hjM&W²™æÄH» n3±‘)Chì3Cs¦ŸaxG5|²Ñå‚Å™á)UL4¬,}ÌHHª™É©Ð4-f\P!¶ðü Vñã5îyQ–¤9SINW…ºb†QZ(ž©gœÃ½C‰wa“£$gbÊÓÀsëNÊÚØÂÙ³ÒP£¹È,œO®¡ou# ?÷ ’IU¡$ð²_B"áÑð4¤¢fiª¸Ö(³–匧æR›Ð¾çW*úÞhCûo°¹~dU]Î^·Z¤B;D¨EwõyÏ3¸âkJƒÕ‰À<ïÔ³o›Ä»Ø´}ÊÜ÷½¸µûÄ´ùZ§àÁÿLÚl]‘Ò«Éd“uI5‚d¶Šçщ+f ÂD +Š³Ì€cñ<ÇŽÚ¥ÓÔ¸2 ŠLp±ý&¤!ö  F¶Ø¬ë.˜€K›ŒÏ½g€ÁŠf3›ä§Ø"‹—©ïh/tûŒûÑvîCÉ®Æ/¬#6cEÉ&¥/WI¬J¬çtyöVδv. 1ÅA”k3|ðVm”µ¼—WÉ?g_¡—-9\¼äi‹znŠz}#©^§ ”#º?'G®Ö?_ÿxý+é…0ìñþÐS”¥ U“®yRd‹ö­øãj×Kíè\6eJ7ŸÇ4áî¾@—õ•ý§Üú Qëš%‘ÌœcFXaÑŒ• ßn±Êq ‰iS2Èç±¶ø-g ªÂXò¸¯à$¦«Îïná›ïúƒ›tN×YaX¹‚ >o¥¬]J;)ŽàÉ«õG4Œïïƒèä Ïo»Y÷¿|f\ìíâÐeYÊùebÎHÉêŽOÆò²19í\¨µÒŸý4v²«¿Ù•ǶÅJÇÖÖÌí|W˜SÐ+z]§®zEç3($G"EVLÛ± \¸h{µp½ yÝD€·\–à’3b4QrŽ,«æ|b¯_QΖc|âxÙÓÌ]Vkï7lªìü¸ÊœÓ5‚îQYíA]wàŽß–k«ìc—늊An˜«½ËTÛ`niu@h”‹Üv–ãƒÿ»gaA.÷ñ†¶Ñþœº?|_‹ªB»cfƒ¥_$”ÝJ㌵£]l _ ãë)v¾¥£¥6}½ªvm؆‹Âž‹·ú!áhØ(æúÔrP¢lº»ì\.P|§½!¹`Ѱ n¹?âxÐ.÷»ái7£Ýºw~êü |~Ìvendstream endobj 1068 0 obj<>/XObject<<>>>>>>endobj 1069 0 obj<>stream xÚµVïOë6ýÞ¿âªûhÐ6)…ú  ¤±Çxelr§ñHâÎvZº¿~ç:m))}Lz›Ú¦‰}}îs|¿uð (ôß(otZŒ¬.fÌÿttx„k¯×Å5ÄÏHJØ”zÁáûÝ£ðý‰°Ûy"è|Úœø×°Y3º‰(3£ÚÌ›§µ¨/Îäh¨/5ªb¼™ÅYÖ¾¯ÖB‚‘ÏZªóç[‰ž8΄×d% ÑÜË–P=€CzŘnžªØ·/h•RñªrQƒç…ÈUTÉÇ7³EêÈ—Ÿd%…åèY³Â[ûéénpóe8xºÿ:¸{zj¢"Pi[;Žf¢ð +Ük†‚ 9[+¯¶SÈÌYÖ Þsß#æ[m­!…j‡œB=È+ئØÎ7»MngÁ}~.U_Á^j“×ÇVem*ó…^¢Tk‹t š¥ %K<¬Wmf½ŒÒÊ!ňr$Ø ÕëeDØä÷–5Ó|ɳæ-Ïr¥Ê'Á&+<>ÜX[‚)«7®L˜qÕ( ÐçÑ|qKø­l^¬TapÜ3…žÇÂM¸_€¡r‚HäG4³GfymãšM¾A÷&{gËÛ¸¾“mÜwR&ÄÝabd‚”±o¸‚L°ñè¤K7)N1´yîLã“ä÷›Ÿ)ÒØ¯Š÷œŸ¯¥® ëø¬Âùa•ߨWC,ò¦¯=É¿bp¿ÁvÝyI]ží ܈¹ïx3mžë¸£'Òàtá„Êâå¹g÷Z1ÅY0„=ð,”]½«•Fø®Zõ"~IlW}Ö'âeõ¸{BÞKØi®>ìµB ùáà°Ý9n‡ ÇSƒaãׯ?X›gzendstream endobj 1070 0 obj<>/XObject<<>>>>>>endobj 1071 0 obj<>stream xÚµVÛn7}÷W –ke%­|‹>ı­›4–kQPK®Äz—TH®%õë;CîêB9€S´¾È^îp.‡gÎðÛNºøÝƒÔÿdåN7éâÊòÃŒé/ûÏ>~¦økäd ýÓç_¤ÝtûÅù`§sõz]äö¤ß‡÷p%kݲGqÁ1+®d!ì½t“”ÒZ©•½ÒæòQ˜…Vbð×N^‘'ÞúSzg´Ú¹:­´s;¨-SoùÞÜß:æ,ð:Ž…Œ) ¨¦¸$8äF—é²dŠC!•‡E#£gV¶f¡6rx •ÅÝÌ¢Y6–05zlX9ÜOàVoE…œÊ%pËÌH'`º,3r›k#í&›9U”=q‘³ªp0#À5„'¼¶”i¾ðû·#¿×w·¿Îçsop}}Û¹—Šcyí$I0ëÈz =jÉ×òܳT䨥EüÜLUƒHë™°“0‚»ÀLñR*ŸÛp?rNu¼}w½¾…mPèâQõÎöJ:6‹„¹†kŒGy†,Bþ1îÅp[€¨y×}¾h^E~bºÄ݃½îM«•(|×9,t9¶ÂÁ›Ëè;oî}_!ÏÎk’9 ½6íô¥f¦ÆÜD"ì ™%\m§ü6XžÁež‹ÌI„ˆ*TbV'F9‹h×ùãaÂ#+*aϰ=qS/²ºUãÛÍO?ÐÆ?wCË®4áU?%*3¿é1í^¯§IÚÿ^³€Sòˆ|ûciËo!V,þ–jŒ4Jàwíbæ–;m6*b^!ìñÏœG•-•§kãM:ÚèU”m°zy «T6‰7aQF4æ§èÚ0c ˆ$UÍÛ4èÆ4 СÛ¥ëÒqGɸX&QVÖÓÓ¶ÙDðª@Ê:fèàÙš ÄÅ>%{hÈèçF|«„rÅâÉ<È@m‹zJ VMb X†•ÉR¬£J°¥E›Ås-¬ÚCÔæ! ƒj†âÍÖd±±+°óH30þrAXŽêLù¶þ‡m²NñïöÁ“M°ƒÑì£È´áö¹ÍÐ;@Ž“Ã*ˆNÙ±q:[幜/E¸é•{œh°ž¡*UMk%je&‹²B ‡‘Ffu޾£"$êhìSMþ‰ž‘â)¥áÊ ~ CÔ[‘”Û'e4#0EG¶®HÖ笜R)ù²<˜Â¡º•/4¦M‚\Mr|ƒ±4z85ý‹ iHí^î)Œ·™%à¾Ö~’L«\ŽÉðsãK²]bÄr|À„Ã%«Ù&Ïÿ0Útì¸ÑSgغn,*òxÐ?Ûêå‹ÝOøµ{s³{qñoZh«;¾ÛG¿"ÑÎYöPMßç¿Hë´‘™ŸMÏë§~’Ƴår©VÄ,ºç¨m^€VM£‘íáæAV{“:O§½'n|dUj…„¶jþÜÜXŸ“Ÿ¾$nî÷z¬®®OÜ_|W‡ÀÂm0“,« çõû6p‰rŸWEn}íÐEÙÕ÷ãÈ/¢mª)¥;•%¨š\ ¸ žÀ¹È˜r¼`1L*š“X_Éá:=– †Î6š?\¤Â]È«O¡5:׿DŽŠP"ÆÜß¶ë·!–Új€¿;Ka&«zBƒÓ0OFìÁ?&¡ëÖ/rU¬\¢@áú"œ‘šèÐíÞŒ¢âëšÏ§'žùÍÍÆkIež!.v„íè)­ødÓã49é¿'íuzݾ_>>/XObject<<>>>>>>endobj 1073 0 obj<>stream xÚÕVÛrÛ6}×Wì0}p…")˶<ã‡Ä±›L;I+½Läf`r%" -ëï» RÓ—©[÷¡#‰\öìb÷œ¿õbˆèCâ¿iыˆfÖ3çØïÑs4Ò3¡ŸA˜ñVìÞ½0'w/$ÃèöÂëIopzq“ų?Â$óÐLºó ÞàLÔÊBô|òµÁKÞší<»1ú±z-Ò˺ú0{+­ÓF¦§R¡=òVƒÓñÚÃËaÂ-,oºô++u ‡Ý*²ˆÃèLwFü—ŠDšbåÀâ¡àJ¨íôy –4A®¢Yfx •˜#”¢ ƒkK]Xàa ožŽsQÒöC8™Í0uòª±*qu• ‡t©–«“kQT !ð.Ã*¯çaî YÓu¦ƒAð@Ò·RxÔ5¹#ãg—²z«­³Ì÷Þ î'?œüvY:q};ÍJÍYNU¡¯µ03º€TI,— …piNpJé…,çéÐHÑÍý»YS¥ç0£óAªÉ¯,-¼ûDfÒ/KÈé@´UÖg (j“?4£Á¬wÏ~·QˆáÍû3 A­AZÊ È–éÙ÷ïtïÃc¾u W.û€Êbk +ŠÉuoH“AW•¶´Ld6„Ì–zÁºº‡| f6Ã.Æ{툟ȭ­DŠpnX ªŒWÑÝÐñXw5Yœ×JÀëŠãeþ4úƒEÎ öCXH—7Äùì'ΟZcq²R¯ ãÖËŸñ8™NÃxçëɈF«ßyp/šÒ©PžQ­aø=øÙLD¿ïÎï×ìCJ]ç(xHTójÎjù{…ñ“JÔ—Kp… ŽãNÑÞÃå°-,j"Gë Œ¾Ð®ˆÍu­²¶¸Í¢ «¢ƒëeOŠw¤9f¸Ë‰×kÎ?R›Ìnä±5÷4B·ãaTNo*ØKŠƒÈü?RÒ¥.¿ÕhV,ú\‹/dã¾\M§‰€žÿ‚û›T?,ÿÊð\O\É5>sSÎKmÖ" ‰OºqEq‹'òln* ÞH´Ý´¯jÙ´pŠ^~ØÐK­¨´q¬>ÝQò’ªÂŒÉ À²¶}Èe–±øÅÄö;ØèÒ0 §Ï·ÅDŠ)ÑZ'9“© }Ý«¯Eêˆ_J0:ÐR¿®ËŒ¯²Í-¦ùë{²ÉjËøãÓKU¥–”Á´ì@ ¥@R3a6-ûÌ­Ìjf½§_«$ƒ ‘q6øÅ©_ùPt+B°=ú65Tªƒì“ɧìž2ä–ICºÐfÙoÛ?Ö+N·i>Ù_<±6­¥>MWaßj,ä +,3.XSòtLûÏVÛïï›OÝ‘X¢ãV×#öñê·3bªå7¸™œ×†èHMÎ)4;ÐÏxÙ'{I¸?ƒ.Iq4ôÓ»£0IFÍt¼;ˆöIxédÒû¥÷½HLendstream endobj 1074 0 obj<>/XObject<<>>>>>>endobj 1075 0 obj<>stream xÚíV]oÛ6}÷¯¸ñ^RÄÕ—cç(†tMº[Ú%ÞºaÎZ¢lÖÉ‘”eÿû^R’“(^d{ØÃàX±HêÜ{Ï=‡Ô_½"üÄø¿´èEA„#Û‹ž»ÿ0>ãu4â5Á¯¦»¥pxr¸{b%»'âaôxâí¤^CÁ$Ç|ކC˜d>I÷¿ïDÌ)œÂyžÓÔ²>%5ZA©2b©)øæÕäs/‚×'çÎפPœžB?œ‘L‘9 ÔBAØþúVMŠ7k¸>þëïL§!]§¼ÌhÆ4†‘zsÛï`¾£9)¹EÌÎ̃»›%SŒSó¦^^œl«{=LÚ%×4§ZSmÞr’.`Æ>@ùg˜pZC´íÃ84+“&¯Ÿ …ÝÀrØÈ*",X M‰È|*uf •sȵ,€ÀÍdz;%ë2€Ž/j©†¢D`D ®¸L ‡++SX„ÃÕ%ÒD)ÎhÖAÆÚZp|˜ò,€ËÔ6 3@ e7Ò¡7c XÐA;X›ï8ÈL™.03Ÿ“{fE'3w#€³Y8süpä'°kÛAú éJ‰€LV‚K’5"Ë`Õt„XXX«Nðªªà3ÙΩ¤ž‡HgA…ýÓ(R„Ü,ãbƒ©+bÓZ¤­L>]_]^½ßÛCÁ¸îØr“SbK4bA–Î>ÝXb öMøþaÉ0\VÈýt–˜f=Ð [1»Ÿ¸Ìjî•–+†Žªg[ô½'ÌóXÆï¤HÙ÷ÒXó<óŒ‚äÀUŒ<ûÞü`6¨ØõôU‡¯KQ›Ec\âß iJA¼k.8R‰ª(ˆEÙIá%˜KŽ4!‰žPšQÀ†o$;x`Ó–&»•}Ñ ,)U»dâóó­˜a¶É ÍdYZr¢ë4>ˆ7É2ÌYâ¾QçïŒk°Ð¬WÈÖ’]Ï¡]ß]Ý ÿå²TÞg\S’mÐ:³†Ñ4NϽêà~ï@°ªÕux¼j†Kå˜dýS.oí¨hç»)MH¾R9 ÷öìG«”¾Kµï„Vßv1®¤E¿¹=mœR˜Q[QŠû Áî®/i€qîㅴȬ{ˆ ŒŽöÞÛn/¥q»ðÜ7‡®•«Ê)Ö㨰>o@w[»§>§üÀmð/ï-qrà‰ÄíiŸ$Óiñz»Œð®ý¾ðpÜváë–FöõÙÛþl_¼Ä½Ø´— ôß·ðLË Ó}äbÊô½:Ì#Xí„„,|ÝÌO8ç®!wö¹7ö¿‡ú…aô垸ãòic˜ç¾(¾Ì¤DM TëqÊÚq¾µÁNš G.B«{|ÌÙ¼ÔĺÌêj$Ô„R¹_@2N‚£á øÔ’aGC?|ˆgt2ª‡ãÃ0: “(¹©óIï§ÞùAíTendstream endobj 1076 0 obj<>/XObject<<>>>>>>endobj 1077 0 obj<>stream xÚÍVßsÛ6 ~÷_S÷¬®lËvœä®ý‘´½vKÖ¸Ývu¶£%Èb"‘*IYNnü@JvdÕîuÝv±¤>€àŸ;èÓß÷ ³NßïÓÌæ¥ö GÁ½Çã!½zBlUa4í“`§  þþ•S8ð ÇþI=HáªÓflË‚¦l2òÇ Yc˜ÁñØ?jÈCò78Ù2lŽI::öGMicLÒÉÄ?nHŸO;½sšèÃ4¦„N†C˜Fn•4<‚X¦©,¹X £8jÎ¥\±,O± <†;Y@É„g¿^f4 1O *`aˆÚMÜ"æ‡Ó›NžXgAK‘Þv1A²Â$䃇Ì`…F¥»;dXI¤ÆJ‚e¨‹¤I¸†œ)’’{>hŒ‹ÔÁ[G\|å-§è,Ä&‡T.´ß‚úY<µ s"ÌÑ”ˆ… ,YZ Ó-w@! ÅkPhnøwãþ^¯‹B Š-Š”ÙœæŠ²Å¥¨ð5”Š (õn%7 ¼?{uöÛ'7q݆~‘0±@8…³8ÆÐ:wKXB‘G”VírÞ²:«¶ò¼™˜Ëyíä20.Ý×^Ëæ%ƬH Ù´$[£ röÁÚ?­Ôzç'¦=k•sž¢Þ2üH66 §•ÕšŸ@UùfT ÝÒ\  ï„a«ÙaÔA¾aZDH,©XÖ­Wq+?¼Gß„Ș¡}•AÆ;HßZÿw—@“ôÖo ·Š‚YNS+4 ]Hù-nK"®h—¥ºk— ×-ئ«›V¡´ô§ ¥!Ï%1ü¦Ìx› ó,ݽ«[žWÃÿ¦~,]¿(¡öj0GÙÝ!ŠÐ’§¤µVß¿®ÿqíUØS·hÝþ¹Ù²ëÚ­ŒcâlÖóœÍüÙA¨—éU9;üá_T§ÛºýÕIùºd |G}ó[ë3xܪÂgDÉ•ånJ8–D·\Dö[¨”Š™ê)ÿÆnŸ³Ãº Ò#„²ö<`mN{¯¹q)õ€œe ÓäÄÎWSž½÷R–"•,òüÍÆk4uHiÚBåÙè‡p´¥s‰Úé'ä2ªñ0Úè¼0ΠlÍmŒKŽ%iåÖ_õÇ-]PY4ÝÖú¼jbQU´Ó‹Ë²]¥î‘9—Êì&ý›F“¢^„«ª76Ú‰‹%V2«ÛÓŒ¶¿¯ÜÂ¥<ëÚ%F³Ãª ¹lØÂÚ4†ýÕø@þä†0eôÏ‚úéM¾ Sγ VY ºŒážç”žXÜÃ=-h Y>„2cô]x{}ì/’äýkÕ(—§ßº£?²”G¯§ÓË2úÖ3’.¶í|~GMÓ-·»9¡Bbì]ÊјºT‘½‘îDàJÓ2‘ØiO1ºKµ²˜XÐâlŒÙŽj %l!Ð9‡jYõufû(z³ƒ€î˜–YÃþhvØ&Ç3q’¯*mÄšk6:‡ƒJQ‹ ö%é_Ëkªv™Ù3CN ”ô%WRdt°w«Ê+q¾Ô¡*¬z/%·ÛB]³a"íU”ꈥZº#>7põ~ªÛEÓ‚é èïge­ø5¾m³ãiÛ¤Ú}wÆr½¾®hÛxÃB)JÀÃnèŠDì5u>ýÄuˆiÊÊB¯y€úz+/X­¼.x{µ½nK¿ß·úoéýhöÏtì¸x»&ôIÊñÄÚ4xóE¡˜Ý úfC§­îÉÜθ•G?ž€sŒzƒþÐMÆ~Œ«éÁ¨×Ÿô‚þ`lEgÓÎ/¿C£Rbendstream endobj 1078 0 obj<>/XObject<<>>>>>>endobj 1079 0 obj<>stream xÚVÛrÛ6}×WìÈ/éĶxµ#Ïô!Vì6Ó*Q*9}Èô"@ - 0¨K¿¾ R$‚òtlË6pö‚=gø>!À¯"÷•ƒà6À•ã‡ZÙߥwø™¦±ýƒÜB!Œãq1=Xäèý>ŽaA?\ÉÞ £ ^Ãp¢1Œ¯Zü=àÆâ©Ýìîì{Í´A™T”ÑkØò¢€%¶cY†P ¹òÍckþIŠR›µTÜÃ7 ¸È¥*ño)|›ä4ä!€K˜f¨Ìê’ ãƒî,hF”ᤀ‰ÆG]}›r±¢ ‚ÉZã!)ǃÚÜô_çþâÝÎú{Í ›BÖdZ†W;¦ªl/Ȳ`¾‰£d*7X×Ã: 4(ö>Αó,kAý=Wù9c Íš©‹%Š›r’¦’òœcLÍEÆQǸQœmH +øu±˜áRÃÌçߺž#/šA¥ä®']GÆ|ËM¶¾¹·m®PºVVRŽt©Ë Žf£Zã™RRu Lz ì1ëf–44> ­2}„cíE´Jÿ××lÒ6#{w:[HN,nxUKN)þ~rV%Ë]¯’†‘)Ä(„‘¢Û¾ˆŽšƒC‡Ì2V+O0²­oæèšY*Á1̾ê©Âݹ{EÄŠ9v±¡yOÖŽÎç¾#u; [es©ÉÒÞ&;·èÆN›þúˆZ Õ-úÉ¢}lxY¼Ä™j)ö9HWWƸ"Kl]ÔK…CïE%KüïÈ7nǧËbYë½pÜý‚JÜ’=˜~§Mº¹‰ž´•Œ­ÿ‘>ß åìx¥ôKìêÛ‹øGÈ­èÔ~‡µ‡ëáqwh·GÏããà&Ž,ð«À|º˜M$eúÌÇ×6χÆô]kúÒÛàm‹Œš$àq”å/·kxÿçûRÛfÕœ¢0krx3hÈí„‹J<Š{åÔD±óƒampôh×E5([[§æŒµŸO z(~ÿc 3Š·²ÒØ1¢Ùœ!Aöÿ—öøíamÜF]„Œç|U«fò·ÊÝ0=’•{Yëè.º½ÇàbEé( b·œ¤·Q”6Ëa2 îGø"MíÖÓbðeð™.endstream endobj 1080 0 obj<>/XObject<<>>>>>>endobj 1081 0 obj<>stream xÚÍVko"7ýί¸¢RKTó€¼*¥íFµjw Û¨_œãÖcÛ̿~ÀÀ¦Y©•ªü¸¾÷œsyî„à_‘%E'8²{˜½ÃÅøŸãqŒÏÿ ‡Œ–Â8žÅÑé‰8NO„ÁÕñÄ÷³Îðþ ç`–a¢—q ³Ô§†#Iï+˜ê‚Ú?åfÅ­ÀÒØ¯Kn˜j¶²Ž潇‡éù£P©^Ûù$ZY‘Ò—3ìlög'€s:+ÅÈR/„‚µp9X†WL–žJ©È2n¸r0Ëa¦.çõ*¿k3 ŽK wSÇœm…v˜´ú ^£ìyKq8 ,,™Á˜ŽÚZQ>hkÅ“l2³7ˆ6¶VýÈ3VJ‡³‡ßîJL@9‘0ÇÓO¥ýE»°¸)Ç Xñ‰ß>¼¿ÞqqG´õÓo?·×„þƒ $å¦Þ¿å²ãAøm³2jrý÷ÈtkÝÂó´_Ì&n:â¹h…þqy‚×È{DHîT’kóVÚFmÚ~â|Ié^èUóÁ:C¤UºDpdHˆ†S"ä¿…á¥´×øXrSM9ñã´±oE!j£ð ¨$BýeûнíB’3H}iyê{>M_dðÅ¥Ö ˜Vʱ ®¿i•;,ª%[ðAî yë÷‡O—÷zͱmú5¾M QÜBÎ/Tü J)9Ò2¨%¶=¤•b…H(C:k[VÎ…i2ý£¡3ÑÅRb-µÀ}5¾Á6‹-“ÜŸÁ,öˆèwF{o§ïúÝÏñ‹“Ý×)n‘7Ùîø¼ÖýŽ·‘“|BêÏp«tÄ“ÆHH¬÷ô DF$2܈ V"-™lM#¶3‚’숂!«zv>%ˆ­'îÖœ«íiè6Ù–ÁÓ²Ú‹Ð|ú°¯(‘N6دi{°òV˜èRá@~vì©/ÖYÒš~dF!(}Xãå²:‚‡þ\ SgJµóW¬>E‘3ºŽ¤¬ZA…J g„‰È¼±ÔÊÆ‹—TK’S bƒ2ïæ¼ÛÞÀÀ`źhÇ&w"ŸŸa?’‚ýeäÈæº”)(vþäZZAendstream endobj 1082 0 obj<>/XObject<<>>>>>>endobj 1083 0 obj<>stream xÚíV]OÛH}ϯ¸©-Mb‡4€¡íT´[-…tÑJ¼ öu<Åž1ž1Iþýž'!qeW}؇ŠàØóqîsÏ=ÎC+ .þ ý'Ê[Ýv#ËK9vßÔï½w×~×ÿ%Sâ–R/<Ü> Â͉£Vçü˜‚.„ôz4Š} ŒD{_¯þ¸‘6ýRq9s7ªlv®³LO¤_ŠRäl¹4û£o­.½s(ñÞ_ZщíœÍÁ÷ ÿ2_ú•»t“²¢Õ $ iu@3]ÑDfÙ’M‘j…¬Ä¨MIà¡X†'©Ö2Øõ K.tiM›>T–D®Õ@Z^Ùy@FãNæl|ÈX«·–sL¢‰MVFU&ʧýtÇ‘¨€(-¶CiK2fee2óib̤W¾5 `A¥P±Îéâ#E©PcPK ö°ˆpÒ(bcˆA”LüÁ -•5d5¤áC´é¢I©°;†qH¤^S9Îf %ÒyŽˆ8# „¹§_o®­¨ï™ ëŠíÕÝõüªóËãØçöì²ÏÕQO³^ÙÀõ½ã¹Øœl ….'ãíp „QŠÒ<)JÖ"‚Vbšl뎮O4N¨\/Ä‚ÍXë\]Ù-Û,ÀoNL't–$YùÈ^‰Š'T±°l¼8še«‹q²¨Ccú#'¢Ê,¦3kO¯´ša ²jZïzá6€í'~UõÛÁO«úŸ[Uɹ†>ýægÍ*)‘­;ËæßySÓÈð&WZù|Ï£æ6ÉoGÆ?ê£z¦ï´S]~º¼>»¾†¿AwÎP—b\Û}çEߺâ„Ë’Ë%Îv©ßýû»\4‡Sþƒ/ˆ±^Øè7VÎú¶Ê4d.#ã˜lPÁSB‰ìi§Ó „îU//Ðc‰z”ÎVPÔÝN˜Õ¢Q“¤Ï”Èe´{‘q~ª)@ŸÖêLmžBãS¯¬Æ`³ÔbÑéµÖíd%·f´ÆÖK AÜeL"«Øœ4¦qKW+š:VÆB!ÖÒqÖxÇo%§ºÎJÒ;·û àÀçk/5ŒË[°N‹áôÍÃp¶‰¹Ôp÷e oHpØ}F¯7¢THç3ºÆ‘÷:©›¿ýV‡ =YWñª ¢Ô ?7NÇ&ÅOKgž2w¾£…\!ÏZÕÊ¿RñÈï)Ï™øj×=aNk5ñ4âÂ:W^¤`Ĭ~©º\¢ÚY¤ýž,@ 2 ž#<Ø$Ü1r<'óhà†—$h•ÈqUúcA¨eíi¦£ P·;|¶½còxá t{~ø°ßÃ~=vºƒNØ únêlÔúÒúã}òendstream endobj 1084 0 obj<>/XObject<<>>>>>>endobj 1085 0 obj<>stream xÚ¥VÛrÛ6}÷Wì$/ò$‘EJŠ/3~p}i3“¦íH©_ô‘+5 °(Yýú€”bÒ–ÇÓŽeJ{9ç,VE4Â_Dqx%åÑh8ÂÊþa2ÿN§Ñg<§Ó1ž1þ ÓÊ›Òô|òòÆäsüòÆ8½¼Ï^Þˆ^ þÓüèäÍW¨àt<¦yrÆJ2¸FI•ýÊÖŠŒíet<ÿ Î÷>cÜ£ÍÎÊÛ`Ç›¤ƒ?ÙX©]4'w¡4ÆZË8X¾§ûœ E콑N’ÚØtu?sÂYÒµ«jG‚Ê& („㔜nNØ!}YÑV×ÞÓF(G‹TTjë(–-­Á2"H·…'aµ²‹cï+k&ÕúÜCÏ'ÈÕ²#—KK•0¢dÇÆû€­¡ ¥k% ù’ÌX±‘ÉÎß°çêöQ”UÁôîªS?§CºÖʉÄ5N¯ÒR*iN›w=/7¼uáॷÓùÖ!ë²1}Ó^ÖÙÿæ´a/@µeµ¢t9¥Þùåcµ–áµ0R×–¤I¥pe{…zš¸¨`ÒxÊ RòŒêbí?:£ëeÁ{E4À)QzÓ¶(íz~Y Ki¹…߀å¡|<@ü¨Oìu.´zA·«'NB[²,9•ÂÛžíïÚZ‰ø@ ¨Ù^€ ‘P …nx }˜á¶^I« ¬m)—YÞs­êr s½¢dWN[‹T{ô†4Ó-šÄ¸_$«…nlÀÐ:]õÜ.9µeïw)Ò6[È‘ú¬CáKFû¨ÐAO‰’‡KϗЧC%¾¸ß‹A(ÏËãá!ÝN_î!b/§‡D<« éf,L’ÏœAÁßpêGïîáçï.t<Œ'ô‰ü(^ R®€S0Vz”'ÃhqÜÉuÞ­>X²ç»Ôë§çºPì$dëÊ '5®ÅÞn5Wßnü—*7aZ=¹Âõ‰ñ¤@˜PÛ¾`Ÿýöè 6 ¨ÝQA@³ÄÈʽ­ßK¿ßï‹^@N&u! Äá83áÚI6£¶Ýß¡=¯þâþ`±Ò“J¥e{]£as@kCš¾‘ÕNíêè+ì{P$†7ÀðÐu¶GÑE’7ùQÜF*D­dˆÿmàv¿6pò÷«·ÎÚ† ¿vÞú9žê+Ñj%³º¥"•¦™?öDWû™ã÷åéøœB¬øì$Ãò£<ž6ËÑädtz¢©ßºýqô/ÞGkendstream endobj 1086 0 obj<>/XObject<<>>>>>>endobj 1087 0 obj<>stream xÚWmOÛHþž_1ê äÅ!P"‚Ò£%áªJ‘ªÍzœ,q¼¾ÝuÒô×ßìÚ΋ƒ¡ªGÙÏëóÌ,ÿUP§Ÿxî—Ï*õjNV5¶ŸpÚ<¥g«Õ¤§G !°ªÐlžì ®•Zï#4ê0Èú™×„ïìÑ ßÿºÈ¥ÏW0K´‚FFR"€¥L ÑOòF°ÀIÕU¡³/ÀeDF ^*u8¶¾|²ÌÂtÌ8j‘5£€12 }:#/{^=³5cS3A¸úÚ7ÌhPr$>¹c7òa¤ä‚ jðÑ 7BF0ZGZÎ8Ó¨«ðÙæÄ',#ˆuZÖ‚ŒÂeÁpš°ÚÈ(0—{µ ú(µ£aÎÂu›J+4 Z] X’n ¶¾å è8¥Zï|Õ¬ã¦gî…æÅøÕ³ ·Þý—J`so§¯æ}Þ‡Võô0Óô²`¶ÍP…"Ûmj‹oëâÊŸ—žÙÌè0-nZѽŽaÈ"™b&"S§Ì„g7’IÆy³¥I¥Â²%„bŠí‚cès…„0-~b™ŒËJìcl&;*ŸÙœF6nGxϸ¢ |Á +%Dfâ0‹è-ÕþDòé‚ͱL÷ Y‡lIy}òÊ”¾$‚ObVjåÞ:ËÌ”¨\QL#ªìc·÷ºÊ@f¹;Ê˦™IRS,…µ¹Œ—Ž`l¡m—¿ÛŽ~O{¤ª/ôŽ‹ÅweP{Ñ5ð³Ú-AÓ-×tñ%Of–ÛJRï-¿˜ï;o C¹ €Lÿ5¸¿‹| Ô¬"ZRf ‘? ¦qÃýä.j×Ýo—ÃhﲩÖc+ì_h®Dl€°:NÈDç…БiÅ;l:%EøpyQKU/·)µùmÆMe¶@§DÓb¬ƒ>Z7b=Ÿ8‹ÙH„ˆ A £b¹}¡„«ð-ï µ¤ †|šÒ‹`¹H Ñ'®dt¥ÊÙsËpwR03ÅfK¦6|N{ M)Æ12[|:‰¥2.—âä»M·Â‚EΊÝ4½×¡P#‡š üe™¸YLêÅ¡žöö#ëFBCjΔpÀv@|¼ÅPÿLµá&læ "\@ûÌPìx{¶·¡—P¯žŸî,:7 ”9wž× XÁºl¼‰¾7ÖÄöøî¼kæ•Er‡s {RýÚ ¡ËÄá–&];]s;=Ê|°ŒQws­d}BŸÜD4­^•ÿË…Tþ†hËW®öUªÙZ§°Ñzùhɶ°e] äÜö È90Î*ÍÒ¶/_p4©R÷³kF¡]ùýÂ^?Žˆ*÷Í5ÛØœi­¸½ÃCërœˆEûÊFF ;bÛ¡³"|Êóá>9©Ž Ú ssÖ{ïJSסÿÈuÎÅŠ5Hn—Y2«Qì‘Ï”¿V.èz¤ëXU¦ð‹Ì-ã˜G)×· º£áÁDË_¹Î °z«ã-C6¤5\ïÜA«;yÒžLøFCuŒ4'FKðö^uúÐ/u÷Ðÿ-GÍ×=¥¾ŠX¸ü‰;¾” âþ–¿ÆI‰CdzÒìRñÚÚˇ×y6ð>žÛ×rUú%cšn§kŠ0¥k2¶'n_z§^õ¬yΟw^kÔ›îø¤Uõ¼VzÜ8©ÕÏj^½Ñ²¢›AåKåhçEZendstream endobj 1088 0 obj<>/XObject<<>>>>>>endobj 1089 0 obj<>stream xÚ­VmoÚHþί©ªDT~"ñ¡½&wÕ¥—¶ñ]tR¾,Þ±Ù«½ëÛµqø÷7»¶Ic ¢Sˆ1ž·gŸyfàßýù¸Wœ¼±GOvÚw˜OçtÍBºô¯ë ³`zØž‡ ÁÜ;lðgçû†Ñ`ru¾QB@ÏÂ"î Ñ“xxÌ®”¾E¦ãõ¥L…DóKŒK¡ä2€7Ä…a« 4^€ðÎo|ý3ðàÔVáÃ7Pm^Åäòþî¶d¥S rXmañö‰oWÿwÜÖJóã¥É¡XkfÐL:ßWÕ÷׿FÛ♳[(­ËÿY÷Néü‡šÞÓšÎúºr3WorµØµþ4 lØŸ¯4ËÑÜ­Qþòë§'9ÿBm¨\4Án†0{ïZÏ ­nãa«*¨ î0ze9KÌ$¬Ù†x[#a-”¶ת– $ü}¾†ÀÚôÖF V2ÛÛ0‘YJ QºMä"é°|+Y.b–eÛñ#¦U%2ÞËZ°”’&Zå«Ú/ÊaÁmXV¡¹ ® ¥ßóúˆ «²ò¢oxò©ßœ¥¤‹$¢ù·†ÔùÖwBrU›—5t:ößÁýÐöÕ‘ê°CpÒërd¹)˜U¢¦þ~·üjXi*EJEÌé¼´k³db¤å$A²ìÑQ;°D=IĪ#g¤Û¡Ÿ±Û3Ó-ÜX$+*C@wàš"½¿‹8™Z®M øcQ‚HHB¦­öÆp¡fÛ&Íã¹w©6äA‰ºbVN.PžéÿQÍ\>Bã õ’>zRø»hÆùÈÒ¶ÍÍp;¶{#:zÌb²d"ÁRP3-+ÉÍý‰íø¾¨w+»!ÊJKj)§k¡ÛÑX#ãVÒÔôFŽŒÔ}µôäúã4×v7´Pw³LµË5œZ^"¦mð½[ýÄ—,/2¼€pîyÇ:æ=Ó±–ý¥w¤;ŸÙÃ7:ò'i)½©Ê¢*_:É{«9¢ÉÛ(a‰T1"Ô¸jàãf¶³Üímb<¹(AVùŠˆS$TBCï½³Ú1kH$Jã5ÓM°[¡m¬#šöf3IMZV´Ÿ*Ýóž£î5Ë.ä“×L¦/£.Øù-–Í‚+´È™Þ}2­~º—úké}¶bR0¹dÙ>(ãîWŒî«,eÚ}JGžE‹aœ »žÐÄ$"­4s_LœÔC¿6ô¨Q¨ä`ŒÏ¸²¡7ñ½Ð=žÎÆA0kûÓ‰w6 <fM—Ñàëà?e2/endstream endobj 1090 0 obj<>/XObject<<>>>>>>endobj 1091 0 obj<>stream xÚ…V]sÓ:}ï¯Ø‡ ƒIâ¤i)3y _ô^ZèmR 3Œb+±ˆ-IŽIý=’óá8 wÚºÖîÙ£ÝÕj׿Bêà'¤®ÿ²ƒN«Éú¡§î?…Gxöû=<»øÓœ&JýðpWq::h_¾¡°C£ Ø{=Åž’èÅs:K„ä†Ó÷#&J&¿¿Ø2¨‰‡"ËSÁ'‚ÇÐEºG%ƒè1x9úyС׎<Õ9“Â$ƒxÐya‘i@rš:)‡á…±J &Üt)¤‡OÞ5—ÀOt“ò=×ð1è½æ|6˜ê€®øXór@xUÈ)ÓŽ2)ú[Æ ^»¥ˆ±´,õï¶IûË™ oð3èƒÒ¨˜¯™;‹tÐG¥K>Å 9ø¸J›â—²ÉUǪYÆRt«|àyê^µ-¦…Û1·õ¥³ÑìQ8?a6ÞIÀBüÎ%­º+ŒN#Ö!×c÷nàö0Us6$~˜W‡ÀM“i©ÁŽg ‰ñûqó#bphXòØY¤tTè™{· ¾Ÿi&üö è§—é¬Õ ¾ÚXbs&R6N9|Z°)'E<·<¦ñ‚ÆZ•†ë+¬jŸ°"µoé™S>ÛÖn­®Á<Ø Ú—'ëÒ~Ýë:Ĺдeõ™k#”¤·•Íê:¼À5 _-‘ÝUš¸%› …Ì8#5ÙÄ3)7Íè/~3ÜïÛ…Ñm“0ÍÛ¬4–YÓv¦Ïö†Ûªô8“ %hüF Í#«ô‚„!!ɰ¬æŽMPiKöVŽZûC¶–¹¬öÙ“²a¢ÊV«µ?eVßõ Õ¨ÞS–½V—^Sg¢49Î3•åšÇ3tî"̘C‚HPFȈTà"D*ætF¥°‰7¾DªG‹œ›ÊTHc9‹á®öì­÷¼ˆë§w:\Zï¶Õß«5Õ —Eà_”´‰wÃ/ÏÙÂ|š< mdWªÐ•§Û×Îãq…á~llmù®@½I+¼³÷¸"•øN•ÝÇy‹j¬Ql'k-ŠÇºè´ºû8? 7ÐOZL…ܬ?ðEžhfêt•JÇõÀF£Û ­Õr‹­qÕÖ©VU±4¥¶-ËþÊ’¥)¥ÜZ„àË¥ ëo6¨Îhsp äQí”…‰6 oöGÐo½Ù˜¥ Rï¢0œ7¨¥3óæ°–‹"˘^lŽë$窔©bÛ©Yµ«¯ª (Q 7(á˜øe"¢£?Lj1´€3M‘áÜu×Û\=Rî´Œa¬C6ºÔŽÛcIÜl· çé:ÿœ¥koj¼Ò·t-M*Kq¡Yw¦ p¸®€Øã³oh‚¸3®GB…‹ê#‰«ÆŠâH‹Lšñ—¯ß6ÔŽ×,à@®3ß_#Á§Y¾'} ¾ßšíñùZLèöpUš,Sèâ.Ï•¦ªrÚLÈ= è^Š_2&Œ@³o:ûˆÏNÕTÜBñ±ÈÆhr˜L.!MÄÕ"¾ñ¢–ÁÔ4ç}Šäù¬zœUø<ðhtÎGîëЯR5ݵ¿†ý5sã³Þ }èbÍ È…?¬§Üýâ´¿…}Ryå#ÁëQ↥ŠLE¸œWŠ=w»é»9×®d6ÁÀx_(ÍTHUZI5S|†–à/J…œ™ÿ¹(|ä.Ü7þÃ?ŒîÕ„«o–“å´=9qúwÕ\Œ”œˆi¡«ƒêÓA̹i«Ü—³³îu[ǽªF\Ø;=/>ì·ºÝ~%Ûãv·öêbtðïÁ>&ÛÄendstream endobj 1092 0 obj<>/XObject<<>>>>>>endobj 1093 0 obj<>stream xÚÍÖ_oÚ0ð÷|Š“ö#hÇ:©e1 ¶®Ðñ‹I.$[bw¶cŸ~ç„!º&©"EêD’Ïgÿ|9$ÿ´\pèã‚—?~j––Ówhðô%·`OÞƒëÀ2¤¹ÃÁ–A¢¿ó‘ØC*¸Ž’¨,M™Æ»ÿø ÷å§PHë ÞÚßÓ­$~Ÿß1Ší⚸¹%]—$šhnI›U§•xo3ÉLCBKÓš;T¶x4#ʤ{ï¼þppùϦ%òá‹Ë¾ç]Ãî…í mÏq/Mèvi}µþsÎ÷ùendstream endobj 1094 0 obj<>/XObject<<>>>>>>endobj 1095 0 obj<>stream xÚÅ–MoÚ@†ïüŠ‘z‰€mBi*õP' W)•]¥.‹=6Nl¯³»Ä!¿¾³6‰’`[EEEXXšý˜ç]¿šÙûŽ ýL°ÊÇO;¶×1_þDÃÙ'0 ðBš;À Ê!ŠøÝà®y9‹PžmDþš 5èy·Îôª€æ\òLá£ú 7¸êƒ«²4΢>ÌTþnê†l“ÐÔ…=ý݇—2^%>O6iF¯e5øf¡¦XhW1%¿¼·v—œaL[©mŽòx ŽÝˆéØ—{”3Bð4AEêØœ2~ –Ýk®`‹ Ø‹F©–½¿eŸÓŠVf£€kža­—Øv Œ:/²„³àóäÕ3Àó1@(ÏQ0E¹An¥Ât|ÞOõ‡[‘šu”+Á ‰â ¸#qÙ»Ô-tÒˆÙ+¿þ Avÿ‚$·+®q%"°Dr˜ÇÒ÷óïPüɲw˜·ÄÔÎm1.qgDZpšË—³ÿù˼»êåÔ‘Ýá6_ &ñ.øþ’¼ÅDXpœˆ¯LÝB—’yŽAÆÈžn½#© –¢BÑâM–Ý¡¸/ò=z³J«°V*‚Ÿ¤8ž·˜–ÉÛ*Aú‘ÎjÆl$B±¦Á2–lŸt¹M©+A£²×Éæn¦»Wc¥8°ÌßJ( €¾Ý\T—šªo7ݯ7å8í•…q´ÑýgÄ}? ò\G¤^n}´“Ñ”IF£!mQ†ÏÇËWaó|hL†–aŽõÐÔëüìüŽäÂendstream endobj 1096 0 obj<>/XObject<<>>>>>>endobj 1097 0 obj<>stream xÚ¥VmoÚ0þί8išFU’¥­Ôm*R;ºVUê“8Ä[b3Û)e¿~g'…’†Œn‚ðÝ=Ͻ›_ \|yàÛw6\ÇÅ“õCÎÍ7Ÿã³×ëàÓǤUèö»Õ‚αÿVp9m´‡'à¹0¶ßéÀ4´Dx4?À$KÐ1… É”¦ÍBjxl>ˆL˜…L‰†Å® ãÊZ||1Ñdþxp0ýÑpáÈ0…ˆ{…šôYŸÁ=µ`¢%%)ãó õ¢¤: ÉTu[p'”b³ÝI–rü ©:ƒ»ëË-#ãõUÎ>ÑD«s׈ÛÃÓu¤Gß(^„á€hr!%Y9޳òJŇ³Üv“¥BÞsº‡ ¯An1®Ør¶^‡d¥ÆÑ=¥?«åטPeE[nôœÞ[š Þ†°°ò‹´MDJa.É"fIŠº) ¦î"IÄ’†0[ÙJ…‹ÄÁI2ªœRF¬D¡àŸ4, ×hÉTaõØÔÂ, / ¢ØojݦÏ$]$ôñ eÂKÈŠ,!±Ð˜ql=XR[—>÷ÛÝÛÕ,%AYmqg]5¹0™Ýä´ˆf˺ºÜçÞ»(ÊÅûQ•Í?Q®ûoƵÉ; 7 ½×F;§©˜ÖǕҮÉIrÃøO5âcÉæŒOh`zgŸ n±ã–ÆeÄ­ß91‘:oؘ>/XObject<<>>>>>>endobj 1099 0 obj<>stream xÚV]sÚ8}çWÜq6;MñWhšÌäa» “%›¶8›ÇŒ°¯±!y%9”þú½†ÄÐL0B÷ãè^#ñß †ˆ^1$þ/Ñ0¢™íCÏÝ7ŒNß»ç(¥gBP:W8ì6¤I²Û$ÑKÃÇlŽ?@AVÒzNӲ¯€fò£70µÌ˜­`¦ÕÒ 6¿gß¼sÅÑ5ûþÏì¦üØÚ¦•ZJ¸ t]/.¯¸mœ¹c}†ar(Áð¸ fêÍS²n‘F;€žÜai,Qï©çëÚv°ï³ TpµTºØ‰ðwk;Ñ:1( Z4æÈiŒ ÆÅNÔËkgÙ`&»0½Ë1Ÿm©ñ.Mœ×˜kc?±ÕMy‡øÐIð/u“+ çëÐ «Ž &o[Ϥ-àÏJ)ƒÀKX©–LZXR>° ŒeÚå1,ØÊ•¶PnÔëÁge Ÿ „G&4ç=3 Á-±Ÿ¯ç¿pÛ ö KÖ{Þ߉ίno.öµÐõ,Ø|ÂåƒùåN¸¡å–ðÈ×]()£%·Jì:©lEtLÎ6G°šI#˜%3ì &ä5Ól–â»D „PK,W.Y^Áí× /}.ÛéÑX+"ý#Ç¥F‚ðûáö/grÁ󇟶2rŒE/ÝêöêåÖàU–}ž:×±Ò¯n]ýFÜUÔú?îÚK á¢€«ìzÒÖM}áO]©‰æØm‘?ˆ¦ë3Ëùöªõª *këó0 †pEbq'±Q‹MO|^Y˜!øRÖ“¤µm6Jâp//É—d[!h¥6:túy–¡“ÜÖ`¸E§Óé„ÎÔ™Ÿ9î%þÖ®="á+¤' Þ˯UÞÓ®9kÔOpù-j¤’W×\΃ý.û5vHR/Yq œµú0r®› Ï•,ù¼Ñþ„‚ÓiéÆ4¡ªý¡è¢“÷Éð4=‘ŽÂ8JýôÉh˜$£õt|F§aÅþßÇe6ø2øÆKÛ¢endstream endobj 1100 0 obj<>/XObject<<>>>>>>endobj 1101 0 obj<>stream xÚÝVÛNÛ@}ÏWŒ  ‚ïNE@A ê…T‰—½¶·Ø»éîH¿¾3vhIˆ¥­*U‰xvæÌžãñŒ¿ö|ððãCÐ|“ªç9Z~œtN¿0úxŽãÏšCF®Ð¢Õ q?èXð¼Õ Q¸»z!Œ:’QGr?Z‘ü`Üs‡à{0ÎóÀ÷aœ6,Ñ’lž±»—¹-Þeç…º•Ÿ>޶Æ_zìPDºyÁµJÂYÝãÝ9Ð&øŽ÷zî4žë€X¢ª+(@P L™¶`ÇXf ÚrW›²®&\“cR0͋ɮ¶œ… ¬Ã¸X–ñ#•,g ì0bRr°üÎnCÉtŽH¥×sˆ²„[¥¯—¡yÆêÒîA?Z\Y¸Z¡É~ðPÉ0 gòQÚ±º,Ô©iœ˜ éþDÕt ‚ÒMÝØé£0)Ÿjž0ËS0B&̓m¼ŸÓ’%h›Ì`ZÖ¹°Q(d+3µqµµÀ¡ ¥gGU¡`&œKĨÔÍCØE‰>«ªÚXà’5êüq*° rn›Eƒ Ô ª 2˜aü-Ç«1AŽwѦzô¤­õ :\%(>[CP„už à © RšDûZ ÍÓ_VåôýïéÿoºœŒÏF'œ¥çØ!ñóúWèËý‹Š?akŸ¶D¨¨”fá–zÊ„KSdÅÚê·jJÝëÍåyÓÖP7¥­éì:kkOt%û­sÝ#ùØr™>ƒí[ÍÉ_Q,7Ûÿ„É—‹ò“k·&L;ŽóâÉuÁÊš·j>Â&L£©-Ü‚‹¼°)¬m¥Å7%-+]b%V¶ºåšM ‘ ëäô=wè=Á9\RJØ'ß奓vûÐb¬j*WÏ!tü®‚0ØÚ ÞoúC}‡nhm85xØ8ËKʶĵ‰jÆÇ¤’¦Ê**ø™(iêß;`Wyu(ôi¢¤qºkHñÁO¬Ò³ù[íx8'¹; $÷ŇA™Èkͨ.æqâ†#Д,Mw ðel¡Ù]Øw}/lÌQìAÜšýÈõnàù1-{zß®”Ù3endstream endobj 1102 0 obj<>/XObject<<>>>>>>endobj 1103 0 obj<>stream xÚ•W[oêH ~ﯰ8mµm ­ÄC¡´ç¡gµÛrvµR¥jHÈ293.ÿ~íÉH”MZ’xìÏ—±ç×E\<à™?qá:.R¶?rJW¸ëÜáo»ÝÄ_ÿ%‡ ±B»Õª^ht½Ã…þè¢þÜ…† £ ªí4›0 Œ"¤øWßàULÅkÏ!T gø:á¾æü|{…ÕŒÇàG¡?ã)ˆØp;×£/\¸%Ìžø„¥‘~€[)Í´úŒ«á$ñ´Vd-<Tï+‘ܺ^m¦uòP¯¯V+ÇÊ8BfÜõçû­ƒ·MäÞõ&âï3Îuî/.Uˆne÷™&ÿ?cóÂÚwf¯«/l>#Ö;øá€Î£¶ï´TX©*L؇Ϭz•Õ§ ©-ìïÜÀˆ‹ ÐÂù¶×tzµ;—ÎC4òÚ2Á’a½¨¢+W­ ïaÇÍ‚I/5¬#…ÅiöpSÔùÎØþˆ!~¤s§‰ Å[\…€mJ˜–½32ˆë6Y Ùšþ}ôãhõÀ@ÃZ fú4Źí¶ÜC4ß.v?⪂¶r•Ц#4Ýnõ^žKœ }L9jtØQ¥.+É*•¤T{}·Ý>Zqºs£6Ã_ØY—¡ 5½ JõhP*•,QIwØíºg(1èåt´Ò•àI¯Öju:'ZÓœZv ÚÊVo.EÿÙ=ñ"ØAÏÂðÑJdL@oøØº?'ìãÍA<¬l%´êÕºxœÅ™ôgEl+\‰Mo®áÀvÏÀÆÖ"7U·• Ö¨ Ñ÷†Þ9 Ö¡®ÄÏ2üŠéóU°à(†ñ¹nùcâ1 gü(‚Ä`)˜„ØÞhÊ_1ìª8ÝD¨¨<ÎdŠ ¯‚Eª4 QN²°¥M«DŽK {y|âÿã³ ¾s‰š 7_6<6ï"fí6¡ÌŸñìëOϘ¶K%XÉ¥!Y/ˆ"HÉ2†Þ¢9=æ[¯¼‚Wöú;Îhyïmè»âÌ=_Ä“pšJ¦)♃ᒫºHˆbæXïÎs:Í{ÈfÿN½á6 ¹Õv<¯‘­ºÛ©{n£MKÃÑÅŸÿÛ¨Àgendstream endobj 1104 0 obj<>/XObject<<>>>>/Annots 335 0 R>>endobj 1105 0 obj<>stream xÚVkoÛ6ýî_q‘~ÉÐT–e+/ À²­Ŷ[÷i %ÊbC‘*vóï{H©N%«E‘D–yÉû8÷œË|š-(ÅÏ‚²ø[4³4I±r|˜]ø¤ËëK<ó|‰g†?éšECºš6¬VÙ´!»IO ¿mfóõ5-RÚTÈçj¹¤M3ÀJqþŠþ”~'Ô{Öp*¹-ŒhÐê—ÍÇYJo±2lâFR£K/¹…ßO^^ÞR’$Ãoš•÷·gmüTˆröÌ×7Ç”Þ,³°ûÝggØØá?ÜXdC·Ý¡—:z{žd¯òäš*m(z{äE¨e-Œu¿kéµÖ¦aîÃÅÀ~W–w{nØŽÿ­§¶Gß„õ>LÃü§=L‘åœ\Í)“Åòk¯òÐßóJK©Bí¨…÷nÓ˜ç1_þ¹•L±’tELÊAÀå•ßöhS%Õú@N“·1…&ù®Ê'^¢û á~äsºLƒª_Ѧæ`•@Òjb´“zË$ª3è¬ã=îãhÈ9’ý+qKùf‹“¨ºÕÖŠ­ädp5 ˆxÞjãä^¢ ;òÓ8­ÑÇñª©ñEM o´yŽ j®èlØG-[V¢ŸÎ·$âºùôƒî±¶•Í@œq¿à¢ä-ÇC9ùŒ¨LÆÕkÅ¿W'gz0pRÑžITZ ÅKÚ>O£=’$ÝW±Ê'¾Œ1=$>L8Û¼ˆÇm­½,G®…* g‘€ƒ~€Ðwÿ>:1‚uºÅ›«CÜm’pYÓJ~KÓÈö¯˜—î–ò±iðmŒ·ý™ aÜ«Bú’ÿœòdõz¤…¯3@t~HƒÚ† ­*±£J„Iém×uþ¢Ý†°†a`ý©"¾ñ1Æ)¿ÃÚ‰ÂKfddsås$x7@½ÖT³} µÔ.DÙ ã<¤ 3f½ «G®[%„Is`*HBÊá;šF÷|´A.Z!À䩜ßCƒÝˆ’c8g :G!G6¾à‰}>F‹ê”xó2­ˆ$™u½d@Ò2¢s¤¨Ò""‡òl¬¤;xÇž•Á÷åWF7]úbˆ3ò;ŠJ B“ÂÂehLðò£k´ç)õË}ïÑÁç+ÆÁwn¡æ ætdQž”¼m§WQ2í!ÄŒ©¬ã}F¿²ƒ ˆüñú´žöäsÓ+.[å1çÉ®ÅÞt÷Ý˽6×ñŸ8ͳË,¹ZÞP ¼¼ž/Òe\^áÎÏòny±š§Wó,]äÁôn3ûköÓÇã8endstream endobj 1106 0 obj<>/XObject<>>>/Annots 347 0 R>>endobj 1107 0 obj<>stream xÚ½WkoÛFýî_qÑb •(¾%N"‚´±ÔîÕîbLŽ$Æ|(|Ø‘ÑßsgDqèG6@ƒ$­Ë3sç>fôéÄ!ÿrÕ'ÎOl+ ©Trl˦™gÍ(p<Û¶<ª$­OäÚ¾åv˜w„,zèáµaY‡ï¾gEz­m…ðB?f÷Ö:SÛ ŒµŸ(r,íµzéEÖô°ÞO.—^—ôþDïÓ€…VhèðÃéQÿ,¼çŠÍ^tË7ü†‚ŽQŽ¿0¦…Œ'†˜ÓÔ`†˜Sä×3Ät•š2PÊÄ÷¨! ]¦¾G hÔû®ÐÈŒÅu‡›2Pϳ|5d ÁÐ+S ;¡‰rNž=Ük+þ;§p_ jc/‚ß@åðÈo/æ4c•=fˆ`!à¸zДΜIS†?öp¯)w ¨;@fÌ@ h8 Ç”™A}d † p®)EG&jÈ9ùöÐ+SêûÇlèZäþC,ÉÑ/`F Œb®»¨Ç ‘`sASfŠgp¯GMYšg ÷Ú³›N®3åêt¸sØ÷ûÉß9>¬* pyT=† æÙCeÎì)DG¥Ëv†fC^.yÌz¤ÝxœœGXCË5¢Á|˜:˜( Ñ÷h™¨hŧgÿZ4¢©)+7ë4“$ ‘íïdELÀë2nsY`AZÏ–¡KYaNag܇ˆË›ÂÐéY’¤Å†äç¦pvWV0ÖÖü®ÙJšóû…ŒÙ­¥hÚJ²¡Éùìà¼McÏfMK,ï¼}l[MdìÊ[Y­Û,£Z6íŽÊ¯©©)IdYyKû²UB’ð׊ÊÛâàeC»ª¼I™ÐÕž¹mÖ¨Àiì(/nÓfÛ¹aÑ(‹E€$¥ ë½jÓ,¡z'ãTd]À#ÊÒkIE›_ÙrMµÈàﺬHÐNTM·™¨ØxÒÆÍˆrQ]ˆIê4 œˆË¶Pè pðrƒ´H6±eYšÐ¨'ÔWZæŸwÒ­8Äg r41™ „57²Fi¡ ‹ËbÂ4ªåA¦´{K`Jª¼Æ®tª\wÉ3°ÁuZ$ _—œ ‹z®•‹ûÊËZ¤ù¿——g´˜¿Z^üòn1¿¹Ýs®2r)EÂuŠ~ésâMÊĺAŽ›mZ£ØSÎ2ÈÛÓmÚmÓ‰2òù •¨m¡û²C½t¯ÊØh[½¸ŸþaQ¢ê>¶uCq–Æ×¤§…ãuÓbð´8ÝJÝßÉ);û±ÍwÊi˜Ùí¹STœÖÁ¦æëüX2ò³ÈwY7*´_Ù¢ëÛ¦¬Ðˆõc] ÇÊ¢Ìe¿³E‘ý¡Íu…öm~ ;YÕ%&gz‡ÉqhÙçSÐgÝ9†1׿ÉyNËJÄ×Яz ™(jø:²ñT]b¡lå†Sú¶yõ!oq×0þ²ÝÜ¡žå%2º®ä§ó$ÛÓM*oy8¶›ïá’g¸4ÿœjë{Xö Ëâ éDÐ 2•"ùæüJÊ@­½È¹ÃQk¢–߃Šð9½Má7c¹£LÞÈŒ\Ìh„mâD·&):­¶§I¾‡ð¸[Çz?ÃÄç£+/ѬmêïÀÕ©:+¤úGëBŠ*ÞҼؤ…¤_p¤çé#0³–U…W'¶"gDh÷ճѱo·âss0­Ôá$uðÜH8¾)ËAÁ•'F×YÑÈ;ÙˆþRlEK¾ aì $L‰ãޝ¬è‰9×"W,=ŠBõõkÁ#ÇEΞ«yt+¯¨N\HØ+’ãºa.›-¢­e¢ð“8I×  žww\fæ«‘+sP¦v§‰E¬›y—Œƒz9¢C³,ä€Ñ\ú…öS¥÷ šüHQ±âMJu\¥;I¿sÍ—p;ƈRç»Öˆžß.ßêYÂÍ@ä Ö˜&‡žô×() PXëà¹6²¿ÈàÊ{8QiË—7^ÃeQëÛŸ>/XObject<<>>>>>>endobj 1109 0 obj<>stream xÚ­WmoÚHþί!õ’êÀïà•Vi›·SÒk‰{UUzÕ/°{M×KHî×ßÌÚ;*mO `ýÌÎÎË3³Ã·– ¾\ðÌ{’¶kЇ͇šëX(V=·g=ƒoù 8L[òÂДׄ|ßµ¼rïA½À ¶C=׳Ü5t ÝAeÇæ0DÐêcmt!ì4D{m݆4ô÷Kx›úÑI!ÛG|H¡?@'‹E—­Ú2…gýJ°Ú2·ç Ÿ°¾NÁsø½AëkDƒ-¬¡µu ¾ç6öÖ׈†~­­S\·¡¹p£æßK-YŽIU€¿jAÞ 52üP]г2¦Å¢Šé3AÜ`µå:¦°¾Fô™cõêhm1õ‚&jxÚ¢Æ`ãÞ=Ç·! ÒoQìDL m=f Ò(»-Êœ]HQŦ"î³ iþeþ.¤è#ôlpï˜mH£õ4”½ŠZö1nr š"½¬¾×‡ÝöâØÔ)B“ý vûöêÏéÑ­V̺Žó4ú§å@—6ÆûBž ½ ²Í€Ôv µÝ> ¿Qþè–¥‹„ƒw‘b“k!gðj9ûW$ ƒ4Ë5Lÿ¶äR'wp#øŠÇpµœå…æµ¹x¼gŽæ"|3 ¼ÔœI˜g+Ðä\/p—-/ùD‹L®Ò0¯ø6†m$Þ²”»ÃöÚ®¸ØmX»Žº–×YÌE¢¹B]žCÔ ¾'-cA?PøÃè¼3ÛWåùø3G—¾âz<¶&3±[˱P¹~%ËTFB'¥pöæQ[þbÉ’ç¸çý‡£Ñ§¯—ÑèìíIGÄÃñþç¿ûòûøé£Ôg*eÕz“%0Þ_¨ìFÄhõJè9”I?µš1‡vä.±9\q´71ìEðúä VŠ-\YðqÎ%š$ˆ¢Y{‡p:::Þ3Ñê¦Pa›R’´Á•ÂTSPÀ‰ž`ÆÈoŽA&àĆfXÐqêL(^DڂˬC¢h‰ä%º™±VñEÂ&N£‹sS¢Xƒ³¼–ZcM•ª¿2 ÉÑ|Nyj˜`Ô&b“ÌÒ­ýuÝ Ús­¶½VNzmÚKñàqûÅ9~S0ñ.Õ¸•Õ´»;µ*‘fl3Ý+!íMÚ_.U2ü#6¾`ƒ+ʆSV‡È†µ†á–Äb:ÅÖSU›E*X–”ˆŠÎE ª5EB&ÔmÎ(bKéi²°*Ç©ê %'Œ(@%*µº+J‰šsd¤(ê ²•\—"Um"®KÒ û2W—eX7}8á<ÛÅ×gǵÿ`ÒÆ+Î=pûŽƒoè:¾ã|öÉQ?—dgôÎv-·7§×t#,Ѫ¡‹cŠÎºý2˜Ì™Ò›|a M=CÁEû˜=¢¹˜frÍïr¸1—,Ü5fÊÅ´®6Å£‰V8{hꟲe£ÈLöðž¤| ó—1¶ÈºL²¥4ýœ,«èPg=®Ü)__;î«ql”ÁœÝ”œ(ÏÒåÔ5/©lzÊ#¦-÷{ÓÖ¨ìx”x¡9V!1~h¤B"ŽÇDEü]& GªEòCÕ•üÂ8E‰~Äjô!²Šñe-üç;3ŠÄ1Q„Ó~º<2……±ãÞršR̽ëõ=+ôñŸéÛu|ó8èYž×+»í„Ø;ÜAGQë}ë?{÷.endstream endobj 1110 0 obj<>/XObject<<>>>>>>endobj 1111 0 obj<>stream xÚµWmoÛ6þž_q0à!YY’å—È·KšY×%îËZw-ѶIt)*N6ì¿ïŽ”¬ËY÷aH›¼ã½<¼çxùzä€?¸ú×lëlå¹ǶPÃó¬1 ¡5ÇX–GZ6°ÇÖY!kˆFŽåæ"·.òlÏòÚOyî¸tVì!®h²¡ÓØý¹}m”Çhg1ŒÎ0³ˆàŒa2Ú)’¬²ŒÁÚ–SV×1¸öÓ.¥Õ5JÇ“ÚÙFˆ®£É†Î¶1§f¦´7ñÐ’ ]Ê»MRgߨpp†±åH˜Å‰B¦S/e•eD)¬®QŠI «ÒÊ‘ÀT¤Õu Œ¶z¶ºFé¨aY—‡gëzÛOÓí9 ÌÚ$µZk1æ”èÒmuÓ"©Uû¾±Áä D“‡ö܆›6Io-ÆÜƒMß¶lÚ$5Æïs‡‡$¦ƒhcM?­¢ZÛ©™{9;ê_QLÌ–È#¤±hhnÙ0ó/Y¼‰8xç0“Ì¿“°…Šˆm œÌþ@C2€fl8uñKpp)…ìA*@­Ãðw-¶ð$2H8žRR®² íH¸|T’Ýq_…"! `áè ü5“ –B¢ù4ó× ò,ÎIͱFîã5Ÿ¨^5ø†ÅܹèÜ„©±Ü˺CNwŽª'_‰€_…‘âÏcRZHuÍ$é *>cð*”©z%¢,Nf¡Š(¬w·7‡ÍVôß³(ã©9Л[ßÏOŸ»SLÍž6¤ÿöúeMígöøfñËRk;Žm×¥arªBh ¢¬¬Óç¶ÂgSVÃJYÅ–ü+†kpŽÕH²”§jì7¬‹5{à [¾HCÅ{°È”©ÜÚBëæKå†SHð~˜Sqð<µæâ¾9e4-_Äà³¼–³äÌ_£…m¨ÖÉ(­è÷¶Û­ÕX 4.͹Þí³î°Š@ÈUϲ¬ù‰”ß–%ªæ ý>ARl×!t'¢ ¥ ¡ÌRXùAƒÖ EK* BGCÐg&‡ü¦IÉ}!ÍÙ4 ¸á^A] ~Zj~¢?˜n“ž^Ç™ Â0²,ì —©HÐøŸhÑ(û€Z3¾H”¾" Æ\<Ë/þºïë¥p Š­,¸ª\"9§û¢n€ièhs?k¥6"Ÿ,;†]e[·1F3GÜ´¹<%QæsM„‚é¢NÚÓòeˆÕˆìÛÚKB©2Õb0øÏOÚ{ÔX]kîºt3èb˜óNWâèþBw¡×Ýò%—\þ’@ï¼K¹<®x¢Ìf÷}Šrð /*wèìbÙ$€‰ø÷&þ* ¯ð’EŒ!•ˆ˜>oP ï¹&c5™Òvy~ÃÔZ ²xõóO‹°k ¯ÄcºÄF‹5š*lõTÖ•"”UðÓµÈ"ŒHˆû2¬"ªq5*lTÎÀ¶ÆcË™8pŠ?Ÿí³þ4[õ]ÛöÎíÁ¹íœÛCxaãú t^_Π&´6ë \ÏfoûŽåtðE£·w<€Îi:Ø–ùR<‚cÙf ?´'üîC'§û—Ø×JÕª«ÊäÞŽÔ<Ì+š×-•-15T†IºyjêÂŽ­ØMêDÉVfI OµÑ–ë·¡…» i‘·ÝHõsˆ½·7£Õ{úe'(ê~Q0û ì!fر£ˆm/É¿._ÔH»úfibEƒd q2€nÌÕZX§ÐõñÅGÒ=)žЕ†u_3ì ÝŒ™O@§ýJ/ñ Ÿ4op "gMµ•OMçÇŸ¨?a7Ëâ—åMë;L!f‰¶žÒ¢˜¥æ'ù«¦_ =%OG*íÜ7×µaÃCæ™GªpF¢o›Q̾ķV†Œ"h©œgçš{sAþÆÑ!4  Íq¡Ž&E{µ÷¢ËÈp!Šcé4Xó@¡PôX 5üÌ“ã1Ÿþñ*zd›¾ßó§]çnk5Þ^¤-ƒêù\“OLÏ µñ”þ ñþõÇ sÿÛ¬j¸‚ãêçß¿ûò⹉µrÚOwÓošp¯ojMƒ`JÃâŠßŠ­sa?§x—ÅZÉyf\vÿmZ.: |Õ°—â›–EÊ´«?Òt-ÏC;úÕ—^Ðá̌ݹ²íZ®7ÐVƒ€^ÈjýS£×à ÖbðKÎN„ÚéȵÆü–lxNß±zÛZ®;4ÛŽ×·Çø>:C]ÎŽ~=úE›}#endstream endobj 1112 0 obj<>/XObject<<>>>>>>endobj 1113 0 obj<>stream xÚµVksÛÆý®_±£L§vBAx?4“ªCÙš8RBѱ3UÛ€%‰À²x„b&?>ç.@r,EO§µ%ŠwÏî¹÷ž{÷ñŸ3‹™øo1[þ$Å™iD>;|TKf™†É\×2læYž²Ð1Vq¶ É;|ÐdÛpY`{FÀÏÆ<Ë5¢Ýdפy.³ ӤɶiV?Û÷0Ï¢o/2»¦á3+2 @ØÍU|ÒØDå"Ê’Y¿Fú‘1?€8§"±uk¤Ÿ(D4cDÃæø.ìS ÙŽgÚ!&ÙôkƒÖ ʽlºD²õAŸˆ@+›&Ñãl½l'"ÐɦËT"~°‹j´Q–èeÓ%z”­ úTZÙ4‰gëd;F6m¦âaëëƒÖ Ê­lÚD²õAŸˆ@'›.Ñãl½l'"Ðɦ˴Cl µAke‰^6]¢GÙú OD •M“èq¶^¶èdÓeÚ!–e8ÚY‡(Kô²é=ÊÖ}"­lšD³õ²ˆ`ÈfÒõ{ø˜½=“W¼ç9˜U0?¢›^9{8SÌ‚…þ~"aŠY0 ¾}Tm Ž3 Um ^4\«Ø@#ÊJA»À+" ª Ô%¹T±"ƒªØ@¡ÛUì‚9¾3ð«Ús¡i¤ #Ñwï*Ïv1Á³üþJïZñð⢱ЅW x6½¿tÈà‘ög2Ç1 £Ã!:˜Þ"hú¦˜T={°PµºrUPÅÐ;PA›jKí® Šx­!³ju†!«6Pì.KE›” •T)6jkӻ쀪6PYUUl PÎTпÍÏ.opšl¾`ðâº0è$<¸ç©l@É«ïDg%‹ó,®_Ïÿ C#ðdÁ¬Wï²Fb7šxA˱÷qݰ_³:k¹¼ {v®ã³ +2 ¢¹›ÍÆH¥#Í·ñpì £²/°Kz°ÀDKÒ°²ëvÙ f»ìB®ó /u·Î¹2åª ; ß´Æ>E³âU縌 ~pŽF{çQèY!za¹_ìÚ¾òÜc®Ç©*Þ¬È2ƒÿÆ›k¿”h¼„ÃXÉTTËÎ7¦û½ïÀ7#éÚ5pp©këÊó» Gû ïƒpwAÌEçÃF–8 (<ѹ#© Žm¢YpäÚÕô9.Ö9gþ{Ÿ!0±`X³œÿÊsf³uܬX[¦¼b1K³Š'¨¶ì²ØÂF`?Q>Ö¬²šág%6l+ZVrž‚—Õ¼i×4R±ésSÅàËDIPœ¦p‘¬âªa Q±ºMVÀ¤äsV.¯ä61pcÂM÷WF ¹C%¬oÏOdÑE~NlæNu•åHùM–7¼DeŽé¾4»L3ú‚Éfï'ÿ||ìà¯ñõñu7YU7oDÞå>/XObject<<>>>>/Annots 353 0 R>>endobj 1115 0 obj<>stream xÚ”Ûnâ0†ïyŠ‘ö†Ji€e»WK»¡TêaBK%¤Ê$q•ØÔvxû;ÐÒ¨´+À2ŽóÍ៙—FÚøé€g¿QÞh»mRL:±<_ &+Íô3(2=Ë| ’£¼¿l¹ì~.xÌÌf×ÓIh5®Úi[«Ø`}›8“>Æüͼ!™À)úøþl7>Pu²7yP&…ï×ÒP]Hn‚³Çn§»“ƒ¾“Mº&ù*£ªz\Ÿ¢MkfwÇ4q5 LˆoïyÆÒPja{šÆÑ”ÃbsÈä)lGÿ¡ØØÅ´¬»ŸÐf×F7Y†5ö›”Êäài%Å3¦ñsšú§fæ›Ô÷Ûëu›®·cq;ªT±®2$”èí¸òN>/XObject<>>>/Annots 356 0 R>>endobj 1117 0 obj<>stream xÚVÁnÛ8½û+æÔbJ²d+àC '»’v“:(Џ(h‰²ÙÒ¤*Rq¼_¿CŠr"¯ƒ61$Š>ÎÌ{3Ò¯^!þG0t¿lÓ‹HˆÏûKµ‚„0žLH£QŒã$&¨½Œqws9?°ÒŒ^Ùþ‚IDšÓÜdQ.èƒâ²9·MH¿±ê:Ó‡œW,3ªÚYÚÄäèPÅ—µMÙÃ$˜&€Ô ó>Ýjkÿ½.sj‚”âhÿg ‚Ö2[3 Í”8cZC¡*°ë­3™’_eJâϞ3VšN"<6Ù¨œ bí§S˳€ù-iexV Z½„{ZÁNÕQ Œj.v ™©K ì¬R2Ðèg^ $ç‡Z˜¯hÜ'‘ž—ü!•Ë䬠µ00“­cqè4]± 8–;j ª´y×ß:»¾ 4ø%KõEÇ͇Ã$®¦%5k£ÚÑ5lÒ‰nOíïFÙXް<>`yYs‘Û!ÏJ AÿžìÖWµÕ.ïFyì‰vJ4æ‚ËŸÚ‡Ûñ·9T'‘RiÍ­Ø_¡#'HC‹9Pµ)k㑎qLIÇBE鵫žÙ£Ÿ:´ÿ~”íãð¥)[¹ó.ÂOÔ€|Â1ö¦Í퉊šYÝ5[8ÞÀJžn˜AÅ.ú÷Wwî¯f‹Ó.–¯;n­1s˜]?ë‚Ѫš!²m2°b’U®Vm]4AåjzscÍ|Î)ü=¿½Á¾_ªÊØJ´&5î4ÃB–g9;cú¬¨Î!‡Þm”4ëéí훀®OHP¨…Ö¶‹°c´š~Å¿?Øw£ØB~C±k KöÇÕ+þ„ZmªUa¶V{y¡ÖPYvWÓ–lŽlHخڰ^º ©¥)?Æ“‹ÃR<=ùúõäööd6ƒÏ=Ís_]NH™}2¾¼l–¨ªÀWËžÍôùù®Ñ‰f«ibçpIm•ƥƆ—ÛY›8â_™>qÖ"WÙ7xß”=ü3»†æµ]X};{.W ±Mµv?¦hSãëëÄPô8Ž^;;±^%¾ayÛˆl©¹2Yô%ÃÛ;ïÛ»Åi·³|d[xb•nê5t}yÔÀÚ˜ò"¶Û-iÉVÕªm¢ßC£?ßÂÑ_CüJã ¸ƒ’$ˆÂØM'#2Žšé( Â4†ÑÈ.]Í{w½ÿá/6Óendstream endobj 1118 0 obj<>/XObject<<>>>>>>endobj 1119 0 obj<>stream xÚ•WaO9ýί˜oÐ,I€¶TêI)„ŽŽ!tÜg×ÉúصSÛKšþú{coH6ÒÈÆϼyófüm«M-ü´©~Ór«•´ðäùíæœŸÐûãÉ{*©}ÐyþTÐ`ëËp}ƒÐþÙ1µ“CމÄâa¾nÑ0Ý)ÌÄJgŠ'YJ;‘É´x7üokÿì#µ[qÏ^ÿdë I…™9š›Š¼¡‰ôd´¤J«o•$Sùiå {h¬ ¹KÎX/3,¡Lx¹ËgÀr;XUªð4¶¦¤©°^¥U!,vT6•îSc)íÑ…§Th²Rdää“´¢ ¥WOs»?Û“L~ì'£·—‹Â*Å£t$h,œ‡œç$öØn«)Çnå´©lZ!ˆ.®Idps0¢4çv´(ÃgluUᕞ<{“4̬ƒžÞ8S>§î—ÁÕåí°wyOý+ºëÞÜtûÃûÎo­”ÀpìgÂ6]Ë”óV*ÎG°$è¼KçR,¯«Q¡RºT©ÔõagC'W×÷ýóÄ÷Áˇw?÷S¹J2cêÞ ¼ðŽp`@u’8- æ‹`_9ö°Ï6ŒKµQ‹]ccy'c%ôœŒÏñ˜w -ŠùiEºÞ:1‘kä¡M²Ó?fê•Ñîß×ï®oS’$á?ý;[ÿHþX[>•¶xsýIZÎ6ü¼ŠKÖƒÝË´«I^Ìd€ý‡Q•¨‘§¯šù¬ÙŒw¼Ñœeð\äs®.&µó\fȼ“VPVBœÉn*Ò\~æ€j÷Vœ z|ñfQ95´ô3cëµë–]eòrêbàS‹Êã Ϥe.é4/¶+ k¥`øˆa™ÓÇö1”AéMPÇ!ÏUŒªq¤q@b¡CQN¢¿X8CkÊc7£âC¯ÙfhÉ6/üË믱’EÈM-ÐAqh˜£^Wk:³HpZTÒ’ÊÞ0<Ë¥^*jЩ˜Á…û…)F¢:Åøǃ‡ÉFî¼™b‘ðs€H A'¥ÎáúÇY °q$u¶gÆ{› ›!ôÀˆ3ËÅÅ€ðçîà„-×°ÆÆ’ t(çk¬r€'o À;ÓÊZ©ý‡è­CÓœµr'8 %Þ Úú ]Èç‡Po(«Ð*o˜º)êoN™š%x‹3UšGçß2ŒÎ@âI(1z45Ѩ´REÜÁE´3m‹P3T,Ã{êu ´²•v´Ñ43 : µÆ|3SÃY©9ÓðQ?Õ‚)†=Ñ`)ѦšÆÃ;°$Û‡1oÖ”¯avEpv8*÷(3t7Ô„¬»s#N'RóÂfu!5Ñë/?Ñ =‘ñ´Í®nÃ1S°wü)D‹1öïfìu'NT+Vo2ûgej,èý°SKó¦Ì7L*ÒfáBð pa½æ¼®Zã31.LE¦¡Fͨ{(D–Ÿãd¥² ¢nÏía™D¦3®’ù"å,Æ c;â¯zí¿·þ/à'½endstream endobj 1120 0 obj<>/XObject<<>>>>>>endobj 1121 0 obj<>stream xÚµX[SÛ8~çWœi_èl¢X¶ã\–tZh»3¥Òí0;Š­$jmËH2!LüÉàpé}`Ò Kç;ßw.:îù(øî7ζ<âáÊõÇÑk»ÝAD¥â×¥p¼µ;Ù< æÐÙïõ`2C˽ €IâáJ¼ýi|tðöàõvyÌJÍAÎ ã™T+XÈ”k9Œc#.ø±a†Ã!W)\p¥…Ì[`°\šWÏ&Ÿ·ÙØ¿oa f9L9ùU‡L¯ü Üúx3Ó™ÚOôR¦˜B‚L¤lšr«Åáxò†l}W¦F˜…â,AzŠ[y8¼:8F?ä—²€ÓmmY ÃÏ”§¸ë¼äÚèÓg°Ä³•®]Òÿ«iü€/×j£3yûã€Þ-Œ)†Îr¹$l©12šH5·G;û ! «p·#÷5ÙΪËÍR¤ÕÞ›ÄhÞÝ} 4Ø'(†²Ž›T`èÅz»Ùd¥D¾3%³‘Bj3—-ÐíVÁÖÔ:¦7WUϰ*gvSΕOñ*yg·ÚÃè¾zÁdJb4Ô~Žž¹#+v¹e£»´ÉsÏÃ[g>¿yÐ òÖ®‡×Xoè÷†VX"ùÚóŽÎL‘œÐ¨ž ­*¹ —ã¦xfÄi©1A(‰Lá’ssâ{xÑùØ Iè=‚ç?Žçï¾ì ‚Ýþ8DìT`pG5N9ËËÂâö6p1¿m—i‹d´Džßó{ý9ÿžÿÄy6W'4èGÞ€s„V\ñ‘O¯¹Š 3¢˜|xë”x¥¹ýôÙÏ ™ýÛc׿™Ê˜¥r°AÑH$(•˜ÿç¾)ž²ÕÈíná$`ÿˆZ¶šRôfÏ8Ý~òµSjՙмc¯4[LO6Ôx >ñÏHpa×»Ïm½î0 PʧôNŠOÙtElñÌl$yzÒ§Äøg?±ç½¼ v_ Æ×YýçT-ÎÑËÃÉ·É9aõƨXæ_r¹Ìílåâ‡vcQX`ìõÿw•Î;¶õŒìàˆÿì¿›‚§rôê iŸË\léF}tæeî½¢aàïÞGÄ¥“OL᫘ð¤$f‰I¿OŸÐ^ïwÐyœŠmÜûÖ—Úà½<»CÚð=³A?Š6Çe£©O¦>/XObject<<>>>>/Annots 362 0 R>>endobj 1123 0 obj<>stream xÚ…UÑnã6|÷Wì[à,K²7hÚKÚ¹;ÈCS´LY¼R¢JR§K¿¾³”ìFN‚"—œD-gwfgÉ¿G ÅøI( ÿ²rG1Vîá:›/£3*)IQÚ¿iZGÛÿO³y‚ï‹Å Ï)~­¤|ôÓz4½þ’˜Ö9R.Ó­·aV²ñJJ:]b2Û#.Œ8¾¾ü2ùùîsÇ]ÀqÊ1yCû Óòcã$•Bimv™©¾Ië£ZS«|A—+/¼ã(Q ýüOI¥\ié"N1½>§dÍ»J'Ëð¸7V ­„Û4Jo¥hü©É,æÀ‡a íd%­ðÒ!)ìaNBFÊ­)y]Uu㻥§1Þ÷aa)§IàpºÀÀÉ·†2£›²r¼ `[Ê´–¼òˆ29/?F”u!_æ,çSy¡*Àk…Wl|¸¿u¨çßPÓFr¥{ Äûö£_KRdcøÂ´„¡>àE’ˬª=dñá53ÖJW›j«ªýºþ|KµØÉއðAÔ½‚uUUnl)¼2j dŸNC È驵ª×Ü4þ@Ôâ@Ô‘©$¸VCø|_|`Ïe8  ©·îb=!–2WÖùî;¡AÌ »?¼é$²wA¡=™hv…ï|ÐÊMà~Ü*C¢F{V(ÐèÛ¯oió|èÉÁ5µnvªÚã¤/ /èµiâ ÕǶm£òÙI ²Q†r~75‹ëþÀˆG¥V”Ò£=™7“è@xÎö]-e’Cn…ÄñÐç!a呸(–½Èœ?Þ»ö+¯ç↭¦ºayß±jç#0JZ‡“ãØk«›OW÷Ü´`3ó2dVï¦Ý>qan¢W B¦@á®sâ`¸Y¥PÆpŸ€ÁÂtwxzid•“üŽt<ŸpÀVæ!Qײچ#î­Áœ€IÅ@µð¾†S¬ñÈ ÇWßEYëÿ3‹3¥4Ì´á˜Æo²%TîºÎÂò8È ÃÇi/¦S­ãþDÆîŽ,ûc¢…LÌÞ£kaHVªD'…â±1VÁçÍÖØ¿ú‘šì¬ØlB±{òó”a/­WŸ›=d{çι©òôI¢@XC6öË'záp\\D-ýØSýr…™ÞFãË伿KÒó3Ü¢@¸c…©ñJ+¯¤ãéY-gç2Ì—Ó$ž…å9®çtÑ-'ói¼œ¦q²àOWëÑ—Ñ¿†ìzœendstream endobj 1124 0 obj<>/XObject<>>>/Annots 365 0 R>>endobj 1125 0 obj<>stream xÚíW[sâF}÷¯èâÅv–wüæÍ^¼U›Ä)“ä…—AÁ¬…†ÕH`òë¿Ó= Œ½õå9• »ÒôtŸ>}Õ‹:ø/¤®ü‰VaÐÁóþ'_P'èÐp2 B zøw¿L(×”\t‚!nûŸñ‰l8êƒ#Ù4 oM^ö&Á¨…ÕÛ¯a—>ZúãÂßóÝÉ0éèG{ýãá ”£¨*(ƒ^?W°»ø¿¥þ¨ûÆA·sþ 7¿qО?èöß0Žß0†gŒ˜âlÒ#ù©crûyBa‡¦ ¢Ö£F!é÷h 8‹®îÿ~*Tá(µ‹Ä¤šT¦ÒÝ?:§QÐÛQ¹ÒŒÍ®§ßÏP(VFAíÜÔ†n†ý ÛÁÐÕ—Ô:§òß> êÐM¯ÃÇfæG©é/ãLas/4®„®îÄ$Ý„"zO¥Þxa2Ž­uîlFxŒìj]@>»ZZWÌ®©Xª‚–ÊÑJÅð¬ T+W “—¦ \ i­šlB;[æ´Õs‚fMq™›l뚢2ÏA@L“[ÚmFóÈåzmó" ¯ ¬t²RÏÚ‘Ó«ÔÃvåòšÚ8xŠl™:²t‡ŸH5/pq.r=ã|¾kÀùúH*Žsí\›œ%“ЪL ³F0…¿«¢lX\7“Ü®¼S+MP3»re´$ż.-ÞU›$&Ò”ébkóçÙu›oìhkҔ溤Æ/÷Ù#h„,hÈOaú”Ë:=ŸŽiÁÛX' >G„V6+–M…vË\3ð’½ßëL¿|ù*‘Ê(JMôÌIÀ:[;­ò¥&{¦Â"e6`¬Â@ XPð–YAÎÈU‰´Ï¥‡dgRâ"_’Ð4“Ý&+WsÍ4'­«sþUÒ6ì¿*¾n—ψ{·è~ÛëÒWP!$ÌHUwV¦±å8ßlÖ¢¥Î5ÜW¸S§§¬$¤–†?m4ž˜)ÎÀ)D<¹†£x™‹ŒCÖ¡l2ˆ‚¬¸Ë×LÄ–H·„_“Ei#+µ`–$Î5"«%!~e“~Yë¨8”7Šxú[qXñÁ§Í$o@™])çÊ•¯xÓIY ä>ÐÀÉ>"¹¹Þ—jï+j­Øê#vf×oõ‘A¿S®»CÚÕdmŒÞJs9„•D—€+]‰ˆïèaúë·6=>ϸuÍs»åQÑl!ˆ§¦ðŽ~O˜ìÜé¶Ÿ—•­ª¦Ÿ”‹<£Ä0«”—³+ËóפòØæ¤Lе?‹õZgB'ÚéF¥¥Tä7»˜îÖ)öJ÷ަGöc Û’ñ:Zf&K ï ¡ ÿÈæ4u†ÅŒ‡éTj‡ÿ~¢un ٔ߀‘úœ'µ’b¶å˜¹é/m4Æ)Þ:R<ø¸Çl-4ê±¥Àå4hIžâuK»™KäÑüdó’AlK>6Ÿ¥0©³Ž•åZTÜá+ñ’§YÓN}4y¤ðdÀ»??>Öq­<“¥Ÿ¤’¹ÞMÓÏ&š‡§ö[dµq/—W¯ÃGó\ª®+”gFL´¬"¼8ð3^ÏõÂd™$X‚Íé¥ZVÚ2kVf±¬&<øö>8Î_Αm€¨&&³ôéÅxw^Í]U\bF.wGZ,;s¬&I´,Nç%çØe‰Ÿ’ûMýÇíÿÏí“ßèc™ï?­Þ×…Yé#^ÝšAÁÑ2×Z¡ãŸ!ú‰—Ž¿öŸbÒõË2{ÎД/á†ï²ÝïKp’nÕαƒèlQ™*D&ðÐ8O§ú³9T`ñ×Dã ÓVù–™˜Ì¸%ï9÷ËrV©/ÉFØë¡þìÝ:+ØdÊ 'æzºۻët0«­JbÅ#Œùô™áãñУ+¼Ü5w®úAoíêé.]óÆjeù¯ö[÷vú’«9úìO>jeúö+_20Ö9fgn0¬ù²]ï8ãSÉæ·ƒøqè9$Úí7]Ÿ /jÅKj«Ð©$x«M- ÇH­ ðÜj× &âñ w§ìÝa7õ&$PûãÛ°Ó“×ýAÐíüë°ÛÝv;á€>M/þ¸øÞܳendstream endobj 1126 0 obj<>/XObject<<>>>>/Annots 375 0 R>>endobj 1127 0 obj<>stream xÚ½XÛrÛ8}ÏW üb§6¢EêžÚyp2ñNª¦¼3‰g·¦Ê/0 JS„ -ëï÷t¤HYv4»[©8”D6§»O_À?ßÄbˆ±Hø/]¿FCÜi/vIŸb–LqLF¸&øo•ÈITLÇããÆ“äØƒùDì/Aù|ÍÅx1ŽÆ"^ÄѤ‘]ŒÄþÙ8šŠ$I¢XL'¸$£ht(ÌÓi4 ²#VyL¸«7^̣ʼnz½ì‰z'3°Þ˜~¿ª—eÇpõqážÞñ+NÔ˲'êÿ~[/Ëž¨±˜œª—eOÔ›¸}[/Ëž¦w±OSË¢§iOZ­#@yM+‹­­ì‡Û#ùyy=ñPÜæHäÙh$n3~„;éÅÙVݧf£•=‹¢èíío.¯­ô I }ñ£¶*­„LS圸ŒyXKûàÅåïé7ÑÏìâv¥(ëõ½²À¶±Ê©²ÕJ57M.VºrÂ๬´iolWªR-tú@°°Uâ*cU&îwp€.Δ ësùh,¹Õå¦.3¡•ÝÁq`Á}]‰ÒÀ1¸àtWÊ–ªbØä'î.¤(tù€gäH“Ökç–¹Ù`ŠGùN¨*+îÞ@ùØà€<»%ïÄ(˜"ÅZêB &&¯Ï0+˜M_âÙU–‰[#®áºuÁë{”E­ü›Éû‚¶ç­µKUQÀ 5¼’¶:{G<4>nå*½–„H—Œ(T+Y ¥¸W¢vxò­ä£"yØ$ÉÐCníÉ }pí>¦+0 쀚>ãÓFší÷!¡\t`¡•JW%ðÂÖ‘¿Á©™çø]fKÁÀ“u]È÷Þirï\¯ì¦Jn®ºn?K,º»¸»xúÛîî-rÜú¨wkGPÄ,ëá|‚‚›~R¯%8ŠþÔdЇ~v)Ë2÷ÆëÔ”.ÌVW+¸Îªº­Èµ*2&q¦r]ªŒ¨™y©Òˆñp,”µP—š¬e÷W üU ,•ôie¯à°Àñ¥WÕŽÁ@=ÛHˆÖBAÚKÝAÛßq›‡ oqåˆXÌW§˜øïP ÞixÌùã ÍirfÂfN•À‡–ŽîŒýã«G‹8÷IÓ³µvD¿¶†¬«ÕÝ®¥­$òS*Þ Ø¤Cac^ƒß ™APà*z€‰RI[ìz@þyóóïM÷¨Cqf¹ôfóÛÀ]ËJ–ïNTO€)×ðš,œéøÆ#v™Œ­¢ œWÁ禄¡ëLHçïQ Ê”*¾Xë媢’ãÍ$õMéöô‹ÂÕ¿¿VÀ2QËJ# ™ïžDRÏJÊ"0,‡Ñ:ó€(X I¥7°hÏ:4ÓÚ:ý¨àvp©Þl`#¡Œ<Úï§0°_¨Ó›*´",Δ¢Õ¾C»£`“ª¾%7À9ÖUgVÀ·?jWqÍíWf<îµqT¤a_’“ð 1²µòÍà(™ÐËNæõ`8 ¾vsìûTks{K™R§ôÍœ(÷RkûéööAC7úˆbñzkci祩´øì³ªªÑÈytàn¢ì#Q–ˆí=¥˜ía!|NÕìÏYu7mÀ]ˆd8<ÀAœ9” ÇϤì¾CVh³ÏÚb3µÙÚê£V[•EØy,k¡£>€Ë~[Ff<èäÂÜPVLf„Ó·pnÛ¬üÇ Ý—œâ¸Dâ Ø|.ùÝ–ªT¨?øÆÌ'¥••y®SqNF%-ÏÉÁ¤;tòH\ƒ‚êI®)cdˆ+„obê£a¦^uòÐ=´Ù½iK_#À*¨à â"At  šÚDv"©òtïÛ¶sµ¸þ›@·pŸÇÛûÑ{ó‰â^—Þ[é¦v¦à© .l*UˆT7|ý\†1³¤ž”5n÷eú˜Fñ¨9ÏÌü+èוْÖOTíoæWž€`€&Ç”¹^rÅŠÄï¡uráŽrê`æÑsO”;Pª"€$Š'bùK&_Ù—­ý—,tFæ¦M*1tï<ϬýxXqßG)ÃàOíU˜0å„Ó‡ë2Æé2Cx‘•ê<œ 5ý9.>nÂÅçO·×Âæ)¥ýü¥޾;&Ôh饮HÂá¹—ÏtþåÚBƒ:z¦7?§…t. î]ƒ}ês§ÀA¥$%^]¿’¤Æâ|·1¥¯u¤$x‚ø”ivE0°Ü »°1Á¿ —®‰ š·ÄIO¹÷ǽF™G#âÈh 8øÎ‡÷‹øéI  „Æ=‡,Žûôò:nX6˜!’ƒ8šNg¤â.Áç7·å5ÓfMÂÛºšÏÛyý]öñž˜=«Mù=6ó¦8lSÛñ“Ô÷ØvâýËMýÝv_qÉ,Jfc-¢Å´¡ÏŠø|H¢ºA›=©çsÉÆê”ü°¡xKÓ¼-ñVEQDwvbÙ´¯àdL¾ -|PohôÚú‘P5¾ÐMF¶äkÔGß”1ãh;UÐQ?ÑB¶F­‡‚¡É$šÌbÐ:Èò1ŠßpÚñ.îcŒ¢ºV¾êÙÓ Ó+74øŠÔ™ö’ªäy§ØÚbãwyЂ‹£É< Ž_@‹¯(PéŠ6øÅšÊ¤¦p¯üN œ¯¬mUãÓU7rîPÇ;ø ‡Î1¤ûm9`å´ŸOÿ4™6奡å×^‘9ÊI~ûÓ÷®§›Ð»ælÑ€=w­wé­_£p®Ç©steLxϰ¯q/r¥Í¦¤G–a¸u`Á‘p%½p…u±øˆƒK8_]”<_”ˆ+ìµymÕèùª‘¸1åàªÆé†ÎãÈÇN6½¨hü\ÑŠ8-àá×Mž¯›ˆ/Šfªo-6X´åŒDæ‹h´ ‰Æ9iùM@2M¢nóãÅeì-OÆ“(I&þv<¾Î.ákÆôéöͯoþµeׯendstream endobj 1128 0 obj<>/XObject<<>>>>/Annots 377 0 R>>endobj 1129 0 obj<>stream xÚ­YËrÛFÝë+z¥Ê„ð&1;Ge;®²EÏÔTyÓš$Ít¢˜¯Ÿs»¾@˜½HY&)ðÜÓ÷}/ ¿îæã_ÀBó“oî|o–°ã‹Zá€4ôg±³dæ{S‚-Î"f^Ï÷ œ¦Þ”MýÌ›±8L!^z 6/ÓW›&gPú¦Ž1_W8δØ0ð9¸q`šÌ¼È•×`yc+áÄk°Ž¼Q:ò¬#oy‰+¯Á:òà7ƒuãM¦!Ñ×bÃYö›¼©¤vä5XGÞxÖ'öm^ƒuä¦Îùk±Ž¼a✿ëÈÄÎùk±Ž¼~蜿ëÆg¾sþZ¬#ï4sŽ›Å:ò¦Sç¸Y¬#o’z¡+¯Á:òƱéÂN¼ëÈEÎýÁbyÃÀ¹?X¬#ïqðÝæ5X7Þ(›9ÇÍby#¿÷o”ÝX,¶[®€OyCÔPàÈk±Ž¼˜ÝÉåb1Æk°n KTæÊk°n¼A–ôýá&¯Å:òšéêÈk°C^@Ž/ýJe’˜JÂýe~÷ð1c´5Í—,Å{²i˜yÓxÊæ…!ðÙ<¿ý”=sÕ”¼b²nDÝü<ÿ³^Øg“Ðâ~¾lÛAs eºÍs¡5~/+5~t+ ¶[‹š5Àk¡^…b˶Z–U¥?0|ú0‡ªµB7›¯!»æÛ­¨õA˜ôÀáP#Šèü¼*éH ¹«+É‹²^qÓVM9!^|‘·Iebr @ÅÕŠ”(+á1kÊÌ'ã&pwŠõzBU¦tLôöÆòŠÃ¨ û*ŠR‰¼)e}á•ɉ[ÊÎþF‰dv§j³æù}¡ä®`z-Ûª` Ó-3œÕHÆk ˜bß¾~ae í ü‚ë¹Ül+ÑCrî-ü@’L(%ÕÀY².JÒûhq§9V†dš± ÊÖÚëû„ˆ/@.øÝ%öD^Åáìq-KĘ0“DÞJft0”Ø“|…eÏBmx OTûQñp(vâs±ÙJÅUùñh(±!ØïäÐQ±x(³ßàÏ'Y”ËR£’ÉP2aß´`ÏJ¾íofW|’]6K>ôñ»^t´nxÓöE†¸æ¼ú˜]]¶­9ôaÁ Vð†S r °q‚a^ÑÁEàëfÏæR²/²^’ ³,ˆ{’É·¯Ÿo3 .@¬u»E/§ÊÂäãl¾ßŠ›Í29i–/¶ÓüCÍò'}è†9äú§†¦²]g°­ õ¡WQã‚ÆE+¨}i¹!ƆúTeÛ% ë®öíô²WbkÂp°hÒI£!ïŠÒfMmTª”­Æá;³]‰Ì¹à¿Õ“³Ž8/Óiw}î•wqæûúhl׿­4grÞ’gNV<êï D˜íe«†»J¿§°c>›3x¥å¥ÛÂ+5„–åªU¶[\u˯hcøðÎ|±‘&°› Ð4o˜Œ|pjŠÑŒf—ÉæÓãaÆØž¬o"o":Wå¶Ûḛ̂Ý× ë¨¹RÉÙÐ9M`zêgÚöhŠØ2Mñ~Û¶sšŠ ™_Îã“Õ  íß„À>g­è–Èòx.“§‹»7p êqA}¼HÚì¦ýA‰¦UupØ xÓ`£kÌ.ðüûËÜ.)f1¨e=yüô™}¿/… !í,ƒÓyn3‡¯pÆR(}”¶a¢ydýï?»$ HhvˆOpîŽïtGdõ®3úÑF£í®ó/™ ŠúOI-Goev`À%Å%å+yÍì@‡ï—Jn¨dÚ­n¿6\ð»†:Ö®™†@Yýçc¦ëcF R¨ÁLX´úÐ2Éy«ÔYæ!PU©ÊK2±ëÒ¢ë¶;(±…pµKUj‡—–㨷9k2ßïk¤Ù\µ¬è€8xR6®Iø)îât叿£ÖX˜­ŠƒjÝMòbos¤ódwã{uvfÜà M³Êfнw¼ôO?Øh÷6àÈ%×ëk7ƒWÍOFÌOدóù3ût¥*¤ŽõÒõÛ%rV §Czäæ¡áÕŸýBmO¦Û™Ëê8ÍÏÝ2è½÷¤ÉÓ~ŠØ{îr…€ïr ±J&Qâ…‰áxyÂÉ/VßGjq½©Vâþ_ÿ­½}bÝECDÌ7¨¯CÈI~Ò{¬¤yl2 '¶IH”ÊEœù¯[ õ™ÏÉ9öžŠjËÔ'¼a§7=xàÕþoÁ*¹²ÏGÎXpsÐaN–,Á žØV¢Òúôþ¿ä(ݯE§®Ãé‰|ÍU󎉚ZŒ‘!`÷”åÕ:×÷‚¨Î5µú<¸w-wÄj6m³—OÆîI‡^øîÐÿ0ÚsdT!òÒd_™¯OÌéžhÑh]Ø(^ë%m8äƒî f_ŸY—ïŽÆ"FÕ_I­¹2c#LCoevNü‡À6á0F~…‰½Äþô!ôíîüa~÷ï»ÿÊ ïendstream endobj 1130 0 obj<>/XObject<<>>>>/Annots 382 0 R>>endobj 1131 0 obj<>stream xÚ½XÛrÛÈ}÷WÌ£\EAÄ?f³Îúa]NĤ*Uz1€áb’˜¯Ïé)‚D”ª”-R{ºOßN÷ðO¾˜ãŸ/þŸ”ŸæÞ*Ç—z‹÷¹X…ÞJDëÈ‹D¼Œ¼@ÔJd]‡âøYß[ˆ…z¾XÄx B/<õ½ùœD oÙʆë•_êWko=Q¯“¨'Sõ²ìD½QˆpMÔ˲õóÉñu²ÓôFëÅäø:Ù‰z¡2tzCúûª^–uz/ ŸèTæD¼,;¯?ïòv/ËNÃÆ+4Ñ4¼NvÞÐ_uy ©ê¯êeÙïá¡Þ`¹îâ{S¯“¨7ZNޝ“_=ïâ/nèu²Nï%á½ñ„Çzý[xl,F„Oô·åT½,;Qo¸èøá¶^–¨7ˆ­‰zYv¢^?èê÷¶^–¦w÷ô»˜kjYÔi=Êþiq_ þðu%ü¹Ød˜šË0›”?“äNî÷JÖ"¯„ÝåF$;Y[ñšÛþVâóæ_Ð燾%×»È"OßüøE§Ê8¡s£w"Ík•ØüEy,!î Cz÷›R‰ŸY4Ê÷^×V¥"Óµ(µ±¢”y!Œª_TmÄÓ݆€™nŠTÈÂhñÜŸ}ݩʉz+²¼P²{¨¬u¢ŒÉ«-;s€ä!žè ¬·/ž>Ÿ"$Ïįu­až€&…„ª,FÄ)‰´j«ë\™/—D_ñp­øÃ~¼½=„ooâ^˜&!€YS\ßÃW¿KÚý)¾Gu,–¤ã)ÀûM»|fщØfÇ›ZÍ„4?)2FU©ª…ÕÂÖQÀ«úÿ&f0{U—²R•í`}ØôÃ×u'F–„@ç‹aÀ9…°úèÂîŽõøîûÔovêÀ9ç@Yè ÒUY™WTfgºÕÄ^¼\‹ûÞò|N‘ïùóÅ6ž‹ïºÆÊ*•uÚ©F˜½®ŒÅ6áTæ¾·ë{ñÊòýË€|_<ŒU%i·™ 4¢qOvªØS‡‡3XÇf™zô:¶h[$~#=%|•[5â½ÌUkÁHj‚¹xíä‰p™Žú|IêºÁ‘ÐãúÒ©J ÍtekÔW™ƒpnÐqU©â&ŽÛ‡¯Â‹GâÏÅßÔ Z¢g¦Y B‡j+‚xQŠ"Ñå¾Pø|´lÿ©›Z|{ü1¤u±“/jØT¡ÞTÒXpº$%馚BþþH´î¹)ÅþÒh©*ðV¼)nŽd!öÅßKTÚbŽ$²ø‚¡FÇ@z¥^³úºsmá‘Jaö*q³B¹ˆ¥iM zýL¹pl‘™xn¬È­³,˜½åô vªRý49±›æY†É >ÅÔÍ÷9ýv‚`R„‚‘(„Nk‚²‚'4…UÍ®Ž†çÚ!vxXÎiã"ÓºÆe`A'ôA—ëÛŽ„ñe>ÁsñhiÅaÃyµo\”1 ÝÖãúò­Jsšüæ4×%H€“à²6įiµ2¶n+\+t6)8&8B#øäÀ³v„2̳Ì,éÓ‚q-„\+ÄäTÇ€0 ¼³áH_¬bÓ"XtkA77ˆ±®%·ù\‘Ú€qhóãIiûƒŠv(<ÑÏÒÆ@”¼*zß»Ýc')íQ$X\eÀÔ o&']À[´>:D˜¶2¯f¤%÷ÈD…‘ä,g« qÏ®u‚;î§RûcˆyVy-@~«B–"4lÇmKÞ áýhÀûÔòFås¡f¼ —ò@Ý%ÝÈår¬=•æ;gZ£?+ýj(œeƒ8™âê×jED#³"ä Ï‹/üøY¿!‰æ@­!Ý“ª*ÿoHÞwc_B't›jåW½åpQû‡ ^„ÁßP%|±@è.0l¥ì«®Bñwî¼RõR°pù û2Æ›OÞiãkÊŽîVUúZ•Úžvp‡ñÜê«täÐò Éj]ƒð-Éè’w<¹‡V{ºûö£s}&¾’lÿWÏÁ3¡lâ=}ž’䑺Ť¼œdùÌw¸/m#£AŽ7°ÿ)±]Ö¨'viSÒ ÍW7{Xœ]I DÚð$ÔPRhI9qA³Z¿œÔ-O® ê¶|p¡ Ñ•"Gædw¯†!ðB×`7¸9#&|ȹU\K_Z"î>] ­x`÷Ü‘‘ÈKÀÚ>?žŸÔ´ÁH>ƒÛM‹ùÕdYž8Úî¶}ø¹UÌìŒŠã™øîb¶Äizˆ¾Ì¥P¼ÏêG"ŽD'ΡŒºûHÙ?ùÖ‚‡3AÕ{·0kôkÚ$îaÕ”ÏbÁÈãµmÀ1¼õ…œ¬ÆÕ#îÓ`¶Œé‚H¬–ÌõGx®¥¢Ù9këz§í¸·Öî¹Ñ¡’s“Úg”#¼œ7^ËSëA鯹ižËÜò"¯+4®™z=jåÝX¾ëžT—4w‰ë…ÍKÕÝ*7ºó*!BäÑy ZSY$…i3ï-ù–—MÙI8Ž¥ãpi¸|ÞÞ¤âÁ&õ£ÿfãæ&•»êø]ˆ£OÞK<ñ;USSæ6ÍTÁܺ˜9¢òÄwä ÈkŽ-o)h‚äuk;‰O¾¡˜·Ä㡲H?#™õ DSasÒÛ*ÿ7bÅÝs³â¦-´cú MÏý÷†üC<1d-K\%k¦dYo›’èrTið^i ~iqåt5%n¹¸¨$|¯$äÝ U:ƒF •‡$BÛTèan\¶3Ž.z¯8êÑõ®NÅ9²HâùqÓ® ”¡l’àm·¢„öz/ê0Ë´M;–c/c­wÎß•u—8xwè´4®óÛ[O·šenë0¬]KŠ 8}/XÆ„å/Ào¤»í‹À[†ë6þƒïòD±±{ìGóåC0÷cúè×ͧ¿~úÚúvæendstream endobj 1132 0 obj<>/XObject<<>>>>/Annots 387 0 R>>endobj 1133 0 obj<>stream xÚV]OëF}çWÌ#HÄñw^Zª– ©Uo!÷ ©ÚØðÅö†]›ÏŒã@R,»gÏÌœ9³ñËY@>~ å7«Î|ošÐûÃ>âÓ§$ò½˜âYŒg„^JVÓàYDò<ßgpšzš„3oJq˜zÁg°<æ­›&PÙðS/é6ÂÈ‹þ? `»€ÇÀûÓd €ðÆÓ/x;lÇ{ |Àw'NÔ|È+Øa¥((¨C‡¦C2I¼p v˜I‰ÊCtè°ÃtH¢FÞèK^Áv¼û`@Þ½µÖ,I"üͧúÛül|3%.u¾¤ŸAHPÅALó\|šgç÷ºÎµßXSѲÐeî]Ìàì¬?;Š/ðS¡¾dšâð9†‰A» /M'ÛuºÎ2íåº.tÞQíÒùûŒ¼&‡¸•*ÊÂUôˀɉ‰Owú¥Õ®Ñ91!©¬)LMµi¨QϺ¦‡ó;]ªMQ?Ê¢*K³Öù%}¯Ÿk³®!XV¬ ]7Ô:m/É󼇋“©³`L¥jÒ¯1ï ŽLÛ¸"×d–´1­¥ÜT“BWö‚“±Ý¶0 ê«f¨vâ´¨yR c8GQÄñŸÔ«F¢2B#e*Z‚ÐöUVØS SuNªmžY‘)‘¥pÀ½´…Õ¹GÿX¦XYýÊÕ'ma ¤ÿíúo>ÚîL¥÷“v´.Êò½4ˆ-i<\õ ©zCz$ÿµ®“Ï ž¥ÌT+l>„¾âu³6öYòæ¶ÑöcýV;‡ò‡5 ö\ão—è;r—”K“©òŠV¥V±±îËmýªÊ"§ëxqgÅÛûo*Ð;œÐî=5 µ(áCl”FIS—<ä18„vô.¤ct¢¬è«é»’å…y£ZU3pªªûO˳;ÍJÈeâò6ëë¶Z x863uÖZË^ÆŸµÞ*ÌCP:sþh«ÝÌ8>¾göÝÊ4w‰(ئáp»# Eýí î_hVšI0<•j{\ò˜f¦-sz4£s—$¿J½U[íµ‹r˜—5½ dö¤j8¦éjÜžè9ºSÔ;#ŒsÕÂÑ ‹+‹³u­Ü,˶Ĺ²@Z›Aþˆ?ÏY|ÂVÿ@ lyõñ»â(õä„õðÑ[9oW¥8§Ö)sÝmojtµÂœÙ¢ÜP[«W$(órÛÏzÙ:)·1_XšoPýãÆ R¸\Gn¥*r[;ô©³ðçûS,íõéqRPtûý<Šð–’îÚâÆF:k[4 ¾ÃÏxAÔ¿Läåöü/ÕŠã‡ÒˆXê¶»2?½+œ{Ç^$ÚܹÁUk05î?”Ï:ÎÆÙÏ¶ÒÆœÿ,`Ž?KƒØ  ÓЛD³­ÂqàË-ƨ2Lºå û“qè oý1?û÷ì'c2KÛendstream endobj 1134 0 obj<>/XObject<>>>/Annots 400 0 R>>endobj 1135 0 obj<>stream xÚÕXÉrÛF½ë+æƒ\1˜ ËQÖâ(¥¸èH%U¾€ (!­(_Ÿ7 𤬤¼TÊ%ÍÒýúõ:úpÄH€Œpó?[4dühîðxˆO‡4$,¦Œ49YéT¸¾µ#˜^ÛwGDœ&{ïH‘àW»£¶vST"F£iŒ€=|8;ÂDËWJ]ᤄ`Á~ÄŸœe.'g?„QËšY”åî(Øó/'g5y{dïÙ žDTMdÈ0Æv/–Úà ”@£è?z(¤±ƒÍñe޾º™8«7Ò¿H ÈÍîT4 ‰à†@ r³0"±—ŸÜ^wi×’²¾[eNÒ*-ÿÎóYmVy…E]½¸ùs&£%‚ß¡Çëy¡¤\DPt|Uß 2[rZ¯ÖiS´uÕZqRK9¶AÄÃ&$ŒwÈ<ïò¼"=è´Zº»Úeºª7-i5Ô¶+²–tu]¶û1K„!ñ3ß¡â"O»M“·þu½ìRü¤/²$¤*JˆAáTZLô#¥F1å¡ral}§ÏÁíw«·ù<- p 7bN™$J¯_§«¢,õª'¨¦Ž Rµ‡XMžä’Š$ùxÁõåß@5Fù=D$ö<õ¯Ó­6]íBméÀîÉÇ´(Ó9r§eIÖeÚ-ëfå|…@v¶€hDŠ9îÿ°¡I*µ½4B:¸² #Ó(€¿æéÂàkëM“åH“ñèÒwD‡ˆ#nN½©m%4ƒß×óå¦Í˜ HÞa³ 6ÍÕ€ª1ü2Ԙї"&©öêª||÷â EŠF:ZÇ ™5E–ûWø¨²¬°]F9V.š<÷_Ï®>¥fk}ägº¼ !¯„‹ø‹¦^‘¾3—Wá”YS뢼¿èx:Gz®Š.÷qÁ?¯ºCD U°Ì·uó¾%EwÕ0‰+ÂÞ`ƒNÑ´;äl”dÞ×®$õÒµ#c yÈ$£ÙÉjT«(æ–*d„ˆúŒø’‚mùÿÈÝçVD{¬[×Þx¼¼¼Æí[qjIžòß3KØnÁR!å‰;ô&Ï$%ë´Ëî÷«I EªgGë^³ÖhÎue†Å׳ËâIÞ)Ê’ç[3öÛ;Ï 5þE·öA,XSP¬tAǦm÷Ú|÷år„Ÿrìï·æù-|FqùOrñh‰†Z75])˜6»X?>ј0%a*óä¤w¯ë¦3ƒíf½@“$õr:Õ.Ñ/,iô% CóJ )QÊÍh6í¤ºD^"«pÀ·VÒˆ¹MæMýÐÚ†¤›÷äÞëKkM(h MbªÌŒ_4«t§ËÜ1^î• º½ˆFÑ¿R¾'áhæŠÖ§¦ïR…÷!»¾v5On "?ÝÜÌÜ€¬Âá0»|"#Uˆ°CF^£.6¥›!P¦ô¼c#áü¯.o°V9Õáփʚo»ùK»54ʇ¢ZÀ Ò¥í{ÓðtlY˜´×Ü`>sD~M=1<š¿"ÑL9æ^mвóŠÊ=; Jn‘~YY xƒDQÏÉÙ›k”Áúýfý]_ã¤ef8ÇÈÝÑGš&lŸ£ºÒdÄ%¤¼§iñX¥«"s“~~µö'%Gt8cm¶ì*×Xƒñ‘7UÑ0Qß@Ëðb³ÈøµÍ!oj»­Ä/ÉP+ÇèÉ6mW¯UxýLOì+¥>/a4Ž?ÿ—¢õv%|˜w:—Šòþo LúAäãa¬ôÖùÍÑÛ£¯0÷Îendstream endobj 1136 0 obj<>/XObject<<>>>>/Annots 421 0 R>>endobj 1137 0 obj<>stream xÚÕX[SÛ8~çWhú”2Ų$[~] fº”vwv†+A4¶¨%·Mýù–›“J“HÇçò‹ÎÑ×#‚ø%(¬þÆÙQ€Šb ÿ€Fðd" &¨PhrT툇ÍYÙ á+ïßá ‹^n”NÎê;”Řöî°€vrèêNœtrVwxÁ×¾( ;9«ºE‘€µ> bÂp²ñÎ×~3@‹€9:ˆèz‚¢Å@ŸP†®ÓŠvƃËÂŒ•µhf¦ÙíœJÑí¾Kø/g2ë|úöúþ(@CÏ,عu*³ÕcÔYH‹À…‚”­…Ú ¹:øSþÈt]Üß¶Ü>×"·¨ ½m)Sé¤ÏŽ~Om£òÐ*NöT.ˆF±(ï•ù B'ÚÍý ~³ÝÓùxV¦M3è6‚ éz¬„pq&ïÁ‹«a½¨þ8ÒÁHÁNÖ¥]%³ßÂÚ. Â*¸ø«Dw½78¿º\†ìؤÐB7Â.‡ƒ•øÚµ«u¦1ÔòhÉ»ýªI¼TH½ÑVML¢¾ôì pñ>ì>S™ëŸU­±]Éz”tQŽ€í“ÁäÑoÂâgQ`[0·jš`Fùn47ºÔ;c%z¦¢%s·®<®ñlTúçΜ[¤sh@²ÆËÐF¨èSzèG8nȈ¦}HÊÒÝA§¡á„è+­*~ ×—™6×êþèLÏtó…¹5γù-J•Sc°©6;±H=9jä°-¦Ã8¡ÇÇ5 “ðŽÐV“áEѾ–xŒZëG[€ "Þ£Kȃ–i/8¨{\Ü‚ó³Á¦ò‰Ìôlý\Ü©°¬'pä-ýFó@±;ã±Ú|L÷"qÌâ."IlÇ”]]oOP”öò°,^YÁHåÜzO|WêËëÒ,ƒ¢š9•à ¥¾C]xðSÐëRŠV1?T±ç½Szºî?´û¿©þôû•ÊS£ÇÚ¼û¦…×—ÑiÅ÷Ôómn[bürw-0甆éïÌ ™OÞŸ×F"i›7ƒup@[tÃ:ºÓÎn«µÄúÖ >æ³9ÒôP˜i}|Ñ¢rpØíÕS§X:YR5Ñ9xõ›œ•Uã%æEø¬L{¦ss²wŒñ7뉿X‡&&ÄoÒ ñ³ ¼ôÁL!òälþÚtb²YhÛLva³m’ˆ³ hµÌ`Ln%ÂFA< ÂýÖéõѧ£ÿf‰B(endstream endobj 1138 0 obj<>/XObject<<>>>>>>endobj 1139 0 obj<>stream xÚÕXÝoÛ6Ï_Á§ÁÍI¤(‰z\šfð~{è ‰¶ÕÈ¢JÉÍœ‡ýí;J²¾L9nƒnȶîx¼ûÝñ>øù#þ0"Õ´>q¬ÐEÝC-áÓA̵¢Ì·|äRø­Zœhö}xÖÌ,ÜQˆC,b¦¸ÌòÌFÛ}Ȁ⺸ÝgDaå)ÔsÛ}F”0l÷ñÞa£n>!í># ˆðû„ZáÞš‹¹&:¨{ÊöCØAó|}–2ÀŸ¢y\±%š½¹T%ÊùRèf‹âD‰¨”jûlþ DÒ‘H‚+ ü;g¯dÍDÔÉÏô—X,R^Šëgf刣èƒbâhtAe0ÞlÉË9¥Ú³¡Á4p¬@å6ßí?¥e?Öjùž÷Î4¤¨Jÿî¬þ¯SÔë÷èz–Ý X”vE<9:ioî6‚UŒÖÌG¹f HX/``;ií‚3µ+púr–’w$‹cmt«$Û³|yÚ( ¬ø+ÃÓ)ù½3rP–€­€ôõû›8-ó>.PÝ™j€F¸– -'éŠÐ¥ÈËÕtIƒîÙ §Nß ›\ÿ±Î¤Mð¡EU[Õ~å_¸}=ÓÊ~syõï—õÉjoðDw`ªr|'R[¶æåÀê¥S¼<µßn’èv®;Ä—"Nxžò­P‡ÑÀÎcìüBpîÙ2É ˆ6`¡³òÀê34ƒ’Hº6XghÂNOw9Ú­˜_0jz'Ò”0*>ª"Áhè±~öƒv{#Øb¡)«…þñÛUÓþž VEÛå]’¡7B¥È³Øú bLfÿ¼ºß•á1`õõm¦.8ÔìÓÉ!™ (nèôYéô­&Î1ˆ~ß%ŠxmôM[=SCöç¶Â_¯!Œ]+wýkÕìÇLïm§*;`´d›²Hß܇úâL¾ºi% ÷ÕeP.aæåéö^_<—뜫¤hÆZÍt°»)ò<ÖU¯©g‘Ý­¦¶ØäjÒ‹ùÉÛ“$"Y.endstream endobj 1140 0 obj<>/XObject<<>>>>/Annots 434 0 R>>endobj 1141 0 obj<>stream xÚµXkoÛ8ýž_Á-°·peK¶ìx?m_™“>Élg Z¢m5’è!¥¸î¯ßs/)Y²“ÁbE×áãò>Î=÷’^„bŒŸPDü/).ÆÁb"ŽfƒÿÇb]31½šñg £Äú‚fæá4Xø™¨;3Ç/%œO‚XÄñß#üòÒ×w£ë+ŽÅÝZLƒñl&æ´˜LÅ]ÊÛ1“ –ƒuçb­dUe…*å*WéPì³j+~¿¹km Y Ÿß}»‹—$/$‡Í>+ÅerWCñªÚæºáÏÛËç´ô%ÖF“ œD´þU)óÕŠTVRXù ¼X±TZÔVñy½3ªmfRQi['rDsá?®ØøðjÌÂ…pn+S'dv©ïmw£FÞ:Ë•ÐFüþñ†¦fWA4‹EÓÜÖ Z`[=Á|ÒlýüÛÝ—ßîx7ÃzWeºtªMOâ2‹ƒé<öš]ç°´jÎ`Åâ :d·…qÇqWg'ÿ4îƒÑã.|<Üþz3úxKÓó jͧÑÏF&O |9ÆA<^ˆ—“6lï¾ï´©„­d•Ù*K,Â!¾¼½& áÕB(û¸àøÉá¼àm}çbüI4Zo.lI2R…ÌrªpLÚ8ÿ$ÞÜþë)÷LB€iŠ¥W{~6r·Í™w=„´Ð¥;¹QbÔ´UÊ`ñˆP¸6²hL:‡õG¢1|äÙm‹ ÇÎo­OžÇ™¯>éQãìÓCçq.Ž‚Gÿ‹ðÿZòÓÒCP"-˜³°G¼wÛÌŠ².VÊú¦+œÌ󃨶ª™Ðk±2zo•±"U•J*•âØ­^îK½/…,SQ—ü}ù\$²+Õî«C/n;£S À¿E¦ÚzÇIÎ2A.+‘SèË ¤¿úz $Ø!ñÞ ¿ª•̳Ê oå¾Èr`.€-J\zü™`‘†/Y·ÖÔFìÚê,iMŸŠ=иi¶^+CŠo²í(K-m±À\³CH”‰ÑõŽ-†&kYçUƒßfU‰-×"b-^¼ÞLvœ³@½ÒyÈlVÙ°×ý,4|CºÚV"ÑøôÆáCö ‡;X„“ Q—Fë‚ÊQå#ÈD¢xüË nî9îK/‚t4!ˆ Zª1ŽÃ7ÊÒA×b-s¤¬t% b­Æ$'²5­1v*±•p¼Ú;³µ±¸FÔwYìr5ôk/êóíÜc§­WEVâ É^ÃW5Æ•4ˆ£*7Y©ì°q$y»÷JÄ0×9ZH8µ¬¶C’°ÎÕ;”X”1¨!«T_áD·8V—9 Ä­nT†a0ã9­M îJíTì 9‘;¹Êò¬Ê¸¤§MÔQùÒÓ&Šÿ.”1Pýo”( ʺÛ;»×F-Æ`yWQžÛÖ<ֆƧ à^„©)Œ­=ž%µ¡Ôá–<¨g›HÔJZ &¢ÿ¬Ài Íæ)¬R+DÂN³ë˜^„®–= ®~¦¦þ„ò¼M¦ÞÕ¹4'ˆ¡¦ @¿´¼ðÒSF“m—Ž„4 î$R>8ؤ=_pl]<®ñº®z "W^$t¾Ñ; N)G ÷ê°×Æq§ÛSUùfÆöáÙ1ðôä°Õeög­×œÍÏÒ‡ÀA˜¦ü‘iŠ¿Mj[,·ï.íY$^ˆäeP96qk¬KF–|0“T”¾¨$.ðÃ34'äIu:ËR–öS´íÌ—ä¤ðÑ牮ËjH ˆN±‚A쪡PUÁ) ~¨šâ¹ÓÖfžþØ%”>¨í˜ÓéÛãˆ2ËËŠ ¸Q•#Õ•*“m!ͽEªZ‡+Bëe[5ìÒ‘&Sp+e(> Ž¥â[íJèìÕÖSv•+²M^ê³,h̃l' åqO‡Ææ6ÁS]®³ 7íLØ"©“È*?AѹÍÿ?âñIWê¤q@„H¦®+'Á̶ÙVÿå ¶ÔÁ4MiÆz-Ÿ;þ°;å°}"*tûÀŠ´@]kfBp¸=Eßë&¶lk!S*0()°z…x‘¸nŽÞÜ\#‘8°*yð¢òxÁ|ÿ£/ödvA(¹WjG DAeÐz š­uÊ'êÅÁ€o?Ýâ,}_ï‚Îwohªvª$ö*}=À®¢.UŠ»g@~(a6Ä 'Pšù*ÑÍf¢šÖ‚¬¥£s>FÓÌòMœL"CºBz3&œåe_èÑY`{é &›¹D&[›‘4&‡‘–ÜÊÞÙœÿ¾§èé±Õ¶å™Ã¨ô@T óg a¨“«új¹G‡¡;ZãéðÊ ÙHÀŠ®@Ÿ^"Í}çO m¿fÁf -IåH/¨kÆ9׿@îãЦ_àG 2‹?tø~Á‚ wVµYÕ™B¯ûù†o–’…#Z(Y¢™¥ |dZ¾<ø+ ùŠƒàûTý…òî}!,\¢­káYܱ¥#ŠåNÚv¯½×Œ/¢ÍÁÛû2×2u~¥+*wNžç½y=EÚÜûØb©x­IbÏf–ûFËTÊ¥žksëIÒ¾É÷gïQ·ž Á ì2žs½ yÃ^Û܈Œcë!Ñ“ÍRÚΆÓuŸ­áÈpM<Õ!pWÈT%”mŠíw­&•ÕÊ¡.? /g«!ó½<ôýѧ|½äxÖŠ¯ùìdY:'ÓÔÑ©~—‘_Ï›T¨…®¡§QºÕÔÄä™U@ÞàQA=Y‹ƒ—Ý«äÝ ¯Œ!ŽËy½éèdf¦àš] Wìàújé:é_ãÚW0Õï£lePH†´Ü;_ øòÉ3®5¯Ô–³‘ên?— ¼¿¥gÂ=zòïBÍDÔ8‡ê$¹¤˜­Dó†kÔöXoI¸НœauâÎóo™ä £Yu/ò+_—±˜ò,‘ƒCªC-º¹{UžÞø6ê˜Ñî׈Ñíýü¥]sÔíªá¾5}å.žÔ¿úäà•Çž­}bͳ{uö’ÐÖ]·¬ã>÷dk?jL ]QKòÿ½È¬ùµá­Rå Ã#­ÉãpæÄ=…j»ø§Ü3—üÁÿ†Fùqiôº½ Çm²*º ¦ódÜôšõ7“¡¾r E³(˜Oü£e<…ã Oã ŠüU8ç£hÆ4õîîâ׋ÿ™^endstream endobj 1142 0 obj<>/XObject<>>>/Annots 443 0 R>>endobj 1143 0 obj<>stream xÚÝYYoÛH~÷¯è}XŒ’±(Þ‡YÀ‰pìÄöNv¿PbKâ†d+<ì(¿~ªºytSÍh0ó¶ˆ#§Y]÷W•o'1áElþ³ÊOL#rÈðQnà· 4߈ˆç{F@lþYR²>ág X=Å2LÚ´Rü(2,âyüÛu)>Ø >ÂÑ]+0 OºûD–!læÔŠ«`ûâÆ²É#ŸOŸ Ø‘oø’ ×zù¡?2ÅD+º‡kî¢ÂB’Œly<‘Ž9q,0d IÇœ„ühÒ1'–í®D”Ï@u}Ö©Ò¨‘‰á¨Ò¬µCE²|ªë)¼ò¨NÅUé ÔÀí£Â©Ò#¡ê•Ï@ U*Æ×•ãëªñuåøºj|;š!Fzšt„™¨o Êg ú>x-Q¥3Pƒo óÚÖ`{ç‰-{b«žØ²'¶êIG !)²ÌÈ6‰& è³-!a8#’9Ò¨ž§+1מb®|*`9’©Ò=E,Ë®g Úü–¨Ò¨n¤„B>ÕQ}…ZP%U:çÄ…:c5ªyh?Ä|ô¸=n6ã]Ñ׉÷<|ha48Å®âh)2ÏHÏ/×ãc:ÕçV'ÊéEùPCTA‚AhÀ¤I­µ?W®Ê’ô]î˜Ò ³Jè*ØZž‘4ÁÃõNËxDší˜í#¨ÒZ®Ç²°vÿ„¸6ÿGL‰k™x~B_¶a,nHƒ ãSO‘yTi-×ã9ŠFšgú‘yTi-O‡7ó€¢Ó#–Š#¨Ò~‚N±  Äuo6Ï·–"ñhgM!N'M¤û˜ZÄY“ˆÓ‰é>f‚qŒL‹ù>f‚qŒLKù>fqŒLKk—Õ#¨Ò¦,>·Ìæ oú<ØC·ÔR]¯Öô×iQ-rè×uk-ÚGÒ«£H<ºÚÑ¡}ZZ Ü#èjG öiq-p˜ ­ڧŵÈ=b‚®vthŸ–Ö"÷ˆºÚÑ¡}ZZ[;G,Ðuk-F8%tàÌg¦ 7¤tOt8˜d$hS=É#²6IÐ¥s’Edf’ KÙ$‹ˆþ$A—–ižc aªsásÍuÞ‚¦žëZÓÃ$LÞ=IßWtß4,®`ˆšäi ÍÐX$€¦jºyJøŽ´ÕìüËc×ÉØff”ÄEœíÐ’à‚~ÁVMN ¸²âÍÓÿ4/ \ &ôÌ;Es€·í höŽ«m—_+ä_\…­M&™;&^è hvI\S²+ÙŠVÉ›ª&KJʸ ë’~kÀŒlJ*FÒú—ФùŽ•u\Ô¤fäkÁ^Éë6®IZ‘N`µ£4AêjËX…ž¶«Ó¼É¹'dnqý Íâ=hª_)-WÛ±)ñjÅÊ$-6(L• a VR°±Ú‚µÀ·g )ZÝÛø…Š>U@Bw´H*Š^ò -+7—³¢ZT´nv\pž¤Y±bnš’g†`æ ßhß§-Ä~–]"ÀتÉ@ÑkZo´âA¨9yÎFšÎ’hs%Î.¾œ?\ž‘óz›—E®?ü ØýïÿﯞÄÕ/i‘°× ^J ò‰–ñ×ϳ÷ûÍ+8‰Ožß(Üïïï®n®Éý§§›û»Ç3rA×18C^⬡à…z€%gDÀÕr:¸ÂuvË6W¬ÌãZçÙoÖéëÅÝã-c_›Ý«9Éúï‡Û/íÏ -÷‰û®iYÒòOHÑ é#Øšrh`åOl¹cd—5›´¨Tøþ~ùp~}I?]^^œ©˜›r©BdF²´€Ì,÷¤¢€¥DwÕS¨J¸²f%IÒ58 µN¾¦ˆÿ5¤tIª´z•þ€Ï2\mÙkA2(¶‹¡Fˆïâ 5ŒcUÀ¸¾¡y¤Åš£¡ß6’)ŒÏÉ9vI^lÜ”/YS£`yAxžÝ½öêÕ¡Nyvq~õ…úüÆ 7ë~Z‰v¤+½kÒ,icøóþü=ÏN¹l¾!äÐüÓ]–RÑøÀ^ãtCWÔ. œ»›»kòržep÷Ì ï&0¢Kp¢›!؆úé·k–Yºâ~‰y™´G‹yg«&}¤l _+X7–TIEEË”5U¶‡$.6¸>È›-_0Àe?—ÕA™èâŒ$hµêé+~©Ñ‡ …ÕW¢~ðW˜¸x°ã‰fšÇ‰ð :€J`ÖÁUvÀ¿ŠõDö°  ª8ø<ë :ÆÞ€yefÀßW‹ÇkJRí«šæÏoN……éšÐ"^f‘´˜ð‹à:yeM«Uü,g%æ=.ÆEÿ™G®Øš¯l߆œ´‚½`a™Žì6€Rvf°°MËCÒåÓÉç“?Ä“Z;endstream endobj 1144 0 obj<>/XObject<>>>/Annots 453 0 R>>endobj 1145 0 obj<>stream xÚåšßsÛ6ÇßýWìõ%NjÑü-)3÷`Çv.3qÜØj37ãZ‚$^(R!)»ê_»(‘Ô"P{w½™»¶ã˜Xà‹Åîg”šo'¸ø¯¾üoº:qGv?Êx¾ë !œìŒ 1”æ'Þ(tBÞÒZ‡N$Í–5~4ĉ¶}†ŽîÔÌk‚xèÖ}<Ïu⽜yQK{Í(n;g^¹±!í5Qç¨æ5QÔ^c>÷jôã¾›ñØ£Œa¿ öÑC׺@#ðý=Ð)¯Å†™šžXH'n³ÁYZkÌ vy2«ij,˜éì‘f–ÓæÑÃÀ—/éèìÀ+*„.£Ö¦=®>=|,Н›µi›uR&+Až×ì+·ïä?ü¼‡¡Äø¢.•„ez²R$³-Ì |uKsÊ‚Š½²œ±B¸JW¹Ë",“ 0êe’#àªw(þ0’@§£ö©¨Å[xG±Ç”•b]”5LqñKQ~­dò ÌçõÖÙfξZˆ"]¿¢sˆì+¢^AüùþãŒÔç v2'è£yõ½˜‹²¥]eMáŒÔðÔ ä©›«u†â/(2­³-¿Óîx¸£ÜåA½u¡û.³ŸìÅJ¨.¡ƒùœd!)y0Cü“;EF $Ÿ"È•˜õø®(ýÔÔdCØ••¬=<ƒG)’7AVä ž&tì)-æ^–˜cjE8·Z L[¡K€B°Aàœî>/ölW«b.ê%îÞû¿ývŽWÃíå¼Û.^¦ŸD™}kCHãÍtS”xî¿zò¤ç7cý%î¦>v>ÜÝ^Ç۟îî'Ÿ&pqõˇw×pswðþîî ~~¸†»À.=¹˜<¼U:Í— ‘—¾²bãr=_þÞ-Åô+UÐoWxÐYZ©*ÅS5WÄc;:ª)R½`~›ü`Q6ÕSäx¥ÛÆ+uj‡›¢¦Nr&§k½uIw£uŠ•…u&k«i#º«(ƒá˜·É¯«ó€5ŸÛd5V†nx’¢¼ÀÕÔBáÖY*(À_ºÜëVyÖ¾ð4Ôi×…™ÐEO[]™ <`®¨"«Bv§´Þ]áM_¤ŒQWÀ4­¼UNDr3|˜ª{ïì²ÝÜ«t±¬å=!/tÌ2âF^ù®ßÙcS%ô¤µ¾lÿ1t]Íf(YaèÒ¼É×XW½Á å5~)òér•àršãÇ>~ÐÓ¯šÑèÜs9Fޝ{ê1ù'[塯endstream endobj 1146 0 obj<>/XObject<>>>/Annots 468 0 R>>endobj 1147 0 obj<>stream xÚVmoÛ8 þž_Á0,òb;qÒ|(p¶Þ (°µÍ0à ØtâU¶2Inê¤d§¯YCÓÔ•)òáÇ”~õBè'„È}’¢÷ ÂÉ(ð«î~çÓËñ—pŸ\½0s_ì¢Y7»É¢›ÌæóNð:Ø9xì¼v^4íïm;ïm;/ÂNa;Ø9w”좋»·íœ»Ù´›»—v´Ýùh¾ôÆ;œrÜ8v4ѯFÈz—½ñÅ)„,3r;ŸL`™ºm´’ôkUijY.mR£HkÚm”¼ÃVýéU`ÐV;p[ö¸¦õj~‘Ò;5xñfŸK k#ÕÓÕÉèdù³´é†œ[˜> á»AH(zVIYÃNhQ Em€w£pÒf;9Ûþ÷ë˹Ý^U¨koòœþà7{¯1C­Q¿åD™¾á¼L¶JÛ¿ê_¢»Å‚ÉcªÈ3&Šw \ÌCªÊnKµ‡ýV¸m5(J³:qH’-&·XÎ-Á0ÀÔ¥÷ìßm÷!À;l«—¨b'‰Uöû@ñëÙ-&rïºAÞa•6GRÁ”ÔÃ5l£VTÙÿ_ijpÐdm™‘Žøák)ë %Iuy¹ùvÓë1©*ÝÕ¿ªlg÷}×T\üV;Ô²þmð»ñÅ¢é×>Ha,|£m@ erUzƒÓƒÁªAÀñ^pq½e<:…Ü@ü2Úͺ%­Î¼ŒP(‚”;¥­(íàyÌŒJ¡7x fðŠ\¹²†¤B§>pš«óue 'ä%Å)¨ ΛßáŸÁÁrKP鳯D°ÇG¶9f”!k¿5!E öÂm±4äP£ `+ “U?dHMD)×°UD•a-© qKå³c¡HQ YB⦕v ×<’¤“- óÍØ`¢ÊÔ<Àö•a+Ò¿oRvÿP[$Tƒ¾ùRLÈ%%»®A¤)ïáå¡Ùª=‘¶3 vŽCúP×ìš3[Ø &ÛJ¦O=˸Œ©ó6Ä&ƒVvœ¦e¾wbƒ@~ÃÅ6ô¤…„¿òX×ÍCááÁgý$~ªÖ窹V®fíòR§7xt\œ_ o>/ã 8ÒDÍ”¢¢q ç?XÆëXe–ÒXõ3­ H´¢A¸JJ€¡É‘Võ(ö롇‡Ô…-ø8_„G¡yè=6på$öÌ*‹²Ä½×—ƒ¦"‘²kú€EâîŽÞ'Åe{£‘t«æUŸÅUâ½%EÝå 6§-_—¢é³9ó‘DTiô3ÕìH]þVƞ˜¤ztºJF'Ñœ3£—×òÔiʵÆ|¤€á‹I·h²lo KÚ¸Ëé:߃'n¤íiÜÓ\Ëè¾€¥m“êõÏr˽]Ï(•ÊË÷®€ï(älºÎm^Ú³3£(ê‚æ…JÎêwI^6³Á·9Mˆ0xß&¹DεÍB¹×¹e’Í‘ú]ŠŠaÃ'¤©@—1¬ŽÝTFGïß? (¢þ_ÒÝOLìëÞ¸r ߯A4ZD öñ©G ¡oWf4šOàÜÇ‹qLÜò4EQì—Ãé8˜£ ŒùÕçeïª÷·‰Ï˜endstream endobj 1148 0 obj<>/XObject<>>>/Annots 472 0 R>>endobj 1149 0 obj<>stream xÚÅW[oÛ6~ϯ8ÈË\ –%ù÷-k’&@»^â®(ÐZ¢m.éITï×ï;¤äHNÓ˰nH ˆ"Ïw¾sõŸG…ø‹(vÿI~!ÖûG±¢0i2›ÇC¼†ÁŒ IË£0˜@Ú?NÎFÓ0·ÎþI³(ðÚÜÇá,˜ÖG¡upÅtnèÝ‘—óñlLZwŒ&Óýý§“(!£hï_ò‡“`D9EqpZ/2º9j-sšFAÜÚk-!7@K°µÎ)‡QÖÇ1žµF¿Øklö¦cˆ=ìµ–¬q -ÁÖš5N;¢¿Î¡t6$÷hü5¸œQÒ| Ž‚ñ4‚‰ k4¤yêØÁ^Ò;ûxc…-)3«¥Ê$ -²Ý_² )¬97I•KÊègó?ém´Lƒ!ëé7Šú“Q§PÔ{¥¬Åµsµ)I,LeéF&U¡ìŽï\žÖCêC8KfI ²ª”EIkq'©”w²må‚Je%YC9¯d@óµ* ÿQX•T™(²Ù¢BT˜ÂI¬Mi•^Ѧ0w*Å¥,$)Çggõ#‡ 1yn4Ù5—´3mM•¥”©[§15¬/›x´uéþþž>÷“Uo»ÝøàÆÏÏX¢”0‚é’¤d+ìn·kÉvÀìïÁOPï{º³å½È7 WnLYªÞ·bÇë­)nqñsO8Ü5‚k=å÷šö"À»º~yõêÝ\¼øðþâœÞ¾yuýâS×éCkã­ÉT²{*F/÷žwŒûn;ŽMÕr) æ41z©VƒÔäBi0µÕ2¥Å®uÂDžЩw‘À'0¼¨\Õ☽/E²f&ìZæAkEjô/–´„»–¯+(©JkrøÆá;.¤ÈúVåò¸uwй¦ñ„ ز£•1)%k£’¯D m•]ÓRnÛz9îJî#ÜňÊ7¦°l`ƒªVýuÇxXgé$‘"?è›ßÌZ­ÖH£’SV¦ß¯ô\•âê½yp(êlINH#ïvZä*¡j“ +wJn¿Ñ•Ùþ ³,kÇѦøhÝà$_7•cϾxд¶yæv¹ˆÁïûôê¨r¸ßûþ|¦ômÙ­Š=2®½‡‘† àP)/^^s&´ &§DÀ#òÐ=›~dˆÂ…ÑÊÄÊôÇ{~ˆ…ÓKÖÁ€¨`ø¤LLQàšH‘e†·}šq‰{%ç.d@]V>T3/t½l—{&:ÏÙPƒe’ȲÄ-VfZZ”,£Û‚ 2èÄ•ƒ‰‚¶FYä uÑp1Ñ{®Ib!JÙAá\ QY‚ÎÖ.ýÜóìÂÔ•:*™QF p*@‰˜@gØMÛ‚K;NyšÅžff :äÞq't—â4‡'ù8Ô1M¿½qW7ï^CÛr¾]ˆ Oõ£ÐÒ'([2¹õÅMó‰ ›Ä™Ž9qz70弿ä’)ùˆbööAÛ¥).¸¤ýD èq³¹´À¢Jç®cÓàG9V>Š•/{f*v¹Aýú‚8 IûØ?ñÑÙ ØDèÃn]»ª5'´/þ×ÀÕ^û&º:à~ àý?F½¾8¿þðúÿíÿ]§»BVïøXåÞ½oõåF&j¹£íZ¡½»Aªñ˜­é©›èÛµ¨ê¦{3!t´¹¹#–ëAÂ͘µ6>/XObject<<>>>>/Annots 484 0 R>>endobj 1151 0 obj<>stream xÚµXkoÛ¸ýž_1È—¦@*¿â¸.Ú^¤©ÓÍ"ÛäÆÎ ´DÛ¼•D•”âzý=CYåØÝvE'ÔˆÃ3gžÌ·£µñÕ¡®û“£vÐÆ“íÇý~BƒvŸ õ^ÃÍ"¦ñ‘·L¨_¿È²¾¿oØoȼeBN¯¡Ô_CÚë/}©·†´ß z¾Ô[C:è]_ê­ê¶sý5¤a²¿†ô¬ô}©·†tؾÔ[ƒÃv§Ù_³tœ7¤õÒ^S³¿†tÐoØë¯:k÷L²z´ƒ)&µ\8¢ê¥óù™'ó–ì;>ÁÛè­™ÿ¦ÚØ2 þ ÈûýþflFÒüèÝä¨uõ’:mšÌ ƒ^&‘Û†'á‰XÙ\ä6Èbš«XRRØœf’¬x”©”­äŒ2£sæ2z>ùô 7úNp†ˆ“òáËíÃ\Ó\›Pbó£²*׆É4—†Tn©°Ò¤"‘­LX»Ò&b±Ci-]|3 VÙ¦¬1:¹üpÍF$ÁFÐu‚Ñw‘d@­ç)€êQZZë‚Bè[Õ™—’YÂ,òl~j`iÑ«Ò$±åmƒäõH²t\«8~Û€zQä˘ÇïìË—­\·ghôäÍFÙΫ ~öäÍ ‹Žï¥Ír0/€“®Àì%<¦iìñ“M“u&é°*lˆŒüV€-z±Š^°3â×-gäÛ¦W·âë¹#˜ÉµE¸ô‰wd –ùÆ™R§îuW"¶šà‰ð+åK‘ãC6y>¡‹8Ö«ÛGiŒŠän\m"eÉJ(Ð{öïî‚ËhXêt®eÐ3j>—qpr<5°Í¸›húšêUJKÞ›àŒœÃ}'Œ8 ÔÀKÚ ^á9…H2;Æ…`ù%"-D¼sÞR¦$#•“ÄF*±·"çL`ŽW"eJ8}kX3SN]ÐéUUcÐçªqâè¾pv^|’³‰æÈA®ª&EËö6×¥‚ݲãr½4˜ý\¥{ÛŽœN4k£þ,Ž:Gù/€»ÒüP¥‹§(!Ìê†DíùL›ÉPÍ×ð é€‹ ½r`¯ïè"Š Ð ÔW*_þcì×w[EûAoAþöÃî£Ü½¹˜ +]Rì;ie­Ò©Eý!æÖ:•Ë{ºí fï‰@{Jò{(³œ”+ ¼Ud–YVdg˼¸Àw\ê,¢Ò9Ñn§kÌê»Ò5 ¿éô®à*ƒjïTçÈÊP'ȰŽe§H¥Ë’Þ×dpÔZ¨Ù–2—ÑŸêlå8&]’‚sÐêÖ%ôÝÉãƒÝT¨¨êodC£ du.§ëÜh aý§4«ÌHÄWé4e¨¨Øµ&’æËófx \@ñ&ØjÚCìŽŒÑæÄ£XȃiÒí/gÅâo÷£ã¸xõð‹m‘ p½®,é9KnËš©²W„¾³íõü:'“ñôêöþr4½¼ýxuýa·ÈôQ&(èyF‰Yì:H$ç*•ÑéÖ'+/Šx%ÖnFqùíõ‰3A5 üyqó0šÞ^M÷a XÏ.0D`}„ŸLu7Ühï÷™Ñp»k¿»íÄÛuZFÛffš­Y5cˆUzȾ±ÌGéã^¦7Ð1HºfiÅÙæ9|u?ö{÷ë?•ÉÑû~Ó6{¸÷»‰ Ñ2ϳÈ‹d+‹ˆ —z"ùò|ǹ{¼ŠBÇÕ`{й‡ ÝëWž–Zã¬ÕR!KYjƒ ]X!àä#ú9üëÍǨÛ±yP¸:Ùp8¿÷pCÏv˜db^µZɺÜÝ êÅ ¿ë©õ?¥ú7ް}.;yÐÄUµXºÏ PÈ1”WÖm<´(³g¼zÿßmõoާÓûÑ·“Ñôa<ºŸN&6GGCoÀcT9~êð?8¡ðÍ… tG^èÛjt†«\6çîÏè¤÷å9}¼¥ñèòáþzò™îno®/?7w6Àë‚¶-|w:Vá¡ËóÒ«'c»áh lø˜O- »!Å@ÄõƒÒË«VÈ#(*9j^ÄÂx кpY©ù\x枯C?ø Û7W—èóü¢ùc׳<ÒÀivºðQ—fÁ¹ž=®…¢mÒ¸NMnPÑ÷Rþ<Ö÷ÊŠÈÐi˜ïÌpAÈY%¿MË™—…ÔUírèp7¨òò´^ðíÚulw£11Ù5 ~/m³k”‡rìû5Ôý<¿éÕ¯³à‹Âš.,ÃŒ4œW͹¸fI×Ìp—EdsÿWæîq·üoA³p f$EÂ|UK=}UÓ—qó… X»ª’i¤ œÝ[×’dV!žù_#ål[Þäê&Ë뮾÷=¸»U#iÜPn×(‚‰Ý"¦9®«ˆèw¾—W]‘+F5ÁÖª®KJöWq(ÈË@<à‚QpQ ÷¡…¦+‹CzPõœá&ˆ†çÁ9vƒ3pÖDe0k¦Q¤Æè¼£{Þ ½!9+Ï;­N»çŸõƒn·_>ڃV·Ýé³h49úïÑÿ y~endstream endobj 1152 0 obj<>/XObject<<>>>>/Annots 487 0 R>>endobj 1153 0 obj<>stream xÚ5ŒË‚0E÷ýŠYêÂv:¥TvÆDVnŒÝ¬h ˜"”ÿÞò0s3‹so·IÀxhŽ{³£eÈ¥än4t/ù$‚}Æ­!ö1÷‘¸Mî›Æp(Æ>¡¿µ¯K¶¶f«ãÿVQ¶xv‹hs®BhJ°UÛCq÷C€k醮 ßIA)q£²¸Ó”„D5ãDs"½`™4‚Pê©:Yva?šS5ãendstream endobj 1154 0 obj<>/XObject<>>>/Annots 534 0 R>>endobj 1155 0 obj<>stream xÚµXÛnÛH}÷WŒ&™µ)RwÍK Är" ¾JÞ`€¼´É–Ä1ÉfºIËÚ¯ßSMJ–í‘Ô^`’@áµëTÕ©SÕüu¿5í¿0= <ç›='ßó©;xu:-·[Þ€´¤Ù‘ïuñvõÓõlÐó½ÎÖ³¿hx•5{±5ðzõ£°ÚM:StsT½WÝhº^wkv··Y¿ß}ÅgëŸÛ¯GJÀ(¥V›×´' M޶NSô±Æó=~­Ó®nµ»ÀXð­­Ó”¼Ñݺ¹}Ž»ýÎfõªÍ~}ëõ™}së¶|^bøùênJ7w£Ét|u9ùÃ1{ó|xsŠ ©­5À^‡~ø±ˆÃ©áÜ$öÓÒ¤r©&³2…L ðÄ”y®t¨ŸþÞeØ^Øî°m*Š‚B‘Ñ:äu¨]Í4¹˜ˆl^й¬Ü"N¢KŸè›ZR¡HD¥+RËló¬³ñÝ>~Ùré^Rœrް"~˸XÐõ·kº,œ-µv»9¼We±±µˆM¡ôjçª?¾\]\\]Òd4½»nÜM†_Go™TÙÿ&µ<¡•*m’fqQ±”*ƒ´©4UýÚpWà®ÈÌRj¿€edQæÒpps­BiŒ÷†±@å7;»ü¬ÓU¹YÕ†2S[4vˆ&[ÙÇMð16ÖIf¨‰ÁÅ$Nãg_8ïa)ì48áÈp!ÐùôúmAþü€pÍŠ<:¡GSýïyÞÏž›á= ðløb8þþÂä5²;‹ŸNh"³(EÅœÐÍ…ýïâLHäü„FOáÕ"Ý‘.HFgã!hyûŸÑí D·R$©ŒbqB?ÀAµ4TŸž ½Œ32…–"µªeCø\½¸£'‘挂~WóóJ³r¡E* ©]í4ýÌÖ ô’¬Eð¼"7—P¢ »‰B¸šj4U>«Óì¹9²9hZ_>…IY_Æ×¬°4"‚Ë…J¸Üg² T˜‡ŸA¥È £q†Ð<aŽå¹ˆM¨¥Ìª:f}º× J,¹¸“¸ˆ‘Z-¹¹ÑRé޵3±b£§B TSXéäLŠ¢DHœ íÖ«Ï2 ©Ðv$ÉžÆÉàµDýÙå¤W(PŽŽ9¡2r•<¢•!·Ã*·î¾ìé™gñl†v“°nʤ`†Ö*D°’ÄõÆTâXÍ!ò^$H®Æá÷—Z.—–ÚïÊ= v +”èäÅ’Ù”¨P$„òÔ–SëRªh„ÀðWÃÍý½(R’µq8–%ü•NCUf…^ýüxŒé‚¾J…lÔ×j ÆBg/¸ß×]›Tm”Ù5ç­î; f¢û,ÿpOeÒŠ–£Á¶ï`°Ì£ZoYz07Å!Tw!í=P_‚€`Œ…áó<̤,Èä³kG\\ ?´K$É+hŽ6º.60ºåÕÆ–1rºe3@¿‰Ñî…‰ù‚{sèù{gâ11“ S4U6ÈqÆóñë vÓúÅÒv†‹‹?ñçw¯x*Ð1>pG··W·“Æôöêîó÷ÑäÛÕÕt|ùõr¥ÖJÛ½8Œ½¶L¥íÙµKo'] Þ{fЯGDZ±«ü‹’(•ӣбݼ@ÙŽÒ3{@¤BJº–:á&çÅo(>WÈéÓÁ}5#f¹|’aÉÞsž@ʺ‡zŽz w \I”ý†xcŽ+dÃä²pÁÔ\oàt5òs"?<-«iÐÊž¦w<ÆM£©uÌé<®ð¡j­ÆŠçáAe7sd]¾‚ã !p‡ f8·:ĆâT¾Œ?Šc‚ núÇ›ýV.eÔàW˜ kZ»µCF¹»+}ÑÂ, “,䌃Pר—'¶ x—‡ÜÊ­v`X.bôn«¨2rÄÐۉአ•ÖeŽvÛˆÐs´]-q-2ŽË÷ÑòRAç1äSV¦÷7ª¡¶€Cf£c0÷̵¥/kö£µgUku/ñ=ÄZIDÂ_Z¡»éùie…ÍKXX•™|ÊÁe½Ã➊NóbÅ$ÈJ4°­¦²ž\c¶{d˜¼]”72/¬"(̨uàÌWE%Úrµää5p/Àbé*{Ɖë8G`+ª«áÞ~Qª28ÑßRî±$mTøª«ÅݾT”Ç¡Ý?4æZä „Y¨eæ¸öž}±¢ÇذäóDzÈ~‡Œª¨B‡Ñ!¾cJãúS–Ý·µ¼&;ÝñžÍïvm3GcÒcÝBÁ¥0 D¥f©G¶õ¨h›A¸šóîcŽèûü½~z»¾ööiPœ^ßïü?ßx›Ý¦×k È"í¶ß²—Û¯ÙìT—ƒvÃï5š~Ðá[£éÑÍÑÿ(‰´Äendstream endobj 1156 0 obj<>/XObject<<>>>>/Annots 541 0 R>>endobj 1157 0 obj<>stream xÚ•XkSÛ<þίм_ ïÇ—8fvw … §eÛafGIñb[©í4dý>GòE&IywJCŽéÜtnâç‘Ãlüs˜«~æñ‘m º¬þH_˜c[6ë{VŸùŽOϰT°ç#¸vÏêÈÀ±ºäõV§€¯ÂAfõ1ùB+¬çºøŒ™ocŸ&"d̰² ð'èJœº~Ÿ¾ï‘vø_ e]¥U̺žåq1H`Ë7±š„x»k9hÒ@ýZ†B}S¦Óë4›t 'ú0³FM¨ëÁjÐ@;vó¬Aí6åštÌ<·i®Iõú ¹ÎÀ¥ œ½®å”âlÐ@}^5PƒÚ' Ô InólǶ)Ä ´ã èzkÔ ú~C+“Úï694BÏéÀs5:葹ýâ]—­)å ƒª¯QƒÚ푘µ‰±=Àò©¯ˆ ëô4FYÓ)(Ͷ¦5[ÛDÕQ¯`;€Ï4¡<\“rêÔ˜>çhÌëÀ,M¨ˆ¨I•=Sç¼AeF· ôVdÌúJFdÌ}¨1ƒ¤|o25irŽ×8jÒ¥s ”œï»}:]ØAÊ¿¯U¶ªT.¾)ÄwU½Û5 Üv>¥NÌzT[4AJ$0Ê5«I²œJK š4P•âjÐ@Uš¨Aãžœ“ëœeb¾NÃ|ËV©œE"ÎØf),çy˜¼0™²uF_†AÎóÌ*D¹JÔåðáê8PL­[ŽW¶âžO­øä*GÙL€—€6’ÅüU°‹Tf Â\°`ž†+%p˜ç|þš±j†;½½´²í}%7Ê×0Mü l•±R!ÍH‡L–A±þ˜gL>3 ?¥Å†¿(ßµ+_™šðÁ"ù‚»ˆDÆžN8®¤–üô w“¦ëUß̶l#SÜ/ü…ðÔñ…\6þ-L×zñØÚ¯aûrP…Îi×-užéšÎØãÕõÅ F“o£ »a—×7£€'l°ádÄ‚¯÷÷ãÉtôYûÀ ÅÂöòBÉ»ÐZnÂ|ÉT:õ®(b1ƒŸÓ_p+Gt‘?6)]xé}’StÎÂ*à9õ¯›ËöèæRn®ø|‰Øæe076_Té Q ?×á‚N?zæQÅûú:`4Xbß2|A´è+O¶ETûó%>æ2ÉyHi3ÃDCÈ«2Ú:ˆ·•˜çd=¥£¥Ýê”~=í¡Ìè„zr»=Öô:§žBoe–Sœ’H¥UÆŬýÈWíûT¾mÛAž Si§g{EýV’V8 L¹œÞ·X°ÍÈtøâ–‡QÆVÃÀs1çÈ›*ÕCü$ì^¤Q‹…¹(pi?^‰”«|ÿU§YWFo<^Q®ÀXU2VÏŸU^<Ìd´`±àðýqŽb¦³†¯ó¥L[¥c6¨‚è +™JÕªü'…Tæáj¢-BG—Q«L>uôoè2ÖåµN«ÓÊêG\¦Üd¸;Ûnºò¤ÕÄ »ñ s´€;‰Øo–p©Ü‘ò™§â{}ñD f®çâ‚gZ×JÃ"•ç)|Üb?Ä:ç\!ª†³m–íÜ&ŠÁ7‡{Ʀ]“e´\0¬vS5É>âˆz÷~xýH1ØíH~ !;Ûo\ yììÞl6b³'”©¡ å"Å(‘Sý@GSëÿø;Ÿí?}:;Óó<ü%ÔfLz™ÓØÝÿh÷ÿ¹¯û÷ÁžvÆrño”ñ÷nWI[b.õ̪o~5K©®¶^UmËQůG5£Œ'·ÃiÀ.†wTȧô}x7¼ùþcôᔂQv½b¯ å3®o!žß Y5,S +§ÓjÈ‘ÉsøÂÏB‘Z SPZžÑüˆL.7æ|ÒRSÃq¦FqT p³¬»q mÿ+X"xmUŸÄü„Àä+åÔÒrœª1+›uC|‘Yõ>³•ÇE+/äF™¤á¼¿h&ꔆ§ú¤-1MÒèï|‡Åõ¯³j(*·.ÌÁè*§Ü‚o¨æh £Ð»s&Œ¶¿ÂÛ ¤‘±öáþþ\4Œ}!MøT'ÿ|úÔÚ7î:)Rà”Ø‹`¸w<ˆÉ”~a8- uÍV£#×Í£¾-rÁŒŒ¦f8Eíl¿F4¸6Ä™Í/Š”%œŠÇ{öµVÔiâF§Ù×êÊ‚WJ³k7…¿b¥+ýþ­º”·ªb]Vg³×^€jÒEü·þmúí÷Úd†ÚLnÒõŸ±ßĈ™€ps•„Ùz¾4m3z*7—‰¬£ Û°bÏ«€>’ò•lh1Ê®âå] Íú­Ž^“ hûb­¼w Ú|&¯…ªÄÊ4L馻úÚ5t.züãÀ¬˜×)> æ¥Çã0Sï}Cù3¨"´Õï—\4–9JŠúëB†zψ䉂ÅW±Ål½À7™5£`–"Ò¨ŠžÃ•H=‘óìUÐ\¯:FÛQ”ª¾^Ñ e£WçMÃøâOæ`ô,x¾Æ*]ìqÞôMþg¬PF©yÜP[Y‡ÂžãeûÕhÝ,Š*‹*›Þþ—ÖÐz°ÎŒÞ…÷ôë==³G“Éx켟0kg†ðl£1ºÆþfx÷åëðËH?ۇ߆×7Ãó›†xº÷Ý®zœ~©°ëx ³âËš¿PK)‹3|oÎg ˜¸¥®(¢;]Ïr}oç)=P;\kÀN}ßQ7GÝÙŒ:T1þPý îolšÊ5’ýORü·ëZ=o ŸéÝNÛ±=µÜñ-×õõ²ÓiÛ½¶k;jJMŽþ4~…™endstream endobj 1158 0 obj<>/XObject<<>>>>/Annots 565 0 R>>endobj 1159 0 obj<>stream xÚ¥Xmoã6þž_AäËeqŽbËv^0zIê$¾¦q{/hà@K´¬ZU‘Š×Áýø{†”,ÊMöÚv7ÑpÈ™g†óÆýí ÇºøÓc¾ù¤]ïâ”5?Šˆõºv\œz=6ì ½sÖëy`¶<0,¿wæ½Ï:=ïyƒŠuºc¥»µŠ³A?‡½SHëâÀ¾Z;õñaCß}‡ÓÒܶ§øéÖîžw±7eg}¯_ ›8$xÞÐå5d ô}ïÂaº4¸C㹆ëÐàžù@çp:eþ  §5\—÷ô¼¥×¥Á½ð=ßå:tÊú~ÛX—·ß>kÝ4pÝ4h»iàºiÐvSÅë!NΦK“#Ö®NŠ1ßåsp6 ;6aãã_sûƒþ¹…3€~K8 ™²sreÃsHºQ‚Ö0]\¿-Ö¥Áì¸gýnƒÏÜJ×Åëûçp¦ÃuhŠŠ‡ëÐtß{’/\Éý^³KÓ}Sä¸öâh¿ç8Ñ;'Ö<㵆çtß ӥɉÃÖQ—&'ž·Ï:t4סÁ½8ksš\L%¡áº4¸gä‡ëÐp{àp]Üa›k‹£ñû:ä”MZëíµ÷8­JûްîG[¸ßSó§Uëßv:§ KìB¢æ™hxI!A2¦KÓ¥·º4¸§T“®CS^æ†ëÒàöÛ’]šêh¯…Ê¥éÒ‡­³. î ×BåÒí³Ö‰ÝZðްrž è†w5?8¹¡6_R³<ïõQ†}¯w~Ææ¡éf`G—É‚g1ÏF<é°+©Ì÷‚ã»o+™‰h´x‹@–IÄ ÃuÍ5Oð`ãõ*΄ìåhÎã Ï^>ôf·üiþëA—Žðèåh§y‹e,Bì 2ì+$×$wU€xÁj¼uØ÷@¥V£pÏRc1¾q%´*pn¬´4`…Qª5/øH”vgæè2î´”ß"ƒœ%ÔÜò$èl¡·¢Hñ |B¬Gv܉E!6£ïʬ²|é“@Àð0F±•…p‘"f‚„WÌ·n«þ'Ï99côkÞa?ÈB`ÏZvØ=ׯ´?yí°YlD Ž|Øf²Pkx(ËÚœ+¹NyBŒE‡=Jã<¡ÏB—QI:ò=å ‹Îü-&Œ±€O2µ×_ÎS©Œ)윉bAß ›f‰|åë‘Â]Ìdò*̃Êí- ÕV9ÛˆÖÜ7_ñx¤Wø(‹5-jHü².xlÄ”ˆ g‘`=Øz$䨯êq³v'7âUàÔåóLs­X(ƒ2¾c™±X1™%[–ò5EÈ⬯…êªD¤leÉR¾eË8 ™‚/“=qKY0©W¢`¸ç¨ä‘P8 ¶Ø²@fºˆ¥Æí@)3â= ¬&ij!¦Gß·^ÛC,‡({`–=ªqúçdI(ýda&5Ù¥Wø†e•!bBcWc6y˜oŸ.çãïÙód~ÇïÙ×Æì»¶/w¸Ê¬¤ŒàÚ [grCÀp5"*ȉuJV¾Ì‡rm"–¢æÃz\åfÃ*å*AïÇÙÇ–ö»d)>¾Ìw¶ÞMfóéÓÏXU#ÞpB£õÀÂ5<ÊÈÿ€’n™Üd Ž'[q9Áš½Æ*®³üw"3ž°X0p»²:ô+®ÒÙFk•Ù^üÀ+›ÍÆ V±ÈT( UxL?H¼û¦ øÿ‰@¼/d†žÅ³L"=Ô_”#pSž#-…þ&š÷eìœF²Bô»/ iðW°d‰Æx‘ÉoÚByü ˆÍã$eá-‹¤¼|j]8¥>²'éOª¼¤úHÁä$6•¯­à½øº¶`0ÎT~¹d™Ø0,…Ž‚ØEnAÜ«Hdn"‘˜ÈVWEGµô—™Žì ùÖCcG¹ÇƇ#[ÝJ4A´ S/¡ÊrÕïkÌЯ3ïzúc×"óî¦Ïl>e_fã]ú™âò0e³ñÓ¿ÆOì~zËn&÷ãÒññizu?þñs ðÙ™i²kÅ_›"C­0ã@±9Ðr3X BíO©¢¯ÔÛÈ:TÓv‹šMï¿Ì'Ó‡¶¾+pJ÷]5SÆñ‚ÕáfØ4et…ìoÚêåÙ0·¤]UÊ÷”ÛnXÁD;Î"sYVêïzíU+Y&¡é÷ ìX$¦9à<¶›‡Ì4`°bÀ@‘ÒÔäë¹ *_ê ]”q¢m£KK¥Mìðv“äg@Óg×·¦‚"Î5Fí\AZ+M‡>/XObject<<>>>>>>endobj 1161 0 obj<>stream xÚWësâ6ÿÎ_±¥ÃÌ]/1¶y3Çä.¹´Í낯i§ét„-c[â$Âýõ]ÉOuä<]yOÐŽxJÛZJ<§ÊRèP×Åת瞃I IU¶„‹ç©I\}OI6ßs¯j«vÚ·.p >òåF‡.Œ·¶5·¹o¥< ‰¹úMÍn¿¯U7»e_îËF,³ <ë«‚“æqèš%¾Hæm–tr]¾Éûš2ÁZ§ÔÁz¢³°… I)ª"` ´|4KÌFQœðŸÒ%Dq1i¾¼¨2|ÏÕ#™ÓÛX¢¤£“tETâRð5ÆO~¢Jç,g»’îaúÅEPq‘G®ŽˆÏ¸zSØ3:ç˜èü„jJ‰ð£+6×Õ»Žå4âëÛ˜-äû*’ ð޲lâœlO³4%b3ùúÛÍå鬑ÉÕjüÙȇ°@UKóL颖äﮬgÀS‚Åì?NKµGoOà‹ ïS±O ¾ê¨$Ë–³9uÞÕ‰“©n+¢~¢>ÅZXI0¥Rb̶üO£ ³w >^^ý~‚ë;¨/X½4Å4þNkMØ]€:üaZ‹ˆS¯ý•n–‘ ²^2R¬¹jñ»XúuØç=^ ÁëõžÞUPœVà{¾6íÛ'Ì´ð] &—º=¾¼3u8[˜+z®ò1lÛ…ýGWV¬0±/_ÞïÊjÇèñ«V xp\à‘¼GåÍ#oPº²¯5Ý®÷åsA¹Ð;çðÑô´B+=t´ªYè&¯›ìÚ`Aôî¬u˜ÓL'»±Äè†?üèh^¤¯$]æÃd>`˸¾øR3=>ãÄ}lœÑØ;=Ð=ôÚµœ>¾êàËŽc»…æé˜Î9ƒ¿ƒ0íÕ4ì]ø6üøZ’ž‚GzÞ ;ö,|CÔB¯ý–áÝN6p!¨Á— g }ÏàNK<›%TFœ+´GórñiÐÁ\î÷ÛŽÝ1Ûݞ庽|Ûé¶íŽNOCW^ãKã_àiendstream endobj 1162 0 obj<>/XObject<<>>>>>>endobj 1163 0 obj<>stream xÚ­W[oÚH~çWEŠ”hƒñ…Kˆ­ÈÚh¡$4»/{À³±=Ô3%êß3ccl°Û>¬šÚ9þÎmÎuòµa‰ÿ,°õ6L£ß…Ã#^ƒe&ô»F:VǸË2ð;…UC#–umX5Ó7zÕc[F;ƒœ^Ž!„þä½õnßÁgÇê¢:%Žõ˜Z‹¿i¤ckµUPÉxIÝ‘éÇ)¯Ý3‘7„^Ì2„ký?`2Äs++°H#Ú.‹iD»=ô®€hDû¶aÑ‚m;ø> EÑn§d·H‡àXe´H#ÚîçqÑh¡mÚ†S@‹4¢ÝvI6 ±™9ÕÉ íS§€uu\r¬@b Ló ô@#êè€Ð­p­Âr@ ´ qO9@ 4úk9%Ù"¨Ó.'íˆNEåzE}³Žê¸ )µW…2»ÑÝZi¦)5x…2³Ñã¢ÊJPœ/%M·‹FkŒœ&,VêÙ³Xxº=ñ“{a7aáӕɆÏsI¤ÉD$ؽS>…ñ⾆ èÍåâ߆ MŽ‹»ìx—8`ÅãH¤ù«€5çÞ¸|³ÃG´bÏÙ eʹGCAgÊlþ}%7éW#3hiƒSî±Õ½b"º-êL=3®-G1ë7 LøzŒàà¬õFâúØú¶¢1¾ÏJz‘m±ÛÐÁX}m?õigç’…ÔsމáÜçBÂùËNRáÁy9’½B*}îå$ZŒHHsÚÅs—<(‰Ÿ87§ÉãÁÙr)Êðg.ïÉšN˜@7$é ð·1ß ‹TRW2 ÌJ¾ÙügÃGãaZuLü…ËŸ{ÆÈ35O¸æ”Ä®?ŠÖ,¢µ*ç>ßNXô*fÑST€S%ëäó< CïO_>ÝžÊðHúº!ªñd'f«W-Ï3¥¯µ,Ÿ°D½‰H ™£“x˜`9E’¹DRïI•@%[š°TÍiðFS‚9<%^?R—²·j†9s–é?Í‚ªÞ ¼¿ý}‚«VÝYÅ1gï´öû¨ÃgóZ$fXzuè_t·ñc"ê-#Ç–Ç^->e­Ã>-÷£8æõ~ϧÍl ÚùüÌ·jPƒK"HÍ=H&$€åEœDzØ'k61w1m¸<Ü$Ä5–qÂ0W,/õLnûÙ^AíÑxøÐüs6µp·ÜÀ|´xº‡ñì¦Ã» Lfa|7ÍÑÖ=íŠ}»UTXßÁ<¤¯éBC]Áè›ë“hM ÃX^¦æökì0#îg·“Ñô¦<9ž}Ü>‡;ðÉU[ |^Øpá”í| ø£æÙäiq7û\Þ| µ$Û&×Ü–I?WÞÁ=ÌcðÙG¹±w.•ÉUÇW=¤„²¼)Yýs&¸yNöµ:)sH³4¢âåEE’EñBñ"+nPl[il‚r”/ˆâoÌ£°mdæŽô uˆcaÅ8©y¼»‚—D–Z,DUq<ÂÿÙEÂõ9séòò¦$¡‚¦V~é"qìFÕ•âØ+ÉëE1&•’¿~ å,j‹<{U©ÞgXuVΗæÓ¡s~¥òûãëÌ/1ÐÚé·$oäò ù÷”KòŒgÏ ßÏŠ³â`ït*+{_€àEÒå!“ïrîtþ^ò)¢c±%»{½~ÇŽiºä·±ÌÃ4Öïðý—NTçøŠwOø2ôB…ë?LÉšêâÖzc±Ä±§/qºgp7¨å8#­áh‚¯ä°¼üR’éüIBTÑõõ˜ËL4ÕLfO÷AL¿&¸Îƒ Å+Fý!¡B]‡ü‹˜'/xRŸs‰GPºì®môœ>è¢íöZ–éèÏíŽaÛô³Õn™½–mZ‡ÆÀó»zendstream endobj 1164 0 obj<>/XObject<<>>>>>>endobj 1165 0 obj<>stream xÚíVßoâ8~ç¯!Uêê $¡üê Zµ½ž®lw «¾¬t2É„x›Ø¬í”²ý ¤ë½Ý˪Èiü}þf<3žøG#ŸþÝ/ʾ7êÃë øžî7„^У1 <’†ƒº£À;Û`Ýn°Å"éݰ„]{Aß0<ÐñJHÿ9¤:ÙcPÅxEîé‡?6Ü3Ÿ¸9äö%ƒicï5'÷¼pÛ{Ía8¤Ç+¶÷šÓÞ†ÞhtÃþç^Ãé»`«[=†\Κña–Ø‘b³Ømަ¢ÓYŠ¢«”|F\ÃZ3žFES­r¢ÐX¦%D) <ÿ0ûN±]håsŸÞÉÅl½ÄñÄ¢mßB›é©rfÆÍÃs á…òñ·‚“T’¾í[Ž&•1œŠ8‘ŒNækƒ:n:³;]r9#åK%W䬾Bƒ‘áRŒý£¼ûé{ŒLP¡º,[ÿÄ:’œKó®±GÚñ[Rû€5E¦¢ôZ,¸Àw%ox†6¾µÄi*WÅ88˜žyÎÔz|{y¸B “N 3úzÅÖú>ù/œGħZÊ­,”®TbƒûGk³[|w_†ªØðˆŠ8þj+ám¸-«L[‰ë UâElWß^Nîå#äÏû¤j˜QkÊK­™Ïlµà.¿ÿF˜òŸõ„íI¨Ãï§µˆâTƒuè_¸^¦ŠézËÄXI×⮣ÚôÎfŸ¯•’õ~O'UFPfçmÿydJp±8:,0¹b˜KQÓË @UW;f&Pˆ `¨4¬¸I¡Ù¶V¹¦ Ó‘šÞÆÁÐ9øI®œnÄ„“½xtNÓôZ° ¾ªB8kÅ2¦…¥’ 0S—f1èþ·Uq»“ë—²éîÔÊê%7åvR¾HAùœz¹L`)©çÙf¥ëÁÖø31.÷¶Õní’Éíw`^ðÌFA$Iñã²ÐÙŒ$uIr¾’&. Š?A®ÒÆsNÐ ¥u{6ZÓæ×@¡`Ö,ðت~—œ’Ud†/Éa…‘-'ë4h–£Kc ÐDžçQ\ŠMJ~Rµ­Š3”‰&¾°È4ÝÎ?š¸ôcdè «› ¬·r径 2n y¢‹åR*c×nCçÁŸÈ=¢‘ãÛÝnÕ*žÅ’„Geå¥ìí Ì&¥9¡8PC€™bÑ…©IÓˆÀ•BVJYžw:o¼œGJj™/’y'Æ„Qä<¦—/¿ëˆÇã§ùÇëOí¯ÓáYØë¿–U©f?ûÉåš‘p ÑÊÖ örúÚfžÜ ÍF)pP³*6‘1OÖe6ìyÚHÚõ¿î ¿î ÿç=ÁÞ}Göê»­¾öÈ÷z}×Yþ(èÚ@=íB?Q?üR v ~£) :¢:•Òv4+öCoгÖv¿ë¦Ïz^öÊéà¬ã:¡ô,t=k|iüjL²endstream endobj 1166 0 obj<>/XObject<<>>>>>>endobj 1167 0 obj<>stream xÚÅVmOÛHþž_1Š]O%Ž×o±‘Ð)”PPIq8t„{“ø°½©½iêþú›]'Ƹ÷¡'@ŽfŸyÛÙyûÚ" ãCýIK×<öŸlD×tpMÍ›Øø5\[ó c0o)Èt=­¿ÅL¢9Èv‰fm!â¼b¡Õ×ÏÎFÉ­×ymC „j&ôA⇠L?oyuyè[š½%bð[2WGõ{¬B&@”•=X¥µê¢UQû j×PŒi ­Ð †Ws¸J#êõe„öh…NÀ´‰F*h•FÔuêh…NÀ2šæ*h¿*€mÖ}V`y[PF¼$ö˜µ½ŽýJ¨Ûج/£²ÇJ9ã@TSž¡ßV5!µ\> ÌiBTièª0$X1s9µzç˜Æ:Ìæ2í]bB½ nf¡ÊW„‚þ’ok±d©ˆ*Xx›³,?ÑŸýÝêêЕ BÅ5åÏ\ä¾ b ×ÐáˆF±ÏÒPJ_œŽ®Þ+P,S°è[•©Æã³iw–X‚Ðá8$3è ‚”b;éȦB “0±Ä’ÅÐ ð–Ðy.ËCè¬ésFƒ¶­þÔ|8ÄPÿyç3¦Åij“öÃCþ±ý~`°t]öùú$X' ÍŠ“Û‹Ó÷"<Ër@‚Ïh‘Oæ¦Fž;Æ^Y.°øòf{\šÿD:¯èûýá?_eàý£ÿÊs}úoKÌÅé¯n1¤q‹!?Ýb.þç-†ìæŠ'Çʮػ®«y¦¥ú»ZRM{¿à,¿yÝ,>Â,ãkÜ ò%çç¯Ôe8†Ö7=P¯GtS[¶fvyL¬žÞÇNl g­›Ö?Êÿ&5endstream endobj 1168 0 obj<>/XObject<<>>>>>>endobj 1169 0 obj<>stream xÚíWQoÛ6~÷¯8xK°J–d[’äÁÍâ!C3´µ‹¾(‰²¹H¢KRqÝaÿ}GJ–DÅé°÷!­Þw¼;ï¾c¾Ž|ððLJÀüKŠ‘ç.Bè>Ä|Ïõ žº1Ìý9~F  ¡;o ¹ï†=hÄ®ß@Ó/ÐJ ‘E¨;k0¿…ÁPÛS`µ²g©ÎçIJb>gþãoµn{¨[Z<-rXzË¿Ýië- XÄøÕa½eþÔø:°¿ÖhˆÉë£ÝÑȳê¯1ZßvÛ_ë³ üš­á™¤ô®Ê3 N/Åg!ë~Ϙ›¿Š˜rѲéÐÏΰ—Æ‚èUĬ–ÍnÎ!V¿4æÏ_CLÇx¦Q£çå ðv3š¬°N=Ødº¬cŠhàúq›ÔT$BÉÅzÇëûÍû[!¸kE”¼ö.7ŽœzÔß›ôâ~€#¯ !%T’Âò³Q"qY‘.DU‚ÚQ¨ö)Qö‚'T¢F™bT$‰˜T,‘—®öâ3õ´ñð™•)?H¸§)#°¦â™ ˜À¯DX k…& Vn¤Ù˜í¾w™Žnh¥Ý.ÛÿKÆK y®Õ™z’ªj_[Éù2. ¢@q8†ÇÑ'˸V×f2FóT^™0êTùmª‡íë$j©–è|4×Å [H§Ì‘жED¨úßœ´˜N^ÚžG }ª’á>'G*X:Ü_Ë›üœÝ““r[‘íðŸ$ÎrKKõpùüH3*¨"ÎŽã¡¿ÑóÒî¦O—/½XûIö•¥š±œæ´Üª­©å’}§¶”þŸ$äÌ„É^iœA0u¾; ð¼1ÇC›]ùñÕ<†¢êj2)Ž)/+Ý„¸¨ƒÑO/ÔÏϳ¢þk5[ÆAx{묖³Ð™ÅÞÊYÎo(Œâpx«›ðíß»H‰îlE±³ºE]î.Öa_£¡˜/èËv6w}Ô BäÖ÷ج*Ìc(ð"/ÐáÃææ}»ÛÔ—¥®/ ã/ˆ¢(ðû×.õDz&y¥ÙZ´cêß®êØöD‚¢+ôØ¡ßÞ3öŠn¼ÂÆØìÒÛRg-ý·n7\õ35sC⤘¿ÇCסãr¨éN” MÃaf²1X -¿BŸiA“)ô ‰BGœÐçʳT 'z„–¡£Aè¨:ºƒÅÁé[:û'%‰±ësëß±à(rÚËq¥ÁÏà$9ëéQIíuÂË“ùŽ–© _eÏR£ ©s{sóRh6¨AÚ+$[ec+®H^‹škÿŠ/#¦Žx ¬iª@Öju´z‰)v*Åòñ+ õÅdšMyùs×s§òVd+M3žú™Æ3ÍØ$—°ñJ•¦jä³õîn­©{2|zÙ nEÛw­7WàÀf‡æëWSG›$?~o8ÆzÌaÇÛLsÃ÷Gì¹2c[ ]òÒ-°8rW ëáÇ-¦­5ÃIkŒíuÏS–MƒšÔXÖf^oX¯Ç“=Q;Å{ö'½ß1î±= ùvsÜÓ뵫ôÿÿÿãÎÛ™ü•jÍOËkPø÷Ê=-«Z®é¡Ùÿt¥N>/XObject<<>>>>>>endobj 1171 0 obj<>stream xÚí—}oÛ6Æÿϧ8`­,J²e¹·sÚ vœÆ ºaÕ¢#­–è꥙ûéwÔŽ]`hѽ`MåñCòŽw?Qʇ&~1°ªïUrbÞÔì˜i˜0`ÌpðçÀe3kmâüî‡>ÚÔÇ,9ù ¥…nå pó²ë M›€ëƒFl`yBd#—W‘ °½‰L›É¼^‰KtÖp -Lu6îÊ¥s«tMGnͱñw ÿ«MÛ£QR®Q‹j–’¸¤‹ÕP‘ lÃ#‘ x*€ô<-žé6 H´Ìf?šsm¼—hYM”Kt×åݵ…¸t7M:—jtÝ=×Õ\ÏÓ¶Kµlš>—ꦻT£;`ZÎT£ëêq©F׌ºD'Õ¤UC¶È™G`±†Ž‚¥,­WÑ¡<"X”Gd‹ò<-^ Ht M‡æSÃA\¢[XˆKt uénj8”Ku q]Íõ†Z\ª±†Ž>—jt±?ŒºD'ÍOÝÙ¯czZ™©F×qµQ.^i©–šz%«²Ñ1”L‹ T …RãÕìt‘-JGd‹RçyZ¼è%’ͧAG¹Dw()—è%âÒÝ4èt.ÕJÊu5·FG¹Dw(©":tnƒŽr‰îP"îˆì·A§s©îPR.ÑJÊ%ºC‰ôfƒá”˜c*”jÑ¡Ôz;Ê#²AIyD6()ÏÓâUè€D·(Ñth>5:Ä%ºE‰¸D·(Q—î¦FG¹T·(×ÕÜ â5Œ´œ©–ö´RQ-p®VdªÑÝËÙÑrvlk¯Î¸°wà=ó¹Ò¿ÀJ˜à¯åëùˆÙàâd6rÁ«÷j´VgËH<,Ë$ ²Ý÷·¯žŸû¿Ÿ˜ðTN +o.Ò"ZA‘´ vùbMó–ó÷G‡¼e–_@$AœæŸ™;{dOÊ"âi¯‚‚‡·9ÏòïM9è©6êF¼í*æ£5¦ó Þ,yv³Û7|Åã‡,yžÇ"=ºþupÏóúñ/â ÷w[~¼rÄ2þÄxž‰¹õÚgüÅò¨“Å÷qÚD~便»m”ùñÈ8âAdáQç«cÞ+ß¿žf™8ž÷r®h:[ñþÔª¯8ôJ<ÀN”° R(s“·Õpr”e°»³¬LAr"(°ÍÄ ›Aâ„ã„8GŒò»sCFé_xÍý…ÙUF“7O_,æŒ ` Ë©{ÝŸþ4™_ϦK¸XÜÀlñ/ó‰ד›É|êOoê•Fj¥zo×7‹ç³é|¬møm¯"ølJ¡€Kˆ‚ Û²€¸N&î/D–lƒ,HxÁ39" Þ«]c?ÞÇé=<ÄEÉ6âÖH¬ë™?èe^ÌnýËÅ•ž‹©õV"]ÇÍ÷x äU­ƒÍ¦Êh+ýwhU‰ç2È¡, ðD|³•“ŸàÌ8üÎEÂ1@’ˆT‹¿’ÌXï'ÿ¤ê˜Œ»YÆó­HC¹×ºj8^…–I&e^TD`ùPg‡ö4nO Ë’‘/×õH8ã+É6xèb§_ø³Ÿac©«ôïÎtNή^,'r3ï┇ýŸfýéìB'à¬ÞP•áÝù¸6ƒ}<†x’ñA82\ä¿~ Ã~’$ýþGÑ8IÆïwæ¦ù+ô^N}èoñŒ1¢"Ù€¼­úÌ`=|±Àç’e;ЋŠb;î÷Œu&³ìW¿àŒžVùÞ\|Š7› ïàÃæî nñÎÀ?ƒùòr ÃdÏàmœ†xäÀ•/?¸;ïéÛT‡ïÏ´ {û=SݪïýwŠß‚‚aÙƒô3kôN#|VÀ©@>28ÅJ§rÖi'œÁ)r‰°Ì6pº!~þnWð<„ÓŒ¯yƳ¥ÀÉe ¯½Gé|]:ê›3çø@ÁãécœxLÉìeÆûÈäQIÈ«´7DwLjÞ,‡\žÁצIÇå³dÁßDSï´©A Àc¡mù[!"OºD„¿ÝŠ·íÙÍöÙí­“m°Â’ìþ6'Ží™ßâÄéj3†áp»*Œ/‡æ«:/Í‚2× w&þr¬ÿÉ9@ÎÓ¯n¯^¯á23f{6,Êb,3ÿ;°"tá[Nuå·;B¾Þàõ_ ËúO³uwæ îÎÿ±Ð4íÒÏ!¯J’U£˜a»Nõ×NÆ?”ø—õf“ü=vü ¾ÞòÏ\øüL”X‹<¢ÀW¹…Ýrmª8.ë3Ó®>v†e ê™Ó7ݾe²´¦þÉ›“?dN`:endstream endobj 1172 0 obj<>/XObject<<>>>>>>endobj 1173 0 obj<>stream xÚåZïsÓHýž¿bÊU)ÂÅÖ‘d[¦øÀ†°¤²lì;nïrE[‰µXVd’\ÝÝæÀ,$áÃÕÊÖÓ“fzúuO·Tþ¸ç þ|!ëÿ‹lÏs<:Ó~œý¼çÓ’>3áGΰk1ݘ‰`䌘‰(pbàf"60[óy#'À ³5]sÐ8!²€‰}g„,`fíŠ΄”CG‹˜ØQ‡Yl[ËEL>ì¬7°Ö„¡u/bbÇC[À™I+\/bbi$ô$bb‡‘ã# ˜Xò΋˜Ù‘%}'ÀŠKQØœä‰( è“/-q¡Bo8ôLè)ІžæêX3À&ô ° =ÃÅÖ|µëaBÀ:ôдG…°€uè X‡²¸j†EÌ¡çYV!æÐ“ÖȈ9ôbˈ9ôìy•42Ü%š7Ñj`Dk8¥RËÔ¢µ@-ZËÅÖ|J$3!àV40íiD2,àV4Ã&×úöbr¾ ˜E³­BL^òÇ–UˆYŸe1,`öpàD–‹ ¦ÌŒ¤ådÄœó¡e3bbÇ6[‹äŽpˆ¢¡ ÚpÐ\­¿á6á`8€M8.¶æ«å‡ ëp@sÐ%?°€u8 ˜³4´ŒBÌáà‘ó€LlÙ,`bÇ{ÇÖ½1g)°€ÉÃAgEµ«¤·K4/Ñj`Dk8¥RËÔ¢µ@-ZËÅÖ|J$3!àV40íiD2,àV4ÃnEkYÄıÍ&vعwhÝ«D2,`ÎpÎYp"`Í·] ˜ØÈ¶ 1«[¾BL9,íykÑÃh¼#ÂZ@ÚpÐ\­¿á6á`8€M8.¶æ«å‡ ëp@sÐ%?°€u8 X‡ƒaëp0çp@®0oøc›Ì9ZëE¬Â!²¼AA¼«y ÆÐ<)Њ¦¹Z%ÃlD3ÀF4ÃÅÖ|µH0!`-šƒö(‘€¬E°ͰˆyãµGFÌ9<¶YÀœÃ!9XÀäCé[NTÎ÷vµGr í‘­,š«u0ÀFÃld1\lÍWËÖ² 9h’XÀZ`ëöȰˆu{,`v¼m3b]ÓpE¼ÜpW#Âí²q¼´Í)OK«Ñœò´´ÍÅfãx‰L¸u¼´‘–UŽ–v#Ò²ÊÑÒnD k/1ob¶Uˆ9†Ö½ˆYi¹1çW8\/øñ®VÃA«¡@+‹æj °‘ÅpY [óÕ2À„€µ,hÚ£d°–XÀ: ‹Xç°€Õã‚ÅŽ BÛfÄÄÖæ¸^vF°«äûJ¾F %ßpµ,Ò*ùš‹ÍF‰%&ÜÊ"í’ß²Ji—ü–U2H»äÖ^ b®-µ£¥i æ²m[…˜{i¸™“¿÷«4K|±Ÿ%Õ*_n‹µØ_äK:ÿþ¶JÊ¥Ø/’‹¤HŠÛœnÞÎùÛ^M1M®æÅ¼Ê‹§=ñ—žm0]'%_÷Ñ“åqôêE7:xÄ‹z•ß÷Ôß—AxU„‘#üÌKêþÓ¼J&â§‚"!)ʾøuúˆ>In¯•Ã6Kq¦)ÅE2¯¶E¢Ü¸!}æŸæézN¥2l.ÊíbÕ¸ÆiDû~1ÞòXœœÝ œ~ܦˮŸÈ²4ßÑó‹Š"­Lª*Ý\v=‘dÛõ¼JÞq½#+ºÃT¹È7»å$?ˆœ€¾Æþ7 ›Ý.ólžnê¬ýLgOéFC+ÒgGoÞ½:9>½;;~qv<}ùîõÉt:y~rv|4»oDÜ5Aëë"馼ÿæëeWæ““iW·ÁÑײÎ,žÅdÙ`¹­$T줚N°6ç, `'=´vÒCÞIëô°ÙIOg‡õN*¾¶U¯ï«›| ×·ÛU’)1MRuï¥í„SswJ}IªŽ6ƒ®vw’Ãô«Ò|9î%9;/¬¬ãü’:¿¨Äq†µÉg¥ävÞ–C•„ÖJ: Ù-Übxøù?¡òË»¤#X`±(Ât´-ÒAY%Y}L‰Qk½¤W|¢)`–ý‹òüà¯táàÙe²!ï >ÑÔaB傆£Z\òQ?Pþé³»j²RyÞä›Û,ßR¥þ“þ”žµ;í©þ¸/NûÂw}—Ôóû›xÞÄöɘ³„]˜¼)ò›Û¾åÆ—GÓ㳿ɾôÇg—ó>¡qb6mìø!å87öúüš /B>|Ï é.Ž¢¾ *Üçíëm½s³ÛUrS¹Zöô'´-ö9ÚÈÜ›PYîÕÆ îÝd§ëäi¯¤g›A"•dƒ{~^¹—DÏe¹IòéJ_Ðå}÷Ä>k¦±¬ìj²¢ÜïlëÞ&ï§i•ìjìîWí[±è wì}¾õÔ{/½¨þýˆÞöökß×DfkŠÇ”«ƒÛ ´õDU޶4%¤ù²ŠMsî ]]_ì! &5‡MiúÏ_´¿݈ث?%ß´õx‘+}—›A»Ähøâ×_j­¥/~«ðï þü9ÙìCñø‰xž^ßTvƒ·È)På×~Gª'&ÏóÅ6£­œÆÏ7“Ëb~µJå„W¹I7 -)w®W”ÎezA÷ ŒàG¦ì«œ‹?;–îó>/XObject<<>>>>/Annots 571 0 R>>endobj 1175 0 obj<>stream xÚ¥XksÓJýž_Ñåªæ’Èzù¡ÜâC¸$Ýb*Kmöƒb)±ÉcôH0[ûß·{F²z”Z.W¸uæqúôcÆþ¶ç€ÿ9àÊ¿Ël϶‚ ´üÛ²aæY3;c|:øD †»= ¹N`ù æ; †.½{4 M½ >ǾG3ñÓØOïÔÊS—žÈ •‘ÂÕ33ð¦¸m‹13ƒ±g cfA»a¶Ÿ=µ<¾!³‰M—çãL=Tƒ¡ÌF4p¬)G™¡’º3ÜFtêk”¹è̶3~˜È!±2žµÒ*c'mƒy¾5f3¥´>Ø™Á„|j1ff”G|ÞŒÏs #ÃlD=}Yn“ìËå(³ é+K |·OwÂÄ‘F+N)5v3QœyµÃ˜‰âÚrðƒ‡±¥øÑ26î^7myÙ¤f+‘±K·O#¤ÝQŸ.焸`JîÓ;ÔÐQ€7ÆZ6l†¾”š!÷ðÆöSÄ´ÉLÞ¤¾}w15Gîƒéâ=A «ù“1|޾Z=GîƒòŸ †ÕTlžc ¯Ö«§&tp¨8ëÚ6ãš}kÕÂü|{sh bö¯V ó ch bö¯V‡æ¦ÐôT€XcÚ6ãš}kÕÂü|{sh bö¯V ó ch bö¯V‡æ¦ÐàijnhøuÊÜQ ›a ÜÃÓ&J˜ŸooÜÇÃjµ0Ï00†Fîc aµ:4Ï00…ÆÌU#]‘KMp@+Mß{µIÓ é|/ Ö2il˜¢ìÔZ& S”ŒàÍbotJÄ`qGÏ©ëÀ"’? á«åðì¶¢Ê!÷8a)ò¨€gžüãø¯ÅùH“¯1”«¤€›áuR®^.þ õ‚C˜çá2ƒäøJ!ÍVÛ—GêMX¿±á>DC,]‡n›3kêÁ!ü3ŠFY–¶øçhµ:ʲ£¢€WöwÛþ¼;YÀhÞÇÖªÌRx¿X\Žª#d_¦|œ?¸?’4 Gô•äf¸Ù&,“Û4þ.®ÎNˆÄnk¼Ç:Âu²ŽÄc€/n^tê»Ñ׫•(âM˜‡¥È•0ƒ2¼Àr…ï–eŒ/EŽCâÊ¿³öË$‹ó~—+Á~•§°/J$ûKáàÛmˆäñ2Å×Uø­eÇŸ!„ëÈ@áªqìõàæ¦xõT×¥ýU†HGB8]\¢·9º+3£› —¹ÀQgéÿáΡ«8é¡åxÍ•Ó1ý¨9<=þxø×üÂl5 û«çÐj–Ò¸=†ëJ~†éöñÌÂ$•9}—¤1fE‡è%Š~—|ïð<èºs¯#Zé¹q/~aÐÅÛ0ÎÄú¹a'ß1·Ö÷±¹œ~CDÇþ©ˆæø^ÄQ¢ß2ÂOdû‡iF#žs¢©0¾Üÿïó;ýzKƒB`åmrñDXпܸTëºëren^ƒžî5€Áá`×Ât]Ú2ùÝRw½“@Ý=úzG_ëû ÊøÞäD”äæW/ðù÷xû¨ä\GðI5îâ°¬òX‰¼%„X!v`x$yC(ªå î$]=T Ùai^ˆá*AÜ"¹EA=\Õ°œYXZ¾hò„°A&Ë?ùGlR«¼X–5€°€(.–yr‹“5,Åú.©û¶¢ÚlD^Ö4Â<Uñ„E›ëÈÇ—|š$um8‚÷ókXÌáÓ|q¼8‹/p>w×g‹÷óÏ 4®Î>¼ƒ·Ç‹ãù/?ÍßœŸ\èrÖö¹|¹JâQ.ʰŒ!ÛÁ•HÖ÷dÕºØeœa–#uˆ¿‡ÙF ª¦Ý¼±)±–GXH‘GX wå#äf¨†áøÆ2koqþmUÂDbý¢ÜqKÅc½…‡¤HÊ%VÂáF€iH QZ¨©cÕáÙ íÕüüóâlþ¡ã~]Ö<`XÃE\V›&Ñz%ïé@Ç – *V®0Q6"Q®¨íª<ÑΫõšÈ³C%¿UINi¤C”‘裙ÌΟã4 ñy¡W¨Fqš‹¬.¹>ª*b´É*|ÀËHŽù*}.‘e²Äv ³äA$T 2+J!°\° ›Žø$šØu\¤_²ÌÐ9øøZr…Jò†¿}¾ZÀ›“Óù§C\)@˜±_¬z¸ Ê™-„{qž¬«ï²E¿À¦Có[Añ5·U’–‡Xº»TnZÕÞ»ðà)ÕœÝ –8\=¢êVñ~Œow7œ6ÔUQ…iŠ•…×%Õ7Fq¹í·"ˆ0–o©0¶FQ£oG²FìDaGô¸Æ¥y–a›=`ÇUSÂ7Ã[‘F¤FÝtÕ' y¤<Áä Í±-b‡Ö"Ò»Ö ÷•ÿâÞ£ªÈÑe˜ŽB¼Ä®bò­ýOã4 »}rg›r«_ñ"<:¯jS½—àeOŽBï©í¤¯ÙqDÝzS]­Ú´m'p7©"ŠÑããc.D9ZÞ'‡·ÉºyomR8¬#r¨Rãu¶Þ÷ÖÊÔöÛ ¢ÑÓ±ñÀ*{ Ѷ_é;JŠ{¾ÿ| «²ÜDýë·Óÿ«L-w-ì…ªÙ×gk!ÒŠÃJÙ¿UضüV‚‡À¦P¶ 7›x]éz;ÖÄàŽù/5`œACðKeàbÿ¢wocÅ/QWXÏÇo§öLa4èÖAÈ4°ü©c9 õ-’¬#JÈ›?Æ/·öy–;–~wY´ÕL>–a^b5b=lŽ¥›—ja.ï»™Œ£aûG¶{¤.Ë&o‡šB»üA.iX­±j"*}m«†£Ó©—è!ãèdðëüØ–‘ù«ŸŒTƒšž QÓúvÝŽßéUv«¿ï–7sk¢5·È[š÷»ãZÇѩӆu‚_Ì=<ǵ¦SúõaxãN¦ÐìÈQôsÞ¡ïHø4WÉ‹ýö¸øŠš~¬ð´7•W°ÈE…Ãb…5 õÀ‹ùÔ ©7rlO¾öÇ–ëÖìdOG®íŒ :Yì}Üû¯K¾endstream endobj 1176 0 obj<>/XObject<<>>>>/Annots 575 0 R>>endobj 1177 0 obj<>stream xÚÅZkoÛFýî_1ÄÁÊ”¨§•oɮݤ ºm¢"Ö‹ÅHI¬)RåPV\ìßsïŽHyd5Ÿ ‰3s_çÜÇ0þã"V=ü‰UŸÿ.6½h:V‡åJŽ;Æ“h¢Fñ(ºVñ ¨Ò¨å/ ã?ei0èã3¯a ¢ýZÐ$žBP{û^Ì`Mƒ ý±[}þÄàšÌ8£d0굄<3ðñœžëžzi§ÏŒúEÏ8ކi.ãht^OQ_d £¸ágh¡q"LÒq™S²Äý3êO„™ô´CvZšæœaHO;˜§¥ 4ç,@3žÒÏ4£úÙà(6…Ɖ4¢#MH‰æyõAhDOš€4˜3„ =AhÒ4g,A3„³f£æI;6¡…Ɖ4¬#MP æŒú04¬'MHšæœAhXOš4æœhF“I8kFã{Å&°Ð8€Ft¡ )‘À<¯>è BæsÆ‚4¢'M@šƒæŒ!hƽpÖ §ó¸›ÐBãDÖ‚&¨„sF}Ö‚&$Ms΂ 4¬'MHš@s΂4Ãé0œ5ÃIíüQ-4N AhBJ$0Ï«B#z‚Ф¹Àœ± è Bæ 9cAŒÇá¬Aâ Ì££Ø'BÐ°Ž 4!%˜çÕ‡¡a=AhÒ\`ÎX„†õ¡ HsМ± M|-ד§ØÈ&T7C+­kPKØ»ÙE÷[{j¶T85Ä8=ˆ£Ád¨f _°´¸Ô{[éʪµ¶8¨k“¨jm”ÉU,UV¬Ô2ÍŒ²…Ê‹½J+…ý%T…²úÁà‰U‰®ô\[£Šüõì÷‹«žº"ÅÉe’ÚûˆÁ…i€ç˜€{cZ»¡çþ1oo³LóÔ²5 E¹Ù{e²‰í)¶–d †ÓhÚŸ!^p"i}2†ðžW{Ã7½ñ›^mŽVo¤®úÞ¸Û†q|( H2jS<«Š,ñÁ¡½Ý[í‚}ÉÏ",Êókÿžhv!×›“‡"8{t0Ro·„ !@K>¼ØnUš°Ô>kI@¨²i¾0€×:OøD¹¨Ôܘ\-ðpî.‹<{TÎ¥¼|œác|¤4ô=¹{5!éóöÐEÑ;FÜcàÁøá4<µLØ«÷¿ý¢ŠR]ýöùS çV¹Î(⺨mø—´Zó‰NÚt«S]ÁÍû4ˬÒYÆ”[¬S@½-‹…±¶[­‘$IG-²Âšh…çDô; áF°Š-böŠÔgNDØýñ£Z“ù¾/Óª‚$øKüâÃ!)6ÞeÆTÛû“nrê!»dç~ ïg³_Z,Í;c+µGÐÀµ(6ÛÌT¬)L©÷ÅÞ<˜’r•Ãf›Áþ?…=úùæËɺsmCØ}å\&ÚéŠÏÚŠ¼/wyžæ+ ‰3”›T(ŠÜ´ÒaÌ" ¥áŠz")úí¤˜ø¤xÿLRH…&( \Òã¯Ô«P•Hóª8¹õg{{íÛó™¬ðFœpoÐvïÐ><í–¨ø¨5Zâ&µ]ÇYcPÜ]ÎÍBï¬áPbSÅ[µm¡ë ¥•B V$ËuÄšðs³,°êRäîu‡TP)Ã[²Ÿ³“XB²Ÿ‰q ´3aaǸÂ1wQ¡¨~5ÝЙñXÓ UÞêš©ÜFÀû3i´äikÿñ47[»'©oDßÅ8dóí÷2ÚÍ(†êU!šö§nü|$Ž5ø{‚Ožü0aü&¸ô-‚Ñsr#ÙËÌDVëü@rœË2•Zâ‘V(´TTóU°Jƒ²Ê|ÓT¢Ñ¡©R^Pè;Nv‚’E”°ÔÜ›ó¨Ô’¼*„¿PÍÛ¸&6¦ê÷ kjhaB¢TÔÊÖ_î.y†9ƆËtºtM½&7þôŠôÜûí&«¾Ì¼W¸.]O¦$lWuò óJ¯ Ç*m‘íª´È¡[ŒG›ÂGI`¿ÁÚ^?Ò}QÞsØŠ9º'TV´‚LKv‹ÊJS2Ú>re0ÕnµâõµØIƒÀ•.\¼ñp}Aíñ…@NéMë(èAëjÆù.|éð‹uƒš5œÛÜÝXÅÞ4z\²+ …°±7‘ú¹¨–°¡<ÌQ2îIPˆLö¨Öâô‘úËõAHÖA4_Q0cµIó]åP¿»$"Ú ™ˆ4 ì60qP‹è”(2é`ˆÎÒ´§_k¦?*½¶0W). ä¶›²„ì ÃG)çq發„n–x0À«¥Œ˜ y¦Ø¦ËÀT€u"sLé¤nÓôÝ1R„ca_Vz= ]cFm`GJ¹”ëü±&w¤Þí°œF– lãJ®¦÷XÃè×îv`ÎÝk5‡`†¹-ïiÕË 1|y´ÓgšÏ?>F_R”I;PÃp¾(Î)Ĉ”µ â!Þÿ¡ã2P\B Ò‡ÞP71À=þIm.eiŠ%ÀŠŸÚ§]y9EKv^xÑT¸³ÍvÖш@/ ¡dR›Î3s ‚ïkµ+DnXDÎw›9N£TØÝb-'íºØ¡°#:.¦{¹”µbà }PT7o7~üÀP“M^yáˆY˜2§ Œl(÷šG™ƒ¸± d ˲ԥ•›I¼CJ6Îb–°¨]™aPRó^n|\X8ÌRZ% Ötÿvèdæ2ˆ‘üÄWE¯"¤F› ¬ÝB¡ÛÌËú0óHÑE°~úMUéÆ<ñÛJñ¡¬'#i%kD>Û%Æó·&õ}0hp¤¾ºêÍnÕ§ëW»m⦃»¨©p R²lLþJ»à~D;|Þ³{‡k.FÐvÚ”—¢I†½š þòÕiE"‘¦Zר>l>rMo9|À´ÚS—jrK£‘Ü7'ßÄQJ$\Å^§+$J›osÉž`?åÖK£wAÕ Ÿh²!gß~ùÜ¢g½û~zqŠ›:t‰YéÁqñöº¶»J•4§¡ššu…fã£xPÿ²ÀdD¿,p¹(‹¼¨¯†O~—à’ò]P$£ª¢ÈØ1,óϳ ƒëA½¿“CÙ4yÞ£9‚ìJËz㺪¶I“‡¤H.> ¸y»%Ë6Ýò†Úþ¶¡;K ˆàãIúï;\o6Gÿƾ’øú`xV‰£qŒ%ùËþ¸zñßîΖ];Oó®7ã_õ§ÿ["½ý·ê>è²K/¶ºzÁ)úòëËÍË„¦ùDœ7 ûDY£Ëj)³K£«]i:õ„õ ͪLW+0ñ·¤[•úï0]½»¹ý秦„C¢á˜g’ºÁ¶öxò¢½½Ý|jtø`!ü®‰ê!kO 37AúbBcv†Ü±¨‡¸&Ñ÷LÛª–ãÅx=Ÿ_a浯”~Ði¦©u÷OhÕwªÇŸ${‘©ÌRè­'K~aËÅ¢4K Ô£äÕ“”.Õ¸Rd5ëP›6)Ýbç<«›ì±%ª,r×Ï .L¨G®v—{Ws~E­ÂÕˆîm\ûjÅŠ~±b4 áwýñDµ©O@:¿åsÑ©«†“ŒÞ”iÁ†Ú² lÞr%6²õ6.¼uõÞPW_òd•Óû1ž\,rK‹G~ßpÔ¡ù.ôHÑ—ŽšÒã¼L“Ã-çî2Uz#óí®4þʃRÌàMæõ»µá©¥ž<ÜŒËAdÏî^¿ ER,kEqÊ‹ýw³)ýǽm?øûÖÞƒ¿Ò\Iõ@ýMÍPÄ@/ KÝùÚ<îG“ÁTÞ-L†ÝX®Ùýá(ê÷Gò8v{“n¿héfvñëÅÿY“¨Ìendstream endobj 1178 0 obj<>/XObject<<>>>>/Annots 581 0 R>>endobj 1179 0 obj<>stream xÚµXksÚHýî_ÑEmÕ],@¼L*"6N¼c›p9ÙM5¢ÅBͨ%cæ×ï¹Ýja˜™­$„«Óº}ß~9©³þÔ™«ÿz«“šÓm³ü#Z°zÍÁ ·ítX«ÞrÎX£á4X$ØüDCM—> T߃š Ç= µjm§ur»»»rDÝ} ß›Ãí¦‹Ïë4ÁÎXäŠÕœ¶…Yä ÚupMÚ4P·ÈÖ¦6Ïœ®ZôйµºS·P›Úlí¤×¨Eí’¹-Ô¢W¬ÑîÀ¬¶Ìdµv æa ë5slϤ™¯[ð9”®¬Áûž¡gõ&tÑ@Ë%?B Î<À¬~ѱqðšH!œž3kvZ@R»bg— kwñ_ŽY$œŒìZ Mm5œ¦j¶­£Âè„8¤Ù!¤C˜5Ž":%^s)dñsf³nža†ØeX†é”Ê1‹Ì2,mhÃ…jÑ„î½Û(¼{v†x¶P‹¦ükCõi õ38ÎB-h'×\£Ûn·^älÑ´Fµi V³M¯X³^4¤MEÆÛÖ°i ¢F6 ô¬S´3)ä¶-×bçÚ Ó¾Ì1‹Ì\›ƒ6O um¾õæÞ»Í»âµ6MÎkí¤7ÎkYÚ¸ÍZmÚººí¢T6 ÷Ô»Ô¦Âѵh˜¸Ñ†‰sÔ¦Éä µh ÝB×¶$5Ýö±œ4혞5öüRèàfïÆ'ÕK¼Tcã9}v 6žév€G^ù‹LX”„,^ Æ7*æ±bÉzÆcÁÖ‘ô„RlÉÛâœÉ0æS<¿$"Œƒm…‰GmÙR&›Ëˆ‰'¾Z¢Âx8cKÌÍ‚§]ôbüã¤ÆNI¦Y9’1]¶äŠÍd(6‚…â)f—½O,–ì!”pØÐw%âdÍ8SÞRÌ’@ÌØ9u üÆKV˜ =}³ØO…õlRžn5ÈEz²ãgk ®¤©HØÜÄä…Q)WÂȸ¤ ÃCâaW´)Éä<”àퟒ©3"oé?B–L–(?\hìÏô#¹Ž}:/Éø^Ѱ)Û£ìHH Q/‰"84gbî‡8퇻¨ðd8÷ ì°ñÒWlããAßN"½sßÇ:t¬|EZTXÆ~ù óҤܻéË4kˆ0KM½aäQ“û 7täÉŸbÒ{!H Nj û^ð̰InîFc8‘Xû ®{æPò<›WudU/»iúœ‚MC³Ahžžnê ^²ƒ{6°áÝ-ƒøãÞxÄî>^ôÆ}öq88ïFìrØÿt׿_1 ³|܉…ƒï®û7/ ²f¶X%*&™#Z©g™›üã+h­´u˜‡ƒW°1È[bzºã:\߯·/‹{l!åŒmø–É9ÛÈè‚ ¯ãš¬>dí,R y‰”F&Ö¼m¹6Mzãð£/UP—Ò}RÖœz#›Z;-šZwwkæÀþX[ž¼Ðõ‡4.ÖƒwIlŠŒÂe´9¢I$80®®YrG™_\ÍñÞ—ì±)7ª²ã(E~‹(äˆm®r”2B‚q´_b)20å ÏEŠD‘f$Ó4« ƒÈ¨¨\9æHaXX>0s§2±8ìžG¡N6_ûƒn7ñÇÓø+³RšÝÎ:`§&Ã_¯¶Ê‡QNqJÅ-SIзå5˜4Õ†(†ÔÊ_,ct„µˆ|Aõ8U‰,0ç~ «^…i¢­±‰ªXp]LëNÛmƒ•ùìJç/'“û«ÛÛñd¢¶8·j¸“ÉùÍ…ÓÿÜgÕsFø×TŸïk/¿M&L½Óg—Éè¸ _¡P]@ßñ$þÒÛ{ðkLf2 B®Ñ¸lî IQ0ÅÀ¦"FÐ!{ôùoB0Lªc^ç¶Zâ þ)êv¨$†@M}ÞIè?þµ¡¼ÀWÆèB¾T,“åtNØ œÒ~Ÿ&«lbP¤®®ñy¶ÎtÿÑý Mcš” ˆ@’é2‡¢]&êu ã(År:6©Ÿ¦¼™[f(wÈžZãe«VÑú¼<è÷xöwý§š¨¨HÕÔ½ÕÍfIW½…:õÃêﺽ©ÎÄc5L‚àp’•úçoÉXKü¿ˆh5ÁôâÆîâ¬67³fxÞ»Eÿé>¿¾»è³›/ìê#ë]\ ©Nʃ!»ÿ0¸î³ÑÝ»Ûþ˜ÝôF?ÃY—ÃÁ 3ÝóíÓ%¯ÒA`Ã1¿è¡€&¶ éZÄPD•=#3É B®vçÅ“$3„˜¤‘aþèÃéÔËÙf)u*™†".ð‘FJµîØbæ§ÃU>8Ñ…Þ’‡ “8GšÝèÁ_*VGzÍ8|%òE‰.íöû·ltõ¯>ëÝ^°wÃÁý¨?DEøØ{wu}5¾êذÿq0³ûÁðç«Û÷(ÛO­t§÷‹é\ð8¡¾` 6»rz¦R™4T^D  òÕsØŒf<ë’z)6 Ól§F(´×Ÿp zÉŠÓ†…¦7)ëvèÏ Ù”ž†ß×ú¢Ë€«e…ý“?ró‰[ý5–¾—”:t¦ À^2ói²K>±±ç8NºßØ•X^21<¾æSLͱ¯mñ›‘VÜyù󨣠3ñV˜ý²¡Ì´­™´L7#›MÊÐy*ãX®v®ÉÝaýü“Í^Ïf”W©¡´À/½.åÖ/±x»Æ“kxÕ~¬"ïu©úCeCË÷•¯¼ï¨€Þ:àUbo^UÍá7Å_…2}üÊ_-~—ÏÛPþP¯·%¶´¹¼.ÕJˆ—Y¼Ôߦ2š‰HUñ6€ 3_­¾-æaˆbZ‚<»«íÏÝâVêŸIÌæ–Z8Л÷v¿ŸØ‹Ú™÷—³Ô¾“2v­G䑞 ¡3›ù‘ðàÈDšïÓrG¥ù†<(®ãù Ÿ†‘öøFLÍ’Å”˜ÜLøPG© DðÙ~èË ÙEñ¿f0ÞC–XZ¨BGʶXªÔ¸^õj‚Ûj<ëØ]}ÂuºÔʺN÷ìL«ü'•žz€¢Ÿ¡Lþ›©L°³ª%ÆpHœÜ¶ët]3tZÕz­¡7[Žë¶Ìãz³ZëTÝZ½EP|òéä?c–`Ôendstream endobj 1180 0 obj<>/XObject<<>>>>/Annots 592 0 R>>endobj 1181 0 obj<>stream xÚ¥XkSÛHýίèuÕÌeùlQSN0›a³ËÖT#µqIíQK€ç×ï¹Ý’Ü2v2S[$$×·û>Î}¶ÿØé0?˜?a²ã{‡¶ú•=²ŽïùlÐx}Öïô½Öéz]– 6Û±¬ÃCoX²º5 H®Ur†8áãðW|\XCŸu{^Ç2ú ÝÄihÞ l°•c¡Ï:ëj6p¾7„­ùwóÑžíú8›°a®"f“‡LØï žC&i +¦Kƒ4ź4¸½µ»½ÆÝaS­K',€žÀáº4¸ƒq¸°n§©×¥Á 7×#ÀÔ;p`²D SÅ3¸¬xI®x‡Ó¥Áí÷¼žËuh8¬,0ήEA—Ìu¸ îA§Éuh¸Šäv­ripûM‡\ÜæÍ.°^¿ß¸kAô]ý&ˆ¾ ¢ßÑwsmÅtiñ€ Xq܃ùápš nJvip‡´סDÏ€Vs]š@4ôº4` :M«¦ ëÀd‰¦ŠgpYñ®v]š€ Ìs¸ W;Í». nŸŠÌá:4•UÓà÷Óö)š“Ϧ3úVʦ‘i?ø(ÜÍçMêÝÉ\½|BXl{f}šï²Ïx"r}c’5dóôk4ËþxYlFûRåâˆæ·µ/B”Â\eKöBa§‹íS^æÿ.Û’~öØA}Lj¦!DDH­ad1kS 6œÈæ•¶ûw6èI¡óF,ÉÙrñ0TY$ÓGÝÆ|Ô8½o$›äüQStD´áD,S{Óõí™g•ä^é]‘ÅÇ­oT^ëŸoœOQm6Ò[î0T«\ä «Ã»-I(¸S+è6‹·eIiB•§6‡‹Ì–¥²g>,†]cÅéèóþ‡«O^Ÿ±³«;6½b·“1›žÙø_Ó››Œ?Lϯ.'ìt<šÞÞŒ'ì—&µG×7Wï/ÆŸš:g/<Í)ˆ…Œ#¶™V¨OoT‘FMæTÞÏð!‚/,3^ÄyíOyÎcg(^êçL‹¼XǯšMWp¶YØ5ºÔ'X²\¨.r´­¬_ûõåÉÕÅ-yÞôgÊÑô¹™ “àå}«){+M+ÙLð¼ÈÄ–²ÿF ú>õ~|ùáìÓèæWÖf§7ãÏ· ¿Pè.F·àÒéh:1Á¼>MÇŒèóÉôüÃäïj»rB/ôËÆ3„Ä," —jÌ‹4œ×wËöMœ²¡#T-Rç2ÔkR7ƒ?2ýRž=5{?O#Tÿ³ õä•!8±6@Ϩ}Çøˆ’züö ¾¯´¡RÅ–ò[+®ýõ Ñ´µÕu3þm|ƒò:A=]\]ýz{Íî®n~ì±ÛK”ÖÕÅoãv~ÍF'' 'ã¿­i=–à™»Š¦„f :%§bcs¥ó•1¥ÒxIÑ9‘Žš> U‘æ™z% ã¿U¤O iËû Ѻ£a^™0“ ÔQE%i{¬l%î1Ì`«˜Cõ3ÊV¤¨Ø¨Ø••bZ~é‰{¤arF¬Í¬‚¼ #î»w¯6pCר£”ß’3ßSqÜÁ”<)[Ü3 qÿ[ÚƒäLç´:`“"wV« \~Tª9ÚÌUM·gïw-ñͦ©Ð³I«wr;¾ˆJœ -­âgœ_Ón>â•' ç…B) {ѲQŠl´àpËZ>¯âåNå3Dö°†ëc•®Ï[»DÈgø~Wêa\?Y«±²b6dHÊ—„ºµÌµˆgåÖVgUôU†‘×urÁé35s\µ‹‹Ù5ѹðÛ$%m=:z“Þ@9ä…®! #œT—v&òø…/Ñ:¶ø qö¾Èëø8žÎ¸ŒB‰ì©²ÕXÈc 6˾7íóm]iŠ}sô‘…šÐK°Ñõ¹MQ³?+¹+±¥]¥G¤RQ9r¿k⬋д^äüª–?šäHŠÿ³b‘Ä2ÝT£^µê.Ìsf¥Ó¼–•Á4JÜa~z‘¤4Ì ÷µ¼y¬^|-õ™2JiT%¹•j„D¨É;©B¸6ÔEV7k Á—Ò…7!›•m­²K‰‰È¶N2¬âÕ*f ©0¨3ùP˜q{iCCÇ5e+L’ ÝÃ-”ΨÙzm¯ŒX¯éJe]«Þ´ øþí 60‹ÑÉùééøf|9ŤÜ^Ð t6ºdWXgoØèrtñåß㛦îýïí¯¦„¨nïăÙ[‘I#Ä¡¿ßêçss¯aL˜g‘:ý)¯Þ‹ue´mŸG%ÄÔÏ–m ­q*YÐl^-ÊVªA‚W–™ÄªÌsZØ Ã¾ì^xxÑ«? i  Or‰¬£p.)¸0›¼×´î»Ñuh;p*…U»0Lŵõ* ª©U7De›3rM.!ÿ}]îÛî¦ ”à©ò@EÛ\ KÔzJq ꆞ‘ô e8ô[#déaŒ§…}¶’+¸Ê!àaªÅÎx¢ ½×ÄÂLjΰá}agçϘÈ2ä‡Q¿Ûñ v€]ðÈÈʇ1:f,ó%ûǦ¯Ö:©«Û(¯cA·5½&^6Us3ÓhuÄ êÑ–erb‚¿D‘¡Ù5{©ÈÌ‚ü°d>žS@±Ùå™F“Y-ß${é” bo¾&ã¬u É-°ÑAL‡l6ÒòЙÌ[¸ƒWi5dTŠ´ìHœˆxÑGX8r‘jÛ¼ðQî1Ïóh¼h³Õ/kseƵ´Pe´=Оcâ)3çâmL+“¢¨%ŒaIÏ˾¡ÐºHh*p[\ÔíÚ-^C±0ƒ:_. Cš©%°s"¶îk—*'”.dù¥È·ÖSšã:ÁÞöMNCw^ZK6 ÁËo‘Ú§ºû ½³ô> Y3Eˆ¹ß[%‰Ûâ,.””4ݲ³IÁž%pR™¦ÕÔ¦.·%ö€U è‹Êž»#fWWŒL„yÝš5Vµ(ÓE63ÙvÄFWt3Óz3ÁQ2ÿiµ=™¯j±oà>ÍTÕõzR~èîoÔ³r/†6”Z8o l–0“4{Í̧îSºRZFŸ7ªU-Âë)V<*¿ýy´)(Nå^}Šz‘L¨&)ÞïmÃÜÃàm  3ðÉâ×;ì™yiŸÆT#ýç>BÛ/%~fÓL€ ïEEÝ‘$ƒÀv™‘?´;~×|Üë{AзwzmØüNŸXãéÎçÿ\jhþendstream endobj 1182 0 obj<>/XObject<<>>>>>>endobj 1183 0 obj<>stream xÚÅYïsÛ6ýî¿Û›ÚS™¢~Zvçæ&IÒt.¹4ñœ?Tý‘„š"‚´¢þõ÷vP¤¬¸é]&‰'"HàíÛÝ·»ô‡³Hð5CþN7gIœàJó£\‰þ#FÓ~®®Gñ+3Q*±<ã¥ÙéÒpFÝÂ,ÆÓ“K?Þžõ_̰«¸]ÒÏ«ÑHÜf|.¥çf)ªµ¶=¡—ÂV²²WêB¨•xÐVW¦´Bb«Ì”0…ˆÖº²QOŒDm•_+ÕÖ”•ÊÄ¢®„®¾³bWšb‹÷F<»{ÏÛ¦¦°:£'L‘ïÅO·¯ÿuqûûÙe". \v½•+e#QÜ[Õ1ŠXܨÈTZ*i`+¡ÊÒ”=Q˜ Ïl¶¹ªT¾ï‰…J%Ð9(2ßɽ[c­^äôœ¬„ÛÒ|Ü ˜ð JÒàÈÌ®ÈÌ€S1L±,åF YdøkplÉKÍ}á"ßÖcˆR0vïPqé8ÒÅêÁóse­Ðº[UÜY{æj–q¯€´µ|(½\ªR)Œ·ÞÔÂÑ$r³Kíi‰(ó̘öàFöRT(Yæû¨"ÜäI†9©L׎ ]©ÙF:K+]à4Ü„»×±xÃ{âôœo“…Ì÷P`ÌÏe£ÊTËœwÈù…ÖÖÕ%‰- ‘=‘ú(Ó Pö‘*2Y))™§uN˜t¼*ªrÏǨ¸qKÑ‹Ù{ Ð“´&kø´U-K0®•e÷vàÐ.Ö HS^t8ôÀzB.ùîn¸p­WkÜN!øŽ, ù³––\)³ ïfÀ[Z`ëÂÈWXobX 9âCF¥¦,±ô$ B=¨‚ô Íï)S86û/A^.¯â3’ùpz%ÜrX¥Åˉ coSf”õÉKðªFÜÎÏw0y¾”u^ˆªÞ" J•io5ñ$¢RQÔA…j0AtêtÍ8á­¡P@Ø•é¦Zà¿‹ÄÆØª‘ÖZm¶Þ!3Hˆ-±£X‰´Ú©,:ÉÈàIF†¼z»VEïx@ªJ Ày+út”(ì]–§*Þ¾@š#(Ÿgxªbµa¡f}h”š¶èêïZÈ\“ÙQfêEÎZŒ´.êÍ‚$oéƒFàŒ¦2Ç}ªË´Þ € 6íÿÌBˆ‹Vàf¦2g A,^“«Ú|èâ¾{çßºÞ eŽ ˆà Îðl7&C†R5[!=‹A\Aª›ëj‹;ø­IÑà )¢Ax•yµQ²°tµƒ(B¬‡\ãR…Tè`AÍÒ]H5œ=¯\¿a™ëîQÙü"Ñ»Àu µUÐÉš’›ýý÷[®Ò‡MÒµ,«ƒ(‘£º)ùKÉá€9­rE‡(Ëjx,^b Ýn«+pí=;Pˬƒõ–•=5Û}8ªqCç ±„·±¬»‚r!?™xGãØ—ÇÁ°z˼ã”ÞQéñIj+ opø»§Yd\ÍŤk‡¦£ñ`mC}töé·Ü3¸rÞklqgø˜$ï iÇh;,Û¥Ù²²k}üs_@Úø; í¦¾ªj·U;Šä§Âm‘ë“*¹ZÁwvo+Dd®‘a/YÁügôd¥Ó ×>÷›]Þ˜@‚¸T>6ºhðÙÆe@j`ØÖ@!‘Ê·¹Ô…¯NXFQØPŠ´m˜ŸŸ’£Ù“rtíDÙ6ÒDM¡vïei6ÂR_è“£w ˆåÖª[•Þ¨KS#s^AFe^š-‹>yÎR±óyT¶+Ò®"q½>Q¹)ñŸ9—‡]Š.õG$½;x~ÞªbšÓuE³LQtrFx»œRJ îŽß'×áA!—¨VM?ì&ø¨TÚÔ–¡õœÀÑõinêX»:M29t÷ôOÉñ±ø÷²„”VõÚ=§Á¾Ý ‡0f"l:p…Ïr³ê]JÒEŒµ©k'1¸-m/€XLÜE.ˆ|u~>šòµùÅã=Þඇ#xˆ~²6ûÚÜϾñd½ÃPôççZÑ[ƒå$¹áoEh·‡þ3+××tñÜvú§,oý¡va觨U–aÖy€hjpHÑ–º´¾.¡4n„pÇù)54d¤\ñ"l}Ú´¡`ê}÷Ös1|­7„Yi^ÓÛ%zBï@ÙJßt“Ø~zó‘~®õ ™´¦ù‡7"Ùnì;EMØg,:³›]‡¸ IšÜ½£ýô>“ޱÔ€SÄ %hŠ‹ÕS ¦cjêÂ1 HŽ=®§ž¾úÓ§íVÒ«ØB0ø© gǶP qŒ  ,âwc¼ç8sˆŽ“‰ “§ö½>ÅT×”Äx%Óû§ž$™^Ëá6}H¸Þïþ]#wªÝêJÔ4žN¹`Rð_¿&ƒþϲè“dàrí'~Ÿ ’ä7½|~+út ^W›3æíÛþ N"ûÑ%×"ºŒDôÚü¢'ûã8q¯·²¢~ýñúý«çqòƒ¸CHPü染ùÅ£úS`ɰ“pÖUµ½é÷w»]L©T*R㲟®ôåB}ÇM¼Íÿùáò«!ž tÓS&ä&•9fíªå¯‡xòñèûtÄ"+j¼Â°òqMNàÆ[Hè·6>",ÓeõA£Ù‰ñ£…ŽmxýMÁF´}`Ÿ%€M¿ñÙ:sww¿‡Î¼cyw3K©‘hn«ý)©¹¿.Ëß`À^ó«¿ÆŸCùÉôAð×Tíótgþk4¬£ñ„GžãÑÿšï¢¼^Žà¥úP£ @¿õÌÞ£bÿRc:Ñ]ý÷â¶t¿QY£Çó¿´N‡ñÕèZðôvuÕ$#¾Œ‡Ð?¾<÷“+=˜ÐÒóÛ³_Îþ ¬Lêåendstream endobj 1184 0 obj<>/XObject<<>>>>>>endobj 1185 0 obj<>stream xÚíZûsÚ¸þ=…nî”ÛÅø‰ ÓÉRºy5!“Ý»ÙÉ[ŽÕØ•D€Îýãï‘ ÄÒ¤ÝMxX:’Îù¾s$Ë|ܲ ÿ²õ+H·LÄšå¿E\ Çj.T5‘k7ŒâE[VÓ´áz³ì¡—å·œy-ZQq~˜7¶[´J‘Ý4ZóB‚.¶ Å9e™S”5lPð +SÔ´ ¿ +SdYNiÐb¤Ž Rmª™ }×ðæ%+A¥©ú-e…" êú†]Ë@€ù C3`uÚN¹o± R¿aXEi¡ ô™e£Šezš²i¡œ"ײJ#Ë õÊ6ï ¶ê=5  "BMËA¾ãMjBíy ‚—ÀKÓð<ªÿ¿šVýÎêÙj[vÛ4Û¶‡ª¦eš¿¡íÃîÕGø–8èí`pV· s[±…|Ól¡íÚ6Ú>fŸh’ຠþ5â¿¡ë—W4ky;¨ýjûÕàÖ‰j`•£¬xZ¹c–•Ó´·4úÓ ð6`£ìöϲÀ]¡àƒ¨ã‰XŠ›”ŠàFrÜn| ‹¬Ü"·Õjþ1yϵè8!YÇ2mwê7š• ¤Ç®|À÷¸#ù˜TD|×É*Q‚;³ ÁGÊî¡b’ªŠQÁ瘆,¿¡¡eúŽé4|¯é˜ Þr-¿"ò‚AY¶±Íï£VÑFÃ/rcoæÆzÊÜÄTFœ¥LÆ„ *‰dÏaÏ0«×/q@3ÉD¼S½Ü©žíW¡¦zzQýY]ĵÓ*Éj—;U~ß¶ ÷úUõwLYðm·zB¤ðˆÔ}Àÿ($ç1HÖ ¤vÇRŽÚõúd21LN"xóvÓª·´6¤Y"\ÎŒQRF˜²‰ØA—;h~N„;(‡†44_¿Bl¾ÝDó‘Pr2¤<¬Ã‚ú€r-¦¹a•³ŒX¦ÉsÜô7a›ë lðfÚÁ•§4™ÁŬ3Ì ÓÎô{B÷UÑßÇþ¯ßËþF¾~;ü£A¬¯hîc(V70SrOaÝb\Æ8[²04»Å,q6=ËSN$j5'à8ŽQÃ0Çõ6kç;Šý`,gC&…!§rÅ»57fSà…34ÎîØ¾`ïDà©L>êògëOg!å¾^Ù 5ùÕÆŠÁŒ'ÖéCÆn²Ç¾±V^í?4EÓéô+>­ü^Ðôæ›+wž\ŒUøí±»ŸW?aìÓ„ k)ËÔ„†ümÕ{O¨¿%ß8ПW˜Ð!d]/, ÐøÅÙŠZGeò«Ùê"Wc<„ü}-q€u0²v ®H*i‡êlÞOe…·zKë‚`Äoó€@îžáû ¡°,T(éŒeTkVØââc'Å/ö»]ÉIõÚñükÛWo/)î 0q±{Ø=®¥³Ÿk^ª,¹¹<3ö8,Ä„×a£0ôvaX¦ssýòðòû›ãcm²*kón®vÏnÎÔj¯ª?soô%¤ê=Rä_Ö†]Äi¸›˜Šø‚¨}Òƒ`ðþæ¿™KÅ»¶jÄÀšWá gvá¿„ Inp–±, rîNoðËY÷…s཰§çýÃþ‰*G¨&xÈqÈxµX[‰“É* ï$8»½!ÙÿôwÄ•³.½Zóû`ÞþÁü_ļóƒù¿ˆy÷óóÞ濌ùõ¼Åêß)ê÷0®{Àz:}Ù™§.QEÎF¤#KLkžÁü{¯ñTö‚[…ÌåŽÌtnÖ*ßøYpçFXÒaBv>U_-dõ‹˜Mv>ÌO9!mjìu{pg¼»g5|¯»Jz½ý}¯çô¼†ûf„9N;–ëûϹo}Ôüu×47¤±î¦(×t3ÎB•ÑêD67 ªuŽ«D{œ¬UL†Q¹tÇühQ2=ørl2‹ •ñ‡ Íî Ê ËF}+õ¥ã`³L:¾èwdð«ÇŸqóÐäÎ_Mô¡~3ð¼yY…"Ô辿Áº§[ xËůpÃ’iпùùy+^Ô%ô9Ö\twÏ÷ߢ:‚¡\K=Ã(ºŽÑ27 Û˜[ƒ¶vòm-¦‘ë7–î #²Ì–‘bš33¦—ŒYª'î‘’ð7C6íô3ø¬3N~Q­ÎT$ aÆ–E¼Ö;Ÿ–ù†W<-ØfSŸ’Elª ~ôϳ¡ƒv2-Åç?–„Q<úsð½Cÿ1ÿŸ†î¬C_¶‘•+Eœ ñ¸N`Yh’’;ýeº«Õ:TýíŽF ¹"ߨ¬{vÃhU¡áOoÇG¯QBïHŽX5 ÙìöÏÁ*ï˰ú›Ü¼|b9á$¤Òê7cžtæ§Ó©v,Æ«t8¦ýÅD½×DÀË ô/Djvþ ¼-Žq'1–hÆÆHÄlœ„(¥mÕ¹¦f“©š6z–âqŠ3¤¤ˆÅlÓr…4RÉK&ó–ó‡-åV–>*×¢•ú ã)ÂRâà®$Ä‚EòÒ™Š/Œ/ Ú®owäždºÑ2&€"(n¯ß9l£áX"ÈcšÝ"’b”1Ÿ0IÚ¨ÈBÕLÓ‚p6Càà”ð€â%ìªp2ûDÀ0Åc…DbÄëÆ,Ó av(sN™Ì^#ÁÜB*âÕÐñD¢” »ŒMпrçµæÎ£mTo÷}mÿôbµÑA¿×ëžwOö»h¯;¸êvOÐÑéþîz{zy~vOÐîÕÅ`wpλg§çƒîA.*GÆñÙùéÞQ÷¸]rA_=ÕA}¸ƒÂ€_ýÊüG°…ÃôË ! dÀÁ%\·Ýê'#ˆ“ã’„Zb øƒLq SØMqH`´˜J4aígˆ„’ ®šÀë#BoÕ ^À»zŒe”z]œ]ú§'핈ʃ^y´q™sŠX„$îi¦üÁçHò3k0[Hc©[±Á²d–wXb£ÚÇ gùpÃ|Orp’èÆ%;0W¬úJ¶hž3¤¢~a˜ªãJ9tJ!À ½…‰¨~qÂ2Fc0ìðx°¡æÆ2ä®_*+` «d†êpýÊ@쵎Äßý „fq¸À§BÒ@”yþº©¨Ÿ`ð„¶õ˜œ Álˆqþ”šô edš#YXn ·l“–¿.t1™ðÞö-«+­jXz K Á[°³ 8ëgóÙ…€WÍý@!Ç¥£m$ðL´óÐÇ«¡¯($¾à%s@t x´ºröQw* äˆáƒE=Ý&wYH7Œ÷O4Ëe>Xy¹¹büN­DW5C Qk5LÇv‘€Fv[ N…ÙY ›¡c B §µ=|7¹=N±:|ˆ°‡ñH™§l`Á8U!#Ö,ó¦Ô 8™wj™ë!0æÃ „ …éLu܇D@T‹Å¥¥wµ)7†ã»zùâäã €é³+î€÷c"¤Žá*p6†˜‡5I`Bc7lÃwZHè7ë–éèj×3lÛË«-·nú°Zžu[ï·þ›Œ'fendstream endobj 1186 0 obj<>/XObject<<>>>>/Annots 604 0 R>>endobj 1187 0 obj<>stream xÚ­XmSãÈþίèâ˲9#l Û˜ÔÕ• ë`›lmB> Ö`ë4:½Àú*?>OÏHòŒå.IíÐjMO÷ÓÝÏôè·µñ¯C]ýï´½aŸ6?²%uÚ^ʾף^§çQÇ÷|Ê$=ìhU8ô/TÐÀró£¶3Àm¼ÜÇ’6l›ágC¯c½.}MãììÛÚøæ¼z·w„·b"#D4۱ĘŽÚ^ßÒYbLÚFiËкfmÚkØ–cêú¾whimÚ¡ß–Ö’còÐÐÒÚ2´þ‘³Ö–¡ø@ÓÒZrL‡°d{eËÐúN¼¶ í‘»V' ×±`„&µN#¾ÑY"@lâÒ–¡õ»^×ÖZ2k·ÖúÎÚ£¡ã’-#í¾.²&–ÌÉs]¶eh{½&r­µdhî¾¶ íÑ@´ãå6Z ¡±ÖiÔ6:K¬AÜ(m¹ÑÒZr ¢­uÖjÐ,­%3L®Ö–¡íû¨ZKkÉܽ&rÓ= +"߉ÈG¾­µdh{œJKkÉÐö{&ÝW(ÇbÈ×øë5Cª/uÀ¦½:ÏFhò\ëtb7:K¬ó¼QÚrgKkÉužm­³ö¨o-­%C;:Û2çÙuÙ– Ó m­%³ÖµÜu,ûÝ®ã³-›*p´¾£í»ûÚ2ó`߉ז™݈l9¦^{“KÖÚ2´Û8ke» ·×†8,ª´cé,1é:ë>ÍwΰI›æüsàû4ôɈG‹½™¢bæK‘äæÏg±&õ@Ï*{ “%ÅárUP"ŸdF÷’+‘,eТ\‘HT±Âc~¶„µ…¢2—°#iôuVˆ"§4*—aBŠ0–¿«D~ð>ÎÝiÓ>ûì}Y‚mZfïêåDÊ@IeQ¬‚2’4‡ãã µv(,Ð/A¹9å2 U™Gëf×<… w§¹"™ˆûȸgvjQ™,TˤÐOT©g; D”ÐZ•P%á’ÂHj›¯ßíîù ÛJ×ÚâÏ»u 4ÿÇ.¿¼ÿâíg€ÆjFìID¥d¼õFy¸L8ôÚÄÝÞO]8•ѵȼEûGZò<ïî#Û>8V¹E˜¾ólôeÿdzéwÛtL_?æt:Ïhw|» sãÛ›éõxtE'ÓÛ«ùÍ·»»tÉòäŠÎÇÓÉu­ ›ñõôf>£_Ì>G›} œ×7ÓOãËcãI“~ýØëøõ$6èñ¸Wçç\ªI \ˤÈÖU2r³f{lÜãªÊdª²¢Z"åb±PYÀ™‚v)UÄuæ¢UÂp"™Ìs&I³“±Ó¢‰ãöJ§6+Mù•)¼gªFµÕì·_mC*5„”8ó‘Ã&ô!û •þŒvÿ«×w=šo|ªÑ_0ü\ú`M™:Ý‹U¦pç2äS„ŠÀù€Ž»VÍÆ*)Vúðõ‘Eš:E„ŽÖõ~(`ü-øTmà‚Ù¥Òh2p•ƒŠ[bSÌI8k™r\fŽ\%-½«Î6È]¤Ù¡>>Q9a_s¤#—oÂYÕ>Ʊ7½ûhR,a1kö(^ 5\Ч.Õ¡¸½¨‰àU°Ýêþ¬žyÌâYˆ4· Œé®AFðl’ëøõ‰x_†QEiì™N ˆ:“¢P'‚1ÛjÎX,¹îªÓ)èaÂû[ KÝvÛo逶å—Ë”·ÖÈ璉>ïÞi#£4 #m)`?ܼãUÇ™­B5ÖB&„µ®²‰DJw^árçæçú>v yŸnty°oV¼Ú¸¨q»Û³ÎäLÆhD3VÍvp&*ÂÛ#ñÌvòö!çýÓ̄޿Šï…Kx3:i„*6TþßWaËkŸ.k­ºuÕÔu>L5ˆ¦2ðÝÞ¢ê½Uë­•ýwWêq@Êm qJAªÐ g•)õúDDCгú¤? ³S>)š%e¬õI(צôTÆt7.]×Ç „boת»½×›–«®>¥ô\gNîXgœÄ½Â¼´[(Å ¶5âñ̺‹kÔBT'ESÜnaçE¬[ôÈâ]ÓáH7,U”‹÷2{åuŽÎínÌ ï• è^,­:r½ãÕ¹xÒÅ ëš(^¸ë¹;~û1›0EêíÀZ<Ô£¹Í;›¨TïÍ3ý×ç™Ùøïã›ÑE3ÐÌøÆ3½ÓÍíÕŸnÀÒšp&u)ahÙb˜œi\lªªUÏ Ld²û¢RùJ• ù{=(€ÑÚöó8rÄ÷°™¾»>Êc·]ËÕ$ñs¼†sñªÊx%öæ02ÆKÌÔ‚ò5ªï{«)s'xL "4×=DTÅ¥½iZënO¿Ñœ÷üÁ@“m–clOä÷«)ÂAºÝ¾ü™BéOæn Y»ê©ks{7~¿qW7줢Xêþà WÑ“Œe¶”^Ñú÷îëô]_ë»¶aÛÎ[Ú>ÖAƒôh# q©¦Öç›f}êî׆óõ¥iL#­õ s?(bkŠãi©Á«ú†ÔLf¹L‚¼e†ÑûµþݪG^©ç,¦s?dà=ºÕ‰­jB‡"8¨4Lù]f ihÔDô:~ÛùþD®ÓwÂ¥RÁ¦C*:Õ÷(wFÒpY(=Cý! Ñ…üµå÷ªw~ºv‡6ÊÜ,~æºÒîöðˆO.•‰†yCÕÖw¹Á¿ÓŒ/k…ñÈܰÁ­AÕ%a5·n<4”Ç4Ÿqꣵˢz}“ŧªû}k¥?À!ÌN"ÂY Ò(y´.bÖAÇÞDJ0ÙG|1¤ëý±áùðcË)+о½>ÍÇtùfóÑ|2›ONfôõóXëfc´G§ôit1º:™\ÓìÛl>¾¤9Üš]_Læ3ËÏþ¯¬þ¼â+·Î¿°A3dè™ÍÓYÇZàœo<²¼ÓþQß;j42ù[‰Ú௖ù#ÐÿR¢ÛPÐ9ýDóL•÷ÈÒJ©{°n¿ë ü!iwÃNÛ×{^·Û3;‡íÁA·Ýé±j<ßù²ó É€Hendstream endobj 1188 0 obj<>/XObject<<>>>>/Annots 611 0 R>>endobj 1189 0 obj<>stream xÚ½XÛrÛ8}÷W ò8³2­»¬Te·”Øž¨Ê—Ä–7“Zï-BÇ$¡!H+ÚÚßÓ ^JÊíagR¶›M}9}ºÁ¿:¢ÿ;¢ËÿæñAÛEý#}¶×ÃÞЈAgàˆNÏë‰TŠÅQÇÞhK v®~”ûŒðF/±¤ÍmèY§ïuŒbÐ¥Mwiœ“wlÖß«aGv³CãøîlÖðïæwóîàd€wc1êÓ"q{`‰±8i{CKg‰1‚4 µÒ–¡íu½®­µdÒ6Ööœµ£ž7¶µ– íxŸ-­%Ç€†»Ö–¡ *ÏYkÉО4Î¥0õ‡V˜ŒP…©Ôq\j%–aª•¶\†ÉÒZr&[ë¬=!Ç-­%S \£lÚ>¹ji-9½ö òœ´¶ m·ëXeËÐöÚž£ÅoÛ*[†v|âXe˱èwÇN lÚÞ‰×wâL&·Ë`  Œ`bQ‰XÈT:KDbù„¶³go`íi„jÏR×'tÔ:KŒÅ€âQë,ç¹ëø¼N× *–:F\­³Dà ÚÅl:°vítÜ¥¶ -[gi-™*‘Òci-ñi»Z[†¶çºcËÏÊÀÒZ2´ãÆÚ±½¶×8Ù2Á¤ïDÖ)o®¿ïfÇçxгýõzb0âÑüðöúân6½¾zózöçA[Ñ‹Ááy˜êLhåY¨j‘)ËôQ ?Š„^Ea&"õ(a$5HZçQ&±HUÌolTžâ?~ä'sè´LŸeªE˜`/•HOœ«TdËP·èu1÷‘k‰'’mñ:½’óGêi•u8'ªèY²Iæíf<„É*«T=‡Ž_‡ÙRL>ßf~¦{Ûñ†Ý!ö4¿·÷õVû×ñJO»ü—çy,%,ý]$rMb¦pÖ\jMiÿ£­& …!ËW䤨íåá…z<Çvû¼Zù©ËL¦¤ ó\%‹ÐHi*¬(ãx|îÙ?ÜkiC³ c¥ÂÞâÈ2Ï^6Wqì'ƒ¢(L°ÕŠ!D9Gú×i˜ýªçÏ~”K¯8¡Ë'L´jìL+´¶D¸`@Å!¢„ú xõç²E^Á í?ó0–5ì|¼³Ç¦ÆZQuQÓÈò"Ú8A ò4LYU¢1_>¢R&e]ˆ…Š"µ¦õz“dþ× åVvc¼ˆñÛÇ+?[fêxècpÿ÷… änµË­$"Ðj_ÔÎ'ŸŽÞ__ö†í}[ÀGùunðø×°„œö ÌÆÌÄžá'³ÿ»½®?‹÷“+17g·g31¹¸—_Äíl2›ÞΦïoÅ?\´V¹øxsýîâìÒ復XûIF…52c:‹7B#¾¡Î¹.T™Ÿfœ7}†éùƒ| “Éòœýw3î§ Ñæ?à*ìç £¯ÎT ùaS% 2ðxSÀlûdÐ,SMöêËË/øÏû—…÷ïìkÖ,ÜûCp±©zéÏ—"VI¶¼í‰/ÀÞ:Œ"F@eç"‡eK¥eq> ÂTÎÙ¤@Bo ÞƒŒÓ0=…wßg·ûC¿¬½³%Uªñ‹PúÀÇùh<°Ö‰åÌN—G¼–ø3Gk $hÐ43vãÛñÛ Û%ò0Êé>9†gyä;|ýKÖÄ›"[fÕiúì§„¼Š ‹Lâ^|a˜µJ^e€«ðL Aȉ¬k‡à‹?j‰<‰â´èI®2¡¢ f<'ZÅr Z–5Ä’™·îPäïÊ×ö$q<Í—©J†7X;éýkZøˆ@o†}‡&† šÀ£Ó‹31¹:ï6W\_‰‰8L/¾ˆw“Û)=ÀŸ?Å ÔšY{J]qE•…ÎÈhlËAy>rF8¡CÿMëŠ8bÈUŽH¥r¥À8<ÇPäæK@JÙd”€æV«…ºÀßàDœE¶ðþT÷Å¦ÌÆTýüÖÂÀ7hˉuA›hÔ©hÌ#N§›<6^†Â›ýÔŒŒÍÏK?«a hMeš'»¸œàAÙ_+2Ùb(^ˆ¹|H¥ÿôv H5iQ}o"ÕXãÆë#ždJ¢Ê!¦ë0)Ìf¹†þ;çp*'µØ½‚ý8¡Tˆp ©<Á¢_¸6Ýiر ƒ@&¥a\ž4•m&+³„†‹ê€) 3ݢ Û)ðB˜mZfw‚1M Èœ–€ƒ9vÔinq·Ÿr¯%›ÏhmÁÁ•L8„ª²ø v°½O–šm}5²¨‘˜õÿ$pQn­Ry¶Ê·úo™%²QF¿¨J‚ Xpcš‰ãÅÜ-hÖæ øožüòWœ|ù]'ÃE=•”s@„D¼ÿ}ê‰ æÃ3 µÇrã³64ÃøÝHŸ¯!o¾TÔ¦Z€Ú¦@3ôïÎêcï9ÂŽSuY:Ö½ÂòWÊW©Wh=ÅÅÆ>bWi”B¦v„ø”›¹¤ªÈéøÚ¼ýãæö°âxißo;€"Îcn!ÆwÛÇ¿ü™ã_î9Þ‡Û”šHq«™èc!ý,70ÕωzpՈњ¸š¯ ¼šUðBØS…4À´˜w^¡3.7"ä*¢77˜¨bjTó<Ʀ‘üh/ë$À³ßhed{ÈWÒD%Ö9 b2Bç+B0Á< i òµ!ÌÂH¢u”|ø)5iîÅk•>w| i‰=m´‡A‚¾›(S3j”S–áå5ŽNDæYï#Ò¬)¸¸c†‰6sC5cÁŽ1)ãþ°ìÖE!û‰)V&wÌwæ b2uF,/ÚÆ ¾_½ Ó¨íW=ˆöhÎû×É\î Ã.>H”Aê'-qyýÏ3ØV¦b®Vš*±Ì¾PC{}ã2×qùÕ' Q ï’ð+ŠçÉ¥4½Ñ™Œõ·>*uü,n‘¸ÍP›} bšzë5Y¾vzºãÅ}“ÿ•ÊŠ “k µ¾*“Gs=³Æ$Ý7èµ¼H¬&AA7±íȺáÿLtÌ 7ΤOÝ ­=ešk$#¢ÒRš)×Ü6¶îLdkubh¿þ®RW[}‰d&==¥´Ù´GÝ ê!š“)Ž¸Ý¼½¼äb=¢–ó–‚NWað T|Ýļ£ÖÚ •ÕéÕ—$ú(+ ‰š“ïn.¼æý€†¢êrÆÑbï 7é—}eå_ÒÌ… ÙÄŠ¿Tw ïÀ^´€×9ÝÏŠæhBt¿t‹K>/XObject<<>>>>/Annots 616 0 R>>endobj 1191 0 obj<>stream xÚXksÚÈýî_ÑËnUìŠ# ¾Ÿˆª0 ×I•«¶d1]KVÆþ÷{zFB3Ø®ÝÜJ jõLO?N?†¿N\jàŸKMõ?ˆON¿CÕGú@nÃÁŠ^ÛñÈs=§GnËiQ*h}¢XÍv×é¾bɇRN§ÝÁ§×nñFü½µvþE î¨Ï˜º §S-N ¼Î6x“ •Ì& nǃ®× Áí¶,Á& nßuÚ&× cj6›Ö¹& .tôL®AƒÛoÚZñƒ×4¡‰ƒ#<¶ÜàUdL½¦Ó4x SÞá} gœè¶TØ+®AƒÛkÙ{ šÝгöš4»Á³”2ivƒëôM®AÇÔ‚W̽& n×… M‹ðÐn.ÔÄÁ…ûÌàU$;¢’¢aJu;=¨gp šÝÔ: ®AÃÔ†ë¸פÁumÉ&ÍNlÙçòC«o˜ª‰ƒ©Ûfð*²L›ŠiÒ솺Á5h6ÕCŒ ®ACÝNßÚkÒˆ[£i)eÒàvº¶dUzz…`ï@(¹žÁCÁq žAÆÔ±÷uÌ}½>ΫxS¿‹ZWñ .h7-¦V´ãrf¸ìçØÇÕ“ß¹mh¦^“ké[«à¾æößå¨úýÖ1oq¬’ÿ†0¯N0Mvàñ6ƒW‘a ƒiÒàz ›ë™gº}„Á5hFX• âš4¸=û\“æªÂШ¸&­ñgJnY’[ × AÏv”IƒÛ÷l®AÇð 9bØ«œÑÖÌŽ’Ó.yYàÀû¼<©_C¥-×üÙmµh¹R ¯‚ÓÑš^äAŽå“ Ÿ¢0e¹Ÿæaò@û0ßPíóðËhògdJµáäêÏÚ9 n¹ŸgXE´“‹Iñ ª2MwÛ\¬j”I%?Þe9%2§`ã'âlù¿“}b­V§ùFf‚ò½¤GÈÉH®µ޵ê'¤~R8'µb}JÅ“µ‰òŸS˜Q˜¨w™òP&ÝïðZÛº’Xfç•b~5wÛ•Ÿ³A7ƒY¹ÓÒáîT»ç^ä{!Ò~áÕ>ÀžÁóÝø¿c›pL)ˆ™ä~Uø¹^g"g-•Ç`²ðƒ IðÒJéµL­óWa êSòƒ@d™CˆÉeú¢%…Z~äÃ,™m$ûMøY½hãá¢ûí:r ãm$rö‘õÊ®tÇß–"…¯¶©ÔZŒÃÇÂõ.R±Oç––,öø(µã^›r¸÷îÔäÃ2ÈR#þŠ-±Õ9‡á0¥rwæÐÏ*êRå>¡4ÌZB‘‘Q¤v e2 ¶´2f+Óbeò`iñäG;€`„ö»ÄòÃÈ¿„Âoýº_$Ö{M^=øöi1\6¼]Ðp>ŸÎ©v3Z,F“/ôM'4žNgôßÁ|4ø<’ã85-©WIÒ'ÏæS¬¸¹°Ô¹ÝÀu#µ}ÆÁp¶HÑTÆè˜]Ï(>Çš‘_hÑþ±èÚM˜e Ž?àMФÜÒ“Ÿ†l»Ð¬Òîùùù=%Óñ÷åh:±µœ¥¢â"UUDf"@ä"ݦ@cŠÈ/¹Ä;†¨t/ Ÿb™2Z‘äu¼cÍ^‰x³„ÀlJÄ^¯~i¦ž“Z츭òNÒõøþr:þž/Ö Ž/8§ª¹•Û¦×RœÛ0i5ßÙ…:ƒÞ9“Os®_>ñ{>×Ça²{®O¹˜¼{økt¶:Ý£sD‹áfÃù˜—óÑlùaA‹é÷ùåF“År8¸¢é5– þ^ª0ÿPÍu˜Å³vEµP¡É‚4Üæ S¹{ب÷{q‚"hŒßL¼Zý` „B ×ÔV^óuy3Z²]”ÓÖ?jAX"ϵŒ†ß,öÛ^r9ÑU hÜ€†¨²rÏ©%Ì+ð•ï¶Ž•¦\UOºª‡‘®ù\9W}V¬ðÚRãX(+ ù™­¯6"l[!HÀ[j lÑ¡E%$—vKÌ4kCèrùe„ii«ûV¢ÞW’kWê5¥öÏi¨šÄh²Î'ƒqÑ-<äæhB7?éó|z»Î-EŠÍ†Ñ^ÐCèrú}|5ù°¤Ëùp°Ö³Áí„.¿ŽÆW„ì¼.ÿ²Õ|:¼-‘ŽDŒ3ÛO4‰êluÙqà̱ͩç¤OQ†}4c‚§toòé>•ûL'6Whãª5RmÄ•=L†iŠÚ ?©{jü‘žìÔG>lò"rPl-£Hî¹ÁÅP8NñKe¡ˆäƒÎÈ»SPXP¨h¢é4>Þ½×GáÒ@î¢Uò³/Ÿ‹z¶õ÷<džѪY.(¸¨Ç/ȇTʼ º“zU~©·^‡i–Ÿ—eõŸg‚§ãr‚äùUÓ%ãár&{A%xÖÞÉÔǰ÷‰»„aœ.Îmˆ©µ6î<…[rñœ—n^j”ˆ•‚ç(û4¾V3•µš,^ÉTEýª²Âë0"¾1åEQçªzòr˜å VYø¹æU+)Ê–=£ÂýÛª?e>/XObject<<>>>>/Annots 624 0 R>>endobj 1193 0 obj<>stream xÚ¥XmoÛ8þž_ÁÍ—$XG~ã,öiël¤qê8Ø[ @AK´Í³$ª$UÇ÷ëïR’%§¹nqØ"+jÄá¼<óÌÐ_º¬ƒÿº¬çþ…ÉQ'èàMõgöÇQì¢ßÃß„:ÁE±ˆÙãQm ÙE0ªËöË„u;£ WÖ׎úÁ .­­!wƒn]Z['¬7hî­¯!_4÷’3½QÍ¿¨œ©dd}M¶_ ±¾†t0€k5imM®ƒq]Z[ÃÜ^/Ö¤õ5¤ýqCs}M®ö*ßœ´¶NX¿×m8ä1®ÅaÜø…q#ãz ÆÍ”²Ñ)ØËöKXÙ£JV[’÷cÄb/Û/)ÍÃàr/{7?Dª^±öÍ%€ÆæKú;ê÷Ù=ÞNØVåqÄBÍÍš)Í"i²˜ïXªìZ¦«€Ý kBž ÆÓˆM3¡9[ã1”fT¸–-„µB³EnK ^~6ÿ÷Q‡“IÑiÆW°Œk+ypeb¹¡ejéT/ò•³5QZ°L«T¥!´:ëñÊX¨R+Rk˜LC-¸øù”/Ô7ÁúÍó™?"èöË(†¥êеµÙU»mò,SÚ‰ µ2jiƒP%íH,9âp“½üÓ„2ú}³ømrþôøÛ×~w4Œ½öÃTÚ¯1Åë댇k(½ú{&m·Û€W{Úªm“(j/dʵ¦½•i¿×þ Ÿ)tQî"Ç>*»”/l»–ášIƒ,o)tqA,SöøÐmfåêr!ŒE®ãÜJ•ÒN«XnŠ2ó[±` ­¶Fè€Íù†D±RòýûŸÞH-–êåûœ¶˜JE:ž˜(³é»»É§«Fd®—ä¶ÎÓeÛØõŸ–Šyqë cZ@@Ì’Ó"T:2ŒÌZܨB\еÎ3ZSj•e"jœõ8½{šßNïçÕkÐØ“K¶S9ª¨Wi¼CäMB§¢XCTñ{G”&µX¤Òð¾Ù!yk¤ÿ8С¡BµT9{#¶ Ãþ—Z"(o)@‹à°bKS6CNà]õ«SB¹D¿9YµØ7©sØ`-7-&´Æ[--‚Ý"MMbÉ5È_he)öQ®]Rö;„ ƒ  íj+pœ‹ßõÝÅPÿl–Z nF—*ŽÕ–ÎuÌišp¹u@Þ9Å”›Jä¶7aÖZ%82Iõ±D)ð(òÊáiæÊðܬÕö{x9ÿû ˆØÊ˜²ÇøA‡*÷íšÒÌ¥ r Ømêë,¡¶D™6›¯}«C!úØ/xÓ¤š*tÏAOϧ™ÝPJq§À¬{Ë¢’³ßŠ[•…ÿ?r•ªŸŒÝß‹Þkë›Ñ+ÍÕ—­cè-¦ô,ÖvÞ K˜©ÀÔ{¥¾bÌ­¡C]ô`¯ùc¸,qP#yÒêËL "„‰ài1R64¾læD˜†H@$Ñê5‘SÉ !·kòb#DVæ+\SßÇ72IÀ8˜ªMßAz~ã±rÈÊD®ÖÖ“&';‘ç„T»1ý„²œ²LùÆXbõÊiŠ'%…è‰IsÈy€S2Oí •Ê M>˜ú­(Š¥Ø>Ÿ¡æ¬ˆY¹™¦œHn´YSQš±"1­=Z =D¶dµ#ªCÃ÷¤NŸð´a‰4&wY-˜´FÄËbgÞÜä4±1†¹6è20>Gs9÷†¡Êòª«å¬àŒR-fbpø– ˜Xøù¬…:¾œ†xÏ l¡Ý€ãjžœ‘4l:Øû‡'W‰ü§c‚½ÑÔ°ÖÈ)¬ŒÀë±"z{˜Ìî¨Å€ÿÞ½ñî±| M—–C[ZTWL¼ð$CÄÿ¸»}÷žT<ßíª8óÕjGq !*u´C"’…iu‡ñ R´¹ÊñÂøj?î„ dBC¡K “!à’ˆŠŒ,#RìpÙr½Íûôª-U³ƒY p‹¢öݦ#(8Y”pÖî2qÐî ®½òÓ?œž0…Äì\°ã MÙRÇ6N†ƒn¯?^Œ.ÇÝN·Û½À‹áÅðòäùìø1ìùô~:Ÿ\!x;ÖžGr…RLódAã§ÒGGEPRÅRá[wa1aù…‡åŽç³Ã8Ð0°s­›­зtnStÐ,èŽdQÅ2Vœf L¡äJq>.%ÈÊî­( ƒ¦Ãâ×^ÿ ?ok˜i1à ÿLjæïAÈ6*LïeV+ðÄoj_ºÎ%Ü‹ò?Ä %ÓUùëÉ“Q‘vÎŽ;ÇØjsÚÆ.W%ÊÁÓmÞ À¶L£¢àˆWœ™+”Hv1®ƒ6¼žÏ'÷nÊu…å&Ùý£“‚º®/SËr á©*Súù“:8ûšKp:¸)ÜÀÜl@.ª³lê®Ç®c¨0O@_Þ$n‚ëàs`*^S²€qü—_€nñÐ[så_ý½ƒZð¸d5€‰¯[±j†"¡ ÿ^6¸£w6G>æ ÎS„êÛž&àr¸‰we‡ò£\ó_L·õŠ$zÎ÷QvŒÏŽME9nQP2T¾ZW\C×tãíª+BànóÅûÝÐ.é†6™Íp+;†iìñúÓ„Ý?}z7™±éMyCÃ#†Ä㟹¨ý¹†½·nZ,Í}=">Ÿ*WĘîVÒËyy·¤ŽuËV®`Ô1†~x8¾G% ¶%¨euwÀ#Ù¼}…«ýèQO¥¸ÓtºÙ…S“-f$ØI?Á8ª&ÂNî;Z|ÍAHÈõµÙ ³~Î…ñ“Þ¯à'•ƒvkEñ ½‹^0ê™;ÿ²×îv\»£ß0{½¡Ý´;£v¯Ó’h2?ú|ô_[ÕDHendstream endobj 1194 0 obj<>/XObject<<>>>>/Annots 629 0 R>>endobj 1195 0 obj<>stream xÚ­XkoâJýž_QâÃæn0‡@F­˜„Ì Ík€lîH‘®Ü€7¶Û×þýžê6v›$£¹«ÍŒHÊåî®Ç©SÕüuÔ¥þu©§ÿ/ãŽÓÁ“òcúõÈí9=:=í9 é´_Fhvtâ:gxft×q u–RožXÊ.v§~±é ãœ‚^X‰Ð:[W‰Ø´Û¯-´eh‡C§kk-9„·gp«ÒÚ2´Ã>Œ·´–’Û?«eËЬbWON,WPºZêØ7KW‰ì*GºRÚ2´n·¶Ô–¡=íÂqKkÉpµ×ƒk•Ö–9uƒµ3î Ø˜5‚ÖU"¢pâô-%†Ôg,T:K é¬Û*%rºÈ‘u %3ÄØiK«MíÙ¦öê¦ölS{uS{¶©½º©…îtXÓY"Ü"=•ÎÙNÝKfKÝÚR[fPŸ²Ë•Ö’‘­Î¹«´¶ ­;¨ïÌêº0P³Ô1-]%2ôÎÐRÚ2´g§ÈŸ¥µd6ˆÃRimZT½³-30´C[ëž°ã•Ö–¡=«¯µåNºõµ¶ @ôëú2?¤ÌdMíKlסùŠ?®KsOëðhÙ¼›Þ~¹_ú8ÿÏQ‡Züž×œÐFïfþø±Ÿ?ÛÐ}ä¿S†ülYÄþ›¿#E=¥o¬º™ÓNåæe„oæ—³ZR›©^[Ç­}­<µk<~<&Åk“*œdX(Š=D’G*zã\ørÌiL¤F*¬z#3"Ë‘gò°ò#ƒÏê@og¾Lù¹¶†Ã”Ê, Xêî½g |´ûrí·µs¶Î2‘"ƒ^žpAð9~„º ÷LQœg4z˜q-‹%‚&ãJ,÷«[1YušùA@+á©ÉÊRD°ZDkÃ6~r!2Îl"B™Ø8»òÈÒß­ˆ2Vr‰‰Hq -g›£zù”–ðZœ¤y"­R³ ฬ‹A…¥La4Ìä!µÓNÛ—g´[8È5%=úÞšçn¯CŸh<ÞN©q=ºº¼^/è~~ÙÒù·Ñtt>OaðýÍø»1„ rœwIðMº~Ø€r“<Š8iûH­ÒR…¡ˆ<.àkBk ‚ŽPÔ ƒ_"ЪŸOÒ¤ w¤ò ™~í¯EB %ã2˜ˆ%§ë±™Gò%FࡌTÔZªD› ®Äq뼜z@cˆå>Ðøˆ/Î’lÿŠ<…Ьæf{»Ý¶ à¶Ñ~yyqâP{@ `çï7Ž‚Iı*<Ã&Sé}0†Ä¡Cƒ ¨ï Mžâ–ò©-WV±û=ûžäF°ò_˜uuP N© ¥FX –ö(‘è6¦ÓŒ­D†J·^¥€ì­H¸«âXã@T×§]ÃÕèæ+Ö³Ÿ¨(”(g‘ø›}÷¯áè¼5¨€?zœC—0V¾ˆ0æ×A/ïäžÏøÜÑŸ÷³Æ!­3Y€GÑó[–µŠÏ6êeóªjúºj®ïæ?…ssuE³ùh>™Í'ç3šŽïn§¨”úù­ŸWɾ0R‰.ÆÔÁ]T'fò!V3®=ˆh‡x¥ „Ô!_`xf>øk ÔˆuÁROEñøffB'ÚøÙA#z"ûšz\é<„ŠI5‹ZÙCs mEäU-Å¥X¡…à%+Rîcûý{zÿ.JèÃ"Pk3ÒpÑÂjÝ;(ô×Ô@´¬_ñ5ŸËäZŒø ±¬Þ‚¤áÅ~–òÓ=9ÃÞC04àâ‚;Ý+iK‘Í™4MAètÝýT;èóT 5{Á!¹OÍ4öjòm©R¦Nõ°'t+zWM$ÆÛ‚õµ9àÑ·@Ž~f>w‡_öm„.4Ÿ`5'š»^¦â"ø\½È™©ñ2™ì9ž3k¾å¶pYxª[ôþ|’«(Ú–͹y”„†>h_/`ð•_œ©éñYù»Y¹RëKw2ò¹û&ÒÞjç&’ì¼Ð°'t–ŒÀü¢.¶‚®RFÌ&ëÄr©Oó*C–[¾‹u3XéÔƒ üÈS[ÐlîY‹/ ï×À$B ‹£IdÎàv7+nÅpñàžÓø%3 ˜K&P*f"æMH°»˜ªt°‹, OE>}ó[P^¹è¸h£.öf‰¦3¡x¡ºñ£'0·Ÿ©è®œ5:7è£õhÕÂP-6J}Ö\,ªåÕúè<2ã8";´I$+Ç{É[ º–švz|ÃHZ@±™ÄhavU+éH›Ö€zÄóóÿ…Op]ØÕEŽ\fqÆ¿:¸~ì­çÿ_òÿXX¿ üVÙ z¦Aè€>ûRßòS3<þ‚v˜‰¸@u|ÑâœíMßBáéë¡f SÎë¹”k ³)_hl³OÊmC̾@̸ÊÊfð>·ÍVü”3ÐÐÉã[ƒ¶º jmInã€çQ‹õŸà‡ZzÁçëköÈ›ßÌÞ~|ÚdaP¸`ñjÖ®Û{¯Iî§WfTØdYü©Ýw&håL[„ȉƒÒýŒ ÷·ÒÆßJ1pÖóeSÅá=ß#Áóèù׉S\d¿ÊCÓ$²œsŽ«‹ž„˜¡Š†Ž+FY»1`2ÅÅÓŒ>tŸÌÉ:—¶ñG¼IDÊ}y”aœí~2`³WgúBeëÌÕQLä_98mu”¢KÐ÷£“þòç4OTŽ1:EÇãùŸ÷à¯wîé݇n»Ûqõ㓾ÓëõÍãîI»3h÷:Ý>«Æó£ïGÿNÜ~endstream endobj 1196 0 obj<>/XObject<<>>>>/Annots 633 0 R>>endobj 1197 0 obj<>stream xÚ­WmoIþî_Qò=†áͬ”HŽ$cÀë‹Ö»Q ÌyfšîtÿýžêfºI¼—œn³±S]Óõ^OUÿyÔ :þ4È×ÿÏ££º×ëPõ#YQ£îÕÉ¿èxmj7ÚÞùM¯I‰¤å‘fµ[=¯[°% H.Œ?˜;M?#êÖ½NA„49²Hð:gñ*2‚1>4TL›·Ûôz6×¢Áí¹Jm:"¿îrm\¿]Z¯¹ n»á˜lÓàvzˆÅµèHGÖ¹{aûÛô[Ž^›·uáµ,îAÐ÷Ékwšü³Á‚ëÈÒaîø¬Ñò†Ñö9“ßã8éþްÆΊÜ¢ÌmÉëèË%¯"#êµt‰íyÉÙiÂÓŠiÓà¶Ü«Úœ–o™cˆÒœ’Çú-^EæT<‹D)áwÏbÚ4¸m±¸Í®´KëŒ+mËZÿ@²ïHö$û®ä7ƒÅµhævÝ»Rj7½6 .вas-:¢VݵʦÁmôœ@Ú4¸Í®c³N]³þZâ3ÿ `¿Çq ë[avœ¢B QVHÉãk¯"÷UP1mš«€ÁÐâZ4CU×óm®E3T5]ÉÍåÞpŒ²i÷®M3 pÖ+®MƒÛåÜX\‹æ<»wmܶk•Mƒ{Ñ@V*îûéÑù .×iºäŸÝf“¦ [8š×KRq¸£DÍT–žR*E2_“ŒWA,SR =ËÝV%‹ôÿج‘âX ¹2Úd»SÊÖAJim $’"Ni§ò„¶r†ÓLÒV¤«Œv2£—€4Û½™þã¨NglÖ¢&â½~ñ_«µ£rü[ËÒrò4ˆW$ |ªiÖb³‘нIÌóP$0g ëq–ˆº·ëרpXã¨OäR&2žÃ0ÈzãB$ÂԾʨòƒ³ ²µ `?ÇjÓ‹s‰@Ê“Xföã߉)ß,DÆ<6Ù1a÷ŬŒ`¶™q=T«eJZ(iÂ8Wq&|Ã&1\ŒD¨¸ZBv¹ó5R°†)&~ð€Ò QÉ‚-8¿Em”¶ÏU©øØ°÷¥ScSȨƒÞ4“bQ„ä5bI3Dqñ²sðæ†;·Ø&£ÛŽ­ëÅ”›30=,â2³|…¿8"†€ð2“ÙV¢Tîej8| â…Ú¦®î“9äH‘€T…Úf(Hò8Þwú·¡-zDÛÖð:~ÍoF!­òŒvUzg…àf)x_ƒm®Á»Êðjú0îOÎ?Œ/ï?®&4ù8z¼û™j«ºYF)—ç eXÊ º9fØ|ÅÍ$­”Z<½ÑA-_xP‰p ÝÿH2mp-á”{“¢`µÎŒà,Qù,ÔC :6Á<Ë“B‹ž4Ú 4Þ`©o3ä 2e§’r†˜KÇR‘;F<Õfr.ø¯0f“ȳ…\2íïJŒàRäÓ yƒ­E1œêA)¿ ÌpyúªúcÓ²ðÃÇ \kñ~ÒÆ"’¤*1›õ. XÖΤe-â•i±WÀð:Hlý+XÈcjx¶}-4è³ |t7Uhî¿FÇ®FÇágúu0L't9îÓõèewM7£1n¯i8º›~DÍ ¨Ú)3Æ£!5±MDÛÞߪzõ^€"áÞDÅ$‚×"ô³ »uÔ´CœA˜ÇÙúTG,Σî"çz›JõÚWýcÌB—Ý£‰:¸rlXúX%Ç|[ÞB„N×1—( uÿݱ9]³rë/ÁBïwä{tÉK£†iÈ0x–…¬ãSs]KrŒ™á@—oYÀþ0¼î!TÍç9š^¯=&¸f;¬ˆZ¢">/XObject<<>>>>/Annots 643 0 R>>endobj 1199 0 obj<>stream xÚ•XmsÛÆþ®_±ã™Œä© ‘à›èi›Ò%s"‰6WÉTiçIXŽÁ¢Ø_ßgïør`¥DIbD{°¯ÏîžüÛQ“ø·I¾ù/ÊŽ^¿KûG1§fÃkßîy=ê4;Þ95[^‹ I3¼ÜÀç»ÇäúȼÜó}<3ê5¼îFH)8rD`]ès°½˜QÓ?÷úèÊülymue =.:¨#=oÖ̰¶ÛêâÙi·8rü1ÁZ¤Ñ°î³+÷÷"°,:Ø^Dh ßóЕvÚ^ÇE(¬4]Ô‘Z£î’+sÒΑ$ud .ƒ:2'Óï ŽœQ éwQW Ýx]9£¶_÷Ù•¶ê^™tšN¬°+ÀãŒ;Ø^ätvZ¬ÒŽ£µé÷‘pud ­ƒo[µoÏÐsõ›=tÍue.@»fו™Óœ4ud }N¸ƒ:2 Ðé€${Ô•myÜ4¶jyl7êÙpe íní[W ;ÝZžñWtW<+슷øZ¶·ÅÛƒ®ÌÅ««ue ]f­ƒ:2Ð>ud¤ØçrìQWæâq;¨#stk^¹2Ðs¿®+í÷kv]ÙÀE]h¿WË•+gÔAæjÙ0C¾Û4Œepc?öìøç³fô1@ÇçeðRÛ/(ƒÕÞátý]õQa güìù- c3–q\ ¾~†á9¤4¸ÂAPðe8¼< G·Ãñ·¾LÆŸn†·ýø>ümçm úÀ?Ä'›>2¼;¼_ÈœF$r‘®ÿ+)ÅO5§Y’J}JËBERë$ŸS™dR“€¿O²XS’-UQ줇“á³È–©üHÕ2¥Ü~E³Be$hZ¨•–B-«"‡Žš ¬WUåY’—²€$‹B$fñqª`{%’òá½G#MåBÂAÊ–„˼ù¢XñS<©$æSÊcJò¨BKÒK)c›í`|ó-ïêIùEUðU¤éšrþJ«<–….YáB­Œ[ómÖ Z©âÑx°O’æJÅÖšG¡ñ–]Iµ¢L|‡ÃÖóh!ò9º†±Hä5l ±ÜxŽWŠÃJxõ8¤$sà5[ÛÞëðF?Ù×IÄO TØ÷7ÿ ES™G‹L´skbOKëølÌ’ñ¢iÈx1¸ÛòÓ¾ÃK Çt;øiH“qšŽÂ!“Ñ—ptwMƒ0\üô6š~ØŽfÌ#SÅDÂáUɉ}ä“ER’ÊQú6¹DÉåO«˜Á¿nœ ¿“çyÏv²–Q™àC¤ )5‚/D&A¿ÓZ’WÜ+ˆµxg•¤)iæIi’ƒÐÀB!9ã&…§à¤4œ%ɲ´ßM%ÉgUå y§¼a;Ú³´¡2S `wŒ M‘ŠQ„¿z›n…]jv)»(5Hеùœ 6(K=Ö\¨ óxïDúÿdi5\²t˜,ŸÇ÷†0#L«á?‡w!ã[CšIÀ¬ †` ¨4 ÂÑE@ã+‡Ÿ‡“Í j°ùü˜ÀÌ·´y~~ưBÚP4½Z­<œ{‘ÊÞs^4Z ^&ºL"Ôtf¿]¯×/~‹sû­GŸAt2%uêÚvß–of'–~SÝC[£T©GB1™F¯t9\I¹6µx¥Ãÿ D~c["Ó¿wƒë!ÝŒ¯éjt3 ûàîÒ)’u1žL¾} ÑðŸ~¡ãûñä68þSí½;¼]Û„òœ4ÔY§8S™äÙšizJ ”AÃ4ANî’l*NéD§ æ¬çqBΫáu¶Þ-1tCQTKn5žÞ³ ‚¢¶íš féhÅ;à…g†·ó%mßÞ[ÜÖW§jÅ{ ¦ p©°,Í6µ{Ó¬X.ïÝXp›}v°ÈÞ´µ¤®/…ã{NÝñ&¥6’$ŸaÖqzíðÄŠ/ÔTÁq³˜ ¸¸ÙL<.àÄJN)J™—v ˜`<%1íÌb2•ÛŽ±æ„YßUþ˜«•=¦~&(•Ë–%â%g±œ‰*-½$?þüö~h7~Àoožgx…ƒììÏe. QZ®qoí’cRbjÈÇ˪X*m؉„Èçeªž)OUÊ ¦IÊfðËœ¯MNF9eJ—˜ š/S*OëÉÖºU”Jfñ}R.HWÑb[¸SsG0‹ÃÉñš_b_›%þÚõf·Ô¹ˆïüwÆâ+šìu£ÕôôkYÏçO7ï_-¶Hå³d3|˜09WÖ’:7«›ÛØ ÊÙ¬©À*ApÅ©m”™¸8óÅ"®"ÉôJT¥q;Ý sµÝòÕÖq1åÛ#Ìé™9ô–Æ/äoURpÛK슡l§Y!çò™ôIz¶ƒkÓJdWÓëú]øcÿïúô·w“áõðçýûáa;ʸ~% à|•ä9NÏôZ—2kùø ƒ×Ð2¿¾3{ac ÕÚ€+̯°ëKÜF1¸^kºah_Jì2LVÅï] ^Lôæz Rì4ú‡XñVÔÿÁ/"ßÑj/kãiÛçaËUúÀ Ôk÷ŒÎ2bÖjÞï_Q îWM¡°Pz×iŽÀªý®ïõZ}2.œwΚ–9nw<ßïØãfû¬Ñ;óÍCÃðèëÑÿ!@endstream endobj 1200 0 obj<>/XObject<>>>/Annots 652 0 R>>endobj 1201 0 obj<>stream xÚ‘ËnÛ0E÷úŠAVÎB¢(îúHmŠqÐM€B–)›®,&Ãýú’”ly…eBÎÜ{fæ%!€ýO½OÂþû|Ø `„¡àœù÷œ! VA“`Tøêñ(_å¿È}IÐèƒL"1¥z×ì;¡pcà>ëÆ * T\hä…8ë—Å+(NÇ„ÂeŽÊ ›úÿD"Ê(ŒÅJ)õ±…(!L$«ðeéï$ƒxœÆ”Í% ËÆ2G\Ä3æ –ëåïêÙ矮r=´fÓèVAÕUíñ² Pî]ëa¯:Ÿ Mw½Ü½ÓUtˆŸôd”9¢Lx£³þ­®U×+Èà«y>Z½Ùº ˜ÍË CÊðe…îa­{gõjpj C·öTn«`!ì"x™-~<ÂBuÊV-Ü «V×gÓ§Ùâîöéúýf(Æ!%ÑþÁÀÑ °zi[sˆ¦­î\Í­RЛÆ*?ø4öÒª&ð¥à=®ÀøÝùšÃ¶r’öÕÎX_>’T¯FÚÃA»-LÍžræ·Gâ¬ÓµßÇÁjçT«ãG}ßVƒõ‚p£zWé¶Uƒýg£oΓŸí~ª}€úõlÍNÕî£Å— §Åîµ$ÿ}Ó‚"Á$D¿²Èf1œsD)Ã$ϰÈ(&<\}[&÷É_l" jendstream endobj 1202 0 obj<>/XObject<>>>/Annots 663 0 R>>endobj 1203 0 obj<>stream xÚ½XÛnÛF}÷W œ>¤€LSw+m (‰ °•Ä–](¬É¥´ ÉeÈ¥eæë{f—ÔÍv´MsbrwæÌ™™3£|9h“ßmêØ?ArÐö|ü¼þÈä{> F#¯Mý~ÿîu½å’¢ßà¶û8Ù;Ûú^ëìµ=çÍ>쎼a}^§mŸÞhúpàî¹ÑÀlÙè †kû'ƒ=(>£h>j(½QÏ;©awð·9J½NçñÝ®ÿðÅ«9Þºd?ZŽOGÐóÄõ¼þ°MÃ60õº4-¼ ž¿2ÂëE¤bI"qõUæ4ôz8(™â€ÒéÏó?‰Âzz]ösÔ8:ô¼NwGÏßÇåB¥ôFÞÉXglŒíŸžÔØ|Üòù`d) t'óŠ¢XÞ«[€Êœ‘Ked`JDm–Â*HŠ¢"£©,|H"Žõª Hç”é•Ì£2&yodZ¨[+Syt&qWÍRÚ è¨m!¨·,Uº¤TÊM/¤¡ÂˆÜàÇ\DZJü>'½J=š¦0ká6Y-6NFæI±Fp‰KijRqL·’1‡{p%XŠt!Åm\yŽóv·á|Øgλ:êú[ìž"sE‹ÎuðÍLµÒ†¶ÒaàÎ`H{ÙäˆO×Ï´þ\ü@û—òK©rð|#r ät6Y¶Âþgw§ep¦~¨»;¡bމþEÒz|´Ëî:Ã]Q9êœ@ÛþQn÷~g»÷]§ ÿ¹?“,–ÜO(HÂ{™Çuû賄HXÁª{-«#ò²Ä£‰£i»8/Sª´Hâ&Ä XË,f·ÿa^tãl~qNº4YiØ¥tÍè4R‹2wú`}7}œ‰l5‡O¦"HÀiâ†ÄZ„Í—r ÆÝ.‘î€`ͽHÇ!в]ÈÄÂÓpÀrÂFÙc‚€à#‘‰Î+y/ƒÒðá%gž ”lUdY®3Ô¹‘ްÌù`мóe ²VŒ–) rÉ—D ¬e.ÅäÈ £­KljJi;„ÝàDEeʱØs.,˜ÇE±*˜ /‹1Ë ÊÂû»Ò[ÏŒoöƒ*ƒPëÜbеøb6´œ’×”…ÙT8®(-“[ÜA6CE@Œç‡–×C7ƒš"0y¸V ÝALt‰rÖHKQÓü ÉM0ù4¶©â¡T°û \ÛŠ/Ê[ŒN¦ÜòJ¥ûkG"GÉat iF¦ØEÊÐ $œÒpœ;À4rÁ’ ðƒ2¶Å +¨2)ׯ÷„k‡–-;ñc„[ †qÊ[Ä¥Ü-¢™6òÏãu1\\_Í·èe¦©2Ÿ\ðH‹ÂOJÄê«+¨z\²ÏÃK˜mXÍZ|S^A™çõž±Æ"¨yßÅzªY6ã_»*k µo=¡¿Ïï”\Ù ¶"׫À÷Wò÷Ͻe=Hàãõk–¹”È‘³Ý‚^ ˶j¬ DÄeÈÐÈV« tmÄ)Mc£ao‡¼G.ä­ÊT`ë‚b'Ѽ¹Œq¶ÛÎmž…ÓÞéîß…ä†ò…Ûý}Æžý—¿vâyFïϯßNgt3¾œŽ_O®v_ÿHÏ¿>öp2›O.élr9¡ùÙ„.¦³éÅõçb>ž_ÑÍäòjúnF—“×ÓËÉzõ‘>¾»¾¬ÃØ36ž½±Vfã‹ ½;¥ñù9^Ï^Ïaâʾ©£¿ÏÆo'»}’Tô“ö3,Çu1ÔùyØ÷ú‡¿jÝ®‹Ìúf6lÂ1§|¯µ£±°¦=šTÛ:›Í£{"Ík%V ^MÖð6)±ö6Ì×›&F…ó´Æ®Š/»t[5m5ª»ê¤ïøý§ÿ« 3èxÃîÈ}39·ý®}Üë{Nß=n÷ŽýáqÇo÷ùÕd~ðáà/nendstream endobj 1204 0 obj<>/XObject<<>>>>/Annots 668 0 R>>endobj 1205 0 obj<>stream xÚVkoÛ8üž_±¨ IJ-ÇqÒO—4—¦×æˆïŠ Z¢%¶©P’]ÿû›%%ÇjÒ^ó°‰ÚÎÎòáhBcüN(öIq4ŽÆ¸³ÿpÓÙä Ÿ³ÙŸ1þ¤5/¥Y|úüƒé4~úàjq4º9§É˜k¤O§´H}"ÜI—îkQWd i+Òèåâóј†1¦ƒ_þÒM¦ÌÛ¢Ô²ËTE‚´ªj²kÒ²®¥£Ä¦²¢B”¥L©¶dKéD­¬©¨ÎEM;Û8*}$£µuEÑUç¶© ´ÐHZç²’-ЉGq˜æ¤m«´xêÑ"—-áä+2=ëj9.ŽiðwÒ4t+Lªå>އY:»Qü®VæKÅ…±Q™¨%¢ÙƤ೴®®BžC+¤Z£|avT«¯kzu€»TU¥;™žPÕ$9 0Êé%8X×´v¯âN’)*PY e‡œòÓ ;¦¿ "N1º™t;<œG ù–ñÙ¼}Ü=å‡ÖóaèϦ.±‡TtE±"PÔ6—†:¡ ŠL¿Ã&C™Ú(AéΈÀ^¿yËÀ[˜·‹»÷Ïü!ÆPÁqÓbü§Lyž`Äž%²¯¢X—2:(á âR¸Šáj›ÑZi7•oóäµu»ÞŽù°~}ô4£Sî`4Ø8ŠçÜÆ£›‹n}|]Ðpê߸L´ZiIÿ §.ªà[8ìÜaóËôŸC?Âc¹BmQ¦íJhÚtÑ)•‰FO¤Ün¼€EÕ®miŠJOg ¢9sÍ­]ƒM§j~¥ÇïÓÇ '¤êDƒNf0ziˆ”S¬sa,.÷Ð ±ÃÿI‘_K™ÔÀA«µJ‚wDtk·¾µ;m =O ÝÂVÞ»„Ýš.ow•ãmà±À-gÁÚ!$dü½ú6MŽÛðÏ“o!Uª®z0¶#Š¢ˆF´Ò6ùò*k´ì›ë"oª}mËA@h._ú$lâ¬à ¶ðkÖ*k‚¹z]úºR {,” 0S¹j t0§£ÿSåË"o“ø øiE†!QAù¼×]ÌG¶¶WeÈEEt÷ðudÞcP£t÷r¶mÜòS ·9ÏÛ# /îDt%µÝò| ÊÌiQ0™{„a´%Õ¬P‘n„©EæÇÓrà0 ‹UÐeß-¬yQP¾“Ce6š IêåËW=x”ËÁq@[€7$9> è?ù-„†ôû¯òq¾Yˉø6¬Ö¤Â¥dƒ™«Àûr L-3éæ (±?`ÑhŽ[>4P¸  @Zí| ðêØ:à­<ÝÂÌUÆÝóèNÚq¨‚G¸ãØ…u<Úxú{ýr¢¼ßÌmU]®yà‡ZöÝ> ñ[§â–À‚FzÛ7XÚï1¿û`8¨ cí ©ýÇß#•å” ‰Òe—_eÒp1ý¬7¾ÆOW;$XVþ‹S¾¶>º2׆–P…÷0Ýxå¼S05~釕L´—oT{¼Ì˜¬óˆî-ï6ûˆßxÓct2ÆYqkã²*qŇ®ã ½»:~ô5æìrð?ww××··ww÷÷?ÏjOEé[ž;ŠRPhL»ËÒQ<˜!MÎ^ÍfÏ¥ü£ávZLøæd—iZùÖÄàÀΈ ÀT®ár)%0r‘°DÐVPNžÎ–˜~JA·÷|VÌሩ¤ë‘Ããé@1Sof—gØ Ï¼‡4@0ÂÉ´3ÂùŒpð^4ŽÛûš »²qÏ[æ z>¸;ÜXÍžô«Øò‘©ú„j>c"~߀/:ÿ=Ÿ?0€ ýlÉu~5>‹£ùô"œ³ÎÏG“ñÔß>Eq< ·'§£ñ|„ òóÛâèï£ÿž^endstream endobj 1206 0 obj<>/XObject<>>>/Annots 672 0 R>>endobj 1207 0 obj<>stream xÚ¥WmoÛ6þž_q ,F/¶e÷S›¶i ¬ëºyo@¾Ðm±‘HE¤âxÃþûîHʱgMš¼È‰yÇ{øÜÝsôõA ~ǸŸ¼>ˆY„ÿoí "Ád6c1ŒÇ)þ=JÙ Z˃ˆMÐÛ?¦÷lã,bãÛk˜ÅÌGso¦3–SŒzö1Žà­†/ÞÏ/$³ ›ìì1šdÛý§“{P"BÑ?”Q:bÓ;ÁßÞÒiòÀBí_HFÓý 1‚Ü¿0z ølOìó9.ÍRpžù³‹ /ó%æfÄÆY YŒÇ¥0/Ü9q-?zýǯ–[•^-e%€+^mþ-dl„œæ]-H­Žç_÷å¢d,¥8§} ÓɈ%i†Ž~®º•Tð¾åMih‹³‹i€¡CD6oJÞZs+g„ ¨yc ç VB‰–[QÀbÝµÐøM½á•€þ­ht룯@É\°íR¿ nß¶|ã  €ØÐK¸áU'CÅ¢ÅkáXi+üÓh°%·ƒðZU(¹«ñEÈž-1)„‚[î6(¤i*¾iMÑÖÒ”lÿ§Ïów/á3í§•ðà…’ÊrQ¢'e 0‚ ’]í¤“>œRîK5îkõ4sòƒ«—É$ƒa!ÓZ€?G¼ßéz^éü ~¤úûÎ~Ǻ{®ÿ]éöþŸøí3¼çÚòç }ƒ%¾ÏØá-öí·Ý#6" LIr“l¨¶§ÉçÊi:¬¥}ʹ+„‰³.±®ñÇȺA- vúCE¾-hjR“;Q sW÷B¹Ún¸ óÞððƒ6(…—GsÝÀøòø°Ù?ieËj(°³t»qØ×Öu½¨ ªÂç%mØìpj¥B«,Êß è†:ìv§°)ƒèqeÑ‚}‹½mŸ÷ôHâ„“ "¹Ã!@áxÐÁô´V´µDa[“´;$:ê„f JîÚ«–3 seÀš¤ tcÄ¢5ƒ MB‡‚V»ùéÜÑ5ÌÜÈÍÝ¢= U§ýQ³1õ(/ŠÏ·®T¢`DþðP>z<Í÷TçIeÊôÜÑlÝ5Ä!ìk°ãÖ±³2ÎŒNò'ð[*ò.wµì™Ø˜¾È×B\áô ªÜ¾·Á¡qÂæÃ¹ù×Δ£ËBt09¯pÊ`ª0 h¸û©#à  ­ºzƒ”I7ôéöЀ¢p“]Z?5m‰‡[!båàPªÅ-Ç®/½zD÷‰ÆÓ;Žê ¼øŠ=3†Ï€ôÕ‹åÁuy|y ÿÃõÆô?*‰¯Ÿ¾©æRíNÔŒ9Ð! …¯<{—¼ÃåÖžÀa)-½RŽà·ÿÏúj@ÏsÔ j±mì™VÞ²'°]O«b B“²á=L¼Kè\º‹çZÚÒ3Ñ«„¿ß9#¹RþnJà‘Ì¥\u­oyw¥e_ˆ%Ç+•áàðAI¼£ý=×\k±¯á—÷çPŠ[÷\ø¿y—‡ ÷å=r_‡O#/ îÇSçIÛ±ÆÎ¨»OXÈY`÷S{‰Væîý‚òzØÓI3O.‡ža BsL„*’CÉuU†—õ¾›} ˆBïù$ ¶·ý$Ì‚~‚œFã½n’I²tæo ÓÙY¥îíј%ÉØ¿΢ì,‰â1-½›|9øŒ `áendstream endobj 1208 0 obj<>/XObject<<>>>>/Annots 675 0 R>>endobj 1209 0 obj<>stream xÚíWÝoÛ6÷_q{È€JÖ‡eÏ{( Ë‚a:@ëËV´D[\hQ%©¸úïw !§×ˆñü–k¶ñÁî1|7õ IœÏ±Œ™ó?æ<Ê×’á‰9_âŠO¸°-Æ"ô”¬9’­¨KþÓ]u^IB²pö VR7ƒõ ÛóRó÷v”³áÖ™9W3òeu Fª­±†Ç7V°TêFÔ`–bn1ƒJv°Ñ¬©^| §Z‰Ñž‰Të¬[#»Ÿ{ž»0Ogþwô‚à%üÆê–éþªÅ;Üì×ÂÜY3½÷‰Ç>´Û×.r;┌^a…±LÇ–×GCÎÆ†HÞN”¶:lyë+¾ÒOuþ‘Ó's ñïÁÕû«Û7ȩܮQ%_p©v®±Ha|-¹ë5– öUE__.ºÓ*]"tlÕ]%†âeMÙ6C3cT!˜Å§>1”O:‡ %ÐTtà²~\—ÁË}!oÄ-–}‡aïô*ЋÐ]æŸd¾¯”³•=vænw¸§C ,ú(×ö‘>lÒ‰öez¢ÿõã–•ôÃcI.C÷Q­‡­ë®n¨’ŸºSßùÝó»ãüÆuF=ÜŸeCâQ¿¿MîðîìO¥ýk`­R-ž;Ÿ#ÌY9Ƙ£î[¦«­±x|ýPÚ@½ ‰3\#‡4.Ð8Õ«Æ U»{‚×l%yù„ Žá¯…äþ6º›€“ö—”æÒîÞQõ³¬¬mŒe¶£¼ÎóWÐË UÞ_ãÉ®´Ú®Çð᳡Rf H5ØÎÖª¦Ã2Ü>²J;ÆF’gÃC¿‡´àæí–54F Ó“öÚab*a½üdÐ_~xó˜0ÏhÔ<×Vئ;-¬ÅÁûø15N‡1u‘¹1õìwÖÒìyɱY„”¼Õ‡Ú³pXpÙOµËŒø•íQšŒ s2OÂEºôH—Ñ4ŽRϲ0I2/ŽgÓh1M¢8sª_òÉŸ“ÿ‡guendstream endobj 1210 0 obj<>/XObject<<>>>>/Annots 678 0 R>>endobj 1211 0 obj<>stream xÚ5Œ»Â0 E÷|…Ç2ØNCè†(+HÙQU PRš¢þ>éÙòpÏõùŒCÀÓ–/±w%i@‰‘Hk «@å[ w]ËÜuâ1)“Ü7`W ¡/úpi;_ßÊ~åj±8þge³g=‹’Só­žo8vEûãoXZÅJ¤)B=Å©‘ÌfŽ)Uh#™œ8‹|‘0øendstream endobj 1212 0 obj<>/XObject<>>>/Annots 685 0 R>>endobj 1213 0 obj<>stream xÚµWÛnÛF}÷W £µQ™"©»ƒ È¥† ¤©Ó(Í‹cEޤmH.³»´¬ý÷Îì’’hËIÓ"ˆ#‘{™9s;3útAHÿ"ˆÝ_’EAHïÛ½„0a8™ =zî÷‚ h„ÅQ é¶ÿß;Â`°wöL¢Àks‹½I0ª’ÖîUÂ+oü=¿O†ÁpOF8ÚÊïA EóQCéûÁ¸†Óÿæ(ÄýqÐ?´ øõÞÆ‹)íMzà>·t/&@ § r\?Œ"E„©ßƒiê@Ð^ròüÃ;+¬L-2C…È6ŸQÈô¿RI•cA¤*N§°Âi=ÖsÖ(:öƒ¸7"E'×Yµ”\*õѰ„îŸFÒùLWdƒÊ2µ–Ť™4ÔV| Ä­™˜:« ôS¼ÅL•¨MÏ-Ü -UeÀX, о%¡K¥- UJ¡ ?–Z%hLjËYp9(k™e`áïת˜‰Åra“Ë©¡)à&•E¾’’à÷ŒÚÂZÚ•“VˆÙ&~æº U‘’ ‰ÒØÂÁbé\ ßàrPðNäe† ¸‚µ0hÎVÑ\HD–a Oò_`Ovbe!­™üì¢ë ÁZUYÚB’ñr&?â¹^x?z¦šÃ‰ºÙW3;™>í«lT4áµÚ•°÷âGë|i‡L@aEÉ—X‡wqzÕªZ®È•N.”^¢ E™ zùOøœzMÎŽœ³½aæw:'5!Ùæç¡ #ÎFŽ!èâ,Žà°ôÍ|ºvãK•çªøîj®}rStß—© ¤üÞ«lYÙîåô××ÿGWŸöXa×K”&’v´+-C›£7|¾išHÀÔòW™r‰J–7—äà›\Üå’üûW y¾ãd…ÉÇ[Š {öÃK~»ñíôæ¿:;9ö oÈ5”fëôiK`m9ÝØûsëíüI-ÎU×EU$œæÉ}Y‘Ú·NtÍT$ ––<^Tùœ¼H>ß%µ¯Â ¶. ‚‘95zÍ>¶ûCÁce/±G]µšgf%öé}?’ɹJ±sÌYÂIÒ9Vd°–)ÎNŸ™2“vvÒÍÌOÝΞ´N¯6û€¡/j¥ý8‚š#§šÈdêKFùþš)Jñ½Zá"JV¢X¢¶þpLcô!?¹ŒÇ»“vÍÓêúið5eà}šçþe#zÀŸïÐe;ç’êð¹Öbóßùô*SäMš´QÆÜ๢CNOV@³U«®ª²k¾TVzégb«ôÆóÕ¤Û¦ìÃ5Ý4ŠÍ‘™ÒJÓ…6gm›gð8³¾7÷Ù‰”$4­èMíbîs€ÎïÕÅ7ëÛùcqû ¥ÅKï˜/‡Íky4rÇwyÖpßóyÇ›úý·¦uÿPoèzë øxðiÂÓ~>Þ"%Àš,°HYÛ[zÖ´yˆÍ§0ÞM¡íëàÚœ…rƒ<Ï£m2ã³è~š(×8˜L:Ü’#ó’'ñlC`y&7øÐ"ã»Z †ø Rµ.¶ƒ›v‰HePg=]²•#˜Ž£ƒ\lhî/\Cªœn¢ÛßX“:Æô‹4ú%ã`Ô›øQlw£°ç–ûƒ Ž~9êwÃQ7£oý2=z{ô‡]¾endstream endobj 1214 0 obj<>/XObject<<>>>>>>endobj 1215 0 obj<>stream xÚµWmo9þÞ_1 R»yé­wÀµR^Ä„trwgwM7öb{òï™;!›¤Ü:5M6¶g<ó<ó–Ï;#Ò߯òʧ;ÃlH+Ë7Wñ'ŽGÙ1Ðó˜þB¹óÛdgðú)Œ†0)IÉÉÁL £•ü±‚àtU¡ƒ`aæt@~Pà±UNÑ·Zû`ÝJÝ (S@çéHpƒyÐÖ\£*Îã™ ¶ö”‡žVG'HB(TPٓɧ!ì³AÅã¿Þ\_4Å€Žä\ÔÝ:Ü/°Ô à#AU^6zÖhOÆhS%cѸŬ¶é*m ]Ò»{2oñ Þ·dîÁ».´]è¸Zv´÷Qs°UÅÔhðžQÙâ k%wµn‚ }/ÑçN·lÀ\bð0·ƒèZ„˜I #Ø:@M«Ìi@ÃD¬ßšÁde¥±›¡š™š/­¹ÅÒº>lDƒ.çÑÏè%.âQ°‚#8Ÿ¼¹ì³½"ì‹MÌ Ø22ZxR ‚ɦí,@Ó+¸Ž¤#¦§£¶]SP,Ù½„OϘR#írHömL´’mR ºÜÊéçÀ$—§ª51Hœ÷±Á)¶EØP ÷‹’¨í ¦Ê²P«{$X1ñ[:;Ý´Å[(•Û–WÑñsë#ü_Ò ·qŸ;í8nßÚóâ½mî)RêtÍÖÀgU^‹_Ì´’èû/^GŸ’8̨|¸¤ôá H¾qè-O‹ ¦=ÐEÈl6Ë*k+Š–œ ã •’e×0s à3-µ¦„Zdk¡Í†jïumÏ UšmP Å@¤Ÿ¾eß!àâꇡïU&ð'P}ùö&BÓI&qštŽ ª-KöOEOocÃanàâ  lj%XNÇÙèøi6ÊF?4|·gÆÐÙ!w>jeÃl|ÂíoðútÙâöLJÙ!‹Å’>à:çtI¬¨­sµ=îÇ,ù¢(Xê šîR›»ïó÷o#'v+êTºôAŒÝ¥Ç€_¶³ûŠ© šRBA* tDç>áÛ:m.«£Q÷ºR±j:©¨nQFæôÂxt³HÔSûŸ’¾DЊFjÌ*¶•™nޏ;¸UùÝ‚ËØNµuý›ÌãVÕï!‚gªá¤T8dL’’jÎäâ…ø¥Eê4&çÐ9ë2HÊo¹}­È2jT_WÍT‘a+.‘õáNI±;«í.ƒ¸Ëêwû*®}š]¼f5Ró#GIÔë*5"ë%œc¯ÐRSRm‹Ê-¨ce›êåüÊærÒEH&Pì±/|jS–£jU69-ËDÙ-B¡}Û¨9”(d°{U¬‡ê/dÀ[kðÁqh5z–é9…‡¶@@q‘7:¿ã¨P%©”Éjꉋ™Ñs]Bä@iíb¨ì]χΈ÷>BRѨ&°"à ‹=[ëÁZQ£Ò¡^mà[Ìu©s–^ÎÅžr-÷ 5Ö­õÛŠÔxÑžÁßJŸÉÒógƒøùñÉ6¦ÎŦÿ©YÚƒOõê”\ÂWcåGÀ³¾1×ö›L¹öc%•m*FN­^ÚO§”6ŸÔ=Q/Úh?oº‚D KrI †{ßø™öŒà • KüsS8ánššýé1ý^f„¢aËa|<ÎNNA´œ FÃY><ÊÆã£¸<: Oãá舷^MvþÜù +³" endstream endobj 1216 0 obj<>/XObject<<>>>>>>endobj 1217 0 obj<>stream xÚ½—moÛ6€¿ûWÜé€E~I²4Æ0 ÍÚ%@»e­†~4ÎâÉâJ‘IÙð¿ï‘”Ú(IÓlYŒ$–MÞësÇcüÏhSþ™Á<þõèU>šfS^üòb×0yófSÈK–==:‚\Ä-^)^œ q™¿{ûÆOvÙ¨v-µÆš~ÈÿMá0¨‰ù®¡üÑú¦õƒk´,Ëšn¿=Ôº@¥H,àcE‚(£h +µ'1Ðø•\aeã¥Ñ ¸®ÓIú…+* ëûŠàüã,S˜fgåºò€Z@¡Œ“z ?O*_«_Àã:ƒ¿•­YÂδ ‰xænJÞbñ)¨GgÆÂ µæP¸Nnå:p¯ŒØ]Šç‚w^†ìC²‘@]tßçÇÇ£ HÍÔj [a1¬QvuYq7¹v)sò¨w`xÉ Üq?@òŽt»$¡ò_“I‹…ƒ½N1Ö¸‘ë”kÍÙÀ¶¢Á8&¡¤æÖÐQ´Ául©ok–!—ì[„žóÄÝ"t;›ß=ØÃ=º0ö{ì¢ÿÂ(¹æqöÅÔm+«Ö÷ç*ž¤2J);L+E®c©1ÖG\n%ÇU â|‹±—^=0£‘çâv]à°¢5»ä‘ømo‰1ð`µâ³!k¥HãDP‰­ê-vGÍù¢ ~#ž4Ä´ñÐr×e7)f8„ôäŽÒ5 wýc; õ¡2Û+V—Æù§áªØÂ½´^cQq@5uÈ‚ X³ ´ºðHü®e1t_‡m< QØQ»¤;N|5©´¡¤K=}ÿlö$°#[ÕÖ¶ÒWÌÜ£ä`sW|áE‡ÁW9¿“º0u¸ïš>u(PsÑùüò_9¼+KT-¹Å`ç`¹ŒZ.¸XJúPÕ$É1\@Bè¹ß·tÐßÿÁ/öqß3³Çïɵá4B5CÙx|tGéN‰ÆW×ÀCÄ’s,ʉ´Úö6„ñ><¨5wu}oß0ݧœñ–|¸o°å˜Bà"b'ßé¢gí‚àñÁ.¨pû`E@¿5ûì‚Hæ0†|²UVòBµî©wì¸HFUÏNö.boõF U4Ø¡úPS­úO=ùð=ä,} a…£ˆ:]—Æ|Šÿ^Ïšg§GgÍOX,.ŸdóùIZžO¦§“ùtv¶^ç£?GŸA~Cendstream endobj 1218 0 obj<>/XObject<<>>>>/Annots 691 0 R>>endobj 1219 0 obj<>stream xÚÅUßoÓ0~ï_qH+R—6麲>­ÀʆЉÇê_oNlg!ÿ=g§ÖQhH¨MâœÏßýú>å[/†ÿbHÂ?-z£hÄ–‡›Ùø'œœžò}2ó=áËd½×ËÞpñ â,3™ŽÇ°á[Òþ—\7ïËLß|¾ZUªÞȲĂ^.o{#8ö‡DÙV4ƒµ«j··q†};ƒµQ{›oP)3¸À4' „’¨pCÀÑ@N0#cÈ„w£„´•–ÄÚ[²©‘•“ºœÁ%Nï\ØáZ¤ZÕE t9 Ò{£Î $—h ô––9±!Õ…,7œÏ¶H±„ï tÉW®Ñ{9Ü£ªÉÎölG«•“NÑjuÇ $ãpÄà .GÇq„LÑ‘…†Žx •‘¥óqq—nN(Èì¡úŒùƒ~6Æ£q0ŸL¢$™tæød8š“Q<ñ[ËÞ§Þ¼«U=endstream endobj 1220 0 obj<>/XObject<>>>/Annots 701 0 R>>endobj 1221 0 obj<>stream xÚµW[oÛ6~ϯ8êЖ¯±ß:¸YƒemÚ¸(h‰’¹È¢JRvÜ_¿¤äD©Û´†8²D‘çòï\üå$¢>þ"øO¼9‰Xχ‹Î¨Ïú4™ÍXDãñ÷£!›‘”žôÙ§ÃåüÉÞhÚgãG{¿Ð,bA›_ÎØ´Þ ­½Ë¨O EN¹ðb0›°É#£Éô ÿ|òÄ”¾³¢¹Ô¦ŒG#v^›=À¿ßúÛ»gCò—ÆÉÞÅŒ`Â2 #6žF4 a4¤eâEâ]Üyý×åÖP®²Tæ‚xÁóýW¡iÊF0?®6¢À©ŠÓå?GlòZ¦lèôœ5ŠÎN¡¨sW™,L—bUX-WXs+*µÊ4ß'»wq^ÛÛ‡¤¾;ü·ªh'óœR‰Ckgab-Kg¥JS"Óë…¥;ì1¤R7FU:2ðÈÐÜ[Ng‘—yFÁ‘hØ82;GH”Áâãî>/æ½…Ôk¼îY¥rÓ+y|Ç3ñßd¿ƒëÇåÓm§Pö€®U‡}«ªµŒh‡HinO_jNC þ`bòEAÊÈ :Qƒi›¦P8ò *mº q8xÂÊMþ=Hó‚J@ ÷øžZX¤El•Þ;›y’P!v” n+‰µøóNYAvÍ­¼©Œ%QðUîE-V{'EpÞ‹Êe!ʳTfµuзáwxii§ô áßCüJñ$xy”•ù$¬Ð·§ì¸Cv‚"á:¡T ñc°;!‰bÕ!G8+Kdv"b•ˆÊ¦wbGYn']Zs³öv‰*#´,R…Uel¸‹s ×,W:ç¹äØkåF¬ Ómî–¿ªBtIó8Õ%”rÍË2¶~È”Êr¯¹¶†—’2¡dé\;C‹?AËïB]^Óõ¸íløÿRÁLR>#s‹Â„z–T±uQuѼ=ý7oV7|}Ž¥ÝÞðû jW³ÆMqXj^k‘¡ö5;Ú…³Ó=ªí³4å¯P:û¹0nè»’H_ÓêŸ|×Zme°vÒ®›Ll:sYÓ«…ÀÇ€zBfpkîj¡hm¹nøìåâ¡yÌéu’HL¥*Ϫ-&/i¥îCb¾]þy…H—J[äU†J@ÔVv̸8f£WMþ5-|–|Z^ü,yÆ«7…Ûë;å§—óùóòÅ~æ¹ÚŒƒ[fçXiWòò=ÌEaÊy‘Up‘\þad38œ˜nʵæ 4›"3$¶¢ ™º’·§ëËpì¼eƒó q…ЕE-\“Öd×ñÔíºÒÎeÐQH1¹|éåõvò?„Ï‘ÔJ¿xwóB—kÙ4 Êähš0/ùJæÈåC9×@8Ô¡ª;p =Ò샛PŽõ•ù“¾“Å•vó "%A‹M‰aÌuÃ6T­„[¾r1úPÇlüªnÿ ¦oQ·/\Ý~ØtK×õ^JÊÚ‡OÌãu3«9‡µàIÏð-ÔqCüÝ ßOÂ"!7Î+aÒÜ7]S z*ðKžçû–!nlDtö ½ãwbEFÚ§ñxºè)tŸÐæ.ÑÏþ¿’j–¸·0àBj[à\—®¸©ïÞ§):-¦ë&³.1ÆËnª©@–ÂÊØf®%×¥Íø9ZE7­Áå-Ï+Áèµ×ÔFÎÐZ‚ëÞl³ ³÷Ðh¹SˆÈ‡T*5Zƒ4Az5û·à=© ’[w³‹ Eƒè심÷CÖ šÁ ¼o™{R/Àþ‡!޽,\›šÕMí|†Ÿã_û3˜ Øt8#¯u6éEý¡_Ù`0ËѨןöýhì^½Yž|8ù\raendstream endobj 1222 0 obj<>/XObject<<>>>>/Annots 703 0 R>>endobj 1223 0 obj<>stream xÚ½WïoÛ6ýž¿âÖ¡X‚¦Ší$Íjl¼üh$Eæ¸k7ä -QWJTI*®û×ï)+Uš ÍŠ-Œ@º;¾»{ïxz¿1¤þ iþ§åÆï³A2ÀÃîÇ.hçägh–Ãö`´K³,¼Â“tóP7ÎK{ZåfköÏÆ€ž²e¶9•ïeeFç&k´tcze*Ù3¹V”Îw½<’.µªöÊTcšdyùÁÓÕfn,É¢¬µ$Ay£5Æù ‘®¶ÈJ# ²²6Ö; "-ºUSÎ¥MhCæ ‘R¡µÌzZs…Ä’r•š*W‹ÄðÛ´T¾ ¿4p•:s JYçI¹[gl““pÌøM8 ð\a–êdì=ê3_!/æ”x’²w‰ =,s ´2˜«ŠŽ”=^P†ú¦ÞØUÒ3~e¼Ó¬À¡µnpÀ_“h‚#•Ó%´]»ôÂk'¸¡X0Y™†2SýäÙðjôÈTB«@ Í‚‹Z ¸øA†^¨Êõ@<^W‹EÞEÄT[s­2„ Õœ¼‰P®6Ÿ%£'W[­Ç(x¼D¿†_ÒÇoßF¹o ™@>º)Q´ aj…ÆøˆSVÕ;.•©eÅ•1uSã]•™e,75^2U pµ©Õ;IK†^¦ÆfîjëeÜ.Ëk«'Z 'Ýÿ"¼ ±ä•×r›²›$I¢î^OÏ:ÍÍ%"ãk¡y—ب±Z0þ;ÔÕt·Òû>ymß§.eiуäô´ŠŠæÒ+ÃvÈc:¥¨d´bí°\‚w2Ü]ÏЃ}ž¡›k§ó§ÖÑðö°ÝDF#Õ>ö“½|eö?WÒL•ò¥š~‘1l7nùõÄá-bž]xY;H‡m¸k@_*­UìcB'(a&çÍ‚êÆÖÆÉäa ïJøïÛ@ïË÷Ì€™÷æû‹És“€¨ÙZ(åGÄþíþ*šêZ² |!;{2yœ¡ O'ä”b>«jñ/{´'vù"w~\w¨’8æã|Ç]ØCŸ3hÃéé%¿·aúãdG':P=Æ|q>ã¬òÈ_˜aPQ!®a#íuðãQ—©<—VV¾Ë$!GT‹‘$Z"m_¿€,æV^« 8¾©¹½’ð…³T®x,Z²öÓ:„QÂX ˆÐE¶´«@ïÀ3#²H•_u'<="Zš<Ô–&†ácø î;€îËñg]Àq'·¦ UElØ}ávFô¾#²«e;¸æ¦ñ´7xüÃ7ª`*–€õýn‰O³Aq/fX¸Uk\¥`Èá 1„i‰Û2rg¶Ä¨˰H0½@Ž´±iNøÉ”«µXõI®4oKL„u†g{k'³NƒÛu{aE]LjðË¿â]6u;%ÞÅÉ—„—×î-‡JI(ɽä vÑèýHÇo/ާ§çǯf“3:9žÌ^O¿qçyaÌBËCF;¹8ý~•™J´‘•Áº‚.«LØ®JknA‡…²’ñÞW%¸×ËÙy·˜$t n™¦òvE_ú·vEq-”sþ¶À^QòdÆRW+~íWàâ/”wÛhN)êÈ=Ðîæð8Á[\*×ðæ,8)w÷ªÎKDZ¨ŠwDŒØnb*tlŽƒ6ÌåSÅV‰"å[#Œn.R[ozx’p‚©t›³ƒ²úÚ¬Áª {{vSr¯œñâç 2ÖQã w¡D뢄'ÿq£åÏËçñë®»7¾8g‚Uóx˜•:Ô!Aõ2´nôl”ì>§päóƒ÷°þŒöããáÞÎà`g4îó«ãÙÆÿ.xá÷endstream endobj 1224 0 obj<>/XObject<<>>>>/Annots 722 0 R>>endobj 1225 0 obj<>stream xÚÍX]o·}÷¯ üU$4N-ô?ÒhßX@Ô…AíRZ&»ä†äZVÑß3CîJ«Ä¾IpŠ´K‡gÎêÓÎØÇ¿qÈYµs:ÝÙîãa÷Ÿ[ˆÑËŸÄÁ¾˜Î1öÅᑘæü O²½Wò¾Ò&¿*{y%®Êf¡xmƒòO§vöÅ3š˜wôRd¶ª¥Y‰PÈ ¼*K/Ê–6“A[#‚Ê ƒ¯‹4¢’!+”ˆ/óÜ)ïñ%X„iLpZùpj™øé€Bb©Ëë+?“²ì±sUÚ‰\9£HÒ)!ï¤.å¬Tbnf mH–b®“¢²&åJ45f*ᛙϜ®1Ð&+›\‰…Sx YÖ8™­ÒôB/ åzPæN}j”Á€â°Ú,†âÚV*¢“_†‡yJÌš@Yñ{cCÂ…¥<ÂAUrÅ/gŠžGHA ŒC†qi|e9îa{©"+¬õ˜ÚÁŠwBçviJ+sàÝxÉà&ﮃ 8‰ºTô¬J`Å©6Ò­ÄKëp¦âN9ì ÅYãœ2¡`€¯këgdÜÛÁ™­*å2œ×Xð‹áÁQËàωÁB\YÅ·ÛüÞ<4í-óê[géðÍ+½q iô_\ß:Lÿò”.›ojœÚµm\¦þÏúž½N®_?ˆ7qr.V¶iù‡Z¯½ÌŬ;í>ó¢¬Pˆsæ9à(Ö lBml">Z£ÄR‡‚¾ôØ‹Pª;UR}æ* 9ÞRš@¡d]+é°=uÐ ¢çØ-Ô½¬P¡çk<ïA”™4=ÐçRé„6Š1¥‰ÓA$”1`n¹ô77.‹´ñ6iDäøZq=ëÕ9~·ôM±­ànèVZ¾•ÅvßÖ%±æ okE«l ºîçÒ¯c{°-üA‹A^Êv®¼†*VÖ©Í<ß<í©Ækup@Qýx‹èaã1u1åJÌΛ’àuBØö±ÉÕ%S ËÐŽxrê'Ãnˆ,±9ìG„¥!1éI¿-ö…]4™QèhÙv*Ê)ƒ¡=Q•âlÄQK=s¤ªÜ+—{qâS£³e<â°ž†$« Ïéâ1¥|i—hdÔir‹¥ã¤–E¹¥ö}†D×9˜&hg1E”³è%‹±µí)³f®Ô_»’.ä‹—¯U¦ç=[ýhr „ÖjÑÀ¤)¿^¼¹¼º½žN^ŸOÞžKúbc‰Ã_]¼zóöýíÙäì· &VZ%µì!l÷f¨Š´¡Í¦AHia£sÈœô‚‡%é­û»6ͽȵ‡ÿ?È{Q)ëy W4’ ÌKP)àd¥ËSt²eÞ¢:« Ó‘I?AÜA{ÉeÅJÜ€ÒCñef—¾¥Öó1«ñ Dß(d¦•’yŸCïI{žkÕÂ8 ­ò}6[ÁžåØŸ¥$á[kzDâ !‰ÇÇø{6•ÍŸ÷튆RÐaoÓ%‡?Àž7eK2u±ŸÐ’¬¯â’'‚cÖ…É[ªï•4Š‹åà-Ò¢À¿ °cn´"-n"¥Î€w[ ÙŽ,#õ^kËþûØ©º,'yÏÉÀëú6å‰V³¶d“Ît[Ê“çö‘žøØ;%ìƒ1]}%·(އ'ǼÒlvÔôÑË“î‚Ò:žvÁh6ý8Ž“ÛãX4â»ö’³'ž ì%â`7µ®Ìæj÷±(¢õB_j°aú‚›ËÊ@Ð𱶤€ñ9v©2<(­YÄO»("gÓ40EþodÉq= Lz4d_3€G#¥Žûl;ÜWíòÑÈðc´l8< ìã¡’!~8ìöͤpÜq­kwY¼™€Ÿéöj¹;æ Š+µÚ‹6ßö}¦³Ï©ì¨DZçs~Úê"°æê¾ºB…MÖ‘Rqù8¥E€š`gs~ Á[ªØòÓ­4m /1uE:!×|G÷É*¨¼Éb)CPÇБ6 5H†lQÇèåª+™n…·Ñäâk-rk¥b¢èãxÜ)ò ®¾¶j·ÙÙ²ƒÏÚú[íïï/4¸?Å£Z†"ØkЉøSüÜ>k…gîÃ/½…ÎUww†”R Ñot U'œQ{¡¦ŠŽÿÙg6¼5é}ëi“qœ©°TÊt  Äch…™sÊûôüf;ç+e_Çn6XÛ„¢=dÙâo$ÁÄŒ›§[œˆñ;,AüÑæ?»œ¾mÇ1j¼ÑO3å:½Ÿ=¼ÝÌònÿ8ãvÀ¥;M}"¶øÄ°›½çÃö|9§â–´ô61äßÈ5FI ¿oÓ @•øW1¦ê¯ÐMGú-ëfs–m\ÙÒÏ]›—žüÐÝ„1wûÔOWðÁI 6HÝ*ë§ß»pg\â`>¢Õ—%Rý䌡Q¨dGŠœ-;ÑáñáðÅщ`Ü'?öøñ¨ÒÃçññÁ£ý£Ãýƒçôêbºóß‚9* endstream endobj 1226 0 obj<>/XObject<<>>>>/Annots 733 0 R>>endobj 1227 0 obj<>stream xÚÕXkoÛ6ýž_qW`HŠ&ò+icÝà%i–aI¼$ÃP´E@K´ÍE"U‘Šëa?~ç’’måѦE; hëÊyçžsuéwkjãO‡ºþoœ­µ£6î,>Š ÿOÞs|îìôðÙÅ¿BÒxí—˵Ö˨ӦË1Œìözt™øm¸o¤Æ\—ùOO/ÿ^kÓ¯J6¤ •;etŸ.§ÊRž–¥I$‰%AñTŽÌ˜¤Ël$ K³©„;7•45ÖÑñÒZÂöBN”uXD {±Ð”(›§bNÖd²ÅñÅ”›" ©1¾Æi™ÈÞU"œ +#zeJoM¤ÖP^˜•HDš*}•ÂÑL¥)$•Û¡7©ØºH« ï¬{‰hX:ïÓ›áZê„aàË\"“È‘`Cé <ã…Ì ÐÊÅD† ª$–ÆfÊMý·q‰Ç L+'Pà0jÜ8|/²<•ô»ÉЃúâÉD•_ «¯2ñ>Sˆãèðìxxuq98=œP«´E+5±H[~m„ WoIs<\œ^™Y@2rï]ÃíÔ¹¼ßjIG±É"Q¶”3&µ-Qº-„åÓüg\ãòÅ“ÆÎd]¢$$?øë géÍÆóhïÙ›§ÕŽ®ß᣹:GuŒ¾:©2z³±o²L±BåÎt:_l nÎå»Rotb’2•¶O0Ó¦¨/ûýaYÈ¡,R˜&£Êú-[ú´°òú”ÿVØžžœ¿ºÚìÿzø–^·rá¦Î$Cè ò[ú±~² ígªoªÙhî‰k´<õ7‚pèÏ OÃ}¡E"¼> €©ÄÐx~Á¼S™l²ê—9¨-F)óØ-#ؤ9dæIl%ËKËY 0X“ÂâzHÕ®ôˆo)“ºŒè%ÂaŽg¹®ö›âÚb=BGi*¯æEmJ ÅŒJ•"vKûGǨ›Åû»Ž´q4—Žl™ó‰J>V.¶G(æVI!šOä~÷~î£~“ÄGÜ_õlüË–¾AÂâµùX¶Vuø¢TíÝOÕ³bòMRq=ªÂ¸ÐêŸ0ÆhÄi¿sW fÓmÂ|¦ÿ‘Ãly$‡«}-o/9<.¤|Oy%Á½åº¶Ñ½kŽ"V©ÚÐI4Œ>ÀÕS£åÃäÚ7¥vżbŠ÷>ð2?Ö0¢%OÛ[õÒåH¼ÊL\aðMyç¹@a©à¾‹¥fBc…‡5B95Nöýd•éã©1Tn&A“ÒÞ¢+’×(y±®"”yØ6¡q4þÁ¨ ìÁމå›§(ÛÄ—å^*´Úšîü±ÀûäyhÕ_tOʃةÉ$—+g‰ØE™óàT—_Í aÕ Ã§Ò0ÃCU5™ZŽJU¼û¨Ó«Os»;|šÛ˜ÍfQœ A"aÉ_3T‰ÝNg• pK»€ÍFt'12¨C§ý=}÷)òÙ‰vžÝöWŸÂÆ^Ð+ÐxX‚|¸Kõ»¶h„Î.ú±?œ’UN~‰­ªr¢ô*m0p™ ²^­1@brSdNs¡1!§|&¥c—¡Ç$‹óÚò°96ijfwèn³%+¸Æ"éÓ™éM>Tù$»á›|NëHpçgÖ@ú`š€?¯§j´1AèfQ³@»ÜqYX+4»S^%5ák«B3_rœWÔ‡jµòä;sXë}Þ'²KÀ¹J‘…\§"”cä»LÎ2õ9á4o¸ãà´â¥U7 ù’>ЇP\t“¥™º›0Y×zÖ(¶•%û†«¤e˜-Þõ“©?}Å<óh°ì~iªpÖ_„ÎŒ£ù_¬Àç ô .xÇbm”§äÑoܿ󲚸×fxowhÁ kÄ^”xƒ¸O´Í–{Jw—Í·^î-~\ÚêùõgH°X!6ŒÓȶÂ/¹ˆ¯Åäv¯þRµÕëú‘ä[‚åßS-Í ¶gÜIy#S“ç|¤ým9Ê”s‘•óyáõv rÝH½ P9/él3¨µáÛÞxêRþW¹ï ,ØÃ4ˆ><¢Û2®´ÔS¡c¹À+ÞXDà]0‘i¢n8-þ.JÃkžÉf½*1žÝ¼Fg¯g¯³ìÑvs²G © `š`Ô°¼·û¼íööÈǸ·×ê´{þööNÔíî„ÛíV{·ÕmwvøÑáåÚkÿ‡y zendstream endobj 1228 0 obj<>/XObject<<>>>>/Annots 785 0 R>>endobj 1229 0 obj<>stream xÚ­XÛrÛ6}÷W`òbgÆ¡.–,;o®S;騩S«“Ïd ÑC€–•¯ïÙåE¤,ZN§ÓT8»{öìB?FbˆÿFbÌÿüä`è 1Ó|äKú+&ÓS|N§'øãÿ\‰pûÑ¿®iFŒgô™ˆ©wZ}ÅýÁf”ˆñÄ›¶–ZÃDLÎ:¯µ†‰8=õ&­µÖ0£ÑÐ;o-¶ÇXŸ{gíÕÖ«[‡Ž:§ŽNǸí1VϧÞI{µ5†¥ã.ªö«ÓYã/^m±zvæÍÚ«­q"NFãæö˜Vϼqk•þŽf“!çãçó¿ÍWçb4óü˜OÄ<à0cÆ?úÓE*Θؾ;ÿÏÊæÙwc| ŽþRY,}•¨Ô‰«Ü¤N¥?;ôF'5kfS"Øàêlûíß”s*¿øz盧å[Û´<Ú )î>Þ5û‘°‘Y‰µ)Dõ²¤“"Ô±C•P¼öv#Áù#>¿~ù.Ê>ß•HLPÄêE å#"4pL¤„ÉT*¬)r_‰ËÛ{ÆI[í;ÙI"óõĪG•Ë80‰Ô©õ²øÅÃm"ãXd*…õs9`N, B¦B§zò"—à!¹Tb¥]ÔxÈ=9Q‹a@"6)™Â‡ÖДô#QX·2QåvGi‘,@ ò„=‘ÆÎ1Yàƒ#Ï$TôðöµîŸ'ã—ãŸEY‰ .¬ê~!1Q³B6V”ÊÁÂ7i¨—ÌÀ†Y½Æ4¯‡Þ·Úú*Žej ûzZ_ˆ,.–š]+–ÊèLÄÆgo÷¹×Sí¿š<¸Ë•íõûL3šgÉg¹%'É$—ð£Ð¹BìÖ’Lg&wìŸ7IË~áG2woöAýýI'㋕ݛҤ+t"ƒ9A/ŠÛù|UƉÁŠ’¨@%¹Àd vŽÝ÷!¹1Ë,7þ Ž’…Ïbc}Çʧ ‹DåðöòXTà;³\æ~¤i„øôé¾Áj‘Rëhõá()b÷®Ì¢‡·ÝüJ5”Œ%³à[Î_ªt":-‘)Qž]9(ò×èKæy‘Ë JëÞŒÒ š3.¯?µ%¥ä“‡ôhGêRÃl¥’s“°÷Vjá‰K² g Æè´cû}&Sm#(–Ø4‘k±€­bi ™I´3"@ÊÆ&£ã!5«”™²•¡Gâ#b…d¸FH´ñ#ŽûùŠ- n.—¤¸ë—½´vi ¯z’I£1ABÓâ.¼c Á sÙ-àÕbfqªV5“០Z@\në³×qÔ“:ñ=Å1:$W­LþÂõOa@Uæä95àQMÚDû¶ÒË’EÞk+0šošU.û@–Üp×ð2Ì;"tÕRÓPëaaÞ¤ˆå¦DB2ž­ù:óÄãDí²nnQû - §I›¶cB°NÈ–ñ¬¤á¦ÕzwÂ/•ÖgÓI.—ë…pÛE%×øÅp57>õsäÀÖ41j¯­¶•Þì©Tc:ò„L_Ž)gÜ,_è@*®[A/Ѭy–GðÖþRqˆJI¥m˴යªˆW]É”Ÿgô?ÕqÇ©í9n®8ÄI–AqCýtÌAî`9 L4hqQÆŒãN횇’"*TÆÁ|d•ªT«1z8ºW›¾c·®¼ ïKo½Yâ=[JÂßx²ê•:HyèF­¡u懹R+¨œ÷j•k·§µˈ‰‡”±ò!pj8ŽÙ†N EaÚŠ‡NYê6å›Þlx-»éR UÍ!iо ?$ A®™áT UŠS}€´ö!jWø`M¥‹A·ÿE©EÁ›z3OPÿsü:pwÄ’ÄÂ]Õ«\‘5(R7.ÄØçvlRBÜÕ¿¯8ÞM’/5ío?HÕä…dŸž&±ÿ RT)Ö²°‚‰µ‡£U®‘c$‡â4sº^pv“ì²ËÄ= X„C»€ÂG—»Jmá>¥O,þ–+ºæßÐM¥ŽÄn¡Sì»m=»g5 j¢q¦þcM•ï™ÌÁ-—7WoEyþ»òÖÑ1«‚T.•½%«ÆœHÔÆ,¢%\Úšæn>,P6+ä#j¿ÊªÞ‘OTG xcBלÕup%À¤ŠT‰C%]+YÆÙ\Ѱ’‚êÖÀ G ìõÑH¹Æô9ý ­¯ýSÙ7e¸+ÌÔ󣸚€ò :oµÓª}‰íSÏ{§²äœ9úê- ÝqsûTº3àî‹»§¦øÐ<É CÌÑPx«N¬ˆ%ŠŒN4ý- ÷û}7:8µ×ž¸`Úºi*›<Ë·_0e0t¿V@¾ª…Œ¼h%¿·ñöœYÊ5êùÞ@Í<ËCPøH´Úé¡F‚†¯a`]ÃH›ZSŸxX*J¸_³ìý}ç5]Û¤jÎË>©Å úÛÓí>oG7Öl†šýtNjMc‰þ¾¶4QUåР˜ò¥à}Ÿáç·7âOHòµ/ý°{ÏÛw®ØË»ßÜüìAQv¹a5£þŠÔ&ˆÃ¿;×\ ¿þü÷àF§ÅúÁ5+{HéAp¸íPÿJRÖZ‡»INþëß°êÖÃÍñå$ÿÿ Ô¤^e¨l*ìgÂyv£s:çŽíêÔ×öiÍ/¤Ç2— ƒŸ‚¨'3ÁðFÃá`4<áùÉÌ›ëùÉ`8Œ‡£)-ý>?ørð/ò8$šendstream endobj 1230 0 obj<>/XObject<<>>>>/Annots 790 0 R>>endobj 1231 0 obj<>stream xÚmŽAo!…ïüŠ9bRwÐÒÞ´QO=´ ÷YÜ`µÀfÓ_Xc™ÉÞ›|ï}X†Ÿ×\È›"Ø`ÿNì¡=¼CP§ò+…ÕÍVQ ÝÆìŒ·0E—³ pü…:wˆ\W}×c´!ÃΦ¬÷vŒ·Ïÿq´yL@XŠ’ÙÑÃàý0ÁFO…”Ó×5gkòcZ-ÿzë¾”XËÓ?ö.¤'0CÈÑèÐA´^gÛA¡õQ_RÅñgl¸0Ç2d-C1ë+ÙH~×W-Ê–#[Wk¯È'ù ÐYendstream endobj 1232 0 obj<>/XObject<>>>/Annots 799 0 R>>endobj 1233 0 obj<>stream xÚ½WmoÛ6þî_qÈ—¸@L‰’%Yý´¬mŠ °6)ŠZ¢m¶’¨ŠT\ï×ïHIåØm—ƒ 9§#ïå¹çŽÌ— ?ûÍÊ %>ÊûG³Ÿø§)¡E!þ=I ‡ÕÄ'1îµ4ñIä¬ý)%7û2LIÒ/E¯Þ5 ൄw“n_§ҘĎyœìí/âƒP|ÅðxÿÖ¼ˆÆd%ÌS´Ó ÜN±„$"£sÄh¸ÀßG¥+£6=Ц®6@°\§®ŒÚ„ŽÜºr a8Öº2jÓqÈÔ¤:÷|–= F¹:„/vtŽXB¢ÍG#b¢‘qõ¨teL…޵®Ü%ê:µÁÔ¸îƒí„}°ƒ ;:Gìê²p”®ÜÕe¤M]mÍGN˜ƒ$¶!Rw47Œ7±[–ýz‡ËÓìcèï*Å-p·B£s%DÀŸ‡p—[›¨Ë¦—o5Ó ¹^‰‚«X±û›7 X¯eÖ–¼ÂBV/î> ÊzIHhüÌG³xN‚0AG{ûù²”2o nLyW‹><7úfíÝF(¨Ùšþæ\‰uÅsÐ6¼¨¡U¼Q W 7Î;{çÀrüJ76F\, ¸Ÿv±Òpˆ5‰L¬ÓívK¶v#Édy<¡éý ã²D 0ô%è“°`Fm°™¬Vb퇊Àõ v²…\VçÚD B_8o*Þ%Òp–ÃvÃtŸaÖˆ%j6¼áÄXã‹Ë<ÕÚæzBc­!*Í›ËzXé€ë,±ƒ ÝqcЮÏä–ë¶€ýF½þµáê›)üˆU$׉hɵÀ¡j˜5ÿ9|tÏ»÷mÕ¯½€µ4;Ïú­¯l‘ÛŽ\gä™8¼*DöƒÙßmˆêÙߘŒ0/›þÙu¥4+Š>ñ³ û¶fz3Ô”m•hö•|%Ûe ¶Ñï§Ú´›ýÛ´]#DŽ\Ü Ü8@*ª.ÖÇ0µ ¦¼®‰ÆñÍö­‘‹†gZ6; d¬‚%Ç>ØV…dƃâ5CDy±ƒU#˽34 JhŽ Èª2‹ÚavdÔ„—+„6 Űɶ€Ã Ýž &oäúÊ$xi¦šê ÔF¶E¬®9³b“6{êðª%‡ÄCgQOºçuJÒï>UÓE¯JC[ÞÓ¹8á>Ÿ“ÖGGHÈþºÿ‰c¯lN=i ‚2XÑrdœl^š½|™ÁåRÉ¢ÕÜÒQí”æeÇ`aÈÿ~úêæúþŨþ×ú\Ù V-RÄáü!mû u1{ fךÀfsÎk^åÊàR³ì³9ÌÇNü"V†GË'ž¼V5^!3Vx½SFJíek1[ŠÊ;ÌQD°…^`E8|xs –·Gaa§,ì†útµ1Ç2o°Çð h’€=ŽD Î[¶³û•íÛ;¶myóÀ›Q ¶…׆a ¸úq ¿‡Ô“:ܴѺ~éy4ÀË8~èþ“FÈ! oYY=jKÍQÑñOu;í4E¶ØÃ>ÃÓáïSgË.8€ÁŒ,FÆ6‡Ð]iŽ`Âuö$%:¼ Æö±ÔNL±gË4úÎ £Ã¹ü›‰¾ù?'™7æÁis×ÁüxŽ0"뮹 ½úY'¬PÚ:g]_=,­)Þ@EfgÖ7”Ú˜#e{r™%ˆÁ¶Zs<"wpâÒzÃÚ;^st$Š‚·Í‰›+9nÁø´I\É¢À‘üKÏž¿ðÌÿ„½yêb?)ž ”v÷2s-£‹þ¿}óÆľý¯ÀÆBýÀ£~hßÏ’Ãû¹ç'^àÓȨÞÜMÞMþlhnendstream endobj 1234 0 obj<>/XObject<>>>/Annots 814 0 R>>endobj 1235 0 obj<>stream xÚT[OÛ0~ï¯8o+SëÜ“†§] Ä •ö‚„Lâ´¦Il‡Ðýú; ƒŽn¨‰ãú\¾ï|ÇöãÄøöɪ‰G\üÿ2È5¸Ä…8M‰Qà< H ’A1qIŒÑý°Øóõ—D¯|!õHfƒ”$ƒ+¢:çž'®'}\oðӘįr„qò’ïQq ‹q¨DQHm_ëúm…Þiv‹tÎRð\X(CH¢ÄƒÄC„0€UnS¢-›~ý¹ÔT+(źà%ZÓr÷‹IHHˆô³¶b5:pQ­ÞádQœù4Câ ½ä?%¿§RÂéÍù÷›K¨DÞ–Ì$uÎQS¸6 ùh…ñFJ9˜% ÝQÉÜNÇ9hr^#sÈDÕÐz%ß2àõ“àS3³\1™qZB#E#-gf–·™F3ÆÖ9Ùò`îYüL`ÑÖª´È¶øm¯-#Œf„Û£°g®°´ZtˆW «—¢•#pUW½aX¦ÒPÐJ´Ê¨ÚÒ­BŠ zQ½`5‰Œ¨Ó}µÞ×~JÞ^ “Xv¯£dš¡lekú…ƒDœ}Rƒlrç@óœåÓ÷ÄdÁ['Y#¤æõ«Txßø±ko'‹é¹ƒ¯]’øãz踉ã»^dL§«Éõä7JÅÊrendstream endobj 1236 0 obj<>endobj 1237 0 obj<>endobj 1238 0 obj<>endobj 1239 0 obj<>endobj 1240 0 obj<>endobj 1241 0 obj<>endobj 1242 0 obj<>endobj 1243 0 obj<>endobj 1244 0 obj<>endobj 1245 0 obj<>endobj 1246 0 obj<>endobj 1247 0 obj<>endobj 1248 0 obj<>endobj 1249 0 obj<>endobj 1250 0 obj<>endobj 1251 0 obj<>endobj 1252 0 obj<>endobj 1253 0 obj<>endobj 1254 0 obj<>endobj 1255 0 obj<>endobj 1256 0 obj<>0<>1<>3<>9<>10<>38<>43<>47<>52<>56<>59<>62<>85<>86<>88<>91<>95<>101<>102<>]>>>>endobj xref 0 1257 0000000000 65535 f 0000000015 00000 n 0000000462 00000 n 0000001798 00000 n 0000001872 00000 n 0000001948 00000 n 0000002029 00000 n 0000002113 00000 n 0000002201 00000 n 0000002259 00000 n 0000003357 00000 n 0000005070 00000 n 0000006169 00000 n 0000007883 00000 n 0000009939 00000 n 0000013340 00000 n 0000027964 00000 n 0000028177 00000 n 0000028561 00000 n 0000028743 00000 n 0000028947 00000 n 0000028979 00000 n 0000029063 00000 n 0000029165 00000 n 0000029218 00000 n 0000029302 00000 n 0000029403 00000 n 0000029506 00000 n 0000029609 00000 n 0000029712 00000 n 0000029815 00000 n 0000029918 00000 n 0000030021 00000 n 0000030123 00000 n 0000030226 00000 n 0000030327 00000 n 0000030430 00000 n 0000030532 00000 n 0000030634 00000 n 0000030737 00000 n 0000030872 00000 n 0000030904 00000 n 0000030988 00000 n 0000031044 00000 n 0000031129 00000 n 0000031183 00000 n 0000031268 00000 n 0000031320 00000 n 0000031404 00000 n 0000031505 00000 n 0000031572 00000 n 0000031657 00000 n 0000031760 00000 n 0000031808 00000 n 0000031893 00000 n 0000031941 00000 n 0000032024 00000 n 0000032097 00000 n 0000032182 00000 n 0000032268 00000 n 0000032370 00000 n 0000032443 00000 n 0000032527 00000 n 0000032600 00000 n 0000032685 00000 n 0000032758 00000 n 0000032843 00000 n 0000032916 00000 n 0000033001 00000 n 0000033104 00000 n 0000033207 00000 n 0000033254 00000 n 0000033338 00000 n 0000033407 00000 n 0000033492 00000 n 0000033574 00000 n 0000033659 00000 n 0000033761 00000 n 0000033846 00000 n 0000033930 00000 n 0000033996 00000 n 0000034080 00000 n 0000034187 00000 n 0000034219 00000 n 0000034303 00000 n 0000034405 00000 n 0000034507 00000 n 0000034609 00000 n 0000034653 00000 n 0000034755 00000 n 0000034857 00000 n 0000034959 00000 n 0000035061 00000 n 0000035103 00000 n 0000035188 00000 n 0000035291 00000 n 0000035394 00000 n 0000035459 00000 n 0000035561 00000 n 0000035663 00000 n 0000035765 00000 n 0000035868 00000 n 0000035971 00000 n 0000036074 00000 n 0000036178 00000 n 0000036280 00000 n 0000036384 00000 n 0000036488 00000 n 0000036592 00000 n 0000036695 00000 n 0000036805 00000 n 0000036909 00000 n 0000037012 00000 n 0000037116 00000 n 0000037220 00000 n 0000037324 00000 n 0000037428 00000 n 0000037532 00000 n 0000037636 00000 n 0000037740 00000 n 0000037844 00000 n 0000037947 00000 n 0000038051 00000 n 0000038153 00000 n 0000038257 00000 n 0000038361 00000 n 0000038464 00000 n 0000038567 00000 n 0000038720 00000 n 0000038824 00000 n 0000038928 00000 n 0000038961 00000 n 0000039064 00000 n 0000039150 00000 n 0000039236 00000 n 0000039303 00000 n 0000039389 00000 n 0000039430 00000 n 0000039463 00000 n 0000039549 00000 n 0000039652 00000 n 0000039755 00000 n 0000039802 00000 n 0000039889 00000 n 0000039992 00000 n 0000040096 00000 n 0000040200 00000 n 0000040286 00000 n 0000040372 00000 n 0000040439 00000 n 0000040525 00000 n 0000040614 00000 n 0000040647 00000 n 0000040733 00000 n 0000040835 00000 n 0000040937 00000 n 0000041040 00000 n 0000041143 00000 n 0000041246 00000 n 0000041348 00000 n 0000041450 00000 n 0000041552 00000 n 0000041655 00000 n 0000041758 00000 n 0000041861 00000 n 0000041964 00000 n 0000042067 00000 n 0000042170 00000 n 0000042273 00000 n 0000042376 00000 n 0000042479 00000 n 0000042582 00000 n 0000042685 00000 n 0000042788 00000 n 0000042891 00000 n 0000042994 00000 n 0000043097 00000 n 0000043200 00000 n 0000043303 00000 n 0000043406 00000 n 0000043509 00000 n 0000043612 00000 n 0000043715 00000 n 0000043817 00000 n 0000043920 00000 n 0000044023 00000 n 0000044126 00000 n 0000044228 00000 n 0000044331 00000 n 0000044434 00000 n 0000044537 00000 n 0000044640 00000 n 0000044743 00000 n 0000044846 00000 n 0000045191 00000 n 0000045294 00000 n 0000045397 00000 n 0000045500 00000 n 0000045603 00000 n 0000045706 00000 n 0000045809 00000 n 0000045912 00000 n 0000046015 00000 n 0000046118 00000 n 0000046221 00000 n 0000046324 00000 n 0000046427 00000 n 0000046530 00000 n 0000046633 00000 n 0000046736 00000 n 0000046839 00000 n 0000046942 00000 n 0000047045 00000 n 0000047148 00000 n 0000047251 00000 n 0000047354 00000 n 0000047457 00000 n 0000047560 00000 n 0000047662 00000 n 0000047765 00000 n 0000047867 00000 n 0000047969 00000 n 0000048072 00000 n 0000048175 00000 n 0000048278 00000 n 0000048381 00000 n 0000048484 00000 n 0000048587 00000 n 0000048690 00000 n 0000048793 00000 n 0000048896 00000 n 0000048999 00000 n 0000049102 00000 n 0000049205 00000 n 0000049308 00000 n 0000049411 00000 n 0000049514 00000 n 0000049617 00000 n 0000049720 00000 n 0000049823 00000 n 0000049926 00000 n 0000050029 00000 n 0000050132 00000 n 0000050235 00000 n 0000050338 00000 n 0000050441 00000 n 0000050544 00000 n 0000050647 00000 n 0000050750 00000 n 0000050853 00000 n 0000050956 00000 n 0000051059 00000 n 0000051532 00000 n 0000051635 00000 n 0000051738 00000 n 0000051841 00000 n 0000051944 00000 n 0000052047 00000 n 0000052150 00000 n 0000052253 00000 n 0000052356 00000 n 0000052459 00000 n 0000052562 00000 n 0000052665 00000 n 0000052768 00000 n 0000052871 00000 n 0000052974 00000 n 0000053077 00000 n 0000053179 00000 n 0000053282 00000 n 0000053385 00000 n 0000053488 00000 n 0000053591 00000 n 0000053694 00000 n 0000053797 00000 n 0000053900 00000 n 0000054003 00000 n 0000054106 00000 n 0000054209 00000 n 0000054312 00000 n 0000054415 00000 n 0000054463 00000 n 0000054549 00000 n 0000054652 00000 n 0000054705 00000 n 0000054791 00000 n 0000054894 00000 n 0000054997 00000 n 0000055100 00000 n 0000055203 00000 n 0000055305 00000 n 0000055408 00000 n 0000055510 00000 n 0000055612 00000 n 0000055715 00000 n 0000055818 00000 n 0000055921 00000 n 0000056024 00000 n 0000056127 00000 n 0000056230 00000 n 0000056333 00000 n 0000056436 00000 n 0000056539 00000 n 0000056642 00000 n 0000056745 00000 n 0000056847 00000 n 0000056950 00000 n 0000057052 00000 n 0000057154 00000 n 0000057256 00000 n 0000057358 00000 n 0000057460 00000 n 0000057562 00000 n 0000057664 00000 n 0000057766 00000 n 0000057869 00000 n 0000058374 00000 n 0000058477 00000 n 0000058580 00000 n 0000058683 00000 n 0000058786 00000 n 0000058889 00000 n 0000058992 00000 n 0000059095 00000 n 0000059198 00000 n 0000059301 00000 n 0000059404 00000 n 0000059507 00000 n 0000059610 00000 n 0000059712 00000 n 0000059833 00000 n 0000059936 00000 n 0000060022 00000 n 0000060108 00000 n 0000060175 00000 n 0000060261 00000 n 0000060302 00000 n 0000060335 00000 n 0000060421 00000 n 0000060523 00000 n 0000060626 00000 n 0000060729 00000 n 0000060832 00000 n 0000060935 00000 n 0000061038 00000 n 0000061141 00000 n 0000061209 00000 n 0000061296 00000 n 0000061385 00000 n 0000061488 00000 n 0000061574 00000 n 0000061661 00000 n 0000061728 00000 n 0000061814 00000 n 0000061855 00000 n 0000061888 00000 n 0000061974 00000 n 0000061999 00000 n 0000062102 00000 n 0000062188 00000 n 0000062274 00000 n 0000062341 00000 n 0000062427 00000 n 0000062468 00000 n 0000062501 00000 n 0000062587 00000 n 0000062612 00000 n 0000062715 00000 n 0000062817 00000 n 0000062892 00000 n 0000062977 00000 n 0000063080 00000 n 0000063183 00000 n 0000063286 00000 n 0000063389 00000 n 0000063492 00000 n 0000063573 00000 n 0000063676 00000 n 0000063701 00000 n 0000063805 00000 n 0000063908 00000 n 0000064011 00000 n 0000064114 00000 n 0000064163 00000 n 0000064249 00000 n 0000064335 00000 n 0000064402 00000 n 0000064488 00000 n 0000064521 00000 n 0000064554 00000 n 0000064640 00000 n 0000064692 00000 n 0000064779 00000 n 0000064843 00000 n 0000064930 00000 n 0000064998 00000 n 0000065085 00000 n 0000065153 00000 n 0000065240 00000 n 0000065309 00000 n 0000065396 00000 n 0000065461 00000 n 0000065535 00000 n 0000065622 00000 n 0000065696 00000 n 0000065783 00000 n 0000065857 00000 n 0000065944 00000 n 0000066018 00000 n 0000066105 00000 n 0000066179 00000 n 0000066266 00000 n 0000066340 00000 n 0000066427 00000 n 0000066501 00000 n 0000066588 00000 n 0000066662 00000 n 0000066749 00000 n 0000066823 00000 n 0000066910 00000 n 0000066984 00000 n 0000067071 00000 n 0000067168 00000 n 0000067242 00000 n 0000067329 00000 n 0000067393 00000 n 0000067480 00000 n 0000067557 00000 n 0000067644 00000 n 0000067718 00000 n 0000067805 00000 n 0000067891 00000 n 0000067977 00000 n 0000068044 00000 n 0000068130 00000 n 0000068195 00000 n 0000068228 00000 n 0000068314 00000 n 0000068418 00000 n 0000068522 00000 n 0000068626 00000 n 0000068730 00000 n 0000068832 00000 n 0000068935 00000 n 0000069008 00000 n 0000069060 00000 n 0000069147 00000 n 0000069250 00000 n 0000069354 00000 n 0000069458 00000 n 0000069561 00000 n 0000069665 00000 n 0000069739 00000 n 0000069826 00000 n 0000069899 00000 n 0000070003 00000 n 0000070107 00000 n 0000070211 00000 n 0000070314 00000 n 0000070418 00000 n 0000070522 00000 n 0000070625 00000 n 0000070729 00000 n 0000070831 00000 n 0000070935 00000 n 0000071021 00000 n 0000071107 00000 n 0000071174 00000 n 0000071260 00000 n 0000071373 00000 n 0000071406 00000 n 0000071492 00000 n 0000071596 00000 n 0000071629 00000 n 0000071733 00000 n 0000071837 00000 n 0000071941 00000 n 0000072044 00000 n 0000072148 00000 n 0000072252 00000 n 0000072356 00000 n 0000072460 00000 n 0000072564 00000 n 0000072650 00000 n 0000072736 00000 n 0000072833 00000 n 0000072900 00000 n 0000072986 00000 n 0000073011 00000 n 0000073044 00000 n 0000073130 00000 n 0000073233 00000 n 0000073336 00000 n 0000073439 00000 n 0000073542 00000 n 0000073645 00000 n 0000073748 00000 n 0000073851 00000 n 0000073954 00000 n 0000074057 00000 n 0000074160 00000 n 0000074263 00000 n 0000074366 00000 n 0000074469 00000 n 0000074572 00000 n 0000074675 00000 n 0000074778 00000 n 0000074881 00000 n 0000074984 00000 n 0000075087 00000 n 0000075190 00000 n 0000075293 00000 n 0000075396 00000 n 0000075499 00000 n 0000075602 00000 n 0000075705 00000 n 0000075808 00000 n 0000075911 00000 n 0000076014 00000 n 0000076117 00000 n 0000076220 00000 n 0000076323 00000 n 0000076426 00000 n 0000076529 00000 n 0000076632 00000 n 0000076735 00000 n 0000076838 00000 n 0000076941 00000 n 0000077044 00000 n 0000077147 00000 n 0000077250 00000 n 0000077353 00000 n 0000077456 00000 n 0000077559 00000 n 0000077662 00000 n 0000078039 00000 n 0000078142 00000 n 0000078245 00000 n 0000078348 00000 n 0000078451 00000 n 0000078555 00000 n 0000078659 00000 n 0000078724 00000 n 0000078828 00000 n 0000078904 00000 n 0000078991 00000 n 0000079085 00000 n 0000079172 00000 n 0000079231 00000 n 0000079317 00000 n 0000079375 00000 n 0000079462 00000 n 0000079526 00000 n 0000079613 00000 n 0000079673 00000 n 0000079760 00000 n 0000079815 00000 n 0000079901 00000 n 0000079956 00000 n 0000080043 00000 n 0000080100 00000 n 0000080187 00000 n 0000080231 00000 n 0000080318 00000 n 0000080364 00000 n 0000080451 00000 n 0000080564 00000 n 0000080667 00000 n 0000080770 00000 n 0000080873 00000 n 0000080977 00000 n 0000081080 00000 n 0000081137 00000 n 0000081188 00000 n 0000081275 00000 n 0000081379 00000 n 0000081412 00000 n 0000081515 00000 n 0000081619 00000 n 0000081723 00000 n 0000081827 00000 n 0000081931 00000 n 0000081988 00000 n 0000082092 00000 n 0000082196 00000 n 0000082300 00000 n 0000082404 00000 n 0000082506 00000 n 0000082610 00000 n 0000082713 00000 n 0000082815 00000 n 0000082918 00000 n 0000083022 00000 n 0000083119 00000 n 0000083158 00000 n 0000083244 00000 n 0000083348 00000 n 0000083452 00000 n 0000083496 00000 n 0000083583 00000 n 0000083627 00000 n 0000083714 00000 n 0000083817 00000 n 0000083919 00000 n 0000084023 00000 n 0000084104 00000 n 0000084207 00000 n 0000084310 00000 n 0000084414 00000 n 0000084518 00000 n 0000084621 00000 n 0000084725 00000 n 0000084790 00000 n 0000084860 00000 n 0000084947 00000 n 0000085030 00000 n 0000085117 00000 n 0000085150 00000 n 0000085245 00000 n 0000085331 00000 n 0000085411 00000 n 0000085497 00000 n 0000085569 00000 n 0000085656 00000 n 0000085760 00000 n 0000085809 00000 n 0000085913 00000 n 0000086017 00000 n 0000086121 00000 n 0000086225 00000 n 0000086274 00000 n 0000086378 00000 n 0000086482 00000 n 0000086586 00000 n 0000086627 00000 n 0000086730 00000 n 0000086834 00000 n 0000086938 00000 n 0000087042 00000 n 0000087144 00000 n 0000087230 00000 n 0000087317 00000 n 0000087384 00000 n 0000087470 00000 n 0000087543 00000 n 0000087576 00000 n 0000087662 00000 n 0000087730 00000 n 0000087817 00000 n 0000087903 00000 n 0000087989 00000 n 0000088056 00000 n 0000088142 00000 n 0000088191 00000 n 0000088224 00000 n 0000088310 00000 n 0000088413 00000 n 0000088515 00000 n 0000088618 00000 n 0000088721 00000 n 0000088824 00000 n 0000088927 00000 n 0000089031 00000 n 0000089135 00000 n 0000089224 00000 n 0000089310 00000 n 0000089396 00000 n 0000089463 00000 n 0000089549 00000 n 0000089582 00000 n 0000089615 00000 n 0000089701 00000 n 0000089805 00000 n 0000089838 00000 n 0000089924 00000 n 0000090010 00000 n 0000090035 00000 n 0000090102 00000 n 0000090188 00000 n 0000090213 00000 n 0000090246 00000 n 0000090332 00000 n 0000090435 00000 n 0000090538 00000 n 0000090641 00000 n 0000090744 00000 n 0000090801 00000 n 0000090905 00000 n 0000090991 00000 n 0000091077 00000 n 0000091144 00000 n 0000091230 00000 n 0000091271 00000 n 0000091304 00000 n 0000091390 00000 n 0000091493 00000 n 0000091596 00000 n 0000091699 00000 n 0000091802 00000 n 0000091906 00000 n 0000092009 00000 n 0000092111 00000 n 0000092192 00000 n 0000092296 00000 n 0000092321 00000 n 0000092399 00000 n 0000092485 00000 n 0000092562 00000 n 0000092649 00000 n 0000092724 00000 n 0000092811 00000 n 0000092894 00000 n 0000092981 00000 n 0000093055 00000 n 0000093142 00000 n 0000093227 00000 n 0000093313 00000 n 0000093395 00000 n 0000093482 00000 n 0000093558 00000 n 0000093645 00000 n 0000093719 00000 n 0000093806 00000 n 0000093895 00000 n 0000093947 00000 n 0000094034 00000 n 0000094086 00000 n 0000094172 00000 n 0000094224 00000 n 0000094311 00000 n 0000094350 00000 n 0000094437 00000 n 0000094486 00000 n 0000094573 00000 n 0000094630 00000 n 0000094686 00000 n 0000094771 00000 n 0000094865 00000 n 0000094951 00000 n 0000095009 00000 n 0000095095 00000 n 0000095162 00000 n 0000095247 00000 n 0000095329 00000 n 0000095415 00000 n 0000095498 00000 n 0000095584 00000 n 0000095661 00000 n 0000095746 00000 n 0000095826 00000 n 0000095911 00000 n 0000095960 00000 n 0000096045 00000 n 0000096089 00000 n 0000096174 00000 n 0000096247 00000 n 0000096332 00000 n 0000096427 00000 n 0000096512 00000 n 0000096565 00000 n 0000096651 00000 n 0000096754 00000 n 0000096823 00000 n 0000096908 00000 n 0000097012 00000 n 0000097066 00000 n 0000097151 00000 n 0000097216 00000 n 0000097302 00000 n 0000097365 00000 n 0000097450 00000 n 0000097503 00000 n 0000097588 00000 n 0000097652 00000 n 0000097737 00000 n 0000097790 00000 n 0000097877 00000 n 0000097981 00000 n 0000098045 00000 n 0000098132 00000 n 0000098204 00000 n 0000098291 00000 n 0000098358 00000 n 0000098445 00000 n 0000098516 00000 n 0000098603 00000 n 0000098836 00000 n 0000098922 00000 n 0000099008 00000 n 0000099075 00000 n 0000099161 00000 n 0000099194 00000 n 0000099227 00000 n 0000099313 00000 n 0000099366 00000 n 0000099453 00000 n 0000099539 00000 n 0000099626 00000 n 0000099693 00000 n 0000099779 00000 n 0000099828 00000 n 0000099861 00000 n 0000099947 00000 n 0000100002 00000 n 0000100089 00000 n 0000100144 00000 n 0000100231 00000 n 0000100287 00000 n 0000100374 00000 n 0000100458 00000 n 0000100545 00000 n 0000100631 00000 n 0000100717 00000 n 0000100784 00000 n 0000100870 00000 n 0000100943 00000 n 0000100977 00000 n 0000101011 00000 n 0000105749 00000 n 0000105793 00000 n 0000105837 00000 n 0000105881 00000 n 0000105925 00000 n 0000105969 00000 n 0000106013 00000 n 0000106057 00000 n 0000106101 00000 n 0000106145 00000 n 0000106189 00000 n 0000106233 00000 n 0000106277 00000 n 0000106321 00000 n 0000106365 00000 n 0000106409 00000 n 0000106453 00000 n 0000106497 00000 n 0000106541 00000 n 0000106585 00000 n 0000106629 00000 n 0000106673 00000 n 0000106717 00000 n 0000106761 00000 n 0000106805 00000 n 0000106849 00000 n 0000106893 00000 n 0000106937 00000 n 0000106981 00000 n 0000107025 00000 n 0000107069 00000 n 0000107113 00000 n 0000107157 00000 n 0000107201 00000 n 0000107245 00000 n 0000107289 00000 n 0000107333 00000 n 0000107377 00000 n 0000107421 00000 n 0000107465 00000 n 0000107509 00000 n 0000107553 00000 n 0000107597 00000 n 0000107641 00000 n 0000107685 00000 n 0000107729 00000 n 0000107773 00000 n 0000107817 00000 n 0000107861 00000 n 0000107905 00000 n 0000107949 00000 n 0000107993 00000 n 0000108037 00000 n 0000108081 00000 n 0000108125 00000 n 0000108169 00000 n 0000108213 00000 n 0000108257 00000 n 0000108301 00000 n 0000108345 00000 n 0000108389 00000 n 0000108433 00000 n 0000108477 00000 n 0000108521 00000 n 0000108565 00000 n 0000108609 00000 n 0000108653 00000 n 0000108697 00000 n 0000108741 00000 n 0000108785 00000 n 0000108829 00000 n 0000108873 00000 n 0000108917 00000 n 0000108961 00000 n 0000109005 00000 n 0000109049 00000 n 0000109093 00000 n 0000109137 00000 n 0000109181 00000 n 0000109225 00000 n 0000109269 00000 n 0000109313 00000 n 0000109357 00000 n 0000109401 00000 n 0000109445 00000 n 0000109489 00000 n 0000109533 00000 n 0000109577 00000 n 0000109621 00000 n 0000109665 00000 n 0000109709 00000 n 0000109753 00000 n 0000109797 00000 n 0000109841 00000 n 0000109885 00000 n 0000109929 00000 n 0000109973 00000 n 0000110017 00000 n 0000110061 00000 n 0000110105 00000 n 0000110149 00000 n 0000110193 00000 n 0000110237 00000 n 0000110281 00000 n 0000110325 00000 n 0000110369 00000 n 0000110413 00000 n 0000110457 00000 n 0000110501 00000 n 0000110545 00000 n 0000110589 00000 n 0000110633 00000 n 0000110677 00000 n 0000110721 00000 n 0000110765 00000 n 0000110809 00000 n 0000110853 00000 n 0000110897 00000 n 0000110941 00000 n 0000110985 00000 n 0000111029 00000 n 0000111073 00000 n 0000111117 00000 n 0000111161 00000 n 0000111205 00000 n 0000111249 00000 n 0000111293 00000 n 0000111337 00000 n 0000111381 00000 n 0000111425 00000 n 0000111469 00000 n 0000111513 00000 n 0000111557 00000 n 0000111601 00000 n 0000111645 00000 n 0000111689 00000 n 0000111733 00000 n 0000111777 00000 n 0000111821 00000 n 0000111865 00000 n 0000111909 00000 n 0000111953 00000 n 0000111997 00000 n 0000112041 00000 n 0000112085 00000 n 0000112129 00000 n 0000112173 00000 n 0000112217 00000 n 0000112261 00000 n 0000112305 00000 n 0000112349 00000 n 0000112393 00000 n 0000112437 00000 n 0000112481 00000 n 0000112525 00000 n 0000112569 00000 n 0000112613 00000 n 0000112657 00000 n 0000112701 00000 n 0000112745 00000 n 0000112789 00000 n 0000112833 00000 n 0000112877 00000 n 0000112921 00000 n 0000112965 00000 n 0000113009 00000 n 0000113053 00000 n 0000113097 00000 n 0000113141 00000 n 0000113185 00000 n 0000113229 00000 n 0000113273 00000 n 0000113317 00000 n 0000113361 00000 n 0000113405 00000 n 0000113449 00000 n 0000113493 00000 n 0000113537 00000 n 0000113581 00000 n 0000113625 00000 n 0000113669 00000 n 0000113713 00000 n 0000113757 00000 n 0000113802 00000 n 0000113847 00000 n 0000113892 00000 n 0000113937 00000 n 0000113982 00000 n 0000114027 00000 n 0000114072 00000 n 0000114117 00000 n 0000114162 00000 n 0000114207 00000 n 0000114252 00000 n 0000114297 00000 n 0000114342 00000 n 0000114387 00000 n 0000114432 00000 n 0000114477 00000 n 0000114522 00000 n 0000114567 00000 n 0000114612 00000 n 0000114657 00000 n 0000114702 00000 n 0000114747 00000 n 0000114792 00000 n 0000114837 00000 n 0000114882 00000 n 0000114927 00000 n 0000114972 00000 n 0000115017 00000 n 0000115062 00000 n 0000116038 00000 n 0000116263 00000 n 0000117139 00000 n 0000117344 00000 n 0000120084 00000 n 0000120257 00000 n 0000122139 00000 n 0000122372 00000 n 0000124141 00000 n 0000124332 00000 n 0000126309 00000 n 0000126501 00000 n 0000128559 00000 n 0000128742 00000 n 0000130871 00000 n 0000131072 00000 n 0000132924 00000 n 0000133098 00000 n 0000133703 00000 n 0000133918 00000 n 0000135867 00000 n 0000136092 00000 n 0000137202 00000 n 0000137386 00000 n 0000138241 00000 n 0000138425 00000 n 0000139147 00000 n 0000139331 00000 n 0000140569 00000 n 0000140728 00000 n 0000142242 00000 n 0000142401 00000 n 0000143879 00000 n 0000144038 00000 n 0000145309 00000 n 0000145468 00000 n 0000147051 00000 n 0000147210 00000 n 0000148408 00000 n 0000148567 00000 n 0000149745 00000 n 0000149904 00000 n 0000151361 00000 n 0000151520 00000 n 0000152730 00000 n 0000152889 00000 n 0000154048 00000 n 0000154216 00000 n 0000155651 00000 n 0000155819 00000 n 0000156962 00000 n 0000157121 00000 n 0000158211 00000 n 0000158370 00000 n 0000159549 00000 n 0000159708 00000 n 0000160862 00000 n 0000161030 00000 n 0000162421 00000 n 0000162580 00000 n 0000163653 00000 n 0000163812 00000 n 0000165225 00000 n 0000165375 00000 n 0000166007 00000 n 0000166157 00000 n 0000166824 00000 n 0000166983 00000 n 0000167942 00000 n 0000168101 00000 n 0000169069 00000 n 0000169228 00000 n 0000170120 00000 n 0000170279 00000 n 0000171619 00000 n 0000171793 00000 n 0000172849 00000 n 0000173083 00000 n 0000174969 00000 n 0000175146 00000 n 0000176804 00000 n 0000176981 00000 n 0000178791 00000 n 0000178959 00000 n 0000180945 00000 n 0000181110 00000 n 0000181992 00000 n 0000182198 00000 n 0000183397 00000 n 0000183556 00000 n 0000185300 00000 n 0000185468 00000 n 0000187126 00000 n 0000187300 00000 n 0000188312 00000 n 0000188518 00000 n 0000190408 00000 n 0000190610 00000 n 0000192994 00000 n 0000193168 00000 n 0000195371 00000 n 0000195564 00000 n 0000197856 00000 n 0000198030 00000 n 0000199225 00000 n 0000199440 00000 n 0000201050 00000 n 0000201224 00000 n 0000202727 00000 n 0000202886 00000 n 0000204534 00000 n 0000204708 00000 n 0000207273 00000 n 0000207488 00000 n 0000210076 00000 n 0000210324 00000 n 0000212825 00000 n 0000213207 00000 n 0000214536 00000 n 0000214751 00000 n 0000216340 00000 n 0000216523 00000 n 0000218552 00000 n 0000218717 00000 n 0000218957 00000 n 0000219163 00000 n 0000221172 00000 n 0000221365 00000 n 0000223998 00000 n 0000224190 00000 n 0000226946 00000 n 0000227105 00000 n 0000228634 00000 n 0000228811 00000 n 0000230363 00000 n 0000230522 00000 n 0000231719 00000 n 0000231887 00000 n 0000233357 00000 n 0000233525 00000 n 0000235168 00000 n 0000235336 00000 n 0000237234 00000 n 0000237402 00000 n 0000239953 00000 n 0000240155 00000 n 0000242954 00000 n 0000243147 00000 n 0000246123 00000 n 0000246325 00000 n 0000249149 00000 n 0000249351 00000 n 0000252275 00000 n 0000252453 00000 n 0000255316 00000 n 0000255493 00000 n 0000258279 00000 n 0000258471 00000 n 0000261248 00000 n 0000261440 00000 n 0000264163 00000 n 0000264355 00000 n 0000267184 00000 n 0000267367 00000 n 0000269923 00000 n 0000270106 00000 n 0000272842 00000 n 0000273034 00000 n 0000275580 00000 n 0000275772 00000 n 0000278063 00000 n 0000278280 00000 n 0000278874 00000 n 0000279099 00000 n 0000280918 00000 n 0000281102 00000 n 0000282628 00000 n 0000282853 00000 n 0000284337 00000 n 0000284521 00000 n 0000285548 00000 n 0000285713 00000 n 0000285943 00000 n 0000286168 00000 n 0000287756 00000 n 0000287915 00000 n 0000289471 00000 n 0000289621 00000 n 0000290601 00000 n 0000290766 00000 n 0000291601 00000 n 0000291807 00000 n 0000293309 00000 n 0000293474 00000 n 0000294935 00000 n 0000295118 00000 n 0000297235 00000 n 0000297409 00000 n 0000299174 00000 n 0000299357 00000 n 0000301525 00000 n 0000301690 00000 n 0000301986 00000 n 0000302211 00000 n 0000303666 00000 n 0000303872 00000 n 0000304664 00000 n 0000304723 00000 n 0000304847 00000 n 0000304986 00000 n 0000305120 00000 n 0000305257 00000 n 0000305420 00000 n 0000305577 00000 n 0000305712 00000 n 0000305844 00000 n 0000305996 00000 n 0000306134 00000 n 0000306271 00000 n 0000306399 00000 n 0000306542 00000 n 0000306685 00000 n 0000306837 00000 n 0000306988 00000 n 0000307137 00000 n 0000307282 00000 n 0000307415 00000 n trailer <]>> startxref 307952 %%EOF awstats-7.4/docs/images/0000750000175000017500000000000012551203300013045 5ustar skskawstats-7.4/docs/images/awstats_logo2.gif0000640000175000017500000000130012410217071016323 0ustar skskGIF89aX³ÿÿÿÚÚâ÷÷÷ΔÐ…·ïçóïïï÷÷ÿ‚‹(((RRR ÿ÷ÿ÷ï÷ðÖï!ù,XþÈI«½8ëÍ»ÿ`(Ždižhªb BTHOÊBÉR° ŒÒ® ÆÃÙ%*ƒXÂ0éQZ/CÏPÌ€žÇ €±*,»Á$À£ ¾€V w½rÜ#Á@Œa”+­£¤…XïmV;p†!sD:v~I€;t“z1?ˆž ;/dhF ~1©d… ¤f  yvL ‘Mš<–¶8{ Ë2·“Òœs¼Zß°I¬4•´ h¬| Lp ®ôØi•v æ(ÐÙÖ!ăàH‚#Å äN2}Ú±»±O?Hþ[ °C Ž*ˆ7éE˜4z$ Ä#Ö¾NsZ[S Ü(n Z˜(U…UÖ ƒ5Ô KkƒtBµÅ f7gZHn€§„XŸ…ÉT£ À‹- :à¸qO@Á’ÜàñS΂•S2Ù•½1Ob››:$¹é†k‚€\F0˜§ÐB‹ªMè¸1KÀ_HOÕÞ„·„”Œ}Tư´cAÌN’:-\zêÙBTœš úªáÑ}?R½l 7À ïC·î¦ˆ‡OžRp‚¹³-=IôD`gœé™Í…ðÇjfÍ 5(¬ÓC²;±E]¤O 'eúT££«º‡+8´M§[ÁH À޼1ÒØoPE<´ÀŠ?Ót’@€H@ÀXDˆ‚VHT á†vèᇠ†(âˆVX!„C™¨âŠ,¶èâ‹0ÆØân À8æ¨ãŽ<öèã@êÀŠ(Jhdšxá‘Ln0€ƒE6)eŽ5å•$D;awstats-7.4/docs/images/screen_shot_1.jpg0000640000175000017500000000470312410217071016314 0ustar skskÿØÿàJFIFHHÿÛC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀZx"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ÙmMi‰Cg8-ÏÓ­*é:nÕ ÝÝÓ­tÝžR-Ø ÿ'ÿB©Ðc÷–ˆO¨À§y.¡dsgL°BDÕHÿ‘t›5bÜû·cú×JÖvꥄ0$ „ˆÎ-ï÷ÿZ•åÜ,»'K±uù¬IÛÐ×õ¥þÉÓÃ,rpz~µÐâØ_l;re|çô ¤Kƒ""ƒÓ$ò*|Òî]Œ!¤é㥲þ´åÓ,³ÿÊ1õÿÝ-X`”ÝŒ KöH»G4»…—cŸmŸüðçñ¥û¨éÿ?oý’îÑöH»G4»ŠË±†–6¤à¢§¹Ïô©E…¨èñþMZÿd‡û´}’îÑÍ.áeØÉv㤑þMN°’Çù5.«tº~Ïô6ugÁp cé×ñך֔…ÁèTÖrXÚžÀƒý*F/Ú¥òC”@‡×ùÒ ¶~bÀçæíS½„n Ë·Ó"«¾Ž ù.% HÜj[}I.¬‘ÞãŽ8 {äqùS’kÌë9ãkÇåOŠÈEÒiß™‡øS%‚s*÷x9¥Í.Âitc¼ÛŸHÿ3G›séæhšÏíli'„ç¬nüꄚD¾bm¾¾ O Ì9­#fµÐ—~…ÿ6çÒ?ÌÑæÜúGùš†ßLòÛ{]^±éµå ?•,¶³y©²Iç,2ȦÔ{’å.à ҙ‹“Ù9íÿÄʤ„K í‰GÉè1N{,`®c'û² ÿ*Ï›M‘$`5µ·L3ßü*ZAÏ>߉~VžX'*@Áö¢™¶F¹ºvÁd0þTReE¾¢Iç<ìp˜Î1Ž¿­^·P°—o¶sЍÄÌïV$àƮƬ¼˜ôUÅ\¶9þãddc¥Tã9û4ß™ÿ¶ßtý)jSãþ}¦ÿ¾øÒ ùvŸþú?ãWh¦sM±Šý†ä÷Èaþ4žpÆèr2KŽ2Þ¬ýNöá'¸U!ceA$AMžúçíò±¯Cëœþ´¯ý}ßæC¿®¿äk†BHò’½FãÇëJV[MÇ©&±EåßÚÉ”4ÛH¨ ü…NšÍÓ"3Â2Á‰#¡_úûÿÈ9×õòÿ3[Îçe|ýoý:¿ä+2ÏTd½ÊF…_!I óÅnJcŒ®VóéÕÿ!G›ÿN¯ù ³EL›N:‘EM?Üÿ>”R`gÊó †-d >ÿJ·mrÒadB­ê9å®\³¬j9þuv=»~Sœqœu«{s}Óô¥¤oº~”µ À'¢Š¤î˜BJH!°ç•VÚôÍ>ÁgvŸ1bX`*·kÿðýï_z}·úù¹ïê}}êd›ÙؤÒZ¢´’ùPÈÉĆ%#bKgéTmµI.&òŽ™~€®ÒÌ8ý=«^Øæi¾¾þ§Ö’Ód˜Ïæ­]6¢­-Lä›ÙØ¥=ˤamvÅH;W©ÇáMÒõY.n¼“§]®I/*œ>žÕ~ÏäÆ{w>þ´¶¿y¾žþ§Ö›k¢!Bky~š(¢¤Ô޹þ}(¢¹þ}(¤ÀqŠ2rcR}H¡cE9TP}@§QNà#}Óô¥¤nTãÒÇû‡ô ¢“qþáý) 8áOé@íX}  Ã;OsëïRÛÇÌÜ÷õ>§Öˆ­ÌnXnööýiè’+1,NÙã@ ¶9žocïê}i-?ÖJ9ëïïëND‘Y‰lçý?­¤¨I,NÙúÐ,ÈÝ'==ÏŸZ-ÜÃ=½ý}éñ¤ª[-œÿ²õ¥‰IÈöP?­ME&ãýÃúQ¸ÿpþ”Éþçùô¢’l”û¤bŠLWP…³„—TÅ;íÑvOʹ\;8jrÚÉÀÉSÏü •ô¸Î…¯be#kò1Ò¡Ýgÿ<¥ýƲb`à}ßè*´¨›>êýåíî”ÓaÔÞ-iƒˆ¤Ïn¿ãUQŸ+¾ÆFìþÎ{ÿ½úV+ª%Q/¦=ªpª‹0E 6ƒ€1ÕŽhæv¸œu±±r-Ø3 õvQúz%ЬSgå‰þµ‚Xù€äýÓý)—LÍÜIýèêÚ]Ü,t™³ÿžRþ¿ãFlÿ甿¯ø×<8•ßøŠ€Or2i–¤‹8@'Gò£™Œé3gÿ<¥ýÆŒÙÿÏ)_ñ®mÉÛsÉç¯ä*BO›ÉÈSÌRçc±¿æXžˆÿŸÿ^ö_óÎOÏÿ¯YpöfŽ}ù¨ebrT’qßù® 7•—–Ý´¹|p ëEdÚ"îû£¨=?Ú4R½ÅcÿÙawstats-7.4/docs/images/awstats_logo7.jpg0000640000175000017500000001126412410217071016355 0ustar skskÿØÿàJFIFYYÿÛC  !"$"$ÿÛCÿÀ\È"ÿÄ ÿÄF  !1AQ"aq#2BRr†‘¡ÒÓ$3±Á%&'Cbcu‚ƒ’ÑáñÿÄÿÄ4 !1AQa¡"BRq‘±ÁÑð$2ÂáCbrÿÚ ?ìºR”D¥)DJR”D¥)DJR”D¥+p¿Ø­ò i÷«lGÀ¶ü¤!@›š/ U’¥`ÿl4–qûScÏüA¯â¬Ó.6óHu—ãkHR“ z{ŠQЯꔥ©JRˆ”¥(‰JWðûÍGao¾êi´•-kPJR‘¹$ž‚ˆ¿ºÄjíM§ôëÞ¥»DµÛÙÛÒÊ û)T£Ù { çž8z\é}1ãÚ4LêK²r“0“ê,«ÜFﻄÿ´zW?p~¯ôŽã”%k[¤»¥º 3.ç ²ÂT>e´ %êåN Vä"ý Ò7غ›MÁ¿ÁbK0ç´Œ$7ȵ´~‚Ê{' ï‚2È Ê6„6„¶ÚR„$”¤`; QûJRˆ”¥cúÐu)Ó‚sFè˜Þ²cƒíóŒŸ×§\oRkêÐV—Rkúå¥û¹Y:R•¥)DJ×µž®¶iˆãÖI~cˆ*f2 >²ÕN{Ÿ~é_mk¨XÓV5Ou+î8˜ñΠϯd#=‡RO`^•ËRæê£+SÏL÷Ýà|%JðÛChJ”žTîU¸t tétQg¹ÑbÅâ¼ÈÊÝO‚®É¸ê Lñvuí¦a¸€¦àÃW*J¬ƒÌ }çá_[^·&C¼Ì§*ÀG³‘Œu©~›ƒá^®\ù 0%¦8m?É•P9ÏÀƒþ² Åêu®r}ÈÈ.F’ÒTÚ’FûnIwíë`°£l¹Yóé.·†·IoÕ<µ¨ÍÓïé»™{NÝ_µLVDWyBùwÍýq½au¿Ôm¨bs-:¦×‚êP^OšHÝ èG÷v3­K®¥4—n¸¸úÕ‚|d¥¯ºqÌq<Ã¥x õ®’9šÆ(UëBqŖ￲úø3_2Qæ„Gx‘þ³;6£æ.çèã{u~v\µ„]CÈæØê.«Ø!jçAóÇqç½_=8´ýÔê7–gÅl›[®+%ÆÒ=¦ ;’2ž¾È#nQœÒÄÌÕÑÂb\NI>+¥éX[©,ÚVÎåÖ÷1£§dŽ«q]’„õR—øV‹¦5þ¤[Á©lж[ëJM.ÿjFÿ;öT°vIòHÜ™C‚šhÌ裂r@¹¦Ë¿“§ž'JÁa]mZ\Éæš UF”¥eXR°ÚÖ6™‘§%~×Å·J³4x•¤”¨Á¡®¯i"Žç×àÿ¯¸^¼›ìsµ%‘4qÿ!Ùܳþ@$]}‡O]¡_¬pïçég^uN·!¤©G'‘]BGÀ% ~Rª»T­‘¯ÍvéÝ·ßšš¯¤>xæÍvRœ mM)Ï55­V·ÃMLY£áÝŠ<)X,Íg->–’;o¸÷^½c©­NÈåÚñ#Ãi'•¶Ò2ãË=„÷QÿÙÀ©Ö¥¹/…¼B™tn©–]L‚±29”›‚z?Þø’~Íf´v‘º]oMëM{ÈíØoo·$ó1mAéÑNy«±ø m“ ]çÜi¸SËG¸Ø“ ¦¤Ñu&ÀáØîÔãH]v€}"w`ã)¨.6š’óé½3wÖ–5~½à´Éç´ØÔrÜQÙÇGÖpùŸ¸S)JÈÄ:w Ø ÐŸS©7+™ŠÅ¿àM€°@8S©7%)JVu•)JQ§÷Ý)wÕ|DeýB†S¥­Aˆ—9„Én·’z`þðUT UÐNè s5"•â¼uÚ½VŒ6)øgG©Wq]Ç–¯SNR”¥R³­+ŒjUûM"e –ﶇDëk‰׈Ê> éœf²ü?Ô±uv“ƒ}Œ èÃÍgv-àsñ=ë=RÈèû‹‹„~oOjÕ—ìˆóÇÒO¸/oÄÐWBÔ@aõ›Rßw¬?÷ÖÃþ¯ ì9ýÌ«›ÔzÍþC¨<ª)Jç®Jáþ1ÃsLq¶õpRZ’ã·úXpòó¥d9€­À8PŽõ(»Keé¯J³;&Ü”,¸˜åîd¡@ô·M¼ýÕÒÞ™ÚIÄOª£Äñ#KO«K(O´‡R"óžèÛHükŸ´=’Ï"í‹Á–ô?¯êØ«ªy‰è“Ítàæ…ó²0Å+çÁmvåÜeØ NŸ-ÉŠ}‡Ts“ÌA¨¯O8kv§Õq’‡b>„-lóeÆ‚°²v'ßúf²¬‹ &DXn[àÁ(mR €Jr’ É$ýëq´\£Ýt½µÛ²ÿ«Ü Ûe  ‘á §¯—¶·»mª‚Á˜•k_VÑr»6Ó.⨪Kœø9t$ü×–M®DEÎåo+)åÛ¨89ÅWu–¶õ‹|ñÙ %8–¤|û¼¥XR}¬ožžXÏNu–èâ¼MÂ:ÜåqM¡YmG|ºü*Â7^Ç!'-hµ÷}îud€‘ŽÉoÝ^ø¶iŠ´ÿJ‘ýI+ä*Èà~=ë3F_"ŷθÄ6øs[kuC˜¡#*!9ÉÛݾEg4ÝšV¸ÕV} cB˜*V˜¥Vò³Œò¡%X÷b½ µJ“¥© bíOEËd›Oô¤YHäqq—%#9öyn þ)ZMRëÏl…Ùm‹m‚ÊX‰”0ÃIè„$¥#àè¬DÔÕv(_7Xeå6§YmÅ4¾vÊ’ B°FG‘Á#>ó_JR¼ªR”¨‡¤$Þ/èVÞ×<žÕîÎÒ|K•Št`÷€WšRy\(ÇÒG7³Ôm Åo¥r6ˆôÚ²HðÙÖZ>ltT‹kÉ}ùò/”¤|£W=Ç.ë mklL…ì#LYŠé>A.òó»š"£R‰!I IGzQ·®t„]ZÔVäÞµ ¬FR”“i¹¹ ¯›, Ž`1¶zdÖ¯ò3hï­xˆ4Jþ*¦R­lÏh ?Ÿáh*gò3fטּ„4Jþ*|ŒY;êî Í¿Š©”¯{D¾×Ëì¼ÊÏä^ÃßUëãùžWñV'VðÅv°ÈŒÆ¤Ö š”—!ªUþCÈmà=•©DuÛ=pN*ÅJ“1s1ÁÁל)Æ|ÛÃÛ¨Pnh «Òáù÷ýrÅÞª‰rûM,ßFÇn}ëúŽÕ¶üŠi®ú‡\ÌÒÿ޾¯üÀâ„MZßÍØµ“ îÑeñý“ÇË= ûÇ©ªtÉ1áÄv\·Ûb;(+q×”$u$ž‚µãðá$GÑ}ÇC»tØø·ùC {f…¾„—ƒ¡oqÓ¡j˜\8£çÃr$«Æ±y§ \ÔR–=Ç Y}Åsž¿à„KÕèJråy>¾²µ%ôvPÉýFv®ŽxÔÐmäwÙV07$Ô7ˆ6{œyjãf—myGr£UÝ9Õ-Äâ\hOzãJÖÆ+qùΊe©,¤E2™º:Äķ΄=4’±Žƒ'9ò­>‰m# Ϙ„ªÜ•Œ~†®0,èíɸ)jØ-D¨üA¯}£Ñ»Q_ßZص.΃·4¥)¦ûÒG?ý …\ÜD£W*ÚêØ žŠ9§¡&ôÒÌù“aË)’µVp3ÔŸ*êþz6Y­ºi7mb.­ÞæŽo5Éèþ¨ÑÜ6KjJ=U“€Ø“½p_ZW‡+EÈÿ•¯a8Þl1¾þ7å8À*$«®ЬT$ÆHEŠÙ´æÁLþCts©æ9ßͧÈnîD1NþmS)Tö‰}¢µåo gòÃîìêùŠwó©òÃÎñ¯Çó ïçU2”í2ûE2ŽÏä+‡=áßæÿΨ÷¤„NpÊÔ‹U¢Ïy¼kŠ·Û›¿Ü(oÄ¥ìòŽÉê¢06Ž­¯KEªÂMÂ-¶eÈÛ)K¯`s¨ «`ç íûE2·…ù«¢ý¸Å«œKèÒÏZcºrd]×êÀg¹B¾pþ 5tÐþ„p›ä{Zë7Ÿ?^5¥€?ê¹’Gü‚»•J’ÓøaÃm)Ã{R­ºV4Èì/û@ôçž >|ªQJOÝ•¸Rˆ”¥(‰JRˆ”¥(‹«¬Pµ6›b¸'1å´PN2P®©P÷‚ –i­µlh–~ ×^ù«E+f$–2œƒ¸:8$[ûºèa|¥6'FÊ\Ô«M(Kx$Z½â÷_8±Ø‹¸Ñ™m–HCm¶”¡#`})JÆMnVI5)JR‹Ä¥)DJR”D¥)DJR”D¥)DJR”D¥)D_ÿÙawstats-7.4/docs/images/awstats_250x250.png0000640000175000017500000004077012410217071016263 0ustar sksk‰PNG  IHDRúúˆìZ=sBIT|dˆ pHYskkTþ tEXtSoftwarewww.inkscape.org›î< IDATxœí½w˜$Wy·}ŸJ{âÎÌ&m”V´- È9çhƒ3ØþŒqÄ`°Â`âkŒ ø…˘—`Àl‚É!ZÊ›Óä™ÎÝ•Î÷Ç©®™]íjÓ„Ýís_×JÓ5ÝU5Ýý«sê9Ïó{„”Fs~c¬ö h4šåG ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£é´Ð5š@ ]£9GB¬9Ùçj¡k4çBˆ¢â;@úd_£…®Ñœ#!F/ÿ¸ø¥”rïI¿VJ¹|g¦ÑhÎ!„ü‘…õv?™ v謕RNžì>¬e”Q"IHxéŠôˆ®Ñœ! à5À;!¢Q|ÑS$°¸PJéžêþõ=ºF³Ê!üpJÐp¤È»ÿútDzD×hV !Ä&à}ÀKyð¾ Ü\&¥ OçXzD×hV!Dxð ÙÝüP/Þtº"=¢k4+Š╨Q|==Šw‘À¥”9“ãê]£Y„EàƒÀu@wd>‘È»Ïyã™_ ý<àÚ÷|á1Ͻ|ËÛs ç^f[®o´<?”˜†ÀË2›püPÊ_)ïù‹ýé ¿ºÚçÝ !FQ‘ôßdAا²¬ýU)åMg|zê~n1ú–¾õi×|à äeMÏ7ÂP"‘BàX& ËÄ2 ¤”„R„/ éxm? ”’0Ú†’´cÉþt¢ö/7Ýõ¨û¯ÿÕ»Vûï;_ˆÒV_¼ÈænBàr)åg|>Zèg?Å÷~îÚ?|Üåß Â0Ýý¸RŽE*1Û¦AÂ21„@DcFJüè" %‘ð!”?iûõŽÇxµIÇðƒ? Ê$ÃÛM½ä[ðü/­Þ_|n¥­þp!êÛþy‹~v$ÌAÆ3~¼)ü'¥”¿¾$礅~öò¾ïÜñ´mÜÖðú×6Wç]9¿(‹ÒsÏÉCâ<ïXOû ”ò—ê˜Zègÿ½;~æáÕßÇ‚álŠt‚”m‘IØ i›¤l‹ñj)%ëû³±À‡MÕ]?$<êóÂ7ãQ>”/ñ‚JËe²ÖäÀ|ƒ¶çséØàÌÛžsõ)Ñ_šÓ¤,J¿|ïàoy5¿õ®EO‘@Ø*¥œZªãj¡Ÿüê¿~çuÝ>ö¡DTZ.BÀ†þ,¹¤MƱ0 ¤µ ƒ¾”CÓõi¸IÛd0­F{MÛ»÷í îËeôÿÅtŸÓñCÜ@äRBÛóiyM×'”Ç2¨¶\¦ê-Ušœ¯ãX&ksé}ðe}ÍJ¿Oç:eQúSàý¨è» ¼ú2®ú0~ÔSß&¥¼a)­…¾Šˆn0>ý¬WÎOÔZ¹ál’¾¤C¥í2šK“MØ8–@`%r±hjÞò2œI‘´ÍKMÙUÀíXŸy½ãÓò|¼ ¤áz´½)%–iÐñfêmöÏ×Ù;S£åùÖ ï¹ã[IyýõþR¿/ç#eQú[à/£‡ à…Yü¶b˜‰¶Ëèç-RÊúR_ }•ØvÃÿ»àÏŸxåžJÛ²ä6)Û"i[ä’6Ö æã•¶‹!ù¤ƒ!ÔZ¹m˜'šÇC,ø¤eá®ÄÛ®OÇht<:~€„øþà|ƒñj“zÇåP¥A6á0^m>þ¦?{Ñ—â=9)‹’|U™JÈÏ.ÈâÍBˆ ¼8ÚtxzAã|!D è9÷;N·Bí¡ÐB_a>zã/oŸkv.Ï'†2I„?£å¬Ç¢ã«`˜Z?¹$ªn²ÌÑH n i ㈠Ãbš®õîé*Mϧ?• ›°Ud¨ãQi¹ÔÚ.{gkLÖZÌ6ÛÑú»$!Ï~øæ™?{òÃgðÖœW”E) |xr´é>à©YÜ·øyB µ¾ðj)å§–ã|t ì ò‘ÝùËzÇ¿t4—"“°˜m´ùÅÁFsi6æØ=ScçT…lÂ&›´Ù:”'íœøcrýÛ40ŽR²`× BÓPÉ5‹§ø-Ïçîñ9š®O>icø‚JËÅ BÒ ÒŽ_x:Ñq–‰†Ô:3õ6_¾c×P¥Õ©½ý9<Ý,°ó†²( ÿ\m*Ï,È⃢èRJ_-½S>³\礅¾BüãÿþâV?”—n;0MÒ2i¸>^` ƒë¶­å¶ÓÌ·:øAÈù:¶i0Ûè`›A²®/ÃÖáüqájùÌÇ4ãÑÛ2 ,Ç ÝOÖZ¤‹lt±Ù=Se¾ÙÁ0õއeÑôÝ¥ÞQI9µ¶Ë|Ë%”êÝ}ç6^B ¾{ïÁlÒ.UÞüôbßr¿Ÿg+eQÚ| ¸8Úô}àùY|(û'xó™”¡ž=u_þÏwïø‰)¸v¢Öd¶Ñ!”ªØ$UúꣶŽÑñæ[.ù¤Ígâ@Ú±Ø<”g0“`ÇÈÙă¯ÏM×çG;Sk»\<6ÀE#ý$,“Œc«å3$•÷ËóÌ6ÚH Û×ôñó}Sø¡:ži¨[Ë0hy õ‰Z“0„¦ëáêûhâ‘`ÏL¶ïóâ+¶øã']¾q9ßÓ³‘²(]|èþíÿ üJA;õ:!Ä·¥”O]ÎsÓ#ú2óW_¹ù“Ùäµm?`&W_ÊÁ±L’–ÉŽÑR¶ÉlØaëpžŸì?Bä ÛäÊk0„ /åq,Z^À\³C.i“ul„P¸¶ÐöîŸ#ã¨(þX>@Ç™k¶É$lvŒô3ßr¹yÏ¥ýSìíçÀ|jË%Cjm—}suÁt’Ñ|ŠÑ\š™F›Ž/p0¤$i™˜†Át½…ë‡IËâ ·íÜàáþâ©W>~)ß˲(½øaAï]Êý.eQº5]Š6}øÝ‚,3ö(þbÙN,BèËÈŽ>³õ•Wmß9ÛT£xÇ Ì$¹êÕ2ëà|ƒ„eÒŸN0–Oãú_¾c7 IÙý©×m[K ŠM˜o¹ìš®Pi»qo(äªM#L×[Ü=>Ç¡JÓ0X×—¡xÁµdæùTÚ.ç¤m‹Çn_˾¹:?Ù5N %ŽiÐòT¡‹¨DšŽ"€L‚ ýYÓ æ[* Ü-Ž™mv¨¶]ÌÕiº>•~k¦Å3¿ÿú~ãLßDz(¥€~øtA_u¦û\JÊ¢ôàK@6Úôž‚,¾iOéAh»çeäEWly`¶ÙÁ)UÅÙc·­¥Òrùö=ûÙ5S¥îzŒåU ­¦*øaÈ@:Éö5}¼ú‘;ؾ¦!^rïÄ¡„õ}Y,Ó Õ½ò¡Jƒéz Ã0p,“(¸Ãþ¹ß»÷ »§+xAÈáJ“‰j“ÛLóÑï"i[\³y”´maÁH.—·v‹g¦ê-çÖýSì­1”I0”I0˜N`™êësp¾NµíÒ Z^”3ïdmç6þéRgò–Ei ðc”È^Y¥‡É>—’²(½øJäxÃÙ&rÐS÷eã½ß¾­Ñöñ¨-cH)ùÙÞIÖö)A—Í %$,“«.P£ñΩ wOÌáX&—Œ PX7„mxAÈt½M¥å2NÒŸr˜ª·ðI.©¦ça(©û^rÑH?騄u×t…J«CÓõØ;[c DB\¼ò…Ò\·m-OܱžÒ¾)~qp†áL’­ÃynÝ?Å|ËÅCfêm¦ëmöÍÖ¸ý@’±|:νWÑ|kèD³uQ;0_çמð¨*`ŸÎ{X¥gŸm6€¿^tÚÎQ¥ßEÍ4 ~§ ‹ŸXÕ“:gň^¥g®ö9,%¯ùÌ÷ß9Qk¦¯Þ4BÚ±Xןá‚,›óøaHÇ0„ˆEþ¿÷ä®ñ9ÂPrÁ`–Ñ\Šá¬ò l¹>ûçêÔ;.©(ÕUÝ „TZêZÇ#—t%Ì5;lèϲq K²Ô:}ÒŸJP︌äRô¥@5¸uÿ?Þ5Î}“ó4:»fªÜ¶š‘\ЦëÑ-| ¢¤šsu~qp†»Ï2Ûì0^S¹†d;åU -|ëîýÖŸñ¦ŸÊûW%£,J7_eAäÿ„ n¼°,JWóÅ+DY”Þ‚Êx3€6ðâ³Uäp½,J |¹,J[Wû\–!ƒéä›×æ3¬ïϪ/¿aПJ`‚™F› T9äÃÙ$ß¾g?‡*ª:¬k&‘„J¤†›sHà¾ÉyÚžMµÓlÌ1šOÇ)«µŽËù:‡* 6 æ¸pM?Ù„C>éà!“µ¦¡ÖÛƒP-¡Ýyh–„erÁ`Ž ýYšžOùÐ,A(‘RâX&–iÄ"vý€éz›½35fm„€ s dñ:¾”êµA(¹gbî÷Ä 7œÔw­,Jƒ¨©ð[QÅ-à× ²ø:àͨ‘”=ÓŠS%Q¥ïˆ6Ugdñ¿Vã|N–UzY”rÄt€wàéçøîÚžÏp6ÉP&Ášl’éz‹ÛLc³,C°g¦J*!yAHµå²{ºÊwï9¨)öL£ÍT­E¥åÒñúRr\8ÒÏ`:Áh>MÒ2™ªÞºg“\¾~ˆ|Ê!a™4:sÍv\á6Ûh3Yk²g¦ÆÞYµÔ[ïx4¢õó„¥Êb»Ur]¤”Ô:.-/`,ŸÁ1 F²)RöBµ¨Õ€C•&ïyôóª'zïÊ¢ôTrÉ3¢M;k ²øÿ¢hû'£ß=-úþ¬eQ²€ºuâ“À ²øƒ•<ÓaÕ„%|ž…8ÁËÊ¢tíjÏR nø‚³g¶¶Î%SõÙ„CÂ6¹o²¢Ê>M'Êk¤¤ÞQ„\Â>"S­ÚVƒjK¶ãÕ&ãÕ&Çbã@Ó\0cûš>å0“Nq,F²).`C¿šþ¯Í§™®·)šåÎC3tü€µ}i6ôgYߟ‰gAÛóiº>ûfkÔÚ®Š!Ø&ëû3ìíÇ0 i[!þ!É&H'¸h´Ÿõý¶ çU6]bá¶Ü0Ÿ¿õÌÆ?ýøàñÞ»²(ýp°9ÚôUં,þ⨧ހ*ñ„Õ£Èÿ—€WG›ö)Èâm+ugªã¢dÿ/#GýêýÀùW¯&ï»î¹Ý3jàJ«ióÄØ4˜#i™Ô]PJjm7PvTÙ„E;Z÷Õã/GÍÞb¢ï‡€ß‰6…ÀõÀ; ²ø µß‚,î-‹ÒG?®+‹Ò³ ²øõ¥ÿ48Ç~à+,|7ïD§ZÎã.%«5¢¸:úù& ;õ¹®,J«M=Fßò±Ñóõ4¨üòcýÔÚ*°g¦Êd­E*!NÖšìš®ÆÓè YžpÑzú’U5ž®·q,“@†<0UE"IÙ&¦ܾ?¦c eä“j$¨5¹ržýsufm‰j“½³5ÚQêT½Å\ËU)­ÒŽE2*ŒIÚ~¨Škµe”\¾•ç_¾…k62–Oc‚ ýY¶ åã×d›‹FË«ØÁæ¡<TlÁ‚oÞµß7Ü.eQÚÜÈ‚Èg€gdñÇù"ÞÉBÅ×;Ê¢t2þè§EY”ÆPßÏ®È<î\9¬‚ÐË¢ôÿ¡<®/þŒ…ærï.‹Òi-Ǭ&ï}ÞcîëŠn0`}_–¦ëó™ŸßϽó$£µê®3D•eQ\_Êá—^À†¹qça¼0ä›wï£ÞñØ=]å–½“4:LU%ìš©b"Ñ-à “°yøº!·}/¾b¯~äÖæ3ñº¸m¤l“5Ù$ æ°M3¶¡jû>Õ&Ù„ÍH.…c*ñª¼v%꾤à /ßʆyô–1vŒàD÷íÝ™ÀE#ý\26ÀÖáiÓ—J°LÌ78XY¹‚þ”ƒmÔÚ.})‡Ž`{gk|ëîýÜ?9¨üøg\z¿p݃ÎqM6ÅšlŠû'癬µØ9½‡óu¦ëíø<¼0$‰ÉY‚P2’Káù!åƒ3l[Óǃ9UšÜux–ŸîçöýSßp×ø,ß»÷¢è¼‰}Ì×éøÁ^î‹Ù0åÚ-£lʱe(ÏX>cX†À1 ÒŽEÚ±¨¶]ÖæÕŒãÎóülÏ$_)ïa÷L•ñªò{Ÿmv˜m´ã¶° Ì)‘w›ABÐ B’–‰cüòðì’Ï ²Xþ6z¸™_¶Ó¢,J¯B¹Â¤Psœ×"‡z”ܪN îËyÕ¦êo&Y¥ì§Sá-xæ‡M!¯69X©sçáÙ(yED…'aÜeóPŽKƹdl€ GúÎ&9\mRm»˜B°w¶†é=`åöâF‹n†ÛÝãsìš®2×êÐŽziÛbëp>®w?)ÛbËPžùf‡@J¶ çé|ê„Hàp¥‰„Ì6Û8–Ášl’ޝbóI‡ j1ßêDå¬>õŽOµíâX&µVäRÛm$¡.z–¡f2-/à?ÿ£8æ ž:Fy±üUY”Ò§³“²(ý*8صvzUAÿiiNqõYV¡—EéQ,DG=à%Yª¢Û2”§%߸ÑT|¾ÙQ…t‚-Cy¾sϺ»àNcBèQü‚Ÿì_ÊAæ_Qæ Û7–Eé£'Ȭ˜ÿøÝhÓÊŠù'KxngË"ôhü?€µÑ¦;•iPAÿ³,J7¡šÆ?¡,JÏ-ÈâW–áTϘCó šŸ„mÆkÐ÷MÌ3Qk²g¶Š@ ‘4]Ÿ¶ЭO_ןá%Wn`¶ÙÆ BÆ«-R¶…”Љ¢õRJjm3½à—vlF²)¶ôñÔ‹7ÆÕh'Ãl£Íwï=ÈÞÙó­Žr·itâõü„mÑ—Tû«·=êm5k0 A_*ÁΩJ¼’°TÖ_J2ŽEÓõ™i´ã[•.–±PÓ}<ßzHw¥S¢ ‹~Y”ÞŠZ¢Dåe¼õ¡^ˆ?¼4ÚtxZA¹d'v±,3eQú0 ká%Ôiû÷q-* à Pųª+È3ÿùk/Ú:”û"(!ÌÔÛŒF&~rÏøœòL÷ÊûMJxغA^Q¼ÓP†‡* ~¾o’éz+ª#¯2×ìÄÓ|ä›±|š‹Fúxìöu*"„ŒæÒ'Õ´àkwîåGŠ\[žŠ”×Ú !+rxµ"·Ø.Ý¢˜»ÏRïxʾÊP#}Â2yá[¹y÷Sõm?8bV"P™{}Ñ­€ë4\× /Þõ7¯Z[¨(;î Ô€­Yœ>Îs³¨’×®OÛý(‘ïYŠs9Yò½,J¿Í‚ȧ€ªÈ ²øÓ²(}xjô5¨ÀËYË.ßòþÛLÓt=Ut|U ĽÐLa`¡j©„àºmc<ûá‹ e’\·U­<Þqp†ýsu3 ² å7NpéÚA³m-M×g¼Údßl‹Fúb‘·½€ŸìgßlÉz‹GnåšM£ìœ®pïÄ<›‡rlèω:ÂL7Zœo<¨é¢eªe?/ ñÜ0ÎjÌ$¸wbŽzÇ‹ú¹gÜõ¥ê‚¥þî#÷)QžuŽG&aÇUp¿}Ý%Ÿ®XŠÏ¢ ‹²,JüCµ?ú³£ŸW¥!àëÀ5ѦÛPe¦“Kqg+K:¢—Eéà‡@eaû´‚,~ÿ ö·¸uŸ? l?mîŠò¡”Ý»ÇçìSÚQÿqÕI™$BTO.Tâ‰.` $i›Ü3®„ÓñÚ~@3êÖöƒ¸|m>M>éIØ\³y„¡t’mkúHGSåïßwÓ•¸ÓJ-*1íÒjQYª”*3ÍõÃh¹+ %³t;¾8QJ¬? KÙS…R2×P‘zS¨íf¥ÒŽ ܼg‚ÉZ +š¥G_@ OÿAUæ=ûá›ü÷¾ðÑKšî\¥Ÿ¢–rÛ¨ïËÁE¿Û€²b¾$ÚôTàí„%´ç:K6¢—Eiƒa½ IDAT5ê†jÿâLDPÅ]eQú'àOP•no$J´8èøª‘L!¤–¡J`wÏTUFše0ßTî®]º‘ï®Èuˆ<ˆø[BX‘ÿ¼z}Ò2ã¾pB.\ÓÇL£ÍlCMÚŽ¾?ïbFKk‹/iÚjÄ[€ï –gÿšhvY¥(‘_=ï¿€WœÎló\dIFô(øö]à±Ñ¦ÏdñWÏxÇÄŽ# ,…ZÀ…'±D·"¼û[·†ûçê⾉yÕ¬0CÂ2øR7=?éZžjIœ°L:Qnxxq$‹Ñ\š«7­!ŸLàÅ FøÉ®q,SPo{8–Á}“¦j­xÞ퇿ã±_?vÅÛpú,T‘‘¤Šlîc4ŸæÆÅkæ^pìVT€“r,ì(©hã@V~óuÏ[ò%Þ²(}xjI÷Ôwç€n˨^s’VÌçK5¢ÿ "¿…™3¦ ‹³eQz'j™-…²ðù͇~ÕŠGÁd? ˆîËÛ~@ÇSß§Å£êÑ£÷Ñt…ô¼Ë6#t|µÄöÍ»öáG][ü0ÄwÃ#:¯¶½àˆJ²Åññ¶ ð’j¬E£øÑ,Þš´ÔÔÞ2 ±q iÇâÆ‡±Lƒ´eÒìxǺ”Ä-›»8õŽ¿\å¥oArm”#Ìe¨ûv€÷dñ Ëtܳ–3¾š–Eé×YHR˜Eõ}né~âCÀîèç_+‹ÒåK¼ÿÓ¢+¢ GúâšlPêBI­ãE_jÕÜÀxˆèx×¢¹‹M‹ƒP­£OÕ[ܼgByËÙUì²°¤¥Z/9ð `ѹ©™ŽWä‹ÿžî”=°yÎÃ7cÁO÷L %q‚ÏâÝÝöÙ2É( ÍjŽwQ8S¢b©ÿŽ^Ç‚ÈßÔ‹"‡3Ñ£¬µDÔ=Ïž3=©£)Èb§,JoF• ¨Ñ}Y[Øœ Ý©º”ê^Ù T†YÒ6 %ŒåÓLÖZ„ÒäÊ Ã´<Ÿ}³uê•IfÊjm>CÒ6©´\UíªTS!àÖýS±ÿ§ÀB¶-úRNdâxlQBrt`̈[0C¨[2£|îe›ùßûr`¾ë¤+nN±¸…“cš$-5#h¸~”O@œ‡¯ú®/[«1P÷çÏ%ºî¢º¦||9x6sÚB/‹Ò”‡V2Úôæ‚,~{IÎêØ|”»xJY”žQÅ3îr&øAHÛ󙬵ðBµžlKÉH.­Ì!ÓI¾wßú’ ×'ãXìí'”’ýsªéA_*ÁS/9²MY-ê¨Rm{±ƒ 7;LÙµ&Su[,ðÅ÷ÔA(¸EhG•d¶a<èÞûX‘ÙdÛ È8O½d#ß¹g?{fj¸QÞ;Ǻû³ A C ¡Žc¢‹“‰cšHSÕ¾/6›\j ²ø‹²(}x!ðÊ‚,~iÙvpZBÜ0?ÏB3¹/dñ½KvVÇ Z'ýsÔòÀûÊ¢ôíÕ ¨R2ÝhÓŽîÁ‚mÃùhY,ƒmd6A(Ù?WÃ6 2ŽŒ¢ðcù4ƒéDÜ^ Ôˆ7^mbß;ö4|²ÖâpµÁѸ%¹´<_ÇŽš µO6ÔˆÚ]ò ¥º@t÷oDBt·©9Áï?È¡¨à¥Ä=²]³Ú¶¸“+¨^7—^yÓwcË^Sõ6TIô÷–û@g;§;¢¿xBôó¬Pp¬ ‹?*‹Ò—Žû±•8ö±0„Æ¢›kÃPΩ 2Á6 æØ¾¦ŸSjm)%3´#U%¨‰šJ\Y×—¡ázlÈÆ·Ç#›´U•ZÛÅŽÜe½ Œ×°ô~4º;–JÜ B5…¶ 3ú ºI>ª¥’O(ÕÅ ›°Ê$™j´£â7Pký®ª~m‹–äâz*¿_-÷©X@×|¢{V޵¼Bì¡Ïº†Œ«Á) =ªÙíúZÏ/(ÈbcIÏê¡y#ðÔ¹¿½,JŸ]áãÇ f”Ír7ˆ—ÕD4j]³YukeØèG£¡”jœô•}6Uo‘°Ì8…öXB‰Î6 f3ªMÒÑØ¦á %HÓÀ‹†eÏ&TõY7O½}Œ¨üâ} ¦Uã‰jÛÅóÕ²]·ç›"ŽK,Æ Ô À Âø¢Õ­w‘Ý–„dö9ëØr®qJ—Ô²(] taBTïçK~VAAï>=\ üùJ1ëú2í|ÒÁ4D7Œ:¤tµ—Nر»e(ûå\Ò&i›ÇQJ乄MÕ´½€†«FnÕ¿#Œ.»˜† š‹æîÝYc™Ø‘Ø%0’Kk¡¯'-ô(GøK,Xì¼µ ‹ÿ³,gubn@™ ¼!²ä]qª-¯d›ÛÖô±}M›s4:*²þŸ·ï¢|p†JÔ¨°/醒u}.[?ÄP6yDE—iŒõ=´gB¥Åæ“ R¶É¶á<‹/4]?wµ?_º÷жi` Ç4Ê$ãYGËdUŸ¶-\? íúX¦õp“G<×õƒãô,SÄ‹¤eª™ j ^ÙKÃÆþÜ9á x>p*S÷'¢Ÿ¿Ä‚…ÏŠSÅ©²(½;:‡ Êxàµ+}ŸøÙ}ozÚŽu7velÓdûš>vMW©¶]¾sïL!HÚf\ªŠmó`ž¦çsϸꠚ° 2ŽÁºÂXLJšŸ\ÂáÊk˧Ù:Üǧ98ß`"²xZüün‚‹åÏûaˆi¨8B>åÐŽòÓ‡³)R¶I;Z&s,×W÷ÑA(itÔÒY÷Òà˜fœú»Œ#þ¿µpÎ$¼ìC fTìcæZíóÊÜálæ¤Gô‚,~x:Êpÿ×ÏGÌû£Ÿk5zfßò†Ý´e(Ä6Ë4¸h´Ÿ‡­$Ÿ´Z^@­­z™ õŽÏt£M.a“IØQ·Ó ”\¶~ˆÂº!Ìh l1ÊöYù°mγi0Çc·¯åÉ;6paTè’MØq5™ªëâX;C6ôgÉEæiÛB âH{£ãc[jšÝtý8À×%¸A'Åt­«T€1z ƒu}iÒŽÅ`&Á`&I>åàG 3Á÷îßÿËòÁhÄ)ã ²ø]TNûªSÅvÔºö“€‰Z xÖJŸGµíâ˜Êó|¾Ùa®ÙÁ4ëú2lîãþÉ •¶ê†2UnI$•VG1FQQ;£.¶i´USÄ8Jm gS<ñ¢õ ¤Õ…Á4—Œ pp¾ÎÁJƒÙFÃ䓵އaˆ#e“¶§¡®É&qÌÁ88ï<<ËT»…¤l Ë*6-Ïuo¶Üü(_Þ‰êÙûÓÅ#2d¦¡.N÷MÌãúª& /åðÓ7¼äž•û¤z›Uo›|†| UO ð̲(=y¥O éúRDÓó¹¦ríøA\¼¢JC,Žº¿w9ûp‹zÇû‚؆‰H ûæêÜ;1÷Eâžk îeí£¢ì¶i0Óhsp¾Î®é ¶©z¬Bĉd甊aõ¥|h†ZÛeÛpŸ_Êa4—"ŸrX“U‰‹ŽeÒŸJàùj4íŽÞ]·Û480׈¬¡Âh7UªªTÉ.ÝR[ý-ntßo›Ù¤MÊ6IZ& Ë<¢"O\.8æ˜B°i0wDz}(šqN  ÊzêvÓ|°$å±'Ë»_𨗛BPw=ÖdSñˆij:¿o®g¾%#ï”OÕM!èO'¥ò—ëø!^DV%i‡µù4rä“êàÖ}Sñó'¢®(¶iÄ=Ù.ÈráH?ý飹;Fû±Lå=7]WuGƒQwÖ_žeß\íˆä—®©#¨QØ B:‘ûk—–ëÇÀ„ebF¯I.r¢}`ªBÓõ1 µ¬f›Ÿ½ãîg/åç°Z!Ή>«Ò6yx*Phï,‹Ò¬¤¡@>éÈÙfGŒõ¥ ¥äPE¥§&-3žŠÛ¦ ¢ãêÞYJlC¥Éæ’6ëú2±ùCËSŽ5™(¶{o{¸ÚP#$ c•–Ël³Ãæ¡vî4"—#ª›WQ|Ç2â€[/0 ‹„ebD 1Cu1𬵹ª¢p‘sÍæÁ¼¼ý^~Nu#}®B¼ø1ª ãmr9ŒÏs~D(Èâ]¨F} Dþh%?’O•…€]ÓUrI‡Mƒ¹8²íX&N$€îh–°Ô”|8›dÇh?/¿j;//^ÈÓ.ÙÈh.†¦¡,’j »Òêp×á9–É=óñR¨ÙÁ#7’K¨ †e¨6Èëû²lîãpµ¡êשî¯Q¶÷M*ªÅì¦a0Õz{(%iÛ"ëXq»æ£ C‡Xߟ墑~¶ô«Û„ äŽÓt<Ÿdd8!wei{A2ßRË}O»t#i‡û§*L×Ûñò]Ú¶Xߟaã@VuYM(éþtËqùj(•¬*g½í?8§º¶TªE³cL×ÛÜ79Ïmû§âN2Bˆ(Ç ë†äù&r)åÍ(„ÅF“ª¬úz”ãÍ”â³Bˆ_BŒ®äù7Bø?Àáèçß-‹Ò…+uàÝxφ¾”{µÏ7;®4Ù4˜ÃŽÒ>=¿kT!¹ãÀ4LUøá‡éø>?¸ÿæë´=_‚(gšJ«·_ºeï$÷MÌ“°Ô²[ÓõY×—&µ6®´]¼ ˆ3ð~²{"*CU¶Ì–©<ÛTö`¢ÚäªM#<ñ¢õ<õâ lÈ’qÔ4=—° C©ü×åBÓ-dB`[¦ò€·MÖä’\½i?Í«mïAx^’°MnÚ;yÙJ}&+M4 }Ûfxª½óa!Ä­Bˆw !+„XÖxÙy3uïùÊwKW¿TÅ­Ô±oøÚ-á®™ª8\Y¨OÚ&ëû3ª¨¾k];) ¦“lÊ„*€×%åXlî£Þñâî/wšaÏL¦ç³e(Ï£¶ŒrÉØ€²|¾ÿ j ±vP5ó”môW~±€¹f‡ál’lÂ&›°ãÀÝã³ e’ä“Õ¶ËÖá<Óõ6ãÕ&;§«ÔÚnl­lR¬íSn8#¹TÜÌ¡°nÛ4˜¬µ˜i´ãVÉ­¨N?”’¶ëóðuCòÓ¿ùÔómpyBˆ«QÓøþ=w”{í7€oH)œàù§Äùø¦ÿ+PŽ~~aÔÔ~Eøry×#ûR#¹…e¶vÔÛ¬í©e¨þT‚\BõCŸou¯6•ŸÚ¢å(SÆòi¶¯éc$—‚C•õhú=^m2”UµEÈ&ÚBvÏTI9ÊOn¼Úä¢Ñ~.í'ˆVº™qsÍvÜnºÞVF•&µC™$nâù"Z÷ ƒþt‚+6ó²Glã%WncÓ`Ž r\uÁ¹¤ÃÞÙZt¿ïá˜Gº8ûAHʱøåÄÌYÝ0s©RÞ‚šÆÏŸÂËú€ÿØ/„( !Þ'„x’âä{n‡óNèY Q ÷º¼¥Ž}Û›^~˺¾ŒßŸN°m¸\7×Ý bTSFóiÆòi¶ çI;a#9uïjJÞõI7„`Ïl5ÀŠÜw)Wίšæ—ÎÐöUs†„iÒrý(ëMrÏø»gªqûH.­¦ðµ&~*·›0ä™—^À“/ÞÈEQkçµ}®Þ4‹¯ØÆp6E>éph¾ÁÁù:LUðÃáèÂc»î€Ñ±qMxû›^q=‚”òç¨iüÜiîâá¨d°ï3BˆÿBü¾bËéìì¼›ºw)‹Ò·X0|EA?·Ç¿û/ö Ï¿ÒíøÓõ6-Ïg*ê©&%Q“D‹u}’¶Å¡JËìíGJÕYe¾ÙA°M“zÇ£Övè|â˜&¿ýèKØÐŸá¿Ë{¯6%2#šf† ?åp÷ø<ãÕ-OeïÙ¦²°JG¦Ž»gTìhã@Ž'^´ž¹f'¶ÀZ̹:×mS}3xÿ!UÜ?5H‚¨ôÔbÁ‰Vªf‘ù”Ã=wï›øÔ3Ý·‰…B8qœÇçÇï¼Û†¿ó# ¬~:#¬}ˆÔÏΗ g¾(¥ûï—à­<'Y‘‡Àͨ¢­¯syô½ ôªIãàdq÷Jÿï¾{ûMn>ZJÊ$hyn ú± !èø~,îÉZwÔW­”»±Ç#ŸrH'!q×Fžs~ä×m•t4wžåÀ|#*›]¸ß7Å‘+fdk%¥š]Ì6Úq멤cqÑH\ˆs¸ÒàP¥A#ªf{ÒEë¼ûÚxŒÃ÷g òià›(aSJ9s‚çŸÜùœïB(‹Òïÿ=ü\A_±’Çÿ·ŸÞS;0_Ï:–ÉP:I­£:°´\Ÿ„­ ^ñj“¦ëÓô”ý“j FÈîHÈ…àÛX>…j”Bɺþ )Ûb²Ö$i[ʃ”PÚ7Éd­…äÈVÈÇBB”Š+I˜fdõ°uªfà B˜š§Òrqƒ«7øÿðÒÇžå›ËÁ)Š\·²0j/K>|¯ÝB%Ñ\mº¶ ‹7¯ä9|â§÷tÎ×Ñ\:6‘ðBu_žv¬¸Í C†ëSiu˜®/t‚±-#2{Pû õø±mš¤ì‡ö‡Ø3Sãžñ¹¨ÉÂñEÊó.ˆòä ¶eÆ®·®¯l WšÌ6;Ö yåΗòçSæ$E>|%ìÿ‘RN,÷yw 3Ç¢ ‹>«”DÓå7¿ù¹Ô†l{¦Ù&M»µè‹ËMmà? ²m̱mM[×äéO'âÎ/})'~Íâë´”ªERµíÑTú°uÍ.º9òB,Dƒc\ô% ÖÍm_ÕÖ'-“áÈ¹Æ Bjm†ëñ°µ¡ùqE^Þ<X#¥|™”ò+!r葽KY”þõF¼h5ï}òæ{+3vÞ6öHå 7ÓhG .D5å %¥Uå,s4ëú2d“ÊXâÀ\#îã…ÊÜ1a™Q‚Žòœ“¨ÔÛ”ýàûúPwdÉ:ÃÙƒ™$~R‹Œ//];|èeëe‘¿•ƒÒ¥ŽÊjû:ðõ¥Î]?UzMèW?CÅŸîVEï¡_µô|üÇwÝ[ïøu{¥u?+r¡Yü™¸A¨rÛ3I2‹¬¨W›Ê&9\mÒY”rj™›‡rÌD™yëú3øAÈd­ÅT½E¥åª²Ö£>{ÊÚ[<‘ï6G”(k©\Ò!ãXqoó„eò¸íë&nxÎ5«ÒDãl@ñà¨>oÝ{íJ)|^%zJèeQú4ð+ÑÃ?,È⇖xÿ϶þCíûϾxã7 å_ß5pƒ¤¥z’å’ ×£åúÇ{9MÏS_ãú¦a0]oÑöÓ òI;Z‡we~1Uo±sª/íu{–',#6­ì®ñBu]MÚÖ- ú’éÄ Ÿý­§½í4ß®s!ÄUÀ#Q÷Ú»Vû|ŽG/ }êÊ›@-el+Èbõ¡_uÒûvPÞaE SÅäC=ÿáïúô¥òø+ïlyPÍ Õò8² rýàˆb–£™kv¥¤Ù(«i44:^Ôõt}†ŒcÅ»´=U·JØ;[ãP¥OÃÓ¶w| C©êØmÁïÞnlÈÊo” Î}à7N¥BK³JôœÐÊ¢ô‚sï.Èâ_.Á>óÀ—'F›¦ ²8r2¯ýØMwÝSi»;Ó`$÷àhùL£}ÌõôNÄkï~*SÊèwʤъëо÷®wTÍúbWšì›«ÅA»lÂ&a™±w\·aÄuÛÆ&ÿú™W¯¨CŠæÌèU¡÷;!  ì(Èâ¾3ØßZ”a@×=åðÌ‚,þâd÷±ý†Om¿þ™Wß=]o[iå jcø¤™I1×pUuÜDµIs‘p‡ÒI²É…¥ìþ”sÄ´[Jâi{§ÛZYÂp6IÛ˜¨6IXf”òª~¿u8þûí÷ξûµº9â9FO  ,J¯>=üTA_}šû¹%òMѦ{€gdqïéìï¥ûæo>ý’Ÿ¨µD(Cr ‡µ}‚0T.5јݵŽBd;8ß å¨$™n&ÛblÓ /ªw¯´Ýøþ?åþò–a°¶/j„?TiЗJȃ³µ}ç_ðåÓù›4«O/ Ýî¶£V—®*Èâ­§¸G_AÍ @>· ‹gœ¶ø²}ë÷Ÿ|ñúškvDJrI›¶0ÛhSi¹H”œaˆ8ˆ·ø“,¤°Ú†²˜¥ò€k{ª™‚cš¡Ú=%,ãA‰7 Ë >{ËýûÙ_òã3ý{4«KÏ  ,J/þ#zøý‚,>é^û\às,ô‹ÿ ðò‚,.i¥Ö–>±ùú§_{“ëkGr)Qi»QvåÛM‡5 ç¶ `(“Œš>¨æ ¦!pLÕŒ¡»Ž~´E»µ\êK:ãoýÎÛ^ÿÚ‡õ5ç$=-t€²(Ý<:zøœ‚,~í$^ó;ÀGPa@™Qþ^A—ÅY Ëö¿ú×ú´«~Zm{kkmW4]?N£5[†a²ŽDy²'- ã9¦¡š4¤+lyÁÏþñ{åíyç«?ø™šs-t5ýîNMï.{(Á–Eéè ¨¿)Èâ[—ñË¥ïøÌ…Ï{øæ7¯É¥_:]o¥›®/$q¬8Í”ø3 Ó e[ͽ3õ/ù¶ûÿöÎëõ®Õ8wÍÊÒóB(‹Òç—F¯ ‹=ÆsLTÜk£Mðº‚,~deÎR£9}´Ð²(mCæ0jçT_ôûðYàùѦ6ðÊ‚,ê(´æœ 'ª×NDAw²P¯>Ê¢J·²( ¢Œõ»"ŸžªE®9—Ð#zD$è¨îMàB”§Þ7€K¢§íG­‘ëûZÍ9…Ñ# ²8‹j FEÒÌ‚È ·s¥D\v¸#‰Š÷þ¨¢(Y°°êí7³{ŽÏ÷ðÙ9KýÙ·3ßÎh;ß~ó}ßÌ®§ÂSð”ñ¢¬l^YyyYù¼òªª²yóÊV]Q¾paU™ÛÆQÎñEÀÂI¸‚á¶Û¾2¯rܸ›c«‹m;v<¢Ô¶µz**ªU1,Jc‰û[´¨jÉ’%‹ØoüúK\|)WO`Ã=“pïö‹ØµkWkkkÛJ, rŸèuÙ+ˆbŸä•}>¨H’à÷³Ÿ¿onàñɲOeY‡Š,é~Éç÷I¬*ëº,±>7ð¬[קèÜ®û˜¬ö=÷œ®÷éNÁŽéú³P5‚ñ0>~|xŠááãÀÄ“@ägsûdÏu |: ô® º¬«ËuEïíj…±·Wôzù±–k}ž¼^a­¨G¾GMUUÃQ“ˆ¢* ‘ÊŽ¬Ò…igaL–=y4á/zÿl!ù<‘vF"‚‰ ‚ ‰‚èQÐå9²)O=åé¿É/ Ë’Od¥(9ˆsOLsƒ|0§À²ÇJ傚[OJV J@P¬IV—²MÛbHŸ`5Ë´ÜÚL‘ÚùöGïfœ8#{R1J0Ó-Á„PL]b¤¶bo» 8M•(iªIÂ3#}ç]»ºf•øîßÞ¹xË©@ÕˆÀ“Φ\&P— ‰wbe•«nC;']’çÓN†#å Îqtt´xb3öåʲE ÑNšI<‡Cñ¬îÌñH|‰øKRFTŽXˆÎäI[‰«ª;3‡Äf›ŠÌì$LjšüÇ<Ø€iY¦ÆðÑ9›1³xâ{Ÿiºæºg~ûÌkOf[]]ßO¤’©)ܦU*Üû›C¯]÷«þà×O^ƒ§B=Ápw°;šìé _¼Ô€F†p@Å3!Ö¦Èh²l)T(Ä0Œh8k:%2@…Ag*O—1Õ¸¨¦Q„µ€&Ñ€ CÇíà05pØ8nÍŒ€Yaè£Qpá`…HO–£ââ2 ¶Ì‘ØÉìäÎrÿxlf5×Âl7íujN³£Êô‰âˆMU·Ü6äõRÄŸ…{’=áîД!§Já’ó"Å]f<ÔýYÖ-Jj«ë««Û*ëkk[g›°LJâ9œu¬ºXêÓ›%˜U'Nñ,Yp%1ò°måiÛ~fyãÇg3Û˜ö»ž+Çl*@}ôì±b‰?ŒF³›òâÃvÃ1 îkü=ïÙ¾øG/Û#ÿ9Ña¿òé£uL;™¹¯ŽFCÁ¨aÃñ∡-^°gÛü½ºséž­‹÷¿|Çå{î¹rÅÍ—<Ññ×ýŸvìýñíE8‘2¢FjÊ °ñwøkó÷ê·/Ýs÷•Äw\ Ë÷ß9¯¶¸Ñ?_„ªÍ¸ad™õlˆ¼2M|àüÓ[©xt(ž,%1k·¦#N†B¡é^~âÃ7ön­;<¼ñÚƒ;êž~ksãÁ]uëþ°µáð#NÃ?6^Û»£îœuáÂ4ªNô„ƒÑâUmCE‰ec i•É H, j[PPX±SbCŠcjOGÆâUm!bSdZ[T…Y&œT‹"9"k€•¶PÐÌWI0­™Åp} ™²cÌÒIGX®Ç°f«ŠÆ [ƒƒñ”aÌ@Õ%#¦R»Ò®dÝ\>b7 žú¥ƒ¿¼þú›¯¿ùæòu?û¶ƒŽŽÆÄ©pw8GS~bEm'æßwÿœa÷¡ç[ž¿gýzX¿¬_¿eÓ¦ûî»Ó¦º/pÌ/@ A"Ø32Àq²ucrZb¶°¾H|ôèþ––£G˜ˆïÞâˆ@;dÄãà2SãÓ˜M!BX(Âï¿oކñðØØøèH ÇÌÑññòÞ{ÖøøçQ|áóÄ£‰,a ¶c[Œªm–"ly4±*pE“:—iÄ9m’¼ó‰‡CßäÊÜèÊKŒ¢ò倢:o¦2‚•1E“x?¶›…ˆ™ç †ŒP¼;1ý~e!$ÌŠ&®{£îXšøãŽuu¦} HP¯'ÏwO‘)rßZÿÚ¾µúZG¸Ñ·vÖ_Tñ««’G¼^ÿÜ~Ê” ýžãÎÇlýoÞÕý9‡·3¤ãûMçRd*ú=74ÕÔ %ýj©ºòÙÕrÓšfÿ6ŸÞ¸to…²¤­¢¾âÙ·¢æªòfnXæÓ}õõ>ùÙ›e]®®öé¢Ç듽•pz¹OöËMpln–u_Ó2YkVG>XÑäÓeiÁ¶ë+Åz¡ù±¦¥5ËeIè÷HËöÉš¤_ï÷zo^µFЗëßñëJÜ€ U+«V¬^½ µZ^¶ºÖ§·6‹’ä…þ«Y¥¦F”Äše¢X[ Ò2¨H5¢(6×B¥:ÈÍ}êq™õô)ŠºfÍ ²ï±§–úÝïëÿÙU¼Hh ]IEND®B`‚awstats-7.4/docs/images/awstats_ban_960x540.svg0000640000175000017500000357630012410217071017136 0ustar sksk image/svg+xml AWStats Log Analyzer AWStats awstats-7.4/docs/images/awstats_ban_460x270.jpg0000640000175000017500000005620712410217071017106 0ustar skskÿØÿàJFIFYYÿþCreated with GIMPÿÛC  !"$"$ÿÛCÿÀÌ"ÿÄ ÿÄS !1AQ"2aq#BRS‘’¡Ñ4Tr“”±Ò$3VbÁáds²ðñ7CU‚¢´58Et£³ÓÿÄÿÄ:!1AQ‘¡2aq"RSÑð#±Òá%BT’¢Á3rñÿÚ ?ûŠ(  *›¨º³¥ºnH£ê¥Ñ´w™KD·×ÑÀd¹Pì2ÙV–÷\Æ$·•%B2 Ѝ)j»¬èú¿×5[ .Ð0C=åÂCcØnbOµ.«izÍ”wÚF¥i¨ZJ Ž{i–XÜ‚C) òãÚ€™Er¿ºµ±²žúúæ[[xÚY§™ÂG(Ë31à$žUtÿVô¯P´Ë u.«4|Ñc{þ^ìíݰœgïƒTT†–©¬º¯¥¯µ‹Ç©4{½N×wÎ,ཎIáÚÁ[z¹pÄ‘Á TÅSÔ,4½>mGS½¶±²…wKqq*Çc8Ë3Éõ¬qñ‹Â‘wó_ô‹ÒÆAê5H¶~Öí¿¾…7TT='TÓuk8¯t»ûkÛY—tSA*ÈŽ=Â*e (õÅH6ŠSI@QE†’I@%µP E)¤¡BŠ(  (¢„ÒS©µP (¢€J(4PQ@6Hhi)Ô†€J(¬Þ¡Öz=½ÛYÚ4šÊm†Q åÏÃú'ÜUQrvF'R0W“±£4•‡—ªúšx¾qk¡ÙCU–á¤cöä*ÿ…FO/,‚ý5Ó7½Œ–s¬Ÿ§k„Àÿæ&ºvSàqõÊ7Ôô*³§:ƒGê6ºÑDm²¨d‰¹áÑ€d<G#г®g¡4ÕÐQE ( Š y?‹~4Åб]-—Aõ†¿=²¹’X´© ²o}ט+ë¹×µ zÅ'c_ô‡Š~3øÿ×qô¾…©/I苉µ´ c’ÞÝXe¼ã—2ª•÷CöF¤XhZ-®¦Bb´µdjX³rY˜òÌÄ–f<±$œ“Q;‚}‚–¨, µ„ñó­Ñ÷„}AÕÈò cÂýfC²#ƒÁ˜1Êk>/ñú[ϼsëY4Û†6]+¦K Q¼KóvÃ*•ï½ÚfSê1^ïò%ëÃÔk¦ÝÜo»Ó¿Ô¤ Ù$([c¾ 3êU«-òèֵ铮ÜFÂmR?,0|¨ÉXÿ˜Ùõ +Ñ1Éà¿ÊËZèþ #SŸýH…(ÿ„·9?[š.;±>ÜõoÊG¦OWxÕš4p´×O{›tQ–ia"TUûI@¿§â_ ~¢kžˆK¶>aw, ¹î¬D þ·aú+ê}>xïl#˜a–Eä{×ÄŸ' >PÝoÐ…ŠÞÚåšØL~&Ž)JÆ~ÒÑÊ­öŽhiùwu7Ð>^iñ†óõÛÈl•ö”PLÎ~ÐV-„Ç_8üž–ûÃ_KÞÏJúܶ×´ºŠÅ¦Ààå]fa¿|BLR|Œzdièîá ÏoóÇeɘï_Ò ýAâž'\k>9ü¥5n‹¿Õg²éÞšžkx­coHdÈê;yŽç;ˆáxç>Á§ü‘<3—HHîWTYÙÛ¥áÞ>Ü·ÿ¦±?(¼Fé/oüUð¦)¯á¿‘®o--Àyâ‘ÈóAˆÿ¶Øî‚AÏhjÓ_,={B¸m#¯º £º¶Lmà’/°Ã('?{ 4–EòmùBéÝ/e­Í}ÓšÛDñ«¶ÝÑJæ5g^ÂD`rGÖQø»°>’ùEõ®©¡|µî ÐuC¦k)ºÁ*ó}ÄQ¹PsÎÖa‘ÈÎF¥øa㯆Þ%±²Òµ·Ô2ÖÑùSc¿•|`çilzÖåÍá×Oj~^uóÉy§ Á 6qÅ"ˆeº[zí$œ9Æô 'üŒº‚{ï ´5 LÜ\2Ý»yÓn‘Ý®çff$ä“’rkè)eŽ(ZidDFYØàîM|cò:ð“@Ôlz{Ä{©E¬*\¶Õ•|Ÿ¯4Wn~§ü]ÿUNñw¢üLñSÆ«®žê+}{Hè-4™lÇ•r$e ŽÌXªq€s@}MoÖ=#qv--ú«Bžàœy1ê3çú¡³W;Щ`ë´rN{WËúïÈï£/zfA£ßê:v®!c>øšL|"@A;sßnøUÈ—«õž¡é]W¤µ»ë›»;vù´nònt†Ta°žiÆsŒã°€‹ýq®–N‡£'PJÚ„K-½ªL #ÚI¹È3e-’3Å}YÓWIw£[L³¤Û“;•Í~|øáLh?)«o ¬®uFÑ¥…$2K2òÐ4‡âqù=«Ú|o·¾ðKäÉaaÑ:®¡¼¿]<\´£Î†9DÓ¹VP0Ä®Ð@<ç€ú_RꞘÓo>e¨õ&euÛȸ¾Š9?e˜³‚â ˆÖH&ŽTa•d`Aàׯþüœ¼9ë>‰´Õ.õkëÙ®í’G¸‚è…Fàƒo[# ûVƒÂO üWð—Å[ý3Liõ/æsäO%Ü\ew«ˆƒnV˜Û ¡ÅŒÀUÑL·gx¤]®TdSꀤ¥ Ð¨J(¢… (¢„aHih¡ÑJi*€¤4µ_ÔZΙ ijºµÒ[ZÂ>&näú*Žå šÔbæÔb®Ù¨BU$£vÉôWšÜh]YÖzöþç§&€yº ‚¶ 9ÜÆf NB«0Á$Ö«¡ºu›'Îmþe«YIäjVMõ­åÞèÝÕ¹zäôÕÂìCiI;kmß>Y_.ö×ÀºTöã%&²’_ËÃ=ëuÖW˃z m:×ð ¢ëí`h}%}|'òeòü¸X íÀ z‘’ߢªWv3)(ÅÉî<ãÅþ¸ÔÞëè- V‚O&êí׉ßpC`HòIí#·z>›×u¨Óç~mŒÚR-ªMåâ[‡ ¹Ù0B€rOp1^]Özäc¬"éË)]­4Û{xmÂ漘 À¯;Ÿ{7dg8ÅS/ˆSÙu%–§ÛÛØéZtÆå¢¸S3\JÁU̇Œ™z ö+AYu%VnRgÑQuÌv°ÛOôtÆÆX·;)ü$MœƒÕO¸ÏÚdú·Å¥µe¶Š"‘ÈÂD`«!ã89$c¬;öÀ8EÓooâ™y»DÔt{H•#²ÔÕÄmt9Ë*mÀñg=Á¯ŸÒx ¦µý#©4ߤtKèï-|ÆŒºda”ò8#Ðò;{U¢moµ‡Õ:šú}~D•žÒÞáBÚÚ®[hXGÂ̰]²N¨=U½#Ô Ö–I#é—;c×­ÐÚ£„ºUå;0לdfºB…ýÜeyîá~sÜòÏ+gsõTðØzŸu 7Qéº-û¹çw¹åžVÎæâŠâ×–‹boÚêh"óŒæAåˆñû»mÇ9íŠÆ¿Qk}Y#[tR‹=41Yu똲ƒ‚-£?íNáF~+…,<ê]薭辸jy¨ajV»Ò+VòK÷ðWor.º§ªôÝH¬Ùf¾ÕnšéÖ‹¾y~Ü~*÷Ë6öÅd:¯¦º¯¨z[VԵŎçPŽÊi4ž¶” e¸Æ!3’Ï»`ÉÂÙt¯Ké];­f’ÏypAº¾ºs-ÍÁÀw<ãÀÀ‚®ÍuíáG*ûÛÿŸŠÐîñ0íœ6¾ó×ð÷W_¡çžøa¦xWÐh–¾\ú”ûfÕ/sq>;Fv/!G¶Ov9ô*(¯)óÄ<Z)´|qòýê;Ž¡êî’ðŸG–6šI’òäøDÒ“ Øú»TÈÇ>’)ûþÇíɯ‹ú+ <@ꔞ·â'YtÖ£¥Ã$²I`·H‚·à¡B‘ðB0O¸í®@Ò|¥4ý"Þ.ŸñN²³Š%ŠŽêU Š0ü`yÿÊÃ?úbÖÇÄ.¼ê+]b{y᳆ê åƒäBs€¡ç݇½~‡i–Ëia ºŒlP+=âçICמký%9Pu6ŽcÂL¸x˜ý‚ECú( çÉ߬aë€Óµ8ÙA¸€9P ãáuöpÃôW‚ü¢,Gü±úSªcŠGƒ¨íã†Cذmˆb©ªÇäo¡x‰Ñ_h=UÓŽkæ‹‹i&ÂéH”ö±­ÇËW z¬z3§õnŽÓæ½×ô=PM Â@‘"uø™sê!8û>ÊƼi®ño1YÛÛé슣fíÂ1ð‘ç¾ì»ƒßpúOÄÿäêµþг‘òúÔŽÌŒ²F ôÑA>€æ€ó¿ÿþÊ4û«ŸþîjÃuß^(x‘ân©Ñ~Ü[hšNšï ÚŒ‘©y¶±RåʶÅfA»“Œ…‡òp¸ñ·ÃΣÒú;YèYáÐ`’ešæ[V-!Ü•[aaï†àž{b®ÿÃÿ¼ñGQênéIú›§5IšeŠÙ Œ¨_x•rèé’¡ö• ç¹!@ÖÇòñG©4­Þ!øÅ­Í§‘æ]Y­Ì­QÉ;öŒsÉN+òÇÒî?¤[„µµêN°ñßÅÝ*^’±èä‰{‘©]Þ–’áãnC†RFsغƒU¿$ïúÛÃþ®×tþ£éËÛh$š#ovTe³© ƒë½Hû +ι®õG´:l6¹ÎÅÁ©F¨Š( ŠSIB…Q@QE!¤§R Võ&±o èÓêwPÝN‘`,VЙ$‘Ø…TU¥ˆ8<‘YΟéÍKWÕ¡êžµHšú/‹NÒÑ·Á§ëžÒMÛ/è{v[¯¼8´ºšÖã­4h§…Ú9®@*Ààƒöƒ\¿Ò÷†?ïÆ‰ýäW¶›«N B.ï‡ÃÇŽš^þšX¾Æ›Œ2“Õï·ÂûÞ¯M/}¹¬W\é—ú^¦qÓ¶í5í´~^¥dŸþ¡j9 Χ%OsÈçL>/xcþûè¿Þ'ú^ðËýöÑ¿·¬ÑUiKiE¾*Ï5ÃëÌÆØOif´ks[ÓúËU™­Ñu;gJ¶Õ4Û„¸´¹ŒIŠx ÿˆ<‚52¼B×ÄßúG«ÉÓ:¯LŸ¦õ™KO sgèû£Þ@="QÙ[žmþ—¼2ÿ}tí¿éV¾P•à›‹Í|ŸŠýô5ЧNœ“§+Åæ¸ù?£æ²hÛšò•ä¯ƒÍ±Ý ê0¡dôÊIßìȧ>/xgþúi?ÚŸáXï|Aðë¨|;Ô¬,ú¿LšéBMjù,ÈÀ8îWv>ÜV)Ѩ¦¯ÈùدjŒ’à|©,IÒ7‘j)x¶7SÀ W%‹«¯ƒƒú¾üwÓtLRXëßÊ{íF zü•{I£0$Û1 ãqëÈ5çòj:¾ŽÑoíüŒm¦ÛO9ÁáAÏ#ü z&‡©tæ•m¦ÛÝkÚTÂÐ:[i«|dã p®ÕhÕ·²Ÿ#äÒMjˆ]uâYKªÜK¦u«§Ú‘¶8 ¢Tã ÿžÝ«ÊuMCP¼¾{»«‰džO¤‘¾&-Îy÷Ïzöï'ð÷©¦úWHÕt½*B›^8áK)*~ÊqÜ‘ÇוuÞ‰opéÿ버1›’¥@A¤C߃ïëÆ2¨Ô¶‘Ú.Òµ®W‰â‚Ñ¥–F–ýãdË!RÀÿˆó÷åo¼iañw¤LD±mvÄ6;Ü ?»?®²væ å $¨­#¼ýU>çì¯ZðVï£-|YéË«Ëë+];HCuyu'™¶i•IhÆr$*};AÍìjZû/‘Ñ;IG‰÷µ6XÒXÚ)Q]eaÀ÷{Vý2xcþøYg'ùiÓ†_ïu§öRÿ’¸v}×Èú›Kˆº†ö©*Újºµæ§ ÚH[NÒ%8‚N@ç3m<(c€0ktЍBªŒ„ÿL~ÿ½–ߨMþJ?Ó†ŸïTݦÿ%v¬ñ5æ›ü>µÞ÷ï=Œm\KN¬¯o¦üÞ÷«Þo(¬ øÁᤈÈÝQqmp>ð•ó¯Š^6õ†N.:/­-:Ç¥¯öºÅ¤5‹ŽJ4¤G$£òX»pÜÍç•*‘Wq|>Ò>Ç¢¾XèÏ–oLÞ‡«zWQÒŸh}Œ«uoRU¶2¯Ý¼ÿ} Ð=kÓ}w¢ý1Ò÷ï}e»a‘­¥‡ ê1"©$}™¬&SEIŠZ*‚Æ‚9 fŠ+IKHh ’-PÀPihªààVsľ¦~èëÍ~;5¼ks´›np½ðqß=«IØ×ž|£¿öC«ÿ^ÿ¹(BÖë"Ÿ¼S‡jó=FѺëÄýcAÔï/#д-ÃYA;D.¦™wïv\1qŒ÷ŒdäKª>îW•ZÞ7‡}wy¡Au{y Ë¢Í©Ák<¦Vµx·TfÉØUOÔ·-èÞ‰þTt¥¯UjÚæ©ü¥ÔPÜÁÛ¨´$’Š‘‚`Ê‘î8 =XªžêßM™ãŠ’VT‰³3p’Mb<žâãÂ"k¹žiÙîw»¶âH¸”w¨Þ?뫤ôºzN°Üë $b Ûµm @LƒÊ)ÛÂþ¿‡¬¯/íßG}.XUn-VFË\[³2‰; `Œã‘‚kx@=À¯ ֺãtž«èí_¦µI$ƒOˆi7©%´ñÿ©³3 aËc¹8ãŠÓø¥mu©ø›ÑZ<:¥öŸ äw¢wµ”£2,jÄ;ôÏ!éçí¦„Prªûy…¦Dx±ÓÚ~…sy›®ÛÝ%Íœ·/*†0âA¸“¸öý~õYÔ‹Ñõ6®W¯jK©ùä[iúrÜâÊ?HÕa;wƒœ–<‘È4¡ø…®ž˜èýC^ixÖŠ„Bϰ6çUžÕujUíã” MèÓ"¼ j7wžu¥¥ÌÚŒ‘éÚ£ZZCùÌp¬ŽOø—qzvìmú†YºÄ“×¼ç];T„h÷ŠÌJ,Œ7BÁ}°Áoe =ƒ^yc êïzŽIåºúK³ú9YRIä¦`T® ìãžAȬ§Tt–“}ÕôwHI©¦ ›fÔõÔ®$ŽÂøÚ_ #z)þ%@öÊ+Ç|E¿·µêÝ¡®®uÁÓöZRÜ]G`²I=Ù cD‘“âÚ6äŸR}ðBô>£›â%†Ò¶ÝF=¨E*ÝZêóùV’ª–I#i2Fìm#>¾¼°Òñß zb.¤Ôµ]oUÕµiKê+„³·K¢±&×W$Žç9óØ^Æ{P!(¢Š¦‚Š(¡QE ™>挟sA¤ªÉ÷4‡>ôQ@GÔlíµ ì/¡Yí®#hå»2‘‚+Ñ7—9¬ŽƒÖ§y•ci4;ÉÍͺ÷‰¬±Œg××sTiÓ¶ýK£)&{[¨¤Yì®ã´ëÊH¿qî=A#ŽõéÃÕŠNNëèøüø¯Ü-h$èÕîK£Ý%þÖõãkXk†‘§K¨ê—ÙÚB2òÊûT}Ÿi>€r}*§¤úŠ~£ùÍÌz%Ýž”6üÎêè„k°s–cr§‚ßX7aUš/EÍs{·Ö×ë®êÑa¡‹fÛ;3þÊ>ųøíÉÀàb¶†­EFœ\cíKŽååÇÍòÞ+,=(8GÛ—Ò^KWæùo>]ñ—Â(t]aõm ZÖÎ噓 $byBcì}@ïkɵèúÒÎÑì'¶[«9_sù2YX îe¼éœ+ï[«x.­¤¶¹‰&†U*èã!ô5çQádw,ÒèW‘[Žë  yìàçÀÁúæ¼î¥MÇÞ Ý#åû¾§½ê ›]^V‚âhór¹!>1^}u®ê:f©$)we¨'•å‰U‘<ƒO¡Í}¨ø1×O®I8Ò!–4lÆÑ^Cå±÷Ã0oÖ*Iù:ê]Av“ëi¦é©» ÈwL¾Pá¾âEnkSÏÙ6û¬ð­7YÕzŸL·Ðm-íí¡¶gX­ìmÂËy<§ Àýuö7ÉïÃqáßF˜ï6¶·©›Qul„ ‘ pBnGvfäŒT¯ <#é¢ó´«Ss©ºm’þà&T‘IÏžpK`W Ru6•‘ëÃá{9m½D¤¥¤®g°(¢Šlí;@-Ž8¯êÿ“å߉}V:Äþ²»+i¤hè"·³9زH rp7>Å$û÷º*Ϻ+ÁO zCkèݦ|áH·7hn¦Vм¥ŠòàW ô´¨ EU‘¤§Sk P EŠ¢Š* !¬§‹9}Õ½ } é²ÛEspÑ”k†eA¶Ec’ªO`}+YHhÁ?é›SÃïÛ¼þýs¦ú–Ϫ[«:N},_^[$•áqÁAðȬ¹!€øFF1ús¼¦ÐŽ›ém^n¥»ê¾´ŸN¸¾’Ëæ0YÙ#-à's °ÜìÇ¿¤r7Ò¶]GiÑ­Lu†‰'Gm™àÕ.b”^ÙÖ,áIO‹±`0­Ö:ïÂþºÔΣ7MÛùìÛÙRY"}ÌjÁêçÖ€‡ò†HJ¤ƒ”cf Ee4ÎêS¬ô6§«]éÒÍ ZÜÁzÑÏ#´Ûãòãd,ƒqÀ·cœã5ètP31Ô?{¨uÿKuÛ-®/Â;0‘¼Ø‚.Àžù#zÎtïMõßJ\ê¶tíÖ¨I{Íë̳E¿ª>2ø†}HÎ¥QBQ‡I‡Ý[Ó—®y{¬ê<†íËÆ–Œ±‘B„ì' ¸sZ­m…Z ¾º[f´¶Y¡œ ”ž2 {OpY€\ÿÅ[z¢×ºO§uÍZËTÕôÈîîì›»»áyÏ*Ö矈‹£´-wJð¸ÛéòZÁÔ—ñÉy4÷ …3ÅŸò ØŒ¨àÕEôljÝ)¥½•‚tLÏ4­=ÍÕÍÅÛÍq#–vØ2óÜ’}VŠ Ô3ÕêzWVé7zTMkfm/!3æw1“¸¦@ÞbHÈïŒö©?¤õßSE®uN§kk´-¾—¦M'’ìÝ䘶7; 8#9ÙÒ)á¯MßôÕž³ ü¶²5ö±q}™€ŽM¸ ¹Fƒ2>ÚÕQEP!¢–’…AEPQB6Hh€”QEP!¢–’€(¢Š ŠJÔÓN¤4QEi´êC@%-%@QEQE)i*‚ÎÒÑ\ÀÚ)i(ö¤¥¤4EP!¥¢¨Ph4 ( ÑT¡IKA¨A(¢Š¥ (¢¡ÒÑT ¢”ÒPQ@%%)¤  P EPÐQE# (¢„ÒRšJ (4Q@%(ÒÑ@ ¥¦šQ@’–’€(4Q@6ŠSI@QKT ETAQ@YQE€!¤§SO3\Ì£ì¨×ÓlSQ£ŠâxÖD’0 sÞ€±ó—ÜQç/¸ªÿ™ÝþzÚ£æwž‹ö¨ 9}Å!™}êÌîÿ=íPlîÿ=íP¼å÷£Î_z€,®ÉK'°ÝA²»X‡ÿ5`f_zO9}Å@ù•ßçbýª>gwùØn¨'ùËî(ó—ÜT™ÝþvÛ£æw‡öè ÞrûŠ<å÷Ù]þvÛ£æWŸ‡öè þrûŠ<å÷æWŸ‡öèù•ççaýºwœ¾â9}Å@ù•ççaýº>eyùØn—ó2ûŠO9}ÅAù•ççaýº>cyùØn€ç/¸£Î_qP~cyùØn˜Þ~vÛ 'yËî)¾rûЇóÏÎÃût†Æ÷ó°þÝ7Î_qGœ¾â¡|Æ÷ó°þÝ1½üì?·@L3/¸£Î_qPþc{ùØn“濇öè ¾rûŠ<å÷¨_0½üì?·GÌ/;íÐëïJ&Sê* °½üì·PMÌ‘Ìñ¹å¡ûÁÅ[ƒ@¬ ¡Ù˽ELî(¢Š*€4”´†€(¢Š §Ri –€mQ@Úu! Š(ªŠ(¨Š( ,¦’°‘»RÐ{ŸU?¬þµÒ²k¯¥j0Á¦É-š³D÷/:²H”+庌rsœñ‘ÙŽ4·Ô5žÖ,//>jÖè»VÕÈs ÒlØqˆHÉÉp¤–w›Ì­<8x¥9ƒMŠ‚?.Þêñ* a.[ÍÁõÇ#’tÚ'KYX´@†ê £hî&Úª^VPC1Ý5ù>ý‡¤ÄÚ`œ^¬×€Yಚ8ÑUI ‡wçŸ|–o´vudØXXê wí[7Åß‘éŽ;ŸzÔ ïП—ü•ý¯úQ—ü•ý¯úS¨®@å";Éa@F,yÿ„ùÖ7^~–[ž]O¬¯´»…fßÒío íD$È_ªUÎ9ø³ØÖÞªîµ>Òåà–yD<€™Æyöª“`ÇiÐtt}Ç•×úÅÄLe…å}zG1•œç?ÐnìwÃs'KÔ:8#Íkâ×IÞòeeL:€£<ŽÅHÇ?“Ü£þPiÒ%þËþ”‡_ÒK3ÈHåzþ•­—À\é¥i‘Zi×F¥©^­ÒïYeº20xòÉà{ßYëÝGCуCw¬ëù1°÷+&ÓåpO's•;€lçi ½=A¥2•7x ÅÿJçôΉŒn?ØÒ¦Ëà.s°èZ测˜®$} ÜPI°Ùðg8å½êͤ麘óuX¾œ%¸t{¬ÆCpKypÚ¾™ªÃéò¿þúPÚÆ†ÌYŽIîLÿu6eÀ1jPºÎÆ)£6×Þçhny æ“HÕ¬µh<û|ØòWv1Èî1ß<ÕF¥Õ5¦XM{}v-íb¥‘¡øT{ž>Ú¯ÿHÝn²Éü¡²„DYdcµ6í 6r; Ž{r)²økEPÙõV‰yiÝ­ûMÈ$ŽDL«©v"ºÿ(t¿é2ÿf…6%À4U7ò‡Kþ“/ögøQü¡Òÿ¤Ëý™þØ—\ÑTßÊ/úL¿ÙŸáGò‡Kþ“/ögøSb\sES(t¿é2ÿf…uµÖ´û›„‚+‰K¹Âƒ?åM—À•ÊìLm¤0Yv„®ìºŸ´þ[~ïáFÓùmû¿…d7ãWWëº7DKck>¥m{ó¨÷Þ4~Kµ±–>¡ß„ã¿9ª¾…ê¥u ?NúNóæÖ¯t®‡Ìò¦À+…#r0 ˆàóš÷+Ë;{Ëy-îãIá‘J:HŠÊÊ{‚íUý=ÒúOy¿Bi–Öo×òc5Þ5 –qÏÏ"íI<²;tóÝMcó›Éæy&;ŠI•åÂŒãï&¬©»Oå·îþm?–ß»øW™]ÿ6“úµ‹Ô „ÿ÷òâ5¶x÷¡VvÁàöþ‰Ô?üBûù?ñßLú‹VƒµUiPU¨íTi)ÔÚ¨Š(¢‘ˆÍsyÑ}h´„Šƒ6¡gâßË;¶‰åodRh V•WÖ¸Ëyþ0¨‘Øjw'ãd…}rÛêó"‹ýɱyZi^P8ì~áŸLžþ•. v÷I)À9©5Ðî™nv1õÁ­j 5@ê(¢€JJSI@QKT ET¥!¥¢°Ð{QAí@TjÿPÕ¥$Y¶†O›·à0e¶- —ü+ƒéì@Á<ž*ÿVú†©µ«ú.ÛVŽB—pE"FÞ\-…ø‹(2#mÝÇ#ÕW9­Ô²ê v½?s‡/OѵK+u‚ f(¢Vr#ŠÂ4A“‘€;rN}óÆÚ‚z¶F‘¢´¶ÓnÌ#‹:¼*]>-ÎG$„ÊŒŸì5mi{­I*­Îˆ&à¬Ëx¯ê@ÀÈýGü+½NÙ/jÝ™en²%¼i4¢YU@w ·qÇ'™ö§ÑExÊå]si­K¯ßO§vdù~]½¬€~2á&B!»òKz õZÇë}!§«Í¨ "GwÜ$šÝZL… ’Jœ(û*¥}åNÆ.856²¸š3¬\FVYc¸Ž O-3À&çÆrI8iäöÒônæö{9oµ•"Â]Ég•¼*ÂÎÍ¿qc‚àŽ07^ÇáÕ”vÒÚÇ£têA0X–Ê0Ž ¾^Õ^ÿ’=…KÓz6]0±Ó-ô›Ãk|Ú‹#ØíAÅm¯/4Í>+9åØÑì›q•°¸Ï&³ÐÙÍæ¢¥ÅÛ’<¡âF•G Ùa˜n]¡‰ÚA=ÈÓÏ ëRÁ$owlêêT«1 ‚;·‘TÓô6³µM¬º,©Ê¹· ˆ·äÆ$÷îIï^,V&t$”`å~M ª›sQó9hÑÙºHÓ<·Aa"E/¹²Žw~ g¹©út¥q§ÜD¬…·4ăŒd1ç¿þ¹=kÓš¾q-Œ:ž‰ Ù1H¶úTŠ™°v®Ë!>˜ï¤…éΟ׮åš][ÓcŽ 7_£EÆJQsߨàäœ×›í¿GoS‡Å‰®:>œF GÛ+ÿä½?£®vÙ(É$á›’qŸ_\ÕIe uˆÓÿ2ÿÚ¿ñ¥Õío xSéÍ>Å›³œ—•FÜ‘øÎƒ×–QÜŠ~‰i{w`³ cOÔ~"¦kSˆÉ0[ŸÓWí ¶¿c.Ÿ3—d½äsú#OüËÿjÿÆ¢4ÿÌ¿ö¯ük¾±£ëi°XÝà ܶò%¼…È !R± ö5çŸÈOß ?ûÌŸÿ•}oFÇ× åR]·K+žlDÝ&”båäo>ˆÓÿ2ÿÚ¿ñ£è?ó/ý«ÿó=O¥|S´”G/ˆº £¬m#$÷Ž P ÝÊ ‰=°µwÓº;Å{¸ C׺=ÙFÚïÜ…C`qÁÁõô}Bÿç_‘ÃÖgðÙè¿Diÿ™í_øÓ£Òì£pñ¤ˆëÈe™Á¾±ZWDø§¥o5÷UØÍl’* ‰ eÏ#ý˜­§Ð}AÿÄ ý¶ÿ-r©„„•h¾#Ï[Òi´• ?+|É>Oý¢óûÔŸæ£Éÿ´^z“üÕM©iºèe‚¤Ó-f ÛÄ®X$ÆÜžxôäí§éúµÜCæúîŸvÊ£{C6FrFpÀʰýzW/V‡Ä]N_jVþž}>eŸ“ÿh¼þõ'ù¨òíŸÞ¤ÿ5Wj=?Ôòi÷ÚêvñÎñ2ÄæF\‚ú¾‡›¡üXh˜EÕöäpÆy£Ë®s£é$ÍGÒUe®k—Ìô'þÑyýêOóQäÿÚ/?½Iþjò˜ôÙžâoM´é•e[¶X:Ær6’0çn=ØýúZt§Š·sí|EÐ.B–H¦v# 0 caq:zýOƒ.‡©¬eX\]äy¹ÔZ«µ‹w‚ùË2Ÿ2WabƳzWHx‘i©ÚÝj=Kg=œS+ÏÎäº21O¶µ½J@»Lû·øÖe·žœ5yVMÊ>g}3„j; §°•1ÍJ’þ4XPô“©Žê½ÍTÉ©—m±+;{(Í Rs-aÏç?¨dþê|—Q§¨¨w¤køÂ»C –;®n$~Gáo¹?º¬mtÛ[öq 9È!yýg'õb¥ÁD&½¹]Ð[¾ÃÙÛá_Öx®ñè÷’“ó‹½²g÷œÕš¿ÌHÄñ¼÷Ç,çJYÏÕO^ìqǽ. yt›{KIg[cu*!*¬KV?úIã€OçÚÏRu“õ”šUž~šDl¶ÏóVŠ% JÒ9\)Éaè0TòÖv±Îç8ö^8¦K%µ¹Ý#ƌެy?ó=ëQ’Z«–ç &;»}>8¯%7#&I $Ÿ_¿Ó`;T‰#iP¤›B0Á’MGmEDË)ÛHÚ¹ö9ä~ªæÒ_ÎNÖXTã,¯' þ¡Y¹ =ÄRXë €¯9o¦X5®°“Ì·SöU'Z[²=½ÑÁe>\‡×Üg÷ŸÓS:z}ðžÕP-è ÑT!¥ Ð ¢Š*€¢Š*ÒŠ(¬ !íN¦žÆ€¨Õ¾¡ªÝV}FßD¶’Ù­ÖË9yfF ,3’ÞÇÞ¬µo¨jûÅ&‹«Ã3’ âÖYî,¸ÊÞGzéO¼²¸£ÝiZmÃÏs¬ÝµÃl‚h$™åˆJF>P?ƒa»ì=ªî gNžaS³1`¿ìØ ÇŒŽßY'Šõ.­ ™/&Ûæ²I 7¨±a¤_C€1Àœ`Œ® ¶³±Ôî[çëyøbcÛ ¦tTPóµˆ#.¼d`¨ÇãõU§›\‰™§¢ªî¨<Ô0>šcKWRHÆ@<àyçqÌÛž|Ü|üÛ™óÏ’\~žkÆãe{”ïT÷Z~y,ÒN³(›Ë¹hÆü‚›Â°Ë`¦3Î6ý•qTšÆžnæ“G±¾t$C½Ÿw –Æß#8È>øˆ¨œ–¶ p×+;–Ûr«)<œ+dœ‘‚Hç°©1ÏŽé«´g*qœj¥hoZâyäÑ,Ú\‚á- \ã¹úÀªà9Sžâ“R·Š+{m-R‡áQ±B ûöözç‚–Äœ„Õ6¡¡E#IsddŠéÛ$Ëq1ˆ‚ÃÀ²’ €}8ô®u¬ˆ74ïå†MØÚÇòñœ€1œ|]ø5ÏçÚðŠ"Ú1.ßídŒ„凸Ï`}8aê CnŸ¼in¥kˆÙç‚@¥¦¹!foP¾v@ô\NÉÏ!ÓÚ¨TO>ÁWa¶Øá¸’yç'·9µŠïYg‰dÓ6“k°d"1€w‘œŽ2xíÍ2Úó_—N†âM!`¹b‚Kg• Œ»ŽåbÜ·¶vý ÕÔ©»dw²Ñtû+ù/­ •.%]®Æw`Ã9äÇœqØT¹áyfŽA4Ñ„VTŒ6}OÚ=>ú‚·zÁX÷i¬‰ 2„'äŸ3¶Iàú`•šëVKo14æ’L¯à†ÀpqžL˜ã'ïÚqéSRfÙÆçBk˜ÕgÕ/¤+·k4p1R0#1‘œ…=¿ã4èti`mµkø#Â"Â’ 8ÙÜã¿Ú}éÑÞk ñ†ÒÝÈÜIŒìÇ8“Ûž3ÇÛÅF¶¿êr®÷Z 1ªÃæ*År²;>ìyx%TsØä û‰s 4P„g’Bw999¤º‰æ…–hvHì#âÇ⟰úÔ îµ¥±y£ÓD“(%`ܘŽÜïÀÉûid»ÖÀ]1œ`eNøÖOBHýu,B£SÑt.5 oýj;GY$»Ï!€¬€–ÜŸTsù? È#p2ôÝ*Ù¢?Dë— …FŸ7Ù»jੌì ÇlcŽyKûi®n®&¸éØ.›ÈhK¼q4yeòÆ_±œ6ß"¬t:; b–V¶V++y²G¸_Œ’v¶ ã“ëŠ!|Ép£EFÒI)^7¾2yõÅ:TghÈy#n!q†àŒ³œþM+r÷ÐÿdÍFÛŸÏCý‘ÿ5ŸÔt]"çSO¨*_+o­¹m‹cãrVBÄ{/aÁí¦i–t­jt‰~2–¦ Œ[?=HcŸSŸn,$Òá’äÜÉ ›LÁsoÉ 7;½B(>ûG°¥³Ób³šI­ ±‚YT,¶Ö` 0ƒÈÜé¸ûš"Ü• 4VñÄÍ$…T»‘¹±ê~Úeü ujð §€°ÿimeûAÿÈ÷Èȧm¹üô?ÙóQ¶çóÐÿdÍByt®7žd×QžD›–Ûpo13¹ \`öåÏ®1.ÃHÓ^o3NÔÿ *·nU(‡i*¹ À!Çmƽ3¤%ßÎÓJÒRãy«dà¾ò2q¼–ǹÏz“i£ÚÙÜ|æÖÓO‚m ‘Úíb Aí…Q÷D —düÚO„ö¬ZµÀ½`…ä$¾p8úûV½â¸t(ÓE´÷Äg?ø«×Qyú¶‡QtÈÌÖ×+ ¯añÊäwÀ\ý¾”lã’;ušúöhÏlÄñœ pNõô«o™Ak*ÛM:¶>+™<¥ldö#í¢ÖÊYX½¤¦ÌɃ$ÑÆ¾cà`¸ý„ƒÛí«s§[! áŽxB®ÿ9C#œ¶x<óœwǵ‰-¬¯Íà’@ΦуøÄq•'<öã567bùKyG¯µSê]A¡é0wyv¶…¥9cé´SY]WÄ]LiæëKékÖ+r°42óç8Ž-Ø8ˆr{gp¥)»$G$•Ùè„8áWžsÉÅE»½±´Ïί0ø¶–çÕëËôýk¯úÁem.ÊÛN´1«Gq{t®²+ ŒG8<öb?x®Ú@ëÒÍÔ}AªN’DªÛA.Óê¨*~7H AQ‚+»Ã ï&—‚ÍôË›9v­÷c~Ÿ\•ßVXÀLv°4„sª9û9?áT—]I¯ÞÊÖöv3¡ÆÒˆ¹9Áþ& ¹@‹›­ DÓ®¡Ô¦‘lÕeRÒïò{pJ’Öê㜠›ð‘D²Ffm£žÙ;‡®=þïQÍΜ{±¿™ÅC<ç%à®ù¿ÒˆöɨÜ[¯Ï& !E¤ …VÇ;[¿]H†Â%¶®[¹½Uõ¸ÚBZ]²GäNq(i"]¬~»Ê£°#€Ý»Uì,ÐG4y+"\‚Ïß\å’–æw„ÕÜ7 H‘øGôÿO²_ÝE`êSu]·Î4Ù“áÈMè1ÎW¹ÏÝYΙŸ5·º]ÐãÜöÇJóÛ`lµ‰`Á$ gÔzÕŠ¨qÊÒS-_|J~Êèk@J(¢€CIN¦Ð-%Ahh¥4•Ì#v¥¤=O«}CPu&Véø!xßaWËù1È£;‡g#ïýÞµ;Vú†©µ[ë¨ì!²ú2 íÞGk‰.`P­øA°¤¾‡ äe¹ÀÖáÞ@IavI&Æ…åÅÀ}:2ò®Ë»ðƒ[~“O·[xïÜx_(+¬K`¦FTïö-Ç~Ü`çã{ÛÂn$ÒÒúFmÌ6‘…·Ë&6ÆIîx¨ª'{­írW8GTqÜ£û6¿×ROÒ¿—'öMü(úB×òäþÉ¿…J¢¡è"ý!kùrdߤ-.Oì›øTª(¿HZþ\ŸÙ7ð£é _Ë“û&þ*Š(Ô-I{ŒœsùVC®n|‹ûtSvYüÏÁÂ@2;¶7 gºâ¶—ͤû«Ör´w‘mòÕ°ØgV`>!ÜÃÜ’1U;fv–´É½•œ±¦à 9v O'{œùïž?E]Ç¢MrCß]MrA'á~ï³ô‘Óåd²‚L£3 %” g㓎~Ó÷žõv95v˜*WAÓÌb7·“9#¾Hü¯qö×m,FRh–ÝaòŸhURŽ;dpyÀÙÆjÀöÉûê@Ûë Fòî˜ Æq¿9!08QË1>ƒ€íó˜“Pù‘8i#Þ‹Ç pØÎã#œœT]T4WqÝD©$ÅvÆ­Æq’Fv³sœ|#¶sØaÚ¿˜—|±4›–ãnÐ[rXPx·`‘€N멬sX‡Ê¼a–Añ|.33¸ ·°Ôu¨¶nwLŒ¿ nr§ºýRpHÇ5+s, ‘¬ÑÙ!‰øÜqØœàúýSR4ؤŠÍgg”òì\¹'9<à€À+¢Ÿ±²rØ´ö‰'·è£ïö£¿oZ>êæuÔ2•>£„ê¸L´w (®ià0î?V+rdEÏÄ=ø¬çZCæéÍ0@ NqƒƒÁýäþª¨´Y¼ËeçÒ¬+9ÓåÖŒV€”RšJ¤4´P ¢Š*‚ÖÒÑ\À”‡µ-!í@TjÿPÕmòI“й– ÌÊRäðÇ®sŽpn ž­õ UëO/NÅsloEÄjÄ|Úy”»ŽÒ" y³Ï!HéI¥5pqˆIóƒçê‘áÛΠp ’w.#_ÂeXqÁ‚=­t¹tÈïV8µ››— Uc‘ƒ œŒgnIøOs𥯭qwñ\ʼn”Û<Ï~Ë Äù§pà§Öà¶àF@5£´þPùÊ.¾‹1nŒ~`b=H±û>ÞüdúkZÆc¡iEWˆÐSbú§úÍþ&M‹êŸë7øšÔQEQEEPÝ[^¶Ð5­oUÔ^V¶´·L"[Ÿ ‚@É'¶EGúz;MZkëÓåÝýÕµ©^!Êã°©ß쩽_¤é÷úŒKu£½âIÌÇæòH® (‚r?W<þ†Ó®õÙ§¹Ó$’Õ&“Ëìäe âIîÁ ãžÃ»—¤êÓ]Þy7S]Í©+¸´¡Ð°^çŽ9ªûž˜ÑÖ{DÐ$ú?æãη²3âbÉ€àgq ñd dU•Æ‘a©ká®´·’Ý.$eßk ø‚[9Æ2[ ‹pš¾«/{Þ|ôäUR¦WKHñÕw¿n¥~¯®¬} ak £Sži$HÞbicG$z¿§ŠïÖE¥Cw..¼Ó§†Žé#˜ÝömÙø‡ÝQ¬ô[d°»º›Gvºò¶éò‚Œ$Œí•Ü#lŒ!X9º[]ÚQþËßžî¦ÆŠ(®ÇÒ (¢€(¢Š•ßói>êÇõªƒ{nß9{vÕY È'ñ‚}«awüÚOº±}l“6«h&1˪De¬¬¼®Üd.¼9É#I\^ÅÏM3üÉÑ‘£]§9#€;F=jôvâ²}<-Hà°òÔ'q,€®ãŸÊ'Ï'X+ ;=*·Z€°µ¹ŽÚ)d·˜mfdSÁÛˆÜûp1ǨÅYúýµÂò!5¬±ÒBÈp®2 ôÎAû=(·Q«ÂÙ@ÄWÜDZÁÇ<×=:Sq§Ä쌄‚Œ²r9>Þ§>ø9¦hŽÍ¦Â³4j±nàðªú  äÔ±ÜEÔ¶®V3Ñü8 »$àþ3e\œsŒgÜËGIc%ÔÑÉr_|»#T¸S·sQËN?@‘E}$«jÓ¨28^X¯œ{Üýùª×»–=fO&ÒwÜQ<É&)h;C7$wøW¹ÆA&¤ê°ÜËatÖê0 „<ªÅ€Ê’vÈÆß^âŒ#®¡'ÍÚ †%T6à‘·Ø»“Æxä‘]-§‰Ô´ ’ÄÇzÈ ç¿ïÏ¿z¨iÖ·#Ïn—RÛüq<¨ƒŒ|'ŒŒœŠy¨ÜYé±Ý¥œ¯å·—$%X± 0£“ØqõŽpF+Q‹“²19(-¦[)쪿yÉ£ËÉøÙš£ÙÞMr‘:ØÏ°Ë´¿Þ;`üYûÀ©ª4Ö¥ŒÔÕÐÕUSð¨·V€\Ûüô¤í$-rŒº†›p'Mo8ÆVFƒK`[ýLç#vHõÁ}`kF±u+ÄIÔ4¸Ø¯²sƒžçð¾Þž„÷8çmm$VÈ¡¬ÜÈ ic°±!…Áõ=g#Ò’ •*Hì{Šõbe²ÓV^&QÆÉo6³A+î;LQÀ_@AfÉïÏuw¢Šñ7sAM‹êŸë7øšu6/ª¬ßâjÔQEQETúŽ£wn“´›‡Œ±&Ð̓Ø ~³WCÔö×jd°K|«È$[{åJ]Høù;n¢ Äu¦§{*1𛲹P©Üã Çíæ°}Yâ·¤ÞË ¸Ž@’8?ê®ûTù I™Æko{­jÆíBá—vv‚p $ã’ý>ÕaÒ2K6޲\ |Òçp’é.íŒ:qŒcÿ<ÔýI é÷($1–‰€q'–WƒÎì¿~8¯öV/ú—Éþ£µ|e–Q¤•¾¸»U¤†Ô&6—d`ýûm'÷û׌u_Œ}g¦ëڥŜ‘ÛÝËiä&v«0“ö^ùÒI2hè.$™ä;w ¯éؠ†`ÎsÛ ÷õÀ—© 1•ææó²E^6·|÷¸ý>•÷} ü>S–'ï”­kån{ZŸ+]%Mì[¯ä|ÏÝpêÅ®l£ÇbmÓŸ·ÿZöKž¬ÕãV1˜å`@ AïöþºÐtHº6µÑ¼b]v››ÈîOÕU“Œ}üžõ;¨£‘´æxšuxòãʸçá#çõàúWÚÄzG ;lÐJÞ+ä|lG¢ñu­±ˆqüêF:Ï«u™¡G™c·sÞ6 Ä~q^YÔ5unŸ=¼W–dÇ1]¿3/ðå€åAÇnõï]’%•Ò¼×S ºo*K‹Å¹f\/f_ª3‘´äŒB*/VÇ+\æÚæñeù³~ E ?UðB°ÆNOÅé·#•¯\M9Ûfš_^G:~‡ÆBûX©?Áþ¦x^™ãWXÜ^$¼²å²¤Yr;†äzû×ÓUšéç»—YYe[Ø£8}E&]åcÿݨÀ?[â^'ÔV–¼Ó’–ŠÇÒÁa*áö»J®w¶»º°¢Š+¼(¢Š•ßói>êÇõÌ>dÖó*+Io7T žq•l¥Ç8$ ÈØ]ÿ6“î¬ÏU(f`Ñ´«µóã.=TdÏnã½j.Í25tWèr¥½ø±]D‰’]ñÄÎäR3†ÜÒ8sÎe¸Ækpìçý1u5½ºIsµVÕšÐí¹Ú?ƒyiö|*ÝÆ3[.sx$2Fp…pIGäö$ ý¸ãž çÚù3V{É­*ŒäöÀ晲`Åü)êá@u)ìåP…}¹5 lü¶Fpg%AÃ䌒}{ÉÁÇá¢ÒÆÓW[ÈlaŽâé M2AøGÁw0\àd÷ Òj\¥Ó*æOÀnf’1–<·e$ú9®šävŸ!]»â"XÉ v°õFÁ„hQÚ£´1,ÛÕ]™Ê„÷F@Ç ‘Æ~âõ]Ø,¨@áUÁ ŽëpO§|}â‹øÞâÂDX¢yJá<ÁÊä•8ÃÎÓŒg•ËH’C‘ÊâGVÜ]rƒs—fQœðqö Pƒt<¶›2 !å•ÚÛŽc#êäÙ8¨“Ø ½6óL¹Q:LþÚl°9Ë »%p=q“žqÛL¶–ÛV¼ü >TФKÚL … KçëÇ0y#´ÑlÕ¢¸?Uð¼('[ªN2Aî?~j“‹º$¢¤¬ÄéÆFÒaت¿HUÀÉøŽ0«žýñûóV>¿º¨4»˜mz‚çI†ÎÞ>L*HK6ì¸ÊàßÕ†y b¯ëuU¥ærõ±³Ã.A@ÿü¨ôûq\ÎÆ?­­‚,*Š»¡ÛØÛü?}véÙ÷À5gÔö¦çMI%7 {޳3>$ Mi\)iŠr§U)M%QEQXHÝ©h=O«}CY^£½Ôm–ÜYÂfmÃH†þ(T©‘ò£);}ÈŽØçU«}CU÷÷« ¾ë„fF;£ŽSw ãdvÈôçµt¥}¬‘B—z…»Ý@–´ÏHƒêø›Ëe¼ UÕŸœ‚ARôÞ§Öâ¼)ihÑyÃ}+ÈúÙ #Œ2sŽÎk½œš›ÀeݨLʨ­qv!RC18)•ä ã H< ¡õOš„2–Ìep5 €ø”©\ãêã pI#séœý·ù÷.íu +©šk¨e‘fT`H±©5Q¦iRÄCÜÜ]nŽRÑ}$”’~-ØÏ|c‘…m[×–j)û&‚›Õ?Öoñ4êl_TÿY¿ÄÖê(¢€(¢Šª>¦žÂË~-6»+ϰyþ0ÈW>Î@Æ{œcêÕåTkÍt/-ï E\ÊÐ\GP Œ7$`“•ämûjÇR¢·§µ};PÖ%µ¶}1¥ŽO5Ä6Ò+î!ÆâX’07sœÊ^k×PXè—×·[L[¼’î¤B’rª 7€}ª—@’ò]TùñjÆX¹iuå@ûqå^p2ÇbŸ°]ënñè÷’F¬Î;(Y„Dãžï=ªMßC¨é¿:‚kycg!L²(ƒ É `gŒûÕ6ðDÖs,щ"1°t1— ¸äm[îõ¨º RC¦Æ“5É“» ‰„®¤€pXw©W§sŽ#c̆1Ûò‡Õûý(ˆWt­Â]ébéÙ„„1h-^~î¯Î}>à¥MÔ%HD%š%-&Õ2yÚ{}¿ãÛÖ¸èK"Ø)™¦2œy‚IÄ»X(ÈÈöçR/+o›õù1°øO|÷ô>”`¬èûË[Í1ÚÕíIJ0·µxH‚ÎqŽjV»okɳ¬O¿Û€øXpÕ<ýnxÈÇ5Ã¥D¿2˜ËóÞ'uSur“Pp$F8î=yï#]ó…‰0¤ìA$ùS,D §ññUäÂÌÒ¦ÄÚÝ (-á"äùë ‹ZþªŸ‰Xd¶Ò¿¯è®Oq µÔ&â+I–HÝcI,%™ÉÄ€ÈqÆÜdö$ ëÑòO&Ÿ9¸!ÖåÔ îÒá°1‰8Õ<ŽkTÉ,W=»Ý³ùRHoc…@ØÄ1ß‘Œúwô¨QzvêÚ{üÂl35¤S*Éáv]‰‚¾º€G•ʃWõGÓâá®RY¡Ôcͤy^$¨ªä¤üCâì~#žE^P0¢Š(@¢Š(Wͤû«?®ÿ=O½¿Æ´ͤû«?®ÿ=O½¿Æ€¥¶Qo«_Ù‡–3wn·1•|Iˆ·&Öiˆ“»±à 5_h×]¤DMÊ•l eÈÀ9e߃õxgÎ =‡š±Kg°¾sµq¼ râ3œñõš3Ø“ŒÉ©‰aXÄŒKªy¿‰ƒÀ!ýÏ ¬cê}ÕóFšV¹¦ûýi=F}OØ%Y¢YSvÒ27)Sú?îªd‡¬.tùŸã&!æ€np;grŒwîÀ{ÓíeŠúÅ$ ‰*v°aìGƒÎG þêªÐDùÕ”ž`ù¼ÄGæI½Šv&Wcœ“·‚™q+JpÖÌ¢e˜Å+£2€!ˆ `ÇbpA’ r³ŽK[§€[vcµq·Ž0p0îiW˶ÕÙ{¾p‘÷*½ØŽØ8¨äšf¡nEô7Ñ$BHÑÃ1@w8ÎÜúÇÓ8852ñ_ZNÚÄeˆÝÀ®<Œ àñê¨ G¶–Z&Ú¦WÂe¾\®yØäÍvÖ‘äÓŸË2oB$]®Êx9üR õøxÏlŽáÖó-þ–’Å"“4Y[ 7¨ø[Ðä7¦3ëVà,0}-c<Ѽ³ÌqÊòíB’~ Œ±ö^ÀäŽZ{âª,dÎçB¿7Û0•–VC…݇c±¶Ãsg'““ÈÛVõd«6ó£îûè¤=ÏÙY4s¹Mñð›ˆ9ãìÍyú¡±ÖeƒB¿Â±äVîþòÊÙnî"@F –份bu™a¼Õ…Å®â6€Ä®2}Çþ}* j­_|@ý•ØT(Ÿ!sSMh¤4Q@%Q@YÑE€ÔP{P¿Ô5U}z¿4´Òþ¿¹ycvÇjòB™Þ0̬1Û¶}½H«][ꬿ†vÒQÑchŒxÄ‘ÄÀ0f!ŽöÝžæ·íJ×°9h6ó_ùÓEiq§4;b‰.`š Æß3kpTqì~Ìhôë(ìãL“ç2üx‘Ê–<±‰Ç<ÖbÖm&O$\é6wÒÌ×%­AŒ³nÏ;JœŒçpõÎ;¦©¤›Ûy Ñ¬¼ãšó«`ëÜ0ç$ml‘ÇÂy8¯Lá9eËæeXÖQQí/ìoÒÒöÚá£8qªÅOÛƒÅH¯#MdÍ6/ª¬ßâiÔØ¾©þ³‰¨QEEPg:¹Âêry:<’0”Æo ypvmÆy_MTk/p·PIm5æÐJH–ò@9儃Óì9Î8#8³CÔ`¼ÖäSJn<Àb‚A#)G·2[ŽãÓ#ÔUîºí‹xè!.°±Q4m"Ž7*òÃ욪Òí&·Ô^Ynõ&CvX ¯UÓo–ÃêþFHã¾p{ µÕÜ>—tÈþcDÁD2ªHN8 ÄàbqMÀ‹Ò3E>Œ³C”i$ŽàZFË'?Œ'žNNxªÆöDŠÎyd`¨‘³1(X$Éûª&‡³°Xd¼’rMqæ3p?ýsRo$Snþ[îu‚£€XŽväž3ÛôÑAéK¡w¥‰³É+¹m£dUøˆN1ÎàT­aÂZ|"#3°ù‘3®òp¼ãÉöÍqÐWæúj î.GÌŒ·S¬Ž„òWpà€Iõ v]µ’,@<„¬ªHŠ,þžF@îG®={P uis¢)¶M=6f04Q=ØòAÿ œf§k³Av«41Je¹XãDÎyøTãŒÇr} >”…ì­§ŽæëP”³†úé%nFHOÑRuÄ7É¡žìy7‘ÈâÖurò|‘¹9É^ç^ áÒº…½ÒÜ[Å6œòG²P¶jBùNŽ@å¶78Æ2{ž}Ct±êÖÖï&”¢HØbê6g;²¸\ w+ÆrÃ#Žô½9¶·—_8ºÔ$UMÕÜrÇ• À> Ý·ߌz×{Ø]i&Žþöü Ê< U³Ê¶y9Æ@ì1šÊa•Ý?scôÜkmôB$¶CfðÌJü;rx*<©Þà*úV¢³újÝE¨Û—›T1¶;KqÆØi0X}mÜ©Êû ôjÐV™XQEQEÊïù´Ÿugõßç©÷·øÖ‚ïù´Ÿugõßç©÷·øÐ¸´ùö=¦òžtf0A#–TƒÜƒÁ»Ô 2v¾6º‚Á•sYš øLIæ‡òÀ^2ó+ŒÆH5w§ ÐíÉȪY•–kÔ˜$ÒØÏó¨âY)ì¨ü,¹’¦q…f¥­+šO+Ú ÂKh`ùë^Ë–]£²r€¨ vŸ‡$`nç“cëTº|ío¨<3K:,¤4i)Îâ@ÎÐÌ_'9 8Öèö#Ò©–!ýãš$o«ÆKm‚TÃ7¼”@Ì 8’EVwV#?q4z çM4“a ”*lp8оƒØn+ŽŽDpIf]ÚHä¿ À±!ŽóÛŽ;U-–³ibg}í"UKFãðƒ’6ŽíÂŽÇ9ç>±¨ÏpÒÚÄ-÷¼üG>ügŸjXÖ¹‚öHÙ ´™|L0 Êö`Àã‰Öì-­‘gºIfQ†Ù#ƒúšÏ½¥õéêâiyΉî•*ßGE䊣yÚ㩦|­•–9á¥>Ÿpþ5 kbôŸ2åÑ ÎÈþ>Î;þš·†Â4üQRRQØU°3ÐhäÎ ?mXÁ¦F˜øjÏh^–¨9ÅŒ`qO4´P)i € %:›@YÑE€ÔP{P:¨Êm•Ξ4øà»h˜®r®¹ÆIÿ‘©—°ïSU2éäžÔ¸›§¢wxá²F‘ƒ¹X@,Ã'ŽüÔ)Lšìð1äŽ1œzzn?¬ûÕqÓµGjÖÔ¸‹V“h6Žïh––í!%Ú(B–'ÔàsR>•Óÿ¥'ê5Kôqö éÇÚ£mæÁuô®Ÿý)?Q®LÚFJ€î2Nå+ƒÏÚAª¯£µGj€µúv×órþ´ÿ5'Ó¶Ÿ›—õ§ùª¯èãíIôqö -~´üÜ¿­?ÍGÓ¶Ÿ›—õ§ùª«èãíGÑÇÚ¨-~´üÜ¿­?ÍQ.¯4{¤d¸´’Ef AuîAúÞüÔC§·µG·µ×OmO‰â³°’wÞÀH98<¿²ú+¥ÕÆ‹rOg$$.]x`rÖ¨ßG·µG·µý,tî™oó{ =à‹òAÜú¿Úk­ìúì^UÝ‹L›ƒívS† ýnàóQ~oj>oj¾žÝ?§Û›{;æñ.V6P ’OÅÉ4ûÛô º³’@’¬ª €aÁÈÚ.™¶š)àÓ K •G2Xã;ùw8ÿˆÕ¯ÓÖ›—õ§ùªŸèóíû¨ú<û~êãéû?È—õ§ù¨ú~Ïò%ýiþj¦ú8ûQôqö .PY’’÷§ù«”}Q¥É?ŒæOÉÊgÿUɦ’„Vnîͬµx.q…7qèx?º€ÞͬÛI In2Y0?úª·Uš+‹µh\8¹};èæö®Ølâ 'iƒà_®Çå붬ßpÉm*3e3Ä‘åY¶äígk@íš¶R·ÈÊŠ£–c€*›«/ìî,•-gIn¡•&‡í¬ÃÓ©Ç$1f³- Eæ&’ñÇ–Ä[Î|·*Ë—“Ï ݃c=ÏÓúßXˆïî–ðÏi ÇÁQ•É#s–9cݳ·ØÔ©¡<~\—˜É$®â$ääzòkFr5wz•…¨>}ÌjÙÆÐrPæ©5=~«y­`³yRXÊ1.9ÎÒo¸× }XU„liøµl ˜ï5©`H~rÊÆåPýäQ’ò6ùK3’Xæ´ n‹è+¨U”-Š‹}*5ÆV§Åg~(©TU4^—vê(A´QEP’–ÐQ@% §Ri(´QXEPTo–¾Ôú(~RûRyKí]i ÏÊ_j<¥ö®”PŒKíIå/µv¦Ðü¥ö Ä¾ÕÒŠ—”¾ÔyKí]zJžRûS|¥ö®´Ô/)}¨ò—ÚºQ@s1/µ'”¾ÕÖŠ åå/µRûWC@ 9ùKíG”¾ÕÐÒU<¥ö¦˜—ÚºÑ@rò—Ú)}«¥ sò—Ú)}«¥!ÏÊ_j ê[ ñ Z:áw ʘj–ß_†+¢ù¬ÒNˆ²@RGÏïí\%Ôõk’D+º‘…rYÿ•YG¦Â8.+XÔp, êé·$¹–I[ݘ“Síô„\ejécUôﺀ…Œiø¢¤$(¾•Ö›TzPh¢€J(=è¡BŠ( aEP‚Ju6ªEP EФ¥¢€m:Òf€ÿÙawstats-7.4/docs/images/awstats_logo5.gif0000640000175000017500000001035212410217071016335 0ustar skskGIF89aî6÷þþþÿÿÿƽÆûûûÆRµñññøøøÆµÆ½!µçç瑎ªcc¥mp²s{Μ Ê½9µÆs½ÙÙÙãããws{JZ”Zc¥·§”œ”½”ŽÁ½¥­ÉÉÉÖÖÖôôôeeJZ„¦”ƒ·Öµ”έœ­œ½íííÆ”½Æ­ÆÅÅÅêêêkk„NNwŒ””œœ¥ÖµŒÆ­¥¿¿¿NRŒœŒ”Æ¥„†ØÆk½½1µRZ„RZ”µœ{έŒÎ­­½µÝÝݽJµÏÏÏýýý½)µJR{sk„ÎcsÎwÒÈ©ŽÆŒ½Æc½àààRR{Ž}uZg±­œµµ¥­½¥¥Þ½”²²²¼¼¼ÌÌÌÆ¥ÆÞ½œçÆœœ”ή®®ÓÓÓÆ{½ZZ„s{½ksΨ¨¨Âœ„g­”{Þ½­ïÎ¥µµµ­­µ~hT­”s½œ„µ¥µÿÞ½šššwwŠogk½¥„Æ­­÷Ö­ÖÎÆµµÎÆœÆscRscJˆvhÿçÆÿïΓ““Æ„½ÖÎÖÿÿÞk{Ή‰‰­Œs½œ{½½Ö÷÷÷ÆZ½ÆÆÖÖÞƒœœ­¥ŒkïÆ¥ÞÖÖïï眭痗—Œ†††µµç«««„{„RZ{ZRccZcïçÖ¸¸¸{{{RZŒœŒsÎÆÎµµÞçï÷¤¤¤sssµ¥ÎcsÆcZkck΄„ŒZcœZkΊ{RZ¥¥µ½cZZbs„JZ{¥”sÖµœs„ÎZsÎRkÎkZZ¥Œs½¥œ^k½­­­ZZŒZc­Zkµ¡¡¡ZZs,î6þH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹# Èȱ£Ç CŠDh‚€ (Gª\ɲ¥K‰  !A /sêÜ©³ŒI ˜0àRªÁ)šxB øÁ5Ä þ@„ $¢D(ƒª"¸‹ù¨=¨“ÇD‡1ã!d|ÿˆ Ö¬WÉp®Iw!áõN•¨@N„8ö "CêE„¸j_œ¤B‚í<€þÊ[H`Æ¡Ôe‚®ãW þµ³3Y¡jÄÁD@¢DøÃ‰0„]a y'0Á€zЮEP6¬çæ2½É=Î@mß âøÆsq®jsÉã?æhÎÐ!~LãC*fƪ¥b|ý¢„˜åÏHô–0×8Ñ cÈÃ!6€$¢Š $B"öE/æ©‚¬ª¹ ‰#é•.! ÌVÆ —GôNG»*(/ãDK¯ÓŽ ì^ #Z¤ˆJÔdåjRµ6N‰œß"‰ü¥.ÙDÛ¾þ'ˆÙy Ȥôà‡G<”(BˆP©íÊ£¥B ƃ­{vðûä¥?G*oqr êcÿù7\.TGS ¥=1•sYբô¨ön"ÖÚ¤¬å3z(Rš@d™ -„ÔUQ—À&2ñ‹pb °k› , ­1¬AwšE!öŠ+á±Cx,gbU?¸ËžÁ¹R¢UÈ5õGO=èynÙ5¦ŽV© âÜxŠw“µ^Cžþ¶¼hÕevõ…nílëÂB¾¨YkZÕ REŽ´ œÈßéNªÜNÜ ž`[7/9†Oä”E(¬¨Ó.ì”§MØGYéJÂòq]“B% êEŒ"”u<Áãd9P„òv|à JÖêY2ˆbe^m³Š^ˆþ£þ0|ëÌ=ž+æ…æ¤YQ\“¹6Ø‚†ÉæÜTLò_|éIq…"@‚”P`vZŠÇb bUUšUKF¤¡ãa¯·H Ú]1ø «/gd%Ö"¡¤¿ÿýi“8Š™¹Ð’HVð“ãÌbZ¤bèHÃ63˜B¹ˆÚJ :°tx ”Ôþa¡…?ü¡3ˆswûXvŠ¢x½b«¬6 H!/Èâ­Ü@{ôc^Ò½â9†Ü%Öð…öÀ²ð’kbQù’©‘ö"çÝ&W¢‹"$0A J@áàÁ¦¸f†S I´¡©snŽ•†4ˆ¥vPPƒw»ðæ"üî»§PÅ)º°2H°tÂåó1Q›ZÑzkÐè…¼PåUì]:’#ÿ¡&YF¦¬ÜÎ¥¹­¦óPz|“õª²‚e-/² K°Ã˜»…6 âÞ)(ó žƒœ‰e€VÐõ®yíÝÇ[¥øC!Œí­‘€ûXýT—ê&ÌZÈtÙ–åKK^M|ÈjÁ¯þ™ àË˵`••yêQ—:«À„iƒKlA÷F…$¶p‰+"g¶Îª@-8 ¼àt.Å)«p†7ŽPºçhøpˆ·WÐÿ@¡Ýtñ¬·´–m2ÊØ{_ˆc•8wl0S›úñ_„VHÔçN÷ºÛýîxÏ»Þ÷Îw»·¢Sÿ RGE*­›VNæx›bEK —z™bŸ¸ÚŽö7“Àf»hñ,k£ŒãÑ~¥@úNúÒ›þô¨gźZ†Qe ó³•8ç2ËÇñ½pÿÜ© DUo^N ŧg5ovΠIJsÁÑ“¹\=¿ïùhЃ¨É\ÑÏ„+~þáîwÿmhÃ+<‹îS`žðD,†7ä@mžEœ@‹úÓ™µÈ-¸‡ÂW|Pz7ê–FüDTþTPã3[ù´€+£*S9’qdóE{”CÌf.ÿ”-x95`ƒÖpjy—Lauàz6°¶ð §ƒ([Ð4È\ûb,„ Yd&‘Eg§ B¨E‹u€ÀTw¢i%€×cCZµZ؇yg‡–yŠV…®w8VuPÙ2nf|P¥&˜÷{ªÅyÝÓV¾evïv®5`%˜|†`YØ&&Ð`¿PM5—a–:±v€u h f,ðXþ—ò]ßEB(„ð@0‡âQ ¢@Ŧ„–æV‚÷Òg_²²`aˆXøY µvUyeÕ‰âöU'Ä_Åc^xZã#UbUT¦bC®ÕVз‹˜A5@ÝÖ#Tð£¶'Ňdƒaf¦/Œ°Dià ¹P ¥0+¶SßÕˆª J‹•dÿGcÒ×zIˆ‰‹ÔÃOœÆ+ûõU“%µvŸE…ÃW Õy=Q:O¬ˆ^U†{Šåæ# ÈOMQßÈ Ì§{“––s¸U%`•` JˆË•?uE6»ƒþ¹@„Øøˆ{À²²dx”h…}*a3v#"èþyŒƒ–uÝÆy×6×ZLV‚­D(È·Uðä.Ø…B)—µ„-ÔBM–|J©Ojµ_R9•(!¾Hºqßh ÊhM§“? Äb Ð -F»† pNýÇZTù†M6G{ÖZ‚T1xPñ’åµQïÒ†È'rõL~‡s12¹Cº˜|+؉ŒSV°Ò”—Ç+Q1sÈ;€å2 jvÕ‡¨C67ÐP¼Ð hù‘§Ðbm)„]—ÿu\Í·dDxA—ÀÕyº¨‰Ç³—NCH6k‡5+È'L ÙKÞÈF‘±œÅÉdÏ霢W$@@þAÉã5ãÑÊžÈhfÏ•š¼À­©–lɈõˆ '1×ÙyûU¹hcLJ'h[¤Ÿ3ô†L¹”ÆC—ê¶{KÙU{F…§nõŸ-ŸQ1€8«uO:²}˜‘‰¡ÎUžçÙ L–JÇ–]0´©h.!\y9\•ã=nÈ¢-ÊVx‚Tõ‰.£ۃ=3zH§‚›ë†&0a7¹xsa¡á–áÙa湚ú‘J7´)i9±rçㆠ±rSÉR醒ƒ‹ó\Yªž'”¦"™ Pšš‘ºo¨¡š¼ ¤iI¢ØTš5tºÒÉ„7MPfâY¤äYžlºš½ðˆÜqj¢uz¨;¡—ï\AYRi¦Õ´¡¨‘ À pN£‰‰¨œ ¦0ÚŸ/)M`f"1‹pNÛ^sÚ©°Ê(±YzùfPRÙ!ð¡AЫ — fnR«Äê©'£^¢` п€ òfx0 ¨ð«üW’þçÃZ¬Ú*=Ôàh‰{Pâ:®âº—h‹Î´­êJŠú£’„d¯òš„Yø—ëz¯TA‚*Ùm7¹„V†¯Ë¹(m%ÈGŸ°«5ª¯•­ û° 1—] ±Û;awstats-7.4/docs/images/awstats_logo1.gif0000640000175000017500000000467212410217071016341 0ustar skskGIF89ap6çÿ  $$WQ R R T!# ($ !%!*$( %-'+ (0*2-4*..? /6.0 .;.6 18/33;36 7C 6G6=89EAG!>AABÉÇ DODKCOFQ CJÖÍEFÑÌJO)E>%FBHNßÚGS-F9KK$JKKQíã"LH(JQ&J](NO#OURW!QQQ\-OK1OF'RX)SO,RS%SdXb!W\'VV,T`/UV,W^*YZ ^h8YV-\\(]bap1\c3]X7\^0__,agB_W!fu5dd0ej/ep9dkFd[3hm@fb6kp@jeCijny-t}=qvBqqJpfToaTnlRpgKqr:u@tzIsnQso;y}Cw|6{„?yƒVulHxƒJyyXvsG{Sy{[zqS}xN~~K„`|mG‹T†\~{`vOƒˆZ‚TƒƒG‡—c‚…b…TˆO‰“Yˆˆi…w`†ˆg†|]‰XŒ‘r‹w[•`oŽ…h}Œtƒ‹ul—f’˜n‘‡qŠll“•‹Žmp“^—¢‰sj•œˆzh˜˜p—™fš k››oš¡sš›nš­kŸ¤›’jŸªsž¥wŸ | œr£¯{¢°y¤«m§²Œ¡”}¤¥i¨¹ƒ£Ÿ{§®Œ¥yª¶s¬·«²l±Ç«¨~¯»y³Å‰±²‚³¿±¹ˆ´»•µ¸„¹ËŒ¸¿ˆ¹ÅˆºÓ—»½ˆ¾Ð¾Ë—¿Ç’ÃТÂÅÆØ¢ÆÎ˜ÉÖ­ÅÊ›ÌÙ«ËδÊÌ¥ÍÜ©ÍÖªÒá®ÓÛ¹ÑÖÂÒØ¯Øç´Ùâ¾×ܽÙäÂÚßÉÚà½ÝçÇàåÑáèÉåðÕããÕæìÛèéÿÿÿ!þCreated with GIMP!ù ÿ,p6þÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ#BCŠŒ`ÀÈ“(  ¥K”+W¾œÙ1¦Lš8/ÚŒ™³á±^¿Š!Æ+Ö)Hkb¥ÜàfÏ„Ãm·-»tåÀ]»ö+’¢™D 8}ZpX§kåÜ›Wož¼yîØe­-—”9|Œ%+Û0pìä N7/Ÿ¾ÃúêÙ“w®š´S]þŒÌ‘ãß^²Ê~-;w.°`yõôñË—¿yÝÂ;6¦Gš”àKPY'FmŽ}úÍàwðÏ3GÙ3hÏzE¢3DLÇØ²i ÄÆˆÎÙkkÚ4{×Û\¤p¨ßþ}êõ)Ð'\‘.¡‘iceé#á9Ö&©HôÂ5;Õ,\*H­´ÒQ…Œá¤\2C CïÁGÐ'ÛSÌ!¤ÐAÎ=§\ÓÉ1Ý€ÃK'ŸÐáFcÀ1BôÐ À`P7DÈá(#øB #‘¬ÑŒ:yDCÍ;ÍyL&qœ!=áBÄÑEŒ0Ѓ:ÔeF”}ÙÐ$„ìÓ mĈ8¼ÒŽ9öÔs $yÐE.P!D ÏÌF7Ï(1=ø˜[Š¢ á]àÖ‰6¡‚"Ùôã?ùðÒ)Q” „‘´Í5ÂPCJ4rèŒþ 1jQ„²¤ 5ùTÁCpŒQÈŠk,ÑÎ(UÆO=zÌ`Â@Ž…g ƒELà`BµRdc¶)CŠþ¨ÃÈ&(qF!+p0A',ÐAýpD†p(rŒ±† %<ñÎ9yÌB zˆ£Ï=ëè0U´PÁ2È Æ¼  T0B%zÒ—32„ 5È€Dt,áB#pÁ?¹´qE0Œ€Â PA< Á Ô ”œòþsØrkˆ &° Ã0\ACã *ƒì¸‡SPwÝ H†L³½b¬{çˆ(·€”aB #´ðA6ØðA%¢ø¡Ê0˜`Âá!O΀md`ÂqGà;çS3ÚùA†Ì0 IqF™ “‹|ð.°ðÁDÀ@Èrcñö PPAP@Öð&;tÈ J0 âàô| ²Ôw0>æ ô ¨å¶— œBµâ…¦MÐA BCBôø Q€a%À›vÐ?*u€i`[$`¬à€jˆ;äP-” ƒTèR=?ƒlB*‚|`þ(èÀØ& °‚…„‚>‚BCX‚R ¸à•ðƒ#ôñŽu8©(ˆ¹\ = Pà`@<‘„ ,ñFc2C F D„ ‘€„#˜ÑŽid@ÂÖ0 R ƒNËѼ‘‰µêBJ‚`aÜHÅ'BÁ WhÃÙàD+FÑ08‹ÌÓÊ"—™LC´Ðƒ%è ʈÆ' g(}G6¢p…H˜a½{‹z‡ fàÙ ^bŠ@‘ UèÄBÁ W !ß@E6ôЮ5! y(b Zq†<ÍFÐÈNx›†‚ 2þ`ÂÒ4`â F0+ú°‰EüÀOHÂ(‘+øÂ4‚D€#lDó¤'AÀÑŽ"ÀiH€Ž–ô¤%5H9 Ò–~ô£ ˆiGgZRÌ”¦=@lJÒ’vT¥*}©JIJÔU¤8@Fm‘4ļ°Ä¨ƒ T€ ÃÁì`‡9`A| €–V4@ ®&•%CRŒR€bY€ Tp‚&8Á pˆ^Âw8 MZâÈ<ñR+[Àb²¨…%Àà'à\UÊ9 OH…`5ê’lÍ¢·¸Å+ñ IØ MàÂÀ`ºI`iˆ]Mž‚>EƒÎH,^¡ DØ! O(,¡†&p,øÂ#/B5ƒc½p†*V *d~Å#B¬¡ ÎYî¬&¦LÆ"qØ H"žè„2Ä &‚4‘ ±ÈC 2ñ‰Sô‚¾žS€%T™ûx&a:ðO¦à;øÁŽðE;awstats-7.4/docs/images/awstats_ban_960x540.jpg0000640000175000017500000017270212410217071017112 0ustar skskÿØÿàJFIFYYÿÛC  !"$"$ÿÛCÿÀÀ"ÿÄ ÿÄa   !1AQa"q‘2RT#3BS’“¡±ÑÒ4UbrÁ $5Ws‚”¢²Ó7Cu–£³´áð%8•Â'DEVcetƒ„ñ†ÿÄÿÄ@!1AQa¡Ñ"q‘Á2R±áðBS#3b¢ñ%‚Ò$r’ÂâÿÚ ?û!Ääî£'ÅóŠ„“â£S¼Q §x¦§x¨D©Þ)©Þ*êwŠjwŠ„A:⚉PŠs¼Jjw‰EJH¯Qñ* âT(âSS¼J¥U©Þ%5;ĪQUjw‰Q©Þ%B"ÝôŠkwÒ* ('[¾‘MnúEB*©Öï¤S[¾‘Pˆ'[¾‘MnúEB"'[¾‘MnúEB núE5»é€^ÿ¤S[þ‘PT «[þ‘MoúERˆ*Öÿ¤S[þ‘T¢ µ¿éÖÿ¤U(¨žcþ‘Ncþ‘T•+æ?éæ?éB(+æ?éæ?éB ¨Èÿ¤S˜ÿ¤U*UsôŠsôФ¢ ¹úE9úERŠŠ¹úE9úERŠ«˜ÿ¤S˜ÿ¤U(ª*æ?éæ?éJ «™'Ò*9²}2¡AHsdúe9²}2¨EE|Ù>™NlŸLª|Ù>™QÍ—é•J‚‚¾tŸL§:O¦U‚¾lŸL§6O¦U‚¾lŸL§6O¦U‚¾lŸL¨çKôÊ¥AAXšO¦TódúeZR‚ç6O¦TeúeRˆ*çKôÊŽt¿Lª|é~™Nt¿Lª|é~™Nt¿Lª\é~™Nt¿Lª „9Òý2œé~™VÑ \çKôÊs¥úe[Ep.s¥úe9Òý2­¢˜9Òý2œé~™VÑÎt¿L§:_¦U´As/Órs¥ü£•´A_>_Ê99òþQÊ‚¡\@¹Ï—òŽN|¿”r¶‰sŸ/åœù(åm¾|ß”r æü£•²¡0/såü£“Ÿ/å­„L œù(äçËùG+h˜9òþQÉÏ—òŽVÑ0.såü£“Ÿ/å­¢`\çËùG'>_Ê9[DÀ¹Ï—òŽUÁ,Ž™ ¼J°®S~žô˜ÎùÅB—|â¡sDA¤¨@DDD@DE`(‚•R¥H@*J ¢ET)PTDD…QITAR¡""" ""‚¥ Q(‚""ˆˆŠ"" ˆˆ‚" "" QIP¨""" „RT """ (Rˆ)R¨AR( PAPªT”D@DDJ©AAˆ€ˆŠ‚" ""€ˆˆˆ€¡J`B"*ˆ€ ©PP•J‚QÊoóޭ«”߇g½IÎùÅB—|â¡sD@PT¡Aˆ€ˆˆŠ š:œ ”T‡´ô!T´ ¨U*\@êp¤Š‚‚©kšNÄZ QIT—Ôᢤ=§¡ ¥VDD$¨ˆEÚz¥@E€2JÀuêÐÙyNºQ >‡=¹øe°EhTBzHÓöªÚ枇*Š‘DPDDT*•(ˆ€ˆˆˆ‚ …R¥¨R¡Nä@DDQ$DDA*¥ B"*ˆ€ ©B‚RªPP@U*T„ ©D¢’¡rמ<°PT:’ ÍÆ­»©pàÓý'|ѾÝIò\íÇŽ8ši£eºÛAJ$P韂ߨWJmWVø‡šæ®Í¹ÄËÒ”/&¨®í_t.ŒõÃ(áÀø°•‡v…o{œëÄt ¨£Ñ–•¿W­Ëø…®q/eEäô=­×Q8GÄ|16†·Û©¶ÉÌÎß{vþ‘÷/AáŽ&±q-+ê,w8kÄn[$g$ lpnpq3…Îhªž0ô[Ô[»÷e·DE™vD@DDŠJ…AœvÛog=žI%-úúÙ.,ô 6§ÏÙaþ¹jù§´_–7\9”¼b¦³BrW[ЉÈñ ù>GZLÀûNép µPÉ]s®¦¡¤ˆfIê%lq°x—8€_~R<x†—…ø"š·ŒïÕ“ ‚º Ö~”ÎÒåÍOEð7qq¦q=þáv›9g¤L\Ög¹Œù­M}½ò9ìXp'.â*Lq-Ò!ËŠFûT4çpÌw=Ûw›¶dNGОi!5‚&Ôhˆ’ÀìnNägÅ\ ¥JЩ(ˆ€ˆˆˆ€®S~žõm\¦ü;=êHÎwÎ*Nê©\ÁR¡xÿÊûŽßÀ‰]'£©tK©Ú'1Ú^×H·‚7±‡GC¥~x7ŒøÞ6ÇS÷UĺÈcÍÂl7íu½Ïû |oëÞÔ©8F–mT|=O‰@;™@sýø`ŒyKœãÏå¦ù3põå´ÿá”Ršêœ ù5$~À ýh>¶ì7´y8Ç…-7©dõ08+}—ÎX^̓ãá~~üŒ8¸ÒÜn)Q.ÿÃi?Œ0Ù=ãIÇ“—Ýü5X*­ìvr@VÔ€ApWå§i×^6àÞÓ/ü=÷W«¹K%× NckÉÛ»½ºOÚ¿Sçß÷A8gÕ´A~ŠKéš9y´íˆ_ž#;÷¢ñ-ÚÃ#ðÚ˜U'ñ£:\™ý÷Ï Õ ‹lg9 $ ÉØd¯Ë^Ñ{DâÞ)í>ù]iâ;Ë)îY} k¤knˆšv³¤/Ñ.ß8îO±ž+¾¶N\°[edÏId¸Ï罫ó£äñdõçk6v=š¡¢y­—Ë–2ßöôµ$~€v]5m5²Ýg}Dµ ¢¦Ž,Ž.tš¨“¹'É\oÊå MÙxo ðô\8¦x„æï =—< ÜóÔ3m·;`;Ñ»:¤ ‰Ó¼c¿+óCˆ®•Ý v™Ut¬˜Š«íÓ:žr#æI†sAmo¼[Ú—jW)]t¿ñ Ž:,Ý 3ᆰ)±ÞÓ¤‹šÎ ¹9¾æçᜯ¸;%à«=–ßOg´Ò2 HaªGw½ç½ÇÇû°ÒZ) Œ4Dß‚`~[Ò]»MìÊã"ªâ.›ç6D‘2AýG{/a ê/“§ÊZ§‰«¡á¾.l0]œ1OSÓV:´Å~7Ûc¾1°?Jq§p×põM‹ˆ-ÖQT4‚×7ÚaÆÏaê×â7 òÿ´n¸vqÚ}ׇ…KÅUš»õÙsš|RyÒ×yeê­¢ã|ìp;-whœ_fà> ¸qeýó2Ý@Öº^LzÞâçµkG‰sš7ÀßrëÏ;âY/\=iºdWRE9hè×9 ‘ö…oåªìü™¸¤øš?üd(®±”}×´®Öît­†ÕÔ¶™f¦§>ÜòH&…¡ò?ú®w²Ý†w.À+èë%§SóGB¿;>GdŽÒnx?ýÏ'ýô+ïî‘¢ØÐ\2ˆé‘@ Œ…=‘°¾G5hÉ$਩AZy8§†£›’þ µ6_ k#øel ®¤ž6É ñÈÇn×1Àƒî(/¢€æž„(>Pí_å^"ãxG€(3¦àÊZË¥d~¼EûF§ùû= úFÑ|e}Qü»¹Ÿþ·ªOÿ¯¿ÿWèÇg­ÅǽAéH©cšá±%’8£t’½¬cF\çÐÍD°úm®£‘£ï‘;DÔî=ߥヱñ žÄÄñz'QDÆú]¿ChŠWS™O5½DcV3à¼ÏŽmõVÇG}áéŸMuÁÑÔRÍËq¯¼wv9Ýj8‚ùQMss¨îÔuÒ†­2dgñ¶þLíä¹:NÑ­õs:†þ$Œ´áµ1³ 0:}‹¦Ôlâ^I‰šóLaôbݵCÄU4ü5ŬŽß~p ‚q†ÃZ{€îd‡èô'¦2½~{ñÕÖÏÕ!²ÄÐ%hÆû"¾¢ù/v­÷y`}’ñ1w[#ïqÞª‚Oë€ï2ã`y®Q¾[G©ª¸Ù¯‹Ù‘q}'Ç}¡ðÇF[s­æVc-£§Ãæ>ñœ4y¸µtKæÓMt·NÙé*cFñÞqð#¡Ä.µiîÑn.ÕLÅ3ÂyKÑ^’ý»TÞª‰Šjá8Ý,ÄD\^q˾i¤dQ1¥Ï{ÜZRIè”qi·+íÍü9Ù• ¹ÖôšâæýâÓPÎÇúÇoåêÒé.êfv#tq™ÝïŸß¹íÑz>þ²©‹qº8Ìî¦#¬Ïüç”:¾Òx£„¸vÔO j¢ðLTN²É/¹‡lyœòÊ7…ÍgUÜ{/X¸R‰²Å ¾ zEQP^ñí8µ Ÿd8äã¦Ã|¯¥ø²Ú+Uw¯¸š©×þ ëuDùtq;úõ#¸Ÿ€?oýŸTöGÜ.ùOfeÔW]fiù1Æð#oôžé»÷`ú®ÝÓiè›vcn©Ý5Lnÿ¶>³¿¤CÛvþInmi£´ªc\ÆîýŠg‡þéßÒ!ówÈŸ±o_Ü¢í‰é3i¢—ÿeSÈݪ§iü)«FÞ.Ñ ý¾±m6ú+U²šÙm¥Š–Š–&Ã1·  À²—̈Ã⊠”TRªT©%Êoóޭ«”߇g½IÕRUGª‚¹ŠQ¢ …©ãõ p¥×ˆîNÓIm¤’ª]ðHcIÒ<Î0<È[eó÷BøßÔýœÛ¸.’m5WÚŽmHqM ÁðÕ!fFühnËLòæªÏ(‡s¹…Ù1Ÿ³Úo¹¡Ùäe|ÏýÐþõŸdöÎ$Š=SY.!¯v>l3ÿm±/£í³¶zV<ä.k¶Žû±ì£‰¸lGÌ–¶Ý+`n?çš5EþÛZ¨ø«äWzåÕßlä«"o»,yýq¯»xf~u¶3œì¿3¾M7siízØÇ;LuÍ’ŽOô›–ÏkèŸÜলÍSU(Ž xÝ$¯wFµ£$ý€(>'ù|ñG¯;o6X¤ÕOa¡Ž›äs_÷ן~ÆŸê¯sìàþõvî¬K*-nŠ­¸èùÚLŸ÷|ÈögOÚwo,««aw®¯O«‡|D^d{}Á€±~…ö{IÌ©tîè?:û6­©à~ح¿ï2PÜ]EX Ù ¸Å&}Ù'ì_¤œÖjˆÂOEð‡ËK…þæ~P§Å.šîÈîpíט1!ý+$+êß“ïç Øîî“Sê©Î9ë+}—ÿ´× Ðÿt?ˆý]Ù5«‡£“L·‹sÛŸ -ÔïöÝñŸ‘…„¹·Î"{7{ÙC ±áíÈ?\j¯î„q'­{[¶Øb“TVkc5·?6i‰{¿Ø/Yù1ðá´öqÃô®LÕ1úl»u2MϘi`ûDð…(§¶³lælœ#qìãµ{½†V¾GVf¡—N—jŠF÷tǸ‚;—ê¾1+;‚á;m샄»W³2’ý௧Ðî4øAžíös êÓö`îƒçþÄ>R),tôüU9³\t†Ë#ØM<ŽïppΜõð‰_Qp×p÷Ò ›=â‚á>}5CeoŤ¯„;Dù'v—ÓÉ%‰´¼MB2ZúgˆfúQ¼õòkœ¼rçgâÎ ¹4Ü-×› cùb’ÿè»lýˆ?[™,oË\½ÿ³ž¿]g»Ý¸>Á_rœ7›WSoŠY]¥¡­ËœÒvp_ž<òƒí_†$•ÄóÜéÛÖ ˜ô€ï{·ðp_Lö'ò¨´q]d^&¥e–ë) ‰ÚõSÎï¸î×à~ÂI ,Ü+lµ68¨ia¦†!¦8¢`c<¾ ùCöSÚ½–¿‹x¾óO3x]×Y¦kÍÍ’7•-N"ûØy=^ͱ·–èE²ålaѼäÿ-p?ú4qQó£ÿÆBŠü÷à.âN'»ÍAÂñ½õ‘Ó™¤ ¨XsAÜ‘Þæì¾±ù'ð‡h|ëû¸Ž˜ÊßFô}Um›:9º±‡|æûþÅã#¿ùI¹ÐòßB¾üàxcuµ¤°¢<¿åÛ÷§á*JZ("«â{›i"”å”ìž:‘“†²Að+ãS?kݵ\ê&¨¸]omÓ4üªHOp È¿ÕhÏ~Ó?)O“wv‘Ú gÛ8šÐÈPSQÕ2FrXÆüÝMÎ\^îƒç.ï²^Ì]Áü1j°˜ãÍ4-ô—°m$Çy“¹Ë³Œ÷`w*>EoÉŸµÓ ¥¶Lq‘*ðãñ~µÇ:~Ò{#â_E3ÝøjâÏo•¬ˆåoŽ7dÛÌl¿Shè©éák0͟ݵڥì¦Ñrp·*[³ ²5˜Ÿõ´wã-a?Õ ¹ù7öËQÇœ,Ê‹“cŽåK'"±ŒÙ¥ØÈ{Gppîî …¡ù]öqÚoñ-ŽçÀpK-=½ÑT\YO‡™ 9ã;«Æ¾E“=—^#ˆ8é1Ó?`È?µ}ßÂÏ2Zã.ßd’òÐ×2øûkÁôöÔ˜5ŒóuiùÞþõïvaÚͧ´kÚ¶šqEIVÙ'>±cÀhÏ⇜ü’Üÿåv«þžþ ¯Ñ~ÏccêœÐwPsÝ®vªþÊû;–ûWNÚ«D‚šÝM!!²JA:ô4OŽÃ#9_ÕWö¯ÛuúwÔ×\oncƒž×Íˤ¦  Èc:€ÉÇz÷ïî‘ÑU6›‚+#c½Ž­‰äe²8BFO‰ v?ªWòOã¾µXd᫽m5²°Öº¡²T<29ÚÑóŽÁÃN0|±Õ€ù5v úN}=¶wcðL«Çó€oëZ>ã¾Ô; âW[Yr ’•ÍÚ«‹ ›×ÀÑÍÆÝ ý$áš‹döèd¦’ö‚×1À‚Óm¹Ö×@ú“P_S§-qkA4 doÞ½Ž’7GXî  ºˆŠ‚"  TX " ""(ˆˆ’"" ˆˆ ”()DEA*™^Èãt’=¬csœã€êIA+È8û®ÜAyvn=&½ÙmeÅŽÄtíèí.è<ÝÝѹ=18«‹/}¤^¥àî{¡µ³Ù¹]÷ -ï ?DïÓwy7$úGp}Ÿƒ,­¶Úaöƒ=CÇß'w‹ìûY· ¦._ŒÜžôï«éOÍúz{^Ц/j©Ú»;é¢xGJ«úSÏŒîÜå»ãZ»¬U'Ä¡Ðq%§1ÊÙµ;¶¿7 ³ã±ïÛÒ×–öÕÁÕÓKp®¨x†Õ‡¸F7¨½ØïpÛ½¹ìUÙ§Ðñ¯ Åt¥ÓC~÷WOá“qꇞW=mš.Ñ»ŠgïGá«ÊxÇÉÇÒZ{wíÆ¿M¦gSø*ÿÆ®4üc“¨DEòßPT¨A ¥J‚W—| ïXé8^ÊÉ$­»Ê#GÕ±xyj#醻+ÔW„qGš¾Ô¦}<±¨ª}WJGÞÛÎÀ÷—¸{×[1íç£Å¯¯fÖÎqÞnWµ.!‚‹ˆíÜ5o“Òkm”ŽŠ¦#–‰è@ÔyôëžåÅÙí—[ý-=e”Ôï:ëeËa„ä—<ìÑÔõÝr½ _hn½¨].FY™I4ö›æá€ìõnùü<ûÙ)-‘ÒÖ:G‡ |àÍfp<þ!zwÃãUЧ.£Œ»DµØ¬–.¶]_Zë|Íš¢`Ó—i%Ýù¤»a×KGŠõnÎ`¼Å}ª?HÄLò5ÄŽÙiÛ|žï,¯‹mÕo‚ýé5€Ì÷s9»j.çÞ½ƒ„ª8¿ˆxm¼+ÂöúÆQI'ßqìÄÑ×û g}ü3ˆâïŒWŒ½ÏˆøRëOO$–:**—0eó=²ŸþR~ Ãø†Ÿ‰k«*Œö9]SLÇ>¤ÈÂÃs¾0Àï꾆죆.%ÂQZn7/M˜=Òm’ص~+IßýÛ’µ·ÁÃu\>bºÝ¨¨+˜  æÈíNg{,öˆ c88‘rfq.—tÔìíFîçÉ”5UÔQ6GG+ß“¬ #$“¹ß§’î(»)‹ˆ8ô5ñPÏ)Ñ S½¬lïpÀsRÃmÂóúú[ONi£µŽsu“§»#=Wouâªgð]eºšã#)!g4Bè†{à7=7ßÄù®˜Üòæb§CÃ]šÛ-|:ë]ýîŽóTÇꈼÒÜì1ÔcyÕmoeÝ<ØÉ†QÑÃ˸ŽðJôØôW+ªUSUîžî“1ÝË0úoK×zíTkªš­ÜÝ=Ý*¦8FÏHÆc0è‘yŸbüY]1©àŽ'Ì\AgûÞ^w¨ˆtp=ä oÞ;î½"¦x)©ä¨©š8a¥Ï’Gµ u$€^-Nš½=Ù·Vþñ<&=ï›­Ñ\Ò_›5ïžS&'„ÇX˜à¸¹~>ã¾àÊ>eÒ§]SÛ˜háÃ¥“ìîgö..ÿÚU㉮Rpïf.¬œ{3Ýen!€x·;}§®6n¸²ëuŽ³×—Ú‡_¸‚Gk}]F\ØÝý{ÿ¤wðÇEì§EoM^²qÒ˜ûÓïü1ïßÒFFÚÑÓ=!8éD}é÷þ÷ïéf ö§3+8ªYx{†uÅm„âYÇqvk‡¹£9^¯Ã–+OÛm³PÅGLÏÅ`ÝÇÅÇ«™[^}NºåøŠ"6hŽÇÖ{åäÖúN·[ŽÆèŽùç3ß9Ÿr )P¼pùÂ"*ˆ‚ …R‚‚Q@R€ˆˆˆ€®S~žõm\¦ü;=êHتžª1B©R€ˆˆˆ€Wæ/ÊÓþî»p½ÖA72ßn«hˆ9¸‰pòt…îN ï”gÏû¿ñ Ròë½ÓPo¿¤Kì0êä¿ÜÒ¿9» Ὼ®ÓmT3GÌ¥†OKªdãö°|œí-ÿI|ÚÏð…šM†ºšž–¹ík©#y.qÉ$‘“û€]„?*>ÙaŒ2> ¤kGAêè…}™Á|a­a–{-½ÃΙŸ¹uÞë…˜­¿ê¬ýÈ?7ûMí—{G³ÓÚ¸¶ãK[MM?¤C¢Ž8ÜÇé-ùÍã;téàß“§í6„Ë.Š;øù; DhwØðÝü _£Nìç„ÜÒ×Xm„‚ +7ýKóG¶®›³îÕ/¼.CÛQu#ÏW@ü>'gÇC›Ÿ0P~™ðÄOF"s·u‹ç“o}Òpuªë$¡ÕŒCT3Òf{.÷g½Î è8$‰®áX—]²Ú¥ìçå {§¦ŒÆÛmäVÒ4mˆÜá4@¢æ…õm|fË`œAQI?·v§m1„û;ÿ³ö/:þèÇ úhv*Š=1]hM)¬°;©ó,‘ƒýæ­qq»ö9Ùõ¡²êp§|• Îù„˜O¼¨7_#‹¥ñ…Öý#2Ê Q dŽ’JzôXñþ’û×)96ö¸È_0ü‘x{ÕýšÑÔ½˜šëU%S²7Ð-ƒÝ†ë/­¬Ðˆ(chÙÊŸÝ á~u‡†8ÆýªZ‰-ÕrÙ®<ùÉ?9sŸ"Û雄*ío~_m®ËGÑŽQ‘þÓd_Hü¨8cî»°Ž)¶2=uÑšÚpüÈ”æCKÒ_üŸ¸©Ü1÷_ “AuŠYá߬ñ#í”wU7i]¿Ü_ËÅÞõèð¼oˆCÄlwÙAûß½ž[ãmKa‘DÐÆ4tk@À áÿ’e“Ö}¨zÎFf+U$“‚zs÷¶~ãþŠýìú“—GÌ#r¬’åp·Úh[t®¥¡¥ç©™±ÆÜœ ¹Ä´Ö^<à«åÊKm“‹,wZØã2¾ *ø¦{XÄ1Ç.í ™ùOðÕGvÅvz8Ì•^ˆ*¡cG´çBöˤyÂ>ÕùçØWí"‚ó4†:9©ªÜ3ìÄý‹¶ð!®û~©FøænZC‚ŸÚmõô溺¤†x^0öHÀæ¸yƒÕrýß`¸PÇ#*4r4>9àæ½¤dGPBíAlƒÅ{Aù4v]ÅpJèìl²Ö¼{56ÌBZ|K°|òÜù…ð·n™Þ{)ã‰8zç+jb|bz*ÈÚZÙâ$€qÜàAoƒâ'õM|'ýÑ>"µÜ»B°Ø(¤ŽZËE†±Ì9Ðé\ÒØÏ˜k5cúaAéß%.=®â ž¾wMWK#¨ê$qÉy`®>e®nOyÊìþY²s~LPÿBÿÆB¼gämm¨¥ìøÔÈ××\¤š/6±™üæ;གྷå~Ç’ÏŒtDÿ®@¨ù3äwÿ)7/úOûèWèÿ‹¿?¾Ggÿ¬«ÿôy?ï¡_ < þ,jK·®Û8W²KtBæ$¸Þj˜_Il§p{wÞ㳑Œà’s€pqò?ü¯;RºT<Ù™g°ÁŸa°R‰¤ÍÒêûš=ËÌ;wâZî-퉯5Ò¹å÷ a…¤œG n,£Ã hûr{ר‹v[Ü=GIIIo¥–µ¬i¨®|aÒÊünCŽá¹èØóÝÍíåÆɯ|eTÇõu¾7Ó³ã ZÐ=Ç}œvfáãÅÜa ‘²YÙjª¹µsƒˆ'sôOR’ý1 áº(cnc¯›ºs¶[»?áþ…ÑŠêË—¦5bí$éƒýàƒÈ>F9õ÷xr ÿyËïNÿ3ܾ ù»AÄ ñ§„ÿ´å÷ŸŠã÷$Ë‹§ü®ÕÓïÿÄú3Ù×ò·{×ç=Øö¿V±÷çý`¯ÑŽÎ¿•»Þ¤ ÷jÜbí#‚ª¸^ÿ<Ø|33Êy@:da=ã'Þ b¾í7ä¹Úg TM-ª‰œMmk.zÃiîÕ ö³äÝCÍ}qÛwÊ„û(¾Ãa½Zou· é[U¥Š>QcœæŒ½Ï«6oû.í>ÍÚÛøŠŠR²³X4ò<9ñ9¯--qûgÜB£ój×|ãž¹:ó‡jØrø5IÏô£8í Ø¸ågÇöY#‡‰ ¤¿Ò‚ߤA8E£Iû[¿Šû¦ûÃy´PÜiÝÿ7UeoÁÀ…ò?˰Žá û·áJqj|UqÃSFד­“`æ}—†ØÎÛ ú7²®Õx{¬0Ý­“Ή#$/XñÜQ!z$olŒiÈ+óÇäaq¬ƒ‹o41½þ%gpîkÃGÛ‡»à¾øá:‡OmcœrpƒnŠJ…A"’¡DDQAPªT«ˆˆ,×ÕÒÐQÍ[[Q=4,/’Y¥¬hêI^'t»_ûd»Ëdá×Mlàúy4ÖW9¤:§ŠìoÚîàº~Ѹ'‰8Û‹)¨k®‘Òð|,l¯Š‰eÚáÞ|@;²½Íl ³Û ¶Û)c¥¤ºcŠ1€öžòNå}[7lè­ÅÊf*»<:SçW„{ßwO{OèëTÞ¢b»ÕFcœQßß_NTñß,^áëO Ya´Ù©[<{ž÷Hî÷8÷¸øÿbÚ)PWÌ®º«ªjªs2ø·.Wv¹®¹ÌÏ‘x[k{.ãVñçÀçØ«¤ݨ£ù¬.?8àNà÷;nŽÂöåq£¥¸ÐOC['¦¨ŒÇ,oi!z´Z¿V®v£4Î꣬yÇžRöú7_êwgj6¨ª1U=cÎ8Äò•»5ÊŠñj¦¹Û§lô•1‰"‘½àþÃÜGqY‹Ã¸f²«²9<-wòp­ÖC%¾ªC´'¡=ÝÁßc¶É^à®·IêõÄÑ9¢­ôÏXóŽWÒZT¹Dí[ª3M]cÎ8Lu÷¥‰óT*•(%~yö›[_'×TË4„KS#Úö»gâ\GžI_¡|ÅVÉmœe]Þ'º J‡Æâ[¨4‚GO ýez´Üß#Ò“‰¢}îFžæÊ:ÖÕú1¨’ŒŒu>$õ'Ìî³ÑΪª«™ª©ÌËäW]UÕ5U9™ç""‡¹¬n§¸4tÉ8Ye(QB"-" (*Q*B%\¦ü;=êÚ¹Møv{Ô‘°=T)=T.` ©D¢•ˆƒâ/îŒq¿¥ñ €)&ÌTú¹ íÎÆÓæÖj>éÕ|8XÇg¸ñ,Ñ}òºaKNHÿ›fî#ȸþ‚ú§Œ{ 쿊ï•wëç A[t¬ptõ/¨›SÈhhØ?°î[>ìòÉÃtÖÛ=#)(iAÂÂHh$“×'©'Σ¶æ `·*ˆ£Æ:Zøãû£\˜ì¡RC»sl¯pÛ¾û@O›Bûj8Æl\_Ãõ$·Eq¶T–™`Zàæœ‚ €v(>ùqi·q5o Ï.#­o¤ÓçX= <Ë7ÿA}÷µ¢ªÞÃÀ^yCò{ìÂÓx§»Yxbºgë†Hê&%®û^GÅzE’ÖÛtzvAâ_/nõça2ÝbTö:èjÁ~[)ãÝ÷ƸÿU~{Ó²ªáSIC|²9žšœpÑïsÅ~½ñ¢Û²VYnôŒ«·ÖÂèj ~@‘Ž#mǼn¼¾/“¿e47:k«„©i*©elмO+´=§ áÏ#b}’Øã¶ÐÛmPŒÃAM;:†4 ý¸^ÍtÆÖø§±Øa¶»S:­Þ6AKØÉèäh{ \Ò2=Å~Lö¡Ãóð_hüIÂí/”5ÒÓ7Ÿ¼ÆO‘n‚¿Y×ñ¿b}™qö¦ýáJZË­Phš¤Í+\ý- nC\Íh;”0|,.§á:뻣ÃîuŒ8ëCý§?à¾ÐáÚqº6ã.o…{:±ðÍ5¶ÍHÊJlˆai$7$¸îI=I?jía`Ž0Áܨ©|ò±ù:]¸j÷[Æ\n’·‡jžéêi)ÙªJ݆ÌYÉ|Þ‡~ôB20Q_•ý™v¿ÆýŸ9±Y®-žˆúX2D?«¸-ÿD€½ÂÙòÔ½ÓÒ†Uð=D |ö\]sî1»ö¯¥xó°¾Ì8Êy*®ü%Aér_QL <Ž>.teº¿+Ík~H›>Bèy‰¹Ù­¬‹IDxü¯ûG¾QIEb£¶pär7Iž™ªŽÿd{ôäwæšöÄý¦qª\j$“+î“åÙ$åØqùòÚrp¾Íáÿ’×g™Û1³:ºFœƒ[;¥ks¤ý¡z½“‚íÖØc†x¢Š0Èã`kZ<ƒ”ìÇ„)íTT4”üŠ:8›,ðh¬øžò¶?)¬ânÁø®Åm…óÕÉD%†& ºGDöÊy:0šôjxà`lmyù+ÙÇÜø‰›{¶Ç²rÝ °Ì™pKN7€}á}“òfí;]ÂÑOoôHc–TÅåà’œÓÙø¯Mãß“ÿe|cršësáZxî8ºYée’œÈãÕθ5Î>$°¸#°^ à«„µÜ9l}-D±ò¤•õ2È\̃Œ9Äu D|Wò¤à ‡v›r¹6šCd½ÔÉ[APìeçSâÏsšâF:ã½w}Ž|¦ áËu-Z«j¤¦ccm]‡:F†¦¸·|cpwð íºþ²Þ,Xï¶ÊK£Û‚¦!# î8=î=Bñ»ÿÉ/²ŠÚ—MEAq·òéëžX??Qýh8Î)ùjX ·=œ/Âw*ºÒ0×Ü^ÈbiñÃâïw³ï ç2¥í#´º+ÏjœJ54 gߤo-®f°Ñ ú ÔNzlrK³Ÿ²8käÉÙÕŽ¥µÙY3NZúÙ6?Ñ'Oê^šî³VZj-W*HêhªatBᆹŽ-Û¦Þ> ù×G\h^ý.© .`úEiÇ¿Ÿ°¯Ð >ÖÀ;‚âm}vec»ÓÝì<3 ¾ºœ“ÑÔLKr=^AÈ$}«Ñl¶ÖÛâå´ìƒó·Ë Ç„»m⊘¤‚FÝfª¦yÕ’#xñöHûr;—°öKò™¼ž'²YîV*VUÃMQVÉ\ܸ7PgA¹Ï\/°»Fìß‚{A¥Ž-áêK™„ ®ÔÉc¨lŒ!Ày…æ´¿%ÞË-÷먬S aIºéÜàr5ïƒã”ÀåþVýžÔö§Áô¼CÃt¦¢ýckÿÁØ=ºªw`¹ñsHÔÑß—¹ å~ÇûU¿vg_5;)½2Ý$º§¢•ÅŽcÆÅÍ8:]¶AÎ>ÕúS`±2ÚrÒ¹~Ñ{ìÛŽê_[ázI+ß»ªà.‚g:2 ÿÒʵ|³8Jž­©á‹ó§æ·’[Ÿëçõ/ ùDvó~í‚ZKLãj±ÓÍ̆…’dž_š÷`d€H mG¯UôGɳnv¸à7èzfßîçõ®»‚»à޵{%$’GõAÜõ·Òz-FøV-6Z X3â·0ITª”D""" (R…ˆˆˆŠ"" ˆˆ‚" (*Q(‹É/<+Û¬÷ŠÙ­©Ùé(d¨‘ÔÐ>ÉÝEı…Än@ÀÏ~[tE|jˆ÷¤Î¶‹Æ~ãþP_åzÍÿÀ"ýÉ÷òÿ,6qÿüü?¹tì)þäxù&Ôô{2ã?q¿(òÇiÿ«ÐþäûŒù@–[Wý]ƒ÷'aO÷#ÇÈÚžeEã'‚ûÿ,ÖÏú»îQ÷Ûÿùh¶ÿÕÈ?rvÿr<|©èô~?á[ðÔöjñ¤»Û‚`2èd5ÃöÞ †ìcŠ®7»8âÓ˼[½š9\v¨ˆ € êCw½¾`¬¸®ß¿ËU»þ­ÓþåËqÏd²ÝþnÓènW{k5Òr¬±SÈâÓ¨4=¸ß=3¶OvJú:Z­M©Ó^®&™ß}šºïŽÂ~|Ÿ[E®¢lU£ÔS3Dï¦wfšºÆf7O £1»} ‹æÎÍ$í¯íõÓöÏKE[K'.¦Ž^¦/ÀüÑp{º‚[÷Ûçùp£ÿ«4ß¹xïh¦Åsnåqÿ'ÏÔY»¦¹6®Ñ1Tq‡³(+ƾá»{ÿ.TŸõf—÷(û…íëü¹ÒÿÕŠ_ܹvr<|œv§£ÙWÈ) uÂÙÇ×gÀ׸ÎöÕn'·rxËsýzõ¯¸NÞ;ûs§ÿ««Î;rì§µW؇]»H‹ˆ'·–1Ù¢¦|q’}­L;àž˜ÛQ>+µš)¢­×#¿Éá×Úí­ïŽß<]ê›%v¸)ÙÒ5ƳŸ…°·Ãr®®¦e<“º\ÈõiÉï>þ‹]-¦ìê§6¦èȪü9®¥c[ïð®ç‡Ú®Þê{gÃBc` lvÊr÷°ÿOŽ<×yµLÿ\xù>dE½Ø^yUAðÃÉ~ ÜíŒ ¶ßù¯XàËmŸ‚YHúJi娑ÆhÚíBVŒ’~é·vW„¶Œª-2Þj»F·±å|‘º×NesÆ}’'­dp5³Ž®Ü9u¼ÃÚ;hDo‰Ö¸\’Ü@nKGýp›mLíÇ“ÑDìÄoQÚ76£‰jà²Ã ŠyÈ¥Ô7sŽŸÆõËYxV¶×É’ùLúxçv}¡ÔäðïÊë¯Ô¼tm0V·´ºjÉ[!6¨#å‡7Û:½ØýkΩ)/5ôÒHî)sçnA…Ôq{Îó qjÜÿ\xù1TM<ø°8†¦ÝLdµÑÆÂá#¾øÜÁƒOö®|—K&%0Pºjn¸\h*km× êå…Øå¶“ç ]G‚ÉàÞÌ8Ljëä¤Ãí¼¦jsë!,û;Ÿ±&Í3?~<|hªÝî—2Ú~iûÁx~Ùhß+¹ºÒÚí|H%¦`¸Ë¨°;$““—îÂÒIa®°Ë5U?´ÍΆ*`IÛ®F˜Ê¯†øw‰¸ë-Ö.òTÖWJ"¾<ˆ™Õï?ÑhËŽ<¢ÍÛ'*¿Äª"%õÏȾÂû_d&éMíOG²¢ñ¯ïcÚïoÕÿõzøŠ?½ký¿\?ø?ñ±·ýÈùO‘µ=̋ƽk_åöãÿÀaÿˆŸÞ»µŸòûsÿàPÿÄNÆß÷#å>FÔô{2µ[KM]G5e`ì}ÈŒô\gj\yQÐTÍm}p¬•Ñ€Ùƒ4`g;ƒ•Ì_{f²ž‹„x^¿ˆÛNâÙjaÔ#Èú:ZâG™Ç–BZEæÝšöµlâ멲ÕÛæ´ÝpíÈým·¨À!ÀpGrí¸šûláË,÷{µ@‚–¹ÆK‰èÖŽòPlJ/þü÷«|ü9ÙÝÞãDÒ@ŸÛ9LjcÄ­·öÃmâ+ëlKUE–å#‹#dÖÇ<~!$4µÞ,ç ÿk\_?ð¼wŠz(ëú¦AË‘å£kŽr?ª·¼/q}ㆭwi"lO­£Š¡ÌiÈi{°–Wü¨ÿäÞúJ/÷$[8ø™ü!Ø­‚ø-¯¸G º²±²è,k£hÕœòÑö ô4Z~ â n(áŠ+í+ qÕ0“vK i=ø ­wiœgIÀü>Ë¥M3ªß,í†(ðÒâA$ç`îðTu(¼û‰»D¯²Ùì•íàû…kî”æwCË>Í!®!‡råЭíšèNg7²}îÿ† õå ʸG¶1Ä]KßrÕt“Í#˜òùòbÒ %ÍÒØ]§ñ—ƒmB¾ï3³!-‚Æd™Ã¨hòï'aö„ /´ßŸ¬aìæäûW_I?NŸ\½?¯í^ƒÙ÷Ù8ÖÚú«SÞÉ¡À¨¦”$DôÎ:ƒ¾ÿÉL‹ˆãŽÑh¸O‹-v:ê2b®`‘õf`ÖÀÝDFqŒõ\•«·Hî|UMk¢áz™i*ª[O þ„“€Ktã¿8Õ·Šc(¤¨UDBˆ¢" ""$ˆˆˆ""*J @„DTB•xßjöq,}§pœY,8»Ò7fÊÃŒ¼ÜÀáÞ%z _­ÜM`¥¼ÚåæSÔ78?9Žïk‡qe²š8æ‰ñJÆÉÚZö8d8ˆ#¼/>‘ØÇäs_ÁW©wêïD“ÿ/ö›âZ¾Í¿ú…˜µ?æÑÏú¢?§ßºÆçèlÏñm:í†xFÞÉëk[SQ4aôô´î’PFÎð ?Híá•çðظïµyYWÄóKÜ0HtVø¶–aÜNzÿYÃữ>ŸÑõWGkzv(ë<û©Ž3>eäÒú&»”vúŠ»;]gŒ÷SjŸ²ê íZ‚ëÆô¼5ú‹Ünxm]tO-йÁpöN 7ß tÁ9^… }jíˆíl©×ËWPÁ¥M÷É£o~—;æý‹C_b»Û&-ªÒG¥Úo_ïµ^°ðíæéw‚–‚ß=]\ŽÄTðF^ù¸oÕz)™+¦†î¶Ñ,V¡tºÍ4õõN¹~£¿‰_Xü—;+“ƒ,²q%ò™ñ_®Qél/ÙÔ”ù0Žç¸€]ž˜h؃˜ìO±‰¬•¼MÇC[zˆ5ô´lÃDîç6|ƒ¸ôiÜdàmX¹s;¡éÒiª¦vîqRŠJ…ÁôDV@Vkåž )¦¦¥}\ìa1À×µ¦Gw7. yW‘ÌœYòxãnÕx´ñ'iüiKErÚ[U¦7LÊX³ó$š@w‹´œŸ,ÞpWɳ²>Ñ á±y©güýÚOHϾ=£ÿezú&Š :J VRPRÁKOÃ"†0Æ4y°WÊ"D(´ˆ€ˆˆ)R¨AR" +”߇g½[W)¿Ïz’6ª…'ª…Ì " QIP€ˆˆˆ‚IP€ˆˆˆ€ˆŠ‚‚¥RªT© çêÏýî›ývà‚ú|õw©§¤ùYzM]DTð1ñë’W†µ¿à@nNÁ{Ý? ø†Óþ»ïA¶_?p,P7˜oNÔS!ŽwìÆ¶G‰ìø î9ÏDWÐSGÑ>£d‘½¥¯cÆCê=BðÏ¡#ò¹ðÍ, ¬hˆe ÅÏ`ÿDd"W»×\(hmϸÕÕÁlÖéžðã•á]–=üeÛÕãŒi£x·Ó5æ9Üg,F<‰`.Ç’"›DqŸÊ^änlÖžg.îÁÉ-£»[‹±â½ê®ž ºi)ª¡Žh%id‘½¡ÍsOPAê\*ÙÏÊ{­Í®ŽÕw?€Ùp\vú2 džþ Ú.|WÃvëC®ÕWºF¨HÙší~MåÇÈ(Þx†Ñ®M-5Dqj9:9ÑéÏÙ…ô*ùÓ°+©¾öÛ}¼ý2–¢`Âs¤:hÈ`À_E« ù§‰øšÇyù@G_}¯e=’Í/*79áÆ,œa ç2dû‚÷.Óx€pÇÜïÁ³Ç e?œ®öYð'>àW–üŸ»=²Ýx>[çÚá®’¶¡ÞÎé›=îÕð7½ vƒÙ·pmÎÊî#Œ¾¢É&–ofAí0üϤ×|•ø“Òì5¼3<™–…üúpOXž} =Îßý5Ýÿ{>ÿð½¿óOï^9ÄCÙ_nÔuÔ‘Šk-Xk´7æ¶û7ý @y5GòµÿØ¿ýÔŸî…ê|g¤±p…²ÛG bdtÌ/ÀùÏ-Î>$œ•åŸ+B ‚ÄAÈ5R`ÿ ³Z¿ÅtŸæYþèDxgiôðÛþQü-SJÁêÝJù‹vÔã3£$ÿ¢û¨vÂVn-²GöåSAGI!œÉÌ ãqp#áÕy§l?ûÂpWÿÓÿÅ=Oʾº¹Œ°Û9¯†ÝPéd—ö–‘ߤ8œy ëÿ¾Ÿf¼;o‚×Gwl±RÆ"Ž*Zw¼´`aÀi?ä|iÅöŽ-ío†¯6Z:ªvÇSMäa•͘v'¸ã}ö^ã¼ÀvËe<öë5º­œ æÕÎÆÌé>~§do×lã=­ñ ªïÛ‚D±IIl–ž$Xå—óµ;N6 dx(=åIÿ&ðÒQ¹"éø^×O{ìzÓhªy«±Á Ž:j…£#Ìuû1ò¤ÿ“x?é(¿Ü‘vÝšÿÉß ÿÑTß÷MAæ&k•EEû‚nEM '¦‰ò4ÿ¤V?jYã~Û,œ/¢·âJ°:näÿ`5¾ò©í³€ûr´ñvºæÜU³mä æVwÉÊ‚k­Ëˆxò½‡Ÿp©|P“Ü µ¿Y,ú¥´èòþÚûB–Å8g‡K§âì1¢!©ÔáÛ¦sì·Ã;^Ø;@¥à›.ˆ &¼U4ŠHú{¹ŽD~³·‰Ïb¼Ë|Ïã.-«Š[õi2FÉäàêçg£Î~Á·y:Æû?‹ƒ­.¬¯Ó5òµ¹ª”\°wå´ûúžóäòŽÔovºŽÞÙ÷KÌ’Ëj,ŒÄÖêÈ ×=ùyÁò_G²º…î me;œN´’~+çþÑ#§áßé¯÷ŠFÏg¸i{¹‘‡³>[ö#r×aØëŒx íÛÛ5}À4 )vâ¼ç‚ø†ÎÏ” 5¼,$†Ótq…ð˜ùc/fãØ—½SZøN¦µôöÛ,´f¶ÎÈ",-ñÕŒapœ)Æ–+×i²p÷ðºjZmNõ¬A­Ð7p›^È ŒäŸÊBŒ\{Má›{‰ ª†8IÚ¦#ûW½QÐÑÑÑÃGKK 4ð"Œ¬ÇLâ=ºË?ÿ^Ÿÿ½ÙARŠˆDDQDDDDD(ˆ)E%B ˆˆˆ‚IP€µ|Ub·q-†ªÍt‹™MPÌ>sÜæžâámjŠê¢¨ª™ÄÃvîUn¸®‰ÄÆø—›öqÙ ƒ…%e}k½qti'˜dXé¡›à·9;m…é‹¶§U{S^ÝÚ³?¿“¾³[[sµ¿TÕ?¾Â>…(¼ï*•=F 8ëÿg6+Œîª¢2Úªœ7u69n÷°íðÂó..ìs‹g}’áOY'Ë>—¼{‹p?9{ú•¬õp¯ME]ÞíÏ”¨{ã¨ÕÃ,Œã¶² ÿÛ[jnȸÒwE ´B–0~q«Œ5¾ý$ŸÚ¾—T•v»œ½J޲ñ^ì&žžfÏwºrC£¤ê×ð¯LáᮆHìŠz7K¼²ªY¬ó—åœà·È•WU\]miíÚû°""øU*¥"""*ˆ€ˆŠ" ""…(Uˆ¨""¤ª”¥R¤ •r›ðì÷«jå7áÙïRFÀ¨UI\ÁRªPPB" ""‚¥ DDD@DDDZT*”$y×v=ÃÃø ÛRkê_Q Y{£ª©h‰ o“¥­8g uÚOfvN5–:Ù¦ž‚ç#«ƒ@sO\oŒ|×%/b÷ÚÖŠK¿i7jÛx#09!ÃÔð(G`L†ãÚçß-Ñ5¶àÙc‡Kt´6Iƒ˜îöc;/{ZN ák?Ù›k³@èâÕ®Iu>Wãœ{ÎÞCÀ-Úƒ™í ‚íÜom§·]+.ôðËÎ ¥{­Ø jÔ×tüVæÅl¥²Ù¨í4-si©!l1êÜÑŒŸzŸ5šŠ¨¹>Ñ8ÉÇ0QÇw’²R9ΊJgµ®Ã€È:ší¶Ö"ªâ¸¯³{7põªÉs¸]L6¶†Ã+%ŒJü47Û%„€:»x›ÂÂKchh'®Â¸Š2专€l÷î2µñUeM|u¶Þ_%‘=‚'h¼j¤ÉÎÙl¸Ë…ìÜ[h6ËÕ1–Zã{]¥ñ»ÔÓÜw÷x­Ú ò;±Æy.â+ë¨s“N$cA÷û8ýKyy샃nëu <5V¶P9ÏŽJ)ÙçiÉ{œ×dcÁz ç8ï„-ÜcaŽÏu©¬ŽLÙ¹9­ysAå¤~1î[[º E–ŠÕLéÃÁö÷RY) | Ó=Ú¤”Ž…ÇûçeЕJOŠøÏÄœOlâ êšøê­¥†BöÝ¥úÆ ZIßÀ—Xˆ¨""P¨EDDIDDJ©AHˆŠ‚" (*P „D@DDD@Tª”¥R¤ •J ¥•ˆ€ˆˆ!B’¡€DDD@DE"’¡hA@¤ªPT®S~žõh+´ß‡g½I ©(¹ŠQIP€ˆˆˆ‚)*AE%B" """+ ©EE*B *•R‚¨„DQDDU P©"!`DETDEDDUD@PT¢ QARˆ)DDD@Bˆ‚ "ˆˆŠ"""#"" "" QIP¨""" ‚ŠT """ "" J%B ‘@R‚*”ˆˆˆ€¡J‚‚D@DEAR…Qˆ¨""‚¥R¯S~žõe]¥ü;=êHÙCÕ1 J DDD@PT¡AJ" ""‚¥B" """ ""Ð*UJ ’J¥T)E%B"*¢"" ¢’¡@DEZdDEAAPªT”D@DDDAB©BDDD@*¨(°D@DDQ$DDA* DEA(‚RUJ U*T„ˆˆ)E%B" ""*ER€ˆŠ‚"$‚" ""€ˆˆˆ‚ )P¬"*ˆ‚ ¹Kü¡žõB®›ùC=êHÙ¨‡ª.`ˆˆ)E%B" ""*J”D@EªK‚ Š+zÂcÅÔV¹ƒÅ9ƒÅÔV¹ƒÅ9ƒÅÔV¹ƒÅ9ƒÅXQZæÀ‚âU£ QÌ* ê•o˜Sêj¬³àPG¤ô‘â§ÔµYgÀ§©j>²ÏA’zHñOI*}KQõ–| z–£ë,øé#ÅA©*}KQõˆþ=IQõˆþ\Š}$x§¤W©*>±À§©*>±À¨ T>’‘æž‘æªõ%OÖcøõ%OÖcøúGšzGš«Ô•?YàSÔ•?YàQr§Ò<ÓÒŠ«Ô•?YàSÔ•?YgÀ¢)ôâž=GSõ˜þ2)ôâž7ת?6?áOG›ëÕ›𠽡ŸA¿L¬`‰þÃ~iîVýo¯T~l¡ÔÒA®¨ÁÛæÇü(.Qhá'sËoì\|AÇ­scà˜®Tã™É”Ur ΆãÔ^Ý.Öt4dƒ‚¯@‰‚8™rCZ3丟ï‘Ã6Ø §®uÆÖT7_«æs¦oßœÖZÆ{Üp7ÈW’ÜœCÇ&½°7€"ŠU$oŸÖ {ymš6¶Aìí°Èà0qžü^¡â3–šWÕö<â*wÇn¡ú#£Ü ,=äõ$Æà \a½«pC¤dLºLd}DtᆒVo€9hƹønv[ wpýÄY=J©Ÿ{šÝLøœöÃøBDº@ÛëFFêñÝîâÒž*㦺<öf]̉î \Ùˆœ×ŽÁhØdg;¨Í¸ñRÃsœp{)쮜G#¤2Õ†äÓ€Öj —ƒŒûÈ ݳörØåy¿EJkŠYOÞD¼²ñìûCVþÎrßk¦ë2NÔ¸6DµUóÓ E®æRÈCH;͹"'3“°ÆH ‰Ž0M3 äâ.+3I9ЙÙ* {C Ü×¼@iÇãdéÈ;ÚŠŠÿQÒUÇnk+$}7>ŸÎS_#£;gKK÷òÎ;–EŽíEz mmät.ð‘:7 ´;®ƒ‡ ŠÌ›_-Ü·»¸–—€#*Fã‹uÏŒGCTl4í¸ê“›[Ìn6Ói§bpzä4‘‘Œæúo›dSKlŠžª[,BÈy¢:|Ÿiä;ÀgPH¹\¾ñ-=––ž¦¾²8ÙPÉ]LXòÍDh{óÐcHZy»E·ÅVêGо|uQÒÌÆÛÜþSÝââב†A#>Y«ÈãÉ}·>0mªg› sWú $Ž&DÚåi.0"Û îN]ÐnoóÞ`…޶[`šNsšZNu40–äí§.ÀÎøûv®Ït–çCGW +#2FÙ(ž @úD8†ŸNýÊm÷:ššgT: ah–x¹sÓžLnsu\rÒZH=à‚6!I2ÒTÜø½¶šGÁÃÑ:­üÞyص˜‰å‡‡aÏ è  ·;Ž–Êjf³ÑMq¦Ž×ÓÆêˆÚ6d…£Pz÷­EOÅOr}¾J˜LÑËO …±4†¾o˜ß3ž„Œd0r®Z8‚;³A ©†}Tl«n˜AÔÇçi>vÝ’¨ßhgÐoÁ43è7൶‹ŒÕ¶øk‰àŠvG<)#gÙ{ %®ã¸ìµ÷.¶Ð]Ûl¨˜‰œý† ¤;o `h€7ë±ÀtZôðM ú ø*!¹îis]€@Ç\þåuAN†}üC>ƒ~ ¤AN†}üC>ƒ~ ¤AN†}üC>ƒ~ ¤AN†}üC>ƒ~ ¤AN†}üC>ƒ~ ¤AN†}üC>ƒ~ ¤AN†}üC>ƒ~ ¤AN†}üC>ƒ~ ¤AN†}ü“ˆ¸†Ýg"#••9‚Îkz’{†ÛÔ÷·«Q}eÑ“ÃSj·ÐUJÐZçTJXæû°šÕ8Îõ¦b'3\¸]ít<9Qìô)Rç´Ks·‰îÇŠñ‹k\CÄ—9j)(ih-ÍqB#HFÞÔŽ$|¿½dö‡'ÃÁ·Ž©¶Ä}*3=;¢•ï<°ýzÓ‚}8ÎNsÞ¼g³þ&”`ÃtÖÈãódžê»ÎžäÛ™µ‰«éÝúµW|HÏÄ—úú¦ÓPÓÓÓÖQEéÍß8ïn’2ݺ¤‘¸~Š~,³²Û Lá“ÌѦžœ83‡ŒÿHŒ÷exofw>)¼ñôW AdÑDX÷½µìÔ]¾Ûî½k…©x’ŽýSéœ%h§¦|Î{g§«$€ãœ†–ã=IÜnºj4¾¯=UDÌDwqä”Þ¦¸ÎÏï½ÛÁË–ååiÖÐí.nÈèUzôðU"ñ2§C>ƒ~ ¡ŸA¿R Æ”ÖSégVqî\\çÔ]ÿï…ÚÏü²›ý/ظšŸÂT]ÿï…Et®Ü-Í)Ø-%'P·TŸ4*6tWU¨º+¨ ¨U(*À„D@DD¡J‚€ˆˆˆ€ˆ¡¨BàôL…ŽéÀV$ª½ix 5µo­¡UÓÕ‡eÌ"·²ÄD@PT¢ QIP€ˆŠÀ"""(ˆ€ˆˆQB!E W)¿Ïz¶®S~žõ$l”(W1ˆ€ˆˆ ”AJ" ""¢NеCÐkªú¤¬êVò¯¡Z:Î¥‹´¾&²X¸–i.UõÔ<ªH4‘ÃÛËæ—µ ÌzunÐ\ÑÔ•¦›,4¦¢Ž«‹/ÓÏ’Ò7–×°ˆùAÞß0·˜Ì-˵½üqÄXï´ÕPSƒUP ׫Ú#;òÈ ; ÆAQ}L±ÔµœOlp†&¸9ŒÉo´Ü9Þ×C‚1Þ]ñ¿²™»F'Ãô“tNf{7©ew Ap޲j¶ÕI$¡Óc[N² N ‚î÷‹£\¾íVãIw®â;S-“8·”Æã$·!º¾ {°ìUEYr¨®§¢§â«kê{an^ê’vÁð޽k³UULÌþ~\Œcs¬EÏÕÐñLñ:6^© ¥º£§ö÷'$íìàì:øu]è2¸ULSÏ ˆ‹ˆˆ ˜I,0¾…îtL ÎYŒãÖrâßÄw0÷è°Ð[¦™«€êµ»9õ{ó±êÎîè×½ºCmò =0Y·ë\ŸÝ%ÏéEù‰÷IsúQ~b×e)—W“ŒzµøÿC÷¨h {¤m°µîv§8rÁ'dï×p\¯Ý%ÏéEù‰÷IsúQ~bvReÖ¶Y4¶‚VÜÁýª$’YXê:€Ñ‘­?ì®Oî’çô¢üÄû¤¹ý(¿1;)2éŒ9ëIZþÑþ5¤äÑVóü§¿Çç®kî’çô¢üÄû¤¹ý(¿1;)2é[kC[IZÐ:TTØðìš*§lG·8p߯W.cî’çô¢üÄû¤¹ý(¿1;)2é,aÚ½¯W¤ïþú2¬ecG•N?ù×7÷IsúQ~b}Ò\þ”_˜”™u fñèU'XÅÓºn]² ÓÆNM¾£$c<áÓó¼Êæ¾é.J/Ì^yKÛ/IO³ðul2s–·-Ææé ˤóöXãŒå¢lLm‡T9åÐÎ3×24þ×+œù¾¥7ç3ø—ÅÚÝâ]¢áË‹œNiœÍ¥Õí4~@#¼²á.Ñ/WãPù-uæG1µPhs¹‘‡‘Œþ.tºƒö^ÎL½3Ÿ7Ô¦üæsæú”ßœÏâ\Ý%ÏéEù‰÷IsúQ~bvRe×sæú”ßœÏâN|ßR›ó™üK‘û¤¹ý(¿1>é.J/ÌNÊLºî|ßR›ó™üIÏ›êS~s?‰r?t—?¥æ'Ý%ÏéEù‰ÙI—]Ï›êS~s?‰9ó}JoÎgñ.Gî’çô¢üÄû¤¹ý(¿1;)2ë¹ó}JoÎgñ'>o©MùÌþ%ÈýÒ\þ”_˜Ÿt—?¥æ'e&]w>o©MùÌþ$çÍõ)¿9ŸÄ¹ºKŸÒ‹óî’çô¢üÄì¤Ë®çÍõ)¿9ŸÄœù¾¥7ç3ø—#÷IsúQ~bÛðÅÖ®áQ3* k[Žõ&ÜÄdmùó}JoÎgñ'>o©MùÌþ%‹ ÇçÍõ)¿9ŸÄœù¾¥7ç3ø–B Ä™$d’[žç3æ’XH÷n¼ÿŠ»%áKýÉ×Ù礨{µH`{Z|Hê½-¦©§|&2æ83†-¼)Jè-vÉšçà>G9šë[þ|ßR›ó™üK!™ÎùV?>o©MùÌþ$çÍõ)¿9ŸÄ²?>o©MùÌþ$çÍõ)¿9ŸÄ²(çKUÝNøÚÍY.s{Ç‘+‹©ü%Gõßþø]òàª? Qýwÿ¾E/P·tŸ4-%7P·T}£cEuZ‹¢º€ ©D¢’¡PDDE„T=àw«n˜²€°ä©½cËXÑÞƒ`é@VŸ8ájf¯Çz°Éª*_¢¤”çñJ ¬µmëZà;ÔGg¸JÐú‡ÅKŒŽßà?´¬ún¤icSTAÁÛ–ßßð*did®.v–’I8w«ÐPÝ*ðc¦sOd~½Ïغšj(àÚ`€A™wÄþå{‘Ï32g®³‘ðè¦GuŠz]Ò4¹® :NÛŒªh*N±ºÜqu.bk€;4ǹ=[»|²F?õÓ•£y ŽÞ†ML 4tZkL¹h pÞŠ‰DDD@*•R‚‚D@DE¨R «®S~žõm\¦ü;=é#dˆ‹˜‚ŠT """ ‚¡T©(ˆ€¨z­Pô4­gR·µ} ÑÖõ(28Š9…âi[mµÔÄè#M‹SÝ÷Á¤AÁ.kFr2ì59Ã9Ÿ ‘ÔQpìE´Z™D`0eÌÁxÒïÅnGQ‚V'I4NÙYÀó^‹©Û¢h ›#´’â5üÆ€áÒâ µ’2å³±pÕ®ªÑèµÖÑ2 ‰DQºªG8ƒ‘¯V¬î ÆçGaì¢õ½ˆ‰ÏïãôJ££ ž‹‰i¸d ~±šøjC™ZÆÃ0ÐÀ%8èìç¦>h1›õ´—ø.ÜÛW X´G+ù5cZö 5ÛïªA¶'±­cÆŒ5 ¿r•ŸZœÌìÇ>¼þ+¾x¹ÊyøÅ×*˜§£¶ÇKžDÍq&mά·V[°ßl÷ám,Ý&´Ã%êšjóžlP»Sí`äçlÝÑg¢ã]Ȫ1³ˆ¹‚" /’‹Œd©|¶öZ«ãtµn,3ņâÆÄîìnÝÞȼ:åkáŠæÔÇtìòõR[-AA@éy¤ÊÉüœgS¢f>p-!¹ ¹¡œ,pg2ƒcåÇ=®ÌZژēsäitXËÎ5œdŒ½–î5›±¢µñ-K,‚º‚šƒ™Ï7S¥Æ2䵚œáƒÔÎÃa“ŽVàØgŽ’›³¾!Œ ©Zã-<™”ÅçÌ{ r=ÍÙpkŽ0I[K5«„àl÷(øýFáK#§lÖÝO–9Ý™–—?L‡,o·¤hÁ- fczÎ%DÍí8g”ð¯·M!s®2ŒOÍØ«9{çmÿ5dGEÇ1SéŠÓi­v²$õOŒ9¥¯pq,v1ž[vn~w€'Q[bá¡NÆ;€8ª¡Î¨Ñ,ze%㜠‘ï!äšV=Ù$`‚íy=ÇgÖ»EºÕ;ìöjûTuë’*ÈŒr½Á­n¢ 'Œø` ´“,Ûm®)-ÔòWÒrjÝLѲWikñíí³æ}åEÖ×-Óš8šÚ‚Â"tµkã°$ï°ëÐô[Œ…~Ô,õ/lNö3\qÅ«Y{N[§H'9¸û”™”‡'-5ýöàúJ[Dõ%®aduÚAšâü€¸pq‚UÙèîâ‰Î© ŽŽ£Ó$ŽH1º-'–çëvI'¹¸ ï‚®¦¦¨µú;ìwi }W)ð=’üÓL‘ì·IÑía™Î§*a‚ß KIGÃwŠx)Þ'ôS5$½Ì :Zç8àƒ¤h9ÈÔåwa]¦–yêé[1&6Nøçûüg-ä°€í/$?Yèží9è%·Úbv™t°ã8tîg>+A„™e½Ë$uMœ Y!q{¢sòw n²6;c¤äæq}%<08Zj«ZZعT혵­nKr"cÈÆHîØ»Ž™”lžÒf0&@í%œ÷j±ŒõÆþåsÕ‘wé_ûÖŽ3O ÂßPËàI¥­f¨¦ bÁc%û÷4ux> ™¨ ü‹¿JÿÞž¨ ü‹¿JÿÞ³ð|3#Õ‘wé_ûÓÕ‘wé_ûÖz&d`z¢ƒò.ý+ÿzz¢ƒò.ý+ÿzÏDÌŒTP~EߥïOTP~EߥïY虑êŠÈ»ô¯ýéêŠÈ»ô¯ýë<zTéwÑ?̪(?"ïÒ¿÷§ª(?"ïÒ¿÷­†—}ðM.ú'à¦{ƿՑwé_ûÓÕ‘wé_ûÖÃK¾‰ø&—}ðL÷ª(?"ïÒ¿÷§ª(?"ïÒ¿÷­†—}ðM.ú'à™ÿTP~EߥïW"·RÄIˆM=KgxþÕ—ƒà˜> “ ‹åj¿Ödþ$ôXÿ+Uþ³'ñ+ø> ƒà†=?ÊÕ¬ÉüIè±þV«ýfOâWð|Á ,z,•ªÿY“ø“Ñcü­Wú̟įàø)Áð(1ý?ÊÕ¬ÉüIè±þV«ýfOâY]à~ ¥ÞàƒÑcü­WúÌŸÄž‹åj¿Ödþ%‘¥Þàš]à~1ý?ÊÕ¬ÉüIè±þV«ýfOâY]à~ ¥Þà‚mQ®1é’b×d>g8| +Ÿ©kƒç$5¿|L.’„q‡ û óüX?¬ÕF¢›¨[šOšž—¨[Š^XXlbùªêµEuE…Ixè+*œ«N˜fJ€;Ðe¨t w­|•ëZð:ÈÛ>p;ð±äªhêå¨ô©f~ˆZùôX +&]Îq®F6ž>¥Ò»î¿È»-h š¿Œ¶´Ö sƒ4óÔÛ¥¿×â¶”–ø)ð`¦‚Î#[±ïÿýLŽb {aŠi Oã8ioÄõYX¥s€«¬cO|qçåÔ.“’ÓŽcŸ&>‘ØûÀÙ\kZц€€ dj)ìôíæ]a»¹õ/Û8éñhxãŒix³úÞ"·Vò bŠ&4ÆÎcœ5œ';6ë•ÚMsBøf²G#K^Ç ‡±w…Æñ7Ð^é壮»×æÒÉacƒ¡k²Öh`àœA#áѳŸiwaÂRvŠùé¬ÓW\Ú]S6‡1÷Æ’1¬ŒnÆZN<¶ÛÒx.ª¶ºzºªø. ˜éh’X90¹£8å°»W™ÔßÞ¸®ìZÙe½Ç^ë¥}ž 9SÔá­¨'ü‚õ}Ÿ.Þ [¯³ŠbšwÏ9øô÷]SÝ ÜæµºœàÐ;ÉTsƒ†ccäÎà·Ä쥑F×j ˇãÏÄî«\©¿S>[|ÒÐ[‡€zlWì^{#y5of4€v]ËÕ¥cdѸ×ÂóÎ+¢m%\/šXö`ïŸhÿhTeÙ¥è2ºHNX ãm2áÁu”OÔÀ´2Q(¤¨@DE`D@DDDA å7áÙïT]7áÙïWÙ""æ ”Aˆ€ˆˆ ”AJ!DCÕj‡ À«èV޳©[ʾ…i+:”¼Od¢š±·w>²*¬ÃŸæ2èØýzöIëñ¶q•®¤¹Ópôu“TUÜ®uotI¤cœdäëÖÖ’4ûCÙËNÝt÷§µ”ÎðŽc}¦ðØ…Ê_«e¢¨uE/ÕS¼0>JwS CšØÙÐ8û9/‘¹$Žâ½v*ªäìU9ßtÊlç‡Ôq…¹Ô®¨m5akg– XÏj0 ÝÎ9ôôŠYÆ4Fjhä·\a5U-¦„ÈÈÀ{ˆ.Èöó€||ÁÆ ›¥Ö6MŠ #ò¶&i'ÚiÈù®,=鑌åuT1MUTzTñ° &, æ8 i ï°ñVí6­Î&3>ùúÄ$46n1 ¹×ÓRGG[ªK„N’0³¯!Ûå§ïgb<|:TEæ¹4Lû1ŽV2""ˆˆ€¸1fºJ9±Ò¹Ì´Ó­»ƒÓ½w‹™o:‡ƒøõŒ˜I%<¥Í<¬ÆÀXvÆHµßÜ«ƒxâZxXÉæóÝY †`j8q¿A¹ß;»­ÚÉYZn>¶âúoNžÊrZØœ\Z[‚[’ܼuÉ jnlõÆÿHù/í–î#¬œ#G¢£Cš3I.ZÎ㓨û9¦™ã>LǦõ1>m4< ÇPÇ3XN!21² ’I&A¨û[ ¾k|Ö\<#Æ‚V¾aÚ&qs¸gQÜuûžs¸]¼;Ã7‡USÇ}t22OJt.:ê\0ÝúÀ×g8öŸ]ÓRñÕ¶ª-5 ÂFˆDÚ„m-ÒNÈqÈÉ7=|ŽËzj¹Ï‡‘šÔG75÷1úƒ¿JÏÞºzkmsiâk©ÝÀ´:ãÞªáî2£»WABhêiçœ8Çœ=„5s½ q\F:Œo‚pºhþ`Y³ZZcU|ãÉÇSéK×±MqßW7êêß«»â?zzº·êîøÞ·Ï­¤ec(ßQjldà»!ÄcÏ yǃ]àU\he…ÓEUãk‹KÎààãÇtþ[Òþ*¾qäòúÕ}!ÅTØx±Ò“tA„ŸÔÏx8ð=7$÷ëM—Š!”•\lÒïf:q‘õàdw{¼"ªáÄŠ™” ⎠õH³[Riùüï¿ÆÍ:¹z~s†s¥Ý<žÿzžÑ?˜þ»üEõ0ü!÷íIØãt8kA$ø¿gè¯K^ô^’%¨‰¦œãù–É‚GMGI)üNôòèû)£§8ª¯ ú1~ç¯?RwéûÔ}Ï^¾¦ïÒ7÷­· ÕÞ!.“‰/¶é’!•¥¦NqÆ£ÊfÖ›àâïš0 ·ôw‹]cšÊK…<îsË4Ç q²°ýÑ> ÿ½ÒþQÑ~*¾qäâ¾ç¯_Swéûמñogœi_Ä5utvgI…º]éP·8cAؼ ¯¡T3§Újåw_rìbb(û+¤£8ª¯œy>ef~XClnÆÇÒàØþz×ÇÙOj¬fGÄcwIs¹Îq'˜øy¯©êgŠšžJ‰Þm.sp\wÜx†¶vÔp…ÿ‡¡¢¥£¨}qª›v¼±Âì×aÍ$“Œ€z®±WGj~Íécú§ÃÉâ²ÎÓxÆ¿.s<µ ¿|Ü»†2|•¦öSÚž.¢WMBH<÷Ç7̳/l†»Yc™µŽm[j¡„UÜZ×5‰£ÓË[ž*ë€X0rtÕé\a5¶‘”÷û¬ôÃ3ݯšÙ(Þï½áAv rC@ÜxäÎÞ® fôØûÓáäñ(»*íKž×ËA,;.ce‡qà3#ß¿¹g{>þbúÜƽۅﲾÔÑÄW; ®a‚Yl™Î‹–A-{uûE¤5Ç=0箑k·«£5}šÒÕýUxy<“±Nâ¼Ö>÷@i[=385±í¶NOÚïUK$q7T²1ñqÀVé*©êØçÓÊ$k]¤‘Ó?ú*й!ß=ï‘8©VÆµÒÆ†0¬ÔVRÓ¸2jˆÚò2œ¸û›Ôý‹K±'ô’<})†ŸÚïÔƒf©–Hâa|²66®qÀZs-ÎqíN"é ÛÀ—gâ0¢;{5µòfIó\÷¸{‹²T’]©FD"Z“¿à›±÷8á§â±Ý]_)ÄQÃÏœ„ÕƒñYÒCír¾Ø>s¾ÀjýyNj*gç9sð?5¸oêX_¤Zyøö˜Cÿ±ÃãûPØÚ:0{Ê×Ü`dÑÍ·kÁûAøª<þ‚M/ ­µÉ–¸ÈáѼaÍqi.–Í.@ÝQÐÂ(ˆå¡TUˆˆˆ€¡J‚‚D@DEWOü¡žõB¹Oøv{ÐlQ`¨R  """ … ¥*«T=_B´•JÝÕô+IYÔ Ïâ8¯F´I ÂÝ ¿ï`GPÜ;˜ :¼01ŽÿheÊ9}'‰'á©©[Ži˜Ð×7 kšÒã±ÓÝdì…Ñ_h€å¶O¾7-p'¿®Ätê¹[ÃH­sd²z{$©¥×’XÛ¨ô s’×o–i 4^»M~Æ#å¿ç˜Iêêiš‚"úAAK‰i1h`$eÄmáí‰Y¶Î-m\ÁÁ¸ äçß±øÅKKYK,‹ƒšÖËV÷ÌÈk¤$kÔí@2æ1ØÆ²íˆeEK£ÓÔVpÔtrRÝ446±Á€cH›%­ÖÓ·²FÝý-V)ã3Ÿ—šg«¨¦¸ÐT¿D”ò?8Ð$ßluÙw柔¸ˆÇ[oªƒƒK f §••/<¦h÷Ú¢'QúýKЩ½%õ>Žyp{Ž­µ–jÆq'ðÇ€Yhƒ^ûMµï…òP2GÁŽSŸíaÁÍÆNØ cùb¿†8}ó>ce¦æI#å{ƒÔ÷œ¹ÇrNùñÇ‚ÇâëgWË›=Á”±›}L®ÑâwòÌRû-'ØÒîñó•¶Ùø‚h* ©¼: û¬u1É®/e3C ¢È ÑkØ€{ÀH™30Ù¾Éj{ƒŸnÄ5­ßæô=zŒ úì<ŠK¢’hf¥¶Ç œ±ÌØü×7sÀvé•§á‹7Qñk®÷æÔЊ)!4aÅÿ}5‘’j!½"-gMñÝúÅs¹rGè;õ*Xã˜î§ÃÅV¡>ÓûTEšÈ"«§tÄç1Ä‚ ‚9#ÁcAi¶ÀÙÙOoŽÔgœØÀh“ ƒÿ8­‚æ8ÊÍÄw;…,Öké ¦Žž¢9 ,æ=ìèv?’8 ¹lê,6iâ’)mPIPj^Ì¥º öübÒA=ù>)5ŠÑ0ÄÖØäûó§ö·ûãˆ.w^ü‚æ-ü;ÆðÚ&¢©â(æÆœ¶¤O .1ˆÃÜA·Y8µ®æ4cÚ.®¯†øÂ¦ÙI \Lú ˆno©y†gJ×ÀIÓ sÛ¨ŒuÏ~p@ÀtNáû3˜æú® 4äl@ÁiçoeÄmÜp¶ºÐwêZ¾¦¾RYb‡ˆ®0Ü.sÅc\3¶Àú‡†øÉÚ¢1g$×ÓlFÏëî ˜ã9VÓjê*?—ÒûŸûç8žHc³µó1¯i–6[¨çƒy Ž.ŽJš—b¤“Åi .ІÏZý&¦h©Ú~“²~÷¬¹UÜå…̵UÓк0ã,ïlG$†±¤¸ãa’@;ã#Ú¶Šx™W%Êû%=;¤Ô×@ÖÄbŒìº\c}:²pAqã •Ã5”vZ0MmP{½ŸÃH#nIÀÛ¯]»ú³¥ª’‘òÓÛ­½í…Ïg& ÆHð2ÌvÛì2G]Ž4Öë‡Gz‚¦ª•¼øêLJÁ–ÊùŽö«— Ô¾¦’~øÜïê=>jZ¦zciâDh4~+ðZѱÉÓ—7:‘èKÍ$.¹EuŽo·È3“óoOب¼Þ¨­Tìš§œñ#Äq¶]!{ˆÈ4ÓìZëe’VÁ˹NnšèåÐ Ã]᥾=3Þ·M§yÁ·?œw$Îß©$æ½ ‚Vjir69PgñIyÎ0Á«Ï>ÕˆÈ!àÈs÷ŠãœÖ4¹Î hêIÀ 5LïšÆ°x¸äüïCvuÊòsN=Øßõ¬ »í²ŸcP%w„CWëè´—>2Žž2ö²xÇüåD€ì­nš*«„$ÎcÆgCÜîp:«uôT»TTÆÃôs“ð¯âŽØltAí¨¼ÍTö‚L4Œ$‘îÔ=ÙW¸ïuâæÔKж‚ž7b)¦aÓ7PK\@ç×ãìG^ÙÛ®1û¿?'–ö¶ÕªfwÏtFgÁé•|SJÍ© ’câïd~õ¡¹quO!Òš˜iáhöœÀ0=î;ˆZ:Ë]`©ªVÏTê Ó%%¤‘Ät—»Ø¿}'¡ËWed±ÓIEõV¹¡˜Ÿj*§±å¤ìÒø#89;(õf{¿_'“Öu·¦;+QLuªúÆ7 ûä÷)¶ÓÔÝ^î’ByŒëÜž½pI ÂÜG%]C®­£·ÞNš¼ºgnK´³mÒI'Úȼºpì”ÉÊ}cc |¡”¬pŽFê šàòרG²Hßkl£‚;[a§¤ŽŒ;YѬsœI#g$žJçUø˜Ù¦œx»[Ò_ÚŠîÝ™Ç(ˆ¦>³?Y¦ Š6èŠ0Öø1¸©fGK¤g g¿uv–S54r9®Îh%…¸-=àú+˜òø•æ—¾'1•¶ÂÁ×.Ý\4lÔÎ{óîSÓ¸z*:øŸzžày|J¼¹îϽcÖ ¹§9È,Àñê3öŒ}«#î'~õn 8Àìh{M ãpƒÎø–G¼½Íl H>Þ¿¯+"Ï.ÍãŠpa†©›†;N¢á‘ÿ¯5¥¶I‡…¨µ+²À¯¬ tš˜x訄RT """ ‚¡TU(ˆ¨""H"""(ˆ€®Sþžõm\§ü;=è6(ˆ°ˆ€…"@DDDAJ¡êáVÞƒ¯¡ZJÎ¥nêú¤¬êPlxžéMNMUo¹ÎÈôIª–às« Nûçqâ¹×Ae½TÒ×z¯ˆZÚ—S5“5¡Ñé#ïgI$44·w4dkë‚ìvw§5´`½ó°s3ôž¾9.zï]HØ]IQuºÐ‰ê#Ž9Û—9зïcI/YvÀ8ç=sëÓÕÅ1¿®gòIh䢷}ÐK=£Š = ¹Îåè…˜pvìüܱ o°Æ:›Ã°ÐJïU‹gÓ²­Ð;ŸY09-kÚ šInCpIq€A#7y¶E LÞÉêdÒ÷Ó=®iv}Ÿ˜¡¡npp]’rÑ‹ÔSC+ ªŠ.NÖ 53Ø^ðÞ´¹ “×§wpÇ®ª«Ùߟ&gæê§‡-óIçDb‘3CÃZí_ŒäîO\€rY—…-¯¶ÑP¶Z¸ÙFI‰ìnàã·ÜÛÔ´\7p´²çM\Oy«Ó(‡—4.Í+ÃðÒ4 8ööÃz çH]ÚñÝ›¶¦#j/Í¨èæ à›l«®Mxчó[³¿¼~ñƒºØØ,4¶gÌúzŠ©Œ­cg<á¹ÆøÏã¹[d\ª¿r¨˜™0""ä¢çêí78©Ch_mž}{uP·Q‘¥™k:†³XÆFNŸG@± ÎÜ u7鱞CA]jâb*áæê-äóiäˆêÎþÐv<œ ù¸uÚ[Eñ´’2¢kKçd­È=ß9Þ©õ¥·ëôߤ ëKo×é¿HzÌå¡e·‰MVé#°:¡ÏŒR†Á'-ü}yp$ø`íàU³kâ·Øe7ß›+— ¦Á(/Õ“¨æ<€þ0ÎGEëKo×é¿H֖߯Ó~$f µ ¶ß ½áì°¶·ž48SÈèÌXF u“×mœŒ8­kKCžÓ ºÆKvqr3žìàô[ÿZ[~¿Mú@ž´¶ý~›ô'isÜÑÚíÜH+"7H¸qÔÚ± ¦†V¿Nž ¹ÄgWwë‘“ƒñI·Ox¢á¬À†Ûp‘Ú²v z_žu^´¶ý~›ô=imúõ7é{DN9m|C¡Ž•–:ˆÛ*ßRǶG¸çn€ììqkqìuUR[x„ÛÞ*ãááXC4 ”ÆÓ¬êÈ.Éö0L‘ÀÝzÒÛõúoÒõ¥·ëôߤ í#›e¯‹ýaM$‡†}I‰ãm<¹1û$IùùÖÑÐcÚ çKnÖÛ8œÖHhþæÛLîP’ž]e¸v5ìdÎtž™ÀßúÒÛõúoÒõ¥·ëôߤ í 1·_Ì5DAÃì”7ü¦9\Òìžr01¨lP{°q}[Å’4žW Řna”¸<ŒF¢68ÉêN6Òz?Z[~¿Mú@ž´¶ý~›ô7®ZÛ5ºâ*j]x§µ‹¿ÁÅ(w²ÜŸ¨nppH8öFÉ[OWÑ}V/ÍTúÒÛõúoÒõ¥·ëôߤ ;Rн_EõX¿5=_EõX¿5SëKo×é¿H֖߯Ó~&*z¾‹ê±~jz¾‹ê±~j§Ö–߯Ó~+´õtµ.-§¨ŠRHc›Å¯¢ú¬_šž¯¢ú¬_š²Q3#Õô_U‹óSÕô_U‹óVJ&dcz¾‹ê±~jz¾‹ê±~jÉDÌŒoWÑ}V/ÍOWÑ}V/ÍY(™‘êú/ªÅù©êú/ªÅù«%21½_EõX¿5=_EõX¿5d¢fE˜i)a“™±Àc n¹~+ž¶žÎÇPPúdÆVÃ(Œ÷’OÛÌŽƒ$uË”âi¹pñM-Kµ468Û’Iéžà<ÊDLÎ GÍt.”Ý™C‹þõ,±¸übZ2{òæwÑÑÅT\d¦k›&‚@ßhmäOp=Fà.~šK¼Íÿ¦¥¡Œ°ºr^ðIË€03øÇ'm†çÞ†–6‰ª£|€ B1œŸvøûJÔÑ07´­cFàòÁ§9ë¾ç¸w÷”È£aÔÖ _K©ø®^£ŠØÖŸF¦ÛéJì~¡ûÖ$— å{ˆo66øƒ–Üy¹ø”Øž{‡aSWML3Q°Þ²ë†JÈ dÍ u\…áÎm³çŒuß[öRµŽÔCHÆ@ßÜ»X½nÝy®¨éœ1ršª§Î'æùÒ²·´š©âõ“m%A#@æVU69㨆µ˜t™Ãs†ì:v‹Q׈]Ūۤ­sžæÆKA$cÎ$‘ð^ ¦Õk¨eMº–Ë+„²¶lóç»p?W—í—8ÊÛ€è1Ü¢})z#¢(ŽèßóœËªQ3šæj÷ÏÓƒÍmgáùÄt–›} Ø×È ;§«–0\Ý\ÇäƒíFâ¾vÉ'¿¢¢Ž–Žq4óˆ˜+ËžàsŽäù•MáÁ´ìk¦™‚MlÓöäÌnöZÛdŽõrß­°z<ž’îH M¤ºQœqû‚ùõÜ®åY®fg¿{ÓM1Lb˜Â.tñÍm¨…í˜FèÜ!ylŽ9·pHÛ ç}·WÙ#%k‰vâÜi àw_fâÜÑ9ÿá”[. ?|v‡i!ØÁà‘Þ´œ5GIg¯4tVj[e,¬Ðǚͨsí'NåÞÆ\K¨t ã"+wq²ÐÉéÌív3\ç`Ž„‘‚1‘¿wU®·U=·c ªmŒ†S Í?懒CˆpÒ #Œ-­LTSMK;èfacÚOÎiûV–Z–[bÒ:–Ùd<Äæ™d1êÐFÐc–228è`ÑqUºz>#}‚ÏòNÐùk+..Žž!ì:sã>ßÅÛ¡àû¿­è$t•ÖÊʘ¢sBòck¼sñ霎å…Ú©•ÔÔuM³Ðܦ¦”*ç1Å %ÒŸ¥Œc8î±øvÉS_iŠIîðÃLýcÑ쥱CÔ´+róƒ¨ìG´çy刚§|nýþáó(¢»zª¶xNÿÞï¬û¡Øg=ù÷'žß½À Dãoû1æWôξ'ݲtú-N½äû“ îo½¯q>ôòÈA:øŸzžày;í1¨¶ÔS€I ! ñí4| GظJGéx^—VÜ<œœ9¹ßÄäRó«œ>‰vž`å¾ã¸ýªŽ’Ñ.Z7[¶…ËY¥ÜÒÀì´- Ê•R‚‚(‚”D@DEA@DDrŸðì÷«jå?áÙïA±DE€DDD@P¥A@DDD@V¤WU¹: ×Õô+IYÔ­Ý_B´•J §ÇvÓ#¨ë© ÑiŒM¬JO_švÇ¿u¢©ŽåNúŠú›ŸšvéÔú–5¥¯‡3ÚÑø¹ÔÉë¾þÏMw©‰î0>ŽjÍLq¦•Í.Òu`é.ñƒýxÏÝ)®&æ|-j­/ž8ÈØ˜Cz %丷S˜‘±ÆJõiëßÞT˜^ŸÒ=®žões£«l’ˆËHly{À v½DѹÎáaÒKsigØçÖ0ÈØ¦Œ8‚–}²Aë’q݃š$ ®¦äÁGÂ6G¾Z·ÍSf(Á²HAܸýì“ý&ƒÑli-Õ2EëxZØÙé®G“Ê- †éxãñNý<£4ÓOÿoï‹>ö0¸OMʷܬo¯ŽG˜bh`eä`róŸdìh'uµ}'êˆÇr À|F@ñœ´g˜>`ö³ƒ°ë³rµ6]}-}Ã,ô-†£ØtM…®¦kƒù’0´žºŽÀdêq$gJî×+÷6g‰ùOå+Ƀf†å S6çTÊ—™sšÃ4´`à ò~Õœˆ¼uNÔå¨@^zm·) |vùÞÇn×0Gqê½ cÛ?Å´¿æYûÝ5M< 껯ómGÀ~ôõ]×ù¶£à?zô4ZíjL<óÕw_æÚ€ýé껯ómGÀ~õèh­Fy껯ómGÀ~ôõ]×ù¶£à?zô4NÖ£<õ]×ù¶£à?zz®ëüÛQð½z'kQ‡žz®ëüÛQð½=Wuþm¨øÞ½ µ¨ÃÏ=Wuþm¨øÞ¹«×^î7–ÜYSs­|OátyŽHßл¿—-D×´"¬«Â­Ýœñ]¢xŠý3ä¨Hù$`ü¥ºzts‰Ôí.mÙø‹b¹²{mÎá+¤s¤…ìÕŒë#×¶Is.ß #|û‚'i)‡‹ÇÀüT(ë)ä½^¤5Ì—CZøƒs–‚Ã`:o“’m¿8­Ís=}|Ðæ9»5 ´™KòvzûŒ/lT¶XÝ#ãlŒ/f5´Ûž™ÊMÙ\÷§ªî¿Íµûס¢vµyçªî¿ÍµûÓÕw_æÚ€ýëÐÑ;ZŒ<óÕw_æÚ€ýé껯ómGÀ~õèjÜóÃišVÆàÆê8ËŽÀ)7¦#2¸p«ºÿ6Ô|ïOUÝ›j>÷®úž¦š È)ê"˜Äý<;C±'ÛÍyWj$ÿ{+Þÿýåû‘©êí©µŽ9ðŒ¼º½Diôµê#~ÌgßñÞÛú®ëüÛQð½mxm•ÖÚ‰dž×Zàö`hkO›•îÉ?ä·…¿èŠ_û¦®¡Y¹3w·VÝWX‰k}i/óEËóüIëIš._˜Ïâ[$Xm­õ¤¿Í/Ìgñ'­%þh¹~c?‰l‘·Ö’ÿ4\¿1ŸÄž´—ù¢åùŒþ%²DßZKüÑrüÆzÒ_æ‹—æ3ø–Ék}i/óEËóüIëIš._˜Ïâ[$A­õ¤¿Í/Ìgñ'­%þh¹~c?‰l‘-ÀÏPØ_CWN\ V´q+›ã禰ó)2k`n£¿’ê*?—ÒûŸû縑Ñ2Ìd™íŽ6ç9Î òO@œ 7Z×{ݧ=$~<€Ïö,úK=ÎBÈœË&@놷'}ðr1à²m÷Uú4\ÙÙ9n1Àç»PiÉîz ×_E-Mr08~Ñ-,ÕÉO5A$ë‚ Îä“ñ[Èé?¡ö¹_ˆi[îW~Â}ëÓ`hÙÎÏ ¶±­vCÛ©UtÛ ypÛ:s÷AÏ^éà\éé,íœGÌ’®²B }—1¶ãídx•¿kšèÛ# KH8ä-1‚‘•Žm´º–A ’´b8†}§~+±Ð«ÖzƒSFúšj™q$‚I€nIÈÁç÷+¾Vx)¿†Û$’–º:'°dÔJÐYïsê^£§P©áú¿M¶6}r½®{Ã_,B7=ºŽ‘Óm°@;nÙf¼9ð¹q- 8›uóZ^¬ÕYUHé®Õ/qžª›—AÁk0Öã;’0A#Aµ®æzŸ¯ÌÃ˃C²rFˆ}«Yb§ŽÃ$1×M÷®Sêêe!óч9¿Œv8´¾';¡óSŸ¡m,Q²Gr&©u#Ãã}kƒLNfF¡!nH#|äíqг„o±¹ûI蹪˜ýëO3)­tü×±†¦®`â#kXѶ¢Ý¸#sŒdàôǨ8ø•¤âFºËq†;TUÄÑUsôÄ£¤<Æ iß9pös’ˆ‰‘ºèAØwnµµ­m4ÒTÃ4»ïÄ—KŽQ'@ î44éqž¹ÔÑÅ3dl¡ìk„ƒñÇP~Õjç«‘¬•¬,š2\æä`¸¶ÙŒùõBF# lR> ‘’ö:Xô6g 9®sGMÀ$±îªÏk¿Ü("}ÖðÊ8Hªk@ ˆ3N‡]Æp:wd-­‚µ²ÆÚq=m_±ÌmTÔú ã¼448jŒv b[]Xî!’…÷ŠX㣣·ÒÂ3É †\ìw ÓóGq!z-WVÌÄrßÃòãù|\+¢6âg=?çþ[M¢‚×Ì4q9¯—׺GJ÷ã'Ús‰'©ø¬üy}¤§M²Ly|W ªš§3.ш3žò}ÉÓÀ{Ó9ïϹ:wïQN¾%:mß |O¹:x7ûPZ«Ç,HuaŽÉ>]ê%qkMË«† ~0,w¼üÿRîÜÐö–¸±Ê渮ÓÙÞã—>,<œw·Ùwö•G;j— ­¡~¦ÃпKÂëmRåƒuFØ)PÞŠU”RT """ ‚¡T¡"""*ˆ€ˆŠ¹Oøv{ÕµrŸðì÷ Ø¢"À""" ""E%B" *«T=º¯¡ZJÎ¥o*þiZ:Î¥«´~áþ ½Í%âÃr«ÕDÈŸQDù5–j~¤î~–¡«8%k«x …î|KC#ì|EA4ײvŒÆ^^Ù I:ƒ÷¨Ç³‡4l rWEÅÕ6ª[ÝK¤¨š†¹ô‘J‡–u?¨. ô;cf€s€µ”wzj+™¸IÄ÷*ºz|™©]šÆ``Œ¹ÄãÛÚ³Ž§l{èÓÅTD㗆䚦'tµ4ÜÂRÒGh—…8°F÷ÓBç—2y˜ùd{²Îfw'KZ 0⺋=5»…®¶ÑÃw§zcÚÉddAí“.$» d¸ùë VŠ ­¢ŠÚúj«õ}u,ïiqqI5À—ä‡kkø9!¸ ªw Õ:7¾ ¬‚gä‰\GL7ÙsŽãËp4ŒnY·n}¨Ä|V+™Œe´¶Þ mw¢úªçNçK<#® Îw'$Œd`ÆÙÚ-m¦Ù= ]DÒ\ª*£•Œ ŽW8†Ddž¤ôÆéŒl—ŠæÎ}ž¾©æ""ˆˆ€±íŸâÚ_ó,ýd,{gø¶—üË?`WÈDEj)'™ÜUY¥y‰°´µ„ì³Ü³îuM¡·ÏXö¶–ާ ìè“]9$“Ê=¬=¦Þ¦†ŽŽudn‚¥ÒE>/Ƴ¾ç§Šùµ›:*¯ÏYïã;žª¬fÿeû‡pÓ–‡xŒ­]´‡q Ô´‚4Á¸÷9lOò_ô?±p½‹ëÿÏ»þöUé¿w‹VñÇ3òÕŠ-æÕUôÄ|ÿá×ñ l¶ë=Ed-c¤‰¹hx$~¥œÃ–{ÆWžö“]#îvØ©k^êY[({c”ò߈g;€ppZ>Ð<os{â²UI‹^Êg¹®A 8*[Ôí_»O*">²UkÑ9ûÞxX¶VO=âáM#ŽÆX1Ó.x?î…‘w¯eºŒÔ¾7<Œ4ùý‹•춦z¸ë§©•òÊã‚÷“‰êý@GhW ¸¯46æKŠY¡‘ò3H܆»8ÊáN²iÑvÜæw|gsScüY£§ÑÜ-m¢¶zªÛ„2éÓO.†`cmúüEáïŠÓY$n-{ {šáÔÓ‚´ŸI$ÐÖK+ËÞ÷0¹ÄîNëÕvôƦݸç™s¦ð濃s­e QHö9âI™¸¸ã+)pœq_XÎ4²Û™;…,‰ïÜÇoãÜ[’Hlu²ÄòÉÜ׸ uRÞ«j«½(ò̵6f6#ñ}g ´b¨ÔÍ™Ý\çßõ­GÔÓÐÒ ˆ@¬…æ-c^öäã®=¡¿˜ñX½–Ï5W ÃSQ+¥šR#Ür\ã %h¸—þS©¿ÍûêU㿪ª­þ9ý!Ò‹1ÚWOá‰ðWÁüQi¡ãKß ÕHøë*+$«kœŒFÆîâv9i»L’9{,¼ËÛ$o¸Äæ9§!À²2=ár•¿òãsÿö“¼ï‰ÿä&_ó”Ÿ÷0¯«vçýV‹é™ðÃòꛟgïW<¦ª~V~®¯¤-ìç€Ú×M@=ÚcY¶þ+««í‚³…c––Ku=­Õ@ËÛ(|CçÂC¶<ÙÏ^ÿ¡-ÿ²ì÷ÿxî%ÿö3ÿ¿J¸hjíj¿Tò«GÓÖ]ªÄèíSýxÏÿáí(ˆ½o¢""" """ "" jåô¾çþÀ¹ž-ˆKeh0A1nß0d“ñýk¦¨þ_Kîì ™âø"©áé#– YÚ0í-ÌyåÛ‡ŽXâçbªyš›W4Í/iP±¸ÖÒàöã¾\‘±Npw]Õ&ànO¹yí²¢)æÇw…ÐDàæÓÚáØ[— Y%ÍqÛHöðsÔ÷öç™!ŽB×°¹ è#vät8ïûRcÚG°ÎÍW>%[‹fçfù•pî{ÊÓläîϽ:xrc=ÄûÐQ#,/†@×µÍ-sKr邞Çr‰× m³\¨ê+Ò]<%­ˆƒ‡ 䌜‰ÎCº¶ïñŽÿ¥¸Ôº Üšú¦êÆRÅL¼g9ycÄŒƒÓ¦YXnGS¹9ße¥©3Áuš²)«*t¼ÆÚFœDÒXþß8ÜÐ é¹vèÁÉ>å‡xŽ'Ò´JÊ’Ý] .ÉöNÇßÛ„FiêçÞµZ6Orc梚©k[Î s_©¹½—䇖àe 3¥––'Ï †g0Ǩ;CˆÜdlp{Ö5â>mh mk\ö±ðë Ìn:^wÙÀ4’ZzãÇs«ÙOhÇ£}àÇJáˈ´`4 {8öq·Ez¼Hú)D"ÈXt‰ÑŸéc¹k¬2ÔO;'«´M3bˆÉ %Ñ8°¨“’u4énÎwÀ=FzxHàÖpí|5”ò±•ÔõSA+™/)¸åDi÷ xó9µpúE,‡7^2Ç9ÁµØ=pp}áZ¦|0ÖËBÝ !‚fF"- i8>×CíN7ê^}®¤äw"µôò‰+×<ŽcÞÇ´± í@=v#;üedê ¸i$}ú<€FZwîßb>õƒ_̧¬uDpÖÔ=º^#‰û5¸ÁÙÎ 'Ùé×®:•›q´ÔrU¼¿D˜üDç#ça­Üœg¦O¿¡´ïÜÍ]Y6ÈA1žìûÐÞ¥­òVÝ3@]ïQ¥Ìç¿>äÇ~ó*Ï6WüÆãÜ“#·{±ï9AqÒ°u~}ÊÙœôc©±0x¹\4m¥¨,éýIà±já$…ä‘’<œ0Gê°ëÜO½X«oÌ9hêÂ3Ó=?X<À±ÔõO…ÿ9Ž-?a]š\€2µÜW&îehöfhÛÐþÏÖ«´K‡ Ö uð»- âŤ~ZR  ©P‚(‚”R¡€DDDPÊóޭ«”ÿ‡g½Å(PB" *«T=¾¯¡Z:Þ¥o*ú¤¬êPmïWzj}ZnÐÐÕ†²\Ëì·CŸ  DiÉvÀg9ÂÖ¶îúÚ©mÖ¾&²MTç1Ì¡²HÖrðáËoôš\{ÏpÁÚq%-$Ô`ÏODòefõ f6Î7wxÉÇzæªeŽÛÐÚélŒ«¥‘eDòDymu>]!%áú³¨’î­vrFHõY¦Š·DN~fs†ÆKÌ´ÔâJŽ%°´ÉPæÆ_PÖ´ƒ‡1 ÷» pǃµ~.l,â c¢š ¥LJ,Жç,ÆA$û¶=vßM¬t>ÅŠÀÊI–8Ûbys@%„ möß23Ô€ pΦ—‹)E;m–ÖÓ™Ûd Ò)à ;üüwŒ ±Ðçn•ѱžütýüHž,ÛM'SÏOé·jˆ&§Sºàƒêíæwö}­Ú欕`ki™u £m3˹îd€º«ÏǺ]æ«™ñÂd©žmr? žRI'$á¡nkxÒëxãIm4x69-uµÍ§ Êà^IpÈù½6ê»~(ºÍ²Šª×s£¥lï6jˆžøäŒ·æ#bròn¸Ž}Ý—¶]ëiªãa§½Î>Æ[&¯a­Î¢3¤ “Ñ£q·¥¦ŠogÉùnÇźé¹Wa³^"Þ3þ¬uüÜEËØˆ¨ÛªêiL±ÂZu5¢5ãÎ.nz«½ÒÂËÀÏ5t¶Z“$†=..×6p?Râó-l´—ëT´ååÑDus£‡û@ÇœˆØÿd79ÈÆwoAÅW>Ñ–Û¤t®•¢vL쵯ŒŒ¡ßŒö;Ü t%bttömDýɉÏ\N~ Çi›·¦¬Ó]3O(Ï>ùxSÖ-¶É,äðôZœæÊ9>*ž&¤©tÎ-¦˜Ÿ¹ø[‘몓oÔWÐ\3S]ª§¼Ü#««Ç=¬‡Û `ö\ˆÛŸi®ÛÚ# xgIh«â8ã’ª~" ¬¢§‰’Hñ‹´·S´ˆòHäq–FçOÑÛÿ×U¬ëLÓ<÷>]ŠŠ}V‡oSVq×»õpü3U5¢Ó÷ÑÍ/£ØíùŒ ?yé²vAS5϶»éÔsSG]gu@cÁö9žˆí9Æäd±zoÕ×6ª…ÖË­5&b‘ù•Î,~K4»HaÖе{MÒ«8 '„§¬ –‚å_]d Œ¼ÆâF1¤Ÿ˜Þ®cûݸ;š<Ú[TØ¢åÕ¾¨þ_Kîì í’žÁHÚ©éçŠhãtܶå®Ñ94eØ;-ÑNÕQ Õ8Œ´tw()g’š¦®)gÒÑFCœòs·i. nq°É]w “êæ4ÇXÀH5¡îÕíoŽ˜.-ß4õ'”¸W¶šX¦õ•H§­’ÑÐ:¡Îç±®ËH#ñ{Æ È  áâêzrÁ3+Df¢¢`^ìci8{‡ŽFäÖq†æ3½ÕÅÓ8Ì«|O¹[‹¦p™W:çr}Ê"NÞGØO½:}§^â}è!Ûcp1Ü;–»ˆ%’à³W±GIN%|™é‘¥Ø½ëdzN=ÝV-Ö'ÏlŒ}To,%®§p‚7umº‘a] ¢¢†Éã`!’´‡·nŽÎùUUÀ*i_ {â.i½Ûü €‘Ìm5Â(„„‡VJ^÷’wÆ\â6ÇNü…²°e aÙ!öæÁèm¤Ð÷rkÔpí[gPÃŽwË·Ýf0æ87¨ÇP°â4Ô÷)¡æS²J¬J#Ä’< 9ØÎãK[ÓÀ¬Ç'$µ ÷¢4ôõ ¤ºEM-]¾ž74Á6’dqiö}½XËÙì“ílw[ŒáØÎ6è;—1z¼ÐPܦŠ{¥‹Øç^×U8[Œe„üç5™Ü¼t8ÆÒÏqšºŒ“IYNø^bp©ˆ1î-üpŧ¨#eF]|¾ŽY9Ž¢@ÐrÈÛ¨ž›ã¿è7Wß#Wôî Iz¢ºHúš¯ZU²‰´ÎÕIM ]3œü–;®­Ú@ñhñ!^áë5º M;«Þg‘ÏTÔI!SŽ=¢zg@nçb¤ ~$­ ’ vÐÜjDº˜YN-ùc°%=Z܆Œø¸gÙÕ‹Ö!vu+ ª¢´ñÄÖF$¬tòìÐ0÷8eÇÅÅÄ’ç9[È5Ð鯶ì»I'ßܵöÉíôUŒÇEn}[¹¦ç°HéHA¤jfpO_ dl!Œ=ºœâ7#û?±^llŸzÔ\.5–û“áŠÓWWŒç™##8Ó£Ú#7'»~õ~+å±ÔžZÚ@IÓ¥µ ~I8c®{¶Îë¤Û«ˆqííÄÌLãÝâÙgÏà§ÏiXt5ì¬sùPT²6´É$%ÙðßârËÇ—ÚJÄÄÆét¢ºkŒÓ;޽äû“ ÎÍó)×¼ŸrtØy•:øŸÔ¨®t.cKC±ìùãñUõñ)ÓÀ äxÚœIESAûÛóîk¿óÂç­Òix]ÅÞ˜OEQM¶HsFØëí7õ“ð^Jâ×àìB£µ·I˜ÆëbÓ²ÑZ%Ë@[¸ÎËBâ" ‚¡T©@DDD@*•R‚‚D@W)ÿÏz¶®SþžõÅR¡PõZ¡è5õ} ÒVu+wWЭ%gRƒ£»°ÉJ)ùþÛIn·7íÛuÈ×PCëú²î¨¨5pÇÓÇPöên†ìpÓ±9'.îx‚Õ¹¶öÉçŽ~[)Ï(àèæž¸##mÆs‚åªi¨msÇKWvâ—K;CuÅPóóÙi.Ï_½‚r}—o¹Ï·MŸfwÌpßô˜á†f[{E¢ŽN ŠzÎôJ˜œK*£ï`å{,ßlå¸;ݳ°HìÎÃ%yÝ }7\N÷²IèòNÂí 0^FÅ ‚2s’H'6ÅeeÞŒOöþÚfꦒ*‰Ü\âМ—œç9=¯Ú™ÅUÎ#þsäF2íÁ8=:  Œƒ¹98,ILø]Ä7¼Ë#ý$ês@#N|=¢¶–ë¡ÕúAºÜª0æ¸2Z‡ 0·èAÕŸxªóUE¸Õgá+™nqQ=³ü[KþeŸ°,…lÿÒÿ™gì òˆ """ """·Süš_êØ‚â-O‰Z ëÍòʈbáçÉ6‚a>D¿;ñC}’4ƒ¹çj!¦Äepëb³¾GÈë|òç;’_¬ïýokÞ¦K%¦J(hŸA ©áse»4¸88ý¡îÇQZk=]Emº:ššI(åqp0¼’[‡àuëYÆÎp¡§Ãˆûéïò^=n§Õtõ^ÆqÉßK§õ‹ÔÚÎ2ëémÊY›5=1½˜ÐC~n·‡²ÐßpV™b³°å–øAׯ8ßV¾f?Ú÷¯âÌ×ò)o\—’£–‡œ¹>#ྪ+ãKàs8¶†x§k¹Mv’騖à䱯çÏ}¾}£™§k²ñŸü_b}8íO¤u>¥]4c9wsìÊ»ž®:xªmÔòÇO*¹»1žÏ²‡²Ý¼‚½²‚Èøi˜ÇHG~§;âI+áÉo(æ–3GQ쌰óIæ%Ø}½ÞdઠúʈÜé›4;9çq¿wê_£³Tâ.ÿ¶|Þ ô´ÄgcÅöŒ|?eŽ6Ƕ5£HÁÀa`ßÉ® xª¨±YêÆMn§‘‘ kKv‚n<ý‹Âû$’Gpœ¥Ò<ŸN“©ÿòâ]U\óÅI4°±ÓHÆ9ÌŒ;È ÷g¢ù÷} 6ëšvøOOÕòµ?j¢ÅÙµÙg‡>¿¦Geµ29ÚtËáx#:˜âK›î$œøýŠ–Xí,Ìe Mk€ÆA 7HÉò Ç©o7§ÝISe|Q9á¼æLç4{$“ó@À#‘œôñÞkÒwÅsEgúükû_±8›?î'¤TZ-“¹Žš†òØÖ0ìÖ´ä:`oö:ª·Û((#èéc…Ò|÷7©ÜŸÚI_.vPø¸®æ÷Næ1É%Ø×SsÕJiïñÂ3¬·ÙÄí»šqã/ éñ<^¸ûK™˜‹^?£î4_Eutu<÷ñ$¦.y-'8ñÓN|þÀ½K°©Ÿ'hÔ•ÏiŠR=¬ƒ÷²³UŒDÎ]lý í/Qk³ÆÔÄg?£éD^wéD@DDD@DDÕËé}ÏýsÜMOeŽJ*¦s)êÊ•¹#S\##}ú.†£ù}/¹ÿ°-ð8ÚýŸœ K}ãp®q‰ÅYª%…Øg–;t”O1Í›PcüVÆrù-'ݹ­Ý˜‰™RÛuwÞ€U\ߣ!­k僂 &•º°s0AÀ#Wn‰”÷êú¤¢£Žã:Gf™Ý)\Ž8Á=ã9Î:lVÒÑiysÓ\kcn©Sså†à;I£Hù~žƒ|û õ½Ö×]ÿ¿ŽY£}8èî)œÇÆ$ŒµÍ#!ÙÈ#Å^ëÞO¹k8z)b¤’)[J4LàÖÀ0ÖŒç¦69Éûzž«gœ÷çܸ´tßfù”øŸÔ7Øy•C¥Œ~1w¹}6ÈA@Fœûú+\ç˜Àh™çÚØƒOoŠJkÛÛêê·2"èÅuEPy,p!£%ź°7ÁØý»—LÐ쵤ù•¯½:ãM }_MM3œ$óhd'ñK†2ី ì¶4ÏŠZXç€ÆøÞÀö½ŽÔ×2=ãÍYYß½ ¿äµÏKIfˆA>˜*jËÞæ‡Ææêh ]Ìs€ïi¥Û´ì¶ÖêJ¸h ŽãZʺ–06IÛ/šGãiÉÁ>[~ÅrîXmUNqi …ÎË£ÖÐ@È8ÁÎ1œn¦ÙW]6¸*#œ0è|p?·=ê"ÅU%3XÆG’HÁ4¾@pÐ ýžìrÑ9šŒ±Â­¯‰ÅŽô˜ƒ^v†’0FãÜw]­dòR=´õ‚PAlœ½``ç½àƒðv à­u®±ÓÕ1ÔôÕrÀIˆÔ>@[¤=¯cIöšuiÏÎËH= A´™æ:y%l2LXÒàÆãSÈî8ÉóÂÓØD´ŠßTtGV‰ª+ Ò=ù$g[‹÷kuü¸ä ·xÜ9Îû®fåLb¹AUr>žW1õµ•2(õ5Ý6Ôw~!ì28Ø€ó+A9’ž!qQѲª!R9¯xaÑ©¡®ÏCùÈÎß#{Ù#4nk˜à ^AlAÿ×U©ºA#jŸ-3hé²9’ÕÊÀHËK[¾ÎFrr=Ä[!ºÚ ‘¶vÞ\Ù.œUòZðîòá±>ÌãÀåðͦ®e¢ÛC˜Šgj.qïÈi뎽Ê󢧺ÙjíõDVé.‚q$F÷ ÆAŠu Žr6!jx ¯‚9 –ßd¡-qˆEESÌpÀikÝÃV~ͻϪ*™³4ç„þ£ÁrÜF¦šñÇéðŸÎY=ÙÇSèüTtÛ yÆsìçÞ¼¯yŸ<û“¦ø̦søÝýÁ1߀<ÊQÞ}Û'O§^ò}Êz} Å¬Þ{œÜdøÀf¥çw¸}ó;öKµqßûW¤U~¼Kvþ¯êÊãxÞ˜²H*<3>íÇöª-Y¥Á®–Ùjã-raáu”/ÔÀµ8)T…(%ARˆ)D(€ˆˆQRŠJ„DVÊóޭ«”ÿ‡g½IDXD@DDD@DDJ …CÕj‡ ×Õô+IYÔ­Ý_B´•J •úóm†«Õ“\ÝCRrêÐì¹úFãn¤¾Ùõ MYuŠ7TTÓñ¤Tðã«©yÍh ‰¹9qÇ´IîùîÎtåtWê*i¢l®ŠLÑÌ™ŒÎ3œeÍ>ýsWZWºµ‘R–6‰›U ü9.nnÚÇg|‡ ¶{4ýœÏ ~R“ÂpȦ»‰®1i÷Çè¯st‰ÝjK›æF1ƒºé,s:{\2>±µ¯9±rÃÈq ß#OEDzšæÛ»dðo,HæÃ?'`!ÀjØãbÜá†×2Ù¢¾;|o¿@¢Œ³9àç9øíœ ¨¢˜§1ôúD$rmxš=³ü[KþeŸ°,…lÿÒÿ™gì òˆ """ ""‡´9¥®èF ”A£âIª’)ém59îk£‡Yp'¼e§«šÖïíxàl—ŠUÃXθ‰&‘¶žFÈ$ v¬¹ÚZCHÒ~v‚ßk$»âHn3[Hµ×CGT ÐùAÒIkšÇ™¡éЭ]\NËUOG®j1÷çæÏ£àN£tޤ´ENé1¬ÄKK±’3ƒ¿Sñ+p-T!¡¢#†€¶z…š‰ü?Ký¸ù1V¦õ{ªªgâ縬¶AM%%¢jã,Ü·†:CËn‡»YÐ×e têáî6xYæíÝ]b¨¶¹±Dý2:Lê{ræûMní;mž»àä ·AWSDبký¤—rݨ NÐì7¡Û8'c°+†£ªŒÔ2¶éeCY d’‡ˆÈŒdÄ“Ð8*ÒjŸ”1Ú×Õ~¶Ål¬¢¨£¨Î†¢Ã+DŽcÚZávؕɞÈ8≿×&þ%ß!è½úK•h©štÓ±¾b7oø8]·EéÍÈϽã•| ÁÐÑZªÁWY2xÄÕ¥ÔøÓpÂs’@ '1’6Ö>˸áM4³ðåM)ŽwÄÖ¾ª¥¥íiÀv¤àû±àJé+bâNEž8®ÔQÖ6é-u@¡ÃNHûÑÈ=ä5¸ÎÝvÝX¢¸EM0¸Ë’:¢G3DºÃYŸddµ»øŒmݶ«ø–³ûµ|åÊt¶?|š›7ðÍžŒÒ[èdŠ!´Î÷{DNIðhVïÖš t4¯¥³TWª£…íŽG“pd8ÎéΚêV ê+„°@-ÕÐѹµ1:WI½q‡ LŒtÎÿ¯#Z»ó9šçæå_£tuÎÕV©™÷C‡–M )‡×:6½íÔi!¯kGHûó²6'8Ýußs6«;ô®ýëY]ÊKý,,–cm@v¦ ›€á£K iØœ–äõÏVž³{~~lÏ¢´?Ù§åŠû7á ª;•Æ¢Ç5uC ‘æÕL Ä0û4÷ãõÉÅÙßÔQC-GgUqK-D0e5"7±…ï%­!¡ºÜ0p=“’ÃØnFÐT:*ˆ©¤¸¶i[©‘œ|ç Œ×¨÷®zšžúûm/£ß)«$çC%E@”ã–Àæ´¸aÇÛÆß8‡+—iVxºz†–8[“†¹ösÁ”ÒÂ){?¨ª¦tgÊ'¼·8?-Ѥ¸œ´g>×Là×…ø…¬•´÷k]²jZ–Çìó'{‹›‚ KˆÎ¾›‰eŽŠJ{ý+)^׉¤"L¸HYÓvàè9ÓœlCºˆ9‚ ‹LºF²Ñ€N7Ç’³]]Zš™Š¢Üf;•¢"ÃÒ""" """ ƨþ_Kîì Kuþ@=ánª?—ÒûŸûÒÝxTq—ºˆísP\媡¤§§¨äÔK4:žXâ4ÆÂGP·PÊ.î’*:ê¶¹ÞÓe¹=Zu³q³NÀÉ#¦ †î écÿ®m Dn{å‰^ ziièOÚÄeað¶šíe ¾@.WyÌÆhM}c¡tOic0r2ÍE£9ÁÈqZ›‘8§œ~E4Nùå/E ,†œ}â&JïnAöuž¤m¿¿ '™3þhÛÈ.fiç’cK%Úê#|R6 ,s´êç[·n^ÝñŽì‡{aæz$mKAys9î̤;Ú:¶Ø‚K{öh99\Õ“ÉyÝïõªÛ6.÷ªúo€<Êuï'ܪÙ[äŒ>õ=<£¯q>ýkø†Hµ¸6–Ž­ìs^Øê]¦=ˆÉqÁÀ=ÇÜz*ìÎÕHÐd¢y)†Áà79Ü;}½Û–æµñº'€ZAin3´|=9Šº{}E]¨Êc¦¢Œ´38¸’}­ÆÛ`a^KÉ»{,NŠF‰àZæ‘–¸ãö-=Žªo[TÒÔÜ%¬“F}š72t¸‚Ý} ‰= Î8Æëuúç> Qtq‚ç †®½Å¥Ò²–ž<ë„ãŒiëÔŒ¸·|€¢7çwœî¹ïFî«d°Ö×Ošâ?“-%Ìå–÷áäg–o¤i]êI÷-MÒŽ®°™à©ª0i…ÇüšIk‰þ“›3†Cƒqm"sŸo{4¸€\Òì€Héžõ«â*yfñÁCE9’<>ZÌ:À{gS–9çlg@–UœJ(D3GNÇÄtb š0;òããßµw:xªé93RÅTÇ.…ý \4¿9Øû.vǯD÷žæ?M,ÖÁD”TÓ=ÐÊ(ÁÆFá­Îz4´<ôè/Ý?“‰iu‚QóNÍÿkNÙè±xv ¨£•µP¸µÚ#c7'Ä }“œ`n¶e­{K‡·¼cbœF®ÅV'•åµòÖ6HÃÛ/#d;K€Ç]´“‘ŽýÊÖRYî4ÜA]-ÒÒ½üÈäôwÜ÷`¹îÁaŽ™ÊÚÑÔh­–QQW,l‰²0BÆeÎn ãø§-$6ݹÕvƒWUm¥‚¶šùIfò稖˜Ê÷ã%­`Üw¿;y÷öÓíM[ÏÞòêé¢hÚ«>ÎýØÏéïu=<Lg¸ŸzÔp¥skmæFÜ&­É™-!ƒ¶4Ú߯q>õκfš¦™vµr.ÑÓÂ|ŒùücÀ|Jyd §Ñïï+.ˆÎ{É÷'L›æS9ïϹ:o€<ÊäH\÷Ò™­³mQ·P÷³÷Úº¾%aV0½¥­Ã€v:çñOÿ*9£~—…ÕÚeË\¤ñZéiÉù-ψ[Û4½V tèª ÜG-V¨©( ¨U*J" ""…* DDDTÊóޭ«”ÿ‡g½A±DE€DDD@DDD@DD­½\VäA¯«èV’³©[º¾…i+:”+Ô÷7ÜýttÆ&HÝRµŽÕÌßœäüÜd û–«Ñëk*<ü%Ò5ñÜÁpxºKH#Ntµº‡€'ß ìVš¾%:ª Å\ðˆ%R` 9FBtçO´Zæëêù¹Á<¿…ìÂŽêÈ¥ã ÚhXÊòdŒHÃr ZÉöž Æ£$0`…ìµM{9Š~?¹„Î÷uIÑCDË QSò_®â‰§ {›œä á·³€u%]ÊÞÿUÓY)ƒ#lާa¸ù#k´A'«rIêðyEÇ„,•,žÅYGÅ5”wWÓ;šéY®•ϘLâ$'`] Zñ¨å»d’UÊ®áè*®uN¦â¹g¤©i2GËíNÕ¦0‡Í o¥Àn×)WiWx÷÷ûúîýå3^‘h©¸TÂ_p¶ŠìZÎx”ãÌ€}Ùúã9y%'Yi[4ôöþ5-‚85ÒFöÊ[LèÁćh»dÈâîš—jþ/ 0ƒÃ×ÃÍi;S´éÀiÆC°~v6'æ»À¬M‹“;©ü¼Úç‡LŠÍ梙“: `s³˜äSH8ÁÁ#à¯/<Æ=³ü[KþeŸ°,…lÿÒÿ™gì òˆ """ """ Òñ© 8¾ÍÊ„Õ3AvLÃ% c©Øÿþáih(¸jßÃŽ§§»×š:z¦>IÈæÎ ,!ÌÁϳ¶“×twúŠÚZFÍCjmÊMG1¥À‚AÏ´ÖŒyç¨ÁÑÉq–k}4­àépÚÆ6 zˆtdkh“Ùkƒp'hq8\nZ´Zx~˜¶*ksÙ {!s]@3ÆK€.ƒŒ¸{YÆ@õ²\š£UU/„)ééñØc“ìÈÒbÁº\Z@|ïauÉ(µZØßG3%ÕËtnÒÍGß>ìÏZŽž¢ÛJÚúéä º›žÇéËF’ Ò× nN0N1ì€Þ†¬‘K16S¡ß{wGmÐìzûŠå,u¬·2£„i(&5I R‘ÃŒ-ÀÆ3¤àà†Z§3“°DDn/¦µOmd·wJÚzW™Á…ç-c·Ò.ÀÉÆq¸#ccƒÅ¥®ªõ]uMQ,‡™ÍCp¥®cA'IÉÜcl6éjâ¡.¤ †¹ÞÖ¸¥yh-Ðã¶ì’@n1øÇÜp¸Ni¥ó¸~+9åÀt³«‰Œe‡Ùh%Ÿ7-.n1¸9hBòoPôD=UÒ›†Ùb²ÅUu¬†–ž:ÞŽÝDi[ÊØ€6ðÈé¬ÒÁM4T“>hý*g’Zt…ÏhÀ€çÞsœ’r¹Ûµ[â´ZŸIÁV5ð’i] ™è¿7-Ä@ñÒNŒ–ôö¹ÍE;ÜiL[<¬ÐXæç 8d ‡k#múžªŒ¥§â±e4ÔB÷R`Ó¡ôr&|z§Õ˜Ûì‘«~ã¶ÙîÈÜ,;µEM40ºšÛ%y|ñ±ícÚÞ[ ·ê#!½p7Y‘É› OQ<Ž­®{ŸQ$dr>2dËâ]§X9ü!’»…ÌÉ_v¢šs 0µÓH[,34s1£.u;ÚwBÝšK†IoL¯"x°ï~ˆlÕ¢ºa!§xžCŒ1šN£¸#až %ÍRCí´ÃesVO‘üKMRjâw-älÝ9òc[ pÈ<±‡ga9um?JhYS]U5O¢SÈ)Üç9ƒš5hè.$¼`·~˜ö°{z>W¢CÉy’.[t8œ—7÷®uõ•~LÉxMŽ£}+ @òÛ‡‚ÁNìà?cÒ@ç:ÜøŒN-°tœtÛm–¥ª¹+DEcT/¥÷?ö¥ºÿ ð·UËé}Ïýin¿È¼*5ÌÙ­xÙp;øt?¨•§°RGSU±\­õ×c©mS&¹30H\ ŒÿG ø-Ý;Zöép¤`ƒÞ®H$¦ã»EÍ”w Ý=<”sJÉG£Â:—9ºIÔK@¹ïÊç^ìTÝá°·ÎÚZæBn–º.p.ô[e&²r3í?}õs0t·W‡P¶ÖNʼ>–´‡kŠJš¹G0–8¹ƒF ê“v÷4uü]M}Êš‚QJûý²Ôîp£°D×Jçད숈qn3¸v@8;›3jËéè_$a¢_H¬•Ì sI°´c <ê# ãc§ ìNùt}ÙÆ<Éè{É÷#Hpn# ç)œ÷“îP:xëâ}éÓ¸2|Jèìl23€´—IßC^éd¹>56_G†ˆÉ$½n@%ÙÇ@5-Û¶pÜw«âgË uL¹MAR+™KÏ/`Ý8$nFà'¹aµ'§µÐ÷-mýΆ‘“¶*é ]§—K»Ý¨`¾1œnzu$ •“kv«|M>’4Yô÷äé˼sŒç¿¯zÉ4;”X ’Y¨£|ÐÉ Ü7îÃÃ$mžÿµZºÒ2®k‡šbÌŒˆI Hí.Ið:ˆ>ýÕiõSE¢ÉM(:=ùygÚk†Ù¦@ÎrdÑG42A+c‘¥®¼¸ý¨569©£©4ΊÝîŒ5ŒŠpéœÖ—û/ü\õË·.éß¹m<‚ÑÔ9ô-ŽC%%¾š‰%–¤™+wܸ¶l“æ07Ýô#p2:"G2û…U=êœÕÜ飦‘îo¢RR>gË(¬€Üïg9Ӓѳú|ûC~¾ GÄz©á3Ëq4Tº‹œb„ê8ç.ü_˜}£±ƒÜV進&4Èç– ˆ8ï8Ûö- %Í…÷'Ã5eLÙgÞéiµÆæaÍsÜ×c¡x8ÑiÈ'9WH«°ºVAPÌi©cÉÇ]@:dò«¾†ú4aí¸9Îa…ÚÈ,pÜ·Úh𠌎ªõ±Že`sgÓ c¥½ò7HÝÄïž ç¼$UŠ¢Yª˜ª&%‹ÃVÚû]‘ÜoSÝ&–Mn–f5¸8††€Û¢Úuñ>õ©á¦ËUÏ[UY,uo–¦0þ m 21œg¿+m×Ä­ÝÌ×9òfÌDQ3ŸôÛ yòϽ:m³|‚c=Äû×7Dçú]ýÁGžó)Ÿ|åö’×¼Ÿr³V͘ìíi;õÛöàýŠösÞO¹S35ÄölÝ@ŒÐp]ŠæÙñ+}ãcú°¨µI‡¹ã(9ÖÑQ¤5Ѹ<ŽðÄ|bæíòixVmFýL !km’e€-Ü-U*T„ ©D¢’¡(RT "" ®Sþžõm\§ü;=é#bˆ‹˜""" """ ""¢NеCÐkªú¤¬êVò¯¡Z:Î¥C{-m.’hÇ1¾ÔnÒ}ÙÈÛí\âãMIp|_/4<Î\Åîf¸ùaŒkÃ7.Z\á³O™vw\Aà\M5}$tndläÎÂF¡ .=Vå¿ÛÓàŽàË«›=æÆÚ©£×(ž&îKKcn ÒCÈüQ§ÏW³Mnœæg—2Ì£ªÛê+¦ã:ɨ¹¡ÅÆ„‡DaúFÙÓ¤8’A>' ç+Ý5Ëѧ‹Š®”o¦¡ º„ûe²ù\Ýñ¨Fáä2r]ŒQÕB!§·Þl-Ò@žbÃâÈcCCX0âß`ƒ€÷­ù“‡iL ÿÙ±™ ÓkY¼8'‰Œù|Wj«¦™Î33îñ”ŒËš»\hê%’vq}žšx߈P¼´#F°CA0oŒø@Þ‚QQx}-?WÈꨛ谚?b3‚ì—†Œå¹Ø¸þ¸ÇNÚ+=l ¤ ©Š"XÜFǵ„ÀðÁ©^ކŠ'±ñÑÓ±Ì%Ìsb´œä¶''>ò¸öôÄcáðä¸ËÍi­·Õ‡Éz©«¥m3!m<¬nÎwêêIðÿÉmÑ–ºæ¹Ì´""È,{gø¶—üË?`Y Ùþ-¥ÿ2ÏØä2@DDD@DDDA¬âÜŸLµWSQÔ¹øc§ƒÎ3§O²vßÙðÎ5ïeÎ:Hâuþ•óúLmq.¤ö ‰$´jóßܯñt¶hà¤™ß yÏt.d…®k„Rv98n¬c;–ì´ÑSpÌÖ§EOÂZ3Qv've2ÀHsµ @ÒF¬·`NݲÖ}œ2ít÷Æz5\EMR]#%cÛ#uJÁ—<†@µÍvάìê—f“‡¹” J[žÕ- /'Lo‘œ€÷{X †ägwyœvˆÊÝPq¥”2NS‹kþ‰Ç_±svH®rÖSL8Ššª®ñÅ0“SLcKskpãµg8tUâ7PÔ6f>HŒNc\áÀ+“±Upôu¶ºx©®BªA˜EV§}1–N$†»}dGØã<ד²DEQ®¿¹¬¤cͶ÷’É+XCt@‚6ÉØì îV¸y•ÄISUp†®9£ˆÇÊ~¶d7Úp8;#n›gñ°/_$‚8`çÓTN×KÉ,:\uã œc»$m‘‹ÃM¶²jÑn¦š¼Ã#ñ¡ßzkZZ8öXÐAÁØ`‚Ct‡¦È‡¡AËݨïÏ´Ð~†–X ÿ ”ÈÙHÓí6ï8 ëŒänìÐUÁO#k*ECÝ3Ü×jÕ†ç`NÞ{1œoŒž7‰Rpå£Ö\T€S9’ÝZ£{Cަ–àÆÃå£ãØXb£ŠŠABÙ[ª§q³+µã=ÅÚˆ÷¢Ë=kï¢wALÚzèèÞj£ËÞý:†w`ñ'¦;ÖÁj8ª[Lt”‚ñ9Š'×@Ø@“N¹µ®ã;‘àcäWÉâŠ,¾i lt£-F{@pFAÀgǰ^-7 6jÙo¹–:YR[)Òã­ŽsˆΟšìãlpâôä³Åjµ’ÉGäƒ7Ü­UDúŠIadÒÂùZ%f50‘Ôd‘æ »ÓÁªÜŒïØ ÓpÄÒ;Ÿ ›y{r*+ØÆë=h8é =A;•ºs·žëEK ´÷©Ä1]§ü¹ÕG’Ö¸8Æ3í¯HÛcJÞ‘¸8ϽYYi©)GzÓвM+œù¹£ïåíÔí-b [ÔxŸ·'bÃÌ­mðÔ±±ËHiY(kÀž “>Îu9¡ÃV㸃±$gÆá$-”7hw´>=û¨=ÊÒÜ ôŒ¡†Y§žè$­‘ò°`uÇw`·v‚OW ººžáDÚªS#cwâË â‘§ÁÌxiò!cßÉ®ŽZ%TB¦¢E“ vF2ñ#8:q¶ÄWnªŽZ©„uLÇ$dÅ÷°Üšð0zô'; Ž!ŠIm2˜®’[C2J€Öœ0nàsÐc¼`Ž ª¬u&¦„¹ÑÖǦG´zS^ì;¨m>¼c»æ`9…§QÛp´Ö#<*ŠYbº<œ¹Õ‰nc$†DŒï±É=UJØß%ÚÇNÇ·"Ýy8¶ßßmÖ®ÕLȪiªií±FeÑË;Ý¢bÀ`-Ó¿@0HÓŒ ºî€öŽÙω\ó¨išæ6j¦1JÁ— Ý#y¬ÞËuƒ‡YhêßHÃ81–Ûša»Š}5/º@âÐc‹FF{‹µ7~„ø¬Ï‰XÕ±ýòšpÙÉŠ^‘É€CiÔ2š3žþ™¬Ÿ´ŸrÔòfžgM¶o’uî'Þ<GB}û,´g» yÇô~%OM²Q,ûÐ3‘×>äé¾ó+²ñm¥ÚjÆ}ý£úº-=_0mGHç¥)Çê½ÎçN&§žœ€ý@' çã©yô s%-pÁ-µ]ÚéXò]1Œ1 #¯ÅcÃJòíNÎNäª76‡’ÝÆršÛfæ.‹BJ)*TŠ”J©AAˆ€ˆˆ ”()DDrŸðì÷«jå?áÙïWØ¢"戀ˆˆˆ€ˆˆˆ€¨z­Pô4­gR·µ} ÑÖõ(7׉m$"šj“‰`’À@.Ò\6Ö’¬Þ$dΦ±Úëà|¬…®höLm9ÙvkÙ§ä€=œ»QÚ Yo—Ù§¹[îÏ|Ô-¦}M’—ƒÜîSZÖ:<à’âCЇ'p„Õ±N8~ó I~Y §Kdt’œ‚ÐÖ¹ç9Ü`œœö¢š©ÅXÎ}`êܲÝZCj~ãh¡­uSµÈÍöHÎülœ÷8Á+aa –º2/¼3GDèaŠ8q#eºrZÜiqpwä’°xZZ.µ mƒˆ´û$óéõ=ÎlAƒSßhš3¿Q±ôW£% µ^¨º°F×;–ê|Hìc`ÜîwÛÇw¹]ÌpñÿôÌC>Ž’šŽ#,ÂÂ÷<µƒ¸œ“ï%^ZZ+óê®pÑú–ëNÉ9€Í=9kZZFHÈÃ8$Æ1ץ定©Ÿi¡=³ü[KþeŸ°,…lÿÒÿ™gì òˆ """ """ Óñ=Âçn†-¶×ÜKËácIsðÂCAÈ É9Þà ,[ýÚ¦ÚÚ—Ùf¢”Í O†YI»>ËK@ÏÎö€ïËFÉ£’zx ‚ã ÆPàçLæ>nFÕ‡=‡IØœÕiêh/p[ZÚþ&ŒK-tneCæ† :t0448’Ð샒:€ä-—«ýCi›QlåJéãlÍ4’´hqxq;C²IÝHª\e—W2‘牨æ‹Óƒ˜Ys|ºHƒsíî2rHÕ× öj‹uN‘”Ò¾‡HÖÀAÁ8Û¦ÿÍZnüCQ[oЦ…Œd‡GЦŒ7ïzcœq‚~–—…º²G\É$¢ž8ª=GFàÙ°,‘³°vۮ뒱²Xî6ö¿‰i+}°túÉî{ÛÉhntÉ·¶I9Õ·E9œš" Á½Ë]–€F\Ò] t.”–¸á­i» `wôïÊÃáŠûµqŸÖTB¬d&7ˆ{œÌ¸aþÖÛu–îZJž&g¤ÂØà¼6‚JG çþ^c-{@y!®9߸·#v¬N ŽZY*©jxŽ+´Í Œ·žøßÙÛ¹™rì“í` tˆŠÔpÜnsŒ}¨9‹¥ß‰ ½USSZúËyu&)Nb. 5»¸‡4‚^@]“KCµr¦|mt‘ý¸û ⯱±ö+[h¸Úž„4=Ʊ×#‰ðñ­ ¹ÇSC½œ’KFrr:^3]"¸ŸHp2G)4Œ2IÁÈ.ÓѺ´€Ue¶XÊšÚZxCšGÔÆÇ0Æçå…À8û?7''m·ê³×9Æ`¹Ô¬ˆm ÇP us©Þÿ½ÛÔ?8’ nàÄZ¯ºñ5L‘Å@ʬ½æ6’FåíhÔýE¡ß8;li=Bæ.W>í7£ñ-E­­€’ ‡€ç7^¨¸`3¹À[»^Û- d¬ekÅ<`Ô°’ÙŽ‘팒pzõ=z•"EÛ„’EAQ,#2²'9Ÿ{s÷ãÙnî÷ ÏrÐZ®|IYBßI¶GEVjcn—Bç3•¦2òN¡ƒ—<ÏÍÙ mÄ2r­n“Ó!¤Ñ,NæÍ7)›HÓ‚ï>˜ïÎ;ÖŠžšè誄wë|­u<Íóå<¿¾?æó5 dì1¤€v œ+&¶åÄÔ† Z©ë#í’¢Hõ°kÃòÖ·Úws;‰ÜìNè`sß $f7¹ ¹„‚ZqÓ!rT4U¾ª¥oÝ€sÝq’Hçç 9­å¼3°vqÀé£Äetv8« µCÊ´VÕ4dá­n½Î6ha°‰f¢"ˆ""" """ ƨþ_Kîì Kuþ@=ánª?—ÒûŸûÒÝxTaRu o5ÂZ1œdyãñZŠN¡nèú9NÆÛøâ¦(m·Á{¥×Ûü¢j߃¶À“áÓ©%^–²¤=öËíl­œ¹¢¡â𽶏`,Ûœ‘’Cƒlv€M¾šŠöÚËe»ÕµÒÕÕSs\ØóÛp$dlGN¡loB²¡’6’çpˆË Tq ¦ÇO¶p.€}¼w ðbß³3L:Õ11,¨ß<}UÓÃNÒÝ4ðS丒àZ÷`ãycvØ;g`Nw™óû\ÍMMD6øLÒQYƒÏ*hØ òD^0Æ‚ÜA%ÅÛµ¡‡ñrá¾·42•­TIí8—Ly%Äœ‚†ÀcÙoƒ–rÈÇ~1æJuï'ܘòø¦sߟr é¾ÃÍRqw=ÞOMð™C¸8ÔOÁ“‰id3AWMl¨¸ÔżQ6´Ã wË·ÁÏOšìàgmÆåºÝ/f@$jÈÿ^KïK]˜úfTûlˆ¼°9ØÆ ûp¬pà{h9/‚Žœ4æ:zwe±³ Éüb\u3áUÎW™µŒRKdR凨“æ;nŽØí㷊ƳT‰b4ÒI ªéÚ9ÍfpÌçØdlF|ŠÏí$mÜÔZ5 Ê{S&¥cˆ3AIMŒ²<Œ» Œ¸ ùu'8ˆØVFù¨åŽ-]'—­¹hpݤûŽ ÔÒ×5µÂFUTÜs¦9=­1B\ð¦çWRí÷ÀV0 ÞgÚ뜎妭‘îº=‘Ë]+ás^"€5 K\ã³õ~®™S™É¹ünóµuφóSEeG1ä–‰°ÈÓ¶G~’zäà1±‚GËO²C,/sCËu0‘óIi##¦Äº÷­wPÃY<Ú/J-. ý9ËIùØÛæÜpv8TmOPpO½jîTÐËpšÛì15¦w–~KKO€ÉßöæÐJjh!•φG¹ƒ[¢vcÕß,å`ßæµšb+ ³F Š9ý¬8‚7À$ ¡#½èƒ+è*hjª"šP×CPbÕn z ’6=sæ ¿m’i¨ ’¢žJy\À_ žX| †Ä­¼SN—“ ª –Ý£òOêZ£xº:7EÅJ—xFݾÒp?jä]õæM#äyüg¸“úÖDT9ÆÊa¦Â«ŠkdËi)¢€x»Ú?Ø?QZºŠ‹oòŠ™dñIÃ~e°†ƒú+.*:„(¨‰ê²á þŠÝ2‘­îWÙÊTT8îYqQ´w,öÆ<A€*,ÅorÈhÀ@ (*T …*„ˆˆ)E%B" ""*J”rŸðì÷«jå?áÙïA±DE€DDD@DDD@DDCÕj‡ À«èV’³©[º¾…i+:”ñMe %ýÏž²ZILÂfaŒ9 —0^æäç¤d û–¢ßz·Ït†—î¢ìùW+[HcÆ´CpLd`ï¾Ë·ô ÆÔ: )žÖI¨¸mŽð´wŠ)s̶ËÌ1€Ó÷§Äܽ`nZw׿v3¾z/m›´LlÎíÜsúKèí ÅM-\u ¬ÔÕ> w5þÖ4áÇodîpFp¶'‹,¦¢¶ž)Ý4ÔTæ¢fDÝGHÆCqóˆÈ àœw…k¡ãÆ=>õL÷w[N%1°4ã@άùøo†åCoâ\]%ôº™¤†·“§‚0 ö1¾ÀîFv@•Qb8~såïù÷,g-{¸âœB&m†õ$nsCLl…ÅÚ››†‰5n%fØÏ\ô][©v r3ƒÔ.~(–Mê9‰‡KÚøØ~~pÄ`œ û·Æ–âT[8ÛÓc’!¥0†áí0µ¹;ÿAßÑßõ o*·j­ÔÌGÆ|—<Ýb+æTÇANÊÙ[5Kch™í~7#aßäõå˜ÄáDDP=³ü[KþeŸ°,…lÿÒÿ™gì òˆ """ """¦bá Ë3¨4ã½/Ú xqì£oÒÍ®Eë#yc‹¥Ðâ‡mAùêzlBôE¡³Õ_fµÓKs¥4Õ®Œá`kÞ³9µÚ3‰3Ÿ¡ÿ’¬²®‚[*›U6œÂñ+>“tœŽ£¨ó\o OÃóÍk6ËeÐ2ID°—LÂÈÝÉ#S›Ì$a¹nØ‘¶3¸½Uñ1Ò›U¤¹Õ,m@~¢NêFÛ-4÷.Йw¬dVxä f£O leòtÒ0dÎûœtÏ~Ž+ÉÝ¢Ös«ü$ýþJ_-hw²$Çõ?òDkxÖªÕj¦’®âÊ×¶á ¹´ò†!’I¶\8î>ÉáIì·z‡Þ-ñÔ6¡±´<É>IlÑÇ0ÔÐâ3‚Ð2246Æpï5œkEgªè žÒµÔÅÀ:m`œ1§';wuÜ(±Õñ»îR¶ñEIeåºûdÎ^FOP_Ÿ #Å0³ÁØ({ƒç€dï…®dµºŽ¡&0æü½ÊÅl÷VÑÎêhä’qŒMåiØØo×ÄxDr—ÚÎ ¸Ùìn¹QÔz4ÍS5Õ1µì {CÜã̈@$‚ìägr3ÓpD–©-µ^¨‚x!el¬‘³;$ÈAÉØíß¿S¹+WE]ÆÏ§—ÒíÍŽoMk#Ñô| ¼ýó¯^òzmÞ2¬uË4‘·Ž5§Œ+¸n–ºGÝè¯Æ[$†£ ü®¡²|Ö?#’:ÖpÔ”spí¶[x”Q¾–7@%qsà FâI$ãÉ>õÌT\8ð2ŒÁkŒ¹ÔÁÕ˜Ïblgð›ŒdäÓ¿!n­“_=‡áËßó!Òu9Üï§ÁÆr˜Ž'&O:‰¶Y=bùYJébd†9DgÚ‘­$§$dwŒŒàóÔp“ãºUê­Ë)¦ž`ëa™†Iõ·˜0sÈÈn7!»ž$ªâ8m’¾ÇL*+Ag.94‘‘«©oA“Õkc¹qÀ¡©/³ƒUÈ&9a†Mrì㬜ˆ»¶.ÜõÓ™…ܲÚÎ’ÑO諪hâ»I Y;—0‰î×òCq¨o¸.r:. 6ƒÃT†Å‘nù9$þ9Õ×úYZXkøáôQÈm‘2£ÓÙ"˜4ƒò݇Ç8j×§ê:†ç#uõ7ŠŠX_v¥u,îæG†àœn Œ§ªß"[„DQD@DDD@DDÕËé}Ïýin¿È¼-ÕGòú_sÿ`Z[¯òï Œ*N¡nèú¤¤êî PS{£}mº¦š3tðK•¡Ãvå‡b7;y áúï]ð…ÑÉ[w{KèêžÇnk›N ‘¶¦ß~à\[.:ÿ&Cºã§_Õ•ÈÛžOñ/TÖ]+¤sY[\×AŸ›rµÙÎz‘Žÿ±;«‰t§}2Ì£Í- C$e®Å,Ï|4`>]AÎ4 N ÉÈüÓŽå³áòÙ ²²zùZOϸ“—ޏ{†pÓŒ­ò™Ï~}É×ñOÚ™îÏÁ¦ø̧^ò}ÉÝœç^ò}È#KšàÝ=#ªÑXùvêƒok,ÔTÂGG<ÄŽqÁfFÛ–‚HÁ?½èììÜø®ˆ]-Òž¢ Ë] *3ä§/©˜ŒaŒû@û Œƒ¶äbÂÆ÷@vv2ÝÔßfôjº9[Q–fFØ™Js’ #ÙÏØHYÓ×Ñà e–ª(ÚàÜ»ƒåÕhïºHD ™ñÃ’yqû-Üäì:ï¾ê"¢'¹ob¡¨YQÒ4w*4pÛÿ¢³" ò[v@r¸"¹¾:6ŽåÊfŽå–¸[Êà`U¢ t„©A@DDD@DDT*•($)T…R¤ª”ˆˆˆ€ ©D«”ÿ‡g½P«§ü;=è6(ˆ°ˆ€ˆˆˆ€ˆˆˆ€¨z­Rôú®…ikåoªV¦ª=ÎÈ7¦¶Œu«ƒôG§Q}rŸôr²Cº¶aA×zu×)ÿH?zzu×)ÿH?zä9)ÉA×úu×)ÿH?zzu×)ÿH?zä9)ÉA×úu×)ÿH?zzu×)ÿJ?zä9*9(;N¢úå?éGïON¢úå?éGï\w%9(;N¢úå?éGïX4w8a¤†3.dmi"x±1ô×9ÉNJ£Öð~Lþš/ãO[Áù3úh¿rü”ä ê=qOù3úx=qOù3úxrÜ••GUëŠÉŸÓÃüiëŠÉŸÓÃük•ä§%UëŠÉŸÓÃüiëŠÉŸÓÃük•ä§%UëŠÉŸÓÃüiëŠÉŸÓÃük•ä§%UëŠÉŸÓÃüiëŠÉŸÓÃük•ä§%UëŠÉŸÓÃüiëŠÉŸÓÃük•ä§%S늠Oñ§®)þý:Ãz¦[ÿžãVßÄ6ö|ù"o¾ªÿιI`ËVŠïK±8Aépßh§it%²€pK*!8?cÕ~·ƒòGôÑó.:+'¥'g·[vïÿ¿©u•D+àš²’ÈšÀì—Íx+[r–)(ƒY+r6­%VÈwArnêl¶š-ÆËmL܃20 pz.Gˆ="‹Œ8v½Ž¼T1ïu©éÆiÚNG:_ Ž~ÎìõñôZ<¶úLJ«©Ú+ËÃECE7.YÏÄ œŒwíºÅϺÝ{ *ˆà±¹¢“‡ìÑDæÂ×>RƒpÖ`9¤µuéî%e¶x«™O=?¦\Y#„Ðêk¢Sq¥ÀéüwØëÈ8c¢ªSYï5ž¤´TTÚ÷ÜÚ×LÓŒ¾&;S~øt7¿bÜtá\·Üਲ਼E]Âk«›Ÿ²‘O V3§I ÐCŽ’ÎÇ©Yݹ&žn¬aÃ#Ú¿¹3ÝŸ°ÊG~m#àŠ9´ñ4°FÖ8 ¹Ää§'}Ú‹U\Mp˜i¦Š:qãGõíú•eØ8Ç™+_Y{¶S$«kÜÍÚ?©q³¾¶°æ¦¢YwÎãöt b¡'ñPnjø¬“Š*Sýƒ÷­U]ÆçZðég-Æ@ ¸¨Èßõ«ðÐy,Ȩ@îTiHç;S²IêOzˆ€ý»Ž‘£¹_e8ʘja ñ *:&Žå²l@w*Ã.qÓܯ¶ெ€¥m±€ª Tˆ#T¢ Q *ˆ€…"@DDD@PT¢ T… ‘ T """ ‚«§ü;=ê•]?áÙïA°DE€DDD@DDD@DD Q<­ÈXrèô["fPj]KžåO¢ù-¯(x'( Ôš_%‹ä¶Æ £”j½É=ÉmyA9A«Ñ|“Ñ|–×””jM/’z/’Ûr‚ŽPAªô_$ô_%µåå¯EòOEò[^PNPA©4¾J=ÉmùARb5^‹äž‹ä¶¼ œ ƒUè¾Iè¾KkÊ Ê5^‹ä©ô_%·å ƒSè¾Iè¾KkÊ Ê5^‹äž‹ä¶¼ œ ƒUè¾Iè¾KkÊ Ê5^‹ä£Ñ|–Û”’<ŸEòOEò[nHðQÊ _¢4¾Kj" Ê O£y'£y-¯('( Õz7’z7’Úò‚r‚ W£y!¦ò[^PNPTj}É=ÉmLAG((5~äžä¶œ œ ŠÕú7’z7’Úr‚r‚ _¢ôQà¶œ œ ˆÕú(ðOF iÊ Ê S©AªéC–—UÊ ºœ”= ñO9Ù­ÜÇõ»ïEò\•Ú˜—kcUÚiç'.,Ãô†Çõ…?¢ù*›Kä¶ò¢f¹ddmî ««¾ÚéödŽÞ·?¬ìƒ*(1–dLÂåj8–©ç´±Ä<^uìµk稸Vm=L¯ñs†üÈ;J«­º“iª£ú-:À-5lj —Ù¦¤‘û—=ÚrÄ oáà´Ð¸÷,Èmç¼&¦ÌÙív¨­”2¾:xÞçòýNÎN£¾w=êð¦’W—¼¹î=KŽI[¸¨à²ã£hîHˆˆÄ,Îg2ÑC@Or͆Þ;ÂÜ2œåy±ܪ5‘Q4w,¨éZ;–``  Ð¨Ælw+Œ+ØPФ4)ÀRQDDDD‘DAB©AHˆŠ‚" (R  """ ""*J R©U (*Q(ˆ€ˆˆ ¸? Ïz¡WOøf{Ðl`ˆL" aA Q8L)D„”APB©Q„Â’ˆ# …(‚0„)Dá0¤¨@Âa „Dá0ª*F Qa0¥F QQPB©S…8P¤$ 0ªPU„Â"Ša0ˆª …U(*HŒ&¢BÂ0˜Rˆ# …(„£ …(ª# ÕC2Ò¯*\2szl䀰©«n4”Æššsz‹¶hÎþk¥«§ÎËÐOE…ÑOPýsI$®úOq'õ«ðÛÉêö*0?dÇL ,6à:…› GF­›!hîW` ÂŽ”àöS´w,Ч-6 ;”†®!TS€ˆˆˆ€ ©DDDQDD " QIP¨""" „RT """ (Rˆ)R¨AR(R‚ …R¤ ""®ŸðÌ÷ªtÿ†g½ÁAE*APªT”D@DDJ©AAˆ€ˆˆ ”(!hAPªPT‘!A@¥(¤¨@DEVDDDB!EDE¦„D@DEQCš ¤F<ÔAo@RUªP ¢©@DDD@*¨EDDIDDJ©AHˆŠ‚" (*P „D@DDD@Tª”¥R¤ •J ¥• ºÃ3Þ¨UÓþžôDXD@DDD@DDD@DDD@DDD@Bˆ‚N!á0‚V(EV` ¥X €‚”U`& +šBi-¢¹¤&‚Ú+šBi-W4ÐÔÑ\ÐÔÐÔÑ\ÐÔÐÔÑ\ÐÔÐÕr-¨*æ™T…w–ß4å·ÍAmR¯hiËoš¹Q^å·Í9móL®VQ^å·Í9móL¢Ê…–ß5¶ù ²Š÷-¾iÊošer²Š÷)¾iÊošdÊÊ+ܦù§)¾i‘eîS|Ó”ß4Ê,¢½Êošr›æ™T”ß4å7Í21Ñdr™æœ¦y¦F:,ŽS<Ó”Ï4ÈÇE‘Êgšr™æ™ê Éå3Í9LóLŒTY<–yüS’Ï?Šdc"Éä³Ï✖yüS# Éä³Ï✖y¦F*,®C<þ)ÈgŸÅ2¹b¢Êä3Ï✆yüS&X¨²¹ óø§!žÉ–*,®C<þ)ÈgŸÅ2ŒTY\†yüSÏ?Šdb¢Êä3Ï✆yüS# _"??Šr#ð?r1eò#ð?äGà~)‘ˆ‹/‘ø§"?ñLŒ2‹3Ñãð?ôxüÅ20Ñfz<~âžø¦F,ÏGÏ➟Å20Ñfz<~ôxüþ)‘‚P,ßFÀüSÑ¢ð?ÈÄE™èñùüSÑãóø¦F…èñùüTz4^â™JºÃ3Þ²½/ñRØ#kƒ†r<Ó#ÿÙawstats-7.4/docs/images/awstats.png0000640000175000017500000000311012410217071015241 0ustar sksk‰PNG  IHDR00Wù‡sBIT|dˆ pHYsÅʼnÖïtEXtSoftwarewww.inkscape.org›î<ÅIDAThí—kh×ÇçÎìKÒZ²lɲƒåWâÈB’­Gã6ù’š`R-õ‡¶q!%%ÒWh)„&´*}§¥˜–·64Ηà ýÐ4¤àº ÆD«$’-+ÕÃRª¨²dïJûðîììÌéUF’%YjÁþaaöœ9çþs™{犪²žeŠmàÿU  Ø*[%€b«Pl•Š­u "¡¹ëuP#5ßÞîWoTu]ü€€7 fØ9·ïäÓ©ÿî©mŸ½ÿ­ evxª’q\œ‚Sðf^øÓùí“¿}*½Öž""ÀWƒ/£l†ÌiO½‘›ù;uøýÛ}ƒ¶evïÞ¼A–aSy˜œë‘ròŒ%2ôO$È{^úGG>]kïËÛêÂ3mü´‡wXUãs¹;òüä¯Ý…áëÉ=ƒS3Ò?‘  Ð?‘ °˜JeÉ8.µÑ£ñTÅã§ÿæßÒ@åz÷I÷Ýøº ÏzxóÍà 3ðž¼Wu@LßÎü‰·.}4t-¹MU±Œ°¯®šT.§J*çr5uÇõ蛈 Idë6¦O>v(:(6d±~ ò÷fm?³¸÷ûÒÕ*ðh (·‚³Ì \’® Þk1‰V2ï_Ù?OmͺR9ÏWÎO°ok5µÑ×ÒY†§fŸÉ°±,L&ïR·¡ŒÞñxÅùÐù†,Ö,Üçö3rÆšßû¢t=(˜‡Z´ãûË™_à]yw›|Î ß ¢O®ðìáOœõ|•¡©<õ9;0ÎH<É»¹r-Åá}Û±-ƒëù4l©¢,hcCÆq9þb*ÖLÇ3ú©¸¢¯4°çØ\ß^éz¤¡EÛ~±Òø·ôI_ÐFŸÏÃsMÚÖ#P“XårÅ]£“U—Ư“u ØÆ`!_ð ÚµÑ0±§ˆgY‡®'§˜œÆSe2• (@‹v\Ttï  †z¤ëË`*š´ý¥Û™.£ÙNП·kÇ ë×AüoKÆS$s.Žçqaä*íõµäÜ/_ø€d.Ï|ÏW¦PU"‘q”ã.xq œÌ1}ÌïšµíÏ«1ÿߺYõHì EÎ6kÇð\¬U[Ç)ôI¬~©b¸«ªœ°m° ÷íØ‚e„ñ™ ž¯xþìaDÛÇÀ2ÂâÅ£IÛ‡|¼§ZÖ`~€ µhÛë‹o° /À×–*¾§¦’d.¯Še ÆF„ƒ;·ÌBm®ˆ (øŠ¯JÐ6TEBDÃ[–¿=8¶ó šµã/KÝШiAþù¾tµ.ÎECÁ|¾àãz>‘€Ee$H4 ¾:Ê};·°·¶ŠÊpL¾€¢Ì,»ª7$VcPDŽŠÈÃ"b-•_ÕFÖÏÐ)ƒùÊâøoÎõîŠmªËÂ4Ôm$™Ëó¯Dš«É,•‘ iÇ¥2¤¦"LȶØ\ÁØF8yìЦՌ ¼üè‘×Dä{"²ã& åGëðxøv]{{÷û¨¾i ôÌþéϼðïtvS*—Çñ||ß'dÛl­,c,‘&í¸¶Á÷g7»Úòpæí—Ï=½JpÎA'€8Hp‚hò‹ªzeMßB½;ÞÏð·ŽêQo~üú3ñŒS6r=Éhû”EÖ=qëI|úh °`Žžŧ‹`  „¾{F$Ÿút@CgDòé *àà(hGþ]ö™åøéí»? l` 8xòý}*é?Ÿú#ÿyíWyrkãE¾–æ›±`URµ”ªF(*ă¤ÓiR± ñDœÁa¿ìYþŒiM¿üÞ7ÜþÌKÜsõ? ìÜÜvÄï¤@$RŽb´xë3àÏ^^Ï÷¿p1ÿöÛG¯R ¦?¦Í²ó+¤¢!’1Ê ó@"­M$ Ä“$Ã~$‚ÀÀ~¹gï^!ãQ"±[ñà“Mû{¨ª(ý85ï°†I¤6À®ó¹À±‡v˨ï+õ…Ÿ^µá n¼hÿò›ßÚŒFS¨óЀœ:}®(Ì+ ßfäP0ÊÄ|VM%–Îp+c1’É4Á”$Ó"£~öíi’M»šEM•ëË¿ÿÁÍ/üà±?pß·þþcáM"|xóAöÛ±?6‘éS€EÀ%ÀºÏ„ }ø/ÿïþžýßÌ«tQžcÃn¶dbmE¡?¢Ìa%[SÉ6ˆÌ’–’”„`J¢ý þ`ˆýýÃDR’ÁömrK]“˜T˜W·ögÌù¸øz‹õ8ÉŸBo®Æ}°È¦~Pžñ© ;V=õJGoï7ÖBY`ÕH$Dâ 4M 0ÛN\WˆêrteJ"iH&…£‚E‘Œ c1Pä°SX\)LšJý®–³çßðÝ€ý‚%§§fjÈ&wVŠtð‹QðÌÀíÇ“(~béž?­à‡O>óÊžîîe{Zw±yóÑÞÞ«_fÍúðÔo%! OÒí!©ƒM %t¶¤'gÇË@ Dï°ÿâÁA&TާdòTº»»ís¾~½ ½¾‰ëï{à}„Þ|øûvœ0ouÔ1“óidëx| ¬Æýoul»¥xîxè'š~òÒºMݶu±?”“Ç•Šé3f#Ï®ùUeÙ‚EÔT¹hjiÂ5½šÁÁC¬Ùð–.YΤ’"vwîcbÙ8ž[ý Źy Ù×7DYN¹9t÷ö£i*-Ý}ò@G‡øÜÂs’OÿðãÍ«Ïy³©yû£ð¶ƒºJ•T‡@ÜäÂý`Û©fîØe'à?eØ€÷Ô"—c`sýŽ úcºœ_s®hëêÆdͦyWE<øÝïP\P„·ÉGçþv { l;W#µOÀ÷\¸ÜÁŽ#ÁãxÀûHVãÆ‡÷Bß)Ó»ë áš{VÊsÎû;.¬š"¢i…,G.õuµ´ïïäÚ¥K0Œ4ûÞÆlµŽ¥zŠDZg¬Œ/¯`$ ò#•:Ïlkn¦¯·,ƒB"š £¾‘Õ?ÅöÚZ„ª!l6aŠÇxã­×ŸRæ5v  KYJÞ¯)(^ñS 4à¹áÄÀó,(oK¸ÕEͯZy›9œX uÂúðVIØàÃûyî“àMýlöP8&çM®Þæ&R± ‘&!•H²§§ƒ#~ZºzIÇ£LŸ9‡¹3ªê#2|œ¢ &UTŒÅQ•á¤ÆPk3z"JÛ¾ä:Qó Ðôþ½”O=‹ÒÉãÑF‚¡˜,ž·ðç³*ËFk[5øð< ò X4 ÷íe%ð£ãåçm^³\ËlÔ᪩¹ÿYže*ç°œ´n$Ô h^ôáÉ;™@šÍ–mÑh“F §¹½x4‚¢ȱ›)),â­úM㬉“H¥u Í*VW³i‡‡]-Íô‡b¤“)‚Ú‰è$Ii‰Ã S6}çÏ[ÌÿûÍÏ)/¯àòK¾H0àç™`T"!â{¿¬Èðìñ€˜ª£WT3·«‘íÌbîÏ}xï¬ÇûñˆëÝæï]ÔDUTáÃ{=ÈßIijq??–ÿ}R>x\¸iÀ»èuáviW,ð^kÙËOV¿üÏ¡0·^³‚›î¿›p €ÍlD¨,Ìã+.ãÍ-›øý£Ð´e+O?·Š¾¾n ³ìLÎÍâú%ðÿðOœ=u*ºLQµ`‹‘hB’N&°åa3™˜5i7Üp—}ù*z{:ÑŒFÎ_°]‡Ðà _¹íŽÖ¼ %"–Daí˜u,y³€»˜‹ϱ]ÞQð<׿qi5îç3äG!•ã·Û^\ÔàÃ{«€e9¦÷+€Çð¨'Ã.ž6P8:cùü2/;›Ý]$ûÐÛ¾ S:F[ÛþôÚ&^yqÉ`” 3§³sw ËÇó_O>Åòþ'"É$Æt‚?ÿ9V~ïû h'"Ó:‰x‚âq•¨šÊ` À³OÿžÕÏ?ÅÆ-µC¼û»PM&6½°ÚñúýoVã^¨!¢¥T½k®.jçÃs™‹šcù:ܸ©Ç{ ˆ'¢Æ…ûå“éjŽÀÑ ¥X òó.jGÍés@@Ü~²´0–LÞÐÖÞ*zã:ÑXš¤f¥¨b2æ¬|RÉ­{ˆ…à(ÄÂ!ʦTñØ ÿÃŽ-o@"NçH¤uI‘UãÂ¥_`|• ƒÉ€YS …Áhçù???¬ÓÑÐDWS3¹Î|v÷@0€RÈ•?ÿ±z×ók©~Þ$â2à™¶äQ›ÕÔЀç|J’ž1‹¹ÞÆwò¼Ó />¼f`/ðS5k3+Ð=ÞÜåã~Ôôâ­n¿«»g?9Yv<õÛˆÇB1ºöw³»n+³¦MB1(H͈’Þ}ì¯ÛL뎷™Ñ{“D> s\¸ëNUºüQè(x· ˜/‘¶jjä±M ·ø p݉‚ÐŽ¥{EïðšÝ† E9fœ%¥üô7¿âP×>F†‚$Fühf E•¥,ÿÜe,›2ž‡_z‘·š[Hôu¡K‰`ˆD4IZÕHwí!ºŽî‚l'í­(#ºf`Â̳zyÝá-âQ¤3OtìÞsZ ?#Q~åÃ{…‹¹jÀ³R­Yᢦ«™ff2ó”íE½¯öIÄR¯K\¸_kÀûžþÀ‡·V"£ÕÔ\xÂAÌw¯ÝY»yy,šB1Š áz,Š ¤Ó:èi’‚‰¸öK3‰¢¤¢tôúiÝ^Ë€Ì&M¡††!FJz #GM« ( “™ÙçŸC“·%8‚L§3×UŠÊP‚~ü»ŽÃRyÿEfúXV¼ äÄjÎÙ{ªKÊûïS #È5À.ܯ3ïQ]ø¶@,õáÍ;Ñ %ãq¬“g!…@¦b2š0h©D’œ¢BœÅŨV çžSÅ`ÿ!ºöî!KŽJ™‰E“E@: B@4Œ!¥|gÅ PœÎY¶”æú&»©ë(FBÓF ÷#S©œs-qá~Hdäùµät€÷¾&´È= Ú\¸oùà(µ Ù‡× ò`ÑXÒÿ¡ÔÌD;¼XrL¨ªf°ÅG"£dúTÂÃ̚5“qSÎ&=ÜÅ–DÑQ¬ÞÚJÚªICôh¡i£{Þ:èa0‚ªR>c:u¯¬Gd9 ™ÈLÀ`@QLèÉDæ>]ÿÀ9ŸÏRÙŽŽ|ÀDòÑ8F?§‰ÞÏÞ¢p5àèI"— Džév}Ø Y]¤P¤ÓbMâ¾ì+¼°ê1Ú^ES9Ôщ1ëM.˜3U¦‘“ “6BDê›ÂJX‰J¤Òb…„?£B@*‰(.cû^”dCðP¦·!A P°Qdú¸æ=]>pºwk”÷HÚ/ˆ›€9.Ü#Õ"(©¦fxMÀ£Õ'Î_.må“ER3±»±‘®ÞA&¸ª)®: KŽb1²³ÌJdÀ‚\G®™30Ž'…JLW‘f+ÒbÅh·S\dÍ„YR‚ÍŽpæB$ŒìëCO§!5«a2!&°g#-vÌvÛ'z»MyȦxäDÃ_î% æûð.ý°cçÍ[Ü`w:ÑJ§bÌÎáu/áÛÞ@oï¹åe`0`u:qŒw‘iÙ’ôõ°è‚Køéw“7~ Y*"•BÄcHUÁ¬) ‹1N›)ljTT0AO#!„ÅŠ°gÉL~Õ Tg.$¢\|éçŸ*GýV» ÷'R;b̳'bR®v¿­ÈªÝYK|ø¹yv„ƒ}Cè–,zö ·l æ¬<¤¢a¶;¨ª¨$”Ò¹õú°•N   ]—,V°åqöEQX”‡ÁdB„Ð׃°Ú 2ˉ´X‘á0Ye%Ì¿˜œœ,D<Ƽé3§|’ÔŽ¡=Çüþ!´o Ä뀸凉æÃ˜a“ÅFYyí}08$“`±‘Öu JKÙ¹«ƒbÅbI0uêLZ ѳ×GÊœCEI>G6š¦R9qÑ$ªÑLÿžvb½½(f :qD,†°ZQbat[6Ò)0e;2ÐÕÙhà‰5k†;{˜UyÒÛm@9𑺒OiKEÞ»|Ë…»ôx¡Å×}ŽDù‚ïtvüDIDDOÏŠô4¥ãJYvÑb*Ê'Ó²«Žh"‰&@&Ã8²LšpÑ´D*FZ›¶bÊ.  Q·s'ƒÝ]„Û÷!õ4ŠÕª‚j¦¥OJ¤¢0yÞ\¹ùìöÖ †¤t÷AOm…§LL’i™x Ø„Nˆîñ˜R?J|x/=^ ¼ú;põ¢ù›ãšI #8°ØÍæeñ¥K¿@¶³˜úú-ìïëÇ–æ¬Ò|úC : “W2c*L¶3Ÿ³ÏcÓÆ Ôo÷0®b"•ãÈž:a0 'âÈx‚t4œ‰œ…ìÒ2´¬\vlÙN0žBO$Ä+ï]u Áø6™vú»`„L3Ó²O„Žù€_N‰ã-³}ý¡_÷ÿuíš;w#c®üêß34ÔÇÁyED"#lªÛK(¦¤$T2I2)9oÞBñ4mm,þ»KW9…‡ï»›³€ƒÝ=H=ŒÇ)7~eûæÈ¯õ´ÈìYKEŒž3-¸èÔÑÏÃ×È”ßÃá\G“·ºžùm˜ ôÐÁÅ[b> h/° aÛŒ ׃ïÖ@˯KU¥>ª}ÿpÎôÎóåëáÈÿ‰Ñ ©¸" f‰D äáû¥GÝä§$-ãŠI³ $º9VÑõÑ÷óÎg: ªŠ¢(H)·«K9šÿ>2#g™§(Nª"Tuìù)âHù·æR%™£ç<Æò1ø’GW)–qÜHlz&ò25ª)Ï‘9ìy' òr¤0"Æ^%2+H*GìSŠw&.ŽéH…ÌŒ èH§x1öíΰˆß±íßB/QA€.廹P2ãF+&¶ ߸ó‚.ƒfpw5‰ÞÁ ûÄ10FK'3÷ª™L“[^”©ã±Ë(H‰?m {(F¯¯!$z$’)R;r@QÐ4t`Íá jÁBš|252$V|ñÅÿ}ÏÚ0JB‚ŠžaËo¡I”`ÈÄÒ*Q£€dˆ M’Ð ²J­Ðñ› ¼G5Ìñ×·÷’9¡ÔŸ1 §ÉQ[½RÀ³2c;“Çë _ß×7qÕ Ï´³Iö‰´Bç@˜}=ý ôB‰R’*y…yhBÇPX‰Ål¢H ¡*‚ƒìÝæC±Û3J‰.Ä¢H‹³—/'ÊÖ âÆ¾yå}ׯxŽÓG (;a`-™í¹?þ>½QèÑi55ÿb7ð‹Ñޚ㻽©¾c¾{Áõ½I‹(Tc2ß`A™ÂŠsJ¸ø‚J¦Å´¹gSZ”’’Žˆv6“GˆH<Í@ NA– %+ ¤Dê롤RJ¡eÙQrä`¸úê/­>Íà™€> dT_Ü@.™^£'Þ¼Óª£@^&á¥jÜú½Oxškê¶þu[a²KêŠA)‘©Mà ³rtZý:=#t÷öCZÇàÈ#ߪ1I°§nrd™Р!CaP¢´B !Å¿~ïÆ¿ó«WÜsÝÊXõƒ›O‡8Œ€øoà) r¤iüĤÇÑ yɱÌèØ”ïÍ™Ì.Üq€ ÍmÎÚæÆa=<€Ób”©xH0ЂD!¬«4õʼnFctG‰Æ’œ;½„,‹‰„.ØÛuþ¾aÚšÛQ,4›Uê¶l&Œ+FM²íw¿mûʘúÉxÈéÑèi9ûß^÷Œ‚ç¹%ž¼f <oÛÿ¯ú’ˆ²éê©Þ¸d¡K†Ò*I‘ÃBû@ άqv‚á(&%{6”OcîUWÊ RVQ$&–l®ÿÃc¢¬²¢ýc(cê'ã!Ëé$ží ¢.Ü ŽnÑðáMjåy ¶«»ª¶žëΟÍCë6þ²y·ïMš¦Ô¶t ]JÊ a,2Áæ$®Z‰ë âAÌŽ|Ò†,Ì"¥O-)ôüèë×Ëg€>ðVè*%r¿@ŒiÞsÀ f»p7¼¯OÜâcŹ.îzvõyA_~0ž|¶yo§Ù '; ‹QÅfµ’e±`·Ù¿ò÷í^ºè’¦KfMùýÛùÆ¢¹œ¡qKž×мÇ}x>¼SOÕ;Ÿ¯oýÌÉQ||zHKXò6X”¸pGÎ,ïOhsT^¨Kä:bþx¾S}pôŒž4 D LÀv‰\ þSqÎð ú´âÔ×>C§,9#„3ôÿ7ý/ømD8SÌxIEND®B`‚awstats-7.4/docs/images/screen_shot_1.gif0000640000175000017500000001250512410217071016300 0ustar skskGIF89axZ÷:[sC\”FbžRhŸykkrw‹_pŸ{~˜'™Š<¦˜J¢”S«Ÿ““†˜–˜œœœ’º—Mqµe~³p§q…±1­¹<®»d¤¹f¼~®„–º’”±žœ­{«°—¨½{÷’ʽ½m²¢‘ª¥¢¹ œ®¯’±¹¥ÈÄ€¿¸œ©©³­­µµ­­Á±©¥Îµ­Ö±µµ±Ã¿«¥­½·§½²¶½½µ½½½µ½½½ÆµµËº·«Å¿¹È¾ÆÃºÆ½ÆÎ½½ÎÆµÎÆ½ÊзEuÖcŒÚk”çs„ÎF©ÖR­Þ{œÎmµÜ§Ó±çŽ¯ÖŒµÞ–²Ó”±ëœµÒ«µÞZÈÓsÌ×cç÷cïÿÇë{àñ„ï÷{ïÿ—Âæ¥Ãá­ÅØ­Áë”ÜØ¨Þã„ïÿ©ó÷µ½Î½½ÎµÆÎ½ÊÎÆÆÆÆÆÎÈËÈÎÎÆÆÁÖËÎÓÆÎÞÎÎÞ½ÆïÆÆï½µ÷ƽ÷ÆÖÆÎÖÆ½ÞÖÆÞÖµÎçÁÖâÎÖÖÎÖÞÆÖçÎÎç½ïïÆÎïÆÎ÷ÎÎ÷ÎÖ÷µïÿèTî¤nØ·mÿ­sî”…÷­{⹇ÿ±{ØÅƒÛЉÞΜÞÖœç½ÿ½çÆŒîÌ–Ö­¥Ö­­ÚΩéÐ¥ÿ­­ïÖ¥ÿÆœÿΠÿµ­ÿέÖεÿµµÖνÿ½½ÖÎÆÖÎÎçç„ÞÞ”äÞ™ççœïâœ÷Þœ÷ïœ÷÷”ÞÖ­ÞÖµçÖµçÞ±ïÖ­ïç¥÷÷¥ÿÖ¥ïçµïïµÖÖ½ÞÖ½ÞÞ½ïç½÷ï½÷÷½ÿç½ÖÖÆÞÞÆççÆïçÆÖÖÎÞÖÎçÖÎÖ½ÖÖÆÞÖÎÖÞÎÞçÎçÖÖÖÞÖÖÖÖÞÖÖçÖÖïÖÖ÷÷ÞÎÖÞÖÞÞÖçÞÖÖÞÞÞÞÞÞÞçÞçççÞÞççÎççÞïïÒ÷ëÎÖÞïÖÞ÷ÞÞïÞâ÷çççïççççïéä÷÷ïÖ÷ïÞÖïçïïçÿïçÖïïÞïïçïïïïïïï÷çïÿïïÿ÷÷Ö÷÷Þÿ÷Þ÷÷çÿ÷ç÷÷ïÿ÷ïç÷÷ï÷÷÷÷÷Ö÷ÿï÷ÿ÷÷ÿÿÿï÷ÿ÷ÿÿ÷Þÿÿïÿÿ÷ÿÿÿÿÿ,xZþ @0ÀÀ0`áB `ÀÀ„$(ÈQ€Ç&€0Ò“ DXÉ’å„!/'Xbd‚‘›8o"ÙÉS %J–]²KQ,H±dÁ²…é dt @À@«+ QÂV ¾r«ƒY°f t%Ëu oßš›C†ºwóf@’¡ÃÞ ¸ÃN:8YÌxñ'O´Dž¬¥²–-t´Ð¡ƒ¢³Œ4Tˆ áI…œh8¡B…'^è ÁºÄ "|øÀ­ÛÇOžzÉuæ·ñ\žŒ{Š£<Χá¿ã$'޹ôä¿“{zþ|{öìÀÃþ[×þ›ø'ïÀÏ5›†Ž3*hÐ83[‡ gvë c_> 4øšdøVÜ&¨à‚ 6èàƒ6øÃ{žœZøð^qz 'Æýö!‡žÈ¢v#§É‰áµØ"xd|RŒ1ÆS 4Æ0cÌ336sL3ÓŒ1Ç4#ãÏÙÌŒI"iŒNB¹ã“E3[ ¼p~>(Á„’Q‚5œ¡ˆ""4 *œ)‚§)’È›lžY7$"Éjj~‡^w*œñ ÜÔ`ˆÎ`Ljš‘B35i¤’¦(¢”Ö 5DêÍ? †*ꨡîãÂ{ Bˆ]~¨[~þ®²êªfÌÚ[ùÕš®:øÖ˯¿~l/Âöâ˰Ã,²Ê. l³Ðþzª'3ˆ§h£9‚.ˆ¦‚š¬‰à i~’—^xåu7œvæwîyìž'hzð¢wî½õv‡î¾÷Æ{$ô²ƒ}+Øöß *tëB ñÌí ò±ën/ì goº¿éëîŸÙ9'q¹~Zü\.úBG¯yÉQžc®÷å£Cºç¤‹®úꬋŽÏæaø2Í0ÿ¼®z:ãÐÐ<îì547] 7™ÿc) Å8@[ ¶‡ŠÐÔÀM‡¢ 4iÓúöÜc^0´ÀÀ * C 0©“ŠN7oã¾0иL1î—Íð}sžÎ>Ý÷ïÿÿ¤â¢¬`hçn—;ŠJs­³Þõ&X4  úÀÿè@oD#(€" û­.ìÃÇ’ч=dÃ’” ŽÁ(M… xÐX`=Nu¿^DƒþŸ¨Gº‘>þ¯ÜÐÀаÁæ3 CÐÑ<îyÜè:ÎÁ¸¡cÿØÙ8LWxaxÜG=ÌP tHÃtFà(‚°€ Ä+ÑDR¥ƒoSÃÒàt|ƒU\é0¨ÁËytŸÛè4IJ†îsÌ$&7YIMv’“žÌ$>ž°‰G\¢˜xƒ.ÁˆOVr}ºSÆ6´¡ u$C–ÜCÜ<—]òu½¦0}IÌbó˜Èìe0•‰LÔ2~HÆ6ú€ ?´AÜ‹2qŒmv“›Þ '8ÁùÍr–a Ç@çÆYNq¶“îŒç7ÉIÏw–S¹þKÇdÙ¶¡{ÈXƒ × P‚ô -(B º†  Õ€ÊP„Z´¢¥(C7zQƒ}éP6¾À4Ô  d˜ >Q†HÑwe°T1Î8Ó4øî¦;ó†7¤Á oàô§@ ªP‡JÔžrƒ èC¤QÒP Q½°T3®ˆŽbœ! Ð0ƒ0ìP 3xè ª7ÆV,~ñŠb ëYÕªÖ´ºu­om+\çjVnàà ŸˆÉpŸàfŠeÇX³Åbtjz’Ê¡`ѱX³:V°c4ëÇúXÊJ6¬dý"d¿ÖÉf–±–í¬Nãa×møamè eЀ À`þ-f-¥2€)Õ°” Ú(ÛÞrÖ¬c n]1+\Ùw±Æ…ìe;Üã^¹›‹F4÷@R€ÊǸ7ÓÉÍGâ…(D Â+Þñ†÷‡ E+\ÑŠPˆb£…(F_öº‚ A‚ò„þöw¿ú ¼à+Ø UH°l…(,àÁ†°"|УúlÃ6„zøÃk0y‚“˜Ää-Ä#L1 S˜ &0{aŠ¿þí/T’ãþRá U¸‚€…(9ÈC®Â"¼8ÙÉLÖi7çml#äAu9Î1u¯sÆ'R ‚/‹ÊÐøLþ HUÄb|¢SlU1R@¦x€Ê Ò‡¨f* CÚ»ó9ÐQ *§#ߨF–[ )žA&m㨊øÅ/ÆysX¤Yö¾z:Pq–Áëi3B•:,ƒÂ(Æ9¦ÆRsÕ2½1ezxC–Ðü\:ð:EêRÍ ¶.g½á]ogž#£õvVŒ4ÃkÅ&]Ág‘˜EÛÙ±‡‡:Z/¬}ÈÃt•!MÔFStÞ¸ž;·¹vs9Ž¢+â»/=*0ŠªˆÄã=ˆ'*ogx~`j“¡Ž6ôsݘ;† ñ 3dïÍ’ž7¼'93xsi¸8©¥'EŒÊÛ›ÓÆ•þûP]+êôäÞ8ZOÞS”»üå0yËcîò™Óœå(+ÍcKåod#Šî7ÌàUáÕ .àF/m#Øè l<ã†ÞptDuxúWÏÕ¨6¼K¿ÑL‹Ñlj‹Ž´õø"6¶ m,z{Žd÷å,Ù9G^R’vg7Þã~¹½³[Ϭ»¼Í®>°òÕ2ðk  ÏøÆÃ›´÷胆Ûð>¼ýva[!¯˜Î{^nŸï<èG/úÒ‡þô¤G½éSÏúÕ—ž³úœfèá¿€t£·_¨î×Ѐ8àAÑ pôø¹Gþî“ÏüÝ##ÕX-×þ¿hXÿúØÏ¾ö·þÏÍhèç¶Oþò›ÿüçÇâ?ª|åo\þ„„?Ç@ePíC ’Ã?Žwp¯ Ž* VÛàs´×=ï÷?ûPâð âõ°€àpáðÀ j4xÿ@óáÀ*¨ Éà%Ç= è?í` Òð°ðð»P õP«€Ž0r ;ø 8ÿö ïÀ "8‚ˆ 'ø?öÆA¼` âÀ’€¼À 6èúð²°ƒ ZP?€ ÿp-Øþ° GhÔÐýÀ„¤R,´BV¶ÔÔ:+Ø?Œ`ð‚ à²p€¸þ€’P N@'I°Ž` U0 ˆP\Àq@Pvfr:%KÒ´kŸ£‡Çcð‡‚ €g@a¨ p¨Àˆ‚˜¸¸Š$`G†à€øPŒ7€è Væ~˜Š«ˆI€Žp¬¸ ˆ¸øˆ& E Œ P‚Œ†à‡ óð hD 7ä&R)È:{Ø=Œ¬èа(‹‚ `¨@¨‹'€¸(Ž€úHù˜Фõ §ÕBÖ?õÈ=“`QŠ€0 Í,€[p’° KðŽ@ðª€þ‘Gðù‘Åp, YpñPôðî8eaÕO+t‘¡b”Û“Cÿ0 Ïp9Å0 ›Ã v6<þ°`•³3aT —3ÿ Ñ@à"ðÏàÏ.¢ʱ÷‚óLÏüÜÏþüÏðü½ð$Íà ÍpÐ=оP ¥ m ¾À  Ñ ÍÐÆðÐ Ý ÇÑ}Ð-$½$!=$! ÒmÒ$þÐ#Òˆ²g0ÒÄò Î!ÓŸ@Ó4M,ÎÑ 6  &pâžÐ.|’ð/:=ïñ`  °îq  0±q6@ïAÐ=@š @MÀ×+* Ö P¤¡%`>@ @Ö4 07Xí*À'ð Õp=..ðY  !@ Àˆý* .@"Ú%0>g'=p: g@gïQ2p!à¬}6@pFý(€Û&° ð( ã!p"ð!Ð.À À-%<Ð×­Q×ÇM$Ð%@ £!ÐäóÜÍ} >P 6ÐÜ £:)7pc„ йA½;awstats-7.4/docs/images/awstats_ban_960x540.png0000640000175000017500000065611212410217071017120 0ustar sksk‰PNG  IHDRÀ9]Ç{sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDATxœì½y¸Gyçÿ}«ª»ÏrWéj·,Ù²llãÝÛ0˜v2!„$˜C2 ¿LB‡ $„ †L‡„@2L†$À,Æ`c[F¶eI¶%K¶ö}¹ºÛYº»ªÞù£Ï¹›Î9·ûjñ¹çÔGÏ}îÕ9Õ]K¯ßú¾UEÌ ‡Ãáp8‡Ãáp8:¯¢WQy:—;® ’y›aÆ-.ÊœG„j¶ Vfα 3·åòŒé#ÛŸ5‹ÌÄœõxdGÛ8CêEó˃£ÌÇc0sYêQߦyd8ì&SÛÎÃçö¾ÑˆÂ<Ú6=½.T[éìõ³åauæãÑ“1½a?kó«{F¬M›G¡áŸ©òàì훎üä_AêzÌË&EªÜü÷ŸK³ÿù0U&;s=+>{™·±iÎõ`…™‘‡:»¤Êähß³«ûÙÏõ ãy™þ¾­3òhu=å±®ÃVž›µÀc™ùš²Þ¹¾Ög>_8Õ½êì°Jœ÷ æ#fS HÎWNEMeA¹”çáÔ¾•É–@ö—PNU÷©c+Îü¢Äœ­\éRÏŒKWÀ*û ßÜyÌì”UÈðQõ<Ò·•·ºÆgï@rÏQ=k’Ó×E€S^#33anrn5¸eHðœe:³ Yê­Î¬GÃÃ3U@l2Ë9Rc²ÞMo¥3ïÉÔêxOÞ.gVŒ‘ñ:Ùï‰YëndöˆÐ¹o hýyÓðXÏz§'@œÍ1LÐDv}Ê6"bÇÐqî©È¢óßíá8/ȬN6I)în¥©?+”Ý–”íELd|YAa¦»´ÈX&³)ÍôyL Œg¬GöË5¢lDóyÁwtš²w(Qês79_i/<‚Læ·7­³åCóèLKW÷©ë”´È\ÊxLLªöÙÑ‘þÖÒëìÇ#kŽîƒíú0”]tP}›”}}éÎÛY¢”©d³‹S“±#‘ì<ÚjÎ{Iƒ{ÕŽaÊÛ–G‡(e=îóh_ÇÂ&ÝÓædòK‰ln’"/ó5NYóÈš$e]’Ê™ëQž‡°Ë\®6ÁŽîB¤9§`ÚùJQ6¡§DSY; ˆ²;›¢ÕËXƒ>”Ùy¤éf¡ÌJÙëA”ò¥²VàvÁŽîBgy1®]Y; Ò ®yt̺L³ µt×Çìr5]Mn™EÎA=žYõX°"ØÑIPFÕl­;GÚ‰ôGcž"ØÑ}8x:ÐnWìè.œ œžNqÛU;gâ\à©:Ãv"xárÞ„s³Ñ).p§ˆ`ÇÂÆ¹Àéé¸]E°£»p.pzºËnìptÙžú ípÌ…s3lÓ¦.ðBÁŽÎǹÀ¶éxÁ‰`‡ÎΜ‡s$]}œ <ÎО"ØÑY8¸ç/\ìè œ |Ýê_pìp\`ìGOú°Ã\àvÁG+œ œ†…å/8ìè"œ t‰ ÜN"ØÑ=8ØqqG Mq.p†mºÔnWìèœ Üe.pû‹`G‡á\àæyt¢ ¼ÀE°ca1y¦zK¿•s](´ÃÑçÏY”¦y,8¸ÍE°£»p.p¶L„ Ün"Øáh‚s3ZÿBˆ`G÷á\à9è@¸½D°£[q.pz:ÅnìèHœ <÷6]ì;¼p¸à-ï\àltŠ ÜŽ"ØÑ-8¸›]àvÁŽNǹÀu:Î^à"Øáp4ÀÝ íè.œ œ!ï·‘v8à\àLÛ,X¸]E°£›q.pœ ܱ¸VŸ†sç ]à¶ÁŽîÀ¹À³óH™²ó\àvÁŽnÀ¹Àó)Ð9.p{ˆ`‡ã…£áÙÙÍ.p»Š`Gà\`]â/ ìè.œ œž…í·¿vt:Ξ̹À×â çgØf!»Àm.‚݇sÓÓ).p»Š`Gwá\à eZ°.ðÁŽŽ£é™é\à,é»,Úѵ88â·—vt+ÎNO§¸Àí*‚]†s;Ž–­I;ºçè^¸]E°£[p.p7»Àí(‚݇s3lÓ).°ÁŹkiçw— ¼D°£»p.p–2-t¸½E°£»p.p6:ÅnGìp8Ò1çÕØ)¡ÐŽîùÀéé¸]E°£»p.pz:ÅnWìè.œ œ çw/]ÓÊÎΚGg¸Àí(‚݇s3å‘2e{»Àí*‚Ý…sÏ_™€ötÛU;íDª'z§¸Àí*‚Ý…sÓÐy.p;Š`G÷á\àT‰kyt† Ü®"ØÑ]88CÎ>ï¸nœ œžNqÛU;º çg£S\àvÁŽîùÀ-K2s›qÛU;ºÔO(çgIß9¡ÐŽî¹Àéé¸]E°£»p.p¦M:ÆnGìè>œ Ü}¸Öu´Ä¹Àé鸽D°£[q.ð\tž Üv"ØÑ•88Kã·£vœ?2=9œ œ%}ç¸Àí(‚Ý‚s»ÙnWìèœ ܵ.pûˆ`G7ã\àóGæ–mWìè.œ œ%…î··vtÎnE‡¹Àí&‚]†s§6êN؉àóCÇ´ªs3¤ï¸]E°£»p.p :Ðnìè*œ œäÑU.pû‹`‡c¡1¯§k»ºÀí(‚݇s3lÓ!.p»Š`G7à\àùä± ]àvÁœ œ9ç¿à¸=Ï88s™Ò·« ÜŽ"ØÑ}88= ÛnGìè œ |Ýê·«v81yæùð3mè\à,éÛS;º ç§¡ó\à¶ÁŽ.¹À@—¸Àm/‚ÝŒsp­ÙÅ88KúÎpÛU;ºçw™ Üþ"ØÑ 8èn¸]E°ã…cÆYç\àôtŠ Ü®"ØÑ]8x΢4ÍcÁ¹Àm.‚Ý…s³e²p]àöÁŽîùÀ/g´d;Š`G÷á\à9è@¸½D°£[q.pz:Ånìèfœ ܺgn´p]à(Olù³W8t¿Á/ ¢ œNqÛQ;ºçw³ Ü®"ØÑé8¸N·ºÀí*‚ç†ÊS÷^ÿø?òÁ>þá'Ãhô•«W½jô….S·ÒP1øðep®<Œ!F_ºÄ' %.°¶é]%EkŽ)õHDp/÷dÉš³9]ŽîB„ål/®!""+RçQ¯o³e/õõ!HÀr¶‡yD1|NßQ$ a3¾ä ’lÙ¤¨G@@ⳟ>Ÿ^ªžà¨·¬íE¤Áœ­CF@°…ÍtstD<çyH®SÒ‚Ye;§ˆ ˜Ów–˜Ú•Þé¯éê1­LÚ0+™±ÙòаPi;KjÕÉÚVÁ<ç5>¶š¹ YHNß!C`·î«£2Cg"Y Y;ç: 0;ºŒƒ-5úª"c§(‘g¸ž`S—ùÁÃô:òà‚˜aœÇ¯AòÁ®ùµLæË<}£¹²°B¸kölpÓŸ%’ §wJ$•Ùp!Óƒ¼ …BF7&s¹P…© ŠôyH6s‰•€bòg…Bä9ÈšLÁ) `3¶• -Äc‰`Gw0¥Å'™-²$9" Ît=%² D‚™Sˆ®Z5¨ "¢–GJq“ˆÁù¼à 2l9›èÒZ@© œq¸@;Š`G70[˜3ó™çÕ,1>•>£ˆÀ9ò EѬz¤ê”˜™€iuoÒ6g¦OsϬ˜Ñàx4ËÃ28½ÞªåØ"xaÅãbÛÓýÊj8ükãÿ ¨ÛŠè×/¹ó—s¹Åî%ï¤é¥è\àô´«vtÎÐ%.ðÁŽî¹ÀÝâ·¿vt:íí?ýìç×Mì}³1ÕŸaæ•gìdu±ç§rë^zäÌïœ |!qo5ŒsÓ³ ]à6ÁŽîùÀÝç·«vtÎDð¡£?è=x䟈ãÒ[˜Í†VûP^ñÜpí»6fÊØq^hy:8=íê·vt-ÎîN¸½D°£[q.p÷¹Àí*‚C‹mÛ?ûòZˆós¿8 áýÇ-7¿ÿÓ­Ò8øÂ1çÍyÁŽîÁ¹Àº×nWìèœ ÜÍ.p;Š`Ç ÇkÞ¼a`ÙõK~{ÿ±ý?=66¼¨\-Ë(Œ1ÇT - I€€ÌyÏÃP¯\z OÅ?øö_nýJµÍcy.ç§Þ¦M]àgv~á’Ññ=õç‹ÒnG$ö¬½øî_K•Ö‰à 13^Lo¢UmzdÀ² à¡äW²ºÀ2¹Àµ<²f‘ÉmMÒgsÌk,pæret“½ùéÔåª×#åí4ݹ;óÜË"‚³ à$·ŒÇ"£Òœ‡ ®·úó&奘F>¶±çÀ¡ï½>JBœoI·ç„ý}ë^{íÕïLŽdÀœÎ€fQyè¡{J©0Ð"øBàÈz$3®A|.°f Õ`Ýà %€§—+ÍúÅçKÖ“ùŸklgµ½aCZsAjFï2!e‘œÐ"Ø àLy¤LÙ¾p"8 NgÚ$“x\èøÎ7ÝØ7°aéwÞw™a&c ”ò ‚^TkÅÌ †Éõƒ¤@ (®€­3ƒ N¯!‚‰5lu :*clt ‡GÆE1bcaã+÷Û7¼êÇ>úw÷|ãOZ•¯Ý0àDðlŒ éɧ?s{µzê-ÆÆ¯ÃŒ·«Ô0 üþwm¸é}_̾±Áç'€Óç‘5‹b3®ÿ¦éiú'ÿ/kÂg.Q<Új’'tÓv“HòW¤Î¹®·‹-LåïÙ©;Ôt<Õ ÄùYŠàz9 7oª)õ4¢8SÛÉ< YX6`²lak7t5ë‰#Hp’·„ É‚d­<Ù´M&q@g`À‰àŒy¤LéDpVìpªÄµ<¾¦þµ¿|㻟|îÉ÷WÂPÀ˃]K ’O`"pe^P@oÿ"xRBH "ª ^˜Qï}޵A5ŠPÕ¡¼h:Ž ™ ‰¡`Q=±ñQ>9ŠS£cÐa¾’¸úÒ‹£Ë¼½øÛÿÄÉ–uw"¸uú ,€ŸÙùÅ5#cϿ٘ꛙyuÊb6/ðÿá¶—|ðݵ,'€Ï™0àDp¦‹`Í14ÇdX#â4ǰliú…-¨‡ H(òÙ£$)n&„³ `Í1")â–MRXª‹1‘ücE<ò9YEVÝéfذ†…¦˜#è\LÌ–-y³^ˆêåðá Ÿ}‘;Cô6¬ÛbŽÈ²…ᘦ A’IN#‚-›3D¯áˆ4kh‘á˜, YÖdÙ‚aiv¯#Õþ ¦$_–PÂgEËš $!Т\Np"¸E’Û¤o+'€³Ñ 8ÉÉà‰ky8åX‘ÏJøÍ…ðYŠà鎶eMõìº#=NÀõ¶°lHä©¡eW à¤LNgÁ‰àVÌ_;œi“ŽÀ@RÁ¡qç=7=¸}×3W¬Z0/Y^rrêÍÃS}žÀDlqtd$$®\6€B®y„3£VQ‰b” `xêskLÍ-¶£8– t,$ÈTƇQ8щq<·ÿª¥q,ZÌo~åîþÂÿøÖ¦3êîDðÜÛœ'üÄ–O¼ºRþ fs-f Ò;[h|ñ¢«^uÕú·íüÈ à¶`^p"8 Ýû0¯bLb’üHD ]ÈoÀ°¤€%)íQÎäD¯.ˆ>›}<_'xKycï¨9õ†ÚëùS-A$vç©ø8€šè"+ÉÓ>º zLè³9Q`E™f;œ.€7•¾ö3Lµ @IµAŠüó²x¸æ² e<òt º¨úMì·9Yœ·þáð½—ÅÞVûïŒ6 <|'¹a ž’”ñeNçÅ"SPý6'z¸™lX×õ;ÇYUµw1ÛÛ| €‹‘.ç$¶´Iüa OMDF@AÒHRF’gùƧœ DÞz"Ç9Q䆎ð<°e mc²l`a'…§ ÉJÜ-"8qõ Y63î1’•(&mâDp&ηvx.:KNgܤ#Dð/~â'Þ³ù™Ç~çèx•"–È ƒ•Ë–ƒ/A¯0Ø“ƒIû/)ø(ærØwbm°¼¯ˆb@ò0Wí¬‰Q#T…µ ˉ ޵ ³4ŒjáthA&„ ÇY@²Æñûq|d@<1†+®|‘¹­Ãå_ÿß›N;œa›  ½ëù/¯œ(^Ç¥uÆÆë˜õeÌv³½©R2î7Ÿ[üö›¯ûí¯Ÿñ­Á/8uœù &ë²HÝÊ¶ÒÆ¢eóÏz›¥a`¯æøn–kÀF°Œ é°v±kAÒ¨?ótû°H-©œ6'>4é…`ûXŒè?L`²‚H Ö‘%SIHöÈg F¸¾.ð–Ê}k,Ìç=õgÌá'ÉOÈd‰X“Š,LH H’‚ i}‘›yY–EŠlå—ÜlúyÃl7D6ìÀB ’õ¼CϬÈgŸÎœÿÀ°Æ±êóþÊ3oa6oeðË€ŒO‚„!¿à—¶(›Ñú¦$õ=ì$ºV®X’‡TÖ¡ ´/ FËÈäD‘}‘S"8ã²HõðíŠD¡)QlÚ;.X •’ñá Dp{-‹tvÔ…oEOĶJÆÆÄ`J:B<”HÚàs-å8¤_îÆ-‹ä–E:OË"9Îo{ß\zǸeç“Ò_º=•mP’±|Ýðs½(ä|H)! =b.‡(Š ¤@A)ËB^%¯"¡4O‰Û©F=³-“0¬¢kDž@Usf F"|Áˆò˰òb…žÂAs>öœœÀ¶mOËgÕöçßò;?»ó»Ý|‹[)å6`Y¤õë~ò°€8 àÁ韗ÊGÕ‰ý?X÷‹£¯ÿËQ¹öðEű¦EU2÷©†â,gÁY—Er¤#{~F2­ |À „—ÉVäqVxœ&2¹ÀмL.ð˜>ýSh!~k¬Õ½V|” ¶C… XbŬ( hè—¡šºÀ«ýuzw¸ýÿX“ü¯5ÐKÐYfŠ,¸dûäÛs\  › ,Ird«w¥IËàWÖ_LžE¤-‹ˆÉ–@@ZOÖ§ÕÇOË#•fðí-¾ÞÆ`eX`"bØ Y²1…:¶¡ „!Ìì@ٌѶÑïü¼eóß‘8½ç’% ~«æø?£¿+Hýµ"o±ˆÅ¡€Œ4…QÌa¤9Ò±u^öÚœ(@ª1ËÓ±5ûÉ_ßÛêG×õoxmhÊ"¶¡dX"+Ø@öh¨ä ÔÌ næ¿.pÈŒ“»‚=c[~¯¸éÏ"S†cÁlI’²¾Ì†5P€/òPÂç,.0‘Îì nêG8ÃâGƒ$ Ê%3¹À¢& ²@$8• \+°&“ÙnWìèæ¹.0AðÜ.ð<: f‰+C6“ œîú˜].â†.p¡7¹>n Þù?ý…'¶>ú:¿)zV_‡@)Ö߀ÁEKÐ(ôäxR@¨õINeï{.ìÑ °Måu9Arbfúi%(ƸN~×SAAm%Ç8Žq²T‹P^ˆa‡%Ñ(ª¹%èYž‡êG vâyïœÜ½ŸûÂß\¾þŽËOݽæÎõ_ù»MÃçS;ÎŽ÷í}Ý—Ž¿íS’éøg|©iZ"¹ñÚ«~é/XáàÖNǼpV¸]Eðù„aß‘.¿‰ÁÛ‘DâD¦’ĬsÕD\1ȧܼ\`Ý×Bû†Í‚Ä…&2qr¨#ŽlÀšÕ[6óìè.œ ÜŠsÛ\/$òEŸ^}Ï;»ñþbo±¦w%ú 9[,é]†ÅÅ<|oŽçLŽã¢æK ÐâÔ!EI(JÀ0aT3€>•ü}:fxž‡ • FAJ‰QA¨h 0«”ª`hÙE(Ç1¶öÈÓ‡ñô3ÏÒþ½ûž{ߟüö>wϽŸ<§ 7£ÎNÛ'`a'g…^3ÑïýÊŽ³ ½w£vÓÔÐ8ˆCŒ†=&trù’›ÿk±°¼õ=Àv"xnè-ñÜp¾\àGǾ}€—§Üí­ ¾ +À‚AÚ@Gš£8²‰*\$I^Cñ×ÊVäÝqØ"{¾འ² $!Á¡…ñ ëHsLÌ JßV¢íƒïH™œ˜Í-Lx 1±¶lCͱ§mÇ‘aÍÓ×ëævGã“·¡EX2‘ØÂàPâ;é$ýÔÃBP<ÙîþÊ­± ÿ ˜¥ŠÏ/ŠaßÙpƒ"ïý‚ij­Z¶ž%«˜`6!#99gˆàŒG'Ä3Ã÷ÿ¼aýAƒõÏ+f,olX¶À šÙV”Õ"4ÆÆ‘ŸW‡L»²íø7.*EÃÿ‹Á?1íc¯¢Ç †µÏl%ˆ¬$€¾Ñ62VdË 8¸[]àvÁŽîc¡¸ÀoúÍ;Wï Ÿß²gß.Z´dDÿE° ”*U¬èŲôsÌH/ÀŠ^‚R>bâš›[1Àª!Í•, X4­yÐ#äp,bX&ôä èÉ¥JJJ„Õã‘ÆD,@¹~ÆÇŸBõÙ§¡™PìïÇɱ2~÷?ô¿øž·ÿÂwÿ×öëº)ºùͧ7\·v¢ÿ“‚éªúgL|ð_¼¯ý‰ìÇlbŠ…åÿõ²KÞÐ46ÚÑ^Èawæ ýTÓªLáa,}âÚªiJd{@«&±ã4‘59ÓhŽß‘a—’ÙÞ f€pÀà€Ù†µs(c[¥˜«0ó˜ˆkCñU;iö=ƒ¯ ö¼ù ö,¬2¬…æˆæ3îòpüÜm˜;|Z9p`ŸÁeë[6Js,bRl£Ìå°l[uDŒh/’z×'Ǫ‡,Q2#u}ýÝMÃÿþŠØ†_Ã…¿Óàë5GjØ,³l{-tŸá¸7â°Xµ¥\ÅŒy%3*ª¶D:é0H\à3„üñ»iÛ©ï<`XÓÄ/ĦګmÔg8î5¬{ ë¼a펔áX$ë7^C9¢l稘G˜V2sØt% IDATª“QÔ8Ÿå=Þ£‡þÏoMD§6Ͽ؋mÒšã^c㢱q®Ö)#)õreìͦìky ˆæuo”3;7{ƒc6¤[œSͶ¡l?&ÕKñÌs•²^OÚÌ£ÙòÐY:It=lmE­®ñÙ;¯o“¦³n7†²uøÐ¼Ž!5®KŠ[ßûäß¹kü™­#ã4¸æZ¨¾°BAÚù\€bóYœA|oæ{k"\” ÅohŠIÆ·"/ ýµ¹“£cxô©-xvÿ>"ù<÷1˜“ð¢1Âb¨¿ËÖ]‰  *MÀ#‹*yøËÏýíêKÞR<–+ømÉx¾!›Ý¡œû¼nÙÝ'[vtŠ ÜN¡Ðÿý©[o^]êû¤`Z_ÿÌï;š/½û#×>ü èƒÕu³·B}kà ¿ýç™*áxÁ™|ÒœBÀ‹f:Ó;e,ð¹ …Þ[Ýq€• ¾²úR!ºˆÁ7° ™8 Æ³¾AìE\ÕWŒŽÑlI¤f"˜ ¾Ë0ÍpƒWè0b@X1³bXiX ù%ŸÁw7ùª„Æk­ 0ìZ‚xža¦ìqâDKÍ‘0¬É°N]ŽgÇ+|S‹$›1åúZ†M ,=äÙzBÅ”þ“ u5%"ÐýDâA‚Ø^›\Lˆ ¤AÉÿ djùqí†õZËú'jãµ[ä€o4¿Y’÷O` aÍph…•äY|«Èg!$f‡B×Âh›>q,›€ý¤m("pÄÌ’Á”ü´~è.¬±À-ßà= [¨u Y@ؤlÒ“/ê= ‚D¦±À.:½vtn,pŠ×·é ±Þù‰ŸúåG·þཹÞŹE(•Æà‹1ìØù}K¢zú{ûP.WðÔ¶Gpl¬Œ%ý°¥1ìR.^¶Ëú0^.#ä Tóû’æ©¡© ˬT°4 ÄL8ZœŠ'Keôç èQ/™5{Ç+ØôÌÓ¨X‚"ôú0náäÑýÈå •CE3¼ñ£ÐQ=“÷P DÕ2ò‹–` ¬â4õbÓc[èºkã7,{éªÍìi5~Íqޏaxyî­Ï¿ø}y£~ S§W¥þì—ÖîøÐÆ%‡Ëõ´ÖÆ—Mß–ˆö]¼êŽ_–2``îÉÜfàÆ¿ Ì¸3ÌG;fb¹éäW»ˆè;ÌXßE 'Ç%`¶¾…ñ4GQÄU¡9äùL†ˆÜ}[jú=3_AD‡Q[£˜É`ea¥šc2¬¡¡¡¨Š¹\àÍåo¯pM£ïô/ ~G“r\G„çkc‘%ƒÃz–Ò6®‡ccö8` ± <y)Z t#[0åüÚD¬’¦dÉ!£È³’<~räû¯ø-+ z\ø,A' ¶/DD(DD ˜(Àµ%Ÿ&°"ÿI€·hÖmå= ~OK™´øM ó €-ƒ` ÃÄ6Ô!•"Ïz"Ç þ.0s4Ç9Ä×Ú’®TQÓêÄ)ûA.„¾(fÎ%ç#"ij[÷è…À¹ÀÝé·£vœ~ñÏ~ò?Üöð‡áðÈSÏ \ ˆ¶ ƒ¥‡Û^|rxhãwPÈå`@øáöˆbÞçvƒXÑ£Ð׿ËW]Š—\{CËñ=ãUŒ–+PBbq_–ø„ü´ÓÇ#`™/p$´Øyì†ÇwÓˆ–cQo¶l £Ç€˜\Œ‰!½¬Ê# +¨–**УGpd¤ …eLÄ€¶ òX­Ñ·b5¼Ó'0J[¶ì…—‡–­ºxÙ±C£MŒÎ>{ø½Ûn»eU¹÷“‚é’z2K¼ûPaü]ÿóš‡7ŠYõ°ÖLw€£Þž‹þâU¯™Ì"ÅŒæ3w˜];Î g îÆOñøø÷– éŒË´ £ö7ÙåuLX†šû °Ç0¾…õ Ç*²Ú2%.hsG¼Ü Kõ¦ÂËØÑl_Y/ä´ük°†5Å<5þVN[ÙˆÐVš…?G‚ä¿wÀI4£æD#q¢= «4kÙL†ñȆM«ñ¿tªž5†š@± ¡%)«„ÇŠ<6¬¿U>ºW’úÈ4ñQ…HLÈ1AjT‘7ê‰`ħܨ/ c¾(Œ²0–“Åñœ,޵Ÿ‚ì;Ôï-ý AêWÐzÄŠgÙ¾-9N˜9oa :ÛÐmEUmIhÁp¶±¦I ËDøq}WÛÝ¡ÏåXàfYÔb  .þ›´ÃT$L§Œ¦ŒË\‰4ûÎÈ#åøÓZuÆñ”µ¥j€@XÜÛ‹U½¸hq?X(ä—`ph1¨·7m¹—VšÎßâ8;n=±ªð±M¯ùèêRßW§‰_[‘úÓ³~Ë+þç5ol´³À¾ßû;×_ýÿo¹ ž† |n8C-uJ(ô AÕ–MGž zàFëÆ3ßE Ïמ|ÉdPl} íiŽ¢˜Cs2ÃlÌÀä8àï2øEM’¼5á9Í}•,mͶ00Ф0÷2D Ûlýß§ “ßhš|À9€*KfRL¬¸6XÛHD\µ9.4\i¶ Ìঘ@O`Vø3@šˆ4‘L0yüôØÃ\ݼ¶ôCIê¯j‘T¶¶*A”‰’€*KR¡"?’ÂÓ’<+IYÉSB‰8q†,ʉâ?ö ËæSÍrfðm þ'8™@-gÙDqÛ0ŽlYG¢h¹À­aÉúLŽÎÌ …nƒ8yÛ#JÕ.V·[q.p÷¹Àí ½yû{tÝæÿ•T>}r D8+Ö-€¯$òA+.½ W®Yƒ§žÛ‰5—]+|ïû_‡§E +×^²ƒ+.E^0.Z¾+††P®V±ÿèQ€€•CCè+zsyôõöáøhc!ðƒïÅš«o0ƒ€jXʼnÑqœÆÕ—®ÇMW\‰#K–cãC÷âÉßÄå/¾ +Ã*xñDU3Æž{;žD%6XÙ_À’~—^•pª| ¹œ c D¾•P(PžGu|,yâ{ñ¯Þ«~áWaïßڽ¶YÛ98» ü{Ûn{åòjñã‚iò]ÜïÆ×y± ãØVE6hÜ^M›§ ° œk‘¾ç˜&Ëþ5álÇÛãoÅ,G¶[Ç»Pèì3§;º‡…8ø™‘g7=¾ïBK(Ç$._±WÝp‹ã{ŸÂؑ簭<‚%¡Ø;€r%Äx%aQ_/ÀwßñôôÁh‹•‹úpøä)ü`ãý85|c1A‚ñ| °|åZÜxÍM°`\Ãíð OaÏó;°çäNoüÖ_qŠWâðéq„q Ç8~`'öìx×\{ .½ø\qõlÚô }lŠ×'†'P ŒÑàjV‡xnXààÀ"¬ŸÀÊUk°l°££#È9T£‘±-*Õ**§Ža´¬¡ËÕdÁbé㳟ùë¾?üðGþò‹¿{ßkz<ÚT·¯9º¶÷?\÷•ÿeÚǦ"õ§>{ù“´½ÿdK'ïøÉ-ë€Hl_éOþÖy-¬ã¼ÓðŽw Aæân…~dì›/pU“d»* íp°Iº^f{’1†2Yšˆ} ã[h/¶UqUèÌK"õˆþÐbñf¾S!Ð’Á `e9™«¶/ôá´{£mÐt'Ú °$¢¦!# ¾3 kB¼¶’æ8ÕrHG«ûnFã·@‰g0}ü/ÕÆÿ’ˆI£„g¥ðÀÀ­Íò ÐCµNƒú~4EQPe‚JNöT‹j0êUCºG Ú¢°Ùoó¢— ²ÏNÿ D‘ó¢—ó²Ïúª×ô©Å:/{ïÁôµvÎl¯—Ôò—µÙ»}fXs$cŽ„ž¾>}Y¤yÁ f Ëfò§i–E²¬'ŒÕ”,y•,{uæO8ùSß&™9< ™C¡©áŸ`LN–´MµC¶Pèéíh¸LÚ†sþLß&k(´£ûH>uºe‘ÒãB¡3fÒ€~eÝÁûw¡È"¨z½èï-àÆ wBpŒÿøæWðØÎ=8xüú— Ø›8³ÇönÑ ù.À[^÷Óxõ•Wàše‹`Lˆ±r;žÙ„8 ±xh9.Z<€ˆ%bcPÑ{ŸÂáÓ㈌…’ †Ë„P[<¾õI<øÈý8¸{+´Ñ9þ]ÇFð…¯~ÿøo_Äk/Á 7ÞŠÁÁZ §X€' FÇ€µ ¥@8uü8ŽìÚ­O=íÏ#,ºè äWbpÅ:ô¾ª'àèñDe Jl±%|è£ü™_úýY?GSžSÞóìíןí>LÆNÄó¹,Ò¶¾ìÎ7ì_ÿÐtñk‰ŸÙÝ{úµ¿õ’ï|¨•øµµz„Ñèe/¸üK‡®kù6E¯'·,Ò…§cà eóó;#Ѓ¨#D2ô·›¹Å þ@2U²./›d2,Šel«:¢2I¡2¹À7^6ö½ñ¯>à–&›¼À&LÌõqÀ0°†™žÚÈ6¬›ÿ ‰g(‚ØØ Zà&L Çæº œb9¤Ér‘„eÝjüïÓHä`iúìÏF’²ùµõùÚæ»¡Çë“H&c¡ ‰ª$/ôD>ÊÉ^]”&E–µõ„›¹˜¢VË À°ÁU=·ï{|ôßfð6)ĥɌÍT Áì1±²l¼döì4ǰ0„Ú VÖ-­Ì–ßYXJ:!¦†I’¤x¶CÙ ËõñÜ– , Œ­…Ú³&†tPvò!'H€ H0A$ˆˆÄdûÎ]Ë&“³9$š– i‘$JÚA2`æ,CMÀhŽÀl“ Þ,“…ìͯ×H@$¿™ HD’¯¨Þ6s×Û¹ÀÝé·c(´£û˜í¿é#w~à >T¼qÕÖÝ‚ãO}Û†CÜrUâ%ÜÿÀ·`ãäù¸ì’µè\>u =³^r͵X²x)n¹8ùnÿDGOC©Ü‡ÞE+Ñ¿h9˜-žÞò0Vöè_´=‹V¢†¨–Ç!¤Àò5W@JÂá}»0´üb<µs'ö:‚Þ@àðჸtý5¨TžÃx%™Û÷Á§>ÿ¼ãoÅê•?…}Gà±G¿0°áºëQ9‚m»öÁFU3&ŽžÄÄÑ8yàž_²_¾+‡A[[F9ŠQ™‡ð}ØXƒÊÉÄ_BÀö  tzŸøÒ_l péâæm{n\à{ž}ÙµkÊý(Y¼ìƒO¿úí¿õw¿6™~†BÿÈáËúï:|é‡}+ß2í㸬âæ²Í¶k`8uW±1áe¹`ð]W_ñöç3ÐÑ–4}Ké”±À"ú™Ò¦BmÖÞÆ=„)·Ý‰o2›w ±Ø¸’‰×Ó>jK"±o8ò {*æ0Ž9´>tË%‘€3Ep²’m(€|Õd²Ä}– – +-‘¸¯‘5 Õ8`7ÿ»‰°­•}àW7H·˜aWÄAÌ ”}9¤9Æÿ>ŽÉ¶'F2þ7&¢XÔJ$³?ªì* …> ¢SÓöc‰È ÈX’Š}‘Ó9ÑcYdE>SÊÚº@¤X±€ ùEú™–¼V€¶×ÊRï4FÔ'1³l²l0÷˜²Z3Mý& f+ Ç22eËÌPÂcI”XÕ~7aõ±ÀõfÆ4G06&Ã1iŽ 9¦š&Ëš JÊÉàšÁK$@ $™ ɳR(–ä±"Jø$I±€D2ƺÑËx–=X2Õhz=SµC½- k›ª¨Ð¸Ð6"AŠ•ðÙ”0òœ♡Ðuá[¯¿¶Žj¿5Y6dk"¸>.œˆ@L$ H² Å’+ؤÞ ¡À,A4«Þ (ÚÑ]¸±Àݽ,ÒkßöÒÁ¯nüÁ»_4ԃŗ݂_B]´•p'z—®µ#åà¢Á^¬¾<5õô£÷âÈé&BµK!çù¸óª©éMž;p§ïFuɃäÎV­”²Àá #‡°ž$rÅEè_¼ §ŽÂØÈI,¹èr,^¹a¹¹k'B+0\aôùŒíÛŸÄ@_®ë-b˾£ k0R‰ð¯þn|ÕObÿ³O`ßÑ“ÐÃÇP­Vñ’_‚ÞÃ'pøð~TY¬Œ†B cøðq<Ó׃þþ"z—­ ­qJ‚À…"¨ZŒ•ÇÁ <»íYú•ß¼kǃŸØÕl.—³â¿ì½~å #+~Ï·rrŠÅaá?·÷†'ÿvíæCç#ÏóÍlyåÝCaþcZVÿÌoÝÝ3òk»rÓSs­ < ‹|nñ}7¼ø—›;u‚ ÜÞ¸7”sÀˆ>ù“@S%¿›’ÙŸ=$Ðè€'Ðx"(0óÝü@5˜ƒDkO'Øh)ë’H‚Ä}†íûš|½Éù “™) V¦á8``¦ ¼¥üÝ!76Ú9ÃÔmÆè1n,€ÁÌ7á jã‘-¬)—C€ÃÕÝŠÁÍœîËQ}ò«ÄýÕ²¶ü‘'ŽlØR0s%·úrF–@†ˆ¬ iù\dõrÎ2<MyÑûÈ„9ݪµ¸ºúÚÂ`0“5{75 ™ mYÄ6šëެõE¾¡ð¬¢ ÉDš#D¦,N†‚Õ}WYè%̼˜a‡,fæMMÂËiL’Ú_PýÏÄDÄ”ÌMeI+IZ%|+É·¾È³'rÖ+@Á?ÃNÜfA±­PhÊõh‡¹ äT!Á`iÙ*mc¯jJVs$“‰Í<ëÉÀ²`Yà@ú0ÙÓ…¯¶!íÛÚ?¸Ù²Yð‹,ªåuš Fˆh„ ÔÀv!TœÔ™˜H° e%)+É3JÖyëÉû²À‚¼dÒ»ÙBxà\àîsÛU;Î?ϋ矓‚°þºW ïI,íëÁ!Z‡µ2)ÆNì¬K/¹-™Vä‘ï};Ã`O.ìÚ‹/Áë.G7u¯T&P5.Z Ë@¥<†ýÏm…®uú­àù9HH)‘+ôbtôØZ Tã—®ZŠ#ÇŽ£ËV¬†Ë8zòz…Áb#ããPĨŒžÀW¾òOYBå ‹—¡46ŠïÝÿmŠ…ä¥ ŒÀ$¦zZÙ•¢j'&zP*UAÐÈ ‹Ü`£•:Š@Fƒô”áó¹ÏþÍÒ~裷ÿýû¿þƒFm:øŽ—^wøòwç÷+˜5lŒ€ÁO¯øÌ×Vì|ýñ d€…áÿÄ+½êØšzVþÔ´$QIÅü‰=öç ãIo|ƒe‘ZqÝ‹)µø,—[©mi)€ œÎ¶°Í'¿=„©ðçz¨mL k2¾Ÿ£ ‚à1Ø·ˆ<;Œ¸"4kaÀ­Ç9Ow—«‹=ï-(6Hª,Ûõ‚ÄvLÌ\[˜µ¨O>5Û3«‹àŠx š "ñø´ï¬ ±Ñ°m8³ƒoðï˜t£¡,[e)Y)¶Q}9¤†ußSzêÍÞAì­-o“ˆÖÚòGDB RF‘o \Ù·áôÆS_ÐÛxW| €ÍMò©×»Õש¸®ïÎCþÒ)õð'0` ÀJ”„@Ûd r²Ö0ˆx8>²üpu×û1ÕV„k#PÆÆïÂ䏿$´@QÁ|æH„$$Oû²3M$¸6&~–ðÓ4•ûÇ6¿Tsü fû ¿M椞=¢×pŒ(ªœ"ÐcDb“'‚¯) N &)‡Ò’”ö„¯}Q°¾,˜œ,Ø@­ÀIy=ñå·[6·cêœ ~q³†`Ø ÆFKkék3…CЂäýEoðßI-HXIJ+h­¢˜Ù"a}ÑW?V°lhóñÿ¸)¶å7[æ×¼ ÎýZ'ÖhT)h‘xD’ÿý@÷ #Hji¤ð´öL^²È¾,_X‰€Ÿ‡äwŠv,lÒœ#?}ü¦~øÒÒÇG œ­ãç>öãïýÛûî·Þü2\¶t¡¶Èû*#Çqdï3XºdNœ:b†qãéÇîÃŽCǶ-—0V!œÚº½½¸yåPò‚ÅÉÅÞ ?€Ã{¶#ð},ß póK^‰@N•C<´e 0NOÍÿâ÷¯Ä —\­#TÊãØ³k+†K!öC  ‰8ޱëäicÈ/]aK–CÀ‘ƒ{pdï”؃ðv`E¹ìð)Ž’]i%åt ¿·ˆe—­ ïØ!=9óP³ Þt*ü¹&&Hˆ©¯Ä¿ß;ó ûJ}  Z4ËìÒž¶a‰ªõ¹j$«–aÐÓYŸ»&:ïûA‹0å+ÔCi“ ¨ÀÒÖÆkŽÉÀ@³†jà¼2ìÝMö{¢æzµÿ[°³–çl®8(ª-É£ì1[eY˘[/‡d8¾½Y$ËM®ç:mù#¡¦–?òȯïw€†ã€|yò£zx¬`°df‘„'¡­V®»Õ‚ä¼\à@î&P¬ÈóE®shŽŠ–MžÁ~½>É:Ʋ"HÅÊXÖ} þÙ Ù ßÑä;66úCC‰À&-)¶JÂgOäŒ?Íí>QÙãïò­†õ=.ÉTñ™,fð]Ìæ®Ð”+BõËJøŸWä«M\k£È†Q`«ÚØHk›¼ê³ž[6·0ì[3ä¹–Ák}aaGcÞODF@hA26¬«“$z2ÇŠ  MG¿|WlÃcj½í,|³¹Ãråw´­~G ÿ3žÈ?/HÄde,E5Š©Ƕ¶ª kÈëK`R;.(Î^ø.p«<~ñÐË—ß0~ñ—™øÐ×o{SYFÜ>"¸ýù¿|ó=+P=±‹¯»†ra×ŽÍØ;\ÂuªÕ€$‚çÐsOBH‰‹‡qr¢ŒJ¹ Pû~¯¿ùF(öWqêÄAì8p×i8ÖX¼âRTY`Å¢ALLŒãôø8.Z„¢g‹@ …"J¥ D, ˆ‘r¨LŒ@y(¿O ô (Gqí‘/„—ÃÈð0¢j J*¥P=…áã'P…‡~©¡ ˆYÀ+1®Ïú§þ¿wÿ»µmškãOßqçPTø `šþLâX˜/oí?ö¡¿¹ä‰|úÕ ……¿€‚ñ~ëw·¿âÁ_ùÀÃ@{ºÀoÜwåÐËN\ô'ž¯›öqXRÑGÿøªq}0Ý]U¯ªºªë¼sï90Кa“1*rG¤¢I[{–MFÎ_È`KV’£µ ´±ÙD~èàÕoX Àœ£9ÄDo‰¬ÿ:CÑ—áÝbÙ„†t ¡}Ë:4¬Ã:d°Î¨ú˜]¸–u˜Œ%Ò‚Ï`"Ö1%ßv7e;ò;¾Ç°¯:JÛ$_ mpž±áŸ™ù† ™·& E¾æ006 G¡á(bXëIXÀeÊ)xì6^°¥ÐSxføHÛ…K[®&Ð<0­úò®WôÇýòëÏõ¸Fpl«À¯úì¿úþ}" aècšÓ‰{;û°§/9ñ3WÆuÊdQ4„Rࣱe6Ü¡!¸R¡H”܇1öç}äJEÜûÐCˆ"ƒ¾»QÓЂšÚFôtµCÄÙkV#þý˜–rÑÝØ×McÖ´fHb”JEô¶èܽº:Pð5€L×av³™±÷`d¶Þ@Í0&@µè;x¥d®ßõ<Ô¶ÌBscvo~iÁ(ÖdÁ!฀5`!QßÒˆæé3±vébA C¥¶T@çJÐg“ë!¾yå×ߺ(sÆûýbXñÙ¯Ú9ÿÐö3VÎ/4~A±xÉè× Ùûö§sŸþêò»6•_»|ÕmüM/ûgÕ;ÈY¥Úï¾²cÙY×ÎÚÖ<=ülá‹›Î~]C˜ú ´Áß¿­®ç}ÿ¹ìÁÏ娦pìbBO&Ǫ ü\“àîh¿`ðÛ«-K ›1Úüªì Š„ ÿ³U0€… GÌÛA¤b§_ö˜­«9 5z¢fX£!IÝj¹êyYŽQå¡åÞϸØ Íš4G0Ðt¨Ö£¥ k´V9cÊŸ‡I'‰;™Í;+-‘”A?€b§å²t‡%q0‡b ê >½Ú ›ËûH# pDHââ~N–±Ñˆh=3W%0 ûÏ z  Ž¸gÚºÌÆ3ˆÂЖ´0‚™­¶¬áˆTlÖD."@Òø®Ð£"„C.R²ÖjDÆÂÂJc8 -[0 H#IG¤´GÝ£K€6?é‘d6Ʋ ki8ÆD֧ͽ7þ;³­–;}´àY6Ÿ ­?Ç!÷—`0YÏZSdXQ~ $ã›DÕ¢ù§†bØ,@L‘%€ØhËÚ7¬Å¾üÖ–¡ û— ^w”¶8‚ÁE¦8GÉÔ¥ 1da…þ÷÷ýá÷ŸßpñDÎÍ[ÚNl]×7ûR×Ê·`T›š%ÞÕïøŸ»|õm× ŸÆQøÑ‚M—½kÏɧ ¦•šuÞÁÅW^;kÛÛ&ø•8 G[~ëžÕ3Néù eÅèêÃR^…_üÒš»¿7辤Þ)ø‰ç­|,àÉâØ]å툈îÂXÕ3Š_¡ Õ©¦›tO€é•VÀ°/#ˆíHTàÄÚ3ø2ä’ö83!3¬² ¼&}ê–‡‹wwclÏG5 ž¨Öe7hÅœ”A³‰ó!—˜a]­¬ÚÑ&ŒÜX-%=¥y.–P±”×øÞÈ8 Àì2ÃqH‡Öa£Ë ŸÚ°Usˆ± €‡y¢Ä‹„‘äG¸<úx68­?í ;?‹Š‘M€Œeó‚ý¾$µž“ÍXhÙ€&Ã: ­¯]‘²Nü/6ÇbG±&Ã@eB,HAC³+RÈ¢ÞH©d4‡‘MÔ2"‚.áölZÖØŽ`ÇÑ¢|$•¿Ó ɱSù°[óPÐåîËoùƒßx4·;ˆÙ¾K#Ú%ÉyÔrì€ KI<•H&3¤>jä7F¢ø30Ä,ALÌ ÈúÎPÐýëdçYƒOˆŒÿïŽð>Fà"ƒ[+QŽæ"d2Ç !Pò” å3§aþœ¹xñòøãæ-¨ÉÔâÚ›®ü!9 ìØö(Íœé¦ <ºc+vgëqæ¢Ù`ž 4{ û<E?‡Â`:;ÚОÓPRÈ‹ÈçÖ]ˆû?aò5è fõÍ-ð£YhH)°_€õR˜»ôdÌY}2LPÀõé,zÚ÷ ×3€Æ­˜6k1²5ñc‹  ¶¾+/Egß椳(5eá¥2( `ŒÁUW]yú,œZõX ¼¨gNú5ûV½/cœ)¿Ç@A…ÿöÝE÷ÿ`wÍà°Šth,Ò£ ÁöšÞw,ÏM» @ڱ⯿úØïøÄš›<·¥Ð_ÞtÎ%u¡÷Eê‡×MöžÇzÞÿÝ¥ì™òm˜Â‘0á§’)øpزý»qÛP£²f‘”?(’¤LVÖ†ƒº÷g þ`•uœà‡` %fXnl†e݈‹Ah32>{œ=¢“à:ÙȺ­AaæåD´?Îà%‰²Öú€\-ÿ÷IŠƒ‡±åÏ‘„*t7ÀTX®•agDÀ ÅÄŠÙ*ÃF–U`#Òcö[ßÿûFnîÉX ‡ãbg]Ž3Vã}[QwjþÞžë~À°®¶^µ þ æè5q-HÝŽ;…ØZiXah‹Z ×(rMì=¬6#&iñ¶Ç#Äy Hrld3lX›ò>ŽŠó¡Uy]%€†U蠟Z"Vû+´Ux-q¹FPlEÅ ܞß|ùÉï^=¢ýêà'=߀43Ïcð Ä&UGºO‘eóς䇒`ƒ(-†4Ò¬2ž%¢ýÌôXyÄ•­¨î*0ÄÏ çOÎ 1Ý »ºG Ò€0Dd{Jû>4ò;D û@ÔC >½bpÀÓ™1aO0oüÕðrÍá+ÜkA–!´ â¸(H+ɱJ¸‘<ŸJ¡§ð±¬}ûkÞRkRW–7ÎÀÁ§ð¾†(ûmZ h^]˜ý“ãós^¾¹f_8¥Ž™óšå]l<9J~Ïe-Nš3 à®ýüÀGKm íAf@˜e¾KVƒ­F1˜¦e=¼â‚‹±²¥×n¼Ò‘hï§v:@çã£8cZO>OîëĪ… À` ÈÁkhJÆ Ô+B½ò0kMœZ £à¡'ý=ˆƒCùøÎ/à9p›pË,ØÀ‡ß¹wä°r}½(äshš5Åþnl-¬_D×,Z±‹[›@Ô‚Ò‹NÃ=’ihBks3Ré±Ï½À©iÄ ‹ça@KD…ìëÏ#èëëptï~ ¹êÒoÿì7¿ïÐc2Š.{üœ7×EÞ¥š9ê­Ð—únkÝõï×ÏÜ6¿4þ÷îÊ¥¶å± >YyW@]ä}áƒÛO»ï?Ž»ï‰q|–ðw»ŽŸ½¶oú(ç•_c wÂÏ}öø»þŸ/ÇÈŒ1¥oâ¬O=‘mÃwt¿ Z/áÜÎ0=†u )Œ„õ#»›‘8•˜KˆC„pÉc O¦Ù`, ‘É¡‰*~JÃEOE68Õ·y1¤{e^÷¹9ÓßX4ƒÕúb"IÎG)¶¯fÉ÷–@!bÇì²qX$Iú’T(É1]Å] ,Û÷Žˆhƒ ùsA¢ ¤ î'Ê„&>?`úÑpø Ëö¨ì^>|ì-›u‚äý€ÖÂhÃaY? mI¯l8뫎H%0E*è~UÔ©Þ`ßG,›Š“q«ί’?Ëä?$JÆ ÒDd’ ‚@’ |ŸnÙT»ž`¿ ù[Iòž¸"„Ê“0!"@D”DZ€À”ηlÞ•8ŽW³}=ß¶q]?ÃŽld}˜‚vLÚ8"ÅBH`ÔÄʱŽ)ø…§‹$ø›Û^ÿ¡´u>Sþ›Á»·e»^}ÅÜ[žúÂî¿ùû–°öZR0­{gÇ™_þ×ã~ñ‘ æ„W|ü¼/Üzÿ,fP]øj¸‚Ð]аá‰íÈwuÀD!æ-[• çaã¶§ t0¼<“I…EÍYüãë߆5)\õ»_` _@¾àá{7 ߟ§k R)ôîî@1Žëï‡OkéT§ÌQuŒ®Ôz˜±nN\¶×Þ|z‡0P 1XôÁRaZ&…s_ùüê7?Ac´ }yƒÞ!†—%Ô’ÀŠ“OÞ=»õI…¥KVcak3ä&ž´ædœ´æ$ äsؽ¯ÆhسåndÒ5˜¾h-|ÔOŸÕÓŽ}ÂÁ^ø¹„€ç‚‹|ï»W\RƒU‡`_j®Ñî›G“ßH˜ß?YÛý¹ï.¾ïØOe|‡ªÀðÉ57ÿô[›^þÇÊ¿à-.4}ÿ¯ú朷±i_éÏ¥{ìÒg6Ÿù·µ‘÷9õ,¦ÉÞ±¹ñàû°äÑö1Ëñ^ýÁ+“1añˆ´Ð‘…Óœ7Cç¢êíâÐþ_˜„8”{no‰8¨¸d¢¢]ŸŒ%[Ål¥áHTŠCbT5À ‰'#ù¿Då±-I%\VÂÁ¡ÎÒÇ7¼xÿý}7¾Ï²ùa•uŠÀgYæ³,—F¶è!"±Q‘û€$§_Щ # “H¡˜Jˆ•pY‘"‚dE.,ô0Á‡\•r‘@‘Ë®HYW¤´²ªòO@4ü«ÁŠI_‘ K‚D˜³ÄZ…ŽL‡®L›À俌ê׉ïKRÄÈ9ˆ„O$|‚‰ˆ% v€€¯ LñêÐúW%ßÏÊ`û"|¨œmaBÃ:¥mDÖ"E.+á°+ÒV‹ ’YŽÊ°É?ˆ[¸O$J"sÇ0‘$#GxA>ê{'ªÿtv(á~œ ŠI®°Iˆ¯O$J$û¯‰„%uDúW†õÕŨÿGItT%ÔŽ^ªÈ½†Ù2)Ã:†ÚúadJ:’¾UÂ{Þ©ÀÇ žÂ ÍQV\¾û⯹V¾»üš%~dCÝî×ýdæ}=pÙ¢kîþíoü|Ú:Ÿתw}}çë6~lÉo~=¥Åc;¶¼gÚ‚5X6¸çœyN™[†ìé@¾³ý>HìÛþ$¦75âÌ5+°ñ‰mp$¡%ëaÅ¢E¸øÌ³‘q]ܺå |óÎÛÀ–ABaÓëáÅ®Ñ$}Ô6¤00hÑÙÑ ŽŠ‚°bù‰8kUœzWÖ,*ç6¦°¸>‹¾îx°£7Ý|5æ7¦°ú„3±hî\ô åÐÔЀ°¿† Ìi0¤pp_˜5u è?·¦sã¹ÛHk\ó‡_ ½³gŸqÖ®9Kç/ÂöÝ;ëÄcmÝh®BzÖŠø¡F:8Ð×Á|=:aûºÁl!H€ìÙ²¾ô‰÷ÌýÅ·ïl?tö§s—Ï+ÖßbÈ>БÎ}ú«Ëï˜t†íh\?sÇ^Ù±l­`š'˜–½©mÍ—76ío²÷¨á»ÖÎ_=Ðú-ÅbøùŽÜ\ö©µëúçÃs†)øYäàcŽ?G`ðßW{@·a„” ÷¼(‘"e\‘²¥Y‘Aü„a«dc&ƒ×ãQP‰Çl]­"öuÈ%r‘™°Ö)Ù³ÛîÎß° Àâ oÏ` âòOçå&yÀd¥!ÍúÒi«õÿæ‰y–.ÅÄÊLwlÝnk0·ÂòkËÑH4ËÖ‰8’‡BshâìÝ·KæÎÄ kÖ¡¦¦}=øæÿý¹¡ù$JËŋVâäÕ'À0A3ðÃë‡Çw>…\¡ˆ†š .}÷¿ )]9)`íÌf4¿òMŽ‹«¯û9î¾ïVd2ithG_ߊ!̰Zƒ¢©´@ë´&dÒµh—ŽB_!‚_ìÇÜæzÔÔd1T ñ›Ÿý¿Mý-s`ÉœYèD(¸A1—¥¡ƒØà º÷µ# -¸T9 0ñwÝø%l+l½Ze¾¾â®G>ñä‹_úÕw=xäkãÈ*ðMÓwÔ?óÝóŠõ×Pž•oÿ–óÖ_¶úÖkž-8e}æ±³ßY«ÝË1ª‡Y“½åáæÎþxÑcã-ÿ£O‘àgÏÿèç@¾{ðú“¬®ö9"º cÊŸãg¢ÑåÏK’äpFfY0¹CÑ%‰DÚŒDN̰\ ë„6…¢Æhx"fXRº‡Tña:éÞ01HRB‚-ÇeЇdXC#+L"f0câ0B:"— t3ƒÿ¡Â Ëvµ ñʱLÌŠÉ*ÃZì—dž5"Æ+.+òÀèø£„tJáX%\8ÂC&G‘`>¡á¬/<:pg‰a?‡ Ý+BXÁàÌæí$ÄZ’JLº<«È³‘µ®H±C1Àã‘`É®H€í'w<Òœ”¸3#ˆ")”ïŠtÉ•©H‘g¥PV‘ËŽLÛÈã¹QvJáü#ñSš@‘(J’yEnA‰”ïŠT䈔QäZA2!ÀåYʪ†½m…-WZ6_¨²Z×(Ÿ˜Æ%æFY©m$˜­•BY!²œLŒwÇ/`BÒÇOD‘€ á•\™™Ö’\ë ÉCað¢Ê«¢íÑO`ˆ×É’ §à¯àÊtàŠ´V2e$)I¹2³¥¬ÓØä ‰¬uåò2Н‰*YZ6²‘–#a8"ËÉ=¢‚Ä;¥?ÿK¡§ðÌñªƒ'Öß·üç’ŰŸDDæ—Wͽã_žÌtöQ”!ßÚôä?]Ø»òN-™_jþéE=kιqÚãùgs¬ÏxÖYóÝód?”ñ¡”‚æf ã`Àð‹‘õ5Òu’<˜§6£@>µÞ}k\:L¢¡ æÌDûÁÌÖl¹ÿ>äºÆn[¤kê1gÑ|äûz™9ù¡^ìíêÆ^0ön÷mkC¾mÀŒ|·À?þ.÷{¡*ðIÀÂÆ …õÓfà`ÿlëèEq ¥`;òØe# ¯¥ÙúièëéÄü' {p¿ºþ·¸ðÂWc÷Ndk‘ÎÖB7NǾ=ûÐÙùšjë0P(a¨}œy ôµÁ›±}=ê>ˆ\ïHIÀjÀIƒµ„˜ñ›_üºf1ήx¾ºâ®‰ÞߎL‚¿ºü®þmó…_Éj÷2h ÓÿñŽ='=üƒ…¦@?S¼gǺEˇš¯”,N+¿ÆÀÀ ë_zé‰wüâhoo /<<­Bô^x“î#sø(5†&þážø?JL¬¶ 5’áC‘£< ëJd­Œ]íEòÐŒQæW"’—?{"ÅžH³C.Vg_Ô Ðuã¬ó7%SFÃnÐÖ502²¾Ù'+³AÜZý]^1ü±Äz´–arïé†Â­«Ìª¼ <ˆCú)vÇÖ‚¤–äX—RL73–²™qlÈå0Øa¶JÛ±qHãöÿ=2ªü¹|^’ü_eœDa­¶¼$G¸XUÚ798ZnŸeBüvËæ¿B[º·dr?*ÙÜ%-Í m©.´ÅZßækJ&—-èt^÷z}ºËŒºÕî‘y3 [¤Èúd¸2·u„W&Á,É9"é‹¿Hœ@²€Ð‚¤v„¥U}Tã6GµN‹®q§™8ãØVï‡'ñ›xâ#ž! $"_, rŠ®È3ªÞ¯u¦õNkXï¶FõN«®w§›zwº©sZL½3]×;ÓuFÖÿr¼ƒÉÌI< »˜'DPÖd’ïŠÜØ@m"÷Ž¿~°qÙ²0R8Ú•5QÖiŒj½i:ã¶è\Ø[ñ:v$d±cw\Z ˆ@ Çwe&Ȩ†°ÆmkiºÎmÕ5N³©s[M­Û¢ë¼ÖhNíêõú«lÂ3lĪ2â,dÓÌ p|J9n˜Â_(ŸŒ^†&ò0ÂûH‹IÿnÆmí‡™Ð£ÉØ{ÝÄöcÔçµ9l?Þ¹ÿÌô®¸a4ù „þÖ'–^ý[³Qµm\ÝòÈP{ªÿ­J@ ¥/ï]s•žÌ$I²;“=V£*E޼òò29V‡ü”<“HùOíx‘ײ„Bß>ì(`_Ñ@[ Çó  Ä!º‹ŒÐ8ÓÊ6BÔNƒl˜·u>šWœŠši³Ð6`zSÚ¶nFמ6àb'¤@®Tjš0ë¸ãAÊÃ#;vcëæ»ñÔÎ͸÷ÑÇ õC8±âËÖ"h´ç}¬« ¨sÎ<ùLœôW/Áª¹3°ìÄuXºr)2iá:ž‹ú¬Bëœy0‘Bh Ù`ÎÌÙ ã¾;¯Ã}÷Ü„[xùþ^´ïn‡…@˜+àñÇ6ã@[zs]OíEmc+H9Øq°…|TÌ{ÆŽA ‘­…p=ä»{ñÖO]°êiŸœIâ‹+î¼R“½¨?q`Æ÷æ”êÙIß`*\õ‘'¾ºé¼Y5Ør×hò û§û¦µŸ>YòKG¼—T¸Þ(¹¦&x)Ú§á8M“½žžÆñ¥I.dí «7ù…µ·G;ó›Òã¹ÜèŒÉþ¥ó+ˆHAGxìÐÈ$B\Ê*~2Îf%ƒÏ†#»ÌÖ³lœs"²>EìÃðÄTð´¬]*êWì¾;¬|ÉäŸb°4¬eÙ€Ê@“fý²J늕ÛCâ(1ÀŠM§9œ‘õ·£Ê­&é=›rYÖÒçRY¦qú{D{¼ŠIXl扤œ7.3Žó]¸Üg+IqZfyYíÉëë–¨M IDATµú€bµýšPŸaÙ|1²¥;Sø/ß.Ö6lˆØ¯l±Ö·…š’Ê šÞTN÷9¹ØÜJ–l"ª’`I É÷n27Åá`‚`™ôϦe­M«ZNɬÝÚç<€×TY>’äÜ„Q•€ð ¢$I•”ðJ)YfUC”U &«mZÖqFÕÙ´¬±iYc3ªÎz2ËÕ`W4œµãN>pÙ(‹ÌIž5[Á°4œ ÷SOäXú>ˆ ‚•p­+³Ö“5Ö•Y66ª¯¸†-©@Hv² 2i”pŒ+Ó&¥j­§²Ö“Yöd–‘bOf9%k¹%½0$¿h+n$ß$¿ ÉùW%¼K”p7Q‰H”ˆDç“& ¢Ã÷³BW ‘>ÒG*,39µUŒ[u^m$]É€õ$ID² ~²+=ùŸOA‡“®#AëI»c”ëøÈÞ –ž44÷*“ .Êð“Xö«Ë‹rf”àË þ¸%'ý•ÿV,þæ›;Þð/ÏÚ€q”¯·üë-–™lXBÇÎG°¿?½[îF†$àG¬ïËV8õMh^zf­X‡™Çˆ‹VaÚì…èîÄ`ÛHå g ‡¾®nÀVx„qè\?l裿P@S¶MÙ4ºòîÞ² ¹ÞDýݰ¡™ÌŸÙEŒFgüùÁ%YLkhDûÁô|445aÚôi`kÁÖB‹¡žƒhïì‚Ñú‹±×JÓ´é@ª…PÃqÔMktî>ô÷¢0”Capœ„_ Ê6Âáƒ]àüx.ÚÀÖaJ¥¬ç]½ßpÄó1¡k|ì½ctVƒŽo76ïû'N¤'ÉâÔn?íãðLIð{·ŸrÜç7¿äO5Úý<€0ÐÛïúïþàI7¾õg ¶tQ¥s>…)< _nYF ^¨*ðPÔ÷jŒÊ;†ˆî@Rê™(eçØ8jG¸Æi«H•KWs½%7ègÓàr&ðH$’æHÜO:!‚ÙU™—ôx¤ÊÛ‹1RýH'QH¬,¬Õ †­´'‰w9Ô ;±y’UpY‘ËËR§x Êzf1xF2‘ŒÅa¶Ža##ŠÈôÈÀm P%“™âRl‘p™²’§‰„&­È±ŽðXáA¾ìΜ’Yž•^˜Ÿ›Yö™¬ª_.H|À“ã.üôà1ø\ËæŠÀÿ/´¥³ G Ú†õ‘õkCS¬)š¡LÞ x9á’ɉÀ+’àòþ‰CCœþ_þ«Lü)(áB )¤TÍ îëɉï&“@»W>lò T"ˆ’ QŠ{^ßéÐQ–µ6-ëØ.;ÉzGÿ“$YRlPç8£/ŸÄ¤ôž²!fKåR°#ïñޱ ÁR8ˆÍÓ\vev_õCʧX¶­É˜Ê‘T äofK†5«‰ÙW5’\þ§„˧LíûŸvÑ)‹NãôÌqŸªwgþOZÕßäŠô’TŸ$5(Hå$9IޝÈ9:n5 C] Ÿ#<…ŽeøòÝ­[Tl¹‰@e/ŠpHùïøðq¿¹ê°eÆÙÆG—þæg™•ÿÎ÷ó—í¾ø´ª Š¿0˜ à.kº"ŠBäºv£h4 „‘F&åâ±}È ôÅ-­Dž‡þž^ æÆ>ûmä~ ìÄ‚å+aðý"¼š,¸®œÎbäþ£ý½è|j7rûv¡cßtôappþ@/¬ÏY“ã¡vÖ<¼ìÜsñî×\‚¹µÿ‚œ2oÎ9ý,L«ñp°§Q±[ïGù|ˆ];ÛÑ»s+lècZsóð²L ^MfϘ…Úl-Èp€MBÁŠ9”ðÜ´ïÂÁ½íàb£J˜ ì¸`/ J×€µÁ5×]Ÿ©8àg ÿ7osW·Wx/’§…´q>ðé'Ï®Ay$Ì.Öª¯m:ÿˇ¦­—LëʯGÂ^sgëÞÓ/;þöß>“ñN©À“ØÄ H~þ÷ÿ™Á°UͯÜPÃF?Ð4œý+BIJ»äY‡œÃ›g¸óL›¿ý\-o¶™Áë(ÎVI/¡Ël] ã„6Ô¡(Ùɘa%yÀ•Ì·¤e^*ˆž@RzL€dfÅÄå8$ìð·dgWZwĈKh‡@- ´„2ŠPPL73lÅ(%f»–HÞ€¤›ÀŠ-+FÖ¢ÈE ¬_µü£ú©L~,™¨¿ ¹­j&5Ú œ¬€`A²¯dòß méCQßi–Í›|ª”…?¬²lþ;bÿz)œ+™å€… ,Œo¬ö Gæ(4EFj°¹pÄØ¾ð “¾²æàHwÝågXÖ×kRAˆ\Øãõ šb6²~# ƒŠû®e È)9 =™ÑžÌXOdY’äÑ™ÇöŸ8~ƒ€¡êb… “`ŽlŽÿMlÿŸŽk>ëÀC~ μ>ÊpôI"çKÑÇÌ’ˆ•eëŽÜÐú‘Ð9ËlIÛ¬QÂc%\$©‡ÄçÏ•kXÃØ(3ˆ†VÆ;MVÒJ¸‘+2‘'kŒ#Ó,Åä[>ž-LõObMC¬/í|ÕK›¢Ì¤“—ò=Nþ’Ë–\{Ç„W2 ?žyïÇþáÀ™' ¦¨Ö°ö‡ÛqúY?žuïÁ§³¾ç;vîÝv¡1B,²hi™c}{ÃÁîÎø†c¹¢n ¥ÒH9.Ú·?†¢aÞ¢ù8~Í:ø›D_ÎÂÉÖ¦ˆBÀŽb)ÆFÂbзè÷ûÑнX¸ /¯¾ k—-ÆEç_ŒãšÇ+Ü9Y%pá‰'`õÒ•¸ú?Çýí;r~$†•à|ìo‡#jêê ¡··sæÌ…JeÐ;ÐSÈ}¤ŒÖ°€6p!6lÜ38 Ÿ‰Xà¸`ÇØ‚¤Dw[µÊµGûÑê€Ï®ºýæo>ú²ï¤Œz1³TóÝ×ì_yÖïf?Ñ;C¬m;mÕ¢|ã·%Ó å×èéóJùÌšõ¨¸Ö‚Åd+cŽMC¬)9ôШžÇrœND$’ø£‘ÌÝxßåMšíe•÷'¸#=ɃËVÖBsHãôÿ² ±)îÿ%°åø£D‰6Šë ¯bùs%”I0I£HqÉ8V‘sWdà š#×7Åã ôKÀ|&ƒOÅø¶ƒ/Ò6\+H]*Iîff™]&SŒ 18 3²Î ®Nê6I(rÙ“£m\$µe­å§^²’T¤„x2zªÆ8"ÍFX8ˆIo™è–UP SVoaŽx6ó“ô¾21?éÓIÀ•i&ÐC >½ÊGh}Cø uƒBf›6¬uhJÌlEdƒ(0­„g•p­#<[VÚáq\Î 8"ÅiUgˆÒ¸VÛ0d”' RÖ)ãÊŒI©:뉌TqdÊk /P|}÷ÞZc¼+‘< 1ppªÿµ_Zø§Íã-7‘x°nopúà’·­(̼“€FÍ<)7ï‡7O¼²Ã8òò‹ôØÎ]޵Œ%³g@KX°|Zê±­}/6nÝÎ=;a~e|Ì”б¿Ì@&%°lå2\üª·aç¦õ(„±T¡˜Æî2…>DqÍY 0AÅjwºnM=V.žŸõ×8}ñ¼IS à¶-ãö÷¢{0­ †ŠA®²PD}# y#QÜ»’Œ0?ˆyK—¡{÷p)‰¢ôÒ( ›Ï”BëôéxjÇ&ô÷tƒCìù‘äy`‘œ ÇÎçqÉ×Î9þg_^?î÷öhã;‹øüûv¾è Ét¢I@ 翵 «`¨³lÿÁrøV=F$îdaw&qMaH¥(ŽWrŒŽ‘T&®UÂeI.Háršêµ#RÖ°Öåjõä³ql–#Rñ½`¢}´/pL©À/ ø›»Þô‘”u./ÿÍà]Û²]¯ùÖ¼ÛžšÈ¸ÆÛÆ•somûò®W¿»)Êþ Ig~xï…—ø¸_}f"ëþKBOÉ`ÀºHì†t\ôïÝ ç¢sßvÔx.ò Ã=æ–aA` 4Ô¥pîùçáÌ3ÎGd,9ç¥X=èã××ýE!ÐÔTƒRMÅž~PRÚ f„Cè45˜Q8Ùz4Ï]‚Ž[ŒÓϸY,i¬Ô>"«~õSlm;€’B:.¾.é!Èå¨ì Ø09„Rq $4.4êZZѶõqôîÝ#@ÆÖv´´†lhÂůz3~úýÿD±Í!ó%Vƒ¬ƒÑ•LœJƒ‡ÐYØûˆ£#ÇÅÑT·×ö†OÖu¿cÕ`ëz²ŠÅK¿¶ùÂüøñ7}w<ø£[O?~A¡á?÷ÛƒÁ]½^éCŸ]sÇû™¿,øX$Á/JO>€’OŽ•Ú;ÀZC¸.FÏý¦2.%àzoÓÛÑZ?¢Ô…}ùY̘6mà(Dã´F ¥ 3gÏEmMN:EóBcíêuèÀý»!Ü4ŽŸ7ÓR.c‘"lxâ1l}òaô#ìmÛ†æfœ¼z%NXuî½ïVìlÛ‡T¦+–,A}c#†”á8hkß‚¨·Š•¸DÐ`!ŠóyÙ0Œ.+Ó4s¶oÚÛ×;¢ì òRà(‚¨­Ç«_ûfü¿ÿ¼Ö/@dkÁ\ù§ŠK%Ð`¸¡96s]tì;@ó+?’=MLL€O­¹å—Wlzù9®•oà-,4~ÿŒî¹/¹§¥}8%ãOžyòÜbÝ·Ó²áýï?˜*~ð³«×ÇrÊI¨§S*ðT)ô3ÁóB>`ÙüÝ8o3³ý[!À‰ÓpL¶’«Íbâñ3ª?ü×2ø ­GL®ev Œq¶Ï¦Dí„̰$ÉÛt•>f^NDm±Ť“YZ°Ô¬«¹?ƒˆqº¥¤üZ´„4 •3wòn ¸rªƒÇØ’ìr6±b¶ÕÊŸK‚Ä6­D%ñG¢œÿË®Ha¢ý¿Àá$8”Žp‘bÇlld"µ¶$ G"âPŽÈp$ ki9UpÙüÂÂüÚ²N¶ørËæŸ7á,3l.$o[0-£šÐ–ŒoòÖ!/Rä&eñϾ œ€•p –uwd‚Γ,ëS™íñ ,D\Ê\¡äý &¿Ï©ªvÂôWÜýpçÕÿjlô§¹ŠƒÏ`6g„l>Z/‘¸G’ú“+3›d‘¯c2ìh%\­È3ŽHG¦'k¬#RpDŠ)X6£ÀO©ÀÞÆ1©;$øù…×öœ\÷’å¿£2~5™_|gÖúy"Ó1ñ™òI ×ÉÛûêw¿óŒÅwh6u‹‹­ÿ{ÆÀ’óîiØYz6¶ù¬ái¨Àz¬°@ÛãYÂF~bvA8‡\ó 4e„r Òµ¸aýÍȦ\8Já@W†z{ µ†‰"ø~ˆ ´Ð¥”cѵ³ ²¾-3¦a×c`ÆŒé¨ê¦/ÁK×®…LHêÍ=޶⡽½È…  OID¹ô†>nÊáæÛn‡É÷a` Í„ë]Ë@:“/ÄÎÌ:ùÚrݸì(×Ö0QL†kjåb°«&—k ä¥âÿW ³—.À­·Ü¿³ ° üÊ1O(ôÈ3¹iø…BÅóT G³®™µõ£¯Ý¿òÁ´P0-yCûª¯ÝÛÜö¾“f§Þ²wÍ'SFý3F‰D0?¾nööÏÜ2}wnìí¤Hð¦ðtQõ2™RGðÄІ&¯g1pÒ„7ò ‘”A߆d‚À%°ga|ÍZ†èÐI uDxAjí#;K÷÷h:|;XÐ ™(÷Þª$—¸ºb?À)ŒŽJÊŸEb:¥Èe‰±¤ó„̹í÷®Û`Y…õ.Gü}5Io±Lb™TuÓ!z$Þ>ÊÎÀ±úKB H-ãø#ëwBäwt´Ð¡ÀiIŠ k8ðØM– vXshµ Ë‘UZǹ½"V‡#aØ”\‘þ…eýÛ‚z™eý1ıTUÁ°oä33KVë(â0 lQ»6mRœe 9)¢?j£TàhÂËww¹û _d¬~cR.ÿtÝÉbB÷ ÷ÃNŽ(3Mh A’OœþÊŸnêº626ú:€æ#.4>æ3ÛùšÃK´ ÷‰¹×;2µ[ ˆ"«BIN¤„)ëéе'kŒ§jl 56™ã?' žÂ ÏøŸ:Ι¹º0ç·´ºü^(ô—.øÝg 2‰zÓ†Y]øglè]\jyûÌ þO\Zõº®“¿yOÃÎ÷qåÇš Ø|L¶#Ì  »£–N: =¥°rÀŽ…}°Ž@JÅ„ÖÚ˜GQ<¦²rKá8à|ÚOæ;„€ÈÖ «Æ BÓœ™8ûü—âçW]ãgâò+”1¬¨°£ ýçÖWçöÖ=ùSúg¿sA¡áŽkå%ßxô¥žU¯LÃ-j–¸­+UxÿçWÝqçÑØî” <¥?]L)À€o —àÏóð>Q,cðv#‰Dâr/0iq…Üo]dp$¸IͶºƒÁ¯>ü]^‘¾æaÒi 3¨b:5¯£JŽ„V ¸ç¶ÂWO‘ÝÌàJصl ;Êc 4‡­¨¢”Žêÿ8QÇc!i9F ’\áÁTQ­ÊfL†5,ØÄm×&q’%IÒ]N}8k[# ÀšCX6d8‚aMšË¤8"m#¡9”ŽH_]2CëK&ÿ#€ÇË’l²lÖ ’ì‚mÊ…–u 9 C[Ò¡-Y%]ž\Jö(Œ¡½á¸$زÆ]W¿ÖpôET)“ñœ=%ý·XÓúò_îéßpûPØó5fûZà¨LkÏa¶ïŒØ‡¶á5Žðþ[ §× µ B)ü@‹ ˆ¬i´e­S²–‘F‘àgS*ðÄñüVE<kùqóýæ«GeürI„Ÿüðâ_–ñûlás ÿðà7v¼þ“Yã}–—|mÇk7~|éoôçÃs(ŠÅ„82°ABÒˆFHbF(DÚŸjƒ 5l©ƒ®’(ˆbB¨#P•²` ·&ÙófâŒ5ÇÁ“ƒ}˜·à8üñþ{±gûfÌhÈ`ïÁ~4¤…þ¾ÿÏÞ{ÇÉu\WÂçVÕKÝ=ƒD$‚ FQ)Q¢dR¦­`J´d%û“Ãzµö:¬äµ×²lY¶µë }+§õ*X¶%‹V¦d‰AŒb`‘AšÁÌtx¡ªîþQ¯{zÝ=Ó @äœßïaÐÝェ—ß©sï¹àÑ]8ÂEè´Œ>ep`ÂÀæ>‰Y¹2ÓºIgNqöˆrÄW—ÝÌ®S3˜Áåò´ëˆêÛB``Ù¼ãÝïÃ?ýýßÃTÊ@©T)w¼ö8KAR²ì 4°xU¯Ù3a^,øÓgݽáÓ_óÇ%íÿDÎá¹ÑíDêÏcÙÆOÜ9¼³Ò¹ÅîTà“•ÏãäFÇ3ÆGw~‡Ñ}ž¡ß¥–àabö™êÈ»¯Dw¯ý3Ãsü®Vð€Á× AJá¹<`ö-Os¦SÆss‘'ÐÚü4Ìà¡ÆlÎYeœ^ŽÎÑ9Îç#äîÏ®üåå¦jîªÄ\¼©ÃVŸSï ×`Ö—µÝ.ú¿˜*” ˆL2JøÜ*»†5RSÍ”©¢ÇÅ„>,dzÃr,= ¤åxvHNèò¬ÇEbkT'Ê3QßfO,H²/"eÉF²— ªÏ–Ô éUæW ë^oAÖë '=j(î÷ïïõ¼ ;:õ3WÁ…«·Ë>ÃÆ×œy'"µ1Y6hÕ·ã‰cwôÝ?rƳÆñ%¿Û â«’ÔoôäñXa³ ÛœÑú¹ßrÝžyEßÅÎxÕ/¼¾õ‚äŸØÑu›­A û3©­Ý˜êOÎú4§½™©õ&¦\ŠõDTÍÆüj6¦b3I™É²¦zi©º#}K´ˆôl³´X¦»7Ñ"ªbö6æ­ç1SçÑGw¼åÒ•ñ‚›šÈo:)ã_êD~I›®Ï©¹8ëhí ÿ¨É|­þ¹h‚Oÿí?µ~Öu{¢£÷ IDAT½¹(Nž}®o.f\¦†Ú“ˆÂàb¨| Ø&)¸®Ø2CWk°©ûÎf\­€jed‚€Ê Zéè¸Rvõ~Û‘_þ@®xÍ«ð‹o¹g­Z…áÁ!¬»ðxüÑûðØ·ƒm/=£5RÃRÖ Ä5hÃ9¢äPkÁÑ,ƒÊãàj¹¡>SÐùvÁTÈ+"*K×­Åuï|þùóŸG2>Z ,‚Îz §Ic€Ì@’Úà'®{Åó6zÞøè¹?úMöÖæï,ñö碉·þÖ…?üﳑߗl—ƒu€S»k¤ûG u¹µ/ÍôYLj^ˆP蓎Ü~!€ ^ì~´Àk|ÌÆ•Dª“`ëÖIƩМYÚf ƒ–äßb9nù³]G$îEN: ,™¹]-dK$6Ú¿õðç¼ü‘0y6$qTøs}røÎQ½/A Ås| Óó€/mÓ—Ú GÔëå\)&Fæd<¯EÌn?Èi*°aØT(¶U1šŽøãÙÁE†u_¯ÜZ!% ’Ö¡1œ+­dh“o+(a h\uu8­eë ¢Ø²A=\:”¥‰Ø”?œÚÚ}h;îÈkë«ÌkD{Ìì[2ʰ–š3ÒœQ°=ÖÜ>ƒFµ>¢Œg¢Ç}y%ÿ6Àg[ Äí"`'ˆ¶ÈɸkØ´gJä*h<ÏöŸ7r¥•}Y€›=çî¬éÉOǺü×£ñÞ+4gofæ+îÞ>ôZÖÏlü1%üû"ak=KV1¬¨Ô»ôÉ⪠}Òa^~™©À²íg²_¾ Ê¿,öÊïùÃUß¼}Ö>€PhøúÂG~ãg÷_rž Xšô}ùû/¹òk‹릭S6É‚PX±b×FLLè)Ë ' ä`-ÈdŽÐµP‡ç‚Á>¼þSÁ`žâ¾»¾‡ÚÄa@8·7ÅsYB2¶ŒLB×Ê`§>Òôè÷Ê’£¾c¶ú½œvÙOA…¢ Ž"\ðêËpÁà«_ù*j‡ƒ£R^ SíVU(ºý¤3P– " åÀ "{€Y¼h¹À±Ô|÷‚ÿåuWÝM ¡Xê¿ÿ—ò¡¡}­_2Û¶øÒPOÖPèyœ$!Ð's.°eó‹s^è…EÄà×è‡pfX>7̰´§9ÍRÛL6’u ƒ¾ ø[.߸ ÀŠ?¯èž<R°#íêœ>E àú¨3sª«–ν–I–HÐTû|ª±ðUÕ{Êߺ૎^}CFSpË’Qz07¿ª§m´pJ´V®¶jËÐFÿãÌÔÆc`ÀÙ5€´b&Î! €ˆ`d¦9K-LF™"¥œû¥ÕL”› ±bVö¬O§/|zÓä½ÿÆàvEæ—ÀíÐ` fÅÄŠÙªzŽ1ÃËú„Ü%·?X¬dãßk"âs!ЀvÑ6m$ŸȰy 1WJÌ)øèøÄâ¦i®}èn¶¹«ÀPÂg  èÜÏY’b%ü;SS»WsêU³É™M®b6¯eð«tW ÒAYÖ5–~W’zÖäåÊàjBC@XI+á3A@åçý¼!VWmœp<ã‡Ooý¹÷Mðäï8 ìߌ½ãOVÜøø‹Ù¯Ûž­]<¹òýkª ïP"Њ+ެù‡<þΪìZrŠæ?·w',Ð; ÿì~ø~Œ4ÏU¾çr)@T Q>0FèY´Õ±qd““ÓŒž ¤@ø áÔc­ÁÌR`Ñ’Å(—kxjëfxÊC¥<Êj€¡Tˆ°µ¦pFTÅÀ€ÂxYâÀäaH H³6Û*ÄQ&T$¥#YÍy¾³äùÎðJ C¸ögÞŠÍ{öáßÿý¨ŽûØók@i ΦBÅ©X´ÀS9Æ9Ñãj.¦Z6Ðj¨9’àã¯-êÐY“ ~%¶ögëîz(ߘ¾#óh‹ù\à9^/WC¬m•ÇCÿ\‡Yž%ÐÝh ³…#}uÇççu¶0°à7·ÿßD æfXŠ\I$ßÂzš3™r¬3›‘'tG3,éroomêÍNÍ«  )Sžÿ+òy q©çÿey,!¡¨Õr=7qKŒ"Ã.%ˆ}y_z´&\DMï ÔëC%êï *‘‡“_ߦ{~jãËyO»D†È$lm@PäYe=xÂ·í §%l9h{}ÌÌVÒgI>‰;˜M;L .hŒópunLV¸|c+óÏ Ö#(cËÀþêÖ?Ÿùe€ž%¢ ô„ ±j¨óÐ2 2ùw–@† 4Ù<’ÀÕ¨}'®ÄÑ´]gº#Á–$"V Ÿ=ÚÔTMjâÌác³†õ—5ga¬+Zή´Ì¯É|æ: XÖï$?¶Âh&›Ø””Q¦l<ZIžUǪ2yøø¨À±å=¿Zï럼usáÀÏ|fÙ-;»¹û(ø­¸iËŸmyÇûuôe,®ù£­oûŸyç;.xBIð‰A¥VCý¡7=é+PæÂv£Ðƒ"Æòµçà¹-›!пt!ú—,ÃÐ2ÀÔ*Ø¿}â þ,{ûðŽw½X°`!t–`tì0v?·:‰±¨×ƧŸÒ 2äahB!|”+U¬ëwK¡¡…É‹|ÝY‹l.f€ê¯pœ‡“R åÓ£ÕᎠ€ÓÞ¢Ex÷o?úîW°ëɧa*°”àÐU>“c°åò4•œ¬š Ã8MÁIòW&©> B-éìÏѶ{ÇY€?>玻¦µaÜ¥J9¯ÏbHœ ðÉŠ#éÁ·èo÷;¾ADÀ½¤€R beî»®Ô¨i`pdX¿íë®dðYl¬›a0[ßÀx)§:ãÄZŒ[ê£ L·2L«\ç30UFHX6ëÑf(//”_±d‰A=ÿW+ò¬B“Ib˜©Ä’ÔMšÓ?m¹O˜Wa/X¶ç¡5A°â±\ªc€,‘3â"rNÔùV‘ßÒÙáþÔ¶Ö±l/³džË·3#&edœêÄÆ:°‰ÍlŠ™äº³‘à:êË;²î=m;ªi\h S!â‚Á‚a……¡c}žîÿÆ«ö—:ÏEOH’ÿ@$öÂM@ PJD)AdÊùuD—ˆ AX iˆ„$­€°e=ÚiäK`ÆõÆmÎ×™ÇJ‘Ç€ e<Ø@¦&³‰ÎL,4§RÛ,dáNcÍ=–ÊluAjâ×Y6×äBŸ† ¾Ä²^)Híd¶¹% im“,µÕ,5UÈ’µ¬©žÿ<¯wÕÆË6úTÀ‚¬GüÁŽ·ýOå¯Ô¿³Ä<Ô³ãú/-¾§;C“Œß[óõï|vÓÏýoߪ_€Ðzÿã[ßúàÇÎøÎm/NNŒ œj$UT6=‚ÐÐð JrÍÅX_J0ÐSÂÎg7Aô¢§èIÈ €ŒŠXzιŒíÝ ¦8xx+ÏtiÓ ÀÒÁåXzÆz”·?„ññ1 ž^Jl–ÇàÖí íMªà¸ €1ªÝX*)g[¹âLÕÉiîÏй W±P H—ÏkÜîõNˆ†[3¬ˆJEÜýý¯`dz[a ,ZX V`§|nD¡pô:…pëd+z_³ ”Ë•Sǰ;øDà£Ú8gö”+X *ª ˆ„ˆ´Ëƒ[k-pIJù.ƒßÕ¡?I gÑÈýdŸó’H†³4±±DBÞ,y‘(ÞV³­JÃ(ËöŒÜ}™´3í'ˆ-h¨ß õש®ä±"íò븨pÍTn°¸ÅÏkÜåúÂç·YÅ3ÕàJ1¹ÂHäB±)ã Ÿe¤5¥õ‡6¹}mÂQ¼ž™s³.Î@‚,[mY'Ú¦ij—Ò:nJ›älybuÖž;o2Î4³þ6mu÷.ÐÄze¬mòŸ:ÍN Û¤ðþ7¦rÃ3%DT#ˆXŒ "uum…&’F@Z"aé•Ö#%)+Hñ¡dwÛA©©˜¦æÝ÷î_¶dQ:Æc3µ™Ö|´N|-26……%vd$óß$)H©¬'Bke‘4gZÛTh›’¶©Ôl¤o£Z¤ÌW ëb=¹,µµ0ÛN†|dÙ^EÄÿì²ÓØ0ÛÔ°öµM½ÌÆYfcã‹Ϲ6ð<æ“_¾tbuð¾ýWü£bñ¶Æïdo¹qhÃûn|¦Q\¾ÛúÆ'J€¿^~ëÇ>´ëê‹$‹ËˆÁ¬ôÿóž×½öï–Ýñ\Û…N±PèÔ2ÓäÒ(ç¯]‘´k.(…!V¾½ýCNN œv=ù4”¯D!XIHÁˆŠEìÀJ«¡«¡ÇG°o×|›TéÌ•T2 öoÞØéöE©aÆ¡“ÌÝÝ­unÏÍð| IÀµ2(÷H#)AQà†…[§wX*GT™zœ»6«ÀǦ‡Ç5׎`0Dy\è™þöU_»Üc¢œPK[­‚9†(å¯(–AR"©=Òù€z˜WçUà…y¸ »u€Va¸uÜ wû¯ÇÉd¹ò[%e /–$31æ–Ùz–Œ²/0›¶À«|Ìã òrì[X_³N2NtjŽÄ8ËçßxðÉo>–†_|6€Mpa¶mHç´ãzù£¬^ÿW’ öhzÍÝV*p^é¿ï¨ž¸0[ —ÿÛ²/­J15Œ¸Hj%\bA²¥BÛï [=Ô& _aahŒ@Ä̆‰ËÖ7ÎuYg6±™M¢µ0w¸ÍiÇc•›¶9ÿç(N ¿yòðƒ­Kh5°C ïs˜"¿Æ‘_QAª¦„Kò3)”–Î%Ü —/k)¤8¤)ŠwEŠÚ«;¿(°lÄ7³ i7 m3bXl@$r—èÀú2bŸBë–µÆàDkæœ 'BÛDú2Úl­þñdï~Ëæ÷Ú÷€Ãm¿dfÅd}fãΔ¶©0®sß yxf/[ød$Á€S~ß¿ÿНKWÖ¿Ód¾òÙe7ÿÚÖh¿>Y_s¶Eõ†Òî\4¹âN-"`èœÊÒ:¿|ÚµO”ž{q‹º'|ôØ×øÎ  ¢ Ë„À+A{Eœ{ÎYؼc/&ŸÙ®L"«Yóp¯T(ûFŒâàέè[´ÕÑX¹vŠIµZ6ËMŸà,Dzxï´o#‘!“à€ÉMíôû[ T*€ò ¢Èåç&‰ËËUÆ^XÔÍ»ØZÀ¤°Z»œ^å}ýð‡†×pN®)`ãHkg~ux?6o" Ka“$8t~ž'€Ñ.7¸Jâ±›·œ¶Õ/øä Áóx©¡«'ÃËI6œý<:¼Hèv4BÉÀ=ù"Q“$k’TQQK¶9§îµ²L/Èž»ö§»7¡M­[8÷ç7èÛpw%¯^ØÂx§YƉI9†¢q&ôuÚ¦1ø(Ì.Ï–.¢}þo.öØ‘N"-H4;.CÍÁ‰– nf˜£pSû mò ÔTþˆl^ÃED&I™œdµ%¦ùrmŒ¸³};‘ü"ƒ™ò}î°ö2›¤‰­Ïu’}\”`†=§ÃϪ¢éÔ'"°s«Ç+ô1PÊÙØ%èP#›Hþ{ý¿p.Î%¢*…WñDXõE”z2Òž¬Uä± "Á’<’, ేCÉÎNõŽaÂÇKoªé˜‰£F·y g29°NÛlÞE ƒÑН2,13I"–ä™@4³Õ¡êá@F ŒØ²…áÌi›BÛT¤&&Í©Tñ/ö•Ÿ½œÁW¢î¿bH+†UÌVZg†F– YÖÓÊ@½TB¡çñò‚À!oÒ&B§`ü+ ú¯þàôÿxE&ùù} ÊfN¤ üN»kä¶½í¦=ß Ó%ØûšOý·3ÿíÃm:…Tà• ‡øñIEŽZP¾N /QÓ&/»tú+^R÷BIÆ®g6!›˜˜n@e4¨¦at†C“8¼g?d`í²QˆïrLa±=¡{!68J€@h”<… C€`ÏÕ¨˜ÑV¡€Âp?ª£e@ùàòDúÈó€‹ ûú‘Ž#‘ "Ža³Ì•uNbb=­óì¾c¸PéJyj½a’ ‚-õƒt!vo;tb뾬1¯7šx‰¨À]¿]tK‚OEHv ÿB§YˆèL©¿†êa D’Je=¢Ï"²­œ†[¡]Öéž/2øSí–cðÕú‚ ^³–a-SŽEf3«)ƒ×á'’·2ëßjÑÂÖ2¯C‚ADbÚ€i4›N‘²ª l¥‡¢xKµuHvȰ‹àr³[¿ArOw¢6e•?²ùÜ.ÿ·Oø_Omü‘v¿3øj‹\έÇÌ“ ?³i›Jžgì1jG¸çªï·©NŽäzSûŠá” ,ƒ˜H2å‡göú·sŒ®–ÍòN³OL­°aD R±A-Å$R½Y(KÆKá±€˜ Ïm:F @sö¦YzUW€›m›;mÍqaÅïûÆ¥™©}œÁë๠Ðñž¼‘a%•B¥†uÂ`’Z e}rýØXöøõrXœaÒ6Ñ#´å6fݒÙÔÕQ¯.êFh.ü8„ÁŸ¤˜W_~*°Àïœñ•øË-ï¶°£^ó•¿=z®žÏ]ýí»ÿjÓ;?YÿÀ·òW>µåí÷ÿþšoÜp"Ú{!±dɪr´åÁÞL2*† `P«j<·¦wö¸²µZX~þ•ÐÚ`px#»wcÿö]HÇ'npÌIb–"(…lg{ÐåÏ!1xú:Ú7J+ =}Ùr&6 ¤€í€(JQC~Š8ðaÂ(©9Wæ6 åȯˆ 0€têkµ)O™›4'-Ê0ùS‰k5G–›¾ç¡Å ê¤sŽ‚ð•»ôf®g^žû2/•PèyÌ '|>ÇQV-a:S¹†í ¡vVŸ~€•íWB·¡A6ÈÂÝZR"J‰L’§}¡|Û«¹_-°s™†¼Å¶O M›J²—}G•ŸŸ†%N¹u¥œœk/³©H¸F†5ãmGºh)¿/epðymÝJ q·O¨î~­É¹úºðgx¬Èo[ÿWbúà¼èʃm5/3/gæ6Š8=š›œm›”h-É3ž¬'üŽçå+¯} .”ºBËæ\dp^†ŠCË&Òœ†‰­ú3¡*z\$¶F†5µà˜ †5vTûy´QßèA4ms•`ÂVA± Á°$X =ñ›y ¯?¥ò8þ©ÅÜùİ&ÐdÓçÜÉ™2A2Uäg,êHõšPõÚ@Ø+4&Aõé`m»ÇlÛº¢çm¶¬ÝÓ¶Sm³)hJ%”ðÇòù%3çdðy©©ž¦mÚ§mÚŸÙ´73I)5Õ(1/1U¡mÚ ¦uçhA†•ð9”%[P}\Pý¶è ZArSû~Ѧ\ÛÝÄ,˜Aö}À ˆö×D‹»‚ ¬è8K‹eº#\¢ãm¯]¶£y‡5u? @4ÿ2r²á¿­ù—?iM~_tsŽüö™_ûŒ&ûÝúç^~öÃ;ßÔ¾žº®·ÑݹK®ñ™+¯/3—í˜q™šÜúdhhÉý2ƒ:ç £ïŒó*‰}ÛwâÐãâ¡Gh”m“û!Øb¬šÁëéDz .À‚Ó—zúÀjÆûšX²¼•EÈt¤IæÊ0yxž‡ÓJX¹zÐ4¨óÁR@ŽJàÈÕëe?p¡Èʃ_pNKú ¥ÞÜb¿” 0õöŠEP­ >t¤3°3c”&®þñQû47äR @Å’SkeØB D<ã jáf=—'l÷ãúÔåBÖžúÏÀcÚÝ*žt$xØÎF3 ¢;0¥25jÝ(Ú#ßø"äP8Ï{űN¡(ò+JWŒøN}bð›PÏý«‡A;XiÎTj‘rçpô³¢Ë+Ýßj“Á|:ƒÏm¹?@Ãï:k*$µ„2õòGsE=¸ÍÏ+¸MH8 ù`Z.2@F‘g•ð;:4¹IÉ¿™¥›k ›Àå¤zÌæÎÝQf“°fÊ~ÙñÊúˆ¨ê ŠM•R“aú8xæŠë¿g6¡ G~peýÉý¨’õãæòlëuF$´€2,êáÄŠ ²´:WhE‚ÙES3;U'kÄ­Æœ§ÖÅl‡1]™fY"a¤ËŶžˆX‘‡fÂ;– vN>úè80`z05MyãÓw5¹°ñ6à™7!r§7À°œ³……¡ úß¼Àþ6+ 2_gY÷ZÖ=†uɰ.j›†©‰ýÄTU¢+”×o\£Íä_ Ÿ•ð9EkY_Ü®ÇÔ t¸ñ—Ànä!ˆ'~Üs äù~ǰÏEÝm§ hÝ­âq¢ÈÿÔmô$¦µÑ]¿Ìœöï1»æùu÷Ç£›6n|êƒ Þš,¬¬ ~ùÚCç—Ú.pŒ$ø…„Þ=þËû“±Y¼ºÐ¬»,Nñ䆸â_|_ûÜ'ñ­¯»‚žÃÞÍ›qpÇ6DC8}ýùX²öt—' €‹=àÞô tjÚÍËCçaÝêµxÅÙç`É’%X³bξø2ø‹×€£AL˜û’"Lrti# Naõ}Øüð b -è5•&¢ „†\¹rÅéàž~WÚÈpÀöô»0æ™m„! ³)³.)óRK‚©ï´x (rû’tæ”j WÈ} †ÛžŸT÷bãxâÜÎÛéçuY‚ޤ™.#iȶžÿÉg¿¸fÏÈÝ-MNg¿W·¸Þꃮs¼[¥;Κ«Ÿn£‘y<NíÞ+:¨Àß1àg:,½™€º“BÝ`)% ­;Ù*áYO,ÉãXtçe¡Z”*òȇ ùùY½”ÁƒyœD“´õ ŒÌ8©MHsFT`ý¨Õ÷y=à6&Lðçz¨« ™ËÿUsÊÿ© ’7µî V|V˞؀ "çDÍòGBÖÃ’gÅ…ýW}%ß¶NXgX¬+AU°l‹š³bjãBM—ƒrvğУª¬ÇdYU3)bS¥Ì&”Ú˜RSf“i“æ”bSß´>µµl×}S%·ê†l)‘Èd¦È3Š|+0-ô¹-ñcp½öBƒ@r^RÉB“æŒR[#Í)h_»õ¸uÙ5m~¡úC¿nÕ*477•†ƒ7¾Ú²ùP§¶òëÍüÁ¥kÏUŽþ®f—‘ú¾È÷ƒ%ˆ4'¹Ó³!"Ѷ„‰eó^Ëv™ .6‘ei›‰©z±©ÈDWIÛ u5Øí©û‡È_J˜íkÛwyÚñ°n"K KD<›;¯wÕÆç<¹IðŒ±˜œŒq`d›ŸÙŒí[v¡ZM1>^Þ{Q9´…áÅèYèRïd±ˆ(” ¢°`9ú—®üÖ¾ˆ¤clÜô 6l| ¢0€wþôÏá—®{/ÞÿÎ_Æeç­ÅòÕ«Ñç§è4zŠ.§Ì Ê(®¸ëü9ej1P¿Ç“@R¢jõZÈÅKaIÀqʯòÁÅ^pX¥1èÈáÆ¬ZKLSä7 Â[(‚ %§üŽ€÷`Éi !†ÀaÁ)¿^N@XsöºŽ7±“‘¿X(F‹Ævìþá·ï~ð£ß»÷‘O~hÃÓ·Þ˜îüŠæqêC@Oëj/qÊ«ÀmHpbjïA'SG›Í¯4œ±OJ$´"ÏxXOLmï$•[®«,ñWþí&À½˜_÷­Ù +°l<Í™Ì8¡”;E|‚ä­­¾gð›Ñ:ƒ$$žmR]óÐ[çº,!˹½üÑL,V«ïÐbçñùhj `cªlŠíÊI¡¬Ήz.ÆT‘,±"ïØ=Ot­eû—†õoXØE̶dÙôh›õ¤6.ÖL9*ëñ`"õ'²Q5ž’e=&'õ˜¨«Ã5s53AsD”õ¨ØQy´çÉñ[7µñMè@~$¿‰Fø3eD”"©"O;c)–¨YõnO€ÙžÞô‘KËFjÎdlʲj'EÅŒ ¹¥ÓŽ±Ì¯oú(,À¬˜­4œI͉ÈlR“e]wMž6=vèûç§¶öEÌ)Æ{0üNWy¦Œ¶˜Á«óÿå˳««Ì,-k•ÚšŒÍ¨¨šqQÓã£ð;tlØØô?3XÙ84°¡á,JMĺìWõ¸ªêq‘˜*¥&¦¼$i[nüÿþ}ÿö« ¾´]#õHš:ÿó\pa¤¹Ê~|ŒÙæqêc^ž;N´ ü§«þã©Iÿvý³bñ¶Oo¾þ×Ú.p „BGA‘ûiJù$fÙèT*_ IDATÒsP¼èõXxáåè-ùQÇž‚* £L„‰q÷ 0¸ü4°@d z"LL–1¸æ”Vœ’‚UÑÑ}2a¡„«/º E% XÝ_Ä›®~;ÎX¶¢gO¡¯¢¯¨\èsX%1¨6õúD>LØ€Ài ‹×®X¼\!%©±xAWd pp/ÆŽP§I炤rNÑl­êȬRà8†]^17)ÅìX¸rÂÁE,bxÙB,X¹a_T™*ã×\qåWf?@'^,øô×>mñk®¸¨uí÷'Ë»o½çá?Þøã‡>þ·løôõ;vßÜé ó*pS§° ,?þñãKŸø™¦œ¶¹Â 0ûLM(SÝÝØm{îz4òîÛ¦„ÿ=µÍ‹ÖõgÀˆÏ‚!W: ˆ ¢*HV$y5_„Y¤J6”|1•“tAæÉ£.Ž’ì³{“í \ÑaÑ%¹èÂLs‚Näò.%I+ól_€¹…%–‚ÚwÄìÿ =Ð.kƒ Êëò” PM@T©Z Â4EŠ‚uJvç‹E@ƒsžÝ¯ÚÝ鳯ÄÑáÎ-O<ÝM$ÅL ¢FUE~ÍWQÊ’‘*à€‚ÙûB‹ÃU»÷Ô¶(€;¨nyóÀZ†½–a‡È¢•äµ}¡%P½†ôÑhåBvZ—æââÚžûs–`Á]‡Ô32fAÞaK| æ$s4Œs•Ûòrdݽ”9«´n–±– ºàœ.óDl»Ûn ¿“ˆ¹å8t×§v×ÙåK¢èÒ½§Ë6nzúÉ7>w±„¸<–¯»dbå]w lÚÓº?Gýg®}šÃvþš±ÈàšêïÕMG2ÀB@o¼ñÈ.àÐN„=}0a ]Æäž½yX/‚$Âó&º|ÖhT3“DU3(­àÌó]6ˆž<„¨§Ie”¿Ï±ðõ-À¢ågà Wþ†‹´eT2ƒ@ BŒAáÈè&¬›%< ŒT”ÄÓ¶·4Ð/@6„Ââµç¡Ñ"”Ë(ƒÁ«á{ ¤ÂäƒàJ”$:uñh¾ï&)ÁqìL®úúÁ…’k'M]ޯΣ"P¡´p]ñ:ôõõcp :ì°£»÷ºüá,…,ðÓë¯}Ïc÷n喝åöÓoÙæŸË5>ýÞAÍù6s€ëRw—ƒ!º¨vHÌGµ1з¦fÙ|{²¼ëõ/P`¶ç“¼e¢¼ó×wï½ãê½ûï]rhô©xpà¬ýRÎñZíÀüššã¥xlå)»\¦Ë}{, Ñ©!ü7`Aú—~éò¬!àèˆNx©•EzhìæWXßa‰G˜C!7¿¢ Žhe’¤ñ„o}²œf;Ieôpûtž™PäAóÔºG>y_Ê8ý‹ 2ø݇< @£$RjS‰ÔÖ¬9ƒ¢*.L; ýÕfGòøpŠï¬ Ðch(®Ž,aZù#þìS0§òG3!@7Û9ö Ç1]ýÍû"´€4’<ë Ÿe›ú¿­ Iñ9½¯üã§'ÁoœÃ"%_Ïl®·lö¹’Lô$m»ˆh‚ Ê ™m?ƒû<Äl/dðë´ n±µ  ’÷äÃ2QL5+òS_DÚËõ— ØÄ@»²J+ ëOèQ€6P6È¢Ô¢ÄÒ~ÎXS•H2AÒHR†@ßcð{Ûõ“Ù¾Ï@ IêF€53&Òœj°…™µ¾•¤,@Ø[yæ"m“ÿÊà·Ïuä˜qñ×Õ[ƒag Â"Ú¤mûû³ý€áìlm&ÐvÃ@\LQÝÆªÿš³Tت‘E¾VÂÿm“¯µ]øm“3É”ä=b8]711[¡mš¦¦š)á[AÊ \NGÃÃñsÿŲùïèàã)\É)ª› QF$R‘IáiE•ÂgjrÙn»®“°,Ò<^~8Gh9«²rò–EªãKKîùÝ_Ü÷šõ‚éBj8íùÂ/ì½üÊ/-½çÀQ3Ÿäe‘-ÙxûöѳOÇ vhC€­ATƒðØÜ!FåqØÊ$ ‡ Ãå*xÂE¯1Ö¤¨I ®Eý\{)ÆøØM@^ÉïéGf±Cû0V© ú#“eT£‹ !®>÷<ìݵ ¾~[üEÈ /  ˆp¤â²¤Á ‘ïòm½Ãg­‡Œµ`~DÛ½ c#fˆB 6®€+eGf¥Ep»h?²\ìŠ}n`rܹB ”z„AÝÄ2êE©cïî=@-âbFix_úË[;¦#Íãh¬Zvõ‘¸n÷ÞÛ¿Él›K€ f{±Öµ‹Ëú¹ß}àÑÿyXu›§ · žû£Õ+®=tÊ8BÏ—Ej‹i/SÇB‚_J0Ę̂×þ­ç¹ÎtÖÒåZÎR_öØqQÏëž½âæ{\Þn¿‰œ‘•dw|ƒ©’HYšØšHE¢NyÀ·ò\ 0Ñch¨¿uUœ2‚ȤQä[Ÿº o.‹¤È¿i¶°íF==Õ—<ÿÈD½/Ú³2pFP5JñìÑ’ýÅfA°ô]‡’½7pûÚÀ­°Ä©¸üÓÌ€…éZlhzXúBþÁå¡Õòh„š~ì‰0 DÑø"d|ùy™ ‘xÙtÊu_îžó¬¥¼ß™Mî`ↄ&™$™z"üLjk×£½Z-™íû5§×‰O0ñ6X0“–MRá#m“E†³K-Û÷up€Q´ g 'ï-ånà"Ï7®a,2HhHܵ r×ô-^Œ ¯„$®ºœX6 dAF!tezÖŽç):´‘Ád¹‚þBH¬c@(¤å# é!ì-`ó¦ xåÊ¥P‚¤nÛ€°Î9m VŸu1žÞ´ÒÄi«Áq49›LŽ{¼ž„©)Bÿšóá.ç8Kj#B|hÆNS%AA®¹mb­,¦„ÊR KÁ¥~zAž‚82 (ag8D­Q«5‰B$±jÝÙŒ»çv<æË"MÇÊÓÞxÀu»÷Þþ fûŠÖKóµÙõI:~ýÞ‘{xßþû“¿% o9ëŒw?…CSé Áó8>xÞLí¥¢o*?üîsVz ‚Å9ÑËÝŸIfJxÖ©m²¥™ÕóU€ ¾À°m 0€ ¼˜û@¤ö¦Ì°t’qš%¶f#Q$ÜJVäÝšñœBh$ÿ³#¶Z’2мº|L$x}á'¶>P¹q;€ÓgYd@ugãÜœ š 4AIÊæ/ÿÇDA×–.*Kò®Ûïü"ƒ;Çt$õ×p¥¦ ùŠïQ˜„²¨Y´=Ø!!°ÇûgÙœkÈì#¶š@)³‰} fHþ†ýð,‹/`¶¿f`aŒFŒ˜€ ÅžS>~ …÷´Mo@Ë@#^•ÇY4”_H €…eCÖ"nZçƒy¸ùœÁàÕ†uo½¬“e2™*ôª…Ïö_ p;…½ŽUÌv• ÿî¦õ£°S ïoà¶×¹žÅyøs¬„Ÿ2Ì|Y°®¼ÒÜòOFød%Áóxyá…P?»üG»?µõº_ÌŠ7’Åk>´óš~è̯}쨙ObøÛ7Æ ßZijIESAèËFY[áyÈ*Uܹ¢â<\8*¹¼Ù¦6ØLo„@©U«P­N¢ªÒrŠEKVààŽ' –àÐ×Û‹þÅ«`<ºg?À0£»ð\!DµVAB 0‹†‡aûÑ·`›«5ø‘‡³Î?¶< òBdÚ ®UFE -‚e­[PÞ·¨V€ÜµH)Gºêy¨i( ÎR6ÔeQ>öCpT«Àg?€R‘SžIÀÄeìÛ±Fú !k@Bàš×½é«7ß}_çc2¶ÈIðÛ;“àˆÙ®×&^_®ìýðÃÿå˜êv¥¢[†úϹõŒUo=x¢û;¯µƒnrhsœŒ†XÝâHzðmèl6ôc¸¡ì¼Îj‹ðgò­ÞQáÏÇ ùèQý7 ¥1TÔ\ Î Ëc¶¾eëÖ2Å ë‚âÕÌNC  @^]Æ)â¦1(‡?ûäBŽy9¤–nÐ3ûÂÎáˆÔC±3"ÊÉF-bQ› ®ÑÜ¢ò’I¼²pv|Nï«Þ#Hü:×=QÈôyIê/hª´SLDU‚( ’eE~ÅaÊbˆ’ñ(`I²¡þÖ±¦ôÊèÞn;ÀàµÌ¶‡ÙöX6% S0ÐaI |†@ßìrupeæB~k‚äŸ+áÿu^ºhW›ùBËf5¦®pæUVZ¶Â°šÓÜ]Ú) žþе#Ű…¶l{,Û S4¬ †3ß“Q­Ç_ð6€žìrÇÚ¬„ÿ‡JÊ/‰šËW.÷]DY ŠÆs©³†?Ï£{¼T¡ç ±æŽmˆ¿Æ7o‰EöéúçÀªßüä–Ÿéj°îdÀ%g®ž°H-pöúKÐSLÈÕ]äJ(¤û>“k ¶¶a%¤@)’Xº „Ò°óÁ¬CTÄžÃȼ^x# A¢´`´ÎpÛÆ­¨&1¼Ê|ƒ`±ïÐ!ìÝù4–÷E¸æ²K00„ÍP’¯<÷œ¶r1.»ürœwá+qÚ9#Z¶Õƒûpø¹y÷ #Û¶¢²ÿ¸Z NpµŽc°1QÔ ºl-l¥ìœg¤Y6;NsB R½KV幸À–Í[pp×>ÐøaGª3p áNû‘nŽÇÉèýb–E ^qÚ®Ë+‰t°6».M'>·ïÀ}ÏüøÁ?¸í¾G>ù‘ OýÍ«âê蜶/C¬S /Yݽ[Gh†-üùG¨ç–Rü"qáÏ2“ä—ûÛYèÖz¦’|váâ n˜e±«_8_G‚-¬2¬¥áŒ2›‘æŒ@RuÚI.élé=bJù5Ž!#¢LBjÏz°„‚"oÎy·~ä“ nžuf¢  ©¼ß<»áD­à[IÊ‘ñ&ßßnH°/B.È{VÏ¥ÿà‹èU9á{nôˆ ù;’Ôwsâ›QHTä¤$5©È/û"ŒCQJ#Ù«#Ùcù˜I~ ×¶(~躀öJä%¶Ù•~ò½Þ‚_'ÐWËæN=,IýWIêÀ•·¢ä’Ù^‚FH>àÜ“XXaY“eCÜô°¾dÁ[ï$>Óm¯ÑæÀíÆ·l<ËFö{K÷ ßL ït½¹sA|ÏþGb2?ß"Q$*’¼ŠAÍ—…$T=Y({l ƒ9«¿uÌ—Eêª9ÎùÂ’àyœÚøÓÓ¿ÿç†lýyL}ºðw¿¹ë«šñ$v„î V¼¥1rµ¸†s/}‚œ2ÏÏÉo€œ”ç­…©Ål0PR¸ð²õ¸êªËqÑ…çáuëÏð,c@M5”±€WèAæ÷b{Ü‹Mû'±mÓÊC6yÛž}±×¨S¬^}6‚@¡Ø3€ÅB*,èÃk_u%®{÷¯`ÁÐ DPÂÙ½§/ùl\ÁÁƒû°yèg)Ъìù€ï: Q(¹2G…"¨ÔëÔÛ™` Q‡  4Ôá%C^¹A‚A8¼oö>» Hjà¨öXk±ö ø[ÿrß‘ÙÈt¼$øTÊ¥W¯8í oÏÍTÄl/Ð&þíruï=þW›îyàÿ÷G>ýž-Û¾ÕÎó%ƒSͺeo_**ð\IðøÁ oè0Ë"zŒšœt H’Ú#ßz"`_„Ü*üùx!¯ üÅYfëað«0Up%h¤E]Ë:†6DËzÀMЂģ¥ù`@Šz-d-IEžÍ‰ïózi+ÉþÛÑù6=) 668(!P* 2AÊ(ò­$¢ËRLͤÊ"—dŸ=½xÞ¦eÑ™?ï‘ÿúœôMëz;Àô  ùûŠÔ È­ÅU‰D™ &%É IÞ¤¢ ì‹¨Êž¤ ú3WÂɇìò}~ß6F²çŠn”J—Ü-®çÙ3 ‚tY¸îW%©ÿÞü"H}ÍRÕ,`Øåùÿêe’È01˜…ëFÏzíû”ÞжcÛ­@KR¿«„ÿùùÐ ‘$'%ye%‚Š/£Z¤zÓHõ_Fyù£yõ÷å†y¸N~x¿7iïíÛöË ÞôžQ]øÏWYstÍŸ“”ëO¾÷Ø’H€AØôÄcرi#κø•É…f2Öú€¨á{€r“ô=,*ࢋÎŹ_„õg¬Äµo|+ÞñæŸÅ+/¸W^ùDŤÆP`°$L1Ü[À@AaQ˜Â‡qн;6"%…ɱX¹âLhR°$!mŒØXœ¹þ*œ±x1ÂÐCd«X²| ~tïm¸óžÛ±mä06ñ¹WWªû§)/øT"Á'ƭ郆¾ hXÔ]cåÔDwçù¥õÜ„@UWbG¦’”ñDÀ͵;áùæ_ÒsÕ=÷OÜòu€ÝWˆ|ZF.LWç“ÍkƒÂÂæF@Î Úƒœ‘ ì‹èÖØ–ïtq:\_gó>Ù Ða·8ò[D‰$™*øN‡œ¡.+ž»‚#ã¼èʉ{Ëßúër²1­/z º®káÈoH&‚T¦àE>+49!W8 ÌÕ«ÞOèUV@`itÆ#5Sù`ÕL«fòZfû_à [„E `#6‰[ä!äŽÖ® eyy§Dˆ©X‘Ÿø"LCYÊBÑcBY`¢–¡Ï3q~Ïë·ì‰7^¹?Ùþ6ËæÝ ~Úß&:PW_6ËK/Yre·X’Ç« þë!½ûÛãéÁ÷X¶È ­æº/¶è"y·$ù,†fÐD”DJ D ÿ®šž¸ S®Ïó‚aÙ¬Uä݆+ádóZ/`¶°3òN%I¾hèÚ¿}j쎛[y¯eó.«ÚôÑØïJ!QJSQ†œùˆ$”ôxíàß/§‡o)?ûZÍ默í5˜cY§&ì!ˆÉÛÉíäž|¹ÑeD”È8/÷Tóe!‰ToZP}:R}Ö! ’<3Ow.˜ÏîªyC¬yw|uñ£«k Þ¿4éÿ!_€Î½~ÿÅùãþ-<ÑmkkÉXwÝ4þ2矫¾Í¿·ù÷M 03]}ΕÏ>sßãgY ŒGRykιÏ>ö0F…ïÂ…U€‚²ˆ†QŽ5dšbÝú‹ñŽ7½“™"ÆáÑ2ŽaûsÛQ,öcÁ’sÑ£¶AJ OHLTªèí3°kdKáþgw`ßsûú&ÇŒ¥`ú.†Ÿ¹‚»÷A!\ŒžˆÈ~LØŠ}{ÆíÂé‚…¡EÈ< Š«àÚ`œB˦iì´ x€êRέg¹lIÂã"TìcçÈadétuc#I@¿»uÄ\“èY´¿ùî¿ûA­–ºzPu»hLÿËÏÜâw3×+òÐÌe›þº5p«u´ÿ› "Õ—©­>ªïtô÷m(ÀXˆ²%l.jS)r]0çAZ¹Pò¥Džð'ÕESXnDÆU­Ü¿§ &YÀQ‘Ð.;¤Y¹Ðœ÷à*‚.2Xž&"U"ŽI–W"½ TúU`éïg‹"l‹˜ÒpÖ>¡`è"C(}(É'+JB:™NDDܨˆk›"\Ëüy:*° ‹bEí±ë1éÖP.ƒ .oI‰TÒ1ÉvlumŠiƒLgþí“L“ýHÖRù¹¦me‰ˆ6EDÛ"¦Ma?Ø•dIÆ8óÞÉPR@Ù€é¶CxYº¨³ÊÕE×c×Ðð„f-A£„{<ƒ,Ï1/*“ÊQ6„Uª[jil‹M/«\­€”$“ ²uQçܳdZI¥‘lnÝÖ áÑÖ9Ç÷áÕŽnÛ„È‚ÕhjiÁ`/,X !%ŽÜ‹ááúöì ‚¤{(ErÁ<$1Äš’hiïÂÞíÛ04˜Æ¢ .@,…€ÆPïqŒ  [ð@† ](¢<)Ÿi[ßwÛà³ÿvx-!JïzbÉbt[Vý†ïï=ª—Ôù*­o¯ò»&/0€ÐyýÃ)¡µò—±yë?è¸é/‡îÄ” !Œ‡L3þ@Oׯ‡Ì»®"€Ùtò7Ò"MS÷™J‚O6,D€ch hI’eiÝRÀœòwQ°€`ƒL6…Íã¨L²Iã4š©ÀqЙìè‚òØzÔÔü/7K’l’Ŷˆj[Dê"ì£*°ˆAÔ™®O€]¡X¾‡›ˆ 2µMŽˆG)Æ’Œ“L¢ ƒmGiñ‹:¯=8¥¨¾L †€`‚€I¶6…Í6Å`S”ŒÚºO@KØPl°bo4R´Ç;º¨]]P.;¤´G»B³'iV‚¡‰Ù–T]'D,@L$µ„dCÄØ K¥`kY\M|Ë$C“`G)ÉYdé(uT;º OR¾žg\!H‚ ÄaH0iM‚t(LZ×$Á›·~ñ%ò{2æôšH‘¶XŠè蹕•™zÈoC>ûM¡˜]ðGºÀß-|p÷_ìzÇGš½è€dñ¦ÿ³û–?øôÊïÿU 0`D* &žšW2¥ºÆzéc÷ Ì›³.?ppñteŽ!xÒÓŠ}}Übs–¬ˆXäó9¤såBK :ÛqdpÚ-"ç*ä]…¨)!Áäa$›[n„e#“ê@ð<ŽS„‘è„—ÀÁW6ãèþW°pñjäSCˆIå0¢îëÇ¡c)ì{e'´rTjVÇÈöypŽ"Õïa$ãbñŠn B[s3Ö_z vnÛŽôàÜ¢‰D{ nzûÛ±þ¢×:{b÷+Ï¡oç‹p!]{!bVÚÏ[0-ZÊä §²,¼÷½·í{òŸ_© ==Eú”“às›·~éýŽ›þ[œù¥!!Œ‡M#ö@{Ûú_.]ø–~”¿7gñºô¹¦O+ˆÙ˯·´þd½’¤•Ô^ÿoQI–Â``úÁ°‚pyì:¨}¦9¨G• šAê-ýïûM’ÁÑR΃0ªïtb•×@¡²?2àëk _­ž' TÕ„=x^нÑ1¤Yù¤¸ÔÿZýr^TAe „8…!½aTà2ì=ë¯GªD&k-40k_éÅäýR‘Ñó'¥ý¨-4Mz ¸Dˆ+Ho-û'ue¸Í`:¨Zä·zAg¬N¿ßå1ä“S¿l &ˆÄh¿ªÕ×Èè_lµS–IK×ïÛÿMpPcmA²(µé «´R±šÁ°üc±êÅl ˆU»Ù§cJð—_½íÏ,m|¬´[˜™w~aÙ]W.µqj•à0*ð›?³ñ‰_n{ybF:†72ˆþ!8úš-FËÂehI4Á4 dò9äó9,ìlE›ÁNG‡à ¦…®˜Àܦ¶@&•‚ÊÒ`á¼óVã}· àÛßú tn,-Äã1(&D¢Q  ‹"ã0^=pé¡ ¥üoµa˜Óž€ÕÚ 2ý—Böð^qМ0qý›n¹Y˜¦ +‡lòÓ¾ªB:7ŒÔÈ º:»Ð¹h=b‰fÀÏr>†¡Á$’Ia ïH<¦ U(‚=¯|!2#è^¶ï\ýžùÝ·}̆¼Â`¿‰Ùm ½ùù/ýšã¤¾‚ð<˜Hl“Âzȶ[X½ü½ÏF#]ã?b!IpX@8˜•±A°¦€… à+aºîÔ 0È<­*pA× A"Tà©*_`ŸYþ¿fýLÄêͪ>Zgø€X ‘ ’m`*E[ò”$øU`I²‚‰`Y€Àå„}ª< ¬Ù8-6+åþK2X”û^£e UÖW¤‹Ÿ–wT¨ò×§þb˘âä¤+“å2ùÖûXM6Úf’ ï£ýÖ¬Èĸ6¸j»ôר¢IÜPÏ~x¦šB7pêñ ~ù§¿à%‹«ˆ67ñ/>tí5ÿ<ÿ‘ç»/aTà{¿´åª ¿5g(í2õG…žX™Þ£È; l`Ä!dw½†tÌBó¼EpÒ#è;t¹ãq¬¹è2Å‚ƾÞ!h·ˆc#Àñ´‹ü±Ã¾‚*$X+aB&FaÏ¡ChiiÇ@> REäRE€…Ì0ˆ5l#†„-ÐßÖ‚Þ£½3d,fþ¡ Ú„hG72Ç o¸ˆ¶¤Öù‹08Ô­šã1ˆHdÉ¥GF’ì=нGû±·oWQÄV]X¿j ú†RÈí;„ôÑ~ø&SÀ0¡‹•âó0bQ|ì·~÷3ßùÂÓ’_àô¨À3Õz:xúù/½7ù¥´òW†Œ>ÐÖ²êÁåKn9~J;ØÀIGÝ 00ûT`£Ù:Ã`àÌ)Á“!´ÚZCž a °ßÎôTàpmœ~x*èi\+Ív¨{r"*ðIo#<Æ yáW-ç>‘ <é1õŒ+©Àõ šOŒ±û6Ó”à† \*pC®eø7\Õ}QjácêMüì7æ=zÓ¶Äa'P¸ÔÆÌñ~ÿ_¾ãš—¼p7†ûŽbW׃Ό 02€Á¼‚.c.b&a0ãÂ-8ˆ[„9«VaN÷\8J£h†Êgá÷CÆ0›Ûf0k°çXÔ‘@k2†ÖdÙ|™ô\×{¨<dzâÒ%›žÞ†tï @)€5(ž„”/“ñË›6¢-IHÓ€ëzPŽ ö†0 HÓ„!šÛZpóMoÅ‚•"3܇‡¸;·¿ŒÌP ÈåÀfù9  ©¹TÇD1«¯¿J ?huN}}4Tàú°ùÅ¿¾­è¤¾Š)È/‘xEëˆÕüÀŠ%ïx:‘˜7Å$¼ÆóÖPÏ8Ê pƒO…sˆ ×0|~ÏÛ®êr’w¡ÔqG¨o|råw?(\jcæ`x×—ÞòÂÞCûÉD¼þ×0<4 Gi) 3<„âP/òކË@” H;й¨ƒˆÅÐÚÙ Ó4"X‘ÌD´çÀ8»s®€Ê¦áHbÕ²ù0Ú"¦sˆ—Æ¿§ƒƒCÆ\Ò6Ž9Ž£‡û¡3éQ?Ü A4aN4aÁÊeX³|)¢O=µ }Å‚ÿ»iÃlnF4fÁs=HC"5’ÉÒý*äÑÜÇjõºöÜp6”uSƒOŽÍ/þÍ{ŠÎÈ×P›üæ„05dôæ¦%®^öÞCãú5åû¤ê™kà3Ži` A‚àA‚ôqf ð–Ü/®AàØlu>{^ÓU¡³Ÿ7ð¨RŸíýñÅÌ+ï#é‹»nÝZ»ÙA‚Ÿ;úã‹4ôè‹`uûµ·Zmuž|ƒ‡%Á \?Î œ›$ø¯_{÷G£ÊúóòvÊ(üö-ÿÑ÷…KmÌ,|Õ\2XTZ€t3ÈÞå:ÎäÑ_$ ¦rP™¸yE8®Â kÃÍׄ@R"šˆ€ÃÉ`Å¢0m¤2©,”ã@Hó—-„•HbYgíq‰Á¬ ¥4ØÍƒýv!±/g t?Ò9ùþA_®¼8`hÕ B‚¥ÌR4kfDÛ[ Îà  µŸ«*E£˜;¿ Í= Pp]{uòE Àáñ™ÏüÉïÜó—O~¯¾û1†ž%òûÕ`çˆÄn!Ìl«é¥ o~ªµy夤'4$ø cÚ>À§#-R³ÓõׯľÀн÷!ð:Ê©ô®<³'ê <ŒÐ$XP‘Ãà°i‘ ' ®»ò"¤Œ£“úlÀk‘è-¶#5œ†‘A“ƒ1Лµ¡3)ë¿ó™±ÏF!›EA@ùßWÀ(âàîý˜ßÃËévtuµ¡MG„²˜Æ¾ùË0,é^¼öüޱ TX¹à\,H_Ö ŠÇÀ‘Xɬ™ Rƒ€a¡PTàþ±FJŠqGG] –ÁU.¸˜‡KdT@{¤rñî÷ݾ랿|ò{~?ë‰Ò=†Ùì b7öœ’n‚ï·®_ª®ë[I ÂTòÂß!Á÷t¾˜>ü|[hÅë¾(\jãäà/ìzË•:tùãm~ cZa!'œï„©ÿ>öퟯ_µáÞ˜ðp$U@ Idâ Ñc0'êŸ_GDã¼nóº;°¬+ »¥¢¹]-,l:Z 4u$a5% c1ˆh"…ŒÇ@v ‚Ý”D,‘ô•Z"èÌFJV^‡ò&ÜlŽ‘ ¬Ëºãæ¯^Ä€§À¬A¦ ŠÆ@–ðͱKëºä|"ìÀù͆™Ø´Ñ>¯ ËÖ]à«Ç\§ˆ\¾•ÏZaéêÅì<?#æ“T&Íu®'Ö7n+Ç•òÖ×ݧi4UC½p͇·\uáî’õ°³í¼ %…tøÅ‚©ßÕ5ž·ò¢k¢ž†[ …]ø˜e$xæôä,AC®gµ xoÌT|6ãù¾‡VyôÃ.H<3ú#£í•¡Gן‘ŽÍ`4Tà0}:7Tà™J‚˜¹øëÅ÷½œ6 /o,nù«×Þý»'³·õžßôw;nûÛîbÓÏhyy¿"ýè+‰ãWü¯ÕwýK]c=ð˜ÞñÉ»n_¿ú‚} á"“ÄHÓ ­V$…‹NK!å0ÒÚÀòXvÞ°¦ ¯Zˆ5«—£{ÅZ$»æ )f ;É˜Û Ìk70¯ÃÀÜ`~‡ÀÜ91tÄ=—‡(¦ Ši“ÅÑ=»°³¯ˆb. v^ÉIÜüVÌm‚,El.“ß©ÀŽ õûé™Ê­¤€eÛ£dYiíü%aåaÞÂnî9º&@~«cNƒ |®à¨…ÑÑ F§©³Yž‰$¸Ù‡³YvuáªÀ¦Óduý9ØÕ…k'ncöªÀ3•70»ÐPëÇéVà—ÿè».©)oÇ”õ>¿ç­W” —Ú˜ž ü¯Þò–7÷­}ÚÒò7Qraa`$m>úѵß}ûW=:jF–ÿèsn¸xý…ò 2}ÈÆçš¥ƒ¸% ¸;ˆÑm°®©€‹»Î_ІuË`ÕªåH.ZÄZÁB¢eÑ*msiAC€!œ HQþÜ“ö‡Ž@’ÆÂ˜QÃ2© FkO(­‹üúçèú©˜ù¾²$@ñ=þù gÓ†*P((ôô´cñàùéÁlÃvù$ – <*pÈ6ÎRxfô¢FCÛFd%z¦ªÀg# Þ•Ûcæ‹ÊÛD´gMÛë‰hgy3¯Û>øËFä¼³ 8Tu–œÙ*ðL%Á øø×yVo)mNòß>täÊ®éÖ÷›‡®èþÊËï½£ÕýzÊû=Òw=Ó²ïÒϬúñ·N¸Ó¾÷Ù{Ï¿â‚;GF†‘— è’àÐm0×Ì+/À˜c污ÅEg{+´'±jQ7V¬X†îˆÆ²î&¬Z¹fÛ< Ö D’àjƒäæP<ŽB "yÎÕxio¶ì<Š— cï@‡Sâ-Í@< .äÁŽã“ÛB\ís\EcMÍ€òÀÙ Ø´ ¥DÄöM­#¦‰Ü`úŽõ¢§« —wÝ8/ÝW‹ü6T`àä™BOÞÆ© Á Ì$T̸£ˆ"ñ/˜‰p:"BÀæ°i‘,X¡Ò"™HÕŸ©@‡¯‡I‹dÉaÓ"¥)*-’Afè´H¡£/SŽÃ¦EÊÁ˜VnàÎMô;‡.ÆB3 ’Û¹,É|Æcgui7eÝkü¸V§#"´'6Ü$_äúÒ"PN‹DŽ •Ø…¨37p)l1Â_/"/tZ$Á¦EëÊ„mÔ(R£_2TZ$oZ¹8{q®D„Û†?ÒÇ&àÛ‡ñ£\›™ûmšsQzá¿=P|ùíG0¬`Ô­¾ôÊ­Œ+ûÏ h.ïcð±a3ÿéÏ­üé=Õ= }­ª¢ ßù÷\ö_yÏÏ·¼¸éÊ´Õ‰æÂ‘)û ì†H€I`ÕÜ6 42£è¸XÒ#AœìÜwÈŒ;ž &öŽ(dûz1Ð;]tÁ¹ŒOp¥aÛ fh×8`mcNðc€‚!ZJÀ´ ,‡vl³B6ïA3°h~7'^˜Û¶{ê:ßÎ6œ%¡5‡N‹DÐ&-’Ö⌧E738$¸¦Â™N‹4Š,€¸ÿgžŠ8i‘¶<Þ\Ôù$CÙ’ÌlÂhYžØP÷C8UZ¤½Ù­Ñ”ÛÛ ™^•¼2u&Ó"iö‚æÏˆM[ -Òó\oîÀh:*ÅêªÂÁ»Û# j„éàgé@jk"§Fš5+Ë‘̼ØêÁ{á ¯Ðôö}…}IGš=[tL²ó]Ñ%ÃívíshPÚ¡}ƒO5¼T’YY–Œ¦;b‹Gz«NZê§#[bCùƒ]–Œe·\:5[&8´H´Hµqv¥E€šÿ«Cºû–ÿÖîÆ@HWjÿ›>ÿ©•ßûB=Ç|ßuK–å:¾"Y¼.°›¡þãWm;?ÿ“îƳȓ„o}ô‡7ÿÎ×ßÿ§Ï>ÿèÇ ±ehs{aºéÑßÝxŒ\?ˆÊæÌit&,um4›.ÚG½ÏŠœÄÖƒi+ÌŸ?Gz#й‘²!4ÀíÝsñŽôœ¿¢´¢}yàøñ ÷  0”ç²àêœÀ´ëBȱqÇ` XŠŽÿ7‰¦'ï ˜ö? ¦%qÅ¥zé{Ίç¼&)ª‡´Huc²´HµÛÐ`Ö2¦‘él13®£ë(ŠèèH C€L‹‡Í VöÛ7ª[Pî~ªÀB©À¥6Â6ŠlúåéÀ¦¥‡îWHì·¡èéìÝÿ„À«'"z~ôºÃF 0€Ð¸Tÿ¸}ÏÝ¿ ¨óo`æ5·Ž?Š /¶X]®N^œÿ{%ª 𶑇ºó*õ&Íú"€ã•¥é°$㉥ñ·ZsÔsÃ?ߨع®ük‹9çë+—¥Q…0ØïÓøóÞšº~N¥>?ÚÐ+ç¾ëÏËÛOýñï1ëóËÛ¦´¿yq×;ž©®g¬ÊÍ–Þ_«Ø»¸T{þÒîw öŒ<,¼^±wíUÕ‰—"2yÿÆö·îׯ$*ðŽáÇZFœã×h¨Õ̼µ¦@û%[Ä×?Ú]x1ײ ¼ùðw>̼¸ùâõ$V:0R<&_éÿÕÿ`•'}­vÏ¿¯ë¸v,ŸÇ8ŒÝ7Í[{ï^’÷Òï,ï“@þUÌ IDATdl½lÎm¿|©ÿ®”Ó÷‰ë©–Œ=xa×;_œ¤+Øvôg óîȵÌê<W¼| P±G k˪ŽkoÌ«xÔR7úö­šÕR ‡¯˜ÿþïöfw›»‡6ݮػ¥ç›@Ž ãÉæÈœVwÜ0áu«‹Î), .µQG)Ÿ†%À–E€„&À@¸ó€°Øo#\¿¦&À@õã†ÀtpØ6Œã¿yõ=Ÿ‰hóÊU¹÷ÿñòŸü¬|:Õ×j^¡E~bßõ*ó³ÀX€ïé·²ýŠ»Ÿ¨§'¡Ï£êí)Yà“ÿð¾+7¿úÄÏs£'a#AÚ'ç‚ iÄ:"—„L†˜b>¶ù˜Šãã«x ´Àˆ2‘ê=V msæ Çr3†x,Wi8EEÅ8x¬GvíGq$8Xk?§¯ ˆxÊÉý¸P”¤ô•_+OT¤kŠÇLüÚ»ßóü³_Û3ú ÷¬×ÊU×7 š’§: jê·•'†M€ýCžwH Ôó®®qCËß›:_[a 0€ðx×7Œ àŒ¨À‹üO|:[s(7L¡h €“¨ïL?ëwŽü:³¾xò£xfµ`°xô ›_üô²ö›š¬tYÎxƒâåÔ#·kV¯Ã„>þ¿ì§õw½óÉâÔìÅþùãÞpíß/|hOµ)ôî¾ñü¹Åæ¯ ¦óƒÕ…÷?êyþ‹·îÎc‚çöTàËýö“o¾í’ùÉUØ{¸÷ˆÙѲm ¥<˜‘K ÀˆÄ!"k ú^†Ð/š·$bP1 ™œ.á>GÂÑ„œKp‡Ž¬!bIôXd´ í‰òBŒ¢þ‡ª-9Ë»ÈkÂ˯Ápï tj\,€=dš~ «HiSp$Š'!A€ö¶~ë=ÿí]÷ÿͦ_žÂKxRÐPëÇ9£Ÿã¦Ð =|º˜Á¡±Â¶qzb½0ü«ö¾âá/LB~k½"н÷>5ð³¥ÜIŸ×Þâ^c{êW¿S"eµÊV±+ž›óRŸÒàžeO:úœ†f}Y°?MFÇæ`™ù‰U[Ac«o̼b[ÿ}s¦ÛæÖ¾{Ö9*ÿ»“ß H³zÃÓý?¹e²BŃÆKCD³z#jO<Ô¾—`Fs^¥>±}øWÓFcÊè“ÁmÅÞ¥“1¶Ø›Ûmj¨±d ó;ozmº}™ ÔŽ¶òêñGZ ?ÿšÕe?‰f€Æ­X2¸#ïìéÃß}nê ˆõRßý7V“ß`µ-‘y›'ø­ÔF# VçrÒá'Zvýwš–åºþóªáå£êîÕCË¢_Þñ®?_hy8H~5ñ‹‡"Ã×}rÍ¿P"¿u_šFôì*îZÚtï÷žÉÜûgÏt^ºášï÷¦²xùH? Z ÞÔDs',Ó†eY«Áë Eí…ÚE1 V50˜ÆÈñãp}ò –íµÆ¿Þ= dÒiŒ¨Ðظª¯¿f:V/‡ln•Õ]¸¥hm‡ÕÕ…öÎ&Ȉ ’[âÊ«6ê5éKÛk‘ßqÏyÍWK# V œ&d ¸Ìà€X Ì,¼’~:–ö†?VmîL$6d<•MûÅÖ¤vežïqta‘bïF€ç–Ë1ë«^NmÊ\Þþ–NÔÆÞìÖ÷0ë «êÞ ë±&³so³ÙU8œe¡«‹k4«›ý@TÜĬ®©÷I棦°GŒäpÁK·UîbÍêZÞ…Š½¶ =øØy­o5 ªÀ¯¥6ß4Ó ‰M¶Œ?Úlu÷.K^œK¹}â@f[[A¥ç;ºp33/ ôË̸·øþŽJx*¬í|ÃŽçÝ5Ä¥±Äà9[{ï[pa×'>ÊwXÝŸz~vׂŒM†°’Vç`Qå M @vtî} nýbßâ¦Kž®>j¨pÐ*ü]Ï ìfIÆc¶‘ÜÜ[z¸;¹¦øjßCÝod±«ò72xŽŽ0•ýÍ­GÚáœ[öMÕC·+íÜØ¥b?ÀÍ n;V¶_7<õ¹6P*ðÌW¿×ýìÐò\׿[î` кwßøå'Zv}äïyû5íNü+Z8¤—îÿýÚÂGÿqO¬å©Ï÷ôÄb}V¿ù‘;ÿû›o»ätArçîݯě¢µ7AÿÛ¥¨Ê»T,ù!"–'/»1Óv£ÐÅ ¡kN’† ‘Îd`·&¼[†ìhNÖ}daƒÌ_¶­KVsÛ¿®ã"Ñ’€!çx0ØCWg n¿åö?¼ï/žú犕õ¦…† ÜP§‹FxÌsçRDèÓ«.œ€)toñÐ;QšÌ—àH2ÿëŠö·>,·±õG9{åÙƒùïgÖW–Ó¬o|fðþ—´½é¥êúŸúå|fý:øŽ¡€w_ØrÓÏÌ€9o—½d€=Ïß·­ 28tª¡°$¸ Ý ógƒÌ§j•³dôÉ‚—%ÀêòÙ—<]¼<¸´:FïÁÒæK²K›/©yOjE„ö´CÏÿîoU’_èŒ.ýjgt©Sz×ðãï`èù²©ˆÙô/̽eg°5Ý7p¬/½}ë¾ág?¨Ym|³è¬;øÛùýÿ»=ºÈ›,"4ƒÛJm8†°¿ß_öÜ’–‹³^<þӅ̺.VÔˆuö›B70†¿\òó­_zí]Ÿ‰+ûïÀdù¾¿ßyûBÉâê`9Eúñ½±ýíâ_î>3=÷~ï™ ¾‡yÿëë|Û¦½ÛîØu¬W(Š®‡–¦&t5'‘èXæ…È€™ï«8Þ"D,‚̈@ª÷8@‰0#tXcs RRy´$"°JOª Œ(˜8œ*b°À(Çc`ÉX´h1­X°Âñ¾>ô¾ö2ÒŽFS4ŠÜrë }ù•×ß÷RÍ×lÆ=ç€X·1CIp3“ÞÍèX샺`#|€ «lK\'`‡6°BNÖM¤ê/Ü0…n˜«Lç†ê`ÖäÏöתÉo c«Ý«Úoùw"ñXp¿«šæ¹E{7ϳ ùÈ¥m·Þ$¿Alh¹ñ@Âhý[Ô‚}ú$ñRæÑVæ 9*e—D/x¡¢`Éàdc×›÷€plt?#z$ûÊ%“·1ñ«LüÕÆ®[ ’_ÀO‹·¿}F…/¨fµ|\=,ÙŒ½è‰-Õä·ªm€%É‹î"ÂØ̰ú ¦&áL÷ãV{ÅØÑì]RPÙIg;mÒÐkËÛñÚºö7Ôõ®ÎÛ [z¿«† Þ—BÂìøêò–«Ó@enàÝÃ7+v¯ o‰;Êä·VÉuÅ«|èrtÁ‡Á»ž¼tì˜É —%cw\6ï½-i $w~÷-.èyÇÞIlàœ…4MWuMЧaÞ,ï…7KÛ†7Á"ÉgVüðß\Rß)oÉ/©Œ,~쳫~úÖzÈïé6…â¯~ç?î~ô‹[Û.¿èÚ/Æ£Î+Æž,ö>‚á¢Â°£ñê ‹‡-l6ñRÊÆŽl¯åcÚCJÄ`Ä›Ð4o!VtE±º;‚eÍ•m0 ˜¦ ³D~ll&<}\aÛ€‡‡ÀB†aÚB`8ƒÀ€ÖhêìÁÞõö£—įë~ì˯¼~ê“oà\ÁÔ.+5ÞMe×›:_[zÁ)¬ùû4ò.Sȃ´>ý‹ S¶x:Hp³ 3Õ¸.LÃ8«R× °¼I$¶\ÖvóËõÛc/ú>ôEàEÏ>P¨è•ô³qf^ØUl6»ªr3ŽÇúæëûÉǦ*W ÅÖ3Þà•¨ èâéN«Fê¡Ò™J’O”WÕ š<ÕBMLHwÅ–Ý5Õ±‘¨$ãàX­r̪"kŠHÑP_饊d–§m¦°¶ã ½±k´_@󶾇WOvÌ`áHEÐ)CXONR|RÍLÜÀì™TŸhÙ•ßëýuR >>bä?ðû«î|ÿ7>v4ìbÁ™TƒøÆ'¿ÏãóRÛJ^µè—^þ\WG7÷Ì_Šyó—àÚ ÏÇëÖ/ÇœÖ$,CBy Ã9{¼&é¶¢ñ$Ú“Q¨H †d;tE6Úh‰Û˜ÛšD²{ б ªy”凴0ÙA9t[Λßål\uõ»žþfÛôðGªû9Ip³ ¸N<[M¡h &B¨À»2ÏÛ̼0°Ë]–¸ TÔ]If±¨NU£¡*”?ArŸ b]ÏǪä•)€Â=|%Ô«o¹%Àc{èÈÆ¦7ï›ð€<°¶íê"±=È‹*3¥ \  NUÆ!öBA™ <áKO@bQâü†¶7ª6«®…¬7$ž¼w1CWD~fÖ'd.3'±f !ž5ÔEDz»k®x=ß{ÿÜ`naùÜ‚äúÐáÌ_è»kAQeþ;J²$ãÁKz~íщŽ9”~!ÊЯ:cËö…i—HTø73Q¯†$3Tg x*œ{*ð™$Á¿ð¡=Çí‘w>Òú꥟[þã)­dÎüäߟùÖÇ~zý#_ÜÚ:tß«=ó;ºI÷qßàÈs€iš` åá°ÃAnÁ1nBº¨±¿˜DF™°…F"jÁˆ5¥…¢Õ/ÒŠgÑáõ"ÁY´‹Ƙ/X±¼ÿÚu×_·íޡևþz[÷rÏŒOkDCÓÆ¹£ÏD|:Ñ‚5 ΕˆÐ€Xg. Ö°ÛׂÀBî²(£¹§BL&è1®ÂŒöÊ\±-`LIú‚ ¢~æS— Éáb…ÿ³$9uø §«Š£Ê¡†¾dojË÷—4mÌÕÛ¶ JÕuRœRÐ,ð4ÞžvhçÈmy•îRìvkÖ] ÝÃÌË€za• <É57¹¶x(µm‹†º¢´ËÞŸzéüžø²-Ões^ª"ø•-cO“DЮ·å¼¡ßCÐâ… ·N™ û»ƒgB çH楷ÉŒ‹å6!˜+{ÛµT`)Ì £<‹RœÜ0˜Í±87ñçK~V™¯»Ø(lôì3º<õÀŽÂ“l›ñ¡?zë{žõÉ×öî¼uçþͽéœÈ»`†0 š€]ꪀ¤¡a ¦w«ÎŽ9{;›æÿñ7>õ½û0÷ÖݧéœÇì ˆÕÀlÆéŒ]÷  ‘©œFÜÀÙÝxå a[ï£Ó^qƒ"-WÔÉŒŠÐ¶Œ€ "k¶§WêŸîÝT¡wå¶D™õEÁ}ŠÕ›Ÿúá ò;æo”˜ ÃìÏï»bIÓÆ‡êíŸ 9TO¹²)tÝõ–Ò"=Û×W62x3ÏEÝD·NLqc,#öTÁK— 0<]¼ @.¨,iöFÍŸ 4°¡ë†WËÛõàý©­Ñ¡â‘2xt¬èà¦ÿjO¡‚+ö*Ç+ØVì^?ù™MfŸªŒ$£î…’&ǹº‘©®Â3‹ŸDÜñ—÷ð‰Ò?åÑd€ Âe0#L¾ Ј¡wêpnF„n¤Ešyi‘f„páÑðQ~¾À\ÙF¦ÐšUu0¥ÑÎÈ)"Ø–ÑYì¡Ò¦ŠqVšDe|´úL¡é”%#ì+¸àêþÆnšòs²º>ÅÞëª÷MŽS㌹©ï‡—<ÙûÝ?)ªÜïkÖ×0óRLB~‰ÐKÒÏ£¬ï¼ñ5 ˜°kèu»†Ÿ­ ‡Ûú~¹š1¶H"Hnªå;†‹ÇäáÌŽs †Û"‹¾:7¾nÊUNöŸ“l5±‰zB“®tÎT_à†)t Ò¸õ=Õ¦ì˜ÞNðÊmJŠ™é Ü0…n`6!“h¨Àu`–›B7P ‚¨h¡ÑûЇ$*×ÿªV?¨T…ÓîP PÿƒÌã:L¦«ªÜ¿Ó‡¯3sÏs}w¯º¨óm;§<äáÉÞ;ߣX½q’"E":L‡‰CQÙ´ãü¶Ž?Õû½ßdèÐy—IMûUàÐò[XÜÀì¹ä ,I²b5ù¹Lá ,ɨRW+ÓëH’Sú/îŸÊŒ:  ­¼á±Û`4ªñÔ¦Ð\åSþ›_‹o¹wƒêõ$É_Œ¶ZgÝêr0w–I°£ò×8#xSß®G~ i±]±+"ã»Öµ\wl…µÂ ãd±³&»ë©¡Âá·¢tã”v.ðɼfi¨ ǺJ¯×q]ÝJô¦£ß}›† h¶eü›tÞ|ë<A²ê ô¥=ï»c\Ák(ÌÆTEN _àp¤«a ÝÀ¬Çþ®¡I¾ÀSô SèòAáHpõá”Áj¨À³Ož©$øL n4 çUzt›™çMR¼&r^jnp›éÊm:È<áW³jC0shU²t¦Bý%¢mW¶¾ëîò¶®3ئ‘Ÿæ»ï-o3ë ¯=Þ´²õêÐþÔ'‚Œ7(<.ÞÜGD{Úìyÿ´ºyê¾ð¸ÜÂõÏ2È‘`«öõZÕ~íàæÃwîdèÕ¥v–îÜÔ´¦íòÔ¡ÌŽ5ðFCX›*žX~úØ®Tì¾%XÚ ëûw¿cyãj-X":R{˜¡çæ½5š+gc];ïª6j9aœRÜÀ,BCf‰ <ãIp³ ¸>LËáæ\I‹ÔÀìÂt|e)‡ë¤˜Äx]ÓY€ú»âÏ ÞWA‚§òöØ]Ü&PEÎZQ‘VICWä &öÞ6òP7À㳨Ó?9ˆ`Z¤^g¿¡YW˜ÞTI¾êm£ÕèÙŒQ#9ì»:tO;†[ÆŒ ¹¸îŽ,ûǵÍ×ÖIă©  ¤,8 asÓHñèàêâýÎÜÄÊq¢kaËñŸ¬quáýÁ}’ŒG.›s[èô«ÛÞx@0 •µgä©PQÇ_>þó9Ûݵ`ÿÐæ)ƒ_Í(4|i‘Bàt¤Ej`6 á œ_àFZ¤³³úÍ6/°‰‚S‰¿"\ð)ƒÌÐ#ª+Dù3@‚‰hWp» sW†i_³¾"¸mõ\p»Ùê|Ù ³ÞøÜÐÃu)Í95ò6œ‚÷ÀžÜóTç¢ìÒØ†mÓ©kUü² ‘x!¸O±wMAeN«§Ø©J½C{W4]VW±ïïa®4ká¶æäLÌ—4¿¿oO»2*OÌj4”€Üº0¹®Æ0¶p!Hà…¾_Ì+¨Ìï  +ˆíçw¼ù»ãúDSÏv a±@…Ï/gÝÁ7Ô,\Ã(']<,3ÅãÍ8ýŸ;–Þþÿ=vàßþ~Ë‘­œ²á˜Í±˜]˜(/ð…„_,¨pMc± Ëoã ˆÕÀìCؼÀZŸºoš€NtNUnÎx&’àÎ-X"òHp[³ºvËЃdj"ø©»_pw`WfUò’]"°X°:yq–HTäs,êì;]éP­??|ßBf}ñDý>Øc§ÂüYx¦ËZ4î³Xo&ÙOŒm1ÀhÛ>ðÐyQÑv]mÔQS5=cL~oø]Õû¸n{£€Ò5 îŠ/wÉgGë†^ýr߃ë¤mËè“5`ÇÀ¯Z²îàGˆhM Có“ç}#f¶LÛÉ”Ñǃۚ½+_ì»kY=ǾÖ÷ÈU°R ³¦óú]“Ó@ýh¨Àõã\Qg n`6£¡OÞ‹ñ*ðL!Áå∆ 3]¾¼íæ=D4S¶2ÞÈï>;ô@…h5 Þ4xÏeн÷÷ ’6›‚$8a4ߌ9Û3óù[†øèÎteJœ2 Þ2t÷E•ùNÁ;`[ú‘æJ3lKD7MT¾¬O¼n;ˆ*rúººpí‰Ô?Üfæ…ÏÞÛ=Qù26õýàff}~õ~†>©9ƒ#2$¸ÒQ¹ÛÊÜÐõ¦I"/;8~12P8ø{Á¨àêïˆ.úÊ‚äy>4õ¨Àt¼};Ž÷彑½¥áÝìïa0cÝ˃¿l_ÛvýÀT}š,ÍÏDpÈ…Åc E«›¯ê}fà®xôá—oð#Ï þü›µÝ|È;v[~± ¯Òo›èZ3tBd=U¤q~úhŸ/Oëüî·ìÝ|ø;ÇÜã×Ï£VSåþ-¨,L½ø?=]S}os׺¿ó{žç@\$ÊÔÁgI±, ¶ÈšÑýõÓF“ÕvϨÓ6JJ‹Æìþ׸ÞWç^%I«…"õÓ¬L¢ð3÷ŽÛƒ_¼gï/ž'ˆ½¤ÜÉàEî~-’±(v»ä‚€˜ÕŒî±.Åïs8w~åû¥¹«³kìÅT•âi Y9þ—Yé+ÍyÙmŸëJ-/æŒÕýÖíì¹æ'9•þJ_Ý ¶Ê¼{óÈCmyx/AìapÀ åsŠh°£x¶<‰ IDATqÙ·µ›üU„&²À8fZ$3-’ÁàR/¡Í´Hæð´H†ZñªÃM.°LA¬Y …;'u½õé¤Õôï@y(/ðBf>¢šø%÷/i\ý¯G¶½nh¦6^Óõ–ßX¿eÙU‘‚¬[Ö´œòThûy‰¾‰)Ö™‘g†ï<¤¢Ú17Yí¯*ü¹ÀQ-oÜO$m+¶joEE°!zÌF.°/o¥þÎÛò Ó ƒ í¶¨¹ÝšaЀŸó°Ê-|ßø¼usçn€ý«“ àUç;,Ò÷ÞûÙñª§¥)ˆU£‚X†è0Ž¢öæW²¾ãŒÝª:[Òçû@n·˜£ÖÂTŸÖ(† ,ïÍì‰\<‰¦ŽíR+‹œ–öÝFE,Èf| b8²ãô~U‹p)M§ë@Äzyð…RÅiAÖƒñVï:k¯‚ Eˆvý`rMA¬pÄ2D“ ìSkö bÕ_¢e˜©³ŠÐÑ)ˆU­ ‹gt}ŠàiÚð%‚·¥Ÿoµ¾²e|à v XØuöÝ~Úxe⩵ð¤B7D×0çHo;žûzS¼ãïßmŸ.p©Ä”£í VS¹Uª]U¶a bU#Ü"Ø-ævEhS+HŸ€pŠ`ƒ˜¦V½ä›‚X†z§=Þ“?ÐÜÉÌk%;çæÔÌ‘r”Ξé}/F §ZðŸ ì%«™Và» OÀ‰ [ëú8¹À3¶ ÌóÕÄËí’×߇xáðž3wU®iû.7Ýýågn`C´1¹Àþ1±´V1…¤ Óbrõ¨×‚X¶¤–aNSO¡g£ –åG¬xj1WÄòÙÆŒË¸²h³ç­öÇo;wºur*KOÝ})3‚bÙ.^<ä…éÖfGôÎî¶6îûãGÜYx/.wL·NØÓ=W9}*EvX*B›‚Xþ «6D‹z©m biô)¤"Ø0{L«L.prM(´v(´azb»Óa{EáÿŠå[ïï¿ñ5Üš´w,k÷6,„˜\`S˳!‚ ÑÃäOÛ˜‚X…•j/‚ë9»õ&Ø?º¹À&zîÑ ’|Xˉ— ²nªnÄTwù±¸H|ç5]o¹¡†Ý«+ ,(>¹òt~5\{Ìü·ÎÊÖ\` m0TÇäk­òêCˆ}4ÕPhCô¨·\`_kš‚XÃÔ„%¸³a:©ë¼ßÌK.ý¼ ë×mGu1œ#¢ 1ÿÑ’ÆC?|ç™Oî´H:}2±4Ú8À"8e5ï%¢2LDÛ¬ÆËÖ/|×mÚæ$&x&LA¬ mh‰`C$1¹À:m˜‚XZmY)Ä̸.¤˜¶ø+tàh…A­“ º¹ÀnzíZó绯“ º¹À´rómè6¡rì.¯Ÿ ¬ í¶£Ù/ÍPh· s¸6•^ê†BçÛð½¬Êï§—ÆžH؃‚H¶Æº†V49¥Í­8¡ua@Ù¼À~ð— x³ku÷—n.0L™ \Þ•)Ûðs–éæë†B»mø -ÌwX7:߆Ï%ÝsV7tC¡u§DÒ ƒünwé:Õ ƒvÛÐë×ÌaÐ@e ¨n´n.p6|ç» çÛÐÛWþÂn쫊ËT7\×ßõQÙ¯)Bo§¸eÉ~ÕÛQõðTl‡F(t>žm÷y;ù˜—o˜î”HºaÐn‹šÇB3 ðsV9 …b0hís7ÀþÕÉ • ì°Hß{ïgÇ}›‡5ØÄ2ª#ƒ‚ƒUÍǤìðµeYGG98 ±–6™FÓ‘eÇ–r––ž‚X†èar§ÃÄjXË1L.pi%SË/s6Ø ÉÖX~O‹äEØW³ mˆ&ØfZ¤†B"…ÉvÛ0Ó"ùïÓ,„BÂ…Ö7‡Éö)ˆe0LÉÖXÇÏÀ oº7åôÚ‰rA,C0¹ÀAÚ0±ôÑÁ†har5Û¨qA,í'¾ÙÁ†ha\`í6´–« FlˆÆöÏÜvÃ/‚ ѸÀ“šžfùúpÃ*‚£H(c‡Œ ìŸzqÃ*‚ ѸÀ~¨?8T"ØYŒ ìãà ëÔ‰ VlˆQt à(‡B¢…qu–¯8¬"ØŒ i8Œ"Ø=Œ ìŸzqÃ*‚k…¹ jb\`ÿÔ‹ VlˆÆž±+S¶1ç\à‹`C´0.°^#õâ‡Q¢G­\àÀß|QvÃ(‚ ÑøÀ3P‡.p¸D°!ªØ?õâ‡U¢…q§ïÅä•êî…6O:u‚qõ¨8Œ"ØŒ e8¬"Ø-Œ ìŸzqÃ*‚ s‹âY”DR{eãû'ʡІha\`6æ¼ nlˆÆÖX§N\à°Š`C´0.°!pËþ:["Ø-Œ <uè‡U¢…qýP.pE°!zØ?õâ‡V&qPB  ìƒ:sÃ*‚ ѸÀþ©8¬"Ø-Œ ìŸzrÃ(‚ ĸÀ“˜ô—(‡B¢‡q5Ö©8Œ"Ø=Œ ìŸzqÃ*‚ ѸÀ}ª'8Œ"ø bŠ`y0.°VºM„Ö£6D ãëQ/.pE°!zØ?õâ‡U"ÆAt«¾e8t"ØIŒ \ƒ6Bî‡U¢…quÛ¨8Œ"Ø=Œ ¬±N½¸ÀI8ì8².pXE°!ZX§Oõá‡U¢…qõ¨8Œ"ØPLyÖX·h†B¢‡qýS/.pXE°!ZØ?õâ‡U¢…qõ˜ .ð´{.ˆ6D ãë¶Q.pE°!zX« ŸK†Û«6D ã×®O@8]à°Š`C0xü‘qýS/.pXE°!ZØõç‡Q¢‡q}-œo£>\à°Š`C´0.°FxÆ«·žB¡ ѸÀþ©8¬"Ø-Œ ¬G½¸Àõ"‚ sãOÛ“òuêÄ«3‘z’3.°êÅ«6D ãû§^\à°Š`ƒa&Œ 쟰ºÀõ"‚ s›0ºÀ”¤õu—«'8Œ"Ø=Œ ìŸzqÃ*‚ ѸÀ3a\à m˜i‘ µÀ¸Àë„Ô£"æ‡ãë,_?.p½ˆ`ÃÜÆ¸ÀS.ReúpÃ*‚ †é0.°õâ‡Qæ>¾¿ÕŒ ¬ÛF4C¡ ÑøÀþ « \/"Ø0·1.ðt¯6D ãëFXëîf¦E2Ì„quÛ¨8Œ"Ø=Œ ¬Õ†Ï%M(´™É0Æ®]Ÿ€pºÀaÁÔ<Ú¸Àþ©8¬"Ø-Œ ì‡úsÃ(‚ ÑøÀ¾ηQ.pXE°!ZØÚOoõ mˆÆöO½¸ÀaÁ†ha\`=êÅ£6DãOÛ“òuêÄ«‘¾sØ?õâ‡U¢…qýS/.pXE°!ZXk•ºqÃ(‚ Ñ#L.°€kq¸V õä‡Q¢‡qýS/.p¸D°!ªx&êÏ6Dãë´Q?.pXDp¤à°b\`åëÇ£6DãGÙ«6DãGÖ6DâYÑ‚­ ¬ÛF}„B¢…quÚ˜ë.p¸E°!zx:êÌ›6D ã—VІ \¶gtE°!zXcù:qÃ*‚ ѸÀ>¨C8<"Ø)Œ ì¶)8ü"ØpàxUw}ãë¶Q.pE°!zXc:q†6\Œ ¤9í‡I 0.°vÓ¬4i¯ÔK(´!ZX» ­åÃê‡Qê ãW#ª.pE°!xQuÃ*‚çu{w5.°êÅ«6D ãûan¹ÀsN"„qˆ¸ÀaÁCsÍ®zF׋ VlˆÆÖY¾>\à°Š`CD0.pÄ\àð‹`Ca\à©Ûˆ° V\ s;Ø?õâ‡U¢…qgìÊ”mÌ98ä"Ø-Œ ¬×Èœpç¨6Dj.ð”W¥qýS/¡Ð†èa\à¨C8\"ØUŒ ìŸzqÃ#‚ QƸÀÓ÷bòJõáWŠ`ó”b(b\`=êÅ£6DãGÙ«6Ô;Æ.U8¬"Ø0{L{Ø?õâ‡U¢…q5Ú˜ó.pˆD°Áãk­3g]à°Š`C”1.°¯Òžñj «6D ãÏ@ºÀ¡Á†h`\àÊ6|.Y.pE°! 8HŸ€úqÃ!‚ëŸ9»Œ ìƒ:sÃ*‚ À¸À"âÏ!lˆÆöÏÜvÃ/‚ õNýºÀ|=í· £õý¡I$‘Ñtº¶b+/ÅRÒY'…ÒÞ'ÓH ,ôܱìGÝZë„{`æýL¬u,¬÷'5—Åz_‚ G{;8€[ ×¯1HÍ`ÆôÛ2  Ñ}™Á8’¬ß†ÔÞ¿ºûjŒ„Ö1Q¬wCÌb Ð`ñuüƲn¨éväÄÙÿv¨ç-Cù܆RßYêmûþ,Ýë}©1ëðt÷¸*»’YpŒµ¯§mÀǽ: îú•1Öa_Ç#ƒÂ#…ÿcîi1­ëÉÉ–¥{.NžÄ­dÙ† ðŒ×­ äï7äæ˜ßkªÐ†Ô:%¬÷¯ïã¿íðôÉ‘Ì1KÿÀ¢ü:—ÀäË«â<„`ÿß9®(·4ïWD Ì¢²éi–÷sm”oØ×}·°¼b°Ð»œ$, ’” ÝÈ1ýºÊA%Á`EÕ÷d„¦×Z<†5fÎ:Àa%Œ.𰽟Æå0ØäKüë…yÀMh-¯ëèú!«}8ÌMÓZÞÒ Õ"˜TÔqý‡¥•ÉÖûÚðï—\oAz ABIiº{\¾ÒöãÑëºÀ$ÚoH^¾ÃN ÐÂhh![fÈûs°û3—0.°êÅk(´!bt}߱š lB¡«3ŒýTøÑí‹aãƒÈ¾ÈÖͦ@¢K78@±/yâmÃçvx[(Wóí°g!z6D°!*¸»AòËŽö÷¦”µÍ¶e†•ó!†MA¬ m̆6D“ ¬±N„ b™„Ç:£ªàÐX‚Tî›Q㾄1Aoè?‹4Ršƒºa·€nÈñ€&Íí’BJ¥Ö:i¨¡Ð˜)Úª›C‰m膚ë‡ßê…Øë„ï•ÐsÓ|·áÙTp.­6ÊVÒÛŽ _6:á\¥†üs7ÍÏTÞ¯¥Ù …žâzÊ“#é³€§ §Ú"Uû¥sL²P2€î îGq·ßº¡…_Ç£t õC¡³`Ö …–€óßÎTaÐ11ýÀuAW†I¿°Û!ã!¶ºáº3‡ŸVë1s•{õá¾ABI_õv˜PhÃAK›\`ÿ¹ÀýHp²ZÛÑ€ä4BcãVS_éáqB³ûz&q“Så£Ý‚ôrläÐÈ? òÀ®+Ðôó™r³Ð¯@#cð‘LâyD£¢KW¨éoG¤› ¬Ù†,âšc|¾¶;”ƲôrýåS–pCLS9¯fXàf&ç7> î¿ð‘»XüàR·4ÏEm<]|o•¦+?ßÏÁ×Í&€}V»$Øï±páYºƒJÀ>˜h`‚¬*‚Uþ}íÄއ㩅°ÉÒ†…˜ßs1¿9ºû*¬"Ø-L.psÃÏãqí+u6B¡ zL'~Ó§4ÊÝÞœÊÐt?µïq9º Ÿs«äçf¡_B3TØO¬‡gÜÉP%W7”-È1dÝPèmئ²®a&¦‘¨š ,gZ¤Ê:º÷… až>GVœÂ¯ ai~¯ÁB(´þ×I-C¡•#GåHª4I•ôS¾l–¼¢¸rÛ«‡E¿ºPhC´0¹Àµë`B¡ ÓÊhãûwDZ•Š¥=L½ÈÆ4º"M±„öςX¶¶ƒêÀÖ½ÕuO]§kz£ÙÁ*ëj-äVåËö|púYºU‹ƒT~õµÞ6¸ÙºÛîk;ÊLJ ]Xo;1Í*ÄAŽ|š%§ 9€5ÂOý‡BÛ( …Ö:†vY˜²/Ü×….w‚%ü}™ê÷Ú?”"Dj]j$XEh}Xó9ÞñK¸SÿyE°•w€ "¸Zˆ´-3t C¢ ìkáºrà mˆQt à(‡B‡‰! UÝ?^ñ›Ci”ÚAŽ ç·‚‚dÿSÉsp4Gÿå.j‹4Ÿ¢? ­µŽhú“ÅcÅhU ñÓ¸èý‡][;Z÷˜K؈é†BûÙŽJˆmh‡Bk sÒ͇ 6´âsJ‹éòݯÒöêæVÒ …®xÓ_(´N¿ì§í©†¯º 91w³D c?ÛQÄr_€f.°R€åwjë<<ÅØ%â\ÕBØ¢xY#“Epý…B¢‡Éž¶'0Ó"Vª½®¡t€ÃL]à&à qzá›Gf*ÂV,«ökª÷usäמ5[ ±tIÍœf¿®U9ºýÒ}ØÕuƒÌo¬?ÀÄ¡Õ) æ(éÄòy¼Ë\v½]=W³0‡«Þ9R;œŸXÈ‹)=Xø.ˆUÚ^ÝÜé@î&MqMåãtm¸9Î>º¥}MÁ~æ-Ê¡ØaíßÛà6$šó€šÁ+[ (€=›ãŠ_›J¯' áJ7ø@;ÁaøÀÑtÃ(‚ Ñ£V.013ˆ§âTíPǠ퀮 @ËÈÖÁ +‚Ý6ª‹àjÎï¨gô© ~Ë„/\·WB®È­¼©ÏtÒÀÀì„mj;išb³Ð¯`n«<æ} Jî,8¤B¬ÿ¬©3zšoÅßbžýKˆ×Ô+4"Ø3¸¥!€¿xU8Ð(ó4×Ó ¨•0¥ÐTB¾’‚TÈTïΖ¶|¤ Q²Š û· Ž­ÂoQrz ¯ "˜YU ‰.ÁžBnš.°Û†îÜò~Ϋò“Xû\ÔÁAÚð-‚c…Ï×¾ú؆û©âþ ëTú»OWökŠ wŠÇ® aЯz;ªžŠíÐÀA ·Ýç#©¿ó¶|ãt#%u]`·EÍã¡é~ÎÅ*•óÇÐçå¨nŒîqŸbÿ*Áé{îùü„q€ë€ L@"5Iü– _ ’8²ŠÛ;ÕÍH²ÔÁ2€kÄmÕYgB3\Õ5KjÝ/'ØÃîLùÙžtJ '€ÔúûIwº­ XWù>v^X³êOíÐuòƒ\OþއçIJÖ ?õw=Ù(ÁºƒJ„ݔⱼ+ž6ô]`ÝkÄWîŠ÷!b¹FMìÿxöŠî¹˜ƒ®ž®O‚Ü“TÉÒ÷\áÊÛCþº.8Â7x:'Ø0‹8².pxB¡ s™âiЃìÃ>­•£œ |°B¡+Ýß Lx\Þap£j·pƒéîérÿf¹c0”š*ºÊMIsØÊ÷ˆnáãk.4b=§Ðq­¼˜œ´éWòq<,ïË #‚ºÛ@tiæürOku.zö/é>°Áº£§µÁ@™@Õ,|ëÿš*m¯V œÍi¶»ês¶˜æS UÄÍÖ;|µuE~é÷PÍûÏy(DÙIYü,AÅÇ®ÃKãc¬àžPéIáÑ®fV“Dpy(týå›Ph#ˆ ^L.pi¥¹W«ld6D°¡6äòŽo¥øU(ˆ\E ŠŠ$K(¥<s¿¯•šü…PMëVîu¯‡YÁZ•Žv¸*0.pÀGžA¬ä ïöÌB‚@±4&j¿o}~~Y¯5àhKÓ ~êW{s­J‚»ÀÁDðç‰ç:*k¢¢ _¡ÐÚÇ$öç‹Â}¡–.p¡ÿºÛ­_Kª’VUFeY¬<ƒË‚ŠCªY\Ø',ŠMÊ žJ"ŒqÝ6"å‡_ª3ë!ÐÆ>ð± â׆MîHpAüz…/àæ(8Ò&ÅŠ eåßg®šOÂÕ`Hm¬ gŵÒy¸¢ ³"€käÖy>6XqH¶ãU´HüûÙWeÂÈç·ky#ZK©Þìzò£ˆ<¿nÇ|¸{<ô—œ’$x’øe0¹£RLŽr ¢—å¿<ØßèU„1Ý>}ô®²Úáªîcx­Å£¬¹ d@ò𪻼¬y(tÍcÊ„‘i vFé:ìµt½ÍÔj ÄsÌf!„˜ªþM×UüßßZzm©àãæÇ$hB¡õÏEМ‹^ À3¿¼ÈO\)€Y,9G’mf&W²*|Ð"¸ ˆ¦wÃ(‚ QƸÀÑsÃ*‚&flÈÃ\tse•ž%¹9¿61D…øUpÅ-3»c&¶™`!/~Ýïï)+ V ëÖ9F{ºVŸ¯_dÅ}ª­$UfÀ“>8H˜¹öÚmv‘§ ÔH¤y«µ›íž‡º¡Ðúø:¯¼*AÓòÕ3ÿ~ñdT uÊc8EWX×4/ª€ƒcç¢f·<~·+~k¡Ý1Îu[-¸Á,‹Î°`ÅLЉ3f>WÄÕT"¸ðyþ\à0b\` Ú.pxD°!ÊL¸ªŽ² F<€r<ó˜z_Àu Å®–,&rŠ’¬H©NR,ÉQNQøJ–®øÍ‹a0÷ÿÕÄï”ýÔ}À‚k¯¡©Ò‚lGíC¡ƒ=ìÏøðêq)•ŸåúƒræÊÖUZÑÁÝö…B{\`]×J—`ÇP÷xø½>‚;´þ· lbkMjB¤Y™ÞÉϼÀÅî‡3Xßá­d ÊÎP^3 &0 VœLƘ(ÆD‚c"N$,¶(MB¸ÏO–ÆÆPV!Z±M‚â\pm™)öÑĪXÇ’2L¸À@´]àƒ%‚š˜™HqAƒ-S޲…`ɰR Ê"ˆ,$˜Ðí‚! ÆŽŠ ~l¨?¦<ìÆ— LÁ9äÈ›ûë]V)åŠ`æ*âW_Ä.KPAkNžÀ®}1%}j_*È:ÁÂõމ 4"_ëA‰ n~A¬š<ä3Šª‡ÙÑ.§+ê‚m‡~>~¬?-’fWót±jûú¹Àú÷¸ N³Þ`Lm£C Ÿ­{ˆª`€(?4ÈyÑK‚QÈ3˜˜Y( „%bJJ’`¤²I±ûl¡4?°?‡È¸ÀAÚ«6D ãן <íÕDfŸÒ\¿Šli“dYts½ù¾Š•(¸¾ %˜Až‹“J#‡¥ –g´X;„XBÎJè­^Îíó›Ì@\à 2Mÿóg8&•.pšf5_Ci9óAJj–C[æ:ÍB¢nh\àʆôCÓýáÁ5<ö xVÜl XÏ•÷¬î{;‚~(LY¡»j+Ä\Áy%ÌÌô©¿üÌÃDÌ”ÁDR²T.çŠ`¥ Ȭ vÓ‰Š.0ÀŠ*L‰Tp@²MVÈæ6Dãû§^\àЊà©!£zr½¹ÀÞü_ɲèþ…Vå©ú b$Ý9‚™ÅÂE‹>©Ó¶Á`0 sÁÁAHå µµD„t:E‹Øuà Š!ˆÙÀR`VÅ€‡‚ ËbÅ’b,ó"ø`nŸŒ M8Œ"ØABè ǽ–|­Ñƒ­Î® ¬CIí6¶b«ö—O )­åHè6ì×^Gïü¿€ë^nz…'oÁ«R¬|ȳÁ`0 ÁŠR‚Y£¤·F³*¥ ¹¯]! 7X²;GyÞ ®ŠÿPèüòŽf¥8¸ÂNéëQ¯|– ÛáYÞ‘¡ 0\&M=Xõ4®85'•—¤_Ô“ ëL?ÑŠgy?×FùƪÎûî“Ò¿œ¤æÌ¤ì«ï%UjaþuŸ·-¥¹€çj`†nB@?ZgzY²ª ¥xC,Šp^ôR)Ì™ ů´CK ƒÁ`˜ÃŠC2г§ÿ+MXÊù×ÞfYõ{S*½H.ƒ¾ÈvtŒBzƒþW€Á‚ q¥+ÔüÍ[_Ù¯)D×B/ˆˆxÕÛlˆ¾C ë)¸^B¡U•P¥Êàr7˜‹âÌeðÀÀb1Xl¶ã÷ –ErîݰGÂq:;›§\f×®A´·7ÈÇ5 †Ù‡ˆæìý*“±[hi™:ÒËÝ6&Î×B#öÖºpEo¡Z6³"f‡ˆÜêÑJªdôWæ›i‘üÆPhCô0¹Àþ©—‚X‘Ê®G*çÿ\÷—˦2òŒxj]¡l $ŒeÐÙÙ‚'n¿à -XÖÖ‰Õ'í9A$žzàY´6'ÑÔ·=Mî_ö¾ðd÷b¤_Þˆëר‚ ¾ýÕkñWŸ¿4Àº—±± ÆÆ&¦Àcèíí˜Å^ CpölÚ®eݰ, ~fM ããYH©fÀ Å AùšÐy©KÅïÆü÷%)"Xùi“ÜpiAV™ø•ì࿆¹É6±Â"‚ µCK8|.°€€ƒêùH%ÑëEyÝßÒßHàÖËþwã ¸è¸!|ð-Ž/Þy Æïÿ5¶´àÒ÷w^ø!¼ço>‹‹ºÚqõ‚TÇ"ì½û<Ôs>y´BÌÊàg7ޥǞ†eØ‚%Ç‚Ûï{=›ñÜDýÐûñ“+~„Dk/>ø¾÷`tË\~Íu¸õ–ÝøÐ¥¯Å•?»íkŽÅa­ëN=Sg7ÔŒýCXØu…3KìEogûù8{"‹xc€ÄÖ—6£wå*Ä B²±‰©o-ûvoCÚNbé’¤Gú‘vãpSÒ½)©,†&€öæÉ9ø#ý»!­Ft´·bß¶WèšÖÆR á‘1´µ6£÷V¨†.ôt6m6æ*ŽccßÞýxè‘Wàp+Rɬ;º ózÚ ¬ÒÃÙö‡¶á¥/?ƒž¿XŒù'ö¢««kΉ`¿p~N(fw ¼B(´7l”™IÉÂä„<ʼniŠ`™i‘üF8¬"x&™¥Êboå÷˜¥—rg8¸¸v.°öUÖ‚XQ‡ÁT-$:O~ž_”‹Þ²P8ù‚£e×møo_†Cç†Óë“/fðò†ëq÷ óqø²c0`+^zù9\÷³kðòö ²è0¼óM§á‰;~ÿø·ÿ‡~â\Ü~ó£xüæ[°odnúÝ}ø·ß<L á¡ÇÅu?»[v¥¡øöO¯Ç ïý[t o\öÏØžêÆ3<‹V×j7Í:ŠãW_ÿ¾ôÅ¿Á›fXÚÁm¿¾ ÆC·üZ«ôžWp߃ÏM³„Äí7Ý€lñ«OáÆ[ïÔjÃÛÏOýÍå€;¯» O>µÙ|ÏËÿ7Ü´×ÿÏwñÍï] £øãµ7áëßú^~]Æ#wÝ{oü_Üûô^üðûßÀ-÷¿9±_¸èƒØ–_ê¡ß\ƒ~ç¶É-lÇO~q5{ñelzü:Ü}ÿãGÿË›°s ÀÁ?üã~é\{ëÝøçÿúY½Ì@d0bã†Møôg¾‰æð¿7¾€Xÿý虸ß|#ž¼ù*l}~²¶„“±±é²gÑôw]ºcžÛô<ÆÆÆv÷8Ì 0S5S¬”*¤¨Ò5óÎO­¦È®d6 b¢Eµ\`Gf©ðã¾SQ€Ésò–-gr'a bE‡º Žº ,ó˜ôõÅ\^ìÃýn¸åz,>ìH4õÌCÓá;ð§ç¶aÈÙŽ…Ë@OG#Ž8xIµâȦV¼÷ã…ç÷ìÆo8 ßzô!œ¾r-Ö¼v>~ðÝ_`X-ÁÚ“ŽÂuW]…}˱¾c)+ +ž*®Gœ³n®»êè\» —ž±?üãŸÐÞžÀ“wÞŠ…‡|Xg„ؾy7þþïß ÿã»xtpþðÊ,;ëcèzâ2,{÷‡qÍ®ÁªUÞñOWàëÿöCÈÌ“øÎÀÈ‚ð?}¬³ÞÓÆŸÆ·lÂÒ3>†~áøèëNÄòsŽÇsC-Ørûýøïû üäO»ñ‰Ï|øè§Ð±ùwøé]O"·äõ¸ëÊÁÆ{oÁÕW^†{¶$pÙ?\ˆñ=›ðŸù*Žÿ¹Ä÷ò $¶^ñ}|îŸ.ÅWþ´ ]Ï]ƒÅ[nÄüà³ÃÚÞvƒ¸ï·;À‡lC&y$.xKV,š‡­/'œ|2†¯»¿½¹?ÕϾkmÞë œ}Ñ…¸þû_Gç¢4ðièÌìÆnœzò)`¶<{ºO^ƒ¶ç݃W6>Žç$Þ|Êz oÝŒ¾eg#Õ:]u ¶¶›¯ãÏÎ= ã¾»~‹uK Õ݇-މƎ£ †:a˃[ÐshR­)ˆiFîÿû'×ãê«ÿ„ÆæN»&‰õË·¢·-ŽÁ‰,ëÁÖ¡NÄžÿ=ƶ=ˆ}?ZЦ¿ëÂØà(xžƒØ¦övïEssó$X²ÄÎGw sE'š¦I 'ùÂŒbRP^øÎø”©Ü)Ù¢ð䓨×Âuål™ž²_¥‚l1X¢¥rg ÔPêB^Çà mˆsÝ$€M(´žžm S;hå(]ü 4W„œžñË‹¯ßøý+‹¯_wÌQÅ×ÿu*\8k|;®¹í%œ~Þ©8½J3o|ík‹¯×¿õ"¬kéoÿòú3|ww.!9ƒûîy}GƒWÝ…Ï|õJÄí­øý“Í8+ð»¯=ŽÓ×µ`×î~XB`÷³/âÔ ?€c üvéqøåw>‡~&>óÕ+!Ò[$zqÉkNÁ÷î"Ì[õ&A‚ðÎuËqõïw¥¶ãâO}ó“Àkï݆‹?úA\{Û+€¦ù+pXovïÂyo}=~zë~Ä“[û‡A° ¨ ï8ïÜ´ûU¶ˆ±wÿŒå’è8´gžw î{r@öïÛ«±×]ñV®ž €EÅÛä÷¾ôŸX}ú±$5Yºv÷»—9ôï߃ýûG öîÁÝ7=‚ ,|g¡«w ÖvºÏ¦Í `×£cÖ£iy Þtü©xä¾MÈŒŒ ìÆ®çvⷷ܃cÖ¶á„sߎ=·ü û̯í!6f…\.‡ÿk#úŸØ‹}GíÂÒ÷¬ÀüyÕÏî+|n¸á!4§’èhvÐ(lÜ¿y-›šÐ×­JìG²¡ˆurH^BH'ÐÙщ–w·`뼄C0|>š›K"wh×^þöóÈQ—¤qh硳µùæâT¿Ó,£ˆA¤X’EA¦,ŠfA,Ã¥äîN¦²¹”…i2Uñµe•„°%ÊáXìÀ„E›\ài{S«°RíE°êÆ3³áÓT‘Íy!<ùB«v¿sßûÃOþg¾ÿ]“þ:°y r ± ½0Š˜ÁsOnóOmA3âŒ÷jZŒwŸ·¸j_äøn|ók?À‡þþÑ‘3¥÷|ò ذ7ƒ¯_pÔ…'à÷w=Šy+ÅÇþî›èB#¾òõOb^»€ê^ˆ¿õ·8â„Õ¸÷¶[ÑÙ±_þæ@°ðß×ÿ¿¿ëQ,\ᆇúkÿŠù«{ð‘EåÖbþâøÜ¢,^x~%ÞyÜIXÓÃm·ÿ É΀¿zÿ™xè…øÊ§Vî¼õz¼¢,vÆ%¸ñ¦Ûñåÿû&Œí~-žÚ°ŸzïÑHfÞ„.Äqòº5U¶Jáµgþ1Âû?ü6ÜúÄ0.}ÏqîŸæ¯Ä9‡ççc “À1kVcýZmÝ…Û°ƒu'†Á=?ï¾èÍÊf@NKN œ{pÒ©ïÀkN=;·Nš;ºQxüNt‚3ŽëGÖ²°þ½—àÖ;À».= chnlÄ;?ú ¼öì °pé|àÎ?¢ïÃï4â×PŒöâÙ/<†Ø‰ˆ}¬é_ŽcçæèìèD</[–™qã-‚¬H,ïìǢƚÖ,bÉÅH;=˜ß–Áx.…XS'ºãb#û±Õ^†•+W"Õ˜Âþµ»‘{)ƒ]­»°jÕ*8RbÓå°ï‰ýhº¨Ü™)­cnR …†"_Oh†IøÕ»ÀÓ‰^¥lò ’èu«’»¯lTž¿B4 R;Ù,Å“Ep½Ä2D?ç.1s1¼é\ uBéºÀ´\`Ú.0èºÀ´\`\` <€âöL`‚²ù÷mØ”EV((ràSKG‹°¥m)VB±RI‹ÁB±²Ø=DCCƒ`°`†é¶nÝÚö'ü|“±?=…#^»ÍÝ=Ha¶?ø+$? ±Ï·®Ç)K³xéù§1æ¡—7Š[hå!äR@ç‚N,\µwÿn.}[ îy>‹ÁæN\zÖ Ø~߯ðÛlt8cÍÙãìS™ÓQe000†¥K§>®6lÃá‡/™Å^ †zcóÏ_Àþñ~`}¹tÉdÉDý·ïAïÙK°jÕª²0å;îzßøÞMˆ[ +›ƒ%°bÉ,èîÄÂyíèlOaöExÃyk‘εâWÇ_BWOÎ;»‹/A:›Æ#ÿxbok„u£B¼¯r½@v""·pÝÂ… ÑÚÚz÷L9ûözzÜ> bÓ¦Mhmm!NCIþÁ›O{ûå˜@ "DJP¶í0)"¡,“î︴ÈRBÄ”%â*›Î)!³JPŒ-б%âùŸÇDIHÄ­¤§ –aWÈÐuÝ6ôÄúÌ.0Pé“èºÀº"8H¾E°»°ö~ò'¶ì§ #€{Úv¼N¯”¹¢–Ê&ÅS­[ÚVAqÂ50 â·èǪÈ ­ë¸Nr«žŠý«)€ƒ+n»OÃÆßy[¾qº¡u]`·EÍã¡éUŽa•^L^) }^ŽA\àêç¯JßýÀ&æ²þ0¼j¼÷:Â+¾‚Ó.¸Ë–tàéÛÀÆgŸE|ÐuÜÑxð†{a¥º±zy/6Ü|6¼¼{2ˆçç fºç>lܲÉŽ8RÈ ›€ŒÇpÞY'`ÿî͈µö`ýºµ˜×²gÌqñk0 ³ÅÒ‹W¢ã´([¢­­ k×®Åa‡†¶CÛ182ˆ‰‰‰²å|èEÄ,˜1À iç H!fÅpúI1ìë'<ñäS8ý¤lìÄó[0<<Š‘‘¤),¼`)²ÿ>Œô±6ÒGØÈ¥³hiiÁêÕ«±zõêP‰_ƒÁ/DU+.M½¼¯âK›üGrÊ XUm’*Ke?2GRæ(g ©l²eFØrBØ2-¤r¨ðc;Qú¶“R9¤Ø&¥rPʦ‚ \øm bMf6 beã×âZÖqM.p8 bƒqÌ߃}íËèZt$>zÑëðÓÿ½ä´Bd^Áš7‡“O;Wßý º ûúÛñÚÕ½È:)03œÆQoêÃõ·<©–c^ï}øÃ3M8á5G" àåW6¢§w-V­N"Ûv¬¿ƒÁࡽ­­-­èèè(†<7íoÄØè>ìnß+V]àÝ»w@1£$¶Ž‰X èßÕ‰ÓÚw#““°™Ñ$›Ç‘h\Œâ°‡´¶mÛ‰T*‰ÖÖV,<|1Fþi CƒCH&’˜?>zzzÐÐÐ0]wçº  ¶|TsM(tùvT kö†BW¸¼¥÷]‡W²M*ÿZ)‡ Å57¹ÅéÜ÷Ýb¨™´;ouKs‡ÆÆ˜•T‚J‘“òÍ4I³ŠÉ>x±&ûaÁ†Úà ¼ürgœÿÀ¨¼ãíïtý.,°a›Â‘}nNhÏ*w½8ºÊ>çíï8 Ȥ±ú5ï(~îæ Ûj> c£ ÉÞ¥x~Ã6Ìu¤d´·7ìn †:GîîɃ§íoìÆÎolÃÀŠôŒöÙ&µ  $bÀ‚Îì°±{¸™lNNAJ…á‘q|çW@s›€À0”liaÛ¶èí픩T +W¬Àèè(:;»J¥f{Óg™k@—CšÓŒ³#‚ ácÆVÞX•£B¸®T6I.ˆÝ’è É45R9dK€Y’R…ó%+®HP–sNŽ ©Æ•žÈANÕ³ÝrØÉ›.^!\/¹À¦ VmEð\cN”"Šº Lš³¸LUk:–-ÓËO6D›çž›nÎáÚ¡”ÂÂ… ÑÞÞŽìÚµ –u`ŠÔ$ ôõõFÆÓÈä|Æ=Á½@c–@GkÓé‹ÁPÉøx›6”OIDŒ~+ùâ(ÆF6£»g>HÀjB*a¡©5Žæ´ì˜Â³ý}H¦2°cI€RèÊ`dt€d€‰°·_bÛöqˆØ>y|úûÓ8ó4 ÂA__ fà/¬Ø×Â5wµª6çr«äòÚÊ&¥lò Þ¦&@±StxKÊÙŠ˜%1R`fRùé-™'ˆ •e"ÁJI’*® G–?ëà)„ž™É0sÍ®*€Ãè‡U QdÍšjÕ¡ýÂèBWG‡öšãããA{{;²Ù,–/_ަ¦#:_zé¥â뉌]zù{FH? †jŒŒfq߃[ eÙL…ù{äbòæ6¬DSj'„eÁnXèxÀx΂cÏ Âã¡}¿ÄÖ¡vôuoÅs{Ú`˜ÓØßïàÉgöâùM£°áÑ'12&ñàÃ/#Þ`áõ'ÏÃâÞn¼ñ ‡ ±±¾|˜‹»ÕauÃ(‚ërÁ;9ϳ,´Y•‡6+ePì]^Á4Iô朒ÃË,Iq‚\Ñ+¨ x™UÙoÀÁDŽYŽ””J%UCÌQBd(“†">É>áÐÆž¶'¨G8¬"¸sÂ3³á€¹Sëk9˜ l8ð°pÿï®GgOö·‹µm£¸õé]¸ð´02<éØH¶´C¥G°{p+ûcbh]w^óÁOcï¦Mˆuva^G;`bhWþö%¼÷µ{p7Þ€û1–‹aEßb íD¶Ðؼ}ºº{1|ç¯ð;g .=sR-ÍØµy+Rm혗jÀË»÷aÅâ^Œ¦¶öWÞxÛÓ/¢ã¸ð¢spýOnÄsÛ^Ä…ÿ4ž¾á ·ÌÃûÎ ¾û¥Oâ¥æSñÍÏœ_þ5¬<ô­xéGUý¼^xW]u.¾øb¬^½ºÜýòðØ}·âùm;qô©çaÓ#·c"»ž"»êè}÷™h܆ën¾ÇžvŸïnçƒ>ˆ›o¾ûØÇ0oÞ¼IŸ­”[@ˆHṞƳ»6£³©±ý#è<ûDˆ-8tå¡`f"°n ¥Á Aï⣰ÿ~¤ÓéÒùJÀxãvgö é¨&ÄþĘXÞƒ_zkÀăÌH§“X½b/›ûðâhRÍÍhë€dFÎ]¼ ‹ç7à°ÃÜ( "àè#{°cÇ^t¶eÐÒÚ†TªííÍÈfsH¥§¼& /õèOíò:y—¶@©èTEH3;®Ë+%W𪼀Vª(z½‚×]Os–˜UñGůn_ÉýR"Á–ˆ)@C"¦™QŠãhàÆ&‡²éRiK4ðtÃ(‚ Ñ£Ú¹;åYy-®ÕzšëAv‡ZТµ|Ií6¶b«öSi zB „nhÀ~­å´3”Œ$bxôw×à«_ÿ6ÆûŸÂyoy/þí“ïÆõ<ŠsN=?~ÿùøçïý|ß§qÏ/¿ŒïþüOx÷¥ŸÂ†§žÆ£¿ú>Îÿ_âõ'œ„Ýj¾÷SxtÃ.¤9çÒ‚{¯¿ ïyëi¸âº­øèºsðÁS?ñôþõs…S^ÿ×HïÚ…W¶m㿹 _øØÇqå÷¾„w|ô°aç^|îÒ ð©_ŒGŸz·Ýû„ö¶MìxßûÏïáåãÅ÷ëkG{z7^™ÈâéM#øÛ/^Œ›.»^AöÙçqûåßÅ“ÖJìàIÜ}ù·qÿþ8²ñMùµmüâ_Ç÷¼\ü¼… âꫯÆÂ… §í˺“NÁó/ b~÷N9ç°7>Œ€Ý[^@@cç$D+ÝòV¬Xßüæ7èêêšôyD€”RJpv7Žâío{Úœ›±iËs¸þößbuß*8ŽS\Î`¨5X²d 9ä¬ZµÊýY¹ ‡¾g-ZŸký8±ÈBÓÑ]˜×Õf¶r§ƒÈ8þøüJüúñÅH§Óxv{@` !n¡9±Ë–-ÇêÕ«±jÕ*¬\¹ oxÝÑ8ûÍë±î¸qì±ëqÄG ¯¯//ëï;†õf% ìÏŒ]ZÞÑ«xë¶¡wO’¾„c€JÇÞå`;ôÚpߟ-3äþ¸U›+ÿ^^µ9WüÉ9ùªÍ΄pd:ÿ“)þ¤J¤²”Hæ(g§…#sÂv2–û#,G’eKaIe ©áÈœ%eÎrœLÌq²1GfcŽÌÅ”²-)s1©l‹ÙŠå,+–³¤ÌÅ™‹ÙN6&eÎ’*'l'mÙ2K¶“![¦EA{Ýéz%¬¡‹~û¤ôÝ¥æõA*À¾šñ^RåÞDù{œÏÛ– tß-_Ç8ÀCI³À¯¾ãÛÅ¢CV⢷ÿVw[è>üTœy|~! D Û–`–p`ÃÉZ’8ü¤ÓðæcSh°8Žû·tέA*ñÅÿ¹Ÿ=ãìØ:Š/EÓàNüú߇X÷>,|øz(Û†-[ðtèxý;qÖWàñÛ¾€ï_õ{™HâÝïý'4Ç%‚è·ÆE+ð—ŸþËÒr ¿úúבknÇSWÝŒ¶†FŒ3hŽ'ät¯=Ç ó¨õXÚncýà0–v’ÿ€8Þóן)k£¹¹>ø š››§é ãÿ\ü1œpÁ»éïÆ wýÛkVn½ IDATšša÷ãÑ O`ìžgá4ô£ß^ìÙ9#ºÜ«žžÜyçSæ;Ž f@Z)úâ\›þ5Ÿ]‚ ÞÛïýáa|øÇ€DЯ%k0èCD“„gc² ÞµÛwoÇPÛÚ¹ï}ïkñ£ŸÞ‹áá4 ”ƒñôÉ!¨œBNÙ2‹†x·=…¥Kû°téR´µµ•µQmÈ`˜óøp™™$ ᪓ry+D¤R·6ÿ¾´IqÞåõTlÎ9Òup•$¦D~&f"T¸¼î#ÿ›eþÿL qE wnYG•úªX1+Aмú-Æ Jq© –T9*Ë®²KêÅO(´á`AnˆßÔçŒN.0í\`Ú¡us@7€v.°n(4_¡ÐƒØYì{i‘ÍWé³aSY¡ È#Lmm"'s–b%+!•´”P¬,vïZ¢¡¡A0X0³xd&ƒË~¸ lÃù§vá¡û·£ïØEèIμ۞yt'šV-@_›)PɆÛÑ·¸ ­n´Ãøh?ú‡&0A/2é šâŽÁ’iìÎ`ÉâùÀðh‹-BÿžíÈÈz.€0:2€ñ ‚nþìèÐLä--]p&ÆÁPhíLbÇ®464£­)†4Çð³koÆ;.<M¹! O }Á"´X9lÛ±½½ó‘Î0ZZô#,Ê`‰´Cª!…ñì„l@ª1Žô¸w¦hF¢)…=[‘·bag;ú÷lE,ÑŠ¶öv_MLLL`xx½½½Ø¹s'ÚÚÚÐÔÔˆ}Ûw"­ºçõbdÿ´Î_†e±kÏ>XñftµöŽ »Û¦üìM›6aåÊ•Ü|Þ¦*Æ]XcÛÖ˜·p18“A¼¹cÃChnv+0š‘èíö·Ã&NcóæÍ°mÝÝÝèééÁƧžÃOy6½2!ÜA"¢b±6ÕˆÆd}‹ûÑÕnã”S^5kÖÌÙiŽöísóð{zÜüýÁÁAlÚ´ ­­­ "¤Ói(É?xóio¿ˆAÄD¤„²m‡‰„"*fY’H(KÄ¥E–"¦,WÙtNY¢cVƒc‹b,Dœ-‘`K$8&Jy“q+9í¨˜¿‡ãÒ”5A*Bë„÷ð‘ T>ýë>äë†BiÃw(´»p¾ w_U½œò\^áy]Ìßõæò¢”Ë«HOQ«¢èåþáæï~ÀLJIQ¼Š3S¼ ¬ˆÁ¤”€+~½a DBÙ61± KZVƒ$Š©x,éÄcN<¦d.“äx¬YÅc pà-ÑÀˆ•Wƒ.¤–®Øœ”GZõ4®85àuûx¶Ý§}èï¼-ß8\`Ú¹Àn‹šÇ#@EèésÝ^L^) }Þ¶‚ä3#}÷_˜˜ñ†± –áÀcgqò){¥Ãcذ‰ÑÕ;Œ+ïÂòÞ$–¦%óî{‰±cbM©€sWÇñèK k›'Ð×6KQ˜‹âšZºÐÔâº)‰¸»¿Ü°¤Åg-­hÉ×_êš¿¸ìã¼€–öù¥D‚Té‹=!ÃÍþâýçå—éBs[ÁÍIbÉÒ¥î甞±|±qãFˆWU"#{w_ïÚ½{Ú¥ (¥ÐÛÛ À ݲeK™ƒ»u‹[ÈjhÌ[¥z ƒî«‘ý»ª~.3#‘(OeØ?<ï÷P¢¹Ã#ùpïQ²Ã\lÅç¦h0Ô©T +W®,N_DDX±z9>xé›ðÔÓ/≠۰{÷&†v¡1GCÂFOO] ÝÝÝX¾üP,_¾|ΊßR€^ùZÄ2Ôš‚à­6XàTº¼Þ¹y9ç©Òì½@ªÑ!7—Wä«5KR¬ŠË»¢—‰+sy¥"&.9½y 0+ẼLÌLR2!ÿ:opäÅ“+‰ˆ‰•°bÄDB Ą͖HÇŽÌX‚9ÙèH;ëíLˆ‚v7Æ®ìWD bÕ#s2:¬¡g£ Ö n¬Á´H®ÿõNôÌkĪmû0< ÛXæXˆapo­1qÕˆ?Kž}¦ã;ûqíãC·axÄž± Cý°víڃݴ··£Ý§s¬ËüÎVzU  †ƒMå Nkk+ÖvZZ[Ñ×·{öìÆèèbض " ™L¡³³ .Ä’%KŠóÂDýU„CA¬I.¯'z*Ñ[,`UiV6 NC›ó¬)I)Wôº•š ¬âp]_èõ¸»Š¥`f)0˜âqWä‚™3I¥D!ä *8¾EÁT˜ ³EDBÁBXPJB‚˜H@*[ vE¹"¥lÖœ”†Y +Bû:ÛÃè‡UÏU¨!|x9’£x>žDzlR­vì—8òø$Z„ƒ›7Ûxã1IXÍ óúb°;ZqÜ¢N\võæÆi0 ¡#‹aéÒ¥èêêÂòå}+V8O¥RhiiAss³q~«ÀЦ):ò[ÁŻΜin1]X³û÷\^8Šr—WÙä¼@ÉåU,©¹¤”,syï4EÈ àlqz"V2/t n®Ê‹cå†6Ç•p]`&©ò!Í^ÑËJx/®HΟ#x\`‹H(Ç‘BY ©f¶³RRåDŒ…Rì;Ý’]Êàd³KLƒ6.pô\àYÁ5ƨ–Ìl¸ÀÃp¸ 1m˜§)ÒoL¢}túN^ÑS?çæ®ý\g~‰6œèY~i;0òÒs¸÷%ào>{ŒNW"à8ÒL‘c0*‰D‰DÝÝÕgl°mŸåMCŒ” –í°¾Ù#ü.pF¦)6EœSQíXªÁr3[¨&zó‚×+€áŠ^Á pÑõõ°y¯RR¯[ÀŠK¡ÍÌÄR Pé=äÅoIðÓßþýçÖ~ø¡Ç-ï[ú¡»î¸çÿø_~¼°MŠ¡)˜]¸÷î:À–*&”j¦D2Kv6ưRÅ|沂Xa™ÉjìûÀÆW(ôp€Pèéßö >ò©Ÿá’3{ðã±Õ8gýz8»žÁQgÿ¹ò—XxøéxËm¸ì'âì?;ýÏá²ïéùoG|ÇNœrÉ[`üƒÉtt4ã•Wô¦¼2 ƒ>D¥X Vä» àºÀ¬³æ² .<õ¼¼ù¿+¯³;ùµd‡ÛÄ,*]Þ‚FΖù÷ Nn‚òEE °Ý÷=Õš;nÈ2ƒà†:çC›ó®òn®T%¡ë½îzîÿ æî¸ûÆ?ï]¸`]{{ÛºÑÑQlÞ¼Žã oŲã˜ùÉÒ3E R±˜‚ãÄÀ¬+%˜¤ãºÐRÙBfÅIe“ñðŽØxê6êÑ®¡6p„˜ÎÞõÜ#XqöYxû…}¸ò®…»ó»XpúO!bøÖÿù+¬ÿÁ§°ýö+p¹=Žîú=~þÏ—à+·IÄcæ4šŠÞÞŽƒÝƒÁ`0ê’éD¯TYrŸŸEþÿ…\ÞÂï‚Èõ„6[@c“$)U…Ëë ^÷=7´Ù-b•-8»¢Ç[Q±™K3ÅP(XEJ‹WC‰JÁ ¬˜@ ¯}ã«ëÖ­;긵k×|¨rc±¡”ÂêCù3fueáob&1ƒÙí‹ÄJ(¥Š!ÐBÅ„¥H1K(ž¢žK˜\à9*‚ áBë8\.ð(l>P®ë²ãÏÅÀ/þ÷ã‚ ÿ×ÿø;³0¼ù1Ü¿qæÏ_«!drT<†“ŽîÅ÷ÿ÷f4-x;nûùM8ö¢3l0 †p3Í´S¡˜´¼ã×ÖvÔ«æOž›7Gòb×+z«¹¼’%lÇux•â’Ë›¼P^ÀªÒÌ`‘wkÁPŰfáŠa!¥·hŠÙëò"ÙwÇÝ7ÿ93ÓÚÃ'‹ÞJ¹³d³YÄãq £°>P˜ ‚”`,ò}Š% åºÀŠQ õ·}n´#³Tm:$ƒÆ— ¬=f1"Ø0ûÄÛ—á‡Wü¿üö—`‘kñ“âß~~üùÅ×_¹1?>èYûÜÙé¤Á`0 ¯ÅZÕ­0;± Õ™®€U5Á[zm—ÄËj¬Š¢7k+róxݹx'ˆ—¹¼ùõ„7Ĺèö‚ ¬D¼¡äìš‹¢—Y0Pœ§—=¢·àò.\Ô{l{{ÛºjÛª”ÂÐÐl[bb"‹ææ$zzZ±lÙ2ìÚåNñ÷ÓŸýèÏÞwɇ®,®Df®QQü*+¡$+f‡˜›(™rÈÎ&XqUæF4.ðä~ÕI(t ¥io\`ÿ.ðNâÕŸéN&‡ñq·^òyؤ à~׎dK%Š{›`¼òì–Ö2ŧ6ݼ=g-0“Ñ ƒ¡î1.°ç§½¹BEå²ÿ— VÙ¥œ^Ï<½mÍ¥ÜÞJÑ[š¦H€¥"Ey—W±§Rsi𢂍7(*4»¡ÍŠ•(«ò `^3Ówßüç ¦j¡Íl[bûö~46&[hoo„È»o[¶ìEOO+lÛÆðð0ÚÚÚÐÕÝy {\à¼ìeS,¦„t,ffb(¶R9ÂbIÌ‚ ó¢E]àÿÏÞy‡ÉQYÿwoUušœg¤å,¡,!À`@&l°`ŒvíÅ»ëø­Ã¯wYã´kãƒ16cÀ‰$D”PÎa43šzº»êÞûýQf4’¦…ÂHêó<ýtªî¾Õ]]uO÷=çˆðé\ }ª"¶¿“{#H”¹ïª£kssfW±ic £§bï¦^æTØ,ß­9Q1*axuM+ó&DhjÒôµ‚…Ç+[û±¤ÇÙW7Pã־؅ֆ†J‹^ÛðÜKq‚!Íìʉ°C·ŒQ_[F±§»ÍÆí‰Òܧ±]S¾;Fñ¥'ú›yshmí9%ÜUóÈ#((R\9ÑÃÈã¨@›œÜ­ çdŽS¥úxàp1EÙÊnÚÌÊè¤W%É[6éõU^%´QÄ]#ŒÉ˜X¥H¯_ÞœSd´Ð(iÐÂh©¼>é5ÆïÛU*Õ»›"¸B£ýxéõɵÍSO?’6°j=S*¯Öþ6 ¥dìØÊ4éÍFAA€¢¢"ÊÊÊPJQRR2Çï!ÀW}Ù*p²?YúqJZù÷=¡µ%ŒQ(í )Æ’™Æ¶tt^>p\§ˆ <2HðñÈT€G2Fª üfûoµyóJ©AÒÞ¥b|:«À#‘¿YÔ”1½Hâ¤Òt5Å»t —/)ä¹ý¼ÿ¼Z^ÛëqÃÙH–\^ RñÌsMT…Š™w¹Íøº"ºzc¼¶ÝcT@rΕµ„ƒ‚ÚˆC±ÓI‡q˜ùþzITÌcÿÜ–ž]Æj»çŽaòh›e/ÆX|M1Áãö ä‘ÇøÉ§tÑuüåßs÷÷±ê/OÒÞ6 Ylñ×ý‚Ž@.šÄ–^‹¢X3åиýEö´$X4¦„5íŠKÏ=—V>‰©_Œ„rî3<ò8XkA.QÃ§Š |4HðaUÞDl[ÀÀÈ¢lÒ›*oN•ê*íPy®N*¹Ò«Ó1D®¯Êf‘ÞLI³٥̀Æ#|·dõóHz3.ζXöÌŸ©ò‚Oz»ºú_å­¯/GJɘ1G6ë)++cß¾}ÑØØ˜õŒÀ·Ã²m#”gaŒ‘Æhi;Zj¥µ‡”¶±µNÆAYFœ‘WOøøà¼|Š †2Á7Ñ lŠ‚Ú² &5Éîœ~¯ïù£2Ë—ÕÍÙ FQÙJ?^€“~ÊjS;sMó¶Óç Ž pù(_QY¼¤"ýè…çä=¥ó8ñp„äõÿFÉØ3h~án~òÌ6Î/{•ž}'Öì³ø·¼Þ×âÁí%ÌÕÏ3º`&ËVõS¾å.äeÿο};£Š?ÉOžÙÆÄ’6f±€"“ÛIº<òÈ#“‡"½ÞVFë´Ò›vlDz#*ÓÛ«ý˜¢´MzSV:©ì’"ºY¤×ÏâÕUÞá$Ë…¬ò’"½_ÿæ æÏŸ³àÐŽÍ ¬êë+¨¬[§q¾|Ýj:1lßÅ(M"¦‰õzxý;wõíuÙߞʈÓlÙÑÍS÷µïõðb¾ã¥QšæÆ~öw¸ìØÕlÜÅC*´èꈳco¾$8“®Ñ,9û\ú6¿J¿]Œ‚E)OñË|úƒçò¹[¯£¯¨œ¶Ž&ºz£hc(.+A!(¯*Aãa‡ÊB°tñ"òýàyä1² s>nê#èÎB gz–ÉlžÌy=„Èm\jXSFOÅDê2x=<© $cŠtB$¼>©´+Üx·p½¨t½~é©äEÇe(—¡p\‚Qéyqá)W$¼˜t½¸å)Ër•´”¶¥§¤å©¸¥TÂòTÂò”k)íZZ{–Ò ÛS ÛÓ [i×¶mײlײOÚ¶²”öl¥•­µJ_kåÙZkËei£-ã_ä“Ëÿò±'—ÿåcM­;W^{Ý5ߊüº®bûöš›»èìŒRZ¡¦¦„ñ㫇Uâ<D"Aöïï& ²wï^„ôõõñ/_úÜœ¡–O•A“R°µ–Æ(AF¡pÆ4 ‚D£q¤”LŸ>M›6!¥dêÔÉs€UƒÉnka„-´ÑR`„0B+#´ö¤14ÙeДäläUàÇ5K¡óÇ}÷ïν8$Žät°WOïIpAÆ4vÈfåÚú¼ÔE¸ì‚r¶ºQö¯ïiaú]ƒðèR óÈëQ>q™ï’9sZ }»c,XȚ×]´ÒÄ"æ—ÔpϽœs^žç1òQ=f ‘q3üJ'S9zròY¿Ößõ`ÚÜEé×#Pâ¿nâ”) âTŽžLåh ‡hv&SI¥7Û´*mb•Ez lñÔa ¬†Š)JXª“¬úÕ«ˆ‹±gŽ£²Ò72í|©Ætô2mÚ´7ÿc ¾¾8‘ˆŸ¬”¢¤´äÀèú€ý($ÿ{Ñø¹ÀžôãÙ}ÀF›R2qH)äUàÇ5Uà‘J‚O$FÞiÒˆ‘ªÛôàåÐ í críÒ‰wýpþÄ„º¨Î#TPÎ¥‹‹h­‰ï¿£¢MRú‡Ý¬lWÜzã8_½s Ý¿‡–n|t¯¾ÑÈ+Ëc,¾¤ŠíO¶ãÖ˜ÐãcS.âL˜^mݬÚãÝK ‰õÇùå=\rÉh¶?¾–›÷¿L޶c#BZ¼øç¿2iJ®\G×ó¯ÐmdÓ”R~ð¥¯Pë¡þºÿ`ý¯îb—ÛË¥·~‘Wïú*û:×rû’󸿝—ÓÕ·—¯üÛ­8?üÜ—y.1žëÞwW'JXöð¯yö¯/sÉ'¾ÈãŸÿ5Sø×/]Î/zŠm›ƒ\?Ã%Ö³ƒ'ï^džm›™rö_ÝÊÅg-À¬y‰ý-\wë—‰ˆDNëåÈ=º›Ïod^|ëß̘šËñÖ?NïèÅ,*‰±zG%ÚYñ³?ÓZáC×¼ ÏgoÍŸØ@$j¸|~5«¶ìb×»X0w2 æžÍo_mæ–},Të<òÈ#ƒá{O¡X¤áº6+í ™Vy3%ÍÙ„@'Ë–MRå-(0¾â›Ez}Â+¨¼-Bú °OÌÒeÍ©˜¢ô}-ýl^ÒùàQE°ì™'nNLÑž=mD"AÇSdŒáÿ}ñgDŒ@O1Õ…ýÔ”ºØ\Ú[Æ3÷Â9´¿ÒÊê;^ÁcXaæÌ™éòäcMnülDÁ"Jïè¥\>j?w¿°’ S&íë +<™]ò6÷ìâÇÛc|ö†vnÕ´=ó ËW¾ÀŠMqVþéYßµ3<»¶ƒ5‰Z¦Œi`ÿsñÄ«[øá/~H¨l­}¹ÍuÏ>ÄÊM.¯¼úg:öE¸æcŸCº›Y4ó<ʃ]<¸âQ‚Dã*Z·ßPŽñ£ÇÞàš‹æbŒF¨¬˘ê0މS>í,yQz†åŽ˜Gyä‘Ç›A¶cófVÇfOÇEʱٿ¸I·æ¨tUò“Z{"‰Ë‚B%”ŽK¥"ê—N¨_B1+áÅ,׳,WY–§¬Œc³NX®ŠÛ®ŠÛžŠÛJ%lÏYJ'lßÁÙwl¶lײm×Ûˆ:u IDATwlVžïÔ¬µå;7{¶6ÚÌ(Ëmi£­¯óŽEO.ìc·¬ù¿æ¶]+§Ï˜zÓ`ò«µ¦½½—ææ.¶oo`üøjjjJ(//DfMê¿ö_¿bûÖ];ý´té‹ÓXÄÚî·²uS//¿¶›ªÅ5Ô¾m4΂03gÎ$>º§ð•òÇÛÚÚMkkwºï]JImm-RJ æ ØšL98ƒâ´QB%K˵ÖÂ…Jþî©— Ò ú ÎÇigä\Ö-Ç×à(<ä”f๻¦çqjᨖ@çUàc_ <ô°O í\ÛÆk5EüýÂ2~úÃ|à–~ýÓ]”/¡f\€ Ó×õ÷,Ÿ|K-ÿñ“}¼mN) qÏÓQEÔN³XÜÇL­ðwKÚ°=a±tI-½;iÑа°”„`ãP¿¨œ%-‚]a*Æ¢Ât¨;ŠœßÌk­'i,°Ñ / /XŠÆð7íeýÞ^"U\ùŽs)© ñêyÇ4Åÿ=½‡úÜí¼ý±_ñÐÎvn½í_qx= IÐ$œQÜùÞi¬iÚŽp§àÙ%Üò®™4u…˜<§‚I·¼a¢,ž?•­Í¯qέï¦âŒ –ºu¬\QÆ7_M×¾•œ}ñÛ™uÞYLzÛw¸÷ñµ$Ãö•O­WÕ$¾úÏgÒ¾o ׯ°£1ÆO˜LÈ.dl<ÄüIïãÞ?¯DVÉu6³®½cM×Ó³y‡",lò—U­œ¿8Äê-[™zÖ–ß÷uJ&\@±çå óÈ#uD*°u©ÀSy…P¸Ê; ›×¿h\¥Œ+´ö„ÄWt‹Š|UÀõ4Ú(á„”0F ׋$M¦,ü<ÞxZåM)øY½ÒÊëõ݉ý¾U!,c„RZ’EÚTwSj3bÙ3ßlŒ‡3°ÊVyKK#ˆîPص»‰§_XϘ’vŠ¥`jeŒquå¸Eãh˜âɧÒô·íÔUCÙõ,ûÓüù‰gèöqëMó¨¯oÀ²Ž¬ÅËu=öíëL—bU†m|¯`0ˆçy!ð<ùÒçæ|õßÿk°4&Y-’eâF'ÁÒ*pD„ÂJ¸qO`ùqH–<~jðHB^>õT`a’6qG ¹F"åJ€œ0pDfX¹` ' ›·Ñ–K—d~ á‘-4J´(+/“žr-m”ÔZK¡m0Òϯ3Ò`d #1²½»}}NƒÎ#'¬[·—ººpº<)XR ŽRlGoeEEyâ<òÈã”Eoo‚H¤€ª*߃¢££ƒ­[·R\ìgx÷÷÷£5?ºäÂwþ`Âø–@B ¤ñ\O !´RKÐRXÚ’Ž’ÒÒ–°µ%ëOhKŒ%Z ÛXÂ6R:&àØÆ–“ÿã$c‚†B®ÆäR E€UÖ ™þ]Ù VÚúçæŒ•Hq…Ö:ed•$ Zh~Ù³Nõœ¦Ë›•ö$é^^#^GKƒ!UêìÿLRèéM¿ŸI–E' ¬ž~äæáÄeX•—ô{Ùñøš×53þƒ“©®öãŒ^[µ»ã~jœ-Ô–X0­Œ1u5‹øÍŠ3Ø×ÒN__/o;«—Æ–cŠˆ{™1c&LÈ© Z)MWWf¼–%)))@†Àôôô°cÇÇa×ÎÝ¿¼þÚ&û€…àoó-¤TZYJåY–ãÚ–ã*ÏQŽrNëØZ%âat •ckË ˜¶dpè?Ñ;’^à\ çjÈ¿ØÀæR }$c‚¬u¦äxøÿùÀË5)WìbŽ¿Å˜aÞˆpˆÔ$¿aîN%cèú…ÏGº V^>¶*°E7‡§¦!V¬½‡¦&›bbÄk‹¸ï¾}|ø£µt®sqp‰TX<úlå5EtÍ{øÏµòá›SzjV iñò“#O<ŸÙc+À(_cã[O"„@Ú£¯·ŸPA!»šö3®®¤% ®ÒXR¢•ÆSŽ@y.¶cííà †ÚÊ(ú{ãì]÷"Ñê9ÌWJMyžëµÚhãkì÷ji5A‚û^¤3xçÎ1†­+Þ þü¹Ñ #$R\×Ųã¬_ÝD‡evM‚f·†¶î.V¿°Ško¹–ö[°ÐÄ©¦¾¾ ó= É®/àYåØÕã°6ü‰æÑ—°pLÁŸîý1s.þe}ky½%ÈÙ g¡½<ÙÏ#ÓZkJJJ!°m›ÎŽ®còYJI줻*æ+#C¨ÀÙ„:5(¥ ½)ÂëÇŸÍ›$½F ­C¬d¯¯†xº§4•µ›¹í»8§zz?®È$³yI©’ie×K“àl•÷Îoݱ`~Ž1E)«Ã¡åÙ}ìi݇œ Øúâo PZZŠ4.ÆHz­©lí²i{#ÂÌA ìÒº/J‡¨¨.¥¤¸›+¯8‹¢¢"\×M;4)ÒëºÑh‚††ŠTÞÃÁ¶mÂá0ZkfÌœ~½1ür@’ñµ_ ™Âà÷k¿Xk“Ê\øeОÆW–ÇqC^μ(w8U2L\ G" ÎãÐPýýüì\ôþb #†µ¯·ÓýŒ¡ÐôR=ݦö¢zÊvíeÃr—‡ 1oŠCü´¬†6„´xùÏ ]Ä9óšQ|ê½·3÷}×ã­x”ÍmML2¥´Î>Ÿ¶×^âÒóÊè_ô Ö}î |êÇ7ñ¥/ý7ç~ì¿ÙõÓOÑXý6Þ3îYö:K/¹‚O~â|æú˸ù?¾Í?é..©ØAÃÛoæžß<Ì¿í“Üþ¯rñü8¯V\Æ%òþó÷¯ò¿¿øgO,9ü ‡^mãâëÎfó¯ÿÈ•ï}ýî¯Èù£QXÄßh¦gI#Ÿºù“4Ìý ckÙ^¨¹ùŸCy!æ,˜ÈO~ÿÑ}†‹?pöoÇ9ãËèÕ’± £¹ëW¿eñÒw‚§y‚yžOyQ˜µ›{¸léxV­~‚ý±yˆWWòôó̾æ}œ·`;ûúÙðj3Šl‹Ïgœ•AË#ÓÆjkkÓUnÆÚÛ:†ùjm†-+$¡<‰C»ÎÑ$Áî•÷À––lÒ«†¸­´—Q{µàÖœ2°J¸Ù±EZíX‘Š)J»5k‘m^5 g×7°J>ï_+Q{3¤wP6¯A‚-–½‰˜¢1c¢Z-Û„siˆ¹sçÒºy?Ÿ\ÇŒ‹Î`μ3_ù-½„ ãìm“̽„7ƒp¨ÐÔÖÖ¥c‚ÁC®ëzìÙÓNAAªûð*ï¡ ‰Çã8ŽCW×Ð'| FˆÌ ¿'8‡¤•ÔÚ“žBB@¨,×oKŒÒñ¡Uà|,Òã:MK¡G:N›¤SKŽ¡r+òЇý»,®|O•ôÒWæåW: 8¼¸oÍÁMÁãKlZ!°`#µÑÒC2Úÿ]Ãé>`-]aáÈœáB˜”³ö “èåqjc¤ªÀBø õàläû‡‡Ãàìà(Qáâ EhX=ÀÚwA”Ò`ç{€?Ö¯oDö7S5n F%ر»• ãFÓßÕÄ+k¶PWZF¤~"±}MŒWHk4D¢¹‰qsfðì²§3i¢·Q'aé(/½ø*µ£ÇP__4.¯¯ÛÄ´™³éؾY\ÀÆm»Y¸d!{Öl£aB/nÜÃùs'±bÅËL™s&Åá£SÇd[†–­dæYKèÞ·…­M½,˜?‡XëNvtjL©åùW^gLý, mM¤<Œl‘à•ç_%fIÎ\²˜——­`æ¢Ù¬[»†âº‰TÊ6ïM°xÉl„È`ÝÞV­ßËâ%sÙ¶q ã¦N¦»±‘¢QulYý"Ýqּɬ^ßȬɣý’ò<òÈã´ÁààÖÖÖê›1†Í›¶üèí¿{=À¶’BjK†ôpz€-0¶Û Ëò'p‡êÎF.*pŠô¥eÇAFÉU:!|œ!½Ù„׿VŸŽ(¡µÚ˜¤Êë›Yùc¨ò¦Ê™}šŠ*Ò"Ë‹ÁÙIæÏ2°¤òú1EÏþõƒáP¤÷H ¬rÅK¯ìåÕÕÛéèèæ]o¯§uCñþ8ÁU[gµñà£k‘B׳©)w˜9­˜¥žÍìÙ³7c`»Ãêå}3èèè ½½ÚÚZZ÷·®>sѹÿ˜y6µÍû}ÀÊ“JJ­,i»–å¸Z<Ë x'âáeú€#Ú²"é>`Û M€!ß <Ž~/0äû³_4¼~`‰Ó¿|Åg¢y< œhC¬¡0@9llŒ±¤Á:^óüSllêçm,RÇÿÈXë^Öí3΄¿<àHM°¡`€X|deE†â ŠŠ€,gËvО›“«óÁßÛo]Jµ0å9nyä‘©H€¦ò¦&dzy©¼Ir¢µ'°8(éMÞÉÕ&è;kŸà&?/It³ÉoÒÁ#´Ñ2èèt/oJÑM“ÝdO/ ¬|%8¥òŽUwØÒ棩òZköïßeYal6>ºž–‚VÌ_@GGËž~•ÎÎ(¶ìgòä1Lš4‰††„Gd`u´ày±X c Æ&O˜õ6¿²Ì°´R)%•ZIi{–e»J9®m…¼€v¶ðÜDH9vv¬°8Ú’‘ôv}ò’à<†Ó›Óbîû¹?§éiU9FE9-Ê¡t8…]ìÊyš&·Ì· ÃïMIA’[8®:]èØð8ÿ}ï Ôvñù¯ü„'–­æáŸ|Ÿöö&6íÝÁÃwÝ•#¥ÏR&XàG?ýqƒ°,B¡–ØŽƒeY8‡`0ˆP<õ‡åH þ÷w`Iã8ö€×Àq@ Ú¬üÓãôKÿ=HtòôSkxmùCìí3ƒ^wôÛ¿Žïýà{lÞÝM_w3o¬Ût¼ƒ_ýø{ÜsïŸéW;ä¹åÄ5’`0ˆ -Éßúw?ôŽèåáß?‡`ãÊt›–­/ó½ïŸæ®ÇÜ´ùE¾ÿÝŸ³eû¾÷ÝŸ²eiY@Z‚Ÿ\Ž´V/{7_ƒ•Gy¼i¨œÿJåZö7¨ÚEÅDê2xÙt&¯qdó&¼^©tB$TT&”ŸÍë©>驘ôtLznLx:.½¬lÞ@0&Á¸åz~&¯ÒŽô³y–§–ÒqK)×òRÙ¼Úµ<•°•vÓÛölËö,ÇVR-•V¶ŸÉ«l­½T&¯í'QhË-µÖÖSÏ<ññ'ŸyücÍí»_üе×ü`ÆŒidóº®b×®V¢Ñ8QJK#ÔÔ”0~|õ1'¿à—×ÔÔPYYI0ÄS/™Î¢…‹(**b̘1\ûÁ+¸ñ†+¸ñÆqÞyoŲŠH${÷¶S\¦²²˜ÊÊbÊÊ ùß«¿ßŸµ !øÂ¿|f΋¥Ë ýK²;Yº®µ'µ ŠPX‰”û·R‰åô'/Þ\.p®YÅ•‰|Ìä—Î~dà¾C rZqI#*G;U¡à»:,É¢ÇM$Ãa¶¿ågˆyÐѸº™³?sÍ¿{§–—ÐûôýŒ›\Í“/íãóW^ÌIÅ{B!¤Å‹þ+×ßö.¾ð­»ywuŒõ}M„&]ˆYõóç³æî—(š`ñ¾¿ûËŸ~™I ‚„]ÌË»:øÃWþŽ ÕgrëÔ"6ô47_>‡Ïüóó¯ÜÂ?üøi¦l]CŬîøÝÓÜxÍE<¿f =/|—H[ çtnaC´‰êIçpÕ¥çµõ’ÅS8cêf¶ìë¤ÜвqS ³gŽ#ÖÛÃÌ3/åÌ™•<ðàÃL Ù°¿•ñÓZøÑïÇ»¯¾‰Q•‚·\t#<õ(Ö®!Rdcc;»W½FdÑÔžEØÍlÞÛFMI–ma”B(®Ígn«àŽ5Ÿ½ý*~üøºž\Gý®§ãµ?²µk;Õoh¶ula²¶qä04yä‘G'®Š‰C©ÀUÞÌmO%#MÆÀê@•×ïéDZø”ŸÍôûxÚ$Ò*¯Ÿ;мʤK›}Çfmtº„9ãÚœ2SJÅeó¯m±ìÙÇn>R«H$w‘àXÀ², 2 JiöïRT²$õõH)r2Ü:V2³¶ çÏÒyÀ©"*Œ¶m„ò¬´Ro;Zj¥“}À*¹MxB›T°Ç›éÎb ß+c‡cnç•W‡#QnNË냨À.ü8·ž]ÇÒó¯åÒ¥oåK«y÷ÿ‹‰s/à³×½7§òÕ<²a0&Ê?~ˆË.8›­›ž%a×ìܱK¯z»ö ”ðʆ]¬Y»™=»Ù±·‰D´‘û#üöÎd놧IØ5„LÈB>qÕ *ÞrŸ¼î¼±öUºeø®7X·»‰Õ¶²xñcê!UÞ={Ú)*ʨ¦åå…G½¯÷ÍB)M{{/ÍÍlßÞ‚‚ñã«OˆÊ{8dà3Θy½IöX§ŒÆ²û±3ÑS&­+­¤Ò®ôËãý8$•<Ñ’ÇñA^>ô(|ÑðUàcÚœcÝ|*÷¬ØÃ.®TXÃê6ÆH02Zy¬ãƒuëö2n|Râ±~„åpl´ç¡¥… 9xžAíØÄ¡`Ïu±l‹X,Že§^çw=á C¬?† £=DZIÄ8ŽÄÓ[\ ÇÆu]<ïè©¡Æ  IÄcËÁ±±þFHB¡åÛ °%ñxœ`0H,Ö6‚P8Œb± C<–  öð´ àXÄb±Œ¬'€cÛh ò\<À$3ŽmËÁS.–å Un}ÇC¯¨æ¨…'xhÂÓce•2ÈÜ9ÍI -$¶uz„x¶uöŠDŽr°£¤´´%mm‰Npêól2¶ùOܵ9£ò¬*¯JG¹Be©ºìíÅ$c‰”(,ôUÔtL‘ %¯É(¼Â$ÕÝlóªÎÍÉ\ÞL¯¯9PÑMö¦#‹² ¬¥òBÆÀª¨(„”ò˜XM Ž):ž½¼oZkººº°m_jüéO~ñO_ûêIx`°§¤–Â7Â’Òò´r\Û zŽv/(ðâýAtŠ”%cY“ê¶“½î'g/0äû“Ëç¸MŸ¬½À©àSF€Ï5øTŠEòUàáoXZøa{ÙHtuó_wî…é!n»t®’„  ,ìÐ×ïáö+Úû`BÉ/ë9™ %lÜÐ|Œ?e蜿cc ³{¿…Õ½c@Ãàz‡ÈÏ ^&u¿€‘[ýı[4 oFR÷žè¡sØ¡É\ú !•†Ç- ±îœZœ=c ÌjßÅ_xgŒ£Wk¾:ã\æG"‡_ø8ÁÓ1aÔиÁŽÍ™œ^é“Ýñ‚ôfçó† tò1-ø¤W$Ék"ãØLVôD$½Z:#0†tY³Ieò&UAŸàŠ ÉS”«ÕÑŒý9ÚHÅi­éé‰õ˜¢c‰žžMÔÔTRZZH0D)…1æ€2è$’%ë¶0FK ´J íÇj™Lt§;rÍi±H6øÚc­ßÏý&¸ŠªœUà‘J‚O ƒ« %®¡¯©“ü×&>w}‹êxey;¯­ØÏeW6P__EàÔ[ûcŠÜ O@¨aþwRvÍ6lÛe¸hÚÙGñÄB"Ê‹TÛ¼;Šª îéce«Áméæ­oi »©`yUG‘Õ•@à"r4œ.¤ôÝ®¥-Øþzãf£ ´®ï¤hN9!÷`M GhDnÕS9}‚65̳ÙÇž‚⸈ûÂò ¤¥ëµnŠÏ¨åx­¾\cèó\2GX„ô#^Fâ°< âh¨éoÒÖ=¡:7¯ùÜ?d+šMlm4JIR®Ð#½)²›êãõ’=—þc›@¸@c´¯òº^(™Ék8ôfT\m”LÇi#ARê/#´ò]šÓÎI‚›‰,bÄÅMdǵ¶ö0jT¶mQYY|¢‡vX46vÒØ¸ƒ@ îîVÆŽMOO”ÒÒB<ÏC‚úúÑs’Ó}ãÿÆ‚}À#2ùÍZ+©´'-£’½âÞ ?Í@†‘ï>ríBã¸9è÷@˜\T`¡MÎ*ðˆ%ÁÃÀ)£dØÃä¢3ð_¡<ÃÛßUËY‹ÊùÞ/×1gŒdæÛÇóµ^áöïΣ&"¹ïÞFÎyKžç‘„`Åê]TOªgùª=\yFÍ­]¬Øíqþ„ža;vY)¢7ƨqTzš¢R›hZZ{((–¬ÜáòŽy•ØÀÚÝ<üp3×ýãL¸ÿ &/¨â•.ÉÒXŒGÖtqÝ%å<¶ªs¦ð×7:¹xa [Ö·Ñ Q*ûU^Ä«»¸h~ •'zC‚O¯¡zö ž^¶Žw½e û÷µ°rc‚sgUóü#¯bU×àtöR3£¯›•›\r~ÖI˜ÿ$mÃο|1ù"JgUQ>j [ŸFNAÆwBÁ8"¡­»wS5å\„¦ã…jaÇ7vÑðžBšÖZ”ïeÍ_ aa€©3uÄFy©Ý›i[ׄJØTœ=‰Dk/…Çпm ¢¤šPY€ž5k)\r&=ËWš9 'l¡£ b{¶`W֑سgô8œP‚ž mÏOï뛈Œ­¢ok E‹çânßAܵ]» l4¢¯«a<Á’‘Prxh< J‚%~QOÅ…)œS䦫«¼©üÞéM^ÿ±,Òkt–•ʘW%óyMV§ÁÇ1é’g¥ÉRyÓFV2=aN‘^ŒøÆ·ï¶Ê›RMO&•qV‡Ccc'7n °).ÓÐP‹ã0¦ €îî}}q"‘===ضMyyÙNÐÆ#"]ÊžÜüû¤ª´é>`)\aY©í\ᩘH•ADœÇiˆCªÀ¾ ‘Þó*ðð1rK¡|²®(aQ©ûÖ÷O¥'nã2ïŠÑT:,9«Š…çÖÉïsòÈÆpÖ´JÞÞ͸‰•¼øL{tëKxå©V¬Ùš¶öð®NJwD¹Ð 3÷-ÅlÚ +¶·byŠ© ¥t{PnÅybk‚…ÕìéNÐPP„Ò0}•’Ÿß·‰½hVn颰¾”ŸßÿûŒ¦¤Òfïê~JJ£L¹¸Š^jÆIèˆi*'¸/ÒÎZ0†?¯oeœq¼ðÇ}4êFÆMªå•ûw#ÞRJãê6^ÞÜLéúê8c'ÕÐë JìÊšC”‚`%ÑÖUì_ÿW¸à déb[vÒ¶ÿ)œÂ ÊÊq$\IÐ>¹ 084=÷K:: ©>ÿƒ4?ÒLqÅæG¶2ú¢šÁ‘Ù# R û£8AM´±—Þe+‘—K¼V³w;±Iá¼ ôüõ¢Í­Ä{U.@mÛŠ.¬B¶í w Ý/w™naÙ%ômÞA¢Í#X'ºí ”ª€½ûpJ@©@íl!Ú¸¹£º+ÎóêCV$mޝôÐÆÒ(_AÖ€A*•cÀ3 á¹€ˆPy³I¯N“ÛÌu¸À PyÁÊriNˆLo6áÕB-S„7»Ÿc„6cibìK+U^àiÒ{8•w߾޴jZWW†ãŒ\Õ4EzC!g€Ê{2 UÚÜÜÜ#X® IDATŽçõ2eÊxæÌ™‚É:ƒ–}»´4H__Œ‚‚’ôÜ^ÁÞsý{®úÀ/½}v’Lm;¾t*©P„ÂJ¸qO`e¶sKGê,¼ |šªÀ‡)…Î+À§1töÔK’> ìÛßDoo/mŽÃ¢E`Ø»©ég– xýÆÍ­L\yğ߇G‚–u G»´ÅB4ÔäÖN9„ h(1©6LãtxÛÔj¶¼ÑŒšVDQ± jf!¼s2n?-£‹C+Í¥%£36Âöu-x’·N¯À‰Æ(·µ³+¨. 0w‚ ¡v,g,ª%ÞÔƒgÙ7–Ù‹j‰7w²[‰¸”FxëÂ1Ä:»Ù§4GR2s´a ʨ¯Üˤ±E4-Ö\4gÛ^Ú†»¨’ÂrIõYe\rÃ"¦‹m/mÃSæ¤Üsm¨[üO‹"tNbê¨6²!%}›Iÿ?Â!MÂUè¶—qõÉN~A{A¦~ú³NïP¨HãÅwíÛi||Ù‰Þ!!Šª©yÏLdÛNúõ”M¨%‘ðpŠPÅx1A¸¼56FÙW¢Zva &T_{;(¿ò}¨m[q&T¡wnÂ+ž@ÑØ(½ ÆÞöa:WíGÖLÅ.Hà©fZ%¥—]€ˆw ˜ÌŸh$‰¥Z c´Ì›µöI/çìQ{I’ µ+nšðúeÈ®6JD Tò½t’ô†Ó*/xè¤qÕÀ¨¢¹Í¨½É˜¢ &SDVY3)ã*™‰,²Åò7S4RUÓÁV¥¥'¥Ê[R¡ªªœªªqéÿÆPÿ)%RJ,Ë"K*]¶^V 7C•AÛ£¥1Z¦·+£…Ò i¡Æ!¥0È…xªÀ#•çqâ0`SÌ«ÀÃÇ©¨§`Y¡Pˆ¢¢"ÚÛÛÃö5ÝL?³ E?¼·pA=Ï7rþGlö=Õ…WçðÁ+F±óÙ=üaM‚¹³Â<¿:ÆÌqEìÙØt±¤ä‚ËjXþ“fLÃU7Šõ¿oæ¥nÅœÍÝ>9]ò·í.·|tÜ 'G§^°åf_¬‚9•à%˜<Æ‚þ8Ó'”\¦·€Âq(Å”b Ø†X‚iJ8h˜_T8 ]hðOÎŒ*3Œ* Ac'A ¨³GgîO#€tÅEÅaª0ÿöÀ$/ÇFyÌj¨í2nF\—Is.”èL &ùœ{ŒTCEÂÕØÇòø®¡ß'*XôºéÚ·‰âqóÑÚ£/  xE<·”·aÃU—#êÍ ^„ðÜ ° À®÷Ž÷CŹKIã^`xÆWÞŽê‡E$ ±^(¨ÀÏ3°!˜š2”"€žjjékÚƒoÄèbÆW£T/¢~ÄÛ`t)ñ¸ µãC?a¬1aºšúµ àfÙàÅzÛ“·rûϹZ帎)ø`Ï&UT´ TyI å¿8y&ÙPÊRÚÆ$ûvS/ÒÆh"c`•"½ÂÊ*{˜˜Ð¾ •º¬ÙW{S¤×˜Ti³!UÒ¬‘Ù¥ÌR"„Áˆo}ç› æÎŸ½ðP*oŠô¦TÓ”Ê;R‘Ry]×#Mœ”VÑh”ŽŽÖê¼)¤H¯ã8æðJùóA˲ÒFX³fͼÞ~)²ÏÕ UŽCRBi%­C–A3  :á#¯G[>àë‰$8ã‹‚‚vìØ"!a%õ ­¨‘ ÏbÑ’b&zÝܽG± ÄWnïkîãÓ·Næ÷mãªë&°~ùŸQIÿÞæ]T†5Q¦×S2¶Oó›UL¨/B”8|ð¬rî{t#eÕU(Ö)°…hm˜7¯aÄöù)bêkXö©î¡ Ês‘H̰²øNnD1^þØÎ<îŸë’¹GáŒHÔVó©ëþáD㸠±)×¼ó¥Ð>±ÌÓ ?BÈWaÁ2ÚÄ ÐF !,c”' gR$7óZ•&¾…EÞÒ›"¼àúJsÚ¸Ê/òÍ«Ty FÈ”:§2w`9sVtQrüôsOÝRWW» d1Eƒ ¬Fªjz0•÷dÀPVUUµŒS MxÁWu-ËÂ:DÄY8ì°7…´µµ ù±S_ø—ÏÌÉÄ!e)ƒFc¤ÖZ¦N¬øU‘C”AçUà#ŒL|:à¤(¤;ÝUàÜñæTàX,ƨQ£°,+™'0¶á«wî䣟(¥§UQ4¿€1”°)XÀEÛhIï?~V-ÿóß;¸ú¦Q,ÿõN¦ž_CM@â–—a†¨›ãîeî-£y‡íð÷—Ws÷ò(õªùÓßösó{ÇñÓ?vcŸ"Sc ¶}*–u»8'ÅÞãÍÁ5~”•u*œ9 üã驸­ƒ‚`èDã¸@›X§þ Ƚ0Â`„0?xÐ˳úhý‰£A§'.)’Ü‘t‡–Â2^VD@JåMÝÏ&½ÆÄތʛ&´Æ–ª¼HoÊ´(ùÙÒû­ï|sÁ¼ùsŽU;ÿ`¤÷dŽ)ßÀjìØª“‚ôf«¼žç YXå¢ò €E_Ÿ‡”’‚‚‚qHV z`ÛFhe ?KÕ'`„òü>` ]Ç©„ÓAr ;Uà‘J‚OETUUðØ¥×åÒäín+I?>`baú~Ѩ>ýYÿù 7>ëüÉæèÒŸýA1¥u¾z8ñ̾x¦¿Ämïõë?ÿéò£²yœlH°öù5Ì:{Á€Gû÷oá?ÿ÷\vï:Ë7±üßÏ~Œê%fNa#w¯ÜŠÑüÓ çñ©ÏšŸýæ±1ø<òÈã$€ü)ŽÁ»²UàT1sjä“_m”” }3 •ÊÂmÀéÓè¤kW8Iz¿—W °Ðø1Eˆ! ¬d:§7©òfH0B©Ì}\ÙîͤÉ/ –?÷ä-Æ ¦Ï˜zÊÇ È6°’2‘VyWÚ<•w0<Ï# "¥$Ó×מ~<;)¹gâLrÛ~4Ÿ~/¹4Jcéd”V²Z£´'¬„¤žæUàákªÀ#•-œαÅñP\rm†;òæ²íÛ·ÓÙÙI8Æq&NœÈ£ì`[·à=W7PS}š÷|èƒ,ûÓ]¬Þ¥ ¼–›®»†_}ÿ4ëñìZ³sÖp4]Q=mkhöÀÞQJé˜ÙÔY}'zuòÈ#“ I×'’øLÀø„a„QÆ÷ŠòCtS¸°ÀÒ%E’9RH/IzcâIU6•ÇëIŸgÜ éõ‰0Bi“¥B“ééM«¼iÒ+Œ±ÅÓÏ?~ó¡J›‡2°;¶rD“ÞööÞS"¦èH ¬†KzµÖH)B UÕ"ˆCª¨(ŸvÁû™H,Lú$ Zû¹ÀZKa’ñtJû}ÀJÇ…%ƒÆSqa[˜ãM‚ó8½p´Tàƒ༠<|Œ\|d(..& …’&X7†·Ž³yé™fž[ÞIõœb–ÆX¶*Î[ί@mô¸ëÑ&Ï-&±¦…×:%øp%?þUÿòÅ©Tžúí¢y!ìHõU6w¶ÑÒÔB8#‹aÅ}“ªÊªbæ4,bù]ßãÖ[®Å1­LZr5ßÿÅ_˜7­Eoýyñ[Äbï§©­‡~WvNލ‰·ñ£oý„¥7ý=“*"oç‡ßù9±Â:>yãÅ|ïë¿äÒŒèËó§µ»¸æ†›üåN2<øóï°¥Iñ‘ÛÞÇÏïú5åãrãÕK<÷Á·ŸÍýË^ «Cqý¥oáÁ•ÏR3n!ºâ¼<úáÁíïáûÆù×|’ ÝÃO¿Âû/9ŸŸûZ¢•Üöù)ž[ö,Ï¿ô,×ßz;}ÿ;t˜Bnú‡óÀwÿŽP%ÿø÷™g¦“Ûfa·ô~ømÿöGÞ÷ÝÿG>rËGÓã~â¡ßP\5ž¾¦¼¼©w|øc̨-¤{ë¾óÌ.Îî¤xþ{Y8õÀj£cŽ´ÑO] Ð")ChcŒ/ö „4­µ˜@È'ÀàèzJûò®€B)F“ì¼5ñ¤{³ ãÜœ"³¾Ú‹ðKLS¥ÍÙ¤W-a`<‘I{Oû¤÷›ßùæ‚yóç,<œÊ;TLÑHÅPV'£Ê;œ˜¢lÛF‘¾²U^Û>ôÞ¢ªªˆÖÖ> JÒ';Œ1<ðû{¯¿úqH"m‚¥¥‡¤µï¡°ÒnÜZºB©Ä3¬¼ |È‘p*ªÀoŠ'1"³y-™ œH$hii¡¬¬,½C.­R×dÛSTׄ),°ˆ*–<%p’òÁPÕP§Þ`KGœ†ò žkÀù½9yœ ‡÷ÝòÞ—~à<.ÊzúªÛþ €¿{çùÉå+YúŽKYúŽKÓËÜô¶{øé#«õh*¶ox™—v´òÚwÁÿ}ùVºw¾ÆC·SÙ»…µçT°ò¥ÇØà…)îz² Ëßý?øò­'zØ9ãÝ7|œºúb¾ÏðtS‚Q¯<ÁµW/%õÜèÏ}Šºå÷“˜r%ãÏ\ÌÔí«ùÛ£+xßçq2œ?sÂE¬zâ·œqÕ'©-,â¡¿.çý—œÏ ·}Œ\ó~v´|€YÕa¶Æcl}fÛ®ìã’w_Ä¿ýnvîv¹æCòÈÖê{PNm›=[hYZ¼½™Ûoýþͯ¹>I€7>òîøùKÜr­â½W}„õŸ¾–—_ÚÁŒwÎ"ºg=;^Z‹+ö1¾x.ÿú™çÆK-ÚÇ}”^6븬G’„ƒO6“Bés_4H08A£…ÐR ŒRFH)µÒa„§'ýBx™œö•4­•ôɰ`P•îåEKƒA©L¯1ƒHï@3+ç°*/ø¤·«Ë¯„9™cŠN‰Ê ¹—6^åžç%#ôïÓ0¦>K>T’L°ù}À)s6ï?R¾:‘Ckó*ððq¼TàÜ‘; ®««£®®nÀcç_0 €+&U¤Û²¦•}Aþ?{çGyvýßÌlÑjÕ{³ªÕ,ËMn¸°ÁƘfJ BK€É›|7!¡äMB Ô! „¶Á7Ü›Üd«÷^VÚ>åûcµkÉ–-ÉUë²%í”}fvΜû>güœH" sŽÚO0sú°ßþ¼‚ΠðÇ£Þ?œ{Pcÿ tþ¶O‰òÏ#~Â%ÄZWNY™ óú­[·q?δ4ƒºy÷ã|¢â™?Î0ž³Øwb ™F´ÑMEs;)ÑÑ€M¯bέyƒn?Ê+jHMé Ô¼· I±ô½p4VR^*>'igŠJMQ3ÍÊ™rí,ö¼º‰q·ÎÁtÊ£’Ò²—²)—_ @S‡µÖŽÃ¿‹¨¤,’Æ$pñuWáß`æßÿÞÀõ\}–Gx: ðçïÞÀNk$±µ Ъå4âÖÀ YfiËçoÿ*â“Mâ_þ‹ÚÊfZÚ»ÎLâÓ@Gõ>¶Ôµv3q“(Ü»‹Êv+]q!¶˜I¸:[ *¹¥Mµ`í(à±7b¯náiüá‡?æÑ·7œëiÞ¿M§µívß÷{7¯âpm [÷Õ°å©'¸ã‘ïnZ‹ ÀÛ¿ÿ/mjäµ ) ÁQÙdcÃ*™Yý‘žŸ8«†K‚¦i‚ ôiÖÐPuzMôX@{nÂUUAPAðÜ0«Ñ£ š É½eÑ€ h¢ài=7Éš ©2«ïÓÏ{¤´/ îGx=Û{HïS½V'Ry2°Šˆ:ó¿Å“ÄùSä5°7.]ŸD„Óe`¥( F£EQ0›ÍƒoÐ »ÝŽ^ïWöàÀÀ@š¦Ú§Ø7øãTM5M¼yØªÊ âœ‚N2~].Ûg£*ðU{‚…¡„ÍŸi<ÜH¤á``X8)3¬á``H¸…ß~»èܸYpãUTAíý ÝŠ[R5UTUUT5UR5DMÓ$Oi—&ŒFQÓ4QÓ4±ÓÒ^tôûY,Ÿ[ $I™貫„ê±VvУéiÕ讇IKCŽÞ|}PPPKNNhÞü+ºX:;€Í[JX²t<¼|€9“ÑÙ¹Ýn‘ŸÜ~²Û‰³³säx¶oøcW<8¼(“`ƒ½»‹§Ÿ|žä¹K¸rþä3Ÿe:Ün·ïCw;¯­ÜÃå“M¬ÛRIGO+ó/¼‰Òw H˃Mu5\vñ|õ µF6ïþ7‰YËX07º»Øgqâïì!=/‰Òbb÷׸éÊy<÷ѬݹàΣ۾“³™k®ºŒª Ñ'i|±}5)‹«oâÃõ[¹`Ö Dgv°þ½íÌ^²”üO?Â?‘™‰F¾,´sa¤™/;736ñZÂ\Nv¯æp¨ŽÜötÆ_7‘OÖ~Lúô‹™‘›ê›§·'ë|‡ÝnÇd:ÛÎ ¾Isu8ÃR¾Î¨«kÁ`0é!€­­­¾(?ð“¢Ââ—–^råKB¯i´^ï©ú@“eYõÜ ¡ ‚  4AUQTAp¹Üš€ !x‰ƒ·wAÐDAÀ ×¼$US”1÷!xœ‡ú©¼6¯;ï ¬¼½¼_ Sd6›«îzq²*¯$IC*möB–=yÙn·û¸×4E‘io·DKK‹ïzðÊ˯=ðxo’Ð{ ª ˆª¢ˆŠ(¨Š(J²$êܪbpë$£¬Óe£>À­Ó)ŠÛé¯õŠ$ê5I2hž8$8B€ûÏa@øØÕú¬?ü¿éáÎcÔ€‡ë¨y SÏ܇X48 †¾“n$Òp °ç݆y,NâvbìÅÑEűaëC¶qÅ|›·‡õ´(’á÷ 8¬õýþ C5ÕÃ~êe¦æ¤;‰¹£ÓC[[ÕÕÕôôôP[[‹ ‡ëë@s²aU=6‹ƒŽF ‡¬oà•wèî²ñÒ‡=ºóôvow6Y¸ñ{ËÈÏo¤µ²’ýC˜à—D{Q!{‚3¸ç¦kÐé˜#sù÷³/`HŸI}A# E ˆf3F½Ñ?œý¿ŸsÕ9"¿Ç@F\@Ÿ¬o@ ˦ÃÒÁæ*0¢ñÜg«io¬£¶¾ ¥§ƒ¦¡áI,˜›ÀË+ߤªº‚9 ²¹ëG¿fîìÖåw²så~>+.â‡ß½™qÓ.ãÂxÞ´‹ºŠºeh+l¡£¶›é}£­m]*?ùî5e;ΦBõ!8:ÛÉɸ†xso–w29ì ¬,¿ég8ÛöÑTÚŒÈ8~pãrœ¢wÖ¾GSÒºŠ“ú5´:ÈÞŠv\Î#Ï4w7‡¢®©£ßº.K•–ÞŸTÚ;­8]Ç—µÒìÛ¥JÕÚÞïÝTå×c³øa]ñW±sE;Nk3–ö¹Â¨”8ŠƒÃҨ¬í}X©¹)/9Ds[Çqöv,ª‹ é°vÝ®.ªò›}ËjTaµõ}x¨²{Í–SœÑ‰±vÕW¨Ðçøj¸{ûÔQì`±9pX»(>\׻ނ­Ë‰*»qÚz¨ÎoÂfuöÛoAþ~d· €ÚÒ::,½ûÄMÕžþÇ×ÝÓÀ%glŽ}±vÕFT·•Ë=ïítôû$qÛl(@UE ]Gü)lV(vÚ:,¾×4‡…CȽ¥Åµù•>G —¥ƒæªl¶#ûhÝ·…êÆ“7r<´ÞOI§‰’¤‰ª¦Iš¦Šj¯É”ª‰¢¦I¢¦I’ª©žeš*©ª¢STERUY§h²NUe¢Ê:UU$MS$$ëtzY§ÓÉ:E“%U“%EU$US%EStªÚûϳOɳOUzò/ON[¿ií÷KÊ Ÿoj¯ß™•yçÑäWUUÚÛ{hjꢢÂs¤¤DLXXÀˆ#¿Šâok«…ÖV ==Âñ÷7’˜qÖȯÅb§¼¼‰üüá]Óëë;ÉÏ?ÄÎûik«c̘ÂÈÎNÇßßÿ¸*¯N§Ãd2áïïÁ`”üªªêëý5›Í˜L& àä×n·#˲¯ÄÙû¾Çƒ$é°X<׃áHÔ]ÞÔ)û®§yíÐ{ÏÐ Þžy½^UM=*°"x²­=qH'ì(F$„¾ÊÿPÖW‡/ê+ì@Ôá_ó…AIöñca‡tÕŠJ|ª‰$ø›ŠˆˆÜn7²,¢Dz€Êæ­­ôèÍtÙ<‡Ê$ØøÛZ ®F;‡ë„ºUNâù@‡•œ†?šfÀ”–EÚ˜`¢&Æ1!‡)Žrþþæý¶²F†29.9¾œÝ~=ôµ>G˜"9>5ƒ€ˆ(²»ñ‹Kbâ„H¢&ÆqÇÂH¢™1I¼´.ŸÈä@’SŽÄcݺôRŒ†p¶l©âÕçǶMUŒËɼ(—ùã²ùë˯“íbM¥™»ò’0êã0è rb ac¢ Ò—ÇŒ¿¹›ˆ¤t‚F‹ŸJh㾂…ñ|wÒJ¬SÈ‹ HHI$>+}p }}%ɹQÜ|éÅd‘1øø=>ܱ‘I)aüúÿŽøŠ´ïý+ëJšé춃lgOe Jwå-𯻝=ʪõ(Ûñ>÷ýé_tVóôÓÏÐé‚w_{”õë÷ñYÁ.*k (*Ý…(ˆ”ø”-ùõ¨r¿üÉÙ×nçÍgžf{q®îvj÷UÒVv˜ç_x‡øŒÖo;|JÇw $9¾¤¦¨‚Æê½|°ÁCÊ‹^û”¢† Zj¾äÓûhíèÀÑVú/7SÝÖÀžû­ÝXùÛcðùúRêöoc{q5eû?ቧßÀ l-Ìgíê•t´±nk¨k?|†7>Ø‚Nyö?§»«Ž§œ:›H¨¿ Co)º ߦ#"kã!þ½çø~ùîˬÛâ9.=­ÔÔVðúÛ[øàÝO(=°½÷c·uÏîÃV{˜½_Öâì.æÉÞgýGÏòÏ÷7£tíç`›ÌV®”uJhšƒ<÷[òëÑTÏñ]½n;O¿ü/0ÇRV}øŒ—…w¾M{D&o½½†ºê>ýü zèI¼ÔW'¿ÿßÇèVn*ç£ÕŸõÎWfã'kxç¯ïPSQÀo~ó[ÚÝPUø=îÞü¢{k=Nµã<òõ7= ¹íçOóÕ†M¼ùé"&ÎbÏÆÕgdn½†T’¦i¢'?WUM”4Mêý§J¾åòë#®ªvä«¢):NÑéôž¯*ª¤¨nIÑɳþÒë%¼½û”žúËSÓ6l^ûýæŽú7~ûú¿g˼ãè¾^·[¡ºº›ÍImm;!!þDG“’5"¬ÜnÙ7Þººv‚‚LDDDhhÀY!½N§›ÖV Íìß_EIIVÔAnLº»W²qã݈֮ªv“”CjjK2ÈYâùî'·ßÒûÚ‘œçÄsÛŒ#kGΘìûùGw~€€q÷ú^O¹4Ã÷}\d.KŽïmã? Ü=]üøWÿCx¼§ê†ì#ï“3ÑûéÌì3ÚûÈt®£‡øúIÌŸï{58c®PàГ36ŽŠÕ_áNŒ :5žêâB*ÛÇ2i‚ÍÁËÓyþ…§ˆHŠâÐŽuTvŒ%#yrÌRêöðY­­'êÊè l#mZeï[XrÝX¶}A¥êOÛæmä.šDÙWåè¢ZXxË-øÙà¥í0'ý$ç6ð|‹Þ‹cƃ3Øÿa c'DàžMÃÊ͈\Ÿå öí8ÄÔÜDª«K×6‡)…¯î ¥½“ÛüÛþ°™gš7ŸE¤ŸÂä$í¥‰N_N®y?}n'wÿ| ûžüÏ_0¦qé²´­z› ëtø•ùQeט”‘NWK®¶pn\:‘À€]4m-¥cñ|‚Å¡¶Á Ge±7úÈ“`$‚ÇðÕã*žFHO½£&h=š¦ëýìMÕzWFèýðC´ÞRg4O+%šƒX Sôu3°:1E‹în;==º»íýh_.ZSÓÆ˜1G!iÖ¥úI|²ú-.¸p-j IÕ¨ok'°9”BB¤“ns ~z ¡:]»ëHŽõ'8;‹¦mëhÓ§3-/á„ãîÖæ/>%yl=SÈ ÷cóÍ„tHœ•GkWñ&3…»K™xA&²µ“¦'ñ¡nÖ7‡¢¯)ÿ«–R— MI'=ÞI\V""Ümí¨3rÉÂP|QÑÉÅi¯« dj&µ¥ˆT‚év;Ñim$Κ‹¥±œŠMˆ¿à"ÆÄ :öáεõÐfÖ–XqÅLJ‹ŠIÏÊD¶uÒÜæ ¢£Œôø Ã(ÙSÆÄ™4o'6s`¥ä«N’r ´6+8›lÈö‚.˜B]i>:g0gf‚µ’wÔrah='¡ ‰”U$°9ŒLprIaê:¬ìXyå·/¸UmœL°g¾"+®¸[Í. “1t&.3‹íû73{Âlê ÎÎÆ äïÜÎäi3•ÒÂÃj͉Ì]Áž•f¤0>#†ÒúJZ;êˆéˆF@”ÛJI‡@¸(ÒÚj cVB{3ÍM•K,¾,wXãJð_½rÙŠWûo)h‚€&ËŠ†—Ò ¢&€¦Ó ªO¹Ðd·¬á QòЭ×J¨ß“_A|òé'óò¦NÎÌÀª¶¶}4¦h˜°Xì´µuÓÝmÇåRÊ­iP?¨úÄùûÞËë½þŸ©˜¢¾ÛôÅP·óúµ(Š‚^¯?n9¼¦©47wLWW¢(¢iû÷x݇äiD÷ô· ‚¨xú€U$Y’tnI2¸UÅ ëu&·^g’zAv9Mª^ç§ê%uà>`í>¹1Á™ï†o^?°·x”#‘¸p ‹£!j0 î®m¥ô°‘Hz°¥G°gwÍ5ñÖ§.¾}$‡‹$gÐÝd'0ÂÓh¬Ñ0J€àß½ƒÔÉuW} gD< eÜpÛålül;q!ºLÑ4­²`VÛh‹laokwüô×$ö¾ÍþMkxý?³äšûp|þ)jöD¬‡«‰Š€ÄlÆgRýé~>Üýaq¡,6OǸ&»ùà‹M,š>¥+®;ášçP °¦ºq¸LÆ‘õÛe·a0 ž<\RèpÊøÂ\U·æ6+Q1§ÅÉÜa³âç?4·Ô“1Á ÆYšâFV@oú¹w²&Xçr¾²ÍŠào2É÷b(xÿ¾¯]¹|Åkh}«à¹ñ÷ôT >¬Þ…šàÃTpËr/IèÕ={F@ÐÖo^W|\ì¯Ê;Ð=Ó×ÑÀª¯Ê|öcŠœN7ÝÝvZ[»ééq ù^T’$šjʨ›EsGå™9ü™nœƒl7’ ¬‚ËåB§Ó!Ëò°œ¥KK;6–ŽŽßÛÛÚ÷MŸ6÷~ï:tQTAEQTIÔ¹u’Þ-ËzE¯ósôþnƒ^ÝNÕ ÷WNL€á|$Á£xè‰xXw/£±HCÇÙ*…>~à! *ï܈ˆƒKoÒõ8¼×BK‡Ž÷Ÿ/âݽ K. ¥»ÚÂ¥7g16|dÝäbäcJfõr$’BdÔ,µž¾ÔÉzî~#/þîÿýÿ£!0‹;&Q¶¶]Ÿ?×-‡öž˜€ät`œŠÓÜ„> ‘„„6ºã4^{ãy‚Åñ¤Å˜1Äf vʨ„§„mÂqfD¢Ó¬T ù=œ ùõ&bbNÁ*ù=Yœkò HzΖ@x.ç«;ƒÇRUUQÓ´¾w±xDLM%MS=wæ"* ¢!h¢&€¦j½ÊÁžøã”¼©S&ÇÅÇM ì-==êýމ)òÆþíÚIØÔi§4EQ‘¤ÓG ½*¯·;$Ä|NbŠ,»Ï@«¯Ê{¢{PA±uwÒ ©7™¨3èèš=ÁÏ@KSz[d#yZ |®cІÒËÛW¬ò޳o?ï@PUÕ÷Ïc´åY¿_RØãµ›ÌQŒbçTUEQë÷AÕ< nos¢¦y’5Xê«òzÇ:x¯R££¢‚ii±„ÝnÇÏÏAx÷½7oñ–Aƒ·¤AóýÓzM°<ÿTMUU5-@0™ÁíT$P—ž>à~œJ/°Ã%œÇ¨[GšÇ×–bD²˜QøÌb ½Ÿì}8&’©ñ H’(’’ê&"\ONFí-2æ =Yiᇠ¯ôõ› Ap:œ#õ³ EQP”ãÛËŸ/PAFt‰âé‚,Ë8Ão÷ø:â›4W¯‘á7êb4¼.Ð^Ãoù²††¦iZ臘*>øÐ¤iÓ§NLL31<"|â@×UUéê²û‚à`jê%q-­ul[¿‰„Ø4ì•í$g§³¦â0÷ß¼Œ.!vÐ1»d»ÃŸQÃéÆ?@âЮ͌Ÿ<›>Zå•$qDX &²H’Dsm…‘‘ÔÒ5{®Î.bÛ·CY)³£Ñ‡MÀ¹®µr íÎ'Mu’.(uÆ!ʾVÃUy6°JYt_«áª¼à¨ôzýqçæCŠŒ Âd2ùTeáh5Oóè¿Þ8$EÖy]¡E½^E§zãTßW· ¡?ÏîtÎg|“U`NŠŸ/¥Ð£8AЉàuõ‹÷Üà@Ï׈HÏEXgÔ8]GÞŽ‚%¿Æ…=KGO4MÃh~ÿÝHÇÉôbdCÓ´“êý:â›4Wà3WQü¡¶ª©¢¦i’ xûå¼(5UÓÐøé¹ÓgLÏ£*ðÉŒ ¾¹¥Ðg#R>[UFAAmmm£( S¦Lä£g«Y~O "ûw¶Ò©3²}u ‹o»Ä±LM7¡:¼ÿa' ®ŒdËç­äN £©°)†Z'- £dS;A&r&éÑ…I¼ÿJ= §»xu¿_,eÍ–®¾|ø9Ï£Å(F1ŠQœšª  ‰š'®¨7IÒ^yí…ëÇ$ŽŒŠ?ñ]_•W$IG||K‰‰|¾æcrÒÒhh(¯ÙGpc7ó&M")"mÆX¿PÈL;¤·µµ•¬¬,ˆÅjwbÔ‰„¥†Ð¾?š±7ÿ–ÌÉþtõ8°ÚD„œ]~´UHȹ1°ò–5Ÿ(¦èh£ò&Žc‚ªDí»?ÂRPö}PŸIÔ-W}ëµäu´1.ÈLFŒJ„^bë¾dLÌA9*¿TUUßñ)1E'B_•ðõ+ƒ*Ù^r.Ë2~~~›ii±@[[~~~ˆ¢È/úùÄÇýÃÞ޾qHžzÕ‹¤if38í² Hb¿2èû€‡H‚G1 Δ ìÁIàóE>_HðéDbb"ÝÝÝ„††öc£És‘uªJ+8$™Üœ@¢Ú›xä ™¼ñ2SÓM<±²ŠŸ]7–÷>­`ÜìTön¬%Á/ûŽf. æÐšºK‚“›iÇ«¯Ô6&ˆfUâÒ Á<õ|!áÑQ850Ž^G1ŠQŒb§jo ô]ßû^NÞÔÉ9Sò¦\çUx2°²X¨ª†Ãá&!!ƒAGßõwoÚHXxñ¦lÊz‚رêßüÏï@Æ^ð#Á/tÀ±á‰e‹ˆˆ ¨ðYÙãXµjUUUÜsÏ=Øl6¢Ã‚°Z­¨ªÀ’EóT ÉOGdØò;Êûu5°*ˆŽBHMêçÛY…‚¬>0ƒ¤ï,ÁXÛÈ„„hfinÒ±¡„ù³òÕ¿2óöñ‹|ß¹–?ýìy~ü§¿!ôiÙñ<Äð(Á'k`5\•<Äu¨*o_óªáª¼Þœ_8Öh+ À«Õƒd6›}ãË›:e"°·ï~4´^â« :AÓTDAoÐUñ¨ÀªfTUTMAÑÜ‚ˆtzÊ GUàcÇõ UÏ þF+Àç„jºÇÛfàõqqq¾ì;@¯ñØUÜ~_(Ý-n¦ø“(Sl4³(µæÞô»gÅðÇßWqÍ]ñløWÙ £‰1ˆ¸ÃCÑú;ÖÁ»Ï×1é®x–éôÜ{Yÿ^ocLZ ÙÂ]צðòÎò«3(¼ùôSÔù‡sûw¾Mˆ¡ïI¬²qÕ‡$EÏ"ij´ïÕîšÃ˜zqÒ°ßïóg6³èÞÙØë+xó³í$fçrÑŒœÓ0“QŒâä±ñ£7ØZjáúÅy¼÷åfsç±â©€“w^z•ªÎ.¾ÿÀm¼ò§‰Í[ÌŠ §ðö«Ïc‰ÌäöËžëá n›…wÞ~•…7üžüõ|°¾œïÿâ6Ú ¿bkµÂ —,`ÛŽulÚ¸ƒÙ—Þ@¼TÍ–Þe¿ôŽ˜l®]¶àœÎãDøì£q°'€Ÿ\=‡þò RætÒÔ vngéÍw’ˆæhã…¿¼BæìhÍý–YÊ𗯪˜e¨"(ï:¦fžýJŸØØ¸ñÛvn½n ó*YVhll' À„Ѩ'44ÎCzó·7u.û6®¥¶Æ=x,åä°¶¸ñ[HK½™¿{«‰²,SZZJVV!F ».”–MkrÒ)mh +{—]v6› €––’’’U›S!6"¤ßþ¼V~~úsªòžŒU¿˜¢®&JSÐG†àìp`ô÷;&´¢‰‹;‰I¤ nÂ’ÃQQ(Ú²“ËËYvËM”Tíaó®üîo/ÒÐãæ¢úX•Õ»I‹ûzX UåõâDJ¶ ˆx±²,ûÔè„„x´&ôvkžh4A§Pd Mða)¢ª*¢&ª‚¦)‚Úkâ18¾†¥Ð£8ï0¬àw0š ú’±Sfsñ´¬Ó>¯Ñàóg,÷Un$óÒGyûÖxÞ¬œÌãÍg挻غýŸ½ÕvÿïÖ+˜5)’‰?¥ä/7rï ×q÷«›¹÷wrãeóOûÎÄ\]ÜzÍÅüꃃ¤(vþòäÉXþ‰ ÿáÚyó¿ö¬¨Ù¹öª«ùý++éØòlï²ûY:ïjÇ^És¯Ü{Ú|àäs€FÓ¶¸ð×Ïqïwîe¼®˜u ShþôQžxg¥Þà­üyðJ6¾õGÖ5Nåê™m¤_ÖoYã†wXþà Ĉ®yð5Þ{K‘[~ô[²Nýx %¸»»«Õê»ñ×4ž—OåÃ`𠵕Ƒʓ¿zˆ‡þügÂu|¾¹‘–Ž&g¦3eZ Fsˆo_G“jA|*o}}=&LÀjµ"ºÚxíÅ??ý‡ˆmV2¢dvb$Y«#kú"ÂüD_I4àS‰a`«s‘Í{<•÷D8&¦ÈÏHWT N·€.R¢ñ•ÑMJ‚’j¢/_Ž „i i‚ÂlÁMºNÀÝ«ÞöEuÑ6þ÷ÉUxñU´žnJj#oLÁÑTAqÆî¾0QÔa0ÈÜzÛ/ÙùÖ?°&Oãóf u,¼ü>":÷ÒÁ+o~ÉÕw,c纚õ­Lñï-ËŠMæûß»ý\Mz£8] o<¼„?ýîQÜ#OÜq+÷>úßõ¡jÝ[4Íe¾Ô„ê–‘U,¿÷qv<±ˆ /-&æìzõœü‚cH AÒƒÉèäpS(÷çE —g£Û¼Ù·Þæ·^%vÎwH “°ë]æhGŸ7›¦ _ s/#ñÑ’ÍÚÆŠEwÓôÙÿ1ÿ¹5Œ}ëuÞ­´ãì¬æÿžÿÇ_{—ýv3ëÚ{¨yýuvnk&1a‚ošÂüE73‘ýÈrk”p «·î%ëÚ ÎÚ\dY¡µµƒAÁ #8ØNwŒã{dzv3-;…‚w9#ŒË®œŽá8%Ó@?â*YYY8ÆŽKOOÝÝÝ„‡Ç”†PºŽJQdÞE+X,»š+KËÊêGzGRL‘×ÀÊí>RRiç‡Fé—Ç™‘cÜ|º£‹O\’ «jôH‡{’<ø£4ô]¼±Y!M±µ$†wÿVŽ18„<—‹ƒŠ•¢ Ëç-è§„rוƒÇC|= ÇˆÍÌÀÌœÊjÒ™œË_‹.²nç¥w«¹ÿ¶½Ûø£bsg³°æ«ë“ùÖ1ÈA:L†rç-¦DÞK¤>kÄkØÍyçh~£ʼnÑÑ\Æì›þ—+#šùë˜ñˆ…ûé¹p.”t4ðÄoï%#R¥ôñ'¹ê'O2oA&EOüž´_¼þµ ¿Õû0¦-bëç[l¤&…Pp¸šÊ­¤PÙî$9̈;f:ÿ{Õd>ÝÔ»Ì÷'„tÕF$ùH¹èr+ž¤}ñ¯ÈRÚXÓÜ΋ïþ—mkW3nælöìÙ‚¾²šô¼HššÛ¹ðòÛ}ËvíØBâ☓Æqñ|ˆ'Wü¼ð0›k$î½óì‘_»Ý…Õê$::اԉ¢È¶m»ÐÚK¨wûqÊë}ë·Ù¸åG÷éû`ŸÅÅÅdeeQTTDvv¶ïuAX¿~=à¾û½ØØXÚÚÚ¸ñû?¤¨¨˜™8ew¿^`8b`è7âbŠƒ$I´6W²µÜÀáf Ö`ÂÍzR~’ªØüª@æ’…¤_: !‡pÄÆM{hñ“ˆŸ3?û‘{-oï®·7Öû Âh4b4)Ûýiysyê¹—™3g"É 1ä$&ôŸÝngŒŸaV+:Ý©X † ¬úV%œGX ƒÅ0I’Χ zÕ_è‡ä-€öþïCÒ4UÔ4U¤–¢ºDITUSe4éìa´xðmNPÊ~Ê%о¥Ð#µ ºšê!—@‡†…Š.ÅuJ%Ð]]]:tˆÄÄDdY&))‰U+«¸lYu»êùÛ—v.™äOh„%"÷{5¤þ$•‚5d6Ô‘7NOp—•Ôeɼü|=SÆé™?;£kþ{r}(×^Få–.òóí$»U¬á*‹oˆã‘§êX²0œyÓ‡ýûi((¨!'g̹ÆiÇh ôù‡3V=ñMšëé*þ:`H%Ж.Öí*dFN >ö4÷Ü´ˆW?ÚB’ZOÈŒ…,»ð":z *ÔãŽÛ7ÉK¶DQ¤££ðÜûDFFÒYWC«¥’úÖ0.˜À®M…L›;§Ó‰Ñhô‹¦¦&¢££û}¤Ç^•·²Eay;ùMq¨¢?²½Õ¹€èŒ‹¸àŽZ£ý=¤Wu‘¢ƒLM&C¢Á€¢È F~ú¿O¡‹ˆ&Ö(³ju!ÿ÷×>ά( ’$¡×ëTO öì¦]ÉÜÜj+ŠpˆA$Ç÷¯,ón÷*ùî•ÉÇ×Ñ1EC̓?•˜¢ ¬ÃÑêðP¶klì &&»ÝÞOÍÎHï)ƒÆ#ùzË ATTETDAUDIçÖIz·"ëed”õz·A'È}Ë  z³*ŠGˆðÀeÐ0Z }rc‚ó£ú\”AŸ¶èó #U6`À…kÈ럪 ¬ª*©©©¨ªJPçF"&Ä??WÏußIൕOv»¸{F06½–DcF {B(~AF\ 4t‰äMŠÀ ÌŒÓhè1öþÝæÎCV@ Aht·(„M eB„Dx‚Ä»;Üܲ Œí< Å(F1ŠQœ;" ‡öÑ”’ÈÔ lÚ¼ï,Kì¸ÜÞù"áAÇÞdµµµ!Š"ííídeeŽ ¼ö»¿qóƒ73cþ,^øÇç<øëgغáY¦Îñ(ÁEEE>uØoä%¿#%¦èd ¬Zš*ØVaô©¼ˆäîF,¨Ü´†Ü«ïÆZ±–à”…Èª@X§KbÒE°ÞÒæòâ½%ðþ?žgæ…Ë™>¦‘¼å+ж½Ì¢Ûä{·*h½ïçuPv:Ç%yæ `rÆzÞÇŒÉÀívwÝܼöºe&é,?™˜"èOBO%¦h¨«N6†ÉétöªÐ҉〾¥Ðô)…Ö4MôÄ!i}âú—A{ãú’àQŒâhœKø´àÑX¤¡ãdHðÙ„÷âÝ÷˜æÍ‰µ‡8¸éá8zÚ0…øy ´³<=6~±ž‹ð‚eñýö·àòþ?‡šõ|¹³“®Dõ&nšsÄÕòúÙž¯Ùœ%{0fL@ÿáÐêR—ÆÇs£Å(FñM‡9T"@/®cÆ7 ªìµµµ‰(ŠDDDPõÕsm•Ø!À·~y6k'Ï>ü Ñ|ð¯û}}ÀÞ`€¬¬¬¯}L‘ÝÖIE³Ly3”6k4Xã Ù^†µi'=µ{ L˜‡d qî¢ÃÙ¹d×-Í&7Õ„Ë­âùU ¾ÛÑôŒtîùó~{õ" 9“ñÓ4–Ǹ1N~Èc`5¹;!µÛí$$'ûÜ—;;±($‡NM¦¸»Y8²‚^¯?'VC!Ù§Ã$I’¯""$D¢©©ë˜h¦ãÅ! ètš *:M@ôMPdEôÄ!) ¿ z´ødÆ£±HÃÁ@$xTþšàlªÀííí¾àîînBBBh=ÜÈûvâ2t|°ª•ΕàH™uE"eH¬-r15KÇ–=N.]ÌÇïupéµ1T®oeâ¥Ñ|ñI=Ñf–Ï Ç!`;؃nN í¼yØÌ évR˦:¸íÆhþñïFnº.šÿm¤+Ì[¯Ž4Vþ³† s‚X¿ÓÍ♕›šéTü˜‘ RÞeÀTfCÿU±sƒ©ýª³ÙM™j$Lç`Ë'7}w gñу ”–ÖqXBh‘ IDATºZ F <­Açz£8ø&ÓѹžŸp:e¢¢¯ºø¢e‚ÀôÙ‹‡´ßöövºÛÛQD#YYi”Ù²˜¯r÷¤\LÍ.:»¹øæË)..&zlÿà‘d`u²*ï¾ætJ Ÿ §®²˜¨ œeõbÜÈ[±JÑùE!f_ͬI\:#Üd#Q!zT-Yñ<\÷–0{¡ˆAüõ'×xÞ% “ÑHYaiÙ)ÇW_Åõ蘢Ÿ¼MÌøyŒ‰wâ<ð‡[rHÏžì[¿oLQªÉ?¿{€ì¤^[[Æ«÷Oæûw³,+›¼ þÁ#ÁÀj(p: \.ƒa@Bß7É`0øÞk„ñ·€ö:ôv«ô!4**š jª(jЍi’êQ€Ä!©ª[ðr¨¡Å |<Šó§•ªÀCÇÉ–B[±yý“%Á´µµáv» ð8>¿óY;AÍ"¼\Σ÷åPùa•µ6¾µ"‰_=RHNBÍõNÂôÕv"%†¢FV— „Wvbí}°—ŠJ ¬4¸í&# RW£r}ž‘¯¶×òÃoE³q†éÁ=´MÙQÿ^SCbLå…t¶ÊÌ"ëjÚ™èçG"-»º›@]¾…Ϻº˜:7·ÝJ˜AD–álºÌ¤¦F¡¨Ú1y†C…÷têÇŸ}‰{'·¿¡pñ¡®ç]N¼þ@û;zÚÖ0VÎ\N'ÎÕûž ¾ŽcÅ(úÂh<ýÏõÃÂÂ| 0À gR[U‹dÓãÝdffýU^¯2x® ¬ÚÚºq¹$H{['_­|‹e7á8J×ÀjK¹Ù§òªèHŽJDQ»0)õHrR’€½GaìÌk™’d`|’žKòü‘PºêØXÚĶ·Ÿç¾G_"@××1Úóá3°Bë§òZ[Zèòƒ_¿üOÞøÓ¯ŽŸWUŧfMDS'ŒeÇ:ÆŒ™BCt(“b‚p¹\¾ãçUy »ŠºX߬g‹Öˆ{²™›KŠ™ŸšN•“Py‡êö|*1EGÇ0 F´Žaò’ÞÁ̶üýX­NL&£¯÷ø¸÷ðš&h½]Ášˆ†à!©ªªˆŠ*‹Š‚¨j² FÕ-H’AST§ ŠzMVœÂñû€G>FUàóOU€Gq l6ÁÁÁøûûãv»Ñ\.2çdzp|í›óÚÛÕ˜eFt\ÄîFµG£ÓOGTL»Q`BJ“÷vàv8±ºt„˜=‚öf'»Ûe¾3-ˆøÁ¾÷ã‡1Ì@j¨‰§_iä²+¢hKtwäTô óã–Pïä«D*8íJœ‹Ùš‰=­"“tD¦éxþFÒ£ü¸*.˜E%¸G¥Ã(¡©ýšZÎ8œ•%¼¸þ+îùþÝø£²{uyKsZ«‡Ý;[É›–ÜïÕ¦[ø¬¾ƒ¹Ùy$OÛv¨ßœ‡¥”#KNêÅR6m:DtnæÎ*Êj,¹0™¯J:¸øŠ«˜˜?øîE'++bÙ ¯2ùj˜œ;”ãt,:;€–½ULJòùÜoù¨œYËSOj¿£Å©¢Çâ 0øø ÛÑ=À™™™¾^QEQ±Xì˜LÚÚz|*ïÙŒˆìk`eµ) »inkEçob÷ž,–RœÆñ®,ÁþáG\·|p<«DïFD`L„HEs Æ„…LÍ b\r “%&¦™@ÐyœŽ¼þÂ[\zñbd§‹´÷bê: ážóZ–eŸyÕq{xCÍ”U7ñâ¯îðmÓCQAÃã'³8Æ£Öf‡QUµ_™o_LÍ "XâÞŒDŠ›Z¹%2ÔGÎEAÑDü޳íÑèk`5\•N.†IQ”㪼ÇÛΫbûûik³b6}4M;‡ä…š  šp¤X4M=qHªªiª j&_°"ºEq ’dÐÎx¤’àQœN› t¿žŽÐ0r\¡iô­ÓM·`ÅzBh·âîç­jê°\ Gqúжw_6v²äÒÅ¢°ê¯¸ì¾ Ùóá;üãó5\yÝ=ÌÍ5r÷ÿ¼Î]WäòV…[fò÷^eIl.-sfrȄݿ„=÷ÿànü žy“OŠH4]FOë.Ú~í2V¯~—ù—ßÏÔñ¼÷ê¹äÖ‹X÷Ö&ühRÍ,þñ,QÄÞRÃãþql&--…̘¿Œ‚O?æ¦ß<ÅÄp‰ÕÏlÂ\L~­ƒ‡~ñCœ5kùÞŸò¹s^(_Ô…м—iI‡½n9›Ô86‘<+yóðÕ[o²9³ßÊWÿý;í!AdÉݲFóÃû.繿=KTÞ|&5Óe3³sûn"&Ïá§w^µ¶€çÿü:ú„ ëAÊš"ùá²dþZ¬ã¾{51¼¼ä¿ìKÛÏÄyWÑV¾cÈD¾w×õø‰ýå}¦[(©©`éU×±êwØEÎÅ”|’ÏØé‘«‰è*7b žÐ»ÐYÂ?×Û«ÿ$ÞüøŸüàî›x~e>™)f*öµsÝ=÷0)!€•ÿ}™–vcíñLùÉ$6=YÅ%÷çQõٿٮ$Pþñ´rMB.ý cžƒÐ~‚3ˆl*`Ÿ£ƒ—~›ÿõ ³.¹ƒï½IôÔ…D¨E´vóÝG„Þ΋7þ†2Âxøßÿî>gÖ]‹içóß—£[HPj*eÝ×ΛEõ¾Ïxüo¯`6\Á/ŸYΖ~£¶”/«J¹÷Ÿ°þõwYþÃHŠTxýÿž¥ÜG^¸“ÂÊr¢ÅTªµrÒý/§­~%û:[yô¹gˆÒÁOÿ.ŽÇê­o3qþbŠ6|ɼoeת/¸þڥؚB°U•àYÏGµüê‡+xýï¿ÁÒÁ ÿ6ùdŒyÆŠ=TÇ'1ÓOese99Ê&Þ5ާyœ„q+˜ŸÁŒ¥Éçú”Åy„] »»),k )6—¦ÐØÔÌ;ÿøwݸsÆLü{Ýž½e®ÇsV•úúNÌf#ƒŽ$©6ð™¾òª¼V› K—Õ£Þ6TRSÓBaÅj*K¸í²ålßòJâl’Ã%&NŸ€vLL¢[K ²lÅ5©WÁQTˆ¸ ËȘS3üzK›¡©±–f«J´½„ÂÊ.:„L̆ -ºPUÅ÷;óA¯Ûð‰”Ô¡dæÅËHŽˆLŒÇÞAš¿›ß¾† kw²`a¡õi\pëlÖURåÏ×/ÁOï‡^/Rµ¶†‹î» KÉZŒ±Ü0+‚ÃzV,]Huc#I ±Duðäãï°ô߯²q7‡Ý&¦ÌO ½fÝÌœ’ʸøqtZH‹ŸÁ™é€JéÎ:R»‰ˆO!1) ÿ WK2±—|÷j4Hh•&„NdÎ ¨]_JIJ7^6бfo·.ŸC{m;ù —ÎÎ"ÀšÇâY&öØ[1Ef“™I "¡÷C Ï$=9Œ±ÉÉ8;Ú1Î"Äï0;œ¹¶;ÈN eæM+Hôì}–þìâÃ2ÆÒZQÈø³1ˆ ¹3rع¿ˆ;V, ¸º‚Hy¹Y5$ν„±ÊAšSY0m1´U’’90üÂiÚý*…Â8l­»Èž½ôŒ¿`Ùü¬-(ÑcI‰ À$ôàìªCmõ'vFÛ6Y™2'žæƒ‡™waî®gÉœ,Ôº0.ýÁÍ4åJLÆDzºª×2YþíÅT>DFâDºÚj M™HFJ$±‘ôÔV?y.Á'ji©1áDÏKõÖ"§g ÒCáWí5¸Ì±,šs:ÞX³ƒ… ³ZÖ­ü)×]Ǧüm,_<—ÓŽ>g1Y‘þø ­|ÒÀËf’_QÃm×,àOk›yêWWrps¥BW_8žÀ16@ø˜±ÔþŒq³—c"ДMH€„h3ÝŠÁæGmm‘Á\rë•‚Ó­¾m,Ëî»™Æ=«8Ôi#ï‚ )nlàöÛ¾EÓúrêd‚“²h)±“E¹ý I1IçêtÅy›ÍvŒÒXÝÐÁ'?‚ÐÊ[ïnàËõ»˜?kÌ„Ga4ê}$·ïWUÕ|„³µµ‡3ááøa2EÁG¾¼8Øb±SW×NMM›§§×báO?K›ÍΆ5U”Tí¥ªª‘eKg±dÖtÊ;5æüöÎ;>Žê\ÿß33[Õ{—eÉ–{¯ØLïBB ¤÷Ü_Bú-ɽIî%å¦ÞôPÒC I tظâÞ»­ÞË®¶ÍÌùý±šÕîj%­Œö|?#!M9gvíwž÷<ÏÕ·P]–M?ù¼ðF¯uñòövvnÿ'~YJ$ØMÛŽ=ìyýûO¼”P “ÊòBÕ»øè5Y|èš<æÕy¨-sáÑb«Orr øÌ§>Ï ×]F{ÀÍ•—-`„ºA•WÅív‹+ŠÏï'Ä~çr¹è í¹Ï)ª¼GUÐH$[“«ª*‡›[ÈÏÎæX(@SŸàm3§²°Öñ3¥nrTÙ5¢i†aÐå óè+íü}S7?øs‡²zh5óèŸÞÎöB'÷L«ã@¿Ÿ—“`0*t˜¦‰¦ii­Öu=Á4Ëz(3–q–§‡QU56?ë=9Ú~Öü¬¦ø8ñ„B!²²¼±¶r·Ç]úƒïýßÃV·œõßÁ¯RšB !¥Š)„ÒTLE¨RQ4SHÃP¤"T„PQU§T„†@`J](Êh×Ê„¸hp¬Ã'š¸YÜöãïð“B’:Ý;5"yý•L5–¤yD÷Iû$ãÄÍ}„k3|ûtÖ‘%Nnð0Ž‹5þÿÆ;ï9‡R¿÷}EN‰=­§ËX*p²"$tô“ª÷ogç.'KW9øÚ/š™]àd@#[ ê–e"»›^ðséG½|û¼ã•¬Z’GßÑ6vír1ÐÐÎ+7x5 O½‹p®ÉÃÏ…¹ªÞ䑘3?‹îýÝ\qCË—â:OŒYÎGö¿ñ<¯¼áㆻ¯§Ð9¾‡ ÁÎÚ[=TMÏ{ã“À¡-{©;å”ûÈ3»(½búyëJ~ôÙ]”\~þÎßæÌ’Jþá÷~HeÍrû_¥dÅÝz]ÃÔ]Kù5 “ÖÖ~23ݸ\Ž˜Ê¿}ª?'ã>(ÞÀÊ?Aó¸9°iÎ •{÷ D9Ö,éŠdPRª[3—_D0äøñCÔÕMàpC ß>CñÆZ›…¦ÐÞ£ã؃ÛPØ»þ7ÜöÉopù\³jœ1•7ža…«P`PI² ³@ç·‚Ì­`NuÞs Å`Ëà)™=;61uæ‚a?7°’R¦\çÚ½}›o§îâ8¶u;_´r˜UüѪ%y8Ýkßè$(ÃH ¦Œˆ‰”Ms0×Ai\{Q1U J©ÆoÓÈ’ ìø\fòüK™<ÿÄöu”RUprÇ3§ªø¨¹bú);ö[ —Ÿßó·9û¸íŽwÑu„¨vb­åbŠÛ„ …q-ЧçCk¤˜"Õ)¸ÿ+ŸC/›Ï»¯[FG$D•»ŒÅ—_´j•õ73cÚdüþ6œN…Å‹§áp8qx³ˆ<ß§øèa“)%’™µó¹z›YµoC7àˆOcÿÎ]4hÝÌ]ÚÃÀ2 Š):v`G›LV¬¨¢ÜØÊ_^ZKÕ;ßG~Ü]æx žz&ë6nfá¼Ù OñV–Ò™ÜN7k—ÌX€išT,]F$‰Xµ @q’°œã|þŽ)<ÛÒÁÊ‹ ¬µôóäê>zÓ”1늓i`5'3†©¯¯‹¢¢ìÑã¤R‹CÒ U0¸&Øá0Ã0”è:`C˜ƒ_“ãDZ…½øDƶ!Öx9e 0Ø*ðxMN¥ž'mXJ©J)G^,%==:¨  TÊÚçyj‹ŸùXNi‚æôõDPÝ*î讯7‚í¢ë&G´A(Q猞îùNº;Ã8½D tM!Ç{zc lllllÎ/FZì÷û ¬::|dÑÓã§´4§Ó1æà“©S”ˆ ¯¯™C‡X¼x‘ˆNEEÙtuµ1aBYYYD"!öwtQ_Z‚0%ªüQ?-Ý '9X5׋)RT]7øÇï~{Õ{øÒÍ—qííï £[ð/½7¦ëº+R©®¾¶üãÙÝÜpç-8Œ¨žQUP«(M…a!by¾Š¢ðÊš\´lá°m­m¬ý’UÞ—ÿù*^¥œlo+Áî}lߌ»>üïÃŽaÒ}Öï顱Ód_£Éö–^²ª]LššÁ7–UÛo¤ùF:1E#]—‘TìÑH6K.Ê›š:)// Ķ•R2¹vÆ¥ $Ä©ÀB1„ˆªÀŠb­ÖºCsG4Í­;5¡GÂnée˜nGŽa)ÀšU‚Çæô*Á¶ <êH÷y‹«À§\['‹¤¢!2®óŒˆäæ%~]xy&Å$F“›èˆ˜3¸_Šõ¾ùÑmó¿âÚfƒþÍÝÈi…”Ú=’66666§ÞÞØý‰ªª”–æ¢iQWÜt‹Š7‹µžØç Ò߈Ý+~Ï$ÉË« ¤$‚Ï×Jv–‡Š©¥ôõùèl>NwgÍ…ÞÕ LYTË´kŠ1‰Â¿ÜEe¡#¡µY*e¥Ó8Þ´“M[÷3;|?¯?÷ ðNˆ®[•$X±u¢ÉdÏà–;gDUÐ$ƒ§T*h²ø’ÊÀêÑo?Á!õ!YȤ9¬6M3a<ÖY€?üâ‹t—¼—;/[Æö=G˜:w‡:fðöÁ@€d«£-ý¬Ù«óÀS-x*"äÕäã¯èÇ·TãKÓ'³­/zx"*oüù ý˜¢T*煮aÊÊò¤ŒCúâ¿~nŽÕCJmIˆùÌD¿JS˜fT–2ºÓ4ua˜‘ØZU\R7BBU§Ny;AlxÔ‘p.ªÀv ’Í0vîÜIWW999†Á¼y³yòGǸþ#QPز¾ÍÅú¿ïçò÷Í$²¯ʲXTïÁ yô±nÞvs1«ŸigöâZvu£¹i>äÒ+ ØûjÝYfÍw æi<ö@«‡y`«ƒ/ÞÇÓ«}ÜrCñ™¾ 66666ç}}23]±›ü¨¢{ê»ÕâcŠúû ­Í£½B(ô÷÷ i õQ_?‘ fÓ××NËë}ì­ ±km#SL=€£íï¼ïZróòkpž³j¢ gºÞP?«Ÿÿ1GzáKÿó5t]G¸¢F*Î’œSÇ…øó3¯PSžÉŠÅËGœ›¥¼:Ž¡ö[iðç<È-Ÿ¸…½}¼ýÖ•L˜·€5/½ C)ŠKªtbùl,Éec{˜E“£1‚僯{¼jl}­«Ìá¾õûЮ‡“Ê™•M©(f¾CíÀ…¹YèºÎº=Ým‰ðÐsMüè¾¥L)OýÚY­Íº®ãr¹Ò^?œ<¿ñ¶6ŸH “Ë¥Ñ݇4¬ š¨ú'¤ƒ^HQ,i*§¦aŠÄ8$dr4¤(S »ÚæTrÊ `[NŸQÌ´ÚIÒ§ªª §Ó‰×ë|º*ÐŒ$=<þr7—]^ÌäöwòµÇû),íaÑçëyä/Ç¹ìª ^úÇ!*gT°åµœF¾-ÇY´*-/tpxm„ê©=tÌ®â?>ŠáÐ8ÎbÅìløÑ^:^®¿¡˜ô’÷llllllÒ#;Ûƒß?úg¦N˜ý­ÓËFWèÆÂ*z;;} */Œn^ªª* G((È$+ËÃÔ©¥8Nœ½- ðé(‚mNn·¯×KAA¡PL]us4M/÷}:ŸMkº™9©ˆü"'÷}ºˆÊ¢è¾Sër(Ëu1£2‡¼bu™dz‰L*£l‚ ·7Hd'Lœ”WspÓ]5Ì™I[³€î¢âÆjfÍ.@¿›½Í ` ¯mècj)ìÛf  my)«.Ÿ}¼U$bŽKåUU‰Ç£¡ª ‹MAÓ†Š:)%ûw³úåÍTLžÂò’<êVMB3$‡ƒâѪV†bƒ€˜UFFưí:žy’ê+¯öóøÖ_«0K^÷êÍ-'³ç À¬Ù1}Æò˜ $˜,ÁpõØâc÷| dµþhõ3©døx… íÔñ*¨¦iè€;p”¦Î \J˜žc‡ÙûßrÃǾ1l,×g¸Ñ€×öts´¥†.x}oW.ª§/$ùÖ§3§ÎrÐòSyÇji¶8Y*oº-Ø©UúÄ×Ïëuà÷‡ÈÊÊ¢¿¿MÓÈÏÏ›5ºñ ®@J!¥HB )MŦÒˆ*À¦0M!L©cšaˆˆPUgìºé­¶Uàœª"øÜ┚`%œÈ6ÄJ›dx$¬&¬˜˜"BäÍ™` ¬¢uÔâÕ ·Õ$§$ñ|û!‰ÍÉd4¬®=NÏdóÎ.¼9™´~û ]wÕñŽÙkך\xUÎ4L°ÂaŸ/Hg§¿?” ´Žö™¦ªj,¦È2°ÊÈȶ66kkºkA­BKUULÓ]%”&׿ÎÂ%ËG5xŠo!N&>¦È2°êBaŠÓÆ+·#<=ýÚ6®X:•ßÿøÏìÚŒÏÞÿ9²=C×U×õ”-;p//?¿k¯^Äïþü·Ýr5Á@nOvÊù™¦ÎÕŸÛLÈád 7mm&}s‚<5k6Ùƒ×ûLXÊ&ÃÐéèðSR’COOOìýµu˶‡n¾é¶aÈ ŠP ÃT !LSQÔˆª:"RwFTÕa84Od´8$8{ͰÀ6Äc$‰û¼ ±N‹ V<çk+ô[‘ÇÓÝÝÇãÁáp0iÒ$žúóv .Y”ÏŒ¹Y)÷ëoô¡çzØÿT+‹n-¡VÉ)‰þ `àüËÔ²³ãá‹ç—žšIÙØØØØœ÷ôö‡xnS½”¬é£îÆTˆùߟ*¨™+.WRßÃÒ× »Ûß"1Q”¨/ÐX÷8>__‚ÊkÅ•”DUæTůU¼Zk–ÓÁ4ÍXLP¼Ê;’âj†˜»`Ɉ¥Eü8’c|¬˜¢×7­cá+ðmú¡þC+oÇ=iZÂ¥”±¶áƒ'ÝǯÿÙÊ=o«£sïZ^m=¬‹çpÃ{n Ã#†¿+.]JUôD$ îeWw¾'Öúk©èN§3µš¬e2!ø$‡³¸ó½†Z­õ®0dð”ÜmQ?ï’èX#<ƒóëi=Êã›ZÈÈÈåÖ‹‡gÀvæJqRTÞtÛä×a<V0¤ò¦Å4–Š­ªj¬0ž9sÆÝ JÙ-„ÀD ÊÁ¶h)LLašº2VôÐNblcCúkOk|¾ªÀ§³>hšÆ¾}û¨®®Žµé† "ÛºhÌrp׊\“Ûn®Aì8ÝUËÎgZpöúðNËcáTJ¯ŸO~¤š~ÞÄ‚)LÈɥĿƒ-Î<Þ¡Áª Ø´1@À0)-pqÙR/_[ëäʪsÃëàÁ|¾Ð™†MŠª`é­wŠÒäÌ=LjºÔƥ؜JJr¨®.<Óðy”Ìñr·_  §päØþþ a‚Á~(VÔ@jC)‹x«ìloÌÀjHeK­òZJo*•PÓ´X+³E¼YQ|¡´}ï:ŒŒyÌ­þmÙãp8†XÅ®Oe=ýþá+£’cŠâÍš†È ÆÕ‡hü'Ó/¸Ó4Ñuƒ‰ÙŽaVc±â²[!5_3Ûƒ9¼ðÜSÜwïö7 MÓ†<éa4‡Î#»yè¹-ü¿÷ßF­ùr"& ^RK‰.Bâtºxð™#4÷À®ã!þÌÔ”cL6°Ša‹d«t9•1L.ÚÛû((Ȥ³³·Û¢(©ã ‰4ƒdJSÒT¤4b±HR2è­ T0Œ°€¡8$MuÜOU[>®óTN§¶`›a˜¦Imm-RJ¼Þ¨áCE¾‡ü¬™[î¬änÙÉ3›Ã|`q‡†¼º„ ÓgçáÊq¡÷¶Ðܯ2~^`i9´ô«±˜à™K«™š‘I6_‡Iñ‚<æhäW(<¾!ÂÝ+óh—oÎ}ólátElØŒŽ¯ã0]2ÍWñ$þüÍ_rÏWîÃ-£]÷o¤¤fÚ`{Ÿ”H¡²öù‡‘å—²lzÉàÑd¬ÜtðÁ^üÏ£¯¹õÐoèáßà6BD—ËGwú>î˜ÖqB]ûùÕ3;ùè7¢v7Á™Äö)8ùQqW—@ ÂÀ@Ãj?Kåõùzq8ápõõµTWÏJxàŸŽÊ›©T^€§žø-Ç‹)žÚIë ®½¿(ˆíeD5šZ8iÊÔ˜8,¦(6ïÔcž»lU,Ÿ×2xZóÊß8®^À;—Œ:¿dƒ§-Û¶1wölÖ<ò Ž—½“yY[X1¹˜Æî*ò¼ ó³”òdƒ')$›Žt0ËÝÏe™\|íÑù™:Áp¢•áñ‘ï50mR1Bøyø3Ƙl`õ×µGé÷»ÙÛàKï¬#Ã=òM÷É4°‹‰aÊÌtã÷÷¢( ±cŒ‡„ŒEÒ˜)…ÃCŠªÀÑ–ŠÑÚ á|k…¶9[8í°­§Ï‰¨Àâ$X'çdf!÷G…%ó–3o0ίlQ!SE¿÷L‰® v—Eÿa¾èêò„ã]|M9}‘Øÿ—WgǾ_y]ܶ†Î• =d9ñÏ[͈N0(ðf©˜˜'Mé¶9_\ó[•¹°ûÇd\õMòK ÒÅû'Ôì*^}ôÓ”]}?½´†ÇŸ~¬ê¹\:ÙËsëwSX˜Mn¶›µ{„ƒ=òkRVì¡Âéã /—™ù<þü:Ê'-eÕòYø7ñܦC„zZ™=m«wíá®;ï`Çkq¨·ˆë—ðÔúýȶƒ\xû'éxãïìi…‹¦æ³µÇI™Ò„{Â*‚Ç_bËq'7,Ëeó®}¨B cÀ66'‹pXg` DOO€`0kÍBAUGWyRW7îî¦L©ÁéŒP#µã›3°Òu¬¬Ôþ³êæPàÙDIí4®ýy]Ì*•’a†‘r –•µžv´«MÖúßúk)”?üÖSÜñ™ëÈÎ/催>óíßòÍOZzaÝÞueyÌ™”Í••àu%¾gNfLQ:œŒ&ë{«í~()ê¼Ø¡nH¤DHä`.°¡DàhØ\CØ*0œ*ðQ€mÇ߳Σmlèq1™~Ú• ò½’<ÝÇ5—çÓv¤Gv;ùòµ™lnR˜„AåŠL¿¦5ÜMŸÈ¤¿ÛÇ¥7VS¤Âßž<œ '‡<ùxÚº1ò²ñ¿z„}¹YÜtu9«ŸnDäfW¤¨ÔËËOõså­•¬ßØÀ²|Ït¹™–§ìêçõf¸ýº<ü]Ïnl p†‡¼nƒ =pë²,þôJS¦xÙøšŸ}d™¾Œ6g)B~” N®jðÌ?žãÒw]„pôòÈOžàmsò¸òæwðû.åÿõþôÕÜñq.¹íƒ¼òfÀððÀ“»xà+×òoí`þübòs»Øt°ÇþñuêoøíGÖã_:Ÿ`ûn6Q¸0³™í!7í›ÿÀ†)¥<ýäÓÌ™=¦F“õ‡;X™ÓÆ?^8̬Ì>ùÙo¨ÿØõ¼x,›…r5åîZ¾üÿÇÝw¿†öô#2lllF'Ö9~¼“@ Œ®­G­SG¿¿Mlj¦†Y´h*ALÆ£MÔLªv_cµ6[ÆPé`Fʘ¢d6žªYeNZ…ÃáÓÀÊ*¦­s%X­{}Bht† ¨+j¦oO ‹Þ~cÂ1¬¢É*`“ žþû§ùÜ ÷¿H×ÚYÌ\¶ÓˆðÍOÏHið”ªwy hܵŽb\yg´õwJQÂü’‹ÃäÖüÞ}Íò˜½ÿÔyä…Wس£“¯~òíÃÎ}G~n¬]\Sy¶ùûë¾ûñé´ûûøù'«Èò&ŽýDT^HTzSÅ¥âDc˜’UåD#0¿?„×ëMŠCÆÐ:`‰¦©HÅT¤”ibb ÃÔÓT‡­6ÌHnƒ>¿T೿>P¿üå/Ÿ‘å+_9¥ÇßÅ.f0#í7T 00®s¸p&œöö:£»0&ÓK/*jla .nb #úÔ-úäE¸=naJS‘ƒë2$RüB4œHhš&¬ï?ÿ…Ï À›ãf÷î.Z[ƒ,˜èdßñF·[š( ó¦òûG¢edÂî^Ê—zØúÄî7]‘ź5j¦çã€Õ/4óòÖ ×ÝPÈÓúðöÉ07ßR¦—÷³»¸„…z?µË‹é>â'تS8Á aÉüEÅô÷„ØÙÀh5¸y¥‡—÷õ£´ô²½0Ÿw,5ø×_öPŒ$¯de™ ÁÖ3äŽëÚž::ú‰DNŽ9™Í‰"ÐC!2 ª(*ðPT5“LÝ §$›æv?s/¸˜ùó²æÜû®kxîo%É-¬œR„’U‚ò‘=a)õfÍ–Í´ò¹tZv¡~æBn¹j9»÷G!ƒsg¡DÐT—U8‘·IÝ¢k©È2hl3}î,TgŠòÉÉ/£©é03—¬`åoc×–u eQ?÷2.˜žACã“fÌÀáÌ`ÖäZLû9ú%#ÃMNŽwì mÎ †ÍÍ´¶vÇ=ˆqfVCß;-- åâóuPSSBee)ý=t¿tÍsˆuϯcí¶Bš`j턘ۯÃáÀårÅ ÃÑŠ_ËÊrz¶\SMñë?­â3 E lÍAk‹}‡öѵ§G·R_3yØ1Âáè=‹¥ÞÆÇò!(¯È§!æÕ?Ÿ+.YÂQ55å†SX­ñ†‘²0÷†:º‹¸ôš)¨ÈŒ:>#bîÔXt¥R¤u]'§ ‡½¦]]8BGÙÑØÇߟ{ƒ²ª2²ÜÃã#‘ªªÆÔlUUñ5mGääì1yyÏn&••1!#‚SÕ9Ш)ÊN˜Ÿ”’¿¬9ÊožoæÅažÚÛÇòújfÖdòå;Ë©-QY2ŃˡÄ^ëÓéL+æ(ùõ‹ÚP(4l~é´Ñ[]RÊXWAªóy<zzdg{å‹W®àxt+ ¦\žO½ÕB"„0…¢˜š­‡UE3…pI·KJCW±Š]EQQDôõW”ø÷y:pîOê‰xÇ/¾)ãÞ'i)Ç’üÃñ™zL›{µ³HK¸— ì@M_\6$r\sìVHø™"…~ÏVDN[p*Î…làÓ‘ ìÄ{‡”l`()rós•ˆQ iŒ;øõ×èÃËESÖmêcg›Á…“2È*qóçÕ}ÜX-x©Iae¥äÉ–ó=yd‡X8ÍÁ÷ p˽eTf(lX߯ì n~¿.À$=D{f&ù­Ýl *ÜpE ¯ÿ­…^—ÊÄÅy(­=ìm„ Y!¦_Ví<ñl€Kå³îG0k3¹þŠ\ü‚—_igÖM¹ô¾ØÏžko(ÄÌÎd`O+k›|äÝÕã¾¶§š={ñûm¬3Íп50Ú&¶+ !0M‰¢D&âÖî‚‚¿i ¾ÜÄÇï¼SFo”¤$¦™¦[Ó›€µÖ7E{¤õ3ëÆ$º¹‰u3>šyŽÍ饸8‡ªªÑ×1Úœ=¤Ê>x°#GšŠ^KVUÖÖFòó3ÉÊò¢ªAªª'±ÿPÍÈþ>\Ù5ôÉL*em7˜ l ¡˜Š†n(†"¤¡jZDSCwêÍqjÝéz$ä5ŽLézÍä<à„óÛÙÀ§lLpnd¿Ù\`+Ø.€“o §¾n£MTR)Ï•VlJS1Lc\ð™D™h ëg$¶ô1inÎÓÉ`ïÞ&›ì–ÿs¡ *ðUýó1ÞÖ6§‡ÃÉ”)(,Œ®•»VèÇáPÐu?'V“‘‘1¤Èªðêú§˜”‘‹»z!á°NN†ƒ¢ââXks|Rr,Rü÷#XFªÜÞ‘ö u·ÓÚ º®z˜U²ÊgµÍ&}ÉO‡ƒ?üòkÔNy7‹.¬Ly^+V)¹õ·}Ç“ͼžPÓ:9˜ËU5*ý:®¢"ꋆtÅ«Ãñì{òQ꯿™æ¦VŽéæ‚eS‡µþ&_ç‘®Qr ÓhjëjÿM¦¤ ¸0+#a¬ã}ýR­Å±bŠF;Ÿõú¥£&'Ó¢££ŸÒÒ£à¶!Vú4Ð ­"øTÓÚÚJ(Š=---áж~jgg!‚ƒè‡æá£ÝLœwÂçé" {{8æÏdj½I‡ÏEiõ,ÞòÅ/€iJêë‹9‘¶›ôéë Ù)¡( íí-äåe™é¦´´§Ó+^ãïKL©pÁÌËqçfâМhÚð–ᑈ7’:•w$¤‘ <‘‘CYfnÌŒj4$«L6@²Šú†Þ•9~ð¹Ïr͇އ³¼dØ1¬¢ÉRm“çØŸYÁÁµB$Ÿë§ÕQTXHùàüâç™|¼d꯽€ü‚\ ‹òÇœ_üë?Òü0Úxáù9ЗÇo¹"åy¾ÖÖ¸Ò-zS½~éìßnx;ù5s™}l‡;|L,ŒÆ#ÅÏÏétòÐ3x÷•Ã×QÇ3RLÑ™0° )%¡P(-c®¬,/mm-e'¨ò#Å!š&…a Æ!™R8¦bè†bšºbH]¨Rбâ,ÎC,›³›3þJžŽì?ñ§q¤ˆ¢qŸ#‹Ôñ#á&ý' 4œ–~uEQðù|ôööÆZhúxø­t½üí—–¹˜73ƒPgÿóýcüïXÝÔKAž“–>?¹™šÚ˜Z“Gm@ç®+3hßÔOî Û0xð7GùÖý‡hux¨Ì<ùÄ1¾ûÃcØ«fmllÞ,]­/ÒÙð kŸ¿/ö³ÿèö3éObÚï¾û3ï ¥§ó ŽÐæt£iÚ¨1EN§ǃËå³ýÔR߬B233‡Ã‘V¶«®ë15Ôãñ iÚ˜û…ÃáØ«È¶ÚªJ³Ëxæ»ÿˆ—ÿÁÍŸŸ@í`ñk¡P(AÍLÕmá-œÊGÞ{-uKY¾r.—‹òI§ªªÃâ‡t]§¼¼‚’’4M££åǵÓÐÚÌ'¿ó o<6윪ª200+ ­VqëÂw¿ó¿øóçb8ü\òÙ;öŸŸ¦i±‡Ë{…¢…s•yõSY´ò6ªr£ky„ù !h÷¤6ÖŒW±­íÓyýB¡h Sªù„õ°Âúcí—Îù¬(,«£/Õë7Òü¼Þ赋/€gÏžy7ƒílrК¸ö6)¥ˆ.¯‹ºA[*°) ašfÌ zÔ“ŸCˆä+åÊ©Äe\÷ù†H§E9a퓦'¯锊‰“Q‹«ôÇtŸFZëÅãÏ‘¸½­Û £¸¸˜âââ8S…wÿû4B&9ªÆÏ.Bq©8gåFðÌ ¥èƒÿÞtõ$zºu²òút\*)³PUÁ⊺›ßY„GUøÏ/âÓ~“Ü\st²Üå¼óSÆ <°±±±IB cè‘Z:º!Ú •ç1V+³Ó錵ՎµnÒZ«*¥Äëõ¦\û›ŠTHc"©bŠF‹C*˜Á_þ¦ib˜&„ÃD—2%CÅ·÷Æc; %ê.ܱ÷FY Ý û™:}Ú°í­õÒ©æ÷ä#ß¡dé{˜8¡žbdßÿ|å/Ì[«laž©®Ë]ïû GwídÉ’Å L"ÅüLsäã…3êæÙØí§"/#å¶7ÎRqߌJo‘®Êûf ¬,õÆßm5Z“øý!<WLñ=nÅ!1X#…4å`ð  ¬ U+F\œ‡dq®¨Àgk+´ÍY ƒ­‡6ÚÆ}±ÆÛ mE#XOR\•ì, Af¶¯KAs(xO†FV†Jï‘~:ûLŽîéG2³5*(ª@ÕEÍàª÷—àõ(0P ù¹otãñjE!/×Î=µ±±±±9ùX–ÛíÆét¦•Ñk)o‡ƒŒŒŒ”k^Sís"*¯a躞 òÆ«’Ö±Sí‡7;Aåu:tvvy®ø?Ö¼öíà/lâ/ý–‡ò߸¼‰×(~~†a¤œßÒ‹®¦Ìwˆ×4°}ív"¡×®¸>¶æ5~~£=|Èõº™1wNÂü:6¤láN5NëÑ×ΣϮÆívsÏg¾Ë®]{hlhM¹_µËI @"Y·»›GžkäŠû6Ð;Jbf(еW­ ‡ÃÃ^¿t» t]eH§{¾ø÷gò833Ýø|Á3-)%>þ»»“%‘ÂZ ˆ¨l*Ç`§4…”.áñÂ4uaÈóG>[±Uà³H> ±ÎWvîÜIWW999†Á¼yóxàG»¹³X>ËM¦[ek·Â5ó½lÜÚK~–‹#m~.ž›‡âtîîcM¾›Y¹’7ù)ó€,ÏdÉ/øì“NJõá,{ºÙÝ Ö¹xðgÛ¨ZZË$"ˆÊ,jóÏš·§Í9ÀH»ñ$X¥ëªmõÆ F3¢Š'9¦h<17Š¢àr¹hؼ…M{ƒ,YœÍžWv`¸]d¾ë2ãöµŠ,«`JE$;E¾ÝÔ~èß ™àRRÇ0iZ4Š(U$Ryí ¨…O…B(J º®ã|àÐ/]&MÓŠh²Öï&Ç©ªÊ«/¯§rv ¿ÿò¹ç#—Ñä'=‰­N~P0º¨p9Ñ_ÿχxãh Ù¥Q“¯T*ö7~³CnLœ\·´ˆï|¢ˆø(ðd•w¼V'ªòZ.ÑéªÊ#Íod£4Ÿ/@IINBlWUUåœØX@ æ¬J BӤРÕj…˜2¦›Òú`;tºãµUàóÏëtbW£p¶:BwÑ%óÉ?eo¨ªª*œN'^¯7÷R6!“«¯­¢=ä¿îÛÛ!©Ï/æ¸æF{¹‰‰w×°c]f¦ÁŸ¶‡)jo˜ Ë«ùåýG(*éeÞç&ãÌTxãW äh& î*ãñgš¹ð¢R6?ÑL^—åõ‚/|¦úŹ|ü®ªS5E›V1¨ªj¬%z¬‚W×õ„è7c`•îMÓŒÅÒ¤R?sò\hÝ»hhžJÁ¼IL›:ÔVš¦ÅbŒ’)©©C¯œ5Ët“]“Û©S<;t€òÚIô~£û :\öá„㘦[Oœl`õ×_<Ìuﻋ+ó­_<Œkn>Ù5ÐB!p¹æçñxb×6™¬²9˜;þ“Ô˜]] èèzê×­~Z6«µvþ2{ÖˆóOL‘Åx‹Þøè=«è«øMŽaJ7ŠÉŠar»£…LVVV,)/?oÑu¿ñrˆµAKB ‰©˜ÒT0MCª– ,„.#hfD""TÕ;Fª6h›óÓᆄ³¤ÚÂn…>;èïï§££ƒ@ @(];×rØÇ×¾}˜æÍ=Ì›¨’]äBÑu¥n*ùyN ¸ó (¾¼€¹3 ~ý©/%Æ\tó .üþ]ï¯ã]q¿[ pqñ‰ÝÆÆæFšB# ›?Eµ”ÙŒ«•3Z¼Ù°õ îã„Ëçã8²‹ƒm|;·3eÊÇcûƒAœNgl°eœ5ñŠÖZc eëo*R5–±Sr‹òŸ_x[V]˜ò8Š¢ŒhðÔôÚ~òôî¼k¯¼°WÖ‡˜6mfl~ñ*èHî×32Ûøãߟ£lî V,š…išLÌÖ9SSª´#x§‹%3ëÖÈî;裾.3åöŠ¢ kO¶æõ–C¬š[Ëw~òS>ö¡ÒÛ­à÷¯íãSï½+a~)ÉRUÖînÇ”’‹f—§<ŸÅéˆ)í|év!Xûäª}}Ãâ.Z0‡$D48± :Z›¦âp˜Ša˜fTŽºAëD„–F’ÅÙÚ móÖæ¬{µm8}zè9i†X‘ÿž/hÚÀÃz-å6Ö£lY»'åïúv­¥É+?G$å66ç/Íûïgûë_?ÓÃxËcè>º[cÏ–ûhG¸½¥‹é{–æQœillHŒ®þððÃ`DèØ·êìL&åF(ZÀ¥ —sý]@×õ”ñ8£Ù_l† IDAT‡1MsT«T¤Š)² ºF"Œh`µó~ö…?óÐ/ppÇÌÖªéŽÛ7^ŶZ¾SͯüÂEÜ{ï¥xTïûèÜó®Ë‡‡4TdFÛ £Å„”R8XŠaF)Maš¦Æ[<ÉVGIâ>g¡ l+À6˜øŽoãßDa)ÿq߇Y³5ÌW?2…WúÞð+^yO?øÇÃ9tì9Ìk~Ê÷þû¬Þâ«ï›ÂöNÉÚ¯ý„‚¢þóG«É•&_YÊ£o¼NõÛ¿ËÞþÿúëýØšÍù‡ˆ>)·9©¢—UˆñzݧÆ×½Ý ð™”MH­˜Ù¼µyå¥W©ÈôRRRj6ó/ZNyyáp‡Ã5jJs 0$®NWÉà)b1Eƒÿž¤*z¦-šKûÁýÔ\ú6h?JÝÌêhÁ<‚ÒHƒaTÕÔÆæép8è—B-Œi~›×C›’O~o?ÛŽüîÓ÷ðÝoÿzØüTUÍ3×Ýt3ø|¸ò‡rzS<ı53éÞO²°hHÅp X%ï?g±“ú•…\èj¯>“VãUy-ÆÃd‘H§S‰Å!ù|¾˜)Üÿõ³s¾þÕo ©À µ@›ÒT¤4„4L!US˜&"#BÁˆpmƒ†‘ã,ÎVøl4IJI³N[>|'åbIi¿äF²Z¶¢áà¸c:žö£Ì¸ö=¼öÄ·Ø-k™ã•Ú»•Ù7ÞÎôòlönz•cÚTÜmG©¨Ìå.¤¯ÛÇεëXøî£v­'ñŽ™ Ù¹k/Ë®]vv¾álÎ{Úþ‚Ã{~FãáÔÝ6çþÝøz·ÑÞ²åLÅæQ;}&%SêX±ê2 ਨÃ0ðù£jÚ­G9ÖØ<âþVtP(Â4Íq©¼‘H$ÖŽÊk ‡©¼cÅ0-»å&ÊÝ&E¥Ñ%K£Å0Å·kÇÏÏ*î^[¿‡þúZKê# ÃHãŸä¥·RUáïû7*ªËxï­7ñÝoÿ:¥Êk©¡#Q]UMùäz ŠG™Jõz„B!®¸çȤ˜¢C ­Ø»Wv¶ÏÜì–(ò¤Å¥ã}¢1Zñ1L–ãyºjt ``` ö~B‘ᢿ?€¢(ddDó’¥”,X8”uÀšÒTR8œƒÅ°©+RºbNÐvÒ©ÁVÓã¬U€OG,’ÍŽ‚zî½µ˜ie—³ç¸`ïÞœs¾€ÛQÈ|æÿá.ŸC®'Ì—¿ó]~ôËoól³Â/¾ŠCíOâœóJç-á© ;øÔ¾È‚«—ñØOÁò¯ýŠúœ•»dûœ•ÆÆæd£‡Û …L¾3=”qÓß½i´Óxü0Óæ}à¤?èÛnH5oæù¹>ÿHO+û}~ôÞN®š±èLÇæMPUVHgg'§SnÛÛšèl9ŒhÍ¢U±ïÕ>&ÞQÛ'£ªj¬ °Ôá± âæ[ë‡Ó!~}¦Ûí³Øµ°bŠb_}!<™ÖmZGNýlª²ÆÇŠ)Ú±y=³–®àð¶7¨›=Ÿúš ŽîmdéÌÙÀp•wóO+Këu°\”OeL‘ÅH*o:1LÖC)eì5þžÆÐûÑú;SYYsƒ–RŠÁýâÖKd´ZHi*¦i(ÒŒÆ ™¦¦Ô…9Þ W[~ËÇ"Mœµðé`¼¹Àgk,’¿|³NÒª§€…s XP ¾'ö»ù\@_ˆÙ—òí‹q»3Q·ßþÀÄßmrýây±}ÞùÁÄxƒ9Húòòb °¯=„·Èe+Â66IDÂ=tÿ9GŽeîÿ‰Û›œr™´}¨9NWÛöS2ž®¦?Ð;`âv-dâ´«OÉ9Îvþ¶o_Û{ã—iûÎgz86o‚@È ;¢q|ûAšòÜ\\_ÅŽ­{È­bÖ‚)Ô´5S½¸*VX¸\®˜ÖXE¯eœ¤( ¦i¦o#ÇFòšÛøÖØHo+¿{b#9™ÌgÒù›=¨š—0NË)Ù8+‡K¡ëøÞÿÁÆb˜¬¯© úT|™N¸öšè¦sð<ávÖîi£²~5ÞÄí­vê‘ žÂmkyyOeÅõÈ\–/P:sUl»øùYùÈÉi2ÈjXÍ”isxyë1VΩ¦¢n>èzL‹¿ÃŽ?çx«ñÆ%Ïo,’ ¬ÆÃde6 ^£a~¯×K?š¦‘ŸŸ7'š„”°oÊ8¤hjFó SHMD×K]¦‡t>1Þ\àS‹tV×çk+ô™ ÒßÏýß<ÀO|ˆ‡£t]‚„]{Н7—kèƒÁ4ü¼øë"a‰LS¢ƒ—5vu%†.c¿3 ‰N ©÷³±9‹ h<ò,º>¾‡Ué X40Í4{‘ÆI o'ý=›ioz#½ñ!´4[ž¢Çϵi?úsïùYZÛŽ†r ;†TEÁ©ª¨i®õ³9{élnc å¹Z3ý½«®¸”«NÂ4åe1Ô*|G#ÞÀ*~½ëXj¯Õâ:^£­øÖXÇC$I¹Ÿ#§„Ë—.cé¼ êj—1çÞé¨ãŒñ‰žOrÙ·Çæ·zÍëoï`óîÔˬâ*y~G÷ìFŽó©—·³€£‰}¯ÚÎÊ‹/ Õç§oG3¦„xqÆŠ‹JŽaØq,œ{¨Îl¡«µ˜Íä—1yp~z ƒ'Ã0RšƒÕ¸™pÕå1•WJ9¢ÚªªjÂq’[·c×ßhdwCˆÖ¦.V.]8ì8ùN7zÂàt8•1E#íg)à†aŒÒÚœH$‰åR'¿§TU‹µºjqÙËB‰>® ¿Ñ6è¨Â‹CBJ©HÓTRD£LaèaEU…iJ]˜fDšCާIöt´BÛœûœÕ 0œ¿*ð‰´4 žðÅÒÜÖ¾ÖÍÏ~ÖÀŒ+yú™&Úóœ”TåqÇÛ˘¤8è cöø}&­Q•xj¦=K¡°*“®€àÈ~ÚInüP1ª ddñrw€·Í*¤¸ÎEËáèïòk3Ð^æçf¤ÞÏÆæ¬F oÅEíÑ¡ÁñŸÊ㟂k#FÈýÕ…¿ÙÁc»ßà@KCü`NÎyߊ/´MJ¼.rjêBÐÝ4[Û»yÓäN¨#S rwQ?wZlŸ‰)‚Ô1>0¶ÕÉ0@²Ô̦ÎÁÙµz+ßÿìýô¦ØÏj‹µÎ—0?3ÌNÕh'*>¯y7ÖïæÒU×`Ãç§(JÊû¶›¯¯%3çz%ïºù¦1秪ê°ã¤šßÃ>D{ãn6v“!¢ñKÉVÖŸ}/<ÀKkwÔó tìçÂùõÃ^]×1M“õ{úÆ­ÒW嵊útU^ë|É*oüºÞT$«¼ÙÙÙ±<çѰֈÌœ9#‡da)ÀV ªÁÈh°4«ŽoƒN˜‘ž|*±Uàa§eû·¦ l?÷°@ËÈà_þ¥6öÿŸ~MÂï/¸¹š Rì7õ¢J¦~ ¹)¶€Ïß]ÀÂKþ\þeÆøÇkcsr9ùŸ·ÒÔ1Úu¤™ò“Í&M:6<€;xˆ—ÿöG–|üãcnß¿á'ø»²yÃS,¹÷³cnoz0#D>p ½ZÂ>×íãñ ›)ÊÍ&ü¦fas6 „ ¿sYŠƒ¼Ì ¾ÿõŸsÏ>Äê‰(¬?ÔÆÒ¥—Å 'Ó4c…ÁXk€!Q¹KwM'œ˜’…µ~ØRyãÕÂuoý8ÁH€«®¿ÿž}dÕOJS¯ÆPœ¸ÚˆÔIr«&â.*cb’ŠLª8PRQ+î ?·à‡Ï «ã ï|×Ãû›¦™  ÆÏ¯³£‘îÁðlþñü&f–þ®üBl¿x+kßTTÍ¿ ÿÑ n—‡yó.ž Æ%«®Î,'›z{Y““r~'ËÀj¬ýÒ7°J$‰àõz‰D"1Gçt…Bx½NÚÛû((Ȥ³³3.éss¾þÕû·$|†F­±¬6haJS2º8Vüê^áñ"Ò*„Í pCJgLç³!–ÍÉá-qEO‡#ô¹bˆQ"2õS¤ÑÙÿjÚ4€t)|ä½Uä9Ó¿Þ;9NÙUÄ[õì}½CA7 'gSTé¤qu+¡ºjK5šöôR:5çìo?°9çé~ý{F ·ÔÔpN”ˆ¯þç?ɦõ;¨»ùj pŒ=†Šœ%Xmn§òø£#M¤i„Óú,Òˆnoêi¿sËïñïû;Æ5+ß‘ð;‰>¦Ó¥Í[…CÍýlø‰Å&ªæÞƼ¹äª rÐ X´h^¬èU%­|Þ`0ˆÃሓ0þâ'Ýb9ÙÀj¬bëÚkkñä.ŽWYÅRªíMÓL9ß9¬@˜º .·›†ã{pWS?‚o`‰DðxÓ†Xo‰ìX¤SÍäÅ\ùÆA&~¸†/5PæP õI6"L.Í¥,4ÀšŠ)™~£—[ï­!_“<þðQV?ÓÍg¯Èç—ÏuqãMxžü} î­¢¯=Ìïžldz¡d×ö&LÎa’ ãÔ#¼|ÄäÂjÁCÛ‚Ì›¢²m€ë>PGUú©66o Ã׎n Ýb\NýÊ­¸ñ¡ TêàñX´½þ<}<÷øo¹èóÿ:æö}[Á0CìÝñSV]™Ö¸a°82öv}[~ƒa )½ Æ^ÂjÚHØWÓ˜ÛêÝ·=À¡ÃÍdOÓÒ:þ©D(Bs!l÷œ§4ßŵ_¾)W Ä;bkD»‚P’¥òÜ_þÈÊ‹.!³´"å1,Ã$Ã0ðx<±6Õ±þž'Ç¥‹Õò›*¦ˆaÅc) ŽÌÜØxMMÍ”—§Žó±ædYÉ1L2ÔÎê¿ldÖ…“ÙüÆëÔ_qIÊùE"œNg,6Ê"³x2¾M«Ù-ñ¥;oÇå<%Ô‡B(¥™èºž0?+ž)U[®iš”ÕÖPV[“``•ŠäX%kݰõ cë›Èž2ýkþÈ„%·RàëÆ“™7ì8ÁPˆ #¬q +“NELÑðý\.× ©¼Ö{,ÕÜ¢m®Cï ëý>{öÌ»‡¢iHˆ¨´ŒTbÅ!™Jô4%ƒqHztSêÑ\`aŽ+0ç|VÏÆ"ø­Æ98¥çlUÇ‹.t©ŒóƒJ0¯Bãùõaê:ü㓓xí±übû%¹Y˜I‘WÁ4½Ÿ£EnnX”ÍúmmtµCs·IGañœ\æ(ìÝÒÆ'>2‘}O§|iÇvµÐݪóôš™E«×½«†ÞSš!Ð#€]Ûœ¥´?z'!I¿¢AÁɵjŠñÿÙ{ïð¸Î2ýÿóž2MõÞeI¶å&w;Nw!Ø”ýÒËÂï‚……¥fØe—²¡5ôŽSpbÇ%îUî–Õ{M=å÷ÇèŒfF#iä8ŽíÌ}]º$[ïyÛ9:sžs?Ï}+{rÆ¡ÞC„t/ý§v˜Þž¨wÛ¯é9ò"úßœdÿ£¹’°/ÚøŸôø`ÐF”ÕLÙÖÔ;wÒÓx€ôº«’ê?…ÎìŠÌˆÏ;.öcôô PPTÀÓÿ÷߬¾ö6Š*ç2èñ’uœ%ðdyÉ&ëëÍô&+€ÏòN,YýE³¼Ñ6E­»wÒèqùèÝ¿‡fW9«ï¸%¦+:Ú¾)>¸ö|j–WÑç³sÅÕk§xŠÿ…¢e“¯ë˜f~¿?j}ñº–’…ø>­ùuŸ:EAeå¤ûísœh]sj†š¸ñÖÁÀ¶µ²bvvÂõuöy)šæÞ&¬’y±’HÀêtÓ¯§†`t4@zz:CCC1ªÐaDg1™Â$l‡dbH&’°ì Ãbea:È`Ù!éF@È’ÝLÙ!8ßXàó* õBÄ:WQ¸(7+‡¹W• Ë÷ý¶™ÊúR>rY>Š$ÈÈ”HWHS‡›º‘ {삵+‹P$kìs½xN&Jºƒ‚Ú"îûÉ)†s\ä¸%**Ò)žíæ#——b×er+2È•@’m•œóKP7…· S×ÏËš^Ó›÷i¥óN[’‚Ä4¶1)¤ðVBÖÛJ÷Þ¶ØGwÓ0÷þûØ»¿…U7ßHþìBæ.ZHAEå§™ A¬àÒTH$𔌒%Ðåñx&µarg`(ý4uë¼óÃw±úŽ[&µašÎö)¿´ŽŠ²b”àÔO–RôúâmŠþºþ5„иûóŸãñGŠïèÁ˜c,k®“Ùµ´5r¸¹3æØx›"K­;ÑyòH(9ø ¬˜]=©€UQ®“¶uNèãLÚ½YVÑטÅÎ'{MƒArr\x<þHJ5„ŸËÙ!aF‹`!Æê%E5¤° –!t]‘œö°’a„„®Å’J¼‚ØcR¶HIãBÄJ„ü`¦,°‚‚–ìÕ7†!SžQ2 ”^’‹©™ ØX\ Ü3›ˆIJ½“ú+Ã?‡môž ଶsÃm‘ãÿåÓU€É‰½C̾8üb ">U_iS”=žVôOuãUÃW•±rF³M!…RH!…™A’$:Lƒ“Ç:XzS1-Ç4þû¿„3-`08î­kwEj€§ }>_„N–‹N5 X%B"›"KÉz²yºË/!³JPê÷gƆɣ„øÓ“p×ÍïIXe]½¾£³ÓVÞõћزé —©üò»ÿÉ®ÃqÖÍ› `e·Û'­M¶Ð°ì d›=R_«ëú„uŧAG#¯¬UUÑ4Þ¾~peSž3Ë+¸faöi³¼VÐ{&mŠ&Ãd,ïL®±øÔrg€ÂÂÌÈï„”——5X¿7MCŒA¦‰)EŒÛ!™c Ѧ! S“ S†)„¡……°,¼áℸ@óxSH ‰Xàóîjx» bN¬ ÍIfúùþO»(+U)¯É¥¯ÇË’‹ò@’=lâ.Uhë5éèñ1/_£å°ÖöAüé.–K<ôÂ0~o><ÑCË·gÖï pû»òÏ¿‹,…R8+7)¤ðV º°ŠšÛkB½ÀˆÔ¾ÚívôPØ Ù{ü]Mͼók'o±‘š¦ár¹p:I¥ªž®’®ë‘úØ©j]ÍÓ‚¡Û/íݵ•ŒÒÕÌ­˜ɲŒ×ëÅf³%xê9´GíJz"¯_à¬JÓøõ% Dëæ:xèáNrÛUîûæcó”™_7ÒZÞÉîE‘õÉJäüAâ >::‘€Õ©–vÌ̼Íϱ§GF¨³¸ó—Çôa­/S×í¶ µØ“!‘€0-Ë›HÀ*™±¬ïv»}F"[¦ºÆ\®pðív»ñûý˜¦IvNvqj‰&¦ ¶HB ªІiH¦©[Œ°0M! sÜI–m‘>ÞÌ4èT-pò¸P±R¹j)`špéµù|àC³Ðû©^žÍþM´êæ//ã‘Gšè?ØÇ±×iìÒ‘ƒ¼Ô­`?ÑE»O£­×ë[;™µ$‹Ùy*Ï¿ÔBI–Îpb;)¤B )¤p6`^¿Ÿ@ ìe/Ë2:Û^xMÛ›xéÙò1{þ¸'¬•*›LPÍòN—k¥ý†B!dYŽ(>O4)Š“.lÕôZ_ë~ñgöþá¾ÿÇç˜}ÑbÒ¼M1Çû|¾H ªªª“®¯Õ«Òß|A¯[>ônìQiâI­O*åË_ù,k ‚A5’2l¥('ZŸ•Nm¥ïZߣ×÷£ÿú?ZOMN*Xë‹NQŽ^_`Ô‡Ú½yk>Ê?Þòa–UçNðq¶ÖÕ5äª/îŸt,‹åõz½ŒŽŽ …„¦{IÍP§¥¥át:“Nm>ôëèµE§—O˜dÒÓöC¶Òü…|ù+_loeFÿI6L+ýyŒ64É0ìÂéÔ…ÂÒƒB7©TèÞtœ—äÜÛ™˜Ñ:º)%ñ%$Á Ot²kS—\QÌßþÜNn™ª IAC%¯¿ÐΪAy¹Šaš`w nêfCaAz?¤Kä:|²“t–¨<þ·næ®.J ܤpÞâÙ¦}œôPÎ ‹/9ãý?sr/MC£|pîâ3Þ÷…I’}œòHÁ‚eã²Ï>ú7 ã«“ñèÙdøý v{¨¹höÖÊËË#,¯$Iöt&V‡#éÔØÉ¬’ìÂä´ݰ–cC‡YÕíÂM&éµi º`bêl45¬À4M KÂJʧÃF[ÁÖ‹¯¬çêKæqÏçïeéÒå\éZŠ+b•·-µfëøÉÒx?zç »÷RVyqÌxÑ,o|]r4J²Ò‹–D˜öŠYuEêxÌ*ÉâSŸŽ}v{«mŠ’Ád"bÓ!ú…ƒ‚áa/ùù1ÞÊ ìÂXŠb M—ÃõÀ¦)TÕt]— °.ŒpJtÊ)R,ðäcœ& lq¿çe )[¤3 {v&ßüö¸¹ûÒ†qýËàÝkµ»ÕQÇ,¿®(ò󻯾kÑøï¯¾óM˜h )œE2oÚö]!nÿ{7màöû/> 3Lá\‡[Mgþ‡³8tt€¬â<ª*±Â.  hpxˆcCAÖ–MÙ—%*dvVjìtÁO´˜QtmçtÞÃÑP´MQt­n<²+KYàËÁ¹hz&Y–#ÖPÖúbm˜ ûH#þ!…‡÷ý{>öIâ+f-1'+8NhÙ˰ ø¿o~žG{) ~ãmЬºì©^ dT_Ì¢"_d“²,' îöÜ’q{##Äß¶ìä¦Ë/šd4ÁêœIÕ¯¾Ë'~õí¤ÚÏí£ƒì£kx`ÂïdI°ãx€—vw£ÈId¸pÚçÌïŸ)\˜(Ÿ[‰ì®¤v~=¥ÅùèºyÈo?v”íÃ4õzšp¬U“kjVšj2A¯¥¨kÕÇ&“v áÏåøÞè ÛE§¹:NB?ºêÄG€#[š¦œ§U㿾Æû9vvö4ó;>NP›8–Åb[Çů/»|¥ùvì€é*gþÜyQëSU5†ÙLTŸ¢<00@ß°gZ–>:M×ÐÑÑAOOn·Ã0˜?.°|óì IDAT›>Q…ŠŸu;¼¬^ζíͬYPÈÖ’pÙeìßÙËü¥ÙØÖKŽaw:ð SW蘆[àé1pÛ5Œåi´µèØ›{’r¡u{‰ƒ¹ó²R™Ó)¼eØá¥_VÙßß?£ãIB–äif?ä‘Qv÷Îì^ñÀ¡­ô´õS¨›Ì™dˆ×GFé‘67AUmEI*ÀþÃÞ¿ó­CG1wüž>5m{Ó4ÑLÌä,¡þzp#ÿ»g ÿRµ˜[,˜¶ý×7ü•ÇOtð©ìL>9+y¦$…¦‚a‘VQüA—KæàËGÉ_ ¡8 ™µ C¶³yç>ºXfàÁ`‡ÃIMƦè X‚ÝÉ`Õ›Z©¿Ñã½þÚÏ Ϣͣ±ôʵ”¬wqˆ°šjL¿9ÊáV…¸ùº±`7ˆ¦%f'SpÖ4Ò¹aÖÝn·3K£`ËœÐÆ£¬ó–ˆÅyöÓŸq-¹ Ž·XìèĶt“ÇŽþè™Êå=˜åMtlüš­ù&ìFÏñtDÒâYÞd®1‹åµ\OdÛí ƒƒ>ÒÒììÞó®;ˆ…°VäH˜¦!™¦!©6Sº%„åN§.BL#²}< :Å[pn±Àçy*4œçð…‚™ÖKHÓþÇÂÀ0“e™rrrèìì$##cìC8,î šh"€sÄàþß 3Û­3P6̶ãËêÂïú£½T-rÓØ>ÄœÒ,f–[àm¢´zŽëtVzH_šÆ«úY»2— O0Ð8ÔØÃRw)Æxš~ )œuìòx9nsòzojâ²hü w@ãû“êÿéQ¢{€]ƒä«S¶í …øÞ—æ£'â™ ûF}·;yàdjén]ç‰^íê%MQñÛ¦~øÙ3êe@RØ;ì™¶o€ö âókübëë ŽvЗ[=eûÇG¼¯C#lª ’ Î$$K¥5Å=\p„ˆx þí±—),”ÑjÓŽÛUŒdz€\$]ç’ÅEÒfg"`m!cÙ%Ëž(Ú¦(D§>[Œk¢ ¨4ïväÚ~.-¬ §¸jÚØ³D¼ ÓdA”a,\¼"Â4NlYA§$I‘À.:·¥åeÕ5üèÿ@u+ÜtË­¬¨Ì‰éó‚eH\‹]”_MåXõÖd@–XX¢tꚺ>]SM("R1Ç¼Ž›úè!…ÚB ‹pBĤ‰‡B!\.¡PhÆ©ÍVzùLmŠ,̤–ךsô9HÑטÍfcd¤Ÿ‚‚X;¤²;$S„ÿNÌ1;$S躦!,;$ÃÐ%CвC2ÃBXñÁÞ›c‹”ÂÛç}|¡°À§뉲'…! SJâ&bš&555˜¦9v#׺øõ:¸í}Ù w°ôâjìœRì\T:@·7|cüÔÍüö7=¼ó5l{¢“e—“+6§gžJÍÏ>ÐÆ%—”³HRùè-%<üê(w¾·„—6õò¡;fñàÓƒ¬Y5£¥¥Â[Š^]ÇÒéôùHþ‘"9è&´ë:Ç=£èoÔš(Áñ#ºÁϺûØvª•ÒÜìÅâõáQŽÛlLî~Õ£éxC>/Î$îÕö uõ³¥»›‚IØ 7ë÷ ³Óëçùm»p&QcœÂùƒ:õyáŸW-ž‹œ_Hçæ]Ì{ç•oÝ@ €ÓéD–e†‡{IË-Æ6ŵ«ëz$¥Ù ®azoWˆ Ô¬ wºà7‘ÀS¢þâ‘WåÂfËŠ0SÍ/Ú7w2†qÿÖ§øóÖ ÷~æ=SÎÓ ”x›¶w°*§’ÿüò]c¥&ò¤ë›jm¸*")¼“­/Ú)zžñV[·¾LÀ(ÅѾ¯ÙG{Ælög®áæÕá:e+=߬¬ã¦7~¼ø‰ìr&µCK}Ž|’aú¤vHÄÚ!É’ó ‹c¥XàÓ™\8,ðy§pæ‘••5áÿ–_]Èò±Ÿo¸}üFXPYù·pºøðÝa9ŒoVs ß,s\v¾ú‡L$%|¡ÔfòÉÚðCîmWðÑ»RéŽ)¼5°ž—’Í–8¾ÃýŸyDæ>ÃÎád‹éÖ­_‡k–§_ƒ<öa¤È3›`Œy} Ù×¶¾ .—wws‹<}ºv ç:ÚüÔç…øÜ…†AíÕË"̘•ªüПCkù|ií~ñ?æ“_ùçHg¥@[6EɤDÇ X%ÈX)¿“ dSç°kò¼ô)Ûwh|éOAŽìÙÉð]¥ ëÔâûvÛ0džzQ×L;ÿ¾!/ý)Àk¡6.¿µvÚöGÚü ±õøIÔ¹S?ÀÍtoœv‰¹¿5ÔÇúªA®l(²½$àéÝímø¨¤^¥ðfá†Õix<t]hB0Ú½‡Ö‘tŠróyýŇPóX¾j5i]ݼvÂÅ'¾üéËk¥¼F¼Ó=$cSɸdl˜TUÅï÷'dÛy…MCäÌ*¥ÂŸëÄ!˜3wR†qºyÞzûÝ´1Òo¦5Î…%%®W¶ï`AI¹%5 Q…`0±§ŠOGj;AF~5é"ŸWw €-c+@Œ?w+æ/fçÞ-|ô]«yî?ᎻîFB„B!æ.Z‰$I¸±/$I²ù!.ï'z/­—#Éà¤6'by§Ãé^cÖqV ±¢(ãìùD.œ•mb Ó0¤°’a¤ì&GŠ~óXà "NáÃÐ ²¢£±“/~¯‡/}<‹½ÇM´ðu÷ñÜIêUEÌ/†;ï¬ ×ðóÀc=,t†ð ¥6‰¡bßÿf ¶:Í3èéwòoŸ›õV//…–W‡lø1ÝÓ–AQ~n·Ì’<7uªÌMå³IW\,4Ãø¶¢Òƒ I ¶|'Ïì1QC£dV™SnãúòY¨¾ÊóŠ² µ`9uY83æeºÈ ÂH®ƒ¹N;é2„*êpËiØT9« 9(S0ç T{¹ùÏïÔ8ÒÞÇŠ«ÊpçfS§ÍÆÌ P‘[ˆ*Õ! ?ù5T{ ¹óÈ2Yˆ“:E暢bЃsƒcý—“VÚ†‡«œáÐ #Ý:{ôrÑÊZ2+jÈp§¡ÏYÙiн¹²¨Ã=¾7…‹IÆ(Žœ" ²íÈAe.æ8m\_^ƒ ¹…á½)\Dn]6ÎŒ9˜¶ îÑ8u¸Ÿ ¥d¸ÓŽíýìt¶,5foÜÙ°´& ·­€ùŠŒ-no”t6Y‰ìMAÑ|9%ܾ\jîMFñb²t?g9³«Ýˆ™k…û¿¾_àÌÍâÚËÃ?öýaÑOÛ0?~h€÷ß]F™{ü‚¼vQDèÕïªgõØÏ·]þ~ñ²ñ~/™>u3…ÞjŒô´ÐésRW‘¸f,­ÍÇÑÔWòÚ–M\¼úÒ)Z›´uô›fâ—rÉJŸþ¶ê뢟 s“13ho$›ÎîŠ Â~äí»N‘¿¤r‚Xãž=TÍ_„s¬a²vÂ{㢮ÂJÚöѺkcÀKÅÚ‰©ÖÆè "-+¦„·ïð^íòð®ËâÕíLŽìÝÍ-ƒs§=NÀËëÛöQR¿˜²ŒðCàȰwÆÄôÖævÊ*ŠðôúHÏ›>±úȾíŒ,i˜ À¡Ý/QP9gZÙ,…· §ÚCô´ôndaÃí$¢Tìé Sì&(d^}n˯›‹’È Äªž[õ±Ö×™°š g’aÜú·çȪ¿Œî£Û8ùðË”ÝXËÚîH8O‹iœl]öü öaU6ů/™€ëÖ;nxÐÖe„U¬1uezV3ZÀJ’$¼¦‚Ëׯ_Ö¦­¹›S-ǸºÖàû›{øò'¯ˆ°¿’$a·Û'œƒ­=´ôŽpÍ¥ññÌŽPâöÄ:²,ñäúfn¹²jÊ9Δ嵎³0•èÓ½ÆfªBžžî`ttI’HKK‹¼|X¶|i°;¦±i „N6•0 lJ²C2 M2Í´°pt´)øÜeÏÅTèd!ýë_?Ó}¾¥øÆ7¾ñ¦1ŸùIŸˆ4ÒðâQÿvì Fþ=ÂHd< Mc´•ND¾»\.a†4öÇ+Ìð_eD犢ˆpJŠþõKÿzOüøôööâ'À²¥¹nŽï&§ÈAˆòØ…y¢i€ì¬äShâÑOïá>Ž6 2ÓôŽÜ®äì"Îôô SPðÖ(Ù¦<‚¾~žýí\¶FþðØË,X¶îÿ-¶Ú¥d%x8up;¦3—®ý›Ù|r„ì, řñC¯SPP×ÚÇÿ|ü;ìñ ät6¿ôSŽõk”H>ý2E³f“W'ÿÈKsøÔÜEsÉ’F8ÚÖÌþõ/p¤S¥¦*>Hà wÿ€%Ë~öÃFljÇ»½di  Ÿ‘»z_FƈIÿÉvBwh7x|«—Ô'Ü›g~³›üt‡Ë §ÍGhØO÷¦VJ/©šÐ~ÓëÏp€*Š<'øÎÿþ”ù«Öо¥2—ÀQYh7½¾…ýmF[úHÓ»øÍÓ¯°¨¶œ'ÿ+Ž¨Ì©*Žë]çw¿x€¬¢^|þYìž6Ù|ˆ¿ÿ«©ÊMiûð׾Π{.G9À¨zŒ‡Ÿ{ áT(É´søT3yÙÑ•Øüîäåe°õÕcgùóºWYºl ÷ÝûMJ—\žðZHáÜÁȈYVHK ^¯wB°‘“apõgäa]QFN¡7 Ó7ÂhË1Ömî¤××I}i;žÚÉò+WR7¿ž@ €ªª;K4+Ú8:0µ~öù|!0 EQ"LãT°Rw­/UU#õÓÙ0麎Ïç‹0“–°—uœ1,ñÔç†ÛP~ÍUÌ_ÐB #96›-†åž*í;§¤išõYëöó^ŸÍfc÷¶”UVð«ŸÝËæP§š÷3¿¢$¦Ó4ñûý„B!‚Á ¦i2Ü´“ø#~Ycçâþ’ëxíåÇøÌ'?N{K ·½÷#\¼¬»Ýa¸\.l6¦i&´¨ÊËÏe´·Â’„ÝMQ~AäZ±Xk/…œTUê2Æ£4ëÄ3½Ñç ,æÚò޶ÎA2XËëóùbØìéà³Ö³Î$'ÐeÍÓë àv»"׸UUùÕ/~½n¬¹B &Y˜¦)Â>H’d!LC—LI’ IR I2MCWMY²™²¤š’‘L¤pé€)L¤©$&“é:a0éi˜y|6³5À„u$œKüÎ,pœùœ ²ö¤cç3x>ÍÆd5P¡Ýõ±Ë´ Іs“>‚X™ÔE5=t]' ‘••ÅÀÀÅÅ…z}€š†L$üá‰tÙFóÆ®úØ6¡Û¹em];»xhë(kV¹Y¿e”EõY´DO3M®½±¿ë"XhãÖÒߦ³«·ŸàHßîSùòjëùà{ËS6À)œ5¸ó*)Ënap8ˆìbóºãè}%ìxô9ª>|ý„öýݤ9]üúÑÌÍ "_Tʫ붢øMÌom²ráåêG0Œ¼Jûÿ°•ù·5Q}ã)rÇÝJB½Þuÿ°I¦Q̀ãþrNoæC·ÌI0{w”.á±Ç»¹lv1ŠägÝ[Ê«È]]3Ù­«ÇÀH/m§t¼MGaDPþ¯k¹bÃSœ4 :îÏWIyN+'·!;§ŠöF?ýû½dOrÜð·Í„Ü«ÒøÚ׾ʳÿåøbrM/™—.ÆÕ¶ª¡†M?E_{'›viT;Ùßxˆâ¼µhýëÒ—’ý|jxñ•,dͪ¤wlåÕ¡"ÞÿζæfqE]ᄹ”λў¿b·¯bs§]œÏÞ}ÙÙÔ„cÞÚ ç©¼f«/»’uOþ‰ûØD~y>G¶?Åç¿öo ôú€Óá—¹œt™­ûBtš\»$œ äl¬‹[VÛ³ª¹*×IA•‡ËEé¬*4ÝD25†5'ɳ¼VÀš,gå‰R§/žat»Ý“¶¯X2‹ÏÞ÷qLÓÄ¡ë¦ –(± £åƒœh}Ãh“4^}ù—]»œÉ&ÏbïÙ¾ƒÚå˨--dóÉ.>ú‰CÓüøzÒ#ãEÛYýYÇgT-eØÿ2ÝCNCø~ý±»ïCãîÝ Fw‰J­µÍž¿Ó4±©‚`Ȥ©ßËœâÄ/³óÝú·)šoTÀÊR!Ÿií°…q«/‰ÑÑ.—‹‘‘E±ìb0FºDÛ!Icåy LÓbåX;$ÉfêF@ÈØMME¶ÏøA7Å¿ýXàd±R1ÆÛFÄÒ=ô÷÷ãõz£ì—Jˆ ²Ç$ÍXuYUþA?¤­%ÀïN ñ™ª¦³ˆ›ßWAÐ;ÂÂÚlf:|§›=Ê\é¬(ÐéÐu~¾¾‡ÞŽzº÷_šÃ¯ÿÖFÿ€Žvᔦ§pà…‡ÆH¾J‡ÿ$zz&n·BV^9¹¥¶„í/»„å‹Wsy¹ä %+è8ù8Uk—%h-HÏÏcîõ7â°i9‰½º%­„ÊŒ‰7èæÆM\ûþÏò¹{nBËöò—£­Ì¯rPUÏ,[ÉšSÇ=÷¼{š“ÑÑ2f•âÊqMxe:Ú¶Ÿ·o °"W¶ÿ™­Þ®œ4Ò0É*K ¿9M°7Ãù Rv7ÿ÷ä‹„2¤å8qdO|Ðò·¬£þ¶ÏqÑÊl.ÊJçÇÿó-ÒKo ÕxG:ŽNðH>rò=œÌam]AÍŽê°ñüó¥e ´øwÉM½ë8?øñ}—àò†KÙï RÙÛÄ/ŸØËŠkòб6æWÅÏ_bÿö—øé~JnÙ ®\< 祥UÃð]š†S7¥ šnrÿ3=ìk Ï¨Êã3ŸXLõò…Tdå“_9\;zŒC‡¡÷ídÃßþ>i¿>Ÿ/òÝiJ&˜ (+xu8Ó²¼š¦E¾$IÂf³EXÆø9Ŭ_Ói@ pÉ’Âî›§œg¢õYϲÝ=¯:aYbôú,¦<>¸ß½ó'^{‚Îè8†a˜¦Œš]Åèè(¡Pøù z£•’Ã|òsŸæÒ•ïàÊ+àJs£êáÚÞɘPk¯¢çh­­ÿ䎞êA˜ƒ­Ã[¢ydâ‹MÓXè°³¿©Ÿ¿¬oå@Sx^ioç×ÇO²Ùˆ9ÆzÁ …"çÀ²ÃJÄFOw’¹Îü~d®VûéßD×X¢ñòóÝx<þ ¬ø#=ø š¦ÀD`†Å¯ÂöH¦PUS2L]2MC†]8º0Œ1­#î4ÎZ3s@I…;±ƒŒÕ/O×,ªýÌæ”Â[‹ J+’ Öt"X‘·i˜I‹`ýŸ44îùTEâÿó )¬R˜ü}]ôv;(«O•¤03$#‚522Â?}gsª ùøÍ¹a!¬PÃ0p8Øl6¼ܹ™lÜÏœœ.š[2©o(dãkí,½f-9éjŒ°•ö9Y t4ÞËd‚멬žÿÍCäÎ_ÉpÿvFNêÌYVIÝÊ‹"Nôx[8†ƒA2l¶†1~}‰¥£Çˆ°’$‰ží¯lbùÍïaÍò%Hco´XY¼€•…'ÿôeV5Ü:¯1q¬è9%ª©hÙÁï?Ég>ý¼ÞÜÃÊŠü)¬>õ?'h/í£*£’“ùÍxY|gA-¯wõòñ‚Ü)¬~èý·×ÍbIš+æwoDÀ*™óÓµaêè觸8Ç97{÷îûÝ»o¹#â,„0Â@C’®ë². C—d%¤ÈjH×lš*;BŠâÐlªÐB§aSÒuUqáth»‰²úL bY$j•ĂɱÂ"X\ °…s­˜q-0@`R5ÀÖW²5ÀÖÏ_úÒ—>?fZZYYY¤§§“žžjg±zyi’ƒEK3©/sRXé¦2ËNýâL–.§[¥å¸X¹2›Ü,; ˲¨*±“•¯’[ž†â´‘™ocÁ¢,V^œ‰ ‰¼*7­Ê";]eå¼ 2 ÓX½2ó‚IMHÕŸûx}ýCØ êm:Èó[Ž1ov9îü.7¯>ý+ZFLªJÆêÐ ?O<üL[Ý9Ö å%9 õu£ºÒ8´ã9†É"ÇN­ÔGŽò«ž§rî|îÛƒ&¹ÉL·Ñ×Õ+ÝÍ‹OÆößztO¾p€ j9¸áyš{ ¤(þÁbˆ?ýéA\yeäd¤Eæ~ j*óxîÏaϯÂáíÃïr3Ú¶ƒß?øs–-hˆ<ñ×_¢Û*ÈuúøãoždÞ²ÈF¡ÁNü;ëwœ`ÞœÚs<ÕÞìÛµ›£mmöF·UÐspÇz&îMsç%Åű{S?ŸÑ¦ƒô…\d¦Û¡¨*/Á޼Ɠ/4FöæX”ÇíMZ~ydïíMfº I½ٱí5¼Î {Ó?8ÂÉ{“¹‡dj€ƒÁ ªì\¼0 Ã0‘åpàêêáȶ§yôlkmãÕ>Lé%—P;o1½†LQiµ•Ø•p‡#é`Kàɪ9µjs§ ~£ëd%IŠÔò&cÃdÕ‘ªªa†£+È”„œ8Ù—.¡zv=u¤Ö¸V0@›$MZ'kA’$B¡²,GÆèZ^E–{ÿý>l6‰œÙ+9éÏ¡àØ³Ô¬¼xð ‡fhhˆöövŠ‹ ùõWÙÞD˜°~Û eÙ>ý½..š«òü˃”çJ¬;¢.SãOì¡xž{bú"é¹\éù¤HÀç>J«ðÂö#´´qY©à€×޾g óæRæpðìÆS\´|Nø®+æÖ×rèÄÓœêYBÁÀ^¤úzŽmx™¼Ú9”æóì¦VÕ Ùs)+RØr¤ŸL-HÓ¡½ÔÖÏaãË/R3§§-ÜÿÅËõ½¹å yŽá>O³ðÊY8†;Ù}¨ŠªZF=]ìk,ª-ŠÌý¥m[ƒƒT®^KãÆ°wµ0\SOiV-'÷Ò7ZJui8(œ[_Ëã›öÐ|¼•;ß{ ë}‚êÒLjcѲ…<úôf/Z„Û&ÅìÍ©–!./ð9Ð÷lb¸¦žÜàÏnlš°7oÚƒ×_³7ùµs(.ÌgKc+õ³*cöfó‘Nµ 1xê@½±úÏÈ­ïÞ›‚½ä—fÅìÍÞf"{ŸhojëçpÊ áÞ”g&ܛ݇ÚX–`oR8÷Lìõz±«‚ç^÷ðÌk楅ü3Uš9¸ù³s©›[Ç;ßw•幃9Ù˜¦‰ªªtu÷r`ߪªËc‚Þè/+8°¶è€+++ ‰\§Oа’eUU#é«ñ°gç“_œIFAîtwÄÓH(`ãbt` êvìàÈ®MlîfVMuÂg`+è ƒ15½>»Ž¶MëøÌWË;®¼ˆC;þLÁÒ[X6+›UóK(kX <G$˜œ*H[±r ’iR[^xJ$" …b®‘Dç`Æ ÌšUÎ?þKô4½Ì@z=Uy1ã58l¬°),p:(°¯iG^é`‹Î‰ö»üÍ4ú5~ÓÖÊ{G¸¼¢”Ë ø|q>‹ KÒÓ êœO'`•HD ’°Š^_2×f¢k,:Pöáv»Žìqº;}φW_넘ØLC„ͦÂ4LÙÆ`I8M»Ý0uMFŽb|%+†g@H*!R‚X3‹ þ'y90±}2/$b£{Á$/$&#¡ V8¾ ?É/Ôôî7eee““CnnX%54èé ²ggˆËH<ì窕™ÚÜIÍ%¹üòg‡ÙõB¿»ïíþëÖu¿Å«H!…äðó|•evÌ¡Ã¼ÚØLZºƒ£MG9ÙÜž½”ŽŒ2:ÖV÷tðÙo|ê’%Œ´¼Ì¶^?ûÒÑ;ÂÖmû‘:;"}÷5®ç¿ÚÄü2ÆÈÚ #ƒ8|‚ÿ`¤ Ÿý ÛÈwf0Òò2£ÇÑÒtŒƒG[èêh)©c¼ÿŸýà«äº³Ḛ̀gÓÚ ]ƒCœ<Õžƒ;)¯¨cäDS¤ýg¿ñ=VÕS uòÚKëʪ¦åä1úúغm?+ó2èòÅô¿ ÌC‡xµ±™ôtG›ŽqòT8D½YUS<éÞ¸3ÇU—­½±úÙ›Àà„½ßðÌ}á½qdFúo9iíÍÉðÞtN½7#ƒ“îÍŸŸ~5áÞ<Ú’poR8?¡( †iòÄË-` ¶ ¿”V„‹å×ÏEEäefÐÃχ­w;»öíF󜤭ñu óx¹'Ó¯Åò õ’SV@h¥­*Š©ç Ñõ™Vo´UÎtÇYõ¤’fPÛ¶ãÑßü~Òãü~d}ƒ½¶%+W´]ΡuOLðËõù|x½^ü~?º®O^½Gw£Ö-åß¿ö ² ²¸çk?åÒEá}”Â^SÕòƯ͚«®ì?°!O¾—Š¢Döß *EAUÛ·ì@¤g*?úþ½,_z)²>÷–"µ¦iè¦Éú=½üôÉfþ¿_¶ñ¥‡ÚÙ0jðbhˆ_Êmwç dfð®ò 6/šÍ»œvV;ÂA¹e•ì9·ØÞdk€ÏÄ5f½ It¥§;"iëV XvH±0ÃÄ¢˜Â4å° –i ›j Ã4¤°–. S–Rì¤b»»Pjßð:ôD­âÖ4£ h¦s‚¨µO²7Û¿uaèË[¸X`¡]Ýgƒîíí¥»»›Í†®ëääd³ã¥¼i6 rœ4Ì—é1ذ®ŸÚj•ê†\¤~ÃÂÁ²:‰æfÁ¬:5®ø®ßvH1Àç:t2œ¹˜ª‹Åõs1Ý…,¬ÌÇïp‘¡:É–G¨^¾‚ÂÌ0KhšP’‘‡#=95ÅTÎ^H~ºDÈ–NfV9¶ sW,Çi“ÇzwP”aÇæt“YXMÃüyÅ™•OnaÒhÕ+V=Ö¿MÎ$Ã!‘™WAmY6¦š¤ \Y9Ì©(¤³«•W¬ë?ao\Y9Tæ:âö&…sɦ@k¡›v6QRÏM«3‘€LUUGt\RˆÎÆ&˜Of}6&2ŒªªFÖ™pžÚ0µ³sY}õuhc"[Vj³µÖW¼[Çüå«©(-¡ºªð­Ó×>À¿úë ú{xà±­1ÇA8èr:8Î ©ÍGéð€ZÊ­W\Îí+ëcÒË­ôk‡Ã1-ƒš]:=8~î:Žžœv/-…nMÓÐ 3rvîØ‰,Ë<ùÀ}t¼òM{iÓ„cëm ·:m,“!öœŠŒ·½»‹GNµ&ótlŠ€ÓºÆÞ,¦ôt?†-6M“GŸÊ‰0 ¶@’TÕLÓK‹·Cš çV*t ç%ÞjDñé6oþÊ_Í™°ÀùäÏØÉŽ?þÏm¦hmmehhˆ¬¬,|> ÎçÙ'š™µ,Ÿî}<¼o”K®)¢”ßàçPcw¾¿’¹æ¿{~˜÷¨Œ{J+5…RH!…s >_+núós'È),§,ßI]¾‚„Š{a)ºæÀ]Qiš1i wóWÜÿõ²`éBv¶ °¬"'Ò¯%ze=k$£ò g†å"ž¼Ö÷hD˜ñ,¯¢¨ i礷 {š“mvsÛ{þé Æ‹®9O|ùŸþ… ïåý÷\‡rh[Ž­æîº‹–«‰Žfy­4ÛDWýÒ+"ã€Ææ L¨=•e9¦ŸD6Eë_]Ï’Ë®à™Ÿÿˆ9 /& ȉSÁèè(.—k‚MÑGú¸ev.¹r#ûwWpó?EsO?«‚ãÁ µ.›ÍÆOÙKçH›Ž ³`™-Ї½ ŠÍΊ¼Ü„ç.Y¦w*¦©` XMfÃ4¢×7Õ5&„„Ç㣰032?!ååe‘:`Ó4­4hÓªÖu¬ C˜¦) C“ I†)„ajçþäFÂhJcÆ,°.Œ1®)–ÖIÀÇNP ™3ag:'ˆZû${3±½” »80g Ì±Ez[À)Ì ùùùH’D~~>`šx³Ntú躓UŸ™GãKít—è¼ï#³øÛ_ ;¼¬[7Ȫ+ Ù±{€kVÅĤB )¤Â[ ‡C% °´V¡¤Ø`M]8½9 ‘––’ÄëÛz I]ÌËrñµï|ßþù÷¼»Öä™mÜT—‡$¹#õ§3±6‚‰)ÊÉ@Öq¡P(a2ü~dŒø@ÛÛz”_üÛ³˜ÿGº7°¶ðÒHþX´Q¸Ž\¿ø?²)„B2¿þÓ3ˆ±š>‡Í†#Aвe«@  Ð,ÅæÛ7ÑØéãÝ×^†Ó6QËò¶òè ð‘û~Ã{>õaBítoÚYnFTÁõë¹äòËÑu=¦‹õŽ ƒƒœÚôÏ«ïcaÉ5Ô”¡i%Ù„B‰ƒÁ…K«ùõº=TÜ™ÍÒ²*„,øgI0K}.’µÿñë› V-oôú&{‰h<¿Æ’½Îü~?.Wø¹ÝîˆYvvvC8züïÂÄ!,S`cú5º0MC0&Že˜:†© Ý Y²EXM…°7°…7<&D\ð(„™0úœ‚SˆÇÛ¢ØÂùZ lÕŒ2*üø§­6 C +êͼxppP(QýËÊÊbß–6qËí…ìx¦‹ÙkòÉ–ƒd¦qdW¡ ³Üynˆk®/ ¼ õnR5À)¤B g ÉÔ··wcš¡˜š] §=,îd?Ïýü~òjxñø߸³Ž_=øŸùÂ#}cJÁjR5ÀgŠ;]vXQ|>ߤÁLÇ‘NŠgEÄ“¬zÞD)ÆÑõ»B¡.—+4n<Äœú¹ÓÎÑ \-{" ›ÿþ ¥‹/FíÞÍ ³†Ç~ù3¾ü­{#ãG‹WY Øñh;±Ÿ]ƒpãÒ‘´w˧6Úò)z “©LÇŸƒöÖô j4,˜=¡m{ ÀÁNƒ]%û4j€ßj–÷\cº®Ñßï%??ƒžžžH ÿ›ûøÜ½ßþF˜BHá:`ÉÐ%!k²¬†tÝRd»¦Èvͦ¤…TÅÐC—aSÝú„:`96†T-ðx‰Z¥jLIömÜößÛ*J9©Ð²²²&üßÂÕù,\mâíòÎ(ûßð ³~ɸµÉ]LKzœ GÖ¾Gºü¤:&Te†‚N§-uÞRH!…Rxcp8TúúFÉÈp!„àW¤ÇÌáÆÕY,«RQ„‹y+o!]JçÛ7cš&ûÌ‚ ª¿/îî$Wj%oñjf%xØ´”—-¼Ù \"5“õ£iYå™x½awŠD|<¢II’"}[ÁÓ‰ÍdTϦØû‰~-Ëò¤{á´P€Çœ+(ê¾öI…½&›g鬔ŒÙ)ŠQQÞºe++W¯šÐ^’¤»=Yzù_ô®ºçvG ÐåáŇ¹z霘õåKk$—ª²~G+W,+À ’>‰`×™°z³¯±éºdYax8ÇÙ!-v3N bÒ ea S˜¦!TU—tM—LÉ&FŒ’,©»8æ5Å[p^¦BŸMœcÓ9ÿq6jedôĦ_§à°‡×C‹/ÄïžEYVØ+Q˜’Á‹¯vqÝU¥EvBAd2q:$´¬J„B¦)°¬¡ ª 4C &È‚`HGµCë†.ÊÖ#)„`ýËM¬¾¢ %¤£ØMž©“+W„mG‚IL4C`WSñÛgõ…–,˸;^„–õS7ŒövOÆç}*d×¢ÍYŒáÛó:™!L 5ë6îüž†Ë~öt¿xG÷gÚqœÅ?ír¤“;xòø÷æœÄ¹^˜WÀ½k®~cã¥pÚPU…Phüó³ñh7ýAiY b ‹±Ùl‘:ÙÁ.®"6Iâѧ~ÁW}ïö'1—^ÇÉ'žeÖ»oÆ„hÏÔdˆK&²D¡`úÛb€'cy§›k4Ëk³Ù¦L*)—i;¸›â¥K#¾ÈÑ,¯¢(‘”óD¬ë¢ÕË"Bb0®Ýí…‚8wEY–#ýX©¿Ñ,¯Ãá` y7'D>Ï¿ÜNí’B¤M‡X±&–¡¶^$bÊ¿sÿsüëG®gVM>í¯bÁsîáêYù‘ÛZÀoŸ;ÅÞ6™#/³=3‡c Ÿ­(ã"·k‹¬%ÒdëKÖº¢×—Ì5–h}SçtŽ×C[çoá¢ópÒ©)„×nƤA›†þ2Â4 a!É”0¬4褚Ây³R ,…ïÿo»øBÄ:Ó0%Á¨ÊŠÒt÷ÑÞc°¿Gç¿äwä²sãÅä‡ÿÝξVÁö§¼øM¥6ê—ðÓÿ8ÁUwóÊK}¬½®„÷¾3ŸÑö^>ú©S|ðóåìÝßOeº‚ÞGêÒqy –¸÷'Aª3åƒ'²øöѺ±“€ÝE_ë ¶AÌJ;ÏlðS•!X¸ÖÁó¿ïçsÿ>ä+ R¸¡ëúY €…OÇ„ßõ’™‘Žl„hk QZåSÐ}j TÒU—"&HÑÓO<9rÀðbê}gr)SÃÔæž鎳C&¸ÎâcNºÂïãÔÈàä$ÁÀÆ×qÍ^€=Ïá.¢}µSÙ9Ø2l€9e \àJ>K&…7_úÄ d¡“›i‹¨éš¦É¶=¸C;»©)Ï`ý‹Ý\uýu,,Ì'/ÍέûÁE¥¶wRÜ8LÆ0&{œ˜'›æj­ËëõF‚ÞéX^½ö1ÏÚè )~þñcÍŸwyÌ<Aô%JýmÙµ‘â%+ЇÛxm÷ *+ÌÊKco›c´µžèà¬ñÀ+¤©TÌ^LÏÃQï¦4íJrm‘ùYp:hš–ð\Ü}õ|ýGYvÕ‘ºhÙö3O€.YœÏãeÇXV2‹|WeÁ ßÈrÇŒyº,ï›!’–è8‹åM6À…BH’„Ëegt4€ÓiÏBþí+ÿÚpï·¿»;áÁ&0!øš†0L]2LC˜føtF¸Ø:D–즦„"ÛÍ <6ÆÂŸ ˜ä¦’¹ˆ3Í‚Õó²P;‡ñºòùõÏóµ/”à¿ZfÏ/µevÔ4“;ßWN¦C°zUžƒåïÈäð^? ®-da¹JÅM<þZ?ï}g>Cgím¥T—:8Õ>› —¢QSžöÿ³wæñQÕçþŸeöìûJ’@aG@D@w­ÚjÕZ—Ú[Û{»ÝöÖîímk{»ØkVÛÞV­K]pßPTûÙ÷m2™í,¿?&g˜$2!iÏë•W˜Ìœóý>çΜçûyžÏ‡þc.ü½*¹ù,Î>@ Ïa!#Qe›ÉDV§Êäl ‰¿¢‘“ïÀì죨 –U³]ôB4ŽâœAs«‹£ŠßñzRcRÙs¤‰û¸(?™C{NpH‰cE²€Çj#í‘U`¡­G`WUö¤Dªëz¸å²|bÇEGq& È:rzΣG‘ôXzöÖwþ¼Û'¥ƒÓMoÅq®]‰sK$§;5/$GqÎÂX@KŠèrÂÚ=^–N³ë”8×?¿…ºN^ï³$ßûCV,[‚ (˜s%~EEÅjµÒÑt>-—Òâ´SŽŽ‹#1¨§‚Áòªª:HÀj¤¾ÞÐíŒ÷OU«ªê 9„+¿Þ¾õ}lé³(Ëq<ŸÏ‡$IÞžùÃÿ°à‹ß `öÔlZKþ’UÌ,“pÄg€®£ x2›ÍaIié"^zý#&•”ré§®Tú ‘'¡Žô¬AV:°ùÝç9à)çÎ+§a•?wÏ͉å‰S)µYÇÔn3Ëkàl‰¤…å:<ññvZ[8–AvH!eÐ'oŒº.+‰;¤ l6©‚ª°ÀºM°Û5ÁçA± ÎR)tÿJøD&Àÿ*,ðD&Áq‰±äÄ8ÑÊS)Ï‘iº2s¬ƒ¼I0{Y ¯’¬¤YúÉ-¶!ä h>ÖX‘òd¼N7‚ÂMró•{=ÁI9鬚ï$!ÉÌU—áP*׸ÑT‰¥—ecógßèÆ””H‚ c¨lѸk•™¸ ^¿Õ*‘k&óxrR"±HL_–Kx©Š(¢]CDtM@’ìœ éÔîkbRYvPÔf<˜V”Ä«{Ûèu[q¶º1¥è$Zt¸Hš“ÌÍiñ¼ôæabSâМ"é¹Í~ÉÂù…&:ÛtüªÒØç¢ë‚(!è:š¤Ð¼ÛKf¹¿ËCg@Z¦…3q»Óu]Ue+ã«ó>Íñ5 AD½ûzˆ™–~Æîë¢Í‚YîÃÓ`E´kôíh@ò¤b+) gû R/œ§¡g‹ «¿ }J~P 7Šs±±6Z[{ÉÊJBÞÜÒÂѾxâN |»œ÷yä¦'"Š— ô¬˜O“ÉÄ››¶såò…ìYû:ISfÒä÷2…ádK¤2¡8]–×ðæ5¨±”6,oh9òÿ>üîþâ÷—z‰¢8(ù W~Ýë_w#p2Êò}¢CË©g®¼“-=AÆŠ\r/X…®ëXbR%)¬À“ó°²lÑÌ%+çb]œ8Fuu S §RŸ5èãF9õÐcfµZ©ép‘Ÿìàÿ¼ž•÷ý1 \•eãùùìEˆÅWb–Ù¢‹Ç]¸< ÷\QĆº:–åÅœh«H¼¦‡Æ ŒØŒpã„Ú!ÇQ²s²Ç`‡ðÖ4EÔuUдsÅ)ʟΜàÜd?‘ pa ˆLŸ@ss3%ijk»IÍ–ÉŒupÜ+Ph•H+À"ƒŒ Ïf[L µûû™:cðjo^q ì'°g™…ÿVtòM‹L~Iì Ï—åÀÀÎ!$ÍÍ ùœ-6¼DQ ‡@ãæ=¼°·†¢˜rS./lÞÆÂò¥˜›öžXKKƒÌ]wm\ùŠÌÒ¼D4›Ù¯Ñ×ï¦I™oÆì9Øêášåy¸}ª.?³Šl”*iØÌ%¥i$™4NgÚ$ÃÓoey‰™:K =u5GcáÒ"„-|ûQߺ8“7w×°`Y;7´±ìSó˜ž>¾e$gÓQbÒRi©Û »ð¸SÈ*)¥éø2Ê®¦e÷L)sµ#øœ2é³oÆ$Ž\:9V4?ü(mݵ¤.½½ªŠÝï$ïº9ô|TCæ w‘’5ÔÉôô ûDŸséldÙ§3kbºª#ø%â âñ»t쓳1¥¶ cC´cM Ša2Iƒ’œ„oM+v©$)q6EE’‰Çé§Ýí¡ ;Ž™9±4u$eê öìÛEvj"¹ÁRè‰°Š”3’^8™ìFÂò°Òýý<úÜ~Ô*’Ådʺ/¡½±™œ¬ŒàXÆo‹Å\  é²YS%[áTÕS—NIdjÉgý®ª‚&Xèæ™ ­ÌÌΦ´dp‚z.‡² ­­­˜­ÉÄ[:øðD?Êú]˜’!”•Ú‡Áîz½^bb†ß;zïÃ/ÄóÅ/Ýω†Ê-àÓY“ðù|ÃXìMûzxpŸš¤z’³âØ]}œfd–ññÙŽ Sh¯¸ßhצÃ(ƒ¶Ûí8NdY&))q&èT !¼’®ëbÀISuÝ`AGÙI ¨BGK¡£ >± ð¿ ,"N¸ –!‘ÊÊ`ËŽ SÓyõ¥F¼º„‰¾vÖ[HÍPh­˜ggsE3½‰+Îá­N’scijr1¹ØÁ% “G<Š(&šª²üü|Þÿ}+µµ­Üÿ_ßâÅ'~OLïTrS2ÑäZÆ}'tÜ~ÅååhseÅqôµjØrLnèezfì „h®-ðc6‰ ÌÎN+ùPu™ä…Ww÷sçiìsÙˆKRéwy‰‹‰áÚ…ù¼¿¯‚¬ü<ì~ 9IVÜ^ÆYG¡¸h9ÖHfA)G›[ »•掊–ßKcå+èölDÉÍœ®t †É¼¢TÀŒ{.¢ã@?_9®¢[ IDAT ¹ó/'9Ɖ¨n01 0ºŽ-ß`m¬Ø2‹qþBCŠMDXŸ3§§ƒ(‚-¥;×a6Ÿ|ü¹hn*«æ'â°Ëø|¾@™«®Ó\ßDWU%jrš‰Çžý#?øÿGu}+ó –›,’œ–ü1z€ÇÊÀEšüL„€„g¡“‹‹Shíöc‹•˜qã\¼^oÊ.ŽT9c°„Sf_ì=ö‹"#Ef°‰áždY¦qs%ÏoÜÌWîÿý·AeÐ:‚Ž.^ë5hUUMe=F°ÙTÁçQ$P5Ÿ>àˆ&÷ C”ŽŒŽ.)D1 qqqtvvÒßß?ðe"2?ž[×N`b[³Ju½‚¯_ç¶›ÒðŸÐH1IôÖtÑœnçòRݵ^]”ÍßO²KD^jQ|,ÐI(žDî”r®ûê\¾pÅrþüãŸ3cÑL^PˆâsÓ“Z2>öWÐÙZÓÁúzHŒ7s¨6¼WKF†•šÃM4ª&¼….¯ŸšÆ^Ž÷øpõùÙUÛE¿âæ7¯×RÛÚÃÁV§“‰ëšÆÂâT 'g#¸$JηsD“(›’Lö”üÚ1>}Ó\Úê[HvÀM¢$3r`$ÄdÌ&£d‚%—x{+qEóÈÎÉaç?¾FrÁeXô!]éCqa6MlR{~š= {q&ñ‹Ë°ÄíÅíVèQrǽÍÙ‡»¾]é?V‡.šð·5âmw¢¹ºp×µáïqâmᅧ·©ŧÒñæ»(~÷‰Fôñ/­Dq†k£»»UU±[ ¹KçѵÝ4tΙ,Ë46¸iëÏ"¯0w^?xð!4EañâÅH~ݱbŠ¢$I nÉvn·›þþ~<Oeå…“Œk\\²,ÊæNÏdîs()+ ”[,˜L¦°s ߆R%h7ôÄ3/§ª=¯²ïƒzúÃŒg$»¡Û™L&, ]µ»Ù\ÝIÖy©`= È,œ’Í_¸8M4¦ÍfTR=h o'ÇzøÊ÷HúŒ$›¤Õjv ¿à¡çà‚Å‹(Ï´ç)Ë2ЬóÍ_ý 6 ·0!‡3’¸Ë$ñå´¤añ ¡±ñEz­(Š‚Ç¸6#½Æü~097¶³X,§Tú†Àuæõzƒ×¶ÙlFE¬V[0q [N^3 (uÄ2hÑuMÔtM(ƒt]TÍ'jš°E  ¿T…±}ï=«dÀÛxÔ¹œüüØ¿ ÇGXžlHˆczëœÎ5|b`ˆ²À#Áãñ‘‘1è&=ua&ü¹ƒ/|&•'ŸjC¶ dæÅ! `6 ¸RdÒ2Ò8ßÙË›õ®ŸçÀ+ IJ¾¦üŒh×nb²â4ñ3R@…Ûî»/ðF’ƒœÒk˜Ã8ªU··6"çØ0›Þߨ‰Å*£{D¼]=üäÙZ©mˆå1¸âí<ýâ ©v®Ït`Ë»v! ¿z¹žk—eSša=­ÉØÓ’Xšª~ºˆ…!ï]¿z÷}aß,Î>ÝhÁìH4tM#µìóhþ.&;Á/>ó–O–º#2¸ö“°9€lˆ™q7)ó–ç’Dß{ÈeôÒé^ÿ:±-Wâ:²‹„ çáü s^ ý Îu»È¸q>·Žzô0‚( µ×ÓþæzâW\F\qÆøçÅ„Ãd’д“â=»+kȰ'ñöŽ>þ-+ðÝ7cz&ޤ|>v;¯»= ’µóÝwXpùX%'m{>"mÖ¢ac„°Š”å5¬B´Ñ¶3’R‡cd¥qƒ¥ £Ùl$lÕÑ«Rwü‡×<ÁU÷ÿ$l-…¦i¸\®`ÿðà„\#sÚÞû š8‹ Ö‚œ°,¯ÍfÃï÷KÒ'Í¢áùWiK^ÈW¾þËñ0Lj"báü{¼º+W-Æíöxè8¸ƒÚ†V*ÍEܵjp)´ Á90â;ÞÞCAJ<Ζ£¼|\ã³ Køïo~–7_nSÔÜåaÇán¶éãs—N¡ßÜÆ§‹[ ó‡ÍótEÒNGÀj¨ “ñ`´„74>#áíz6t]§lú´ RpŸaÊ Ñua@KôÊ 5]½ :Šsç ü‰N€áÜL‚?n¤¦¦†ù«•Ïßxp¾íîIƒÞ¹ú3¡¯c=|g$%P:5aÂçEçt0•-½ˆº•PœN7ÉÉúõ„„$¶ösÉ‚„ £…Åèy(5[-´TïÄ1y=©yøzëØÚ$®ÛHƒ ;{:6EF’0V£!Tèɘ£‘4ízm;=½G銃ùKo£ïðQbJŠÂ XI’4BÒ$â8±EWÞ†4 \e=…;&#•S_uùJL&Sˆ=‘ÆÆÃ­dv¼ÁÌ‹¾v›pO= ø“²éÞ¹ =1sßv6WÛXœ§84>UUòÉÉ­G¨ô—bëîäæÒ€²‰I×¹tå•Ásš|zü𻚱æÉ´5§6ÎÌ=ilpºXëfÃú{$Œ×¦(Ôf*âj’$ɆÉj•ikë%99†ŽŽ¬V+¢(²C0l #ít=à Œ&è¨BÀÉ.Ølªà÷ªŒRíŒ-…>eŸøø\Äé°Àú=8×××ãt:1›Í˜L&&MÊå'O8/ƒySÆ_:E‰Po34Tï ?-Ÿ—ÌŸ†­<äK , A¸oE:ª.`–8ùZº<\2/•s5tnX,‚Ï3d< ‚î?ã¡Ðu]×ðú4LÒÙ[·ÓtŸ~v¿”ü:ˆš†g(s¤i(ÉéXƒ(!ùý˜ dt%”…2è‰%å‚@ì§3@ h>›fM¡t9)L¦aûöª'ÅøšzR´qÙœVžè#uû !6ÀôÖ®×7J$æìÀo½Šæ¾­|ýö$2Ín¬qå¬œæ ²‘ödS‘ XÁ©mІb¨ÈÖP£P”^GíqËf—K“^Þ¡Ûhš6,6’øEWÞüŒÅb¢ñø² ¦‡Óˆi¨À“UÖ8ÑÐI~^ÿóèZ¾qÏ*²|Õ³,"³ê iSJ“O>Ÿ»}ø¢S|r6'Þx™¢ÕWƒÖÿÎ. ŒNÀjh ´¸Ò¹”ê:jê4@HzUW3}¶<’‡œŽ)9&þã+39ÚÛÇf¤œ¶ S8«H¶ í+Ë s Ëk 4¾øx--=ˆ¢ˆÃá.ð„Ø!‡D×5hA4A×uÁlÒEQEMó‰šn@@ÓUA×UF°C N†q%ÁQüë#šsn²À§[ =#ô§™Íæà6p£HêP)˜"òØ7’}]<>¿‡¶N+E^ŽmX|©…Ê=S¬Ø÷Pé‘X¹,wKàf]¾x‚i¢ˆb‰‰‰güÿm(A€’ë¡`Õ°÷Fâùdßd‡¾EŠJ² YíH¶ùcœíx #H‰<ÿ}³˜ÿ’žhâ×ÒÙ¦0 ÀôyÜTæÁüš3#fe“¢í ç ìv µµm俦`2™8Rëdk•Âù³Í$ ›IåÜ;¿›=5"ÖøxfÝ(ŠLKÉ2½‚ DT¢<+]×ÇÄò†–_Ù WrlÌQŽI$¿,~X©t8ˆ¢d¬ÃÙøké¤ýÄj]:= =|¦`ú°{¥!`åõz‡±Ñ‡ŽÖ㮬äh“ÀÒ9º™1ÿ"¦…° pRØÉ(§vœ4/y«¯`x­hŠ/˜ð†Óæ3ìŒý ²)`Ý·öкë-ÔX+Ù}o“¼êžÁ;DVi W¥ª Ü>X{xÏâPŒdSt6¬E Ë~„S t ˆ3,œ´C ªA º®ÀBà™T‡O`M×Dе@9tÀ‰³T"eÿõYàhÅ0«¢š¦ °l:•ÇúpïwS6ÉLgw?®/µ.…\I¡¯]£ù¸…•«³Øùv=>E溅Vj¼ðæ+õ\xIÖ¨cFÅX1ÒCD¿»}dfÄëéC­˜Í2ý}.l1MQDU|x| Ž0,Ö„ÀOÐ5W¿‹Å†âó šÌˆ‚Š_ûl(1ò$¯Ï‹ÅlÁçíGd¬f3žþ~LV;Ò¾£ #i]8nÜý}Èf&Y@×AœN/1±Žˆä r"øŒâ÷âñ*Ø$|7‚lÅ$ƒËéƒÏçÁd¶F&Ae³“b~¾½ž~UÀá°¡©*âsâ÷{PT›ÕŒÎIÝ2UQdT$9*û÷O³ÙdŶîi`g]2½^'¥×’œ¬üdt=‰óæNð–‚lZOãüISIw„OÂÙ–,dS4ÆâºÏ¡É–,Ëlß´ƒ¼òrWU“ 5ÒXmæâ› úœ®ëÁRñPa§Ðq›ö¼„@>=.¥:r˜ñŒ¹„µC*ÂSîãæë?x_Qð ”þ¢) þ'دÚIûÙ ›iØy{B{nå¿úÞ°±øŒýqu57’‘WÀšŸÀ&i\vÕíÔ¶uâlÝ?(ƒÅnîVX»£–·tQ29ƒU—©|ÔÝËÞ˜sráílÚ…³a2’ÞÑ’ß±Ù0 #Ø! ŸÚ,êäXÐuMWDUó‰šnèö šn$ÐUÍ+H¢EÛü/Z ÅÄ@øXÊÏQœ 6i¬½Àm´QCMp.ÁO@OEQG44’R’D¿â—4-°z¦išè§Ð%]Ôu]´X,¢®ë":bwowÕ‡E¨£¬l¸ñ}gÜöC>÷¿w³ö…7XtÉ5Äv·ðî=\}ý-ÄH~žxèœPr¹y‘ÄÛÛÚp”ÌâÄÚùâ¯FÓ‡¯³yóvJW~…e³Ç×˺÷íŸñnm&+/¼„úïaž‹­©‘u›NpÓ¿•â”3ágíä‘{NÎ…w"JëyëƒnîÿÊ…<ûênL¹SøÂõË&n(o7?ùÎ/ùâ¯F àëkæé'×Ðo-$±í#²¯ù2…ýU¼þá~âósÓ¥e2ìSùnæ°ú†HÔjùëŸÖ ¤La‘ª³_­&-öègÎòqù»ÿþ4©…·qÃgVóó~—üð§€Î{¯ó47}ë:vobÞŸÃ1°/CüÈHJF+75jS4¤p"[£Á` Æu¸€lýÓì¨M¥hnË®YŽGX+.ªж–FRÓ³"x e€ xêîé&!>õë6ÐäòS8y2‹Ê mc”4Ƨùy}ã>._>›/ýÇOùþ·ðöß_"%6«W,Ÿ¡Ô=U4ˆ©tZÒY!c3›N_G¯ÊåÏo£¨( _®ÅqñL·˜˜e1ãP•0¬é©1TÀ*Òí XEŠp,o$ðz=tw{IO§»»I’Ðu½{÷=b‡¤ ‚  BÀùHTMe¿(JŠ,™üªjQL²Õo’ŠÅ$(~¯]3›âTQtI4ëFpX!¬!Ó+S9z<|° p˜¹œüüØàqÇöÖ4$Ž1°À§3'‰=ÂËjt†7Œ–qoÚúwtÙ! tE¡¡Å‡ÏéÇë~iÝÛƒ;Ìv=½Þ0"Š•-@ñKtººxâ›Ø»v++æÍ`ïæƒ€‰ë>sq“SØ×`ã _¾›4W-«/8 (_° !>‡¬˜ñ÷i¦åŸ³é8­ V]y1q:‹–­ÄâHÁ.M¬wwš€§ ›ÄÙ:K.¼ì´l·Â•·~Ž<±wbDz$€9&ƒÕW\Œ”ÄÊ‹/Å&ëdÏ8ŸófL"¥(e†œ7ƒ†ÃÇð) ή.f]|sSu¤é‰´·($ÌÖÈ]¸xÜcf¤•SSUϺuO‘œì§OX~ù5Ä¥k±’™7;øù„˜™Ø7¿CrÁj\ÕpíųÙòÞÆñÅGl¬ §Óªª\|^ ×­˜LR¼ )hóò¦$¶m hŠƒ}UÕ|ÿ‘¯Óït°ä†Û1+ ^¯wL6EpR”h¨MÑ©js3šMQ(Œ×P»!Ãg7Ü<“§]Å¿ýäó\|õåh)¬MQ$óLLN X9ë©ïnb$5Cì*ÔÆÇjµâjÜÇßÿú"àcëGG¸hÅ2âlÍxMöAã…2¶ŒO4±gó@ào]Gº¥[?ÿU.Z¼(l|áì’§ÌgZAd™0‰Á³®Žfê›N€uøùKŽ“øÚ5¥|o^Oåfñ¥x‹e‘d“Ö†)BmŠt]ØÞ(Ô¦(4¾HXÞ‰°a²X¬Á„%´ "77'”0½Ô|RÖ5AÓTQ×AÓTAÓUAÓü‚ DÂDm‘cœ[¤6Dàœ 6ü9žÓ ©„Sd>5Fêí=\Í]üòÛû©ÞÜJu]?¿{´g—“­ >ZŽwÓÚ¯¢ë>ûý š{<üåÑ6ìrò—÷óÆ>¶¾QO­ÓÏÑŠ^+ºèlëçÏÕ²·²“Ç^ió|¢ˆâtñü±ƒ4Õ¤SˆOˆÃæÈ!..‹Õôq×—¿ˆrl/¥%:?ùÑOéJ)å…7^aÕ¬{ízš:ñMÀ<ú„,X»ñ5Òç,âùgŸÄïtG´¦|ZP]´77£4uðø3/àéî£`’…¿?øꥱßKN o'/¼ñ ïm9xÙ~ˆ{¾ýü'³~Ýˬyk5þÌOŸÞ@÷±ƒ4¨F[«YN@ >%ƒí/ýf:špé^|-­ìyåáqŽé¦©ÑÙÃìK­y3ܲ›ÿþþ}ÔïÛOKW7oþíaŽwu–^usó±Ç§óç‡ÑZ01aGqÆ`2IøýjñkèPøÕsüýÓ‚t˲¦0åŠÕtï7qÇ]«ðû­”•ÆÑßßlФ´Ù€Íf Ü“ØSÁëõó¶Z­£V¬­LFRIÒd”ýæ/(&MV«EQF`³~Y#ù1zzŸíÛ¶R×ÕÁ?š_?KÇo#Y2Z®Œø ÄgÙ)Ihã¡J/—\rR á²åŸá‚”A]²,c6›G|–ûöý?”ˆ§”àõz«ÕÄ«ï|0Œ­z|Ýnwð·1Ö®£ m鯢vѲëyÞ}ü¿‡éñx¸Òfa²ùä1‰¤—745ÊîM&Ó)« Œóç÷ûƒL¸±Ð1Z5B¸ø"IzE£`¤øbccƒÇ411q x—A 躠iš¨ëšø (BeÐêO`EõþÓ¸­ü+ât|ƒÉ„œCD‹C²{ð Ñè08Ó¥Ðc-ƒ® bL%Њ¢Hª¦Ž©ÚY×Få.?7·²ú¶|6¬kaJi:= í˜ÍíÍ癈©—H™ê bŸ‹ºÝ½Ì¹ØÌU‹ã¹ãÝܸ:aŸT¼$¬Œá1Ä÷öÐÙkåÚK“'ôþ³ ZEQDqvp:%Ђ P[ÛNaa‚ ðÒºc<ö®À±üðó¹H’„Çã *.N­çïëzˆ×ª¹áú›‡í§¯¯/¬êò›Ï¼ÀÌK/£é½'x])ãû7\@³[#Ã&ŽŸÆÁZ?¥“Ff· XEZ>?Ô¦(Òí`ðµéu6Ô†i4¨ªBgg?©©q´µµ·ùë_ûša‡ÄÉ2hMD]UEU5U$E’d¿ªšü²dQL²Ío–mŠIT£ ZMº(ȧ.ƒ†h)´1Æ'´zPt´úãÃXY`ûˆ³#c¬,°(KØ’â˜<ÙB¯UG‹ˆ‰‘)ž$àœšŠ-ÉDiŠƒ·¶vÐ/itöû‰Ë7‘Ú/ðF½ÌÊL0YEšpóR³‹Y¦0ÑL¬OçD_ÿ˜çEQDEgiiñ8lîŒ\úf_¿1ǃÛí0p8yúÁyù½#¼¸~ ḃá,o -­Ý£&¿ƒÊòFZr:”å5›O­2l°„¡%ц’uèbAbw ûI“Æ=*Óg— byeY>%i0õ¼‹™;}±ÉEÁžÞ‘â '`54¾çžy,óÚ£_F>øGÜG*‡Ågx1‡‹¯òýulxð!vî’)Ÿ$1}jù ó_¸þê –ÏÂëîgæE+ùþ àñxȰ‰§ˆOäPÃðƒ© Ï(¿ CÏŸQ IÒ<4¾±°¼ÆïHYl#>MÓéí <†.n Ø! Ž ]ÐÑe]Ðuy üYL&MÔ4UÔ4EÔtMÐ4° "d£îsŸh„c£ ð8—±p@è§?bØÁR5uâD°t¿&Søiw7ûIȈZ|„"ÊŸmh|øÁGNŸG¬RÏáv˜U2X$¥jÿ,q%äOJfÇ–íL=o>²Û‰G_ë1ªj»™7oNø…Ñ1 ¿§=•'È-œŽÅÛ;“²lÚy„…sgc:#Ë>vlÞNÚ”b¬î>Úý6 RdvW!&%éÅ…£ïb ðöö"ÅÅmØ-­ˆÌ72V½‹-Ûj˜½`Žî§g[+ŽÔ4D@íëEqÄÑS{”êÆvrŠ&£»]ħçoßYìjnE|TÖÔ1kÞ"¬ôµ5q´Õͬi“8tèSJK€îæF¤Ô,Ô®&Lño‘át`Qéêr‘`GUÕ`²ôÑG[q8ì¼õÈ7øì-_£"ëš^ÿ_ÐíÜ÷­¯bI…Ãá@Qìv;‡UÑzès¯]MýÁ*LGPxÕõÃæ:+á¬Âa$«S‰RyúüXcN ¡,0 0ÁQ8Š‘pèÐ!6oÞÌž={8pàšÏÇ+¶€ÎêfÜ.¿ªƒ¦ãê×ðû5úÝ‚>ŸF¿WC×Àã X¾¸ûUüJt¡%г.ú-¢àå•'_À­ l;°Ý×C͉À–¯½ý{×=Ó«ðü[›øÕ èê袣æ›vuŒ{&Õ[ÿBC¿Yt³î­wpë}<÷×WÌ&N£M?BX¼GÙ¼¹Žuo½Ã–·Þ¢K1›5¶¬Ý=úæc¯;xÜ\m•Tì­á­·×ò̃°£¶—æc­˜e/¿µw†íkªàü’~ Ð|<ôãÐ’„ÅSÍ–MÍÔ<õ*ï<ºu\ãœØ¿'^ü ‚(²ó½ðH kß~‹š½ì«o¢fÏ6><Ø ÀGzž—TñÜ/Ëñæøõïèˆfò(ÎßQë^ä£ùÛW?GkÅ»lÝÓ†X~+…+®æÚ”fîûê7øú·¾‚] $®vG ²,ãk¬àØñZ1“MOo$‹¨h°_§+`5”­ eíN•üêºìÏIÀÊHlÃ'[… ÀÁ#r¬3ü÷x(ã*`eÌsÏæ·iô'RÿæË(b *ÃÆEšÍ…¿½ëT®¾ëÓ$N]„®ë”—-DXÊbDîÌ* 0Ù±)þᦦ&Ü=u¼úÔ?F<–¡ó eAîÛê颹f¯Uæh[ó°í « ãøØÚ*~ôøQ¾õ×:þðR?ÚVÁýûÑ6d»Ð>`CµYň¬†²ô§ÃòF*Ðe°ØÆ¢ÅP;6Ö†Ë(K* AGÝè ˆdiº*hz€ÖuU` ‰S5¿ j>AÓÄÐ)û€ÿ ±¢8{ˆú£ŒæLâ9žÓÇÒlÇŽ טÆz•"Gff&III˜ÍfzzzÍf´Nž<ónëßo&sN<«‹Ü´[S¨x¿E‹³H>âcý$ûaÖ¬>ª×°Ú>Ü×ÏíŸIcÙ¹Ôʪ IDAT¬ñÙÊDÅè¨Þ»os35B"Ý[w0ê±£¦ûô€™â²<šz8ÖÝÆU×ÏÚ5/0}ñyè@Á”iì:pœ|óøÕÍsÊ®¦â÷Ùëž‹5e>¦I“iïz™žwª±Çg3+ÿLü0Ñì?¯Mäå.2£7& ½¡ŽåW]=±C™¸là¸ô÷¹˜Tºêß§hú%ÔJ:™“Ë8øöKÏ gýxPÝ|ïÑ׈õµr¼ÙIyV,—/¹MƒÔœ6¼¼™î-àoOV’^0¥íîJ~ùä{ĉ5èñYdOžGÀýÙ0•%9pL±b›ZNaAà»­„¤÷ßCr9‡·ò­{®æ-osñòK&"ò(Î0Qæõv’—YD{Õff_~ jl«çžÅbCSuLÉùXd &« Q©;QAk[κ¿ã1%3Ý–KVŽŒ¢è\0g)>ß"®+±ˆ‘öæË©ŸìH6>¯®§©?“ÝÍo03æB–Üê|=˜å5b _Lé dAÇZÍ­—Î &wáâ3úYALæËß¿UUQTÍïÇb±PU}³9Òâá÷ÒÐ}Oqö ÇÆóøOböª•x’(›d¡¡ËEvâInÚãñ Š#Ÿ¿_<ÑÄä²tÄuP”dÆÒžÑ6›•[~V™6ªœ½$ž×@ÿ¤É”%NÃït‘¢ë(ClŠ"9ïáâ:Ï‘zþŒke´kÆ¸Æ ÄFÒÛc¥µÕ‰Ãa Ƥë:/¼ôÛCìG„kª|€5Q×5ÑlÒUP„Öm‚ͦ ~¯"h‚_DÓ¿ Ãr:¾Àãö7V Ãñ7FÔÇÂuNûžÉÃ?/FÀN@М(ÊG1 >Ÿªª*zzz‚6«fÙøÚš¦ŸÇMŸË㺋‰±ñ©ÕÉÜ|u&Û7u"‰ÖD )IàQV\œAv¢ÎÕ¥6*-q"ŠÓÅg︓ÅÓ&“àu#›b™ÉLž¯ifZž èçû?ø.Òñ½œWnç·?þ þIóygÛ¶l¯æÝמ¦þD[¸½±áXÕq\.ÔôBôöõtmÙÄœüDÜÄ’Ùƒéé |ºŽD:BÇz?æa }TŠñ”äFî/¼Ý¼³m›+Ž”‘OåºGÙןÀæ­ëygã‡Ô¼÷gžÜr”¶Ã•£ì,BH6~õïrÕe+ÉK‹Ídž=²aÝz›·h’$aï­Cî9ýqJùÝ¿ÇÊKˆÓ;XtùRü›øã–C$ôïãÑu•ä˜Ûyãñ?ÑÖØ€-ÁÆEÿv/sŠIÏ(äÁ‡Ÿ&#{ÎÄÄÅGlŒ©©•ò³XvýÝL]ró-GÓÀn·aµZ©þh;Ç[›¨X÷&üè¯Ô6Ç‘h#uéýÌœ~¹é1”M»™3f ”ªZqŠ6"Ë{ª„kZVÉr‹gÊb‹¢|îÏbëìÙ»…n?ÔÚGk÷Q~²~Ï }¬©a4(>ÍÇß*_3¯šI]ýFÜÇ›(Yö)Òc-Ãâ3™L#²É,˜B¼=¿ßÏܬüšy˜MÑÉøæßnÆ»ÔÄwî.æ'3gñPNw™eîKK·MQ¸ó7ÒváÎß©jÃ':F+á6l˜TU£¯ÏüŒl‡$X’5@ý¤*´®«bÀI°Cò JÈ¢¶H‘ãtl‘þÕíçB/°Ñ ÐK¯ÐG_Ä=À† ´¦k÷{<žà*ßI±º£r‹¬®ìCŠ3“•(bu˜¨=âÄm5“c—ðz}´ú%Š’%4‹„ß«pô°›œ©1¤Ø?yë-Ñà(¢ˆ"гƒñô‹¢H¿“IÂn·ãmÛÏ=ˆ%émÜòÙ¯#Š"ÎÚ*äôªŸ}Ÿ¹w­Bè=5zN Åç§{˜K>Åûë6qÇ=Ë9^u‚‚)³ÍÕHꌱÇÂò‹ê¯Á¸†&¼ÆßO•y<¬Vkð÷©Úw.>¿ê£S1×ý6ë6K\qýʰñ©ª:\ÕXkç×/uqã5Åôþ€éSÏÀçíÇl±‡o¤ØjwoÅ`«j–c5Y²kfÙ¡I¢E7Áh/ðèø¤öë²îÙ´õîh ô(8¥ÐçÂÉ änº%Ób½“W|òu 2¡†G“‰Ys¢ÂXQDEQœÛèéq“““€³âMnª}“š˜ù´57ž•‹#§“I¦ü¶e(Šè95÷sðD?e±4uµ“ŸÆ¢KPb˜9o2›*kY2­à´lŠ`dŸHNi踲,Jª†ö[¬VtU£ªú޶2.,#Fnkhˆ;éº6¾îN'‡ªv°kýVî¹ÿ+¤¥Wž2¾aÇGL!«õm:b™5üâ3X¢lˆ1…BQ²¦Ï þÛjµ¢‡oHl†–±O“É„¦zhìÕÈëùÔ]¿âùçþDޝ޼ä7TÀʯ(ì¬îâ•--ÈæDjšÍd”WcÉ5Ñk·ó‹ÉyÄ )Ý6ÎßXX^‘ª5Ç*TÀj,Âl¡6L#m—–O[[/©©q¸Ýî —õ©Ê õû+¢ë…hAÓUQÕQÖeÐ>ÉŽªØàÐ$xD )±w qƒ‚ ‡M‚G(÷–BG^ }ºøäQrç Æj‹dâÌ&”555:tˆêêj*++¿}y7ë÷;Ùùb;·;©ú ÍÛ;8¼­•-{;9vÀÅGºØµÝÉŽw›Ù¸¾…–æ>ê{¨=ì9£ó"Š“ðÓì…Úª=´÷‡ï­­zŸ¿ýýuT`ï†×Ù´í0h^::»Ñ<Í<ös¤¾uÜ3é¬ÛÉ#<Âîƒõ¼úÄߨ°mï¿ôþôçG©ít{ÿ#aÓÚ-cjãï=ÊËïîœð±z vK«n^xêa¶<‚Ú×MWàîö–ðÕUã@Ó¡Ê`qÖ¦WžeûÁÃøzêxè¡çð4×ÒÜ>>ûµµ/ý‰¿=ñ žÞ*^zwó ÷ZAsóæk¯c«Ý·›–Q®½(ÎmÄÇ;‚vHî‚Kðç.g‰)éÁòQ¿ß,ûe™î¾.º¼ÐÚQÁ¦‡þÊ#=‡M†–£íÅ›˜1c:‹J¦£(rüHlŠ`xéo8›¢p8]$“É4LàÉøÙôþ>^øË[ø:»¨iqÑsèä½q,6Lz׬Ö8îý΢+&æ,œ9æøn¸ë&¦g¦ Н©ñÔt†ý¼1S <ÕTïcí‹?»½!ðZb*ð$JV”Ž&Ü=ü×÷ÿ€Ø¤,ClŠŒ~^›Íƃk›9fµ±%¾áF?ùKKˆKOç¡â¬ÉòD X†H¬†âtm˜$Ik‡$)[-ƒ–e]—ÐÑM×D“Iu]è6Ê AÓ<Ÿ,–*ŠAˆ¨ô=ÌSH4Žg£Lü\J‚“““éééA–ebccòâXfM7£Ôjt5¶ñ^Ÿ›E³y¹¾‹Å38P×LQY<­­tÔy™– GOôÐtÜÇñšñ EEdpòîžÝ¼û§5´6·ñìãðÎúíœØù[QžÄŠyñlØ{”Êf‰ö£»Ùðò_ùpo-n·…y‹Îcã–ÈÝÁFBÃÁ×I(œÅÔ’,.¹ñffçÇqþêk™“6iØ—þ„Á½Ÿª£>žzuK0&OÓVú̉,œ[<±cy;ùõÏþçÀK¿¢Q6k Û?<Ä þ•M.è«ãW¿ý¿ í$j>±…gßü;ÜMGin0säí£<þÂî¾ý|žzu ÷½ÎþÖ¡ºªcñºÝ,^2ƒþ¾xª÷ÇXÆÛµée^~g7^‡LlØÛÀÑWwðÎî=¼ûè ´5µñû‡þmÿÚ=Tÿjp8,ø|¥¬’2–|釬¾ý:ª6Ù´úµðo_û.ëïÿ)•‡êyáÁßRâ™J\ùT~ðÝ{Q…¹\0(©eõî¦cÒÈH*ü~?^¯A‚ý™£•8É’Ûí&>‘”È öɤ><[¸`F32É.ºáÒKŠÙ ¯(ŠH’4¨D;4¾Ø¼”M/Çç ,8½#[I’ì75â3XÔ߯Àf³ñòºÍ¨ØƒÇådj¬—¯þå…añ}À§xrĦS¼è ÀI¶6зªûqOÕ“›_4kîRʧÙPY–ñõÖ‡oùg²ùÎmSùéªyü}rwÉßHIÔûi/¯ñ3«pñÉò©½œ5MÃçó Š/Ò>`£×<`xn5›ÍÁñʦO» ‚ÌèÉß*Ѐ ëšÈ# ºðöþÄ¥hÑÇ÷óÖ?v va÷îvdSúÉI÷õï“¶ ›²Å‹ <骇––Ùòþ!ޏ\4ïúKÈW$6Eáp&ÂÙ!b)(+BQÔQ¬„þ֑⫪ÜI}C H5ûhî¾8®(J°74>ƒÑlëKæÀ;°°0cª•âÒ¹¤¥çò«Û¯ßh-l ‰‰ä¥Æã÷ûƒº'áXС‰½!ðdÄg6k<ñÀS˜Í&¾úÓßòVµ•ö0ÏýŸOJ \UXh5ãtyx'¼^±Ö™°) ‡3aÃc£­­‹Å|_Eîÿî·G´ ˆ_é艰¦«¥Ð;$‡4M@AÕ|‚ªlBâ‘';øåÙH‚£8wíŽç¢-’ŒŒ2Æÿ\B¢©©©Ãþ¶ò3ùL9©Ž[rAà÷—î;Ù4µô¤A pÇycš_QŒf–|ávz¶WáL2!KmdÍ™Mr¶˜ïª5Oýo'jË‘ÛÖ°'f.¾7ñn•ŸÂL‘×¼Ké¬+Æ=“#»w±iûq.½üv>:öóV\ÂÖmkYyçuãÞ÷Ȱ¥drÕeðÑ;Oòn•Ÿ’l3ßû€©Ó øºÙ¸¯‚ÂìR®ž_Œ§·Žgžz–Üü‹Ø²s#Õævæ\;‡76nÁ—7— §eLÉÁï~òKŽy—ìI ˆ½>+ß&;·”äT+~¿K›¹TùòÇ1—õ¯½‰5u­û6Ò(ÚIhÝÎ˵vJ…&6ì9ÌüóðÚ?žÆŸIya6I…)])=UxSóùý#OsÅM_ÌQœUØí¶àw}_}-+vý‚þ¼$û­˜“³5È$’$!IšŸÊW¶âôÖS¼â:ZngWK©¾jοð6оô%T%ð­ªê˜lŠF° áFK˜†Úøˆ¢ÈŽÍ»ÈŸ1Ž–£Ô¾êÂ>­‹ V¶÷2úG v1\|Óg.àÅÍ{˜VCl*ñî.ˆË+ð4’(Uy^?3¿€ \œéT~.¾¡Iz8›¢ÆÍÇ:ÉŸÊšï}›¾ýâƒDY–ƒÉ ‘Z,ºjwSMó&Ùqä$ãAà·ßý 'v ¸“ÀaŸÅbáñ·’’˜Îo×Ô@¬€7»ŸÂº.Ëlçt:ço¨€U$‹^Àj¢m˜bb¬¸\=ˆ¢ˆÃáŽ7wÞœYÀ £ú“vH‚ò€’(vHš¦ˆšî4]]ÓAÇèùù1 Ú 9Μ-R`Qè1àãR„ªí%°Â¥ ›f–cT“l×$ѦKb@Z–"Ä‚¨*4Ÿ,Eh]£*ÐcŹÈKH§ÅëCÊün¥3ãÑZºéé¶±þ/WÄuòàÛÌ,Å×ÐGW·@nF2úcu”ݞĶGZøÇq77ÛɉSYûZ«/‹çõ»‘Re¾xg>>ÞÜèå? — °‹Y(ŠŠ(ЏZ÷³§Iç¼ó¦ò_ßü_à>RÂ<ey#ezÇbS4t¼P›"I’FLd²Ê§qÓÒt„¦  ö@Ro$O’$…-§VÑjÇ.H§œ]Nú:ú™Yž=ìóF9u¸ødYæ•W73oÖdºm¨;à+Û²øý¿>¸½QÒl$ôSŠ>—ͬ“Ù}¬‘›^ öÉs]´×ß p÷7¿Øfò¢ z¢¶šôÜ,¬Âðó¸¼<s‰ƒ Í2ÙÃl˜"°2žG –w´6Ëé¢ÌéÚ0 ]èE —Ë‹ÝnÇét"Ë2II‰áJ }À‚ѰñÔõ’h]TÍ/jºÒì$Ѧ«šWD‹®¨^AMQ–/|²Xà>y”\a!:;>lç`xš;ÈÉ´ãs«ÌωAp+ô¤š¹ùbGÚUúÚ½(4{$.OLŸÆþWàýf/ g¥23GˆÆ¸{Éΰëuq<ÇÎ=פ##óùS©kpq¤Ê…,šøâMéôv¹>îÃEQDÅ'f³ìÉí«ZCÕ;æËo¶q¤"ÐÓPœJiaŸú¿ÛI6%3cV.¢_ <ɲŒŽÈŽŠ-l«vaIÍf}­ÈÕ«æP}¼=8N¨@ÐX¬NGÉèé4úAC›$ÑèË …®ëàH@`{yú|þ1 ÛíÙ½ãµM<ûÈ79´}í½ÛFŒÍçó_YüqÖíigÙE7¸è»üîËŸQài¤JÇ%«>Åüó`K-fÉâÅA'Ñß& xZ.¾½Ç;þÚ¼ü›Ï²éƒÃ⛄ƭ+y&yPR*„°2Æ«€•qlFCh|cí57†*Y§¦ÆÒ×ç4oÃiè¾tt€RÀI×]0™TQÓÕEh³`³©B TÍ=è`D±"Ç9/ˆ5Áˆ–@ŸÎv)ô©J ýøE MPP".¶X,ÆJZ°:Š3ƒh ôÙÇëoý?œò•$+5\|éb6¿µŽ¦ö#ää/eÑ“éh†ç¶¼M1æ]-o<¿–æÝ{¹õ§ßÁÚÛÉš5/1}ñuÌ)N×<ö¾õs^?’Ä}_¾‡þªTõ+lþË3ä,[Ì-Ÿº2|…Ñ sgGä<^úÝ/)¿þ V¥'ðÍ»I‰+á¦ÏŸ?qùzùíâÖŸ~‡ «v•Íñô4ìã'cÖÛXrýõ˜jSQ K—LȰ5Uo³~ËvnüÜýøëƬßÅÅ×Ý€sg‡åbf$t{̼ÆþÆ}\~þ½¼´å}î¸ájDü<·æfçÄÓ$h¸;Ó‹Y¹pïÿüIN,)B{y=ç}þ3¼µö%®»æNòòbG,Š ÁD•@«ª†Ï§‘à ¾®žžß^ÎA=› ¿öò§”!'K›äQ^{äMÄø:¦/Y‚«ÃÇÔ‚þöÞ ¦8Ì,^µíÿ³wÞáqeÚÿ2]½wK²åÞ{o‰ÓÀé!” ²–Ý@ ,ä a³!$¤“Ò‹Óœ8î½I.²lÙ²eõbõM;åûctÆ#id,Ù„0÷ué’ftÎyßçœ3å~Ÿç¹ïa”Ž¿‡šå5`Ä8Øöaôz½½2‹§vïÁdN#y”…moDéÁ2îþýoúíàõzq8á†À×r”o>ò1~ï*Üí]¤LŽÛ7‹­ªê9Ivh–×øiꆴ>ýX¡eÙzHÆ·qã–̈ç{aJ¶›Â¬\.[±¼÷Ü}>AèE *=ΔIE<ûÈ­ŒýüÃ,ÌO º¡ÜŒŒ~Yl]×iéð‘’pîìkh|F™ò`(¾Hp¾½æCÍ74´‘‘‘ˆÓé .N:xøùë®ù³¡¡„-ƒe¿,›U1+&Ùê7É6%Z=0†Çg°Ú(Žf€ÏŸF[$q’ùUG±mû^ÎZXª”í?Ö«Xº¹ÝyN•Íïý•Eáàž]ì).éõRêª/á7?ˆhž7Š /ûÊdJKÞ`bZ+Ï>ø'âç¬ÂîHgÁâI€•êºÍLœ8?"&$Ì¢Êò9S¯ “k–ͦãtã°gR´ü‡üÇ×ðþ7bÍ˸écÉ .ÏÙq¸~ØÇGìiÌ›jbÖç®`fk)]~V}ùzlñu#;9îìy4]G̘EQ´cC@>Zÿ>s—Ž ùEuñä›{)+ÞDZZg¯1u<¼[r„ùSØUÙ9¼1Ï”ðèÚ vm>Š9I#eô_' ]݈¢³$ é’ɨÞ0u)™‚š*Fͽ„ƺcüÛ7Vs´rë Eñi„É$ã÷ÈÀ¨üQdüçZ®yà]² Š‚6E‚«…²’½4lÛÉî£;yàá?3ir®Ü9Ôø³È*œ€œPÈW®˜Ï’Ëáí±)ª>U±·kßìb¤YÞP›¢›C‰ SJZ,vËvVTS0<ßí!¿ál˜ìv{ÐÆ¨/ÌÉãùËÏ¿‹Ù–Mrîä^¥¿}ã µC Ÿ$Ilß±‹ã5N¶|ð,¯ÿõWˆ{^é7¦(ŠøýþàO¨‚ò»o½Mq‹åËðÌÖ6q뗾ʒs{ŧ(Jо'ÉÛóዜêTøú¿>ÏÂü„€›FJJØ,½ ¼]ÚÖïçkSdôbצè|m˜"Íñ….H `‡d — ô¨B¼€5UÔuUèm‡äB³”Šê¢YàÈñ©Ï„-Rø¼tß}÷ y"QÀ/~ñ‹ >Æ$& Í4ß¼xUÐÐ -ð†Ðóc³ÛMÓ}7 ‘À›†Hψ,ËÁ7“{~|Ïw:+6s÷¯ßd~N'¼vŒæS¨ìt³ÿÃíLÃ>Á‘“nä˜8œGvóÞ¶T4º“¤óÄÿ=F­Of|^ÿýð«|qõ$®¼öW$wScŸÃæ¿ý‰:¿ÌÞ—Ã'\3.žÇžxÁ*±wý¶oÂÖtœ§_~¬I ÙùæóœnëfÿÁÓL—wÁÏó…Dss'iiñïiüÓÀ[¿›KV]Kvf Icæq¢­‰U3Æ£úRÓÓ7Ï=½†îÖ:V_·˜g|éW^ÇöíÒ%§ã=µ…÷wÔ±êó˰™‡WéQY¼‘¿¼¶Ï}å6¿ó$j·• ñ^Þ9ÔÄe+c¾@ ñZVG&ZM1;:cøÒò)¼üÒ‹NZB^vÒÈ äkçÍ×Ò)¥26;{|"ûÖ¾yó±·l§)fãÇ&à?]Ëží[36•Ãõ>Ф&><ÒÉêÏ-§lw1sV­Ä.êó3qõ2…¤ÂBž{ñ V®ú"1¶è:óÅBWW7’$ãp2kÝÝÝýˆ¦Ïç öOžë§±±‡ÃÜóXä“ÝÅìÞø&Ó R‘cÒÀ.shÓ)&®žŒÍšAº³™‰—.gò¨l²bMXL"º®ÓÐЀÛ+Óèö“kåômt{Sz»-=¹¡eÆ‘fm ecÃÆ'4£=Œ,¯£4ú—úXRìùäd’”‰Þ3¦‘a‡2Æ =N¸øŽìØJFþ¹ªŒk¥ª*‚ ãÛüDªÝÏ–ëøÃ­ IDATú6>·ürL™3‰Ñ±ÆgÇ2 Š"&“©!L±+8,fbrmÌž>I×D©W|F,Áì‹)so¢÷õtD)ü}N†GÁo°  _|&“)¢loèýbœ“¡Üg^¯‹ÅÒ+ë~.øýþ`߱ч-ÐÙé&6ÖNgggàÇÆÆزy[ƒ±¯ ºhº€€® ‚  š®‹º(Jº(Êš$Zu‹EÓUEB’Ìzàë­Š(ʼEÑX@„§iôj Õq&~våÁ¸`¿ó~€Oëп— %†úÄv.}Ÿ ›=†>'ÆñGê×B”ÛîZ®DK ‡‹U I ´†&êèBbJây•@W¬û#OœÊãþ›ó¹öÞ×ñÔŸâ~ûŸüôë¿eîr‘Å·?Æã_ûWýøÛ8vþ•®y_ãÍ_ÞÏÂåБ±ç‰Óܹ*—í¦EÜyyÓÆßHZQ{áxàù-¸NTqíX£+8úÂÏuùãäѧ·óóßýÛ¿ùS~ôÍehÙsÙÿÄ/¹ë/à?£2k~Ñ?ÇÑè(¢ˆ"Š‹ƒ‘*EG!6Ö†$IÔÞ„sóxøx!ÿ`&æ±ßlÓáž$/Š¢`·Ÿ]xé¨8D»f§ÝÝŠVõâfÜÙQˆÃª“l“FLÀ*»šÐÒXæh c÷%xÆs}K\ßܼ™ë–. {ƒøœKØiߺ'0M¹•©égcïkSðØí߯Z·o-›jaü¨$fL›Vài°¸ ô-áýøã­ŒI³MAkb,11V¾zËM¼ÂCZL›¿˜Å3çóƒUcèóɵ·‘]8ƒqñ.~þÌÞxEQDÅ? µµ­ä奒>~1®÷þ@fËq¸ƒ<ä@°MD¶2¨/½ø,X§P¡œaIA"˦çP}\fáê? + ô|±ª€UhÖ.R2jSjÃt®ý g8òÓtªŠc¯ìgÿ¸T–廈?j§u)õ¡=džeй2’³.½£W|aŸAüú'kÖåܪő(÷Q¶§nƒ|½ÿÍ# <‘‰Á»v° prJ²èS|#*‚UW¶“÷7ï%}ü¬^6fÀíÞ^³‘kV/‰?3ˆf€/>üŠŠIŸ_ÇÜã«èëh¡µE&£0žnW¢dÇj5ÑÕÞILB‚ª¢KªßC·ÇO\ìð…‹4ÕG—ÓÕæ@WÝ ˜ Ÿ"ãˆ<Û34èt¶wb‰±£+ :26«Hg‡[L,&i„?{ΛÐ3¶³«³Õª V« ]Ó"ÈP š¢ Ê2º¦ÐÕéB4›ˆ±ÛÑý~t“ Ÿ» “-vØBcªß$ ´wtŸ‡t;»ðk:Ž˜X|n'vGà^Qü>“?‚dB¼ð QôÁHf€%I¢¡¡ƒÜÜ”^_î}~…Ø¢(¢ ~^xq-·|uÏlÚÃÉ’ ¾ûƒ¯áÞ²‡öØ,æÍ( ›å-Ùð:£WÜÀ¹Þe†›å…‘@ò¶7³ñÕõ˜§/$ÑÜÊôiÓΙÅ>WÖ5œ€Õ¹æfˆs…‹O$µ“ºêfÖ¼õ$õ/?¾ç÷Xúà Ù}ãÛ¸~+ÓV.¦rÛ^Úëö’7y1éɉĤe‡ï\qˆ‘€ÕþÖî«©çΜ\>—ÿw°j–×Lji¨]º®ÓÔÔABB,6›‰ŽŽŽàØc &\ÒÇX4A a ‚ªJ¢ì—$Ù¯©E’LªI¶ù-&Éï÷YU³ìÐdɪ™e‡ÍŸE4 Üó¸'í&.F/p*©õ‚ÝnTMr°îSØx°l;ì¨ñ’j“èª÷ Ç›0Ù2˜6k9;¢UÂëÓ1É ¢YDꙩÍËjÁ‚†¢ È’¸ñ¨Î.“õ¬T—«Kºœ*«ˆâUéöƒY·[Ådqw+¨º€ªèȲ€Ï«ÐÝèÃ'€(‹š†³[Ãl>¿n‚‹hðÅǯïz‚ø‚VÞ|¶œisr8±ï0ŠÅŽî‘ˆK±±æå§yfóQòÄF>þh/'ZÝ¿ý™ çQ· _ü×ÿáª+¯vïæþ5¿bñµw3cÅÍ”¯ý=Ÿ”T#uUóøk2yîBbå q׺yìû÷Óçàƒ'ß`çÞÃLJçž»oÇiÌ´±é#7”êá…ÿ}ŒÌ…ópª·‹ÿþÏo±¯)•£Ÿ¼ÏÞƒ•Lš™Ïó|–‰ófGúY5(ÊOU°å͇ɛ±ÁÕÄ;oý•×ßÇ乩xç!šóVòüÿûš}*9qÃç kßx–|óA®üÆŸùò׮DŽÆîuòÌO2jîL~ô!&M]FŒMäýþÈ1MdÇc/âOI%Þê§¶ÊEbJÌEÅ`Éà€p’ŠÃaÅëõr¦¾š’Ýkùí† fÛëHÈ‚NJý|‚əիæ`ŠÅ‘žFvFb°Tµüànö”´òòš5,[8‹Z·›“[Š)˜068/ƒœÙPCÀ(’^^UUƒC†2u$¤Ùív#Bp<£'4”…B¶:ÈŸ6žQ™±¤¥¥õ*OGž ŸqîeYF•$lÞBíñr²³\`Ê{ £ÔXQ”^=«ÞÊ#4 1XM¿yøy>å*&̾”Ë–^Ž&>]×Ö~gç¤PÖèeÖ¤|rÇM'!9Ù3`|¡q0®ß¯ã“$ ×é-liË 0±ÿùɰXùbZ*²,¡ï|¯ß¹Úlô8G2ÖÙøÎ^¿HzÍC÷1â“$‰ØX+mmÝÄÆÚ‚êÚº®³|ÅRá•¿½Vbì´JBÐ5]@4]DM]–M×d]%M,ºÕ¢ëª"!"‚ ! ¢ "¢(‡ïÓÐ Ü{ž8ûÒg.g·×Ãn~. ;=Ü\úÄØ'âA†:'c7—Gé;¨rÛ]Ë•(&î»ï¾ N‚›i’àHðùˆ`U—×Ð`Jd\Ž•ÃÛêyiGž -øÓTÖ~ÒÅöu-PÝ3UáÅÇj1·uñoTsªÅËÒY œ:TÇ;o¶‘’+ðß-çýým|þò4$¼t´¸¹åÎ#œiX0+–“¥õ¼ýqk66RS拾¡›Oþ\ņÍÍ$j~ÞÚÖ‰Åâå‡ß)çÃâv2Ìݼ·§ ‘¿*cc·Hey ë«Ø{ª§j!/+ò~˜‹‰(¾ø° *­í±¤QYS¶CJHÊÏÂU­“=6‘ÚöJæÎ»’æcXñµ›9Z|˜I© $‡É–Á—Me÷þ6F¥>Ø9`IŸÍÝs»_Þü›¿Ê„¥3Ñ|M$ä/bfîŠQõ‚ yò8–OŸ„5ÖÅŽ ;˜sÅU|åK_çØºLžÓ¿4ð¼!ʨMM$‡ ðù»™¿êV”⽘óF“ëgÔäÈMd.Óyµ›§_x‘#‡÷9åjrÒi*ÙÉå÷ÜÍ–5¯p´l.Ç®»ú:J?ØÉ”ùãÎoœÖÃ<øÜÊO3çs÷2G±bGÕ/3  Î4ž…Ó2™ž›ÍÁC{¥nk+i ~’s'àñ×3:ÓÆ®ã匉ȣˆ#M€Íf™††’“ã©(?‰²é~ÌMµ¬Z‘…0Q0礛59E”A«î$#ÙA»OÄ×XIfáXí)Œrøp>ÌôE3(˜0åœVçB8+I’ÍàEJ~Œøûîg”S£éH²ÌÁ#‡¨<®˜G¸O`ƒØ¨ªÌ„1zº=ìÙUΤÌ ç^ÂKë*˜R”ôx2âêKît³‰ª3]$¹ö3}örÌf 2¡&“ÉÔOàÉ ‹}ãÕuœø@–7°€GŽŸ"#-%ìy4ÈœAêCžÞ߸¢1Tlzˆ1—¬ü)¸÷>DÂè…Hœ]°0®ùÉÚ66haJabÄVÅ7Œ ·Û=l«HÅCr ¼@W@h®¤¤ÜnwH›Í&þüÄÓkÍz¶Õ@’]Ó¤ …@‘£ ˆº$Êš(躪JH¢Y—D“ À2¡¸g–çŒèG®†-$É QA¬ˆ$ÿ,ôß¾/‘àhðÀèS¸8Â}"/Ø ©) œz¿Í­VZD+W¯JD}­Š§JR¾³+ T8&?†•S]Ô˜á»wbsžou)¤fˆxT••7fS”/õÜn:onmæ'÷æqpm7ín?©9vü~Æç›éèð‘›ÇŠq µºÈŠKÓh:ÓÌ%7e3v”LbœJëq±±&º5“c¥ýŒGœ•›>ŸÊžã¾ðAEñO‰ì ã™3ÚΩÔâœuì2£(/%Å89²õ8Š£;¿w+þÅÃ\óÝï±æ™ÿåôö1ŒÑŽòÂ>'ß¹û«ÃžGWå^}äßÿ¯ï²ñ…‡HÈ[DÛÉrÊv16ë{e\˜Ì`‘=P ×ÙÜÀµw—4å ÿû›?rùÍ·ì@ÞV¶T”R¹­ëMÂ$ê<óÈ3yÅ׉©\OkòtâœÕ¬Ý¹WÚd–OEwÉξ÷šê.%1˺ǂ«É5ÃÍ·Ü…·q&íñSØýÊã,¼åëç?NÒdþçÇ“9}z6 ÝÇÙ˜“ÂB¿›J·ÆÞ_½qš·•6à‹wÞ ÀèãȘWHwEJÊTþïÉǸýs7˜L2‰‰×éÌysØQv£ÚÝ4ˆ+Iòx‚$D–ej÷5’;'“õ[÷àWœ1µ‘ØÐÀéǹúwa­ØÄì¥Kz¬|”!—6âI‹%bѬó@ 'ð$Ë2ÎÓ‡yê}?~Qàk7%q|],Êú X™L¦`/p_Xífìû˜Åwß®ëÜ´jQ°lØl6÷ËÔöík0;)Ê´b³­„&”êëOâO›AaŸ·X#Ë8P|V«•ž{¼IãéÖú¿?‡ <éº$vgáÆïNbˇϑž½»=pŒ‰—þUQð‡°:|Úϱ‘†6•ŒÄþ8\‰r$¥Ê¡û Ŧȸ×BUÁƒ®ëÁÞq£ !ØíãÇÆÆâñxÐuÄÄÄiÕË"(`‡$ô¶CêéÖt]vHB/;$I4õCAQŒ2èh/ð0âP S Ý'D}(¥ÐçÓŸŒ}€sÓûþ×<Ú²$ ã&†ÅÈò1Cí50Tá$Cœë\„¹ì£5˜2Ç2fʸ~H}çÌ÷A_'I’ض­ŒE‹& 8?ƒ`õŠOõÅè4œØhK§ºå ?ü ×ÿèAâ…Þñy<bb^|,Þ³¢ñ…<ýçWùÞ¾7`|¡‚Zá.¾phr{x®£‹e¤öšg0¾!^¿¡övýB¤ñ 4OA€ÖÖnRSãhnn.ê<óÔs?øõ¯î7Ê Ïö ‚¦¨¢& š"Š’"‰²_SÍŠ,™ý²lU-&‡ß$ëªßk×̦ÕÈK¢¥§ØÑ‹ð\è~àh/ð…›œ/°Ñ%À#ˆ H‚ƒÎ!GŒ”kº&ªš:l¬‘Dk¹ÇØÂ0 }Û¦ò.’ÆÆŽXáH#J€£ˆ"Š(..öx</ééI¨ªÆ¾wàéæ±…îN•úÓ]Tœör`{ðeSYåäõ?ƉΡ}íÔ·ö¬ÈvºÙwÀIW“‡œhÀŽÝû ]e4wkÁ1¼.û8q6{ØQâäÈ»õì:ÔSƒÝ[ÛhrFòfÅg¾ŽzÚœgW˜›ŠOãî³M[Ó vì>ŒÔ?LEe ÒÝí¥“Û7ÓÜÞ5ì¹t·W³e˪ê;hª¬ òt=ÎÆ:ö<1ìc »7m¦ªñÂÄÔžÎBó'ÑIÙmìØuÅs†­[¶P~ªaÄÆ¬?}ˆ½ŸóÐ>ªšèn¯d㦽h@å©JNµ8‡5Α’-”WV*%Ç*ÎþCu²aç>|šÂ½ÛijÜamuµt)ÐÖT‹Ë]Xþ¬Àá° o{íídì}š¥eO±ïÈÙÖ›QSóÈœ‘‚=wTð¹L555t7TPwºÁÇ[Oý gÆÕì©hA°Ïຯ݂×ë Ú@FOï¹àv»Q%8ž,ËÙÜ„þœË†Éí>ûÎ(ÛVðz½¨ªŠÉdÂuª™ªª:jjXÿúV½»û)Š,‘•e9HžD[ó–ÌGÒ‰‹ï ²Ñ‡¢‡o {¥‹§ãk¬#¿h ¿¸÷Ç\[|0¾¾¶J†R( 1£¯Z–e>Þ²vQfm}ïmCcô*‡ —™L&*K×âFgfSZ^ÏM_¿Ÿ^›F\\Z¯ó«( ªª²ýp ™M‘¢(Ákc³ÙúņHšwè}6˜€•×ë .èñ F~ûÞgç*Á¶Ù>ô˜=vHÆÄÎþÖ{•@‹šHüôX!¡i~QÓµ`t˜™õz°c}*ïUahß1…ˆÔ/úÎKÿÒ¿  gûè÷ÞóA” .F6½†š! "œG“|NN£F"++‹ÄÄD,HfÍCG)˜dæ¯7Ó²½ŠjEÆnÓyèþ£<ñèqJÞ®ÂÕÐJéÖþº¦÷™f^ü¨ð»y}Ýbí"[jùýSµl[WÀÚµ§Q­¿ Œ'=Ά]uf—Ï†Îæ7kxøþÀÿ~órªUã u蚯®"‹^6½VÓï4ðÔߪ‡oŸˆ²™Ò'8¾­–ÓÛNàíVé¬hà/OÞÏ®âÙ\ׂ¯ý8;Ê*ùhÝ6|ü ë_{†OvÇÕáBü¼òÖ®aÏ¥b÷Ó4øb°˜¼¬ÿxŠàfݺ¨-+æHÓðÈÙÀˆÑªØ¾£å‚ÄÔ Þv~wß´÷áð_6Ð €Îßž| ‹Ý ®ÊŽn ZKí~ê Þ*=Æë¿û?NÕwpÿƒÑá=×Qü£!%5ùæ(œs-ùsWãóùz‘´vdÊJËùøÙ78ðÎvm)ÛËÑý×ÞÏïù%ã²S˜3ál–Øb± BXuâPœ/ùñx<Áß¡Äg°ý /`#»,Ë2‹I’ðu´ñØxíbÞ~k;£3FÑ~躮÷">º®Éõ@¤Éd¹ê†›HJÌኅ3ð{ÂÇ×W˜Ë€Os§ ˜3„NóPRÙŽ"ž;>¿ß¼~¹¶X,¼õñ:îûñ1¹\Ô—¬C­ØÜ'\|†êvè‚Ei•ƒ öál;LRb n‡ÉÆ’)cÂ^¿ØD`W»•±éá?#©÷F"LdÞÁlŠBjÃd(Rv7} ‰dµ1{N:ËWÌbÎìIÄd9ˆOOÐÆÇÈþ†‹/&>!˜]tµbÿÞ.F„WÉ3~ŒøŽWÔÑR}’´LñÅ<òøX´äŠ^û}« äál¦òâÀcI!1^fÖ¼K“[ÐÏÆ'XÖÞSÞÆ0® [b±{0>»»½ÿµÎN°Òg¥Ð$‡Uê†þ ØáÎM_›¢Hl´ÂÙE*Î66L‡-¬ÒŠË„—ÿöj‰ñõ·§8 ¥ :hÞ`AÔL&I×5Q“DY•$»n³ šªÈ‚Ho5hzâêk?µEŠÃéüLM‡f‹¤k(·Ýµ\‰ö_\€^`¡ÏßB*©B$=Àš¦I¥¼OGð?¢=À¶½Ç„EŸcïº7P퓘”–„kBŒÁìïŸȑmëÙ²–¹Ë/C­>D§­“»‚ÒFøòª)¼úÖ:^vyiŽaÍ¥ùd1k6â–o\OMñ.:„rcT¶UtrÍåóG(âþpµ7áHHcÿöG<¦^ðuòúÛï‘6~K¦°síÛÄ^DÍÁ5Äå/eF®Î‹ïîãê/ÝDŠud ŽJw~HEg"W_6€uï¿AʘiĹ[Øy¸œq3ç!xœdŒžLVÜùgž?~ãbó—2fïo.åŠ9£8Þe"»ë ;Í —-àãµ;¸äs«€–$ŒIÇÛØ†Ëï¾Íµ_¸!¬=L¢X’$E£©©ƒüütÜn/Uoüï–ÏåçXùý¿"5Mmäe$¿ÀV5¡½¼>gO¿ö1—¥z)üÜüùÃRnœ–Dbf&0rV‘b0$ƒ°÷ÅPŒ¾Ûâ+?´‡f¯•ɱT9IÞ’•„:xûù|¾`º/Ú«÷ñÛ‡>á·þ{jZ™““Ô+¾P"oèæi|FÆÔ }áz±7nÜÂ’åKh¨9ÌÚ]¥Èí>nýfo—#›Z. B{±‡ÚËkàbôš¦Dnô·µµï‰Ö–Öóæ,þ¾AQB…°AÔTUTEAS$IöK’ɯ*&Õ$YýfsŒb1 Šßk×dɪõï¶èý{n£½À‘â3Ñ ¬JžMÅÿÁºPa|Q puu5]]]˜ÍfL&£F¢lSŸ”{I‹“Y¸È†*Ç0*c°¯vë¶6 Õ»Ǧ3;ÃÇ¡3óÇ^û—O#¢8Š(¢ˆââàBà@ØGl¬A¨ÿóWØ¿¿’ÄÙËXþíß C3À IDAT’g_c̲å´;½Äêql®¬ä;×/çõ—aþâ+0™cHKÏQ›¢ÁÐצh¨V}Ž8Éa£¤d;§^Þ ¿ü£Ç÷öÞ6âr:¨/ë¬}ûÚ¤ .[q zó1’ó§ß@¤†&ðzœ°ñ©Ý”m}›cU$›'±äæÅaãr¹p8ý®ß¶÷ÖQP˜KÚ¨t*jZ7¶Ú3­¤šUÌq©ý¬šÛ¼<þ^Ëf$³dR\رþ^VCÚê~õõ-df&£( ]]]Á{®¨pâÊ@?¬ º€ ‡%À=BX²dQ̲Ýo6  aA”÷Å? î!ÀŸVñÜ(A3Íz"‰ßPzDÆÜK­ìv;­­­€ÆîcídKcò7Ƕòæ '·Òxÿ¸ŸëV'ñÒ‡­|óŽ" lðò+e¨¶dä“]ó©x*\\•Óq‘8ÞŽ§¢Ž#qd+Úã­4·³Ï#pÉ¥Yx§žîBÝ'|$Mp0ÉëeÜ‚*OÈ|¸§ §CzŒÎ¾QHÊȵFEQDÅ€hksk õÏ[´›yKæõò@ÝñÑ;,ºb5ï=õWÿ,¶A &]—_sÛÙ,vF M#Òøúf±eYæ×ÿókîýɰú¦ë˜ÙÜ~Û•¤õù’nP$24¾n¯N{s- £ç±s}9ßÿîø^û…ÂXìè»x±`Å(žÚàcU²‡qc Q…ô„¸` vßíÍf{Ú[ù¯IƒÆ úf±‡ZM` ÒE™¾ÙáH÷óù|¤¤ÄÒØØAzz|Ð ‚Ào¿òµ®½ùÐý¤:}¢ÂD»îpèx=>`ãÙPÜ߃7oà(>SˆŠ`] \ŒÌzmDËf³Q]]Ëå ¬àé°ðÆQÌÏ7±ñÅJbÍ|qAmgLA,>ʼQ1t{oñ1¾|¥-Í^ s-,“Œæq኷aq˜°É&n»9…º¶nl1fDAæÛ7gà«©§ir_Xžˆ;ÁŽ-ÆŒ«Ý‡æòÑØ­2u\"_¼,…“€/†÷(þùðÂÓ/÷ÒC¨=\ÍÁ—÷àÔΣüßÃOÓäRi,+á¥7'Mõ’÷_}„u;GF,ª¥j/üã£ì-­cÛGa÷®Àq뎎T¯á<àâù‡aoYo?÷züO´û¡£¶Ï­ïqÝ µtéPòϼ8·íÍ áõ2·v¾Í ¯¯ .çmzë%v9<ß{JëØ¹k?M®ázò@)Jç ùÃs¸zž;{ßè¬ÿxopÛÓ‹iðÂé£ÅœéɈ£ø4 --žÖÖ³ú“‹ÒyeÝ.œŸ u¶Årè£2òÍåG?ü…ÿr-Iãç2~ÖõÌž4²ÚlT7t°¿ÉÏ®£NjÅðŸÍ X †P$è-`5 ù¾.Öìò’§yÑ<·8‰'v)LŸ`§hB<Îv•¦8YŸ«(>eÓ`§òÐiê[Ü”n9§ÃE[åT ©ÉÁ¿Üuï´-‡N09]¥¸ö }÷@¥hü í¯‚ZwôGÏdÊÄ FÌ!>#††Ó[yõ£¿â¹`üÈÁõ—ͦ­1žÕ_ù:£…,,Z+þæF\wÚÛ縚—?ÿî·4ëð§?½Ï¼ñ£ÀYÍ=;¢„?-oþ6'[¼¸ëOÐTkáäÚòàùž:1¥ª„µ¬Ö8¥;?à£kh?ö Ë.[L {ÚÏæžûfý¦õ4·u±nïq*Þ-æã’>yò-šë›yø‘Gi:ÞB%Š<˜Í2š¦ŸµòÙðm^ü`#ŸlÞÜfþì1̸j:SÆ''+•øX±9ðu·ðök/àvu2ÖÚÈ¢ŒCt7ä‡bSŠp6Ef³9(Lt®ý ŸP›¢PÒj‡ ·ÛÉnŽ˜üH’´Ô ŸÒÍIW…éqœêóÝ7Ô¦ÈÈñGOˆå÷¿|†šÆjæO ”ZkÈÄgLféÄQýl˜$I:G¢Bâ_î¼„Ä³äµÆ¥†Ï({‡þ×ÏçÜ/gjñí-í¼úÆû¬ºýëýãSU&™Ï–|GjSd, Ŧz“×sÙ…b86LÆ\lô@ñkUUQ5 t!`€¤ =¥Ðì Ö ‚Ø#ˆÕK¡IeÝ Á½³¿Áˆz=ú‡³EŠbXˆ–@_@èº~!±zÁ‰S·cö º¦²ñYvÆd¥ôý/©‰vîýabð™Û¯Ëàž Çþ»à ý+Ó—d2}ÉÙ£|õÎü^G]º µ×ãld¯ÎeÉÁç4.ðw V GÜóŒ1Šj©ã’–TÖ?BÛ ‘)v M 4˜¼<ò\5…3¦¡íâè SŠæàª¯¡Ããâ@é´¦‘YãæÐºc-Ÿtgb6—bMÏÀ“1šËÇbžCÏ9QÖ&±jy‡K?!~Áxl’‚,åUgHÉëûÚúW)ÈN§ôX 6Úyç‘WÉ¿ÿNR,nN5v2>=|_ÛРQYQJcåÌ‚€ÉbåtËqìIEHqsiݱ–õÝiÐåBL³Ÿÿ0¾6”üLñÀ»’¿þ¿×ùéŸgw£Œìë¹o.]Á;Ïü_¼÷a!)–vZ'_Bg}“ó“(-+#mÉÔˆ;ŠO::\Áþ⊘¹¦þYF¯ú  –쀲ÔCAà©ß?ÂòÛîà£÷÷ak{™¾õ3¦O¯{HHš€—ÃYP«ÕJw·»=2›CÉ($;Zâ*B, Dšl6[¯}ú–¸>öýXpé,N ÝäÄeàmªaÑ ×·7â2DÁÌFÊvï#yîb ÄðOF|á2®ˆyÜÿâ£Áÿ)Š §f3ž–SØ“ úïæ¼ñiª¡Î)¡Šmœ,n$£ †œKûíçv»‘$)l÷Á Â¥’µl¿úñïxä7ÿÎnËã·Ý6¾’­<ó‰“G¿SvŽá¬"íç=ßåp=ê‘ÜgÙ5D¶›«Ãaáðá“%Š¿«dÃúÅÿï·÷d éá@ÿ¯®*‚¦ è¢ j¤°ÙÁïµjªæ ¬¨^!ÐüŽÞUÜA‚6ä^`UІÔw+ öîV Ó Ü§ÌQJ/ðPç!±pnzmÁº°!ÜO+äoÑŽ]LK×uI' |NËÓÚÎ;뻑EW\—Ï“OÔòå[³)ý †J‡…ÄÒŽÅÆñå•q¼¾®ƒ/ßšEñºj„øº+;Æ[©:Þͼù™¤»ºx³ÄÇí_ÉÆv¿èÿ# *‚uñQ~º†±£Ò)-+'#­»¤ƒ–$îÖ3œ¬©%&)•t»™ªVãGgràðQ ÇŽ§éä,ñùäd…·á ºÛê);ÕÆŒ™©«(E²§“™™‚§»³=á‚•ßø<.ÌVÍ]¤ÆÇ‚êåÈÑr)9ŒJOü‘¢ïqu•ãåGÁ–LŠä¥C0“ŸKÉ‘ ÒrF“•<2âwÍ5ÇiñÚ?:P¥ròøìI™Ä‰žàùn¨o&15›<¼÷_—«« SÙªQ˜a§Õ+bóº‚÷Mck+éÉ…¼îVÖ$ªËƒn6S~ì('OŒ–Y]D\H,C+&Æ|ÜÑÖJbr Ýn1Ž€@VñÚ혭i¼½wWL©8ÃØe˜45ƒæ:•ìÂì~OÞnÇUPÇÅMÜxÙÜ~± UÀ*4æá &ÐUöÁVÊyÈU|nõ\À< €•ßïÐ&'Tài0eâpV¢ȶñ•ž<ΤÂ"Ž•íÃÕ´)uÓ&ö¶bs:Á,t8R×ᬥòÃÍ´šòÝÈèäÞ‹Æ~F/q_œ:ð!S瀌ÏèÅŸ®ñ§ÊJ¾]p–Ù}Y–{Å ÎGÀê|•ÈCã3¬”"Á¡ƒ‡Ÿ¸ì’«ž º¢þ'¢&¢& h‚(©¢ ªª*+’hReɢȒE1IVÕbT‹Ù¡v»L„ a…'¾QA,#/ˆõ)ʪ@_<Œ >'+Vi8ØÛÞÁo­'=ÃÆÕ D>*†‰ctvwÅqë< ë_ldîL ÷ï™çc”8ʵ³ršÄA%™E~ZL¾TÅÖã. 2̹*‡i9ÿÜJUQEQDqqp¡ °(ŠÔÔ´’ˆ(Šœ)[ÏÃ;:)ôŸâ®»Œ ¬{ñF/ŸÇÆ„<ÑšÖ¦¨°º:8…™ÓîA.ÊaÕh ‡Zl¦dŠ2bµ)Cµ)20ùL¡:R&#{iÌ'\|ömd|ÑX®»ó^é^ªªj°¤94>µó0?¸o+¿}à.>|òV®»óyNÖÖg6‘Ø{аfˆ”¯yýuVßpCDö?áÈ}8&oûIp§=ùrÒÃêt·›\«eX×o¨6EÁªy¸,ï`hkm+©©©-Ù³goñ½÷ü¬¸7á…PÒëWz¾ì õç°CUUDMQ$UMª,šI4©&٦ȲU5Ëšf`«9^…@t”ŸÿŠÐªâÙTü˨ ôÅÀÅ(…>D®»6 µ¢•cºW—1Îcûþæ23%Ó‚5ÑÌ¢T?Ígt¤[IN±Sý—Öœ‘¸ti ±9.Õ ¬]G’£‹+QDEQ|v ö=‰¢HËÆû9¾³ˆ¥Ž?`ÞÊK‰ËJÆãñ É&´rQzª•IITŸ¨ wÌhªvoaܘ6½²†Ûoº„ÒCUS—3ÁìG„@)u ?ÂeyC‰ÿ¹I–7Üó}³¼ª¦cµÊlzåÒr0aaÿ…_A‚¥¿Æ~¡ïÔ¡Oð¦ÌbÍÁF^xêßéìаŋaãÓu½_vRŠÉäÞÿ¸†]µî ùu»Ýfgžúb L¥ÛíæÊk®9›}õvrêd9'Í»}è Ȳ̮M[µh)¦†JO´2o’ƒr÷h’¶=—ÞÙoß Q XE‚ó-Q—ŽDÀ*4¾H³Ñé]Õ“å )i6úz{Þžÿ‰BOϯ èª&ˆèšŽ j¢ j¢(©¢ kB1EYQÞÝm×}^0I& Îö‡/>Eè>%¶Ã.!Ž`Aô°$8Z Ý^”BG ðg<ºËy³lKB,S€ÿ¹“% ³'$÷Úî E!&úï¸;6øÔâ%YýÏw"QD1L¼¹f+×­õlTyõ£è†«˜žWÀ‘]ïðÞ¶6¾ýo_cïkæLòL.›šI‹[$'ÞÃÃ=Ï’«¾ÊÜÉçî uG7òôëÛY~ÕW™š+ÑáIs¸ùí ëøá¿ÜNÌy÷íâÑ_?DѲ«˜?!“–n‘œ87?ö+®ÿ3‹ÒFn(]ãÄdNŸÑ#¥ðÖ“$vÚjœG×"æ.cõ²±”–fÜŒi#úashÃGŒ[qæ1ÇÙOóÔøÎOîfÿë’7ï[ŒÞcüõñ_#g/bA¶ÌólâŽÝKª ¶¯}–ýÕ Üõ­kÙôÉûÍ»œ¼‰Ã?Æ6s9Î’õ$O¿„œ¸èÇëgËÙ,ŸoÚqOç£È3n öœÚRãP…3ÛÉ—É¡»¨ßæäÅx?¾í*Ò›)=•@g·[RwÝñ¯hšÆ„c‚壑`¤Jc#@êêêêE°B3½O?üÌɼ&Idžn;+¹J\ 2?A3¥âÝ÷.7~î–@[ò£(ám|ŒRâ^“IJQXÌÙl¨Íf£¦|ñùá{ñ5M f‚¡O¬ÒͶÝìÛþ“æ\MYq''õÞ?4Ë.6{æl&'ÿ t{:Ö¤ÑLMmt!^¯·_su«‡W×´ñƒ›2ÃÎw ›¢H¬úÅ|>_ð‹DQÚÀ¡ƒ‡ŸÝ³goñOîùY1Ð#f%ôÉò¢ûz^è!ÇŠÈúX‚.ˆ¢& ‚&’f”CK¢¬ŠÇº(xu·Ûª›$I—D“ ª~!¼Vÿ¬ˆ¶']$\ŒRs/Þ¤µµ•¦¦&iii x{x¹Ò}®ˆ 7Î…’÷kQš¶ðê’QDqþpSÕT‡?Ïÿñ þôàÓœÞUÁ‚[¿IVcàÎͽœ¯­Îgû¡#´Jã±µUR^¼•c§šP¥tæ,\ÈÑÊÖaϤ¹r8â™6#—òâ­œ8ÕÀï~ú'òÒS±]0nË—®¸œøø1”ïÄäÓ“¹ûG?âÀ‘Ã#;”ßÅûo¬Åx·U uÚçðÖ A¹¹õžÞÿ`ÓˆÚ :º–½§÷âÓBƬه9e?ÿ÷å¼öáIô¤ù‘éN]§Ú)9¡ OöòΛí\rSãS£·cÃÉm¯ci.á­ÍÙ4gÏä ö”T·2:#©¾™4FƒÐÄ[Çdî¸ÊÁ›']XTésR\Þ†*Á’ÅËhüóÚaÏ¥hÙ¿sïª6þöèFnúÊB•72nÕ¥,MÓØ~¸Ž%“³F âþ8“Áâqñ(¹˜±omXÏ¢…Kßy(0DzdÖ¤àG_ ÕCÆŒJºôï¾QÍòëo`ùì1áۂΪ‹§ßÚ‡§f/Ç.qQ`Œ)Øl­<µî w®žH»+…Ÿß L8¿qtéãf3ûk8~ ’¯ƒzž *}ÉL²{YuÅv|´…Ë®\‚.%QX[ƒ2ïëñýÛVóQñVòG]9RÑGñ)€Ù,ÓÑá"&ÆŠÕj¥jýü±$Žy ¥|áöGÐJj¹å 7RýÖ!m .FS4Æ/XÐ+Ë{FéæùÿûyóG³hAÇvíaò¤³÷ìH F˜úfCmŠúþ/snœ,ã,‹-IR°_6\|mÕÕ8RbyoG+×.ŒAàÍÃçóý|ƒñi-lXw›-—ä#Ç9£X˜6%ÝÎiLµÆ÷ŠÃ ƒç*7.W„ª¢ë:óG _¨’MÓ0§ŒcN†ŒßïÇl6ÓR¹™÷·óÅë¯pÌ|³|^%Êe‡C_«¡dyΖ6 fy…ž,¯ %ÐÆ¶þ ‘€¤Ë¢AdEͰ<òù]@D”DM]Íj ë+i’(h²lQEAÔ%Ñ¢‹¢¬‹‚)˜t}õçOk)tQ¬‹ŒóìTËøšš*âGªV(š››9zô(yyy¨ªJaa!kÞ®äó×ä³÷Ã&ÍÑ9pÜOk“‡cE^*–«ÚÈÏþÖnŠb //ŽäL‰£[\ÌýJ¹r7>ÛÀ¤‰±XË:iKѱÙcÉÈ4±óZr®Íç'öäSЍÖߺ¦¡ ¢ EV hšÚ³Â«£#‚®¢( ¨èy3@Uu$Éy ¼lUMGŠP!s8(ÆbÒ5 û݆3†!‚sŽ(¢«*‚$! £i:ô\‡ cLAMׂ_D‡«¦©€Hà0!s×AÕTDI | ,UÓ.ÊuŽâ,.†– œ<ÙÄØ±Y‚À‰¿ü„£›×"Ngù÷ß$66&˜©“$)DàÉX9y²œÛKøò-_ åX¥>æÍ™†Vµ[Þò°ŠT¹7t¿Á¬ŒmŒc‡³ñi;ZK¯ŸÅKÖ˜d†™ºáYkœË~ñy[©5%±÷ÍÇ;÷*&äæöšg¨À“Ïç »(pjÓ_Èœ±k\~D=Ρqß¡½;{9Ñe£¤Ù@h|¯¾ò!Ù£F‘ëáLÃIÚ|&®¼â, Ïl6³vo=WÍË`¤³ˆ$¾pž€Õ¾âŸÜóÓb£—+ã±¢„d){ˆ,½È±?„ä®âVF™t`[¿ÏØFDD­ço]]$M@ÒEQÖ$ѤI¢_“$“&KfÝã¶h¢(ë&©GýY2ë²h‰€CTë,>³‚XQ¬(B\\³fÍê%2±òÒ`ÊÒX,˜1=ðåÞá¹Zè"fUõ^ææ¦‘€ÊÑj?£ó­è^3¹6;·­Î¤Á#P0%«C ü„ŸÜ4ýúB¦Œÿì‘ß(þ¾D1H[ú’!Q4Þ™…•ɳÿò8¶$ ýÆ—Ä‹#ˆ:f蹸PcãÒÙó+^àx1@칎ÿŸ½ó£¼·ÿç™mêÝê²$ËrGr·ÜmŒ 66b ” —ä†4È/õæ¦ ¹$¡BKhÆŠqÁ6îM¶åÞ-[–¬ÞVÛfg~lÑ®´’%Ûcö<Ï>’vgæ}ßYI;gÎ÷{Î…0lÿé8`ÀïH7ÄÉïå‹ÔÔ8ššÚˆ‹‹$rúCDªä †Ùlò—úzBímMÔ:eŽ®ßĆ]å;†8 ì;ÑÈÀÂLÔuÜªŠ”6ÞOè.¤U(„Š):iö•Æúà3°òaÉK)ŒÅвÄÖb 5 ´•ÏÁ9$d3JC=ó¯¿ß_²Ý•ÁSW7¹RG߀b0x3™=ç²jßjN'OfhŠ‘Sç¿íŽ1L*ïk‹S2°´üþ¼ô¿ïpß#×ù_ Œaòž†ú [RL}]ý“”?”8Sh•×óUçµÍ­äd¸œ|¬síî¨òö´š l×îE3¦ÏYí$WXÐýÓBGø· RyÛÕ]¹#ÖAè²4ŸÊ+„ÐeÉO€= ±WíBÒ…,鲤hE—„¬ÛhŠdÔU©üúÖ xËŸÛçÛ.UøÒ7Äú²!¬8‡‹³^)ÀªªÊ’[’ÏU¾h­lÃc&6RPç€Äs÷çúR#¬‡Fa\\,X’$êë[ILŒöWcù¶Ã%·‘Ù ½ðwæÜsýÅGädÕ0çžoRµê™SòCª¼ëÖ­güø‘üìá'øÕŸ~r}çšÑÚ•7cŠœNg—Dëä¾z2& qö¦ŽqHçéCcÍ Zy„‚®ëhšæ'®êð¶uŒÈI¤bý?©Œ(BrÔchÙOÜÔo’%w^ŸÛíîòܼñ×ßSV}¸,Uà°FWسgµµµÄÆÆ¢ë:ÅÅWð›onææÇ‹©;PMJBÛ© jbRÝGâT£`ÔÐHtÕɺõVâl­ˆÂ>Tï®%{t:ûv5 ÇZèŸÓóß0Âè-œU§xúÍ×9íŒr›Ÿ½Ãê-ÜtïíìzçTG gt¸"²ÈOtðÂko3dä5L[x^s9Yö1ÿZ~˜©W^GeÙÛôɃ½¥”Ò‚ëïº“ÌØž÷óõV^üË?H4WÍ&Nê…|cfO¿ö6#f\ϸÐÚ•7ž_„ž6Š›gõã…ç_ä®Ûoä¥§ß wÚuLšqAG[·ôeÊŽºYx÷G}º IDAT˜ì§xñÅwpŠæLÈdÉŠÌ»ï~jÖýÃà«™wövןý-"º˜k§eÑûë¹ÿ7"ÐXöÆ«ì:x’Ù7ÝÄêÅo1üª›SœÇ¶O–1òJê×}Dæ„ùäĵ3Ð/wøH—,ËœÙøoö®9ÌÞ>wG$’”ّ㮦¶ÑÌœ)%äMÎÄ­ºIã'H>b~fõ´êýÙ»q5®Œlîºk\Ð8çJ~ÎEå Ï·} Áëj|]×I+ˆÁír¡ö †)Ðu¹+»²®†&k-²»OÈcøÔSMÓüjfûúš9¹£‚3'¶2¶`–6ƒ‹†ávOD×U|K \_wbÐþ·ÛM_]¿ *}Ù¡j†ö•yáÍÏ .ƒ®L&¦¤:±,A„º'*}à: ƒÿ†MwhhhØqêdEéŒi³_|>ÀpI]U¥À}$U÷Þ€}t!d-˜ø^—¤ B]’üÙ¾^…·ý{ßÃOz…CW$Iͳ¯bÒeIF‘-šSƒb b_ä×?íEð„U`.—X¤Pà/#Xª.ã/Hff&QQQ˜Íf¿ 䨒Dþóçý,|¸ϾRÇxƒ“3i&ú˜áÿž;ÊŒ¹@$o½{‚¼IÔïT‰¨¬áOO׳PÕyã?Vî^˜ „ pŸìZËÀ13œ,óúožb¿£‘›¯œÊ'ÛÖ2bp ¯šÀ€‘óˆIÚÀáã{±FŒ#Óu“œÂ©êZ ûfЀœh<‡òæêí4´êdöMepî71蕼ýæa0&%úó ¿‘L>–†¬¡Œ+æ?fké>Jæ]ÏÁÍë7ðÚ ?¤ý ÒH ›ö³æ¹2vÕ5±»ôão½—=k—Á&Àc&ÌàãÒhuºˆŽÍä¾ïÜÎÒî&½p,ßÊJä­íI´¥aÛ¶š‘9óÏqQc¦óò¦jJv—s¦ÔŠˆBbÆM·µd™9ùL:‰è¬llÛ]ì‘7 o¬$&ëO<ÿ.3ç~ABÇ™„ñåF ±pœ©dNÅK¬©EâÝùÄæ§"$LÊð÷uì®näà§ëÈèŸBrê@â £Ù)(0MgJßL ó‚X ¥±=qö²PV-Õ¸ÔX–½¼Gu ysG3yèØNǰÙlþk ®Jx7oX‹ÛVMþà9Öèfìr¹BÌ2†¬¸zFLš‰Ûí&F×ýjoWëëH;ª¼Š¢ÐP^Ή è{ÝÍÄuq˧nûà›çªe;I)ÌbDa ‘V0ärۜɠ¹1ŠÎ7:¢¢¢xñýcŒžIÿnZÏ#¦(´ÊëAÇl^¿)B^?áE *iBheΞÒf/éÂ_ÊÜ>®Gõ•Ãu“%ªOÓÖf`ˆù8‡ÕHÆ™1ã3ÈŒU¼3‹d¨Cà;–úÚÇìŽNÑ} ¨Û½ [D"m FHÏÅ-™±D†Vy…,m«¥ 1…þ™Á7L ¬|*ïÙzz;ª¼¾sÒ‘ôªªÏ´Šàl^O//BÈ’Þö’ft_p@i³$dÐe)PÙõ)é²äíéõ«½]à¦#é•…Œ$)zk+HBÖÝ’¢+2H²‡ðv$¿•_E6û«À_M¸ãÚÃ8ŒNHOO'==8¢åšoõõ~gáÿN@Çã~:Òû/eþ-ž¯WÏï¦é~ã›Ã<Û ¢ÃE2ÿ ã«‹¾îJþúÞnzôÛ¬zŸ÷×aÆ|ÁÓOÿŽkn»›aÀÉmû9u ‚Òô…¤É'©‹»‚µkW±î¸Î÷ó£øóïžaÖÍ÷÷\ZË·ñÔSe|ïÿÝÇ»O>E|Q ­{QV“Ì}3>¿Aý"Ü€ƒƒq²u/ßùå-<ðÃoncVž<ÎM?ù.E9‘<û«_rïÏ~ÌËOüâwœ}ç^AáàÚwØS›Ì}3ãAw]2ŸLìØŠº{X‘hBNLfÂÎ}9–•¯þšø¢yÜQ’Éó‹7q§dg£Cg[}·_?t'Î&b=»ô›^HŸQy´­Ä4Œ'Ÿû÷~ç;fÙa\r0âã£üägÒılÙ{ŒÍŸý›’© Ho3cèÇÊßlæ›OÏã“eû˜vã8"â<¤N÷5)ŠÂéÇٿû$ÓŒ¦lÕú_9ž¤×w¥Í1EÝ¡£ÊÛ]LQ ºŠaêŠ,Eñ¬yô`óQ…R±ã|èlðdbUŽC;°$ ¡ÿàν²²,ãp8B®ÏZ¹ SÚMÍlß\Áw¾ó\š“ÿý[9Lë¼¾îbL ¸Gè3d× ë>f*TÉñÀÂDÔ|OEJnšg­‹…ý XlõäôËï´ÏÏ\Á ³éü ¬¦Íò“^!Ð=æíÎ.W€Ê``åQoUoé2:È^u7€‹ö¾^§3ÀÀJö•¡1±3¯\È€áãÐ…‹Ú”xUm¿ÖÒCÑZµr-C§LÀ~`3ÎŒáD]LRÑÀ…3°êiilOb˜B)²çÃär¹ü×@{œ››k±%šÎ4’hhà…å§ùÑó‚öõ©Øº®‡$õeNQ·íiäìi=Š GͳãúG—½½UlÐUGv ±ï¨b74Z‰‹¤üÄQ²sòh¨;Ág×`8›yIþc8Nt]G–åžÇyU^Oió£¥û» á%½íy»øU^&½¾Œ^á7¯’$™@•W !I’LxÛË›ƒÜ›½Ï{H¯¯ÔYö—6KB¦­MÖ Â K’âWw} ‘½Ïù`T¢4Ÿº(K–N„&ùm?)aC¬Þà²1ÄB ›`…Œž{­mÌ[x=¼°Û–W{C1ü×n ,Çxèg¯Óg$ƒúÚpÆ_A‘ñ‡ìñ|ík7ðÌ^≷~ùE/!Œ0Â#Œ0. âã£üqHh 8õ3v9‹Éð–þ:ln¢ ØlNÌ‹÷ƲÆ÷ó1‡a“¾FV„g*¯®ë¼¹ê7M í‚ ! ¬„W% Œ)òÞŽ¥Í>eÖ¥Óo¤ !wÈî~åÖéº&„.$…Î*o{\‘·<:ÀÄÊá%Ôš×íÙSÚì#¼’ð’]_i³Pt ©á•C©¼nPŒFÜèzûï{wä×sª.MøR-…¾ÜðÕ^ý%€‹¡ÀkB;ë jÖ®at ÿzóSêmõ45V’Ý7⢑īuŒ›ÿF Ž$¶ÿ8FOfÀÀAY·’õ«¹öŽYŸû:£'xùõ¿ñøS³©²Öÿ܆M;½ß9xö±_òÔËc;½™ÇõËöœá©?õ{Þx})K?|>\tŽÏnÞxö1~÷÷·qÖlãÿSMNÿ«Ÿ<ýÕ.xÑSì®l·“WŸy¦÷ÃhN^|âTé°gõbþüû'8´â 6¬ éäž|ìO¬Þº½ù"ï¬ÛáÝÙÊzW[9‡jœ] Æå‚¨(3N§—¨˜Äˆ—Ê™÷È«˜,‘þׯƒÇ9ÓTöçã<¶ŽÞµ›Ô¢ Ò0¾”Ø„IQŠÉäé[7›ÍlÚ_‰¢(|òü?±v1¾ËåÂívû |&V3z;BÓ4ªª¢iš¿løl¥µªª¢ª*6›Í¿>6°2›ÓP÷|DßÂa š<šñ×ß´Ÿo{ŸvGÓ(?L ,øú|íú;Ø·O·ëó•SŸm}Ö½ÅîÃ{X³¥´Ópà¹óí×y}:îè4fÍ(bùÞJF'JøÎVÇõEDD Ër'Bßw·þê>tয߃ÓéDÓ4ÒMn¶Éd êCÞ¡t~÷Ëví^´èù—JMÊš8°ÿ°oϘ>û¯ñ”.MIs©BWU¡©ªÐ$!ÜBHn!$·$$·ª[’Ün!ÜnIHnI’ܲ$©²$«’UIRTYVTUUÜnïÃå’ݲdP}I(nY2¸eIq˲Á-K·"›UY2ºÙèVd·Û knEÑÜÅì–%ƒfPLnƒbÖœ³æ´GhNG¤[‘ÍšÁû…¢d‹&IÝG~eɨ‡z˜”(M‘Œº@ŠÙ¬û¡±Â8W¸Eï®[DGŠòO=øæ•@êÕûÖÛ9"¬‡@mu%?÷úÇòÂ'Û±:ÎÐ2õrЧ1`ë+ز§0+.…qy}yê¹×i‹AµÚJñ¬y\5¡˜moúE/!Œ0Hp3·ÇñÞëÿ`I‹‰2›¹r/Žˆ™2´€{¿ÿSž{k9Ë6ÔñÝŸ}Þy‡ÑýÒ°#&ÍcûÑÑ¢uqQÖ ,}ú=¤T†º Ú,cÈ7Š‘òxäKq:40~÷mUœˆID^½‚ùs®å7‹ÖrbÅ&ªO·’_þÎÖˆËîÏm×µ±ã˜§ÜT±$2qâdVÐØðÒ§ŒZDz Vÿ9fðuç9¢ÌM÷~ŸßxÝíÄíV‰5{.AËv|‚9ËŠÝ £‹†sÒneåÖeDåƒÛ¶d¤$? O¾–¸œÍœ>s„3Êq„ä 6k0ÞŸÂÿy‡]ëk;³À»³ }—Ê{Ë7“ŸÙ?ö>ù™iÜùà7‡"]¾ð –ú3¼µj7¶º#Üsã\3û;0•Å/¯aÊ€bZr2(¹jcnÝn'Ó$°G'zˆ’êB1›ÙXÑÀØ Žóqóqú +úÝ ,ýí­ÊëC` SOÖæ×G}=³¡5$…\ËM~•·»!D' £Ê»æ³ÕD'daÕ%&Íív¾sÓQÅÞSº«ÍBÉØ™Úµ„êºö¶¤Ž*¯0w† ÞÈér•o]7Åãd­ª­§*½AÓß(KÁÑÚ6¤‡Žl»¯(7¤Ê  ¬„ÐU—÷{ïk’ ƒÊëÛGxcŠ‚›ñöô:IxJšeIè¾\^OÉ´äWz%É@G•\HBÖ…„. ³ÇÕYòôòz¦.é>•Wö«¾†*o@É3Rê«tÑç‹ ŠÉÜI>Â*ð—ßë\&À—.†#´w·ŽÐ©…SHõ~÷ÕÓ€iþ×¾ó_óœþÞŸ¿÷ƒGü¯Íõ~Íê¤ë8í:Fsoþ¸tT'(ưYV玓¶Q“”J½–ƒ-BçöÙÃØôaEƒ<O_ôWÆLºçþ;vŠ:bˆl«ÀfS9pê8WÈ£•}^óˆ’ÆØñSÙ¹äcÜÆH¢[²Y¶i ޏIÄ[>§âK>׌ZΑ¦É®Õ˜¬H4ô13ç†ë9öÙj˜4è‚÷Þ{ëYpÿ´µT!Çö%£~- ×L"Íz[d²ÿ_¼ñïÇè7è:¬†(î¾½/Gª)ʉãÀ΃ìܶ’Ì ÚZpRÁŽ-§Ù[º”Ñ%w’Ñ›QtÚl­`urôä:–ÅU±kí1Úr¶a¯ßËÄülþôŸ­,_„©½|+múx"„ÎÀƒé—HkSÃçÜŠùÄG¸40„ë­.[øƦ¦Äí}Ž'ÏŒgê€m$föÇ ¢¸mö ñ ÁÜ=Ѝ1ÀÀêÀ‰z²T*Nå§—RûãGÈJtsEÉOù®ªâ¸@V=ÁyÅ0LžñLfdIPYZÎ{}Æý,ìv¿®b˜RçȾrŒqÁ„»ãú|ŽÈ¡ µT8 ƒ%‘Acî&׫`C禮2sUU%+/ϯ4[,&V.YǘùC^Hû®é|å×>bí¹Yáäð©Vúe&°v÷1×iŽXFßÞãÝSôh©÷€›I¯O†ÀØ"W{ sÙ ½š·|OL‘äulî†ôÒÁÀJV‘~ Hz½.Ð(’¢û‰®®uOz;Ü.I/g/sãòǹ… ð%‚‹A‚Ï2Þû÷qÊ[ Ä$ÈÜqíùFwèÔ´“VЛ+ÏV>ù«•9ßO=û¦a„Ñ®,Jàãí•ܶp.MG÷³r箚_ÈÑcU ï—H¶%#;62÷Ú[øø•w˜{ã ¬ùèm*ŽV%5²î°ë®íœ]Ù[LŸ3—ů½ÃU÷ÜIõŽ-Th"AÉáÀá­Tä™Ð•…ÊùAKšÀüIؼr1ò¸bF `íâ·qõܳïܸ­Œœ{›¿Îb‰æà–wè?cæº}T&0«h‹ÿé9Çç}"úqbçZ†ä\ÅšOVqã­·pÃ×dÖ¼Ùȱl_µ¸h…ÿ~ðAjjæ‘Ü+ò h*5Ñ1°ï±–Ò;ùV&K“;ššúrj$Ìš¬&úèUˆñW!bqÓPRòciµõÇ´îcÌãæ&¿—-bc#(/¯%''™ÈÌÒÔ'y.mïúŸ ¹L`Q\€X¼jņÖ6Tq²µ‰#&S†ƒ»øÃŸîQ2K‚c|zSäC¨˜¢®*¦¨'è*¦¨ñôiªW.梙ŸÁôÃöë¨bw—?\hj¢V:MÉ ¬×çv»»ŒV*(™4ßêªr2r³pÑé"8Ð:Ôúöl)#:ÎL›ón2BöûbŠ\.&“©Óµ][c-›W•Ò÷¶«™P˜Ê[¶ë°ßÀŠN1EÂSD€Ê+üù¼¾íÚ³y½dUk'¼íаË)¼½ÀJ°ÒëÉúõßCze¡hŽÍàF]—„®KŠÙOx?é•„¢+R»ºØË«ëzáõ¼n À¦nIm—¤×+$ VÏ6—öí/øœb‘Â.Зº!Àçå­ëº¤iš HBr(躧9p&†’ÑQ€‹CM2GÖžÆ\ecÌUÑlÞiÁ}ºšÑ÷¥sðý34ÉÄ6½´‡Ô¬DRb$š*œôÉžÏZÉŸ‰ºÂÊÞYÐtÂIbv$ɉnƒ‘Ä›ÓÂöÝ­®LlÂ)‘^LJû!)ÂÅi»Jz›—B½ÝIŸ$3ýêÛ¨Ž¤O¢Žf4ï¾oVÛ¶ÕÒ”’ÂÌa |v\GR{޶p&ÂÀðP“ #Œ0Â#ŒK &“»ÝŽÅbÁ]·Ÿ–}ÌŠê8~6=´‘ Š™›G #cH49Z$ó&yHß½—KC’<$Íå´Òf´ðèM×ð»7Þãà!–ÊÍLž6Ú?Vǘ¢ž’×λ=Sy;ÞÀ’èPqH¦¸dRÇùc˜|Ûw5×À랎ë3”nYËÀQãÙ±ñ9ŠÆ~£Ëy:ÿXóÚºúU¬µ‘¤ -J"9¥ˆq©×Ìš’л\®.çZem¡³' AÑ­JªœÚSÚ¼µô'?|´”v³« •·#é=x›@Ò+^O¯¯ÌÙåhÂGŒeÍ£òvˆ(Bò`I(š$$]G÷ÆyU^Éä/enwmPyåösHz;æò–2F…‚"w¯iV=c\‚*pX¾Äо` °®ë’Åd‘Cå÷$zfžFX¾ØØ÷ÂÛÄß0•½¯dìíù¸tÅbÄ º „õü“µ»ê™{×½l}õלŒÁøŒ&Ô”‰ŒÉÑxþÿÜg o™t^s©>º‡ß_ÎÕw<ÀÞýô¡“±ÕîgËŽf¾þÝI;ƒ¦®à¨ç7?ÿüî§ÄÇ÷¬eÙÎjîýÚL^xâYí¯æÇû_^~ü<øƒ^!ËòÚ»Q×ÉÿûÙ7Ðl•<þäoé“{ ÒîRÎDÄsCɼµåúõ»–kæŸoÿ±ÎÛ/ü‰²Ãf¾uÿT^}ë#nÿÖ÷HŽP‚ÞÓ©‰ËÞaô‚[øÇß^èõz­§yæ©ç1dç¦ñ <óÞ~ôàBJßú3ÍnbòtŽm\Âqkû׬dÞ/~K¦hæ‘ÿ~šŸþ|.ÇÚrÉŠ°a0E`1‡ÿg^ |Q °ËåÆnwɦÏÖ!¯üÿwt0¿ÿÁÒ†] x2f•OirPg3°¿¼šQKfÿ¡¬}íMG]…ñÀÓäÏýáy«¼¡J”{²_OÔá@ŵc “,Ë4쯠Vn#·_>[·“iãGu:†/žÈ—çÛÕúþý8Tsš‡ù)1rèõuU}ºô%bS'P•Cv´rÖõùJÉj}kׯGw¹˜4eJÈ9ëºNmmÝŽªÊªÒSgú ¬tï%œO¥„׳I°Š+¼Voß®·W70¢ÈOz]R€ìÍàõc½ð(¼ø ¬\þ,^ŸÚ¤òú p°q•ì#²Š,<ÏwMz;ööU=ô€ð~iUàλ\rJðWI+À—(.– ,Cw¹xýßUè±ÎK¤¡U'>ªó/R˜ü†q)£µ.ŠÃËWÝ’À_þòiî*²'Œ#²ï’ªö‘?n %Wß=îdŽÙÿ~æ¸v0tò,6í«!:­˜Ñ#Žq¬9ö¼çòé’eDÄhØÀÐgIc‹)d½…/pS¨)9c‡à é;x9G‘ÜõÀõ¼ûÞN+¥`TŸ 6d\vn™sн…ÉH„%£Ûf2`4%i4b´Daì¡qO÷Ìžw;Ÿ_KBθ+Š6ïÿJÿ{êjdÙÉÃLÔÀG¥›Ïi½Æ¨t|øAþþþvⳋžSÁîÃ¥(YÌžðŠª#œŠŒ!Éâ`ÖèÑØ4¼æN²›ãùׇ;)ÊkæÉu{ɉpróý÷öö»|a4*47{\ÖÇNš@YóÃ\gÞEBál¶k BXYWG}e-G+šiܳƒfšI˜;4'¾v£§ô7ç»~s'EQh8yKÖÙo¦’»P1E¡p®=À¾^×P%í'JyûÅÐ?½Gqõ¬Ù´Q„Vy»-qÖ\̺åZ®Š]Å'fw\_`ÿn R†z ¸’].À£7×çØžOhÈ»›)ÙÁ—²,£ª*N§Ó_~\ºíä?}†«îYHÓGe0%xºA*/xH¯hWw=[I+&„ä>ˆôšP@v}$Øóz@i³'ßW²æ7Äò“\B^‡.IºWé5è ! Ùc`e•BöòúÏ‘ðõöz¾êËï IDAT’·2 É ™ÛëÅe£ò^ø*ªÀaŽf+Yý#)J•yã­J† 1Qƒ8ÓDb¬Ìk­Lš™ÌÞªH(6³}M7|3—Ôp¶G—ÜN'©z{¤©X¢ã±8+é;vK~õCFßòSò•‹gCu:w÷¦ùèXgL òÀ¶•µŸƒÍnDÔœnmöÀ’”DêNÆQs çÑÖW•34ÖBC‹´èós™‚jcÇÞ2ìÅãIÉI¦±æÛvîcôŒy¬cf-¤j×'¼õÊ; ùu²¢.À˜ºÊ[+rÏ}Çx§¦1 p<5'ì1¥q…re'dr¢íô  ûã6Ö–¤@urúÔNæ=þß~Èþ÷ô®Œ:ö®Ú€;±ž*û>v”­éõzÕ– øÕcÜ}óíØš*Ùº½”™ñðɇëqL£¡bƒ’ÒXûÞrró2‰¬ªƒ¼ Ì4²r34?ƒÓ®“$'õÛÂWy—?­¤¤Äâr¹(œy3®åÔΥĘEBŒ —ne颗˜r×Í”n\…z¦ŠIwßOÜÌQ~•WÕÍCzwï¯fð°LþóÜL™8“ÄÂAìÞs!ƒû{! ¬zRNh`åS]CõïFåsõI8ÓÓȉ‘q«nÌhþØ Ž1Lݹ/ƒÀh2£( $-R&&#´OˆOUì¨ò¶ÔWsŠì‡ö±nÓ)þë¶Aì;Ö +î¥ú‹H‘Çó(¾F£1Èl«F~ñ‹[¨:z×í£h¨oØqêTEéŒi^•7À¥ÙóÅÓÓë%¼~•Wx‰±à poö”,·«»¾í<¯9á'¹B—¥vÕ×_ÞŒ¤K’¬ù¯,„7¦ÈM;éõ”6K’„,)zK‹äíãõÄùT_YtíØìùÙ¨£¡£(¢{ÂÛÙ¼ªGê©*ZÏUà°!ÖeS ýy!\}‰¢ƒ |AK M&“HhȾh{]#¥ÇtÆŒâã·*É)NäО*Ü­öY›HŽL 7?‚¼Æ&NNt1ñŽ\²{ë°úC¸úâÂÞІ9VPß,!Ùë¨Sù™iÔÖV“”‚ÔUœ ²¡™ôì<ô–œrBm ¶ 禰ïÀ12ó ‰‰8Ï»;š‹ý»ö’_tÖªJì„ân¤Áa¦ 7ý‚¬×·ƒ‡Ž‘NVJ­Õ?]Oßü\ñ1ØÖÖDDÄù«Ûh.ê¬:‰ÑFÿÏì#!µ—õ4ªIVj»vî!oÐP¢.@Ðéãûq“I5rôx9éy…ÄX” ÷4!&·½ÙNëÕœm>tÍh&7=žCÇ*2dºËŠ]7a³7““šŠÃi£âT˜ÈËLÜ´5¸ˆˆ7ãT5jOA‰K&%>tÆg_T ´«ÕAd¤ Y–)?~‚½ËÿÈ#5³ùl^Q^²îàqOËäOÉêÒàéø¾-(J4§?$6zFב-4ç—0,=…„„„s2°êØÜÓý žBX–A¢·VÊm¨õmØxKËvêúŒ£Ív˜yc¦†\_WV{÷•bÀ‚5)ŸíÏ>ÏÝ|³Óú ¬ºZ—íVí¤×oRåWyÛIo»U;ÉmïåºA*/èB’4oi3.gp¹³‡èzIn@Y3´«¾~+É«ø¢ã-kÖ%I¢ÍÚS$IŠî1¦ò¼¿í‘Ež/Ýǵ+¹º·ÚÿZbŠzC‚Ãeн$lˆr|ûêÒ_ÛÂøF þÜ °Ûfç“ÕÍX¼á‰˜%Aõ*´i¤žh`gƒLJªD&nªZ\Ô»ý‹’èc×õu‡0#Œ0¸8ø" °‚“'ëÈÉI¦üè1ÚžžN}›™ˆ?£øJO\—ÓéôDÀxKeYfÿÎ2t£JL”›“§ÝŒ=‚ï½EòБH®HsS‰<=©Ý9/‡Â¹öª¼¾¹žmŒP1LØk©8¡bWQ;û>µ2ë¿&uŠRUÕ_*X·Øˆ>³UŽ¥t÷^æÎ»&äú|™»ˆzËiÖn«cÊ”¡þÒmß{j}º®£ªªŸˆûTÞ­[¶ú²yûuý¤Wu o¹³îïå vpÌæõl+yÌ«|=¾*¯ÏÉYÒ„Ôa_?¯TÖ,¼}»Ð†ô¶^æ'½’׬*ÐÙCz=çÍOr½Ä.ô*Ý86ëŠ,z›ÍÛ aÜÛAÂ$¸ÓØáà¯:tÑ~÷C¶˜™=Ëôzʘ \y‘7É$¥{>/âÃã|`=¹ƒÚØ"rb¾è™„F—;$És}–—Ë¡»>¤îDc¦Œ "”ËŽÄ ÑÌò—^àª[gqô “ñ™2òÇ‚P;ÿ– r§{^¢|.=À žB•4‡‚®ë ÿú:ª¼NÕÈg+žAyÌVŠç`°ÙÀ»®Ž*oWeÐýÌnè7UU™•ÕUUC®OAGaÇívƒ%…qãÑ4 £ÑÈñ²UìiŒbêØ‘„*öB°wÏÞE’$3cÚU/øŒ«ÀKz;©¼ÁåÎ>òLxÑr‡L^I„4—*áÛW–¼Š®—ô¶+½’_éõÄÉ^•W÷”7 w@i³ŒÕ*©¼Š¬ûIo§¾^ÿÏÁý¼º®uKzƒ¯Ž®‹6gEJˆp©–B‡ñåBø»„q1 ±üp:Yôìq*]F’sŒ I³[C„p±ve%QQ äZÁe0¢Û4 Å…Øyö©êtŒx;Ó¿ÖŸšým¤æE±bÉ&\ׂd#-UµmþýšË«9tÀHCe-§jÖµ0n^û·6âJ‹&Gk¦%ÆÀU·0ªO¸Ñ8ŒžáØGÿäµí ¸‚9×±xÕ®¹µˆª#i yyy¬ÿðVl*çš{¿ÉúgAyâHfd8iKÍäBùM"Góà=³Îk.eKË¿·è\}õ­ýl1–âa˜aÅúÝÜôý_3¦àó(‹må/ßü%¯~òCßåŒmýàvž|ô1îÿã¯Iº€#µTî :WÎÖÓüߟŸAÉKJíf²<È ¦EüêCÓ'\ÍÜ)Wœ÷˜+ß~޶ÄÑ̟̔_yo=ôßD)°nñË,߸‘Óï¡jñ»ô½y<Î3liÖùù½·ônÍÉ_~ðcæýéqò„‹w}7 ¾ÿ~üË—øåïì±t4ò›Ÿ>Æ?»—7ÿø7ôܾw×5@#÷ÝþGþðÄŽÛ#ªw“–Knzêy¯=ŒK&“ÁïjœÛ¯nc4›W¾Jɨ"ˆ/BÃIÕ{KI›>‡ŒÚM ˜º€øF _Ÿ?È_Âëûj±X8yh £8p²œõÛŽqׂɯ<×`—Ëå)ê*ó6BÅ0u¥0cã™|å‘”cA1f͹×1LªŒÅà!Ë;·ícȈ]îãv»Ñ4­“•¢(¼öʤfæ‘—e;ËXù¯§øÝS‹ð]eø ¬~ôH©?–ȯòŠN¤WxݘE!ö”6{ .Ê­ðÅá)Òñ•/#tYVB¨¼y¼%ήKBÖ…ÀOxI¯¯—7°‡W‘ä.ûyÛ ¬”à²æä´·*ïWá^à/—!V˜‡@me Æep×ðHÐU>ØÜÊéUèÂJfrجüü‘j®¾'õëZ™» ˆÀa!"Í€îÒˆ´ÈD)ðæšN½y†±£ Äší´¡²õµz>h°2Ï»Ÿ,Ãÿ©BI1òÈ£$ËÕ\}gÇÒ%l…),{©“*cÿІÑs¨®(}ô6.}ž?¶“MÕû‘ähÛŒÜ4¿€’9·Ñ(½C”±’”‘ßc¬kC§ŽdÓZ¢Ó†1nìH*›Ïß-9!sÑekPín½ï.ölØÁÐ;îÇ¥¿ÈˆÏ…ü‰ÎN%6ÛH–}"Õ;A2Æ1»dD §zƒè´AçÊ•ÎC~ƒg×ãªâ™•5,icH5­E·^˜¿ãIÓf²é@-ÊJqØtjê­D¥D2þÚÛ©¯Ñ™rÕ—®&ÂèfíªÝ˜ã¢©Õ ©7Ÿå’‘yS'âÖàãU‹IQˆ‘ƵSµ›Y™<ç´±¶š1×= '?ÃXP™[È¿Þ;Bqµ ©{–zÛýX.°ñw—bc#hn¶AUÕlo\Ë-MòϦO™rcFÆ<°dc4æØ~ôõ’³PòÙ¼ÄÈQiì|§9½™['µ›È…ROÏF`;ª¼Š¢øK€»C¨¦ŽV])Æ6›Ìžžåžlß~¡Ö·kóv¶ì,Ãзû®ÓŒÖ>!ƒ!¤Õ¤+¯bÅŠO™6åZ~Hr‚ÂC…d÷Í¢qåZމ')9‹7ž{”å‡#y¨ÿª·ý1ð~¶”7·XÉí#±³ô1 =ï—ë 5uvŒRN«•eË—’_|;[׿Lêðë?¿¼Ž44“}úõ $»ŒËÑÈ’å1,s×êöcô§•+gýa®ÿ~Ö5¬út';#G“8* £ƒjo½ cnô¾O?»w±[÷Óæð¨CÇ~Šè7Ž(G ¥µR‰dè@#啵8]Ыô6ÍÉÇk—ƒ)“Éq)lZöCJNóÚ;ïâÊÁ‘ƒïñõ9·²dùGŒNº#«>@˸‚±ž‰OëÏ5“ 8TŒúÝëpFÉ\èÔ«0.M .—§65µFS ¯{€Ìùù·IŠŠ@1HA&Ko²ž…S²iË/ã¶o<@ñÄdG·a0© 0V‡{‚ŽV½QyUUõ÷9÷†¼šmY,œM5lYµgÆpgT°ï…£d/H¿Á;íã+¥îj}ÃFçðRŠÓÜäIï&¦ˆqH™©q Z°hÑó/–þø‡–z8j@®?‹·=›·½d¹=¦(Hå’§¼9 ôYÂïÜìt´÷öúH¯/ªÈ[­ ¡´÷óJB«¼ Äy"Š ²¬K¢¼v]Úìé啃pÏJ›{Û§Æ¥…° bü° ֥̀/˜ –®ëRSSÓÁ‹º˜¯Â&Xa„F_´ –Ï+;ÛÓlÐæPi³Z‰ò—(Û6ZΜ‚Œ,”#‡ùÝ/ÿÈìY Éd挣y}£IJOïdðÔÖÜľzÙQ9x”ü…!ÏAo ¬ÏKG«³)Ã>øÈ«Íf#º‹h·^+Ã`('¡ ˜â¢dd ]t¹ÝînÇo^>âî3°Ú¶u[é~ðH©ˆ)òpXá5° Èë¥]½Åßû«z_÷Z‘ð8=·—6 ¡KH¯ûÊ™I¯ðPtIØ=$WV<ê¯$ùU^ÀOzÛË}Y¼Š¨l†Œ)òÂGxå.ÄàÒæs0y ܾ—*ð¹Œ6ÄêÝ —š!Öa†6Á £Kø>}ê³,ËØ¬*-N”ø ׫kš.{ø?²¹ª™Snƒ2z#ç„q¹"|óîóC(#™ËqÌ/ ÍÛ!Œ‹Ž„„(êꚉÀ¤J÷í£üÈv¦KÄR| f“…eŸí¥nÃa¦=˜Ëý|¢ú“‘aÄ×%ëï‘U4T¡1c5µèšÊöÓNŽoÞà'ÀUÞžXõ6¦(¡J”»S¥g]—‡®x_]•ÐVÐùÿzǘ"ß<×/_MÉ•{¢}(ÛU¶HQ \9ÕSä#½Á„Vè.Uà%¯º÷ϲ½tÙKxÛóye/)–ÚI¯·W×éô*Åx ¬ð’\¿Ò@x=óðõõÚ½_5 HBÒ%IFR” •W²nT•\%èD)²¬ûÈJw1Eþ󊄌v–^Þs(ï À¹”B‡ñÕ©‡ pP__Óé$""‚úúzòóóY±¢‚âf~þ®õD_»=“­oŸæÐi»oŽãµ5Vf]Ãï·0cv2%ƒ¢YûCl‹Ö˜Ñ/‚mQ; ×Þjv6 îz°mûNñäÁMýí”5Dc·R_WÏŠ%5AâÈ.‡$ yj3Âb⣭mÆ©|P#‘88Š(½…êJ‰›ïÉ'¹çŸÝa\&¨««;+‘p;í4·ÙˆŠŽÅ 4·!Éøvuµ6¢Ä& ÜݰûJív{·ÛÉB§º¾™„øX :m4·Ú‰ŠŽÄÚÜJ|r2²Ðq¹Ôn]OÁÓ['ËòYÇ”$h¨o$*&Y]Sij¶Ÿ@[kBŽ$Ò"Óbui1ÐÍÔu¸¸8»9¿[[3æˆtÕN‹ÍE\L´':ÄÙ†[Xj­6'ÑÑèN+ª0i¡+ŽÛõ˜BBh*º—Ã,Ë44µ®é€FC]#ñÉ)ØZê0EÆbkn©iDÇÄ¡Hê=B`miD2Eb1JÔ×6’”Þñ}óqX›Ðd.{+¦ˆ8L !Àfwa6¢jbH 11a[òËQQfl6Oi®Û <Ìí¸³ý(×{¶™´à*bZ‚JEAÃSʵÿxrbùdçAúgÆsbëØõ(jM,¼¦¡·.ôÃ@3ª³AÓ44Íó.°?ölä·'F[¾5§î:u ‹¢ ºuYðúcÿäºïß²3A–e‡_aï´>—•å»OSœ•ªõ[™R2€†††ÒŠS;¶lÞê)m&¼Dz}„ØSªì-oRy=¤×§Ô _o'•Wx{~eÉ¿m°Òë(jÏém'½’ÇÀÊû9 £îWyE .g$½I®,ý¸»²fhWy»R¿H„{ÆX‹‡ p`6›9rä™™™þ»¼Õv6GDsE¡‘f»£ûkh(Je’¹†ÕGȈì62&Å@«Íó‹ì¶ îýfO¾qŒGìÇKŽmá[ÓÌotÑ7EáÖ’8¤Újî½%‰gÞwrÛ(Ûj¤˜djE$±Í§Ø.Ç"WבS˜LÉShiéÄÄ)ÀŒ^ï¡aF8j«X²h ®œ<úæfàÒtw²CȤ„f6¸òŠ<¤ÄDd÷Ù׬|ï𣣙5¹£¬°qù“Ô3倊VP‹Q›B”ø”æÄÑÌ.)ì–Œö ‚CÛ·°ñH ""¯_3UϼEƒ±™Ü~£ù`ËâbÍ Ìˆf÷¡Jî|à6,n×y(+Û?^LCê8”Ò48­”Ü~+}“-ìÛ¶–í'f OfÇþuÔ¹Jèu„å*ùÉo¿ƒÁÖû±%[5?ÿíË<ò›qpÛ‡lØgàöùCXñÑ'”ÌcXv »Þøå˜õÉÄš?fŸu4Ãû4±níz&-|ˆé=ËVs‚ÿ¼ºCÒÍ”[ê˜=÷jþç/òÈÿüƒÛ…³âÿ^·ÅÛµ—:5ž»nÁÔÈC÷>É/~3—:}Ç·~Hrÿ‘d£}5Äí0 (‚cÚL~YûwJÆ>xH¡Q .ÑU…µŸ¼‚nNBm¦|Ÿ}ïÀbkB70¡d–_õí×›Òæ@«³Ýtó!T‰rw$ÛbñúÀÞ[¿Êk’ùà?¥èظÇÊÂëFsࣥ ›=èlÐåsl C$»W¼Å•ÿ„+Jw—íÞ1}ÊŒç=/ú¢ˆ$Ix=ÛH~XèB¸üDÙCt}*o{N¯@ IBs:Ûó{eI $È^¥7@ᥣ•¤ë¨’^IÈzG•W‘$IÑÑAî æ‡"½¾ïÛ#‹:»®T^Ÿ Ü=.¾ |)’à0.?„­9Âè‡ÃAVVB""<ã§§sí• ‹ƒÚØHÆËÀµ¾œ—ÊÛ¸ã¶\šYÉŒìlÐèŸïÙ'rdº)›g~œaãrè7:žÈÔh² $÷MeE#ùC’…¹‘¼^ªsåätžÙ¬R4ÈBáéL*Iãî;ói8h¥ (‡L§Í!a³BM\™=»® ã+ˆˆô\fLÏôé3˜Q’Ãp÷.ªâG2üHê[%ö~´ž•Ö 8¢`Ïî]œØ¸†ò+ºî&''÷m§©…3'ZI c&Ï ®û›ô½BrL4Mõ'©Ø}I€9/†Ê‘ýˆ³UÑP¶—> Ñ4(£1t“M¯àVñCÆÐ§o"–\#u&‹E ëÃK®Ä˜•Dæ€bôšn¹e$£F&5>Ç9òn=2Ùã Ñ5¡c¯$#ZÇ™‚ˆ‹¥OŸH:Æ‚$Μh%~°„’9‰üäFLžJjJgGõx,ɉÃ܈”ƒ±"gN´" éžñu0(FŽŸØOÍ©SØNÕ2©d8Ƭd„¦£ãæÊ´!¼ýþqjl„Üé´í]‰Uß¡ûª¢ø®G˜ûò>”¬"t<¤Ð`0°oífö¬¬à©Ÿÿ”uK>Á}\Á(Ç£7ÆrÛ-wàr¹(7–Ìh¯ª§(”®]Ç΃'º›·^ý0äxš¦áp8PUÕX:ÜTU zô4CØ·½ÍfóoßÉpK22ñŠH¢R˜<½/§LfÀô©hšæïéõíãQλ¾¹»l÷¢¸„´‡ú$¦MÐoз§O¹ê9o¼PûÝ­ªBw«BSU¡IBr‹ ‡êÂí–„Û-„ä–„¬ !«’Ü’$«²¤¸eIv˲ìv«²[UeÕå”ݲdPeɠʲA•%£ªHU‘ª"›TY2ºÉè–…¢)’ѭȪ[‘U·AVÝÅä–eƒfTLšQ1kN»YsÚ"ÜN[„[‘Lš"›5E6k’dÐ ²E“…A÷¹8Ë’Qïê¡<:ž'E6ë¾G·o`=‚@êÁyTƒ~¢+xÜ¢wª¼èë8/z-jÈg½œ\€u„üÐa=zOºžSX£’’:§…ææzÌ-ú ŠçáAñ€Î ·årG¬…ö86ÿè¡öÒ¾ÌbOÔ‹3ý(ÏódŠçugýÆüölÀ¬¡I|{¨çû,ôG%ù¥]™o{Ç`b¢÷¹8¯ójat !Ëtvn)cÙš:\çæO×`n9ˆ””Š"Úµó‡Nñ€dviÀ(+$*Ê«RŽf+ͺWƒ­Wó^™’1ƒÑÕó•žuâ²2ˆµ¸9f,ª¦SSY[oÅÞ`¡_a ­C‡0pp6ÙãÆ)¹èæú²GP=ôæã|÷W¯så´Ù8õbÌ:Dåöçê[ó9xä8»>x%6ž1’›K°Ú0ŒÏ ±±”—×’‘¢(ìÿø .Àwrö2ã¦ï£( ÆèD G˜Iò?$z¯ý|Ví*/”íÚÃîík(¾îAê¬ú%¢6$i`>X£8kLQWèʈª'û…Š) t€îˆÈô|&\ë¹PUµË˜¢ÀcB{isg•·=“W€îR^]ò«Àí*¯O½BÖüîÎþþ^$áéå’æëÙ•¥Î&V’¤hžqä •ð*¼’.$“. I’uk«Ï´JÑ%$=°´YJUWÒý—溬´ŸŸPD×ÿZcsÏor†Uà/)t熰 ô—aè//Â.Пª««{TÎ'$ t YVPd »SÅlq#¡Èàp¸ü}qÝÁ§¤ø”Ž® )ŒŠ„Ýîðìg0bP‡ŠÉdÄa·!L(ؼÛtƒÁàÏ =Ë*±XÌ8ì64Ýã"j2°ÛlLf4Õ‰ªA¸ÎB¸}=À Ýž_“Å‚®ºÐPdá_¯ÁhB–Àát!é:n]Çh² t‡³k 866¶ë1…„ÅlBu9Ð…‚A‘p8\˜LF\Nêÿoï܃%¹êûþýýN÷̽wïjµ+­V’…„ B<Œy!ÀqÙÄáa“¸ ‰ñƒ8®¢*&†¼ª\I*©JR®8Hv'ƘŠc—mœðÆíî•Ø]ÄS •VxÑcW{wïc¦ûüòÇéÓ¹3wú×»3ê;s¾[³wÝsú53ýéïï‘Z,dÛ7ê, ío‚ˆ‘lCû£öiwa’&è§‚…në›ùø€A?飳¸›$ˆ£"6_Ž6±®i· ¤ zý â8Æž={F.SPsµ¡ ´ÿ¹>{v»w;¨üò^‚çZ¼á¦.~êŸý.¾ð›/`uìó›n{9;ñôÎ=€«žùR|÷›ßÄ7¾û=ÜöúWãËÇÜvõâ/`5Nƒ`;j¾rX7°µ€3ãäøÁ¾‡Óßz×ßðt\‘µx*ëè‘£w÷û}üØkü£@V‘™Šf÷\½býó8¹Iª IDATX8Ÿ·Î,„¢x0ÏËäóu­^ T´ªTÌŠiSˆ2f“m½Ì>´9’2èú*Î^åPæâ~vaÑpèåîjC{ë凊Ð@¨­Õy¯ÇªB³ T Ú¹ºì²ËÍ7 »k—nþ]5gX^®¶ñ³•çßµ<¼mHÓ1§«;ß0i·ïàú :·¶ãÇ,m»]ƒwüCÿ¸~Øó¸íT¼>zºÁõšo=ñÄÙ€¯|ãÀOþÑÝxÎëß‘»¼Þ­=qèA\uë5xðØWð¥ÿþ9ü…tqÍæ>ì[:‰«ž \{ýÓqÍ 7 MR¼üÊ8ç YÀj˜š¸ÃQáìÙ³èv»C X}ö?Žô‰%î?ŽòË?‰ã÷ÿW pyÞspå½ïyÿá­¬²6E ¤ Àä‹Uå®p’Uoö=xÍ—·R±™\›"½<ÀC€×°"&æŽ0Eà ~=ô2E™ª»[nMÄ[\ß­mŠ€áÕ¼ë„4kÍàï|xV bMS€ƒ‚‚‚‚‚‚‚. öí[Æ“O®ay¹‹+Ÿÿ¸éVœ|è;xèáàºk]êÏßö¼þçßÿû©£¸òø§ðì·ÝŽÜü4ì¹èrˆ\‡^¯‡(Š‘ôûèt:8`ýþ/á‹'ñÆÛ^0rìQ!ÊÛiÐå­›<èò./¾ðtõ•7ƒ^±·_r1Ž9z7¸äŠÌåÕ¦È÷ä-zöV]^¼û Î(zó2ˆØ–]Þ"¬™…‰í`¥f&AÕåuÀ ¤pÐkÀldí¬f#S$Ýh8ð>6Ü•2 ¯ÚÜ#6 Èx”f‚ƒæKӨ͜}'6_Ì         A-//àäÉÓX^î"Š"<ø'ïÄ{¾ócxó®Ïâº_ùÏ€Ÿ{Ó»pÃmÏÄKp "ü¬µè÷û[\Þ/|ó>Ü~Ó­8óä7q.¹ æû_Pð(x§Aw¸®˜G°Önqy·sŒÏ-nÞ}ðÿñ—wx›"ò` `+ôR5´¹ô·×óóGpήÝ’Ã;Юˆ³qŒÙªËëÎÀËÐ[vy¾ÿn¼ w+.ïvàç.o½žÎ³¬àÏŸ < ]p­®nàòË÷Vþæ ~öɃå}ENòU¯{!’$†H½,$:yìag7/`•VíV—· ½d)Ïå-÷åàZEvkNoѦÈ=o„¹+‘á ð.t¹ÚÌÈå±Ð[~­ DñȰfç%<·.p!8hç+ð|)»ÚI"î×,T@ š+*^U.bu!tÅ{óû/ü…ßĉ/üìåßÃææ&Œ1èt:0Æàïú<þîÏÜŒ/}õ^|þ¯¾ŒG®¹ÏXïão¾Ç]Ãk~þH’¯zÕs\we›"@Ÿì]^³ÆÔƒƒ£GŽÞýÙÏ|nå_þóu(ruý}7U9´BT¸¿ôúÜ].åð2“Ϭjs½\ªà\®ÜLÃ÷è-C¯^`2`2r>‰#³%——G†6sxQ¡ÍN±YØÖj·‚ ¼ó]àÀ³¯¼©ûÈŠoASP¸Ö´t¡`xyyÇ?Š+¯Ü‹§]ût\þC¿ˆ?ûê Dßÿžñò·¾}ßý¸ñeÜ÷­Á»ð’×ÜŠ—=û…èìî"I\¹X„ã›ßÄ» N<ÙÅÂã_õ¯xÝÐqýôåªÌu*>÷z½ÜÕÝ®MQY§NZyøá÷ÞQËå-Â9X‰ _‘9‡^º(°"öÀk]è³kSD¥×«ÐëóxY®}z=ð2Y]uÕ™™"‰ØA¯!Ùx¢Jçíwð¹zÎfp›Œ1Ï¡ÐAõxå]Þ zŸêÅ™{ÝwßOõ"ͼ’Dð´§í¿ ïy¾0LTÀçáßÿu|ìð.|ûºÓxoÀ{Ì"®öØ\í¡»»ƒõõupl¶Àëƒßþ:žõÌgáè‘ÏãŸÁaó\›1*¸nh³/`U·Ò‘¬€Õ¯Êzó2p2ˆÅ—E+¯ý<Ì9k TTjÎî{7·W)`Åy_^&ãúñf÷)cΠ7wyYS§âòúvDL‘tÍV—×>Iz{ñV]ÞR²©F‡6šÍ—‚ \ïóxÆÄÌ’nÓ÷™#ŒRXRÐäzµGçþÜ„Šœßs§"üÃ3Ãe7 M-Œa,?ã’$Üïöââ"N~ù{XÛ·Cÿ-¾ñ…OãüØxèüå©>Ò'6qÓs·d½«µ9À½^/_ÁV£ä]Þƒ÷\y߻ߨ÷ä¥Þ¼ HÒw'¡pyÝëýRno²e0.·)J3æŠËkdK1« xÝ2Л¯mŠº[\^¿Ž\)`Uvumz· kêAï´\àZÏ” ÜVn“(8„íUq)»ùû\zŽ8Àý~ßXk9»d­5âŽTîv»ìï—vÊî—ß¿Ò(›Áª/+iiدv=€i¬‹n‘z;B¿Š!_ÖÏHêy¦pŠþ˜¢©|>šì˜Ç ½Û2i÷‰~hÅÚ#T¶ïLJ7X- ] ÊÜ2„D„c!Â,‚˜ÙF‰D$aÃ,," „þä“úýû÷ßxÞ«3¸`¥Í7 v}1'f®Ü÷phŒÉŸ+OS¢‰½^‚õõöìY|þà×ñ¼ë`ÏÅ{s—÷ëG¿ŠhsV÷õð7ÿóÏqÉó¯Â¹Ó`{ÿàí?Š4%t.¹|K«S§W±÷âíûOº¼Ã W SVÀjåöWÝñÑòv,÷ÝõÀë¹vD ¸¼D(ÿ…Zçô’íõ|´ârn¯±>¬ÙeK¬X˜8‡Þsg«./Z0,—wÀÙ¥âq·üè^ÙjSU=°+ªB7qµEžÆC00HF@mÒI›7]€ÝÄÙºíTÏql° S=€·22UrÄ5²&|Þë1t÷ ¬Ç6û$¢hãÓ‡>´àÙ`ÈYL) ºüZ~µUD„ˆøJ…4â•ñÒƒŠ^Ó‚ìé¬K}¹ënºãfëPsžÒ¨Û'Òhuó4EMÅ\d…ÔÀÕlh·ïDµ hêÙõûc1&ÿo4‚–l*Ý[§ÈÅ­ZÁ²€,€¤ 2Ù™Lš¿G~ð=øàƒ÷_vÙeàÁ×¶s€·s|ë:ÁN„Ç?ƒ]»\xñ?´Œ/¼×,| ÏyùÛ‹mâÄ¥â_ý nÿÀâÄÙ.Þò³· I€´ïòW;‹‹Ø|â8N$—àÚè^œ:¹»/~Ö–sÓa¬êä=rô®ƒ÷Z¹óÝï=œ¦ªæòRzÝ9FÄnšÄ=G”µʪ:g®mVÁ9/^å¡×Ûr®¯Û‡6—!—¨—°wyצÈCoîòr©7/Å"ˆòW†Þ2ðFfÐå­ž€·Ñå݉ .ð|ºÀm …¼óµå —™%“¾ ½4X:ƒ`”`xè—»HÛ\àf'ßúõÈæS¥•þ¯#„eNpMùSÙÖZk˜½7…Q¦á:ꑱ®cå‚Ç4¶T“‹¢»(A@;]`¿?æÓ®…Û‡Í`ÊÞCP–—Y"&À¦©$†AX"ËÖ’eGH+‡W޽øÅ/~£r!ƪô:ÂÜÜaÀ[7$úìÙM\q…;Ý:}ð#8þåoáÏ®Æo\u?\s#Ü~.•^öÉ[±¾¾ŽëâxKðýß}ë_ùžþ–·bÿ×îAtÓ‹ð•ý'\wã³F¶)ªSÀªêò^"é÷ .C¯{=©LK`KLYÎ- ^—×k¸»§·hSäC™‰62×=Ç)f#gÏf•‡@¯¡¡.oÁÛCoi?Ë’D‘"¼w ¸Ö<¡ Výy& ÁAs£À;[[Î=1y°‡Þl)ݨÄ~ZÁ•÷<ßù†€z^cNJúÝ)¬GæšØ »?r¦°LMæi´?T³´Ó¦­_uF±Öãžì…‡Œ+§n²çëÑÖ™ç<¾\$‚âî#M„ŒY"! g[¬ˆX1Kw}ô®¯½ó¿³Á’o¯ap]øÂãÆ¦r;¤K®~5–ÿðð‚§]„Îò%tMŒþú°°»Èç]=„ÿ_ᆧÏyîb×òM¸ñgÞŠÏÿõ=xżišâ§ùWs·×ƒ#_üc<óy/E´ûò‘Ëâ]Þ÷¾ûÎÃâì·¶)*Co¼9· ¤ÜšH_dÏÞ/ƒ`"H¿Ç…Ëë¡7ÝrÕæªÃ[„6s–Ë d\ m6ˆ9Ês|‘Ð  RÀJD"Úz#.ï\*¸ÀsãÞ™uF›?ïà2薀؇>û¿Èž# š>øÃ.¡®£FÓ€f ÛÈÖ¨)h;ë’î&¼Åÿc5Eu5¡@ÝŠWêYfÆ®çäÓлÒ\`7‹v èÖ^ÿYDˆ”Ñ7ÊõejÁÖiB®©€lfþ‚Üï°D’Bˆb °YØ4‘ €C}âÖÝú&Õ‚[Î9Àƒ·ƒßó…`×é1\}õ¥ØûüWá ¿õE\tÑ<þø©Üå}ìè1¬Þp ŽüöݸëP¿ýá7âŽÅËa^óV\¿OtÑëõðÒ[oF’$yŽò|ä÷ð¶_y>ñáßÛ~ñ­øÈ'>‰_xóOåc{—×C/|ñËrÅeý$stýk”¯ÊÀ4ÉÎY>®-€·ÈÙíõ²bV&sz}æ!­Š ‡—…i½âüºÐf.°ÚeaÍʼnñ–\Þ¬dÈéïvЛ$ŒàÒŒ¹Àmƒà ‰(ðÎÕàYW~Q¸¼ò>À Ìl­µ<àSÉ .ÿ ‰ûr?ux}¶Hçr5rÛ«  Û3…õP Ñpi¦áZéß_‹§RÄ¢‰»›n=Ô‹5þ3"@ùœ¢Yø»æsÞ,X ­¥•Ű|½ç§‰J M“@`Apf/,Ħ©eÊf#cŒ­[¤©öB öÏùq‡½V~~Ø{ÖÑâb'oWÔÝ|üè'ñþ"^ñúwá¢+Ÿ‰}—/áäÆÅ¸ôÀãßxö0pÑ;o„ˆ`s3E[t: ŒMS›#ý,ì™(;Á"@¿üK¿ð‡‡ï½÷- }¬¶Â­Î_/< ˆµòn¯}à3¸îÈŸã/¯ÁÕÏ9‰ç^ùL,_ólì¡zoÿ1PÚGb]ê•Ï~·ÜöJœ|ø$â½ûqÝ-7á»É“øáý§ñWÇÜqãÔÚ+G]9ñðc+ö¨¸¼ÙZ ÞZW¿îõ 0•]à‰§04ÙÚüìf_ jx¬»óí«=¶š€¼N¥ï*ÉdÉ"dEœÃkÅEC‹@Äå§-B$pg™>úرýû÷ÿ°zÁG­ÏˆbVÕû®›à°6Gå÷ÁÛAñž=Kytç%¿Š×~í»¸âtŒg½à%™3ÌXë­aqHh Qÿîûúwqâ;߯és»ÁO[Å%ß;Š}/{9®.ÁÅççVN<ü•7ß‘¹¼>T™ó°å ðf}äemв%Ϫ4—\Þ­Ðk=0³«ÎŒòë¾M‘rp,Ä” P†Þ2ð€cpºÆDRþ‚3¼Õõ¼?ì¿ ¼ƒbJŊ=.p!8h.4#.pàSEb­Í]_÷œýèåŒêyN¹°ÏÎ_5Ö4 µjuÓ…Ö.—¶p‘%Q÷n>¬p©¸«A¿?& ­÷­ŒhV7R’}µ«–ŠšÄhUc”]ÊFŒõØ¥aòìÕÇa“0e•õ¨>@²¹´n¶ç(— Jp‘DÞa…X"p X&B⢈”Ul&¡=tü¡c˜û¿eÀ-ïv=~ßoØãQêt"ìÛçBn{½®xû¿Ã®³kxàÈ—ñì¾pö»ã§ãƒxíÁ“oºúáßÂo~è÷qýóÁ»àè‘£wýÎïüÁÊ{ßýÞÃnð¢€Jù»z!eàu“—{ó°ìÁÖWhöó”[qÞ’¨p—C¡7+`EÄ‘+`Q$ƒ.oxjË"÷8Þ¹£—µôMRÁæÄn=×xŸó­ò4y 9á¡Ò_Ÿàú믧 î÷ûl­¥4MYDÈZË"’ƒ®ˆp z˽€àme”NW;]àé„B7[w݉QžQë—I±<%cH'=°r;Mã8¤ßÈÍrµYÊz{^íO8¸¹Ú ­RÅe×ÄÒ§_Æ ”~g G–­ˆ±bÀkmlŒD $aÃ,·–tìþcÿK¿Äãµ]nï øºÁþ¯Ÿg0g¸üžåñÊ:~ü1\yåÅ0Æ`ýû+ø½/<€‡N|ÿèGž‹g¼ô èËY?øžþ¢KqÊ.!z²Ú¦ÈAp)l¹¼È/v./ú”‹ðäÜÉ¥*üºVÄØê좨ø fc$Dx ‡^bçö²CFά¹6Eq»¹Ë;¼ƒù»†;¹ ¼=ð.ˆwCÇŸào•Ö r¨]`5Á..¦WºÀn ÝrÕs«d¤ÍiÖB°v UK¤È¿¿ö‚v}Ñ`; @§ºŸÁåñƒ>ÂBÕ0pÖcèîXlŸDm|úЇփ¼³U{®X†Æämlš¦ì _ð펼 \†i`€·ÇÁp IµÕn&Ýbi]yR‡¦g ¾ªIµî) …`¨ X¿ÞMdäž6)ˆ¥sù¨ô¿B2v‹âРi\”˜üç¼IŠ 7Í¡U¨Iž¹VMÖÃÍ!Yb©eÐï³Ä±@d…@DÌÄda³¢YDD™cì ÛÓ…,„5 J‡¹Á£à·nô8íÛ·Œsçzسg =ü.ûÔ¿ÆÅ‹»pÑ^ ˆië ß»ëëGÎàöÛ²VÈûîC\^*°*¦MòŠÎ[\^WÄÊR©7¯efò.®±kæ’kì wCˆ¬ …F„2ômвVåüÓè*̓œcÚ<ä ŽƒÞ²\Hp=—+hž\àyq·…<[’n÷ÛHHVlÀ ÁÞ.¹¿[xà=·ý[X• < ðh2†…E$Q*¨?N³uW'Kz¸YΦ":‡àúj­ûÂmÖTGp¬m4!‡r­j'åPhý>W.Q3hÖ\”ȹB)ͱ˜…àŒŸ°òU иÙM/ïiC¡]>¯c&‹@D`ÙU ±s ä*B À$Äyûy"¾wåÞ?¸å…·¼µÙR,W®Â/òÛÖ:-//àÑGÏ®~ñ›ñÀñtò+ßþ~o哟ýÝ•;ß}ça¸U(®€¤_nI”CqÞ£7‡^rªœ“‹—·hSäB˜Ù²ïÍK,(…2{èõÀ z½ÃÛf&ç@niSD…»Ëå' qy3Åc XM¦7oȱÆL‡¶sÓÀU™ôz8)àÕmxš¬‡b™ü¤jxla(tãú +M x*¡Ðã" •«°Zh®ÛPëŸÄ4ûÄ*ÝÓº0*aкãªÉwÞ Öý¶@Èá0[c¬! Xk1 Y0–)ÙÔøv¯`ï]Y¹ïE/~Ñಆ9·Ãr|·–Á(n£r‚5®ðÑ£Çþ¥we.ïq`›UgÎÞGú}äáËîm=È:——sà…ÀƒkÍ#²•6ED¥×Y˜Ø–{óºu,»¼x” ×ÈÙU»`8Fz™sy;‚îŒÓDRvz¶ƒÞr.o=¸iî·‚ƒf]Áöš– œß9À;K# T :¹ÛÞ.½ôRXk+ áÎMÊžkÝÓ&'cÓÈÛŒÀJ!8jç_J“ …šä’褿3G °~Œ©„BOáûjbc*¬ÍKÓK ÁV,!û ±bÙ²ˆå¸“šÔZc­1Ö¦±‰ld­-$†Ã,&«̀зøöŸ5XÜm5€³ô ±·ò|Û½wYG»ëÐ=¿ç×Þã\^ WÊó%è-Wkvo,U—׃1å­Š¼+Üë9¼ð!Ϲ›[À¯‡ÞjÞÍ’ËëÚ*.‡×C¯ÏÝõ K  ½™ò0çØåòFÛ|G*`UßÝ ¹À!¸¾B>°f™f#Øo†à¯r<–¿¿Ý9ŽÀ1´Ï±kí®ÌP†›„O‚µÓ§HKÜ*7ÛI÷¥07{.pƒbšFA,Í<¤<¦€†¡Ð“†`ªá̺À ~õ0¯uòeJêzTWÞRûÞ`”ûI bI DâþYÀ]’#˜!΢ŒSXK’å ,ä‰O:õÕK.¹äyêÐ0 ®Ãwðùaï9lŒS§N¯œ8qbåöW¾ú#ÙT…Ëëf’ô«LyÁª¢Mù°h"›99Èr½ýçÅ­ —˜…• Îzð®çì 7â(wyÝóz]Õfß¶¨Ò–H w*ëU8syS $dá!¸nÅæú!®³ç·1:h4›.ð&6„èYQ~â˯Äq,išúÐçm¸ ÈãÄJ×±­.°6œ˜k`ňÛä[”®žN‚ͪB«Öƒ,z6>®&æ—¦Ð^h¢&nO]`Ô …¸À ­l­ú"À(]àT,D¬ù]c˜IÊIâúÃR’¦€1ÙŸøêþýû§ Àƒ°~ÔýA;zô®Cg./€¬šr6ƒßòEoÞÂé%Ÿ— dmŠ( ×ãÌéÍœÜ"|™dsÓýe0“0±E^©™m¥5Q¥ˆ•ƒ^ŸËë¦7ÂÄ™ËkD`›HÊÎîô´)àí«6G¶v´B.p(ˆµÝ²ÓO‚›*„@ï0ÑÖ_ÝQ!Ñþï–ûW]u• O+Á­âAi€Ú=µ N\§Á±ÕÃÊt ¸þ—n§ë÷‡â$ưv½¬‡*¬ Ó¹3-x¡Ðµö‰)ß|(t£jÊS€à‰]Œ)m_µ›Ýàw_ó©¤$bÉ:&+)wRî§I”¦‰I%ŠÒ4‰L”Æbm”ŠE¢ÈkD|;$¡ï=ôà§Ô : Q!ÉãÝQŲÊÏ>ujå‘GY9xðÐá;íθ漳‡Þ¤ïžwÏUZ ÐÀ%èõ!Íp¹ºyÎnÑ——`* ̾UQöžLÆæ/X˜ÖE àJh³^ÃFž|Ò…8—C›f[àªó‚FGŒÅ\*`•±r¡ÐãB¡Ct}Íc[¤„z›_:ô›!z§I\‰ÍòÁ7* zX8´ ‡~xðõÁiß¿¶ºèNü„² 4kµ€…‰Ãã¤äŸê×còÌÔà„Dý5yft&îSr‚Ç9¥_—F¬†´LÊt‡à8názXII`)•”ER»¶fÑ]HÓĦd­¤VR,§6%+–¬½ Aÿ©?.Ûj»ÐåqE­üßcGÞ ¯¹íŽ–ótÉÑköåI—·\Õ™r—7\˜,¤™Q<—A0‘ô6IÀt Õœ‰¢JH³ñNo z™Xˆ®M‘Φñ./àzñv£á.¯`Ðå­ºº¨…[GÁƒ¯UÔÐJÕßÓZ‡/hþ\àùs›„Bž i xÔ<òX­Mlb‹u ÌÄÝ¡&ëÁà)@°@Û‹J60 Ö£æ2‘Ÿ^››¥`£üzkâè b5 ƒžür5q#Ɔ¦ûª¯™"í¤5ý>).J4X& É€c”Ò å±E ÝlÅ ŸEJ)"b±ÂL’€ 0,D0ëÌKv„–ZqÝ-ùÐ4¦#_=òßžóóߦ^лø¼ÚIDAT1Ò€ð©'NÝûÈ#'VÞshå}w¾ï0²ãÂVYgª8²îËЛçñZúìØ°B¹M{ç×·("qõþKÀ   ½LÝ<·×°Ëç%Ж\^  ½Q x-Ì—w»í›Eiœ†\àЩ]Ô.Þòm‘j:ÁÀö \yë!Ï©OØ×±.KXª=ßtúêÕ¤‚­VÍÜleQš©¬GÍ1ú:ÙÕ:Å“ˆˆ‚S²ˆKá`ãe`•'o™§'¬Œ.°`D\`ÍrI–±œ ȳDÚŸÒ†³éOvÕ•”Iÿ™5Ú1êB6•ïêÆ°ršõëa0È †Ab%b‘í÷9"a1I"IbÄDÎU‡\¹ù7Ÿ×q‘øÔOÜ{âĉ{_{ûë>d‡!·)ò¨|Åf7 Ù¬ 3|›" MYnn¥²sÖÌÄv3¯Ų́¶)¢¼xq¹R³¯à¼Y°bF”A¯^ïòæ½y9»%´9Ú&´Ùl½Ã X±ˆÔ€®©¸Àí†à ùRpÛâgÓ‡à«!ùÀùK5î{|Át.Òýp”ʺšFȱv=WIZ£&lÑ?QIËS…¶Øì6ƒ• £X®F9éJhfedÄŽ‘ ¹ø%Õ*PV:TcÑ¡_±´© \.-ü×^Êá­ ±oòXVRIÈJBA"=N¥ÏÖ&Ü]JLß&QšFœÚ$Ž:iœ¦ilÅF‚(2ÆF"b|ðß>zò3ê…TŠˆpôȑ߹ç+ÿúûÞ¿B ’»KrÈ•$É Ø…4ç¯;èÍ X啜3X¶x=wiñ][¤T GÖÚÔZ2lS†°e+lÉZIlÚl 9k•,3Û U ëÈ‘#w*ryáá4[1ñÏõÝ×w dðÜöM*À‹ü=²¾ÄÖ¿ïæf–ïK$ì]]b›…;û°gáR1+÷xÞå-Úeл^„6GlÄP,¾ˆ»_œØU{ñv*;zËêÔìÍ4» ¹Àµ&±¦Á“RžmOÒô­ÎØýªùûè«Ç˜Fȱ‚}X·v¹4 Zvcè¶mmšp£‚X*Fðtíz(:SX®†<~]J‡k“Ph­[Ù ‚u¡ÐMÆÐ:àµ×»rˆ+C¡•çu8±}ò.°•”éqjûÜYÚŒ’41}G©íÇq'|´µ&Š"1å0è“ÿàsªÌtêÔ©{Oœ8±rèžC‡ßûž÷fmŠP)\Iñ¯ùÐfv9·Ùsi5ìÙ¹Ô–¨šÏÛë9v²Š0æ"§· ½ð®»ÅrmŠ„)ÊÎæ¡ÍFðêCœýÉ·É ×‚«\Íå•ï…qЫuÝ!º®B(tÍå aКYB[¤ü Š»!zÆ4¢0Ve’Çu¿DÎë IWD ¥uuµP4[mø´˜?»T{ú5@ö6€`Ýr R,Ö^ ,»»Z˜ ³„,‹Ê i“PhÕ<©»Ô¡Ð Úã—š\$Ò]0¨õ-QZÓ)ßM@^ÿ9‡òsÞ$„X ÀuOØKç¢ÜÖ£ÆEŒØt¥o{IL=Ù$›¦ä\`cE„œB˜Άdn*‰°$€€øôéÓ+{÷î}Aå:räÈÝpÇmw|Ô¯”ûï"sy) s&YÛ!B"®n—ÞR»£Âáµ…Ëë Vå9¿>§·T±yÐå]Ï×µ)â"´yÕgáìLFº¦pk¤|ÊC¯ˆÉWà°gzËêFË2ÁÛ‰3oL£i„BÍ—‚ <Ÿ.ð$B¡Ϙj€p>éãayž£ú²ZÚzœMlª¦×Âæ“xR®ÂUjxì¡§š¾‰ž`wíi7Ù§„G7Fýí•( Ü!¥V uúÃwAË •…Ù”&u/”ÔmvÚåJµL‘1W¢6‘»þ`AéÊú‹¢ßV"Z¸¤¹äòVî³ïõ‹2ôú\^÷|½p¹¼†‹Ï‡)·,âN¥m·`ˆ©ï°“»Y m¹À¡-R­y& ÁA;R€gTRŠi«ÃAALÖêCð“ö†‚…Ä™7õµFkXR@°¡H ÁLF›„5e(ôŒÚÖ.—AO ÁT‚×CðõÔlÈèù V‰)É$6³c{½ÔƱXµB‰M’ˆM$–@,"rèà¡Ã7ÝtÓÏû÷8uêÔʉ'V^óÊÛK./Á‡"gGaxÀ¹°Ùkä XÁõÛ…±ÞJ‹"½ýYK$Å«ÛåE´¼ÃËB´ŽÂù¤RÀ*^¿Môƃ¬(An&“vr8.Wl.MÕ°k ð™-¡ÐÛ©­.p[!8hN\àé‡à9Õ´¡x\`˜&í»éŽë÷§¬Z Órõ¹Àê0hLÁ0€”‹–ºÀر.0Pɵn‹ ܳ”Ø JУÍt{éšYXî™$MÌfb¢TúQ%q*id­­äyÀ wžÂÿïsŸ~ÇÁƒWîü§ïYñk‡.}DK’ø×J!Ïeèõœ­-†8-³êmR©¸U¹x•)åó¢hS׎ÈCoÞŒ¼JsÙå à¶¥2‹oP<À1weØá#UÚÕùti¹ÀÚyB.ðv m‘€ å‡\`7Æ\`Ÿ80 ~ Þ¢äQ<ªc«µ§ÝÀ†úý¯ÆÕê µŽuÕôZ€.UM 6§òÕŸ8[üÄêà?‘¾z=v˲v íjpNEÁK .ਗK™7íÆHǯˮâî¢èóëµl›ô-ë–©«¼ÀPûýKQõVâɃ| ÞLרoש/›Ô·›´‘®š…å ÓO{¦—Ä&±½ÈÄý8µi”Ú4¶E‘pÁu+<ÄæÀ À·QVèªì±oGd}{£¢0•{Ÿ~Å«¨4M9¤ÙçýyI(+`U†^&#†Y 9ý¤`C‘ˆð0—ÃûÖDB xT›¢xk_^ÈÍ éSˆêžÒº šµz˜ˆ)Uoÿ$ÑC Ò6ê­{q!—’šû£2†6& FÐö"ÒGa¤ÊyF}Î[ÆãAAA@pçÑ6´&ÚPè5DêPèàNm§I¸À]³äN¶-ЗMЍ+)'Ö°%ÃÆ¦6"¢DHØ2iJ #…P’@8ËÑ!€ë뾃òfâÜ奬X• O&Ûë.¯áRN/J¬²þ¼`r—wåÜ^_ÀÊËꪦNîòÆ,–× ¸ï§òãØDâÝ¡a ëÕñÛÌIì(‡hˆÅÛÄnUA¬ 9RpùvŸ’‚XpPIÁ®¯i¸ÀMzwð˜júÇ1"·,((Sp5Óφ ̵´B=Ò] òWå™X 1¥Ll™9evN°!“0qJÄ™»›&î/§ÌœqjJ.¯a“ôûÎéMzÎíty#3Äp”ŽS&c™#™þ€Ëënݨ“n¬y§w1¹c;¼`;¼` E›Eë]^ÀAo~+¹¼‹Ñ»ËÛ1Kâoê0K .ðœ¹ÀÕ ²õ÷a6}¢ßÚ1‚fOÁªH$/<4TÁ®¯Yq 6Ô± [ëò‚Xë´Ù¨ VÐΔ¡H:&¶©M‰iM˜º–ØÚþ&u„6û D¬t:°BB¢¬(UvL¹VäzóZ_´Ê¯ÞœUk 3Yïæ–ûó:——J.o,ÌFb"Y]õ-ŠŒ2sÑ·ÈÝu§P†;RvbÊù¼Ã@×»CÐeð|¹À-o‹4_ .ðì¹ÀáHÐÔ\àúj« ÜQ–U‰q¦þÄÙâG¬k4 .ðµÈîš%—ÃJ]qyÀ±œ9Ý‘³«F GÖ°‘ˆ¢”ØØ~ϤL&!2)3»œ^ön0eù¼ì\Þ¾I˜LÊlRC™ÓKq±I"Óq9½è¤LÆŽÓÂåíÙØÄiÄ‘íDÝ´uÓ5—Ë»z¶kcîØ³”v¸k EÒáEëswêl¸#†;sgd>ïàvè˜Eq·9wyw¸‚ \_³â'š‹$‰C·­uöGHaº pÐMÃþ8>.š¶Hû±¿Q[¤ ùQpçÓ6dTm‘‘º-Ó¦hÛ"VL]©ô%¢ØÆÆµl²bÉXkÁȦB é÷\joy~#ÏçÍszó¼ßü>Sœ·)")»¼¾GïÙUWµ™)’ˆ‘çòvÂøs{‹ÖDQîòÚiD³µpÕ C[GÁV1q˜)m[¤$aU[$BÚ¨-RÐü(¸Àºõ@¶€ƒfV»±[Õ8´E ±jŽÑ¨7pÐü¨vË¢’æ¥-R̋ҷë¸Pâ/Yëq'ˆl*)“¤ù ”oT¯AxwÂÅÄB´&¦D€D®xE$xÝúEÒ)·)¢â~ ËQ)”y°MÑÖÈ&‚ ¼Ã4 š?ÕƒÿЩÉ!Z·Û¬4T¡ V}5 …š/©Û…¶HÚ1TÓÏs(tT…€3§t¢5»vvÝn¬õÒÈô¬kAÔO"'‘‰³6Eþ~”ú[Äqj²6Eq)´¹c:.¼ÙtÓ³ éúÙÅtãÜRq×F¼`#ߦ¨t‹¸S¹ÅÜy\§¢€Õ…oSt>"ªF;Ô9ÂB[¤ú ¡ÐAA£åk,lш¯Œ©´Eê¹ßÿéAA3¦à×ÐŒ¹Àm …š/=•.p×,ÉfºFÏY8sz™¬°†¦MraÑnY‘Œi]|ž²s}c1ÄÂddõ W\Þˆ#W¸*8®žèGÜý˜$áxŒ]íöšçPè ùRpçÓnc(4à m\àúš•‚XAó§à+æ™ø©.ˆ.0àB¡c^°Å6¢Øv£nj8²±‰ÓØtK·^›^Ú’Ä»¼îÖM7ÎvÓõÌé¸kc^°q֦Ȱr./à wôm!¿ .sQÀª].ïNUpëkV\à¶Ä š?…ËuAAA¹‚ <Ÿ.p bͦ]`_ æ’й3 Yq.§—/|ÑEÁõ f9}ÊÍÏÁ°*ÚE•`CÜóL(*^º^tG¹ÀU¾jp뫱‚æOÁž?88ÀAÛ*¸Àõ5+.pëÚ"Í¥‚ <1Zâw³@1g€™åGÔ•/Ú˜lÄ]Ql;¼FÛ³ éÚjlωí™ÓF"îÚ®Ù•ÆÜMË»Pqy}Ë"Cqæì¢hS”.—7h¤‚ ¬c6\à6¶E šœU!8hŽÔ°/pD±ú˜Z¥³Ú1´C„‚Xã´B¡ƒ.œ!ذ×H|sÄ]ë\Þjhs¹åûeè^ÌjpÆAo¿ö©RqáB{Á`°XUñv=C‡\C ±ê¨Ý¡ÐAó¥&}këSu!©F1ÚU+|ò‚v¤‚ ¬ÓŽw[ ÁAó§à××8¨Bp—Åp,³d=ÌvxÑæ·ìùŽY²Æ3Çv» ÎŨî‚J‡—¤›.«œÞ¶BpÐ|)¸Àõ5+.p[!x§+pP-µÑn+Í—‚ ¬c6\à6BðNÓ —A8¦®ŽeÁ,ç »`–mLÝüoå6ÎååEq·¥™Š6 .°jŒšS¶Ûn+Í—vº 8(è+¸Àõ5+.p[!8h¾´Ó\`ÀAð wyWÂþ¯ƒÜ‰Ky»þqÌ 2è’ÀënÅ+ÅEêéÀ®­.p!8hþ\àZgc̆ ÜV®£ÀAµ\àúj+Í—‚ \_³â·‚Ç© Á@nGïà{ Þ §BÁÖiV\à6BpÐü©ȇ£((hŽ\àúš¸­4_רºÁŒá ï§vã:Vx¾C¡ƒæKÁVÍ23.ð¸õ¤Rpë«­.p!8hþ\àúš¸ä.šÝ[ würé!8h¾\àqš=¸­ôÔ)pZÓ€à ùRp5ÓÏŽ <+´³\à‘“ ™g6\à¶BpÐ|)¸Àã—¥˜þºÀ€ƒZ©à×׬¸Àm…à  q .p}Õuó1F„Bo;χBílx;ͦ <+¼Ó8¨‘B(tм(¸ÀŠéçØn#ÍŸ‚ ¬£æ”!:´E §æ š°‚ \_mug‚ƒæKÁ®£ÙsÛÁAó§àך8c6\à¶Bð0j¬à×W[!8h¾\àúš¸­4_ .°N³â·‚ƒæOÃ@>5AAs¬à×׬¸Àm…à ùRpëkV\à¶BpÐ|)¸ÀªYfÆ\ÀAç¥à×W[]à6BpÐü)¸Àõ5+.p» 8h^\àqš=¸u4u:o…¶HAZÁÖL?;.p!8h^\àyvÛ ÁAs¢àOÝ´#\àúš¸­4_ .°fŒî·‚ƒæOÁÞN3æ· ‚g\a ]Ík(tÐü)¸ÀŠégÄn+Í—‚ \C3è·‚ƒæJ3ê{…#>(è<\`í³á·‚ƒæOÁVÌ3#.ðSÁAANÁn2ÆŽvÛÁX€ƒ.˜æÕn+Í—‚ ¬C5}[]à6BpÐl)¸ÀÃ4¯.p!8h.t]àpdͨ‚ \_³â·‚ƒæKÁ®£åï8š#˜øBpà  ªà××<‡BÍ—‚ ¬™~6\à¶BpМ(¸Àsæ·‚ƒÚ¥°÷‚.¸B[¤ q .p}ÍŠ ÜVš/x좌cǹÀ-‡à ùRpuƒLÚŸØ ©à×W[]à6BpÐü)¸Àc4ƒ.p» 8h^\àúš¸=¾¡ƒ&¢Y …š/X§YqÛÁAó¢àϳ ÜVšuͳ ìÎm£à×׬¸Àm…à ùRpcìx¸E„à«æÙ±.p[!x:¢¯4IÑS½CôÏÕs¼Ç&¾"âщ¾ÿ*V'úþ°ë&>ÆÕ8;ñ}±^>㯩MhÇ«Ôcô´ê•ê!ÐO7ÕÛ÷råô=»G;„Z}™|>pb5 ¶¯ÙÒSï½ê1tÀ™È’r„LŠÝžª¶m3¥²8ñï’%å¶ÕÉ] Î¶jÐxy—n ›¨÷DzrúTt]Ý<“ï‹lmÝ1–†Þ­5†è·o=仵ף™¬ÔA½QcaRŽy±\¶Á±®UGôÚmc]ï§ Œ1ù.VÒ‘ÛWdWÿKG?” š ýŸ%G.üà¹yIEND®B`‚awstats-7.4/docs/images/screen_shot_5.png0000640000175000017500000000663612410217071016333 0ustar sksk‰PNG  IHDRxZDÞbÝ.tEXtCreation Timeven. 12 nov. 2004 21:08:57 +0100UОÞtIMEÔ 8*¬R’: pHYs ð ðB¬4˜gAMA± üaPLTE?Á‘#Gž øQÿfY NÄÂB*Ö—…þh,–ₘs1Ž‹&E.<:šL­¢ ˆr\’p!p²8$Š"G.O'“—GåÕAàÂoS²˜Jýá Y$mœzùeYNÉ…9¯_‚Ë%8/Ÿ»råà €ÃÙ³#BàO»2ŸLz0)$ñG’#òÉS‘žÈ]±S'£ýýQ8ööÄOŒõ$Nž ‡w†Ëh£òö/Ï=5|âĉáááç†ÿÚ0þüëÓB`MŒ6‚ k©Ó#És=½‘°Ù9‰r›£áhïÎp4%¬’My8~<0ù÷ã8a(.Ä.ÊqC¤%¬6ñ³@Ó—àª2±šPU!°@ )ºµP][UèÚ6Jœg;:Qp!—¨@¬ýc)Bƒ¡î`(´+عk°ûÑÎ ´ uƒÝ¡G»‚äã]¡P¨s`×@÷`0 »áû¡ÁªÎ^}C§Äß±6°6°†¼Ön¦¯.,xA߯0xcGç¶PÓGß@,Rx¬`¤`^㜑бŠâUŒÔüÊP"Îçæÿ;_6Æ«+°eMJ\Ž™±‰ëßµ¦úá5˺î#ñu!°P:ƈŖ1&Ìš¦(ª¦hš 'KÕUÕÒtÒÁ©”Xûw†4“·^¹Ë†6ܥĚªk¾¼y•Ì…x Wõi} Îú´¦OQ™F„‘e¤½aQâ…|M‰­¼–Ïû*\Q©Ä@Z]ÅZc†òø#÷±¾=r‰¥+HÃz­pc¶nŒ›b×–¤2³jظªìI)œ‘»@¬ÂU´%Ä<ϳ°û 3‰A¿ŠgŽÐÃêTÒÌØëžª-ýU¸êùŠ1&“Íò3/øÊurȃÓ/ƒ]À~½ž²\×õˆ]'“6ì˶”ÍH’›÷µW}yjÅsø lœ«DlÏÚŽ››-›S:æÁibž_þþµÿP4Ë›7Ó3q~Þqßt\×™oθ*â\sä%Ug$ÛÈd2é’që ð Ïø(Â…Bà9û†‘3‹Ä kÛÎÚNÖΘ¹‚Ü H@ êšeiVm4 1Qµë̵ÍÁÉqçé«*‚éá;pqî*ÅMñ¦³¢,ç7L§¤jÌ: Ú¾œNU f·_˜PÔIu‚Ĥ25E¦´†u:§!lLO¨Ë‡¦óÆ¢ª©žÛÍÚî¢qù««Õé”wËUƒ—K>7_c–ePËúüžÏ7kV”—c¤ ¼È˜‘)N©V|µÚ¤¯âlÎ6Á°gwÑ@våm0ˆ4*‚ÏVKéq=R3s£¤jÐ1ѳSFL;õí@¹6 ´×Tíj«aå.SJÄ{HY#ãå"Ôíûw Tçé ‘/&DÖ¬cÚFnÑgê$(úwá¡Ê`Úq¦˜€};DÓžëX‰q5¬nOâ\&mJ’Qžˆ@"¾Ø—ž$Īš—xf1,:0ëŠD€Â·ƒb…Y.HCÒ:Ö¢UÏSmWT [^ßZ1Tt€Zô\–SÊ@r¦)™F6+¥ÍlÑ –ÅˆÄ ³<æYñ,ªäÀ-z.süõ’UçlÛ5]Óqf›7®æ}u¾ÜWÓ P"fƒlcy†e—¹ ­1GU…2_mgÒYüGYrÝH"Њ¨»®M³s†“M;žË„p E±Šà¹3É  <ÆP*#Ò ±ZAІ”ƒûœ÷qÎ÷ÂdËKS™šùM=¿ê/±c—s³R:Ý”çZ ŠÄxÌ9•Dá1â58lŠBN$!‚x‰HÐ$í–lzѪ‰›®ð«¾Q v$IJgm r>϶Qµë\°ÎŸÔ—˜¸j»BÏ é™1i1ÆoŒgÆÇÆ =f’+³á1&æÜt}¼$ÎR¦j äf»†MÊÅ›Nœ“úéJ]ë*‚‰£S¥Bm€Á]AÉâÕÿÅŠœš†IÉҚĶt93»TÕš·~«–^=JWzT’ZˆÖ…†¦5=Ÿ Äà¥nÁ/b±Š@Š0Ò*¯úNZÍ@JyuMè$(Ñ–ž¾: á¥533~Äõ;P[­Kª®IÌó|Ïô1 ecÍó+Í@Z•¸FzûVH ““W!ô‘Y‹kNTTX‚»Þ,éLq)¢6±R\ÛÐÈÊN­l-é©Kœ/Ô~k ­—U߸`c†AL­dt«ŒkÅ ý2cŒ1 n+,õ#˜‡$¬ònp‹i_B%„½ð¨ƒÊoõÙSé™Dmb ÑòtÑX§9vu¸Õj‘—_Žuñ fHõ„Ä2UÔ­ªš.EXS·È¸ŠøjHŒP"O%Ó ªã·Pâ?bÝ«Žh¾@¶ª®¶"*À%%—/±b!s†­†qµœ8VUSÕ˜Ò5ºoUÕ¦ä«êúБp Íòüz£E늈éx™ã㦕Œ$ÁUz|üf·Šÿ—{+`Õ˜§Å¿‚Èb B±òÂó[¾‚T²ßfS]¿y¼º+åN¸©ªÖû“511éE™ G²+—.^ºti_Âp*É;ôí`Bä\xçÎÑÕý+Ó"d®·?‰„ã'Ï®NQL¾ÒèW½½px¥¢uµ¢…EQ”iËûW“\ü{Óh*ðÂö»zÂá~N>ÈßÙynXØž¸GüáˆüÍ/¿ÝÿØÆooüéoÎÿü½_y{ï®wH~á}¢œxàQxé¬ wv'’Ñ5½¢p_GBN(Çäï‰òÅÇ^|RŒ$»Ñ¦_ŸÚýð{„§žïIÈߺ7Æq½LÏ>Ï=3sΙ9;ßyÏ[Î{D)Å4¦1#C{¹o`Óx%cš Ó˜ÆK`š Ó˜ÆK`š Óø‡ˆE$~¤sÓ™Æo4DäFà‡@éHçÓ{;Ó˜Æ+"rÎ,fÞ ,ÖÑos”ãñºi3ï4~“ " À‚ü?…ÒÚhTCG»~Z‚Lã7"¢¿ü q…Ò†þ­—ª7Miœõ‘+–šB¡¡yÞCJ©5/YwzŠ5³"2øp àð| €¤RjÝKµ1-A¦qÖAD¢ÀÇ?¤vøà».ˆ£P?:9`Z‚Lã,‚ˆðÛøR£‘£ X¢”Ú}¬6§%È4Î ˆÈ…À?çãOŸä(—:À¿9`Z‚Lã ‡ˆtŸÞŽ/Žõѯó”RƒÇÓþ´9 ¸kíöж][è>ß²ñ”D<\ÛÁv\ÏÃs]”šh(AÃôæÍœ¹?‹_üçoºmèå~ŽWD$ü p®>Öûì_<^rÀ´™2|çÉõïÜÙ½ûßlWl«ŒcW‘X3A]GÅPz4·ާ(»”Åq=»ÂÈØ#™ |_¢Ü¬”úñÉt1mæ=A|î‡?Îôôí««oŸ‡iÃõ-±ñHä%ëµ×ÅA„RíÅêp4_–V#Єt¡¯âa•ò­uuDªÙR•ªm‰Ä©Ž¬§šÏay·îþÁÅÝ}û«ß¿ãSÁI|ôWR’2MÔ r;`+Ô;Vªóï:쀟=YrÀôŠÂÂßÿÝÛß]×й+ÒF±7Mß–Ç@„ž‘Qž^ÿ,[öîC©#èËrè…hBH>9ª V#–¢ò‚êŒe³lÛ»›‘ÑQöuïF)hJÄ„ëˆ5v°jùR:—® µ½hÐàW=¸â|V*îec4?­‘£ä!7¾€àà#§Ò×ôë8qç÷ï¶r…œ¹«§ŸhÀ g"OÙr8oÁfÏšGO÷4Êv•‹Î#ÔMcɼÅGl¯=(x@XpE£–"[±°l›¶XCžÛ×GÏð Œ6`Y”]&`˜¸Ê£<1ÀX&Ãh¶ÈàDQ.=ûÈWÎéT߸óÓÁå³:ì#ÞȆ-òd£Kà>àb`\!ׯT«Ÿzáu"òAà:¥Ôu§Òß4AŽw|÷®êhf<ðÄÎ^t«„§›° ½‘¥ ‘cx|œc \M1fÌ]ÄÒEË™ÑÒú¼ö&rY~øgèºÎµ×ÜFXZ"&àK‹aËåéÍ[É í¡eÆúöne¤¬i.- -‹pÊYì‰^Š¥¹B‰¢#(åR,—(—Ë”ÇGã‚•çxüÃßë§yØ&ëd]§÷K`9Ðïá½~•º`ó‘®‘ßRJ©µ§Òç´r üÍ=?ïì ¤{GÑì*Mõ$"fÏ]D}}årÆY­<¾í~PˆNgc‚EËWDh­¯góÎm”KyÎ_B}.¬—õ‹jä˜+°ÓAý¹*¹ï%ªüôDBJކi òøú¯ûÒýòÁ?ðx®Íü\véÕ<üÈÏi Y²ì}Oä(øÕ–]õÿx÷÷'êê0”ËÆÁ,·¼ö^ósFry–v6sÉU·R,dùÉÏï%hè\¶z5o»ìR²–Ë7S­¨kœA~¼Án:ÚçmlÇs]Bá0Ãû·‘a$WBB{këwî"S,ƒfpùŠ¥,Yq!Û¶®cóŽí´7Õ³£g€Rf”þ}¨J…@4Ĭ…óé˜Ñ&ÂxÑb÷¦”Š’Cé:*% ¾ýïßXt]×â]Ç;å¹7 òM V;TÕañ2•Ü?5#ÿ|¤åÙ×€ö òHû¦…ê¢ãŽ¥:UœÖ)VZRõ@k—Jî8ýž ¾}ß½ã­M t.ºÝ+cMg¼TE7\|ÅÙµåY6ï܉ˆ°já<®¿àBöŽŒ2¸­3#šÆøp/ÛÀéE EinÉè`7 Ïc¦ëûCEA126ÌÒ™m¬Ý;€]­°wû: ùq6öŽQîc|b‚YílÚ»ϱ‘J«RdW&ËÞ­;ihm$ÐñDCpcuH~)°=‡îÓ;®»ë»Ç´^®‘5F#ñÏ òa”oõ¼Úñ#hß;¥ÿ`£ð§«Ï“Åç~ô“'³…’,Yùjf4ÄÐ4 Ïsq]‡DÈdÿ®<ºn#ã¥*ŒŒO6|=8SqñÜj‰ú¦Nšg,bÎ’Õ4D#4Ç"XÕ uÑ1S# )‚ áHW)Â…€a¢i:…ñ1²Ý; Ó½‹‰ªFéR’h®C"у÷.åʶiœ=Ÿ`4Nó¬™P߈2 žä+_üÒÊÍ=Gœ=l–ç.SkA½ÈrS—JÞÂ[¡Voä]ÐþjªÆ?-©?õŸ€®àK]$÷ÍêÍ'&28-IKêVüEôðw5‰òŠÃ_þ÷]ûÝEfÅ‚4„ý£F»‰„Ãd*Ž]e¼T¥Pš¡iÄC&=ãYžx6…ë¸d÷0Þ"ætt²zÞV¶7±0â¢eËY6w.mÍíDcõàÚä&FHïØN±â G)òxvײȗ]2– ް¨ãˆÆ™¹x)‰x”öÎŒx-Ñf€¹ç,âu­æu—¾Š‹V,¥½³ -ÃDF±²Y¾ôÝÿʾðÙ7Iê<äa Ø*¹B­þÙá׸8w® oÙ,ëVMöø§%õ7økÊøøJ•ü‡BÓN;¦\IKêà[øüàuÀ*àµã¯lîÐÛ²uŽEŒ°Y%¬ ûr"ƒ‘lž§¶ïÁR¦S%µ»¯ö_S¬œÕÆ\ÂCÛwSÈg)O S7cÝ=û9wå4·¶±»¿—±h”s;šh‹†ØÒ×OoÏnrãCìì飢4r<U-c÷£y.Ãy«êhh±: ˆ5¨–׿¶w}ˆÖDŒýïwؽi+Õ Á ×ÞD¬Þ÷½Ì=§ŽýÃhFÇv¨” du{ïúAä?ÿü£€ï™ìÞ ð<Öû.Q—¼h­É*uᎴ¬ý6¨ßuñ> Ü8)ƒ/hiR_ÃOîæ*xßJ•üƤ´} ˜Ò¯xZR à^ ¬Þ X°òÙ´¤ÂG«ûrà·Œ9:1ªÜzÅë(;_ýî7Ä0xžÂp«€Â³«xŽMK<Â{o¹­ûv2Ò»“ïßõ-Æ‡ÇØµ~=›¶l㙵O’Éf)e‡èLøS¡¸!\4g¿uùå¼û¦7ów½¶º(š&&Šœ¹˜ðìŘ5÷^¡â2¸{msæcÔ5‚çºÌn¬cvsïþ­÷pã¯çÊ×]ŠáyåBϳX½b%çž·šú™s)—mð<¼|žO|ó;Ý~ëöÛðÉa)øÃ*ùÎ#‘ãtÔ§Kà†´¬;å È-²%°‰µwã“£*È[^ ä€)$HZRü7°níRÉ2ð·ø‹Wfà+¯ /šÕ¸bñl^µxk÷÷±cãzzûGÉ÷wóê•Ë0Ì`ˆ–ú87_~ ·_w÷Ýo±³{?ßÿŸ0°}¥LtžÞaþïá‡Y¿y-ñúvZ¢¡Í‚̇øÔ;ßÃÞt;3!:êÂÜxù¥¼ñšëhhk#à9× 7ÐCsÇ D7hkm¥9aoo7wÿà[Ì™½[ßø6D7ØðìÃ<úÔ¯±--ÒÀèø™ž=Ø££àz ÿñ/_› P{ÿQÁå+Uò_5N5ï×ÞçNeÌkÈûê6 ¯ëV¨Õ÷œJ›“‰©œbÝ/~]à­]5¯g—JÒ’úKà_¦%õï]*ù²'$xdǾ¥®ëÉ’sVÑÙÔŠ­`_ï^\Ï#(R*³æ‘‡˜Ñ£Y~úàCÌlk$kÁÀö­dúG|oº3çÏcÿÎÝX• ñDó;;yhËîúÉ( Ìhoáo?ø¡ƒñ¼páÜN–¾ý=lìâþîa Sbt`JÅ®ea66P—¨c"^GÕªÒ7‘%Š`9ßþÆW©ª]”dÏð"B©RD«Ø»cc¹ªX€`e[T&2üËC¿ú¯ºìÑ.•ü£/ÁùœÂxÀ•iyîu]êüOtÌS’j ÷ƒ\ 0 Úµ]ê¼çN´©Ä”H´¤nî¬?Þ¥’/¼¶âO½þr*îáDñÄ–ÍÏh±6<×#Ž0Pñ(U«”+.•ª‹§xƒTFûÈ îÇr]BñC%;›axï~ŸбpÕ*¢3æ±sÛßâîû~B1ŸÇÎMÐ72ÁÓÝý”ÝçË”DÐ`ns#K-¡>#QŸ@7tÄÐ1uEKÇ,F'&˜¿d%ËeÍC?æ§¿¸—á|…±¢ËèxžÍ[¶2´w7£{vЄ½=ÝdÇÆq‡üU®‹˜&(ûî½ûᓯê¢!à«þãÊ K‘Mòì¬< ê`¿‡zÕŠW9` ’–Ô"ü©•ww©äß½ðš.•t™9~¯¦È¿¬È‹q;ÓËžýûزþQÏÃÔt\Oá: -VOû¹—3cÕåt.½ÐÈŽ ¡º÷ìAή “ÂPË& R°]~õä“d{qòD7ˆG#´7Ôcj/^23fù9«qZæ.¤¥% DÁø`År…L&C}c+®¥b9D"*Ùƒû}Ú$ëÎx˜ò¬‰ûê•ê¢Þ“éÿt`²uoË€ ps—JqýG€gÒ’º²K%OJÜŸ*ÛµïkÛú†˜×ÚÀÌH€ÙË.aÛú_óУƒ&¸•*e/ÀÞõëÙƒ" põÞ@¥C×4\ÇE ñü)–8z)KKØÆV*_A¯ofÞ¢¥¼åÆ7³ª³í˜÷´fËV~ºf ¶ãP)Yh¥2J©«'kÁºgžÁ0DÑ1o!£ƒ¨r Š#P)ÓØ”àü+_@U|£”„ éH(‚ÊfŠwð–“;ðW\Êt¥I½µ‹ä÷ŽvíFY{• jVMyP'tËRµ¬p2ýž.LAÒ’ú8p~‰ßêRÉcæ>íRÉTZRßÃO8üÅ´¤ÎïRÉÓîz"õô;öÚaÊãØ¹ ÆsEzÇ3”ŠeDÓA9(×Å34ZZøãü1M‘0#e‹Â¯î§<ÞH“¦1Ö3„TJ  šËcG$ÚgpAò|.½ôjZÃfÄ_Ú²½up˜ÏÿÛ¿b•J ™ÑqÊãÙšò¯¡ªUÁÒMl%„°Á±ܲeÛˆD ôB È…—¾šûtÏ!É(×A¬ªïàÔ ÄÐyàŸßúÑ›¯?©±[¦–Ò’ú<¾sïÓkdÍÝW¨+œ^·IÖÞ*¨ïAà‡:¡ß^¦–Y'ÕéiĤ$-©k€ÏÖŠwv©äÏO ú'ð‰µŸ(ÿ=÷t"Êæ4×5Ø·e=Ų˞Ýû@ibšh®‹4˜ÑÞÄ_üñGÀQ <ÅÊå«hkkç©§ž¥”ÉÙJ4gæÌN.»ø :Ú;f||”s—. ìx<µcÛ¶mdãžæ´·píU×óLê1ú‡†éZ±W¢G4z·lÅÉå|ÅZÑP Üj©”jiªcGj=*›õ£¦<P„ZšxìÁ_a"úa3ª\B²¨úF…Ù¾uû)Mµãäÿ%OüO…M$Þo„9ˆ’z¯À×Ô¿uqþûQœËO9Ü=-©ùÀs@¾þqë‰J´¤þø(°XÒ¥’§5(íªOü¥êÞµ‹‰ñ,^¥ŠR`Ä"ˆ¦¡—˜é‹D¶ÎÀ…®dz÷Q±*e›j±ŒgUÛÃ$ÚÒDss]‹çrÉå7ðš…s¸ÝzÖ<ñý¹ !3@a ¥<,ÛAÙÆÇJ <”ëA0ŒÊNàå2‚Ò ‡}8ˆ†Ä`UñŠyÄ h:_sOÞ{ªZ]÷P(“& â5´‚cðFž}üh YŽ iyî@¾ô†©[¸P-¬úÇSÃO. þz…:ÿ“§ÒÏéÆ)I´¤"Àÿâ“cðŽ“œ"ý5¾B?øµ=]ð¸åâÁ/­èR³.‰®“/Û YŒlߎSµˆšËÁ©:(«ŒxÞ¡ü$ž‡ëº´·615&÷ðËr–ÂÄý}{ÈK¸û·1äi˜ºÁHÎÁu\4<(äÞ“BC) G \öCPЇ©tšÙ ”íÏR´XÜ?f¸èŠKxvÍc(·¶ Ý}aœŸòu×_ìVO(Ùàa!ÿð?róKäÞðI}A|=Súð uþ—O¹£ÓŒSµb}X äð•òü1®?"ºT2 ˆýxZRͧx_'¼Š…R åº8Åžmã–Jx¹ Ù¾!ì¡aTf‚ÂÈN6 •âAÅüÂÍM¼ýÖë¹þ²‹™3g{÷íæ‰5¿ ß¿™\6‹`—±\a(ç'¥P¥Ø3òĶA@™GøŽyÞArH è“#æU¯¿‚u©~»í³Àxq]庨bå9P*¢ìSÏçTI[;õ‰¬ývŽB½«ë $œAüdÞ†/ôßÑ¥’§jÇþ°HpÈÉxZàz -½˜xôP)U‹W¢RB, íy©{À×Q”n‚Ô†Q7X¼t­õQ†ÇÆÙ¸e3™‘~âñ0aÍEÓ Æú™p‚ä‹.Ê9¤ËÊ ^ReWQ•2ªT‚—x%‚P³¾ž+o¸†TjV®€ŠÄÓIjÓ*Ñ|'¦a ÑRÌAµŒò&GXÁêï›A½¨(äÖ•êüïLJ/NjŠ•–ÔUò]|¶K%O:1×t©¤–ÔŸ?Þ—–Ô?ž®•‡þ7ÜCèÁÊõ†têêšE …˜µb¥Ñ!FzúqŠ%´p˜K®ºÓ0(Tª õìGðè¨ðÔsO#žF8N¹â¹Ì‹é¬wJè(xî§4 ñ\ߺ„BŒÊ9FâvÓM#ÚÚÌ’óVòèÿ=‚SÈãEâ`[ÈÄèÁ—__šT«à¹µ¨á*¸6Zà¤s9< ODîP¨Y…ܸR­~trypÂIKj6ð?ø¾û˜ÄP‘.•¼'-©ÇËðƒo™¬¶_ ®*›žÀS‚4I4·ÐÔ1“ f6pÏÏ~«›º‰¶ÍbVïSËÔë'­á— 'D´¤BøÙ-š]Àït©äd›ë>< Üœ–Ô«»Tò´|<%ØèÅ!Ø>°V%4ïB:î¥gû6†úF`ïšoA2<],0o,C¥\¦³.„Trˆwøt¨¶bÄñ ”;Xn1KX¦ÉP¥6¥;@(åÇI!rØ—ßô§GþM¢<×'€eƒ®# MôíëÁËçÃôCR*E¤ZÁ«)ç¢ë(ÛBÔ|)"r8¢Onʬ.•¼aR|q¢ŸŽ¯I ˆ¯”g&û†ºTò)àîZñ‹µ°ù)ELWph"t˜A —\Æ‚% 0ã1ÿå­Tü˜¦\†ÌÀ ëþ5{6mAÊ™ÁŒÖ1«½ ‰Ö?ïT›ˆáOuÐôš#~œT¢©oðלW*x…¼ÿWò=âʲÀ4‘³!À.—P• T+ຨJ¯æhÀ±Q–…W,øDò<$ö—á†ÂhG2L8‚¤%õAüU€ïîRÉ#f´›$|÷  Û§°Zc!nIDsÑ4ر!ÅðЀ²~&s:;™sþE̾à<ôh U³ ‰mCµB4DŽY_‰ACÄ d,X0šæRèK¾´†Pñzßh˜ÄÂ4&L¤¡áÅù­u-†Xd3¨b&&PV¥”/]ìç›m%ñ£wE|=–@E ƒR˜Ó82ŽëÓ‘–ÔùZ ø….•üÁÔÝt©äž´¤þ“Æ¿IKê»TòÔõGÁòå«Yez-sê†_³oG7ÿõåO…ilo§XÈSœ˜ cÑ|Ëbh×^”c£Â1:guÂâ#ÂÜŽNŒ‘QêêêÙ¸CÃÊ 1Rð°Ï× D÷'_¢@”F4`Cc£Cƒ€‡D¢H¬t ÏShå"*AÙ@ÍÜ‹¦ùNAÏEDC麯zhâ+é±:Ð5°ª`WP‘šRÄêÓÉÑŽ‚ã• ðÃþ?4ätà³À0øàTvÔÖÚ±-ÁþiW]AóœÙˆ(Æ'òìܶ‹Áþr‹žýƒèÍsgƒ¦oˆ¡ô mË/C4<¿a¥`h|œ×¿öf>ôö?à-·Þ³ƒJÉIDATN˼E4ª4Ç DÓ«ŠVÌ!Žï÷p<¢‘ZÇÚôslÅ E@7wΡqÎBš:𠤡³Ý*aÑ4†Æ&Æ{zÞ± ªeÐ4ßÂ…×ñMÂ5S­ØR-£tÕЂÄâH$Â3v•Ñ~ßÜëyD,ŸÕ1eúÝ™ŽW4AjøàüÝJ§,ˆ1¹hÞ®!œ³Œ¨î€z0H5›G‰Â‹ÄMðåøI S§1 eÎ|4<¥1X\#B $ 0cÞ 2ùÛ‡FqÇ÷a*‹ž‘a‚ºpÁ¢šC{]”Uç­dÁò…¼á†›IÌ[ŽU.1Ø×£`¤¿ŸÜþTmʤ,ËÝM?­¨ª”ýÀð«ˆUMG…Â:±¶lIo ?8⛓]—×_{í‹È½Ò "·‰È­"’8Ý}¿â R‹>°Ö›Ò’š’Í)ç.^½:A™îžu­"a*@ù&ØpÔ7Çj¢kʦ½½ë¯»’w¼û÷¹úU¯af]S\ <Á U#Fo)À–-)@H¯[C%è«QÊ*Ó9w!3Ñ‹ ×\}K–žƒiX0g"‚cçºg¨Œg ¶"‘ZÂ…ƒhÑZ,çoG(Õ ºçÐ>o&³ÏYB[c=cýݾõMÓñ‚aÄ4ù“ßþí˦b<'÷¿Œ‰È#"òq9OD¦ÜGvÆl–Ôÿ7Ot©ä”üS¯¿ã3Þ–ôF©T,-^Èþ=»Èd*ˆi ®íbÂk_w5çwaÓ !b{Ï~"¡(ý{7ÐÒÔD¹T¤)‘`GO/‘`€þ‰\Û—ŽZ1KËŒµã¾¿â?’"Â_Zñ†Ã?~üR)5>ÙýžI.Ô7—¦%õ¦.•üádw°zùÊÏíÉ~ª°o7;v좵³M†ÈÛ`h6‰h- ±®Žˆxì¢ÛµÙ¶e=û3eÎi SÊ $±w` W!"45402\G 4Ì€òˆ&š¸âòkØÒÝÍžýý8™D4¢ Í4uÌD‰FHó(v¶268Ji`ÐWίZAteUÁ4ÑB‡–ò*ÃDDX~Á eòôlÚH¡âø ±D|?ˆhüþïÿþ·&{ § J©ŠˆÜŒêt`ßÁ|çõ;ODžÁ'Ë/ðw·=å0¨3F‚¤%õOÀ¨m ߥ’“¾1åUŸ¸SíÞ¸ž¢«£ãÑØÒ Ž…›Ï`Ö¶7ÐcuÌ]°€ºH˜íý#8µpôÕóÚÐí˜QΙÇ?ÁÐà+—/¡­µƒ+¯¸žTêQòã´Ï^šA8âßý6n¹„U.nA ¤±©•Üè…ì8s—tQ)ÉåÆéÙ¶ƒR¡ŒówAS®‡$ê1ëc‚aÌI~4KçâÌ™;›ž!zwïóí µûÔ Ybm-ôüò¾)Ÿ¢L6D$€ñ}¤x/CjÇÈò€RꤒžIàÓÀÛÀ2{\µúüŸ ÙÆMlMQr…±‘Qêc2¶NGK+ÊötïÚÍ‚®Õ ?"`q{ ¡Ðl,¥±·{ƒ}(ÇfÛž^n»å £{p¬2ÅBŽºúfú÷¦ioH0&½´G ´/šEflJ¥ŒSÈнk•Ì8Ë/} º[ŸzÎׇ‚!0LÚ—,âö·ý®«x:õ$™ ÍÍlxö)òù z4‚æ)\ÛöxiïýÝwÿû1†â ¥”%"·?nzÁéç‹ øaJo”ˆ¬çÐtìI¥Ôq9GÏ( ³§ü50,˜Š€Ék?õ—^Eg¬‡ìà•Úw¤!¤Ñ±ð"¡0–]%bêbuä&FÏhŒ†¹hÑ 2%‹g6í 4êï!¨oâÎ’ÁÑyèÇèÊ&ÐèèœÇ®}{è–¡<{·íƲ=š[âD"̺&œìƒƒD£A.¼ð|qF2Y¶mLSÈhš;—Ûo7áH OyüÇ×þŽüø3—®bßæJà–˵HßM3ÚÕîŸüèŒÐ=Ž1ñƒZo>Î*‡K—<ðKjF)uÔ¼\/"ˆÈ[bÔÛ*"([PNM ‡ûí*$P++W pØïÃʸâÿ˜+àÕ®5ýÆ8¬¬”k瞀'3¼úàßWÞô3i–ü·ÿ0t×—Áÿzð7@ÒkS êeÀ¿FÖ¿.(ÿÜ•7®Xl¶¿2Z¨)”)P±<tLq‰%h…‘!Ú;gkn#ŸËP.WPšŽ“»Š Aa®}íë)[6;ÒO]ö7ÈÁ@‰P ²m ÏðÀ(¢éˆñ°I°¾‰þAtM£}Ö,Âá¦&„â ˜f˜J)ÃÐÐ0ÑHˆå]á¹.ëž}Œž}=x¶í{ôuÃwˆB)…îyÌíèúÊæÔ¾m‡ÆB«E­¬´ÃÆIÉ¡ó‡—üF-µü©Û=ªFŒë ¢¾‹âID|GÀÁEÊà…Çaç2M½¨ì·U«wàüáåmx‡;P>ð[â—ÙW|,ª³†%ÿì¿™OüÇ¡z‡µáG›‡—åùmÜðÞ ¿çé!¡šÁÊ)»ŒªØ… Ø,Û¥lk¸ŽåK Ñ1M = £\3h"šPΗñ”¢cV;õñ(aŠí`W«Ãäó!“)Ö²—¼`ê+‡ÊJð-X†‰®iÄ›Æó¸¥‚¿ˆ*£ufF4ÎÐÞÝxèxÕ Ñ ÎP:²ÚoOS~v/M¦ÃÊ–vØ9Gù×V>Z=ôÚoK!úóË~‹®0RQ`ÔÎ *‡~‹©R­l*&µz÷^Å{ñ÷1<Þ)ãáS­MÀÏ€ûAQ/9ãt¨­‹ÿþ›tQ—J>;Ù}<¼eWÇOŸ|´ß3£„Ü…¡]¸®Ëh¶ÈhÆ3Y¼Ì(¥ªÅXÎFòy^øb+9ônê´´5ÑÔÞF«ùâ°¶1/L “ÁíÛÉöùÁ‹ÊÃ+Ô^|M]C¢q¼Pql©®¦C©èO!šçÍfÞÒå õÑß;„W)£ÙUþéË_i»ýÂU§eñ©†ˆ\НG„yiršJù ý~ Üü\)Õw¬~ÎXE­K%ÂPÁO{9é¸rÙ‹Îùdfx?ÙBžæ¦f‡mš¬œ‘àÜù̘¿€hcM"­è¾W[×ý˜©ÿ3@Ss›Ì ¿kÌ °Ë©cBù!éMZ™YZŽ Îé ÚÑ‚W)ûäÐ4´PØ> Á¶Ð 9°ª(Ññ2cþ(è-‹ç³`ÙJ×!?<ˆ].#• ðþ÷î,"Ç%¼49÷ìÀ?^ 4(¥nUJ}ãxÈg°HKj°?Ä-]*yïTôó•û~ù\j˦dSS ÍÕ^ÌÊ({Ëaš.!q° ª ŒäÈâÇýÄ º ® xžF AÜ*J9mB¢ ˜¦IS<‚WÎ!ÕA°}.óê|UP6:&.<±¾›â°ï]÷ÕAžOÇñ=é€DãZ[9ï’Ë(T*d‡úàê«_»ë;ûÈ¢©“Ó ¹xˆ½àÔ|]âçÀ¥Ô¤¥®=ÒŽŸp.|°K%ÿyªúúçûŶékfؽîÑsV¥³AŠù¡HËrðœ*âZLX:Ã{¶Ú‰ ¦Y,n²/ý;÷PÊPåhPÈ£,PH(äO±ƒªVQÕ 44jo£.!Ÿó•ü«^{Õîï~ìà §h8N+Dä|ÉQ‡Ÿ¯` ‡¤ÄÎ)ë÷L'@ZRwà{ÙG€…]*™›ª¾¾óÔúOo\ÿÄ*ĪƒhžƒcÆAsËhžCÖ6Ø—W¬j<$]žô Z`0ïÏeð\åytÌœÉÀXÝ °¨QgÂÖèéa¼w;“­yîý6Ä0ˆ¿S®RªTöןÐØå)âñ ïyç;ÿùÓo{ó”.U>]‘$ðMà üÈÞ‡”RÇÚ{frú>KÅ—"Àç»Tòã§ØÞãø»ð¾³K%_dd ½£kÍ3lêLM4œj‘@¸+7€YyQ›[óò¥ ªâÝó®IÖ3É ë2of‘p„æx€BÕC!W´Ø´£›‘ý½x…"ʪ"±¢I-)œøËu#Q”èŠÎmê£ô'­ïº,9z*cðJ‚ˆÌRJõ¼,}Ÿ HKê=øÉ´+Àâ.•<á­åàúíŸxõ6 =ˆ¿ýÉ#û{v7·ÇBÔGC¸®ƒ¦éT*EdlrØTÊRÛ²åìEWc"AÄXÜ¢µ¹á ¦é*ÏÌÒØ›uعinÅöþñzLC ÊÄt-.yÕ%Õ{îøä$åœ]Ñ𳯬þ«K%ßqŒ*/¬oâì@½/v¬íþoëÞË|æ‰G½JAâÑ0®çQa—³xÅQÌÊØÁk³n€mÃ%vôgqŠ9Ð4ÌX‹jƘ@„Ö:?l]ŪG±T¢Ç ãÔ"1ê¢A&†q½*ÕÌ[šÕ{Þþž ?øºW½âv‰=ÓqÖ -©7à[2p~—J®=Îz1à‡À5µºîRÉJ×ÿßOnøòsžøÐ`®J" ˜ÓÚLvb”ѱl:†ÎD®ÄŽÁ,H”:áNª¥†2B4$ü…PéQ¥®RxJ!¢!íõ ‚‘8ý=¸•¢zË7~öÃ7\wljÜë4ŽgAÒ’ú%p5ðp—JÓöŸ–T+¾âw>¾uä]*y×Éöÿ½gÒïݰ5ýõ‰‰­¡¡‘|6Æî~*–‹Rš¦Ñ¬—‰+ß ¦£fKL<-ˆ'¥bS9„CA%pMߪ©á‘0<Úê½%‹Ï}ý;_µúW'{ŸÓ8>œY¬Åw"ÝØ¥’?{‰kà‡36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀÂX"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?‡ÏŒ^@(ÁÄÉê=xâ¯jÑ.X«ž½xäVÍåÊZÊ«ö@ñã.ã/8cš®Úµ¬lD–Ì~R¡[#CïYÆ<½K“RÖÅ.Ë y­ŒrqÞšÉk·*äN}·Öº<© IV¡ÆàFqY÷:œ6í0kd>\rsŒ’;uüj®Iž«k–S!ÆîÛжÙu.qµ½ûÖ’j¶¤m[Ëò¨SÉÇ¿ùúñZ(±:+ª.d|´î9õŽÌ1&R@‚¶?­(KA¿÷¬»‘ôÿëÕ¡ª£»l²ùS©#`°<ãøGùï!Õ­]ä„cîªsÓ=Ÿòx¢àQòmvƒçžOŸ§Ò‘–Ô#v'±ÅiÚêwWFÞ8X8]Ù*1¨55ôÑYÛù¦0çUrOsÐzi\,c˜í{LÇðú{}hXívÓž¸*õ–©otñÅöb$rz(ÛßœŸaVìæ‚ìLcŒb) g+ÔŒëNàc"ۄþIFx9úzS™-rvÊØç{Ö…ÝêZÜùmiº0¡Œƒuýx™ô¦&­bé ùL©66³*Ž9ç¯N ˜K@y¬})-‹e`8çuuk·3dÚo1ÿÖÿkë6\yNv>Ä?óÞ‹H$/ï?ÅþqN m·&Fϧù±k,Q³Ç±S¹GQQÜ]Cop±¼K´ ã#=ñýÑÜÑp±˜«êÀ€ÝóœcŠv-v}ãœ{úX‡V¶–xP[%û§õlñ­)BG¸NÕ'ÿëR¸XÂ"0áŽÝ¼g×ãC¶§Ÿ—ëœs[ÈŠÈ¥¢Ub2WàúRùiýÅü¨¸XÁÈÆ$Ýœž}±ÅH©lfBW>õµå§÷ò£ËOî/åEÂÆ![}ÊCq¸dsÒ€¶ä]=@í[~Zq*<´þâþT\,bí·'ï•új„ãqÇJè<´þâþTlOî/åEÂÇ?Etû‹ùQ±?¸¿•;…Œ ZÞØŸÜ_ʉýÅü¨¸XÁ¥­Ý‰ýÕü¨ØŸÝ_Ê‹…Œ*ZÝØŸÝ_ʉýÕü¨¸XÂ¥­Í‰ýÕü¨ØŸÝ_Ê‹…Œ:ZÛØ¿Ý_Ê‹ýÑùQp±‹Eml_îÊ‹ýÑùQp±Elì_îÊ‹ýÑùQp±Ell_îÊ‹ýÑùQp±‘Ekì_îÊ«ýÑùQp±“KZ»Wû£ò£jÿt~T\,eRÖ¦Õþèü¨Ú¿Ý• tµ§µº?*6¯÷GåEÂÆe-im_îÊ«ýÑùQp±Ehí_îÊ«è?*.3è­ «è?*6¯ ü¨¸X¡E_Ú=G ¢áb{hôm‚‹…ŠTµshô`z .)ÒÕ¼AKè(¸X§KVð=‚‹…Š”åÀq»Ï9«8‚ŒAEÂÆlš¤2;Dªc "bC·7 ã==@ªVWWoríur…TÙUFîGãÉæ·ð=‚•ÀÅ–ögº‘D± (ˆ ¾òç>ÝqøæŠÚÀôQp±‘ÂdF“ip~BÀd}8©6Ÿï7éþZâ ]ÿv˵ÌXd¯Ò¤òË…DξQíÇÏŽÇ=ªm´Ñ1rm¦‰ 2Î@õ8ÿ jÃÈÒ(Û«2S."vmñ‘ÁúÓÖ2!Ù¼ƒê;}*ÊÙcRÏ!wãü)±É¹ÊIG¥E}Nˆ¡KsÛ¯n½{Ña£~ñà ô ýMiËNkêG4¹ímÆBÅcÚ…;T ŸÊ¥8Q–r©Å@ñÈTÄpNw÷;Ê4l ©Ï# Öecˆ˜œ¸ëùR–PØ2ð¦F·æIg•X0@óšY7ìhÕ Ýœ€9Ç^ý¨Z‰6< Q…$l…g£ŸÒ‚G…?0t¯æºL–ÎIã¥fäÔ’H´´"kxžA#"´‹ÑŠ‚GãŠy@H$’AÈàqúVa±Ô ¥MØ1;b26ò>Q׎8éR m@"v‡ÞížO;ŒsÛõ¡%ò€ã$œŒÇéHcBá‰ùÔpH¥gØØß[„œ~¥ ËjXî}åŽbIÀ?CŠ©6•Б&3ÑÛôÿ 6Ÿï7éþËÓîòÐDJ2äç¥PkÞ#Žõ„>[)çæ$ƒŽÝ‰õè(6ÕÚ°4im?ÞoÓü(ڼߧøVxµÔw3}³Ä…íLãÓŒþ5nÒ9¢€-ľl™9j¡í?ÞoÓü(ڼߧøRÑ@ÄڼߧøQ´ÿy¿O𥢀iþó~ŸáFÓýæý?–ŠM§ûÍú…1ˇŠ8Õäyj€Tv'¿°¨®-¥šx¤K™"Tê«ü\ƒÏåÄÕ˜Áþгl,ŒIôZb±Þ9Â[³iRŸö{ÿùô“þþ%\‡Íóa2.ЃîŸZ‚K;“p]/HŒ±mÈêû¿ñ?CM$$ÙÙïÿçÒOûø”}žÿþ}$ÿ¿‰Oò/ÞÉ#šu.GÍóçiÚG\ òAü1ïJö·Ì½ ¥02åNp9àzä÷ì)YÙïÿçÒOûø”}žÿþ}$ÿ¿‰RO§ÌêþV£$÷ä+p3À#=8õÆ*y£¼y3âF»1Ç<ç®1éúÑdO³ßÿϤŸ÷ñ(û=ÿüúIÿ¬GmwªB—«”Á œžúnçéP%ž ª —Ë$˜ÉbØá‡}ìç¶:,€O³ßÿϤŸ÷ñ(û=ÿüúIÿœÖº£À±¾¦»ÈÃ1שà~]?¥+Ûê-3È·ª£nÔ]Ü)ÈÉÏÿ>’ßÄ©|›ôµhÖåŽÀ¤ÉÈçÆ{>í.áEÞ)#ïüا±Çñ~`öÅ@Eö{ÿùô“þþ%g¿ÿŸI?ïâRÉe~JËöðò"68,X=>PçGÙu#/%øÞ¸>Ym;HûÀ|ØÏLsE ö{ÿùô“þþ%g¿ÿŸI?ïâRËi©ÈEüC6{‚3íÜœûtæ…µÔ•ÝÅú–1ªîÈ䌜ãï~¾ÔYŸg¿ÿŸI?ïâQö{ÿùô“þþ%!·ÕæŒ|‚IÛ¸Áè¤ã·¨ëš›ì—‹äGøXQ¾pnx@?^¹à²/³ßÿϤŸ÷ñ(û=ÿüúIÿœöú£"(¿XYûÜäq·Žß¯\ñ$ö÷’¬cíH¥|ÊÄ|àqŽrO¯oz,€‡ì÷ÿóé'ýüJ>Ïÿ>’ßħ¥®¢³©Áp¸Àãžž™õçŸja³ÔŒ¥Æ¢ˆL{I^çœzgü}¨²û=ÿüúIÿ³ßÿϤŸ÷ñ)òÛêLÓ…¿@¾L6 öOQ‘íךžxï\þîî5éÎ~½±ô?†=貯ÙïÿçÒOûø”}žÿþ}$ÿ¿‰KöML0#P À“ÇLsÛüôtöwÓ£¡¿UVR»Cg©ñýÜ׿ û=ÿüúIÿ³ßÿϤŸ÷ñ)’Zjrcû`6lbøä6s€; wëõ³-­ëÁ±µ"²ªº”ÓqÜ9õüè²³ßÿϤŸ÷ñ(û=ÿüúIÿ¤[]@2 Ô?v¹ïɇNÞ½óíL6Ú¡F ~&£ä§#½2;þ´YŸg¿ÿŸI?ïâQö{ÿùô“þþ% g©~üÿh¨i“‘ÐqŽ3Ž©Ík¨…¿@À 3ãíÜÿ‘E û=ÿüúIÿšðÞ¢îkY1ÿ]¦û>¢eVmAÜxÀíÆn½ùöëDIqig9½¸k‡vÈÙ— t}9Çÿ\°Ê‹$žb¤±¼{óƒ½O8Ïj*µ¬>\±ªÙ˜ÎZáå °éÚŠ@i, Ò,j«“ܓ隧}wm`îP_ËÎp3ŒòItïW%, ¤êGqôÇ¥C%§$ðM*¹ËˆàñŽx§¥…Ô¢u5c‰Ëe*v6æËù4‡ZÓÈ}ضÐNÜ.îOAÅZ:U©`ÇOät>I㜎޴ŸÙ6„ý÷†ÓûƒÈÁéÓþt†0ê6b®¬m.9(:‘íÇZK}OO¸tD®#9Ýßüäja§[ƒÅ“}Ò£÷-À=@ã½:=:¦ó¢±+'÷„'?ËÜþtJ-kK’”ʱäd«‚ ñž}8?jZÒŒ²ÆÓ"˜©ÝÐáC~xúƒV?±ìñìÑŽåî1ééJºUš† §‘»;± ù³ÁÏô  ÑëZ[Ä]¥ãvUÁÜ1×Ä`FifÖ´˜c,ל)`£9 uÅK.‰c,MX0%b`yëÎ;àS†“f7cO#p â䣧C@ki‚%’IV0Å— œ‚¿x}E?ûKNòÌžrl ¶œØàþ#év²c~Ÿ»i$fÔ’OoR:•jAOà¶â<“ÉÆ3ÓÓŠŠ KOž:9”m<°:žGJ,µ+ç ùðIVàŒ:gÜT‹¥Y®6éä`1 à»b—û*Ô8q§a‡$çùP®0¯ª€M§é´ŸéRyIè3PψZªC"$OÀØFR?¨©|åþìŸ÷Á¢Ìò“Ðþf)=æi<åþìŸ÷Á£Î_îÉÿ|,À_)=æhò“Ðþf“Î_îÉÿ|<åþìŸ÷Á¢Ìò“Ðþf)=æi<åþìŸ÷Á£Î_îÉÿ|,À_)=æhò“Ðþf“Î_îÉÿ|<åþìŸ÷Á¢Ìò“Ðþf)=æi<åþìŸ÷Á£Î_îÉÿ|,À_)=æhò“Ðþf“Î_îÉÿ|<åþìŸ÷Á¢Ìò“Ðþf)=æi<åþìŸ÷Á£Î_îÉÿ|,À_)=æhò“Ðþf“Î_îÉÿ|<åþìŸ÷Á¢Ìò“Ðþf)=æi<åþìŸ÷Á¤3¢Œ•p3ºh³ÞRzÌÑå'¡üÍ'œ¿Ý“þø4‚ue+yi¢ÌyIè3G”ž‡ó4Öe•ÀÿtÒùËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÑå'¡üÍ'œ¿Ý“þø4yËýÙ?ïƒE˜ å'¡üÍRzÌÒyËýÙ?ïƒGœ¿Ý“þø4Y€¾RzÌÓ& /!RB)ldö§yËýÙ?ïƒC´Fñå`ÊAÚ‡8Ô¯çŸùá/ä?Æ<ÿÏ !þ4‚êÜœ ˆÍ·ï޾ŸZE»¶b¡fˆïÆÒ|ÙÏO^†€çŸùá/ä?Æ<ÿÏ !þ4Ƽ¶YÄ '½¶ŠvXcÒ^uL 5TS’vè®4®ÒîtAû«ùQ±º¿•TÓ®n$ðä78ón !†GÞož×w°mYl„ŒdXËDN0@Ëc}{• Ý\%8¾…‹ýÕü¨Ø¿Ý_ʪ¾£zï:k™ƒ±YŽI8 ½‡?ãZ‹ó %pHÉ”ÄUØ¿Ý_ʳÅÕªî´ó›Dl»:q“ß^JÝÀô`z çÚúé€1i§®K†|Ä6ç Ïâ8¥·Cfý1²à“ƒ˜P@û½É#ê oàz 0=g@|Ø#‘áòÙ”„r§Ò¤Ø¿Ý_Ê®àz còñÜP]‹ýÕü¨Ø¿Ý_ʦ»2%¤ÏnåTbŠ{œqMµidŒ™â°fP7g ÐuÆhšñMÄÖÍmöy=Á³´ã=+Ÿ“S¿XØ­Ì¥€$ Ç“^’Q^S¹AÀGÖ*/ù柮ªx˜Â*.71•')^ç—¶µ©F1$“.Kn Ô±ëZ“‘–¸PH.zz×vóÃ<‚8¢òÁB°³ÙÇ8ãN{Ô¶&IZQql©µ°¤)ÇéŸÄwÍ_Öãü¿—ù ؾçý£{ÿ?RÿßU½£ÜM-€y$fmädœ×SäÅÿ<Óþù*($})O+(™Ï)+)žcÿz³ç½ÔRB#· ¿>ÓÏaÆxïú×ZTcîƒøV_Ÿ¨4!þÈ‘¸ó “wîàƒ×$}pzVN²ìd°s_oúûÊ×3LŒÒFÑÄ{^•7˜ÿÞ«ö“\I DLJDzíoLž¿Ó½^Ú¾ƒò£Û.Âx9ÿ?õ÷œV­wsØXæuÀ8îk5PD¥üæsŸºXÆ{þUé‚5,ùPyî=…gÜÏqòGogçØAàs»’@nƒ§¯µCÞÆ‹ %¼ŽêúŸ™çãyääÎ:u¦¾±ªevº‚w1éŒöÝ^Mw’ kEt •c<ä qÉþ.ƒÐçšKù/á•þËg‘ˆÃe“» Æ^vý9õ\Ãú´¿›óÿ3·Ôµ2Í*°ÇñxÚi‡ÌÓmÞL32IêjÕŽémQç‰VCÀ!‚Fpyç¯5ËëÍ«7±c†îFÓÛû¼õù­:( f„~‡Ú¹Ýb÷Q¶×–(U™€sËnÉã¯J襞HûÝ>•Ìë·“â´÷´ŠQÚŽIÉéÒ¦sä‹‘­œÒjæÚJF³ìgq} ‘¸úTgSŒIµ"•ÔºªH¹[$ߨÒXÝoÐ"½e(¾PÆ€p8£U€”BfYX€Q“rÛyãŽæšØŠŠÒkÌ‹ûf6œ[ÊBŒ3ñ–Rqœûb¦¸¾0]¼&"Ávr&9Á G`3ëÏò|z´‡yò˜<¶ÑÛÔŠšÖò+¼ù2K•ÉŽáL’„zÔ.É‹{ŽÊªÛº’X3ÐmýEhÙËÕ¸™Š # Ç<zÔû[þz7éþmoùèß§øP°z·ýôhØ=[þú4moùèß§øQµ¿ç£~Ÿá@Áêß÷Ѧº—–ê?ˆÓ¶·üôoÓü)®§åýãuŸá@Ü:[Çæ¹` €NãÆH<ô¨ìnb½FhÖU ¼Ç¸Ï¯½>òqi–F®àÐ=úR[ÜÅteòdùNQ²¸äqÆG=è`ƒÍn[ þ#ïNØ=[þú4Эæ·ï ô÷ö§moùèß§øPK›"{xV\ÌÄnËm^ äŒÔ–¬ÓÛ$®…ùÚ$'ŽÞ°i—7QÛÜAÈÞdä„Q·°ÏËñ©mäóí¢™YÔHÀlddgš—`õoûèÓUöå»§moùèß§øSBíûÆíéþíƒÕ¿ï£Y—šÙ¦‘4“Ë?¾ ƒ‚pF;ãÜZÓÚßóÑ¿Oðª-¨Ä·2[‡wxŒa¶íã{m—úЖ35Ê˾3ŽB˜–Î;çúU­ƒÕ¿ï£PÁ!œ9ÌŠÊäíù±Üb¦ÚßóÑ¿Oð ª ÏËuþñôž×Æ) î¨Ff}£²ãžr?×5 ªw?ﯷ ö¨Ú]·+/ó#8o—ÿÇ…UKìÛÚ¸ 6ÝÑ´¬sìFOʶ:ÁnÙ™ˆùdbs†'ÁéÆiF ¦émÊÌœ¦p¸çèw ¯&·r´f+¢UÙ ¤|¤äþC?ˆ÷  :mßÛ¡vhŒD1n㣡öê+6]ZÚÓP¸†éã8mÝ& Œoêk|+Äú…`\Kb/®ì;ùX¬y#®N•\ï¡…y8¤Ó±»öx¸(ûß+æÎ9ýi8Ù^áråQR0¢Š(¢Š(¢Š( sçÂ3óuÕÏj@ÚÌÒ-î'›ZUvPS'äÀ8ÏZèfÏŸ1Ÿ›¯Ò°u4´}Ze’òx'6꬀VV$2ÍÁ¨¨¯aÒç»44ÿ/û ‘ùP„‰b£=<Ó’{dÞ0«•B3ÛŸQMÒšÑ-šM¹E*d<•ÏzpƒO’=Å"a†ù¤bIõäóßõªŽÈŠŸõdi.“  ojÛ†ôÇ;ˆÏ>ù©ÖöÑ$*&…9UÝ·’XœõÊšdÑY,rM'–¨v&C€9 ûu=:䊕¬í¦9ò£b„ †<sƒsœS T¾ŠG‰#™Ë÷v©ô'žxèjÖ$õ_ûçÿ¯UÒÎ(åY$V^˜cïÛñ?™«9“Ñ:LIê¿÷Ïÿ^ŒIê¿÷Ïÿ^—2z/çFdô_΀z¯ýóÿצ¸—æ^£øúôüÉè¿5÷ü¼/QÞ€"¹ù'í3FC®FsÇZŽÎhgóÜÇÄŒ Œ°8Ï^zu©gPÑ0›h©%ˆÆ9Î{RAq³y ç ´÷É?Ôþt æ·Ì½ðý}験ÕïŸþ½4oó[…è;ýiù“Ñ:¯s*Eå¬Äíµv[š[]†Ö&·‘2†@hóÓµ6ícØ$ŸT‚â9Ï:óŒ{âŸl‹º$!|¥Q³ç-ÇnMK‰=WþùÿëÓT>öù—·ðÿõéù“Ñ:bïÞü/nôìIê¿÷Ïÿ^¨ÞÜZ£ùwj¬r¿z,ƒ×ž=jþdô_Ψ\‹Tg3á|á–˶òè?@Z˜É™`EŒ¬„8òöå°}úŽjÆ$õ_ûçÿ¯Lˆ~ìÂ…b[¸Îy©3'¢þtŹþeëýßaïYÒ_Ø12ÈQÚ=é¸ÂI‘úδW~çázúû ¤‰bIÚ±åY³ÉààgðÆ=ºcµ#ÜÙC3·–¢RYœž ã¹È¥i¬ç‚ $ò]fcå9nz{õ¥Í’G1a9]ÌNH'“žù=ûŸZpžDyÙåä˜Ë“œç“Ï9Í>Îî;ÈÙíåVUm§åèzúûÖMÅŽ•q{p÷¶ÇÍó1¸,‡pÀçŽ=¿ Ô³ci´®v“¸œc ç¶§5“6‰c©j2I$«2¾VAè0qŒâª6êcY6’ŠOÔбѬ¬dó­"XÝ—ËÔÖï=WþùÿëÓ#B‘ª.0 “éOËú/çRi¨«%`Äž«ÿ|ÿõèÄž«ÿ|ÿõés'¢þtfOEüè(LIê¿÷Ïÿ^ŒIê¿÷Ïÿ^—2z/çFdô_΀z¯ýóÿ×£z¯ýóÿץ̞‹ùÑ™=ó Äž«ÿ|ÿõèÄž«ÿ|ÿõés'¢þtfOEüè1'ªÿß?ýz1'ªÿß?ýz\Éè¿“Ñ:LIê¿÷Ïÿ^ŒIê¿÷Ïÿ^—2z/çFdô_΀z¯ýóÿ×£z¯ýóÿץ̞‹ùÑ™=ó Äž«ÿ|ÿõèÄž«ÿ|ÿõés'¢þtfOEüè1'ªÿß?ýz1'ªÿß?ýz\Éè¿“Ñ:LIê¿÷Ïÿ^ŒIê¿÷Ïÿ^—2z/çFdô_΀z¯ýóÿ×£z¯ýóÿץ̞‹ùÑ™=ó Äž«ÿ|ÿõèÄž«ÿ|ÿõés'¢þtfOEüè1'ªÿß?ýz1'ªÿß?ýz\Éè¿“Ñ:LIê¿÷Ïÿ^¡Lý¹·O–:zŸ2z/çP&~ÜÛ±Ÿ,túÐM÷ÖŠï­†6øÇçGæ,„yo»n1³+}{tªjºqgÆöÉ—/vIQ¸Ž9ùqëœ÷«×¾oÚ ò­â”’Î9O™FGàOåU–iHQýšHpA/ÍÄñì:õ­VÄ1.ÚÌ[Æì$—€6w.ÓŒŸ\gšuÔ– rMÆá0]ä`œì¿¡«vÿ½V3[ªÙ‘r?‡Ôg±©Ù̪sÇ#üúšW°ìbÓƒGîܸfR0@f^£äqî+bÞÞ;dÙÀã©ô )Ââ4cŸ­KJR¾ÀQE# (¢€ (¢€ (¢€+Ë‘<8ûßʹÍdhÃXiu;…Y i²2¤í*X†Èúž+£”âxx'ïtúW!â­1o5U”ßZÛþä.Éœ+u<⢫j7JçV EÔ´›Zt: .S@¶\Mn"UÞ~PËëŽÕ$–]i^IL{†K÷—éǷ㚎ÂÜCf\:´B2èA2(þÈ…KùO,hû¾Uí•ÛÁíÿÖ•QÙT·;·v:M&ÚGg+ b¥r¤p^ÞŸÏŽy«VÖ«lÓ4HÙ™÷¶HëUN˜¥Ø¬² ' (o^žã8°TÖ¶g™¤ç+¡@§oAŽlŸZdw7÷?Z77÷?Z7Ÿî5Ï÷€ ÍýÏÖÍýÏÖçûFóýÆ ssõ¦»7ËòwéÛÏ÷˜ï÷~Fê(³ÇçÆce dAƒùŠŠÖÑ-V…2œ¶XQyl—aŠØFÎ0i–¶f¸iCÈû£TÁÿdc?çÔÐ Íæ·ÉØwúÓ÷7÷?Z`Þ·ÊÝõ§ï?Üj‚éR[wK…Q1b0?:‘–Љ@ÐTWq}ªÝ¡;×$ŽÄ}}ªH”EFªøE 2j“ssõ¦«6öù=;Ó·Ÿî51_ço‘»P÷7÷?Z¯å8ã¿™Q#()ë° óïÈô§ý‚à9 y*ÂC| 6rdÝœõÎ23ïBKp-=¿Žq¸îÇouüªõ£¸µŒ]K˜/ÎTðM”b³¹K¿=îÙòFᵆ@ÝÛþŒtã8&µ<Áþ×ýòhó#þúþty‘ÿ}:<Áþ×ýòhóû_÷É£ÌûëùÑæGýõüèóû_÷ɦ»—¯Qü&æGýõüé¯"|¿:õè—͉£Gt-Ž@ ã<Ôv‘›u`ò4ŒäÛOPª¿Ó4ë½ÏjËá$8ÚÀ_|Óm ÉSFïAz úwÏኜ8ó[¯Aü'Þæö¿ï“M'šß:ôþ´ï2?ï¯ç@¯bûU£Â¤©b9*HàƒÓ4GˉQ™˜ª€X©çÞ™t|ËgXœo#ŒI·õøŸlH$‘€Ä§½?Ìíß&š®7¿^ßÂiÞdß_Κ²&öù×·zw˜?Úÿ¾MQ¼¶k—\(²çiÈ$còöÿW¼Èÿ¾¿W¾ß%³%´ª²‡~ÜPíWȶŽ&fbŠ;O5/˜?Úÿ¾Mdß_Î2?ï¯ç@ WŸ¯_îŸAY·:{Ou,¾v2•VŒ01Èè{ŸÇ·ZÒYsüë×רT—kˆ&]‹¸·ï1ž8ïý(µÅ¥Ä³É"\Ÿ˜©µ€\0#§Ðþ~œRÞÙ=̲2ÎÀ|²n ò Ç$àqYã]68Œ²Gr¨˜HÆi¤Ø&õÿkþù4o_ö¿ï“\¯ü'ú/÷åÿ¿F—þíûÒÿß³UìçØ\˹Ôï_ö¿ï“Fõÿkþù5ËÿÂ}£z_ûöiá<Ñÿ½/ýû4{9öeÜé÷¯û_÷É£zÿµÿ|šæŽ4&`CåžiOô•b¬eu3G³Ÿ`æ]Γzÿµÿ|š7¯û_÷É®oþm(I”ÈýÙæ”ø×K eÐÆhösì˹Ñï_ö¿ï“Fõÿkþù5Îidà?ïÙ¥>2ÓŠ·š8 Æx£Ùϰs.çE½Úÿ¾M×ý¯ûä×=ÿ –™ë'ýðiá1Ó=dÿ¾ Î]ƒ™w: ãÑ¿ï“P©ùˆÏú±Ô{Ö9ñvœ˜¡CQéÞy—tœ®Ül4rK°¹—s]¾ñúÑXíâM<1¥ÐÆh¥ìçØ|Ñît÷Nx¬ùÞai6ËevʨO+ïØ<3Ç=jó2 H㜞µRkyÚÝÓÏ(YÓ ä Ã<ú‘Å%Ðe9.’Ûôµ ª±Lܼãåö ùg,WOÌzqC…Ý…*q´ŸîöÆ1ïÚ¥XoMär<«å#7ÊüÀŽ3ÅFÖú*· ©¿wœddƒèGãZi°‹¶³4ð‡xš&É[¯¬QEd0¢Š(¢Š(¢Š(¢Š( ?×ÃÿþUÈjÓjKñÂ8dº†,ŠÏåóç qžk®”~þ@#æëô®#ÅÚŽ³m¯›m2VH…²¹T–9Õt©{Gk¥Öìj\®ö¹ÜL̰U,Ã.zœô¬´ŸV€B'€9fDrƒpûÇ'Œ`mÇ'¦:RèSËuáË;©öÉ;ĬÌW©úü©VöqäÆÖ9s‡uˆª¯Íއ}8«ž\Ü_Ê€E3Ëû‹ùQåÇýÅü¨ôÇþ÷…\Ü_Êšñ§Ëò/QÚ€tfXÛ¨i8À?^{ŽÙïPéÍx`ÅêpO$à‘×>•%Òìµ™âZEF(6ç'qMµ= Il"!±´©Ïêé‘ï@úÖÿtZ}D#O5¾Eè;}iÞ\Ü_Ê€"¼3-³˜ÚN6…ÆzûñS&íƒwÞÇâù$ûÙ9êz—¯oz/N¥æIöe<¡´®Òwäç¯lcñǽ6ök˜Œ­kgçªÆH_/vOryî=h¾žâd[{@Ác ®P°,Iùp9íŸÿ]\´2›hÍÀÄ»pÝ9>¼zõÅ2Ïýeß þ¸õÿuzRÚf[d’hUd+ó ¸çÛ<ãëL´ Ò])¶L@Èéò©Çëښݨ¦yqÿq*<¸ÿ¸¿•!¢™åÇýÅü¨òãþâþTú)ž\Ü_Ê.?î/å@¢™åÇýÅü¨òãþâþTú)ž\Ü_Ê.?î/å@¢™åÇýÅü¨òãþâþTú)ž\Ü_Ê.?î/å@ÿ-î®tp–1ïœHŒ«:÷®9¬õðÌñi’,Žè훈ÈX7ŸP:æ½ýUQv¨öÍÉý¢^U†Fl—¡]£?. àþ´ºvØ«¾[2ZjóH¯7‡ãp±²*´è@Î9úõüøÅJbÖZw™´ŒŽå÷™S*K8?ð"?Æ·Gö¯Ú&/+ ŽJäs׃ëWn<ϳKåI°íúãŠ×Û¾ÈÏÙ£•[KóÙ<; 8òÆ|Èù ¤ŸSÇ· Ʃͱˢ¨exÆÂ;ŒsÏÖ·Ôå0´&E@~mê‘‘ž ëÁü«6§RóWí"0ƒ†ÇSÁþ¸üÍ?o.ÁìÑÏ]Yj·g$Qá« #ÊòOƒŸþ½NÐjO)‘ü?nÌH$³¡ÏÌO?ž?ƺö™lÜÛäHp’#'€{g±ª0¦§…˜±%È,‡øA-œŽÛzÒöï°{4f›}DÇ`ö ª3$g OçžÕ"Czó£Ühq6îmѳ3ëë°yÛV‚%V@¨2ÀÄàgŒõÎj퉻0±½$ÝÀQÆ?3G·}ƒÙ£8/ãedСVVVÜ3‘ééIµú»<š$J dãn2}É9?jêk¨³¡#ÚCs’y8ǰïÜÒ§ö‘·›Îòü€ Aƒœœ÷ôÆ:Qíß`öhÉ[Kß1]´XŽ©Pè$ç?^Ôémoe—Ì:4jß?Ý‘?‹?†Fx®†æ2€$Ú7Ðõ’«Â&ó þ²2 s×ê9°÷£Û˰{4E²ýߣÄÌqóBxÏøÒ.ñÎéüIØæ®;êÂI8Яð±Ôûúcñö§;ê`…UB|µ$€ÝÎzž½8éïG·}ƒÙ¢œñ_L­* Ì»wBzç?\qEN’ëíû´P¹åœvÉtçëE/m.Âöhê.­#¸xårÙ‹‘´ÿ´­ÿ²ŠÎ’ÖÖ(<ÉVX¶./]ãxŽzVÓ}Ãߊ¢Ò¬p»¼H:g®>÷_í(ɦ‘M´ð[}žÍ›pŽ1ÉÍ;ûJØ’Ù ·hRÇ9 Ï¨ªmuK#Áb ¨Òbz¹ì ú1™§òccþ‡¿>å8éÏ¿µSо¨W5(ª—’ÜNQ¢ÙÀÁ‰9' dr9ëWë6šÜ ¢Š(¢Š(¢Š(¢Š( Fg„sü];Q%¤¶é"W=2ÜÒÍ©W(W½ªïx‚˜‡'rI@8äf¬yO[—ü…/‘7üü¿ýò)Û"ùÈIˆBÁŽzcþõh"-ÏûF£ò&ÿŸ—ÿ¾EDßóòÿ÷È  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷Ȥ»«ßFƒÕ¿ï£QyÏËÿß""oùùûäP»«ßFƒž»¿ï£QyÏËÿß""oùùûäP»«ßFƒÕ¿ï£QyÏËÿß""oùùûäPÂ5¹nƒø½;`õoûèÔ_g—9ûKçè(ò&ÿŸ—ÿ¾EG}0³´y¶3í cÌÛÔÔž5:ltWRøa‘’E3È›þ~_þùyÏËÿß"€%Ø=[þú4ÕA½¹nßÄižDßóòÿ÷È£ìò‚OÚ_Ÿa@ì­ÿ}¥{röÌ6Eæ.ÇsûÒ¤Lu uïíV<‰¿çåÿï‘G‘7üü¿ýò(µqqk¸eÞ ãy8ü{Ô»«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È ª ÏËuþñôšúš#8d\«H ,Ù-µCqü½_òŒâåùöyÏËÿß"€(¾¤‰La•ÌŒAòÙ˜(ŒçÐ㎙§. ¯mo/”ÿ¿b¸Œõ#·jç‘7üü¿ýò(ò&ÿŸ—ÿ¾EVÓnÅü.Æ# F›²1ÁÈè}ºŠ·j##,sóy¦ùÏËÿß"o(érÿ  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È  vVÿ¾«ßF¢ò&ÿŸ—ÿ¾EDßóòÿ÷È –4icWPêsÃr:{Ò¬A!£·v*´*:L›ä/œõ8ª_ñó'ÖšWÿ—aýËoÉhòì?¹mù-eÑO” O.Ãû–ß’ÑåØrÛòZË¢Ÿ(ž]‡÷-¿%£Ë°þå·äµ—E jyvܶü–.Ãû–ß’Ö]b“­GR7yˆù÷2Εç»g^ݳš\ uÞ]‡÷-¿%£Ë°þå·äµÊo×åDFþŽžasýÎÎ)«&¼æŠ&<£øP’9õ2ôrÖùvܶü–.Ãû–ß’×/hú¹¸íQF±†Æ2ÓÏ^¹ ?U'‡^a:¤¿)YDeYCØ~§rý6{ÑÊgåØrÛòZ<»î[~K\œ­î(±#($ Œõ<äqÓ«ý®l¯#hÂÌ-ÿÑØ2òûzrO ÷'4rÕùvܶü–ŠäîWX‚OôE €[üÙÀ'ýÚ(å³cÆ3†#Žj© …bÎH\Œ•ÝÏæ3NºµIç†wf~AÿÙk5íâ·§’î@¨ªŒJ0ÏÌ@žA-ÈýEIõÔL´«©„Pdˆ°$ŽáOól~¦Ôš1´Æì“…óŽ2}³ÏLã5 ÁO tÌfÜÆKp7gž2÷ ¥ºÍ¼^,H%åÁÎáè}N=0zw­,¿¤‡þÑ ¶)"' ‚Fã‚O¸ôü‰ô§ª^씹mÆe*pœ{c=y¨—K"a!ºÀ÷ã'žyëLvïV"²ò„ª&r®Š£“‘Œäž¦¥Étü€‡Ë¿]8"Ü#\’2íÀ^Ç|óüé² I¥f µK.# ŸËo^ùö©M.ß5Ô»HŒõû¹üñúÒG¦l]¦w cÀ#×ßôZô…`RYæ“rc Ûø¹Ï®{tǾ-Zyþ@û@fNq^?O¯ÔÔ!ŠŒ±rŠâ1š’¡»è1h¢ŠC (¢€:š2=ERÔ¾ìSYõJ7w#ÔQ‘ê+ Š9@ÝÈõdzŠÂ¢ŽP7r=E¢°¨£” ÜQFG¨¬ ˜ Ëp=ëê¼h¬ö;‰‚6«œ¬…‡N¹TíºŽP;œQFG¨®3íº‹^*}”¤k6Ö&6 ¦Ö ƒõ8Ïz_·]5„K·’IÄrLlêìz}sŽÔrÙdzŠ2=EqOw©A¿÷?ïYWäþŒtòyéÅM¦êÞÅ3¼>Zªå+NXŽøÚ¸£”¿#ÔQ‘ê+†‚÷RÚyѼK$1™˜ÄWc}ç'¦/_^õ§§M%ÆŸÓ(:p1Ÿ|vÏ\QÊM‘ê(Èõr™‘U[Ñ[#óÀªfæíUÃA–bþYE<œgßùÕ*wί#ÔQ‘ê+•{‹˜ã¼†rc” |Ø9þ•bÚI$Œ™£ØÁˆÇ=3ÇéC¦Ò¸\è²=E¢°¹Ï˜ª¼ñµ³‘ù ¬÷r#ò9óv)/®{ÒPo`¹ÔdzŠ2=ErðÜܼSÝØÚÕ²îàòsŽÙÀïÔš=“ nG¨£#ÔW&——A#ßdIJ±$Á¸Ç«óI)mð´x҇I ¹ÒdzŠ2=EaQQÊ3w#ÔQ‘ê+ Š9@ÝÈõdzŠÂ¢ŽP7r=E¢°¨£” ÜQFG¨¬*(åaÈ3ǃëüª¸U2KÎzŠŠÃýwùô5r —ùh¥-€«r ÀÆ8Õ˜vÛŸÇñ×ꙺœ‰eæ’ ïØÑƒ–¡?…n`z 0= 0…åÑÁ:f?1ÏBp>^z~d }½ÔÒ̈úy Ácž8'¦=±þ5©r^;Y^ "¡(¸ÎN8œºèt‰´×gf*X¨9ÆsƒÇSŸLP6¼¾HÊ=šF߆Q•\—·éSýªãȹ—ìD˜ä aH,8öúôÍZ†öæKˆb’ÁãW´™ÈO”Ûß_ZÒÀôƒÕßÚK`<³ AŒœs‚ßw§9ôÀõ륱º¿•\Àô`z §±q÷Wò£bÿu*´óc°þ´ìA@ö/÷Wò£bÿu*¹è(ÀôObÿu*6/÷Wò«˜‚ŒA@ö/÷Wò¢–úIbZ„‡xܸ$íäœ{ñǽiþáãœúS¾ßn$›i2[h#˜®G> ûãšÓÚ} O¡¢àeŨ[JS³*±ÆæPû¸'žû…:âåa¸1¥¼n†1_ÌêyãÐuéÎ)Æ=JFHUËòìØèAÈÇãíIMlÆ|°9Û0p}:ã¥åv\‚-Ð,MØ$rcÖ¢mJ‹W!\®áÈ` Áô÷§Í.¯LËo° p£=†8ÝÏ9çXäÕ Ìjö±¬{È‘³Î00G=ÎïÈqEÀ‰¯í–M†Ö]ÛˆæùŠñϨ†‹VëË·¥ò•°@äà œdžÂ¨R×6ÒeUI pr3Æqü¹†‹“÷LXû‚¤Ú} .:.^LÜy1ÿpT›O¡£iô4\ü˜ÿ¸+6MF¥t’زlOR2s€:qÏqZÛO¡¬¨›ZŠ„Ç#ìc# Îß” c<û‰.$Ô£ãÈ´ÞOY°s¹@÷ÿ b´Ò$dRÑb2W9Áôªͬ<[ŪÛˆÞ¸þ—#wöþ]kF1ˆyÊ䃴pyàÑpÉû‚&?î “iô4m>†‹†/î Œ›P쥣 ŸxÓŒÿ*²ô5Nm6¦idűÇaŒtÿ¾EH…¼È-¬¤>†°|E}=ìqÛ2¢´aˆÚ9>¿JܶÓâµrЇÀÇlƹÿÛ\K¨DÑA+ªÜ×F'RÒ2¬Úކck—Ê¥šdu;ü(íé¦=v/øUgÓ®äBi>_Ýš‚]áÉ"ÖáIâ#Àééé^“>‰ªRîÍíËïùìŸ÷Âÿ…ÛWÿóÕïÚÿ…QH¸Ã-¥À “þ¬÷ü*o°ÞϤÿ÷ìÓQ¥Õ!9O»:m>æYì!–B¥Ø£ûÄJ±æ7 üª®—˦@­ €l‚§#æ5oÊ—þy¿ýòk¨]œu'[™Ù¿Ä³¦Ì²NB²’½@íÔ0*½ «4¤ŒþðÿJÍÒ,£µ¹’Dˆ£JrÄŒdåþÌkJÊNÖ„Jã©ñ3ÕÃ6é¦É¼´þíZv“`õoûèÕ NðØ[‰ü—‘C@ +þŸ—>Õå¹ÀŽ U$žN+0j2ª®ë2åÙUJåsœŒ‘È>„ñ“Ú¤:¬&Y#Ž ‡1¹F!°2 ŽçÕ…5uXßý\2m&Y õô“ô C¨JÖl®ÌŠø' »<ôÉééßœ šÔòÓûµ—©‘¼‹os±9cžƒ8éœÿú©µ"g˜ {œÂ¾X mëü^ô§å§÷hòÓûµEe…$Àu cžiû«ßF€#O5¾^ÃúÓü´þí0 ó[–è?ˆûÓ¶Vÿ¾/–ŸÝ£ËOîÒl­ÿ}6Vÿ¾/–ŸÝ£ËOîÒl­ÿ}6Vÿ¾/–ŸÝ¢“`õoûèÑ@º¥ªÜ<{®žÝÂ:)^ûŠƒ‘ÐŽƒñϪ+i"ÜFòëò0’ëx@p ü§ËûÜr£ð$cšÒÔ$Ež-ð—]ÛˆÛ´N½zà{U(ZÅ­¥’;Y7[Ä$e GU€IôU¨¦®År‘Óoa„¡ñŽ !Ž(¥“¸œºNAþ#š“û!×ÍXµÇ‰Ý˜’ È,àŸâõqñ»4ºhHá–)vǹÉà¹rÃ%}jŽ¥•Õ¢°‰ü·møvmÛ²zóîhqI]Ü.T±ŒEqö¦Ö ð³ydsŒaÏ6::öÇÉÓ8#iY]C! ¤dr Uu 9ŸO¾Þ›}}8«Q¢ÆaGARíÐÑE†QEQEQEQÔ¼ý‰öVÛ/c€qÈÏ^:f«—¿6·?ë<⸋ Ãm<ƒéŸQÿÖŸQi‘Û.é;é‘“õ&¢óµ³Ý·Ù¶Lò@à àãÓ=~ôK-ᕚ5œ'™ÕÌXÛü}óÓ>ùR]K¨yÒ›u`˜B»¶vݸ{ü½}ñI,š¸&Q gÆUI¸ã·¹©ÒK–»™^Xx°Æ{súŸÀt ä’óì÷;Þnâaæ<àŽøÁ÷çôÖ}A§[0Í 埓#=;c>ý=x–ÛíBhÖm̆"ÎJ¯ ‘Ç|d~ÐPo_ïÎëýáùÒàz 0=&õþðüèÞ¿Þ. £ÐPo_ïÎëýáùÒàz 0=&õþðüèÞ¿Þ. £ÐPo_ïÎëýáùÒàz 0=&õþðüé’:ùOóº{Ô˜‚™(Sð>é o_ïβ#:¼B"Z)™Šo GÈ9ÝŒc'§çß±è(Àô—çê„s åÏ ßûßÝçüâ’Y56û+.Äã3*m ž89<½ÈÍ#Ï©GÉle}ìì1Æ1ÓŸ\ôëRNרjØpv(Ã0 .sœ)>£Ö€!iµ‡ŽCåC+®Å1q»Ÿâ§ùíO{Osì·‡…ã,0ÇûÝ6þ¹¦Ow©D³1³RªÂf'ƒ®OtëZ4‹!¸ˆFC wË9n]$ûbÆŒ„z¯cÖ¬_4|ÃîžÿJ~ ¦<ÑÀû§úP·¯÷‡çFõþðüë)gÔü½ßfRvœ‚9Ú½9þöêcM«­¼Šmã2øu^wÿ»œcñížø  +—pƒÉ ¶NFG¡Ç_|T%îÄ„Pã¿ÿíEx×Ë2›eÈØ Ê‚Ï>„ñî?Ð=ƱºC¤x Uäd`“ŸBGᚺd»ä ã‚zuúúSáyËÕÐU¹.RL[¦TÂä/8q½þ¼P˜_0¡“åm£p$p*MËýáùÓa%¡FuÚÅA ކŸè(4eÜÿ0û޾Ÿ¹}GçH€n~Þþ‚è(®é ÿ%L[FÌuÏ9þ”øT”äÿ¬==)?kAü8ã¯zXT–— GïL{P»«ßFƒÕ¿ï£FÖÿžú…A,Æ9–1æ1#$ (Î3ÍS›TŠ .Xå ’KgüûÿJSªÚ‰ m—†)׸ zð>nø¤mR× †•ËÇV8½‰ú h¿²BæìZ`dC%‰œç çÒ€5‹srIñïtL€8àöÈüê{;Ô»•‘c•6¢¾]‡rF8>ß­G>£k Ü–ììdCàI$ŒuÏÌ¿ŸÖ‘5[R‹È…ˆ^SŒ’F3Pß•il­ÿ}6Vÿ¾Em*ÜÂ%ŠI6ŸUÿ*—kÏFý?€y­ËtÄ}éÛ«ßFš¼ÖýãtžþÔí­ÿ=ôÿ 6Vÿ¾«ßF­ÿ=ôÿ 6·üôoÓü(Ø=[þú4l­ÿ}6·üôoÓü(ÚßóÑ¿Oð `õoûèÑFÖÿžú…Ë\ "òTfÃû ƒŸÈõ"ª$úŸ–ÄÙÅ» ¹éßü÷­7ÆÃ“ŠÎž8ÚÒEk€º@Ý¿¦sž•Qkk ŒÝxf_ôX£ÄÄQ“³rç鑜ŸjÕ€0+(F>Ý ’ÞD|¶}‰œ8úŽ)~Ã3ä%Öcß¿ Äwn¾ý)´»«ET (¢Š(¢Š(¢Š(¢Š£©;Ç™ï‘UŠ®Âù8éÍUy¯Eμ^Gš«Ÿ)²Tõü†2N_J³©É$H¯oqÐ-ÔœNµ]1‚i…p|–$dŒwúñýHešðI1ŽÝ ca1[=Aô>ýd¹¸¸G™míÃU*L-׿È÷ä/N›½©êç cµYv¢29#'ã#8ç·¡Å:êòhža™œ"ðdþ=GÓÛß³Ü {†ŠÒ¬˜Z.@9õêOýjÑ£Rñ*±‘Áª]Zq*<´þâþT×6‘zŽÞô­m;QsŽ>ZG6‘zŽÞô­…8EÎ8ùs@ …3 ™Q„ Ø^3J#MÏò/_OjHStHÒÆÈ€:Qn‘zú{P÷Þ\Ü_ʪêtvûí!I$ÈùHëþN? Õ¯-?¸¿•U¿ia·ó-íÖW »rOù8úuç  ^\Ü_Ê.?î/åG–ŸÜ_Ê-?¸¿•5cMÏò/_OaNòãþâþTÕ7?Ƚ}=…;ËOî/å@²ªÏÕ¯AíI ’Òáˆýáéj`cý¡³ÊÚª ‡þñ9Èü0?:|!·K†÷‡·Ò€%ÚßóÑ¿Oðª÷AFΦFÝ„PªNïlôేþðÿ¾j½Ë§Ë È$ó9ØcÝÀÆIÙXÏa˜Ÿ Œ+'”02 ç7g°æ™Ö™&Í ‘<Áƒæ!‡ÁÔý)×Z¶¸)öiÚ5Uf“s  ³Áú zçÚ€'´¹[™ddˆÑ…',yÎ}ý¿Ïs`õoûèÖLº½°Œ²‡.⥿„ àó×èqRkZ‰QgRå€ÏO”OÐŠÒØ=[þú4҃ͷCüGÚ³bÖ,¦z™>ém¥°p¿«cð5£±LŠrÜ©þ#í@Ø=[þú4l­ÿ}6Vÿ¾«ßF€ ƒÕ¿ï£Y?Úo›Ü\ÚL¡cYVìO¯^§oZÖØ=[þú5’uxâ³k›¨%‰V5“å}ß+Žãž >MIc/ºÚ|®ü ßx/§<“Žž•vÙÅźKµÓxÎÒùÇäj”šµ¬{÷¤ãaâ…êGÍÏN_j½m$w6Ñ͘AŽK°z·ýôhØ=[þú4l­ÿ}6Vÿ¾5Ðm·QüGÖ•$ÈÞ4Žƒhåºâ>´¬€)#v@îæ€/»†V` ÉÅ(A¹ùn¿Þ>”þò$‘•”°nâqJn~[¯÷¥p°z·ýôj®¡+Û[ù±DÒœ·yð÷ÎãV¶Vÿ¾UÔnVÊ)F|¶Üy„v'úP­ƒÕ¿ï£FÁêß÷Ñ£`õoûèѰz·ýôhªƒsòݼ};`õoûèÓUçåºÿxú vÁêß÷Ñ Oj¹è3÷‰=éa º\˜zŒúRd}° #Ÿ½“Î{véKíÒãë_€%ÄŸÞ_ûçÿ¯Un„`+LNàp»Q‰=ñ…9#ŽGN*ßï?Ùª·>\’,R‘»;—i`W¶r:wý(±M9 V’ÙI8!=1޾‡ì)¡tÏ,ÉçÛìq¸’çÃýîøÎ=³O1é¨þi’±R ˜œå²;÷oÖ™ö].n‰Ê€Þ{e±òŽÿícñ Éö7h&f &ÁF*ì§ õÀ8O8Í4ÍŒ¢KM¸ÜÜŒ`‘Ï^™•£²ÈI(…|ŸšGUÁw“ƒÓߥG-¦šad•cd#s~ñ˜ó†Éç<íÎ}¨í¬fbŽMÊ2w6X±'$“ŸSSâOï/ýóÿצFÁyl…Gôã'ï?Ù þk|ËÐ×Þ‰?¼¿÷Ïÿ^š7ù­÷zëOýçû4˜“ûËÿ|ÿõèÄŸÞ_ûçÿ¯KûÏöhýçû4˜“ûËÿ|ÿõèÄŸÞ_ûçÿ¯KûÏöhýçû4˜“ûËÿ|ÿõè¥ýçû4PÿpóŽ:çDî0Iå\!l©Sæ3»€O¿J–æî8%ŠIW!yŸNXUG»±hNë—Pä8fR# 1‘ôãÜzÕE=…qR°Ë‹àÑ1Q1–|§ð§ mCoü} $;íÆzsÏ5YcÒUâ 3†Þ›x?1ÛòçŽx=éöÖz|ãlÿ*—pvƒÈî9úÖM@/[Gr’IçÊ$BÁÜzöúUº£›oÉ$Aƒ/'<|Ü}>oÐUêÉêÆQE (¢€ (¢€ (¢€)_Ïöa»Y°põ$ó¨Öý^ÚIQ$!T)#-•VÆ{7éRß2(V‘   •sùñP`Bmä¦XŸäNK‚}¾lP‰Dò±uDUl’0Á†xÿëâ¡·Ôâ•·˜ˆ`ïlŒÔqßzt·6Ö·%9بÞpÜúIéKqw ³È®’eOÊ«ó 1úmoé@ e©[ÞL°Äì\ÆÏÊq‚8újÐØ¾ÕšÚ­’ZÍt'8¡#oÌpçþG5fÞé.d•#2ƒÆHnHÈõò  ;÷Ú‡ûíFÖÿžú…[þz7éþl?ßj6ïµ[þz7éþmoùèß§øP°ÿ}¨Ø¾Ômoùèß§øQµ¿ç£~Ÿá@Ãýö£aþûQµ¿ç£~ŸáFÖÿžú…÷Ú‡ûíFÖÿžú…[þz7éþl?ßjlˆ|§ùÛ¡§moùèß§øSdSå?ï¡ôÿ ­wv¶ÏûÂû63ãGþÍ× ÁÍ4^[™À&Bຓ'ååº Žß^*ËÛ¤„Ã1– {çÓÔ ¬¬¼œ`ד۾(€Õm×ÍR&=ÄŸ(öõÆcÏAô¥¹Ôâ¶ŸËtŸhPÌûxPI=úÇrò7î·î&òíÈc÷zuç¥\·òå·íä>Q_— ÇÓ.Ãýö£aþûQµ¿ç£~ŸáFÖÿžú…5Ðí;uΕ”…$3ZGS´~ñºO_¥+Ìp:q@ …Œ±,„ºîÁǪ‡süí×úRB|ØRE,¡€ 2)BÍûÆëíéô¡î¶ïµCu#A˜ ¹ÈrrqéSmoùèß§øT2ùy„I&T.rN\w  öïµ÷Ú­ÿ=ôÿ 6·üôoÓü(ª‡süí×ú vÃýö¦ªÏûÆëíè=©Û[þz7éþƸ’zõúSa-º\G˜zœzS|ÄkÁɹãûÃû¹èK— ï¥K™?º¿÷×ÿZ©ÈÜNè] ìÙ,k'%yÀ#î:»—þèüë:KH.Öh<âÊ–YNÆ9'¶yÉëøb€4øÀ?ë /“'$î OO\S#Ó­ Â'Ê~þ<ÎNÖÎzv'õæ›.‹m&ÿ‘¾ì•aŸ˜‚{zO·Ó`‚_61–—qÚN^qž¢€XÛJÒÈ¡XÈÛ›k÷*GP3Ñ¿ZŽM>È]Gæ%pÁÈyçzS±lßfÅ!#b´î@§#˜4’i~j«±W‘YU<À pqÆx•_·‡ìЈ¢QµsŒ·OÓíSæOî¯ýõÿÖª–v)fÎЃóª)ËŠ0;UÌ¿÷Gç@ üÖùW þ/¯µ;2uï¯þµ4ó[å­?/ýÑùÐfOî¯ýõÿÖ£2uï¯þµ._û£ó£/ýÑùÐfOî¯ýõÿÖ£2uï¯þµ._û£ó£/ýÑùÐfOî¯ýõÿÖ¢—/ýÑùÑ@Ë rï³'(YrTû~B©±1Å$¦Ù M£åˆä€yÀêp@zGEYÕYø\œdûUfŠäDûd·)\±è$gÜqM7tD–]ÛKPÈW-Ž ØI#ƒÓQNŽîT%“Mev_B:&@Îß^)Ëo¨+7(ÁYKgÓi·rsÎiDzžûDDí9Èvý:ný=kM<¿Û\Ë,’$–ÍÀ0NpÄõÇr¨ÛÅ|³/2:Œýîzuû½ýjõfípAERQEQEQECS0,jn‘^!ÕYAäc¯qÖ¡W²U’_!—¶B|¥É'îŸcõÆ>œÔú“Á#Ü"ÜH'1Óž¸¨ØD3¾Õ ‡|BÜ >™é@ Ž]:Xå‘"±F²¹ò‡ˆý(sb#IÌÞx'"Km°OàqúS™l¢‘â1"± bÁ!F{ŽHüh“ìQÊ‘8Pñ•À ÇŽÑœz翯=h`¹·¹¸ò€Rï~BœŽÉç ÿ"®$+f@ª\åˆP7z¦ÏedîìR&D˜£tfÀç¹'ñ«0\¤ï*C"³DÛ\l#€'Úßßý(Úßßý)1'÷—þùÿëщ?¼¿÷Ïÿ^€kô£kô¤ÄŸÞ_ûçÿ¯F$þòÿß?ýz]­ýÿÒ­ýÿÒ“yïŸþ½“ûËÿ|ÿõèv·÷ÿJ6·÷ÿJLIýåÿ¾úôbOï/ýóÿ× Úßßý(Úßßý)1'÷—þùÿëщ?¼¿÷Ïÿ^€kô¦H­å?ÏØö§bOï/ýóÿצÈÊ™záÿëÐö·÷ÿJi!‰Ç`4¸“ûËÿ|ÿõê”Z¬ƒ)r€`º”É=8 ÿµ-þo<É »÷Š0A$`ž~SÇZt“iâXK˜K•Clàž6ÿõ¨c`ëÌ–ÌŒp2Fzú±çÞ‰æ±Qs<8¸Ú‘…ƒ`ð?3úÐåŽw[ËÞ»‹*c rqÔdqך±os Ñ[Ü,†3µ°:Ï•4¨æƒ§”WwL¸É#=wcŸj¹¶–ä¬rÛ o˜à\zúñõÍ\Úßßý)…[Í?cÛéMŠe˜1†x¤ Û[o8>iÄ?š>eè‡éï@Úßßý(Úßßý)1'÷—þùÿëщ?¼¿÷Ïÿ^€,žR‚ìpsÛÐý*³ýÔÃ"ÄÈT©VAŒ/lÃ'õ©§ °yÌ…yþèO¯¦j?ôv~ZpÙ;zsÈëïLºYšEˆã'-ã'·®jh#û¨]@A€ª¸éL?gÎã$3œ{ý}iш·•‰âܼ£‘ÓߨP­ýÿÒ­ýÿÒ“yïŸþ½“ûËÿ|ÿõéÙ¶Ÿ¸íïJÁ‚“»809¤pûG̽Gðûýi[xRK.1ÏÊOõ ÂÞdHèÄ+ €V”+nŸ¿§µ62D¯®Â2¿!~tàs|Ë×û¾ßZà?kô¨.œE÷ áHáTcÍM‰?¼¿÷Ïÿ^ º’8Q Ì‘ª—P¹S÷³Çz±µ¿¿úQµ¿¿úRbOï/ýóÿ×£yïŸþ½5U·?ÏßÓØSö·÷ÿJb‡Üÿ2õþï°÷§bOï/ýóÿ× ‰ÿIE$’~îCÞš²˜ž@b•²ä‚«‘Jqöµù”¾9°çgëI%ìQ¹FqÀ¡ïµÓ ÿïŠÎ–Ñ$ ]`–+….æÉúóÓÓ®ÿhEý×ü‡øÑý¡÷_òãNÀQ}>YBÇt¦PCƒœ¥ImmÝ»•e%ÔA9ÿ?Zµý¡÷_òãGö„_ÝÈ7û2³ xAqœåÐøPúd/&ý·`me@vã=pAõ­/í¿ºÿÿ?´"þëþCüh°ìâ[Fb‰rÛ• ¹ÆÑ޽ÏÖ®}«þ˜Oÿ|TÚuÿ!þ4hEý×ü‡øÑ`.ò|‰ð@sëNûWý0Ÿþø¨Ž£ àŸ§øÓ[S¶V !*[ 8íëî?:,ÿjÿ¦ÿß}«þ˜Oÿ|T_Ú0z?éþ4.£¨dÜÊFA ΋/Ú¿é„ÿ÷Åjÿ¦ÿßê6sÜ`ÿZAª[– dôsúÑ`&ûWý0Ÿþø¢¡:°Ý’Fß½œqõæŠ,¥Ý¬–Q\I"I+â=€só(ÁôúöÈÊš!ò€»‘ÓO=8U @‘Ü—RAô­­A"2Bò[$Ì í,¹9ʣВÿ€Ö|¦ÎtLU@6òT€=Á qÆ6ûUÇšÞè‚ÞçF·š6]Cs‰RÄœ—\œwÊ–)´É¥ÄW†F/çí<צq“×Ûð«Öööò–Ýf±˜åÜ:œmÏä1ô©³¬³û4_»]‰òýÑœàzT¹I=XY ³Ó£´td‘ÛjùŽzœÕê(©m·v0¢Š(¢Š(¢Š(¢Š(⣘Ö_»ÉêAÈÆ1Žsœt¨ &WµW\IÈ$aÛëǧøU«˜ÝÊ~3Æì}* A´Èn£ÍëÓü0²Û1ÿ[ìþ¹ù#ì>´çÓ­ÝÙÌHÈ,ë•cƒ‘’zÓVP¡lñµƒ H:ÿY«mÏüúÿäAJÀE%„2;3‚K ¿½¸wãš|6±ÀÌbTLõÀ>þüu?™§y×?óëÿ‘uÏüúÿäAE€—ê¿•Uüª/:çþ}ò £Î¹ÿŸ_üˆ(°áýWò£ê¿•Eç\ÿϯþDy×?óëÿ‘\?ªþTaýWò¨¼ÛŸùõÿÈ‚6çþ}ò ¢ÀK‡õ_ÊŒ?ªþU›sÿ>¿ùQæÜÿϯþDX pþ«ùQ‡õ_Ê¢ónç×ÿ" <ÛŸùõÿÈ‚‹.Õ*l›ü§åzÔÏ6çþ}ò ¦´— ¥~Ì9ÿX(°áýWòª‡M¶+˜cÄXØ#Î;ûŸÎ¦ónç×ÿ" <ÛŸùõÿÈ‚‹Ó-‡H“¦:·÷·zúóKýŸÔQ€‹´`°ÈãƒÏ#Ö¦ónç×ÿ" <ÛŸùõÿÈ‚‹év¨’"Dd ¶$tç4‡Kµù‰ˆ|ã–Æ3œuàgš±æÜÿϯþDy·?óëÿ‘·¶[ee€"bÄzŸÆžwù£•è{})žmÏüúÿäAMó.7†û0àcý`¢ÀO‡õ_ÊŒ?ªþUsÿ>¿ùQç\ÿϯþDXI‘vÈTÄZcZF͸ªgžp{õïKæÜÿϯþDy·?óëÿ‘0Ú¡$•Cž¹×>¾´±Ûˆñå„\ p·¿°£Í¹ÿŸ_üˆ(ónç×ÿ" —ê¿•Uüª/6çþ}ò £Í¹ÿŸ_üˆ)XÉ¿håzŽÞôâ‚ \j¤¹a³ ÿ¬ï6çþ}ò   YT*• ŠEݹù^¾žÔÏ6çþ}ò ¦‰.A'ìßúh)>Õ*£u5¤ždW,”ÃvU€®zöI϶sÅYó®ç×ÿ" ©=¢\<5ˆs& ÁÇÿª•€¹ ÂÎÅ"0S´áOZ“ê¿•T·­•Ö+\bç÷¹çüŠ›Î¹ÿŸ_üˆ(°]ûŸ•ëéì(v1£;²…PI8è*!%À,~Ì99ÿX)ZIÙJ›^Áýà¢ÀEÃ,ë${w8Ë|›XŒ žÇ^â9âBˆÌ7u¥´¶Ky×lVF>þìýãüÉ©"ŠS~ò‰•ó+GêxÁþtÓ°¼‰¿ç“ÿß&"oùäÿ÷É©'¶º7o-¥ÎÓ¸1# xô©¡ŽüK›*yjÎ\g%Á?/ðŒc?¥>`*ùÏ'ÿ¾MDßóÉÿï“V®#¿g›ìóF¡¶,s´ƒóq·¸4·ð]Lqm?—˜ÝJç‘ÁÎ3DZsSÈ›þy?ýòhò&ÿžOÿ|š·k ·E®f Ø@P>mÛ¸$àv¨…à»2·Eçï æ¸ÂàñïÉ8£˜|‰¿ç“ÿß&"oùäÿ÷É©,¬o-î {‹£"$;\‚Ù'8=~¦šÖ:€¼yá¼%KîTg8 ÎWޤ~TsB}"IïÅÓ X¼µzç9ª)áËÃï\çóö¢•ÀÐlí8ëŠÏž9ÞÖM²*¸eØîÃå¹ät㊵<ñÆÉ„î—*¸RjŒ¢ÂkVŒÝÄb2>ëÇãN)Ý11&]H¶|ô@òÁn;ž~lqÅH«¨‘óJˆ`ÇË“ŽyûߥW6¶³\˜–ñŒŒ>L1ùHF^9ëÎ ²4Å ´Í)Î3óƒožŸ/êjÛKȵ—  yxóœgÛžùëIL¹Úаó‡@8^㯧~¹1J–3¹Vœ‘ [’xÉÉçß@:Ñý—ûã óæo<‘“øôüýx.¼¾áj š‰dïÈÁŽ0|§#þúþžôé¤n$ò\myû§¿ûÝxéŒU»XŒéråGÞ=êj‡-vŒ u7f Úî>`FÑŒ{nÏ=qRÛý¿Î_<¡Mï» .Þç<çÓðÆ…œ¼‚ÁERQEQU/¦’ž[c9ÏSí·ßý4®µ“öÛïþ‚¶ÜôùXÔVOÛn?¿ú >ÛqýÿÐQÊÀÖ¢²~ÛqýÿÐQöÛïþ‚ŽVµ“öÛïþ‚¢¹Ôæ¶µ–áØ•‰ d€3G+nŠåcñLRB³©9<팎O°øž#ŒÌ¬àe G*HN¼ÓDüéX¦Šæ­QK•ŒØ¢¹öÖÕs‰÷ÛHTÉÎ@ô÷ù5cyÀ#$ü£ŒÓörì+›´VZ«Í+F’UC¦NÕ7Ûn?¿ú N n3ZŠÉûmÇ÷ÿAGÛn?¿ú 9XÔVOÛn?¿ú >ÛqýÿÐQÊÀÖ¢²~ÛqýÿÐQöÛïþ‚ŽVµ“öÛïþ‚¶Üôr°5¨¬Ÿ¶Üô}¶ãûÿ £• ÿëãü•U†8¨òy„\a³wr9Ç×ùÑi4’Î<ÆÎ:qìháþÔ1˜ÏÚ6±WÛÆÜ®F*@2çH†{–¸ó)ƒnh …*9Æ‹?P*hlD6“@.'q)c½Ÿ,¹1µKtº–­‰'%±Žþã­Buë’EÝ!ؤäFyÀÎáÍ £„m¸”™qüíÀ#çJ{i1¸‘^æå–Gv ÉýîÃÓâ­C{ó˜b|º r1ØÔU²¨d`]Þ5ù’¿{µIŠq7Ÿ+‘—µˆÆ3œãj¥âé§7—$4¾fÂÃh8#:r?ï‘Bë6OHö¨S‡Ä^H©SµVu%Ë#ì*“œÓñ&œ©¦5Ú'e`G˜Í—äúÓ­lþÍ4²yóIæòUÈÀ9'N¿¥Eý±cò/˜Ûž?0.ÜgžiÍ©À–ö“¾ð—XÙÆq•Ï8  É Û¨_ÞÊJ«¨'o° éè?Z·gb–LÆ9«61Â…ÏÑE,wðIj× ¸z–B?OÓëQ¶³b„‘Á8ãËnë»ÓÒ€ý“϶âuÞò9Ú@åÿݪ)4Mæ\j¨$ERÇÇ#޼~¦¬&«hòy`¾ÿ›ƒºnݲ*)5Ë„D»Ÿ1Cü¨Näþcó  6–‚ÕRWeg.Cc©ëÛÖ­Õk[¸nÑš"~W(C ÿUY Š( 'Š7PÎ7;€Ü@Èæ³Œ6ñAæ­¼gìÄlBçÔúv­fÎÓŽ¸â©?Ú¼‰‚3y£q°ž¿€éëN-Þ×*-íœR4¦Þ@Q”'ŒžœžÃ­Lú¨^-åù†ò \…ÚNqŸoòh2ê¡[e¼lM¹a’1ódäsŸaC¶¬DxHræÂðNË÷½p?_jÒÉÿÃ$÷â”Ýc6 2R rá—®F~O›Ÿ®¤’·üº² v’X%S+>1¸p4ã«CæÌrÎ3ü ßßùÒîÔ²ãˇXƒŒî=‡ÞþOz’ÄÞËvŠUÚÃ'6y4>[^߈jZ‚Q4)*‚¨`^jJ(¬ÆQEQES½O1£\ã­Wû ÿžŸøíZ¹eYbÞÛA8ϹÀ©¨þÑkµN§yPëótãÞØýÏOüv²ùéÿŽÕÄXä]ÑÈzeNE?ÈÞ4]Cìƒþzã´}ÏOüv¯ùûÆ xÑv²ùéÿŽÑöAÿ=?ñÚ¿äï<ýãEØ>È?ç§þ;M{’6ŽF Œe+AíZ>@þñ£ÈÞ4]Ú5›>öŠ"ÙÎ|±×üŠjè–+·l §+ˆÇþ%!é[>@þñ£ÈÞ4]&‡e$^[FB.0§¨\|Ã÷c¨ÆáùV·?¼hò÷`sí§é y%!Àqß'€p‘ñ–x´»gIJB­nhù‰ü‰9üëPé–Í)•·—.$åÏQöGÔ6•jóù̬_z¿Þ8 :gÞ‹°2íàÓ]LÑÜÄË+‰@b0ûÀgŒâ¢—MÑ7G#ËlòÛ†Üvò3Èϰš=”s R<8“ÙvÒšš-Œq¤iUB ágÿÚ4]NâÏOyI¸’•TÆC[d®3ß;ÔIo¥ÄÑ\¥Ô*»qa’z“Žúõ«.™m+—u%‹n$2xÿâWò¦.f»p¯•Æ vÏzõÉ<Ñve6Íp°%ÈiK«@8<ôëRµ’6708é•«vöQ[D"‡*‹œ¸ÉÍMäï9˜i¦@ƒä 8+Âv'$P4ÈnCg9Ùþ}kSÉÞ4y#ûÆŸ<»…ŠdóÓÿ¦Ia«¶F 3œ­/ xÑäï\Ì ¯ì«oî§R~å=´øœ’ÄF2Wëþ&´¼‘ýãG’?¼ió˸XÌM:(ÎcÚ¼c„Ç'ÙüôÿÇjÿ?¼hò÷.f²ùéÿŽÑöAÿ=?ñÚ¿äï<ýãEØ>È?ç§þ;GÙüôÿÇjÿ?¼hò÷`Pû ÿžŸøídóÓÿ«þ@þñ£ÈÞ4]Cìƒþzã´}ÏOüv¯ùûÆ xÑvLʱ>ÒÄñéLÜž­ùV„–K4…‹‘Ž:TRXÇm#ÊÁ'Ð Þ2…µ8*}g™òíò"Òî!šá–20ôûÃùƒVâ’Q~ñy$Äw7›èxãüúU}>ÒÞÚO6ß'Î'q ƒXœ\“W ë/ýt?Ò±•®ìvSæå\û”§»š;©Wû>I•d@S®G''®1Ú’9°º¸M9¢•YØDÉ–õϽ+VŠ’Ì”½Ÿ,³Ša“–ÎÜuûž¼øñSYÝ¥ÌeͰEÃ8$u#ŠÐ¢€3$¸•! ¶>fKF:Œžã’&£Žòé¦U}$®\Û²Î3÷}9ÍkÑ@·-˜"².1NÆù²OÊÞ¾ÞõÔK’±iòH#œD »×žGÀÏÖµè  É®Í¡0Áa,‘l,6!Á'q#§·þ<)‘Ì×ótá£!„0'¯SÀ#‚z•­EbÁy*ݼ/§º@Èo)¸œã$·ONýß$¦'26›ºEˆ.B’qvŒ03ùŽ€sZôPlž¼Ö­ÍºA¸d# ¸IÄôêIýMgÉ{a¸ÜË »1ægsg ¯ðçÿ…,’éÛãG†eÚÍÀÎPG8=>n•^ÏɊ樻¶9"â"Îw™Çó¥ûDˆó“ƒ·ï¾Ÿ^+%ßI*ÌжDaH ÎÕe¡õÇ>ÝkGû:×$ùG–Ü~vëÏ¿¹üê\b·¸îXŠXæMñ:ºú©È©*`ŽÛíq’zèMPü†QEQEQEPÔlfb²¤î*Fpäãw¨ž 9\ÊÂòñ&|ÒvñŸAб~ˆÂ1#„Pw,0Aê~•Y4ËW@è¡•£Ø ÊH*T/¦:´=ªZØÃåBÑGbpeÏ=úÔÏp±íÞTn%FIê? ¨4ëu˜Pdl¸ÿÚR{zùÒ­œ"Ò4FX¸mý99äŽ;ò0G­Z[„hÖQ${ lg=*Ebêv2žA k9´x lH6®_;>R¹z1«°DÐF#PÉ$–ä’rOOS@åýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔeýó£/è¿“û«ÿ}õ¨ÌŸÝ_ûëÿ­@_Ñ:2þ‹ùÑ™?º¿÷×ÿZŒÉýÕÿ¾¿úÔÕß¹ø^¾¾Â•u*ʤ‚3H¥÷?ʽ½ì=©Ù“û«ÿ}õ¨´VÐÈ#¶H—Ë;'$3ƒïÏëQÉk<ó3Åu䌕#i$ò§=F:c§z’Ú`¸a¤,ãÌ-†Ú=zqŽ*ô:yº‘¯g1¼™S´ò…cÉÆ{Ÿ®O…çš²I©<¬¬‡hR«Âàð¾sÉü雨y;ªÛ±Æ3ýÜ{Ô“ùzTÏI)µgràœ” 6q×o9üx¢OšV–+‹‡Ýæ)ÃqÈà ãßó  K8§†%K‰üù€_nÜõç5j«[Z¥¬KeˆU 7c8ø«4V@¶SvçíèÍö€û;®2võë€y뎕¯XʶW¯(Ž[ŸôIZFP0nlã#žC~JmçÙæIý±¢òþGQÉ$ddúñoP1`Ãö»Xäq#Ãhëƒß9ϸúÕ{m6Æî$™bŠ6 ÁpÀ6î˜éŸÃŠ’É,´ùJì‡t¸ Äd#  mk#^Gpf? ÁP½zûñÔg×h©Ö62¹¢0>œgõªÍªØ® ]FÎ9뎿çØÔðÝÛÏ!Ž‘Ü(bçƒÐÐ8´ébuct[l­')ÎÆ:þ'Ö’ïMžå§e¾’–-€¢ýÓÇ=zqÓÜóÉ­J(¬ÐÌòBë2/–åˆ(Ná´Œu÷ÍEö9ÿ³ÐÎ…‚*oòÏ8ïÞžÿáWè  Ã§9˜Éöþ¹%Ç—Ÿº1Œ“ÿê¢´è  wŸkó"ê¥úÂz™z~ª³Å~ì•Ø’r xü?Ý$þ…i°Ê‘ê*œ–F[y"2`;)Èç€ÙÇ?•Rv²Dw"øEÆÆA»±Ôç¶{qý)‚mGí0/”:ñó7L÷㿯P)ÒôH;–hüÄ;YˆÚ òsߎ1Ðõ©­-na+æÝ4 FTî?Åœçüÿúîé.€ -ëDìÖê¬í\g¨ïÎ9ã­FójLÀ-¸Qæ.O7 ޾œçðÇzÂå•TݹUÚ~ópsŒç¿õãÜÓ屘Ï,\4M)$õ8ù@gçíJêý¨ë9¯]Ð]B‘‚„’§8lôü¿Ï­úË{;§Iw]Òd`‚ôã#>õ£ì‰S9Ú f¦VÝ ¢Š*FQEQER½Esv*[ · óǪ¤Á*e¥š@ë‚åÕ‹9Éôü:ŒUÛØ¼æ2G; ‚?QU“M(T¬“oÞ¬ÌH9/^œ~§­@tH'2ÈòÈË+—2‚Aëß§Z{è¶Ò+«y…]˜|¸;ºŽŸý\ÓãÓ|»8í•å m 1Æ8ç_¯4¶ö-my©¸Æùxl'ŽsŸoÌÐøÁŽ5@‡:åOÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ ÜßÜýhÜßÜýi77üóoÓühÜßóÍ¿Oñ «6çù;úû ~æþçëLV;Ÿ÷m×ÛÐ{Ó·7üóoÓühœðNâÙ‰ß!gMøl`÷ã¥T¾¸²‚çv‚V%ŽJ m=3סúgžµz "àωŸkrN9õ4Öžê9¤X-„‰’wnÇ>ŸÊ€*­ÖœOÉdú¾|´W+É<`qú ¹e%»ªýž,p8QÐüÝsþzT}©+¨aaŒ±8Î>¹À§}«PX•žÉwˆÝŸæà0c$çŸÊ€4èªÖÒË,a¦‹Ë%CcÓ=¾½*Í‘ÖÐݶ°F^à¦à@bÀ?$c©úÿ{Ö½cÅqªý­„öÊa󶂪Ù—Ã}îß'ëø ªØÀ¬Vì»ãj¸¶Üg8ëR[ M]Íœgæ |ÄR[ƒ†ïØ÷õ­J('³¹šN´u“ÍÉL8P§Ÿ—¡þµ§•­´›íía‰¶í܈ãŽ8íÀüªÍQEQEQEQEQEQEQEQEQEQECR¶[µŽf°l¯Q´†÷ã­S:$*¥ŠÆqŒ'Ì0ᆞØþµ{Q€Oå!fQ¼1+œðAíÏj­¤ÑÛù3K¹‹9pß>NìwÆ=3@[èÒB®cºtwEVdR»° düÞÙÇ^sZv±}š,a¹˜×’OsïT£ÓÚ9w¤À"ÈÌ";ŸÜ± Ÿ©«:jÏ ¶Ë§g“q9ù›©  {Ï÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäмÿq¨Þ¸Ôoÿ|š7Fÿ¾MÏ÷çûFñèß÷É£xôoûäÐUÎçù¯ôíçûMWŸ†ëýÓè)ÛÇ£ß&€)[ÀÐÜ>JþöV“6ã#êrxëMt¾y§6²¤kµ€Ü3óñƒÓ¦=ÿ ’–ei\³ap:ŸÆ žä–bׯ*Ë…“n;îÆ}GåkØlOhyR¤ç°ù‡ÝèM=aÕ|Ýââ[&ï—9';ºu)Íi&âMìø.­— Žzªtµ†Ü¯Ûf6X9P2I,y÷ëì*[ÕŽæ(âPò 2¶QÆ[Žçr(_±Ë´·ÜtqŸ—øº»Plåçý>ã¢wøzöïÞ¨Ae ÚÄ Õd1ì;JË•*®G=ìœwÒ¦µµŠW“ËÔžå1tó€=:nÆO®MY’†í³à3¶>^ýNƒµ7ì2ù{EýÇÜUÏËœƒÝ:žõMí”]Ÿø›H ‰N<ÃÁ8às—Ó¯4û U²¸g}ZIÁNRYdzûb€.}–_3Û'ǘ_oËŒcztïLû þVÏíœù{7|¹Îs»§^Õ\E — ·Q`EÁ%cæ#zò8þuYEäªfeýÙ%¼áÈÏÞëøPÿ²ÊdÝöÉñæÛòãcoN‡­´qÄÒ·Û ¦Vɬ09ë֊ТŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(•úÌÊ«nû% íoNžÆª¥µúüívZC+|„ œíÇÇcþ6¯„„Åä¶6ylŒûŒŠ¨!ÔA‡7q0VRÀ·`„qÎIÏ9  Y–ÖRZ@ 1 pN95&ñèß÷ɬÀ5- }ª;O'vý:ný=jKq|²«Ïu eP~÷?_»ßhþñèß÷É£xôoûäÖL‘jMQwv©'p_˜2“—¦ËëR·ßkIg¹Cî€z°;÷<ö  ãÑ¿ï“Fñèß÷ɬ‡Rò‘c¸De9mÍÔŒrxèHn2:¥)‹ShÀ{Ø· gi8#۸ݟ€5·Fÿ¾MÇ£ß&²"ƒSÓmì,¥‹I¼äŸ™¸tÁõŠô[Û´§š³³ÈL€‚§uQÐy‘ÿñTµH^xP$s°UP œõ©>Ówÿ?øè¨³?üøÏÿ"ÿâ¨Ìÿóã?ýü‹ÿŠ£P%ûMßüüã¢Or¤‘098AÍG™ÿçÆûùÿFgÿŸÿïä_üU€é^y£1É9*px<ŽEUk4s–fÈç†#±¾çó58iˆÈ±ŸþþEÿÅRæùñŸþþEÿÅQ¨žÉ£ff& B|Çå#Ž} X‡Î™¢`3žsŽýð4¹Ÿþ|gÿ¿‘ñTfùñŸþþEÿÅQ¨N…$g\î}Ųăã8ì?*V°‰ÑÑòë'ÞÜIÏ9î}MZÌÿóã?ýü‹ÿŠ£3ÿÏŒÿ÷ò/þ*@‡ì«½œ¬Ä–+Álòs޵éЬF >B»J’O·zúóVó?üøÏÿ"ÿâ©ÎÎQl. ž?þ*@¦º]º¶åÜñ'ßl ã4U½Óùp¹ÿ¾£ÿ⨣P: (¢¨AEPEPEPEPEPEP+ÿ0yFóÏP2229㑚¨§SSi"`¬»þ`6ßSž*µ¨ý§ ö2¢múc#9öÆ}ý*’M­”V6ñ®Ð¤‚T—>YÈ8lŸ?Z”I©‚mØí<äc;xÏ?ÞãéRÛ=÷œ¦æKsFÞçô_ÌÔ7kAò „ÈÄœƒóyííW,~а»uwW` esÁê{P)_R12ÛQ‰B£æÜ¤“é»ô© {óx­pñˆ@`Ê„r{\`}rOæ´ò=E¢€1™µ# ™7õbÌ>ðÇ^~îwtö¥Î¨Ñ ͹ëZy¢ŒQ@ênZ9Ä’Ç¿%¢*Àtc€}°ó5Í©y£ÊteV¨ òž£=7{ãÍkäzŠ2=EcïÔ÷‡¦ÀWG9ÏO½Ž¼vÍI3_±¸JŠŸ,±_mÀǾáž{^+S#ÔQ‘ê(•¹e› #òÁùˆÎâI=?ý]*ß™÷×ó§dzŠ2=E7ÌûëùÑæGýõüéÙ¢ŒQ@ ó#þúþty‘ÿ}:vG¨£#ÔP|Èÿ¾¿dß_Αê(Èõß2?ï¯çG™÷×ó§dzŠ2=E7ÌûëùÑæGýõüéÙ¢ŒQ@ ó#þúþty‘ÿ}:vG¨£#ÔP|Èÿ¾¿dß_Αê(Èõß2?ï¯çG™÷×ó§dzŠ2=E7ÌûëùÑæGýõüéÙ¢ŒQ@ ó#þúþty‘ÿ}:vG¨£#ÔP|Èÿ¾¿dß_Αê(Èõß2?ï¯çG™÷×ó§dzŠ2=EF²&çùׯ¯°§y‘ÿ}:ÏÈûßÐS²=Ef!¿1E°ÌOÎAù2zcÛoëV,žO ‹†;Ä‚ÅrWqÛÓŽ˜…:éæ’ `·îàúŸ\tæ¬äzŠo™÷×󦤉´üëÔ÷÷©2=E226žGÞ?΀2ã{ÿ”Lí¸ËDɃÇëÓè2M>F¾-bRM /ú@%O9^¼únéŸëZ™¢ª]Ÿ´ÁägËÏï>î:¯\óÓwNø  AõVhÛ̇æÛ½p0£-žùälýjõ¬’¹däçtÏçšµ‘ê(Èõ“ro·¹µ‘BmA#WÜsߘ¥º:‡ÛKi"0””°á°üįéïItÚ y~Ä#+囨»Œ{çïuã¥>îMI/TÛ*ÉA•%xl?©Ú?/z’).Dnf1±‚¡[Œô§>ÕQ¿´¶³7Ýã%þ¯ÞüïW"’ðÇ!ž%Œ‘¸¶:rp ûr9àÕF:¾ÝÙÙÇú¼çåý~ö{cæ€-Ú°“}ªH7™3VÈ ì;çóª÷¢õå”Á0ÙŒ p~ïGûYö#¯J³h×Ûg7iÿ3÷A_¸ñž¹¨®Þÿ}ÂÚƒˆb$ ²w^˜ê;eÓ_4€ÛÊŠ0yÊãø»g“÷1ô9ÅYµ.Ó©¯™ä.ý§#=ê)ZüÊ¢ìÙ,T'\VéÏøg‰,̦HÍÆßg_0‘»¿ë@}ãõ¢†ûÇëE!—¨¢Šb (¢€ (¢€ (¢€ (¢€ (¢€ (¢€*ÞE,¾O”"*2y€ýÞøÇzÏ™¥Š[œiåÑmnãžF{ûæFÕ‚òÎ#&˜ZEi ÜÁù{õ¸àž•>üYÍ7ös—‚ªe²àã‘‘žþ«^Š.ù•v0³î`»X€@ÆË08È©ÆqÓÞ’Yäòô¹ Ünp™ÀãN3ÓŽõ»E7’F$éψöÙ-òàgî}øéRä¬3;iä|*†c¸nÆzg§8Öµ\}f¹_1äÒ·èˆ[vrÞØ<Î;ŸzµóG™¬6°*2Äœã$€3ÆOLô­j(¸-<±D éRHìÌ—»ìOT𳛆ŠãO  ·Ïf c°ÎsÚµè¢àbLòÃ{,m§—·Q”tV$ýÌŽ3ýæ>øö4Çšqá¥íùÔ}æcÄ€¾Šzg¨ë[ÔQp1Y\°þÉuÛ¼Ädm$ãÔøÒÝÉ$V°¼c¼ÓFÇo8±^+jŠ. r\‰|™4°\v~}£¾˜oóÅó ŇìMå”,eÈÚuÏéWè¢àa´òm•“H”ˆ™”Ä®ç©üZžb±¼cû=вf\¹ €9  Õ¢‹„'}›¿²_8-³-œÓîã'ë\)ë3€éN “Æìç·jÚ¢‹‰fÒÊmâžÄ£œ˜ÛÊÁÀïQ‰nV4/¦e‚3¹ù qÇ\à{Vý\ ‰Y£HŠi¬ìñ#‘µ¶“´ð{ñø÷§É ùQÌ–Êv¼'<äã;»×§JÔ¢‹„ÓJ&inTo Ü‘·c¹ü¸&Ÿ ’4ádÓH›¾n'#Ô}y­ª(¸m$ØliªX?_Ÿwãû½vóÆ2\Ã<J¤ ? deR9Ü `sÙ‰ëü5±E KÈ].DÊç {èkHZÛ”9úÕŠ(¸}Žßþy >Çoÿ<…OE±ÛÿÏ!OŽ¢$ÆI©(  -÷ÖŠï­†Q¹×<©®-Ò,ÍbBX¤@úô«~áˆò׃ë\ü¨ q}"ù‰¼î^1ÆyÆ;Šs2s«sž~e¥p7¿´þy¯çGöƒÿÏ5üë42¹Xõro—Š“ì“ÿÏì¿¢àlh?üó_ÎíÿžkùÖ?Ù'ÿŸÙ!GÙ'ÿŸÙ!EÀØþÐùæ¿Úÿ<×ó¬²Oÿ?²þB²Oÿ?²þB‹±ý ÿóÍ:?´þy¯çXÿdŸþeü…dŸþeü…cûAÿçšþth?üó_αþÉ?üþËù >É?üþËù .½¥ô“‰IE$*1éÅAs¬‹{Áhc&F¤RÛ…Ær{uZÙe¶Œ¢Js%—$ŸÎ¡–Úi]™®Ünì`{Qp6Ù°JÈ ‘1À4Ïíÿ<¿ñïþµRf˜Â‘M¨0¿'oΙ¶Oï§ýòÆ­4+Ú?ôÇÿÿëQý£ÿLñïþµgí“ûéÿ|Ÿñ£lŸßOûäÿˆXÐþÑÿ¦?ø÷ÿZíúcÿõ«?lŸßOûäÿdþúß'üh¼BƇöý1ÿÇ¿úÔhÿÓü{ÿ­Yûdþúß'ühÛ'÷Óþù?ãEâ4?´éþ=ÿÖ£ûGþ˜ÿãßýjÏÛ'÷Óþù?ãFÙ?¾Ÿ÷Éÿ/±¡ý£ÿLñïþµÚ?ôÇÿÿëV~Ù?¾Ÿ÷Éÿ6Éýôÿ¾OøÑx…íúcÿõ¨þÑÿ¦?ø÷ÿZ³öÉýôÿ¾OøÑ¶Oï§ýòÆ‹Ä,hhÿÓü{ÿ­Göý1ÿÇ¿úÕŸ¶Oï§ýòƲ}?ï“þ4^!cCûGþ˜ÿãßýj?´éþ=ÿÖ¬ý²}?ï“þ4m“ûéÿ|Ÿñ¢ñ F¹l[hxËgó\‘üÔÀÔŸÚÑUÁéûε‚Ú³\4çýc$Œÿ ÷ÿiÔšiÐ- bʧ#¯N9ãîÖ‹ ±ÐÿjÇŒí\zù•úåµ»0›jm]í—û«êxãÿ¬}+û Û Ž 9 2 Ìr9ëó·áÅX›OIÅÈ‘‡úJäÀ=#Ž}͈X×´l2qŒýÿþµ$šÄ1²+…O¸7ý柳.³™œ‚å÷ž8'r7¯¬kúÓŽ•·‚ ß%¸>9 ƒœõãõ4^!cj-Z9£ß\‘ÝÁÁ=iÿÚ?ôÇÿÿëVTÆ3Ëuýã—l©ê—lŸßOûäÿˆXÐþÑÿ¦?ø÷ÿZíúcÿõ«?lŸßOûäÿdþúß'üh¼BƇöý1ÿÇ¿úÔhÿÓü{ÿ­Yûdþúß'ühÛ'÷Óþù?ãEâ4?´éþ=ÿÖ£ûGþ˜ÿãßýjÏÛ'÷Óþù?ãFÙ?¾Ÿ÷Éÿ/±¡ý£ÿLñïþµÚ?ôÇÿÿëV~Ù?¾Ÿ÷Éÿ6Éýôÿ¾OøÑx…íúcÿõ¨þÑÿ¦?ø÷ÿZ³öÉýôÿ¾OøÑ¶Oï§ýòÆ‹Ä,hhÿÓü{ÿ­Göý1ÿÇ¿úÕŸ¶Oï§ýòƲ}?ï“þ4^!cCûGþ˜ÿãßýj?´éþ=ÿÖ¬ý²}?ï“þ4m“ûéÿ|Ÿñ¢ñ Ú?ôÇÿÿëQý£ÿLñïþµgí“ûéÿ|Ÿñ£lŸßOûäÿˆXÐþÑÿ¦?ø÷ÿZíúcÿõ«?lŸßOûäÿdþúß'üh¼BƇöý1ÿÇ¿úÔhÿÓü{ÿ­Yûdþúß'ühÛ'÷Óþù?ãEâ4?´éþ=ÿÖ£ûGþ˜ÿãßýjÏÛ'÷Óþù?ãFÙ?¾Ÿ÷Éÿ/±¡ý£ÿLñïþµÚ?ôÇÿÿëV~Ù?¾Ÿ÷Éÿ6Éýôÿ¾OøÑx…íúcÿõ¨þÑÿ¦?ø÷ÿZ³öÉýôÿ¾OøÑ¶Oï§ýòÆ‹Ä,hhÿÓü{ÿ­Göý1ÿÇ¿úÕŸ¶Oï§ýòƲ}?ï“þ4^!cCûGþ˜ÿãßýj?´éþ=ÿÖ¬ý²}?ï“þ4m“ûéÿ|Ÿñ¢ñ Ú?ôÇÿÿëQý£ÿLñïþµgí“ûéÿ|Ÿñ£lŸßOûäÿˆXÐþÑÿ¦?ø÷ÿZ¦¶ºóܮ͸ëšÉÛ'÷Óþù?ãRC$ð±dtÉå?úô7±ö¬–óOÆæxáiFQ¶`ïc†h¨$³’àºËw)Wr€éEMÆO.oq Ç9ÞíèGù¨¨ŸEÓÝB²p: ·×Öªê1ÝɨÄPÈ. eç<{sÞ«Ü pI ¶Ã! ~Ð0BäŽûÜy⣙ó8ØoÈØ‡Nµ‚y&‹ $™,yç'5?”¿óÓô¬›_^¶¶Ì0x£cøpŸ÷Ñô¡%ñ sÛÚ+mc³ç ÝÉoûäzæ¨Fë,j@i@,p:Ѷ?ùéÿŽÖE»_5Ä&ýbVÞBãg$ò{çò«7t¹1y£~ÒGQÍ ]ز/mþzã´mþzãµ—¥y„JÁ6[—&5`sõçµrr]xƒíˆ°¦¥·rî,™_½ÈØïíïÅ(«´MÝ®zØÿç§þ;FØÿç§þ;Ue™bfG+)_—ËBNsê:UW¸¸]6YP&ò#q»8k%-licSlóÓÿ£lóÓÿ¬]-åžé¥X¤ŽÝ_Þ’ >y Tmö‡º”0‘%R6a ÜwÙÆÝ¸bŽgËÍ`i-.omþzã´mþzãµNîO.<–*ìqI`Å­·NXœŸ­jãh©}l]ÛüôÿÇhÛüôÿÇk?P’é,ä’Å’ Ûýá¸ç_Ekù-&kÄ1³9òÕº¨¥ËîóÎùùmó66Çÿ=?ñÚ6Çÿ=?ñÚå´ãwý¶w#Œ0elǦ:ÕíU¥rZáv&èŒjJ’C€rsÛŽÕ—6úÎ..ÆÞØÿç§þ;FØÿç§þ;\ήu#á»Fgš$ŒÜí\¶Îü~YZ‡Ãos6¡ªÌžgØ-Ë´ï´v­y?_ÂÄ­®u›cÿžŸøícÿžŸøíyÞu#Ã~YãÊ^¸9ã'®ÖîB¯·Õr£a99p?Î+4¯~…Î)y—öÇÿ=?ñÚ6Çÿ=?ñÚΞG–Õ…ÄhÒþHùöŒàŒŽäΩi ³TºÚ³ˆÌkƒ*àœzô¥>dfÚVó7¶Çÿ=?ñÚ6Çÿ=?ñÚóYEáT†ä8q’rwwÿ=+sÅVڥΥl– ë MÎ#ùŽ}º*Ú¥5O­ÆuÛcÿžŸøícÿžŸøí`[oÓ´„k°.„R‚ëü$cßóúÔZcÁý´ÑZíÀRÒlQ‚}Aç¥c)$ÐÎ"'þ;Kå/üôý*%?½ý†¬X~ÐóâDdQ‡ŸïÙÁR: qD›JàoùKÿ=?JFHÔ¨i@,p8êk8I~'QäƒgÜÄŒ‘“·ú`sRÈÄÝYå â~äsòµP‹¾RÿÏOÒ)ç§é\æ¬÷J“¼mr.¿rr­“Ž9ãÜV†ur˜ bòÓ~q÷³ócœôõô¦ÒµÃSIÒ4RÏ( :’)|¥þÿéT/šÎMÑ•àu#Ö¥žtŽGYc•ÁS1Ò¡»ů)ç§éG”¿óÓô¬Èžíâ…ðàÙ.ìgåÎ{c®9«;Ü¡ 99þþß­4Dt²åXd:Š_)ç§é\¶¿.¡§=nÉ6ç?gù¾\gÛ­&‡.µ&pÓ¬þpŸ÷BeìÇCŸ~¸ª²µÉ»½Ž«Ê_ùéúR*Fà•” ¸ëUby¶âX¾`Äeq‚3ÁëéÏáY:Âݶ€~ÃK(ºìò7·¥H·Ê_ùéúQå/üôý+’ðí–©i=À’âH8Fãcñ׎ßã] »\Qn#&@0ÌÁ^~¿Ò­$Ñ-»·”¿óÓô¤ÙðžhÜA c°¬ë7¿XÇÚãÜvŽ›Cgç}*d$ê(H ùÁúŠC.yKÿ=?J<¥ÿžŸ¥e¬î³)]‹ma±¾\°Î1Óšx{ÿµÑEäo9*~b¼ã¯áš•%-_© É•P ަ—Ê_ùéúU'b×VE¯ïú?ç›V…›T—Ï9ÌÄ5[hQ:~­)JÖó.1½üŽ«Ê_ùéúR:FŠYåäUå»3äÀ¢#æÝÇ'ëÚ–ð“fÄ©S¹x?ï ² ÞRÿô£Ê_ùéúW9âo´‰‡”¬Tà©ÚÅsèqÒ´#ûXŽÕ”91p}:ò?ÎqP¥wk(ÛSOÊQÖOÒ‘Q,™Vj»±1È À<’9ëþÉÕüïì{_(1S ´ƒÛ S“²½…ó;þRÿÏOÒ)ç§éXzÛN“]Ë.ìœ(ÁñótJжkbâ2eÚ°Àñ“×ÜþTÓ¸‰^âÒ6Ú÷J¦=ñüÁ¦ý®Ëþ~—þù5JÞ<÷(ÉÙ×l™Æ*/\_ÍmzQ÷8Vò™²Ë»gñíŸÊ—6¶+åæ5¾×eÿ?Kÿ|š‘ÞH̉8*:¦«é÷Zš¬§P³”üÀF©µŽ;’xïì*ÝéÌàŒ©àö⨑»àÿžßøé£|óÛÿ5•,€#L·ÑùФœnÝ·vg×Û­RM,þDcœŒ•ÀÏ_cUó^úäû»àÿžßøé£|óÛÿ5Îj6÷ͨùóNír†(Ç8î=*ÅâÈnhRO3Ì®‘±È¸1ƒ–ïÛ¥ªö¹§+Qæ6÷Áÿ=¿ñÓFø?ç·þ:kQ¹œ¡24^L™hl6 \ƒøç×Rj7¶Ë ¸2î`UX(dÎ?‹®<}+)K•\Ö…V|©Ù›ûàÿžßøé£|óÛÿ5ÍC*ÚiC;£îÝž?;dŒã¦~ŸZ–ÅnÚ{Œì’0Ç*ÈJ“Ó©Hüê›÷¬eQrÕ•>ÝNƒ|óÛÿ4oƒþ{㦲l/î5 :y‘1"ɱ`ÑOñqÜՌބa†$8Á!rFW=ñýïóŠb/£C»å—'¦Š¯aöŸ-¾×ù=1ŒcÛ·Z('µ·y¤g‚&$õ( 7ìv¿óíýð(¢Ž cµÿŸhïGØíçÚûàQEIµ¼s+GJ}U«4Q@Q@Š(¤0¢Š(è ¢Š)ô¢Š(èER (¢˜‚Š(© (¢˜‚Š(¦À(¢ŠHLªðÈ®¡ìFj¯ØíçÚûàQE1ØíçÚûàS¢µ·I‘’”Žá¢ŠoØíçÚûàQö;_ùö‡þøQ@––Þjÿ£Ã×û‚-­¹žBmâ$·tQ@ ö;_ùö‡þø}Ž×þ}¡ÿ¾P¥µ·%3GäPS~Çkÿ>Ðÿߊ(û¯üûCÿ| t–¶æ(Wìñ`yœl´Q@ û¯üûCÿ| >Çkÿ>Ðÿߊ) -mþÌëöx±¿¦ÁMû¯üûCÿ| (¦ö;_ùö‡þøèímÄsbÞ!”삊(¿cµÿŸhïGØíçÚûàQE$¢µ·IQ’”óÈ@;S~Çkÿ>Ðÿߊ(cAö;_ùö‡þø‘Ú[ Pýž½ýÁEÄ,–¶æw&Þ"KwAGØíçÚûàQEìv¿óíýð)òZÛ¼«¾›äP( ß±ÚÿÏ´?÷À£ìv¿óíýð(¢¬•c„,jz(ÅM¹¿¼:( }ÜßÞ?#q’MP ÜßÞ?›ûÇó¢Š`›ûÇó£sxþtQH}sxþtnoïΊ(cŽá¹¿¼:77÷çEt%î›ûÇó£sxþtQ@æÇÞ?Q@ÏÿÙawstats-7.4/docs/images/awstats_ban_800x160.svg0000640000175000017500000165067212410217071017130 0ustar sksk image/svg+xml AWStats Log Analyzer AWStats awstats-7.4/docs/images/awstats_logo7.svg0000640000175000017500000164611712410217071016410 0ustar sksk image/svg+xml awstats-7.4/docs/images/screen_shot_large_5.jpg0000640000175000017500000001215312410217071017470 0ustar skskÿØÿàJFIFHHÿÛC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀ Õ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?¾¾¶ó0œ à;›ŸTÍ"xf×Ï$Ç2€pc¸Ù[s•€gl²n'"5$¯>ÕȒdž†ãAÇ–yãëN5$´¸š¾¶2‡-Á` ˜¨àcÊË{ýÚ–O[yŠBJr2Ä,CßwšÓó×k&ç‘’G=qëïJ.†æ" œ®qû“Î9þ”{Y÷TeË [†P±JÊä†=¾í ðý³> W ¬0HòÀ€ZÑÞ’Ìsâv²¨üµY3ÀÍ·‘É9ê{õ£Úϸù"e&…nŲP˜ÆüGÏþ;šyðõœ‘mv”g®2?µ§>QÊ»÷˜·ó4ß³ ûüÉ3œãyÇåš=¬ï¸rDʰòÖçþúáJ<3b?å­Ïýô?µ¤‡Ì*YˆÛÓi#ùu¥’/3˜Œt•þT{jÅÉÆPðÝÿ–·˜ÿ QáÛ1ÿ-.?1þ©~Zà;÷‰?ÌÓþoQùQígÜ9#ØÊ˜ÿ–“þcü(:%’œ¥݇øV©‚3×Ò„;ž?ÚaÛàóøÑígÜ9#ØËEÿ–ÒßCü)F•d?å´Ÿ÷Ðÿ Ó€÷89åÛüiÀ€?}¿Æ§ÛUHö2Æ™f?å´Ÿ÷Ðÿ pÓ­ü¶ûè…jÅ3Ä»W‘œüÄ“ù“OûTž‰ùñ¥íª‡${ÂÔËWÿ¾‡øS…•¨ÿ–­ÿ}ð­_µI蟑ÿ>Õ'¢~GühöÕC’=Œ±il?å«~bœ-­Çü´?˜­/µI蟑ÿ>Õ'¢~GühöÕC’=Œá þZÌS„pùiúŠ¿ö©=ò?ãGÚ¤ôOÈÿÖ¨rG±D,#þZ~´:ÆË´LÊ3Ÿ”Žj÷Ú¤ôOÈÿ#\ÈÊT…ÁéIÕ¨÷„Qœ¶ÐàžBcïÑN8iœ4‘§áE567#£òbÿžIÿ|Šåµ6›©˜g±"w&JF>ñãÐ`þ5Óý¦ ̾t`©Á‡¨ìò–’?)Ë 3.G¦jìÄrÑøËL¬wOª·š»(ê@Ú:g©öôæ¬Åâ­*Kµƒì²®í£&1Xñ‘éÈçÞ· 𙼯6I'1 œûÔŸfƒ9ò#Ï®ÁHhbÚt?º+(`ñ˜séüëa¾éúV[K±ÿCÛ%b^@‚¤d48ëš8õ†®¤HÉ“Üÿ U¥ò#?¿÷Èÿ w‰nG“ÓŠ€ì Áežÿ¾oþ&µ>ËüóOûà…)·‰¾ò)ç<¨ëùQp2]¯FqŽqѤ#ÿe§¦ü¹†ÌyýééíòÖ¡·ˆŒSŸöGøQäGœí\ôû£ü(¸«£‘¾Ú×§8vÿâh1ê;WÖ»¿‹.Øöù}+Fwx•J†rX Þý*u(ë˜ÆÏ\ {5"ú%¨õýëñ¦=C#ÖÄ`g.ÿðóßÒ­ý¦\ãÈ—üþ ©H†Nzò(¸ü½K#¶¸Ç9‘¸?÷Ï4yzè¶¾ÿ¼n?ñÞj๔õ†AqŸÿU8O)8òœqïþ\ B=GÚÚçþº7ÿIåê\¢ÚŸSæ0ý6Ö”M,«¸¼ã Ø?Ê™<æÜ/˜F[¦…+CËÔp¿è¶¾ÿ¼oþ"”&£ƒ›K\ÿ×FÁÿÇkN2Â’dÃ8⟃ýãúS¸ë ûøãÝŽp3Nòeþâß5{ûÇô£ûÇô¢àQòeþâß4y2ÿq?ïš½ƒýãúThå¤+¶QŒò@Áæ€(ÝØyÒ+ Lc`ùUZ)5;¹mäŒG·•î(©¡usö~r Õƒc§°¢Öõ'}™±°úõŸ>v¶?™ÅTVó Èí#çúV‰]iQT#x÷3K+’~GåVã„&0ò7_¼äÒjÃßtý+äMä}®ñHÏ !~Ÿ/#·zÙoº~•Œ÷JhÕ<6ùcŽØü*@µk4dùjóÈÜ’ÒFGóUªÎ†o:UXµ5žvªÇÿ«ùÖQEQEAvAå¿¡ö5PF¤îÇqŽ~©W.#Ti »œ63ÁïP‹«SÐ1ÿ¶ßOö½ÅB¨¥ç¥qŽÿÜ¢ßËW .F0ÊpOýʹ ‹"“ NËœœ7?H7g扗Üãú¢2׋4h«´c`VüvûÔßk ã`ÏÑÿøšµéF¥"6äVõ¥¢Š(¢Š(¢Š*ˆ3°LO?+.^ÜTõR—íÈÏÉ€1ÏôéM—­ÿ­‹ýßð¢oýl_îÿ…6åïÿ×öªEò6™Lÿ­“=ýªìÇóÏ·¥RW<ý:æI=>•´6%ŠÇ*¿6N'ÍqÓŸOzšÛa<Èẽ±Æ ç' pF@ódð;Uèd‰†ØÜœzçúÓ–ÀH~éúVIšbvG}fN\°¨ûÝkY¾éúV_—psˆ,ˆÉÁ$ç¯~:úÖC%¶–Yæ¹¶•yâ1Ïó5j¢†EVòbI6àì=@8éRÐEPEPd„L8R\H'±ôæ¡ 6àN~¡dõuúþ•5Þí±ìÆwŽÙü¸5 ’÷±lãý®¿÷Å9b˜ä‚žþg?øð¥0Ügçÿâ©…î÷¸?üE7u¿øŠ—ÉŸ¦åé×sõãý¯¯é@†ãûÉÓ®çëÿ}T«È’à×÷|è4ÿ/þ›Kù/øPLÜþñ}¾ÿÿRÂŽˆD„žÙþ¤ÔƒŒ“îh Š( Š( ¡ØÌÊe‰‡?*ŽG?Zš¢\JĤAyåO={ñM“­ÿ­‹ýßð¢oýl_îÿ…6§$+poJ¦\’ã§RÒ óôör~³ŸÌOJ¨NþzÞ?^ã§½m ‰d°G7Ë$eXµ+Ÿn†®ŒãžµžävT9e<ƒ+¯ô«Ñ©D’O|œþ´¦Vû§éYß,Íý™;‹n2Ç<Çz×oº~•‹ä¦÷?Ù÷D’y|­ïÝ? šq³²"lnëœâYBÉ;¬/íûöýêK{X]¾kK˜ˆç/) ž=æ€4hª¿ÙöÛƒb\ŽŸ¾ñ©!µŠÝüã4ŒßÌÐÔQEV¾„|ˆß7G8 UŒùsH­ÐŽŒãõ«Ó&óé‡ÎOA€MKûïùïýñÿ× `–yT“$kEÝüKûßùìŸ÷ïÿ¯Kógçecê£ÖŠOÞ÷•HôÙÿ×¥¢Š(¢Š(¢Š(¢Š*“lìßgTÎ~pFO?×­OPD NÄC"ž~flƒÏÖš/[ÿ[û¿áEßúØ¿Ýÿ *mO÷XgüûzUTmÃvöÏ_õ’sŸÂ¬\¾^cŒå‡§p*;xüÒ[{mÿfVþG´tW$X"ygbWÕe|þµa Drê_'±rGåIöuÏúÉïáöÿ tqˆÆ;¼ÄÔ·pßtý+5¼£‚`ŸŽ>P@=úïÖ´›îŸ¥WE]ƒå=*FUQ¬?6½úóM Õ&×ÿžVÿ÷×ÿZ¢ºÁ3™´ÿ(Ïœ ¨#ª¢ÿ¸x¥¦ªíÈòÖ?aŠuQEQEQEQE[|öÀ›<ýüíëÛüô©ê˜Ø ¥cÏÊË€9úS@eëëbÿwü(§jñI,Ñùq³ayÀúQR3~Š(¦ ¢Š(dIrª:¬á±·j–Ýzþ®ßtý*û‹ô  Ñwãfßßp vÁϱ¤jHS¬Zä6FxéÖµ(  6Ò<íûJ‚ãz¢ߨñœ½EQE ÏHÀ-̃…ê}©Û?éÞoûûÿÙSÈàäf‡ W ÛO®3@ƒ=™³ýM:¡òçÇúñŸ]Ÿýz<¹óŸ<}6S·˜QP˜çÜOž1ØléRFWû®1E€uQHŠ( Š(  Š@Ó²ý¥Œü€ ާJžŠ`C'Qþ袉:÷E#-î_ïÎËýáù×&òÛ,§1Ý6>Wü³Ò¬Eu ®ag»`Qp±Òn_ïÎËýáù×0÷ŠýŽá¼Ö+¹S!1ݽJÓFTA!ÎyÛÇ… عг.ÓóžµGdÄenvú åYÑȳ0º—Ï^ßZŠK•Mø´™¶²Ž®}=qEô¸yÆ;‚ }¨;…þb.çþ~Çýò?±®/V–W~ð'ȹëž~œ~¢mv“‡ÿE™6¾Ï™zó×§J¶ácgdÛÉûOÎ0:zt¦ì¸ÚÚ¹õÀÿ Å’ø$‘§Ø¦!äÙœ}ÑÇ'Žœþ”°^‰R2öSB]öíp2¯Ö‹´|œÜŽG?JM· Ý.~ƒšÌ3À³˜™ÀÎî1Mû]¿å˜Û¡;¸Ç\Z.5ŠÎG*ÐRœ‹ >€rsôú~U›ö‹a€AÉ=±ëŒÔ&þÜ]­¹‚l2îóƒœc>´'p5Ïš1›ÄÜjH™”$èã× b±ú»X~Ï!R¥¼Ñ·häŒzçŒÐ×öëuDÄH óAEÁ#“øQqÞjÿ~>Û£ÎOïÇÏûuŒ×êq‚}1Šd—–ñº¯–ì‘•ÁÆy£™Æçœƒ«Çÿ}Ò‰èPý°žòtQ0bFF8ÀúÒËwm³‡`2¸ãëG2 »û?÷Õû?÷Õ`ÉtEnò*ßáÉïÅ=æHàY^lm<ïÍ.`±·¸ÿ³ÿ}Q¸ÿ³ÿ}V)š#-7zò*6¸!€[)Xü݆}? b7·öïª7öïªç&œ0´¹c…8ëëI$‡o‘t!NóÍ+”âÒO¹­y¼ªŽX¶ÐxUk`ãåHÎzÑEÄÿÙawstats-7.4/docs/images/awstats_logo3.gif0000640000175000017500000000515412410217071016337 0ustar skskGIF89af/‡!!!!!!!!))!))))!!1))11)19)911111999911B99B99RBBBBBJJJJJRZZBZRRRTTTZZZ\\\]]]___JRkRRkZZcsRssZs```aaacccdddeeefffcckhhhiiijjjkkklllmmmnnnoookksskspppqqqrrrssstttuuuvvvss{xxxzzz{{{|||}}}ss„{{„{„Œ{„µŒkŒ„{„Œ{””k”œkœœ{œ¥s¥¥{¥€€€‚‚‚ƒƒƒ„„„………‡‡‡„„ŒŒ„Œˆˆˆ‰‰‰ŠŠŠŒŒŒŽŽŽ„Œ”ŒŒ””„œ”Œ””””•••———””œ™™™œœœŒ„¥„„µ„Œ½Œ„½ŒŒ½Œ”½œŒ¥œœ¥”œ½œ¥­¥œœ­„­¥”µµ„µ½„½½Œ½µ”½½œ½£££¥¥¥§§§¥¥­©©©¬¬¬­­­®®®¥¥½­¥µ­­µ±±±´´´µµµ¶¶¶···µµ½½µ½¹¹¹¼¼¼½½½¾¾¾¿¿¿œœÆ¥œÆ¥­Î­­Î½­ÖµµÆ½½Æ½½ÎµµÖ½µÖÆ”ÎÆœÖΔÖÖœÖÎ­ÎÆ­ÖÎ¥ÖÆµÖνÖÖ¥ÖÖ­ÞÞ­ÞÞµÞÞ½çç½çÀÀÀÁÁÁÄÄÄÅÅÅÆÆÆÆÆÎÎÆÎÈÈÈÊÊÊËËËÌÌÌÎÎÎÆÆÖÎÎÖÎÎÞÞÎÞÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÚÚÚÜÜÜÝÝÝÞÞÞßßßÞÆçÞÎçÖÖçÖÞçÞÖçÞÞççÆççÎççÖçïÖïïÞïàààáááãããçççççïéééìììíííîîîïïïïç÷ïï÷÷ç÷÷ï÷ôôô÷÷÷÷÷ÿÿ÷ÿúúúûûûüüüýýýÿÿÿ!ùÿ,f/ÿH° Áƒ*\Ȱ!Cw#JœH±¢Å‹3jÜxQ LjÊl0‹(CD³ýX1FÄXÉ"“•C‡0`¸ë"e";mÀ“m"‘=x0Âe,b2Y#züØnK®.ì ñrÌ] wí¾ +ӢΈ¹l¹öJ¢7BÂÜ ™Xâ-0i@ÄÉ],µÈ‚E• *0Cî5‚xœ•p<ÜMúã#ˆ>&VBó+¢ºF°ÖAäAÄ ½s!N¡;ƒÆ‹B)]i;âÔà^ø1#…9wgÜÛb# <„ðæî¬Ä-ú&QÇD6a—(b·ºWÔÿ&üñ‹Zˆ3Ý­ØˆÊ ]u©q‡†”àeD ÂL‘*U¸ÃXXa…;Šb…ÚLÄ 2¨ÑÔIãÙVX…f¨áFuèᇠ†XІ$–Hâm&¦¨"‡®èâ‹¡xÑ6tdñŒDkÈ £ á@d ñé[8“ !Ã…± Œ¥CÎ9étÔ"Fº` Á&ùÁrD`/8pÈ9fH`E"(@1LRDN*×`$£E“@À Aå@ DtMCœ3 @ô(Ày@}À,ž“Š(_J¹#ÀC§!¢€ KºsDQ17˜ÿ᎘D~²À”u¦µ£Ê(uÚÉkEã¢ÁÜQ3H*zú‘.2`jFôèÎ# À¹ëF¾N¢Q:åêÎ5£T¥±IÓÆTЉDáX@œç DG@4‰ ã¸ãEä!Ž;á¬ζ¢òŽ Cx1K§€4À<, ÈC0’EDçXÃÊ4–“Ê*ft'EÅ,qÊ ¬'QôQŽ4 øÂ¥;ç0¢_b€ ¼D4É®“˜;1'^HÐ|îC^LrŽ 8AG…BtM* ŒBM:éL#Ê5ï›Ñ,œC|F”ÆŠqD8(ÿpŽ8xHlÅ`@ä@4î«*œs޵Fä+°àø a_#Š*ä4# 5sžÍbFç ¢  *&`Nqœ³¬)Ë ‘ÉkL°k^º³¸;UB´©¹S.Dü-œSŽ+œÝŠ(e«ÑˉóÄ…X¡À»HÄ,ÓÀ6ç0A€ºðÀÍDÔh±%º¶¸ çl3ñ’ÿ ‘…+|ÊÑŠQø""å˜>‚½ˆ,C<"ÐØH ƒÜ‘R@³@‰À&ñ®9 |¾k:–±†%p€™ÜIBYˆÃlêr\Û®w¬‰£="Çÿà…‰XA ¸D– )"V ³®q5q]¨~Ѐ j1·âÏË(Á@:Pq¨k< ˜˜„G€FI¤ ’/È€P”#"BÔ"Òˆœ†çEÿ¹CÅàP¢4–CÅcÄ0@ ‰l€© `T¹Ã DüR8&€%-® €ð`h<˜Ë؃;¶€4²‡tA”fàO"€·ÎÑh@"Û¢À#Ρ¥,ôHc½ã$ rÌmT‘Aì¨PàÕØXDÐḠ50.À1÷äe€jÙt©Šq€¡ùH øÀ:Àÿ–Ì*#`„& HÌA–$/à0ošÀ–;Äq Oôâ·ŠJÏ@¼rí¨?_UŒŒ2Œð¬Ú$8Qzr-ÅÔ6 Qˆblƒ¥þÇ$ ¡µB𢥕Dà'’‡K`¢ÞÝEÂ!¦:õ©PªT§JÕªZuÏÈD’à†7È!Õ0©§,rPtõ¬o@«ZÓÊÖµºµ­p}«\ãšV7pu«víê.ÎH‘4’Óq€ ¬`KØÂö°ˆ=‡40qW9X¢ÕPjœ&+‘rh‚¨—ðÄ3’ÊCÊz"â@E'œaÆÁ¤ñ³**'EÄÚÖºöµ°­l?ÔÿÚ6*w˜­nwû¡äN » €pwç»] „øk˜q÷Ô£YH@¸À=¦ çKæ·ÇÄ™p‹[CãÎB•Ù®D(EG÷¼Ã….ˆÜQ/€2Vð‚@Œ´+ ’ …0#JÝ8ÇòmñÆÎá«ùîOF-²„ ² ßÀÂLtñ@àI ³w*\•Ç5¢(@–ñu­°à%ĽÂï|µý äI >À^?²Î™³[\ˆéJ¹Á©„ ‡c ~LÕÌh DðJ  GÒS*±Dì_ L‚· 5k;awstats-7.4/docs/images/license_chart.png0000640000175000017500000006020312410217071016364 0ustar sksk‰PNG  IHDRÅ·%`Ø/tEXtCreation Timedim. 22 sept. 2002 00:32:13 +0100?ÞqtIMEÔ :19T pHYs ð ðB¬4˜gAMA± üa_×IDATxÚíÁª.9’˜óonÁ½03`Ã4Øá…ÝŒ—^ú ¼œG˜e¯{90K?—^zp/¼ðCŒ¡lèÜ‚n8>UYW¥#…B!¥23¤ü>Š[ÿÉTJ¡I©”^oootñ‹»˜™·oÜ-Àüÿþ?‚ý)>z·`Žøõø5Â3œÀ|€~>Ïâ üú?üzËBøâÁ³eè(1\x¥´`ÇCëšš¸…oã”vÄÍw×8se¡£ÄÞ>¨±|¤5޽¡Ü\˜#ò䂉â•òÏ_ãˆrV‹®&h‚í>+8WrŸu?XÐDÃÅIàO÷seë9Ò^“¦€±©•ÐΙÒMâ‚ É>ŒNØ‘Ìcë(ù‹Ãþ‘ˆÌD±ÂJJ¦ _þt?Éè&=I' JÉJ&÷¾­_•”žŒ,‹Ö·Àâ…9ù4x ÕÖ%Þ·ZƒÛ­’{IòÛžOw7<©ÿ1·žÛpr©Î{]VòÞZßòÏB«·z° ƒRMjŸJ>ÂðAI|„~‚W?= ±¹4½«Bþx þim]JøäTÓÓ®b.ÓÆ(sŸ!pµéžç¾ëAÄ‹gv^0ð^4-×-Õ•VÈMÐaŸJîÈð×'plŸ“½ ÌŸn ÌC*Ý ÂÛ“x+÷„¾ ŸÓ4ŸÆI­+ý-£skkÊül§é¨ þq‚þ5E·JVâ©#æÖkj<¨×´”ÏÀ–c”¼£#Äiª¾„’¬o‚rÕ²â„ø\†Ò©Y¬0…’»ër|P²¨hÔ@4)¯°Óøïþáww ñÆ}SŸÝá8Sh !Îe6bàU¸Æ ¹ è¡­ÐŒ~õ׿Ú0ßãYŸ[ F¸UûçJ7ncà-pDÐCa ?ǧøãõßüË¿üûþïÆÍÏ7Ü à^B|šù2¸kÎÁ@p/ÁŸæ{D€~:ÿ4éû~–Å(`ULß#y©Š3 H6Z»x®ÈÚ³Sª«‹ë*lC?QèøæïÊÏ[ë+6˜áÍйxE‡ßÂv' ÷b8ˆÉŸNšQÞÄ“Á´´f{’žv ×pñ. bé sûºø7渀ÙÎxl†ÎÅkEto„ï•@‚¸±PéFUJ†3 S°v@qb)ôÕ}tãÔ– Y[mp‹Ä²•„ÉÞʱ‰[´*Š”áºØúîhÕGŸÌ%…WtäP*½”Ørͱhx+7³­âíÐ’ÝM¹•V²;"^«Q¶l¨Ò­ÏR)­=«j¸†ñß#ÜšÀޏQYüg¼U[²m[œC<‚íW‰7°R)¥kÅÅÜšv\;I“ÕÒ¤)©ë`­c +¹‰ÖOvwsÐmm)®ªv1}¾óÜ–yfùÓK¾¾²²§’a“]ŒâÙ%<"^‡Qò ÔNŒ%¶jO|Ð:˜-\̰ý\JO–P õ5aÌGL3J†ë±H>*M‚7•f-ž]âX?©Õ×׺IÂëÅkb”•Èw^øaðþˆúñÏÙÆ.#èØ/Œ¥ä÷f¸ÙëßÞ¹ºÙ[°H>*M‚·›Â©ŸNŠeu4à*­†¸²Ö¯:ØóÙα XÇ$z=¶8è¦èOWÇÊí›!ãV¸e 1œÅêùÍä8tpï·†Ûê7¶#~F+Þ4yMhðö|K­Wo¬Åêè©Á—îx{£¿‘Ø™Î'VâR;£8Çþ=â&=ÄnãÐÉñRžú'SÊ©jAN>6Ò¿ž´¦:ö{ĪE±Ž^AEcÆâJú)e¢ Yº½V%õé›17»„e³ vëTÅ+ÍKÎò=âD\½ßxéãç;gøÓÎÁ(ÎÁ@0O',Lð§ÏŸ.Á ’p+pÒS¬rWP4x,8ÓËs‘? 1—9Óñ";£Jl͇9^ðpð¤–ç)þôÀ`m5@»}›}UJs¥3½©s¼ôI[ÙV¾‡¿L%D «2l?Ï\³z\Š^Ä0¾e³QùÞâr<ù:üùA1·ð ¬ËmñéÒ×xÙ¥`muõ™j°VΖê‚g °÷ħK ]mWm‚`ÙTÖV£³ÛG×Y©s!ÆrËû¸—»ÞûA+ç½"—¦®G³!Ü<ßcvW²©–j:\ÉCBë`¡¯Ö àR€¼qžçŠõá^nþqöÖ_úÔïvòM+ŃÉþ¨MæHr«&›ÝÖà± —v!iÚp$ϼ‘|÷lߣuûŒ<⼉ÇÃAåîYí¡ñlÌê,yì/g°þú‰?×Ú…’½vÅ4>»¥(­ýà&M:ß>Ž’ÊM¥ô`8ñ 5ÿ 6é¿¥4ÉïóVœ„á(N•òUtÞlŒídûè¸Ó0bí5í‚iï¡Õ/þ·ZwÎ38H¿?]Ú°×!b°6?׫Z£R¬79ëY-"öX5<ð†Òû>ÌàFû»ÝNe@|zŠÁȾΆ=X›‰¸°ZŒ—ø$yþ7B X·ó3a Ú2“)OߨJ+Í]öAÞ(ú&À-œô®Ìÿ+88B«}óI€´ë±LÅQýõoá¿»%€s™Ô%ÂuðVpŤ}yLó=ö(uˆUç¡k‚Ùó2©K„ëà¬àŠIûòÈþ´è1ï±êýÇþ_ð³“#0“ºD¸À ®˜´//€¼?b>Í#>’;͸ÑóòîÍ8»ïÝu`åãÛÁ ®˜´//@Ï~㺷 s1©K„ëà¬àŠIûòZ/@5ÀLúÊžWÛÀ ®˜´//@s|:ž$½?’æG`"&iõVpŤ}yº:ƒù+1©K„ëà¬àŠIûò°?"ÀÓ™ô•=¯¶=€\1i_^üi€§3©K„ëà¬àŠIûòô¬ï1ÿüýÝÀüЊœƒFñîýÓ¿Ü-D;¿üó×ïÿÎÜÍ`WLÚ—çå¯þì§ÍñiVðXŒIcZDF=€\1i_^æ{†™ãÜ’ßâ…q²\žãr€œI]"\`WLÚ—`Ùõ=tb9üÎtd’ÿ°\¸{üá_1M|ênýÀRLº&À»ëÀk½ÛÁ ®˜´//@?=ËIPùš I‰£,Æ­K”Òœ7çžÉ¤.®ƒ°‚+&íË ÐãOO±•¥ó…i-Í.×0©K„ëà¬àŠIûò騙Ô%ÂuðVpŤ}yžëO á—þÛýßý¿pd"&u‰\¹ 4ƒ>œX!Ö|äiLÚ— Ÿ÷{öïÿßoößï?ößïÿÎu/wâµâÇuX£ôáÁ »þ÷ƒÚ¢ÿ„IûòàOt¼¨<9׽܃KÔ×a™fÐÇíVˆföøtül³¼þ&íË €? 0€806·»D}8t¦n}¸²ÂõŸ0i_^üi€£„xؤ¸r‰ìxsfo}x³ÂÙ´//þô‚$K—t¯dò~áþßI‚)Ç…^³HKЃ® ñl8XÕ¤±”#U«ÍÍ"9y,êúèÔìñ°Ý%ò É&‚ëàDrçê:‰Ý NLáñÆî TGr'C½sð§×äxëß·uÜÿÕ—¦ÞÚfWÅÖ«Ûpù©¥,½Ê.ÕØV1¢v^ïÆ³'/–á–¢‡°»D4ÙDpœH>{3èc·‚‹¿XJn·IbñòHÎßÄ¿CnyžÝÔß]"EÿUýÜÅ»ëðOÿR<;° ”@œ`fÐÇyVxZ7B­/¸ç–ÆùäÆ_ˆYm5ß}aíO?Íäb‹oꥮ˜{Ò¥«¶BN2óroٔ白ÆA'qUã«ò!/ÌÄÐÅÏŠùlåG/ñ©&yj•¼»K†jüï7‘*7Ô<±xy)Ã$½±Po—(סQ?·»§¶­Ü’ÒKÙ.L°‚¥ñ(ùXt¾v7Büx“;b’ûiHÎnÙàŸß/”¬È£ýéµ¹¬}'E$ÑhEc°¶ä7_<å #®lWÚXŽh¦wïæ²™yâ µ#“-‹G¯Ò8GtLÃÙDñú¾®âÓ7¶m‰fÐÇGn€ 6) m¼D?òôøt馬Ü5J§Ä¬žìUãOƒwœtN'bX(Íî°T°ïCÃqO~Çgõr]‘ÇÉ–Ge_òTnÿé®Ãغ9É ˜ ¸/WßÃ@øqeºã”É…Õ…)ÄË-³Gš¤µn‰ÎXÄcˆH£¾\t«ýÆœœ}Î]ܸäY²_Éí ýö- FËÙVÀMTûr|ƒ¶8 z4$ÉêÉ^;ñéÅIæTØ'-ˆ‰õƒÆŽ§×WðIÖ‘Húÿ½KLäQØ ¶¢á$Ž+ÖZToÓl“’lMW‰©ó¨³8ý.±‘þqìDšoYýæ—¿dR¶ nJ¼*J|ZÑÏ&…®¯D‰ŒÒ.ã<+`‚B_N>Yiuvó[mß÷ôÏáž,¿ÿ“é‚/ß½¾þq=þó÷•…ñÄÖË=àY6Ø0ÐP&Uæ_ýÙ¦LSkÀ ®˜´/ÏË{ûßa¾ŒGïÏñ®%t{Lº§;óy+¸bÒ¾¼ËÎ÷øl¨™% èüáë›ñ ñ¬+h!ÎÁ@£xw‰&ê˜wסú*Î+¸bÒ¾¼Ä§žÎ¤1-"£À ®˜´//þ4ÀÓ™Ô%ÂuðVpŤ}yð§žÎ¤.®ƒ°‚+&íË €? ðt&u‰p<€\1i_^üi€§3©K„ëà¬àŠIûòàO/Ë_~yíÿÊÍxÜXb’l¸œ£2Ü$M†#ûÁøÏ\碚þòËo«G@gw‰½)j´hø+×6p#»0x¼¹ üé5y÷ÕþðõmÿoˆßÆú; »žó߯Kà øú›øÎýþûýÈÝBM†â˜z&¸´Ù­€ œ@|ú.X¾uAvg:üÿ¾õ~pO¹ŒÄ‰óá`)e8•§LÖ¯ÒåON‰‚)u·ûµ±ºŽÛ(ÖX®¢p0).©Kž7}'ÜÚ÷›z|wÏïôIâäHì%¬ê"„5k÷úæÕÌbQãVÖ|¢Õ<™˜[‚¾ò1màγBéÏ +”aýé»x´?½Æ ÷Vw0ùÿ¯*¹¼yb†ù©¤ ÊUºü¥|ri•ºßEìU‹Ï6ù3@éHüçÓàÅÿq2Ñ“Kœ*{n“Ru‰•Òˆ™Ä§DßÚ˜ÛNì:Ðî" *:b…MÒ9V¨Âö:wñhúnGU Á%Õ÷b`5§ôÄÒåm½ªjߦTyìØ°×Éß ”gFJÕÖL¶,ùDÇ´)‡’Òç[ QÇ®Ø~ÜŸ¦ ÜBl…!&ؤ€4!>}Ïõ§ip0VÉâ쎋¹¦\qŠNr6q£iÏ)MKX˜ã1­V¥UÓçΜó\‡¶nN²&èƒøô]ð=â‚$ÑSÝݵêœV·rìjÝ‹Š¸¥i 0©Cœ_>»*ÎF¿1Û¸XŒdM€#ÑÙüÂ8f™Ç/“iÊùÄYE’¾O¯hc9Û ˜  Ö÷¸‹çƧ×Fœ¡4®J‘H—¼½¤8ýòÒUJéb†ÊÔj1ÛV­ö].~2fN'*Ò'–ˆiTÇä_³…#¹Ö”xUò˜V¢ñs½Ø-nUšžÞø=¢¥ \ÆyVÀŸ¾‹Wx²üþO¦ ¾|÷úúÇ nØÆê<ýľk—aù Έe¶N½ý‹Ï®Ãí`W8éËÏá½ýï0ßR”ÞoYBXkÖv|ÇÆ«m`WxèËÏúÑ”ÖîPÒ‡ÿî–†áÁ%êX×ÁXÁúò3ÁŸx:“ºD¸À ®˜´//ß#ęà ®˜´//ó=žÎ¤¯ì¼ÚÎݸxOõå×zà ®˜´//þ4ÀÓqⵂëà¬àŠIûòàOIœ‰½„U]„°&@i1„\!5neÍ'ZÍ“‰¹%è+K\ÖbùólWm3ó¬Púsà ešÖ÷È ·ße,7ŽüF³__þ¨­”ñ§Läžn||Ȳ ;º'®vî7ÇGJ ž0œ…[iüï7­Vn¥¢'—8UöÜ&¥ê)**¥3IV]§ª%Š‚Å®Ã½m ª“…ÉÆBÅXa“tŽªÄ}96'·•ƒˆ~sp©r÷ àO˜È=Ô8Œ}9ž¡q·È‹À÷ˆœ·.‡˜sµ8V± ß˜í \,F²äÙ‘}~a2±UÜÄ.9Uš»œÐ·4m`,g[4¡/_X½# ñ°ãùŠÏø4€‰|þ´8e¹”¸”[Lœa˜R’O’®^U’ê9ä_³…#¹Ö”xUò˜V¢ñs½Ø-nUšžÞø=¢¥ \ÆyVÀ”æOÇ÷”äàV»g•®‰§D>*þý 2ßÿÉtÁ—ï^_ÿ8vŒÕ(ñ¨`F0Ð@þâóvÒĉ&Z§ÞÒ<€\á¤/?‡w…ï0ßàéxØS­ã;6‡;ó=¬à }ù™àO<.QÇ: ¸À ®ðЗŸ þ4ÀÓ™Ô%ÂuðVpŤ}yð§žÎ¤.‘×!쾜{Î't~¬°=Û;“öåÀŸx:®\";N\‡x'š. âÄ Ûã ±3i_^üi€§ãÇ%jƒë |FùO΃6 ñIûò°þ4ÀÓ9¾?â-œ·?bq@ônY.Å•¶bgÒ¾¼Ä§L웤ßð©)“¾ŸFyzN,j{L˾5 qGñ³Å‘Qm ™fðv+x0A(÷™†ØÉãÓïÜnŒàOLƾ¾~ˆInœËƒâ˜z&¸´Ù­€ œL¿yæÖß·À|€:a7ï=6œOÊ®­– Éí[¹ÆÂèÅå”Êj*}ò‹Ke牓#±—°ª‹^هϹ’¹B,jÜÊšO´š'³ì7®¿ÚØróâ;Íà<+´š œz¦!vôé7ñý«é¶U½ð§ú þh¤ò#ÛGG<¿PÌÊRzÉË]íRYÝ¥»"8dñ¿ß´T‰“‰ž\âTÙs›”ªK¤¨¨”FÌ$>%úÖÆÜvb×áÔ6°ÿ3Œ+:Y˜üa,Tüˆ6IáJnb§::¾OÅ·­ÒË%wWÚøÓÃP^«£ÎÝå6e•»Ý ¼ ,V[3Ù²˜ôÓ¦JJSœo1D»bûq{|ú®6P}ÀX›Ø CL°IiãUO6ÄNÜ—ƒ³;ÁÉýBŸ ’xÏnÃÁŸ¨Žü‡˜²o²ÚÀG|eîGɇ&ÀSš–°0Ç×hUZ5}àÌ9oe‰ÖêäB>LJ;É }ÝðɆØIú²%¼b™.˜À-#‡ïLì_v"ÆE9úÖî(-RJYªÈVÑoÌö.#YàH„>¿0yŸ¸ÈÉÌì|â¬"IßÊÇ´±œmLÐDèËa¨ÿéo#K· ½¸åovˆOô“Ì?S™C‚øHÉO®Ò߬}|»fž `)K/}Fò¯Ù”ÍÒš¯JŸNÔ"~®»Å­JÓÓ¿GT"£´Ë8Ï ˜ ƒê»¦äK›ä;ŸøGò;Ïa[å–1„Wx”ùþO¦ ¾|÷úúÇ Ôg¬@ ý3 ÝE† à;˜üÅçÍÖ­S]iÀ ®Ðû2ÆλÂw˜ïðtÝ«Èè—ï~»ÿ»ÿG–Ç•bþË¿íÿî?‘µ™´//þ4ÀÓqëéøqÞ]ç¯üÍþïþãý`ø±6~¬óî:ÿçÿù¶ÿ»ÿx?~,̤}y𧞎O—¨Š×aw£·èäÔ\j'VˆÙÝhñÔò.õ¤}y𧞎C—È‚O×!¸×Á§ˤ}yð§žÎ¤.‘O×á 1éŸVØÙ£Ñk¤&íË ðúËw¯ý¿#9XŠ’•“*[dÎ÷)a¸œ•\RcÐp|6> sÑŸIî»<Ê›ÂîM§Éà:8‘ܹºNb·Bî³^àņ/•ûüé›ut!ÉãÍ(O@¼×‹÷»Mu ¾>ŸÞ÷tÜÿ;É–Þ¶^eWµóÀ®Õ]Ã[6F”ŽÃ$áÀ§½mÂîM§Éà:8‘|Ã¿ÞÆ²[!™—¬Ì`¾’Ÿö Ì5Äñé œŸR„î^/ÉúË·&žnø üžÐâ#IâÒµñ¿‰#•drcZªr_­óá`)e«ªWéò'§DÁ”ºwX$© ÞÕîÙÄ.Nîî$‰“#±£¶ªŸ¤¯Y«ëçF±õ•/kaeüì|kÝ ÁÉÞ=ÚØµÍÝÜ<±øg8²E!ê8«°²Gœ²Tèb„¾œ{ñ]/¹‹‰^M|$¿éŸç£OÊúþ´HÞ,ÄÆk“f*¦ÉÅYjw±IJЯÒå/å“K«Ôf'84ñ¿û©ªC“'NŽl}¬%Ý£àå:¬êçF…Ä÷¶äʹŒ`…àÅŸU÷ž’ÄÛG§9qŽã‰bαb«bÙ^§t׎OéwÛ8«ð»ê¾¯M?í_/}NRr•Ò,(¥ñÖ°ªµ•×ÂØÓŽ+¡õªj3âL‹z°(Æ":4™lY<ò ˆŽi8›h#^_ÙU|úÞ6 :Ù7*ç2b+ˆ^ly@º;ýÈzXöGTÞýêWåŽÁ©@?Ö,@KÕ ÌÀ¹·Ž¹0XjòØäòè1­’§x{üõ¼­•غ9É y¸,ômÿ~Ђݓ'Wbýïí¡eÑ+²¿é0¦QÊèþ¯»Ê}µ6V¼C }¹ϰ•Û§î@7ºo”œ}Ž#e\ò,l©½ÿy{ ¿oi0ÚÀXú¬ »ÈɧwWq&¢tSOÀÒïkM~óÓœìæøôŒªÉ''ˆÓòúÆÜbâÕb‰¥I c«W°£Öyb½Cv(¡t•Rº˜¡2µúˆª“Yb{†My–æ™Ápb?/y}Ÿ»€M‰WE‰i)úÙ¤Ðõ•(‘QÚÀe(Vˆý K[ç‰í›„?ab´‘¸/—n|É}ÿøýqkñžW½¾Â“eÇ ‚•пƻ[:µ^[3O¨àì` LªÌÏŸž~çòVp…åõòŒÝ-Ÿ¿Å¥×Ÿïq„g6;¥Öñ$“j`U&ÝSÍóÎ|Ï+¸bÒ¾¼øÓ?QZÅân¹|Õ:^¹ýnÙ`“ºD¸À ®¨öenß'? ðt&u‰&} X ¬àŠIûòàOú‘KºJ¹cjZÕÏ iz 8ï™*ÖIží’ &F·B¼°Æ¦~&(&ÿÜ¢HsQ'Y%þ}rɾ~èË[äÅ&^cîtæ®§xŽ[\䃷KEªD†R¤<~ÅÙ–\på!AV ñóº3Ùž7ÿuûèåšL´Gaħ·»Ÿ©Äæ÷gz‹¬\Øà°6E¬óåíòk“#y)1¹KmcvŒñé„àmçS5úÈã»!ê©tß:OœH+–k” !o…À9¹/µ<±cš#º›1qî}¦*iiyb+ˆ.ly@úH>ú‘ÅÐû²B²=.F2=ãx>ÃCÝy)Ëå{D€Ä^×ô ÷¢;IÉÙ‡8Ó›yɳ°àþçíüóV–;³<Ä'>ÂIVèå=à±$}ÙŽCÝNpþ bRnkæ}Réó¶õ|â ٭埨°÷(>7œˆØÏK¹ Ø”xU”˜–¢Ÿíîlß«íê3•2×rú¬ Çžó}ÂÁˆ%>—ÉoyâG{–œõùg‚znJæú=:žÂQšÝQÒ†UóáQ¦£?,ŒòPwìÒÐIbO8ùüiÊ[€4Qò·_Ë‹ÄIÆïó%;nŸåâÄ É|ä›Â-šmü1Ÿ–½©“­Τ}y^>‹KãOÈà®9 dReâ:x+¸bÒ¾€Ÿx½¾Ð)<ƒ†ò~Køþnš¡ x+8cʾ¼Ì÷x:“¾ŸäÕ¶°‚+&íË ûÓï›á¿ŽL“«âÜú2„Æ*¼”O~ÜXbÞHÆÊIK{¯×ßU/oºp%&u‰p<€\Mâ-ú]âqü´ƒ¼¢aô§É»›ã¯rxt=±ÎOÕž¹±¸áÍ,Égl»Ç—¾l÷’*Ç ŽWß.dHùžlÞîùÑ@÷öö·ùïÆ ;/\€i›¯¶=€!Þü†?ÍŸ®Ï÷ˆõ?¸ì?ÄËÃM¸\Ì|^}IOH|¸’ã#qâ›Æ±;„ž"zœùYEEù+…jâd]ÈijÏ=æäÁiûè^ÇÇKBÞîRûïò³û£ ›ûè­ÂäEÙ<0©K4écÀb`WÄ}Y¿Mçg-·u(ñI9—«NÕ¯k<’ásÜqÏí~¬l¥ Í×Ô"ž2PŒ¦ˆµR¨"äq «ÕtØÝÄôvUHXñìEÙngR—hÒÇ€ÅÀ ®ˆû²Þ©íï<Á‚àOW#L>¿oKxr³hš0“Ÿµ|£Öê?å37ŽTð–·¥™*­2´Šš¡˜¦{†÷nô8\„®«Z)÷L’YÕyëeJ¬Ä›õP´Ÿù“ºD“>,Vp…Þ—™O{Úüéðgrp¸öóÌO-î ˆ ÔZôlô®ö.ª˜U¼¼t•Rº˜¡2µZ̶JU?}³Pš®*=BˆS;îƒ ;ñt‹ØŽ Ì3ŸÝa9Õ-ÉLêMú°XÁÕ¾ŒuÂzyðôoû®]†êzyâgyâ¬âüÚ­à}*óIªïæ,BneG\Ÿ{]ªévßëÂkZ ŸòÉL¹äÙò£Ð`gLÙ—gæ§õòð§8ZÖiÙð\ËMÂ9è1Îô¼­×ÁXÁÓöåyÁŸPaTrÊ”.mÀXÁSöå™1ïçk3é–“nC³XÁ“öåÀŸx:“ºD>]‡¿ÿw_’ßñ‘õÀ ®˜´//þ4ÀÓñéUqè:¼;m󿾆ßû÷# ;sXÁ“öåýé}õY}_·8åݵ€çRÝnpOPJ–7î_xp›Cñò»¶NÜ]¢ÄÛðï|xs7.üÞ–væ°‚+>Þ<ÁŸË'‹—RÞ]x4öÍYŽ\~7.'\¢¹¼ ·®CâÆ­ Vp…·Ç›çPŸï¯2G£ããã³Õ ó³M„ðsø/ýy”:9"¦‹P$ÉȳU"ÓbAb|½T_½ôÁ%*ðÞîÿjÊV”Ç€³E­NÉ êò¦´áìV¸ÞVpûx³<ÚþˆÉÞÉ•a×ÊÒááß-Ú¢ôc#Ú ÇÁݰ7áÖ2yCOÅ@²˜ 9¢”Ίùˆ%ŠõUJW«¯í©¦¼@¿—°3ßþàGH?’\Àno&Øf…À¤{.À'ñ¨¸ZÑ·ÞIÂÏù.qgìø-º­Júêq{‚îÄÛù“Râ-£ÇÈ3ÕÇ€P£­öT$/‰ã#³èê<γBÕVÈ`û÷»ø¤œËCÈ}ˆûçgÜ’„;xfÒ˜–øÿ»Ÿª:[ybñòüˆø¹[rÄ(üäo Dý´ZAÔ^r+äLÚ—@ð§8Ðqˆ:ù–ѲTƢ̬0¦Ï'.·–Ø—æJ’˜Ö,Ë $®ÃÈzðÛú4 ʰ¶[aÔË< ÝzùÓ¬ >}Úüéðgr0÷zW8žB»Ôz¶}„ Æ™yúäG5CK‰Mi¶–i}Wò˜VìP&¿»2œó\qc#¹Š\)m8'Yሠ¶çY!@|ú.´ùÓÕƒÁÕ.%KTÓ´’|{—)%H~W(êéõÌ•4¥”z}•:–uøÓ'eñAñ¹+ú\Ý9K¢˜SÄéïå$+SBñ黸t< ˜šIcZŠëÇÔÑ|.GSℇÌ"P8Ï FlX!bÒ¾¼¯h©Bh~† ýÎÁ@Cù<ã-€6à¬àŒ)ûòÌ|ÞÿWßÏÖfÒ=ÕØºÂXÁ“öåÀŸx:“ºD¸À ®˜´//þ4<ް ··uë,’Ÿ“í”.®ƒ°‚+&íË À÷ˆð,ª›o?I×àÓ+`WLÚ—€ø4ÌMˆ4‡Øm{Þç§J!êRnbÎbú¼PQŒ$A5e.Fþû€§ŒiõVpŤ}yˆOÀô„sò#Ùüýw¼9Ki£Ä<7¥DK¡ùVäùµJ¶lc>iL‹È¨°‚+&íË @|¦GÙeHnzÃn)ÌÁó.ŧ†¸ø¹+“Æ´ˆŒz+¸bÒ¾¼Ä§N' x{›À=iL‹È¨°‚+&íË @|¦gìDˆRn­Çó!®|\òÒd•Þ*OÓ"2ê¬àŠIûòŸ€é ~jâ_Æþ«e&´˜[ü§èþ–Ò+GJRY>GSÆ´ˆŒz+¸bÒ¾¼ì7 Ã&ºÎ »þ]kn7®¾74>=ikgke`GLÛ—ç…ýƦe¬?é+{^m{+¸bÒ¾¼Ä§dxÊwÈ´Ê$2ê¬àˆiûò¼üŸþáQfçnæàíë×àEŠÞ-€#^_¾Ð)<ƒ2«2?Þ¾'2z7XÁ³öåùaþ4ÀÓ™ô%3w=€\1i_^ÁŸ~¸ ÿ/ ”ÉÌAa ·;KL’ —s`‹{„Ãv[é ÌqÅVÿG©þ®zt&u‰p<€\÷å¾;—ÏqÞ?r|ú‡!?þw\­¼w¸…ýÏ(#nØ1êw òË«½#2' iTsËÛ׿è÷ßïGîj2&u‰&} X ¬àŠÐ—ãÑ»ièöv››ë~.áVº+:&ü¬¥ —„X—ž[\âÆ¬ 3‰¢âßFÃʼnE;æ¦Ù –S&ëWéò'§DÁ6µ™uh8Qoõˆ¨äd€S.çSê€z·-éY¡[i<ìÝ·ŽìÜáN'Gbg}UOý‡-9ÜÛ4ç×™»wƒ\QêËù½R¹y‰·{Ñë»,IÃþˆÉÍ»tP¼Çç—sƒ '^Ury7Éâ%Ë*~¤ÞùKùlÒ Pª»Q{¡”äGâÈæ£U¢®¤è8Y~°” dÜRíJ‰‰ce6¶¯;Ù½Þäßoµ«„«óÄÉ‘í£Ÿ½¤K=©K4écÀb`W„¾œYvÄ[¤xc-ݯcˆxÆÈþ´øÀ¡kJtnÄ<ódù©Ø«è‹#:|+}Ç›o’C¢ð’Úc«)24Ý"jÓUc'BTšJÞ‘`3tÀäT>£nö¡0ñƒ»3Ù²˜ô˜Ô%šô1`1°‚+â¾,F”ZÑï¼ñµ,Èþôk5®¶ 5ÌŒ÷†õk…“šÊ•-Mk‰_Ÿ)ó:”œOx“^\©=Wäñéå™Ô%òùð÷¿úò7¿ûÿެ‡O+l™!Þÿ]Ø ¼/ŸúÚß§éoaØzyvÿ¦uÅYækú!qÎtÓˆ/ª ougÇ®æÑ ¾€<î;p©œQAÑñ—+ w7Ý?NÎ>ęަý¤Ìág”¹·ýèÆ…ßëáÐ [Á™^Ø Ð—Ï[ÝKÌÙÏ]ø.züé]K¦{*ó;ÅK’XÝ·ðëÑmd7\)[‹·§_^ºJ)]ÌPìÕJ¶C´½} ?çG’Äâû8KÎݦI4`TÈ©z;}ÂÆþ_<…CœÒ”xUv—(ñ6ü;ÞòÈt8µ°3çÍ [Ù [!oâÑ;¿ W‡tË wÒÄIó=ô/Ciòo¶”’4Xe;*“Sv;êsî›ÚC“<¢ŸZlkif–©ÉG,ª¨j#ÿ„QùݧҢ"‰Ý_Ño®žª&^Õïìçš™àvšÊ\j<ˆ[+l3ÄN>:Á~·ÜÁÝÞ®g‚ý=ß¿—D_D‚‡QWô}ÙÙ v_•Ó*ðÞîÿÝ-éBd4ìlQ÷ü•R‚º¼)m8»®7Áf°Âö$Cìøœ~óÖËS8õËýû<ºÃÕà‡+BXý“2eý„ÈhòÍßíBú‘äv+x3ÁŽ7y.àŒÏCù-Œñ§`^âWö­GQ} 5ÚjOIbñò8>2‹®Îã<+TM°a… ÏÓoÖàé¸]òLG| È—¨«:[ú wáw~Düè09b”a^ò·¢~Z­ j/9"Za+ba+&íË €? ðt’˜Ö,Ë $®ÃÈzðÛú4 ʰ¶[aÔË< Ý‘C"ÉÚVŸ¾‹Êþˆ[mÞÌÁ}wàvò˜VìP&¿ïögÎsÄe¤ä*r¥´áœd…#&ØÉƒÖw¨çjˆOß…àOç«ùê[²ˆ7ÀÔ„OÊâƒâ¼Wô¹Õå ’ æÝµôÎIV0¦„âÓwQŸï‘ïðï@þM–·†Ž7½ ’³p1“Æ´×!©‡#ù\Ž¦Ä ™E pžìûb…À¤}y^?/Uõ‡|‡è+çžq~<Ϊt$/àvhÎÁ@#ùüyƘmÀXÁsöå‰yWøÈû¹ÄÛÛóTæ~$Y%žzkA0‡[F[`ë `WLÚ—@›ï‘‡ûÈ'~ˆgà&sÉ«m`WLÚ—@ˆO ÇÓ?’pu5[BÔ·0iL‹È¨°‚+&íË Ä§?8wŽó'Q%†O˜Î=f=[¸€IcZDF=€\1i_^ù{Dà#ç` ÌªL>½òVðĬ}y^ôïà9LúÊžWÛÀ ®˜´//û”ù‚.¾Á@ƒø!¦õþp·Íüà:üß¾[Чƒ\1i_žâÓ°3iL‹È¨°‚+&íË €? ðt&u‰p<€\1i_^üi€:¯ý—á¿øÈÝriL`TÈ܆ð÷ÿñ/÷ÿô4–|N²)Ù©ÂÄLêá:x+¸"ôå|X¶ÔS&K7På6ZM'>IŸv˜? Paï¨ûŒ´½ß:Ÿf‘ðHâü÷ßïÿÝ«–w¿óoþÛòßGòñÀeÂü°ä™ïV-ÂÌ]`WÄ}9«Ç—% ûûÁp*Iþ…è7—PÜu*.@| Ýw –ž¹óûAñÏ2¿¤ô4¯<»çh^ŠQæD°ªfîÑ'øý÷Ö ë$Êÿ™ÿN®ÍOÅéó4Éo£q²ü_±,K<Þñiè+¸ÂØ—-w+ý’R²ŠxíÏíú=Wü7>k¾z´@|ÀD¥ÄAë­ÃÇóKâÌã«Ä¬JùTŸÝóy‰IPaû{Ž˜ˆ¦ õ“ “,qcÔ@|ºÁ ®ˆûrÒ“ nuä߲Ѿûµd(×>”.Qd(¹ãŠ‹·B‹6Œ’ãOTˆ½Xe\0hÏ»£&@碖†åµ`ÇÈâÑo¶\•IbÃy¶!Rn‘ç^LêMú°XÁ}}9v:¼lŒ§s$S;’»§¦/±WD¼$©TöV´a,ÀDܽEB÷ÓG¢ü:¾0¾VÏ꼘8îìBg¤ê‹'qåƒÉNeR—Èíc@nSWóòÇâÓ Õ×>«ÒÝ—ÅéÎ=n[Iþ–RF‰´©£­xj*šùÓÎøvxTžÕ|Ž|¦Ï izL¿˜$¾Û4µcˆ¡ôR¶%/Y™W}1ÌŸˆèLßþ â<ZA|F]Û ¤/geÄA“ƒÁéø¿¾;ÝÁ›c/ͨVŠîÓñi€ É  Ì—ÐÇ%Ÿ¤çëYå‰o†9*ùèSŠ"8œQß){É–ÜšÒ$7ò丘,vÆÖNdi)ó¶}â02*†E·Ñp®ðf…’ ¶¥­°Ä§«#¿øPß°Ÿ¸¤Æ°´x‰.ƒòØÜ[[µ±ÙÕ¯Ÿe¾gç^€Ÿ™w×ÖÒBE×z}5ûXþ¶ÚÆ¿ú‹w—(™™à_E'ôç°–>i]oVÐ5¿ª~æÇ¾|·«¡5òw…ÿó=Vãú¥ë¼ÝP«¬Om$¼²/½»<ß(œOSIÖ@\ÏVxˆ bN¿yøÓ bÿàc`q3 »DûãÇþŸ+¿$¸¹TgËYõ҂ƶÕÛÛn…ëM°Õ¬ðÄx~¼™Ë=àéÄ1-oN³Bp:¾I…QìVÀN >}|ðt¼}RfDÿô*ùˆSŸD›ñ™_ÇGÄí9“#ÛÒþåyV¨š`“¬P2Á¶´“öåÀŸx:‰K4Kˆ:v’ýtš>AÓ×*Vö¤sÖw¸\`…\ùG¬°I OŽ”¬ ®ã±¶“®%¿øÓO'i嫌…ßw û3âcÀA ›ö¶Ô3)ý¹±F-H—¤ûrÐ,IèËÆUê”Ý•½½¶–…äZ—Òó þ4ÀÓÙ]"Å ô鋜÷jÛæ•³p’0AñãM¼) ²6³5癌ZÖÉ"äð="ÌM˜@o†ŸÈoÒbpÉŸ«Å dÒ5ú>½ÒíègÓÊY8Û ˜ ‰j_Þ÷j á°#`|<Ù&P.è£olCX*ÂR…¤ô$7·Ÿ€é©n™!Îã,Í”µÌã\ŒIç\*‘Ñ|ŽJi»ÊÖÄ «6 ;çYÁ¾[;Vè}9Žç; ÆÇóhqi·Ýd1±ˆÖ]ÆÄôÎØì 3ïþˆ!Œ­Ý±òåY|U~׿»ê'0çžjÎï¯+øâ[_.MMNŽ—œ`Ŭ±W­_¨xØ¢0yš üéoû#ŸHI¢ÝkúÐëŧá2°‚+ÄùÓ?Ÿýèžö1äKÄ$·`þ4LOéupiëlcnù‹æU§r>jþ4Œ+¸ÂØ—;œé#3˜ýÏ~>ñi˜žxRæV›üZJ¬ñ¹ZÜ@ˆOC7XÁz_Žç@W}Ü|‚µey»8Y)ç^WÉsëž“}6ÌŸaþ´sÄùÓUønI†ùÓÐ Vð…¿¾¼x ù6šùOgÒWö“NSY ¬àŠIûòàOÀÜ4Å› N‹Lêá:x+¸Âa_^98Áüi€2L‚rÄs.ÿñ÷wKÑÌ®Ãÿþ§»¥x:XÁ“öå > ðtÆ´,õVpŤ}yð§žÎ¤.®ƒ°‚+&íË €? ðt&u‰|ºÿŸ~™üެVpÅÞ—_ÿöCeÅ?“ƒ"–4­¼ç¹ÿ§WJàüiapÒÉIòSáˆù&¹‘Oq÷éUqøðnî¿ù¯¿¿÷ïG¦h}`Wä}ù}ÌûÇßç#ÿ-Ó¬waöÿòûÔ.RHs½xGÀŸ¨³wûÐÃ=¸¤}ÃÍŒƒÔ\ä7ò)îâ»K”Èé_lo‰õÃïm’fÐVpÅÞ—Ez'v[·B¨¨”‰ãÇñ©R²RÑ?‰ ™D|’²”?ýÀú‚3½ÿq—VÆ/ËY=·øÏ8qraÕWWå—èu)”\u9<“ßÈc—:¾¯{#¬ à\η+K̥ƃ`Wt¬ïçûàŸ ø±œøÄñ%É]©IŒ¤Ü[Rt.íÝúþâÓ”‚Öq Ø~VÏMôžƒ­ó<·j]b «WÁt7òðʾÀÛ'®x‹íy‹ŒÆuySÚp°‚+’é7ÁéÔc:rVeoUoç„W⛑ÃÛ þ4€#ªÃD>ac×ú—$7c>}WG~§<ûÞi¹CÏu#×]¢ýñ`ÿÏUu‚ëà­ uí¿ïÖÓ¹ˆ“…¶KZ>Vȹ÷ñFœ}Fç.âO8¢c¤ è§nÝ'ÏClxºyÓòæ4+×Áax»0B_ŽgP”ŽèTƒ;¥àwÉ¥NŽ·NØÐ-¹æOTà|âòI(ÃÄØÒÅܪƒ”r•Ÿ€AüQÿ¦~¢”'/‰ã#Ë8 “Ïܽ¾ äå•—á<+TM°a…Œã}9ža¨|r£\¸•gQ³ÒóL.O&^o7M­ÆŸ¨“Ì©ˆŸÈãƒG—õÜâ³Çç{ä¹Yêb¹êB›| ÜAã÷SÕ;¨øa~y~$Ϲt#÷O\¢YBÔ±ëà¶ X˜š`…\ùG¬°I OŽ`…œ¸/çcr®è?ì¹%,¤IÊ*­TJ—ölð§LTG“­00m¶Am«Ʋ¶ÞáÆ’õª²†F¸gw{“¹SÜÅó˜V¬„ä÷ÝÂþŒøà¡ T¬Dl…QKÙäé¾ô#K2黦ÀŸø€¸„\-_ø(ÏžïàATå°'^ ÏKž)ôíÌGËÙVÀMLÚ—€ø4¬F>?!ÙZ¥;qÂs9,¸ŠiÙQ"£´Ë8Ï öF±B`Ò¾¼¯ŸŸ,¿ÿþnañúòåQ益ÃÛæXS3«2ÿÍ_á:ÜVðĬ}y^ÞÛÿ0ßàéÌzÆóVðĬ}yÞ¾q· sðÃFfßxáItÃ|€~:_lå–åWš =.a)cÎGx}ãà‘Ö<õôC´ °<¦õò˜r?¬4ôM½ûï¾#­yêé7œi&:÷±ô?·È×/IJÉOíKÅížb"dþgìSÆ&ùçbì¿KÕ//UGTÎÖû¬2ö G´E¬[(ѰŸKâ¡nÝÊý·/3=fåÚü‡± ‰x¢Sž§QN麕s‘Ûq.€:÷Gܽɦø¥ý’àÌ%qÜüÚV·¯”>Ž[+–N åö9ÙÆ«Œúwô¼qh¿ñß«Û]ËCÝg —rž¯yÜ™V&Ò$ÇÃ$–ü8Î4@+ëåu,a¿DÏ­Õ™NÖ¸0æÙ$ÃAÿ~HdZß—G|6ˆÓãLô!ǧÅçâ9Õ [/ÉS–²*M]ÈýË<}ò=bžF¼jÏ9—P©ZDÕqb¥ Dveêò蹀ƒ¢’„``8ìÐ![€~ˆOôƒ? Ðþ4@?øÓýàOôƒ? Ðþ4@?øÓýàOôƒ? Ðþ4@?Eúõz%?’ßñÁ@SÙbb‚nòª…Z.¯ê¤šgwÕ:ô<Š#27©%ÿ÷xYbnwi²CQŠ6”ƒ}¼/·ããÀ1Z9Þ£û =»WVç.”á}ˆÎkÉz › `adú½?¿½½mYÇ~?(võ·o ‚ ž¹XÈur}Ñþ­=vŒÕ^5·½yœ1\ÌíüÊ®4Å(:‹›ý©¥À\þtìLç„~³LÎ&ñ*1‚¥ÿI&É©øò8q)ò”K( \ ˆ2ˆ´„£ªê±[ã…ŠÆn[5–.ƒRëÄYTšY~aÉÄyôÖ["ì ªmÉ¢Lû8sñéx×#Þ6ößMøJ>Ý"éA åò0R7½ÓWôRMy”Z(—Ç7¶ŽZØuk‘!WÎðûVRÍRDmklQJâäT.€®{ÕŽDÈbªµ wZͶj#½:[KvÒ‹[+˜oI¼ÙLç™M¹•´d¹POÙ”§±-4€g¦ô§Ž ^ybˆF‘ì±7» b-Œ7ÂŽSckÑ'Þ5$ÕÔciá÷yŒÍÖ¡`Ç%é–§ÕßUý㽸‰óÚê]‡}õÐௗwËð!ÊGFê!£|S :Žâ´†Ø“™öZX j Tw×b  %å C©fIž±ªnÒsŸH­æë6÷Xêˆ:D=b—˜³{ñÁjv—2¶)Z:RJ“­ý} œàœ1ñéü¥ÞVxÙ§äPšöZÊ$~§–üØ>FwJsKe%Hú^^çã~õ5¢ýBãLVñ½jU‹Î·BÜ®t6žÉ}/½£¯²WܘíI™”ÜÖj8j­êŽE€ãÕï¨]S{»—óšÇI›ýI˲‹Ô§ËUú¡!ÓÅ;˜·J[}šÊCì£8h˜‹Êzy–~ž<…ë7q´Õ_ó ©g>K¡š²#veLߪ"cš0D—¿;ñT“ºJ ŽXÙ"€½}vh /7£iâÞ¡÷”QXD=Õáîët}ݶ¯"CºX‡H§Qû4¦7Èã#[é*£´CºmÇkÒ¾Š¹×€7´øt>•RVßvå[s‹¥2ºÊëQãÛm%¼-^’¼Ä/M·(½µË&&Î_‹4å_=•×K1PbýªÞô– §ÉW«ouS›®Ý^ŠítÄêJe5‰*ê°ÕpU]5UÄÞõ”}MNéìq>Múï>e¬N©ƒˆ×[šE­±y'yŠù(³æŒÝ6dn¼[• mÒu먘—Êw?M§ê…Õ>3;( àiÐë/£UÕ˜àáÈñéÒ›å3† †!;Ư¬`èõnÁ4À—èçdzx,øÓýýé°¸ÇN|PLœ¤œ…‹×;^ôtXù{İ>Q²N²?VéO(–@ˆOÇËõçg-{¨†|J±íxek1n<’_^Ú³@,(Y`;¹°Zt’§X5Eññ\lQ€c¶€ñ˜ößlÛ¯(»[ë«Yç‰-GJ™Ïγ͓U‹Î¯/¯ ‰K àº?mÙ·)ÙÎ^|ž8v%“ã!ÿ|O,{q¥Lô GV©‚Xz¾ÝW"›RÛÒx£îOÛ»cjÉO=˜_&Ïufj5À,hëåC¡­S=½2Gyÿ³/FÛ”IÓ©&aJ3L¶ò4îî²à´øtìtZæOÇ)ókã¹ÊT‡êå[ïd–…2¹9™®-NïО¨Ÿªêà^бRË'}€6Ž<ߣÅ}ˆÁ?èçdzx,øÓýàOôSô§ãïõ}û.É|QΦ JÛ·÷úªcO|†º@ö§ãu<’µ¥sw*9xñ Ê2Ò×Ó*Àt{À‚?8ÓÊ6%:¯o„?ãSÕÄâŸúî‰ùn‚ºÉ‘üÏäÚ’ØŠáHIøä=e©.ÝÕ5œË,ÖNLLôžÆ§ãYlwÜýoÝ)OÈÃáùµznù>ÞòI-òS¢ØÕÔ«Ï'ºÒªuÑeÖO‰ªÈ/ÑÕ[5Àªhþt“c”»\}X6>{â|à«6Ð"ÿÙEϤdbñ|w­í#vµ¸{8³ÛF›Gôû¢ÑG8Òô㥩G¤=>Úì°Uç{T_aïè/°š²2&nÊp`ùUñ“×ÇxáAæ×&s­: çub©òIjQälUK«´G¥K›Ñ!¡’m©5ÙE,½Ô&z³ßA‡„C.9(dG²älÉ@"ú¤µj[mmØC´wdÐ2¾å 7vX1ÏŽñ¤I“¥SUå´NëÀÒ]¢"muü¯J,b÷ÄîS­×ÀÑ^ÁTwcúèÊxê¨(KÒUí”@…!¯ç Z®=€Q\?œž]"7ˆå‘ãÓÊÛœéUk7…×£«¥úfšXïf´^ ôó‹ãY<üi€~ð§ú)úÓaižø ˜R?r6ÉbŠáàÅë_\qŸ F¾"N­æñüí¢¬ŽR‹Û z»3"¯ïñ*ìí.®û!¦¼¥2q¹·ˆÁÇ;cÃ5KÊT׈<É×ôÐqàB|Z¼¯‹+ë(±í8œ,£†ùÁüÏ<ãµy&›¤×ã÷ùq%ZJl¹VT‚~¤T£Î-§JrVUZRr^¢rJÌp«_c¿V—¤”§r¡¢.cΛ¡C)×ê-¡$Xø¤Ÿ7WËæsq úe‹X¿¤8Å|ò ãSŠ<­×*&”ê(þ.i#I,¦T4YÉ’¿]çºZª(zÓK¯Q©”Þh·òk×Çw2z[³jÒdÒb›Úa“ÂE •ÖF*þ´ýÞw3VáM™XÜb㵉ÿ$Æóý]‡x!F_W—ѬfÒ¡7ñª|j½"öª•öVݤ'½V³Oöµ$+MÕ=.Û¨<»óiÆhÍ&â<ëw¿*±KÞZëV   ->߆;&r$ׯ³#ú‚ˆÝ޽¶zªIoyâ&-%ób•š&ù÷É&–Û7“!ÉVœÍ\½*žâÜ*L’¸¤®Å»Õe8Ò•J9´ÖÚ˜ž)Ô­'YÚ¿ 8ÈÙjÞF;¯äÏAžïQŠ`qw‡é˜·ÑÎ+9À£à† ÐÏ ß#,þ4@?Eú•±VÚ²¬@w­‰5_S´r¡}“çë—9+Év¥$´®ÅÖ;»:ÇWrìKßQ/ËxuP '5ÈÅÚ$ÀòÈþtX†,ìü'.d§¿Xîe>ÕZ£g3¤§ø7üK9ÂúÓú€.î1QÝ2#Þ‚._ôWL¬ç“Ë)–•œÊŠK2';T—r—CÎåŒU”dž¬¸œˆ¤Èß$°®Æ’´ñ%ŠqKu›“"¿X®(µšMU«6!»ÌÆ|bUäOúHkÇ1ªH/Ýbݬº¹•V¤hoËÆQW¥Æ·Ÿ$«&moR§0ö…j+Š%Ì›MiÐjû€³©ï7Þ/)Ýq“;™è>æžGü»ä(—îL%/¡*˜x_ÏÏVÓˆ¾².¿¢X»Àb­s=—ä)ÔÒ`ª’”ü³ª”ZW‹hÒêVð,«ù(:Ô•iï8éuÔól5«ÅR+”ÞŒÙEÝMKo*™Ïh£jÛØ¤'>}‰™w'Q÷§ä÷€·ÂFq¥ŽLy³mg#IÇÆJWõݱòwõû>¨ðäˆ=·DÂݹÑS¶Ò!Œ^M»ÌFu‰•6ÐýLkÏÐR„Ñ"IˆÔÒ c—Z,ñ8»^Ù&mÛûBÞŠŒšT^/ˆ’éÚÐAÅŸ>Þ(½,qÄ¡l-« %Äè‹ÀÃ5Öá‚äÁã±8#Ïód>'B6õ V™ÔÑ(Ò¨ÁDï¿u°6#×ËSÞÉ6åsĽ˯=è,&a¶Ò‹û#Eè™tkO €ÅLJ€«…*ꎕ³©»ÌeȨ~aÌGl`ÆY•P Ùn'4žã”Djzñ×WœêfNbØ|Ò{Þê°®|Ccù¼&/K,]™š\Ê_¬‘x•EέšŠÖåoX9n·N.sIZÅ|b’™'JÝaÎk0F­)]ÔaG¥ÄMíÄRYKÿÊ{‡ÝRF+Xªß4ìt”¨vd‹e•¢õ¶RM¥IØkMȃ¬2ø2.çÞ~D/ˆ<ßC™¹Ám € ÐÏÈïžþ4@?øÓýýéý{Ä×7âƒú%£ÄG,E ãšÕ[óšžTz© îŠ'ê« Zü ´WrãŠÈMe;øEëW[Î-«,_Ömí?iÄX‰³ktÆXtÒ]oÈfzÎgh»uoZ€ËýéxGßxY}G†îÝ¡ò%u¯Ôkêõ3DÃ÷⾆»\=Ï:±³F-ÎfHOñ?nø—žŒ°Ÿ‹e{›Îýlqs¯dïÜÄŽCA¥}J›S$óŠ[*Ä•Jö¤È7õM’å…–dS® ,íúVʪ©\cz‹“òƒ¢•E%ëRÅ&Ë‹ˆmWÒjµúº¥šZoNu3?KA­Û²¶$ŸR,hï/Љõ.Ëÿ›K¥Èß$­¢^K?Þm«£Ófª &?Rm?F[ëE‹;>&]ÞÒä,Ô¨¢VDs+fµ‹a·‚Ø_”æT2M>´ÚU-¶Ã-ë¹Æ¶QjWùX!êÜÞ\F¡íؽsXBޚś¢ØâcIò‘¨zaI˜äwI$ý*eôeÓ¯-Ý•K7ñ&T-×’^ŸY‘ä\*()Ql–ZlÙ ®Èi¹½•Òë±´ÞÍLSA­+9(Mª°èÄ(dÉ}ÍU—ˆ´Æ>;¤ÛVFÇ ÙÚ`¶BÇ)=-WÇÌŽÞ­+°jľ[LS{ë¸mYÌZm“F+t”›$Žo²ã¡Øóй‰ ù%ùƒPµý Aó§;nb[ïh²ÉC°X¢ñÂü ^ñÃâÞX•ÁR K]ª9X*ÞQn‡«—[l(¹C %9ígí—èÍÞžmþtѤº#M±IM±˜²ÏR’¶Of]Ú¦¦’Hhï§FZ…iÒª8À6éjko}ÍÃR»¦",½Ï­Ü&“P‚%7ýfgU©l«ª-w ‹”«Äôù-¬*ÀA>Ïbçâ6:äþªœøäZŠyŸ]ñj¹7>šWrGõ_Ò-|‡lG5¶Š‚Íé1J;\cM.B"ÀpÅž”aívŽ9í=¨/2uwý¬ò IÜÞø`m¬—ÞÅŽßì9$)Ký§ôV±täŒZtd¨O½Un«•¨@S¥*Ùî%Ÿ”³=}©¦Ȧ_{°‘'¦4ö²!’wdnixÇûìÖÕm_W %"›=‡Öþ•ËÜ-áÅÑ™QýÂ’OIEMCDõ½\µÞ£mÕƒ¥¾Éµ­7>€ƒ\1ÚžüÒÇø*¿éÂj¥’³¥ßgTj+ÏE˳ÊÅh-÷ˆœÉ•dMµP4ll$öê4]"ŠªèAlNFÙ†k,ÿQ’|T±t‹öJmµÚ´”ºì CºmüŽ^”Ä(Ûñ.¦4£V´UQ}™lj'5VÊ"@µuˆÑjcõqFľÜwÿK7Ž–ßf¾è畚-ü@kXŒÛ;õíÀŒÈñiå ÜKr 5Àíàô3à{D€Ç‚? ÐOÑŸ_ÍÇkÂ×î¹ršd©ã’(YåËã¿"º WÒëuP]Cå‰jgÉØviýÈl—ü.‘n‘m`¡â ×·X§ÏÆ`Gþñ•íê/î#®tsïÒ3g—¨T𤊟T£µ§Ë¯];€ãŒê#Æáξ²Û½j8ˆŸÖJûj¾Jl[ i'‰Å?«»!”’UKÔ+RZ­ÖŽÆVò)¥L9¢’•x¹¨(=O£ÒJe%,™¯”O~ÖRQKÕËE]Y¬Pµr©ƒˆ;Ei¥F +ÙŠ’X”Ü$X~ÖÞ¢JÂ[EU«[KËÏ•¬+Ó^ÇÖf ·ªØUk*BöuÉ\!öŽ&fpcöW­Ïw }µïî›_kÌML–_Ò$žRŠ‘¼¸XQÆk•ùÁj¶Š<%Í4Òe+•ÕTÇMj9Fã6iU4–Ñ y=‡Ø@­Ç’X/ÔbMKÑÕ¦ÒQ5‹ž“ ûF$cÑJMõѬµ"}Í@—¼*¶^Ç$gErKkë2v¸8ëþˆU,÷Hc>ÛèI~úFM­¹ÅrŠGô [%…W®7—e”&¥YžvšN•êX¯éqÂ"€¨‹º¥ oºf¼¶©”ýGu²VÉãƒJãeÐ[».p«¨Õ¢ûô ʟ褚&o×h¦»Rv1ü wMTâÓÕÛɈAÇn,ѵ¦Ü’Knœ 8VQÞŠ |°ªZN¥5†} Õç±Qèázè“ÿ2ͬ×1–ìh° Úzy'Yz¶Ï„3\ÅýCJ´Ì÷è«ÅyÑ»ï-WIðíÄ<-sIsŒf=RÁ8?¤}æ’—j‘L-ÉPêD£Å–ê÷Y­[‹2/Ð̨ºTÅp8ÜX°Î÷è˜aœ\«¼ŽÏÛ_ÜÛ…‰« Ï ÈÃÏ­ªHrhÒFI“ú[Ô㊊gFŠ5m²à‘ƣ笜MÄSÔbѪÑXÝVHdóÑ]„#íJ©‚¨ó¦Ôj}ÝvÕ¥×Ú°ûŠ.)Ü¢Ìn½U¯*j*ȘØ2{§Zܨáß.¦òµVÓ)ðÆõÒyFùV…~7"ǧ•—‰ X³€±FÑ1]þTan—Àô ¸Æ €~~q< €Ç‚? Ðþ4@?ÿ2¾Ý—«KÊIEND®B`‚awstats-7.4/docs/images/awstats.gif0000640000175000017500000000112512410217071015226 0ustar skskGIF89a Æ+*p”ÒÌ$S†*c‘0g“1g“7k–=n™Cq›Lq›Fs&€¤'€¤(¥)‚¥-„§.„§/†¨3‡©4ˆª6Š«7Š«9‹¬;Œ­>Ž®?Ž®C‘°E’±F“²H“²H”³J”³J•³K–³L–´M–´N—µR™¶T›·U›¸[Ÿº[Ÿ»\Ÿ»] »_¡¼`¢¼b£½f¦¿i§Àj§Áp«Ãq¬Ãr¬Äu®Åv®Æy±Çz±Ç}³È´ÉµÊ„·Ë‡¹Ì‰ºÎ‘¾Ñ’¿Ñ–ÂÓ™ÄÔ›ÅÕœÅÖŸÆ×¦ËÚ§ËÚ¨ÌÚ©ÌÛ©ÍÛ«ÎÜ»×â½ØãÐäëÔåìÜëðÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌ!ù , ²€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™‰MPD„…GRTUSM1  ƒ£†®„FBLOI=.*¯¬³…­…9=-NQ39;0Ÿ‰³³6'9(HK+‘³)%$7/’®5):F!½Üƒ >AJ@,"&‡ ô  Áƒ& €3VŠ ¡!†ˆ2†ƒÇM CŠI²¤É“(Sj ;awstats-7.4/docs/images/screen_shot_3.png0000640000175000017500000000764212410217071016327 0ustar sksk‰PNG  IHDRxZDÞbÝ.tEXtCreation Timeven. 12 nov. 2004 21:03:36 +0100Í(gtIMEÔ 8-26™ pHYs ð ðB¬4˜gAMA± üaPLTE;i]HY†ë9n|#‰Û2ñ@ ÚM<Ùhhlx¸Ñ&¹’ßåp©’ÃérùÝÉçu¸]n·Sõ¹ÇŽ©þÙÍ'I>Õ-I*T$·êkõù|nVmSUÖVg 6õ¨ßïóû¿û\UÕ¯ø_yÆ£²„e UÜz镬Q+B½¨÷ìÙÞ^(z{Ï"kj¬M~×È+Ùž¸Ç«zTuómª¤*O¨^ÿ‘#u5uÕ®Ž8ív'»Ö@ÝUã=ò‚Ãaw¤Ð:ýÚ "kŠ¢Èˆ]±¬È2k²–"³Š jdá³6É–CÇ ÒW×¥¢Ík{í;«êì—ÓÑæpÔ¹]N—½ÎéªóK³dS&²uýÄ6ÜÚæö‚%»Ý®ÖV·š³OL¬q™,’8G—%q:_Je5«¬ýçÇÆÇ…Oô‡ûCC…ïœÿýyËÿrçÆoÏß4oóòŽÍ[ÓFðÍÑwß›úuæ ¦((ˆxdÍÆ•ó¿|í+R+›æ -ÿÝÊû‰ügqï虓ö|tÜÉ5ǧO½ÇâÓÿu…%qJeÛò·×lÜ:ÿÐʰPÏS9‰ã‘È@,<› b«JNâp8Š„‘é‰Çv¼ýìÓßk~kǹb*Ÿä Ž…"ÁP ãB6(… ‚¡áØPtÄâfÈ:fd(î`¸“SÕ™ZÎMì0ÜÿÖ~E݆ÝpM¡N¸#‘?*p'OWbºû8)”Øb`¤+Æ‹†Ÿô™jH⎜¯+ñÄqm°Pâ'Ž„ƒÁÐôÄ:%„RÚë-€[ÚµkçÎ]»~p÷ZŽwÝç,»ÿfElÐóáp0V1R4LƒË–]wíuËî»ÿþ­÷n½ו_b¸òL¢û-Ñ}kz÷3VÄcÁ`ÄȆ•ª1æ…¦ðRã+Æ2WT"l!ÞÞM’ÝÙGc‘¡±Bˆ©I JªS®ª›ÆIE:ItÑÍ›”ÝÂv“ıX¼bSbEã¥pÉ´)‰ ÑL‰¿§àÜEâáøD|bb"?1"aQL¸~5¢˜›ªæ÷YXáÝ(ÑmA õ‡ƒCá‘@0ΫjS—¢$Dègªšdv[K ‚ý`  ÂS]VÄ(¡j^*ÜÆ¨´ÑT5â…,Ó¸ª’‘'—ªÏGÂýÓ»S–HIë¡ØìNØžu·…ªÁ¸"…—é/ñOF¦šÉˆ­çX³–X§£çFÏaÕÂMUkXÉðcM<&ÜOugSÅãñÈTˆªÓý˜)~¬'ºÅÃD¸¹µÓ^Ûx èߊOOœ.±ðW„’îÇX1'„KL¬%þ—d‹#¡ÀxVWž9F¢D|ªaŽ“~ŒSùÅÞ€ [ù1G†,‚u>U &5©K³Ûl’©i-±=ÊŠ˜Ö~l:jªkY~¬ Õ"-2=9ˆiÔ›òû±0®„ÄYvc3rQdä þ{8œuåócsŽ9sT”æNf“ð&ŒŠ¢\Ÿ ‡ÂˆÅØÓCæ”.“«“—b.×¹T yu(ŽD‚ýCÓ›ŽJSc¢®g®Ç4#dZú17®è@$I_§q'2¹àDÊÌ@RºAb¢äR5ŒD JfÑ76C D2Í+ŸMDé›°‡Béž>»Ëb  Ï®j³ ˆÁ¶²TŸÕã¦8ÛIÄÀ´²«ï´%­©©ªª®n¸º¦¦¡ªñĉö››šN>–ôõE⑬˜9˜†¾¾D¥I`ÛþíûŸ}vÿþ§7 üf°81ai€œu´¥I(Š,ËHÔÏ-]º¤dÉÒ¥_oiÙ²fKKËsmsç»™¾?îô[Ì~|ß!Ò)b椥ŸŒŽÇ''{zzF'/Žö ÿ¶ç§£›R°ÿÝ$ÞÏáÇ"Ë Bœlߘ02úÆ!ŠØ^iI Êë:Av/ºŽ1†[6ý0À½ërÀÚ›Ì,s 42‚OÏÅ;èì ?57Õ1[ñ HBJ¶àêl9Æö•+Wî|î¹Ï×Äþ866‹¥;ýõ/Ùd0§$°+a+ˆNyÉsŒoÝu×=ë?)8~pâp(¹ҺâMKtEƒQ´„åvu–ÌÉ\bäCªá1\±bÝÝ÷?LUÞi$4§ýÐÓ73©RÖéT;³ì¸éÁ“'Ï%1'Ž#Áð¾T‰o¿$Öäô9æ#…KŒ>× ËŒ _øâêõz¡s‰‰GV,6ô?ƒ æç™sL°ó¹fß#`½cÓ{‹X#¸ÿ âRl,k=þùA°j am*WÓ“˜0KŸ*á ¢{Ö­+æ¬^°‚­3Œ‹ÞÄà¢iå6®-0 †RÓŸÚôn1«"'gê„F‚‘4â}¯ò°•f\\Õ„w2K¶]ÄàNÍÅóÈŽ@ðJÛ$Çб¦¥åK ,W±0."Œ‹ŸrÛ¿²£Mçûj€¾ñ#JS-‹ûŽ fॸ>½aoÑ[#~ð€®)éû-!1ÖDÁ2—\Ž {gHâW2‘hjâéfÈLJ ^§w<øÎð Iüç;tEVy¨%$¦|ŽqÂ4áNBŒæÕÍ35ÇŸþ‚’ o2s'^b@À¡ôŽí£34ÇôÓW©–²sbðæ¿‚Ø,ÙÎ\Ó÷¬[?SÆj„t03–ŠˆE¹qñu™…¦§S5ÿÎspd§¦Ý¸›ßEݬ„æ &E%·ðɹ‰gŸCâhV*ÜÝ—’_ÿŸÈ3Çi;‰ÆêêšØC4T7œ>ñäMMí'N·7µÃ&âÄËf†ß~s1{оÜÄ$k”x°»›•§Ð) AóÝ3Ü|‹ÀNâ ‘µSÉc\ÑŒÜÁfk°§€XáY–=ˆm0&gn–-]²6K[ZZÖÜ —ys9®dŸÿ¬˜;‰‰ðx\ lyìQPŽG–©I¼eK:1dÿç'$QXâ‰Q4âããÑèøøøÅÉÉááÉÉ‹{z†‡ÿÐs"0Ë-Ø)dbþCl¦7Åmoˆnf)<ª"W)ÿD{ðÑù‰5ŒeŒŠ™%ûdªÔÙé"@‡¥²¤#¢4Ç—"qêÛ\ÔÍÕ]ÔØáKb¢©­¢EC7ùtñm[?ØÉÛHWt™ÈQâ°åøÝ“öÚ%CK/3š¢îsÛÜ»ýØìþ”É ]¶³âÇl]¯þ¨ù—×ÓZgÓZªÏçSy+K-]¶ÃµÕv‡ÃáVoóTU¾ô¼Tq¸Ö×îUׯí\(ßðÈ‚†×饣’_ª¬òªN›Ã'Õ\æõ{;Úæ{|á*ŸTQ!ù½‹$ÕyUçkovVxýÒcÎm·W®ºÚQ{àÀ]W­’Z]6Ï⺺:g]«Ú¨Úí/v¾F]ìÔ§î~äð"_Z%/ì|þhë= URíãv¯Ú¸ÈåvÛ¯v9¯u»Ý «¡uÕb—«f!Tj¡ÒºÐårÕÚ¡¯žl«ð+g/r»[}ònå‡?n“¼;oTªêëúõX†î;6?#IEND®B`‚awstats-7.4/docs/images/awstats_ban_460x270.png0000640000175000017500000040011712410217071017103 0ustar sksk‰PNG  IHDRÌû'9sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÞ 2R=¾.tEXtCommentCreated with GIMPW IDATxÚ¼½y¼%Uu6ü¬½«êŒwêÛ·oß ›nÆd™Ä Ô(¯Æ ˆF“8$1*&/Ñ ð3Š&&òÅùKŒŠ€  "ˆ Í Ý4Ð4SÏóí¾ã¹gªª½×÷GUSçÔÞ§Þ¼ß1¿Ÿ¦Ï=U»ví½Özžµö³è¼Áw8H}B`û(ÿ®Ùfˆ²ßIhä d¿dÖP¬ý!C!@˜nÇŠu\"Bž=Ó­ÀÌ–{ ÊüY³KÌ2ó3fCçƒÁÈÁ3\Ь̓[ˆæ1úd©´yì FN›ŸYCÇ“ãÜsô¡c" `bÀÑ™k2Ïø.Ç>F˜˜¾ÒÐÄ`"Pt7º<#ú ˆáÅ÷£Žk*ãÌkH0„i:¢wÆš:ÆÈ{ Òø¾’¹Ê~²n¢gÖ†u“ÜÔq´a iÜ+­wÆœšcà€A`G“mÌ23÷Ñ/¸côÉ °=s4‰ÚuYl„¶¬ß'3F 0’íL†õ¡DçoÚcÌÜ+þŠÁp´4ÛÌžf fæäÑ-ezˆ¦M=ïňߗHî%æôºï^,,k‘ÁZe‡­í®µ!¢uÊ ¦ì½À X슄°<ÀBØFØes’ù' ÈΟF÷’Ñ\ö„ÖÒ<÷`]‰ÌÒø-‘¶XÙ2É!Ìf#+É1~G!(äxF:>!D´¡0[‚@h1õ /‚ÔŸ )2¿Æˆ,ã·-P"Ae”ŒÛ|=Š•éýJW l±Q$Ì÷bBH*q~]/Wÿ=~²´è˜HÒ9Mîþ–@®¨À H!Ícl½“ì4 LLÑNŠßcò*„&ø†­BdºA@Å«Í4b"êü’=/Ø[DOž¹—2;€ö3×Mô> ™©oÍ¿¶Ôµ_¢¿'ŽþÃ0Ï=gv&Bî‚9ڛƱEÖ™MëÔ!@Y „‘3ÍGäPD×ËŒçˆ9;Æè+iãÚ§Ìžˆž9Z-§ýI*ÞB™Ç˜¬m6[±8r½L<@€‚ ”Y¨”ØJ6¿`Šeû–™ŒÈa'÷êþlË>²aÛÁ ËÒn½ãö·ž¹mº~K ((ØöŠmîãHÆävâ0Åü¥Ö"e“þfbœ{nÓ¼ j0sv·€‹Ë´;a@C¢i5|gDïÃÙÜKî~:ã;1;¿ÖpžŸqøÍä^:kÜ2›¡s‚)Ùà@Ä‘›áþ$HrvîC0ä˶1è0³Ñ–Î,y :‰ì¢l‡ fpFúÑ1SdðÁ»ãV«qN‚-²ÄM†@AZ³ÝȒݹÁ0í_%ï²s’‰¥È¼¶ãðÒvÅl¦c‹C=œ¬ê±ê‘AicÂãP¨˜ “­Sa "•)ˆ$€5ÅQÖ¨½6ÒÁŠ-Ž &qv&#crš*ÚBèÖúˆ¯•<)eý[˱0±ÅæÄû¨ƒ˜ ZN“ ›BÇȼuìÌž®s>(½¬Ì×c»ã`+d¡ö ì:öŸîðø6’Í~+2}‘¹d#TŒ‚YÍ Ó:å8hýp˜DdG’D$-Ž È·¡ »s‘䨨hø˜™áhJïl0hbÔ©it ѳeÇ9Ç>IÔ´"?›#K „q™ml)~9ÁJ‚2 Mn¬"ú|ØA!@ ÝŽ»,u#ͬ٦´wæ¶¡" ÁL"8¿´²!dAø º6!MÚx0CѳA·‘„e RÆ@2±“Ý—ätDn\oFV bÝŒV;180rˆ2ÈŠ2µî2Í¿³"eG™±e1 >AOÂg£ÿ2¼OJý§ûz±¦»¢º,…iŒd¾W&4IûØá™1!– 8A\A––;aœ "2z8&i3JëeÃZŽÖò»l@D ËÓµR{±r‘Ð=÷ËC™ôŠQ¦°… 6ãlÿŽˆb:Çä =8/; l‰´3Ô,jP'Ur@ê¢ý‚ #Ôdòë2K~˲ѱ ÅYTb§”A=Œ}Œ2-sž LÊDÛ$ šNf)6êYš=†† ˆLÙ¢:Êl² ›ÒÍ¢L»QïE(¬ëME†Ï†ìÌΪ7ÊL§)Ê i e\÷ÉÚé?GN,̆E3­E1æ2™[@HHé(“z¢LÎrý`• aÓTÅ(³õCjÁ¿Ì½b3Ó‰ŸÍ~öß(aD™Ñi²¨Eo[m˜õ»îGœƒ!PtC6¬PÓKíàSÃÂbP¦Bô*³´=%Îí(Ó´“"G«Át°ÌVœ³g&&Á¬8c`±ÁÖ ïÿO”)Ô0ÐN•Š2£ˆÚœËdÅj¹fœ£±ú©œTÇ>b∵&Gk<ƒÃL¤-™; Õ„oy^lˆP Èa¾l”éS`E™6ªÑŒ2 „zDÍ2Ys™Ù÷Â1=/ìÈ´-áƒVN' ²˜@)”Ùý„æ¹çe¾Ì\&õÊešmäÜÈ’/&âÈÒ³ÑoCkS IÆ$íºóU?*ìP‚íGÇaC™½(V&"R¯ e÷˜n±îùˆ VD5Û¢QÍè?ΈØZ7) ~(•öéÊeÆéM Œ÷‘FœËL–º9¿ØÚ³lùÌã0¦o"GßÊug#™dMW%Ž–´¶¬Þnê;6ÎD æ(5b Ó´%× L3Â?ÊÔÿc(S4ɇ`a4 9V£!ß%H,y‚nü!­/FX €lÑv2Iߊ ãBK^¡WN¬…2DdAH½®EhÚºa3‹WÐæ{¥ï“]ôh?/gÇ a}—$…£³¹”¸vђˤ¸>4»šqшmÑÛA¤s:I^—ÚÆžÀÖ ó›T“ËäôܳŽêÑã=g#xSÅk:®Ó–±ÈaÚ €z牲AŸib2@8è³ÐâQX c^F§IHk>‹c LCÊ B„™ùHr™ÈØuBÿ†2à8à3ÙŠW\–: Z$sŒ‚º"5+ÒAÄôX‹ˆÛK%Ud ú˜¸‡ ‹*ͱ6’j¨È™iਇ-6ŒmÖ×Rd œÐ²`j=œ!ð°¥$(vš0£LË.JxÓj-^Ê‚æh.» z%ð{Ð.ÌDލjs£ ×LÅNØ„2 ¡-€Ð(¢6Ij–\¦ÕY¡WÅl„ü"ÃgŠÓí(3´p'FGWŠ&U–¶hÖ\D÷ÊÒ¨vz*·Én²zT<¡LA!„…%mE™‰óƒµI´÷gkŸ·£Kno»¯Å¸Èv¯LT\$c6T¶ÊnßZ`Õ«p¬ZšÖŽîUñk¨ŠT‘‡ÐVŠØŠš=›×c{@HDP/§ª·EŠVͨ©ÀƒÁ$ µ iêTŵꑮ°ßhç2;ª·{#ˆFµßK´SÄ”¼ó$÷/Œ³ÉØMûHƒU‚®dŸÛˆ6 B (³Å5±Ñ‰1ض´{‘2†ŠYަ’¬Ùâ /'èëô¹EÝô+Bs‰¿¼³%¢cA™nHnO”Ù£ÀÃÍȤ3?cÚæM#Zˆ y2†µèáLÅ0-Dc¡l¹ÌNmÎs™i¨(&G«’+†VGkËÃõ*s·å2cJÜâš kô¦7 Àl¦f{¢¸*2mq‚4Ê (3Z7ö| ›ˆÜE©YŸˆÐZdC\v;?²•¹SŒ4ÍY?¶£W’`P’übSBPô@ì(“{SßÌÖS½P¦‚­ØÁ\ÕÏ+e‹ã ƒÍSœÏÔÆcRd=fÒ2»R‚tŒŒåHK&5ÒZuª] l࣓ëÙ €ˆ48´ª¸b–,0Y(s^’`·o¤5lq¶ ŽÓ´¾1íKÖš€ÞA_ªr—™ÊsõÓ}åí¹úÎמsUÕ´N“*ÜÞ.?õ÷'½ÁIþ¶ËFf)оå¸CÑ33‘â¢õàv±fe®©84òð^|°;û3ÍÑAàŽ÷RX2Š:oeÌBZ¢`m&`fÄð(kH Êz=»˜3Cw‹*€³bOD†¶ýeû^ÊHE1™Å =Ä:…¨óW@j@ðË3pã¹•Êæq“%ßUH‰€Z»F1ƒèh Y#Êf:= ¦Œ˜v_®˜ÇÃuÁ±4ìçW(f `ñˆDW Ön÷¡Ä+CkÇ*f€ƒ HÝ™™ùxšÇpâg¢.í v´ÒD#f¬·—/fÐ6ÌÆÃöÌm"8º¥“²Z¿'÷bÊPQÊ„ÑFHd$/ƒE/q„d/Ƀ3ˆn£¸—-f 2² ­4ˆ$A¤îرàs‹yì&ö1f5Í=‘äÓOúLã;?Zzî\uç7 8$Ï=aÅqF–×¢+aX§€”*@„0Sù/SPÊÌp…÷2Å ’Ĺ¥^Q9;,MÙÚVÁÁç2[gìg"íÕÀ½*Ù˜_L®g›«^g33Ϭö‰¤ð5,hÜx/j™"jm˜ L“˜AƒBa¬ŒÎHšÞeeš©mÍevDÛ”E™61!l”¾]8Áˆ2ã<¸‚~béúáW&f½Ü\f¶*’’£J°…A3æ‚Úbl =!,(ž™I)¶³F¶ô¡Àƒ ì¹îØÈwE kUoR5ËdÌ/š‹âZ¼)uä2_&Ê´¥ƒZ…e-1ƒnŭ΋2±½ (©MRcKÛAüÊÄ Ìlzæ2³5>7‘ x^n.33ˆÖþ¯ÿßÕ7ÿbtõ£ŸýÖ¿~[lž«î¸à vEqèùE«æ(Ê·ÏÂ1”’U!ÌøiÒÐýÆHEYŒ½eF™ØP—eÛ€>Vº)Ô1šeHp$ee4º•HÇÿeÉ<‡˜ÿ1ÉSòïª;ÚmÔ8”6ÑcÅÊE±³oý–ä"¶F³k\Á«ÍúLpرèÌZå6Xwkõ&‹=°«LúP±Ñ™@™Ù‹ »µy±Œu:³_ièv€ÏE›RtЦ'K†Ö`ËDóu9¿ZŸs W;Ö=d¦%`9wÜŠq#gE¦y”’ß0d<tê-¡f'*›5itFso¢¡8´„‘ö´9?ÆøØêhjÖDCÂ1kë¶iûî`€À,ãgÓÙG ž% ëž°8aÖZ J ¤–)uë»FïÓæ:LANähE'•Ñ•æÊ†K"Ùí±Z %Ê@yi8;·ÝyrýwN¬Ööþ•ÖÁ»»¸æ4G´ñ¼³¯9- ë"»æ&Þ#bQtOZ¶ÓaÆ‹±_÷Q¦†2çUq",Î ¦„ì“æ„"Kr!ÉeJyžRZ<´Óðq]ÕH!¤d‹DkÞe—rДËP0&”©YAÉÚSäêhÇHr H²$2:RfD&Q4¨8q¨} 9ìàúà—㪺”ÉÌÌФYACCs@ûQY G›ˆX’‡\pX’Ó*8 P4 °™t!8Nœ.ðØµ Ck+ b#ÊòÑF² L·UΕ0ˆ—tF8<í@z Ìn$á¥~ÃQPê „½”é‚ÌgtÛT(ÔÙÕ–\&À¬´cô,Ì€ëfó)œrÆ/'Wv™MF˜Œ$—ÉÝqdê]væõÈ ßÈ+f7â7T34!Ó<À"ŸB™’ED—’Ñ Ãä„#v™É„2™…9ðHRsD˜xi6|Íß?zìÙË¿òâ®­ï’#‡ƒœ<{¤IU'°`t r®1:²` ?Àl#×§Ðrafïlؼƒ§&÷Ññ+–íßþô̹î†þ] nQ¼UD6Ÿ™ûø}2X“dÉKÆ%ê–|ž!¯Ê -%ºÊ.z L-˜5Á¡îÚ9–äb뎻vì^ýþ0¬]eq’éOãô?·ÔÍõ1Y·^ÂìV¡w {8/’Y à´¯6.á@³ù >!ªV-Š2ö;0ì• ]“Š"rÉAžKr ,Éy:rÓšðR(“™Q’} ª4G“Á¸¨qÕa­@BpJz@ÎSžÖ9dÈ2ë¨b $õ,ï³þ~QÓGkç;=QPýÎ.9ƒÚ£$É ÊLeŸ;¤ka…*ᔨ†³Ò×u"8ðtŸ;ªŠ„+rÆ‹‘t$ÀæÚ“}³ÁøI = ˆý}μõ¡"IBIòTž *'˪ Ê:'Kpɋ橈¢Š]ÌI!¡´b††æK! ((HCñJ&Û¤¨(]ZJí€Øk‹CSwþ‹à¶sI¬YA³"A‚IÄ]f296\0ΗP*ÏBiPÍ.T×"Žt 0AÁd~în”*§(3Y+Z›œ³ŠçØ&þ¡¸û]¶ØšPd¨YJ'кߥí,br:'´Eç» €"úZÄN³;¯çÄ•ìÚ@£‘ŽËdˆŒEqæzm®àV¹l:'ŽÄãq×Mrã]?9u#" 2æÚLGé»*°¹•&ñÿC:F¶Y¥Áx`Ý—¦?íO+ÏìØ[*ŒS~ì^8ØGý® =•:¼Òb¬\0¯#í&kur¸¿†ð}p‹8cÁ¡¤Ÿ§önž?7°ëÙ¾×4ñ®ÿkÁÍ?¿3d-aTÞ$aìˆ"YʮőœƒÒ=(V«$¤ÖFj6öæ)§Ù^S蓌P ¤Ìúle«÷ô³ÿýsfu6ò32ÿ„Ó=¯/–à28nN$ó²ëTk)ÕÁ#Ì¡ êL‘G„2ÍÕ£¹üÇé_½‹¡¿‘z3’ >áû$/ð(_tÆêÃÎÕr0Ê©\¦G9þýìÍŸgðGRïîé<?.yÕ9¯¶Ð=$piÉ„¬™i£¿¦0lÛ tÔ‡¨œ(¾^¬;ä6úœÁê‚ü¡~Ÿ3¤$I#Ê”äð½ûn|@)þ§BA–O`9õ²3PÉîå€&9ÂãÕû¯ó â†~€!t2‡éO À$~R”ß#\áÕs¢Ô,ËyÁ€3_y¢ %B.*Ôì¶ž8B‚!ÞscãØùo,ªA À“]”,EtQš«í.Õý©"UgKóÜ\‡ë; ‘YøÚY§}éj¥šÑÝ-¹Øä´ƒé˜A7›&ð೨˜r™«gn < àø®¶V’ü8˜”CÞþ’š\à.oôÉùq-ä*ó‰Ú,3VÏÝñ:…ðŽÎ×ê¼–@MAr¢(Êãcî!õAçP säÊÍÝú†þ§lšÅy—„ØG$fò²4>â-™Ë/ ¡¹.”É»ë›Ü—ªOVS×wÉ{;R’œ*ȾñÑüÊÚ€;ªÿãÄ_gÜ-¿è¿ogLp°'c+ñ­¼(^K ß“…¹²®;caÑTRHBžY³$@3ãÁ˯kzŸ*¾&àú Ì<:/¿d”@\t‡šC¹Å~шæ˜#jÖÖÐBÍ2³&m8r΃ƒÝ¶aaf,é?NÝñÒ×–ÎûoÉÉÒGr#™5œþæpa©_rçkX P,ùűvç2câÙ˜ËlG‹¡å%9Ä^ëÿ@.3)á×°ï0R³Q.…!e¯ž™€­ÇlöãFóø zfÊLA'5k.]239P.S˜ 0‘lA75›Ðö¦c&IÿUãWÒ33ÓöБMhç2Ã0ä勿±wóFî›?¶`!r4ÒW‚#EGÝöøì–óʹ(JÀ˜Þ׌ªŠ!¡hT ì­aÿÌ,jpáÔ'°uÓsXóÜKð*Ó7|í'~âÏ®ÞÀaû˜=}ÐR“¥ž¹L6ëµÊ¸x¨óLHäh¾¨½ÿ£qj"iÈu³Ä?ñÙÊxà3ýaþ*Îq8¹ec òáÏ|<|ýÃO|µÐEçØ×©å˜‰-—)³VV“|c²DÌ ½x˜åVxU×.&'iÖG1ñ<…p°©«ùšž‘!µI²vÁr$ þΰˆ—iÒƒšU_À~¾©kÄzÖ†C³"†þ‘-àð½º_³ ´_¬«9ÙÔV‹¿ôF.;ƒØX}êÒ®klV¬ºÌÌNDDùL,ùŒ»é@_ŽvYÌœezîË }y]Ï}=ä`¤®æFg‚½ƒû‚í^MÍ¥ÂX2O Þ\y¢(>)~pý F‹‡ ×ÃÙѺšW¦s®SŸƒ‰#õ‹.%õ£L­5‚4µÊæ5+L7vÊ›7|ö‹sÁþ—ˬúæüÉÑj8;¯Lšá1kk7²ý‰&:ÅBšmJ1:f‚Œboo1mÁè艘úö¾£6=S²õ€Do¶4æË30«sù-Q³˜[ZWÙÄ t*¿g3 Í”Íë~*«lª&À ð’:²ÀY1m„Ð×‰Ä ´QF’`éC´}‰‘ˆƒ?°îAÿâ+Ï?{ÞÛª3²oÁ|Yœ‡Á¼GKæ "çzéÌÀŒùå"´p00*aû¸šb@1ÄA—0–õC¡œ/ ,B,ÆhÑ…tò¤ÁS{Pñƒ·þí{8ò]׆Ív´`WÄÒÉ·‰`ÈA‹@hbPbɼŽ*·ŒÅéft*”íf²/WSïݸjlí%Þß澤H?ó¡ü§.IqïÓ§tùÛzü+C4hÞ+lÙa=Ä „8p¸EÏ4½è—äVhŸ›ŸîZF:µßÅÌ9fU ”êzV6u=u)’ÌëúÜßµ€Ù8¯X¹ nˆˆªëÔ…ŠJ” 1jrLïà9¯Yšºî6u½åÜÒí¿†½1fèOtÍËHšˆ‡Üð¶3k>2uó¿x[—£lxÀ ºŠ >IG +ºÀVÃøÎ÷¹ù¿5«ùM®TÂɾÉ`·ësЈìdÉÍñžê  ¾¤Åõûû)Œ(–CÅ¡h+̵{šÎ¡™þ½3•a8£FŒD‚í‹ç]×|nâßgèHžE±šê`Dë _qà†ì ޵?{õ—´j¶SW³ Ý)•Å]YµÞú¾öå‰dž!•SƒL™=‡˜ÈÔË]pÌí¿BšÅ¡¹å^ÌÎÛ4[»™$=3m2aÙ3Ó ôz—Q²MkÑÓÑÚ$Ñ¢s”l·¿‰Ö¬Á©goR¦tl›MûÁ¼'¸sOtt­6®Û~ãÖ«ÞõüÞç~30¶sJâ»n‚CÀºç7à®ÕwaÿÌ,D\IÊ öÿfFŸÓFÐÀx“±­®ÑPº%Å?Skà±õOa÷ô,vnß„¼+QêÀ²ÃŽÂ 'ŸŠÑå+¨ÔWä~õ‹kέ^€º«:׆0w3‰úéîÞ£Ôv.=[yeEa B)«£Í ³·»l“Œ¸›‰óúýá÷¾à]¯Þ¿øiÁtbÕñ¿zÂß|ÚÚðÑä( ô-{§#óÙÛ$ó:7®E?×ÒäÝ$XYÂUGÔÝe1EŠ0ªÅ û¾¡¼;õôX ÿÛy|ƒ¢Òa±AÕ\]ÏQŽ“Ñ”b³Ïûkyýä·ÎàsR‹÷LAbž†ÊÜtBÂס¨ØžK9~¤ú«eÒ‘ÆoRÎL0ëy€ð5T>ÐMÏ×µºâP9Âm €qß¾›sŽJø³è– IDATS«Dò{DMÙôD><úΫþD)ÿ´$ç Šú0T‰ AÖ‰&A(?"åëú¢€HÍþðfb)|®‡sá¤_e剈.鸥eh‡\$B5V ɼϦð @½ €IVvꔡK©ˆ€fº&‡>ͺBD¾fÑ& ä¢èÞ@ËY‹'Ð:zC©Ð6fqâÍÆ!žDéVjK·dÅìZ…cÌÇ…b”x¡‘šMŒQ75›˜2Ü-Žd©-f@Ôü´¦L:ˆZ¥2ŽAˆ>ÆÐŠ8“G¤ÇŠMÔm "I:‘!‰¸£X*U‘a|æÖ/CÅ6jVi˜«;;Ýs•Hæ9 ÌN¶@Œ#tÔ9¿Rï’;Q­©(22è*ãX¢gNIæÅ× ü¯¾ó“¯ôÅ5?zð¹-àg7Cèg¿ ëÖ=ŒÙZ k_Ü„Gžz ceË8çžvf‡aß°ÕFG-œA—0š#Ô5áÞ6cfnÇ®<÷­¾ Šýón [wn‡®ìÅöÉ9JH¢8ÿñâ3›Ÿ¼åñç6r^ =6„7¿þ-X¸hz 6lÜ¡&,>ú ,^t”ÖØ°e ‚0XýðÝøÅ¿Æ}/lÂs³>6UC<¸yŽ\¶‹,Æ­¿þ),:SsuìÛ¹ =|¶¿¸²4ŒrÎAÎq°dxKç"78BÞÐî~à7½ù³'¼ƒ᫈öFv}eÚª¸£U›ÖÜ*ò֫Ƕø_[óúKß¹íÈ46éÕ?òWgþö¸‡ì¨jÒÃúAòÞ·¼ö¿~V«Ë$è¶ljsGåÆ;汃`i”YÓ¤Q¥šQ˜ÝVOÓúói_N$'×wîf¾ˆ¢ÉRˆ ÔЯ®ç·äêÛÂì ÂÛ†.y¢küýÌ<Ä€Ë̹C·ÁuŠŽMø-/òPõ‡ÁïIÍþcD´·«öë"R Î+óM]“M]o=?3caþP] gOît@ô€<!¹þš©»}ç¥Wž„s3 "ª 8“yYžòÍŒæ«æVø rËü¹eÁ‚Ü24w˜¿¸pt%G…×tK-Š~E°¯©«¹†žhP—˜zʨÀ"Ý7êœÒůiV̬Yk…@ûðU¾j Ô‡ BëbØ¢Œ êJÔ¶ÏFFÉ&e‘Ô (VìCéj P „Úk„kSXbpyÂìFƒnQxIwpA˜=$sE{‡ê)ÌÎñy cb(%,¹LÝC˜ÝÜHˆ%󬛔1—™§®4¯í´·¥›Iûø$Å×ÙÍļ“­)´±EY’Yˆ;‚؄ٳÑ`˜tpi¡ÌÕë¿2ûïnÚþûçvp…òôÎ Þ=5×?Žþ¡Q ¬¡„8ýØcpÍßþ-_²{v¾„{W߉uëŸÄ÷ü{¦+8ùÔ×!/5~ðnÜ÷нX÷â‹Øºé|ý¿¿g×?Ž£= =z?tXÇ£ÏmBez<ú8îúÝ-èË;8dùX²x1šMÛ_xþÔ4i'Ç?üÉ~x÷a $[Åg¿9Ž ±zá‹þ¶œ0ͤÙêüzö¬é•GìB™Šß°çо'õ—kƒüרrÿ‚m«>~Æ?÷”¤ëíÚûpŸxÜ_¿grú'YOÚ¾m^LµDNÓ\gÐD*M "s#SE†–Q1uõ½Ý_ÐNJí¨q9Šb¸ñÔ®ZÎàœfÎ3‡%Ÿë¹šš¡ýäR‡ à—S?PþÐexˆ8Îi„nS7DÈ!bÌŒ]þ‹ƒè¨ñ¦µªØ‘ZgFÏή†.øºá6u-RÔ#ߟÿèë¡Fø±®=»6f+|‚h¸"—TªÌKs_µ=Vª;äUÊÎpmž·$,Ëa•—%íŠ<;"Wä9'‹º ûu“ëw1ÇУLìjÖù€}¯©«¤8 fPëåŸ`á뺨†S¢¡*"Ô~»B1É©³b¥C,̯ԯ½T}d冯û`Xýìë*76{û›Ý‰ævgÚ—µpVºÙQA 4(Þ59ÕËÀ2ÐMQ gD=¬ˆP7 ù˜þdfæÓÇÞ^ºê?‚³¿?ÈÉ2×Õ¬ØßØìM4¶º“ÍNÅ—p–¢ç‰êúXq ûÑlÎ=ëÈÙñ×ç—ÕÖe{E{-”ik[$H[QfD3q”|ð(¤¨…2MÝmMœAЙs¥I.Ó‚Zb%ÖVEÝË(Ò¶n&ÚžëÎ6cŽõ}m-Ê]XŠ{ ö ø2¹v""ЗüËÿ³fåÒ¥òü“O “—-ÂøÄ*SûqʯÁìþí¸ý÷àØ•+ñž7¼ 9Áxþ¹'!òX|Ø« ƒÜÒ0Æ''±yç6œýš p景ÆM[°æñÕ˜©T‘s$î[ûÆwlÄYg½/½´ '}$ˆ~ °mÍÓ¸þ¿~ˆßýúX÷ä㘘š†’.ȯCL柳½ûø¼¿øØÓ÷=qeÅØ¥º´0ñê…/Ør¢5·ÿÝí§O.yæ;Šú«ÛŸ±‘e¦s™ æÕwÅÜמxÃ'ß¹ýˆÍâð·ùé>þÉc¯;lýžyÍ‚h'„MÖ[pƪriQØAë›{fRgov =kËe&JmíÅËÄDÆÜ>äº$óDt þr»©Y¿Áu7øDŠ6ü´€üª&.…Ü,ÔõlÕçºv‘o%H¢×&ðÁáËä'¾þM ýºfZ)€gð4ë\ÀM©†X Äbï(ýHõ×§¥“ô‡@×3ø2´€ôñ‚&•8È5U­r¨]eÁ>ô_” \Ø•Ï{&>©Ü”ä4r¢ZE¼µ)$Ü(j—<–ÂÒaú˜%‹æ¬á‹½&~¶ À’6òãC$h[Ü¿Žv6^8d[}ýNÞ+®PÐZ-®êàIî½µ`Zy²ô{#AŸ;_ r˜YÓý{Òèsç/¯‡³§(Ïx!cqNt‚€ýù¸#Üõ}îðóÌ,\Yв?(¹ƒª(´$‡×Oß;Vç–=1ñËÑ.Šx¹f.³¦¹šžs„·ºVOƒ~oØï÷ÆtÎ)ë{·¿‘wʧúªqÚƒ»~új/ŠÞö´G|Ä“¥µ%wÞ>ÈÉ¢_p†Â¢;¤r²I³fŠ('ŽŽšäL·)ežµYA'î™™:ZuBGè)cÞÆ.œH;ØŽ™‰Ô©ÿn”†"s63I¢™jqí¢ L2*23±‹ ¾uÌ]„Z]l-¢PõP¢Žc& æ§Ê;Ô1ÕE2¯CÖ)uI‚ƒÆD evذ„»—™{µŠÇd;j5È(r9áÚlS¿÷Ëo>ë±=/½êØ#Žá¸9ìÜþ }ƒð}7ßù{ÌïïDzC—c¬\Àt½¹Ê Æ=/>ý˜$–Ž@»ußÃþ©IhV­XŽ€%f§ö@ „À3O>„Ö?o`6l@Pƒï+Àq¡C…]O?ƒÝå~8Å<æÌGÝ[ˆ¹-[!ƒ&=ñÈ£Ë/ûÖ~ìñîú k‹P=ÛJÓê¯6ž2ôoëÞôyí|$q/oÙsøo?|Ê«k%Í\‰Nu Éä2µ6ŸÍd`KßlxÕºsùæûý©„8^A?ùÀ‚ûˆ5{Î~ì‚B¤ÔùNUVsšUF±“¢ ã)Œ³l8ä2“¸¹C$E’Ã:B|™4x“šðâ“ähÀŒÚO þlgQŒøYl¹Q¼º®kéb˜“Z¨¨X•\­Ôt%È‹2 8­B`sóy‘£üÚ:×Ò{öd7àihÏg_úÜD‘Ë "Ü8õ5àŸRcŸ#;\&ˆÕ õ™”A_E/"Êcæêº*n*žffº~û¿,ïšÓµ±u "jHr›yQL¬â€rRwp &ƒÍJúºN!$ÙñMê& 8 Þ•£‚XéĹõs÷øº>Â`!áT=Q¨Wƒ©Ëüw¦ XC]ÓfÍêjö80àªê,€Ùœ,ëS\þô…OàÚJ°ÿä®"¥Žt#ü°¯CL4w<æRîŸ\ßVgjµp¦Þï4¼j.˜|†ºÚ,™ª?•j”¨jÁì«ɦ+ææ˜ÕÌpáÚ#»n:Àïáܼî±$ä¸býñz8F8sƒ+ŠßvE~¼*§ª¥p^½ß[Ø,yÃÊQyfVæÈð)2ÈXeŒi*·g ßÚ Ž”y_¤ Z0¤ÁÈÚîE)Ãm¤† ™Y’ùZÙB–4Ê´Iæe‹k¢œ*ØmD¦,N긋a™F @-À’#®¥Ø¨·PÚ¹‡P|ÂÜRï;Ï]²v¯7û¡¿9òº‡Ç‚‘Í?ÈUÆe± âγ´:)ÖÉÎ½Ž¹&J÷-7U;§Ã’ÈÓžzâ‘òWO­¾ýȱ>nñúå]¿Ålè`vfZ+ìÙö†ú1=;‹[w;>|ÞÙxaû^<³iY± ý‹ŽÀáB„˜›AÞ‘¨‡ƒÃ h`b|;&k¼|S53;žCÿÈBTçf1]טߟ‡*-ÀÔø àjTÈaá¡Ë Ø05ž(”ù—7Þø•Mmúî¹'¿¿ÜØ1P—17ßùÒÓoºx0Ì `„¤ï¿ä´›Þþµ§Þ|æ’zÿmŸÛpîÎzÝ}öôÉ¥®Ig6©Æïø°©q|²öºûßqñPÿ.ƒƒ9§yÅ™ÿxé×ιãCÅy~^ Që*Eb‰ÉÜ,)Ö1jü¶;¶w{ÆD€M@‰P·M!Wx:о0¡ÌYª´º™¼¹±¡;ŠäŸ#P`AL5AR¸À¹mš«Àx’ˆË®çëj¦Èy~^¸ì“Äï°=/6ŸIãø8]ï08ràøºA,4Fœ±¾}áîÓRäÙ­Qµ,‚Ä^Ý©äsndÀSóMUsÕôY”!Éa_7Wt=ÿ]Ìì ˆzDǺ'‹‰Uy*¦y@h¨ï Ð{\Pì—+ádC¬•y*/Ê  ’I—õèÌGô1­ÄžæFÏ£BC¹‡pàÃÞâÚT°;8ØF§Jû£)h°¯jõýæ÷7üå¿2ëO’Q½>§ÜüRáÇÊ­ ÙŸRL ’Õ¤.:?ŠƒšUƒÁ"Ð͹wÞø®ý÷Ìæ’+ þS_W/bÒoÃæT ›S¡ög\ëóF”ãæ89 Ì"Um™2í$,‡í{¶&#Õ:§#!o ¥kÊ;&ÚŽ 54›zýJ¤„eÂ^ñk(²aDi_»d‘É!Qª!·Ab‚a¡X(3ÊL wÈ!Ÿ?¹ªøîñS¶ó~ÿ©mo<ì§cï±øfGÒAHd«zã¿c´>jRåãf«z“\¦å2m},©ë…AÈÛWî?s«êãS†iI^`ëþ 8¨¢æ3êê*æææ ½Î9n¶ì›ÄÆí[áyò‚qÒ1G‚ˆ°¢?‡ ¹|Ͻ°: ±c÷flŸ¬¡è¹¨ÍÍB׿P«Ì`¢Nss5ä]}# Q,ä±â˜<ž_»³“\úç—`Á’U˜«L¢>± ›Öo„;8@ã[7¯ùÍw{ó«ßM"4a€ˆ®Øðºã–W‡î‹‘➇·¿æ‡ËÖŽñÏGÿñ¡o®½ðÞ‚vÿæ·«ßߎùÃ]d‘u´Iæ%(“…ˆÒ&Bñ¹ã‡”Þ»yÕƒXÊཟ>ù÷«ê2ÔgÿîƒE¦¨b6*[šT§d^7]n¨>7}­\¦ eÆ_j–"»ÿ¢T…q· S…`BÍR”û²ïëÉpß÷ºFs3¼¨4‚jD"$ˆÿêzÄÏH2¸¨–jzÚiè9TGeþðˆ§›~×ù¬úH;Ìì)½&7DÀ3:î;¦ËÆ< †K@ !'<œú~%ƒ‹`v™uÞ×¾WÓsBCÑÝã? 4‡¡Cƒ˜^ŠÙ™¦ ÙȉBE>kþÛ]çë]™©þ$äàêÜPsC“þνÅ=ÍîT°Û©„¢®fEÀ Ò¬XsÈ‚Hòô°·$Í-«-Ì-ŸõV̌寮,˜°ÀƒÓÛ `/€=&ÒQ±#ÜpÃäÝW¤œeúÝEß È/Ä5­FV 5«aèR¨ýu5;8ãç 4 `{<¦j×x&RãÙË #tžjì9>v–]E­ô[‚ø¶€¼’@×Å¿M3n ê7)º¾ L Î6wç}U#ÝÔ­ž™Bš† sÏL@@ÅІX²»‹Tddí¹LseiÏîõ=N|'F€9›ËDÆàÙqĽe d3è48Ù&aP=Šžâ_jmÌeJ-péîWÿéø); ÈUdý£ ଙ÷>°áš9Ó|‘î]Õ›£[Õ›L›úXšz:>ôÜ¿Wä ÷[¦‹Î:7üñ^©ŽÍ»÷c¢2¡¬Û¸f¼ýÜ×àÂSNÅšM/áç×ÿû^x›7> _öŽïÄ¦É $Ç—ñŽSOÆYÇŸˆŸ°gj[öMB „Ääd†¨LO`þèB xauoû“‹ñ©¿üÎ|íë±âUÇ`Á’U€Ry'pιð͘·p‚ÀWîÏ^2èÄÕÞüѧ-ûÆÚ·>›8Ë¥És>uÂmÇüôЧÆs#pÑ™?{‡ï]Ø(ßxôìˆ'´ý\¦‚6ç©â¿_½`{pÍãoü‡÷m>v›-òšýôÉwÓ¡ÉN±¸‘ÃMz|D5sïž»=+ƒ(½»Y³Ã$cÅl+—‰¼ó™#Ë_œÞQò×QU2ê‚d-GŸ¡¯mqƒzà³.\Ï×Ô¬ðuƒÒEGàóÛÿRJ8_îš â°2§I»¾nî9òöPCŸ6±ÄLMA2pþ¹ËùžÅZ-𽦪 ˩Ţ©d£ØELŠ@MIN3'JÚyŽ"²ð&t9#à‹}Ýx°¡+¿­„_™ vŸ] §óSÁžÂÞÆ¦òžæÆü¾æVoÂßáTÂ)ÙPÑD“òTäAgT »‹ÕqèþëwW­_ylùœcRsñÀ"÷~GxuEþ’œ(/É™pDnÜùÙ9r@³þÇêâ[’¼wº"÷o.å~ž…› ²ï{egèƒEgà‚üB—³*‡Ú?_³Ùh¨Jþ˜Áó®ýÛ£|ØW|ýHýº3èr®tDîc®È ç”ßío+sãewp¯¯ÿˆŽÃOâ«®È]äŠÜ7]™¿Á“¥_¡/ö{ ÎrEá| ãüDIqð:f5èæ`-œ.VƒIGs@:$£k’ÚˆKXÂAÝSÌ ³'¤³Ã^Ð’m4å2…µbÖvÌ„ˆÒ xkWÄ ìG8b†Ô"feiòÝÎwFðlˆˆ”æîöR üýÖóW=³r¹×}óEÇ÷' þ™@‡9™?ãÔE¥4'm3há´ÛøØåÇÝ1ü¥£ïy&$ —Æ…TXZo-üíK§ß¶úﯬpšÞ4 >îêñ=ëúú¼=KJknûÐcEå^® ×Ü=ºùˆ¾ú××ûBA@w ÂV¼óRÜE4´EW, 栯—˜Aü¥E§ ÂèM]è“5JŒ>wˆgé㻞잨ÿ ªI’õ¢ìS|)Àÿ›~z¿'¢¸¬8,Ôô¤p=sdk6ÜO Ü¥Ot9Ü£ ÐLìi­s>û2`îb4U³“ˆ*‘ 5d0ìŒÝ×y-> Í9­Ã|UÏ9>7©ä .A‡Ý“01D¢áãdIEíÁ:cøo¾·äBDª>ÝyA `9€K‡·L»wNù;o› va²¹ã³Á¾ÒTsWioscywccnÂßîN†{EÀ ŠÅØ™H@ÀÚÊïåï¸ÜäšiìÉw„7Sr‡öx Æ—”›¬…SÞ9&ºY çv *®ÈÝ=Þèø ·pbž·d÷²òñ×ô«tÐÀÐçìi­K¡ö ÓþwõøõGÎIu (éyJr+%gponáÞñ][÷üºÔ{Úí÷ÁH~RÔ\Êí+ºƒ{ò£ûr §ÆJ‡?.É{Ç8X_@2«R¨›…†ª8ŠJ‡J±4 3ZB6¢ÌD2 žŠTT1Û‹š6çL5LÇ âŠ_Žªf f;>fbªbµIæÙ«"ýejsÉo’ 2¡LmD™a ¶8—©T|Þ ˜rjúÊM¾öƼû8»½é×_vÄ®¨ÈÓñê+ôý.ËK¸ã'”ÜUaœˆ´PD׉ÜðìÞ=0Ô›>Ê…æ Bä Ø°kÒ•¸íÎÛñç¹›_z{vlÇäîM§wáÙ'Ö¯Ì<ÌÌ¿Û~ÛÖpÜ AÀ•ÇþaÓ®xlìçþ⺊ësA»±Òñ%N zþcå#»+NóŸ$Äɿ‡l;f’–Ì“špß7¾óØŸþÓm«¶Iˆ#gæe'½ÿ+çÞºôʼn%õ~ ê%f:æe tlm ˆ2uã.dfC„Žñïr³%õñdüzÿ”Bø.ÓqW\-Û,ª.åe٧Ϻå-RÀ¹¶«Jà- îqAC—›ºêÖtEÄýí:6zŸ³0@tR 1ø+£:E8 ¸>7¨HåE¥Æy-@!5òše1h¤®u €¦< ]ðUÝm¨*5ÂÊY]ÏüKfH" ÔðDÞωB  ;ð°¼¼ªþW‡}éX×uQšÝ$º àT€ÿZ!¼q6Ü·{*ÜóüM•pßüÉæÎÁÝÍå]Í—¼‰`·¬«9¡ã³”ÌL9Qäyî˜2%‰Ã{%…Ûì÷ÔF‹+ëŸ>ñæf|N¶5IÎ $Í9Â,9C#ùe•EÅ#닊G5lŽDçD?Üu›¾È«°§8pCÝ”Ì'¿U8ÁøBIN³äͯ”V4†Ç–.êšÛG㱄²šsÊ3Ãù%s +ë£Å•ÍÅÛŠýŸ!vØ%[8ÚI!ƒ¡µ¢87Ù:õÒ–Ì3´­í!Ï×#-KFGËëøXÛeÖYiØu|£*5¤uV¶‹ZNÓŠ’N“ ¢s™–XÛfp"”)Œê³6”dàî¶ü¤úΆ‹/œôÝpí¥â¾Ó¾¼üŽÇKaŽ@À™—²ôÎW}çO•Uþ›º÷”aS™³MÌ ÞÇ…» °eª‘ÖcCqŒ×¬hùÖêÄz~Ï8*!£0¦æÈb?œÒ^ŸÄ•Ãx“0³{v½¸)¦ûsµVžt:žß¶·ßu+nºýÒ˜››Ã‹S„Ü6E¡ñ¾?yFûqÜi§Â+x(ä$,ÄD¥ŠC—.ǽ¸¿üý˜™šCcr>ð vlÙr¹ÏlÝ…ÆþýÀô¸Ñ„ì¤ÇÿðGœ÷±£†`¬Ñ'× îm.lôIóM)âyAAœuçY_ IßWÔÎeÝxê!`³hp¤æÅX7¸'xÿ–W-YÔš3Ò IDATû³Ï=RRÞ ú‰-rñGϸý¿Ïyþä|zé™Å RCH0k&S%so”iø°ˆPÊEg¦°äl @Ì —rËו÷\C€&¦º¢–¿ Ê,HB#|8®$M#¢“˜á1s9ä XU»…ŸÒ—M> ÜåÑyÌdð#qu¯ÃàœâÐiꆨsõMÁ,Ä)ß4DÃ¥|8䌆qN4¹ÖƒG‰´ÃZçC<)<ÖÐg§©]±7ž:_ÓðD^9"ׯ3$à‰ÖM¯–' ¾æC‡•/ø€Ù¬1e¡ùi„×ÖUe]MÏœWW³£SþžáqkiÜßêÎ…“BÇâDDy¦l{òLÚy.:üïk/ʹ"÷F"q%€»úƒ$gAÌr§má» JýÅ#ù•ç–œypEn§#rû=Q¨æd!ˆƒ—èX¢ŽV@$ÌN­h«SHö@™l;lÏñõ ÊÔdÖêMÖ‡™eëo’lt™-&ÌDÍj£Œ¹Iº•¼#¦DØlp”±€I[„Òb‘rC dõ³§?üž¡°t=ƒç~7¼áèo,½gc@ª-bOÀ!õ!±57ù9gM¯\?ßï“Ýdqºª—3¬ Ap§>j꼡IÌ îgoÊe&ŸïýþáË«S{°c|&¶?‡µ›·¡Ñôá¸.*>chñað }ØùüÓ(‹¨ûÐ?ÝÀÖ›±õÙ5˜ž™Æ3Ï>‡pv¥AüÅ%À1#ƒpЩᄌäáœ3Î…ï7!Y£QðÄê‡À~ a¹~zÈr” Eè}{Ðhú“{Ñ?0‚O< ]«0zgÅÐ pën1­Î÷•ˆÇGÛpöeWö_¿ôé÷„“¦Ç«÷9™U±‡œW’n»÷½=erl5çøWœxáwÏ{lÞîÆP3/ØZ4D]:³a;_Q³v^ÃôYrÝDV”ÙêjÜõ¥à Ã1 ÌD¨»sÃÙóß¡BößÞõç×Fȉ"ª9äÕ ¢È‚Ï>®Zö#"Чº~óB&.j¨RC×Ý&ÏehÙ€›ä^Ý•{<‡Á’‰=ÍÊ[è, ü–ÎÃ~îRSÓÈS1äÀ%ï‹]×z+ƒ$St¼äËçüÁgðR”!ƒ¨†" N3'ŠÊ9îiäí«W ½þ_øÓ~oÁ\‘ßïŠÂΜ,í/»Cµ’3O !²OMUMU£ZX‘³Á¸ìc»e3âªãƒ«“?·mü²%µ{¦†ìÿHs¸H³*7Tu`²±³¼·öRn_}‹;ãnˆS^TX¿ï·nÉòËÞȾ>odW¿7:>[4Û—[:Âk;²Øè½ ÄÂìqót—N«æ­FÖŒ2í¹Ìè=+kPDË¢Gů5x1ŒƒA–“ûmQóÔͤÛ>ÔÿRøƒç>ôÙ>•ÿ>³ßZzï²[Gž¬BeªzC¡qÙ7®Ÿ–µKTøü¦·Þ±+7“IMrhïjBÎÝŽÀÚÔš“‚Í ~}ï«q1ŸÇŠãÎÂ]÷ÜŽÉ™ T½ŽéÉi<|Ï=ØúüÓøØe_€'”fk€5 5œêúý ¨P¯Lá·¾ ?þç/áM'Ÿ·¾ì€7ÄÞø–ú.¬_J˜ž%², ÙgoK„茡ùÄø9ÛZiûê?®( $\¯n‰âO@8¦°¼¬(èv…x‚€fC˜œG¬ŒíUUYUü郎®üƒ¯ƒ/ÔT¥_±?¤Ø{g*Ê$:YÀë}ív3ñgÚœñÇfI/'»túŽŒDRp)LÎîÏ,q³Átਗ਼`0djËÈ+ÛÈëáÂuù’Rßtz~oyË% Áû>h‘‘1G‚ðg|Î[ú¾Ìý{ð˜V)È(þCqàxº:^ fêé¾ëMšq mЬ—‘ùÀ4ò*kt9£/$`‹ a³A$Ñ^QɦLV¨|§¶Jç3­‡ªIäæM£“¤ŠÄ–„&ÐH'øÓ>(Ehº …¦;@IÄìõØñrÚ]‚?“˜šiëÔ ûM[®ÅÀƒÏ_WÞLþÊ€¼Tƒw~}é¯Ü™ dL°°™:«ƒ^Q\ºþ;¿þã“w³Éò²ÿ|檿ºô¤oÿ÷ÚÊÙ†ðIî­§X;Þ—‘ͶÞÜx(¾ägŸ~1XwÙ+wLÌ=÷c÷®çP©ÕÓ9! òÄ“NÀ®¸–iâ‚ó^‹wlÂÆ@áÐ3;ÀBÀw=Ì?åt\uÕÿÂþC#8íjh¥a[VXÓa¡Î4 Ü»åüÛ÷¾ Ö GM€D„ V…0M°eÃ2»¶> w4LÞ¨½/`è”õøÕ~8N4°(—€î~pß žÙù£üþ ~¡s­å‘ BޏãÉ‚>¹î[òèe_Íió£?zì’×üÝÉwÞÓëeă«w¹ñSÿ˜Uæ‡ $ǬʕŸ[÷ÀíŠ4ÇiÑ_š˜½½N¾ŠˆÙ¡m2œ©ŒWu@ZÂ&Y2)é>ê<³Íù†–“€Ñm"Ð~ûB15Ö¬‰ ^ÅÐ…Öëób¸ ªä+Ï-©iðÄZ%^ær *WS¥Šk”µÁV|vÓ‡þ·øÆÁ·XýÛ¢pÿc“¡m sƒ‚Ÿy? p‘c’éçDQdâª?ÿÄ~k¢‘Á× ƒ ²cξ7µ8 0þ›Íú¥oË,';&42„ É[”QÙ­\] jAÉuuPñtmDCm ´ÿ©r0¹J±º†úÂ~Vލ6(V'Øê¡¦KÁDe‹<§b¼µ€Ûjhd[LƒÎ~›÷Ãï L‘=+Ðîk¼àEOŒÞ2tË‹ÿ<Ô vJ¼ÅqØ×ÁQLOUè¢Uùüï_øÊkœÙ¶g,bVŸ({cŸ° -†0Òc/x@yc†!2^FýœÙã›"ËÙµAÕÕ*šŒq²¾‰*0K(B‹ 7ôN5“º¿JÉúßš»Ì€ ÊÐ0X%™A\¦‹R“²!@Ht˜Å°/S'§ÌMfPïGm½hÉZꎾLj$×Q‡d²EÍ$’Œb!$ 5xþºÒ“ô؃bCuû)gýÝegMa¶?t82W™'ÿ÷꯾nç_]Ü¥²?øÁ¶wm½né]Ï©xäû’dqkJmõ1ÑZæŒSæÕÑÄÑ1£¸±’ï¹øÞÖ;1zx##ã0²è*ØÈdm¬9n-6>µ{öìA©\ÂøÄ4J£ã(ôõ gÁ,™?€×>rÚÁ«Ž]MÛ·bã¶xñÀ>ŒïÛ¡%K‘ ì|ñŠ…"¦§Ê(OMƒ'Æ!€l¢Zû”eÁËe1;2ƹ<Ž_wîÝüHÍ®YÖ ‰Qpÿ v=¿½ä\<Šjî” ‘ÕlXCv òÚS~÷¥ïmzÓ»ç9Å›?°óôã2l˜ßzâõ·ÐÊú‘†ö¼ëkk>²¸Ú-eÛü qEZÊD„N0OÊ €˜µTG»R ô6ãQ¦@ŠbtG´Y¿7ƒM2€p¡C"RÈÌ 2ƒ'§ï ¼·mc€w¾Œ #¾âÎð &ä8Œ2g«jÜÏP1$èÆ™_H„e}g bÒ1™ÙV®ŠgqÉm€ÎÂŽEߤ  gkK¿‹E‘yfîq™A–†Š§›kÊ6Qo'‘¹ ĵ"Yq@Š044I2È€-²l ›óFÊ×*pu•<]9£{›¯Ý‘ûÑþÚökú+ha»QÿÄLWj(ßÕµZ)˜pŠfŸúÓ3n:r4”A™Ek7ŽülþcGnúg—ûº&çˆMùh"Èú/Ûc¤çì¸s9LT÷Š5ýç½nçÄýÿÊà÷ÍqÍ%/ ´÷ÆñÚž ‚¸)gt³Ìø•`¢š3z«]ö<¿`ôiCd´dÉ ªIºá#$E¤:Y@Ø“Ù_Z–ŸL!3H¦YcðQ&¥¤½BëžNfÀ¡œ@f 5AÝfÄb°Ï¶H3n$[#l‚÷}©ÓÈ BpL¨ú¢ÅhêPÀ;b‘yŠÛ& Öz|ï4ýÊ÷Ÿ½úo‹ÀÜdu‚& Fßѿ혋&Žß»Ü¸û´Ùe+ïÚã62Éx:È ˜XÇçFÕî3-‚12‘㣿8pgg ¬T˜îPv¬ž—¾tü¤âõÏ]µ_@¬uÈÿÜißxåÿ<û˜¿-†6Œˆ´æ£AõJúíÀS¥’tÞK âå‡Î¸ñ¾S¿æ´tšé¨Þ°éP´e¤£zë<³ÜINaÛiBû>XkÕTµ ž™Äø¶mà©ILíÞ jäV›æÆ4ñÞÿñ6¼þÜ X´ò$ÜpÃñü¶°mÇÓÐn ð]ìsBQòl˜σ®–Âù—:HG»NøîrHÛÆõÜ~ÓÍ á…@6ßKf4CWË@àCWk8ãc”O"¾ê‡5µôêí:a}†è‘þýµYÃýˆ­P¤ŸøÑ²§}tý¼áÑ7e©ÑÀ“ŒÝ®“PJÏý¿VPää5`ð5f•*ÛGBÍÊ% #D<û p“׋@`ʼn²KDƒL&Ї:Š!˜%þSy‰·ÍmyUxO:§Xç]®šU5Nš5µ2ÿø£¥/ Ù<‰béUð(‡Ž@@ŽÃˈ¬6á7Z†jº¼@ ­ÉÇ¡U±1¹5JxùT3…íed^ ’,Iò½£¿XŽcvö×#ßò¸{™öÆú§½Ñ ïP~Ê;bø¡R7SÜ‚ SX°e9Ù­»Í!5`/ñê;^h«fCÅÎ(ö-k¡q˜ëÓÀ\h.X}ú¾ן£Ø¿)pT0N ;ä?˜d_`Šìë,‘»ÜÙ¯ÂÚ™ íŒ}ª ”‚Ûn`–;¦Š?%Ö–WöœúáeÅOì±ç-ŸŒg-%â5íܪ´·ÐÕ•ye¢gÚ=h»ªBJ!P­~Áˆ(ÐlbiÚbŽ61wocgë• ÛLÒ€š)Àö+¥«™Ô)ó"︃•G)J1ds"~€H ´ (©{”ª7Hmpíªpùý#¯¼`êøƒôÌÊÚ»^qêg¿tö·þ6ײa*ÍiµÖNNZàŠã¯¿Ñ'õßâ¼ÇñðW¦Íªn©dTo´ùr2ª7¥w4ê@abÄÅ]&'Ç‘[6L#"í# Ÿ3@ÒDÏò¥v X ó†Qž«PDïð ²Pxð‰ÍxìÞ_!_ÈÃ&ùÚäaŒUD˜6¥¦ôsDãеZËëgfÅnäçÍù—^‚{n»F¶R>à„ÆZä Û¤e²ÀÄ(×3z±Nä~è‡5½º9ŸóÓîÊOžò_þóyõÔ$S‚œiJ›NùžÓ±k9YÀ tÔÎ:Ū(‰j&:=Q6ÉD)ÙÆS9`@+¯ã G'¯\Ýö(_°9¢Â›%P-šfÖÖŽÝË|/!ˆ= ]ðµ—­èŠ[äÙÀ=í;Õcõºƒ_ÐOû¯ŒEL$~mÕL²}›2,)Ä>€_¯ªÐ¥/äPO¿˜™4ôIq‹ y3g‰È#’®%2M¹Jµhö9nõ¤Ø¦ÞÀ]k¥&K4d·²„­êÇòXÃjÔ¤ˆˆ$ üé5·ËÏ?÷[^«b"’"3ö(yáwM‚ÂÖ±?|íÜÕ–FŸ”d~ ŠU@T5"á ’ž€ azÌÀQ#)~å?ô[ì¡X·ÌSOf^à2¤=S0{¾á¨êw<åfY:ï/õ÷ž¼2Gì“ ‰œÙ¥ŠVhÏq‚rÅUÞt ÷V‚é¿›qߥËCô›$ð˜f]ð•“«³eÅ~ Ù‚ Ö2«eš±Åj˜¦—’k.?qôÄìÑÞ¢„†L7´Hd¦ÔZfÝpvÊÅYÒËÒ &¸¦É&³¡)ÙKWQrŠ:"Zð_|˽Aá&x67r—–ü~oAeˆ)™cJÏQËì¬/nøÕ‡r·l½èMãë.vûî¾þÃýç:Ӭ瘎’˜=æJÕQ½ µÌ˜üW}ý‰ÀAMKèYu Ì“OÆý÷>€]<Ö6Aù<î»ã7ÈrXØß³6Q'z±i¥#ßaQÁÅ!' (!eÖÖTTg2`!¢öë“AsáB¼¸u;¤ò¡5ƒ*3Àìl£Nȵ*(— Ñ„4`Ø6ÜÛæÈi@ $Ù—Ö¹Mˆ«À4ü)Šx"ê¸ÍHR3©“ˆÈ„Z¦P*|¶9j™ §b¶“˜=nh“@1{Ç74E²• š™1åü°íW†8_ò‰©,ɘ.ÈîÙyÖâ™ùÖÒR˽´4d-* Y‹KCÖÂ2€8i;XBa1!«Y<íÚ=+Ïp³L«I’ysìþ­h¦Ÿ«_î8G€"Ž$éfDNTž&kD·º¡ K\prlÛÇà,XƒLÏ9]#¾±þ|œ›ã­¾¤ ƒóös•`Öª% ´_¬¢š”î „¸d#i¯l‹g¢ó+ZÂà˜㜑æ=¯ù/_³:?ö{L$¾@Ã$g-#?ÞmÍŸÊ®(ÏËSέt‡²+ü¡Â1ÁžÊS×´2¶qC·‚ç²”±qof‘~ìà/ßñÈÁ_|ÿ†í½÷ã÷¬Ü>YÛÛu¤º·o¼¶¯8å1FÑêÓƒ¹%þüüjw8¿Ê™—?fÒ¹kÛjç+¡- eÚöE”}höÞÅÛëíL ¾n3biÄá"%q’H#ÙF™—ÞÆ o5‡Ðtè"&FO2%|~dTGÍÁvÉdÌ’nÜ|¿†~dGîàÚo,úÃÞ‚’!x™Røs#Í̹j™í©ÙŸÎ{dö°5û:eŸºï›Û‰A 1ûÑ’¨†Z™AЬeÀðÂ%0µ(¶WB¦«ËNz5νð,^B˜Ù <è™iìÛ²ÏmÚË‚®û:Ì™û1¼x”Ì„Zš¤` R>t&¾3ÃÀÐ’^ÐÀ0t­ ])CW«Ðµ0ÝJK–#(WLMA•Káì/• #ä:•‚ž™L ´ z 3z8R,@A%¼³ºP{D=ÈœäQ¥Ö%‘PYõ%ÎÞ¦;ÖFf¶¦4ÛL:’ls‘èô¼mªHvÊ f‡!…lLØõÝçj„bÊñ™ôƒX¤Y5…íäÍž`¾µL/°—-?Öò`±½*˜o- æ[Ë„š•ñîfSC¿€ BA±Ÿ­ª’ô¹ bѨì*ö݃dðšòbàý$_ŽA–Ÿ¡¬650Súðt¼^¨YŸŠ°7³î^Þ°`ŸH8¦°½¬,ê¸ Â¯~Û Èo3þk4¯ØRôTÕlaܱJÁ”ð”µçp`Ááÿk>¦x¦"ˆO#d2ª<*"}÷$¾!,ÎÉnF£=¿cÚGÄ^ôcb€·€BS‘R®OÕŒ,Ôz2ó½.kXe.mË‚–dbÖÌêï!‘±^LðÀZÕJO“‡¦C¡V)‘âàí¿Àǔܱó]U^T JCeo¢Pö¦¤fE†°Ø’RÌ~Õo/ LiµÿH½ÌÈÌ’Y ŽŠaës[-Ó€Ôœd)5ŒÄZ&"2NÚ} •Jfб9Ç(óÒVs“2¯³–Y§ÌK–{9d±M‘Ó 8‘ЀØ’?àüéWœ÷Ý÷QØ«SAOøƒ)ÿ7èñãúƒ‚¸ðÕó§šð?/@˾¶ómŸûÓÀ3~£–Qæ%ž©É^Qe^,  ßc¯=@î¹ÏA÷ÚÓ±{ËfÜ~ûï±ã©Gá–¦L‹OZ‡®«C·MX²j tà5Œð|þÁ…Xµt–{,´]@YÙð´[p6¶²¹<²Bahñpx>"ˆBbÞBPw7xr, Àu€ÏVþÒ™ÄÀ „mBç kä{º012Ò|—àÔ^ÑE›’8·§XÓ¼ù¹j™q”68ô@᲋?UÉçæ+p(N7É ÐIh0™AºÓ‡Ôqˆ"†„4I‰ ¢oFæø‡{ÿa5€®˜S^DOp ¢b‰Œ—5ŠÚ‘uþ'C…ñE „êñ)yƒ-†Î*¨¼ËŽUUeÁ4¥ÑÊð{[³Ž¦/m>Œ¼3\‘Â$‹,ߦ,DäÄù6¿¿ô9èÆØyFeŠ IDATÏBƒÌ$ï ·zá ’ŽV` «e1…©kõu„2TñÛßì¿‹Y úÚë›õ'{Ž8û²£î~sÊ?"«Á¬pô,¹ª"˜A½Ö<þÙ¾¿…¡?‡VI±oE»»+HT ²]Cd´KÏ“m©Ñ.‚ÁÐÒg‡¾»v»¨5Ÿâ cµ½&ÍiV´nàuÁ–±Û? Ø65Œ¶]óæ‰ÐdÛÒ°# #5´ tMÌø‡„æOZ2Çì}WkÕè ÏSµ®Yo}̇þIl½{ãµïÞ¶ó¿VÖjãb°½/…ÍqAõzR˜5½žÃé›KÍDH¸ÉßUI_ÉŠƒ[Ú¦ÏVçä¨*ȬeD^Y††NTo`fÔÓ™ç<üC@|=¡€3À ›™ >{ÙŠž‘ úÎWÿÒ ˆÛb¿il# -Ž„ádÂjKŸH¸øáø' yOÌ`Ÿ«rï~W &W²áØ2«9j?×¹—Y¬·£UÞ ¸Ý×î{<][V ¦Œ»#½‡j»óûkÏçöT¶ç_(?Úµiê7gßqøÛSŠƒ_´?"ÈØHŒ@@”%Y¥¬,x¶È²¶N_ÿZ€-Ö:ë³Û3Œçþi×%E yWë=ó_hV«6˜ƒ¬«*Ùi÷YòÇ¥«*4í–×o{÷õ ý »k6hbÒ¬±¿ò QœîŽ5Ô[C®í@{Ý27QÚû €©Øïv?ˬ‹û=U¦k¼¶?;Q;`”¼IY &Ä­»¾¼Nqð͸¿oñÛˆÂÇ$]Sf”!¬¿oˆŠlYÌm”y`¼Ì(39 3~©YR)ó’ Ñ_BÎ¥&%çê @‰J')ˆßättd%˜BrvFâµ’*qÊ<“£LÔ£Lf>jT/–6袓®;•Áå¿ð›Oî¹x˜ÃP+R3QÉ©AJ’kÝ@' L½øÏÏ pu•'ïAaþ"Ì_¹43 I€YÈat¼A3áÀîÝ(.:]ýó#bw‚Õ=Œ‹.¾ÃŪµ .ý_båñ'"—Ë¡¿Ç x0L euƒ8ù’K·%+W gÉàðˆñC¹d¡¦4‹]à®®0-;;-$N<ç¬[ –v:tµžb:â¼aÑ1ùL<¥/„DÉŽÏA=¡ÚcøLLVAejåÒ)'|ð‰áSÞìûå¯LÍì|쉧¯ûõo¾aó3ß:qlòé ³†&GK‚‘Pù³£Ì´ÒŒèØ2¢9¿°ãÊnǵE>7ƒ‰™á‰Š),/+ Z„ê(wdç:½w ýk´’“ƒ?D€`p^³ÊÕTÅpt$U#•& ó¡¶d}Û K #Éðr¢«_¶=8),0WnL8Ø EbŽÓËP^‡Ùáöó¼iáßl”0®@'EüÁ€ýû<]Û\Q3ÏOûcû'½C'½Ã#³ÁÄHÀÞ]QdP«’ÌÿÎF* 2¦l‘+~ßYíê* ˆ›Ú"ôó‚Ÿð~çêê–j0»`:ÊÊâƒkžÕWö>h…§j]U*·{fÓ±OßþãÓL3ø¯c÷oDÌP!B–k-жNÝkdolÇÓö~ák÷7Ž*?P fæM{#ƒÝæ‚%’¬kÛÒØ§ìÞäªêgªÁìk&‘µ{KÏœ´mâOWn>òûÍŽ*=†ÖžÑljÄ, ©½™:4´ZtÌŠËÍ:ãøú>Ĭ.*•÷Ý·s×{7>þÙ}ÿ̧¦fvÚ}Ýk SSÀ‰--éõLN¯e&³ Á@)qB}«]¹¸Í¨Œ´ `%€š€¨Ú"ãgdŽÉFßRRŠ™aŠác‹¿)\ß¶µÇà!gTÞc/SVÓÂ×>ÂÚ 8€ûLòãÑ“Q«ƒG,KX~VäXL ±#x8à?Wðh‚´)º#OtLa¦o³>Ï5îïYñ…ÿ6É:7ô”2‘ÑÉFÈZ™PûÞ-`¼ Ÿˆf$ã¶ÈMÍ'+»5 àê¬Åÿ3fuCoD×ÏÞÚ@»óöº$Ì×·VcÂàX±ÿËššÝ6匸º² à·ÅîÉ“d\`{ì˜lØæb°ÉP†¯]bV豆v%WT„aÙXµ|)/Yƒ?½x•‰}˜9üöïÙ†3Ö¯ÃPOçž»K_ ßt)ŒÁ¥8²o‡`ôÅݘ޾\)ž‘ [N¸\G†FÎN†èØB7L ع<Ê¥Yìzj `³X “r¯Øl<GOf›ã ´®¤ÉÍYUçz#‡¦ÕË/íë9ömHÈ+å~dÛs?>të/{aã㟺mÓÖ¯¿áO7þýÌÊå—¸uØ\k¨Y§E™íóú|œ/†‚ …LË©7â·uþ×x«ÃÏ ôs"r tع‘AkA¥Ïž¯d½­3,n¢[ÉÀ03+ݵÚgo{Ûm~ŸHÞ$˜¦ aì‘ý“ó¬¥ANæt  âñò->@?øòVÏ_¾W°˜4…u WL,¶VyY‘ã@ûDÙ `µ}ªþñÄßÁÐ?iåBq1eQæ@1obÈXâÛvŽÙbÊëL‹?-.6ÉÆÓ÷¦¼CŸ`ðGÛ¢(JA’Öÿ}’ ~,IÞ P@$JÆ”%rÓ]æ@¹ÏZØ"×Ðà”d𣓿z—†ú^Û¹aËÈGä!äDFöWƒ™“ø·&¤ŽÑy¼ø‘IÆ RšýS4ô¿Ä§…AÖ¿È[æöeM gV¸ÃÙ•ú¿µÁÓÎ=I÷Cÿ*…ù' 9mÉÂÈ’ÂÉGž¾çÅþ¶Í¯Ô1"ˆº!zG%CØ“9³gr ³´Òm+I¹ÄZÛLD´Üˆ¡µ "†-+j1:åf fÚ2d­Û)ØÂ'Qk %ôD¦A$ :˜½~¤Ò†HæçŽ¾Ìæˆ¤‘t1'Èš"l“`C%SÔÎ5&Àm”y ¾ˆhúQ™™ ™&Zšpáç¡~£²ùÞf@^Tî‡?¹úæë™¢.Y0Ë$žYŽtxÛ4lesSЭ¾,×áÁ· ]³­¢¾¼%ÚóÂ󘩾:[™ Љy †ðæ7\‚áÞ~ìÝ»›vDÁLI¨x Ç-] 8X}ÌzT&ÅyÈgòøí­?dž36à©=°ÀèÁ=Ûý<&K.jû÷Ž H Êe?Lh§—#Â’ÓOǼE‹QÈåðÐ@m¶ ®~ÿûÚúÅÃt-ÍHj¼f¢"l—±,HlìãMáñfˆ(aB£¨Í0ʦBEתŸWB $s‰VF£ŒI`C6Ö‹ifpî=q¦täÁ”ÉÛZz#±IëþbaáÍSÓ/À&³ÔÄ¢Iã"ˆxÛèäü²ëŸœ0”ògœôb®_šëißIñYçâÿPÐÁ?d÷7²µ¹ïhÎS·þ ìPÒ½œxÆŠu»õôÕîøa¬Z½ /<» BÁ&¸n€u'cVÇq05;;S*£Â `bzeWCh«ŽYÒìŠÅn¸ ˜?) <¹ãYÀ©Af2Ù"¦GF +•K¶þ±³aaµ½'VH,_»ã33¨NMÂ÷#i@¯çpñ«2k™±vÿαfPÂwùCâ˜ÔÍ µ$E¹aqã܉u7†b¡(½Ä{=êÈvÿt&^ÖÇ€榙¹ýø5WÜ^ÈÍï`ÈdF²f‡vƒ 0ä;$T1ž9(Æý‘ŒÏnN³¶¢Úo’Uí¶kýÖ¶„èݹè+V`h¸º†Qÿ 1åf¼ðüÀžß®vÉ>gÐ\dež ÅybÊjBLûͲšÎkø™ˆo^™0¢ì®‹ý¢ìiñ$þÕzæ¤Ì¾ó÷š%5ž àg5³DJÂtв¿Öo,ôsÔžK†f#§3$ÛõHÓQ5*Sb6˜”Õ`Ö Ø—ŠSq`0+ƒÁ¦K€ KéÐQ0} ñDÖÉ]nÞèS£Wd%îlš³Äl0&JÁ¸USåŒÏ^N³²"ã  2«9ÙU´–:‘×%š5cøÊ7]ÉÚËhØÚŒRÛJð®)²µ¬QtóFOài—*ÞDÖÓÕ,³–‚D`‰B­Ïž_ëµF˜jg_»4ëÊ’?aÖÔlÆSN–¡2¡˜7iƒL'+»Jý™åNÁRJ:(û²ìM˜v WU-;¥u`i(“¹q_‘ô%YŽ-³µ¬ÑãvÙƒ^ÞèåÐXÕ!])‰u<’ f\*–È6 ºñKŒ‚"£“v-fݹúŒHg6QM!@óÿe2¦©: 8fŒ“ÕL(ÝhÖÉ ”5¤¾Ï¡7zZ_—RŠH ›ñ2çhŽ‹ë]êºg3ûàÿ‡ë¤þ»0DFXzf&Cš68pïÉ´mhfè½™³-(­`[&J•*˜ž®"L+ƒÒì$2Ù"˜5×S«…{µiÂ0Bç&ÂÞCË´àºüšKfiBÒ0à:.2¹´ à{~¯w÷ôè©Ñê³Gù¼í?Hù³ã÷è%¾Oø®~LÂO!¡8Ø¿Š½‡Ö¼„…Œï—.@‡¤ÈÝ=8¸ökkV¼õˆNÈ8†ë\t¬•£Ùj0£¢ºžg°¨ŠMæ‹J0+:+ ºÛd[dCŠ¢„Uk³ ‹ÍÄ}Å×Ì®®ˆ)5A5UQ±‘s—9]4zTAô„i="h6À°(Ðj\¢²šžv$G\,ya«¢ìÑy*²)¬ÖT0‰ŸÃW1LH—kBC‘€`‹r:/»9ƒÂl¾ŠBè ät&1åLDð´Ç¾vÉÕUQ f…«käiÇðÙ“š•ˆÒ@õô–d(‹òÚ••‘Em ›£47©¤H‡ ÅTQÓ¢¢¦¥£+Rq@ MB›”ÑÙÍ~- Y³&Ç,‰Š_NP3|®I¥•d("$X¥l™S£„÷a!Ð>ÕÔŒGhÖ$H°-ò:oôèŒÌë°Y#Üdí¡¦J¢ÌW•eÀ¾¬ø[”Ñ9³'ÈÉ>eÉ.fS…ÂÕA…\UNP6|]“ö8„gˆI6É l£KgŒb`Ë["Ë2ª5†cE‹I“€f’p×—¦3~:œ£vbä—L™§£„#¥Ô;4ÿì(3t’€Ž&ÊLOÍÊ”à.95˰@ ®«™03L)8gºiªŒÄX4ÚZZ’Æ–¦¢”x²Ô4DçÎíOZ%îø3VU_÷ô;.èö³¿ÖàG_uöW_uÚÔ2 “¡;ÉÍbk©ÙH4Ú@Zƃìåº+–­ÿýá‰fw<Áƒú»ó(—«ì-BB3ã¸ã×áù½{AD¸æÂ3Q 4Ø÷ðý_Þ‚ PøäÇ?+[Ä}¿û!Vp&òÝÃxúñ?â…‘1<¾iŽ?õŠEŒÍLÃ9°ÒÊbpÑ hg[î~ äžµ³8ãÂWáµo|;¶>ùö8O+ìxü)˜…<”çA{>¬Ú,ž|÷£¹Ë¯ÿLcšË6îšhFkB‚L¥c×N¾ß9Q“(óê3ˈڨ¨5)þ)oÚúoçTÑß`nu%à‰-ÙìÐçÞòÆÛïÝwð>Ó÷+‚bÁ.K#i ‡èK)Z fý}tµÝ ³‡üö ˜d1` ›‰¾öDò¦ÂèÑ]hïf‘K©øì!Üþýƃ Ô£«u:/B “b #KÄ0 ²ƒ¿§½ÏHá¬ØFÀ…L÷!ᤄ„A+j)ÀYF6Ú^S#hffhÒ¬°OŠ}ìSÀ˜U­C™,É€¤.ˆÈ¨áñs²jƒa°ÁDŠøì’fAäÃXÆ€¥%ç>3[š”à+ÍA|ÌAd@@°$“uÞ\FØ£2è(ýEÉFŸ«BÐЛe(Ò¬ X‘b¿•€€ä°„lƒ-Å Ž~ß'¥=hhbV2ß"H2Ùe9´¼cæz[…‰]hVÜV_´Zkpáxµ×2Ó”—]Ë”!/·hW¿ýÿ$ÊL’gHÉ- xu—“åËê‹u:²(ÊLî ˆ8:)Ñå7üJñ=Θ# ÌÌR„ t€R2 ç‘ÌŒºaë5?0Y¾½,¼þäoþx]i‘A&'kf2"$0S{÷ÇÀ³;ö{ïûáÅ{ïßñüàÌ¡ý84:&á¾­8§†¼ af°çÐzóY¬ê³±ù¹}¨NM@iÆ5ïû!±ñ®›+vÁÎw¡6;=ceì|~jžÆÒE0z‡àŽÀ‘‰Y\úæKa’†èZ¿:òøÊ9蟷ÿù½/cäàaûúppÈí¡\p^´tþöÜ3+6d –ˆçÆ“õ#cvOR'ƒ\Çûâú»dÍZP»pjR¥5‡†2‘F’ZlÞöí3ªÕC·'Çúß+†Ì~mÁ¼ ?ê..¯õ÷®u•r„F@”0}D eeÃQH‰2Û"Ìfj–‘à‰õ€•Pu^?jGÕì'ªÐ@‘ ‰^u´©ÆŸcŽÚÑtõÍMÃFhK­E#¦ +$¬=ÔS³IQfÀÙxßlÜmŠËÅ4£ž3)ÊlÞ˵¸ÙRPk‡ZÓ›`˜‘8):ˆ¨5«4ìÛÑÅVW¨¿,8äŒi(}µÑpËq±ãÙjÒÝR'|»eSç˜éÈKIÆœ ›áq­Àd4…œ¹9ˆšuz]ÓÑhijF™M&áX”Ùî¦Õ2Ã)"Rj™@œ{óÿÏ(“(-5LS%‚rb庣טa+ø $p G«V$˜Ñºþbj^ÐttF=;³€+}þÁöwí#PÏA{꼯.ýÃST`A)÷F™ãkDm\vÁÂêwOLMM‹ÇÈ?Œ±’ Û”è± £ã³XµöX Í_ˆƒGŽ@•gÀ¾#WkUË–aAoÓGP.ÍB(F&aepdžò‘Dyt Å¡Aä» `_Á0m¶À¯áŠw]ƒÉ© ÜzÓ/pøùÃUß݃ºêpW¿ýèo{ß÷‘Ït¬Ùv½Ïãa¶.ˆ£‰2x¤(3ɯ‹@íQ¦!3ú±gþíôreäÎN`q{Æî»¾«°hdžWüójíˆ(•ÊPS¤Þ”©‰R43)-ÞMàInCɶG…ò‡˜wk*1EÅ”¤åÄ`d93 ÉÌØOL7ÎaàX³EšÍDûlBÂJ|è´Zf(û”M4¢…#þnãH°{ƒéäÞWï·„-ÌÅ2¡àÏ-dD²ÁŸƒµ³õl»VRJQl=3~×B€i0·âÈüÜ1~=¢M‚Ö‡›‘„Á‹ŒôÊ)W©SdžÉ&ØRo$™¼õÈíó”1”[6¶¸pŒÛyœ…Pâ/¹¾ê ¤Ô29!qeÆ6GZ@õ¹È‰ CG¨Ï9¢ÌVûV2%ÊL®!¾t”©YÆ@GeÆ@Gk¼ÃÔ,„Fä·<Ñ9V²ƒú/ræBÌʈ^/iÓáô¾R â×L®Í¿yô¤½ü_Ì{|Å#Ý»e2¼)rH+7š °Äƒó·x¸ûÎÚüS¯*¬¨ ÈúW¾ïó_}íÍoÛ_šü¾®L`|ä82‰‘±Peµª‡éŠF>gAZòýý¨MŒ!?8 ¯REuü0Ž;ùD,*‚µBiv¤<2°mï$&÷î»^ŸÓ¡Üa˜È`ÑÒ…xvÓffPW¯Y©Ã#(»îä.8ïµïžÜÈ¿†jOõÕ#®9¢L&À¤£šsE™‘jÅK¦fëŸ|vžz`ó?ž^®ücô¼»¥´~k[=wæWï_¶ðµÁ¶?±•öÚgaã>˜55ˆÞèè¢Ìºòe’—&—bi¯|¨Î`uzž  )¥³5¬%H´hhXl%Êñt]Œ$5¢ðfŒŽ- Þ9f$´—33ÉŽM½I™‡ÄšT=ªÿ¹Û}j¨Æå/ì_d[]·t‹^Nz®ºá¡”D2ò±®ÕÝZ“šë|õsš Y$‰¤ú»Ìå‹üÈ¡›OtTùï}í¼ºäù§ ½qG%˜mQe뻤¦ µ©A0RYjˆ[j$Í‘G„þe7¯°Fo9rÛ§=U½Ä *[›DY6¥’y7 ¥'}&×k™uü¨÷¡…i|;mö ÍADž2o„hȵF™"J™s2³ ЩÁP0S¢L"Aš5Ë„(3$f—R'D™ÔBpÝ9w’\3iÁ,uçÞÑ@'¶p4fF"ÿK eif–RPbs$R;Ñþ̤ÿÊ™•;²ÚzûñåùçâÊ«ÿcÙ ¯4A”Të¦&´3Üì°/~ûèµÿúA\sÛÙÓ+·±÷űF¶RJzæÞg·sFÿ²2Ì ,ÈÔÐ], Ó7![c¶âÁ™œFåðax¥ J£cp&'8*•Æ+>zÌ0“å‘‹ôtпl9JÓÓðÊ•P³ZEj%(t³9å Æ÷î…Ð0-¬9e=ìb7FÇ&8.Ÿ·áŒÍ·}ãKX2|¾ÕùE}óI³ù.$g±(Sˆv¥›:Ž€H„üÊ-% jÿKÂÞÒ½•YýØÓ_?¡TÞÿmSæ¾³dÁ¹Wm¼e×wîÞ8ÐwÂAÏŸ£OŒÐÞt®‰zrR„úe2yÏL+©¥©™#)õ ‚‰ÙFÁ»å3 )SØsD§rC=Ê!j}r’'(ç`VÉL(!5XŠî]Ï$™Y%ZÀOUuˆ=†D7 IDAT"ä´À ø$—R8E;¢OÜê  —ºÁO‹0]x‰l2‰Ì5 K´§÷ðä(.yý’ëúµ¤)füÄFü¤zHËw‰ó£hJ€q#jð@ð@¤5'« i¤•Òu:à µ‘ŠñÌ© #‡Ä#“ÕLÒ„šÛ_|ì) &dâ<‰ýܤ$ë˜7¡/¢9Yy‚#2ƒâó¹E²ž9ˆ„_’)óê÷i)»Î5¦ææñ­«™¤Ô#’¸Nëôk)\¾îû¿ñ(øž€8}Óu|kJT55hðÞ2K íËLªOîºè˜>}å˜ÍÆ5 ÞÿlþÈþÖª Ià‹W]qyðö¨Åža¬ì•X7dáœW`þ²Xºl–.éFÏü>Ø]Ø…,¬bv!‡îþ^Pu‰+&öÖlø$‘¥}\§¬,Ú©AŠ ldÛ Zbf¬|Àó …ÄÊÓNFïàT+xå2/]ÐW½ýß¾rÚ9'¦‹":ýNµß)*8B¨ËQûÜî|gñÔù;Øœ@s›×)óü *^·á[[ßôêŸuæÉŸüæâùçÏ^óÉ/kµQ™€Ägu]ý›‰I0TçLM£Ÿl: µO™BòÌ0PNÞpf ÔhÛW™‰Ê B™ÊsR„%o|ißIª%2ü'r’^L1:±©“bË´Fh0 ˆÔ(©Ôg¡‡æ%(ç47•d‚ðtµA› ßzäÿ œLÆaôûœíQHqèÊ š4’_qx8’;èã¢q§@$Ѭunõa¦6yŒ›L>ɯ¦‰Óœ6|¢¹£”¹XWŸI:0ôrê<ǵ m¸•Ìél‰Ôݨ.ÿ•õ%Ïûdvš“2¯uÃá“™ü.՜ܺužÙö/ç¦$ÐXY”§ý×+ÿ§†Þl±ñ¾/?ÙI¬˜“€ˆCm‡žönÙüþëWW‡Èœ1ªï½zÝÏO¸uhÛ,Q‡26¬ûh׿\}ÕÒÅý=Á”9ˆ.ႉ0d:¸p¹…wœ6Œ³7œ“O\ƒáy=X³þXÌÊc¸‡ *£  ‚±çŸ;ò<–X˜Ñx„apñ<ˆbWˆ“‹‰3*–[6 ýC˜(ÍpP™Åð`-ß´a蜓?Õƒî$™Xœ#£>ô´Ã²SGæP%‘îÌE=ˆ9£Ì4ÞWŽ$À,t:’±]£eÒÑG™õgß¾X1™Ô ÔÁ0T"ȼ‘(‰ô·©£Ù¾^ÿ õëE‡—(!´|ê ´ÉábÔ¹±Œ¤4%$4wÆé ‚„ÓAXßø$Éηå©`k³òÔˆJ¢ òàÄ-ž)ìSíŸ p1”¦½kºOÿÕŠÜ Á´?*šQ¦Ëš-zø¶ÜìÙ…u®v^ p€cRæn÷¯+Ošÿe½Ž¡{ïzÍ-YYà´Ü|=ʬ¿¯ªOFðFùåw,ïœ$¯Öàc¯øã¢Ác{Ï›i†¦)L¹_ ˆÊÕkÿý÷?}îC«Ý rE<)ŒÍSowîºø®+,"Ѩ03¼üçnö›ÅõžvÎâÈ À#/^°àš_W‚)RЄ]«ÝQÁ‡~·ÂWÕãAðÏœÿ—w„Æ„¢tž„$ƒŸ¿s`ÖÛ HNœ4xñC›Go{3@þÜ»0ÄªÞ ·÷e–P$ã­ë¯ó>~Û‚W+í²I‘g¹ÅUÕÛÏ]úž\˜š ÓˆÛÇîêŸuFÏÂ8ôï1ûÀ{nÍ|ÐÝ‚Œ½k^}KOf‘нu2ƒ–}…|B`¨dU#âj5&?"÷u b– 5æ¨e* ñÛY~Ÿ%kÒ‚þ/{ooÙU•‹~cεö>]õ•J*©4¤#¤C @ @¤.APúæ ˆØ£>~(Á¼*ð¼PAQP/H—Ð… J` ! 髯:ÝÞkÍ9îsÎÕŽ±Î9ù©ïÝ'›_Uûœ½Ö^k®9Æ÷o|£ëâŠ(³’{tH]Ûi3IîæÆmñ/”"UwÓ!µ2 FF„ó¥‡:íQ{&Û¾ø®ëÿ¯^}úGÎ^OØ1ab þêöï”_ÿüë>ja0äKÏ~Ì^þÑG}ïñã76ÕLréX<²M¹¹î/n9å¼çžù;wïŸýÙ]¼Ýh3å6C¹z[ùÎÜ5í3´…pÓá͸ÛãSÏù«ž°wÉaR–xä§¡Ìç±oïÜ~ûݸëà!Xú8íì\hÉ[Z ÷fû1p¥Çw܋˞ô„]üͳrøü«æ‰›¢ûŒŒ [ÏäÅê­#z3©G÷ׯìD ž˜nµîW8%úµî*ø)µL_£ÔŽHÆÃ[+ØBQlÛÇòÁp/ô›™87³úíX5ÝïZm&Us„¦˜ö¸à€¸fû‹~Ð&íCÈÔA L1Å Ï £×¿H« xCòJ³T&ß ÂÕöáÐöF¯žÑ~Š3Ȗͳ‚`0aÎùàä.C 7~rZU¾ ¹êÙß:ü•§|ûÈ×þüú'N/ÉU?š‡EÊøãúPaa_éá/¨ôLOyùAö=Ùgþ,߯äÉG€… eÎtZð›+3ãÊ>/ªQ¦ÇÛÓ'?vú+r€¾ ð9‡Vï~–¥ü.¶ Î;¬”G69.ŸFD÷þÙu/ÛéƒÅ^$]x?=wÓì¥go¹ä·¶÷8Cž=˃Æü‘}=ƒOGÛvÌýÙŸ¼ãmO]ÈwüÆ·=þN‡Ñj»®îÙÁR¾ºÂÅ3´Ð'šf€Ç¦Ñ.>´z×O3ñ)eïÜ·zëÈqñìP UÀx¸›ÙrqðSÛgN* †¿}ïÛ^ñÑíÿ•™·‡ûCÄû. t`²D¥a©Í$M3é÷=ÖO:j¨¡R@éØç™!‘‹ýœýà›ËYóä ßüµ¯|åu¯™óù›^ÓSßüàË^ô xâ î‹¿ôÅço.gÞI ¼$÷‘¿<á_~ú“;¯_¹ø–sKâ‘ܤ¤{éKÛn»õ¼½â·Þÿâƒ{W·¿zç¬er+4Þt,ŠC·c+ís wÎg8Xî€]<€›Y¬NJ¸¥C8é„Xغ c ·å8ì9n+¦çŸŠ[¾/¾sÍwᦘñ °ýÌnšÅj>Ç[gFtü¶]/úào¾ú}—œÿë›B“ù4£ºƒ ã{]Ñ^,™I‰àÃÈN«­œØÅy©Á)–»b£¨U³ŒL(=„h2ö"ev'äd1âæÒer›I÷{×ø1B ±¯ „IXØ äv$Q!Å:"/P¢¦~Tu=^SÞ3T²6ÐÅѹ£›(Žq’M$æ§¡àÈ‹äüÑò€ùæ‘+ßðI:023oáçòs·åÇýÁ~@á¸xɹŸ_46s©çv…}¹‡?@Gs3óV~?gS¾óÿ&Øk<Üc|:iK¨Ý”Z W>üCÓ’'À†ì³v“¿wé632ãOÈ|Î{ŸðîJ÷Ro`ÑeyÁÃ]jÈ~qs¾ó•gn}øOf”(þüqß>ò•‡në '-œë®9ðéŸcðɺk>Ûò€Ÿs÷óýsç²M¿M  ”‹Å_zýƒ>0¥p!{øèå÷ÞL »˜Ù|õî>pdg¸¦â \¿ï³³ >ŒlÛxÏõ[Ç'Lg³-¯™Ë¶¾¡ùg>ßþÚ…lǯÓ”ÞRvÅý·?v™™±å{ùåÛ~Œ-Dææ­3Ç¿ ðÏÙ>wÊ+ ™k¼ißò÷~ïàêíYƒ–cγ?À1†Ì·-ò+ Ù«¯ùÝ7õÉîÒg‘X_ä )upc…¼£R/ˆIH¯•j™„þ N]l@^.â«5÷†˜ä’ýçä¿|ÿ¾Õƒ¿1âì¥W~ì/üúÏÿË?m)gß `ñ@¾ü¬ ÿŠç]½ù¶ÉŽbÞPsyµñy™2çHë{Æ#Î;gô©ß½ê÷ßü“/¦½Ëøú¡Òbµpl·žÞ|"8›±9+q¿ÍÀJ ,Ü?YÆîãŦ‘ÁÒÒr¥WÈó1œóXصg=ñ‰8÷qÃqg‰ã÷ìÀx~'íÚvÝû_ûÁ=ÙuÛ?‚eC€×4Ÿ«y³\c¤ÆÉ¼Ú"»ŽH«e:E®FJ­7õäx®† r÷Xr»V¢£SiÁ4£ì#AÄ‘Z-¼°èÔkqŽ Þ·^¢eQei`• ò{D––”Z&PÀ¨Ê £(tÓ„zÆ:_q@ýEO¸2Ÿmæk}éþ/0`ÏÜôà_}ȶ'^{ɧæ˜gü¥¥ìCÊ‚‹Ÿ¼âÞøÖ¥o>€Ï¶¾ñA[ŸôõG¼íY£s6=fÿSvÿÒ› t›öÅJ8UDrú<çá ÿÒEÅß0´J˜øå¯8Âàù3þrö’¾x©:”µ”}êÙgüî;°ýÒ½ÛfN,Ÿvâ¯}<£üïL%{á©P2Ÿ¾ãÛ":¦æîÿ[?´ýGîxä±Ï›ùñO?oô íÿå»çn»ôÕaÎ;ï~ÅWŸ<¥ö1/üéqngÿLÜò‹Fv¶:™‘å»—¿{Rðä5ßzÚ¿qx>ßÊûÔï^pìe7?h×e7_pìSnþ¡cžvóÓO{ÓÍKîàO08ÑíØý¢÷®Laa´Ã÷𗞣Ð'ÞÿWßxÖ±»÷a'¿døËg—¿g`¿Å€¿~ïåOÚ2³Û7×=ƒÆÙÂÛž|ú+ÿà¢=Ïÿë'œþªÿöì¾tFØqúë­ü‹Ÿyô…§?î¡w^:òÏ·îÇÑl+nXÙÌ_Ý?Â×ÍàîIŽƒ˜ÇÎSNÅy'oÃŽ™øûÅï-ŽðÍý·–›pÔ.ÀÃò¦í;pÎbá˜ãïzù“åDþÄöG¼ê¥¿¹„R LÍdŒ[5+iíxš™Ê€×ª<¦.ÅmQÌ¥@µâŽ¡üŽj™‰ò°Ž5Ÿ*åPuÒgº°˜±ÈqT d&ÓÛBÈè’*–¬ª˜5¤!P‚¡‰< V©(Ó C¦S-“Ö2ƒ4·ºèÍ‹ÿÒS~ÛMyõyQìógçn¾¸HŸˆPro>®ø<723Úœïà»Vn¹ˆƒ“âW_{ögoOãÓˆ{'·™Sæô;€üÅÊt’Š•oYú×'X%à®7Þô 6)È~ä„—å–ìg äK?ýñf²ÓÌÞ ä›¿ÿG¿w䪪ÏêÎéMfûxÏâOo~èΰÝÜË#Žœ½õ’ŸšÏ¶¼ñ”M¬T]ÄaÃá‘™å8¨›÷Mn<ò2º2ºI¹DÛfŽÿ6³_¿ç“›Ó=»dÏsËÕòèO0›ÇǼçº}—[©€ÆÖ‹ËÜø ¿Âì÷ÑÁËî÷º×û˜X|ú–·¬z_>’™í\¶ý¿^¹Ë„s ü­_þ©ÑÖÙãß J?}úJq˜š“ˆÊ3¶?üºC«wKŒÅÉFI$¹§š33 SŠIdt³´áy™,ªÈk1Cÿ–dPj™ýÂGØSh ÍD"›¨çýSÕ¿}¶yÏÚ¦£ýžO”ºêWÆ_ÞrÓƒŒ›f÷^øËç~ð™<ç•›¤ËI,ía®:–$Jõ@bÂɧï¶ø³ÿÏ׽뎓ËÏÞ±çÄ3®;ã—ÐÉgœšÙÊß¼·À²7ØJ«ðž±}Ç,o:‹ãc±¶aa&ÃýöìÁ‰'œÈ'{ ÎÙ½…yî9_»é7m}uÇþöŸ9ºéÄY+·yÅ2—Oç•jÅ "#£L&xùVÖ ')jI‘ëqmˆkš‚!íaZÏ‚¶´•²]2ÓbP¦>dÊìm¶#Œ0ÁD œ²(.3„+BVtòIµÌ±`f„Öí Hæáv¹ä% dY| ÝìzªñcÐzQæ*aev‚®ÇýÞ·_œ1ød“…lëõ÷Nnëí¯¼æ¥À~[J_žyÜø”õ(ÎÅ^ÿåýï3Õ`¾x¾ß[ºz‰@G£ˆFHJdZæçüÕÔy›Ñè£ÿsïÛkQÌA`ÇìñWì_¹ëé6Ý»rsvìÜi:ž¼xÆÌUP0R4¶sEX¼pò‰á’²Ø1>±ë‰3÷ëDDÞyì»}ÑýþãÞyш_òÚ Ïûlîéºè]_þæ7ïÏÒ# LËdĘ›É1?¶g›°çØÝo¹ñî§ÎÍlÜôwGoüò Ÿõ;NÙ–ÕW‘áIЭW¦>Å,Ô2» e âäÔ2#-ëÚã}k™A Ñ[Tña€7²e^€t§†çDPªe¶Ÿ ®(eÀ0;gºµÌ&+ÕãÃÜ\ÒJÁã(¦ØÖG]»+CQLÅ,Ãå¦ÿl“*˜¢-ݨ¡D3É…†˜ ŠèÇÚ¤'° ”…9]OÛ*ï @Ûiì ‰  ”U2pÇÊwÓ LXÊKƒþ±˃g€¿yÇx78Xcï<8½…jÁAx]ÿD¦s>ilÓPfYÜ"`s¶ó$ï! (xúÓýlówö¯ÜÅž0 }ïÈU?sÆÖ‡ÿɑ齽/?²s¾›•º& \ɲ=¾ë9î¿]÷Œ{ÌÇßûP€Ž98½+?a(ÌâÔ¯iãÿÞqôZ»0>æ}G'÷þfɓ眳ã’Ïÿë¾ÏâÈtß¹ û/{6S¬ºEãâk2þÂíïþaÇåÅd›F»~{!ßé›×ÿÈôÞm<£ð+?1p³=;uËÝ^,ÎLÞ⻢z[D™áß™ºµLÎjZo}‰G¤iz’Zâá{Î;¤ €êZ¦UŽßõ~ E|¦‘m =˼Ô×ÖU˜†',ë=—%(ŽÊ‚9Ç0¦wQTw«ÆfÊ`Ìû1ÎVxÖ exŸÐp;€XïÑMUo¬e’ Ér[UºçÜã2øÖG˜–üo|ûù³¸Ø_Š]8ŒÍ¸7aK±Ùp==윧ÍÚ̳1;NÙlÄÍžûFéU:’V¯©“""JŒ3©µL±Ð…Úᙺk³4}”˘`=ØÙ»Cðó`C*SÖ5f§.Ò$ê] ÙÌÀÖÑÏ]鎇ï%¬MÑS&`Ž\D™^¶y÷–v&C˜”Ñ¡³I1›£;¹!6 ¨83(t½Jnzm*uÐ(7 -±„‘™uu¦êIRüº•mXñf±ð«$/f=»[G»n¸wõjn|ø„™.hƒ^ ‚EÆKîàsÂÒ"”myLðÇz¦óo8ø…ñî¹ûr MÿkÚ¸‹ƒæÍ×>íM ÞÖùn±&»ulçn>:Ýÿ=Cö]šíB°Ž ôó%°éì}ßšÞ0æþô›?{âáß¿÷óËúT|Êæóß·êö󸺳Ùfÿ¥;ÞZé'Ï0góo¹è¸ܵ\0*xr8*FÙÂÛ£­ö5iû쉋 xì¾Ñ¬LØÜˆ úÌ$DØFšýš„!x[±A¥ š]´Ë€pæaò„”(4,ó„i&IÕ+™³7 X­=‡Á ó¬‡¶Ãm”™T½0i¡Ìð…®4D¹W‰ò¤Ö¾?+0^AEæÚô‘ªå¢LE7CëǯTC´Ñý¨Ø8в¦låÄ®ºÃ̱ IfOò q¬kUæ~_&ÑZŶé_­iŠ‹]ŸÙ®O@뙕Äì¡­Ø2OT(bd&ï+Û¢+Ë^Yáfp_›ÇÌÈ(—å嬫)xè{š0œ"åÑ€‚ˆ•[b»vo`(ÉaJì蟌wôéO>î%®s>yþ,Ž%Ûœí¸ê®Õ[hS¾í£ñ>éu×>{.‘¬a~­eû›Ù ׳is°ág}}ËC<P9õ+_}ô'Ÿ;ºäòçŒuųZž{Ük— æk ¦‰_þ™s¶ÿ°ÓD C¯³·>Æ•nr6B7ÖMÛùÌÃ/û_ÏMý 23âoúÂÉŒ;¼¸J›–y…_ÁÇýè_€óÅ¥KÅÁ³”ÙÒpó°Sßräꙃ«wü>€‰%{Í3Îxã§®ÛyÖ”‰§×Õ¯þÈ ÁÜÀýÃM¯yN¥ø‹¹•¡Œo¸÷ã'\Ï?½ã_{á_ܳøíÑzt`T'“í ÅÖ«)TP ´‚±ìóK­²ˆW@É2Y.ÈñÀ7”T‘䉄Hêµê+f›õluÉ2oýªÞe’@pA¢ª7"ÔSؤÚnªgØHÊö˜e%Š«öªKËšm[UQ÷Øê³ÒºQ¤K¥-X‹\ØS/ oÅaäYÃ2uØÀ Õ™1¦È°Ž2{ßwVì Ó/dË<£L dõý[m3p”{7Eïïö AL¶Ì«Še^êSÔàûôð©ãóÝŸßïïܯíþ@ñãÛ^UVv¼ª|îîוs£mþíÿG³}tìÄþÂW_ûÔ‡žµé!.ZæZLE IDATñ ø_¿öio¦ð@^·z÷0Ñ™›.8õ±|çÊw_ý§þCyÌøxáö‹Ë«þÃÙžý¥„Z>ÔŽ³ÂËTøÕä Ìg^ºç³f6Ø|]yèÃvs¶ã}1çžùóoýÌÉR´Öë–Å«¡ìö¸Ÿ|¸¸'uB`øöåëF+îè«Ò’+ý4ë/ßÈ‚•ɘi6ßÌDtˆÁ;K.žD ÷¡ËVþ®)ŽyþÙ¿SÜzä¿BiÈì½øø¾õÐäNZÈwø…|§ß<Þæò~!ßé eü¨7ÿÔ83£OÓò17¸|gnfÂ6ÇØ·ts~t²÷5 kòOœ±óÑ«ëEÚšÅdÜXúÏDÚi T‰µýbПؚҋ­WÄ( +³Paôë>‡ûnÌŽÆ,Åv¾¯­Ó„2á6¢êmoŠbÚ;J 2·rzKKÜ*}ò¹Hçè› U볆ÌÁ›D;‡!¿M½Z ¶¦ßBCµ¿®L³7ZMD„ßiA }¾d`< É>y½ÍäßÎ2/}ßhfàecv1†-!ãy”†AjFB‚VŽ#(±Ð§(÷3²­¹DmŠ«ü¦ý5þ=¡ÌÂ+‚"Á2¯žÝàYñ ÄÊž¼ÉŠßºúÑXKŧ¿ûíg]óny;¼™5£wþüOšwpÀˆÁÛ t»Ìîœ9ÑOÝ2MoÐ43cÉ2æÎÆfî_n\úg›6!kÚµgfO'Μ}øðâç nµ÷·ßýÕ³=¹Xýþo_y绾oaodðNw&†˜VÎÚõ„ì[½ÓŒ„:¸0Š®2!Õ2Y´‘,.÷¢ežVC„Bl¶77Ï’$8gª¹™Ê$% õk™àsf€ºÔl­²ìS³z-³³l™Wƒkñuk¾Ú: Ê„^+49岪·á œ~º2UoC5ëÈËc´ölm4fúµîæ‘I§Ì%‹»ꪪ;u¯$ –SL Ïh‰—zëÃ𹉠h¨Qÿ”íScõ@Ò.U½´¢h°–Ùì’hÝ”€É½7é¸kYæ¦C±†253Š’–^æt”ÉÌ”›‘—PfªeJ(shÑËð?Ê8Tcv`%Î÷V³0eŒ“ ½Äà9æÞð6–ÿlóÈÁ£ôSú™SÿÓ9ßF Ã >ÕÃ=žá/`ðvó¥ÓÎÿù3²l(=V†Nž?{²ctü+ ÌL¼‡ÜÀ~”Á¯ A€øó÷¾gª²m£ãü G®|&ƒ7È]þÐ#ßé.èæw&"ìŸæ,ec`ÁqùÔ÷}ûW6Çû6Ïà¹@³)+›0†ía;ŸyhÖnz}l9±äâ¹/öð?dÈ~ö¡;Ÿú2"ú.€™U¿|ñ ó(c¿é,€¹P§á*le8ý{—ÞøqMÁÈr3ºâàꦎÕ`žcÀ3ŸÆÌ§2óÉÒÏå áöŵ—îyùŸæ4þ0³?­äâÉŽË‹˜y‹¥üгwÿÈ+6uGœä-óÌ<§'É9J“QoüWj*WZÌ †Í X53`Åâ…ódÈfŽ"Éš8ªhÓ‘ºû Ç>8yšIªej(xÈÌÀKÍñ¤ÓžA°' ±šFUQ¦†üdÔ@BÍieC:£N„©¡DÍ"½ïÛbŠQ„•ÏÓ×bLýzh{®3É­efà7hf £FWQl¬GɃµîê0â2ÃoÁ”òà|-dbeÏ:(¥;6KBÐNBᦒ¨©|íQQs˜ 30…óÐP&Q¬²€< v„)ô`Œã¼tƒ½è–ÃØ=ºÐÿÍ7¹õÐqo=ã潇#sÐn­ù®]+nñ˜Ìd‹ŸôáÛ®Ü÷Eúð혵šáAü…}[¼í‚/™~•Þú_®Žùì_‘ýõ÷ßRô^J¿øá;ž9Ͼ•õ{öøêÁ¿Ÿ¤ß}ÄÖg¦_‚k£LÆÓŽû•ò•7\ìà 'ýâ(73øØ-0€‹w¿`ÌðÄÌÕPëŒÆ|å]ï™ÀƒwýøLN#äœÈðçïyÏä˜ñÉ»˃ÇZÊ–Žûo~ΩoÌo_ºÞ^ùòLè׉ù³Œ‹Ÿýœf/ïýÐ*<ý¤ÿ:º{å&Kdƒs6Œ—<ð]ÓŸþØü¼w/}ĉ/˜MCÙï|ü&g½{À²¤ñzÆoݹx]…¸g³ÍþòïÿñdËèøS ¿¼ul\vêoÝ}$»‹î>r£ Z à~›à>xí+&pÉÉ/ %Aø†äÒGa½±PdxÌÈ}¦¶™ÈSïóÊ#sÝ—ÙmÇÆì‚Mg<+žFçüoäÌÖ&’ºå؈C¾€ -kWš“æg§ç™•aî™´ß0€ŒckИ’‹Ö/šMÊ=Æ%ý¤QjÍý^ZNJŸ¤˜­5º&D@‰Ò×ÄFÕùj7èjݰ¸?3X…½Ö¤YðÝé£í¢D½õft[+%l^@Ú;/0¦6^*O &˜á¿t!.3)·Û†)Hy4§âØ+F‰yQÈ[Þ:xÇöpÉ…È%xxlæMBã(ÃKS@#saKáÒ/yú;0¯(fÕ \çòTâÒ—íð,cÎψ&Ûà:ÊGK9ÿËڽ쎾ր¾rËeîÏžûåÍ›ÀU?}þÔ¯þ2Á|ǿȽáÿø¬‘üº‹~Œ‘XïÚê φ‡A2óN¿§kĹâQÌb³}u¯ÙQ?Ì„ë?ò|ÕzBá§Ï²&ÿÄ%'½ôC+å“«=³£øÝ:*KNµ L[캽wyZ¶Úüš[jZÜeŽNï5÷,}gTú⩲-£c/_-˜4PHN‹dõ35úµ¥õQ©"¹ýh†SwÛíÃA0P/ÌiÐ4wé<ßìŸ(Qi u˜fbŒ¦™lL‡F«É õª &SXÏÄšé‘xí“e^k€hd¦T˼p16 êMÇR~ÃëªÞŠJ_¯ª·rg“íޚ֤ܣ£©ª2sͼ£oÞ=C§¬nض—d(D*½·ùék±!Dêlº¥¢Ç"ëMÆìu­ WËÔÔ¬Cƒ¦Ûq¬¾_œæ„ tt1¸F˜ñ¯¼«FC\²™Pbâ½m ON£‡¸ðS#†c‹`f¤ÕR)³—•TÌZ_fB™Zæ,¡Ì´Ü¤™™1Ï%×DHQæc†ÇŠ}Ueà+÷ýýÏ3üƒ¢v%î–Ù0Æßþõ|ê÷>}ÏÿȺçŸÌÍg°È:m¸)#îÍ8e€GeÌÎäëÈŠ÷$c?ê!ëÚòJ»—h¡ÌÓ7]T¾ÿæ_{¾g÷H P†ìÏ8ëwÿê¶#_ÏêüØK¹6˜G ÏÂç2“Ãe6ߥgØT„Möï…2àŒa ©¥ ™F™‰B“ù+†µ,¼ÃQ¾¤S³m†""ÄHÍÊ ?!$#+œ¹˜³ØBçD”©YæÉH§Þ:EOéÔŒ„„k@áþõŽ•@7Êì&ŽC(³BcÊdn®x±Y'ÊL_#‹:ž>Êd0 “Ò§˜jªFt¸¾O(“H¤fÓµ’˜®#¸ø;}3Š¥Šê¥~®Pmëh¡´{#Ö6YMŒÙ… þ ÁÚLë£$†1‹æ¿Ë´"$zÛÇ`fÏD–Vä)ô`,+m&Z¯g[ù( ¶¯Ç8qu‘8ùç*ˆ7±3ÓÎþ»?›Ùßp'ƒ·3øXCÀÞŒò·?z×3þàÓ÷¼Ýj‚C“¤k("MªÇ0rjÊ-‹ 3UëRDêA3¡¿p×Ê·¥ìVoeð¼ýÂw=å÷¾:kÞË¢72*eé`!ô¾6¦ÎÔøJ³POáðh'Õÿ¦(3™(½ÊC×¾¶Ì…¬M3a&8'µäu¿2âmïU#¢&DD!R,øÖ&çç%3åi÷Å+bòPÅ5ÉÌ -b Ml«ˆ 9õJ’Üë )<Ôë#M±FòPo™ƒ‹Ïú Ê4 ”Im”‰>ã±æø/4Äc=–PiŸá(lêÿBÜCxh±¹ç°(jª¹£Z¯æ“+{¦€0ë„v&¤‰Ù }ƒ@z¡ÄBÿVg lJWˆµLÇ%Iý8C(3déNG&²X'¢L¡n3€2SíTÊbñ5«¢…^-“,#ÎÕš”Üfø û>\À‰sgÍß¶ô­%"Â¥»ž“¯º% <”ú¢^ËÌ‘‰¾‰±†ØÏŽÇ¡¦ã9Wk™Rm)d¹Vl‘ÐkÏ1ƒg—úÓqâü¹.·#.4ovóõËŸÊúÆhsä®s ƒyT§Ä ¢Ìf¶®ר ŒÄæï+Êlccâ/^ÃxÍå ~=(³_(bFô˜Ý¸¨/®!€³`™§ VRj™áHÝ{ªŽò±"Çc Áµ–©)ï3±P¦ž#33%ËËfm¬žãÛµÌ|õÅaPë³:ʬ¼!±QB™•ýÞp-"¯ 7”¯áÛ´ïQ×6o-”i  Ýu€Ú_¨b9ʔɜ~À€Y”˜C)ê<< bT`b«Û6 ¤Úâ-¹$"ù¦lâñ9r\j‚"8v½) <j6äZ÷ETûêJ"%Þ ž¼aÌûUùXŠ*Ëd|æÅ/„ï\¤Øœðyé5ެA_ädÌfÏ1K ëh@äc~/¾„H²È08ób™ WU–V)U×Px$U¤onЦb“ÀœEú°¿ú5Ål špL¤f£bVŽi6p´.¸çô¦™ E›hŠß.‰ LØzRƒ·xífG>Ü×@«\ –y:…]‹IŒ ,ƒIVõF"XˆFŠª·+‚6¡£»¶M¤¯9¡Í楈IŸUHö!ÅlfcµW²bV^‹ñ<²Æp—ÁÄ%êáô<×¹€Ô‹/'LÑ FÙú××V×áIj‡U.!K0,цÚÌ1‹‰¼].c`Æ¥éO¡OI)#jéC ¬ Œà?›þ׳"[SM'Ë¢‘š3²PÇ9€í’h-y)RB½k>É®²èä^ð³âùQ§•º{ +G“šÏÌ$eY¨'-‰X®ˆþÔÌÒù{uÝ÷…HQÄÍ‘â–LÖ]¤Ù%&äÑ,ó†ÖéP_&<©ëâ€d^»\¡<ÔøOb'F£ä#–Dc¤µcõOÛ%T*Zæi´r:c¸ƒ¹tw6NÂíòGs½%Xxð qÁªPdî„ý¡v"cA~c2íÝ\Ð>Œ™ŸÒ ™¸æ q±`Pta¢•E¦.¨¥4Lx‹~ø½TË”/ß*¬z,-èpÕ”¥NkÚ­ ÷¥ rƒÊÇDAdêÆh÷ƒ˜öyu¦Å¢¯•ƒs=K…b AÎ*NôÔ ¹]¦î£ò¦8»©\s¢ÍZ ¥ª F2×–Aã<‚HjÌY©éÉupµ•—H¼Î ›2AEž2øn°²Ì µ]§ÚH:gÄ ‘ä)Z‚)©" äƒù¶œôiø\Ín(Mµ±ÞõµLJ.àÒî¢uȪ«z©ÆÜ ê$hR¼°Ý…¬Â­ñV¥˜-Û×P[Ú<Øוë< mŸÙÞçÉk±1§Ù¯'±K³¤Q•ÞOüìï´D'Z]1KÚõ¥ä3Í"šÛ·ÁDìD¤©!8Ég6?‡ÅÌ“÷2r;Ò|aµ†2Õ±"YæA¡\,eµW@¥âÿ£³S+Q­°ñ­†÷&T¨¨†2µ‡º*‘H:l`Ð#w*PìC^½´Z ¾V8§47æ©™P¦ÒþÕ€2K#n5SXA RózÍc´ò:Ìö:-›™}øK!«n‡Z›FKàÑüÊÓ`꯭7Åõje&æEKÅ3F™r’©UgÌÙ ^¡j‘‰¶Nc="øÍŠçHª1»ˆ2Ëà LäåûÅ’¨Œå ³kµÍ¦ûO/Ž®Ó˜]…ÈÏJ‡uï+UR(´™¤ŽVk’ƒèÍÙ°FÓµ0Üi#â˜ÖO§«\`)¢º,+”ŽÊw²ÌÄ#樨¤ A3§£hE}¢µŒÙe˼!…n@™…ºñÙ®˜êã¿HÝütøL´fÕ3ÓºGq5M¨å‡Öˆ¶má b³¦£ÌŠf_皪o›t= YýQ! šª=ÐI…öP’%ë[»i;³O¢u^ÇZä˼üúÙ6¥M–UJ£Æì‘Q(ý4þKG™²âw-Ë<®þKÚAJ3ÚÀ÷k£N ~qh@™Xÿ:Mã³ÅìØ…ù¬Â¡ª”#j$Ê%ÔÆIoÉêß³*·*јU”Ùn†iÇmcöx,HÉZÆìŠá4f—³ýÛRFÇ?™…ˆT»j².Óéú™UH"d®³ML5ºª;'€x ËJ¶­Œ 9š(=ŸhõE’7çŠ Íö`ù¡Ô¦™è(Ó¥Uñ12±Íª/¦™™F{(û£Í&ÁÁe™&êÆ—™LÌ€ÕLjp´dŠÃfj6¸P‰ZÿZ«¥E138¥–¨mrF!X¥Ç…›™ºx ¥V±¹<~T3ÐvS§°äu“ÚL4J_ÿåÈ PúF13ðkšhµÌ²ÔP¦lâ!¯›ÚëV73Œ)…ñZ¨&"ö¡Õ@’FDð73ÐÈ€ Y¯e®af %ŸZ«F³–É‚·nËàƒÚŒ‡1 Á„Rx¯¹¶«Sæ:-bÒ ts„ªÝÅ‘ªì–žˆ^+×:j™}{e®«–Ùðc¦àjÛü½Ê´`Œ{ÑŸXZŠ53)jZ QMr]…º™’%+ €T¨ãŽŒb–®áp#ɼ¡¯²ÙõR^aYY¬¨_f2ß9i`IŸ:D]5_®Žq2´ÚC k™Ø‡@æÖßû„j-3R©jF§‰žtjÜKnQ(äëZf?¿Wæ,ºáú"9uSlPTÕóU»…spëÜœ©Zq*JqTÉ.Jº¨T'\Fd¢2/UMŠ×’åOqš ¢1{—z£¡ñZj™5®õX‚ä½XËB™^C™^¯u‡ÿôi>–åQù¾JõÀfè‚0µèÙÔ#L­¯.)@·Là[ÿ"®S#ÎH´2”žÞ@Ͷ¿›žØ5j™Pj™^¯e:x¹–ɺk\Ët!d’©]çã|ëV;§4n/f¼&c,¢L‹™®9‚ûd™3¹éHªmÚá–J˜ÐÑVµÌÉAm˜­& fUÉúYT7œG)„–/ €†j™JÕIFLV’¨Ü˜ØhÀb+]_ý~Z¡N4 ó$ë%UiéK$Ÿf™×ª› L³mYæq]ƒC3AïÐPú±T$‹ž\¤òHŸd"eð<`fP[æIOK°Ì“¯Ô!Ùr’ÆaºSi@NiÄgÅ:èh€œgV²EÝdâûÉ乞Aõ–~‡×…2;–yò„…:ì¢LßLúôÚTi¹‘8}Dž0Bºx©¢ˆýz•ÝM±QßÌ üj™=Ê™HµèèÖõMÙ›avAÔz‚GØ'dŠ”´…¬]`£ˆ†r,Ê™ç¾ ’©¥ŒE¡ €Uš`•&ë¦J«,WyÏP¡25ò&;@QVÙöD;TËl_¤•ú Œ ÔbAªb6(§*òÓ7î0™FF™ ]^ê--à 0zsåŒo­:@˜ ŒO"AÒ¢ ÖZžJuÓ1Íl›*SeÔA@&µ™(Â&]1 ­íŠJŠ=¬2¥¯™šQú5ëÂj}QÎÜP-VHút”Yÿ®‡|$#й†–ƒ¦~åûâµù¢^âÇ^t’‡:hÚ:•‰Qš>Õ.ÿª…¨µ>¼PCT@긮šxl•>€–XD™z-SC™$^õ$67ÆHÍj«Ôf’­TAÒ–\í6DÄðh[ã¥å(=›‡1RW6 B‘¤ ’„à†PfBNF©!2â{ÌD™Yòš1ûeÞ1;„PÛ4Pn½éÃ{+4QkRVñ`MŠ”š”˜Xª î²e*˼R]Á<`m¥ÛZuMõiöXáb £ŠÑä ½H‚têÁd„úú{Lkt”¼DJ‘Ò×@4f(ó¾³k(ÓšÒkÆìeiÔ9–Š_Õ2OC™ºe^½¥²p‡Õà·¦1;Ô@ë4'*—°ŒÄZ}»²@Ϥ‰$IÛÐPËt•¨B™E»†¨ñ3fO,ˆl™—P濹1;Pž ÅÊ RB™Ô¨ÈwÄ4Κ¹§R!d8*n,Ä^13 ÍžhÈÌ`0Æh}”*ÊdbLhºîzå`ý(™¶Ð”å&‚¤N›‘È‚ãËŠJ÷Ì (\ ÂP†¦µ´XÊ,Ì ŒZËœ¢P>S¹¾Ó ¬Ð[ZÊ‹%•Ã6ñ2v¼zÓfIÓX]”i9'Ö2“*N)‹›N…v›µLnn.¾*üózÖbD@Ö—Ì ´Z¦1¥ïï£p¬Z, €6‚2ÃÎÀÇZ(Sꦕú2Ë3#~^éj™Fcßû0Uû¨œ ‡¢¤@ó)ªÞ(«¨Ùu™Pcv˜·vâ1lf`zå†4ˆ@*ÊtkÕ2 î™È÷ËÇJ¦Œ2™ÆéÁOJü Ãýœ]Z:}ç›þ/”0X•)Ý‹6J-3WD(a$9» 0W¨Ò„3A“FÕ5êY®ÐI¦b™§"¿”™N@5î—\r†T½ÑµGÑèÏ»G¶€ú,¤Îmâ†7yTü21qßgvÈ2¯VÌb´}¤¨˜xƒ(Ó¯2±n1e8a#¸†s’À-#Sk™Fo<-ó‡!ºÚ`À++ºOÈýDDÐ ÝפmE “âÚ3ê`” ‰\\lc@ru˜¥€2 ”*%*Q³ë1fßH}q¨ Ò¹±|2$6Rë™ñeS;PË4rB¥Zæ¥å/׿ҽ”Ÿ„rš1¨!ò‡Ñ»£áZ˜5”« Kɧ.º`µ½CÅŠ”P&«(s£–yº1{‰ÊM03Ðì¦c`E:0ºš,³µri(3Xæy­o7!$nok¬õ¸~ü@/¥â(D=6Á·’g(K[];­¤•›0¸%Àë±F¢ ˆSUÊõÐö‰ YÃÌ`И} 3…Š–®¯ÑhÔð(Oâ̾^õ…b¤Ö2GqÆb?'R¦™LÃ4m3ÍÍÈK›"°Š‰ýÄ&ºè‚Ì€™A¡Œÿªh¥&eôà×Wstq¤×ú5)R‹Ö©¿.2™bÕ^’ežŠŽÀrB™^E™ª1»b÷’­}†Ét½z+^Ô€¦V¬e:µÛ³X7¬µ¤šNÏ2±¾•\Åþí@²ÍóÆÍ ’á´NéëµÌ²Ôj™,’|õ9t‘¼43voå 1{O¯>ˆâƒbV3f§Ö+¯¡L¯ÒžDÔý^íi&š™A²?ÊÒʈ®¹ÕfÒË«!áÚ{:f•½$u¼ã³–‰8Í$€xÅÌ`eÊ+{ã(ÓJvÔšßü%ƒ‘`™µ´â ¡!?Ð0Íä:ÍD¢6ÕþÅ*wwªÍZF¹Š$¥>Ê„05Ê«&fkm|¬e©åÂéÉ€6D½þ¡/³«®ÏyÈa©ÔjˆòV^¤¾Lé¨Jf&”½žÚªu÷HeuX1C)5g"ÊlHU¯¢šCšf´n˼šÊðƒ•+½ÍºÍ €¤ÂMÏF÷³Ò}[ëTK#­ÏŠFHå íaÕý,Ûç¦Mº‰]Íd`¼t,bVG€­e™§!Óæ¾bšoÌ`Fåzƒ1»AºS,ó4±Ȱ(ÏJÛ, À>©zM{¨s¬ezv¦©RªÞ<`¨f€NHò Ðͼâ]#jôSú¬„í¼7t` y#îa”ê2ìOu›‰ F 䩽ßç¢Ì[tbiM§yB¨Ô(aR»l}­ª²,3ÇMm®¹æ<‰D@@ÒõJ Ry,ùéKA³ÿk+(±Ðó_FÆs!ë'‰F“OÁÀbóìáh‡(‰&è(ÁÎ8ïhâWHX¤‚B¥îoR{,A/Hè&æZo¦ÃX§ÊºP}À\B\™ŽgXžøêÔ ¹‚†ü¼º‘z}Ó†¨·éwu”©mÎŽ­ 0 »x¤MI 8€ úÈïZqì5t§×ȹ¹]JøÓ°˜ª(SK"ôc‰ÙÏ*0͇ƒ¦Üm?Œ2Ú_2Zд­ZffÆœŸgFÉS“Û®˜Pò o†$Þ±!¼êûäzPe¦†D[QÈBý‹ã†I¤P×Ý@›q„NY‚â2Ë}ÁQù¦¿=s¤œ;A=å&Ó‰ìTU»»(³ŒA¸2›FïÕ é>ÊLæ]”I•qDê\sÑ[å#ݼ%‰—¤€'_ZP.SþÝ] È(ŽõcP‹®±•B‹è³i€ ôºgRf’!SEË(± }3Ð ,æºÕÛÆgJT¯AÉÓ,«MnŠ •® òÄ+å¢QkVé“%”óH¡fè5%ÀS¶˜mKÆJŸ%Áù2¡äU”?uÊ:!“ó^mð~ ÐT®aËM!´@[bª¢Ý$°èÁ·\ßÔù{åXrmËÀ½lð€¸;JŒfµ&ÝK";p})Òƒâ"hç2>,­ 75Aí1‘È ôÀ\ykå€ú8<Îtƒc ¢«XUj#8lê-|ð.¬n¨–9ÅKX!‡Y&–±H% òð(iBO>«¢L6LY˜žl{¥â7&À(É€W{3‡t>„d`DTVE4<@S:@%F ‚æx=´ÚM¦ž…øÊ@N2§_'ËvÀ Cÿ^•μ[ØcκÇYH-yDñîΆ€¡é”wšòÛaä5©ÍÎùk7 †-ttŸ-ÔÙô6£½¦ª_² 2lMPÛÛ0¡(,—€6 œ3gžäúÅ ÙßÅ,|¿HÄyÜ ½HwpfE¹ûJOV^¹\Ëä¤è¢#ØF²ÁݨúI£0wë¨erŪÒp-“ã`v+pÕU-“©®ÒQzÆÀLÝ:íðçÕå ÊÖ»7€«!Ó$]~­–®´RË$‚°€A?‚1+X/|‰RA ‡Y8,ˆÄLÄZfN2‡¼ŽtËM#&¥›þ;!£^Ë$LÄZ&<Å8¸÷h ŽÄLÈÃc‚ ”X¡«ÆÁ“‡ƒGiæ²9xkɱ§¸áS;Ó#Òè&— oª« ;‚ºQ Ú ä¥4À'š¶¼1.pÏNUªên-XãX©ç¢_Xeü½îñ Å×0ˆœ„ˆp%ZTt(F§Ô-HE^lÁF®t!£ö)ÖDå5šÎ ­eÄlªêšôÝ6à (l`< ®|ùºÓÀóR ÓNƒ›- v¡‹Žr.Ë {*ÙrÉÖäL†`\¸U“EÄéÙÁ@A}ÁH2 Hµ¿#Ú“w´,Ý Õ?+ÕÅ’Ò6±I½ó+d^Lrj3ƒ&zNf6ÒÀ¾]Ët¡–¹f}±u$¨õÈÄä+aÒnãbÐì=Cbí±5³–$E‚5Ä$ÕS‹Œ\Ë 5Uï¤ZfêUæþ½äVKuÉI…R¯kÒk™Dýœ?Õ,{7:ÚæyA¥:ž xä]½-!Ã^TÊdȪÏspD .QÒSr\¤d98“ÏX*ÁÆÁû:ÿi¶ôÐX'ƒ/ÈÐ&« lƒ©5ÅM–Xz¯öD’σX˜ük1¸… úRQ&c ÃrMJCÝCJJ£½gS1Æ’ä5f/—Vª¦¿£¢ cx ‰€4µàB¨kVkÞ™fÐdnTØÖwiMD+£#o¡Š¨ôûi=aµLŒÓõ%;P=¬±a¸¢a.'ˆ¬g“3ƒ=sØM¬É¹ôÊíŒgöal/y"g˜f’5…+mv“H³2›ŠÙ~ð#ïƒØH1g—÷”`1a¥i&žã{Ôqej„N­>AÕë+&Rž[[æùÎI”`ÎÈS³ˆŸU÷gsï¦é#bí±)6òÍZfB :Íûd‘õ¨zœK ¹XgT›÷¾WËeD ¹–‰hÎNòcáÐO#²ƹ–(k^`R²¦1Æ¢`‡Àc/&8¦ƒ2™`ÌÛ0º—°DSLQ @‰Eùw¼§¥Â™ÂÍšÒYSúÒ–®$oØ…é—왺?"I%`†ÒÿF7Y^cµ·V`®­¹Ñ¶Y0“zø†6¿žG1€ õswPazßU€ÝøÉÿ›ÍxíPÐTþ•‡Ïp]çÑk᤺UskCm&$6¡4„2‡x‹¡/­ßKŠÙs4Pc"bO£‘ac2ʳ±Ë̪É,cyiÆ*À01²ìÊÒŒ²Ù9r'Ö¾@@šFH YK …8‡1V4&¨,ó¬QP¦4ÚŒ*ý{W!ÊŽ¢:ÛT0¥bD#<ÔªÞ6ªªciB™Ý;®³.€¬m©?«í“Ü_Ç*¬>¸¶…•eBF™@°ÌÓÚ+”™QoI÷®G¼ÃQ¦&rð½25éÙ&ÂL¯1Æ¢2Vï£LóGÊNCu`µ`„m˜@*"Ûø€yxŠâ"*ý±äÜ’)|iœ/­cg<;ëـɃM\Ò&}£Ú`­mÍ×T Â~B™ƒ~ù¤}ÌÆÑÂZ¯rà:®N×{³éÕ~Zæû0×:G%h–@µr@d¾“: ¦û¹Z*aVBO;ºÞTÉÖ`Ð µG&2!`²óÖäŽ}L³gÍ,yž¤ÉžÂlN»6ØlÄÌ ÞR`û¨©k^­à·PZ'IDP7Ç;)P³ &ÃÖ7”¥MµÔ“ež•ë­ú¢D¼×ÆìÉ3® š€Ž2ý Ê4!;ª¼mÆ 0œ†N·’ bd¢9BÜÞÇr@§À'Þ¯¸û¶Úg¤|¹³@šë¤Hw“œ(ëRkÚf”#ÇT&&q,¢ÀÖÞ;Ä.°ébŸ_ãD &åªqìÈûÒ8öÆyg=;KÆØCKV©­±+ýG¼èÿÇÇûÁ±~ðÿ]Îe÷öÓsçà Ù°š`šï}áKo‰9¨â‰ îÚŒ½wœÕUÑÌ@2 H´·df`ÔàGÌ ï!Yæ%”Ù¥f©1>»×‡7þn¹Šê&E0ùê¢[PçX\S³Ž|¯U£F~ÝZf¢, ¿¦e^ª¬2û¨°%6bj£ÌdœÀ^¬eJâ¥p?¢SRaz >êN÷2‹@™Iâ¿óðÖHÚÜ„çûùmÃÌ ×í¢ èÁÔ hI­EJ«0˜Ì Ä.…gOá3ž½aöfvÖš»ì+—––>ÆÌU74ÿçÛø zL®y|Ÿ¾óÆÿ/ÂÆ×ÿË÷ìšk®ÁÌÌ ÊÒ}÷¢‡=ôu'{z0¹ÒÁ{À“õÎgÆzÏžG‰–Ôfs8€JÃz-Ó«µÌ¾%Œ®˜­wæh™§ IÕ&‰x…#5H}Uo @¨#Jó+¾£aìŸ&™hL lf`ÛfÑ%¡LÑŒ#LÔ…UÇE”YYæ5ê‹d¸9Ó²®nÈæ©–š"Ú–yÉ®P23Æ Æ{ö†:þ/•ˆ§ƒ:»c¼431`Ëî¾ü@£lÂû0Áq=:2Yæí¦êtsK”5ËÌð쉙‰Ù†7Î瀟››{ÈÿQ{ÔÀÄö¼~ðúÏôš›ÅÂÂ&“éJGÆïËDÏfï/ˆcÒŒj¬¯TJ)Á4"r&XÞt6¤4ÍDHàá`ÅqcÔä6‘ƒÈ¨&ë¦(½Ï³ÌÔ\ƒ’ež©}²±Š@™¬êEc@2Až3Ú:Vš·JT™ôEºR2P©pÛP²Âd‰Ní2*5p—&m6yÕl„D¡¾¬»=µ­X!@3“h™§Rä–õ`÷‡`Ã"Ê gêÅ)ÐfU:ÂËX]굞M†E†#ÑÌ 5¡šöbÌ»°Ú#ª»­,Î;J3Ø7xr»pÙ\DfÃ]¼ó0ÖÄE mØÀh \Y™bçÎÍÕ¿­®³†±{?xýàõ¹Hçdι@nÚ4Û>nà0Ãs6ï™=1;ª¥Ò~0%kÇ,#8À[öV ù*•%õñƒ4Å>³ö”@Ô¤gÅ]Zñ¦¡€“€ 岪7ôeº¥Øê-˼Zð[YæiFì}”ÙjznæŽ+ß‹Ðߪ,¡„hÅæÁx”Ší®¿TÑW¤ð>½™µ‰=¡¹’bVµÌS@Êl&}a?à¢#ïùÉ&“¹g°XE‰Í=”i,"ç…ˆ&(Ù}й SÕ>”\n¸üop=î‡ÿùGoÁó_t)û”Kñú·Äi¸ûÚ¯á::/쩸zÿ;w®ùÜW°óìûã+_ú"^þó/Çïüöëñs/|þáŸoÄS.>Ûwïùw ˜ûöÅÎg£pí£“)ÞsèŽÝºy]huZL1ÊGëÛóœÇÊêÆó›päðQlݲ©õö½w߉]ÇÇbËÂøÌÀ•ò¬Nå: ã¦oÝ‘5XY`rt6ï<æúÿÓ/ïK|â“_ìñxÂ¥Ç!Ë,VŽ®àªŸ»ç½í!غeë¿Û±§ÓG®ˆ´8³7Ä Œ=#AU›žKr¾ c² 3(K¨4¬9…ÚŸ]ç4“ÐØ?È 9Î,‘HÉ’ŠN¥i&=+¨z¼X[ÊÒUoôš¦\77o޼ߑÿßì½y˜Wu÷ÿ=÷VU/Ó³fÕ6’F»eK¶e¼/x·1›1;!$˜o0dyÞ„—„ä%/!!!! „%$qH ±1!66Æx‘eY–í»FËh–ž™^ªêÞs~TwOÏtõh±¼ü‚ŠÇÒ´¦«—ª{î÷,Ÿ¯O2źUÄщ(E[>Ìf9­Z0{ %Smû3 Ìn‰áÄ`?+)b«§}T5€úivê€fW™\Ge‚¨~Àtà @Û]ZOeF—8³Ó‚)ùPÈÌÒo&e§û– S÷L±µ~×½~5þãÑH­zÌð1:ÔˆDcœQ?x/þ}kvnÎaç C¸N±kÿQø…<òͽØòèÃØ²e®?oÙ+¶p9^_ùÄðTë:$v>„þÅ‹à'º0§)'ØŠQsó“ ,_s.6f‹¸û­×㿞û)¶<¼]ë.ÂÜî>Ýð,¸ú½è+¾€Ì*üÒµ=Ø»cÙ7C»ñxÞbÁê…xÏo­œwÛðƒ¯7~ô³è->át;[ìÇ›ß÷N“xêÀvz4 ìz }äíØôÐfÜtÛUxâ¹=XêŽà™p1^¼÷+XwéÐ;ЉG¾û$žÙºŸþÜo!“NJ¯ªR‚0„RÇ™~+éË÷࡟lÇ[.QèëhÇÃ÷$°`‰‡‘/…¹Cã¹GŸÃ¥7]ZYlr9$\NÒ}9_nġҦ8Ê"Qõ,B=ì\¬’ C$Ž0q0{Ù‚87“RêT‰MË5`ö²›I½ˆJTf â`–G fâ°FeÅÛ%Êe¥9}*  4B[œê.*©x"",Š\„¦¨È*q\OH•*Œ‚¸zkÅd:n¤%Òðv˜Ý@ c¬Í0+a*Í~ª`v'³Ï¨ežœÊŒwq&0!db“ I$§±_«f}d^PzdúÅ( )B# ±UZõ+7Sõ¥Epîº+qÙ—Àknį–¼ùuM`ŠÁ‹OïÄŠó?ˆë‡0¯wNå¹ÏYñ,©4>ó«\vç+¼®1cÉùëqκ›0¶ìñÝè¸ÿ8K¢±ÿjäd±ne»MpR¸ã²›°@?„Éö~:†×]s ¯êÅs[†Ðd|ì;2„P\Ìëìƒ_<ŒEszpë ·N;ï$שôLÉ IDATÝyºšÙœÂÞÍC˜¿j™ŽvÀï7¼ãø‹-r~+ò Y€<œ3° êAÓŽA\põ•èhn„¦ÜFƒ[n½F;gÖ«| o<†]íD0äãÒß¿ª²ã¾÷ÞŸáÞ{7cý²ã~?lv>–uŽ"‘‡ºà9œ{á±åsqhÍ!Ì;;þþçQ´]ÙeK_ΤT¿ªL`%pF ?§¤¡!„Y`€R¦&íIÕ9HTà ʠ€:*3jÍ„Ôq²82¯&HyÆ/ÖSµÌ š£œ™yª¶ÿªÂüƒÙD}ÃÖ("fC µ‘¡…µ>Å ®P+ÈŽ—¨ä±â³õjS#-*êø­À "„„ˆŽÁbV8BeÜ%™¯2«À §QËdH,˜0€ ¨zs^õj™bƒiC5fPzL:PT£‘•²È*C9ät€@gš3*àÀ5Ö8V¬kÙ:‰DÂ6"²gçÿ'þ}oΡ±â‚ðì“0÷ÒK ÝcÇÖ!aàÈЋ¸ù½· »0†G ½¸y©Æ¾´o½ë X¹ ó( öï?Ž ¦öÄD!6%ÿÙ½ôóÏLUÄ]P³¥žâžãìñÚ:²Ï`ë‘ípÚ\t´v`<7ŽsVøõOý²‡7c~ã1œ¿z9Ö®ì†Zx-6lkÀÃ?ÙßúØ4µ´ã‰¿ùܤ \¨Ñ‘éÀ¢þEÐZŸÑ”l{{#6mÚ„L&ƒb¡øìšs×üBWk¿«ˆØZ±DÊ8Ú ]0ŽN˜°hç6±«ì:)öt#+ÒˆÀ Ø´§8"ŽÄÒWdšqy-œÝ©™c|^ŽBe˜w¬› €:VtõÜLÄ$nî1Öñ£ìŒC3Õx$ø!†°¡òd…@ bÁlÈr@"¡-ª©{=â;:!J¹Ð*)Zy¢\-J9•Çã€ÊSÕ± ð_£ò¸Ž2óà8{”r:Æ¥²8Y7“ʉãk™Ó$Y½ é*ÓñàÑQ•9˜S£2‹Ì›mГ¦U ¦_¤¡cH²‡X;·YkоþJ¤7}WÜv &¸=«ûÑê0žY€«V-…ôÀMÌÒ+ðÀ3÷á–ۯǞݛqÛ[¯Do; …à•Q”§ÙÛs&BSlZè$6ó±—+Xž Ä/ýhZÙŠ¥=KÑÚÖ›7xìž½|x^‡£[³ÝXc³(øŽ"Ì`4›Á–çžÇ5×\‡ÎÛzd},]º ÉdrVxü¿ˆ¤>†/þnˆßÈ „@d”ˆÃ_ÿª×\3¥ßj-Àê¥XX–z³Q aÓVºf©6slRµ]½Ñ‚¬Ê”œi @‘E™†“e¥·-J6z8$f&ËY(R˜† C ¡B^KS£‹\¾­ØÕ`EZØ)ωhS-¯µémŠ1Оö]—:fõŒ0U3sŠÊØ ÅÅ–2v—ëÐÔk~yÃ@¥ìt7“22Oh6êU |=¼Lï?š‘KGRZ㙇~ˆ'wâG¶Âðƒ“Ù,ˆþå+?v,QŽÿG÷?Œöäplh ~· rÏxè»ÿ cŠ0 ŒâèÑ!øùøÀ$"Xµj–/_ŽåË—c0ÔX¶lîûî÷Qœ xM¸÷_ÿË—/Âñ!SùwË—/DZcÇÉdÐßßÁœ9sÐÚ˜À¡á!l߱˗-CSÿìß³ ½‹–£«« >ú(–.]¥ñýsZ2HE<öÈO±ÿ§Û02|Í 8+,ÏÜ1§# WƒxKÞÑ ÛýÑf,hoÇáãÈû“Ø8‹‰‰ÚZ¢ÓÈ4˜Ó®A<‚Îvƒ{7bëó[pàÀÁWüõÏ.hå²¥¾WÏ7Œ²§õ¼`\c™PžA,¿Úõ˜Eê@ Ê*8î0àxÌ¡-wõÖÚëEö$Æd¬O–[$–,B›£b0¦3©ŠÁ˜.GµŽiíN(åLhåNh‹œSð·®×&=?Èy~0™üœW l"0ÆQŽq (íDŠ”@b9¨zñ+nÅ3ãGÄz+Á *3ž!D@ šãLöx–jö´ä„ÄmVf~[ŒRçoüõQÉõÆ¿þê´3õEšÒ&az¦º>“0:Nfï̦õ^Ëu7­]Ü÷Í/㽿™Áw¾ù5|ãk¸ª« =qæ]{:·üŸ½w+>ý¿?Œÿý»p»®ÇÍ‹vá‹wý&6ýÈâm¿s>ÿ•#øÌ¯^‚¿ü«Ïbí²ÕøêS#˜›?„u]·Üöúø€m 9޾¾nì{è»øÊ¶åøÀ]7âÏþà œ·ÐÇdï*<óoÿoA?àÈàº{ç`éÒ¥èîîF>Ÿ¯<ß¶çv §²A~ >sá¡í˜, z[[±|ùòÊg¯ˆø>öì;Ïcìxl¨m=öù`᳑î ét«VM5é¤öhìÍïÕ·¬ÂÓ_þ1<ÇÁDÑÇ??Ù/ià¸ÀÂ9qÙe—cÁ‚X³Ãupç5wÏP«¼ú]‘a3¨ãU±ŒªIÀFgrjÎWAºÅ¦X…ˆÈXVuUf<2/Æ£ ™™êje±$lÁbˆÀP½±Äb¥a…,‡†E•LY0<'P†C„YIŠÙDÿEèQÍÌäº %Ì¡¯\VäˆCžXI[W¦³a©ŽÊŒa¾ÎVÎlÇW”Ì„b—ÇLtl-³3õ4•9Õ³Ÿ=G(@‰Gæ Q]d^9•^3¡UXUù7Y‚%ªžòË!Û"ŒÝ5 ‹F0¼iãŽÀ@ĸVš~šš›”Ï¾k¬qŒ˜š¦Ÿ§BC³ƒ}óH´§°$å¢`Ç æ·»xq_7\Óýš[ت›~ò…Ò©ÔÔŽ†… DJs4⬬±Ðކo,Ž.Ý´Ji¼°ã æwÀM$Q,ä‘H¤@u` ƒƒƒ%Àƒ@9„CG–F¤йq$šPÌà%¼šß‚sçÎÅÁƒá:Š~M×óàä8H¹ e3£»»Ããy„~ÚÑÈOJ'ÁahF€ùÝg£ÝËp0ƒ‡ÑÓ݃-›_À×ÿùAìÝ?ÅE4·õañ|Âå—­ÂW\õ²o,OÔôCJY2iã:nUÓ›„ÛÀ®J²ã¤ØÓMÓš~Ê©*Y½5¤2/Z‘âj™e™¢jÌÒT•â“Ø];»Žª‡Ì«7—9³¨ ÀªD4˜ • §ÀÚ€XBÅla%PÖ†äz†˜­C2ÖW, –­b¦(8’%a«ØZÍbIk£XD)e‰™uyþ•@`QV+׸n2tT³Ÿp“¸•='m='ÃÚóJïEJȼ:þâbgN¥ô^4£T딣¸Ø¢DÕi(Š·éZ1ßx¥Qv¹¬y¥Zf=7“èêRÓç0=x”G^ÒHSÜÍèÁ«°—É@ñ.'€ƒ±X•é(ÀâT*l#c …;v[4l@ÐdÝF\¶ÚÅÖMCØ6âá†k^㪠•šž+òÜòíý)H–ƒ%Ñ`åÀl!™JϪÀ{{{OÓ›sR¯yþüù§–*lÉÈDi?È^©CAan_t}œ·îôÎíÄŽ[1:š…ã8èï_Œ%K–Ô” ^íC¤^JVb³SÓ•åô¼•[iНeÖ‡Ô.²ö„*³2/žu:õÖ„¢U›Ù0&ˆê‘ŽÂ•yIk}2KHÌ–´¶ŠtH®c`Ù*Ë¢|«IÄÖ/«HÅl`5“%ÇaR"ÊZ«¬&ÆóÈæ›ÎÖ… R¥""+ PbLÁz®c¬ñÙs¢5F˜AZK¹èw"•YÃ…-+ûi– „„ Œ³C­"Bgš’1´šéd‡+,_KƒDd@]6p ïŽH?úk:fË”Ÿaì“՛͌yÙhúíKc—¸8îjƒ\\~å\@ |X?@º!ƒOàc·_óšLÉŠÅà,ïìñŠ™L Ö­»¸*UÅðýð DN|„¡=ùûPN÷ÁÚ®ÈÈ]Ç®²TµHÏ\ð£JÅ ó¦ìµfŽ-T#óf˜IM+U+ÈÔ@(Ú9U‚Ö°ÈbH–|²CV•Jb± +6ÐŽl³”‚¤Q€!(­Y±°‚Xí†òù5e2Î-·ÞØ~Ý×^°víê?øø¯ýÖ O=µqb„H‘µ£´ûÚ˜ŒvÝ37²±¾Ò"¢Ô”ql=€º©T‚“bÌ •;ž¨ÊÙaFº´”æk(*µðÄQÏ¢ZæL—–r ¸fàtk6ñn% @‰ØK4Îͤ™‡˜}@„ÌkbJëð,®‚Ó_ö?ÿ×CXÕߊ¿úÂwðÁO¿¿øº_ÀMçÎÁOÃNüú;nÆÖG7cù¥k_ƒ Wòìê}ö8{œ²ÊœÝ[6¾+Ò–ý® N=ÏLFœñ¶LƒWÛkafútÚ‹ cEÜãu©êê%Ë&é(gì$€" +!E3’†V ¥BÅÌ06TdCUð°•:$kf«"h½UÌ–\O”"V̬D¬ +‰Hiôþ_zï¼»?ù±Oµµµ­€B¡ û÷ï—·Ü~ÛEO<ñäÊL"šÙG‘5¡-hEI*뤹$àwŠÒάjTÔ0 f`Ê )=±F-°Š”ëæVrr᪀GµJ¿ZeVG¿Ø±Hˆ¦XÞr¬Â€8  ¸ºd=_Ì(/ïÆM‚‹14ÕÄ…qÝõ®_À×þúÏñÛ¿û>4dRø·Ÿ| G㣞3Á‘S¹AK»?ü¼z>=ίxª¥®d,ù-ÄêKUÃ?ÂQ GÊy¾8¼œÔŠº4f‚*Sׂϫ"cÌ.ˆže¿ò:K#–Ë2 ˆ%k J$KA“U²ÄlUô\“• Él•ë±³"b¥ˆUhD+":tlg¸xâñÇ~aÍšUw8®Óê8N†‡'09YÄüùäy-î¿âèñ#twt»"eYXk'ÔlCMnZY½N¥Ýh´…Ue3~T§´!€ÄúsNû:ªGUÍA1H!€EâU+EŸ¯Ø8ÏÌ8•Yb#ÞðSˆ¢ Y§–0=xt‡¤½q¥ÖXd ¡c½4£}VP*ºÚšÇò°r2µÌM?ÃykÞ‡‘BÇŽOÂklÄð$ÐáM@8I8º#‡]‡ó¸äŠ9Ø»#‡9í O=_ÄÊ>£Ê ¿;‰Ü0c÷Ñ"’ã+¯zùPŒaLN~ÎÖÆ(åÅ x®ƒ ãÿŠº ñs–­N¥\$b­þ‡ëÈÓR™SKðôv’Ùº"…,©PsÌ ê²Œ‚ b’¬qž™õ:ð+éVõU$¥´+EX:ÁXŸD ,GÍ9Öb1”L1!\Ç(+B…€”‰ê‘RTV¬æÈÁIim•À*¥YA1 G„Õ‘¡#,ÈþüϾ¼þo¾õ-&“É> j6,ú>ˆ$.ÚÛÑÖ–Áƒ¾¾žkà“"ðˆ@®ÃÚZ°0+#¡b ‰m@ÌäX6pÈ+} õY½ª¸™ÌT…smª2š.µ‡:f€Ùý>#•+@5[a–´}Åu;fn—*bk™Ž‚Ç $@ÅF ]`?Ì £и |2ó—ó6@{÷æ‘îr1¸3 £“H¶hlÙ9N#•RÈ9ÑxtG r1–³8úâ8œ%i<·?½ÏäÐ1/ŽöWfÁòýÛ·þ¹šAܾùì8fðÆ›®Æ·¿ÿ(.hCSWüÐÀK&0žÍA§3°‡7¢kàRhçç‡M+̛מžŸ·€yâÀ9{j¶~>ˆf:1—Ó®LÍ1ÆÄñ#Óí¿ª—Ñ0M€‚HTF²*ã€h¢ÐúDD°±E²l‰ÙëYå“ç11  BÄl•åP‹Xb¶ Ä*,e¥[Q Ö“ÙILŽËŸ—üë¿ýó_Ø7·÷–ò+œ,"›Í#™t‘N' µªöòçtôh8pðþè³|Ùþß—žƒ@1D H1[­ÈjcN¥|#lÈX_iåE_‚R†JYÔƒXâºÎ)Ó€J0‚Ò듪Ñš™šÕõ`¨µÿšº.êÌíR¼Êœ fà”Õ4T+Ê"‹9ˆï¤,§_ãyå \¹â•F†q6žKèXÒ†ÎåÑ_Ã~†V¥ éýº®NW>¢/X{Ý“!Þ¸dú´vik½ÑË—‰RŠ~®pp·oÄ}O`ŽséÁøÒ‹øÐêܳa#:¯ù4èé/âñŸmÀHï…øóÏ^‰N—ðó²£(ó;~úZR„NjOÎÄYb"V%"OœýWü\feP/ªcIõ Všc¬ªG ¬„%<]f¥,‰Ù’RQŠ5‘ ³AhXY1d—,[%l”å¨)ŠÀÊŠ%Ça%5í¶êøðqaäø#wýzßï¼ã’ Î_ûD2Ñù¼ß‘ËùÐZ¡¹9]­|c7Ž£J%L$åâK_wÍçÿïŸ=çhB¬'ò!&«Œ µµ¾²\T®Ó`JÏ1juÙQ“P7îÌâ>Riª¸™@À%¢ °6Ï@ñ."‘“‰Tà©ÌY:fËß}ŒÊtt”Ͻ8sÈI:bLÊ/:îdå:gÜ>ÑE¶n\‘¤lòÏã{{FÑ­5FžÅèºn$ X™*â™­@ÇøaÜðá~üÝÿ=ˆ®yH{ÒûC<28ŽOÿïÕ±Ñølýòå9.¾áݸä Iø&‰dû³˜O„%ë/Â-óžÆ‚eÝàUŸÀõoc4¸>ðóA^Ivë«™š?¬Ô»û¬%¸*î^µ¥¶‹˜2WM}±i­‹Ì«§2EBJ1ŒõI)ÖD€0)Ò0\$€9$Ë!Y1$Kä@y‰Œ5b*•²ÂÄlTÔTÔÌQŠU„Éq£zd4Eý@‹>–.NÝò†›{~éƒï{÷üóÞ}6,D ¡ãã(BÌ›×6ŒÖ¶Llº:îškoo„1 ­5556®;ìwµÏóŠ¢@­´££®[£¬õ‰ÙVÂ" (5íè*‘8xü,î#•¸Qe€ ªr)YaÏÈõF."¬âM«ƒMÉͤƈzf­[Pò ‹ê™23w\¥2«€œrMr&`½¬2àzЛF-ÿ^\0­¿C¬ö´ž‘¦Ùç.ÝÔ…þòó\Ò ¥¤tß­XD™…|bÞÔ>V€«q"éú²/Èç R=ÏLÃg)×ûË»×ØÂXžöýºž‹ O:¶”i#Õ‡VËÑÕ¡µ³T}µR°|†H<. R„§È%fld7ô·ÁA(hôJ9‡â¡:y‡ÿÁ)ë퇰cÇÿäÍáœsÎGkkºî=1»’¤ØŸ)0œÜÜ£@Ö‹ŒU¼ÊQÕªLˆ¡)(&ˆŠ‚"¬@†-EuECƈaˆÅ “㤵% ­óERQ@5ʲÑ,¦ÜѪ\O@d5„„•1¢DDù~£“cxèÇ?ºíâKÖØuÝVŠòÀ™„£!“¢dÂÅ®ï=‡w¬lþ÷MXvË ¤g™ËžH ÉdÍ-ÍKø$HD‡ÈZVl­1ÊX_AXÈA–‰\•äŠN*#áë¨ÌHÖú–Ó² ;ƒk@pKVŽU™–8–É[É5­;§>?" CëfB]6Õ @Nùõj9†cèD'ÅÅ$’5Ђr-3@PCŠ`Ð|ŠÕ `Û}Gq´ÓÁªÞ$Ží˜À+–6àš¹ òOøn¥‡µ×váÉû'p¨0‰ ¯È`÷.‹âí°ØZ,ŸW´Ø6`å¼&ÈxýE/«ÔTÚÁ“ÿò54Ýòa¼øƒoaùÀ"ŒOh´NÚw~ßÿü/cþú·âÂË.D°~´§ˆk¯_ ßþ:ÜÑö4n|óMÞ‡gŸÙƒÆù½8gÁB|ûûàÃï}Н«ËÙãîa-ƒÙžà_± º„§lkB,Å*Ì8‡ÒŠNB`‚¨Ø1‰êpD–C”[uY,X„,‰À°lÈØ‚²Ö’PdF’›I8T ®2ÌZ&+¡ˆ¶l´+¥,EÇV+-*4V‰ˆÊf³RGÍûßó˽ô'ŸùxKKóêD"QA•<8ŒÆÆ2™$ÚÚ2øÌg¾ŽëÎÕèNŒA­}Žü÷!l˾€7-:©`Y¦-C´··ãùçŸÇ}÷Þw×ûÞó+ÿ(ÑT…±°v´Õ̬ҩ@± Y„I©J'O4 R2‡&bÔ³×s‰Gæ•z§2©ÚåŒâ7a"u@ð1¸Â’‰(âÜLÊo¦Zaª™)Ö˜7D„ëÌKªÒÿâ>§„=ŠÛ):˜Œ¿Ñˆ¥^jvg‘IgC<4ÀûÞÞ;âã@Ñ`Å¢$6유ÐÜÂØ°y©IA6ïcÃÖ’¡Â›nïÄãÏŒ";iqÍEÍØ½/‹}{×=/+"èX‚·œ“A¦)|²ç¯Xбf»öíÀâe`Ͼ(²ÂÁ ýèà,ò…qd'›q`×sؼa;æ.=›Ç'ÑJ!^8”Åáá"ÿYií`¢ ‘Û[nÖ­¹ »½ˆÜÐ0¶îÞ WòøÎ=…Ï¢5ÀXn]Ê®pö8#×üKÏÊÄ[4”`Ú³üÞôTw”ó‹¢\¹2ú¯ 17¶H† d9 Ã>6§›S~8® Á¸ÎÇÒYG9ylÈ)¨1­½¢«ÜÀ Œ¸× ®æ¼b0™M.Á’KEWé¢Çâ'¬õ“"6qèØN><´Çÿâ_|þÒ‡wþ•_ôüÕ¯ÿͺº:¯-tçQ(ðýsç¶£¹9 ¥ïxïÿAc¸.ç1Þy-¾óoYô¼¾ {[üàG{þ ?Ñ‘‘I=šE¡ ©)×uÑØØ(s:.ò}?ŠkÂ$@E [jc•26OÌ€ÀÚ¦©©fõJ½u=6Ds™2ÝÍ$M¬XrÍ|ÒèWçùH¢¬Ÿä5VãàìåZfE?Ÿó+Weˆ0–ÖíhGbC‹‰Íµ_äFF( K>rÚ ÔÍ-MÊpàZc{–­ã%¼ KVB°m_ý etv(>n±°/qZ¤Ÿ—»ñ'—óqlp8ÙŽE½°,hí!ÈeAn Z+Q°A¤=¤y?€5 .N p‘I)øÅ$Úqø~”ÁŸÁ$k'0§%«4'4ÈMbb| ã£47„*h4¦Sp%@h=¤\˜Ð ›GÂŒÀë^†±ÁýhjïÀÈD-gý,ϳÆ0'‰ööFlÙ²étÅ¢ÿìêÕ«îìj]PÅ’%㨔qtÒ¸:a‚"Ïiˆ ¤Ý§½&LgÉF9,]7X]†˜¢ì¸°’è¨C5 »ÑSö‰Ù²¥òŒ¤rB±DdH뀌!%°d™TyÔƒ…ÉÚP‹XEŠ•“Ö¬Y¬bH>¾ŸüÚÇ>9ðŽwÞqŲåKojjj\““E!Y­kS*‘óãg˜{ÃôÍïÃ[ßýÇèKÇëÏïÁ±ð\<º-‰ë.:Œ¥ç`ÑÂftvõUâÊ”ŠŒP¢ZGüè8ûÁÁALLLä—/_~]Wû¼ˆX+Z«BÏs bÓ~Cª­ Ö ’=aÂmbEŽ9ÛhÊoÌ@Ç–ŒR·–9u«³ ) ±zœY‡uÚt‰w[ÆÓt…]›¶×•RvÊ,íþD•Eà´²SvÉ–w3Žæ»ñÄö1x™"R®‡õëWcùò•Uip1Ö2 …­­$“³.% LLL¤/^eó®Ý»‹$B"¢VlYY²Ö×Q-Q9:%Žr§ÚdJ‚úŽ0Sî#3 ´Ëf”R¥) ËÖ™º†„`”Â¥×QiªJÛ× ªrs˜C:£&%˜k5]a–¸ ’Z” ÔíŸÉ#û{3kœ‘ÂÆ‘UÜ…i¬q˜­ ·Za +€&uÂýkéÈå|Û·MsZaÅÁöŸE[ç<8&€MfÐÓ׉={¢³5ƒ‘c‘njGCÒ…“jBvø0ܦÐd#~€±#G°zÍš“JîÝ‡Ž¾¼¸s?¶¹˜Ó݃Ý'ÐÝ‘A²!…'yë.»~!½‡GaÆGpÞçÁ! Œ›¶¡«£í-Mȇ9äB…0Íë(ÕÎg+Ìl6 ¥ÆÇÇŸ;wî …©Œ£ÜÐÑ v¦Âtœ4't†=—àêÔ4ÿ-©* ¡b¬ ©Ô©Íöú¾¡¡!ä&s_yùu‰)e'$’ÀuÒE ÅL*]Û¦¼vë: ¬U‚nŒÊ¬*NS…ZT1´TÐ÷%˜S½ŽET¦Ú1“òóM«mN+ ÐT÷íŒ×R ůÈÛØ òÓ9õTaÌÀƒ‡ ’B*ö›öàÕ(Ír7mœ›IÔÓZ¬›&•2óÿ}ño°¤;ƒ¶îeXØëaóO6âæ|`ªà5š&$RØöâcXÞþ&t77༠֗T Âƒß{?øÎ7ñ¡ÿu7B µy‚ÐB ØðƒpÅ›oÆÏyÍ] ¬@ØÓМlMÊÁŽO#Ñz“44¹øÚ?þüл±kÛ³XÔ<€¥«á{?Ü€d!‹‹:Ð>¿÷þðÜxõER˜Û4‰ñ0À¦Ýy\qÁ2 9ŠæÎvXåÂágÝ ÏgèfaJ[«àêØ¬”»iËI,¦4![±dmQ±1,11%’‰eÙSŽf*ø\ „¹)%)¢s/òGw sí[ÑçÁ=ÿ¸]kàÍWÜŠ·Ýº ;Ü>|üŽ«ñÖßü ,Ú¿ßüî·k]… ’hÞ÷,®¼ýv¬^wÕ gø´"ärlq7þ롇q÷û¯A’Çðý/ÿ50·<¶¯¿ôìݹÅ‘£Û‡°øú7âÈá!¸žk ìÂó/€?ï|ÌQ^Üùæ÷õ¡såèÍàįò—óª9¾š ^]Þ œ±/Ußg„¦r€¤²“¥å€¢zd±Äi i j‹%Ò†´kHÃSŠD!+!–¼bŽš\X¬ÖZĤVÌV‡F”@ÔÑáý€Ü·¾ùO×½éMoø5/‘èv]§Ž¥57§A‘œâ/ :éK'z¿TY•FWW3ˆ½½'œBÐ$iµíímE w¥VGÍ?&1: ·$¦ÊÌÜȬÓÀìq¬Þ“³3Jn&Ny1"Ô åYI©£2KP‹ °Z˜Ay.SS½ uXGõšuâº,=è!^,Ð @PƒÌ+ 展rJ6‹¬²°TDQ‡À´”¬eë2³“L$œ‘ña+"{6?5‚äÜ& t;•¾\k¥DÑyíÌ\®ˆìD€°˜ƒë%!¤À¡B"áD] ð} W¹‚–Æ4 4 bËQ €5'žZdh ˜G`ü<\ÏE± ™L 4JJüÀ"™NÌ`Q`B)BѵOŸŠãìKùħ?O“öðö%碭-s)Y/tt¸N²Õ)٤ΰRŽ4‡Á%8刡õ ¤£¹I1`±dű±äx´¶ŠÅ!ˬ¬DvXŽR­dS©qGÙÈ\Y>b ¼û㿽ôŽ·¿åòeË—ÝÒØ˜Yahdr²H Ic‘Jy/9Ã5sì#Ÿ/¢¡! k©T⌭qS¶cÀèhMM ( xðÁ‡þôïû•{í)mÙêÐÕä+*xNS¡!•òmÐbR‰fë:Mìè¤0³¢²e EëXÈ©ÓT põ€ªÀJ•-‘;ý±™Àô: EÕ)â™*sJp̼ÞÕÌŸLï×I!…bLZ4D]˜ÁA”%X¢âj=_Ì2ƒÖÖQ“õl|ª;Ëæfñécxý­mxvã(~å­@w«‹×òAD<8Tú[þ¤~';öÒ`í–’ £ÿ 7ˆÎW6sa,bhÌÇÜvCÃÜä ÁÓH+Bh–)y#Ž‹;Ž£%„§,ºšR04º„ Ë ^Í4u»Ì›%…“ŽãyŽ Œ…((@”´vÑÒšDv’ÑÖät4óœ6üãÃèl:ù€MJcòÈóH4Í›îDP˜Œ@1¶7Õˆ=éçZÒ¥‘¿$…ä©ZO£°kº9D~8‡TgÉÖöSVËí¶ˆÙñ,2n2önãÜ8ül·%¥J$a‹c@QÁim†™ÈPЙ4l.l‚Nyà|p<èLcÕÀúôc^ªw.9÷%èSÊ!k ¹:ɆC2Ð4Ç1`1Z£˜ i'ÂÖ%RŠŒ5ʲCaÈŠÙ/Qv"©H”r¦|#-‹bcձуö²‹¯iüżwù•W]þúîž®×¥Óéþ(ˆâûããy46&©µ5S*­è—,™¾N®okk<£&'}LNŽchhÌ‚¶¶645eÀ̸è¢õw~ð:í(!­…¢4Ú@[ëªÈu%‚¥³XRJs¹v\nþ‰Ô1•\afˆ*Å2TŒ›If0Me†Ì‹Ì‹žOJ¿§204e»‰Ù`6‚ÂÂjæ÷êxðG¾f–²>“²¥A J7ºc¦ÓHÇ6¹pëLÀžpÓ}ãmóf\°¦=–ůtKÁÒZ†Öê A"RµmW¯Pà|ÅKCT[ ?0Z@vRcÓÎA´gSÈ6l͇xÿŠVðþõœ{Þ9sÞôæ7Þ1o^ßÀ+" ÁÁˆ}}m/9 A¿ ù|€îî–3’ç¨Ö2ŠÅ"FG'±{÷> ô!™L¡··+ºæab¢"A:ê=wíšÌöm;óÑü£(ˆhfV£C«•£|U±&ƒUÊ`TÎYN”kˆ¥®›š¯?BI¬MdÅ3ÓÒÔhHÉ“ ¤fÌ„¢.[W7¥²ÊTeòÞŒ1“8{8ŽÐì1³ƒ‘AùÊg6Vl)e+R3÷U¾f±·CÉYn£ïàóÅ"†‡‡Ñ¿ Ä#ß-â–v௿;†”_„Œh¼ïC ðůì…B‡hŒú9\x^öó±D,¤ÝÀú 4.jÂÚ•M¯p=í•«)I F,1¨»sz2%43=sß8€Djê#—´E?_Ø‚… [¢ „KnZRiŸ{qïÔFdÚûåÒBwòï¹(×.k–·V^Ó¥+zKå¶“}>‰:O!%jý":Ï¿+z?f&ã¡=¹®T|)ÀžÂ×g¹\9ÅïÜçýíG¿üºsLxê× C`…aëLp«¾~4õõWý¤ õÊ90b‘èjͽ U©Z‘e•;=5°¨´Í·fc9ùEŸË£è"ƒDø¹¾2 ¢az°"²¥CÚ ÉrRA ¾! QÌ%ceVVŒv]VJ¤4.Â* Y³°jllÔ¡ é¿î½ïö‹^wá'K ¨ ÑÑI zzZ)ª¶öÆ·:x•ï…‘‘Id³y,ZÔUR¨)45¥ObCqrçd³yìÙ³™Œƒöö¤R+Wö—æZk$Qšw|ÜG&ãÁCýýýÛ·í(D7“°&Ѭ VYëk¥`B** ,b©<çZQ™R»1Šñb®Ø|ÕúOS¼AB"K’b•PÝ11 t*ȼRÇlõërÊ©RרÌrj6™G ÁéFwì·ǧ­¦ršÁƒˆ†!2™[Àî±¹X½*‰ MD–jBo‹Â…ÏA›Ûˆ§:ŽÎeMHLæÐ´²ÅÁILæ^9¡g-ã ¿¢°m"ÀبØûÔÈõT°âx¹—±z\ªîk,<¥ ^¥â²„Øò×.^­Æc GNóôr®9ü‹ŸxÕÊ`bÒ¯³¦3‘èÈÇI*ÿ¡ll$'l&V¢HK`$’!‰"J(f«Bbž¬HfQ¤&%D`Ò"ÊXÖ"¬†FŽ3ÿý­{.»þ†kÞÑÒÚrÖ:…‚/##9êêj&"BKKÊéÖ—ªòˆø~ÏsJ˜»F´·7ž‘Y>±}û.ø¾ÞÞv)ÌŸß™W—¤çy5º"€Ö@*•ÂÄÄ>ò±»Þò¯ÿú¿lnl&DÍöJ˜µã²²6Ô©DŠl蓱>y®Ë¥÷:¥ÆÊãõNyâßÑRX"†Šy¬¬2QnØ©V™DDRBæÍJL%¨«2£½ãtLß U&J›*—K/° M˜ÀD\Ͳ^º‡ÊéÚ˜Lu]Ô^¹ÎïfR–ñ³_ˆÖZˆÝËÒHI3~ñÍч¾ve ¯ýFõÎ9…–´”>„’rék8‰×~J–À'õþØÃßüÃ=¸ìÂضo×_ºÿÓoà+Ÿûmüýï}KW_Œ/ß¿¿ùKë°æâ[OòÜ¥”Ë)íÆ«»ã‚È©¤c唣™]q³˜ŸBFNêô•çãñÒ ¹qOWóYT}Š'ûÄ {¦pœQ-Œ¤¢…A†C$’b ¬"%®J‹¥Ð‚X±ätÔœ9~8Ú*¨Rg§ˆ²ÌÚ˜ÃãGC“Ï?÷ÂÝ û^ŸHx]ZëÁØXNB2éÂó\êëk;c÷3#›ÍƒˆÉ$‘Jy3æ/ÏL=òðáQ;v­­XËèînE HDpŽã@)U³~*¥ày”R Ò k-–/_ö¶bý³&jJD’ŽE´ˆÑÂVY¢´wdgF@A’Òy§äa)ÐUÔ¨Z•YªeÒl0©fÇÚ¨–I¥úâI¦©ÌPÕÀ N¤2…*x>rê¥O«£} ©º0ƒíØÎK±46ª¦‘F¹ØßS§éRÞ!åó9 iÝ{_:"Ð9ô/lÇ}ÏN`}Z0÷Š |¯W¬ÉÔ]4_ íSmä—®©·P½Ä³–n¤¸ÅP‰f,^²Í­èîöÌ4áƒïÀîú}lÜø$ÞÿîeèœßY÷¹OuAUE…£øÔg¾†?ý£O⃽Ÿþø;qσ{av?‚Kïü.]Ýÿ²nfþéo¾€Ä‚ùص%»ï~7~÷ÃïÇ×]´œ‡MO<€»ó“/Û¹ï¿ç˸ꎻð—ßøW\½¤Ë.‘½ÛqüHG¶>Ž[Þñn|ï'ÛðÑ·_~fÏÛ‡wô/ðÞ;_‡=û-v=÷8>÷Å/àÓ¿÷Y¼÷oÄ?ô ~ù7âC¿ÿw¸ù ·a‰· óι)÷t.þh]‹ºTKéC†v¬®',a™`„(M,¶…’í”U\ÂÏ ŒÒŽ ++‘ÛÇ‘áƒ@î?¿ïW®ZqáœÎÎó3™†e‘Š $Ÿˆ™!´¶fè%^®ÓŽ‘‘IxžŽ¶©ÌU uúýqÊØÎª5¢P08tè Gcb"‡®®VÌŸßUqRJWd9H–&Áu](¥ gtN{žƒ¡¡qx^ôY|â7>µô_ÿö¾HW ‰(b¶šÈ¨Ð@'<ßXöÉA"\*–ÌǨjB=óïR-SI,Ünª–iªk™‡ˆâk™±ªAæUT¦”¯Ãé*³Öé&" )(.à œêØŒfd‘­‰öõ꘥Ô+)ùjN—È`8pb}œøÐªÌd2‰E‹¢úI¿À¸É=:‚‹¯èÀ•·õœ¶*x¹íh|ïk_Åú›nFCÊã*lzày,Z3=óçcÛ“»Ðµ¤§14šC~b/†Œ‡+.ZûÒC¥?‚†…áXµb &wÃéJ!“lÀàуX°°ÇŽáê+.ÁøhkÚæc˶ÝX´tŽ‚ÚâœsW£±¡Û6lF¢µŠ“ÈŽæ HÁ‘q@ÍÁ®‡~5šÂ¼Û£gî¼S®íœt+n¼ábˆñÑÓ< sæãªË»q 1‚•KûgU}'»ðÅ·|ìß7„ùé6´7,òÍ‹ñÜ®þö[÷๟®»Ï?µïùÅ7ÁÕûðßz×f®AúÚexzóøfÙ"ìÞ œøø&yKß]O=‚î†Û#x–žÁ?ø+Ȥ’Óvºåwtlû‹È¦»10· ¹áÝšÑÝÙÉ#—'è”FÑ)Gà(Æèþh]~ G£µ«{7Aßùó!&„«4 3>·‹×­›^C x^<&lÏý˜Ìú8gÕlyztJcþÂÈ‚’MhjÌÀÏM"“É@À`ò°{ë³X¹6aÎÊŒ>Œ9Ý;6‚Î…skò%aV±™Ç¡}ûÑ=¯Z¹ÈŽM ¹ÙÃö݇‘PÀ‚þ…90·Áblq÷oܼjõò;Édo„ cär>ÆÇ èéi…RtÆ6ÍeÌÝøxÖZ¤R ¤Ó‰ÓHÕ ¬eŒ°sç¬_¿dÚµ»w¢XœÄ‚½PJÃÚ)õSn؉Û|Q%Ý:óñrœy]ˆÂÐÂóŒcxxøéE‹}¬³}ž§HY¥•K¾ç%ŠàÆbCª±`MÚd’¡ëdÄÑžNÉ>K¦jšRš)Å·ˆþß ‡Ì+?V³ëꬫg3édŸ¯8Eâ«Û$áBÓfùÇxl` Ä"ó"]袱03 ™W˜£U‚S ˜…BƒƒƒH&“èëmƳ?Î#ÙîàȳEì¶ÜÞÞyýk-`ÐØ˜Šmú©6’®Þ휉›¼0gk6šyþi[ïê×P2]#"cpÒÍ 5û¹k&ðø×7¡ýu) ,[Žãû6àLJHæcÅù‹ðØ£°èÒnøã­Ø·ýG™hÇÚÿ½7“ã*Ïý¿çÔÒûLÏôlšö]¶,Ù2È–ll³&daÍzCr—$›Ü@~÷GBHHHÂ06^Àò‚-Û²-oZ¬]¤‘f_zzz©ªsîÝÕSÝS#KÆ‚uæ£ÏØSݵuõyÎó¾Ïû¼¯%]<ÅP+…ÆÄvgˆ—剣ãüRûb ‹ãÌdh[Õs†€érä{}•&Ó5»,ã4æÕ=Îif CRNFUµ; 0}–9W½ä\,³DI/c™œKýš#WÍ[ÓÅÓL‡¦RÊ´£Ñ*`öíηáéþ)Fs—­MN›ÄSòåI£ýTó•þ—)l|øW>ć>ðë=9Es[††v“é{&yÖ|’÷þÎï!³S|ú“ŸäòÌ ŠÉvZÚc´žÿ¾ðÏŸá—;¯Æ~ÅCûxïo¾?tÿ®ë†2ÌâtOƈØ´Às<,«¼ç¹ ,Û@Úóp]ÓŒ€pQ%a(´aâ9.¦e’ÏN’hLŸ1ÜšÊM¤pJy¢‘òç¢*-–@ã”\ŽŸ8Ew×<,Û Tr‰F#<ÃñP¤–A1?M$ž¬yþ^ 0ó¹)b‰òäî¹^EÜ 1MBâ=„å¸`K„–©J ,·è€40 ÜT‰dC⬭$“Žã)‡Æ–&§TIJl<§€0mÜ’ÂŽ˜”œ"†i¡<žÀŽä&²$Î0ÇÆÆv/X°àý™ÆŽ¨­3”Tòa ¿$¤4ýt öË—d`_XM¨1;ä%Ž?‰1{(ÃÆ53pqçÓ4iR¤f±L]lU•±AÀôðDŽÜæ#ß;‰róŒz‚m»’Icd’÷ò|Zc’Ÿ×ñó˜÷e!y7K[S׌±cû~º»dº‚ër¤÷ͺ×pH6 ž'i)EšhW„ìDy•è¹æÏ*|:À|%ÆéógýÙ¿£X,15U ˜##£/,Z´ð·2é6[-Pï©_:ÌwÖ‡aý묟ü÷ùyΡ¡IâqI,kþèüñš¯~å뽕ù[h„¡”2Оt½’‘JØ®rµðT¹µÚLX¶ÜaDJ©*æì3.yøùéð:é²'lx÷‘²b¶œš˜a™•»§ËaÛYϲÐsVy¡Ë7}@­e™e€5Ö²V„_™„JœYe&å~çáaYW7Òê1[Ù^µá+P %\\©P2¥ËÖUZkCk-MÓ”ùb^ýùŸÿùïûûŠÅb45515¡Qó$GŽº,[ÖÀø‘<«×¥ùÎw0ó«7´° M²oû8nsœ–"±´•´ÐLäa^{ä)ÆTZó­ü{æ­9ŸˆQîÆñøÐ¾¨Chžyè8-óSò´r‰ë¸xÊCjÈŽxh˽x±4-éäY@}ˆæÕ2Îv± „àóÿ÷³¨Â[÷ sÞ²V>ýÉ?c`à8f²•¯}å?ØôÚמ»?Óã !xðî[I¶-àßÿõÛ4š'hhYÈÁû¸oë†ú_ 9žâΞaíÊ…g|ü3ùì…üŸþ2‰©!~ôÔnúÑØ´é5üËÿ÷9 ¹SlÝyŒó¶òÇ÷5’éù¤c Û~ñήëá8ñx„b±ˆ×uÕoýÖo}ðõ×¼þëÖ­»Ò¶í† œ’C4ncK…´l¼c óçupjt7®¼Žå‹–`Ú6ºë;Ú‹ôŠëŸÆÍ ±pÙrb±ÃÃÃ444bZQºÚSÄ¢6§&q]T*†i¤RQ"+„Q„/"”R¸®Çàà{ögpp’±±)ÇÃeÓoeYêí~˜ß×Ö z|¡WXt!¨ˆõk6]×Ų,ZZð<(•¦ô²eK®9ö¥ö–ùV9œ®¥FB(ézŽ¡TƒÄ+Hå%”!-í)WÒ¬R§J/m]e™õ¾±bî±³­Z«@¾1{ ›‰ÆC… €”(ç? ä,³BëŒÙÃÚ݉›¸I 1š_Ôh¦˜:«ºLÖ X ÃJU5šœ@£«*Ùr?LÇH§Ó²¨Š5¢ŸH4bŽNŒVËJÇa×®]d2ž^qåy1¾vo–u—fOOPh1xè\ÕSâùB’k7'I©"î/Ю=œÎû•¾s÷¿ók _‘‰Øý8Å"×311(–¦H¥›Ð(œ’ÇTnšt*B¡Â`l"GSú¥ùZ¾šC²/Eô36>FÜ4É•š››)¹…ì8ñt†É‘aš[ZÎjaw6!á‰ñ1¤aS,1…G4ÕŒr\âñÃC¤›ñ´$9³Ïóôu˜µctl‚¨%VŒlv’ˆ8Ê#jG(¸™¦FrÓ% Ëbr|‚¶¶·‘ SÉ–ŠžÙs„î¾WHºæÅ¸æš·Ñ–Iáº.©††4˜˜˜ÀŠØ4ÚQvïßÉÒ¥ç“HÅ8~ü8™L†|>OSSSÙ‹EiÆÆ¦H¥¢ÕœŸ”g¿¤( {Ìáº^MÐ2%nq‚wŽóìð"O248ȵw-'-“ÍÒáã-a÷ö]lyf/‡võóó~<Ïöí*KtŠží¥IŒ0¯{)±Š:v"ëÒœŽÌú •R¡bä‚ X¿ÝÞù,4,Çî ~‚ÛK%—R©€RŠÆÆÆm™îB(C®ò„ã——Ä¢¼X)ɸÑH“'„Ц °L¨æ2E 0–éçæ.3©„RËå˜T‹4µ¬ØØiqVûóÏÃ$ĸ]ׄfÅÍÜ,|ð ó’ppf£ë¥é‡f²PHf?½ƒ R À8ã5€Ù˜n”¥Jé¹³X,’Ëå°, åX¸–Í¡gF¹øŠ´S60È“j²)æ=Œ¸…âÙ%ŽÏqÃæ&&D=MCºvBšriM–ÿ6xhж%ÉÓævÎ0y<ñóÜYû§ÉêÏ0~BÂ/ÿg¯*¦Ò?#¶î¸LNækÓSŠoÝö-L7Ïe›¯$Þ”)ÏŸ•……aäs9¶í¤¯µñÛéXs%W^²‚RÉ¡±±¥Ùl¡ Ѩ‰m[/éyb|Áðx>Ÿ'‹‘ËM‰7`VX–§4»óÓœŸˆ¡•FH#´ær.Å«¿Ý?Vý³çy^0\óÝðs ~Èvxx’TÊÆó_ÿÚ7ÿä“úOb-‘Úp ) †Lä-3UHÆbEåfܨÕàFDYf4ÀÓ„še–b¶ÆÌ`v.S£‘Z†÷¸ *fk¼L¿ª˜•ˬXðÉPЬ”»‰0É»ë@ÔÕ—eŠ©pñÖ,`ô/ÂÀUÍš˜bši’$çÜghNåE•iG%•J1|X³#Á¨Ø)îËÓÓmÒØ§02!,ž~n¾§›ãÒ¹ÜÅNµðãÿ<ÊüÕqÈjÆ]ÍÕW´pß#'hmoâ»sôtzÛ‹Äþ –[ÑÖ¡±³‰µ‹b¼”¤§e› œ§X*U“ûå^T•³–eâºn9ñoJtr6é–i.Y;Ÿ+/YÅ…Kß@\gIgR(]Ö²(­ùƒw¼×SHíñ½§еh†aT¾Ó3œX,ÆÎ‡ïdÍ¥—q¼wÝ × +u©qÍ_Üœ¶%F#| «£ t> c‰A #ПÒgÉ>Ë­ÏqÏ0(]ÃRmÛÀ²"”JSú­7¾ùw?ù‰O½O£òä§´2 ÃóÃõL©½¢¨LçBi…¬.ÔÊ î*¡ð•å×— Ñ•2æÈe*LeÌö…¥˜õ¥±Ì Ô[Ì ÿäËe&bö|Qµ îТDiÎ|f½È¾¹@ƒ ê‰P÷ŸÓ—’Ì JRJÚÚÚ°-‹©•1> r|u§`õŠFÔ€Wî3¡È,ˆ‘훢¹- h¦27¾¡Ð\uyÛöç9i=F Ó\6?Éó#y癤1èº<Æ×¾3ÄUí F .јä¥*„l¯È×îºþƯSÈ9ŒŒœd^w+üx?‹V÷àfGøÑwrãå—íhàȽ4_˜ÂR©†EO`(;ná9ld›ßºž§†‰&,NôOÐjÄHuDhhÌðýíäâõ] ]vÜ{7+–]EÓÚ$¦çáaÛ³³~éJ’)›Ç °aAÛ÷âšK6Òì$B¸4¥’Éfüä¬ûèz¼BÎÎNúú‡0TG?÷ Wì FúŽAó<šc2MIFÆ‹Ä —’›g²èbbÑÑÞÌðÐ(™ÖFTÉ _˜äàÁ=¬\¸Šia€V”òc;†”f¹Ó…Rt´7òÐçÌ!w/™¥ÝômïÅèIñ‘_ÿMŽ=Dë¼…FG˜V.–‚¶îŽõ`QÄ´]v~gŒ%×µ2¿»‹ÉÑ)J"ÏÈHŽLc‚¸•Bé,‰æVNžÂ¶‘dlü¦ÑLÓ‚òcÓ˜ŽMSGü¾ CAÑõ°%œ:ÑO×üÏáˆmƒÖ=ÚËk7\Šëzäs%”2hˆ–Ù±˜êŠ5÷âZ¡”ft4Ëñc#ôõÁ¶m¶>ó8S'iï馠RÎqÏö!NºË°¤Z±¤ÓfÕ xÓÅMl^c26:É­_ýÃÉ7’nJ’–&x.¶mÏä ƒ¡±qÞzýÅ5áR?4ê³Íó. Êóhl‘ôö³¸«¬Á˜ßç–®$ œ…¬Ë9ZÛmÒ–…ß…$„awAû»jÎÕ¨²¼j(·ÞZÏ¿¯ŽãÐØ˜`jª„ÖZX–Õ˜ÍNy©dBj­„@J¥‘Ïð”+]Ï”Žp½¢0 [+å"¤ølDs.Ïþ“‡‰ìS<:y´i1|j?SEÁÒLŒýOæK÷a•1Bfñ¾ô¿ÿÖM|j;+Î_Ǹ€v†<Ú€½BÑ·c'éÖyñ_ßò,±ƒQôÝË¡ã‡YÕ±€Ý;÷ðÄî½Òcç–»X³q'¶ô±hî¸îrŸÌ³hÓ2z:;xfÏÜþ÷ßc¢1•;A/‹XÜ0B®Å,ž`Û¡Iöî8L{ÛÝ‹ùÁÿŠŽFèaxè('w—(öÒ±d÷Ýú¯´-¸„ïÞúx™U¬YØÁÖíÏñ£»öi˜¢§»ûÚýÃWÉNæ]nýÔÇøÎ£Ï“ŽCKk'±X´Z aY<Ï$±ªÿ|¿Ö0gš06©µ¦Tò8°ÿGzøÄ§>öÇFØöÄ®¹lƒckWÇá\_}Ôá§öòÄs9vo»•öÎù¼ñ’¾ðÛ­\·!Æç§XÜ•äÃùCZÛçsý[ÞÆ¼y´·´cš–eÕt‹ERñ—˜m×äÇ©ªR;F!Á2’=øÝ]=8Žƒöß¿÷8ÿ·A̸Ýîç²ùÝ´jpV“~yH½â5¨ˆ úÇ:ŽS£† ~|ì»ù¿K¥Ѩ `ÿß¿ýÜZ–-)…ÖZ*)…BžaØOЍ¶Ì˜Haf]XÖwÙ¬SÌ£ªbvV7évYŸ”ÈrhV‰Úž™ZÔš @ö'ªšP–´ð›Å4ÕL3HU  Äœ>³N(Ó ³Ìdf„Y P“Ãô~<åÍÊa~çK½[^ Çó¬^•¢ûâý¹~¾ðWKùßzÇ’¼. É«RìÍ¡ì$ƒ‡Æù½®øY©B‹u_þÜd¸òLkÐÊE cQ„Ö•¾¬R„îëtÇ=í¶9¸¹r=äilÇ‚«½Úÿ~ùr³Õ®J®û\.øå~srb‚ÉÉ,¦ma™e¿´l6eY´µ5U³¾",_W?úú†™B)Åþý;xxÿ8Þ1V¯º5}˜Õç­£)¥©¹™þrŒ˜-(8p^àþr# M ¼ðìn6n\QÃÆ,Ë"‰pôÀºtð­;¿Í-7ÿ&F%4:÷Ÿ‘‡·>Êe—^RSsíƒ%€ö\U&–e‘u e•ò'J­Úc~Ĥ/r×cƒ¼ãõ ëòÃNMMe}ç?ŒÜLiyžW#H n/ åÅÍd‘ææ8ÓÓyüÉ/¼ë–_½Ý” ÃHG Q´ŒXAІB"/h·ÉGš]ËŒ+ðê{þù1XŸe–áÄ7Sgo™WÿøÆìË<ÿXŸÙPO€³õ™­ê‚€éqÆkÌÒƒÃïfv sÖsvÓ-ÂÓÅSL`'®þA‡Î6 3=]+²‘½ãdV¦ÏÍ`çÆ¹ñ3ÌR©ÈáÃÇÒ bšåß–eUK(ü<\`ÖÛÙ eÉå ‹N •Ò ÷È~V®^H2n³Ï.úä9ïÂ¥,^ÑÍ}Ï{lXc^³ÁÇþø/x÷M×38|ˆU]CW[ ‘H¤º?ÿøž3MÁ$bQüž—õçä+£ÇNŽóÍ»¿Kƒaòî÷½gÈ)åñ­ް¤Å »+FDy4¶”ó•Ccyþî¶QS/$¦øð¥ËùõÎT5èyÃW¼†-.ü¬ÏLƒ•ÚØšÿ÷ôtÓ4Èå²Ú0 µfå†7”ŠE%¤ôÀpA—"V,/t²F ÊM;Éh«kYqeK è£> ŠÚ2«¨BJM|‹»°tÝ\–y~7“¹@gk™W]8‡¦ƒÃc¡;ôðæ ÛÎÕÍD¡t"JT„fŽœQ¢ô¢€ e ¬ýû÷“L&Øy·É/ÿþ<¾{ŽHi‚'ž†?ûøb¶==ƸrX9šRäÍÇ^˜bþ2ÉİADz&.^×ø³é"}nœ¯BÀÌ妙˜Ç4 ¤4°mÔT„¤=7`J)QJ1<œe|<ÇÔT×UH)*ù%ÍØØ(MMqR©8ž;Aib˜C‡5iZº3d¢™––JœOe~RGÇÚ‰F$†R5µÎŽãÔˆh;ÉØÈqbR²nýÅ8ŽSMÿ<ßú(ë/Ú€S*2–ÍÑÕÑQPþë³ù)461ÁP6OkCC(þ¹÷W/ȰT˜Ü¿í(±ja+–ÆX2Ï®Õ·ë æ8ý¦˜õïi}=g©Tª4›6œÄ4= ÃP×\ýÆ7=r´€JJÃUZ8–i„ŠâÑæ¼)£%Ûhq"VJÒÒÒ0ë3Àü´ž±ÏÌ”@ *:+ ´øšIƒVº™TËO‘öôe&TÊLêFhbÎÂÂÀ?£ò¶ÍÄ ÍsJ¤˜`‚(ÑðßY V"‘`Ù²eضMۻʶaUŠæh‚+®Šá)ͦÍLäÁË:Ĭ£Ç 4t4±|Eé8ŒO*æÍ;'ä87ÎWr˜¦ð4Ú‚ñ©?W¤Ýds”M¯k™/dyªõË=&(œª9z™U9D£&JH&m,èÁ0L´<¿ã¥h×½}1”»…UÁDë™Ó0°Óeêì©~R(¥ªÌ«ÞÌ\Žâµ–Ýž D+aM8=ÏcÓæKA{ŒLé;:Asº…d"Ré99ÀÉx•¡·7ÏHïvZ_÷¶ê1×g-¾ùí#ÜšÈñÏ?ÁÙïI©&ûùÂÝÛøÃ÷½«†ó…ß¾ãN®¹l÷Mð† k(–J(¥xj–o<<Æ?ýΊ ;Çõ0¤œÕ£ÓßXÍ¥/òù|5_¶˜¯oúîº.y)Ø´~í/ÌýÓZÓÝ¡£#ý*Ì"cc£¸®âÔ©I !dEkUKNÒÒ’bùòU_Ô`§Û¶gYÅùLPkM"‘¨ґ玓õN±rõ:´TD"‘*3 6`–^„…3}6fOìè'eœàGÏæ÷ß{ ®ëR,Ë]F„`:;€m§è¦;ÕL$žÀ«˜4øž­·?°·m^‹'M,ÓD鲉Àû†ù@gi(К;¶žàžgò¬_ÚÎ5ëã,ëª½Ž°¨E>Ÿ¯¸!EC•Þþ¢ÀÈz5-h†‡³D£eýÓýÙû¾ùÛû¤@ i¸J%Ó”EA¬³›ò3Z´d«±<),,3ª*JÕ:”2ëÍ@Ä Žþ$,3€‚AË}{A+·¼¹íËY¥ÓçB¼¿ècäÔýìßq›®ý"¯Û¾ƒ'ù?ô±W_ “ßÞ«6"!X¸°Ó4QJcÛÑèŒq?Yûé»ìY’ A?Tÿ·/`ñssUš|ÿÿÎ[Þw3Z)JƒP|öÚÝÚÆûþèp=]Óÿ2‰TA¤£µ‡ÆT;ý'ŽÓ?YÂŒ™lX²¸z\?¿ ‚ÏþØ|͵ôtvÏèX æ7ÞðÎJÈt&ô¼}^ßT.‹Éç Õ|¤?¯¹¾dÄ>ËFêÍ êíñümp{9„[.ç+•Jú}¿öÞÍ?~è‘(’ZyÒ“®*I×R“—¶÷*ûþý¨e™e»rÝF@0èUÒ…CõY 1#<­o ]&qUÞ—1Ö˜BbÌΫV#¸³÷Wn¾P)wQÀ¼Ûêð»¶ku -¡,S ˆŸ3Ï9Wͦ…EžüœMªçÍX,ÆyçÀ»ÿ¤|º¿ñöŠ%ÕC ëͲ¸-ºM~Ͼ:/Òho¾¾›cÏŽÑýÛk*u?ç,ÏΗ“a D¥?)¶”¯HƒòÿNömìŠÏj½#¯Z óD v6©g›®ëÖ¨C£Ñh5 èHð¦÷þ `0<2LKk‹onJ©TšqÁñ\¾õÈ.zŸø.ÿã?ŽaÄp×u‰ÅbÕëøÁü`¨™_½¢ºô>xMúðGÐJaY“C#¤ZËíÌüss!%¥‰QŽŸŒp°ï8—o\‡e¶wY·Éät‰¯þðïºfÍ© ƒ/Õ€\X>ÒÐz‹¼ 3Úªe}õóÆ­­€¤T*‰•«V\68rì¶öŒßTZ¥µ´¥+=Ï1°âB¹®ð¼’0dD—AÒ¨éä‚` D•eêà 5³ž3ß5-PhŒ<ªB=Ã2+s¾ÿ’Ð\¦©ïuù\•Ò‚ºœ¡e&sµäòp®¿ÏÕü)GNŸí„R,Ù·o}}GùÁ½dµÃïýÎÝ3Ê3ß>Jßá)þãŽaþÎ!þúóÇxìÙ Ždû}ýüÝç÷Ò÷Ì$cüùgžËsãÜxG°OcyB.‹ilÛ&Wa°4#èéêoóä>Xù¢Ÿ-ú—ý÷F"¶Ýö¶?ö©XŠb¡PÓ[²¶lÞúš¥üÉÇ?MÄŽU‹ÅªìÐu]:ÏÛÈ{.jÁS&w|¡gšM—J¥êyoù¯oc&ŸøÌˆ55 =¯jE§*@jéd„îy-\¼neõÞH)91êñÇúø7-¢1®(ŠÕk²m{Ö5û×äh0géUŽí¡†þ{‹ÅbM§¿¶³¼¿2Ã3 ƒöö¶ @Á£¦Z#•R†RŽáiG–TQ(íV¿n%²©³àFžÏBg€,sÆÈ@Ïz«åìh=¾øÇÒhßQ±‘@ ƒnCÕýùæaxå³ÌYpz7‘ºf§ L2*²±ç ¿ú¡[L3]^aá‰D¡ªÝJ<íÍÙ­¤ó/‡nR$ãQ"˜¬^“dé‚$Í­q’1Î_•`þâkW&蜥9e¢ÛS¬ž'ÓDZl.X™ ÝøÊ”J.‘ˆunÆ Uÿw[´h­ñœ1”HiÖ\G>w„‘=t/y#_=9Hß3|ôÂkf‰S^ Ãu=Ç#T è]×¥P,àÈÁiöìxˆóÖ_„ª„ ýIÚ™ú“z ‚¥&AÅk=0ûÛK¥‹Ö­¡s~7ÙR‘T<^ݯ²ÔZ# ƒ‰½½ì8°‡ïßû/Z[š`cæþý;Ø;)h‰Ø¨Ž‹0…®ñiõÏméºr]åµWl";¥ˆÅÌÐã¥Bd2Ás}“Hâ›dTp}[šÞ“ã´¦U . ‚ì<è[,k"õ÷Ò7S(‡Êšûéo÷ï·”’£G‡ˆFËû°ÌØÓÛŸzf´²o­µÐBà LO Û‹ÆPBÇ•”B˜²l“7CíjÍ ÊÀ(uMWQÉe ¤œ[1«„ž•Ë,“T=ÁD¹Ì¤Ü+³º­¦È2l>ËBÏF¾Û+?a,ÓÃ#E*ô ¢Pĉ‡‚¥‰–ˆ9U¶aã³û_Üzû·ÙõÌ“ŒÛÉÀ‘‡øáíßàñ‡î"7ÖËÖÇ~È3GihdÛSOÑÿ½¼ðô~ì¸Í‚&“ù‹“Ì[–¤§-Ê‚žÄ9Äz™$ì¿_,„y|ϟᔦþ[]ëð‰/3>´‹ÏMæùÀcOžè 'q«úgÿ¶mXR° %Ã’µÞúö÷’¯˜Í ‚…ø~§`i‰ÿw_ðXŸ…ù-µ,Ëb:›åk_ü>Ùc}LºNõý>˜˜¦‰ZÎ_ɪ•KùðÞNÑSÕºO?7©”¢cù:6¯ZÀÄ4xÙqîùáU0òó«þþ£‘·ßz7¹‰Á*HyžWSש&&0Œq†²áÒw’I7å¡_zt„h¬©&ôì×^ú÷CJY³ÍÏïÖ³È`+¯àý ÞËà¾ýûéy±˜I<ÇqýŽwÞü®b±¨+ݤ%ZH­•¡ñ¤«J¦RŽ(yy©´W™”˜;ÝV› !„®6š®ôžžA6=[4)|ÐT!TÌ0ÚšÖ˜Nz+êƒe‘j™‰®çÁAŠTh/ÀÆFžÓGV"™bêŒfØÅ›®bªw_ûþ“¤—­á¶§Nò£ßç®ïÿ˜Gž~Ž]o¥!ã¹È÷ÝÆü±av88sã§™¿ë?ðz÷Ý{V¬Q±Yk³Ó®Ö×óC=gÎ ½ÂËfQ(„…’ˆ€øiÚ“ÇPÿä²ýäÝSÅü«î‰Ä¬Ý¼ iĈfZi‰Z<ºõɪ™€Ïº|pŸÑù—ýÞŽþ¤ï {ü§ªõYÑLwE4‘à=z3Kc™V @ûlÍ”Oò•ï=Œ•ï¯n?,k8pèÓ#‡É´f¸áM·T)˜7ôU¦7Ýr=ÉD¤ n>ûçÜ6¿ å&H´Gé;5Ì“{U¯éƒ—´ÐÕTÛ:Ö;®ß´Ú¿&?ÿVù÷2ø^Ñá…B\.G±X¤±1†ÖÃ0D:^:15XÒ eŒ+pÏP®+•²¥Ò®ÐÊ+Ësô [ ²LjfæS]±B‰:ž­MU ÍÎñm-oS³š ½¿¹KØB7¾è&nše0àáÑL3ãŒÏb† EŠSLÍ**¡É¡–ygÄ2o¸îJôuWò›vùµûñâªßÄ”åÈ»îm¶„Eæšw•ßók¹òÅO I¶Dþ[‡îY¦W@)'°”rÒ:£{.„ X`ûÿ„K®ýr­Ýžr˜8u±¦7O¶×G•k9ýPéÌ—}Ïš%«þ'‘Xcݹ¹€¬t½¨‹¨¸y 3öbg{† [5ËäÃ÷“ç}€ç>õ¯ªçÃ6MöõMpJ9¸½¸âÚ×±nÃ* …ñx¼ pÁÜ›R~X»^áY,«`àçî‚ Ó9 !ØõÌúGò´žHpÁ¯®©ªGƒL À9įÜp3…BᔈؑjhÿØ‹¶ u+%ÇáɻٸnC„ªa}äd¢•µ¹&’Ýkªà[u,¶nÛÉ_ÿ"ñ$]-éj«°¬±„@"jTÀ>xV{lV®Ù?vP Üî³õ`ÝePXå/Vf7ìd³yl[J%»M!„–ÊC*­$ÚžëH0„«JÂFã)WX¦È&Jt é•Ä¥Y+ÒP ~fcêë„B:ƒÍhˆ|L~’T"ª@a)DQ§˜0¹ÌPŬ rs9üø#JtNsöíy>7r‚ýðý†›ÏøÚb–E,}5>4Š zz`.žÇž/` ‹t[K—–Ó9>›óU°õµ‚…B¡Z»©µ®ñ‚ ¨”²ºÍŸôWž·š•hLË­1L³Üf¸Z¤_ŽZ\°êBö L°°-ÆîgžfÃ…›ªB9:ML÷ñàÓûy÷Mo¥P,àÄ2Áó¾xÓ (O‰Ø5!Q°=Ïãº×_а,LÕσÛûyÝk. !.˜ÊM#l»ºÏ BØï³T¼‡MA³ ƒaØ ÿnPMF«ÇÍf‹Øv”RÉáÖ[oû¥ßþðå‘‚L5ÿOkÏØË9úlý4ì±>ªµF;Ó³7ü„nëgt”KŽÎdo^1K~Ç¿¡›=¿BŒcSc œØËŸu)v>ü%¢+Vͺp¯” Rî)¸ÜÝ{œÎWásMØD¦É߃½h=+×,frM&#ÙúèB®]¡µÉ`Åê4ãÇ'øîÖ~N™¤p(Çä´wå^PP* ìàù/ß"¸+šÓ,àÔî-³sŠÓ#ŒíºuÖ—EAÿýÅ®»þqÖ6UÌ2¹çöPî9ø÷r࡯ÏÊ_ºS§ØóÝO¾<W¤çœÄ-ƒ®¥ilÛåöÛï徯ÿ‘T;ùJ}a©Tªé"TÄú¿mÛ® }|gP!ê W‚!H;€[,ò¶phûƒrÓ5Ûf:¡2A4ÓÊù«×(jý0±RŠXS; £ô8ÆÎg·£ÆOUE=>°úïmëèäО]ÕóªžOÐ$@hôpë;rŒåJ3 a+ÂÞ¡Â,ElX]¥Z.‹äóùj}epø‹x<^ ¹†Qsƒ÷2¸ÉçKD£ Ã0û#¿·Xkå‹ÔJK¥=)¤+<¯d\\¯(=]Z+Dj'<…§*L3 ˜­Í¡˜ âËÛ„/ši’YuIZèp¼¢FPtFfª·q7qSA‘r%J³D> ……5Ë€] ªï .îœfÉuäF4W^ßF*irùò•8žbøHžE‹ÓØK›¸Æ”<ùàK74±v~ùò–®N±9$DxNóóJ°O‰4_‚5œ—u žÃ†=ËÛ3°10¥•ÀPùÙÛ„˜-:7~â!¥äЩ!z–5òŽ[®Çõ4†!)93áX?ìiF5Dè35›Ïƒ¹¹êtØî×s›E›Ñ«¯}=¹¼C4 šñßã8¦e‘in橽;xÍÊók"¾°F¹._ùÂrÒÎð±¼ñ©l(ë›:+­Y²rMÕY((Ê™ñ½•´tuqìÔQTtš¦äL^w^³‰ç¹Àì0kPõZßs3…‰D"5ŒÚ¿æ¹¼eë}oË`<¤4кÄþÑÿøè7¿qÛï‹ÿÇÞ{‡Éqg¾¿sªªsOOžÁ`0äD˜I‰™ ”µ"%Ë¢(Ù×a}½»¶¯£|ý¬íuÐã´»öZN×’ìõÚEÒ¢H‘#&0 ç<ƒ ÀäÔ¹»êœûGwõT÷ô 0É"Y|øÏ*©:ïy¿ïýÞO ´ÖÒ0¤PJ¦©¤£rFÀ0¥rl¥´ƒ’ £K_tõn&`yYfˆJ÷óôpˆy,²šežlKf¢$6b¨ó¨k`çö¼íY¡–ZF­ŠèA‚äÉWe‘òäV-—ŠÓµ86b¦ÿl_>ÀêeOî’,]êÇgÙLõÚŒ'3Üþ‰ÎðC°|w7G+”š:) ªýÞµB y˜úÃS:‹…Ò¾W ×J±dq;a&>›$oùÙ÷âz65ÓÔP_28ˆF µÞ.“ôª8½¶yÞIݪj~¨.À¹úø_~“#5|áÆÕ„»{Êrz^€>vx7MáVì|<õš.(I)ùò/ý ©tšl6C4*+'qY³ÛJëØá£44.¥©ÅWzwÝk»×ì?GWWãc%†jYñÉ4I#Hg“¿L-ë ›ºÑ÷¼.‹¬@oÏjÞ²®¡Bµ±nn®!Ï’ÍfˆÕÆ–™ËåT‘õIPÒÑŽ!µ#mÇ’†ÎGå…-sB*©MÃ7 H¨+>¢¢’µ¨š- €,wᬊÝLÊçA1—YÄ—ÊoTb „ãÔR¹K¡«JÅœâžÏÔF¡«É¥¾ìñ›Óœ÷À6öeí3 Ž fU–¹zUBX+»ÉÛÓ(ðÞU¶F`A~m¡‘´Q*ûp2{϶Žíä¿?÷»¾ø¥yáÓ]çûèÏ7ÞôÔn¾ß7ÄŸ„«ƒ¬óC±§g&˜˜¥ó€qÌÕ IDAT·odç@~NÚþÝ׳ìY4> g2×þÌ!ÚíC†Zu,mMzâ ãù:5rí« ›&ý#S,YÔPæ{šËåÊLÒ½¯µ×|ÀÝ\õ§ßï/xrwýÂýÜáQ½zë¡ ª‘R²jí6Î8Â?¼þÿñs÷•@ß[Ö¡•ÍžWwsÕ¶NÆfB476”JFòù|Y¾qÕÚU¤R)Òét©©s0,…gµÖ,^ÒŽéó309KK[Gé—´Ö’ÎåH§Óeé œ]…B¥óz7Wdä2î…¼g½.IÞ‡;–BÈ¢·n­U°¾¡ÞwþÜùŒ@K!•TJhÇPÚ‘Ž“5´À6[³ d­H.I*Ÿó•M*§’E Â;R]TøgzA@Ì…xeÁÌ@k« ˜-Ô`–«*´À–¦2¸äå¼+ªÆ$ë¨Ã‡¯*Ë ZÐÌà",sÞµ|>ƒl6Å©“G8ÛßÇë`ZY¦s0<4ÁýI„øýš¤->›eæü,gÒŒô'Ø÷ü('N sbß4Ó‰ü‡NïÒ6Íq$‘ÀѪê*å7Ÿý6ûÏ-ûÙîLŽ]“Õ,#BÐñ·_aû×= .Á¾œÍÿûú³üúC7Oeã?|3š²w>òwüÙ÷¾9ᆭ’SüÆö‡Ku½Þc¾üä?òðKß/ýìàÙóeVtÞî*BšlÞ¶+²„Ö¦Ú’ §”b*Ö6ºž¬CCûƒe¶}î3øü~¾ñÀC¬[±Œ¾þAò¹,©Tº”Åœ¥÷]÷ûýB¡P‰MºçuÇÒ —ê>«]×3Ö^·"÷yݱ,,0$Á`aòø»·åóy×Ù\h…PZIiØR)[Z¦v>+•ÅRD](•¼_ËãTe >?—IU37WyQ3íýÆíâIÅ|½…§›É%¦+b˜ ªÊ]3ƒêƒt‘2“*ìÚTE£Q”rMåxüÉ1âI8|<BóÜsìÛ5Áä¤Mz:ÇñWÆéH3œÈ"|!†§“ ŸÏ8«½KÛ›ñŒâ“rðüÖù)žžÇI¦y`àfÅ1IÛá–½'KÍ’óø…šBðx*Çó#£˜†QöVÚÀý{0Ÿ*‹½û¤àŸâŽÌ&1*B¿Î&¸çµ7yæÔþy¾}`ŒGúN1™ž- éW}øF¥ôöÒtƒ\t Å¥”˜†Ÿµ»µë—â3e™a‚Þu‡¶Å]¬jñ®“eáK¯@ɶmBѽSiž}eñìœ×ÕÇ›®ö58z®ÞÔW¬¯ô k~ês÷062Hr|‚çw<ÆáþÙ"ø:Æ\Û³PÑ×[â=¯;–^û;@+ÇÒ}žy†ôžqvÏs!äk¯»æ§gâ3ŽÖˆ2LD¡‹‰c8*ohòÒQ¶ÐNérd…¨2±Ïÿ–ªZæi×2=—Ë\H¤."*Ëëk‹ÐÕD®îù.;n´+…µ`_LX°Í×E@³ìÆ’˜‹+VðÑÏ~~ÿg î-ë ¹yn½ÅÛç2L«[·¹ðÇòÅ5¢Ú;jÓ…XÉÉógf0$8ª˜œ× f|‡u×_áÄÑFŒ‰‰i¾ñì+||Ý*6lZ‡cÏuôpÎk8îõŠõ†`]Vê–mT–Œ¸aT7zúäãc;‰Ô,aË–•% q‹õKŒ8Ò@«u¥–—ÎïóùJj^÷ÚKëýD×® bh„i•@ÜnBÊÂÔ‘оñ6,Ë(ó–u‡ãGŽñ×ÿü-~æþû0,ëWm¥¹µ¥Á`€é¤C­ß, ÃzËo*ó•ÞZK/3õ6‹v‰HåXºâ+¯è  0>>‹i*|>+ú±»îjxó]3h-@K­1”VRhÛ°mSZfF:Ž-•-´ü’zÞÜ_ÝÌÀ]þšB¡KfÎ\.³œeÎÇUlëU µP…\fi¥[¬7•å.s§7.÷¥?ÂÖ²–jw(‘dÈ,ØÓUÓ&(˜mçÉ @88R£e0J)Ck]èV‚–¦i™lFýîïþî/½ºc”ñD‚?üý>Æ'³<÷O§øÇÝYZ[-Æúg8òò0ñq~ñ·N3–š¢®&L}½ï‡>Q|º•è\£¾‹}ç:9?)¸nE-ë"µ\»¸DZ©íXÁïµÒ¹Ø Ãp¸µku~_ójÞXŽÏʲ¶ÖâʆfÖÔÖ }µ´¯¹Š¿ù¾ÉW·²ÜPÜܾœ†šMËyõt3 –âªúF®ìX‚jälº›ì1¹vs-ëBn]º •OlêæõÓm„¢šeaÁ Íí,ŽÅõ+Ø?³–͖ٔÎ(«B!®mï&oÛ´®ÚÂ_=`ËQ– ÅGÛºè¨oDÖ.Á‘‹él«aE­Å–X×w.Fùê¨[r%fhׄ蒂[ºV#í Ö5(«“ö–+j ®k^Ä5=ëß·ïCµn%Kqf8ID*|c/gŽõÑ…Oßr3õu5$R‚Å~˜ÞFÈ•Vr^e©·¶ÐJ¯PÈõ–õz±J)©ºW¬¥­­Û)Wézömê›Û1‹àíͺ^¬–eñØwŸ!ïØuìVu¯*…c½}%¥”ü±ö•€frz)çT®BbVŽOÿ‡{i¬ÑP#XS?§nÕ1ÁtTU‹;o>ÒÛ,Ú»ß[GZ9–î~½Uܱ,cJeý8Ž£†^|íµ7Æ…E–J ”Æ´¥4””ÂÚ§-TÒ0AJqÁ#óB6F¹Â¶@÷ÊZ€UÍe[€Uë>RØn]¦x…×Ün~töò·j>³Á0à æ&g)„†F£I’” %rä Ǩ¯¯—y;o9Žc*¥,¥•é÷ûÍé™iGkÝçù­ó'_â×ÿËâË`Æ” 4„ï™(Oy¿oÓ#g‰6Î ÜNŽcsüì3ã}\³íº²+*’ ‡bi'tBƼ/Q†ôa (ý  ËÔ.¥œc™îôœÎµ*¤é9E{5"§(*fM8=×ÒŽ¬|vã­~kXƒ¨Àt&B„$Éy7çv,É‘+c˜- ,Ä0e&›Ñn?ÌD"ÁÐùó¬Yáðú#qz6xàÙ ìcøDše+Âüõ?ô±ë@œã)^|s Ÿ„WöÅñ‹304ÎÄy›É,4ÕùÞ“9ëÁ0µÆç°gû›`ï“»Y{ua¥Ïe<Êöï=i ;“¥¾¹Ð<÷ߟÆÉ+þþ}›HW”Ž–´Ø™1þð÷¾J³)yõèiÖ¬ì)½IOý×Ç:Ÿàù¯°¸¶…ºÎ‚oSj×YÎ †ž;À¬o_G;Áâd¶çÁ}4E“ìn”šÚžFþçÿW^š¦Æé'ó4ÔÞ¸? S£<þðƒìؾƒ€ndlt7‹:–š¿ô V¦÷s"ÓÌøPíí‹Øùí}œÛ}’„u–¾×oXF]Äëëøú_üÒ¹–t­Å²Œ÷õûPaÖG!™ÊÑÙìcºo˜þý¤r+×´bj‹Å+W`²¬“ˆ Ý…XeÇ7¼èeL^?T7Lëí 6ënÛFm]Séß»àæ².Û¶ ƒ¼²}]ËÚËY§ÓéRØòô±c„ü>†R6ÂN „H§Ó%vl;'âЙ=,íÙÄÕ[V³áÊ›X¾¤ Ó#"rï¹­µ+ÄòG æ|dQI³Ï,¶Qlìl–±H×o×˺½çö.X+ÕÅÞýÕ¸&ªQ òy‡\.KCC}Ï}õ÷ÿ>¬± ¡-¤á MÇ4¤RÊ瘆_ - ÊTih©…¸ôùWV¢(’Ï·Å2ñ²LYv··ØÛg˜EÕlÕã³d™a¦*¢ÛØœáÌ<†©PF]}ÝB ÓÖZŸu_†¾¾>bµ1v?–aócüàñ›º5O?â7~})ÿÛ0†)XÚ¥5˜bÏüK$â,½ºž±ÓqÂ-µ\µé½Ée~PæØ¹^ÌP­#Ž&Ö-û8Ïž>C bÑÜÒ ÅŸOŸ›%– N̰dq Vñãµ3“˜þ0ÇúGYÒØ@0*kj(/h0•޳¨¾#PX©öž9KÀobÚ!j[Cþ¢xÌÈø,©ä$õÁ&"!2\è8•Ór³Ä³Ÿ˜dÙÊîâª=Éèù4‚SCq–^ÑC0P ÎN3i›ÈP Q[W_˜ÌÆ$d¦F‰6ÕQ«+Ýó™S§ik®'žÓäíŸã‰ï<À§¾ôSsWˆã86“'ѸfSÉ2®2Tš:Ãîc)j;c,míÀb.lüsw€ÎuMô6f¸¦>Æ—b´øŠ÷õ½Ó§YÛÞAOÀ_ ¥Vg%@z¶’eVK€ó秈D ÷û›¿ñÛ÷?øÀÃŽ´µcæLSf¥e|f,í·üYƒ&ÛoEiù°Ì€ºp¶™ß¥°LÓA,AÚ|²&µ¨Ê2uÑPO *0Ùt÷ áéƒò–—¹G8ÂÖ#ob^¾2Mzu‚d’I4ºŒa^ ‡)‹9Ì_vÃù|Ë4±DH8Âæ5“iWo‰1îH&×ßPOk›Hs˜ž Qº»#¬ÜXOKC¥=1:ùß³ìaÚ¹4‡GfNž$–O0É ÇúgYÜÚÀ‰Ã¯°ï]Vâ3LŽž8Á¢–Ò³ç9:i3|¶—°ÏFç¦yãø(]‹êxü™íœëMrÅÚv­øÞSϰvåJΞ9„­§ÏÒÐÞÈÑ=/`4,' ³¼tx_6K[GˆÙ©žxé ëV,åüÀ1úûF Õ7cùl^ݵ›žî.”ÊñÌÎ#Ìžì#RïcQG»ž¢cQ;_z‰TÚ¦³k1¨ÉÎWŸgùòÕÌNGÓ·ó­KšHÇG81‹ê‚<øüNB*Okk fmˆ¿ýׯgôü)F&“ÌLÍ‹…èï;BSûRÞϳÃLgr\¿ÖÏîSºZÃìzì˜E$–lº’†EËI%f¨ S¯ Ç›_óªe½Eù^vZ9ñ»û…´.ªEç-V^½‰,û» ¬½¾¶“çûŸ‰ÓÒÔXî|Ô?2ÂKÏîdâ\/qÙ@¸u)‹›c¥{ …Bs¥(B"kÈer˜¦QÊsºyIᯥkI+v|–gžy†È¢ÅÔG ‹îÖµ>Ò]Ã'„Ÿè„dœ$Çs9¾=2ÁëÓ3¬jme£ß*ŠÎ˜W~ãŽGe^·r,+s™îx¸c™Íæ ‡äóy‰„‡¿õ¯ß9lšBH­4Z ”Ö†mÓ1MK)ÇÔ¦á×R[£Àøª1¿êÂÒR ôü\æEX¦[fbhYð“]¨)ˆò"b$Rk­J¡YùN|•jVÀAcù6.kñxœ\.ÇKß;ÇÌpöô$G^a “çÿüC/=3L*3§ÖFõë}XUòÎmSS“4Óœ›šæø©côO("9°ùÎS¯’š:e'9rr€©¡ O¡1˜f4«Ø³ï“YI}Ö!œa,e’š>ù3G8u¦Ÿ˜Uˆ<ÿÔã1ÃHÚáøéA‚±:¦{™M¦énô13~žÞ¾³œ£+Z8æ™'ÅN ¡ ÉîýGh ú±ää9–ÔYôÎÄ9yè }çf¨©mDÙy¶=J1=;ÁñÞ^œTá˜Co<á†â öî=ˆ>œÑqì|ލO035Êäì‡Nœ¥»£ÀVwî?EÈc4ïgßÞýè4ŒÍæ?p’C§gØwº`*°õSwpëmÛX½¡?³üàßãà+¯ðæ´EñŠWõêæ4½ŠV7Ïæ ãz>»Ç»~«ÞfѶD«4ÓC¼ðØ3X–U¦õæðº–u³ÿé'J`“L&I§Ó%†6vt/W\·•Û?}k—6rÓæeRÙˆ÷žs¹ö¼AÿÐP™èÆëk’Cûpl>÷Ù{I%’%AOh$Ç~³Û¿sŠ?å5-¨…ùJW;¿º¤ƒkCAsãá–…T6‹vÕšI_l,¥”44D±,€X·~íÇfcY­ e%–©¥ÒÚ0MeØNÞÐZ ÛÉ­‹ ]ì¸%TUÏñê¾ã¥Ð»Û3s®úDÏu3©VKâvZ,|-Ϲð¨d…Ç‹ïmaÆ=Üã:‰* ÊSóÊLúé'GŽYf/;${‘DÚ¿KÏ»÷Hva®¾Ðž·ã¸s9çz+Ç\îõßé{~¿†d3™ “ãØ üþ)ö?ûþ•l둬Ûz N^aržÔkX^Zôª8+srî~+÷Ýu”†•í„£QrÙ,þbŸRÛ¶K€¢µ&›Ë165ƒŒrðõ׸ñÆkJçuYšeYœ9ÕK}}žCw®ëš3P÷´ HŽŸ%ܸ„\6‹¬h]šÌ… Îàó™ŒÏ$hª‹!…`2Ÿg¯ãpK1› …Ä(މ·Ü¤R%[-ÔZ†uŸ¿Z{0ïXj­I§m´.82…Ãáš:,!„BÚZ‘·Ì@Ê|‘ŒÐ‘lÀªw|fH2 ­@@i´0´¬*-ü©æµ+ôÄôxÓ–¢µÅ#ªXæ¹ç4ô|Ë<—Ñ– €Jû B»ÝLÞVTèG€ê ×å'AbÞ`Ì0ƒD’&=/$«•6”V †dgff8zô(SSSìøþvVñ晣g¦øß ²¬ÁÄŽšÿ~&£÷HV\öž· s¡s½•cø!ßóû5$›L¦‘Bñs´‡†–F–.ŠÐÔÝú•‹hiëäÌÀÍõQö LÓ^.Mþ®ÊÓNu'uWtã†+ûhzY¢ËN]!Q.—£añ"œáÐÀI:—Ì…É]§Çq87Ð˾ó_ÿÿ~‡îe=\}ÕUR çÕ‹ÖÄjðùëXÖ+ËúyB—­£ Œ¤Ó¼ò½GY¼a}Að©5©TªìÇ'R4Óœ8i#Cšˆ¿Cø|<øí#ü·GÎ3Ûeó͉®ªáwì²¼ª×fе¸óöàôŽ¥;Î^17ôœN§Ë~î²ÐÁÁ Âa \}õµ“>òýSsï¶©(i˜ŽÀ§ü~áP¦ÐR˜ÒÔÂm•M:æJMÊs™B^Y]v¨«áYÀ2¯šhAå‘ЕùÎ|µ÷pÏ<Àô‚ceg’~úÑh&™”NômÛ²{A†™Íf™œœ$ðsêPŽÀ¢³ãÖú9vh–ƈ]ay§áUý{ÌD?(¢Ÿ·· 1ÌÙÙñø4É´MCm!-v=ý(»ÇÂÜÒcsý§îg"ž¤!Ä&xò”ÞŽ^‘ŠwËf³eŽ=•õ‡.{rKCÜÄUß±1š:B`˜e}]pÕLŸ…߲ȤÓ*|Z]ïYÓ4ìEƒœãú+Ö—…wçÌ4Oï;ÂM+–â ‘B–Îée³RyM]$Èèp? Mí¥ç~c:A}À AšÔYf±”°º §”­`ån˜¸Ú~¯)|åXz…U…‹ÉììŒy~óÆ«?« ”VFÞä¤ ¥M#’ ùbí„òAmamHKK_A\c*c^~ñÂ,³`Ì>¯Ìä",M©_æÅY¦{¼WômEМG*ll&˜(Ë[º€9Í´Ì“¿dÀ<¾g’1%¸þÊBÁÁãS¬[DT4‘­ËÛË$3“Çö "A“Þ¾Y:×`Êw7¤û£˜‰Dâ-3"Seð÷>BRZ Ê‚9¾08ú‚â+géV”êŸëísYb‡çz¾óò[ËÚ¶fÅíÌÈ·öì–€ÐðqŒ•e ¤e mOªB ªX'SòÓë¶¼o3›ÍÒ×7„­ ~åoGùçß^F>£.EøøB~^óŒŸNb.^Ìgo»|¾|Ò¯œ¸½àV>ôªC½“¾kêîz¼*­ŠVks"!·fÑk–ðÚÞÝ\uÅ&GUuʤÒX–@~„ØN¡A„ P.Ë4M“ÔÄY^;ïGçf¸eóÊâ¸eJ5¨RJžzí9ÆÕ÷ÜF*—¥©¶!ÓÚ‘ ný,‡¥ß^ºËãU©xõèBŠXï˜.4–ÞæÜsàêɤPJÙµµµW57tÄBIð•CÎgùÓZE2¡@,£l.h±}fTÒÒÂÅšd,ý¸b¶”ËtñOº>.hV› ]MlTʺbÛb]¦»ïk©°P.ÓÀ J”$É·}ጠ¶âÉGÏðÔyZƒ9¾>½²žôô¶/B°Crè”ÃW>ữ؜šaƒÏdFj§|\5™Á÷‰:v>1C{$OËÚ(£}YœÙ ÿׯ¬{gTPï³-N_4ì©0H ªYü§Y— ÌæÐ)ˆJô´à´«ü4øc³Y¦s‚Õa¤*Z×µ6à8oRMŸ&Š=í´ZÀœU瘶7ñðKé·6éç4·ÝÔÀ9)ôéEð¯ö¥ ¨;×ÏÃgŽÏa£e2ñêj×¶C {z’ì‘~ükº‘?FhΙjiMÝ,`VO &õ± ÿðkضC´.ÈãßÞCcðÍ[odUK­×m!›#ÏûËBƒ•u—•Ž@^0õÚ½y=Q]_ÔÒ¤¯)+Sq}V½¦îuW,î “‡ Ï,÷ÚScç©YÒMnà8C“3¬^· Ç™«'uÅ6£Ã'GÓ8½›Öõ›K,Øíbâ>ïM+ë\ýc 5G̰¨±PÂT 2½m”--]|Þ(v~ª`ÝÞ\cµ|¤×aÈ ·ºã鎱 ôÞ±t÷»ãšHdðù$RJó¿ú§×üùŸýÅ‘B#çBË/¥”!„m8Ê––i ÛÉ) 93K¡¥F¡ éZæé2[ÕBÏL­rË{#µ¦˜ó3øÇﲤ»™»·ù¹ý¾MDÃ!—Êâó¤23ôë§aY€PÈ7×Ô¹¨tõ d¼¹J¯[M¥…d½€¤”"à÷q~<‰NÎRÓÑBÀÓ¨ÚVWLÔ×ÛO×ò03„òˆ~ÜsÇZºÙóÔ£\ÇÝDšSÌ&lêb…è’Ë•R4·® •ʲbÛ•¼¾};ùÛho­/S³¨`ÙÙóì„Õ-šÁñ ÚêëÅýf3ÿo'ðß±„FŸA{0PÉj,²¬Avq«õu ^£w<Ü1õº,Åã)ZZjÈf³Ü~çm·ÿùŸýÅ@*­¥¦PÚ‘¦´¥ãä€eJ娮oV!©BŠ¢ï«®båaÓ¹\f©Ì¤¼g¦é~B…ö_ó'4pP%P%ËoKÎâÉ "Ùw 0‹Lª²L…¢¦™®z¬D.Ø4Ú»54H&“DÄ8ÂO¾*i²ÉÃ1üv[xJù IDATš)­Y‘ ²w$I°F’Ô’;okdË­4¶Úß´#¸n 7ö!T^ö6~ø ;ŸaÛo­ãØóÏÑTo²èc÷SÎFc0L:’¤¶±†%MALCòã[[@Úil¥1lû¡qÁÉ“l»¥7žîcõ-œ#d£'§hýìXÆذ4™è}…ºöU ¾ö+îþ úÞxœšXZ©í¼âÒÂì/ö¾¢Žä‘1,£ŸDëÕ4uÆ.ׄ»»æò#9ci+u]-Źž—Ozÿ¦Æç3qÅîjDz lG“˜žåÀÓ;8‚+ïù$yÛdùºµX–U"×Ý«ÒôöÁt…5.ûq…F••Ý0ky2CèpŽV9W)‹wC¯J)V¯]eBV †,3`WJa‡koÿ'Ÿ~“žÛ6ñýý?ñ“?‹Áœ¯mE™Þ#Œ=dž+¶ÒÐZWRæº UH‡L3”©gÛ* ¥üÅP°”’1ÿ,Ë>ÕÍZŸC)Gašåöx^oÙÊsWSÄV.FÜR˜j‹wA±hQ ŽSX´··]3:qîOšÚ|´ÒR+mÓ‘ŽÊŽŠITV:*§¤ô ¡m-1 =B„×Ûµò«—貊‹¢zfzÊL´÷x±`¦­$(ª°ç+c™ºÒÞâïr« dxË´° ”ûm=Ý_|0ä¾»k˜qxà™8_¸»G'ÒêC¤òÜqW3O>6B0úa#ßwck½fŸ»ºb[ú¹{ÐJ‘·…“‘ZóÒQ&Óù¸ vxŒßÞ9Â/ÜÞÂ?¿4ÎÍKji\å…C î½±• -á¯}í¶HÀç~q†!¸bKÁª ±ø0ÐheÓ¼â6ºoù§ŽÓ±î“%æKMc×ÿ‡m  ³»ÐD…qQz•~ý º½™¯!|Q¬`ÙÖƒ™K¢Œ(†gfÿI:~êÇß·½Zý~“©©õõQžØ9Á5›hØrÛ-ø|plûÓ¬¾f#‚VcK)·ç–nÈ*¡G·÷ceTÄØÝ0kåbÄ-EéÙ²Œsú³ßçÇ¿òßÊò~^3„½ý“8‡hj_ÅŠ•¥0«ã8¥:Ñsç†iº®‡L&Ïg??F€v±EÐÓ³†µk®`vì<Ï~ÿInýÄÇJ€”Ïòî±X Ó*Iz|§¦ƒ]»^ææëo!ŸÏ³2b`×(ÇÛ[8ÆyîYÚUï3º ¹üòÜXVzòº%@¥”e`émµæmDmÛ9LÓÂ0Œ&Py­µ…@H©„RB*åZ奣2°UNø¥a˜V!Mi‚#¦6f~?-‚»«–-€C©4¤Ðdºú·©„Fj¸–,ŠR43(4ã|ÇÑē˜·N¨£nA–y©¦‚Þ˜üÎ'§¸ú®6~î¾÷ÝW˜d×P À—²ãÃ&ÑïÀæÖs-DueJa›²ß•‚ÌH‹-]³9ED"̺µ]D}’]A|JŒ¬­ ‘× Èæ**®Î/6”îß)„Q殟ñ¦ÎÂïAl%Ó ]ö–r·9ERÁìB”ÞRf=ïpò€?Ÿc2SÈ¡¦l?¸ë&ÈçQ–#Mò „a :¬ÎÅL¤R…[óùß—ï“Qz\»¡žš Æ_åÍ_a\ ÑÏpÓµ[Pfø­Ò÷¨öyó†^VîUÑz{kV†%ÝШ &v6ÃäñÃ|꾂]43/¼¿,l¹¾ÙGtåíØ™ÙÒ5¼Â£|>O[[3#c z~ÛVšøDˆU7–™¸çžÓ$_TLJÀv,Ã(=I¾Öˆy µT¶ &'Ñ|>‹wãød=¿ñÙB×[:t,êDkÉt2I]$Tè^S#WåY™tk1½5‘• >ïû»Ò¶¿o[ø‰޲é†ÕeŒÊÛòågãô„Í}Ÿû4T9·£~óÛÜp÷uÄê:°Šöw•ùSÇÎa˜>Æãqv>ÿ&“é8_úñO•1[oôÙíOÐÙÕCÌÐбÇqŸLñ­ç'¹îÚ/سüfÏÒÒ·ç]HxÏå²\@+»œ¸ _÷~ݬ×Ï[[ 09' J%I&“§6m¸êg ×09 yÓ ¤ál$Ii»ÁúëlCúµ)}ZJ³ä ëÖJ^º™hm2ÏÌÀt§]ÌeŠªlraÅl uçë»õÁە͑œd»ª¦ëô³`Úªè»P|ßUÚA‹Nö?ì|Ðû©ó_åo˜ZœäÆžˆeË©³|ÿõÓt·7qnÏ.îüì-ì=cr×GW_ð<é©^þû?=É'¶¬"Öà£/ÙÂG¶.¿Œ;±ù?³ŒÝËÕׯçè@Š{ï¾å’Ž<øòKô\"1Îß=¶Íë—cï'²üFÖ/©½èñO<ôG´¬ýÙóG™:ŸàìØ«ºš¹ñ“ŸÁ4ä‚ɊǾó§„Z>Bÿ™Ýüäý?ÅÿíÜòã·reCÿòõoa¦ó´mlç†nù‘O.˜®åvïp–št/i$•ÏÓûú 'lº7,fͪÂÁp©à¾ÒÖË"½¾7Ÿèþ›J@ðŠ¼ òõú&‘õW°vó¦’ºeYe¹E¥ ËCf2qbÁšyÀ,„$—'PÓ€ãÀ¿=ñ=¶]s+õáyž·Ïn‘îŽvZ–E8gE÷Ò`¹ŒO;}Ãc´·µ’OÎb£ø‹!•DFó¿zYÕ^ËÍ¡!­ªöõôhµñò‚¥—az÷» “JÆ^ø¹$ÏbÛi¤”ÙÕ+6Þå8Ž–B*! [kò–éˠÙ ¿.cŠ`Îo6æ-#¤¤ôiCÃÆ¢Õ —™èyz—:º¹Ì9Û<£”©nfPÄÅ ]KSÄ ïJ‚ï^îåAÔ• Ba¨ZÀ'ðâÛ¿üå16o©gç© Ë¯¬£n8ñÞ4þ‹‰ñ$ÝW4ÐÖ$x4ÎkÉ9añÅ»[>Œ©¾ƒÛXs_s„L*J½°yõÀnÖ/mcïÑ^ìä$gNŸ ¥ñ⥎ˆÑV×È”3Åx¿MËÒ¥—y'YZ:-NŸ”˜~¨iëºt¨Õiœe¹o„_ŠÝûb$ú¸{õVàâ€Y_·š eà8³èæÂ*Ebä‚Ï\à(A$ºšX´£ÍÏ7^ÞKÄÊsü…lþÌç¹qóMHà¹]Ï¿/óB›”’‰‰k»øÊß ñ¥OÕ±¡ÅdÓMë¸>VC.“Ãvt)TèefBˆ2óWܲݛ7ÜYÆR‡+ïÿötœT.OúJ9>oè1pêØazgÆ™9:Íg¾twYèÒçóª­IþéD/­ˆpï'?í¨uUªJ)nýè8ŽÃLƦ&f•Õ“º,SJIßÇ¡ƒ‡hnsú™¯sÓ§¹Y~¹«•@Ð9£ ü¼à\9ó æ z´Ö¥¦Wüä_>ÖšH$B6›õw/ë Š{¹×}ày×8ÎqâÄ«2LÛ¶­¼“¯Ê0ûÇ9>8Éà”fs›Æ2ùîÉYº¯¬'4•BvÇ+‡—0Æça/½ržŸþÌ’C²ïx>Ó-õ˜sCq‹²½!Ò 1ûR!·(„dµ¾\e¨F©¹Ö±γ–_¸ê-ÄPÝ»õZ¬]JÄBk]º®;B^¼DkUzVU Ó´æ±L7¯Éºc;HS"…äø¹ V¶5ÌÅ3²ÙÛB°ëÍ7Éí'xÅ lêi.äœ+üùoÿ.?ó[¿EMÐG6—Å4Ëó«î½es9L)àÀ«op÷O|®,tëÞ㉣û©ø80–ç–-KÏ”ÉçÙ}|ŒçöÚ´/6±—ÂZ¶¤lѰÐxy{V.X]å±Ë0+.SvžËåÑZJŵeY¢¹¡ó¦h4"‹aÙ<`[f …eÃ`Z; ¹ ¿Þ±Œ’¢Ðú ·1´mXŸQÅÌ@̹¹J«¨C,†fÝÆÐ†»È~{Æìæ» –ž(qù¼¥sA,ˇiY\Q“åñƒ63o*®^¦xù8Ó¾47.æÄëc\qg3[—G?Œ¥¾#›¢£¾×&7™³Œe:8vpf¤žóýƒX$î#ê_Ñ3 «Ó¯}‡Ö$äãÐá>®ßºú²î掻¶òµ?ÝCÞvøÂ%‚%€ßÔ˜f¥Ï­ ö8Œœ=ÍÇ?µì’˜í™É˜šÚ¨ŸS§úÉÕôpJžæš aœ̪¡×Ýx:ÃìD’±ñc|Xh@wĘÚãñœà‘‡ç#7]ÁÖ_ÿ"±&²Ù<©l–|™Í7m"¡gX³z-‹~¬¿o+O>ô8wÝóñ²IÛ •ŠXoø˜—›Ëf³eaHÓ2Ùûƒã Îìäæ»¯d¡ç†#½Ç¯\¿kí*¡h™•œ nÙl–_ùƒßÆIv½ü*N÷Z>¾¢½Ì4^ÁÀÄKjÃÛó·~ü.ò¶]Zä»9E­5m‹W ù¸¦Å. ‰F-‹?É)>uk„-ªÃrÔ<˾…ÆË †n /÷9«¹ûxEBÞý…Ÿ FF⃭5·ß~KýίOØ™Ú1…ÒŽ!´mØŽ)-##µrÔ<|1tãW%Ã,µÝBÎ á”…¥½ªY­R:UÍ \Ål¥™Áœ¼D õÞ|™•¹ÌcC¡aDæÉWe˜J)ËÑÎ<†Ym%O:Dé¤M(d’°!bÁì¬M´Æü¡O?ï†y9¡Âw»}Ö[s½ÍxgẼP»€cn…ñºqÁŦaÌÆ34µ4±ý¯•ÀúÍÜvëQX„B>iò„0Lƒ]oî`â|Ž›o^M0ÜÖª”¬¦ˆõ†×+ Ø]ppÁ[6¡”Bdøäiš—w!1Êò}s9>ÉÁƒ{Xµ,„ZQVûXrÉÑ)^;çÊöÒð•ìû !é\ p²É8y3DÄoxR”å1…h•Ç6¯¾v„úŽFV-ž¥i^<0Kÿ 4_ŸhkŢ̰@½Â¨Jƒõʱ¬TÓzsÆî3 !˜MH&“ú…í;þü ŸÿÉï‡BA¤Ž£ Û2dLù}ÑlÐÊÝ`}uŽ!ª$üq?´ÔH-æYæ¹ì¯º‚Þ,…fK,Ó(Í.ÔÍäb¡Ùw½ªßc™'æ?–‰}YçK¥RœÜ‰ßˈ\ðò¶¾r™Õãÿò,‹{šˆÍ$ñEÂ%Ðð†óÉiZ[;ð…š€¹âÀ £+B)Æg3ˆô9N§,®]ÑY'7ßèGñ§O «{5.)v¾rÒOrä ë7­'jA}¤”üå#œØ\só"šµTŠl…COeÉHe¨ÖË9ÆX>–NE}V%c÷þ„bãÆ ·'ÒSƒK - C£´’>Ë6'ohé8)¡tSˆÈ•Ô²Š’ežÔóÍ \öWi™WTûT1'ªZfr±Ñ»^äõ`ñ¿jK·Ìär6Ó4X´h tÜÙHçÚZÖ¶ùq”äð+–„éZ£¥3†}èZðsL²/¾Æðñ“üÅï}‡’Úpˆ1{š™ta¿eÕ‰_ü÷¬gYc•+éÞ°˜ÎúØ‚îÕ·(G^?„IÒÔ±–¾}§.ùHÃv˜V`Xôð4#ÓèÔlEº…Çàÿöì=5@ÂÀP:ü"ú¿ÄQê‚!È•k¯gj<b†Ù¬Íà©ãPSƒ$^:À两Οø€„dÁç3±m›¥«–ò퓟#¶r:¸Œ­ÛnâêŸø<+–,¢µ«›‡Ÿ¡7›&‘Œ\¥Š&®êÕ-/qÒUµºâ×`ÀG×íÆ=Þe›Zk>úéëèÙ¸G¥}¢ÈÖ´.¨w­p-㣠ždx:….‚[/êªGwLà›>NÜlàÚe‚¯¥ŸÖš%K×JÙħÆK!`¯'n.—CÄ–qäå=œ97ÈŽÓÙ;üÊGóG—Ð~"Í®íÆßï/ mÛe•u¬¹\®¬Ï¥×"Ï}&w¬Üÿ];Ö†aø!›ÍÒØÔ¸áæ›n«óZ…ÖJ(¥ …-mÇ–~Ÿ#•ŽÊ G奘sL/Rì0ڲҪΠ›²W ^³B‹’<Ö‹@s–yÕΦÝÚË‹\é½`šÂ’g\:8"Aâ’B²ÏLçÊ>i@µ>–¥HÃT³e@æÜ^ŽÏÿT‹×«¼Ö{úUº–yÇ8&\À´±E†Œ‘#W0þ€953ek­Ï>þÈYüÒá|ÚÈ+ƃ6æx”ÏÝ©xôÁÝ5Šî+‚ô Øø±Z^y~” çºîVcˆøûaþójð5Ô{=fß?9Ìw7Çøîr8½Eà|/À샘ñx†–E-zæk|íh#ÿû7¾ÈðD†EA´†`(ˆ^Ûù楌9Õ·^KÄÔó¯•ùµ…ö»î=î„/„ ›Í–—ÙLÃçÔ¶£ÊÌ(\†iš&©T’ÙÙ${wá#·n%ª)¯÷Üçöý€óþM¬ë bX¡RîÕvYžaH,ˇÖù‚¹ªG%ë. LÓäôùÓûÿ•lÝU\{ÕFÇ!åØ ³Jy”+èqÕ¯^¬Üï2Èj‹*%²Ù~¿x<®Ÿ_»vÃï47,2…Êq̼iõ[Á :’„bi•ØA­m5Ú4|ºìýŸëáüöÍ ¼çrºÌž™ï)Ã|¹‡{8Îñy€ic±úØSeâŒ&Zk¥¹½™l>‡ßšËMäsYÒ–±þA–-é2ìØ¾›>zõmòx?Õa~å«Ìý×-g¶å:E‚º:‹vá#·]ÍÁeÛg?ÍÎǹùÖu‰D‚|>Ÿ­¯¯¿¡©¾=,¥TRyå÷Yþ4*œ £i•çÃz;àkt@`HSWc™®e^5–YÈ<ª*ì³ò¾lË<©Å¼”á{¾Œ½—{©Æ0/0¿úçźî:öbxßy¶Þw7–Ù€1yŠ™‘!RŠŸÿ±+é\ÛɧïøYî¸ïËXCè÷¯¤Öœ¤ÿèY¬`>s/ÉÓûظõ6V¯îü0/qS¹Ò!£ÁƒWôöö ™œïŸBÉ4-1ÂMË©ú/øzå3Iví;AÄJ±¬½L°‰úXè2òŠã‡ÓÑÖDRGii _Ðõ’õ5ÐYàôùéÄ ‹ÚëiŠF/áš.AÍ3Ò߇·Œ„¨õÛ =01ÑGÿ¹ ‚M‹>7AƒO±bݲ©<Âγÿø1¶nÝÄû½ÓLŸÏ"•ÊôÁ“ÿòç|þž[Kn'“I‘˜¥¥« €JŽ 24›¥¦Ö$>£èYÖUf@PM€âݪù¥zU«^pGI|–`*‘ .);¯—†Á›Oý6Ýv¦,ï9éæ O½¹»¦™PË">5¾rPwÿÌÆÇñE ¬ôÌiZ»–!%e¡P7„;4>ÅŽíOp×-Ÿ ®>V}å`¢9Ò—`]wí<Ï\o¨¸šâÕýù…Ês.4ÖÞ>œ##Óƒ……À¯þ?¿yßÃ}wHJ©$Òv´Ì[†‘"” Xµ™ ßŸªÑö™!eȈ¶Ì€RÊe‹Ïb„õ’¼_f™sX{1Ë<¨jœðCù*×±Nhô<À¬­¯-ó’­ÌŸz‚”í'ØÒÈ‘çw3%†Ø|ÃçiLœ<ÆÙô83cÃüç_üiÞxúŽN6°º1lZA_ï)2¹=bˆ|ÏJ–š’ãQný膷™Mûà†d³©¾UH”W컼°b±^ùrŽy«¿¤ „d/åúå͇õU±;O©=Á8‡iš&³³YÚ:[9ôw¿F×=¿J´®‘ñ)¢ 1N?ÎÙ3Y®ÜÚ†²jY»¸‘øÄ0á†Ö²µÿ¥ú¡º€WYCè†GÝÐãìÄ(ÿú¯påæ0«n¾ƒPñ8·4Ãë8TRÎzr™^³r×JkÅäø8#“ìY¹¡tŒÛÎKJ‰°,ìÚøágis=mM¥þžápaA¨4{œeó¦Ue€e?ÿGøâ]K¹¶%€Rzž9½w<´§ÿª7—éžÓ½ÿÊ}^—%7ì]ÉØ‡‡'il¬!“Éüÿì½w”$Wy÷ÿ¹÷Vèwgƒ6ç•VZ…•B€„I€mÛcŒ1Çà÷µmŒßƒ_Û¯ñÏ66&#AB ”X±’V‰•´ÚœsšÝÙÙÉ ÒÍS IDAT±CUÝûû£ºzªgz6€PÜ:gÎJ]]±«î÷>ßçû|³eËÖï¾ïæßý¾1FK!­•§9%RYÛªÊ&DV˜Z?éÔJ¦Œ¥f"øQ´¹›,¿x–¹Ìpä(ìëL¹L#Júey+ç3_XX³¶®Væýü¤€¹qO?UŽQT6:äG¶•GhA÷@ÀŒ¶;žè¢zf-mIŒð8Ùi˜Öâp²3G`Êà$ZBOO]­m5Ô$¾R/z~óµDÉþã§þ‹Ê†6®¼ªÚ湌dwòÔž.*|‰Ó{’Kß<›£#³¸æŠy§ÝÏhÏ®~ÏŸð÷¿¿Šúi Ó/ã²yÓÏrøÉïgÛ3›yÛï­¢£¯÷¾uÁYm¹sÝ:¦_q¦÷8ÿñã͸ýGY¼x 7¼ûÝgµý¶=»I$lŽlc×.‹–ô66îïç³ý(5¹êûà±ýôl¿‹ïüBñ/_¼•/~òïH/jàóÿëóÜýÝ»ðz‡¸á–·RÝØöº¢dóù€t:Åá]ùçÇwó½Ïý}wb5ÔÒ8£Ùp@?¶g3ßhûÈ ä»2Ì\8·8ð´ã‚Ÿ JÊ+â@å#¥”d2’ÉdÌ|?@‰cË `Yáeµ`ûã¿à’kW"UmÉw¢ˆëÔ±#t ±|q˜ªÈf2X…Î*q/ÖÍ#\ØZI>ïaYª„â7«ÍdIÚ†LÇfì¶U$¬‚8ÇF2yl[N˜ÄÏ¿ÈÅtü„#Þˆæ=“W/‚À0<<ÄÐÐоiÓ¦ý^S}›ƒ@mùJ’sl7‹NçRÉê,~E>éÖŽU¡•L)ZüúQ&…Éx±µÔ~¯$—yf õr¼L=ôPMµÈ“-||©Ñ2™LŠ@J-1Ê`¤eY2›Ëê/|á ŸÙ¼¡‡“½¯8ÐÑÇó?ïaÞ…6OŽ ÚL©+Ù@²:Enà0SR“²ÏÔÍ $’^¢‘7½ébZZªîeÞ…Ÿ62¬­®Ãu,ª›. SXüá~€£»²|ÅrZ›§0Éî¸ÿA.¾ø¢WýsâûžJ¹är¹¢23“É””6H)I$\|ßP•JÞñ83V\IE[+¹Eá…ÝŒÛ΢«¸tùª*k¨i¬/î#>øG~¨ñÜ]|}6›-Y_Îg6Úïcobó‘A2OœbêŠFüøFQfúßøÊpÓ?HX%Râ v2EKSR ŽÜLMã4”EZ8ŸÏ‚)Õ ž¹o5=©Ó&ä Ã{gøÙýë°­Sç®=vÍí]Yn¾+ç5ˆîÜì!Ç)Ú8%wж¯Ž×u–懣þ¸†D"Qÿ¥/}é«©dÚ•B¢”0F F›–¶-Û×ÐJ9ÆVIcŒJÚåUy‘HD1ai]¦˜`̾³B(b%+¢$j-þöå©ÙbîT¼Œ‰‰¤‰&åá•D˜%è`B„iŒA*x|g $"÷†°½!^`˜âL?0ëÍ“¬µÉ{×»C9ªšœ‚ùvØû07êã¦ÎG˜/6}ûboó+W‡¼(N?âžYã(Ù×¾ùz<Ât›ÁÁ,MÍu¬{ø›\±´Šdû£»¨™*¨jl£º.pxZ3;Ùµk^}S‰ §œ"6ª,ç‡lD;NPÚf3)qœR¯Õ(B‹,îúYýÐý´-¸†Å fŸ“(BpäÐ1|7àgw?ÈG?ø^œT n!Ç9Þø?›ÍàyéŠÊ°IcîDJ©´Àóq._øÉnþìúVjªª1úrY’šb£èñ‚xCøÉ=åîe Á‘z9úìÈ‘.C]Âw¾uÛŸñï¿´Qa¤Ö–g)™Q2‘³­šlÊurè/aWi%ƶ*5 Îe–3fŸ(Š ee!7cùQk죤ûÉÄ(óe‹0£“°±¥@”D˜ZëI#L!ÙÌ({÷îepp€_|£{ºÇ ²s0ÃêÛÑäç9Õ)8ÑÕGOÞâøÉ!¶ÝÛÁkûyÓëX·m€¯ÿ÷!ê¦9ì}¬“ýG³ÜvÏIÜ›öÎ ·tóËõÃôxš ¦$^”k}ÍD˜A–­ÏwâäräÍÎC©›wìaÓÏh§¶¦šûÖlañèÕLßAzîí›~ɩޣ ŠJšjÏÞóWøùÏŸ¥¯ûI™eí¦“ÌÑtVî|a=ÕS¦2Ú}ˆ5OïàÔ©“ìܽ‰æÖ¸¶u†Í‡÷l¤cDѹc;‡övpìäAú¶í¦iÎìÉÁÔìÙžuû9°ï8mÓxbÛn¶?{/ó®äÑg6бu3[fþÜY¼ÚE?çaJ© …öþƇ®YIU} Ísɧ*9²~3zð[7¯Ã‘ ª¦3{þò•6Öb*ÅÅ-F™¸ÃOÌ™¦X2ý·å(¾þÿâÈñÃÔVº¤Ò•%­±¢(UA*ÕHEMUè^ä@¥ºº¥oºæ´Ö¦J"½(rضÿ žz†n3ÊÌ–¶âñâ4owg';Žvâyï¹|*AšºH!X»½‹…ÓêŠÇŽhé ãçÄïG|}d*ÏuÆ×ÇÏ{ü¶ù|Žtº’l6cZZ[R·}÷öµ&LÞR a´*X¾RB›À1–*XäÚŒŒoº]ô™-uÙ2“1ÿ×8†]LÇMD\ !„)eŠÈÃý7m¾~¦e”Q“&}N#ƒã8L›6 ˲xÛG$õ- F{hê²²¡™„D2A:i3ؘQ¨zw+mÝa‘ïªe5ØYƒÒŠUïi#—÷I·¤¸ry5O¿ÐϯkãàÁ õ¯ õEý½2Y,ÇcÍêí\¸t:´9ŒŒt3à ,;AUm £ùuÖ™ït›iuO1ê$Q–ƒúÄ3o¹n%O>¾_XÔI﬷«HÙíËЌ±,†2ó¢tŸè'=çLÝJ ,#N8¸²‹§`NÊ;}‹0!ÈkŸ²©rzyöè ÜÎýTT- f™ ˜6gô¯§Ÿø¢”dp`˜¶›>Çþì1>;·—Žý#ø§2ÔÌ^HÛõ´q9~nC;·Ó_Ý ‰4s§Ô$Š‚âµ„m­/'Š·°ŠÛÁàŸ{H·Ì„À/‚PTT&0 ³w×0óN/i”ëZÜõƒ{¸äòéd2‹p·|£s\1g*IaX¸`!SR}§±¹™æÖV<Ìèè ;wäÒKWðæeÍ@@$oq7 ã÷$.Š(Ør÷+nƒÖ¥”Eš¶©©ŽL& êêjŸì:ši¬›šA¡‘–Ð"|i¨#´ D!–E`õy¥'Á˜ÊU˜"¨Åƒ1‰'€¡ÏlÑÌ °¯P”%(ÇÚ+ÌËþfÊ:êdŽÜYQ²ÃÃô··“H$èØ*9Ú'˜za% ›Ȥ¤¢Ú¥ïÔŽ–ŒBwàÃ÷302œùK¨pÔ„ã­±lÁÏï¸ f¾—Ï+é;©€×¯YÃÒU—à$ª rC`¥”²øäÿìâ??¾%Åi±ñÏËõÀ/G•ÐÈ·œht4‡ÆÀuoyûö¡•TAˆ¼cÙYcR¹”[“Q"é»V½çXZ ÛJjcT¨Ñ1el'ÕDk4'ŠB>wœ§ˆöÕfžÎÌ@½Ìï•ÈÁÅ-KÉ%”lD)9r„ššœÙ þæA¦¬jä‡O° º¡‚]ÏurÇšnÔUrp(ñ4³f'X»i”•3ß{a”‘^‡†Iê,‡gÙµy€EÕþFÌu_K¢Ÿ;¿{7 —-¤c×qòFñÔcP]×Ìã¿ÜNÒʳîÑÓ4c1 çô?ÛÇW¿õ#ò=Ûh±€‘‘îÙSàBhyôIÖ>ps—­[]"#½½L"ŸA!¹ó¡G™YW[QyF B°{ÃÃä¬:ŽïØDÏÈwÝ·š|6ËÔ¶©§¥dÐsh ¬ÝÆ‚ÙS¹ã§OÒy¬›Ùs¦ràè úO#•NO”^ë”ìX¤"JÑ´` »¤uÞUÚëÂv^±óRJñÀC¿àíïyuSêÉår1GƦ̚R6RIŽöŽN„á‚ÅÔÇêL£ë‰7+ßÃ3NMGÆÑgq›¼pB”-qRiF?<œ1©TBø¾ÏÌ™3Oüô¾û÷„¼¨ÒB(-¾mÛZàøIWi8FJ )l£dhâQª€$ŦΔ*rÊ €BŸÙHdŒ³Ì …½!‘+(e ^fJ6NÍÚœP&ݘdåÊKÁ®çû¸å›+1ưbq! Y3¯ŸÆ[ÞjÐQÉ¡wýÍop‘>q}:\'ÃqlÚbІ—}öðjXF¶uñÃ{WÓzB³è½WãyÏlÛ‚Íñýï­aÑÂY 婪H!ñ0£=dýYlïèfF @õ¹x\²üBªjƒGvÑÕ0‡ ÏÒ¸àЮ-ÈÅW0Çñxêè~ö$åÚ÷}”š³˜×dµË@Ç(GÛÉ®DôÑ»sú²K§¡dõŽØJÿnGgìÁ>ÉÃ}‡«¯û>ÏmÂóÓìß³ëÞõþ×Ýs Ķm³gó³ô·ïcá[àŠw¯¤²²’l&ËáAÉšÛ>Ï»Þÿ)¦¸)æ_<3lrhÜ„;#·š1ðS2„x´ _Œ1ØŽÍ7?ûešÞ¼€ÚáW¿ï¦â~#El$®Ù±cs--ñˆµ,«…U¤ÓØó/bŠ”¾Ïò¶*Û.1Ïó¸êò ynß!m=Èï¼ï†’8Šœs£¬]ýKÞ¼—ÿâ§Éçó…¶a6ýñæ5‘tåà.*wm»Ä?6nâ0žºÎd2!H$cеåîu|BQY™{÷^óƒïÝöÃ;ï¸ç€hÔZ -‘ZLÒ#”ªøºàya)°BbLP€ÐXF•'ÖjFà‹(QÍúá¾ úßI£Ì—’-œƒJ°âÆlm´åºn‘’½û'‡©¯Së2xMijvör .Íes,¼þ3IUÀê㺛.`ŬÄ+b0x-Q²^à£}ÇvCŸK/‡”ŠÀ€Öí$ÆŠò' 5¹¼á÷%ªÓ„’Fh#°­³›ò¾A ”$ïù(%1A€´ì³Ê¥^iÙÅ:1Ï‹Ú?É3RÁFÅÌŠïkl[›‡ÑJ8ཞŒ lÛ.Ò}]]C´NmàGk~Éçµ"³šÛbv£Â·±”Eª2ÅHàqøÔ0ý}|.›7£'WËFQÓ™ìÞ¢óL¥Æ&|™¡Q²žGm¬£Žˆy¼Æ}XNîæ_¾·•ÿóï/‰@Ãk¶è<¼†™+²Ã?ÕAcÝ’ÉÄ„ü+ÀæçÖqÁ‚¤R•%9̱þ‘ÚUàö ò¤Ó-P½ø†X£êr°ñIC\` ¿—@Æ'!ñõÃCÃû7mÚüÓ¯íÛO>óÔ3}]]]^*U!Œ‰J;d …¥¥Òžlϱ’9שÊU$l_ûÕcÕŽU¡¥´LX@»™È°Zñˆò7oÌþŠá~<¼3övºáÆ©Œy´̈GÝÍS¹JB¨[XÉÁÃæÎI3õ¦6D£5aÀ2ðªˆ^îeÏžc,)ô­Üyp?Ókv·û¸™£,Xv JdÙµï$‹æ¾·¥ö³¬Yó$×]{0B{WŽiMuçBúñ̺\¸|1§a×ϧ±êìÓËfQ••èÀãÀ‰!2CÌm«¦ªöÌÇ7Æ l‡Ìè]G÷#«[Ù²m?3ªûY|é “?_vl|ŠÊª)<ÕÉU_Èëv3gzгÐÓӇΠÓ2eÚ9¶9{í,E¥¿e‘à_¨øÌßS7w …JHö>²sÍ,ª:O’8EBXÌ«¬¡qj+Úd™|dœVtÆ¥ â §ÁS©TINÑ'ËðÞ naÑ•—’H:E@‰ vºOâ@Gžø‹÷£ƒ œ ¢Ðhÿ-3—Ð>0µ²’ÆÊé‚ò6®àñ‚Kxá¹§è¯ææ÷_Y¤;#‘“’çÖïbñ”Q2Ît,/ƒŸ2ˆ‚ùêçyǪڒëwŸËŒD;ñr˜ñ÷*Öñ÷òðá#nÛºýÙûîùÙöoßöõãn­ª¨L 4©dÁ`¤0Z¡…ÐZÊÀWÊò}mûRÚ­Ð ÛÖ L }¦<„° k;ƒRŬbŸFOšË ·f\œ¨ «Kbª¡Â¾ d:ZOT̾ì9ÌŸ4Y™¬”§++±m…yrÙ.Ü ½»3<·-Çâ%izûr$‹î¾UnJ1’Õ˜ŸM›ú¨­·ñü€‘¼ éÈ—ô"_+9L⎻ïâ©çvc:F¨÷ÔÎnãTï~víòHévu³yôñ­,_zú&ÈÙánŽtõa å›_ý³/ ¡¶êœÈ‰ ¨äÀ®õÌš·ˆu;2§­é¬¶Üû ¤§M£ïÀsìܸ‘õkדÉ3wÁü³Ôzèû Ëð%=ÇÐ0­‚¬n¦¹±nBäÔ“Éjö¶’UÔN«çà‰vžyàI.Ãåüâ¶éÜ{‚}'v0oÁâ×]3ú,•rV¼é¶íÝÉìyËØòÂV:Ÿâˆ9Ê4ϧmæ,ªê›hofJ›…åT•4@Ž[ØÅ£§x‰DDMFç÷€—ªH)Ú"¨Ë0wñR”0.P2UKk]ûvQS_U¸¾¸m_¶<½‘¾Á^\'Á¾-O3eƼ"HEà*¥£©ªNQßRIº2]ÎÑy7$Gp‘£äd©Dq?õ­’²xmñkŠÎ+ºæx3z†ã÷³À )¥B044¼¿½½}íê‡ùÖ²åK?ûïÿþ_¿|üѧŽìÝs`8áÖÇI„Z HI ¤ò”R¾Àò¥²ƒÀwÛr}ÇÒ¾e¹:¡-•ÐŽUaÂó° Ѩ§)3‘¢h˜^.—9Q¤'æ2ce˜Ëœ¨˜}ÅP²€ª«¯“ÂÎd”lDlß¾––öì6̬­CTgñ†rü|[À¬ …g²,º°š@¦è@—¥­%ÍqápÝ¢Š—ô"_/*Ym¢>çg£&5h>¤g¿Mi¤WZÐ\p®8ë“Õ0Ü´1%ôèi˜Õ3ŸO™ Ñ©Îx y×%%‚›¢{ÝÝl]ýuÞþ/Oáû9¶KÖóéïé㉵OpóÛ¯ãÈp–i²·eEIû©±ŸxÌîm|~3ñ¶Wñè4¢[•R ôŒ²c÷ LY~1³««ŠûŽŽQ“#:ÇÆ§VsõßU4MH$%ùÁ“JˊІqpx”tE²$ò‹ŸÛðè(ÇncÑòU%u¦ÑuZ–ÅC>ÁÜ9­œìØÏÕ×¼½(~²”ähWžéM‰’ŸÇVŠgŸ{އï~‚/þë_– øQNqü3d9K¼ø¶A”Êñ½}LW‹—Ï#bkÜ5§±åG9ÞÑËœÙ3‰YÑ3ïº.y ;7>ƒ:Ä´ko¡º°>ŸÏ—jîÿöѶâ*–/[ZrÞñr•xô¬ýnr¬»ÊÞ|ž¹J‘¹ŸäEùÈÂ5 í=Œ1^>Ÿïýê}íóñÙ¿ÜQSS#-ËFaJÏcO³ðŠ%ììå7ÝÈŽÝOsh',[ ˜¶àR~°z=yçªÓî+Ó»—úÖj>wëò‹û¿Èò7}†YmMç0‡lÛÚŽ§‡PžOGï)Þqãõg8qt;;žÝÍý»wò§¿ÿ§$Ì(Ó¦é¹Ìu±þˆÏ¥ ëyîç˜27ÃöMý¼õ¦7—mÞ¾y‚žc{y~ë):Žz|ìSoåùû×Pí¤YøÎ«ùÙ¢r(ËaÝÅ­ôG¯ëç̰\—ê;>Ä ý×¾ç#hc¸á#„mY<òøzÚf´P“ðñP|áŸ?W"è”ñÞÑúñå&Ѻøwâ¦SæÖ0˜ÑÜû•¯qý­¿CKuC1Z‹?¢Iï¾÷^–^x}Ä"`‹&F¹,‹–_Šm_Žó*4âˆ*½ñ£LßÁƒ ëpò½q;ÀÇWoàòkWàe ŸÁIVâ"ä}Ïžbê¥S©H¸%ch4¡ˆ—ÒDoÇckÿÒßýÍïêêòº»{<¥”©©i2B£T`£I-ZJ7Bê|^!¥X¥dejKÚZ i”ÔZI¥¥RF{¶ ÂUïx÷Yo¾á…õÔϼ‚]{ÛYty_ýáϸhÖäé(a{öï£mú\÷0Oì;ÌÂk®f8Û‡\¶t)ÒQôo\ûºÎªÈ ÐüÙ5 ܉RŠ÷>Æ¡Ç!ßÚĪ•áT7P™J`†¤òèö,š E"»¶¨n0 qJ³œ€e|‘¼6qàdoûÒPYUüN*•*î/²¯ûÀû~C§úè>‘¡ezºÖPY–…ÊÄ©[ÊÞ982Ê —.)¡G WûpSûSø5ÅhÖ.t:Xõ¦‹0™.\'MΪ`àTÕM` ©ù•¸Êày~IɈˆµæ8v¬}õ]wÞý“íÛvô|û¶o¯©hPn"%´6FÇ-´Z AZJËHai!UøÂ`” ©¥PÚ±¤A2üŽ’–Rj%¥±…c¼¼£…°ŒÎÙFJe„XVÂHiKºÀR F{Ò´ïÖcŒÅ„n&°¾ ŠFâ¹LÊd2£\f!=&Šce&¯8JÖ÷};‹g<%»ñç?e]ÇœtUÖÚæ-ä§kÚi^G5ÂÔ¶Ì[4;F7xê—™{~ÍôÃä7ëÄóR˜¯ÿztç™ïÀdûIŒå_#”¬eY¡ë·Ÿ¯}âÝüö×7‘ªIã¨@ÖnÚÅ%µ†§ŠTI‡Z;i£ÅR ýÌͤ£ÿŽç:ÇÔ¨!`ž:xArÝ,½òÊb´¦µ.‚›”’ÎãûÙ¸wUõs¸bñœ±¦S…( { ÇP×>šg‘N§JrœãiÖcí'¨M§ ª†ZÇ.™„ßU<ÿàØ3f°òÂå¬Û¹“ËæÏÆT]yk“%ùÈ];wßõܳÏoúü_ýí–S½'òSš¦Û¾g4B µÔR]|CÏW!µR#CÀÓÒ¡´”ª@·*-¥2J˜@He”ÔÆR¶ñCö†ÙÌ+8¢š¢Ì ÷ZȽԋ¾ó“3sΓÕ(eagO±é`"§Év¶så›q2ÛÆ+fžž’íëá?øCæU¤™µ`4.dÙì)g.b;ïÛÉàñM\yÅrz3¸jÑÔ³ØN°wó/Ù²/ào[Àí÷m$+r,­†–å—±`zóiï€Öÿø•ŸPeðÇŸþö¯_MrÎ*z3šk~Äï~ø&=Øö<¯º„ý™&æ&úxró>Ž÷çùØûßηþíÛ¬|çÛ©$ì9¼Ž)YC.çá7,ãßÚK_ÏQªkkyò…M\Òââ?¶þüýÔ Óœ²é×ðø³‘»xÃMï)ñq¬Áq<ÿ8Þÿ7Ú6 B”¨&e 2ã²K1¼¼‡ã8%µ™Zkš§Îa¥SM Ü#‹È ¦B‘mœìØÍ†­Ý\såu%ùÓ¸ Ý€'Ù½¯“·¬¬)–•8ŽSlz °êÝ×1ä'|ŸÅ3fEÇ5€èrÚêËmëíéÝÿù¿úÛÛ~ü“««nNZÊAeª§KÏž#ÆRA P&ñÈ#µHƒ!0 K+Ë"KÂÿWÆXJê pŒÒäó–AºÚ’–Á@ÂqŒ,éƒÁ’®‘B!£:e%La\%æèal·H'4€-SZX%¤(ø¾š í¿ÆƒçØû©‰ä‡El(¦€Ý€y妞 h‚O~üOÊh>òÑÂC8wcÅ 7—ä(3Ã>ÉJ«ì 7Ôí‘n8o®þ«,Žª¢ûèS—Öb¹Iµw3÷‚6ò¾ËPÐKVVÃhæŒûõrÜü¶Øõºú2Î¥çx&U´VA›Zˆ_SÅè¦õp€ ÈJÞ÷¾e œ`>®î¢fêEdÏâ¼KW.déô«ÉÃÓO?É¢ôR‚¡c¬ßð¿ýá?šÔ^1› èOTóüúgÙ“ofÁS™=­Ùs ðYÐp ƒ§ŽÐÙ¹‹ æ\Àëy:'¥@JÅ©ÕÿÀŸOqï¿þWÌ™‡¬JpÅÏBŽœÈ@>Å}ùG¼ûW³ä¦÷=MKLÔcbŸ¸ÓMIÆíÞâùH+î‚€Ú™uøÃ6CǺٺã×¾cÕ¤B£^¦«÷$͵it À#€µ,‹£;hh[Îì¹+´_bN‰¿´Ö,›=…ÅÓ›xúçxÓ{®*±üнƯ®í'ö±pÖ¢AÏó†¾ùõoñOÿìOžµE*YWW¯S_==!„ŒÁ`„VÊ3¡Mÿp´J{žÔBH#…ÔŽ’ZHK+R¯R)cY%mŒ4Aà?g¥#&éX@J7Tnu ÿF‹¥’aÆQhaʸ넹L#Jœ¼"cö –yQÀ”é ]¨ËŸËÔáÑâµ$&N* Î=iôR²ZkÛhc%Ü„Q²›6tsÑÅul<œctm;ACK®í??EGkV¿Fz hf ÉÉi°ªVÒWSÇÀ‘ãŒV¥9²'K[`åuI¦W¿$ùš¡d£óE0)/·‹³ŠúMHÐPæ»g³}ôòäê™(×ÒõæΡäzËfüýxµ3 ¿%ѲÃÃY**\<ß'•L ƒQžûÑ6Ö[{™kæÆß+k yÁl!©’eíÞÆ›‚ØO95mD‰A€ëŽõÃ<¹k3Dz’•-#—Ë•§žç•ˆ‰<Ïîc—0ZQÉFôï¡ÃGè;×=Î-þhñœã4oày ÙpüD–E-q¥z1+$ýÄÆ ›¾vñ%+¾^“nL¸Ž#@j­ IJaB#ÀHd$¥VRù¼4R„:BiYP·†”«e”̇‚iil“RF PÊÑRH„&T«ÛF‰0íÂç`Œ¶•ÐÖØ”R”¼Y–Ak«ì¸@AÌ3EÅÔË}XgꙩÇE™ñ²Äž™†—·ôÙ¦ÖÚJºÉ"`¾&ït`pTXÀç“CÊds¦ÀG Š Œ”­Ékö5&7z8žÌs¸ŽÃí §«hªI‚R(Çvoàùý†>ÎÜy³Y~Ñ¥Ü»æ ·|ðôŠUÏðÍ;ï£Õ;Nuk+UÓ¯âÂE3ÎîD¼~ hj½nŽÖ|ÿ.>òן£.áœÕæžz”ÝGlHöb×/·Ò”ngÆ[>‰’¦$O/tÌ×ã†%i‚L»ÐÔ9N±Fî7Æ”eѱÿ0¦:ÅÔÆ1£ŒÈœ!ÞZìîoßΥムiõµEC„h2бã^tÃhª¯BH K‚Ö! / ˯;vngÚ´iÔÕÕÛß?°ïŸ¾ôO»uëö¾6 {žض#üÒB ŒFh„aMd!h©1Ò€ #ÇB>RJ¥%–‘*•­JjK:&›q´Ò,#…m¤´@)! ÊVK:&,+ÕPÒ6BéSƒA(!ÊÖJ¢¢~ å5Fèq¹LXås™¢4)Û}D—™[ªjÆr™…}¼âÛ"htqú°yK/2ÔMuq=Ͷý9j” 7äÚ·4sZ¿o¥H¸’ó˯¶ä†Ûžüž=šæºŽÛ³rY²Ò#ãÏ`ZÛ 2"…—;³2¹ëdÍUC̱ˆžŒö'bUp¢» æÏ`ÃÎg¹êúËÙôø,¹æC4'ÏL©V56qóK FÚÉwô"óýäS³É ´5gÈz$ójåTm%=‡6Ð?¼žmºÐ|²<%+l*j-RòÄ3±ÇÌ£jÄâèñí¤í*–ÍÌbldÿ†µ<¹o;ù“ϼ®)Yc ##9ÚÚ¹þßÊ'¶¬}”ÄôV{†ikhÅ™ÒÌU¸™ýG‡Ùöüc\²âJN 0¥¹±H•F®6庌D ­µž`(9à”lŒrèdž¥Í5ä|§@º®[ÒwÓ÷}ÞuËûèéé%Èe±ÝRóß÷iY|]Ã96lÚÏ‚©9Vßó0ïÿ“¿,F˜Q¾3amÒ©*Hf6nØtÛ† ·ý÷W¾ºkó¶ ÃMu­*ᮉÄ7aôhB·ikŒ4Z«@ ”VRj!¥QÒ „°Œ%|-¥4JJm)©1 ã{Ž |ËaWÙÆJZF PÒ1ƲDT RšÒz=.’F˜‚gº˜ˆU¥ =gÇ¿w”p£1à ïù¸\fŒNÕ ˾Må»™€UšË4¯¢Óu]k`` 0ÆÙ¼±Ç•H×âh·GO§ÇU­šÍÇ<Þtót*_¡#Ìk’ r”^ŸÏ3’É’r-ržGeEy-p”<#mÛ×ÝMº²?Èá$Óe ¢ËÏ¢|FóTºŠÑ¼&•LLÓM‰+Ǥ›kCè<× ÏÏbr9ÒÕ5gº#Î呹 ɪjFûq+k°•‰½©efÈ: ·o„«¨¨,µì¢¦:]87gÀU¯î‰Ý¯aF¦â¾¯9òü|÷ÁGù¿ÿürƒ#XN +©è<~œD¥ Èä9yìÒS®!7ÚÅôé ¤š èßàx¼Ø'î _µ× ·ø£Y†Fûèé€ùNûÝ µÑ¶/ì=‰í ÒØXEs}c1Z«e·mØHª±ÙÓ›ŠçPp# N}}}[Úµoxîù ë?ö±þ2aU$Òézù #„Ô C€D!U eH­jæ òB)m-±tXÖh%¥QJh%çj­-#Œ­•THé)ƒÖÈP†JVƒÄ yRÇJÚ¼äJJ?ÆÞ""ZV”ÊXÁŠwœ¸]i™I¡Çª¼™A„,§138«(3¶¯WKã=pÁÌJº†4­ óg±C>Í3޲ܚ}»GIVÒU †²´N«Dç5žXÇPŸÏ±>nJ A¢Úbzó뫱ó¯õ#ä³ì>t‚… fÒ>¤©“£ =†òt8IUU5®-9rb€¹³Noàç†éf°¯×µ \ÃÔæš³;iQ]©8q¸ÑüQšZf’ªªÁBœU9F_Oy¢¡ÆâÄ©Q*«*éëD:)*’§£uC@ÅÏ2­ºšÞ®ì!;ièñ˜?½¼ÒWH…±$&3Ä` ©ª®Áøy²Æ§³«—šê4 ¾u® ¨óLˆeI††²ÌZõ.®O¯ÀäITW³éé½<èy–,_¬,4_p!µ-3 ¼ ]N¬¯jÑ,faÜ:(Û9¿¸"uëú§È·-enE¢¤gøÑ¶ϬD8-xy¯D„”Ïç‹‚ž¥¯àøñN6>ý€¡bªXqÑEäóùÞ‘‘Ñck[ûã›ë¦û€Šæú©Ž1˜†š¶$F > ¥ ¥"Bc”–B™ °t”‹HãÚv ¥ÒÖ<ª@ a :©Žñr¶ÑB[Jc)…s™(a!l”²M Æ2, Œ˜˜“<]>ô9רã­Ìà „”ÍeŽ[HfŽyÌ–2Cz²hf•\”k÷51ÊÔ€*«˜}U½• 2g†ËOŸìáλörâP7?ºçß¾³€Öt²~Ýq¾üïûyxõ1zÌÿúù½ì?ž¡cO7ßþÁ)N­¢)›aǶ~¶ì>‚ç° wž¢­­žïÿŸcÍÝ?bߤҵì;²žÍ[*m°’¬ß|ø,‚Ä<÷ýô.Z§TÓ8e ŽÈÁ9v騴c/¿¸ûA|/O×9lšÍeؾçJ9ü|óNöµw±á—rìèÐYm¿kçîþáOñÀÏIdÊgçŽçøÉ¿}ý4–p²ˆ§žü.^&ǰ¤b÷¾ ß¾XóÕulzö¾ýë˜óZ\×B*q÷;yìžo‚9Ëfðñ[ná²%ËhµŒÌè0ßûî<þÈ1r£ý…7[’³ŒÜl¢œàøN%Q¾0ZÙÅEQj\гìofaKU3*Ð…hpõsµb¥ëº×Ï9õ“O4×M­®¯ž¦_úéIA^ÊÀ“Òä•yKÙ9KÚy´ãißÍa9L2gËDε+rŽÌ'œŠœëϵŒï:¶—tm/Ÿ­òƒ\½OP ÓkW¶•ж•Ò–r´kUhWUhתжL%mc©DñO…5±ÂŒ)ƒŒQG•rÝw¢ »1@ÓhQ(ó0¶a½á¸cE÷tܱ"3Ð#&H5;&´þÆDžCæÕCÉúƘ£“µ=2&ôÑÖÑueá÷çûó”ì¤4l<ÿr¦ïE÷öLûð ÓÏ`B|ýØçbÜ>þõçpÞc‡×¡ð N¶mL‰F<Õ"Eé|!~Ï_jÙƒ’•2Œ0kk+É’tÞ’ý'bWWñåO‘[>ñ[T6Ϥ²®.tÇ‘pxÀG žbÆì±¢³¨Áq9¯Þ(g7-ß&,›Í’N§‹ÛÞ÷'˜õÌ®+þNÝO-äs¹ïÙ¸ÉúèÈèáuëžýÁ{ÞñÞÓéJiŒÖB ¬ÌÒc«]®a–l3Y”YL3ŽË33(}' Q¦2#Në3;¾gf93ƒW`F3Çááa2™ û÷Jd‹¦$Ùô`o¸¦š|³Bª$ζ^‚6ÉæöÑ>®ÿÈü¿;:™[gáÌð;ï­eÛ΀F+ÇC›sTAó|ÁŒ™ ,›Sq0cKooïDEa.‡c;8¶…øøR"‚Ò—Ã¶í¢—gñ3K104B*™`xxÔ5Ô“Ïe'™®ë»+©:[øawö\>@7‘Â÷ü’ÏC:fxx¸”‚1B‚¾ŸCkÐB‚ p,g‚3˘SŒ éZøF¡ý<^`YŠÑ¡Q”%ÐÆJ¸¨1U ¶m¢…§=ŒL¤ð¼ø!j‚AF´Å¾=Gé?~˜·Þò~)?®VBð£o}Ÿ?ðV²Ã6›´³¬¥ŽûYÃüE3XTâ][˜$i„ÁAoË ;¶=ÜyòÔÞOæÓ–Ý\ßdù0éÊ:C¡áO޾ k"­ ,ÁE;ÚWBÛ*ª‹ Ì…ðµ%-#•ÑJò¹´­ß1[&Œ°JZ¡Lä™jI·ÐàB"?—R™XêOHQ(ä/Òže›8GïªBÚ EÙ(3,-™H±“å2°u!Ê,Ò „al±Z’hœ’ËLt˜ËÔ€2åå®ã[Eû›¼êÓu],X@sq\ªæ’• ¤R±?- f_3öÑŒ[À~ëæ1AÊ\`Õ‚ôyT<À˜}É22¾OëÔ9œdée+1yZo”€ëøíçÌmÃJ¥ÐF±té%x2Ö¹|£«J^«rÛ·,XÀ‡ªšÞ(­S/à·?ÜÈìÙ³±t?vüpKEE¦¹`Ž1lÛôs–\Êâe³y®·͆½2Ël/0ˆ¤MOG/FY¤”…rfÍŸ‹ÉæèêÜÏ”™+J¶hä­‹—\€ãj‚Ü({cÖ²%Øû’ïÍ30ð[ûYÑÇ)¯ £5ú<`†™“B*Ž¿ð=î]}/ÿÛ¯S?#ÁµË»8ãîë` ?ÏŽ}}x¤™æ÷0êMÁ•f@F4k\ S@#š6nS­OUUñþ?ý]ÝÝ$ûú¨l»—è îîîÞ³uËÖŸ¿ù-o¾°ê«¡lk¦8Ú|_xB`„ ãI!µk )´QÏH¶Ä’–­„¥¥òŒ%¥ñý”¶¤…—µµ‘ÊØR(Ò§J& Fb)·à++ …~£RX…æÉŠña\\#ÆH˜Ž(~aÒY«‰Q¦ˆM`Ç#‘Hü_ T0±ÌD Âh£å˜‰|TbÇÒ%qa‡%"FL‰¢±Ïø(sœeÞ«’}5.¯•æùåüý9(Ù\ÎÇu-ºf¨û$mËW2Ô×Å@‡Gï±'ØÜ°„ÅÖ0«V^FâûYúGª+&Lú‚ (6uf“ÜÇ3*ƲÙ,ŽãûF®½óqª"ÍòÙӻ܄ûÌ?{à¡O}úSë·©®Õa|_h Iµ@!|-&H©MÁ8@a³åf•FÊrURj%”Ò3K+éšÀW&ðc)ËH¤‘Ò2 PÂ.ú´†€i°a¤)–ƒDô☩øÄºÇ0+¨ËøpOÒÄ9¡ÆRžØ1Ý€™4—9Þßµ4—YÆe a´ä£ õ³AYjv23C9× ££yõQ²ç——‡;¿œ¿ÿ/×’HØœ<ÙGë³øÜáë^ ³/lcö…fY6‹²m@rðä1L0BûöS¼áú«‹ùçH-WÄÂX×ñ-Àâ©€p!„(ÔHzZ›¼i¬ýò®½öÀn®oUÆ`k¦¤´Æh'Æ’&,û0c>­RçóBa›$¥±lk¬Ne,+gÔX›,“ͤ´’–1Â1JHl[™¨î1òiUÂ1ñß’.BØ#ŒVŒ„2c“ŠQãDz4UðX-¥)E4K„~c73.ñMÆ¢Ìñ'a|´ü  â5„¾w%Ôì¤bÎÈg–Èœ2æìbœHÄè訧Ê+x‚-J;xž_Î/ç—Wù þw¶KeeÈÐüas†Tã*S ÚôÓØhóïÿy¦~¾ùrf4¶¢a改Ü}¢²(ÂŒƒg4˜GùÈeý¢ãDÇÝÿësù];vììÌ[J™æºV7„ñ}á 0B­¤ÑŒZKam´Ô¥ R»v¤ju@%³Z e¤Æ–ÊŒŒÔhi[Æ`™@ãF†Ò6R8FD¦æb¬nXI;$6Çrn€'Œp4H3¡14úbd__Êý>§iâ\¸Y,U–-™ ,/‰îÄÄ."&êI9Á¡`².6,}–|„#á Qfh3„FOj™WÖ¶/<¿W^3æµ4HìÜyô<îŸ_^7KhZ[&Ÿ Ç(Ð3hب9´ž›>»†/ý÷—øçÿý%œì0££µüÁ­¤¾6,ïèëíFJM¦k -sßZR÷(¥Ä¶í’h2®j-|§ÈýŒŒÞ·oÿ/¾ó­ï®þ¯üGRN¥LWVŠ lÒÐRLZ"RKTàùR¤ „ÔJX¢`C§Œ”~hd.,©ÈdªµÊßÕy Ë6R€¥ì‚OkhKgT­†¨ ˆƒ,˜›î•0&® <ÐvXM¨Æå Q¦Ö¢L§C€¤T &‘…ºÇòQ¦)ÓC1~Nå@j23áåÌ ¡9m šŽò„(3–šœ,Ê»ò²–y¯(JÖH)MD¡ŒNµcÇŽ¿‚Àh­e<ç0™¬Õü&ÀéWÌù ª3ÏñX¿ÂÊW>}W¨iz ÷ÞóLˆÄ¯sÏ܉¥ r’Aß÷,ßóUÞËÛù|έ‚ ‹/ºª®®~Ñ™&€¾?ÂÉ“#Ų¢(r‹À«¬ Ì$ )„ —ó¨h»œ?X·bzC§2lÛ´ŒªÂñ;¸öWs¸?ϼ¹oe4“#™p&­¹Œ(ÚÏHOwÏúÇ_{çÏ~zÿÞïÿà¶cŽ]S]'ª[¥A˜ H-DP0WZJø¾0©µ/µRÛÊ Âr[Ki´ ËD°Ú÷’Fj[ëÀÂ3 ã*Û²JØF Ë)Äe’8p††çEuË8P[¡fbE™Rúeêã®âÔì˜u‚"µeJÏ×åÊLB“eó‹QÞ‘GD‘ðÄ(3ì–)Œ&e À›\Õëö™¢LYfœÕ¯ÑTcc£ô<Ï‚@i­-­µH$d 12(¢)”0/n’çt@+‘¿cM2@Œ#V~­AQDù`VLz†æWA|!„8Íůð»˜Ó7×$ÕXgš«œ~&&{>Ì™faâÜb!Ä$昧™NùXÆaÂh­”Òv ¥%dÔÚ¸BàaìÝú±e·Þzë_ÅÕÇgbXâÑdDwÆ]tÆw*‰+„9ÈÇ;™1³™Gîþ> Ó›Y6ï*v>JSÚ¦yÖlF²™®£ä´ààÎ]\ù¶·! Öx1 .¾xÙl¶ãTç©î¹ûž{?óçŸyH4Ö¶8…Œ#µZ‡#ÖB ­FH¡VZ tÈB‹,ˆ°É2Jª@ c¤PÚRÚ€­Ñ !líçm£¤e¤PF eÀ‰¶‰ŒÌUŒÂRÂaˆ>/ v¢(s’ˆ|b-¢c£´0Ò”y ÆÈBä8ñ¡*_p9M"’#夠Éj3­Bµä„Úghÿ5aQ±9¬)÷àî¶}›à«+÷Üâ +,‹ÙèÉ*öJ¼ò2«êšX?hí£9[——DýxVqPœ½¯êÂ-ØàÓXzÉ슛™YØ×d+{ÑËý Ûœè›Ý Ô¿zà–„Ã¹xعFvQ+ÜÞ\Šd‚ŒLQ@ëÒð¥` £7ßzéÅ“/|á ï=$%1˜Û Ùí϶YhVÙ®±\¶øØ¿z;®ýåŸÄ_ükoÄK/<Ð÷¸~ýkø•wóoý$–×Çí[ÙðÁÝñ¿Ÿù¼ö^ããH)®Wë>ñ‰O¾ëo¼ñÇß @=üç–žÜ*õI%r’ÙWutÝ ÉEW nf;=#3>¶R°Æá†?;iÜl¢giÁ 0 -ƒÅ¡­¥É‘ÁTŒÑ Mê&å#M›.7ù)'—R.sTÌj7®¹¥˜-‹l$ÅPµ×€rÙ„ByQ,‚º Ñ÷èõŒª7Ç%ŠÙé‹t?…d³ãíàß7ªÊÌrv ÛAå*šm†¹‰Ìò—!£¼ÎºÐ΃iýs»BŒ•à•³¶ls¦Óøì8TÏ5¬öÅ<Æ~óø–-K=úÐcM·†Ö]V´ð†²rh¤l¢,u½¹™¹dÛ6'MÁV "LM ºûÊMMM\zJÀQÛH"cXº†°j¯.¶¯)Ør„™M-‡¶ 1úÞPeÿ¥vè¹VÒ÷fX¥ÁŽœ“ïdÅì¾µhþ¦!"í;ºhRù¡+6ëÉ3÷­­ÀÎá€Æ!Ye—rUïX›²Ïì¾eÞx ÿÿþÌžHf¦‚»»™Y’ij³3ºûN×ж+p ,«¯.‰ôÓÍœëêƒP_$ÂLÈY‡æ2/µÚŸ mÚDZ~qRçûÌÿü±ÿëoq¿||¶Ár÷ï%ÐÜö^€o~ó<þø÷â wÿñ‡pãè¼þ­?àüõß@óø÷ë/×%™†¹=õ•@³þˆësqNƒtI ‚›¤ÐÄ{GãÐ’ð#-©†Æðûðû¿6ªPï•eÖ²ãï¶ hüó(’„çž»ƒG{Ÿÿâçð©O?ów~V¿ù«â¾ñI¬¾òõÿõÑÿö¿ûøðŸ¼û=ÿé˰´ë×oÙP(‰Ù~¬è(# ÞõtcHRñ¿V Nö ÕÄV'ç¦.µ ²`‡Qd^æAÍÆ§5uŽr¹ý jÝb’bé …ÈffS–9Î&«.åå°gÌ9ÐèŹ“úOÏÌ –Ë<Ô˜}/ŒÊ݃•Ï5 ¨ªh;—y?„d7jØÅâRêE¶©ë²çÐôuÂ,•G@Û â ÊÑ«˜3ßcP¸0γÂZhvžeÖŒ‡œfø†Ym á`ÐŒ …V {ÚL£,]Š"Å¡ ³B³¤])ß™f !°YµãåKaýSi†¾UÎÅ9Éf®DÌîrÈÌ qMÊÜÍHç‹/½xz~~þÂr¹|è^æ6hŽ xÁ2/ï8C¼Dºóù4Uèj“œñû†aN·Ûè‘bŒ23wwnמÕêТâr~W¸«œër¥gùq&/¦K Ê85š6bvÅGå\Ь3ë«mr Íï:Å+€æ¯ƒhx•ïUǸô¼Âö= 2Mõqr:]Ézï<À³x3@ZƒÆã£#þî3¿ûÌ_ùÑ¥.©?-õIÝÏYî©bE’f†õzý­Õjõ|ä£ÿá'~âoÿ€Å#>êÁëµÌktÌÍ:”YH¹ð°‘‘Þw¹ÜØvMðì’cn–<Ðe$hŸÝ=v2*†(OAÇm;*Zóp3‚´\þá€"ÊЄ¥°%ØÔ®“Ku†»L’ä8 ûŒìÂ``Z? €Jã¿_÷˜ë¡ºPþÞ4WxË< áA\ÜVi²h™7 3÷s™pÁ‡èP)—¹/lÒŽíιF˼¡àb϶vGDt?0Ìýjn3ÌÇ)妥}ßobj[B É‚+Ž>æ»ZضñæUhT+ž¶ýœc™ÕºÌ˜9hQ%ÙÇ,䡯ì÷ ÃÔVÜ&‰@_ýêW·g€ßKøg‰eõß\4ç·œ«S¼Ê1Uy, ¬Ê4çÏ+,³þc=Ìg,ˆ¯,‹*Ë 3îócXg\ÅfÌ!ÊÙšS~ÏdËêÕW/¿+Ö¡U7 Á䌀n¬jùø^‰ }X¯{0&zRH‰B€_{ök{ô±GßpÏ;ä½n CÇ~ýë_ÿäßÿÁÿüKÿú—žþìÓŸ½kÁÔ6 Œ­÷ÉqpÕéœäðÝ,¨[ç|$=$ªC$7F\)˜)º‘8;¹é Ñ{E%ÇM«Ì8#ÑZkµ³—Äh›†ÒË®‰¾Mh ïÄsJ…<Ô¼‰DeæÅ¾Æ2½È2ëíµi2å&‘¥ëH…è‡ëßOÃä\á¬j¶O*…f‹},±›Ë,¶ÿŠ àTÕ+Š%cö »ÜCœ9Ë<Âî›ì>ªòç{ú9Ç9®ãzñ; ‡‚éÜb“ª{xûÀ4|hyøõÛ4L9L…ú‚_3Mñ¡ÌnHT³¬:†@ ¯ð¾ÜY ˜œY¶  hÕTŒ).ÛlÕ> 3ÌÏgXæ›’Mh¶98‡_ÊÛÝÌÔ ˆA½;ŒæQÞE(„›×ˆøÀûßó÷Ÿzê¯òŽŽêØ§?ýô¿ÿØG>ú±wüÛwüÁg>÷Ù“Žn„Ø©mÜJih‡Å´ÉEÒ¢é]—Å:)™7µ¤¹ÌäÑ 2Iݱ‚·Þ­£MËØ B1™Û^]ø´f¯Ùr£enÅvÜÓn pXdK‚‘êâoœS9Ã?v+QáχŽ[´U¹}‡nÓM•e¦ê‚žÁ´ìºB8Ú WŒŒ•ûrx5¤X<^ЮTÁECÍN& V˜‰×€ÀÆÏTœŠ†¶r.Uƒ¬ĉe5—9ÂMåõ¬mPÃyµ2‹Œ¶±…V~Jõb}B ¥Î-EB{ÿû>ðÅ·¼õ­syL™Í Ï>ûìG¾òÇ_ùôû~ë·>ñOþÙ?ýŒËÛ· ýÁë€f}nu™m@2ÍûdP© Éi͆ÒÜËLʵ‘I´(©ñõYã­ÌÈ £˜ûF6a1xÚ‘¹$3Èѧõh¿ìƒ[à·»&À è ÇÉJ5‚À4¸_d¿ÿŒI£VÈÓ\fJ3M¼_Ya™ãµì²Ì%Z°7•€ ÕÄ]g»a×ÌàÂT¿X>,I.*Ü«ªw—`Lr™òÂ,òªÁnßÌ ¢ê>bý©÷½éMoz/½æök¢' ŠVänfž!BNÐÖtÒ´^ÓC² €•Ï$\«š¡/ï’H¸÷Õ1Lhî4CfÝs€™ïM‡‚¦„¥ÕšçÖŽ¹CiN¥{n‡Ý…/¬V-gmPRsÙNú;!¿Üž®ÐÂΖ½wKÁ–¤Ç'þüÇÿðçßþºŸ{ÛÛ?™Ü]î"©®ËŠVȃˆÞ tœ‚‚…ÞŒ¾^5‘!¢sP¶fŸV)XŸ›+[ÐùéÂͳ¢•4Dk]d —Ä6.]a¬Ýhã57‰yxQ–V ¤Jž€Ü÷›_°ÌR÷‹ÿw–9Í$Ž,³lÌÎ˼}æ76oŽUcö –Éâfkj™ÇËYf0n+Pb媤ÀB‘q³©©z1(œµÇ2-¿,ûçÚ3fß&Ýÿ¿æ•~?]\Ð †gñlQI/á¥â¼IHU€»‰›U–éð*hÎéS€x«ÂNkŒ6o„¯•¤‰}-”Ê^k¬þ¿±=ì3É#wy‘º"UaUaYË KUPeu¢'¥]%„ÜÈ/à±³LdznX33HÞW•…±Ld–)kJáä^Oì³ÌÞ;žö/ÚiºkÍõo5wWhÜî.»~µì“ #ÍCß%˜EJÌ9 ˆœ‡¤És}¤%’Þ­-ç'aN³¡Ó‡ ¹Hó`½H(XRô~Ýx`#)(X•M2ÿ]\ €ebÕØ‘@íhCg½ªâ<ú"›Ñ&¬9 ~»®õ s™e ºH …ÑE ÈÏ:”‚—X©jÌ^ß©‘(^Õ2oÊ2¿=fVʹ @‚Pº¯X=WÉÌàÏ<`À›ñæÒTÃ9΋¡YAHH8ÃYñx§8-mBÒ÷áûÌáE«äSœÎ‚0‹“¾E‡›¥–°z+nb]^Ðz\›~!º%ô©+¦zõ,±LA8ÒMÅIB¯âñ I%\-UP{柣EY!èr¸R¡æMèq„r3[ª÷~Ê®]°Ì[˜ë¤â³ÙÂÒJýü¶ÜI ›#¥î hQJÞó_s!à €°%á—§ýK\ù‰Ýí¾5²Ì…lµ¼MŽÖ¥Á<×5¶j$5Ô<OÎDÐݳ›N`LCm¤ƒëDšbF­×K êVAÁ²ÓNö„ÊM•K…¡Vì •‡Ï`§Rtºpzi‹y½Tš‹pT69å\¦å*+Ô~»Xfö˜Ý3×6¹Ø{c™ã hà(M|mö…MÄ„eŽÿ6Ôid™SÇùÍÜ«ýÄZùWä¡Ê2wAS¸Úôª P¹éðg, ?…=]ñf.´hñ2^ž€‡z¼sœm’4EqÁxwt ·¬´µh‹Àh°ŠXg,fh'“”_A£ëèª]ÀJ*\nŽ··_r€KBôjPÖå,uIw(3“¢B°¢Re½ä\Í4o³I3ÎôwÙcº»ËÁnˆj{aݱ06å]èÑ Ú FƒWvÀõ˜,·œ·½Bó"_:ÞøKŠÙ±{})—©ÉMyóÔY¥t®\ƒæˆŠ›0IõêØiEÁÙ,:sæ¹ “ 38éÉ·À>0tDèú>öðØ“± ¡í£5© ‹>ô!o£§eÃoS´6­NúãÔàÈ©Vm8r³€…)Z£6k®y`«È‚504a)c€Ñ†æÊóÉ•jOÛä%moìQíJ;ršj.s÷p@6tFÝÏmk7¿—¡Í*&#iær+å2Ý !øþú°é~ZÊjåó—nÊ@7)¸MçýØl HÜÓÊNbvµ\¦K ÁjªÞ˼`|»»RÃiBYÆ—›¦]ßœ}Cì›wá>púùÓd™“g9–v¼€ªþ¯à•â0á¬ÖˆW߃ï¹hn½wÌV“Euœ%€9Ë J$„ÐÂK.3!Ç–K.^týºÂ2»âÛ'×u­8¥®Ê2“Ž(Y±¾x‰´g͵*-îf!$,kA¥Üvi—š^ËêÑF±¨|4r}6] N™Â…_eyÇÂ"xWY¦XŒ,s—™Œç*^»²Bpáí°ðä·ä¤{ÑÎý”/¯Ÿo–×Ï»UÓ¥utôM Ùu‹fèVmôj ÉC>Ò=0Jˆ:?ND…Ük*²• ìËŠ-r½ä jå¦ëÇRRD¥Ó¢ü¢öŽyÛ„>ÇžÙßLI3,s^1;Mf–_«o-‡DÇÏe+ui¼~+†fÍòo)4;W“\e™æ(UïÎ2‡„`5=†Q %÷Ÿ‘iÖº™LÆjèfRRõ E9 ùç Þ³Ì=•;¦†ïÀ|ONú‘Ižât2ðãâ¿ÆºØ'­ASd‹ù^ÐmܶҢ'ßãVÏr¨Ì†Ýq˜„WŽÙ`f0]ŽjÌ/¯vïlaÐ,$ó"`^Æ Ç¥¶T”>(&5ÝsÇËa¡R?uH|N•åniÂl£f^„·Ù(@¸:ƒÚ%éÃFž€C1IÁ©ØE[¤&´}°˜šÐ¤6v© æ-›$µ©_%õÇ ~”ÚpäÑEkÐX«6g&iGhCT` c@Ž,bøÍôœ‰%¦3ð9†tÑçxÃŽ@MFòÞX¦¦KÈ3ÙÍeå°l©–¯Â2³KkD¹¹óP‡_L¡˜u_¡ñüû×AðÊ,S“öÜäZKsŽj3C˜XæÍÍÓ±gf(u3I+fÙ0jÂ:7yÏ ËÜö ûnÉŽ?¿‡ßÃã‡É½ WA8ÂQ1¿˜eý ¬°šÜ˜{,眯ãú8õX ±íR.E€Ë!¤z\/¾!VÌ_G0žLÒÁ£hr¼žàu"•”mÀ°l”ÏÕ¡ÇBm1 UbNjàŠŠ^JDWËÒ‹¹F(æ2‡ÖÇÅçbHðŠò‘¤&!çíjÊǹºV˜žãP±”Ò)‡X·ˆ}S…Íøúü]ô¶­å÷tiÍ‚€ÑÔ{G@43žpµîp|ÜÁH™-=Z“‚5ÞÆ.Å o£¥Ö‚¯OúERÝMK¡U°¨Æ)Ú±Ž†¿ÿ-°A`‹ãs©t&¨ô‘Ýo]Å\«g– …l³uÀêÆc U§ÙÈ`¯žÙ@Ç£Wë2ó¹T`wõ29¤Ïâ³äÖœ/™-󦀙W¨ž¸È2¹edÎÉH…ÉfV`nqV‰þ Æ`¬ß»Š)„²…Ýv&¢ôJrÛûê5nµû®Ì7ãÍÅÖU#“<ÁI‰-V§s,žÇóz[9a‹ß»h#S’SÙÂf’Ëìa8FϺ­TULPd™p€‹"Ûr™©˜Ë€–M$`–¹ñEé\¹kÃp}E¿PèK2æQCœ) »mìt—ev@j‹JŽ¶Æ /öÚåœ9Í/ÞËœ2Ü`9L¿'@m™e“¼ÛïÄ#à¦Ù÷ØòÞrú<%“~|”üÚÂúó»M2{Z-]ý‘7¶ôÀ¨ÆŽeˆX,–Šl‘ÙäBÆ1´ŠÖ¢±ˆZ ã0˜ê„Šc×(J*«™Çs;UÅí4°,7¼˜äÔY.ìPQÌ2[çiÒ§Ê]a8ÉWØ]K¡Æ »+ç2/Xf©ÉôÞÎáÒ ÓDº–¹Wë9\¹í°ñ]–99çðª+K¶yõ޶úÈîÈì•]š“tkýùnþjß… s`™ÅÜâ ÜÀ]Ü-‚æËI~qÓšZ2"rbÁGTøóYæ=n—†¼jc7½NR£BÉEpŒ óËul%Pn¨£j³šŸ#k–~ù[66ŠbÕ <ÜÚmï3“a‘V!ñ¢³TÍe–ÂÀÛùÜ}¦9†×\MQ1[?ŒFÔýD´[O·;Hìrh¶&þ©4wX&G–i,ê-2‚¨ ~Õz¿Zxk×ÜÐúÂŽdŒjÂBÁ-B«Æ®)b)‹QÑZ#š°1äà)µM ´Y©Š c󸊥a¢†¸u(nÍ,üpPÃh“™†r+!ý14K…c¬ì`4ð´r.3o$J¡Ù±ý×~.óbÞ‡–ée–é,"ÒÈ2§€ÄBXv—ÁÁ¤%?HTŠúíãKåꃧÃfnì¼;6ÝHlæÿß·^h™7)†IEND®B`‚awstats-7.4/docs/images/awstats_logo3.png0000640000175000017500000000637712410217071016366 0ustar sksk‰PNG  IHDRf/žê(‘tIMEÓ $ήµ† pHYsÂÂnÐu>gAMA± üa ŽIDATxÚíš]hUǧ}‹N°…µº VœŠÅZØ•¬àÇz·ÅÝ»äâU#¢&!¹³ÅTDQIü€½I4A/²¢ÐE°n¤Ê.¶º£¾ÚQßê¬RÜ£µµïoæiã&MvÓ¯WÍÓf9ûÌ3ç<çžÏ™Õ´j‘VñwøðáÓ­Æ_†V­ZµfywîÛ·ï™gž¹ÿþû/ºè"áôööÞzë­7Ýtã;ï¼sÇŽ ¾þúëÑÑÑ»ï¾Û²,ëéé#ãwß}7‰\|ñÅòuïÞ½?þøã+¯¼‚ZmmmžçÍÍÍÁöÙgŸx≟þùÀ†aÀyä‘Gà|óÍ7¿þúë%—\’Íf/¼ð°zÛ¶mãv-°†T*uÞyç­]»öÒK/•«_|ñÅwß}—L&—ÜáéСC=öØ|ðøãúè©§žb,b÷ÜsOx*&yï½÷ ööÛo‡/Ы¯¾ ŽŒtغu« vïÞýä“O6\½ï¾ûdðå—_¾ùæ› víÚ% }öÙg{öìiuËŠ€kõ2 f{›6mºòÊ+/»ì²·ÞzK˜ëÖ­»ãŽ;Ød½^g 8^dÖ¯_¯Ä8íðTL‚)=ÿüó@ýõ× ó·ß~{ã7>þøã[n¹åòË/‡ƒÉ`8˜çÖ€d9¾êª«°ÍùîjHr´³³³p®½öZìôÑGýöÛo¯¸âŠåÛ—¦µì˜µZí¹çžCã×_ÏŸ~úéºë®;묳pÓ4ñÍ^xýÜk¯½öË/¿pÈlGcoçœsŽl L7ÜpÃôô4Î+_?ýôÓÏ?ÿ¼££ãì³ÏV2¿ÿþ;ξkãÆ2øðÃ/¸à‚†99˜íÛ·3øþûïd2Æ7ÞxãÄÄă>x_ô<ƒJm||¼¿¿Ÿz-•Jƒ&ãÑÑa ‹Óƒ—æãåÏõÇ«5ÈØO¥R¯r¹槺S™Î –’µ²™tZ ³*æ×2¢™X¦³3É$Áhjj °h93™ôÈÈ·KWE£Q lR«®®.„gffŽ //À«¦éÑ¥k 2/ €;µ=¡D{’ú³P/Ö½ºpÆûBÒ±«Âq=×ÖàÓR@–ÅØwaËŠ¤ÓiP¸Y¢aþ%µ:^¼ò®6§Yé¨r‘»à?U>±Æv\Ç©‡¯Æ­„¡¥RQqff •œbEiÆ1K@ lhŽÌƒGú²7î…ÇwÀ†U|g¬yfÒ4¢F3s4þkµºëxéd†õ\§JØ g3†¹˜¶]¬@ \¸?ÛŸËœ™”– fðãT,æ·Pz@ùüdЧ³)#¢'“ Ú l¤!["º"L8Ÿ/T*%8}˜˜=#ñQ RP>ŸçV‡ÉêÁ1ì>ufÎçÔÚÌ6#~Ä¢AÐquS÷ñZÚÂ|jÖÊ<¯æÍ9‰x2‰».­¾ŠOE£F\_ ·N|Étûø‚£rœ/ŠÛv97ØÛŸëecÌÐÝÝÍ' ¹lWe¬ðŠD¢àEÒ «LØIvÆxŵ'&¦úúú¬:¹ºÇÆFÃÖä–ݪS¯Uju»®ùF¯1 „™q³—l 2¿&°Kñ”e%¬j@ Är4.8ljj²³³Û´|=ˆôAÔ¼²‡‰0çŸÍnÁ—ª éTj"7áU½`žÔÑ S2Æ¢ …<¶E® ØS—‹G"ÀËœLˆ0˺u !˜A¥?ôwê~ÀÒõx6¦·›n±Vµ«œ.F—l±æ œ±&‘ÛŒú@8ŽÛ€š%Hµ•Ë~æ* ¦é Û ÊØSNmÎ-iŽx¥X%¶042ûvT­W»‡»§ ùc™o¼Ž#¾Ì 6ȨX&.)çl[p`¾K’ ­dTèQL3æ£Vž´‰úº¡7WÓÕµZÅ%Q =ØU*d€?ÕP©¤…o’ÃqººÚ}f<Â7ï'Áš~vÌþñÄüØÔ`n0fÅš…ÔH"À!5”„ŠTQ"Žª§§WÛ¹s'Þç–êX“nià%KGF4a¦ME «©¨ßdØH¹^Fu·Ñ#õºíºvX&1$å 3èDæìR‰dÎl©NáB@l&ô ôõõä"FDE¨2ŒA ÿsfœÅU_f9ªn™z Ãõœš™0£±èFPˆVÆj2K¶ ™ï˜®›Ëåh†0ŠTf‹ÐBêêÃÖ@/ µ´ÀYpœp'ÄNFG§(wå+°³,Çð©âx¡·—QNoI'Ó ¿ãPŽI†%ŒªUÈØZt‹eÄŒ†/žÞ’K¶xI'è¯Ñ©j ²—ÐcZ';1oÜüí¶Þ’ŠC?¤Vjà:‡´LCaÁtƒ<£]©„÷¨~>¹Eüo”pMÛÔET³%0 A›oʪ ö¤?`²+JÁT¤eN¨÷‘[D’úL±Â ¤ì¼õ%ú.—?Xäe¶{» Rf“U+VÓÏÁ(”Ê>M_çŸ ŒÒ5ÿñ€«7¢SoÞmbîx享ŋ´2G¸®»QTÛ3È^\¼öï¸z¾óB9Ï ¹ñËçâ'ÏûÁƒ%²‚æIEND®B`‚awstats-7.4/docs/images/screen_shot_large_1.jpg0000640000175000017500000001416412410217071017470 0ustar skskÿØÿàJFIFHHÿÛC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀ Õ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?¾¾¶2q9QÀvò›ŽyûžôßøF-^FVŽeRHÜ\Ž™ÆÊÛ•–ß$Í“ÎÅ'·Ö¢yRHÀh.p¤yG'·­8Ô’Òâq¾¶2›Ã¶ÿ8ò%+È‚yÿržÞµW]‘ÊA^N؆?ñÚÕiÔ3/•rsÁ"#üÿ_´€Äˆ® þxŸëGµŸpåFTž¶W!•†Ñ’¢!ƒÿ|Ñýƒnî¢Tî¸ü—&´KÇ+’VñI #(ú±f ›o#’sß¿Z=¬û’&LZ ºM´,»rHr#?û.jTÐm1’dõ#8öûµ¥>QÊ»÷˜·ó4ß³ ûüÉ3œãyÇåš=¬û‡$L¡á{ÿ-nï¡þ£Ã6#þZÜÿßCü+ZH|Â¥˜½6’?—ZY"ó1¹ˆÇ÷I_åG¶©Ü\‘ìe Ùùkqùð¥³òÒãóáZ‘Çå®±ÿx“üÍ?æõ•Ö}Ã’=Œ¡ Yùi?æ?ÂìK%83L»ð­R g¯¥:&1tçêÍéZ~Ö}Ã’=Œ‘£Ùùm/ýô?”i6cþ[Iÿ}ð­mïŒo~ÿòÑÿƗΓ}úçï·øÑíeÜ9#ØÊ] ÿ–²ßCü)F›h?å«ÿßCü+LHà½ðF?Ö?øÑ½ÿ¾ÿ÷ñ¿Æk.áÉÆpÓíGüµÌ…(±¶òÑÿ1þ£æ??3àðxÇúÒyýùÒWÿ=¬»‡${E¥¸ÿ–ùŠQmn?å£~b®ùýçéõ¯þ4èåxØ0g8èG#òÍ/i.áÉÅ!þZÌRˆ¡Æ:ÓþЛû±þGühþЛû±þGühö’î‘ìgˆëHé.Ñ3(Î~R9­/í ¿»äÆí ¿»äƇ6÷` —C%mbÀ 4„(ÇÞÍ$æÜÊÍæn''ŽÒŠžfW'‘~k“ò ¶·*­€K`ôÏ#R ’U[ìöã#8Ýïô©$½+;¡ƒ…}»Œdæ®Æhy[¿Ùª°ŠÂk2@Ý$àf>õ,B ·y~YÛ×÷}*}‰ýÅü¨ØŸÜ_ʘQpvFyÀ*»2 E£g•„ß¿áWB(9 ?*«ºô;ˆÅ·—¸í,Äg¿ZŠ9RG öW=ÚéïïúU¯³§÷#ÿ¾DûŒ‹_®æ©`iðßiòAÏËå’<ÐRªFqö}ügåˆk\¢±ÈÏŠ’Qre&)'¦GøK8„˜%s'm$ŠˆOú9o÷b(·BÙúÆ*º­þeNœŽ?¼måXç÷{°8÷ÅMötþä÷À£ìéýÈÿïR#£~ïÍ.G¨ ¾ÎŸÜþø}?¹ýð*\QFG¨ ¾ÎŸÜþø}?¹ýð*\QFG¨ ¾ÎŸÜþø}?¹ýð*\QFG¨ ¾ÎŸÜþøË %w¢|ÇdsVr=ET¾–bŠxQ+mW!r@çÐsM jìP“U´]BkD\À?xáöõ«–ÒC8P"@ì2@ŒPs\ÔºLW)p [ñ5¡—a˜¼sZ¶Ò$’Š(¬Æ‘q¨îeÎŒlm+Ïò÷¯XWHæöVq<;ŒžÜ®;S@8jYÆ&ŸöúÕ,RÜ)h])Á!GÖ¡³&!“sÇñ9ÿИþ•kíKýÖ§¨=ܱ¹Wu 1ÆÏþµl)o10Ê:þU^â|ÌÄ+u«ä ûz%ÐvŽl Ž#ç®+'Z ØÑQ›W±¦’ܺ†R„‡’F¾òÏ•åoí¹F+:+øÒáO•6Ïó8«é~ŽáDr œdŠ=¼;ØÏ±ýc-:ÇñíSÆ÷»™åîï´ T’N±(fFqò©oåM[¸Û¢Ë×ÄÃúRöðîgf®¿Øü…®¿Øü…:;„‘ˆUcûÈWùÕ;ý^+–'†g,»²€üý«JsU%ËY2÷UÙku×û£u×û¬³â[p3öK¿ÁøÓSÄöÏœZ]ñë?™­ýNÄûH÷5·]±ù 7]±ù ÌOÀÎZÜŒœr£ükGí‰ýÇü©:S[¢e^œwc·]±ù 7]±ù õШ1Êwu Ç×ï¶'÷ò©ä—b~³K¸í×_ì~B×_ì~B«]jÑZíÝ Í»?tõê«xŽÝM­Ñú&­&šè5ˆ¦úš{®¿Øü…®¿Øü…e[Ù/9ÿ¦U'ü$0ϵÏýò?Æ–½ƒÛÓîKªAq<‘ˆ¶d‚aïEhnÞ‘°ã(§ô¢ Ø[ÇÉÚ§$8'޹èi°\nrU¹ÇSŸÄÔw²C½†Æ 'Ëaëžvšu›Å$Å|¬ç'/žÔÖµMrˆ²o<¹ =†=Hõö©‘·®v²û0æ“Ê9òÓ=s´Sêº *™tß&/Œ{XîPÉòþ`úήUvŠ0”‘6äæïˆ6ó¨’«Ábc×ÓÚ­E*H£ËeqŽ æ ò®³Ì‘ß4«èNe‹v{.XÉàuõ¦Í Ρd€sÑüª.÷ ûØÁÏQ²÷ÞÇӓަ€om²‘ °®é¿žjc“Ø~u\%æ~icÆ{Ô*]ïù¥M¾ÃŸå@Éç<½ƒ×5N]=¥œÊÌ2Àg l~•`%ßñJŸ€ÿëR2^neò(è.Cþñ¢+èªAþu';ó¨ ]îlJ˜þçIåÞÏhÁÿw4ébžU*Ì›Iè øäTK3C$'q# »¾æ¦Ùy¸~ú21Ï¥D¹óH›=sü¨Qæþ}¥±ÉR¾ò§fÐݳI°ÿÏGý?Âÿ=òá@n- N²É"c´îôx«p¤ÑáY£1ª€ ŸÎŸ°ÿÏFü‡øQ±¿ç£þCü(yÝÐtõª·É½–DŽ% ä±^~¢¬ì9ÿXÿ§øPc$`ÈÄ{þ–ÑB_ËûTYfWÍ|–ýïR+U<Àƒ~ÒÝÈàS|¯öÛaþ»þz?ä?€*·Eÿt*)Ò¨WÚ:€­v¾[Ê̼ž„íïŸóøUÈ"·'rgSËc½Axù“uÁ磳 š;•Ù„ŽV tÈ'ùÖ®î",ÑMËŒ”döjuf0ªoû2NUI8Íuÿ?ó4}šëþ~æjí\ _fºÿŸƒùš>Íuÿ?ó5vŠ./³]ÏÁüÍUžÚøÝ$i©Ùј&Üä sÿªí²6lgh'€u!&¡*0xàu'?ÞhLÔ¹Úÿxž–óe…³Ô˜¼cVË¡ùG±úŒP‘ÝÇ\Ë©‰ X¹ GÝêxú†V/¶ÜΨþXmÍÓ?*cúÕIuM u(ÄK¨¸ì[yçòª»½¼íø\ÍÔV¿“™Rxй#Ì`‹ÉëþE= ¹tV[“†šËÔu”ˆ)Y ¬êÀð6†Ò’Bc©4-÷#‰Q@$u+É©çv¿•Ëæ³·¿ šßfºÿŸƒùš>Íuÿ?ó5V r+˜žDV‰W<·9ùTÕ…5õh•ä+èðq×¹ª»½¾Bö‘µ×©kɸói;ˆ$r{cüißfºÿŸƒùš¥m¨†Õ-àd%ä’: äÿì‡ó­¬‚Hdu¡Jé>ãOV»2—Ù®¿çàþf³]ÏÁüÍ]¢‹”Rû5×üüÌÑök¯ùø?™«´Qp)}šëþ~æhû5×üüÌÕÚ(¸›$.NNÑ“øQCt_÷Gò¢¤ºóKËÆx+“Øã 5%¢®ìþð>9ú*Ì“=ËFcF°¹aîjݤ Žd’5FèñõµÒÂ-ÑE˜ÂšŸtýOó§SSþtê(¢€ (¢€"—”u`EsñéR}¶[Ò3é¾sjÄ…¹Ž ?J,n$rà G|ÈñøÔé#l¹)þÏ¥3ηÿžÇþú4yÖÿóØÿßF‹œá÷ýŠLzaz篮jIJ²ÆOÏþÈïùÓ|ëùìï£Goÿ=ýôh°Á,‚B¦ÑÔpÜqùSçvè-YÉcΗηÿžÇþú4yÖÿóØÿßF‹–îŰmZ2 Ä*³Uüëùìï£Goÿ=ýôh°(ªþu¿üö?÷ѣηÿžÇþú4X U:ßþ{ûèÑç[ÿÏcÿ},MÑÝÊŠY6î>î>”Torÿx~tn_ïι7–Ùe9Žèá±ò¸Çåž•b+¨ep« ƒ=Û‹ŽÇI¹¼?:7/÷‡ç\ÃÞ*< ö;†óX®åL„Çvô+MuQ‡9ço~7`JçE¹¼?:¯ö{w%œÄœüÇÖ±ã‘fau/ž½¾µ—*›ñi3me/\úzâ‹Ù\^FïÙmº?ï£GÙmº?ï£\ýÅêÁÒÊâOÞù=sÏÓÔS­®Òpÿè³&×Ùó/^zôéC“[ŽÆÜÖöÑÆYP1Æãëõ¬µºHsl™0Ç!·Vê:ÕY/‚I}ŠbM™ÇÝrxéÏéKè•#/e4%ßn× zñýhæ{‘(·³5ì– üï2%_.M«†<ª}}I¢úÏMXZYí£”(ç<œVqžœÄÈFwqŠoÚíüï,ÆÝ ÝÆ:ãúÑÌÇgbüz]ÃͲˆÚG 1ÇåÍYMÓ¡%¢·‰ êWŒÖWÚ-†$öÇ®3P›ûqv¶æ °Ë»Ì 6qŒúФÇknoý–×û£þú4}–×û£þú5€×ЭÚÃöy •-æ»G$c×ËkýÑÿ}>ËkýÑÿ}Â’é ŠÝä T¿Ã“ߊ’YR(W…¾c½üÅÁcgì¶¿Ý÷ѣ춿Ý÷Ѭc4GZnõä TmpC¶R°9ù» ú~îÄný–×û£þú4}–×û£þú5€×˜ñå1ª¦immÕ¤iì_Ùsν3;³¯ØVÃã×ãÏwçîìÞï~ç|çœ;[Vöû,ºÞ øQ-Üa½WñcÙñîÑI·^£ª~ïáwÿÑk?”Cdx¢o°',Ë’¸Þk|Sæû.Ô¼çÀþé‰Ä³gÉWÉó.*/ôLD¢ýƒªªH[ƒß]¡ÆË»[öìýþÅô‹¦Å«ß4-ÿëå¢í¼ã£ýaEï ëš¼%èmnll¼ÜÚº÷pçô¹Ä2Zr9±üò%~:ÚUTè5tu л«Ñîn­¿15;;»Ìl//?—¢ƒ €VÓ ¤WÝôFKeÍNÛhîn©_ZZšr_-¦®ɉåo‡e@ p^]+Hotc%åH_X,–E:ƒhæû'?ù¾óFUU{â••I&ÎgR‹øX`EÓu W+@ot¤ç|ú†ñò޾ž‰AI*œEªN£5žþnìÊÞ竚ÎÍͽügSj.™J¥°a躦*+@¯–Oo¤`8"m˜¤]è>Ä(J!¼MA“ðîn>Y}ãÆôtW,;?×¾˜úô|:u{öùÀ‡UQ*@oøØèĸ¬(²´1rr¤ôi”S(k†+ n;3µÔ 5F,ÖkJ¥ÒŸÞN§SäÑ>Td#æÑ}Ú×7‚B¦Þ@/8òtµHÖ¬G¬ðÏ<99ù“³SŸÏBÖ}9÷ì›ÔÕô·ÏWWo¥ÑŸ+|º‚w ¹ôŽOŒ.„eŠmUÙì’#ãz(kæÇÝ6}þ_ªÛx—f ,ßL§WŸÇV0¼>M¦½ôFºú#¤Ú Ë™dÕ((«Õ¦I®|ýQ]Á½™h1•úìæêWþöÅß3·Ÿ#½À®„owÓ{|a´§#ÊÁæ ƒÙJ òRÃ8³7 ìÜ‘Y)(«@n°Á ^¯}ôé=;uñ"²›J%Û×ÖÞ];”‰e—ýI».z!ùÀNÊXÙóÁ¸~[ªa(ŠE‡ñ¬ÑŒkGr­Ä™íÈhŠ¢tLDséí„ Ä5\b7Ap¯Æþúø±$ÝY™·ž*-ƒßhÓ;É‚ÖF›Ó)±åË| : ãÎ $‘®È`öû];R®(–Ãgûq=Rtb$—Þ FƒyɆûSÐ*b7}ëæ_?~"Ü¿“±æn»­êDoxx ÿ‚ìòãœE0¸»l²Â¡ÄãŠ=Äk´+ŠJÆfØ>UbŠ™ ±%5¼É£E øý€ÃD¸‰e@›^]ûó×÷…€pè ø­ycBzöŒ¸‚VÎÓ(×à6!Ç!,7×ø¯)ˆVu sß±0ÜbSÌD‰(Pì¸Ë¥wW|9h³ ÞÌáÞújí_?) þtgÞŠù-ëí°@ïÄàq -«ø~äP'¼$p0Â]AŒà³p£ÂàÂEö?†¡u²àˆS1ïTY!}$Äkï~>½õ€¶þ“7ƒ2#\*À{kuíáÃÇO•ÂÝL¯•ŒY³(H‘qÝ€ÂÃ’|çB×ÇÚEtPj-.mÁÔu‚‹;§Bôb]–ÅĈv©X‘)w0 "àÍ.(Þ¨ÊÈoÃöí—jB_ŽM2­zW¬=üýJÿ=^Ëj·, …m”(ã n~ÐæÁÅ[. Á—]e0‰Ý¸N%›€k%ÂÛÊ}x$`QŦb˜OÙçÒCŽ×ƒ>—Þ/Mrf"Ø4÷µ´^9»äïïÖ~÷Þ=ЪÞÞ^ËJÂ*Ñ#‚ÖñeM÷§¶76COc!þ^ÍéTYR#¸åúé¸ìTVà¸òe!zb9:Ñá¦÷ʺ`mmmµŠÓ{ë‹Û™;wïÞY‰õZ] I.Î’‚ßUT4˜§¶ à ,bitцëv_ CA(¿Ïs £oE¤KûÝôÖbô†š›Cmw àÎÜT:9?ŸYYYÉ ·ÈU¹spC!R4#Ä=ÎèåÞLºDpã¤È †.4Y²ê C—Ç’Ùs°GŠ×™q»Úâ¹I ÷Œ»èÝQ{ ø5Ûšëë«C €·zjif&‘´©›àÃó™LȵŽíõWÎ}B©tïÈ Y^ThàÆ ô‰*Âå‚ s‚¤Ú[·²a ¿KnuÂP²S’½JI´¹ôŽÕÖ¡/·Uïܹ³¹Ílii½±h±ªJ#\ÜKh‡ºæ+]pKšk‘¤P"^€¨dá"¹È¼È ! aEb²†­¯JTæÌHjvJtX¥*µ(/½m¿…FC[=À­okoþ„±ûi:ýÁ%Gî:jYn¸ÈŠÔôq1±»è{ ƒË‹t O(éù›&•×`¬A¸>]ÍNQvˆg]"kÞ®}üq.jòe€hNê¥à¥‚ŠÉ "s6j!Us²• .¯¸òáb hº–÷-Ã%sš!ÍðáùwBîÍšbWN8 ¼Ç¹H”] ÝöX—W\ùp‘^•…€ê-‹©ÔPSõ…þ_ÐèÓ‹K¿¬¹Œöauõ‡—uùòž®\ùõÔÌÅÄÕäüoç®]»†Îü[°@¥O¬è3\Hó¤‘ HƒniN!IºjWD4ÆZ²,›€Œ|¸$yL£Üpá.'Eåt=sÇ´pß~Xt샓´9 ¡híkžœ<3™÷çÖ|2ÕŽX!|‡††æ9\2†´’%Å—-Ò Éj3‰¬ª,>D…eñi·¹T^)qçvÉP¹æéªgJäUU bq¸ª6<Œßë ÷w×Ö©n†:£ÁÄT46yæ,dÞs–u~t ¥ Ð TBá|„î+¯ðWp¼žC9›$]v´Ù·Ì†«HžæžnSí:+. Na,ò­)×]´o¹u³â25Ò1Ð#=ãc Xf˜v«`î;‰MïÌÏŽtuµÇ€Ø^†ÖrËy`IîZîb7{¤Î H”X, %G› ¢ؘ NJáç{NN—á©å[Ù™’œ-2rØ%¼n“•áaÜÿñ¾‰°î;uYeu3”ïƒ7Ÿš>r¤‹™<É%´²äTvXP—€4 îº+jN$ tŠ%Ê•èØ,Ò`&HY×ã¬Áï’é[(*œ+vû„­ó3=ïNðšôjÚÈh÷qøÞ¼? &zÇÆNì=xðv^D ü>Ö·±ø¤(S¢ç7 LCØA^Y™¤¨¬“ ê‰/ + ûY“(y Ê_Ú"â™%dºN¨a£ù”,“Ù§¥«AŽcõBAâ–øEz[Bû÷¿wñíâp{H®{™Çä ÍJ…“ z!Ra Ø Ø&°öJ”Ýëæ»ÁkaÆ36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀ Õ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?¾¾¶2q9QÀvò›ŽyûžôßøF-^FVŽeRHÜ\Ž™ÆÊÛ•–ß$Í“ÎÅ'·Ö¢yRHÀh.p¤yG'·­8Ô’Òâq¾¶2›Ã¶ÿ8ò%+È‚yÿržÞµW]‘ÊA^N؆?ñÚÕiÔ3/•rsÁ"#üÿ_´€Äˆ® þxŸëGµŸpåFTž¶W!•†Ñ’¢!ƒÿ|Ñýƒnî¢Tî¸ü—&´KÇ+’VñI #(ú±f ›o#’sß¿Z=¬û’&LZ ºM´,»rHr#?û.jTÐm1’dõ#8öûµ¥>QÊ»÷˜·ó4ß³ ûüÉ3œãyÇåš=¬û‡$L¡á{ÿ-nï¡þ£Ã6#þZÜÿßCü+ZH|Â¥˜½6’?—ZY"ó1¹ˆÇ÷I_åG¶©Ü\‘ìe Ùùkqùð¥³òÒãóáZ‘Çå®±ÿx“üÍ?æõ•Ö}Ã’=Œ¡ Yùi?æ?ÂìK%83L»ð­R g¯¥:&1tçêÍéZ~Ö}Ã’=Œ‘£Ùùm/ýô?”i6cþ[Iÿ}ð­mïŒo~ÿòÑÿƗΓ}úçï·øÑíeÜ9#ØÊ] ÿ–²ßCü)F›h?å«ÿßCü+LHà½ðF?Ö?øÑ½ÿ¾ÿ÷ñ¿Æk.áÉÆpÓíGüµÌ…(±¶òÑÿ1þ£æ??3àðxÇúÒyýùÒWÿ=¬»‡${E¥¸ÿ–ùŠQmn?å£~b®ùýçéõ¯þ4èåxØ0g8èG#òÍ/i.áÉÅ!þZÌRˆ¡Æ:ÓþЛû±þGühþЛû±þGühö’î‘ìgˆëHé.Ñ3(Î~R9­/í ¿»äÆí ¿»äƇ6÷` —C%mbÀ 4„(ÇÞÍ$æÜÊÍæn''ŽÒŠžfW'‘~k“ò ¶·*­€K`ôÏ#R ’U[ìöã#8Ýïô©$½+;¡ƒ…}»Œdæ®Æhy[¿Ùª°ŠÂk2@Ý$àf>õ,B ·y~YÛ×÷}*}‰ýÅü¨ØŸÜ_ʘQpvFyÀ*¤ŒË#¶„¨$²´(9 ?*Ë•æûS"¼À3‰J¯¿…0¾Oùõ‡þø£|ŸóëýñLW¸–MÁæOE0®HïÏcúFšvÀ_=Hàâ#Ó×Ú‹&ù?çÖûâòϬ?÷Å$â|¨¸xÊ`’ð¨ÏùÅ_:|„޼Ñp(ï—þ}!ÿ¾*©º¾Q“¥Ûî¶NÁÔ üh+. ÆAìh¸ÿk¼dc›lÌ0äÒ›‹îÚ]¹ãûµ’(“;#rrqÆiØOî§çEÀÏKŽm!ÿ¾(ß'üúÃÿ|V†û©ùÑ„þê~t\ ýòϬ?÷ÅäÿŸXïŠÐÂu?:0ŸÝO΋Ÿ¾Oùõ‡þøªo¬Y£v³R Væû©ùÕ ô‹ Óþ=mCK•³ùЍ¸ý¡;ô) fÌôk3ø Oí»ïÙ~ŸãW£Ò4øã m-X篖£úS_EÓÙ‰û-¨ ò—Ž>ž¼ÕÞ—fO¾W‡R‚|ù+jøë´f¤ˆX¨ŠØ‘ÔéW!°³ƒ;ku$`•P3H–1¬Þaòˆî<µ†j[‡B_µéb©»Uhm€÷ZAzŒp±[ì£üjô¶°Ë Ž%'¹PCI”弸y€€w¢ð_Ý—Ú$YžX(>U^(«Ñ?ÝÊŠÈØ”—sœŽTuíÕ~éëi!•w·¹Iú}ßëPË)xÒ@bó™ó€@b߉­ »˜|ÀõãšÕ¶‰(¢ŠÌaY×6Ñ™DÂi7›ÉÞsõÏ£Y÷j¦E%’HÄÍŽ}E>ßOµöð–aó\òOÀ~U#iöLIkXI#(9©a™e^3¸»*Gó©(>æÆSË·@ÁÜg?‡SHº| 1I VAÈýЮzþ?έ]|¬…â@~e'òÇJw)ÂäÑNÞ€¶¶éa@‹ÐàSÒ4ŒŠ“ÞE¢Š(¢Š(¢Š(¨Þ(æVE #ëRR/ÝJ@ªˆF=?kA1f@IëïÆ?•<ôüih ´€`SÞ$ȨI>ôÿâJZc"ȬŽ2¤ò(H£FܪõüsüééúÒÐ&è¿îåE ÑÝÊŠ@“µNI pOsÐÓ`¸(Üä«sާ?‰¨ïd‡{ ŒO–Ã×<í4ë7ŠIŠùYÎN^6=;¨­jšådÞ( yr{ z‘ëíS#o\íeöaÍ'•så¦zçh§Ô;tU –Pë’Ìsûǯû5~©\d†#®16Áœ÷¤±Á¤´¿0âgýsŠSkÝ0úLßãíKl›Wq‘Ø·P_pJš€+I Æ‘ª–?¼ç‘ëý:SÐ¥Hxè;ŸåÓµ:gTÙ¹€Üà ¶3þ?JÔÎè dÎ?Ô%Q@Q@Q@Q@"ýÑô¥¤_º>”Ÿ-!éøÒÐúRÒúRЧëKH:Ÿ­-Rn‹þèþTPÝýÑü¨¤k弬ËÉèNÞùÿ?…\‚+rw Vu<¶;Ô™1‡\Îqê;0©£¹]˜HåbL‚jîâ"ÍØÜ¸ÉFOf§Vc Ι\« ™@/þ¬:ß±ýkF©ÌȘFîʤu>¼ÕGp+*+y9w’.:îû¾§Ú”‰ÉÝö»…ãE‚}>íK¶L©!îDôúÒ“î˜äùzâ4ç߯ùÅUˆYn ñy89þüGÿeü(a.òâêpOð‰bÀüÅLú•“8?òÍ?Çüâ“d™$¤ýÈéÙ«t%µÔ¸ànåç·ËN1ðöœ xùÿÇi»%þ俌iS^¿cû寥ŕÀÚ“g®s?øí1bÙã³®Ò~`ñ±<úmâ¬îZ7× ÇëI~Ñ(çñ…Áü¹üêZšK"3Is+uLoCøå@æ¬$%X4­È$súS,³ä°$ðǨQüªÅ+€˜ÿÿ-˜ÿG$nñ­õ?Î¥¤_º>”ÄFHÀyÎ~ñãùR4NX‘;€zŽ8ǧãRŸ-4.6‚I8äúÔK ¢]ÆåÊçî`cüjoâJZc!e`®Tç¯ZDÔå¥fèxïþE9ú*Ì“=ËFcF°¹aîjݤ Žd’5FèñõµÒÂ-ÑE˜Â©Oi˜÷aúù!±Ï­]ª7|Ô%Wïõ(ǹî*£¸˜ÃÉ&<úÿ£ ã¥"Æ#Ê À'½G§_ZA¸^‡þY?¥.oÜ\õÿTÿ…h!«À>B‚1ÿ.Ã<~4ôZ4Ø{í¶Á?‘¤ »G ?vÿç½4ª“€Ÿ—˜ŸžÿÒ€4Q· 8aþðÁ§U·ÁcÆprŒ3ùš™"š5! C'=øÖm!–*¼*Dò¸?òÌ óëÞ¤A>ïÞ4e}Ïó¨a .e .NrB‘ßÖ¤c¬Ô¬$Ûó,'éV*µ€'ÀQóœíR3Àõ«4QER/ÝJZEû£é@éøÒÒŸ-'ñ¥-'ñ¥- ê~´´ƒ©úÒÐ&è¿îåE ÑÝÊŠ@6õ·1 ñœ`ðÚäRÆ0.áäc9ooöª™nåԄا€g¿>•fÕTùá°3Ãc8÷²m!-Š3+1ަ¬GG™çÕ‰þtÈí£F  œŠš¢L³æ7^k· ŽÎe'òZЬù¯eI\Å$®1ÂkÕN-W<ðe'õÛSÁ,­gˆÆùûªwqõÀªÚz'åGö„Þ‰ùSå`hoöûæþÏÿ|Ö(Õu¼ šŠ)7p Ï–@²8؇æ<™­ Í•XÍ'ÞÆî1=ýimaB • 㑎• °ŒîýôãpǧéIO! I"È,€cÛù~U/)[íwGw?w_|V•Ç6øž:|ß¡§Æp™ààpNåZ{Y÷ŒItHÖBíÖß_8ã¶=ÿ—­[ŠÆ=?îË,»†šß×ñ«S½ðNʧs׿ëíKwÎÜs×§ÍéØÒu$ôl,$H]¾xv®209ý*G¶Ð®]sÝx4Ûu“j3JBãîÜUŒQÿ}T ¨tøËóçëÇò¥û qûéºc·øU¬Qÿ}Q‘ê?絛¢GŸžGÏ÷¹ÇéRyûþU&G¨ÿ¾¨Èõ÷ÕS»ÓãºUS$±àç)Æk*=3qåµí×ã÷àžý±]FáÈéýê¯ü}¸!±Œ‚@ øµjrJÉ…Œë! wu•éûÀ¿®)èqù¤˳Á8óAÇ8éoç[2ѸãóÏó¦[‚2[¡i-ËFP R}>”Rµ¹¼?:7/÷‡ç\›Ël²œÇtpØù\còÏJ±Ô2¸U†AžíEÂÇI¹¼?:7/÷‡ç\ÃÞ*< ö;†óX®åL„Çvô+MuQ‡9ço~7`JçE¹¼?:¬Ñ!lÆA'‚G?¥dG">ÌÂê_={}j).U7âÒfÚÊ8^¹ôõÅÒâò6–1þ¤Æ8ÿ œ@`çü+›¸½X:Y\IûÀŸ"ç®yúqúŠuµÚNýdÚû>eëÏ^(nÛŽÇE¹½þþð£sz'ýü?á\Ô—Á$>Å1&ÌãîŽ9»ÿúÕ„×êq‚}1Šd—–ñº¯–ì‘•ÁÆy¥Ì;æôOûøÂÍèŸ÷ðÿ…sÏy:(˜1##`ýie»‚6ŒÙð\qõ£˜,t›Ñ?ïáÿ 77¢ßÃþÏItEnò*ßáÉïÅI,© +Âß1ÆÞ„~bŽ`±»–Î~Oûø¢XäYŒ…ÐäžLã5ŽfˆãËMÞ¼Š®`ÊV?7aŸOÂÄoȨ(¤ž»óý)±££gtdc Žüv¬¼Àÿ)‰ãŒw?…:;¡#cì’Ž¸8àã𣘧’}Í Ëè-eX¤$°Q£"Š‚Þù,˜?ÅÞŠWÿÙawstats-7.4/docs/images/screen_shot_960x540.png0000640000175000017500000052315312410217071017124 0ustar sksk‰PNG  IHDR¿>nsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÞ 6æ¼ltEXtCommentCreated with GIMPW IDATxÚìÝwtTÕÚÀáßiÓ3™ô$„Þ‹"6@ bA±€lØ+*èµ! ¬\+¢¨(R¤(H•Ž„ÞCHdúœòý‘©–Oï¯ûY°VræÔ='gæÝåÝ’eY‚ ‚ ‚ ‚ð7‡)))!==åË—ãóù0Móut]Çår‘*ŠLAAAø»’$‰`0HFF†a²\×u¢Ñ(’$!‹¢AAAþîð±:5K’ ‚_AAAáŸ~AAAü ‚ ‚ ‚ ‚~AAAá8wÔlÏ@Y–DéÇÓ´ðxhñ¸N,¦×|AAáødY ËN§í?ü._¾UUŽ˜#IþJ²,£ë§ŸÞüí§¨ÈÏöíň)®AAáx$¼^'­Zåþg‚_E‘©[7™Œ †ñO €e4‡z]7aÒ_KQdŠŠ*ع³ôOÙ@§N‰ÇuQ¸‚ ‚ BM %‹À㈪*ìEþ“ë5øµ, MS±ÛµpQlû~)4jEý ‡¸óŽš¦þi­µÕ÷¸‚¦)¢`AAÂñ0.‡SÄqD–eø“š"CKÕ}ª§Þ|-×Üp×]{ ÷|`ÃËÿâ±Ñ³ñÿâ®L¼énÞž^€ DvÎãñ ogÒÚ²c®ÿñwñNÍúáóxü‚_Zÿ?m/7œz7>·JÜq‚ ‚ ‚ð?®¤¬Œ¥/|GeU†i ë¢‡àñáÏëƒ{ôàWRñØvóïËNàÆwRéÏn½í”57± Ø:úq†?7Ÿ_NdòékÏñöÌÝÈ€#»G 匆¾cnñÉëÏóö¬êõ9í¹úWÖÿÏJ'ðzlâ~AA„ÿae‘ 6<½„è‹aö.ÜA‰¿„p8,rÄü9zð++8+vóÌ?ºª5ùšKw3b‚E‹ï†sç®0ìy_ïÛØ¼p®Ôºh”çÄ&õã‡0lxí|>Œ:éÞɰå:¶lÈ#ß–@Ét=!Of.u2|\tßh潜IÀ÷Ï׬¿é=:µjÈóö;yú”Vh’›d„$Õá…qâ+žÆ'ùxriŒøÊçH‘$®Ÿ¼ðóqÿ³i”Mt;Þ–gðCPøýAÇMä¼!ÏPfzé³¾$‘š›Í¸pÔ„øk_»ö’—ü&õ±Û$Fͯör’$qÒM Ę`áWèl[»„o¶ùÿ^§mT±hþ\V‡ŽïÓ´ŠŠ).‹¶´’•3fðÕ×Ó(Žqa/]ÈôÙßS°Ûÿ‡ÿ~+÷®bÆŒYÌš5¥«½cãâ|3}:+ W1ê“UÄj‚­­Ë>¢W»ŽlˆþÇCAvNy“û<Êæ?üX8u$gžyEÆÑbÊ›ÓçÑOþ¢w²Š÷®º„SšŸÏè™»õxñâsyóí)Lœð!»Ã‡o§èûyŒ¾÷&î¸w 4¶ÿdؼòÅ|9y2OÞõïo¯þ ûÙÅÜ2úm¾ž2»žèÇôòš wÇ÷¼pã…´k}1KŽˆ‰£Lw'Ÿ4‚í¿ë½*äÙq×3ú݉Lü÷h®{í kÕ‚iÏ3â®Ñ|öù§Ì[¶žØ/Dû±òi\Õö"^š¹Ádžõ4“§Lá“ÑÏÐÄDAø¯ ‚Ì™³„{ï{‘k?Ëû­fÍn…ô”®83LÇ&:ïeÀ)»èÙ²ˆª­?±rÆÌš´í«à//!n˜G´ä–•ócßÅh!•¤—3ÑÎr£MªVûÙWRDUUU¿!€þÔ£w6ˆ‘E«Ëoau×ÓÙNƱü1ê_:ˆüKzÐ8Ç0"TNÿLd__z\ô£Þ<™ÃßEs«@•@è¸Ï2ñ¹»È:ÏjÅ …ô&à'Z}àßDЦóÙœ}F:g¯ëObj&ÉÀ…cwÑß2øµÙ3Ÿ‘£ÆÓóõ‰ Í/å;.@*˜ˆ5âì?ቜ?òŒì\ª;ÎÛé>𬞷R¢þ§¯N"ëÔÞ «¡ÞÝ•-‹;Ÿ™É M›q-7˜ä¢ç%×S¿â¯àâ´k¯`Õ®÷±”¼¬hZGW.aìîclç å÷3¾±ÊãÀ|ûTº?²-NãSÆòí77’È2é<™@§¼<æ3v>›¯ç}yX¹\øô‡\[/€­Ÿ<Á˜çWqŘVÌbòèÞ œ¬xkï=»œ^Ož€3µ ½¯8Ÿéo~ˆzXÍÙªÇ&SѤ3Ý’~WèKÙòyì_Ý“qïÞŽ—JF_õóWUѯù¾Û´‚AS? É!oS/ï}–=g 䦳ój+mÞ輈ΗtŧTŸØöoß üćyµ_G`)¶^3ˆ=pb@ˆ ‚ðßÅ6l4»v–`H ö”:xIVÐR¢ì¯r‘¨ÆPe?YÞBÙB7d–îhÊ ™k©Ú¦d×NTo¹'tÄ¡J8í6ʶ³ü¢ExÒ$œd`K±QV@nnÇü6LÅ€0r¹„ËåÂëõ¢ªªx3þî1ÀQ¿:knlËžFê3„u»Ãø+ÊùaÑTò»õåòÌTšÉ$¶eÓÖA\ÅR+I:¯! r¶áHH¥õɰiÑ\¦ì‰a“t„ˆêV‰Ÿ“™ÀŽÂ^¸*›Ÿ +±H¥M'Ø´¸z} a*Nî;„œM?òÎÇs˜±` å¨H–‰ìHÁÃO|öѧ̞»œ]D‚4¹èf.3ä½/—!+6~úô2žü|.fyø°ãQ.“¯£—TÁô·>`õ–l¢UAH¼„X6é%vVÚ(^;‘1c†¡‚“E·ç¿q¬a'‡¶Ï M÷ËùdÜÔ‘0YôՔΣŸä@Éò!Inú<¸€%wœ$u¥X1¬’äc!°·¦<\ÒIjÊlc-]%‰“ÿÖ¿)…ÜÓÏ¡CnŠ~àä ùøªÓY8¹ÉIIÈRc×}ëª`¤:!Ðíþ™XñUÁ8otIÿëLÞÿáU²îø˜h<ÎÄþ͹úÊi‡uGVH® |¾[¶ýÜæÀ–W¶âÀŒtI©õ‰o[Ýi4<µMþï¿äÓË)AÅŠ‡!ÿF}öM‹çòÅ;×ß;ŠóØ ½;}Ï… ëóòXfî:‘3۞ȎS;ò-.Ÿ·xƒÖ• 7j]ï†ëze2†Kq^S?x™‰³w‘×ú:\xv‹èöü÷fUU=$cé2“/‡ÜÄðB7C_Ï¥ç5§ìËǹ|¾4¼DÐóÎçÁÑ#8AñâÈ?…% ör%q&M˜8I|¾D$VrêàÑDû äú¨…ûî½ ž Å’Æ=>ÀøuùhðµüŽö¯e`ÿÞDÖÍçúÑÓ9Ž3§;ãÞú‚»®¾‚Kz7`õœ7ølyù!ë´ºb,óï:vÞ¿ó&&ÜQXAxêu|ùäé,¼É)@ àð¥8Í‚zý><8úqš)u¸íÖáÜÝÿ÷üME«»1Õþ^ÎÊHœÞ)¥¬¼Óz–wZ?À®_ØCM'¯Ý?€kßēӃ4Lu1Úz¯â²ºÕë9Ò<4³J ã^šó`/斟½’Eõp =Z¶ÙpJÒAçC?dÁ¼ýy~—ßHØU Gc;#û]ΕW `ääÃ"zɆ¦Ùk®EƦiØÿ¾Ýø.MÁÊRñ®6VòѴ퀋óž|˜ÏÊt–ñ6»zlä,;(šoRû–Dxhh{–½þ 66bÇì0ñàARðCß™CÁÜâfœhôÏã5öÍw™ðÙRSR‘6·—®‘W'B›œaM§(”ÆÆŠ, ÊZ¢˜æonÀÜ­) ú( äàS÷Ð"{/‰® ¦äÄT Ê7ÏÁ>Ù»o"®a)H•&¡Ê ¦ibSmè. µ·Fü£²ªRYUI0üÝcñ {6ìäû›¾eç÷Ûˆ1 Ã7Ì_èèóüqt_ n¸·ãÑ·JíÄè1~þý¬sÖ‘«Õë2Ñ]Öþ~Ó˜ÖÕ?äÜÍø^G®ŸÛe£» úyý±­k>ý’aœ~ èk_`òÇQŽº^x;]/<Ê—Ùô.ÜóT—C¶Æøž¿\ Y1¦ã £¼’Â¥wåÒÖö+º=ÿÝë4[u¿÷xy%¸éÑFfVIdJß‹Î'ÒílnyÖGn#ðo ŸŸN«êЀФΠ@@'øs½’¢@ñfÊs:ŸÃ9Ýt›ÏÆ DÂÐöÜ!<=¢;PÉ]# 8nvÞáçΣ#°'.¤ PåûA­r&`Ô§ŸR^÷Ýü5p-ýǯå±ènÑõ¬³9-ãbúßü‰Ù‡eäa4ë;»ÞyƒÍ|þÑ4TM>"ðô# I€ÅªâèÛ°:Pl‘IQ6—C;Ë\8Û!]†t‚äóPmyÂ/>ú;ßC6EE³Ùk~÷Ñ(¡òç§X“)ê¾¥M…¸…“2^=ñòß»‡Nq™_¾ÏŠŠêº© öLÔ䣿&¯Ü6”%)×2þõKj–e’ç/¬¦!…ÀÔªƒþšj 4YÅV[¤¼øÈž;ÕSR¤bh*Ÿ¼x‰µë¤röu×r² ¾ú9‡œË—ˆ·*Pl˪ñzí8­R**0‰Î¹Ù|ë?¼ö:Ìš)ŸðÐ;·òpŠ“p©Ÿð«ÏÑ*`±oôwć=Ê+œ@˜ÇµþÌõlzЇ‡ ‚l]VÀÖ?¡…$ö[HîœB¼4†Óé$))éÿ½ß—FÌ7³Vã¶;‘e Ã0ЃÚ4Ž‘—dÞêflfQ'A&7=H¦ÏÅÆÊ,ìÙ¾0…å)4Ê*¡4’KA±Eô",Ë ±°KaÌÁ›Ø—ZŸÐÞýÈ–„ÍfCUU´M!zV„ð´rÜ»\èõLÊÊÊp»Ýx½^$é׫è ,V¼¸”à³å¸Op“tJJJÐd´´4qãüeßüÅ<>›æÕ–wPdUp§dñî ˆ©Ç‰²‹åóg²tú¿é;øU¤G?çt'ÜÐûšïÏë‹edIaþõx{+hf“ * ÞB@e0 „€PD¯ý9XYi}yÊK>Ãv¿âu;öf@,5-‰^n»ð(Ç-8ô¼õH¨6ÐŽ‡ƒ€¿:莄ˆ@ŒH ‹œ Y¼‘«¾åœŽ^ö•TÒèâ!ô·Vòþ—Ë@VYÿÉe<9iÖ¡å @'Íê%P,cAâºyx5²$iw^Ú—¤w^ã½M yé¦/0xˆ¾I`÷¥Sy}éÌ]»cF,LüòÜJ'I¢Ãoîö¬³eÖü°y+|ͪ½A ›!óJ9ç⇙½x)ÓžÆÔW õA[EJ6±ø‡ùLœ¶’P‡SÙÉ’Š"v—êºÎþkXµªßß@„u´FÆÃã¿dá´xÜ.sb¯&@%c»÷á¶7Ö |kef˜Òâ2>ºúfžùª„®nhwÆ>&ÁK3ûõñf½ö´A„¼}…E̸u*›»o yßÔ,ŒU›¾.`_é>Š‹‹©¨¨øíûë ³ø`òìNªd!K2š &>¢ºÊ¦½I4«WEŸfÛIt©,ۙ˒m9Ì\s‘ ƒ~/1KÅç®âœ–[ð:UUcÑÖNhª , IûI ­gÿ¾ýX–…ªªhšF½zõhѬÍOl‰|–LôÓ’ÑX¿ßÿ«-·‘h˜Eÿþ9-&y§ŠÄG}Ôý¨)Ñä•啘¦)nž¿2|øðá‡/ܹ³„äd ΃–náý'sz\úiññ]ïãèy"…Ÿ}IœCréb¾™[Aýæ™(Úq,æ|þ ÷>ô z]ös¢+áo!ˆPV 77íOØOüüQ©Ø¿‘¥kwÐöŠ‘|3´;‰mOePŸ\¦}ò +V,g—܉«úMªÝ†ÃÑŠ®=Nªî½X¥ýÝi‘—€½Ä ]Ÿ³hÓ {Iœv}zЪA §>0”ôâÌœ¿„u[ý4ît§´ÈEs†iÞ¥í§ õ¸¹²ß9¤Ô=_Öì¸\íé~nsì6W;ºŸÓ»bÃínÍgž„W³ãJ8ž=[³ô³×ùàóY,^¾ž¤Þ÷óÖ-g`sÕçâ!gQúãl¾ù~)[üÙtëu)-r~îh›ÖæT:{¶2{úbŠëuáâü“9åìd{n¹UX2í>[›Æðaç‘ж;ÝêV2ùÓ9”¤žÂ¨¯ï'×%“Ô¶ Yén f~GqZ#Nétçô<¯bÃåª9çêê-|¥6ºôëI‹<Ïoy7™öÈ‹ìjÙˆÄà&v{Oà´FIØë à<Û{¼þárVg^ÍWCO:d+ÿ–yŒÿ÷By'3òî³pÉ=$Þzå#~\¾˜æÝKŸÙääû°9Si}J#œTOÌɧqÓŒƒºÍøÙzñkÜ絤|}Î'Ò,ãàçm Ùæ£IÍq[:çåæ0{ÒG|¿ËÉM7>G§tÔTzwiÉò/'ðMÎ5C { áLL"¿]srÓ=¶.)¤æ×%7ÍIêI½éä_Ψ¯f²vWC^r7¹šx ‚ ü“•³¬ß"Ô-2gcvs``aq˜¯kg Gp»Ý8å·›/++å•·&CEEÅ’%LÙ†Ï#Ñ1¯ô„I®NG—+ŠÏc’â´Q?µˆ¢€‹pØÁi6c˜ .—BYEéÉMsv6LK"×I´E)iÄ-»œœ222°ÙlH–„_ëGɱ£'((¨ªŠËuôhhÃì5¬ºs9æ´0Žó}$=”ŽÔÀW9ñX]×±Ûíø|>qýÅÅÕýùÒÓxM×uB¡‡;vàóùÉè-IñxY–IJJB²Ž2sówßýDÆ™deܲ0‡Ò»Œ±Þ¡éo>Õ0_?ü"ûº dP×Ì_ª#aû»©Ó>‡.¹‰žäZÞâÁ÷ë0æÓAG÷öÿ zÖþ›GnûŠ.ßIÓ;âuÿV ËÙ¼y§žÚì¸ØÏ?^ѤÌó^£æóõD™‚ Âÿ0ƒ5SWR~×>´\“ÄsQ³5*ö—ÓcØ5á[Ëa¨ùIéÔ©Sç7wŽÇc<÷‡̞·ŽD¯¢Q¢hšU¯¤~ò^êe'à¶Øl*n·ŸÃÓ¡!)NR| (vŠÊ’ñxL2}•hš›éK3)ðg1üª-Ä÷—ˆÅ(ó1õ8 ñ¦d’Ÿ—G^^‰‰?X; w±ñɵ8CÜîB «¤§W_ÓÁ™ŸK*ÊÙóò:ö>»{O7ÙCëO7ˆ…cD‚Õýû,ËBQRSSiÔ¨‘¸™~‡uëª3·´hQ÷Èh3¦¤¤„ŒŒ æÏŸO^^Þ!­ë’$ QU•úõëó«ùº+·Î`á'IÒ"b)^TøG÷üÈœ5û1ÍtzœÓ¾fyœ¿šI‰ª@vz¶„µKg²RÏ ¡½)™M;ÐȾ›ió6à°ËÄõLÎ:«52šMCAFs8°i22vN­vlÝ®õ?°ngÞ´Öœ|B•l\^Fî yØhÙ^ +œäåÛÙ¹¢„¸»„õ4Î:¿UíÈ¥_Îcçt’ÜuÑbe”î³¹xqšqr§Œ?±…Yþ2zs”º3AAþè̼f:òL¤«’‘®v Åðïó£È ФP*'¥ýPn¶‰Fðûý¸Ýîß4MPEE‹–nÀ“˜„®Bv8Qb ²ŸÌÔ­¨f”ò’ެdtÝÀ²,"Š‚bIhz„P$Û$+¥”u»óˆ˜Nj­Ð÷|'ß-µø|I=¾_Ú˜sZí#ų¯­œéå¬ ä‡())9$øMMI%xmv ÜŠw»#Ó Ž„qz\˜±8ß>2ísÃ.“þq6ržƒ`$D¨8„,ɵ˜ÝnÇf³‘šš*n¦¿Ð1ïBIuAh}†=H£º§“`¬¥ÌÞªzpÕ\úÞ÷o2}n´ò ?þø=Ôˆ‚g_aܺœIaæÍ™EË•7³¿|3ë—Ìd‚±3µ¦Qb&~ŠÏç¡jébÞ[÷!ÜiòH«ë¹Êúö ä/ÕlÀ¶ï_â®ñëHw*˜Eß±ãê{éî®?ñ}^³þM3`ë´1Œü¼ïÖ Û÷#ïÉÁx×dqúAÁïÞíß³xeŽñy$÷^ÀÀ!kh}qC&%r¢~AAá]UüxëB› ñú¼øò9ìš´˜¼V=yåé!xÄ} ‚ ‚ GU¼¨HeˆÄQ™x&R^T†Y3¼iš8ŽêÀΛ€?è§2» uA®tp:$&&þjëïGÌÂîðÍi¡Ñ IDAT„‘e$•DµS÷ƒT=—êØ5+–ǦHè%¢2L™ü èÑt'+w·ä„T™Ü\YkI‹¶eTV²¿\fFA2é ûÙºßÅ®=1<žáp—Ë…,ËHH¤úR):×GÙäB ]kc÷Í›ð/¬ÀÖ+zwæ”#„*C”•ÕžƒeYØív¼^/©©©µãŸ…¿Öѳ=K2Zh+3Võæ‚ÚÙŽ¢€„ „J—qK£l2ÒRIò%ó‘¶PTæVký4Én‰FƒÞ4bzŒH8pà6 ²m÷õTp'¦“ž~ûê¥ýBÊi 0ظýMºæÖ!=5•¤V½Y© LI­í­jŽšý˜¸´ Ž– : †ˆqS#;AdŒAA„_Rÿ’Æœ9û²šç©Œ`™Vm«¦Ëå¢N:Ô©S‡Œô êÕ­Göµ9§Q†e  ƒ¿zœÂÂ(²*ã”T͉†ÓªI®‰  z:‰`XDz,,Ó¨ 45 $ÉÂír¡K*—ôóÅYµ^Åé®Ë¿F<Ä™4Z4ñ!)Áˆ§ÓID·ØSª`&º®ã÷ûkÇÚTü QÏS‰ ¯$ra a3Šç|÷¤°?P‚¿¸=öóL9‡ƒŒŒ rrr¨W¯)))"ð=®ƒ_Ë foÁŽWñÆÆU>X¦HX@‹ž¸â³½—P^QÆÒ¯>¡½Š…“½Dâ1Ê‚ƒ'~Ì×H¤(…‘‡ÙÅ]ù¹|†AпŸýûßE*­<èF>ø Há„ýycínö—”P^VÆÇ#¯ÉABåòÚ1È–¾ÉNÕQSÓbü<Ih'ïNxÐdé éS, ËDŒXAA„_ …±t ǃÛíFQ|>uêÔ!--­6¸³«v%ãìæ&öa¦ ªªªƒÄãÇžJõý÷>ÃìCUT,»ŒièH–N™Äu'Ь#IvÕÀm7P$‹˜AÂ@—$ô¸ŽYëq›dƒ04¯§Ó ;Œ"Å)+¯dŲE4mìÃŽI(Ö#Þ·MgëâÒáp@ @4­–d—âÄ{F:fKe¨ø­*¥ø)ÚZ„7‘$ ˲Ð4¤¤$ÒÓÓIKK#33§Ó)nžã>øÅ$ZaãŒOÇðS »ÛÃ…#ç’ S´~ã-rǵGqzHðØhvâ#ì%Äí½‘´\N‰eÃnál çMÝyç¶–¨Y-yt¶ÄØy—ÒFÒHp¹¹à¶ÏÈ èÄ©ª¨ „ýUBqâ¡ Uþ àæñƒùô¢&8Ü\Z:}†}ŽN{®¾ò¤\.sÝqWUQ**ª8ð§eUðü˳x Qåcñp€*CÜ‚ ‚ ‚ðËAƒ,×´®j8N²²²ÈÊÊ"%%åîÌ©ÞTW$û.вÏÀMÊÊʃÇL–i+0MIÒ‰FbhšÓ0ˆâao$Ÿ¢²dá6ûsØZ•LÀôÅ1$‰˜$ëD£ÕÍ_±xœ¨ÃŒÄIöñhat$vÙæ$›"£[QÖîÉ#;É`_¹L¹?†ß_A8¦ªªªöÜìšìfÙ¤ÞžE¬„Š#Õ¯eYµ ­233ÉÌÌ$++ ŸÏ‡,ËâÆ9Îsª£F²ÈÌsP Ç}û*Ø´©PLu$‚ ‚ð…BÄb1$IúŠΦiâ×+Yy÷Bä õz'ÅAZZYYYhÚ‘Æ¿úêK|1£—CF–-¢Ñ8‡ŠiJT§)’kzvZºCI᪎?àt¸q)2ž„\ —KCÓ4lv ·&³9ÒC7ùio:öͦ¬<Ê‚e,û~Ñ YT2ùIqšäo%#;Ÿ/™ÌÌLrrrjÏ/ R´¿ˆÊÊJ¡píu&$T7Ä%$$ššú»æ4~›ÿøTG’$á÷‡°, Óƒ…¿ž,KTV†‘e19³ ‚ Â_Áåráp8$éçí•e—ìÄ{V:UcŠ ØA$¥:óseeåQ3?›ýhf“$$+ŠÝn'7pÛÁ¥˜¦N8&CFVM4M'Šc³,,7„£&2:²l¡ª*±hŒd‡Êâeq6ì—ñ¥øôÃíDL()×- I&.éhŠLUÌFiy›SÆétF‰F«ÏÀív“œ”ŒeZ¸œ.t]ª39»Ýn‘Åùoâ¨Á¯a˜””TQ\\)JH8nH’„®›¢ AAþ"¿µ+¯]µ“Ö*ƒrO1Ú²œÿË™Ÿ=ªJ]ÏOì5ÆÔˆFB85 v‹ì±˜EYi„ÂÊ0Ф)Ò³Hu‡‘e;’!¡i*v{Íü1–κÂVlWPT‹’â*ô€, Ã00L C%¦6¡2¦öA$® lð}>.—`0„hš†Ëð‹Âß ø=ýôæ¢dAø[X±bÛ·oÿGðX–…Ëå¢sçÎG­yöûý,^¼˜`0xÜ–“išdeeÑ¡C‡£v£ GcÄõÿN– ‰·ÈÊ)‚ðGÕ«›ugˆ·n"¡§ËiaèaL3zD’’ŽfÈò–°3àÀá°ƒaàó9p»-Ün P(¯P‰«2:ûri’½—5JJ²†ª*x\2²$ávÙÄm覆CÖ!.ã×u,Ð%bŠ‚lXDM Y5‘&&QTEÁn“p:l¶C»g1 ‹B¨ju׿X,N“F"ðýÛ¿‚ 7n¤_¿~ÿør(//§  €O<ñˆ×Ö¯_OûöíIMM=®¯aåÊ•”••‘žž~Äk;ŠHIô`añŸLÓ/Ë»ŠÊ8¹UñÇ%‚pkÖícùʽش_Û*É¥åeT¦ÄЦa¦ªHf >_yí\ºšÍÆš­NvGOÅ¡¸±LP±$“Š€P\ªI,%£K5Y˜%'á¨Äâ­‰¸±@’qØlvE¶c³™„#a¡BŒ¨$€)UWt‚ºªL0¢°+â ²Raûž ¼^“„„RTUÁ²@Ó–,ÛÅ¢¥»j¯=Žsû-‰Å-dIÁ Ð¬•‹Æuë a7‹~Aþ\ÆâüÓÅãñcvE³ÙlÆñŸÛþàGS7#é¿re•qC ‚ ⥻ýòx<¶ê±¿HHÇÌÉ"¡(2ŠSÁÚ’ÄÀ2‹1 Ó2ú¬²“èkIȰ°ÙŒêHU†â 0 ÓY’ÐT I²-–mpcX–†ebš¦i¢ÊvUG‘w7œšŽ|ðTÁ€$ÕÎŒaª”n Ã$/Ç0J0 £ºÒµ†Ç­‘–ê®íEåó9yëÝÕµYŸeYÂé–Hp»0âönÌE}š¢ª¢7‘~Aþ·ÂO–ÌŸC½“z’ù|Æý¯tû>®ÃyAŽéú¸~`L#@(B×uüþ $I>Æ3Õ¤$\†í_qby¡³ãXQ‹´´4\.Wu-KØ\vî¹é5™ò‰›Õ©iJäçÊ$«*–ÎæíqLK!Ñãå¢Ö;P­— ŸÍ‹Ó#“ãóPPÒ˜ÏÖ5¢Yvç5ÙÀssO $¤á©m“ Å!ÓR©Ÿ¸ŠFñ$¤ŸŸÏ—ˆÇ“P;Ça—™4e7ŸNÞ…Ó¡ I¦%Q¿ž†aÈäd¹Ø?Ýñz½˜–LIIEmFh16ø¯'&Ÿ„cÚÊ¥ƒïàË‘?-8Zóâ<>z ±?°­ ìúj$#¿Úñ'^kŒµcžä‘çgâÿ½Ã›çŒæá×>'ô‡ó¨é¬}mC†£Dÿ{\û¦Y£0àjèÏ3óªº yç¡ ¸¬?ÏÎ;2éáœ}Äæƒ‚ÂožãŠ+rõ€£¯ÿg3Mó¨ÿ(™Å¥— àÊË/çý•5[1ù±oØÔÌ‘Ácofâ¦ÐQ÷WóUM<þA~A$¡´,LIiˆ={Ë)Ú hÕQÿ—„0"vüg¨Ä–Jo RTRÅî=eì-¬ ¸,HQY[?,¤»£– RÜÂnÊØQqÊ&e{dvïÕ ʸd6\’L4(³a»HUœ`•@\ƈj”$îp°¿Ú¦ìá»ÍÙTV*¸Í8ªÇ2â`ıâqìFœd»Nv²D(,£6*«t‚!(+Ô^ÇžÂJ2Ó5z™F—ŽnÚµ’hÞH猓ô:Ãä¢slt;ÕÉÖí%—T±kw1••¡Ú¬Ñ’h "ø„ÿ:Åæ"¶u2Wäd’–‘J²×‹÷òÇØeüÌL?©#{›_E÷Üc5ㅘܵ5 »<Í®ßtT‰õ£†óès+‰þî3>°íj `ëgñФ-jð»æ…'xâéo¨øç|tóy·;=k‹öÇÿà¾Tš]z3K¾DKÏŸ¦Û·o§mÛ¶4mÚ”¦M›Ò¶m[¶oßþöåÛ×·sÞ·rçÝ׳è‰6ŒZ_}WŽs_e]Îà æ»Ç[2jsõ‡õîYOÑ^•èvÿcì=¨âzãwÛ8gȆÝ}‹F¶ãÙuG¿»'MšD“&MhÞ¼97¦cÇŽ¿ï/@, Ë:Jà+˰o:­oùšë†Ýλ/eó¹Myv@1Ÿ ÿº:ø•aÑð¦,˾…ÎY*˜ÆQ‚_K´ü ‚ üŠÝ|%IÂét¢iÚ1ÿ«ªŠ]µ¡6Öˆ;uÒö¥`ó؉F£ÄŒ8²C!òYàS¥äµl‰ÝåÅ”4$YÁ0LdY#.ITÅU*ãQœ€’ŒE”"¿›¸©¡Hb¡(zLgiY&›öº±Ë–ïÎeŶ \’%U?†U0L0‘PäJ4k+ªæÀåra·Û‘eùë$•ü<guËà¤vNNhc£]+‹PX!±ˆÆ$¢Q«v(«æÃä@ùXâÃå¸ º= ÿH’¬`†w³poÏìü‰Au÷s]Ë ÚÜÔŠ²×/‚­È/Nå%)ÈæmÅ´©ŸzëWn§N“|V­ÝH~Û¶ôúp*­t/uª? X7g&{t@Í¡G×5ãH,ÖÏý–O˜U†L’×^[ë´cÆt~’I¥]÷®¤Ñæðm5L õ½èE+*·.dþ†*욌¤æÐ½ks$,ÊÖüÈN+·m[÷†iFWÒäc­/£¹=Ød–QÁò¥ËÈi{fM÷Ý ³¬¢QûÎä:K™3cº$‹†éÐó|ÒmY·œow• ©9mN§yšBxÏ&VÀ‰Ý¡7ÁЇyî¹Ml”ngð¸t{´°ë¥„ŸèÆWϽEÜ_ί-žêµ™¤~„ïÊÔgߨª`È4‹§Î¬ÜÔ/ sR –œÈ„Ø×\¤ÖN÷Íå£o“¨ª8‰OcÓ«—ÿ?äååÑ©S'ÆÀ7ÞH^^Þ¸x;7N|©ö·A=ÒøàÇýÐ<Ì‚»\óNœÂˆói m{ñåDáW9Κ1®2±X —ËõËß»$‰XFŒâ‹ -Ç{ª+f¡Ùª†ÿQ'aL:U9A[ Ø¿px8ÿ!*€Îí‰wŒEyq11ëv^é0€÷Î9ï8 y¦u¯žôÁQZüý¼sI?®¸ö .¹è­_ìr~ã7ât:±ÛíÜxã^‘¿ã‰ ^œ_ØÉ9ÐxíNw’¯ï'\»r ؑݶJWNäþ›úðÂîNÜÉѳ$+ŠÂˆ#hß¾=½{÷þ½±Õó2þß² ²œo›é˜I˜q¢ÑЊ^×½ÆÆR'îD“q·¦÷7i\y^#,=F4®}†)jçA~—ËEJJ iii¤¦¦þâÿ””2“3Iíš…™&ã\ªá’è#ƒ°G"ñÅ4ͨQ™ÆMòIÎôJ˜&Øí2†.cè&–CU CC"Ž¢ÆYµ·[JSY´½>Ó×¶a$Œ¢Zè±8ŠD5 b5ß4@‘ªƒ_ÉRÈMÙÌî]Kq»½8NHNN&33“”””C®!--ÜÜ\²²²ðù|¤§§“‘‘AݺuÉÉÉ!//ôôtrssIMM%-- ‡Ã!ßãˆhùþÁlxYà–iÜ(!½Co¦ßw ï_ÃÓ?Ì }ßV\Ѷï­à©OrÝÃn<.¨Ý¦]Øœ´†)|ãJDS|¤°‡w½Iú«…ŒœIQÚ\2oïË“?æÆÆ“Öì ‚~á/£’V¼µr5ŠÐÖÄc@SÞ\þ½šYÅØ÷zÜA^«Žä7L˜†U ©€¥W·Zº ²@ÅÌ(ØR7,CX'ë†S0êÌše»8däiùÞcl{Ê…8»tÁ:ö~ÞœoNLãÒšYZ, ìj.ÐMT—LZd ^gk<5ëÕ6™þÑŸÓüc™„&·OûO¥ß­ç2­ßÚd(3#ÜÕª?¸ÖзŽÄÝó#4Öbtë?>pâDøþ0Áªÿ~ê w½Ft¬×è×Yûù\2w¿OfÆË˜¨8µRÔßðЇ­QÐj¡µ0$¥¦|[Ž„‰ƒOO¦ìy›n^ „?WO¦¼¼ªŠ#óji4êÖ•F¿ñÚÆ÷§µJú·~Ìõƒ—óäæ%tO<°ôdZºÎfUå Ô÷šE‹ØÒä1j_Æ‹Sµã©ýL¯bïVÙùõi“\ŸÊ¯FðÀgÛxøÁïÿ±wßáQTëǿӶ·4J ¡ PA{EEÄÞ+ÁBñÚå^½b׫¢bÁ‚¢t©JB $¾Ù¾S~$`è-?QÐóyžgØröœÙì¼3ç¼`õêÕ4iÒäûÆêILã絨#ù2¹e§Î{ÿXĉŠÍÁ92cÕt®KÙÉ+ÁQŒz:m†v¡¢Õ Æ_x cÚA$’<èü´LY<ùA8D44ZhÍ/¡æ:H\&QYUŽ]±íë’Üx;¸9?žÍÜyEÈØI$âØí’¤‘LêØl ²,‹Å°Û59ŠaXèa‡ÓŽlXX¦]3kÓ$,4»‰n:ñÚL|Nv} £’ÔÔæ¤¥¥Ñ¨Q#¼^/)))¿š™Y’$‡£Á÷ü ÂaÇHD¨ „’’ h‘ºÿõŽæo¯õâ†SNbf¯.}ÿ<î‘ ù×…&•‰U¡0èD+*HÆ+)£1?#Í®:a»ŽaåÄ=Ü8õ{r›¦òÂ-½èyãùܸ¢5ËÖVÍŠ#‡÷_šÂéלNŸ]7Ó> “¿ü<0Óâ´Œº‚dÁË·÷⸶MpÀ³__ºDæÞ-ã¸ëñælú¡ŒPF ‹hy Õ„°°ˆ•W Ç«©qtbÜ¥2wlÇ]“›“ÿc%¡¬&&ÑŠr’¡:€Ö“74¥ÿs_9r:=m@ÙŒ™ü Fÿ~œRò=‹«sy;GùþÆò9grT¿LNmë?zŽ!+-Ž0˜îÏYlµ–ýìiç,ü#›½‡ñß”qîþ‚™\ß½-oîž Õ rãƒ!ttBÁ`½×kª¨ÆÍýßöäôkNæ_É6XV %W3ãñþŒ},§ŽìË¿Œ¶Xf {2¯æ“Éýÿ_EoÖ¬ÙouösK«KøªÏ0šŒ¾†×*dzœw· /æ¡«ò•ßÎ’ÊO¿Ö€ŠµŸòÔÄðvÕ<–\:Šk†ÜÌý3y麎lhÞŸiP º¸ÿî¿zä:üÏ¥–~á¢"³Óå¾ÓøöÖ7èsùëä*(…nîšó02Ë Fʨôd÷/½‹¶gH³¿¿Ï°.i$Ö›B\´‚ :²,ãL8ñ=Ø‚x’õ?ÝâŽó÷›–“~DZ\Üò·>9L–>¶„ûtá±Þ.ÑBÂo®¸¸’‚­¥œÐ+“üe%¤wnCšãgÝSÌJÖý°Ê¨(4o ÍS¬+ÄÕ¢½*`Q½i;¬4Ú•‰ ,]DIвèÝsߨÇ*–-YOÒP\6Þ¶´míE* –²¾$‰eY¸üYtèØÇ×Þ¿¼íOqØV–-+&îõÓD±HØrhׯKpÓ:v’M^[ÁMëÙn¥Ñá¨L”_X¿fóz¶™?}–u¯^IÇ y'—´õ@¼‚U«ó ÇMdIBmÕ•žYÎÚ2Ô²èÇ] I˜htíÝ{ÙÖoµÈëÙâÞeûøã0`À¾A²†Íe{hšÙW½f¯([EÔÕu[ î9uã^C® Ò¢c%k·ãë˜[÷z˜ÂµU4íØÚ>ŸÛ+IJ÷¾ä¹k÷Ú6;Ôƒ^?JKKÙ¹s'ݺu;è½+VЬY3233÷U;¾û‘=ŠN2i`2éÙGÑ.7 ÂU‹ÙYm‘ѱíÓëN³Ê¬^½N’Aƒôœ<Úd»©Ü9Ÿ5Ûd+IJû¾äeüïŸaåÊ•dgg“‘qðNVo)¢Uã¦ÙðO–¤Úñ¨•|ùõJdY¢Y—è¦Ó#ìXSIúÑM°'MT§ƒâ5ó©I=šVéöƒö§*2v”Ñ­] ñÇRáP]‹í)aïž=D#Ñý7UUÝ?¾Öív³§¤„½¥¥lø~;/~°—ß,ªH€B4ÆårR›ÊD’j“cY– Yv£j ŠêSÆ’ìX¦nó’Û,@º}=ñè|þŒÚñÈYYddd‘‘ñ?÷NuëjçUÉËË>è½h4JYY™™™ÌŸ?ŸœœœzSÖÞԇèªJnnnÃÁo¨p+œ³‘…1©`Ü3]¹ê8o½«µ<íêÀm­Aö=»˜°ÙÁ}'¤‰–Yð»eK 'žØ^TƯx¼¿›u=_`êƒÃë."ÿuðû'õkÁïòåËÉÎήüžþ]ðÛ2Ëÿ‹Áoí/œŒÝV;öÌÐ“è† H(šŒ™4öwqVT’™l0Û³"Kä•Ó­]Žø# ‚pˆ„B!ª«« ‡Ã躎ÍfÃår‘••uÀxÙ={öPYUNIñ.fÎ\ÇÖ!*k"x=vdY©ë½“DÓœD"EEUedÙƒijØ4–,cY.››¦a¼îM覬¬¦x½^222hÔ¨ÑþäUŸ;ømðš6™TrO¾¾2B¥o5@¶ IDAT<ñÒvtÍ£¹Ý"ÿë­<ó‘Š«ùv6Þ–K;'¬ùp-}-a$U¦¼r‘/wêA^ •‚/ЉI+µšï?«äÓ1¢v7 q2í¥ö8¼Ü9*‡6vˆï`ÜØ0¥J5_·KåŒtÑýLþ(wÏå4 C4µÙ”‰†“8™¦ù_%$ù£˜¦ù+í)e"Y¿2ŽÜ2ˆÇ~¾½…‘8pœ°‘üå™¶%@C~A)ǃ¢(8N‰ÄþSõ_˲ðx<„ÃaÒÒ3éw†ƒü-Û(ØaËÖ=Ô„£@íØÛDÒÙI<'Mb×tô„IÐPiÞ<•Œt•Æéå„#»qº3q:dddàñxÈÈÈÀívãñxöÏ],üyýâ}‰|ô¢ "ë5¼v¨YWÀŠYpýè\"¶³pú.Úõ‰pÞnsîmNõÂåL/¼™»Øå ×B¦àó]SÓij+âýi2ýŸjCõÌïyô¡L®¹«5Å_.ç­']Œ»ÏλƒÊ8ÿý<2U|ùÄ´žÐ•–¢AømÛ¶eÚ´iGDpw¨ì»@èÕ«Wƒïçåå1oÞ]ÆØÛÒ ´psÏ=­™tmíxÜŠ² {×Ô0i×I4)*çÑëæ3ëñ¾ô·tb– Èl¨Š!K2zÒÄâ ‹„ií_6- R\œÒGåÛ÷ÚÕ¢l[uÑ@‚ ‚ ‚ðW—’’‚Ýn§¼¼¼.3³‡`0H,#™L’bš ÿ±ÙlȲŒ¦i8|>>Ÿ§ÓIZZ.—H®+‚_ÀÔMª*’T'ÝÒ‰Mƒ—#mÍÆz6£ÞZAú‹`Ò`ÀÍm™6º†<%ŸÝ-5ÂGyØÑÞAæe.¿t>#ÙhÑkYèIƒXØÄŒ„N´þr0AKžEù?î¢ßmù0þi_=È9×=ÍΨ 3ÑIóf0²“‡ Sncðè,F=»‚W΀)óxïª@ˆ×œÎõs7`WCq›ž¹‘Ónƒ%Öšˆ¶ÌÌii^Q‚ ‚ ‚p„À‡,øÝôãl¼ÝÑ®.À¶µ8Æêdæ¬VeÛÙ¬[˜@¼dù‰u¼3få²kY_²“™^ÉÕ/¦¿õFI kªž¡f€Å®ÒKÉy7O_5—¹WÇ•ŸôƲ¾c÷—Ñô®: Øø= ‹6MSÐ416DAAþRAtC/R›QÞ7®8¶˜ÍRÁ’À ȪØqË?KvF_&ÌøŒõ;b@ Õ$p—{aOS ¬))†áÇPŠI ÕucMÍßÈm#‚ ‚ ‚ Êà7ïä~¸–Nãí•Qv1‡2ަ_3ˆãÀÊMt4àýçÿAQÏ›yó¾G¹ö”¶@0õ$$ ˜É$ĺf4‚%Ûp+µûQMÏÜ@sév‹¶AAA~# v{nÔ÷A¾›âÊA9Œ.Ú ÃGe?Ôfb~`,C7ÝÈ ²ÐR½äæöF&½ñECî!¥Ã+ôéÔ’îÍ:£®ytK—PWNºg¨hÀE/½Ë° †“‘þOÜé.Z´Ž¨¶»ñ{-ÑíYAAAøÍHÖ/Í]gæ­ö’Ä)ýcè#oq^®¨4AAAáF)++#33“ùóç“““ƒiš?»’D8FUUrssù·3÷ž5q ‡l¢,&G ÄAAAŽ@ÿ¾w±æã¨îÝé}b2!vlŒbþ¿kR¾±š=•úŸ°J ŠWÔŽqAAAãà·zÛ–|^…^Ì|^Äú"D0Ì®-1Œƒ¶H²ü»”&ÿÃÃZTn©ao•ñ'¬ÒÞ>m›Å¹%‚ ‚ ‚px¿Áí{Yñu°®O´EÑ×»Y[ÕÉñýRÐÚÂ`ͪÝì ÿ§Ï„Z÷kF§\ûŸ²Jíß÷'AAA~7 ÆhšC¦x{ˆ¿«ÄG‚EÛMÚùm”/^Íëoø¸ã…æÜzó,>œã%XXÅÔu=ùöJ®~pgM?šÏUÐnè.öV›tì–ÁÔ©hZ¶'ŸÙÂë«ì4k•ÊM"èýò¸¤[˜.ÿ‘×WÛ¡‡qƒ±7l2|x;Úe%N,A„CI’TUE–öÿL$1ëýýÕì6 =%–øý,þQÇAá×5øŒÒÔ BÕ:±º@µºÚ ®[˜º‰n*„V/aÌL…Ôíyùi‹v„hº¦O+fu®ß£óñ3»˜·`NÚK3¿ Ý0‰ÄŒýÁ­3‰&Mò¼^ÜOòñ÷A>^\A‘MœHžJ¦~SÃ’yÛy*a“3™½¾Œ¿ÍMR1És oÕ/µ…3ˆ%,À"5ˆÖ[Ç Ží”E¯ö°¢È tsÓ>ÞB‰DبKâeAbË6ƼS‚Õ´5¼Öˆ˜^Ëk£ ¨œ÷Õ0õ‹Ý|™0¡qK¦L+ä½µ:5ƒo§~Ï ¬ˆŽ!Î-A„Cø&ƒE¬þ~‹~Ëœ¹³˜¿`#!CA© †5§‹UoŒàø¶ñêB<ÛïøþAÇAáßSz衇ŠˆUo#MZÖŽ_Um¼¤Tœ©nZ—Îöwv3{} ?ú1ñ¬ rº{X½¨œ-Yl†cc9o-ŒÑaPk®>Å…‰„Óï¢IcjÝ>ÓZ¹i–—‰lùrV˜=R’œ¤‡§eÛÓ`ÆûÕ¬j•ʫǤàîê¡åàt ÞØÍÜ‚›¢¸ïâõ;®î/§OAu¨,§µr“Ñ<ƒÜì83>¯â‡&Ýz7¡k vƒ=<ØÐì6ZõÌÄûC%o/¨buÂŽCšÈ ©!fÎ â<­)wçùðµðÒõ"; Þ.gq~ ŽÜ.êæDsÛhÚÇKœ_‡¥P(FuuYýÓáH¤Ú½”,|œKnz€E»,üÑÕ<;i,_%ó¸â”öè ›;NÁ{éwÿÇŒ¿¬¥ÁºiúTŠçŽãâ›žç” ß1íÊæÜuuOž›Ñ‘YEïÐ$¤á,x޶L&ŧSS3œÙ;ó«†@óiÖwì z,Dã¶÷ðÂÇ×°eø`ÆWØyè©9Oû’æ§?ÄÐÛþɨ[ó˜:¤%³³ocdê>þ2¡Õ“¸òþ×IØ~ oðû(†²ŒÝîÀaÓ:–‘HHX–‰ÄÃqt,,«v¬/ªBàŽ›æ­")_AAøÃ5ØíÙÙ¤ï,8ž×ù¢”¥[âµ5Š·Ö.'‚Š ã€EeA6TòÁ'Àæ•¥|òe)s–†HfóÉçeÌ^VÅŠ¸„ ˆ†(€Eõþåz;¡(»ÖT1gA)_/©¡*eѼR¾Z¤zß:ÕÕ|úeVJÕ¾ —}W±8 ç—òÉ—eüPC ÃA8ò˜É8a $㮉rðâMƒymÅ C.¢o³bî}g!ÑP5ÕùL½gÛcVm(¤hûf­2Ì-Ñ´{šªÍèpmToãíÏÞâËùKë~.t,,âˆFc˜Éa¨ÂÈ2‰GÃ@ œ0èútÜG)À¹? µ ‚ œ³=ï L>SÊQ·fyëGn{7L<aÕôb³ðnäç“t?/ÀÞÅë™ö‚ÁñýL¸|oÄ‚ë%2[–òäçÕ„wX¬^¼_ïæ´Ø? WgûÝ˸9_C. ±è«8—nΪ{W²:-•N¹ sïýui)tʵï/Õžeë™ts …•_ldÁª$% >Ëgg,…Þ‰:©)ÙÁºO4Ž;[âå¼U4Õ‚ogmàÛuv­¨dÕÞ»§áIÿRD¶gA8²Y–…¤¨¤ØRé~|oZµjG»îHËP©ÞÙˆ bÈY'P±l6›¶R°eYÝ/æ¤ö6¾9ƒ5ó)Ü´“dÇcxðá—i.í%½Óid…,¤ÈNÖî•é}ü9ô>þšgºPÕ­»ÆÑ­›aSe¶TzœØ‡©.°y dôàøíHov<ƒúDeýã3ˆc;5Áfâf« ¡D¶gA8|ý·Ùžu̯,I8‰ódy‚»&væô& e_­å…Í!Ži¬át+µS!ÙU\îÚ@"53ÀýwçÑK‚-3ðþ½ðnyýR[¨ßí+¸‡>¦‡m϶´{}5QÀæÖ°Ûd@ÂáÙ·\¤Ð꘦ÜzG6ÁïC¼ð†‡{&4§zI„צ…ጠž>¡5»ïÏZò¯ÛçòÇáIÕ°a›SÆsÏ»ˆGŽL1… ‘ü ÜÙ½qïɘ‰(5¡YÝÎæºcûc™1b¥T¸:óÀC=öocqb1ƒ7<¸,/@,RDÌ€˜îeÀ}ãëý(š$1âÁÇ]ò½I‹G Y½ã&MºŸz½Î„X8B<!ÞÐq£ ñ[#‚ ‡_yô%‰˜H¨ ‹X]ïãpÔ@,ÃÄ0%@Ž$)–%ÀÂ¥)êºweŸ|,!ëD²G¯¤q—ùÌÙ[ÿêÅ"ݳ³&a¢†n`) S™Ð ÿ¬«˜eIØU0€°®àwHè@ı«( ‡÷]fX”Ǥº,›a.t2ñHgÆe~CבÙ' ‘GÃ!âÉÚa2F"F$"ÕkŸ° B¡šýÿ"Ѧe†x]ß•Äê½ …‰'jø±ÑXË:ø¸Éx”p8Êþ: W4— ‚ xò›àÉyoC˜Ä‰¸ ·tòòä¨5¼ç5‰•\?Ù‹ßágca!¯ azÊÉM¤‘š$ûâÉ/â³hÒÖË# ‰Ëê¢Y洞õ:æ…X¸5Ê @^C&­ãóÎ*›–×0|ð¥3:‘ÙÐr0 )-y´dÃFD1E4jÕ•›I2·\G"Îû¯àƒÍ©¤ŽÌâì.vܪ8 AA„_¸XVŠ‹«0DÊvAøCX–…ͦ’™éÿïK²êwŠÀ¤hCmA‰ÜÎ~š:,Ê6Õ_eѨ¹‹6Yµ™0÷ÙºËÂc£­¬áÈP¨ÜÅÕÄ…0"QÖ¯K²,ü-ÝtHÿyÍ‹¿‹!e©´JȤåBCgãú•¦D¦W¥I¦‡ã§Ôz4NMµLJ–V»”IÉÿjŠ‹+Ù¹³M³‰ÊAá߯ ü‘ß?·ÛNÇŽÙ½F)++#33“ùóç“““ƒiþô}•$‰p8Œªªäææ6ü Ÿ?ø-) 1kÖ›ØlQ!‚ ‚ ‚pJ&tï~:7¦]»&ÿïàWtúþ’"‘(·Ýv†qཟ²Ã©Nœ6 ’q"I£ÁýH’tÐv¿LÁá²#cÄ0þ«×ß6Žâr¢¢$~£ ²ûö‰hýˆ½%&!I€eý?êEÆår`$¢Äÿ“Š$~JM`±ïTØwnt~Hü, a½EF`AA„}W¨ŠÌ¦M{³Þ‡Ið[ûgm¡ûÌ®´þ7kîY¹™9_yx_cìÜ=Œ]OÕ­èßÛ#ÎÊ#T\·p¸ìHIÃU–‰ÇBD¨NÒŠ?@ê1Š?žÃý]|„“æA–ê°£a'1­_¨)a¦ÞŸ Ö=|6³?žêø˜§þ¶£øú› Ø0¦;wY“™ý@wôpòÿ0É8a>8ëŠàýÏî Y2|DÀŠæÀåÔHF#Ä’ÆÿT.¿ÄÄ!ydݱœAm,â†õ«Á¶æpaS $=I8–Ŏá"’¥‹'ÐMPm6ìv•D(BÒªÝÞîô ÊµùL3B,&¦ÄAA¨ ~%LÓüͦ(mp/ÑâÝŒ~:®„æöàõ:p¹<ìÿàõ%dÅ"X°‘ ›÷bØx½õÊ#kø½슄¤ÚëmëG“:Ö¾×ÜvíiS»‡ ž ±­1›¿]­+› §óÀ²)v »Ó‹ßïÇãr ×ՙ͗‚¾ð9¸­€á%ↅ¬ÙñüBÙÜ–LꆯI6ͽ8oÊ÷xü^”Š/¹åèödfäÒkøËì0l؈³yÍWÜÜõT>O°Ëàöûyòb;iÍZÓ8ÕÎSï'œ2’øŠ ‚ ‚ ‚¨³ÎÆM˜úyoÞhë¦v6¢]Ï +V3ñƒ j¶—ðݧU˜@p[ ßͨ ÖMß«on✋ò a1í™5 ¾†Û'Q}БörÁekqÇ&&n3¨ %£|9i_Ã=¯”ùy, KȪ„ƒéäâ«×rá°5ä7ôA6ncÀåk¸høz>ÏOù_maäð5Œ|°€ ‘ÚÏ6kl!O¾¸†—­ãÛâï>³šó.]Ë7Õ`²õóM\påZ_¹†wÖé€É–ÏŠX»#I¬¤Œ9/læ¶Ö0rL!ùu||÷v ‡­æ«rñç°¼“d·ã Slcgùf®i¼•ñ¯-Æáñ°wú§ÌÏlÃü1C¸ïï_¢Û|˜Áu<ÿÀ8V¬\Ê•7búê0­ú `àÙðJ*”Jžv1C.ÂÅ—=Eej6ÅAZj%Ï\>˜!ÃGòìΧ†„F Mæý‹qñÐËréå,¨LÅk«öÈ m«¢í‡Ndâ¥P-“Íâü /aèeC¹tØÓT¦¦áñ$øáñ1Œ{d!¯N½‹†e^¹ ¯GeKýõ/†ÊÔ6$MÃætÛö÷Ü2˜o‹l8mvÒâù\|Ó|Z¬’Z³ˆaƒ3tèPö?—¥•©Ò4 ŸÇƒ‡0tè0ž™WLšû÷€ÍÎæ‚¹Ü÷æýÌݱ»¦¡¹kX>a ÿzw ú_Ȥo7“æ—(œ±‘yïÝÎù.dÔ‹Ó áÀå–X7m7<·žÂwïå»=6œ‘íŸsçÀ 0à<¾,ñâÖößÕÀLîöoª(eoâS|‹WQ­Æ˜ùîŽ~îKªk¶q}×r¾YUˆ]JR°fëËdܵw ˆ…K8ëÞÍ„ËvRYý!O?òa»M¿‚ ‚ ¿Wð[K§:)áÀbîý?²Í‘ÂÃcš’ùõ&Þ˜— QRƲ/«1ší{Y6³Ðyiê&f{=<þ`+ç­à‹&iLÛ–~Ù»XVž_"|qâ:ºÞØš{oÍäÜÌÚÙx×?¾‰`«t&?œËI±>\^Ó`é NÚŠ1w·æ‰»-&¶™Ö¬,&ï‹*ž…5{tù[ùþ ¸õ‘¶\}’Á‚i;3&n#ã„¶LºEgÒÙ«±Ÿ|“oÕùǹ !Óò„lÆÝÓ’É÷{ùöÒU”!³cæn6ì4ˆíÚÅôéQÎÞ–3½»x{ò^ Š7–rá£myü‘L6NZE8×K&‰x k÷6¬‡¼Ö-ˆ¬{Ë®}•Ü#¹zPg>¾} £ÞY‡=YÄô&зÏ)¼õâ“|Q¸‹ÕOŽc섯ˆxu¾:û,ú0‡FûéÜuÖL¤@Ïžr LoÊåc®ãÌ „)á Ìgöæ~éÆM•Tܶ£Òî gÿúa}2šsÎü„ÈÔŽMMÉJgû Ó¹cÚz\^+_ÎG/ÓÚ¾•³úžËÌŽW2é¡û¹ïþûÉkeÍäÛ9õùî|<åUqo¿vLÛîÃñ{ªl8óùzõ@n¿.Û¾ IDATìrŽø)s’.<“•OœÍަã{Ï,½âC¶¨.Š¿ËÇ«ssÿ´ÏWòíê *V,bå׸fìÝ\x\K>ü”¨{ * ÿ„±Œ+›€µÆ¾§ëzÂϱýZ '1Ö.ea¦ƒ #Ľ 9~'q=I'Ÿ =°§qáµãu~s"ñÚ.Ù†á¦kG±Ãz!õœÅ¬Õ׉yaAA…_½,|l2 ʾgë]W0UVÑZu$¯AVd̤‹»>ßÊãçd{xånšÏM d-}fçÓbÚלݪ9ßÉåÉK®$å &/.¤Éë·qvK{]tIÁW³–‘+6R¬?É೟ÁÛq|»&”W‘Ü€¤`ß½•ÇÒä­zÛÖ ö7“"H؈±£hƒúÞ…Ô©-F0‰UXŠâHÉǽ»óQf {wΧ4xÒî9 :©nýˆ^·~]W[#NÒ/Ö¿ øjØ'¼5v=Çö=S¶ÖáhªÆ÷'w<œ}ß+¼uTK^^¼ˆò]»¸òÜ•è¦vmÛSRVÜX‚ßiôªâr±ëõGY•r3g,§ÛeëyøÍ]œ|½©ÜÁùgv£í¹zÐ0VM¼ÊÙô=õlŽí•ƒ|ÑZ'ƒä¯y‡?ŸGÛ…áx’¯Ã-+æsÛ®gé0p*Áh‚f{szX÷¾f!©~ë¦qÉżq÷Õ˜‘ê>õþtX¦I,Þøî{7®¤pß«‹§ÎçâÔ1âð1{ljܘ!1åÑ…|°µÞ%ašB÷÷=«M0=’DF¡]š“¿¿Û‹Í+{³sÍÑôïüóà×E¢•\[Ñšêu½(Xšƒ½Ê<ài‰±;I‡©=YñÅQ”N]ͯ”Ò¬—;n>ŠõË{³cMo&s`bb&±Ú­H`Õ=6Ñ5…;ÉžbalêMþâ.\ÔB©}VV ]7ÑxÌÀÔ¦.N;>ƒÕK{³mÍ Ì‹œ'Ûá'AöLþj»KJxmôPôh’Ôf͉[þµŠÍ›7²~Éó\{rbq¬$áªRôH˜(I,ËÂ2Lè§Aå'EìšQê¹ø³uòtÐwG?.EÆ2LâÞLΊ8z_Á†MlÙ¸†wFw Ûï`_2»¸C¦“ù³mˆø4¼5«8¾ï]8ï+d×ê|éä'j™Ô†º!F‚¤a"knÒjVrüI?­ÿp{ïþõ±j3ë1ðô,­SwqÃ¥ƒxË•Ë 'ú¨±wæíOñÉãO3åá«ùrÂF¯´Ó;Å ¤0gÃf6ç¯eýŒ«é’å"iüNÝý%_8Ÿ;g{én|Ï—3?gQ¬¾9wPˆUŠ'A"%—QdÀJˆÇH˜qbqË0ñg·æÆ[Ÿ'¿ ¢¢íŒÚP£ N:îRVmÞÊ΢"¾zb’ÛŸ¬Y¶ù‰®ǵs«sÏœÞ: SõÐD[ÏæòvUeYe ÕíIÆ£¥p»¤ªxvÑyy¤î)y*)ia’º$º= ‚ ‚ ü>Áo”GÏŸ…XÌê›Ú‘ƒûïnÁÚk¡dÎâ†Å®8̓¿]S6m[Òh.½æÄèdZ€E â5Aôê V ^üî%Ô×zãjìâø—á¥Eϓޕ—^ÊÖ;:–™ÆÅª!§Šæ<·fýVŽGq¤ðùé|þ$vÄìµÁ™‘ ‘Þ‡Wÿù³mc&ƾÈËHNïËGãÒÙ:á(ÒúÏ«kª‰G’ăaj‚q 5AŒªj*ÒOࣇëÖïs¯o¨ùiýš z0‚®'I¸;ñÂg²uÙ6N¸y }ÖæéôìÐ’«žú“Ÿ }nbbŸúM|‡^PBc)@ZZ:òQw°¢ÒQ— ëwø#¦:(\ô7Ô—ò÷'Ÿá©§žâ™'ÿÎÐc5žún+rL§6²E2C7M’±IÝËÂHĉDÂ}ò¥tX54››”Í}/ìDÏîÏ£'ÒFrâòªsÁYJíS_IÁ)mâÙKbúÝw1¨[’$ñÞÎF >-·…"7æõM8§Gk¬šBgÿãUÎnÑ‘»>Û†»iKæÜ؇ǃ" £×[ÑÆˆ¢‹o¨ ‚ ÂoN²þ³ JáO£¸¸’­[K9ú˜<±Páú]Q%‡Ç»^ò)=¢&.“âw‘ŒTŒê€‚+-€“$ÕALÍEŠ÷§¾íÑšJ" ÕåÇïT¸ÁTUÁRmøü^ê¿SSUNbQ¤_Üö§ÒJ8<©¸íÔdûÖ‰cO à<`9I°²ÅÕðú¶´®ºÏ¢yý|tK.û°5s–¿KŸN¿§.32`éTUVcÊ*.ŸG½`7Z]NäwŒàd̓[MRý)g¼ÝéEÓc˜>‰ò0:vŸB5Xr=*l¨²T/´¨gHHuÿ Cê½^»,¡¹£,¹÷FFÞù>¥ŠUQI”­å±›†2å³Í¸˜ ·¡cþRàÓÐç Îâ¾Ó®æʰ×eú©Ü NÏŸz!¾¹ %-Ê›—^Ë”OÖ£kÚO{üÕãޝFЧœGô§ÿÀ;™µ%ŒS“‘ii^~|ÿ}бðO’5e«xü–s9ÿ’7¨ö:êÞÿ¥Ï.ýBà›Æâ·2ð‹èÞ£”{SÐdoœw.ýÞñ‹åQd)ºƒ©dàqã½³Gö×Í#üï_»]bÃôpÅ€~Ü6f&§›ÍIxË,îØŸsÏ{„ oJݘâ9)Äó—ñýÖ=hŠ\[‡ ”YAápgYn·›‚‚¶nÝJaa!………lÙ²…²²2|>–e5ü*6O@Å^û?¼‡]L<³œÜfsiyÚræ–”2å´”°—)§åS,}ê¦L]†¤Íç­}ÝjzeÏÃÕx6S jÃêÐüÐÏÅ–6‡Çæ„D« ¿kðß³Œ)¯ÎÀsâåÜ>üd¶¾8Œ!OÎÃïóâñðù|¤|¸l*ªÝ‰ÇãÆétáöúñ¸ȲŒÍëÃï÷àrºðúýxÝ.œ'nŸŸË†•tÒ~Ä ÜrõI¤``JÐöô›ùaÎLtIG³Ù‘% Íé%ððû x(ІÓãÁírár¹ñy}ØÕB74‡Ÿ×&KH²ŠÛãÅc“ñ4=†áÞBßÖ)X² Ÿ×‹ÛåÄétb·)ñç=öCNŸ¾ÿ*ïÍÛŽâøOŽ{XF¾ØÜ*sÆö!Ôo<¯ÈåªÇ§cøühÛ¿ G».½ŒˆÍŽ"Õÿ#i zsxã02?\K±MES5ÎÚºr¹¨Š„¬ÙpzÜu¯¹°Ûê÷€QPµÌÑžëî¿—ñçG9寱¥8™;æ$BçO`âðV”ç¸ö©\8z)›U–)/-E œÂÝcÇpZ Èãçwiÿvº#YµSU0“ÏÏç‚[¥­ü c?ÞŒÇ Ó¿Šœ+&2áü'™ƒê¶!É*.¯E»;ÀÌq}hÜs36Dqhjmþ¬ÌºË.¦]Aá°§ë::t //ï€;v¤cÇŽ¤¥¥Õ>nhc§Ëâ§óÉ천.‹9ùé U©6ö~û¯Ïòðæ¼žü}„ƒOÿ¶™8eùѺì§:{6ÖvŒí(çõì¶XÉ“¸¬ÕN.èæ¾9=X:§=ëo\BáÞbZ¾ ð‡¾$Ê»rL–x üÎ!“¢b£ ]N8•ãÏ9‡n(¯ÑIlÿ€£m*öCVm ›¾e÷'œjO¥Ë Ç’eS¹ðùU8S¼Ù؆f¿œ‘·œŒMUôø4¼îdšJê¸eø½I>;ízœø8»½>¤­ÐKrqÌÀK8§s.ç?³{ªŸwøPÕž´ÏÑP|#±B¼uñÙtn™G§¶dtìÍ·… uOâ\þT^jÇ–} ¢nÆv®êêÁ6ì ÛÞ猺3qA9êÎ9ôêÞ”¦íºÐ¹}K.õw w57p—NüŠo§ÜÂÀª—¯ Ùoâ÷”óƯ÷ðlHGh)/æbôuÝè8èz^×f3½ÈDÎ=—eËx¨OˆØÏçÚ¶L$[€vzÑ1àCFaçœÉœs|{:ulùƒî¥ âeïüw¸³í1ôè›KNëN¼ôMÛþÔÖ‘`+ÆLOŸÎ=è1ìDNÞA‹/ç…üQŠ\o ƒÚ:üy™?.±ašAA8ÌY–…ªªø|¾ƒþ¹Ýîýë4xYHÿÇÞy‡YQ¤}ûîxâœs&ÌÀ0¤!gQ$‹&PÄ ˆaÍ"¨,²FtÍ®k\Ã* e$G$q€É3'wúþ8 Á]÷{}} }_×¹hzº»ž®ª®ª_…§¸zls¬9›Â5=X2ÖOˆEaeÕ7™÷á>ænrÑ®w]˜ˆŠX³]‹ˆW€ˆ!óToâ›Êùr¨‡ ïã÷ƒähNfF ÎÍâ¥çVqßÈ"*#¶ï-›?¿ðÊØ«¹´ÿ`†ëòÀ°îD …Œl·ðð“/q{» cº`Që¾\Чg7†™÷õãë*¬Èö2éÍoy½ …/Ÿû†‘ï-eþðz„^ÿœM¸ð¤PSý$›Û¹õœkYÒ¦?ÎëA—ÆðÕØ~ÌÞ%‘”’ ¢@¿k'0áÕ[Ø<õqÆ|±˜¼çÓ·gWª·,çž7çãqªÄ".¿ÿm b3˜½f?囿aîÆtž¿w!C$€‹€/‰ÓŸgÅO2ƒ/»˜;&ÌdúßÇ †p‹NzÞúÃw|Jø¥XõÞãÜüoÂ=‰{2pJQ"Zœ¸!„‚"‚eĈèe„~mñ²e¢G·LtDš¼…!C¯¤_ÿó¨X´“ù‹p:¢¤t¼‘%Ëö³úýI”Ï›C)j­ÂÓ 6ðƶr˽3ɹíl¤˜…CŠÖãÄ´AÔ_±Ç4t´àA/œÇ¾P]ƒQ±–ð¶2aà@.|ÓV%€%I=LL‹ÆÐ%QRP¬ -F\•œHXÄ¥ÖÜûØõdQ bá Ê*ÃèæÑqx¬Í66666666§’>öWÛû³|âö I°R# 8Ñ(©4ˆh& êy¹Tò2qBeÑ¢BÈ„«£´ÊR1áNÀÐMªã5!4MášµE\ùQkêûþÄŠEqöµÍäÉ+s(œ¶Ž;—ìcXûvŠÙühdÑ뢫QàÇ“ÙüúÉTo‹»èsÃ8þ|iìýŽËcémqÕˆvèC¯å Ÿz™>Óã$¹{‘‰C‹“”~>Y@Q} AUìá+ˆ(ee|oBz›AŒ¸²-æÐëx“DvV”•ñrV?îzìs{„Æô¿h=³=Œ¾ûœtªÂ ÕdhqÒòϦw?™±‚! >‚®ýPJlmbF<äìÛ_á¯+‡1ö™'y›'ùÇw1{ÊÕ5¾…F%A@G ûvÿÛpOÒb,“¸!âP\¸°P,¸•ˆwUv Ê2ªCAŒ'.?\ªNœ8‘L·UĤÏQÒ«7_ì¦é®y$[º™JŠ×G¸Û‡/«]«µ¾[TñEŒ}âE2å¡ie¿ "Ù‰ÕÒ‰œÀ).`"f 1>ú,—ÂkŸü‹f}oHL“· bdpÉ]wÑGôP/ׇvÈ–Uã¼ARq*Áб,ÝRq*nœD ÓÔ‰Êù\ý@ ‚å•h€"«¨ª‚êp Ê"fÔ<±Í66666666§ '¿¿—zMŽ8IiâCuYd´jÇÐ5«i–_H1£îkB÷îé\ör!ê.À¸ÇÏ—}}ÄÔfɘ‡G rxuF5ç7ZÀϲEë® ø×»>Þ¸|©«t„–I|ýv];5lþPL=J%ݬݺ¤RŽ£iqLS#PUY…Í.àÃKsÙôÑ|Ñó[:g˜Ìy£þ ©ÖChD«ƒTDÇB UcVG1°Ð‚ÕÄ#Õ”g¶âËsá§£øêÜ9t΄¯ßlGß—-ñjôŠ*ªBA3N‹A£¹|âe¼ÿÉ<š_y6Û¿¹‹å¹“xmt´H ,ˆ»ã÷\F{ÜŒŸ=ü$ƒ±A"Ät“»ŠÈ»a2?>ÉìÉçózD@Å$ „"âäѪ3¼±x.S–wàòKnâò‰ÿz¸'¥öÕ‰x»pG‡ÑÜÿ—F\’²‚1Òùì¬cß·Ÿ¹K–²tãzÊç,"¥kcR¦²*²qÁ4 Ëv°(ÓÉešý|Ô—ËØ»³„¹Ðݰ@‹D1-0µ8ñ¨^K?‹$¹t®êÖ˜]C>à/ÑÕ|üÙ&ºõÈ]Gqß_siê2ƈGìùW-{2{´áàš×xw®IÏ. ÙóÃr¤´!$©:––P¸ºå¡ÅÙg#baè:†™Ý0 òšæóíì‡xóŸ7³Ù—”ö¾—Ô¬†ô“êòØKNº–}Ê«î`ÏÂQ1ÖÂGü½z:íÌ(ûþžY‹–³ysœf™itoÓ;;Œ>Úæ¬8Ñ »¬°±±±±±±9=&Mš4験žÌdšuöžÊœÝ9™2 P¯Cþt{.ãnÏ¡o‡ÄüéìõwO.ã»eÑ`p2*P¯KõkIk%-ƒëîÈå¾ÛpíÅ@¥ÃÐúŒ»=—û®È"Ûio£dóÇ F)/‘™ `åÓñ¼V¤:@?´Ý‹(áOÍ¡ÃY]ÈIVˆ…d¸žÎ)•¬\³-›7ào~=}ºµÄçõÑðì³èØ%‡ ¯ÇYt옌"zÈhÙ®êávÈ9»; Ò⊫éœRÁʵ¿°yó×Ó·[[’\.2ZœE·vuQ´jfK\{Ñm«XþÓ&h éÙ{M2Ýè5âÇ4,Üz$gg †öê†WаD…¡1g <kóL¦Ì\ÂÆu«ˆä bÂý·ÑÜg"”)´Ø“f 2i_=TÄV!aý.à¼+»ÿÛpOÊŽŒ¸E^ÏËÙ1õUæHaÒÝÃÉqËU…LŸ1)§>å%š¶* Ã%'įC`ÕŒW™½2Ìà'n¦SZ&R#,þfKŠbœÓã|úµ«‹×ïÄ“™Nf’%⤓••†œØTÉØÍ-|ú.ÖoÞFqU„&­ºÑ®ï%l›òwæ<ÚžÏfÌCÈ©Oyi”Æ- h’™Jñú¯Y¸fRýþŒ¼»;ÎÐÑÛ2™†a˜Xµ“À2q¥4$C˜7÷Ô†—rÏð6XQƒ-:³ö‹ø±¢%o?v r0„.8Hö7 EÇ\<’ÌÎe3øa¿L²VJir+:æÈë1”í±¹¾K8©ÓÝÆÆÆÆÆÆæôF*+cˆ¢HF†ï¸¿ëºN8Æårýê3,Ë:¼ý‘`Y–ݲ±9£(**gûöbZµÉFVEôpôÈTR@eœ.f,1zzÕ„£¦Æ4 ¢á‚Ë…JœHØ@r:ÖU7NY'ÖÝ.èDÂqÌcŸcD#aP]?,zDÙË©rhç%-&ªÇ”2n—“h$±~S\n=Á¸ŽM,&n8“Üñ(Ñ˜Ž¤º×hQª£Úo ÷äìËÃäFÂ$‰×ÍÃñ#‰˜:‘Hô(1w(-½£ ©¸œ$L K#Ó0‘$Ðã‚(!I†V{ô÷P¸µóFÃúmöH8].dL#vTøÏÈ'NUN¬'®¹W”U\."áêpCB ‡[B«¹F>”î€ Ž'ŽC›ÿ«Ö$°sg²,Ó¢E½ãþ‰D())!99™_“µ‡öÿ5MÓ¿6g®ømÙ2 ]·³¿Í™ ~Õ—gá¿Þå¶Ã>b8WŒ˜È÷ÿÝÈEáô—¹º÷8¶ØidsÊ € Ôü~ÿÇ×z¦ âI êsÿ¯¿Òoþûi¸ëÿ_Zþû< Ê<ïQ{ÿgN|þjËo»÷·Ùccccccccs¦qBñÝò!×ô¹‘½­†óØã÷ÑW›GŸÌ;©ü7®z½.câ‹·ÒÀŽS›SD÷ŠŠoÀ‡ÇíÂétáõxq«¿Ó–[‚ˆ¢ª(Š„ ŠxŒ2¿®;Âè·H ¸ÿW^H”TÇ‘éÊÇ›$¡ª*²$")¼þ$œªtÚ$¨¬ºp:œ8.\îš­ˆÕáÄåvœP¼Š’‚ËíÆétât:pºœ¨Št”ð nÿ’ñ÷Ý̶*å?`ÅqÄSADIÅéráp:q;UdQ¨±×ÛëFŽÜ¯:]8NNN§ü_ôOˆ8\Gîu)Ò¯ÚsbÓ%T—çQù_@©±G´Å³Íé*~—O{•Ú^Î3÷ &/·#Ÿ†—¿ñéAXßyB/kîí‡ ¤°ØøÄu4iÙÕÀÊ[;#ÙjǯÍIŠìðR¶äYò%gÝ|šå¦“Ù®¯¬)'àL8wS<^ü~?~¿SI|0Š“$Ÿ§Ó…?É"J¸üI¸ÝN’’|ø’¼(¢Œ7¥˜ë´äÖç &ÉDõxøƒoy«ä}>ØæÂ«&Ó㫹7 ¯ã×í-R\žZç ×G °é œUçr~’ü¨²‚7Éwä9/Õ›>eD½¾¼²2„±árew~SJªßñŸÃ=ÉQÜI¬}¥ )9ùäå$1lÌçRø ¿ÿ1=Gò“àC©%âDÙIõÖϹ°±‹zùMÉkØša#&³pw*"n¿—¢í[éç[´JÓ1,ÅéÆç÷פõ‘ç©KžêDrNy)mü·%xýIˆ¥_sg‡VÔ¯Ó˜£Þ¦PWpcÓÚÙÜÖ¶73#~"xü~žæ¦N^9™n^˜Etý–v<•ÇÎw“ß„OžÞbàOv¶§Qj[.|q1nšÊ^×Ñ-H¨Ž8^Ò„‘OÎÃçqà ¤°âo×qíÀÑìÑ}¿yäÛÆÆÆÆÆÆÆæ”¿¥·áóðšé¬à‘aëð¤¤)(€ÃŸdà¯HFš\3Éã&eǯÍIŒäpऀ—æmbWq9¯ŠqÏÀ;ÙçðãOUØþìC\4t︒ç¾+"5à¦|ý'Œ»õeV.ÿŠ«ÆÿBJ™rõ}üsÊÆÞ=’›'MfKØlyè|ÕeœÝ:Uv!V.çÑ‹¯cÕV´ IDATnVK¾ýÛl ùøE>Ÿ| S¦.à±IcytÖ.©.vî>R=G„®ÞÉ^ÂS³·är ”'¼…•S¿mW†ŒèCº"“ÝÎÓÜİaWpÉA¼2w+ÉYMéuå´oè`Ö{¯SÌ}üî_XNjªó˜÷­î)€/ÃÑñ}"¥ûØ_ò»¾_ÉIAŠ•³zÅ JÅ”ÃNÆŽ`¡k†Üù;öífÿm¼ö§dÞò4›e?Éj>{3}°žo?{—ƒ1'nȆÏ^äÚÁC¸ööXW¡Ö`S+F(ø'ÁÒýìÎ °x •r”9ͧ틳(«ÜΘÖ%Ì]¹UÔ)ܸ†MåE¢¡ý ¿…Êý…”–~Âs“?$âR+¤Ÿ-ï¢×í›)ß·‡Rý>úa±±Æž¢È Ò–­¦DVqÉÅ|:þ 6™NdœIÖL½™Â† ¨ÓÔe‚ìJ¥rá-ÌÜÝ€ü!Iˆº]^ØØØØØØØœ¦â7³nsªŠ‹©8ÔÆ ¯¡J‡‚z뀌p(òqIHê2˜q“ãµã׿¤'N°¼CWè9¤/à ÞXeû³wÑëï;˜ðÌc\Þºš.lƧ{]ÄwÎçµ7îåÜó.gÚsRhTòõÔ¸çÝ™ ºé6<1‰§ÞÚˆ$D˜òê3¼úÅfœîƒÜßìV·¿‚¸‰ªŸà†ûþJµìgéûo2ú†<üÄ‹¼²|?¿|Ï1á6gêNΚOÍéõ¢¯\ÆC>Bu»Ù³øe&=3•ü–õØ=û={õŠ­OßsVøxîɇùóŸ'rA‡*wþÀ³¯LdÆOUtî5ltºä&®mïeíS·ýÛpOv ]¦ÕÙ­Xðâµõoåºi·Ó0DKiÁ=É€!â'p&±H¥aÊKËHé}77]ús aÅC_SÕh'ÞE§È¾Z·“òå³øzj˜á÷O`ÐyÙ®Ü(‹ !÷Ñù‚|"! ý§¥üå"Ýr@oD®ßIL×håS0ÃA 5…KFOdì…õˆÄŒDÙixh×Jå¡kº#t™ËÜÕ7⫪åùY‘U‡Š"Kµ¦0›hñ,ºôÏ$µþë+6¶n€'â©eÏ2~ÈtPÇQÄb¾zþ}¶T—ã»øÀ3‰›/k‡_QT7òÖyde;îw ¹ª‰$Ù[ÑÙØØØØØØœ¦â·ãðÛ¹pÃçÜ4ö5–­]È w}Ž$Lbx28Ó²€¯xñ»ÌZñ3ÁôH!aO{¶9,,Ó±rÞ\ô#å{¿fÔ…ñàÔ½4oEqiY•ˆÑ”%–…e­`pš›8Ðçì[éÛ²u€ÂÝ›ˆ â\^žÍßò÷P1ÿzãA.p¿dµ£^²“¨àì›gbZ%µäµ¯¿£ì¨p[R\R†(`hr.7>9–¤MOñèEï ÝÇ3:ED“€@Ã&8¿žMZpÙ}ÓÙµPnÜ(‚LfN#<ˆÔiÙ™fJ5¯þpìûÖ ÷)ÊÌXíF¿µûMö ú ß«.dS'¢‡ˆýÆ‘Kˆ3ÈÐÊywÿ4î{ìV®¸d÷½þ.JMÖíY϶»Gsa×6\|ám\:°.±¸y¸óOýÄ6Lgðxoì•áXbK$áÈóÁË$ª…ÇŒ£BIîÿÇ"¬ÕWòDî$¶y\5[(I¸¥Ý¼rñ¹dÔiÉÍ“çQÔZØB²DvÍ{‰f¶f÷_ºQŽƒì'¶áS¿QÄ[÷Œ ª¦JoÃÇÖr.óDqnþÿßB\‘¼Ÿ™óÖ³zá|vìø…kßœEŠ'™¹_ÍdÉÒ_XºiŠ,Úå„Í)Í Çu”œ yméÇL³amobgÞp6™!¹£ä]µg}Eu«!Ll‘O. ^8†'̓äòU˜ìµÈ´ã׿¤ÆÂBÁ›’$Ř=õ *Ó†3¦{2Ó^v>¾ýyukÓ³,Nr£m1°ˆQVA£w²ĵ J2 !m:fÃF$gßñ2_ÜÓ¨b특¸$Ó„h¨‚¢pŒ4$Úx=Ç„û $7šÀŒq7ÆM}æÏ#/ A¥ÉÃ/^ D0- 0KNF=2s:\ÊÜÂͼýÐD.}´{ns`a%ö8sºÑQU/¸TÚý‡pOváë0vñÞw7n xHÎ0ˆÅ„ĞŲ ŸÛMJ²‚£Z@Ó¬£ïuùI ¸ñáfÇô?óòüùçËû}¹L~o*cz¦ƒ¾‰¶ú1ˆamܽz«ÚÈæÍ*Mš'c¢ê'²ö!ÆüP‡î»›.õôˆA¶²-%$g²´,†˜Ÿˆx•d7¤*x'BÙ >\Õ”Q}KHüÉa4]¨¸a=‡;¾^ÎxYD‹VSŠÞkXu§°ø‹«y¯|8ëߘ¨.?¡CöŒ»‡.uB•å8„½¼{ç×4Ÿxæ¼Øy=ÏšCtW…åkؽƒQíò™µz!?w±mëêí-Enïì}mllllllN3ñ P§ó îê<ˆóëï¦ûõÐBþG—YŒk_kFÝ{ü Ýq_·Cǃ×ÍŽ\›“XöZ¦f!²‘Ûºe3Á¬Fj~>Î}5¢qésai-ɤ¤È”••ò·Ÿï¦·Å"„~XD3¢a¢‘8a  Rª\ÄÂisõMýP'¥"…Jizá(f~±pâzÓ4n.þ#$ýèpŸ[qÓCh&`TËÙ?ô©ÃŸöxˆ›ðÏeßÑX £q$¯…+Ë ÷ò ^ín»â}~qÏfæ¸(I ;ðÉ×Sù⚇™±åˆ=ïo´‘»¯^˜‚<þVZ3êÞ‡QöÎ.æÕ²+èß$@¨Ñ=ô¹ÆI¸p6o}9•ó{·%/³ ›SÁúµÝ€mlNSŠŠÊÙ¾½˜6íàu©µþb®ª"¢’Œ;ɳÖRÇHeqŇß-,/%f&ú’Sý USQeHõ#êaÊ+5ü‡£H./>÷‘°,]£²*ˆ'%ES^Á„_ ·”ð1Óv%§Ÿ€G ªÊ+ÑLP}’‘`eŠÛã°kc‹HU%1ÁI ɉ®¤:&àOö!F°‚J]øMáž¼ˆ8“xÔÄ;Erð{[õXÁÊêá[s—ìÄï÷^ÿaèBÁša!ȼ~/jMFƒ•„5W’—,¡ªr¢‡F’ OJg-«‚¥Äqà $žcjaª«#èHx“¥‘E,XI0¾”@Gj“pu%‘øoìyRR|G¦A›UUÕ¨ã퉙2I)^âå5y¸&O©>œbŒP4vä±’§ê ­Â°k ›?Iع³ Y–iÑ¢ÞqD"”””œœÌ¯ÉZÓ4E11ûÑ¿6g¬øm“®ÛÓ8Ou, T,ÉaGƆ`ÄÀ°°×#ŸqiO”dÝ|9©š¸±ÓþLCU\²lGÆFÜ2øe{Ùï&~O˜ƒböqãð_ød“€–íà©)m¹³‰ÛŽ}›ÓIؾ½»ëçT¾ŠËC#ý;Ô3±$§)gŒð® d‡ôÝ€í‘úL¾ße\ð¨j à3Mø†L^ûs*“"I¸l|F ß|IÀ³y ol߈K²ð™BÄй¦qKzÈuk-ûŸqÂܪˆÓãʆ¼;ª!X!îyf=kÆ´Ã÷s«KDLÝ¢ïE¾-7é[×€Q^Á/–ž8óUQhØ,‰öMœvúÙœL'âqÃŽˆS^ü‚ ‚¨Cû@¶;éΜÖPQ cQh•ño\XØœvâ7Œ ìÖ1x%þt°$IPmm›KP©³Öñ¡zÄ¥B,~j9såDº#§çȯâ–4ƒ¸f' ½BçŒëƳ$@@–@‘O—r\8¾\³9þ{1%ÕüδZ\òƒYyæå«¦¤EQÄS¹¼¼VP³?èßòÍ‹ÒïÜ^?áB)§[àó—6á¨7ŸÌ³~¡}ÿ&4SrRʘüB!Ï¿fÊWûˆÅŒQðøZ¶ìafǮ͒Î+å…ñ¥Lük+ž¾½¶ðµ±±9u{I@neɸ ¾¶¯ÖEŽïFôÆxëÚ lòJ üaKR“b¼ã&v¦Ã’7¶3s}<sßY€»ç7üì”ù០põœÃRKN¼“^˜<ƒO÷üOì@±;“þ'yLU$jo¥,) ŸÁ÷÷¯àó…U¨Gů€#äµ– ؘ¬àPDìm˜OeDDÅ…(«ˆ’‚(Ù³åÎøQ{“ ¢dÿ&V5y‹°dÛÅÅ‹,#¨ ‚’ø‰Šôÿý­ Þýßõ#º÷d½@’mŸÓ59Ot2¶¸è¶¦Ì¸¾Á‘“›–QïáÖ–Ž@£óRG¶%»ù÷ÜÕ7™{nlˆ\þDO®2Ê æñqß,¾|¹€ºªýíØØØœj-£ä™»¡œE+¯Š K“YÜ‚÷4†jâ€SN E˜ÜðQ+(ñOvÒ¼{#Ϊ'B pI `˜3ŒhVâü¡cµ¦ò‘-›à¨õüÈ1C´‚nü&±¢AM¡ë-ù`Bù†"ö¸^ׄØüm|èhHdU>ì ‚Ó?ÿ„<ìb.Í‹A„£Ã ‰ÿ+"˜ÄôÄè°[SLØ3À*gÄ£ÅLyº%”F£²Ž„'k¢¶«èÓÌ%ô¢mÜÿÁj.¹a(“u U…¯¦Qg_oŠþÖ ªbÄ¢àð8µ¶¡£U$1fKo(/ç•ç×ÓdP[z7W‰…-^$4-¢c"âp«Gî êöŽÍ'‘ð•Üž«Ã>#Y¯Bí>‘Ní/GV$Äç>¦Ä4Œ„PV݈¢èñ0– ‚ìB’0u -”X"ûI,Ô1¢!{<ùAñ¯e¡ð ­¬±x£P9ë}vLM£`Ú:onŠÚÀÌá èûÅMA0DPjIJÃPü}ËhU!2ïŸìø`¨^¬jî¡#h8¤1–. :,MÃŒk Š ¡,H€%üËÈ*’ÃèS0ö…°$!ñ={]V<†©3G‘Q±t 3¦ !:"X†‹‚êFT ŒP D%a›haiq̸àtshÐÜ ‡±,Á)©"*`iq0ª)þ|9ÎnÝñÕU1b&‚Ó(Õ²át¿¦nP^ªQ ¤:™Û˜KÏÝÀU×è˜=Ê(yk Ò$:Ž1˜¸ØÃ_Z:@¯æ£G×ñù/)†¥Ó¿“¯=òkccs*bšHé)äÉe¬(ª¦U3/až˜ãûq~v~¹Ÿªçñ^0cì,ÞÜXA£sÚ0iT[z9ï<ñeͽ™8±9Éš-€OŒ(žz×qÖзHvìý®ÛŠ~‘ ëv!¢“Öýaêg×¹’s'±·t?‚Øšœón -ÍEåúW(\·MÈíñg>/å˳}«ËhJ³aãq™¶>Eä/jV6.Àí-+‡ß$T°ý-†­¥ríó̼q;ÍÆ>E~Õã|ñçˆBCšNœ@ÃVɘ¶þ=`d“=éYêœÕaÿRÖ¾µý—øf ZDÀݹ;=;`îÛMhù:ªŠ·`Šõȸü"\™ø–ï)œ¾Ñ]æëNš #'³gâDçy—R·S&Æ!4ŠAlé4mÅ?”áh×…¬~]*·ràݯ•Ë(uê’yÅe¨.™àœÉ\©`u©÷Àå¨Å‹Ù;}!±r7ž®½Iï›KÅÛ¥¼È ZŒ:cÇãr øa)±Œ/¨X(âtuòÃD~ú޲Õk©¾úFê·)}ë#Êv—¡¶ìBfßNHœÚ섲4¹q}n¾Ú'ɼ{+Öï«^CZ÷—ßìJS¸îîœÄõ²—¡·´£ý>¸,’ÓÈßžŽeccsª"¨\ÓZaäŽ0×· ÀÖ"~ÊoÌý)q¾]^FÈŸ„~`'sÒòyá/…?ïa]0•UŸ$妦4ÏϦE^å ¬c/å™Ù<ßÇÉÏ‹öðéæjúÇ‚¬X!Óy` ÁƒÕ¬\©rÖÅ>þñõ2ÊõᥑnV-ÞÆ×5Ïßñón–—Ô£O2‰…PÞ8_\·³niͰ´0/Ï/ÆL W–Qžâ£m^.ƒ .î•JÚ†ú\X pÑ€,*Ö±x…“»nhIxg1?|¿‹‚ËëñVM¸/ŒtRµj_âšÛ.,aÁw;)¸*…YŸ¯¢Ó‹}y¡ÙNî»wgÿ=…&9Ùüéâ|º˜Å´üQaÖ¨6hûòI™Æ|'Øþå~Mþ¢‰.®îáà– UÜÔ«¬ÙÂOí»11-Ƭ9û¥¦aîZÿêv♋S)\²µå9¬}y)OEó¶Íh^Ç…mEV=°ÊF<5ÂÃÆ/7ðÅÚr Ê×Öº÷gVì-àü,ˆÛê÷d)dÀŠ¡ÇªÑ…*‚»·ãoœ‰3}8ùþ8’¸‰}BÚýwÿêmªä³hÜ+’9ß« ‹­¦r{:9}Ä,^Aù†/ñå¬ ¦Sï˜{>¢¸rÓÁ²ÓüÈ ~*÷_Å?ÒoGÑ ´ /ùwE JØ÷ì2ÒþÒ ³ÁÜ~;Ʀ}á¥ÿäg1·ÿ‹íûªÈk•lGâè.¦hâmì6ÝXᾑ°°ê6¸>aª>þ…ŠúMIŠ®£jÙN7 E_:Ÿ²é;ȾÃOùä øÇÁíÙEÉÄ8BR²ë–ã¾s()fŒêϾ¡ªåH¼r$1"«ˆh«?£Òßšì뺜¶‚Š”¤uÎ&0àB’,ñU?R:}Ù½÷³³¬ùWåan]LpkñÂý8»œOª+F¨¸ ½:¤ÞCpDˆÚOì`õßiAäËg0˜@ÝË·°ï±eÄ?ì‰3¯5Îøódªß]…^§=Ù=½D—®¦rË~R›§cÂ[…žPüŠŠB püyg–ŽYÇvˆ2õƒLœå8üÙz2ܴΰ?›ÓÝD,Ȧþì ”›Ìþ"D¯i YHŠˆ 4ó(ìj+Ó¯j@ç&uèš«TU‘IIM"·IõÉ¥;ù`n5™ŸˆD ƒ1¹¹¨nUYq+˜&­2óèu^& %“¬u EOoå“+séÖ¬=’­ "–0¤w.VçTp:ié,E·@RDDÁ"àó“Ÿ"Ó5×É>òSºå'ñãâUܰ¼„V‚šÅy½ £Y´ÎÊã¼ó2i¨Â¢×rýòÒ#×ônÁMºA¦¿;ø èÍ8{9Œ¤¦$ѽq¢A&ìXËÐ5 ÷0¼¡Ëõý˜qw—æäüsEfß¾VFŸþ À2‘‰<Ö4ÃÍþ1Ëùl\[:·o¹™&kª¨’\'•zírÈâÜ´ XNº*Ó nhÖ–¡u=ì¿éнéžeboq~!¹ˆ–|ÈŠ¿ý±bò¯?@ýÀ>Ê×ÌgéüWp»E"UÝi+agR€ºÍúãO5‰6¢KNBû>aÃÖxwKºNrëÛ±RÎ!uùÕìßJz~ꦚ˜všŸ"Ýa•ø³ÞgdÑ’€Ê¿eëÛAL|ˆ.EICÍlJVËz¨º—v?çÛ¹.:=Ðü™vÇï_Bc†SÉ?™ÌŽõ±d™ê¿dïúçI7¶³ëÝÙ± ÆÞ,²†˜B:Î q7ÏÁÛ¢¯.‚å;Øõ:´¨‹áPÌ͈ûö²GZ¡4ïT,Lâ›bÏV Ò<Ì3o_Åu½ëCä–nR)«òÔº÷Sv=t;×46ˆévÌŸaœé×Ðeè[ø… Z¬«r!?®TòTjp=?L|C”q¬ÆÈPU†Á´ ä@ :^L«ÁW!ÅJ(Û³†èž•äÝ¿ ï¯Ø6k8¥â/40쎨S£DˆU¤(DË+1,W¢D·,,4Œ*0sÇ’^™Ïõ™U¬Ö‡-Ÿ`ÈøÞ˜;ïV@âË@Œay¢%ì]º¬'S§ÀdÏøO04Ë2±Œ8–¦cÅu,SÀJñâøàæ°f(EÅT¾$¼R€ºo?ƒ×§alù–òªÈq®¼E‡ Ù'ÞäÀ–MõŠ…˜ÝÆÐqTs‚SÞ¢h­¶e™S_õãGŠ^ž öé]ûÒê–|Êz–R9ìô£Ë7=Šæ±fØîš—‹cjzb]°& ŠÖÞ(FKÁ#àð¦’}ç­Ô퓇¹w-e;%,ãÔ®Ïÿ  Éûy¦ózžÔQQÍû½V±¥æø½³¿cJ‘ýÁÛØØq ÎmCðÙ¹,Ü•FódÀ´04‘àî=äu|‡´ç—³)¯5³-Bƒ(N.ècô]Ñó;[‡æ²îÙ¯q¶{±ïB¾ÝoÑ$…ÍV"¶ÿÝÖê´°,4ÍH ˜J¡Ý{Éëø)Ï&ža]+1Ø2ÁÁ·ƒÃíÞ"iâJ ÍÂ,tÍD7, ÃBÓ,, Ìšã˜nТ}­wüLzû7P»NçîYqd7GÂÕ ZÕ\“qèšÙ1$·…31kZšf’Ó¸·ïvä>3x©DgÆø/p üŠë÷x¸²c èvƒû?6v£1ä‹ûºùu~ÜÔ€&™5y,nb"Þº‰æÂÔýÓ 6·ìÇyáj(>Îï_Í&ÑcšÆwµeõ/àLº Ñý è;jßÛ—AMt{úIÓ¬¶°0ã•h¡â¡RL=ŽîíOÇÓ˜q‹ƒéoßL,Áëаe]¶~Ò•YOweóÖmX–ޝá0<_âë{]̸¿›V–ãÊt²z¢ÄÜ·F°U¿‚†¹"¦-|O‘a`FŽìhjé:fLOœEÐiDëk^çͺ]X»7Êîó›ñŒ·ßoÉ¥ñ€vXv§Öïœ"¢ã Ǫ‹G²ªßÕ§žOfÛ,2»kÁâawS¼-Œ`š ÕˆCË„x 3ãlÒ}Ÿ±ªç0–OYA’ºX—£Û²uÀ–÷»ˆ×ÎE¬«Ö¿2¢w {¸“ýG°{ƒH U.®ö-aÞ,m?M˪pr†ÈŽAƒY{ÿóì7{ÑQ!üÙû¬îv5;ÖìCÍo‹Üj ò£,k?ˆÅ¯|GB=nV÷–¦a ©C{'ÜÂÆbd éJ䥉,í9„e—¼BuªÄå IDAT© žÚž ˲~siøÒK/Ñ ALÓDTUÅáp°bÅ ÆŽ{¨•ȬQ+)¿²%#z%ýÇgþ²èGfîÊçžáÿ×ó¤+y±þOôÚ}6-2ýò"MkŒZcç—…;"Ó. NqŠŠÊÙµ«Y–ìÈ8Õ+%ËBq'Ñ\ŸƒºeÈîÿÅÐDHQ ¢ñ¶ì–•œ ƒ»¦/1¦'þî— RU— á˜x”D·£`AP£æœhF¢² ›àV \ãTBUŽyþ1ÊÅ!'¼Hë(&”ëGlC…Ä3ñȱ $Â8´…N¬æ½j‡{Âk,ð‹PYcƒ»&NœjâÙ=±—°”o„µÿñ«‡ ç]‡•S…¬íH¤Á)„#Ó ¡ØaÌj’‚Ó1DÉ'')‘zÈ@NU0Jâàt y¨7DT¿šð.˜P=Á½ú)=]°Â¨)7Ðæ• ÿé èD‡+V]kÐG@TȪ†Ž%éèáFdÁ²ƒ«fÏž"²Ú_BZR(dYLL-ˆ®‰(nobˆC‹TŸήÊ+ f¾”ÉÝ!Nß}~e?5ûù  Wâ½/8$Т 8LãÔ Ÿ†Î®4 @ßúù<ù˼ʼ…ŒêBr)$&û Xñ(F$Ž ;]*&:f$Ž…„ XX$A°b:¢Ç(‹×1³*žðíu X€``T„0 î8UÏ-Áì×ôNi‘(F$ (Hn‚d®aš:fL@ò9Ï14ôPÁéDR%°,ÌhS3]IˆŠUË Á§bUÅ¡º\`ÉN$— ‘ †‘ðH-ÖÔ)f0‚ù®› jqnoÙA®<¢X´hQï¸k"‘%%%$''ók²Ö4MDQÄ4ÍÿnÚsË–-IOOO´;t””œN'eeeGâNŸ‚ÓQ{P¹Š9VÓcB]Ü ¹à‘*Aâ¶§²z„×2WÓ˜}M]6ÎÚÂä)„\7÷MÈ§à˜¶ltO!÷­b‹iqóK­¹ #Ìã²t£N§!õ™py ¡ÝYòEÓwE;üÜu‹)/b¿ÓÇø‡òhî¨f΃ŬË2žÅmoµa€_@”Åš‚4ÂÌÇö0-Í`ñûùëè æ%…Ì3 f_͆Y[xjJ~ÅN›SC8Ùœêix¸k6ñŸÿÕ45 ôÑÒwú;æò óˆ`¬½5@å †ÜªNp.?r;Áó*µÄï„¶%ÌKük9¶,Æþ}¸¿vM…yüõáZ×Å?(ñ­d†SØþàQgâU‡Ò#Š~ÌTF£¸&Î#QôHôp>•Ûú=þÞSüË?œä§G9naD«Ž?/Èi[!JèÁ­”l]D<žBz³«Hñ{1´8ñã|ÊѧßÜ×CÉmqô¿§Ø«¬õÎ10k>õø¡óA®Žë§m]_»ªÇÂü£¿ûXøpP -r|[áP¬kPS›Áà îa–ÇNøÆB\DíÞÓ§+­À2­ÃºY}|Š›åÇœ ‡0ÂÇ\ª<>¨Êh­{jnˆG0ã‘ÃïcViÿ‡ioýîÕû%~5jDNN;wîÄãñššzXÿ:Õ,ø[1½'8h9³‚YO´@ß±;-zŸãa`j× ©CpýVϸ穦„7ìdÁÔBêßЀ#ãÇ%ü­ß^Îù¨#cä|9k'¾]EìMjÀ³“,z|ïf¶gHRŸ!rÅ«TÍú‘§ÍâO.`ÿ—Ëø`²—G²˜ùô.º­9‹íä•sÖÑamcT`ý“›©l’Í׺øùó-L]ï£Ýy^ÎOÏàú!Y×oeÉ»ÕN›SÓ´ÅïéÐaš&˜§YëÞæ?êÄHbCK+Vô4ùµùm~ ,ƒpÌ$=SÊq 0’úS§û ,,=J°:~Fm_Š™èD­Ää›3¤¸Oh|†APÓ8#Æ.4ZdaR‹±iÒ5â¦ñ»–sÿUkAE***رc•••TUU1`ÀDñ?-Q]1<<ô³Æ°ï×óð¸<†·ò‘$iÚúE~º‹‘s´^v`λ²!W×~̺]Œ{¸ FKЄfÍ¢\;¥Œ1fÒÈ'’9&…çF¼*­Û$Ñ£¡BYçtìrÓµ‘JéY)x_2ë¥0°¹ŠŸÆt¹a.ß—ç ("nâüý`ÿœ"SM ¦Œi®rn™¼¸‡¶>‘…Ëþƒ6'Aª›têTM³¾ú&ÕÖpÄ‚°7±<ƒÀŒEM Mµ…ï™–øUÁJ¶¾-áß¼÷Œüî+KcL—ËíÏàŒk·Y˜­»p[§síÈ8Ã0ôë·D–•?^üJ’D ÀãñPTTDAAªª'~-KÀPŽ.­¨ŒÅiüJ'–8Ã|rÓFolÌëLªw%j¯äúî½%¿ÞžIÞ¿§4±váУê*ä/ËÒ0k–Óüç0ZœÕVä—ïËÐfC³ˆÇM↕8ÖLŒš"¢,ÔìccϧúÝáäGÍBC¢ àäÅw»0¢µY{@$´J#¸ó7ÚisJ&Uu£ªv\œú¢ŽãvØqq¦6,TUD–íÍäÏ4ÊÊL pú.ú´ùõ†° ßÞËö ¬ìÑãqT»³óÌk³ ÆïºÄå¿j1,Z´ˆ¥K—RVV†Ó餴´”¥K—²}ûö£®óxâ\Óíüyß!ñé ²IŽ(öž+g×n²¸²·‡:-óYûár„»7Ñ¢o+Zÿ¼‘ôÌù¨©ó¸ûÕ8k ÊÔV|0¤”¦©ó‘Sæóágü ÙzÛHßò§å>Fžï%1ÐâV ¼a9ÖMô¸ˆlÚ¼g“(©sñ?Öƒ–Ä ‡t‚HŒ¾­>«F.À™;ѹ„owÅÈïØ˜Ÿ>Zpï–Ãvfüš666hG†½~ûÌäð´w»®·9mëúß“ÿÊÛóéÃ^Ê.fâ¾¶öš‘3¢¢r¶nÝOÍíÈ8 ˆÇãhš†Çã±#ã # ¡( ª=…㌣¬¬Œ””;"ì´·±ëz›Ó>í£lذEQoÏgè\1?ç?R—˜ŸlllNAöÎ|‘ áÂÑwòÉŽã}Ízæzn9Š+‡å¢!£y哿óàC¹ô²Ë¹÷Éç©8ªöXȟ<ՕvüÚØØØØØØœžœ¡ç½téµSßÆÆæÿ˜<ž?>kWÒù7vfoýèv?²_ж™.üÙÎã®™óü;|•7ŠY¯?O’Q'µPʘ¬>Þð1ï½™Å5âYŒ¶fæ#½øîÉþô{ðtZŒŸF;¿26666666§ÿÕÈï¾}û¨ªª¢²²’ÊÊJÊËË©øìwxTÅ×€ßÝôÞH£%¡wº U:R¤ƒ * (XPA)b¥ÙPé½÷¡-tÒ˦nÊnvÏ÷ÇÆ„ òýïû<Zò`Ü>E: ™×Öò|ïÑÄõ™Ïø™ë9:¨¥Aª{î ;ãjH#°³Ï&ôÒQÖΜÿ¬üøfrÎ|ÔŸâcÉ­3 x±4_:Á„'êðÌÄê|ž­âêá£dP—:µïì›ËÈÖR¬ˆHAAAAAAáæ¾^ò·mÛ–Ž;Ò¹sgZ¶lI›6mhÞ¼9uëÖ-—Ï`T3lbfN­Ëì§l ‰ûmOZ‹ŸÂ®æ1ÚM#Ý çðÜsTó:Š•÷ Þ\’¤³¤û Ò2#P9ÁÚý6å.,¸É³O¢r=B‹qa$‚|ÞyîÖ^GiÚç·Ù*((üËpiÔ=]¸òë>øz%Ò﬋IÙÑ•Ê\\\°µ² ×ksÈ,wµ| ëksxÿ½YŒï ‡÷î'§B;žÆ´§ðÁìí¼äz_×ö0O/ÊàéOgóÎ;?òL×õ¼ÿÑ<~Ûâkmi°TŽŒRPPPPPPP¿àé鉇‡NNN¥‘µìììpr*¿AÌÜRÅ…)ì=žÂæÍE´­aèXû|1ü8µ/€,ÒYx@KÒ‰«Ê©FBrWòV¡I˜0­Ç‰4zµ»M|v7 ÓºÐéËSlÁ cr·k¶B4ݘã aÏ™B‚žçRÝú&wåÚJ;RÒá*((üË0sçéD—Æ·}…§[9c­²äx6x8Šˆ–ÌÌL233É/Ò³ÙT\Ê…¤oÏôž›þ.ÛNÇ÷[é?øÊy`Ý6ÚÔ~pdÓû¬ÍiÍ ovK{Qñë˜9쿸ŒUGèõä“8™Ñ§X·7ˆ"`ÿÖ‹„§å+²zÀèãv1På„[moT.M˜´óæÝ™ö3PåŠ{“º8«T´ýé•È]eÃ(ŽÛE•Uj{£riZy ÿû^¨ƒEZ4ò±G¥ `GINãÅopU©ð ¨ƒJ¥bÊöœ?.«Hâ›>ð¬áKƒ†µ0S©P™µ#ø©v=œüjQ¿®*•3‹N(xÀ¤GœççÙ½P©Tü\fv&-â<+fUL&ÕRáT« ÜU¨¬ßçJ%ûMʉZMªb£²â×Ë1 Q©ðª_Ÿz~¶˜©ú³7àƒ\¨^»M×@¥RQoÐL”ø†!eü³“JE‹ÑËMé‰w§ @A§Ï2´¶ î“ÑÜ£Úˆ³_⬲¡vuìß]@ȯS§†3uky£RUgÄÏÁw•;7¹?*• §éW(ün*•Šv/nà¿îîkð+"dffröìYbcc¹zõ*………r©03ƒä[ùì]{‹6ôkg =ǪHLײm[:±îÕèÝÈŽHm!éÜMÎ!Œf¦:Ô–j,ŒzŽM®J5ÓšvïY’¨­iYÏ´Χ•zô´îÜŒ‘ê,¾v™qË,ñU¢à+((ü‹1e9·nesrá·Ô¹]!c×…2}¨-["³æ‹_©pd›e{^êÀ…£ÇØwÖÀ×ñzck°hKú­] jŸËÑõÑŒYs’%¯¶@¤E]!ζ+_~5×øC„§)±ð,¹|ûödvxN"#*‰ýÏ»³`À«Ü*—§ˆ]3f°ƒ–¤] ýû^û QÀ²w*–‡Xþîdvy½KzTûŸ¯Â‚¯*«¢þ©7jºÛÑ„Æj˜Qç úí4|Úq"ÅÍ7IP+G¾þ5IT¶Ëtx3aï)RnßâæÕ pƒS·R=­~:@vL4a©,¬™Í›SvaP„ð@ÉN¼ÂÉs¦H6öeNfËI¼\Iz1ãVD‘}“›i1ø}Î쯮V¨ñ¯½‡ón}=‘èøfñ~ÀƒOÎd‘FxÌ-겋o7^š²-7“ø¨H®Ÿ{+¬yñ•É(± ÿ*Êûç´ec^»0àÀ]é_s (›« ƒjžN•½š³ósê=ö1³¤€¨øTò¾ €GÛ÷8—EDtG§6`à ŸÝµÌÊÉ;\q;6‰ýÉa¼¶9 WÀÙÙ @RŽ2uÄPÌóN¢ÿ/‰KîƒØØXINN–ýû÷Kzzºˆˆ?~¼L.£\ù%X¾;¯ìzë„Lý!GDô²kj Ì\›gÊ–r[V_.”Èm§åÝãEDäÖÎó2cr‚ˆ$Ë Ÿ+R(2ºÎ9'""y·þ>9 "“ψ¦z®ü,KOåJÔÁ+rUD$£H–Í<"+n‹‚Be$&jäĉPåF<"I^^žr#þƒäååIQQÑ#ðK42¥¿¯Ðè=IÛ9A,©)Ç*f ]#~¶ˆ¥›“¨i+sv¦ˆˆVÞ¿«l- ‘éƒ|…Fï—¦[PSN>"²ÏÈÈxD~IŒt©‚Tk’¶~ÿdÄÙËN`ˆé¹æË-“¦“%oµx\"ˤ¯x]T ùL‘ý?eå‡Þ+õIw§Û‚¬Kª¤þ2vuÄ]_­}¥®€™8W1“Ú¾ßKbé792÷õ>bÒpé•ò… 1Ò½1bSó[Ñ(}ý_Kÿ¬¢ÌÙžøûé%Lm€4>C²îþŲsBOÄÅÛKm¬äÉg+ä1È¢1þ‚ãkw•ž1DT¼$¿n-€ŒÞ´VÆ‚t™¼WD d¤#G{)V¨ðüoG\çGïäÕ®¯°9ò {Ç&ëògE\åÔ†ðûˆ¦[Lø†S\‰¨¼æ°ÀËŠÿr9ùÁ>’‰ß’ÍW¶ÿgrF^áÔ¦h ™­¯øC}¾t\ÿéÂrÐ޺Ωm!™}œ$÷¿¬z¶ÍX¼éQ‘WÛ¼Ÿ{•åžc4¬Þw†š²;Ú·ˆÎ¬ï.[Àª)˶ž&2òc›Òë)Fþ/AËœÎXQ›íÉ…4È»ÀÛÛ È&“Œ¼l¡à,i†?Q¶„Ÿú¼L‚ûpæó/qiáL=]ú}‚›€*‘ÝÿÜœl1œ\ïNWWH7jŽóbÞ¤ô“û¾»ëE±[9v©ˆì Zí -;óôË̺þÛÖŠõ¨Ò/ðÙ¸µ¸¶ÿ‰çyü¥H:«÷]¨àŸcHʃµ*¦Ç“w§¨XØØ•.Aßû#¯]AÖÔ¨ë×N ôñYàéezF<³ô-^XpŒyg²˜úDÕJ®I€À—Ïç/* ).φ8“C|°iòòÆOàáÑ ;ÕE^ÿ8z‰¹™-¯äHø-²ŽOá,{ΖËá2 ÄÚÅUªx»‹«ƒÐd¸¸ÿ§êXóÆË²ër¢dé´’™)´È>vß™÷ô)øÓW™/{Ÿž'«÷Å–Kͺð£ôì;J>™»]ÖÍF½½Còÿãòü£¥Pa?5’•ÑeW¦Ê‡«Vʱ„ʤ‘$ó-¦Êµë5Ê{ÓNýÉÌÅ¢ O“?³(8ýäfYüÒ!щHF¸FþúM#FÑ&gJ¾A$þÐYôÒ‘ ß_“©ó%é?»ìY$çò\i]ÏLÔ8HûáŸK|eBˆÞ%^vb]ÅAÀ]Æ,8oº÷(›sy®´¬óu*K_ÿ‰û²§[#••¸»¹Hí]äšVD.|mZöìm'à+ÿLÙÎrM'’½ï1dÌšëeÖÔŠWMwqtp7Wµ@/9] ÈþAsè³î&™à î1õí‡æ§Ž~Ø¡#þDîüH¸vóª>Ôt»’˜ŸÆ­‹Gôü[<9ï /T¥Ž¯+ªÿ°ú».gbŽ‘ÆÝÐØÍ0}ü ç’²ðl؆Öê-t{5‘É Ÿ§_Ëf8E±Û4b ÍàÑÔ.Û0zO'áÚ¾&ºÈ,rŠÏs28†þtñ¯zšàðTÒ/‘‘×—æ?Füédª¶¯ŠYÆ ÖHÂLíJË]¨mUÈíЄdÄ SyѱWg\]FÛ‡`Ðèùô(ÜГ|&Ó~®\VãóxOÚ×t&+"jV¥(h/—ÆQó5wÈwãñžqUÝà—ÃŒËù_½ds5Þ­zÓ©ö½§(´Z-XZZ*Ží?†F£ÁÕU‰l©È^Aéë}Ùšˆ……%W¿ëûßN rqqá^ÃZ£ÑˆZ­6ý?Ÿ9s†èèh¢¢¢ˆŠŠ"""‚ÈÈHNž?#@ÐÌõ<§ÁÚ&¸˜­œºÎ‘uËY½ðfÉ}Wc DLÛΕŒTRÒnqèÓõ+(((((((üÜׯÇÐÐPÌÌÌpssÃÑÑ‘ëׯӱcG,­Œ¬ØA_gúXFÎ}‚ÅSÝñx<€„H3¬íÔ€'s”ÐT ÿ xTíÆ‡N¤-E$Ý eΊ£è3¬éoÎóÃ^`´«7o¼>[nbîb+Á´,¨Ã­oǘJåë*¯Þëu^¬ïÎæÔ4†Ä¾ÇÍ·¶ñÅ9Ú”£9ö.¶÷4Lëš1î¥Ç(ÌÉÃÚÑžŠÀþ5»´åÀ¾[ð¬»Æ¦òdª=5œ„~“?ÁÙ& ‹A|ºÐµJF–­ù„÷„àãiOjô-†ÕÈâF¶ØØY¢Ì­¬±³³Àû MHÛ Sð!{æ1dñ:jÖö"?%žŠé×{6»·ä2¸¯Š¯Û}ÏÅ_6en^=QÍ¢£sXÀÓ|›A/æSº§ø0].˜óõs!s ÝWM¢ÚY?Ì óÑ]xü•A´±ÿ­u3¬Kôʼ­úá™>ž\_:Ÿó)‰\Ìeô³Â¯9zô…9%^aý¾•²v´WDu4mÕƒá’ÍdýòŦ—a_à7½+9ÉÄÅßä ­¶tÖVУkÛƒÑiDGÅ'·Ï5%'O‹ÁhšVåiˆW™\¨µ¹+ö•¬=×{ûòÖ–ÄFF“–«ãäÊ)8¨]qö눛!žB€œ½¨ªž 0/“¨¨ f¸×'ŸbTyZ´E¦8 E…ÈÏE]r¶º®ˆÆïï$>"šØÛÉ$%¥¡Uå¿_ÄË’5Ö€Z@gD­3iZ^J"±ª’ 48²$<ÀMæ¼h¥¢×ÂÓ8Ú:ã`_2 Õãe톃³-æ)wô>Yc‡`o,~ë\ Sb&"6wêÑ›êqÄ£ˆé¾&&–˜èXDréêðÏèÌ–áƒèýÑ~JO<ÎI%)K[i^}úy6nØÈæÍY³ê0™¢þä³X7ý4wŸ¨\Ä™OÖqè|ú¼$âóþ×ÿòÓ¬¹UÙ7Eœ¹žƒç* ë–ÆšöK‰RãâÉÔþoëJ4—¿çÝöo–õpú-ÃÑsê>Šäu¬[¿‘5kï±Ú¦ˆ«×°vÝz®g˜ü¿1ïÇömf㦬_»—¤ò'cˆ.ƒ ‡7±iãFÖï>DtÁß÷[ ±çø|ú·\ =Bf¹` 41|ÂXÖ~ i÷ÒÕOÏc$›Ðé¿ÓJ[ºû2ç§ÂG¦ïØ:r½?Ü÷~@OjBb¥ç¤J^8wo`ýú œ½x,&$ukWsødeq·µÄœˆç·WèE™©Ä‡åÑ,i¿–, „]¯j:–=~E*5[V X:ZÜ5ðE­Æ O÷O¢ §=º¸öcÛRõ=œŠQíElT¶Í¨†•²¾Sá¯$  +¿ŒÃ2’Ÿ“SÚÑ5Ðۈь2”¾+N‘© mvAIgRL~F.™´`×c ë1˜aC:0ô³÷lÑ»C;rÃæ²käSÔÀƒãSéÓ}ÏÎú˜=™eü_k#ª$äѾÇ~~ªd4å;š¡]¦2ràp†/úŠÛùF™¹dcÅÔVÎlÔ—¡£‡Ó' /óŽ$áU¿!a3è5x(cv† ÕKt&›ÊæúÛ<ÖŸïÇ0hà>ÑŸ7æœ ïÖvº ÚÅS?ž`×kE¼Õëmnvä«ù! ë?”Q³^c]Z EØ1©­ÇÞÅ!½è?q©ê®TNë?’â9Šùq³é÷ĆxŠÁ=kVQ·µº\-…&-×ä“[PH‹&íÑ-~‘'‡ aÌÎòtF“>gcÁ¦ö°ç—RøÒz´©…Ú<ý¿¼ÊÀgG1òõù¸×}µ_>Ï^ň#ÜËø:{iI&¹¹¥‚…9¹è]nE:ÁÌ,™m‹_ ÿ³£ùÚWT©?;rÈKÏECCDÒ½õPF<=Œ.5sÉüЗ”Ì,ʾY½°®n™J³ºýX˜XiöØMÝ™»#‚Ы—:†öO4áÕ®'#?iÏÝï+¬xlúHº·q'öê~vϼÿë/ÜËçéÏ1Ú·ÒžœvÓFУme§"¸3úô8j‘Ëî-‰Êùßn¾«ÿX&¿îϯûÂèô)?2³`æôÆœl–L^Ä™›7Ûú-C7ÅÝ5ð þh·~e+ÓÿB>{éK>ûy5¡×¯q!(„Äìò¯:roå‡yó9qùçNldéºeäêÿžŸsõú²ª ¡eÒAÏv÷ðgÆá÷'ü€[À+¼3>àá´ñûðûfõœ8æüžƒ¡„m^ÆsûïÒJß_¥]äÝñƒè7xaéé ¹÷±dÚV‚ÂBï¡Elœö)‘&‰1³×‡ìO¢Ððglü+z.-+ð@–,™ù§m|Îüß³qÛGÃÆï'ÚVBB‚dggËÁƒeûöí²mÛ6)**’ÀÀÀ»ò~}LvÄéå£åçdo”NDôrxRl *”Œ Yòf¼ˆ¤È§µ¯‰H‚¸L»,éIE/‘· LJsõ’¢‰“7œIŸ©±’­*VøK¢=käĉÐÒˆ¸YÑ)g<;9µL„ÜbI‰¹$—.^’°´)Ê(½h¢³J"âêÊ|6JôÅ‹r)8XbÒ?l^ZB¬¤e—R›%Á.Jp\¬dDeŠ^Ó_Ò˜‘ !ÁiåÒ “.É¥‹Ár)%EŠâLud—ч̘0¹t9X‚ƒoINIbZR„_¼XFD²SRïU¹03Q®_–àË7$Ic)L”ð;×›|íºdE¤ Z.\¸$Áq±¢)£š¨›rñÒ% K£ˆä§_’ °8)0Šˆ1Wƒ/Iðå‹]xW´ç¬hèE¤ -[òòMZZ”“)Ù¦ÚÓÃ%øâE¹YN·MžVyS._’Ka·Å "IÇÖʧO.–sQ¡r#"úNDhc¦„] – ƒKîAy›Ò¦¦H¾ˆ¦e‹¶Ð(¢Ï‘[ׯÈåË—%´´ž²v$sé¢\¾,ƒSþ‘hÏ'ßv•ieædEÉš©SdÑá°Jó‡,´•nߣ²¬pycÑ—r>ͪ5ûÜG2î—=¢½|TVM5õëßQ‰½ƒÀrMD.|¼FÃ3äóž%Q@'¬‘c³_?{ñkÓC'›ª_WZ¶«\,i2òÑ5‰Ù u?ßv'êüªfòQP¾\µVöŸ×ˆÝ·Ÿ²++ iÒá+I“Y×f¹\Óž’¡µMmwÝ­‘ ù¦Gk±u°“6/Ì” I;·OV}tJt"’|z¯¬ú茈ˆìœô†¼øJ?—LÑ»AòìËßÿåÄÿ'&9ÊÇ!¥ ™¥®ãºL±I wE‰Ÿ"á&—E6Ó$TD4‡^•Y»ƒîÙ†&ô˜ü´tsi0náçrNkù½UâàVUì¬Ôr ë·ÜW¤ˆ­‹µÀD1‰?¥T.í^š-iFцÈ;ƒ-ÅÚÚB·ÿ¼4ÒëÖY²)QD$S¦/‘%é‘g–ɼŧD$Nü*Y"’u XXÛŠ%ÍdΑÉ»tH6̽ ç—¶7éc¿ñr­HD{n¡1ÉQ>®è>¬àt9´þ;ù|î/’YIZ]©Mù`Žlˆ,’3›¦Ë¸=&?[u@¾üje…çÛP™å±TÒKþJ9±U–¿qRDâdi»õråÒLñ±DTõÚȼ0‘¢£ýÄÂÚV,h&³Æ›bŸxK^[HDDŽû¥,;^R[”¼>|šhEäÜ´U²ïܽýÀõÂ;~ [?Ðî¥Ù’ú['õ7Ùø¿!Ús9?¾H\¦‡–ÊsúÈñ&›×ßѬÊ*ÑåÊ­¸s2}ð8ù­ôáµÉûÊë@Nù'YöüxI­|Öx˜¬ ½ÓÏÝX5^0³Èîô;%îØx–|8ìõR8µL¾ü¶r· ™Ì=žvOÏ;»@ÚÙ:>pÿ»£=ß×SR’i6·qãÆØÙÙѾ}{ŠŠŠÈʺ{½C‡—<úü9\ÄÇjYFô…ôÅ‚±Øˆ®@#EÙz2ñä`Œ†O6k‰Š+$ðÛ3¬»©eãêkì8âÀ Íõiß(—¬|þbÌpòs)]¢ àèéŽe™ï=|h@½*XºZæ¸ø9•ìU·(óY…_‹øûãëfû»­V©Z“*ŽeWL8áß²þ5jâZËsE09*ת4ò¯R~Ì+€€þxx`YÃAÒ±Œ>8ûÖ# ¹?þþ>8”$Vñªƒ‹eô=ÊêL…y6go7÷Ç¿y¼\T`åM£ºw¢Uz6iŒ“ °ö£eËükÔÄ¥Œ¸ÔªO‹€êÖð@ظЪ^ ¬U€Êžºþø7oA]?«JuÛ°®âˆIK-œq´6Õîæ]ÿ-¨_N·MíÖ®O€õª›ö8;U£E¯Ž´©ÕuüîÄjP9S/ÀŸ–-üKîAy›²u÷À°ªâˆ­• ÌðiÜŒæÍ›Ó°´ž²v¾-hÞÔŸþÿ€¦$¼ô}Æ”9<ÕÚ©-ê{a¡®üµ»wÀÓLoヷ}^ØRþK§º¼” ã̹p €ƒ««2¬ÅäçjÈÊ2¾gDÌ Òss™Ëít(HÕžjƳ_mà‡Í‰È¢gˆÞ²€{}ùþôq¼Ô‰_̇[+yëNÙ¸h€+,½´„™MßAÌùn »Kf‚¾ûdSZÙ ¹­Ag0ãü®ï¹Xÿ……:®mmIEhÂ’p°mψw×p9U8ÒבµÃæÓe2'ó‚Åeæï¼¥¡¬S§l(È-ý|,t ?Ø…Èx¨|é°*ŽÐ‡Ê[$qqɇ<ߨTp® ì_´ˆ—;V˜uóbRr&V©BU÷NÜ\1††€­o‚æ£zµ*tè5‰Š« ÍÌ‹¹ue?oÛÏÊ¥³©«²¦‰­šI{’Ù¾y'÷}ÊÇÞË)&…7}²\­FË/®žhÍÃæšäx˜çTùfW—ö¯à|ý踾­©€q'g30ÄÀ™~ý ì9nZ«rí§ƒø jä’•AÔý¡%7ôÉóµ§ /›Ô˜BZ¿6Ÿ7&ŸFv}CËs k{ž·OâÄ©=\Ó‘s%³Ö.ª:؉¥à¡î1L:ð\E?P¯‚°p¡]‹8YWº ÙÚÖRö`Y£*¿Þ ªmIm×zX-_Äš}»Y»#ˆ¼"c…²D§¾NãFõ©W¯6Íú¿O£ #9DC〱 zn5ưsL®zï¥þÜ Ó¢“#´ªnd³÷z&´î@§>8lZr·}+º^°EÈI΢è^~àfVíþŽÉîëÀÚa³ÊéÛ¼-Kú€‡ÑÆÿ~ nWžýi1Köïb÷Þ­ä›V8™ÿ¾`aOVTµÓ•.?oT¥>Ë¿ù°@—u‘‰­G“:ç+žiXò„‘»QÓ«b(.Ä(.4êJ€a{w¢ÿ@{Ž› òÚ/ñ\ÖÆÏQ÷‡¥:Óº†]9íÍ;6>¼]ïœ?Zjãç+ØøÃºøù¾¿ÖÖÖh4t: 4 ??ŸŒŒ |}+Y[åàÃÎöÞøù{•ÜlN£‘¾øY`ïW•®£GúQ+Ìh¹²5þ‰i9™Áeëº<ÛÀŽÖ ªx%}Az:<^›š¶Ê¼‚‚‚Â?AÿŽôßô¿ðš•w=Äîq¨˜KÇïˆOŒ%6©ˆaÑ{8Záû€÷ªrü³ãh2‚‰23и‰%ƒ =¸½Ì¶†1|ûÆ4žø«fjTj¡0?‡\­iÙs|nõµ\غó·õ´ëÛ |Ÿ/W¶y-ÈÞy}ª¥Pƒ÷Øó㨫ĮÚMáôvØ#ÍÔt´é6†ÑYøÌK¼ºà"¾X¡67CÐSP”Cv¶Èäh“"R4×Ù±e7ñÞÍèÙØ½ÌÍ-0,,­°63=N4òÎÀr‚¨UÙql*ÔêŠ: lùîS–[¼ÄÞî^ʆÒwV{ÓÓIL»@ç›/s(¬j?˶1Ä'¤³ k5Ž\¼YþLm$;5šKçNq+¿6O›ˆma0C;Íaãñýì Š¥¶—憖¿=˜:hÈW¹m¬3Éeónª5§koZt~Žg¬‚Yôô‹¼º ˜:n9û\&4/mׯywÔa+@šOâ0¨D]ÌÔFòhÍé'=X±`“½LJVæææ¨ÍT@.Z]Ž)óÍKìéïÎí;Ù²éMÆ¿E½’'J•ê¡÷j5þ„(.6 üŽŽ{öEwû:÷°üP$î]GòÔG®Ÿ âò…2#Ü*lÈ¡®÷¯$„†EÜñE<–­T˜™«)&ŸCžéÚìçÔ“^¥òÒhõEB~25Jξ«>˜¹s ÕÁ÷ÁB&~€µ™CY?ðô‹¥~@en†PLa©ÐÜ¥o=›ú>Ä6þÿñMxkKn>ǵˆÓ„¨nŠáQFî=¨*Æ(wî‘W÷a zÖáwt²sôtø`< c^`Ûoë¥c¸1ëù’vÔ´™ˆ6¢gÿ\ÞÆý{–ÚøÌø%ƒâßl¼-§ËèLzN!ææfwl\_ÞÆ¶ïxälü¾¿7Æ×תU«†¾¾¾4nܸ’Ü6ôœU‹§ÚÚ•6U£“'µ=Ͱöt¥Yg{À–¶/¸cÓÚóâìzÌý¨_Ï¬Ž ðí\ƒ?­ËWSüèêc­<}*(((PÄ©©+Ù{:ù¶É¢€ÕhѲ:`á÷È•|z/+߬$ˆÓÄ5ûÍãT…3øDŒ”=Á/~U3š­JÒùáÇÓ%©Ñ„†9àV±J×1|Øó Æ/ &¥ó“xúbF•%š è'Îà½o?`r‡L¾:W€…1ˆ@r>©A¦éÂ:>5yªØ™w?þ„Y3ß ªe Q»?Áð[ÙdzYt4›£oF4¼ÓÉ×û‘Ñ6ÍéÙ‹~êÅôP™yf3mfLæÍ…sh!GÙ¥ÉC¥7`@AiÄ&j* ÊI ~ÓÑLÿäSf½Ú†ØŒÔä’–y=}!m¢„¢¢¼ 3~\éî†ÏC¦>ý¿,§˧We—×ól×¶œø¯Ik°Y½Ë4C!E?C¾3œ?uš¤d=P@tD–*›r­è ÍhÐñEæ}ö)ÓÞ~_s ê(›»¼È’g0mb/öjòÀÌ‹ásÎr€, (Æ9‰wäòJ+â³ó‰:³™Ö3&1qáZ¨Nr4<ŠåfØâw§]Ú- ·°`Ŭ<õÕs%+.ƒAMnæN7ÉÌùo1~h6Ÿ»¹ “Π"oË-²tæ¥óôÿp³ç̦_•«„”ÄíÑZ¤‘çï†ÍCî|úÉ™¤ß÷¦;ï¤jÏ~DË€BÖîÚEDr1P@\œ`­¶Ôt4‘93gÐÐ2V¯õ©p¯„Â\Mi`¢´Œ, JâK#¨Í·Lúps g /‘Wm6Ÿ"-/ »º¨Qº„ÌŒçŸëB§Ù+pö‹§ms7ÀPâ,*õêbFTpá7?àÁ Üòú›‘õÛøÿÏx·|/¾˜É“úãÔY6êt@ÊêÀô%å¥j(«;Vt~ª¼”åèpõòçÉÁÝûæ'Ög[,д>m'-(Ù;|Ž猦®} Q‰›³bÖ@}ñ\iÀIƒAM®f§Ëè̆³7°P©Jm\»ùÙ¿ÙxÐ)úM½·?¬#3%®Ž‚‚‚ÂC…ŠÂâBŠ2 Žôˆ,!;"ƒ{äE±SX\øÐÏ ˜ùÓ>Ü[ú÷ñÃè9ûéBßEW°tòÃÏɨB'ù7ïjx{Œ¥ÞÁOhVI-&­&äÀ^Þìç €µ›758âÚú%¶6¨‚o­úô¹ö4‹ÚÚ`U¯&îöjü ÀFÓËI¨Úe ÃÛ¤P­*U« bHj÷{™ÍõMeŸ¼ñ"_7¹@ìåKÔô+ ¾é€Oif‘K{_@¨ÒÄOW+Ü=kð¶wUjø7çp½å sµÅ«[-,0çÙϪ²z‚/ýöfÑwÞZj욀·OU¼üWãèìŒK‡8Ö\…o•*¼ghÃGþ®ÔlÞ”²º³wŸÀ|øc8x{µåL‹žŒíY~x`aïJµêUÊ/l<™#–Ýðr­†ç¢p¶¨Iuøõf ºÕjHÛg^cSQ–@Ïù+ïÈ%`=.îxz×à]ïªÔàx³iui>î «—ÿqÖ>¼cŒàë™\º´ÛžºOTÃÃ¥3†9Ãñ®^Ž«aê³#önø4¶ž`ìøðð7бüÄ›¼æ]ê5Ýyý—´)™¿üË)ê xè=íÀYïòÉô;~àÄ‚!ôþìG=ß…~ß\)Qo¨Õe K~˜MíÁó0·q§N'ÀšžÎa¼Ò«Þ^m9Ý¢/w«…‰Ì}µ3N˜OàÙ¶Åí©ÓÓ·t&ÐÊÍ›šM\[êö¨†_ЦqÃnüdÑ«/Gá]½¯V3g\[vL™‚ŸÚå«lö6o.øšðâ·ñ±2õ#UšúàéjyÇøßñ]kaŽY©x²¢X«»×Cmã÷ïàø×OáäèÌLÇ5,|Îñ.¨5øë;:àîRò–ì0ý:¶bÑÕÓôìò*Ç“õ OfΫq´¿—¨©Ñ´AÉö§ú|õÓ*¶|û— ûrôh}ž÷ðÆÕ­ï§ü‚üô!U›ûÝÛÆW°q×.æŒ(ÑÓŸkÑ2á=¼Jl|Ù± ¼êé]jã­¿ÿmÇZÙòîy÷ŠV‰´£ð¼Rø¯¼úkI’zô–'û÷“黣Lc¶Þ£k_—^½úɤŤâ=¸DÖÄš‚Ró"eû$CÒåà‡'K]$ÉÞ)'J>'–ÖÿñîÈ»ZOMH¬‚bÑgËÜ×ûHÿOÉ+ïÎ( ‚“.{&¬—¹_õ—^ÝûÈ>ˆH®ͺ&¿®î#½{<)3˜‚Ÿ„­?)—óDÄ aëår¸)Gè¶òL¿'å™ Èõ<‘2Ãy©äIž,už!¦0¹²óƒñÒçÉ~2qáFÉ‘¢|$$¤>0)ü]¯DDVv$c—=TÁçro…˕ɂ1ýƒ×µE>íò¶\Ž7>”AVv$/-;_. â?EÔŽéòì‹/Ëë'ÈÐïNÿér·ö…HT\þƒòÆrbrù䃸¿µ•ðJDdU·!2vùù‡È¤É©¯Ã¤ðµ–µE>é4Y.Ç?ª}ý¿½/ÐKÌÞ‰ŽP6^ø@lüïx¥¹kéÚ…pï³gèGU±BÏéY7Éé]›Þ­l‰Þ}ÃâMAX5†tâ)ß[¼7GøbªŸ2!£ðP””Idd2;6TnÆ#€N§C¯×cgg÷€ZÌdkë±Ùòõ ZÍø†f?ñõ¬sÌ;/Ôç—‰»¨ûÁ[ŒxìN€­›Û—±ãxSÞ›ßô³[Yñw~òç»Ý¼¦}/®ó¡Å¦è_åH‹…ØlJ=C‡f,¤þ?Ò©Ò(hE$ÇDe°%fçgdê 7&ªhó:íµ+™4ª&Ãñ“«'™Cew‚Iío°X3‘:z#º{ràÅ¥ä¼0Š>NWX» •¶Ÿ<†öê .Å:òÚëÌvÙËäÌgYé2Ÿî™ÓÈŸþ+WëøÑ¾³×ׯ'£ýӼСö•½V«ÅÂÂâ®ãöþ ŠóÓˆÓXàWÝùÜËö`(Ö¦£É<ªºÿåuk4\]]ÿÞëÿé@Aj7µ¨p¦as_¬þ•JiDz‹FÿÖYÀ!û;:NœÆ\ñÿ€ÿó}½ÒüS6~·ì MÄÂÂ’Æ«ßí HOOÇÅÅ…J†µ¦+7Q«ÕÆÊƒÊè(È“’%æ˜çéÈ/4UfѨ^7t8vnEg_0†æpø¨ž5½\éçï„“.›}» É@hÛß‹:Ö@F«Žb¦RÓª‹uÝÌ¡  ðp’«Ö¨Ù÷'ò * õŬ7@±Ù@º÷ìO _WFŒ8ÃÁ‚àÎà·A÷¶¬ \@pnW®Æ÷óM¨¸¹­UÉþKmq$„±6ñíû3ZƒŠB½Ž•¹€K%¾:æMžÎᛑiK¿ç‡Exº~Nïú8ó6}{‘h€ùT·ô¢:Ã7êi‚+,-Ì5Ö6V¬m¹qi%cœ!à‚9y…zºŒ™ŽõØj56ä³8m-«×ÄàieF¡NÏ F>Rb6·u§–dñ»‡vUð°Stà¯ÀÆ£.ÿö;¦ÆµQãGÌTQüÀ#lãJ_ðß´ñJ¿Ö¶ppC,;4™ØRLÄ!-o>ma‘ÌùH'¯>H IDATƒ™¿öQܺрÞu„Lž‹‘ôn©æàÄ"«Š±8‡+´¼9Ö‹qÛ¢hTä‰&ô6­¬øêI'ENÜcÍ3–¸¿8•¬Lç§ëŠK¢J1ë1b Xwç BC±Ž"tŸàGãþ>Œuv£ ÃùP_ˆ_×Whõëp<­Ÿ"SçÆð÷ײjŽ  E:òPñò{cx§]]Æ&%£ËiÂçÇwЦ–¢ ÿ^*Ýó›p*„]Ûyå˨(æÄ»WÈÙ ¯äó|_؈eC\Øxæ®/`ÒxéE#«×Ö‡ô~cÏO~‹hX@V¦V.–Øx¹æ5b¦´äðDwåÎ+üc({~-þ©}@ ÿ<çž_…7rß§‚"{¥¯Wø'eÿöütÅh³ ÖÑfëÉÍ/¦_Ëšy?Œ![í1ä¥Ñû…vXÛž'hõ™;>¨Å„³ôƒ›€¶¹K«ñÝè$¢mì°áF¯–Êvq…K¥3¿†"Z­WsTF;Kì¬Tè² ˆˆ/ÆÜÞ’z¾V¨€|M73Õ4ªe‹µªˆÈ=ù*ÁÖÁš:5ÌÉŠÍ'6ÏÖæ4ªmƒ…rßþA”™ßG ½^N§SÞÿQf~ÿ»(³Šì”¾^á¿Á™ù5³²ÄѪt|ŒkéX:ÛÐØ¹|~[W{Z”ú!+ê4¶*÷½³ΊìþE¨ÕjòòrÐë ÊÍxÈD½^O§§ðh¢R©ÐëõhµZåfüÇän4ÉÊÊRl^‘½‚Ò×+<â6¯R ü…M™+·UῈÑhÄÞÞQ¹ÅÅÅèt:lm•³þ+h4œ•×êŠì”¾^áQG§+2ÿ²úÔ沓™×æ:©ÿê[›Ë¯.^òyåãGYy[Q8…;F£Qy ¬      ôõ $­Üïkæ÷›o¾Á×׃Á€Z­ÆÒÒ+++.^¼È;ï¼óÛøœ=/_$stžîæP’æÅÛç½*­óæ©Ó쎫ÃÛ£þéÓÛdÅ Àg[³ý™Hô«ê`Qr»bkóÎhOE2îkðÛ´iSÜÝÝK÷Y¹ººbee…F£)“K…µ£ÖVe'•³Ù;#—Î3ªcCÏéÙX¨ÌykA-’7å³$0†½…:½PáÌY™Ê׎¦×¥q…}í…·cxgR6F¿´9ý=µÌœÙPmŸªÁôÑnhãR9½MæØBò­œxgŒ ¿~“D’#}Z›FÖ¹ì’ÂåjZŽ&ýêO_gjsuÉŠò|v~z›_ì [–Äׯypj]>KÏİOWÌ¡1ÕÙÎg+ó_;¦Vr ÿîkÙs­Zµhܸ15ÂÙÙ<<<ððø£YÛ<—§cIvfñã¼Æ,{ËŠ·Áÿ { õbѰªä^àÔ5S4d|w#ÇÖÆS®žtôJ¢÷ìF,ùÒŽˆ}±ûä*inî,ûÆ—:¬8ª£8-‰{Š3© ÏԼ͗³³ýnF×LfÍg)@{ÆS»O#~XæÀ‘NWHÁ µ +àÊœp²Tá«i¾tÕ%³úZ­{Ù3ð·ë¼ΩjÞ]Ð •^§‚‚‚‚‚‚‚‚‚‚‚‚¿‰ûšùU«ÕdeeMNNÙÙÙôéÓ•ê"p©±´VQ„=³"Œœpßôep[ô7Ìð)´¥‘½šÀ ·yõ¨5-/§“W$té‡YÙj®Æñá§u1Ô·ê2¹v!ϯÖðÊ“ÔtR3p¬+_§‚XÒ´™U7GÓ² 1¶´¬iAFVxVs¥g] œ©MÛ—˜åƒ…… t,Öd²æË<-Uéᕦ–t­nŽO¾-ìT^ŒÿýëTPPPPPPPPPPPPøWq_3¿fff8;;ãðìgt”ÕÖ€Ÿ)é=4Ò ¡„^¤H)¢ˆˆņ(@A¤)¤Š *ŠzU@¤K éB BH¯“©ûû1CHhÊý¼6γVVfÞ9}ïSöyOñò¢¬¬ŒúõëãììŒV[5 Þ¾•oóµÇ…åF¢>lÆö¥u0ýt‚çþ“k‘’TûFfÿp†?ËÞ­­8±»5ãïwÂl®L˜µæd;¾”r`K.õŽ–qü´ýºšÄy˜Ëµ ÌfVÀd²a´JÅg«ÃN×ê5øPNÚBgêøºb1 ftÄ{»0õ‹–ÞÞŠ¤Ýñtª«¥,ÃLñ¥tFüF: …B¡P( …BñÏ5~·oßή]»ÈÍÍÅÍÍœœvíÚÅ™3gª¸óô6óx›­øÄlDç»EY¥¸h4x¹šXxç&ÜÂwóð1áÑ;< iX‹# ÷ –D½;ÒôdAqH൹%¸W¶¡ýðýýùÔ Ø„Î3?j|9.†3/í@¸Ž—øðLOOÊËmج‚ °Ù›¥êgÐ’t2׸-8ùoÀJ;â1Qn´R‚ާ^Žäð³[pÜ„Öu›ÒĶŒãøâ½hFœ¤^W{:ƒ®—NÅßöÿwÐù…­ïPKS‡)û6ðYãy¿y’yæöÕÌ};Æ¿$·Ù|?Ãq’ù•”±nÁ&ÔmÇ …B¡P(Š=rK’.cCˆE·"…ràÄ,Ñ ¢Ä„Ö‘àO˦ ÃïÁ wy] 7ç¹mËåó×Ö‹ñ/Éq¶|\g¢œ¬òÌ&IŸ¾!F“1O‘§½(&œûGÊÓh4JII‰Rl…â"77÷þ‚_§I5š5}¿nòkýù/cÅ9*NÆø4’ŸÊ®¿ÌìÕ^jD×”úõcÅ M 9,"b\,M@‚ãCšÈ¢ ¿™1²»»ItH5¹wu¦’ýŸÌ…Ûåó ]¹i—ûá—"ÿ¸úR?ÁåU9`»‘ûÊ’¾~Õ%2®Ž4j%€Ôê3QŠE$'éÚ~×¼Ø]üñ—¸Æá⎓ÌÝgR}ýLâ¶÷ÄO©*>#°§ûÌRé·Õüâå…%ÇEDäØC¤Vd€Ô­&PCúÍÙ{užÿ~w¾ÒKñs@DDÊfÝ'€´|â)ûÇó rà@Š=zíqjYY™¤¥¥Iqq±]ó¯   âÿ-jü–È®¯³¥TnQã7O¶lIª|S}šdUúýÀ7ßȬÇIû¶I–õ„LÜMzöî#O'9"b<ò´'_™&ÇËSeý¨-R$""YòFç®Òý®î2vÑÁªærižœÏÈ‘\YõüòÎû=¥K§n²º¢?&wv½Sztë&Ÿï¾ ""É?—„oËÝî’gþ ÅWäã×µŸÈ‚³åö.´$Y~^ó¹dK¶¬¹Ù‘žLY=r‹”ŠÈÙÄd1_iÿÄ©üñ§mÓ÷Q @;>ÚOY§æU§ÛUkÕg}»?ÌóÏ÷£MŒ·R …B¡ø_Sfä¬Xu ý ƒ)dáë9NI9Ǻ<Á·q×ÞUe⣡/³,¯ŸM¨ÆD¦†ð~ÍhÞ/Ž~ÌyL|·x;”¯ sp®:-3+üÙÄ´ÄûCïÀ¸<œt¢VûhûÇò$ΞD_Óýµ†2)tn5§¨é<{—Ç ü6çíÁqü8< ÿê:¶E}Á²/îBíØû£0²uÃ&ÀÀØÐ|Üœ¹kúNÀ™‹|J¨ß©N¤rð©I€Æ>=pî"ø:Î"º„…óëמ¦2îá­¡aô­‹<;’¾€Q£G!Áw°Ûãa>Y4œ½#»2äÓ·Œ´nê´çôôt¼¼¼±×&›Í†F£¡¸¸˜ˆˆˆËÅ[¦¥ä›Àj‚½‚ˆû݃kfçÔ“wŽáŽfΚ½ŸO·Uã“o£o.7¤˜ï{¥Ð|Ucj]õÛE>ëUÀƒ«j’q¼„Úõ|Ъšþ¯mÀD=K—>õ‰,§÷ðúð7Ùt2òݹëÑû€(Â]#i\ÝÈBï冷íWú=ö0¶&‘@$ï¾~½ð úMæÎÚøò2=n†‹‘Lx~0ÆÆá@8MêŲÔÏi¦ïC×;zP#"€þý·³®üP­"¤:]n㇭p¸´ió¾#jÒ"´$¡wwuœ>‡×;‹Ý5(ŒZ@­!‘Jì …BñgáÕŒ³gS¿ÝÃ4Z¢åÌát|ZÕÀ³ÂA“Z´dkžÇ>ípÍ ŠN,à½÷Óý³ƒDh´x¹&‹}Øl²Æ JJ ‰ššÌ™áQdÌŽ£F#_ZÐJÍwþ©”ŒØ®õCöfºv#¬çsLóÛî+ñëÜ1lL„o ã{ø.ðé®TÞN3óF8¼ ÑÐ÷Ù@¶|v·2€ÿKy14˜Hîá1°Úf­ùêáÝ…Ë(|puêÖ¥ìüIÌ´%¨’Ï/vâ•ù‡yoÃ/W„éÇ»ÿYFácÿ_{š„2ºÜ÷¯ãÙ{;ð N.pa³ñâÝ·úî ¯m#tà³[ÃÌö™Cy|æVfì.bTçέü‚gú|N€ÛÍù­:¼ÀDòî”÷ˆDƒ°Y,T?Š8·Ï®Ç¿„ÀÀxhnqÝÌšëýû÷Kvv¶dggKjjªHii©¬\¹²’+›YpP¾ÜSi]~aмTo¯¤ˆˆHªô¬¾Q¼#¤ç'""’´â¤¬Y´[pÝ$ÿ9)?ÞTF¼ Z¯õÒyF†ˆXeÛ[‡eÕž21Ë–i»¥ví-R³ónÙeƒ,ym«<þÒvA¿C Ä&[§î–è°MÝe·lȬºÛѺuŸÔÿþbÅ÷El•eyyò}Ç}’,"ƩҶm‚8$È€‰é"’#Ÿv=*‡%IdàjÑ4ß!ï'–‰È¹Jy9¯6aý£öüw|Ë”îc+í…*“™ ”C—¾el’» ®zg‰xêM™=t»ˆœ”qn3Ä~dÈëþ¡\9³LnC+.ÎH×]'ö#2¶Âo™Ì|àq{Ü©v¿z=ÒwôYÿÔLùq}áÏß—™ë^c¯Ï&‰õD¦¦\~ôÃ3õœÄeä“2¾Æ¹ð/—§Úó«P¨=¿ÿ42—vô.Á2hÖÇÓYÕ9^Aç*Õýý$¶YG9XTÕoöÊÖÈÓ?¿"Ô}ÒÄ©š³@ÙWñ†ý`³TÃãúÅ>ŽX8º‡€F|4RÝ÷9Ùó;øæïß×—È’§ÃW`yêc{ ,98IšÅêD‹·´{pšd8öê™ü´x;äT-8Lô ¿”‰ÙE ‹œÃMø]zÅ9v{G÷è%—wɦKoVÏ/›ˆ$~ò¤xh¤šïórÀðw–ý»çW#—Ö0ÿΟ?O50™L¤¤¤ ×ë©U«Û¶m£mÛ¶oÒŽ~{˜­Ñ<×îòÔâŠÙ›¨þH3~ ÛKÄÖ´°XÇÛæ›m:ÜРՃ«ØJÊ)áˇ=Ñl¼”—†´wW ªP( …B¡P(GnÊøµZ­øùùQ»vm´Z-:tÀÕÕ«ÕZÕH¶ Ë%Ë»„:oçèàzT ð`ÔÎ"ŸˆbüÈÞl—KBèÄFQù¥0«ÑZ±ŸÒXjC«E0šlÔŒð¢o©3C_‰f«Õñ³æPˆ³ÉZ±w¡f˜÷”;3tX4o¾Z_k.ÙÆªyiÙ­Á‡ÐÌ=€áÕñšö—óÜ« yvh5 /¦q+blhÐ,7p š7cöùø¥¼ä°)])”B¡P( …B¡Pü¹©3£’’’ÈÎÎF§ÓBZZgÏžÅh¬jYÕõaÕÈ£Ì(Ô`,1?udV={T£ö6䑸­ õÕRZèÁÙ$È ö&ªš¾"IÑwøã€† öcþã}Ðx ÕâñPÛôn´‹6=ƒFÔ¢ Z"ø9ü@xÛÆ 8u„V ·‘-zˆ¥kǪyq ó¢ØÙŸ·î¬y9Þ®þTÃ…’Ä<Ú =G^°3¯¾_˜©ÙÙ ~|üs5üÛìâݯóêÎFUòr2I)”B¡P( …B¡Pü¹©=¿ Å¿µç÷ß…Ú¤PÜz¨}ŸJö Õ×+nÙÿ…{~ …B¡P( …B¡ø'ò¿6ò’ ¹P`U¸‚¢ãÙì»h¹ FR¶9öH+ …B¡P( …âÿmünß¾””’““INNæäÉ“œ:uŠÍ›7_Ãu _ßs˜W^ã7+ûfž`ã¡¿òzm )?¥ðô #¼06 ¾.…^äÞþè2/ëÏORN&o}w–bËÍÜ2ÍWýN‘«tYq«6bZ-F„Bq ¡ê¼’½Bõõ UçÿnêÀ«“'O’••…ˆ ÓéÀÛÛ›ÄÄD:tèPÕqÆY†ø™ùàâ²Å‡êW¤[ç¦ÇŹêC›€ÖñHD®Êì•ÏlŽïš+ÜpÕ3Í•–¾žš÷zôl:mN×G…#ËÒ¸cdî­¦á಼±Ã‡wÚ¸]U•Óy½´ÝÈm•ß­‚VçpàÀð׃ñÐþf/Ç¥ÃÍGî7dgAûåy«5¢%%…X,6ÕªüñoïL&£* …â–©÷6 òUA(Ù+T_¯ø×ÙÿXø¦ŒßöíÛS³¦ýtäììl¼¼¼puu%//ïJeéÜ\6NoÇÚoö°ý¸‘{â]`ïIš½€A£#ó¨‘:aIMeÂä“,;ãA`~˜âœçÒ™ªÇº0uJ#¢‹2xrB G8áéóVµæÐ¿2ñ†ótÿ°Ÿô¿’ȇuX}­ [ŸMÉì>æGž†Ô¤Ì2à2~}}=Ðëuh´Z4À_w๭V`sü¿{ö÷¸û_5<öI¢?²¼þaV[£Ñ8VƒüÿËM£ÑÚeõ[iÕhР±]?¾ßãæÿ¡Wÿ[=ùkõðïÓÿN}PüÏÚϕްM¸q^ÿ—í¨B¡Pü]ÐëuL87ãX«Õb0Ø·oeee4hÐàªWÑç÷±fF~e 7É©[»÷7&9DOû `£Ø X‹Z„¸á`.ç@K7^jÃ]á·FãàŠŸóíìoUÀÚÞÛéZæÎÊ•Mع$ˆ£{¹Ëwu¾iË£ž6LŽcjgoJL¸z;ƒ·†¼=¥ì›sˆèÛóù(¹+µ¯èPœ´pÉt7”ÂscãèîfÁ)ÔÀ+ÊØfÓ`?¤Ë«†3Pª× õ\íÜ=q*Å ¸:9á€Qu­\¹»ÙdÕpwMGñ'•ýN4sž %¿Ì†Ó(Á~Nl^TÄ}‰ôðÝGÝyíà©CB«Æuùh,Áj\ùB‹})÷möòì~Eyt”çeî,]Þ„[¨òxx¸âááú7IØå¥P( …ê* …âÊMx•‘‘Íf£^½zxxxЪU+ÊËË)((¸ì¨¸·v•°èØäŸnOvúdô*aÐN /\´ñãgi¬\wž){ó9'46¥«Ýˆsrç W={çf³ûX [æeÖî2Nü¸?hñYŸ×2‘¶'‰ñ³R9c ã¹/‚ÐéóhÚ ”&ß§óÓŽvm8ÏW‹S9¿mÃç)kË”ÜHÊ*¯Ò“”/`{š_ö–Ê‹ÍDÕs¡fm"¼´WõZYÌ¡ã¥ügÆ~=t– ³íyüE0§|VŽë #. †b f\¨ÕÂÄäy¬M8Ç›gʰâÌëîÎìù:›=Ç幫”?ngº£²w,¼BÆ7«2éÌT‹){~Ûéé oñäkc8Wv7ëßdЈÑ7tóßsˆW5“ÉøŸéÂ!Fi¦üŽðͤŸM#·ÄüïkBÌç˜1(öwé߃‰´ É”T|/åÌ–4.œÚËÏóðý¢Åü´tß»€e[±ùÛ|÷ýB–¬ü‰¿ÏÜuÇ€v­ùß}û –þBrÙß]Gþ@=·ëêÕmÔŸÇÛ~ìüÉ×ñ{nÍ>xô ( …â·ÐM˜0aÂïu\XXˆÍfCD Âd2a0ðôô¤zõêö1¢â"ýˆvEôjèMZ™ž>}É8VÌÁ<èÖ%„»yáåí„W€ÁA®èÑàÛ´Õ‹JXwÌÀE‹î©F­îœØZÄÑ3¥ø·‹áÖÕñH)aݱRÎérC7ÿ=yüúa:-G݆ÿ›ðwÍʡ˫Mcé]îN5›QÃûßÖspn?úwéßÃE¾ŠûŒ€q]à3ê-'ôiom>Ä‘kYµ }$˜õÕ0'îç¬å(s_®¥7ùÖ0ZUOcÚø©d»’“¶‡=ghUÿ6\t[!pðÃ$šþ!z~½6êÏãÆí†;ñ7Çÿ:~KÓOq:Å‹¦=£Ñ£P(·‹…²²2ÜÜÜ®ëæÒ!¿"¢PÜr”ÈŠŽM%zÒYòÁ«Ò îAÙ[å÷rÙ0øSY¸î\•§Ù›?V>âᦗ釫†˜±n´„9#šZ·Éôäb94i‚Lžñ²@Yx¶H>¼ÛY¼BÅÃE#k El§Þ“:ÎaMdâÎ}òm³™rJDDÎÉÔö Fê?0ZΕU§Ì`‘\Yxû·2lŒ^´ ÞMpdët½-Nô:t2EJD$wßVù°G/©ÓÀYë´‘_Òª†gMxU⿾üpáÛ±²4·@¾oÝS`ˆœ6ï–'š¹ˆuiض›œ°‰®kkwßl ì0’OÏ“lÙ'AœœV]‘£¬yc€„8;‹³s¬¼0刈änž&­¼ÄßÛEfÉ“Åí¿“act¢é|©ü%S>êÚB¼ý¤íSoËE›HéÙ½²|Ò(©ß0\wX!"ù2«[« 7Y¦ª)ÈÞ»Y>êåWݶò‹Cß»ñ®fןÕöŒÈ¶ c:Ö^æîÏ«Ê1™à;S.ˆˆÈééä&Þ>ÒcòF»š&mºŠ³6X½RÊ®çOÏ?%?ÓK`°”‰Èô!ÝD£s’ZÍ;Éá‘™ {Rî~Ì]yŸÃkÖ2­¸èæ'‹m–{jÚå~ÇšR‘äoït2F~8-"rTîvõowé1u«ˆˆ$-ž'«¿}_ D†NO“Œ-½ÄÅÍ]œ©/V¥^r¡Lqä%¶YG9T,"rR¦×Ÿ+í¡Uú|™­•ÊyA’MÊv~(­}+éC¾£>êDÒé­õõ±S³XqªTóöW–ïí²:Ýîtþ0ÄÍÓK ƒì©¤KžÞžÒò‰‰rÑ*"%Gåå¾®âêâ$ñ­ß“³URyAf¾%GDDlv¹O œ%9—r¾{•|ýÊÎ+r–*“æH©ã[þñMòլŎoyòÜôweCzU­¬‡¿ä‹È™$îÅ¿Ÿ™[OFm¶§ç£®-ÄÝ‘þ,³ˆˆIÖ}P‚uz Œo-+Ï^)ù½Ò­èõH‡w6ˆˆI¦ é.^j5ï$‡JÚ=÷9Aç*Þ¾H\ÿH±CÏ/ëÆ–«t*iÉ|YýÝd25IDNJ/'7ñöq—^3v‹o­ÐÕN«óEÌDzÓJ·ÁïK‰ˆ\üu•Ì{}›˜D$kûJ™÷úùyè32ð©OJfu;,¯ôu7Wg‰o=Y.H¹,íp¹Ýèôö¦k¶W—U[I(Η›$)"r~õXiå-¾>Þrϰ¤TD.l^$³†$H¹êÜ Å-HYY™¤¥¥Iqq±]ó¯   â¿VÍ(n=<è¹q§_èDÜ/s8é;šý¦Ÿ_Øa/ný…õæè ÛÙUé´ý®OÒç±o±ÜÅË5=ÉKý’ŸëNBdý"½xqñYþç;6,ÏØ Ù˜c_e´×\8·Ÿ1-£ÈMÊE|7äS|&lF,6}çª ÙÜ\£íx3V)¥ÃÌ%$baÆ ŸÓwòÌeñáIè-‡ÉtjCâa#)Ÿ?ǯ“—RyU¶Óhž7†£¬`ÛÂO¹Û_CNrfÇÛÙ¢3ù˜“3zmÕ&#yÑG|±"Œ7¯cÊÀ6,6R¿áñÓ³È*.Â&ïb45 ÿ«ÿáàE!¡wÐU%ëäêÎù•öp>½Τw¨¼È¹Ñ«Óxö¥ÈÊ©­qfCâR¾±‘OˆÖ·`ÚÒƒ,Y²˜!-b˜þì6¼».aFõùØö~MkW'²RJðäC">áKL&aTÓÐ*é8±b6 †'É0)Ûý1Oûy¤Ãn^Ú²‚•kstPGŽáGaâÚŽ·`•ÚÏ\ÂQ`Qÿ÷In7”µk~æ~ë¦/9Ž».“§±ôP6õà‡û'p¼åsn>øi_ÕÙË’ýd:ßNâa#–¼ÆÖáoqµ:ƒ…ßÙõgBħ”Ö̯XVç]D6óx“+Ö hœð!‡ašqtß™ÀšµËˆÿîVä˜ysqŸ;‚ÑšÉÔg¢(.¯ú6mëÉeÄ¿¾‘Yœš?Šc#±YL$Í{™ŸŸ›Š/Ln‡™üM)"‚±WWŽ”&qW‹Edˆ•r‹ÐqÒ#,wiÏc£¾ãÀaí†ÎK»A¼7ÐÉÅŸÑ?ú¯hÆÑuó:Ö®]N½¯e‘< [x$‘ >zá>ªÏ¡£¥e íc<«„»þ$’y9µ`Ë^ø€rœ):[䨮`&ÿLÑU[L•Êùá¸=ÜÛj/®ÿÙ¡8†/LJÑvœ›Ö¾Åü#¿ô9fÀt©>þ„³åh…|“gfÛ{k!ûKM™CVq"Ó)¸`å§“Hn7”uVó{™¹â×~ÍÁ˜ÊM]Þ’œ*»\ñ ø™Žñu¨W¯uã;²Ø×»âÃ’Ò2 Æ2ª^RB¹ÕP±TZëdæôe|¾p9s?šH-·Õ¨úrÔªóz8>tåQý™ºà–p„/&¿ÄØöðãýï’Ün( —Ò¿ò _°¶ø 2-f2Ì#(ëB¥Sx&âSf‰³YÓ<ŠÄ…oqÊ{$6‹™¤y/³ô¹iXØÇ›ï†c¶(Ì쾃 …8‘Í0Íø*ºñ]AUêK·ò˜CO>îÁpÍëÜùkkÖ.§Î—X®mËc£¾ã`¶Ð]ÏûOÍrÈÎÊŒ°>Z˜ˆ3&Šrìí±µ¼´âó¶SËi8f%"s®ç–sصŠ2ƒ‘£Ë[‘äAÛq¬"¼üãÌ+´±ôÁªíƵÊ*$7ü³ù€Ðîoñõâu,_þ5Á 'Yðk®Îê}¯B¡Pü^þpã77ñk¾ÉÁô?In ŸO¥ [Ç&áø7)üzTítQü76p(õê‡^çGã4×K–ÑAVõ £pCkVï¥ù+¯Q»Êx£ŒrkIÅÞnƒõN޹ñ8¹d/÷ušÊª};Øœx‘¸j€Rk‘cª³ HhQ“Ú}¨_Ààk-á0bÓ #^àNë¾ää—“Ô©) Ú×ì…ÝU‚Í3±Õ$ºF[¬€-8’иªÚ¾4™ÇêoÓÙ7àkÂ×Þ”#ºK'‡;á鬿î9+饧ÙÝPHZ»žcyÎtèÝ"cY³l¾xþ ú÷˜H­`=eåE]3 FGz‰=œ—¹·gÕeàÆbJÍEù¯ÜÞ‘öoi«çñäËß°kÉy6jx¹E™ ´ uvÂU’ù|Øb¡tïݨJ:ÒLùäh @N‘›³ddõ=¬·Ë½Ù°Ô¦3/;Ê߃Ö} È/,eK+…ågHX³‰‚ØVôh…Áè˃MºS ÀœÅ†ú6 LgØXá&ºJlELX{»VÍ¿.§pÎ:Áý§Øõç¸]4€ÁÒ‰w\g‰V‡ g™30ý†Ö­ÙÇÏp[5'FßÕ ŸÜ-LìqsÎâ[e׃‰ºÁýèeÿvÁà }ÿÛì_‚ªÒ9 f¼=ž£ºÃGý‘[):ÏÖ‘TœwÛ˜Cd&ƒÉ\Da~À¸7Š÷:¹®+ä'òùÀpt›7²vÍ<~žNPd®Ï”^·;,œVl¿/ŠfÈ‹=á\NIÕ¾É˽"/TN')Ç ³‹c©¨ NÚ«t½J9'îeͽä%ltèëÄQŠ…a4p؉F$〤ÎÍhXßór}ôÊÆf‹©¨Axl:¦êO²²Å{}é9‘î6êÛ(,?Ã&‡žÜJãNƒxÜï8 È ÷w^e ¬¼ì=v‚ã‰ÇIg›à_ÌÙV%55Œžø~»€â‹édY-Ò‰Á;hIîî{9Š1WLðKÌ”ûxзø<11}xý1Œ{°.ÉóЈ•Òò2Ç~Õ¹·ø<5£{3ê’› Uï_ÓhmX,,@æÑdŒ»îÄ·d+Ë:?bן§;±²  `5—R|ÍFZ°”)¥ã¶/¤ÆS£;v ã:Y³;“ƒEFž~cƒ_{œâ 8SPÕoy¥² 3eör @ÊÆMìßÜo̘ EŽI”¼û‘mÃyàÏÙf8ÃŒWn'®È>W egØWX5ÞófØÿųëªÁ{ ü0nÇ"Â9òÒ¶˜ çA#FŠÊí…`I\Äæˆ^Œ›ü"/>RŸeûNV 3¬Ü†eörÊÓ7rpK¼±QVz€,€¬­L´j¹Ò&·U.çºxfÇ:UÑz½ÁQù¬Ù‘Ûîð¥eÂ^6nH©RÅfÀTî¨&3qå⦠?>Ú^_:•1é6nH ¬ú܂ֆFSÀż3”I{¶ò³Ø¯º2–—r­E Ç·~G½a—䵃Õye¸8•WèÉšW;Ò´‹/½ Ò£¬¶³;1 §Åbaðè7yí•× ‹r'Ãd‡|]€OÆ3rG‰êÄ …âfŒ_«ÑLQî•'—òÍw™ÌÿO&û³/u¡NmºÈ¼…Y|ûSi¥60™)̱¢ÁÄé ylÝ™ÉÜo³H¹4RÏÉç«ÿd2ïû $åT£<¿˜´0æ—pþ´ÃÉ6æñõ®BJ0S˜f48¹ëІ#¥Fûö¾C[3ùæûL–o,t L ¬_ɼï3ÙpÚ1z)3ðËÊLæ}ŸÅŽã5cª¸.Dµ/`ÎK]ˆ«[“¨óSrfnưð¢ck0ü‡ž4«^ÙO]>ÞN«]ùül)Ñ-Z|©vÕ{‰5®÷EØg©,ëW 3z¢{ÕÁþžÖ™˜žqèÐ2pî$"–½DhxS—íÁ9Èýšé‹©ð A›àeƒGæL"bÙ‹‡Õb]lGÆÜžÕˆnT  ÷ªFT͈«&¦\Ã[PâÒŒ·{Ös< `ȉ>  %jø^éւ뽤 ï8’í‹iId­‡ÙšRš=Ÿâ—–aÔª×>Çez;?ú½Ê¢‘ ¹guv•æ§zãh½mTk5œÛÓÖÎö´&„TŽTÓÁÃ&{ïë$[„¸Ûšqé ¥;ú¦îÏ-ˆ¨Á«e Ý,ð v¯ÇÁ`^ÔéŽæfMcVh‘mØb©úŽ/þÁçiôÍš6çþ…{1øé€h¦o|…áá‘DÇÖ`ÄÂî4FKD·Êåß3tœ<Ÿè„‘DÄFÑ~ÕÑ{S+ÊQæzîš:Ø­c*ÜW•…[K?íOízq ø`=}ù(Ä>ÍZ—ž„G6+…¥ýâ0MštÍÜ‹:=#0áˆS{YX/„غфާaÀm!¸ÙF§ÈHn{}Q_ ¶oÕ.!¦Y“в­;`<ƒ›ï¡MX8O,8Éè¹Ñâ>ü#Ú×­K 6t¿0—0jðeÆ4f…„P#¢=ßÍ£#Ðÿí–Œ®Ï»\ ?½³R¼C‰v‚ý‡g2à…–W½m½–NŽ<¹‡ŸÕ fÝ(Bû»Ð§¸‡Æ]Í. }Ý®è¦?NdL ]¿×ðÆc«„YwÀ87ßC«°pÎKâÕ/CKý¾1Ó#¨aßå°º_Wö|AUʹ.36 gxT´Cî¢ :¼|—Ð)¾.1á Hÿìc:a¯¡?>Gh¥úhó¬NTåúLXǧYÕ<”Zñ ésìA¦·qâöw¾!*a$‘—t)(°ZŒ­MLË–lŠ›Åãõª¶ Ñ=.ë$xS§GtÅÁx®ÕB‰jTýŠß‹:uœ¼¨Îuϸ¯÷\zøY*K+•UýÞïÐÌ¥„Ö.€†»¦V­ ~>ÞDÞûCZí£mx}}„S|å öâ™—5/£jцMåF"zæ™&»iåнQsº0é½m4 ¬AØ·Y¬¾/†\QE7œ¹·VÕ¤{G\ÖàÕÄ=—ëÅýzî wbÀĽOŸ5žüj 5!$,Ž_¢ÚòzŸH¼ZöÄ?f1ñ¡¡Œ×´f\³jD5k̵Îs ¯Å¸¸Hj¶jɦ¸Ùôó÷ÀÕg z’5÷sºßÿí²ÒÆÖ&æÎšhðáó‡˜u8‘]{‘Ù”®ÕœÐú…ÕÈÞ!U¯Ñž:Õ+ ÅuÐÈ5nE?¿ýË{1èƒGÇXÆúgwó~P ý È\¥aäÚ¸þ|”ku¸ÖÓ³ï³ zÏiÉݶSÌÿÆ——g;ó²Ó1<çÕÂíøY§GòÃ\ÍI¢…“w<‚.u˜ÒËçòÄò¦Cüô½/ÌŽ"kÓa–üìC¿' i÷”~#cÓÏÀ¤€<^Ë­ÍwѹóLkÎÞEîC iá›Æø6k<ÈMÏ çä–TŸx€µÁè5F2óò^SÖ¬<ÌÉt/<2Ê( tæ…gjQÃI)‚Bq«cÊ=ħï¾Í|wlEÍé÷É“ô rÿSÓpní÷¬\ÍàY-oOá{VðÜÏ/]÷ÛYLÑÌâAy“0U×%“4ŸÑ_&(=Q(Š?ƒÁ@NN~~~\ìÀf³¡Õj±Ùl¿óTü¼úûû‘÷VÁqÙȆf’² t׌.Áv/æ‚€ÆI‡‹»ÐP-ÒÁ†S ?¦?tŒ <ÒB‹ÿþ¦)œ¡_=Ç?ÿ¤@ž;7 µùFqc‚x&ý¥' …Bñs]ã×ÅMw¹‘öÒá“yùò÷ô .® /²¡sŒÐÊÌVLšª6­FëØO¤ÅÝÇFN±Ó~í‚«-ƒÁkHÑ„u/V¸«‹ t€¦ÄDšÀBÉ™/N¶š,„´lBŽÕ•#S{kóÔÆ¥W93š:\•“Y øŒmGÙÓjoâÇNÕY8#žW¥ Å­ŽFïAXÍø¿4 :74ŸÆ¶j@5N'Ðh¢ ëÇj0X°b£,ÏŒ0›± #yÕNÏ  ¦ž6ý½¨S5ÍÏÒ¹í!¼c5\Üuwö·'çí=|¹ß¯;ýèØÞ _g¥ …B¡P( …Bñoçš{~Åb&3ÍL‘M+øºâé'Ê(ÒhŽñÀß ÀJêY#b(eôWIôzªÅ9QR¨ÁÓWCQ¦Ïg´%yf<ü(9oà\©€‹Ž¸H׫¬ï‚Ü22³×`'µ:ôÞ:Ê Ë8U ¥N¤å™6¼Bô”d˜p uÁZ`ÂêáŒ&Ξ6c@ðq#Â[Ø8ŸTF±NƒÕ¦'>Îc~9iÙVÌ: !ánø9«uÏ …B¡P( …BñOãf÷ü^Óøý}™ÛSx|üRòœxvT¯ö÷UP( …B¡P( Å¿ÉøU( …B¡P( …âŸaüjÿœde1í¶£\ü[]1_·ÙK’ãó‚v |}F)”B¡P( …B¡PüÐߌã™3gie¬Ñàââ‚««+{÷îeĈW&V?µ¼‡êópçK—Ê3|wð5Ã<±}«Òbö`à_\6ŠÎ±ŸiíÅ#[[²â‰Ìskâ$íø•ågcñPÒ…B¡P( …B¡ø‡qSo~6lHll,µk×&::šúõëOLLL%W\¼pu©t!+Çœ£àØi:Ý{€;î=Ìšó¥ìþ±Œ¦œ¦ýç8º4‰þ}ðÀ°“-½: åi§Üç{ïçç,J?æ0]ïÙÏØ¹”¤]`͉ zé^;Íõf2™ IDAT¤,^zn÷Kæh9@+‡Ÿbâôt¼k?Ë ìE¡ÕkW5•±t|*ŸiJöI&`eë·%|<å4¾L¯Hç7H§B¡P( …B¡P(þ¡ÆoLL õêÕ£nݺx{{ãââBõêÕ©^½úoø,aÇ—¹¸Me…ÌŸÙ€ùo¸“|^C³nžô(”/ £ð@[×èóq=^é&l\p†¢*ád3­{÷LoÀ7Ÿøº6• ãSÌ‚/c©¿ó_&±fg±r½•!¯7â™ZéL{§AcóT­ |ÿΠœ5Ÿž§^Ÿ†üg¾/[Ú$NZ .À‰IÔ«ÎGoÕ¤«%“ù‡Œ´êéÍý…2çáËé}Ýt* …B¡P( …âïÄM-{Öh4’’BQQEEEtïÞæ·® ÒâìªÁˆï§ ¿x„áÏDÒ«;¶$a‘nÔrÕ°í`Cv¸Òòá\JMо$Un>|ŽqoÕ£jòÒcå ü6gz죣ç“þL¿hq¦A}/škÉmTÎÉî4 ÕQ£™g-€A¡þt‰ÑáK ·=µ_ L89ipÃÄÇÅ…,œa$øS F <ÕØÿPa%nÔr¥"­Î¥äZéT( …B¡P( Å?×øÕétøúúâããÃÅ‹iР...W¿"¼|*›ÍÊ Ò”Ížå¬xå /œ‹áóÅ©ö“¹üÃ=þhS‡Û÷ÿ¦§æ`2‡³#˜0'j φ~ÕRönÎ'þHÇêØ¸½™Žc ¹˜cCA#˜Í6,€ÙlÃh,€ÉdÃêHªV¯Á€rRpæ®—\Ùn¶aFGgš|r›j"öfh(;h¦øìïL§B¡P( …B¡P(þVÜÔ²ç;v°k×.rrrpss#;;›]»v‘ššZÅ—¯…A·oÅ'f#:ßí,Ê*ÅM¯ÅÛÍÌÏ=6ᾋÙxüN/B×âøO{Ѽ’D½® i~6‰À 8$0z~YUƒÒ¿ ) nÀ&tþ[øIïÇkoÖäÜðh×1üˆƒ{yRn´€—N¼®ø,öl'LÇ5n zÿ?lG<&LV¡OŽˆ"ñù-¸DlB붇m™Fb[ÕæÄÒ}h†Ÿ¬HgÐõÒ©P( …B¡P(Š¿·è=¿çšÍøŒÆj¹²B¡P( …B¡Pü¹Ù{~õ·f1ùr÷—ÿcï¾ã£(óŽf¶ïfÓ 5@è½H•¢¨ˆõ¬xžzvÄz*v=ËÙ΂½ýÎ.(gE¥HQz„P¤÷l¶ïÎÌïM A,xpú}¿^y½vvŸyæyž$óç™ç! 8äœB!„Bˆß=õh)¨ÕÑ›†0kÿigµ‹¦îøhaçûL!„B!Ä øÝ³guuuÔÖÖRSSCuu5555¶H¬jàËOKy{z)ÿ÷N›½ÿi1#¬|v ó× ¯¯âªów9¤Má㣳7°ý€ŸUñúÙÛ¨GcÓ†:$ B!„Bˆ£ËA=óûâ‹/’žžŽ®ë˜L&Ün7qqq,_¾œ)S¦4¦2È{-w/¶2°£‹¨ê%œ¸‘[þ>SÂ\ƹŠí@pó.FŒœ-õ[Î}°¨âù1Y·¾Žo?­Cô=m {šÕ¥XÎ>!„B!„8BÔ„W©©©¤¤¤ …(//'››K||üÒ†Í;ÛsÜõ…T54ðR›ŒûvwhAf^¿‚®ÈbXÈÏå›1üƒ/Ý»„ïŸÀwyy û Ößœ…^"¢˜(ž½ž—¾tòä»]ð­*äÓg ùh~( ÑïéѼõŒ™ÂÏWðÂ×.žû¤+¾•…|öÜú<Ò…´Æâ¨Ã;rÙ5yl¼0ž°dVOßjãùÝ!,¹óÓ=Œþs_žLqQ-ABTí4èÙ;3Î÷ðôÓnL*`ÜÜÜ¡™9eï]ÍÉrRé‚ÁÁ`øGëS !„BìO×u’’â¤!„ø£¿µµµ¬_¿ž@ €ßï§mÛ¶L§´èSPø¡ƒ¡òòʤ8ž\VÇ€Nò}m…ªˆÊ#Ç·jL«ÅM7€ƒ!'›(\f³I¡Èëge?7C¿¯¡!œÀq§¥aC£Kº›c[Ǫ³ÓçgU߆-©ÁI`ì©©$µ(]®ñÕ‡å¿)¦íŒÑ€ÃAìÜ{BþoQ1LÜ1±÷^¤ š ŠN j ¦*/¯OróÔ²:u’/èÃ(—œPGƒêj……U˜Lª4†B!~V8áØc»KCñG ~£Ñ(IIItíÚ•uëÖ1jÔ(ìv;Ñh´E:C7‡šz~=¼7f9[¦ !%Ùàîeu¤Þ;ˆËS!²d •d3ÐÐñµ¦½ÑBáÆ×!ŸŽ Ð"¡°N§vñœñ…™Ë®k+èå›%•Ô“A8¤lÌ¡sÛxNŸgæÒÉMiª¨ ¹heÛWÆcNêÅ®W2(¾5FjãqÃa,«ñqñ”^„–ðԪݔ‚6ÐQ0}`Ë4葚Àý+ H½§©.«ù ¨5“:ÊIu¤SU³YÅl–Už…8¼ÌV+&4Âá(‡gQy«ÝЉjÒäM-¯š±XMèá0QÝâ? ë2Õ©ÈàwÛ¶mÔÔÔ ª*YYYìÙ³‡]»vý(øÍìžÈ¼©›yñNyaêôÑLë;Ô-ËûpIÏÅܯâó¸(ØÕY tL±ì-RÇñ)Ä7^8eöMÅX{'¢º!¥{o.½±—R¥›øó9•ý’i|ÝzXÎ+ØÈØþK©ÂÄŸoìĉ¶–u±g» 8Sxxhξ㞘B6üÛë9ñÖ¥ÔdX¹ùánd!÷„8¢$ñì'id»œ^ïÃK[ÖeÓF9¡„¬àÖæLÀF_ €f€b²átØ!â'ñ²ãû…m8¸36ýÀ°j‰#Ρ€ÐA-e§bUëùþÓï±u@Né(ºÀŠj&T³•¥Ë‹h5x’m !„älÏBü”–Ö²{w•ôü ñ¾&f?})Ÿ›Nà– Ï¦ÛŽ¿h/¾1óˆ˜:>ÌíÝGñ‘~ÿ^÷,¢ hŠJÓÓö†a šãhØðwîú8È™½™qYV‚QPPE ½é_Uã{† ´“•äö½ŒãŸàý'/À `4;蟢ª`è{óÖ÷… ªªühŸ–UVšå«FlfIEAU Ãh1Ó¤¢¨±ò7ÏO‰ÕËÐu5VÎæ½JMï5µOSþJã6€ª6«)K¥qƒXz“ÍMñ7·2áæñ§'ñà‰miFå”â7 …" ÖEBˆ#ÐaíY!„h þ¬v•µŸÏcÁ¬…ÔDÌ&ÑÚ5ÌüxŸ®+#dîÄMs–3{ÞÝ´1‚¨6;&à  ‡ˆDtT³…†íñÝ¿ßgu¹M7PM¬V Š%Ž aÂnµ 6™ f쪡AÂ7³¾çíûNÃ¥G0Ûl¨ºN$î«(*ªûQRUUƒÅXÀ«˜¬ØmV¢‘áHÃ0c³›Qö |UEA5™0›¢Ñ(&“‡ÓI‹Ñ ÌfUEQLXmöÆò‡Ñt›ÝÚ¬ü V›-Å0Àb6£ `±ïß>ŠjŠí£({ë»1«ƒÅêÀ¤DÂ!"X,VÌ&“Õ‰'«ÜäB!šTð믬£`µ*Ó)[UÍîòÈWÁ`m»68dOkxkYQzpwÐýul]¹»Ùú­‡œƒBˆ£:âÜÄÇ'ŸHB|q9ýû·gê?ÿÍCgôaÀ€<³ÎLœS§*oç7kŸÉ·O§!5¬ã:Ò¿w¾)‰£]õÇôïßë_šOÑ’i\zÁN=÷ NÜþü.¥šŠI•Ùì…Bˆ_ü®ú*ŸÂæQY¨Žkf—àDÇW¯à™-ƒP}„°¦RUXȼ ‡µÐµyÅ\}ùN8s5W<[ŒïgÒV­ßÉ'ÓÊùåpµwÞ+ä矋°dÒzV[Í@€ÏîÝÀس×pÊ™kûAÉO£h·jÞ<»€9…G33P°€&ŸÃ¤‹&pÍ}R“ (f NlI $·pÃ…7±ÉÕŽÛ^]IÞ–=|ùÞåtï~ \ÓhÅE¯,eÓk7±{ÖSLyc ÇOýšå+ÖòÏSÒøøÖÓYÝŒ;!0cï|·<|?ýSÝ8·ÛM’÷{.yõ2&>ÆìÅëxuêDÀ…ÓjÂdu‘$Ç9@1Ÿ$á°hlžq×¾¸š7óv°~K7v.fê%SØucVöú¶¸ žŒ7ðÙ—ÿÆN”ž|îÓæòáÝc‰îYÂü­Uó?`ʽÓ9þî9äìâíkz±àõ³ø¡>W|*àÈÏ‹ó?¥c2Ì|q6в“›'ÝÀæfí3ëÃÉdéa,IiàNÅnVÁì >ÎI¼y'\ý0 =`Uþf–|t•knçµ9Û°[÷ë¹B!ăߪ’bîÿ¢zïöŽ/v.²@Z2}ÇÄ7Î’›}90Ñnl&²L”í(cÙzo³`Ó Ö‰DÍ£ÅÁ Þ$6åoü(MÉÚJ2Ïâ­—»qŽ£Œ'gÖíûT¯©§×d1áp©„m¿È6Ö …šò÷ñÍì2š‡í¡°N¸ùñëË9«K2W¦À÷l`{»Lf¼Ü“×ÞhÅÀ;w²½ùÍ€¾7v·N¥ßqñ{g‹„/¤’Ì{ßÓBz‹r7 †tšæùQy„âM²ûpѵwqÛí2yÒ(’“£êQ‚ñ=ùëymÁ·‹›ÇÅ“”bæØ SëÐ #€F ¡OPcûš/î ê˜D…?D›ÔN˜h`n^=V³´â¬k¦rõÄqd9U4@5Yðlü….i=!êÃãÛw×0  e‡¨‚%ìaÙö*ÀàæcÒIÌèÂK^œ‰Ûñ6˜h¾¸¡`O k×,Z”Ö@§¡]ho×ã‚Du…²‚<ª€¹÷KRr2×¼:€ÚªX~:p̉¹˜<t˜K|x’zò×sÛ·hŸÑ§|„'ÞŽª7=Wܬè&3¶¢µ, ¿¸ƒÞY) ùóãh€ßã‹=W,g§BñËÁºsLy%¥˜U©qÝi©T,ZÇSWïÂ\qó· ?q5ÝÚÎâs`ÁUËødEß½åáá{·Òþ‰B žoZÎɧ®aÜùËù`…(áoî•ÄúI‹¸Õ½Š`Þ”œòð2rû¬bÞ–Z®¿cÃO\E·6³˜áÙ¿„ 9ÝãÉLwÐ;Õ‚®Å®²‚K6Ó÷Ø%ô9v Î]ÏÆp:Uv¯ÚÍøs–Ñ{Ô^ýÊDyçÊ9¤ YA¯a³™öŸ²Õ–/ðÐçŒ5¼_Çô–1ô„Uôî6‡ë>‰`ۜ܈RÕÑD âã»5 Ä%eòØöát$̼É˸uòRz\Ê ñËYUå‹Öñ䥅|yÅR†,£Ï±|–lÆ„nà/ãW1êÔåL¼#€¼·×ríà é:`%ÿx½„7>ZΰVÑ»Û\®mì !Äÿ<øµ¹Éj׉œœ\Úe'cVÙ/ðÒ †Ìœöè.|•k^e¸]#oõõ,ÏW0éAÀ„ÝOœÍD»Çy¬Ûí!Åi£¢® ‘›HD3ß‹/"ÚdëZ„„®C¯æÁápárX›"_³P¦)$%$`³šƒˆ5Žm“SUP¾«ŽrŸÁâ½MGwýÞü›EÀD£†a zTCÓ #6I—¡kdää’ ¸ûªKk(ª²mé:†eTn¼+ ƒk(“A(dᔇwàmlŸavM«o`Ùf+Ž”h²:Hr;›*L(»€Œ“æû‚jŠKýå2õô®øƒ97…Bˆýp©#k¦›±‡²Jƒ´º |Ûãh•ª€ÙŒ3Á Fo~èâÃÏû0±_”=†ÆN·E‹çÌ[S±œÕž¿žšLÞK¸yºÊÈó\ø *yçRΔH|š¥ñÀ&Ü©±×f‹Bç³ñÅTø60á]|Þ—3ûD(¨kø:â^»c$ØÔÁÁ¹S?÷Ï©åÞ7‡0±³™¢÷Öò¯Å^¦´ÕqwmË¢çÛBY wþ³wûµêVwt^¨"o]s¾(`ãŽdæÖ « ÚîÏÖç”°ž{¾*çÉÞ6œI60¶ò`´žÕ€ ëXŽ•ÎXNݤlz©Q–¾XÀ‡wug˜]aOVg 7f¥ ãcÂ9}yàÚDÊd)!Ä‘ùúêkÁp˜h$J8è¡F›/ŒaDñ×ú !ìþmÜq÷ýl+mÀoaG5L¸åe¦ˆ~ÉÜÍ¿n?‹]ÌëSoâ¡e_qïpöiÌÝXÄ軾`hr Óëë€ZÂMѵ¦°z<Ô¦ŒçŸÇuäö×.á‚‚wÑJ­Ñ£a:Ãè~^zãNÛÕeK6é£Vzœ}Ö]Ï-CûðUï4†‡’üÖ<üÕËtQˆ \2ûj ¤Š ÇŽkjð¡ x€<^/‰ÃÏã¡–qÕÃg1îóÎDÕyówóàæµ$b7Sƒ …©«ÅØÆw<¶Ò: ÖÆö™F¿ø8,·]ú'^2 ]{hðúñꃸý‘K¹îÕû9ù¸÷i›hbϪb†?ô6—(Aøñ…äÿ…Bñ³Á/&»8y?/€9Z®ÑÝÈJ @ÓДx6úXóÚF:Œªæ…ŠãITcA¯†×ûg[aÓøT./ŒKÄî€ÙaÅFšöÆCEˆ-Ò&ä4N.âêNÍúk_Ý@‡ÕüsÛ8:ï-œA(ã/Ïáô”ÿ$ˆ3=Ö]ÑÚJjJl\X\{Z½¡«¤%6vpÛœdviÀ\¥|˜«1?•ôct¼µ:~oã-~%‹EŸµbçÚÍœœ´†ö¯å…á5ø½.22cM¦Ç»¹ì 7ZDã‹{ð~mg:ªf:dŲ±·³’Zm‹M»­Å~6ŽhÕx\EÁLˆùW¥±óÖ\‚a ý¶Î¤¹`kÎèânL›Á¢Ï2رf3ãVÑæÅÁ¼rA¼œ½Bˆÿyà{퇋™¤Ä‘¯ 5àì2…Y__‚âÊÀãQ¹ræL"Ž$ÕÊù¹™PTÍ^<ù²ÛvÁ©ÂH¹„ϾCm4DÈœˆŽgÂmstI9¾°ÁõÎdÚd&QWåØ[ÞfÖ)Z-]§ÞèÇŒ/–bŠO‚Š cž˜ÅçEåD¬Nò?½™UåzÝҎ˦-ç¬Ú¼Qƒkoþ;*.’Kk0¥öæ¬Û¿ ßyÅD‰ ‘¶9ÓI÷7ðø#ô¾z>³.¤äåáÞLÿr1¸pËè2ñ¾œ‚_³1âÒ×øö¤"ê‘ØÒL7Ä‘òÀOðõ¹ Ä'ï¡LéÁŒ¯¾GW“Pý ç_zã~í“‹9R‹Òu ó¿< Ÿ%j¨\o³cs%­öÐõ”ù÷+¨¨óƒ6R2Óq)7òÍWàHIÅ’eŽ„BˆŸ~6£“™>yàši‰{ƒ¼ˆ¦ܲœë§wàôaíyøñ… ôj„£:ñª“ÍÓ‹x®·‹ÉZ³èú=¼‹B¼§ŽQ¸áªVØS·ðøÕ LÚÍÛQ;w‘@”H4V"mÙ2¦ÌîÄiC;ððv”‡ ö·l‘@W¦•nÇær_á*î¿ ŸI/¶æú¼óÄnÊ*|ÿA oËÅ0¢¬_ZÃk³ìD×oGU:aí«sÃä|žrZhÜʧKÛòÚßìtÍóqÇìZ&¥•ñÞWVúõËâ² VÆØRXLâ°¾¤h~îyua=‹~iv§‡mË3¸>É`“Ù`þ§åxKTv|äaÐä΄Â{7D¡uk®~z O¤šédÝÍÛ!SÉ`^馾ZÃq=J¿\Gò#ÇÑ?ªÑl Æ w0õm20‹Ë_6Xêðü !þÇ᯦ãJmƒMÓc7úLq¤eă¡¸R3‰Ã@Ó ²Zwhñ ­nˆÍ ãÌnCƇC ØIËê@zã:¿Z$‚Xã’inlšn&µu6†®¡ë¢Š•´6í°9“¨s›aMC×4T‡›TW›ä / ·éô?§# ±crXhÀÎò –VéLº6 ;.FacÝœ¶ÖÇqç 9$cᘓÌï§ã˜túÔD˜¿ÅO™-žÛ϶ðîY匾·Cì¢Iµ02ÓÅ®ÍöTG©(V9ñ±\::4vÏ+ei• ÃPiJ;ÎjG±XHnGZ›DúŒ„Åó”tIåùc“qvsÒæô4< kØR¦ÞÙŠÉÇ»±8­¤g»H‹3A¢“ÄâßmõSfusýÄV¸Í2çoåõ©¯÷7®—)„øO†ŽÞbQùØó¯Mo†±wÑyÃÐÑõ}?-òizo^ƾôÍó7ŒØÄSûí»/‰¡ëhZ³#øôÁŒÜ…[lq{Co^†–ån^6Ã0TÙï-ÒèºÑâYç–õ5š•_o‘¦y[ýbûì-_óã-ŽcìmC&½âÐ46mR¥!„8E£Qü~?‡ãg®UŒØD†bð?¼ØïÏõÅ Ùæ_HfÞM\ØS8¤ÙŽP¥¥µìÞ]…Íf•ÆâwL5Û°[UÂÁQ]—Bü&†V«¹dâà:6rs[ýè³@ @UUIII?ù;ªë:ª» n–æü5L$dÿštVŽ{j€4×ÑðšÌlݺ“I~„BñK°¾Bü/èºNVV;¬VË!Éï¿tå_ÇWÖqÂË9-žY:²˜?µ„.w$ ?ß\³ç3}i‘“î÷HÓ Ú´‰LÒB!„Ba‚Á&-æ ù¯¿ï¾û.íÛ·G×õ½“r˜L&6oÞÌ¥—^Ú˜*¢ûòðŒïÄ„cšfTN`üýîØd&ûÙ±z- KÚð—SRþÇÍfÝ%¤>Ü‘,œœøtÝB¿E]‰k,ç‚âÖ\zª<óñ{‡9r¤4„B!„G,uëvï7OÇ)øu»ÝD£±% à --¸¸8vìØÑ"]¨.L ܼ€Q*¶„pfZP+kxù« fEeìÙilÿÁÃçk+ˆd[¸¢_<[ª˜³< ÉVÆ”Jú~%Ô½µ|63@¥#ÏÉ¢«3̼95ì,Õiß'‘ãû8‰Ô{Ù½)ÀÚêa‹ƒãޱ°|a=«q'¥¦†Øúµ—bwˆ‚|=)‹\‹‚ÙaBm,oþ­o³3ÿ‡Nâ&I=Ÿo°mc劾¿\N!„B!„¿]8Æ0ݼ5ÝmïÞ½5j£F"77—¶mÛÒ®];²³[>«ª ŠÚ¼oºŠ×ÎÚF—|²“®P³a7ÿZÑ€0¨¯‹PÔ CE ß½QNЪR·»ŒÙ³Ë·ÈÙÇŒs7ð}™FUeï~VBÑÛ›xöãZj|Ì}2o64lÝÎ3·ídKµÎš/Öqßßw³­JgŧyíÍ: ŽçƯeA‘NMC1Ï_¸ƒ(fÌJìn@å'ÛY¾¦€7ÂÖ;ù®Ì„úÚh‹r~²œB!„k£·J IDATB!Ž$Õ_i6›ñz½TUUQQQ×ëeôèјͿ”Š#ÁŒ‰ñoÖóz›}8PèrqVN×›ÈÊ7×rÎómsëðWèyŠƒ 'ÃÞ9ywlcòØŽTÜœ ´×¾[Ìu÷å2.ÓDM÷<žßåeH†…ÜÉ\wIk<=jyã8n¸¼ u½êyûm`!µ}2×ÛšZófÑ<>÷&aµ¨8‰ðâçEÜ?ÛBÛ•ª]^.èËC'ÇqVÇV\;òW”S!„Bü¬ =-oX¥´x=:3ÃÆÿ½Ešñ¶2´[gÌeUÌß¾“5?g-¡cRo6íÈ£|ÃÖÝõ&½Ûw–BÚà×d2a³Ù(//§¼¼œôôtTU=Àz© .·¹Å¶‚A ñ<¼t,qF)“sf³ýöÁ¼ÑCÇW"­gÚ¸ùýî4É.çÉtþ‚ZNxzSÛf±úÞôU»²öâX9OxÍ…<@9…B!ÄÏREQA1¡¨±Ÿý™ ¢`V0™°¨±“É„f6ï„U!~ñïŽq —ù|>L¦Ø¦¦…‚!¶þ’ÓéÜ›NóG(­Œ2 tM!«ƒ¥œi&|eAJüØLt̶¡u•~Ê 3]Ó­Dý!ŠÊ5¢($§ÚHvïß¡hG„€¡Ð*ÇAœ¾ò Å>ÄT;éñ*z$J0 àŒ7Å^œîÆ×3ÎøRîH-âô}I/Ц“ þŠÖt+fÀW¤Ä§£ Òº»ÚXNÌtMû5åGªÒÒZ¶m+cäÈnÒB!ÄÿHÁš[ÉÌèBCØDÑî•økÌŒ>ã™i¯Écl¯n˜‹+ù¦`+7‡Ëº‡®©Y[°mÕ׬þÇ'ôËé" *ÄïP8$/¯‹ÅJ­ôy  ªªŠ¤¤¤Ÿ\[×õ½±ëAõüº\®_•Îä´ÐºÝ~ ä¦5æ‘é`ÿ§2Óœ$6¾6;m´ïðs¹[hÓ2oW†Üf۪ŌÓòs¯mô™˜JO·…8wS^ Îô}OíºÒíÿa9…B!„B)þ  ô$sÞ+Éòí !„B!ÄÄAÕý©®ä½èC:À¡X—)¢{×ñÅ~ ʲG–sç´ÚCÜÞ²‚-ü¬Œ'ÙDe¬²rÖ!„B!ÄQæ z~§M›F»víÐuEQ°ÙlØívV®\É-·ÜÒ “?} §=êÅg# qÒØÖ\ûp~ó|FÞßgïÖ1wôG¿vµ$‘tÈš"žKôŸeró²L œ‹þ²ƒwþo¨œ9B!„Bq9¨žß>}ú››K×®]ÉÉÉ¡gÏžôìÙ“œœœé"SßȺïŽaó²c¹å˜zþ1q+5TqëI«{újn›U@ñÊRv¬,`ÐØµLûªˆ¥OñÆ»«yâjîœSlž^ȪmaÀ`Ó';xÎæÊ)ùlðDXõöfž}qFmÄlþ÷&žºš³¦ä³ÞÛ²·V_·+W5ìÝþavKë½,¹k;eeU\wõjFŸ²†‡ß«øúÞ=ìÞæeãr#®ÚÄ{…a fo]no¬‹B!„Bˆ£<øíС]»v¥k×®ÄÅÅaµZIMM%--íGiýžèÞ×Ùgôc\¶ê!¦Ûʘ7zòú´ÚÏ\Ç"ÀØQFŸw=|ó^/.ïdÝó›hèÓ—/þ/Â+6P†BÙwVé4¬ßÊüY ·?Ú…Ç÷ob óö‡…äuÎ`ÖÝð¬ÉgÞ7&î{¹·Œ‡ïRß¼Ò}¬X.ÚAlàt_^¤S¬y£Œ a¦ÎÚIßó:òï—ÚÑ=ÃO=>~x½†ÄN ôÇËvãœöA>žß¢.ó‚rB !„B!đ蠆=+ŠBmm-;vìÀãñàñx8餓~ÅújÁr+Y¥µœž¥û%ëñF ‚š‹·Â0L¼png’3M€x&ô4‘@k.=kë·]Ån7‘¿©”É«íŒøK-Þ{N zµKfÌñ©d‹g—0y¥ƒ—4¥iGËù¡ÛrÒ5[y{¡?-ÛBxÖ±¤Óv•(V.6»¸ä¦M¤Ýß™ô™$P…jS±c•d¢{¢ŠR[ÏäÔ=ÿ¼¯fÒœ¼ìrR !„B!ÄQüšL&’’’HLL¤¢¢‚Þ½{c³Ù~ü¸š²ÖXuç÷|—Ö™‹³-ŒóÓs‘ÜÃb/¸tƒ†`to ¬ë:¡Æ}ƒ!°5æ©E RZ»¸ñì¶RL v`Ë«ëIO]ÀˆéÕd É %ø’Â=SlÝ–ðøV'oMÏdÂÞº‘-'”B!„B‰õ{ÄKii-Û¶•1rd7i !„â¤`Í­dft¡!l¢h÷Jü5fFŸñL‹4ƒ×ä1¶W7ÌÅ•|S°•›¿ÃeÝC×Ô¬-X¶êkVÿãúåt‘âw(’—W‚Åb¥GÖ?ú<PUUERRÒO.Ë«ë:ªª¢ëúÁ {B!„¿ó‹Í`%žÊ¯q$tÁ㩤²¨€N=/Ä—&#„8ªIð+„B";6>HZj{|a•â=k Ö[~òCÒ0â¨Ôã©üÕ¬P[µ[Ò¦Ó)-‚ßõ^?WU×qaJ «¶2sãž4Ž>))Ò€Bˆ#ÖŸùzv±è½÷x7¯ €`ù:>ýp9¿e%Ÿêµ yóéSñöõä¯äßoÏk\’(ÂÎO>àíWã•ïM!Ä4x0´º$öÖK£ˆ£Ž‚Š¢ÚPT ªjÅdv (-/£†AET#`@]$J½ÏfèÒxBˆ£/ømØò)W^x!õº ¨]úgœ7õ7°jãDTêoØ·èÝG™xñŸ)À›ûJQ~S^B!ÄaS,HPÔØkÕ$"~§2˜•ØõIQ@UQP¤a„G_ð«*fléY Õg0ðé<ìii(¸±¥_ÝC¿œ2³3‰·õåá¹Éãò¡ ƒîžË °žaí=§„Ð÷ÿ枟£ °ŽÑ½rˆKL"%Ù†¢\C PòÕ= ìØ˜§µÌ«‚†Å<øÁÇ@1½» gZQ9;_~‚Ÿ™Gì>úJF+ qiq(ÊhVàç“‘]éÒïI®< EQxt@€ý³Èê?Cz…B!þ@šO‚#ó¼ !ÁïþJ„iðôäÕòexÌÿ­W°£Z€¥_-à7_äÆñ Ü9î2j,ݹîŒ3YùÏ;ðùo?È÷»ºñÁ¸,ªK÷PÄÌÀ[WœÏÂðÖÕ²áγ€R‚@ÖøXüÕBÞyóE¦Œ¯gêñ—PéÁ#—]tgóæ%\×:²m[ٶ˃‹ wÅbÝÄx+½¬:g#ƒâ¦âÁ‰^YÉÖ¢ÙLyn)ßöNäŽñÓhÀAÖàá ”.9 !„BüAø<[Ù¾ò|ªKÞ`ãªÛ™ùÚj*ò¥a„àw?Q/¥ ƒyþ’îÜtûóˆÃ Ìyó2ºNbnU9‘ pú^z1é¾\¿2ÂÒ9ßÑöÒ›È¢Š 0c¶{Ãpqj‚À‚˜ûæ2º\Äܪr¢!;àF¼ ^ ÒØÓ«£š,˜­á=¼¡AÖÕ¹t¾:´7بæIi“Éj"*&×j€á/Í`ÆË£°Ëw.„G”ò]3Ô-¤®j1;óßaËê÷¥Q„‡æBW1c²$¢š\˜-ñØ)¨&‹4ŒüîchQ‚Ñ upÒíÓ8-;hX€E3gÒ0üB½à*ÆôLDÒÎàÃÛ:óú +—~×…gï9-€¡­Ò`á: Pöæév>^p£{¤~¢@Jÿ$ÀG]8V.- â à±væ±vqNþ?~¾¸~qí£+ôðúbñ{ €TpŸ È¢• {Bˆ#N]åb¾ ø›³i@› ™îH4œ† {Bˆ#j²¢(–ØÌ²f&³ü¥>xë6a·ÇÕ:´°Bj«^Ò0B!~_Á¯+÷4^úø´½Û=/º‹¹5ndLdÚGœ[öi,_qZ‹·rο•/ν®XõUuAZµJfÝ‚NŒyüR\y>;ãy&ôáÙ7gíÛ~ú->Þ»‘Ê“k6í·ƒ‘Ï¿ÏÈÆ­aÓÞaXãëá/Í`¸|ßB!įRTð­Zu£!¤²»p¾j ãþôÚQY—ò]3ˆOH#5S[½‹O¡kÿ äK?éžùïâOh…Ú¥´b u÷{¥4Œ¿Çà÷pIéy*·Ý,*=žHëìù„BˆƒðRYøñéè¬ÜÅÎÍË9fÌC$¤t<¤Ç1™¨ªÕdÂl‰Ãb=z{äë*c7wƲP^¼_I‚_ñ³Þݰ€Ú¬ž˜*‚TåÏ%WsKð+ÄïÀa]2×Xµº†úHlZy“#™6í:о]»_|ƒäÏ©'tÈJfóGÔð3?k?ª! ç‚Bˆ£€aèD#õzˆhÔO(P‹¡ëÒ0?w±³wh½µqh½MEü,§Å†Ël!Îb›‡MÎ!~·Áo¤®šGoZÃqg®fÌ„Õü}FÍoÊ|ÍWk˜±)„Ùt°‹žWóö…Û¨9dÕ4ÕGÑø™NÀ£cÇËÛoïü‰4B!Ä‘AAAQL ¨(ŠÚøZ‘†ùƒ(ß5@Ý‚f³£¿'"„ÿIðë­ð &ÛxrZ/Þ{«3ýWæsÖÝ»cEƒ¦åÁf¯Á ÔðbwŸˆN»ý˜zA+\êÞðû4üAý'ƒT¿/öÊœdÆÔønÈ«áõi„›¥ cïEöV5}¿c}/Ë"å€ûÆ1ôÒT¼|3§Œ@3~Ãq…B±ÞBvo¼™ºŠ™lzŠÙ3Χ¾f§4Ìð½ìÙx+õ3)Øø$³§ŸK}MáÑ_—MO1{Æy‡å««\BØ·±Ùìèß1m`7ËBBˆ#ÛO<À£b£S¶…8,´úÇ Â£ð1mI¹fÅêÉ…cí|sõJê'õáŒ6Üû­Ì+uÓ&+ƒ7î¶ð·–1³’Z›¹çÁ^ p×óñÛx-ßLÔåÒ»pþà„Aêg—Ïã/éçG‰Oåo@pÞ®z,L¡5JJO7?ÒïæñÀ‹ ”n “{J&Ï?Й´¦lòVÑí…v¼˜è<}ú·t›ÙüÔœX;ŠúyÜûRÓ¾Ù¼õ€“¿§qî²dV/j`èYk™úl'þ²½+ ýúã !„8bņ {‡ ûe¨ð‘ñ½hh{‡pûk0tíwR—ÃsŽ©³£«f+³ VQÑ®#á@”oI†‰1=ʉ.„8Òƒ_ÐuƒH³d}¯3óÅ.ÈJ0c·©€‚-ނݦ`RÒZñÅ =É Â´I‹y¹$‘cº[ض ˜Wæçr5Ÿ›¦ 93ÿö*Þzµ”qƒHm:D}>Ðêe€ žìRŽ•Î9·Œšó²É!Ê÷ÏðÉ-]Ø3¯‚ò²LÖ®î Ñþh³šôêÇm•KùVËalÝ&ò:õä“íIVœDørvó}Ã@ ¶x;Ýs’wz2Ï<ݨà´>¥ÔÌq…B±h6TØ$C…˜ïEß‹ù¨ý^~\—?Ö9–hwrË'O“Øo4Zi€†-sh¯¹ÙùÒçr¢ !Žüà×lVqîÝòðùÝNØ e!0[T@E!6ì9ªCßL6€h˜CœÜ5<—Ósl„"q¦ØXý™Æ°§»òæ‰IøÂP-*‰ÍXdË¤Æ :EÁLˆï®L§øÎnøCQŒû»àJ6a¿c$½¿‚ëç²é¯˜ñöÍÊjfÄv>6Ÿ-UsÚâ^€Ý0ðaᦻFr£iß.|ý¸ E1ˆ¢ã÷4Þ¡­‹·ì Ž+„Bñfw‘ls Û\ñ$h.i!Ä‘üªªAþªž×EŠ%HõìRJîëF@ï¬ðÆô"BÞZYÇø³MÇЈ˜Üé¶òè󥨧ÄS¿j£»qÏ€læOÞëA·§ž=†ÎWv!£éÁÞ®Ù\uÞVI2Ñѱ›¦’Á·•[˜òL%cºCÙ×I¿u(Ö¯òØãhÇÈu&ÕçÇ‚dǾò÷ß“·ÌåÚ }0°OÇ À¯åQ×´o*!F'½¶ù¸ùÓJ®<=‰EÕÛú¸B!„B!ŽLœðÊÆ˜Ñi„+ï1ètuož87€nWvåÄ>f¶V©üõo½8§³sz*'ŽÏÄݘe›‹{pùI6¶ïðSߊsû; »—Þ‰Vî£8`cÈ1mö¾¤ó·÷Ú¡mõ’ŸÔŽoŸk¨ôye0Ç™¼ìÜå§>§ä8:0 µ¶ü…q£rh³ê°ÑbNÌn|ÃÉIÓri‹ƒ‘Ç4ß·‰$3qZ[,عþ£¸ö¨¬tÐë¥A\!„Bˆ£œÍúß¹=‚—œ²šT9„ø:pϯ#Ž Ä1á€{¸¸`ÒþÃXâèÚ­ÅŸ úÕ†~û¥Êê׊úýtaÒ»·á®îû¿ëâOËiñNö1­˜rÌÏUËÄÐãZ·(O÷?¥ÇrûѾúý©1ŠMOçëþ“ã !„ø#ST¹`GŸüWO s!Të6 VÌe÷ömŒºéâCz _É:꿼ŠÔÁ²cËJ6Ìû–Ö'v!óØ.޶º™¬¿ÜS±ÎëçʪZ.JIeåö,ÝYHAy%9­z Óâ ñ~…BˆÿÕtt. Ô)Y-µ>O žÊz‚þ”ôNò¥Š£ë\öUCć®G‰øª zªQÔC|‰¨kèþjЂhAÁº2t½Sl¢°Cȳ}îÄ4Â†Š·¶ŠÚŠ­X“ì?»fTi:AÀÕ( À0PA‚_!~o×G^‘ÌûÛ6ŠUZµnæ¸c×°hs ³_¯l±&oSšÍ²² åê¿U›v1ëÕÊýÖBq8…jwQ3g*‘]ßP²ôy~xu2õ¥ÛPŽÂ8X™OÅÌ‹ ç¿Ïίîä«{ÆQ»'Õl=¬Ç•ÞeqèÏ)3¨³T›Ì¨¦ÃÐ7¢( 6Ά­ÆŽ£†Ù°w}|úÚç©]ó kßú3 ž¹«3á狘•ØE±IQ°¨ ÈdðBüQ‚ßJ®qÎÅÞq ­ç“Ôn>ʈ˜[þ/)ÊÖw˨ù)½»JX]nâ…z3¤KÇž›Ì/9tŠW°³¢åºÉ¹ÙŒ9?›œBñ_ñVâ]ÿZåj·|Í–¯§¨«@UMG_À`² ÚP,NÌöxlq¶Ãøî¿î­®Eÿ+°¢˜~7çÔåÃdO@±ºP-qXœ‰X]ni!Ä^¸µ—Æ þãy?ouZÇ Û†’ PQÃ̲8&fÆþ±—l/'’„å‡%I ,_¦Ðá¸Æw´6~]Åw%é]â9cx>q¿ÀÓË‹¯ÕãN0Û ãb—IlüºŠ…%]â9}x<Íû6|»‡¯?uãäáê8+%»TÚõp 7Ô0sºŸrCå¤ËSpº­TWð꿬¤t‰ã´!ñèÞå%æÆôÕÌœ Â€Ñç·¦‡Ë 2¯¯Uãó9&\’Eü–bf¬C71é²LâåÜBˆƒ¿pWM(f'ŠÉŠj±c¶;PLòÎÏÙðX.=Œ¥B³³qáLvä—púSwÒc4ÂíõÔÐPUOÐWƒ’yôZ?Ž^UOÈW‹’yx‡£[œñ‡©.˱¥æ4«KÍa¯‹Bü^ýÌ­ã(Í ºiÓZÊS·Ð@5œS@=Ȭ‹W0c‡BX¯åý ÖS ”ÏÜÎÚüî•âÅ;Y°+ÂŽ5[xa«“¡P°x3Kk›+Ì–+WóE¥ACm¯ üãX>ñùÌÝhYBÍÀÖ¨ôè”oØÉ'ÏUA>>o«= _1ÿšY‰Óeí¦~ŸÞÈÂ:õy…|ò\% A¾¾j'¾$+ñî s_ÝŠ…M¯¬å”ÏË ùÁ¾³sæW㲘¬ÚÄû»åÄBˆ£ÉköÚÃÁìLE±'b²'b‹ÏÀ‘pè{²‚•ùTμ˜Hþû~}_ß3Žº¢-‡ýyìÃñ½+·R9óϱáè_ßÅ×÷Ž£¶(ÿ×¥d΃3ðlù˜­_ÞÏÒWoÄzˆà`e>MÚW—{ÆQû_ø^„â÷ê×ßnOìÁg/à«b½pÑ{Ò%f;Ÿ™M²Ù®,âÙE5$Í-aêfZ'©Tù¸¨cÍò2ûÆ '®Ì—e1šå]SΘVI”ÞÑðá|¨^úª˜g[öæsnVÆç/·Wç ç/'¦P¶¤ k¼ª¶1å„J¦dÙ@˜KËpz[Îé`³ÛÇ¢Š l&lñˆrÊ{µ´ÙDF±¸œœp誉©íÉ…qÛ(éQÅÚ2xê…Ñ„eö!„8¢m}uÞ–å‰F ‚a(°7–¶‚uGÓ4VÑÿgï¾Ã£¨Úÿffkz#@¡C ¡÷*(‚¨ ¢Ò+°ðªØ{ïQ@A^6é ¨t”žÐ[€Þ“íevæû#!Mxƒ蹯‹‹Íîìœyæ9;³ÏÌìrŠŒ“1õŠäþ1y=Ú„ëP)æõdLö&nz7’Æ m¯‰ uT•‡ÖçÛFGizùvZõð’yÌ#ö‰äÞ*ó¹ìÎñý’˜Ð]ÆÄU<™ëÞëIŸ u,˜zÇÐÍTþŧí íI4(XhÄ?ìGÛ ¤c±š¨ 4˜ÜýøÖ Y¸Ä‹K’Ь ÃEá+‚ Që ‚ ]üJX£NþLÆÎl¬8šVÞ.ÍH³+êÐΪP?áä£êÖ(3ªžÝU Ôÿ³#¼ Yÿð¬åÔùT! X | ê5¬ÒVãK§˜?”d£‰ IDATV°Ÿ˜¾nÓ—ÍR5v™˜†VÑ[Aá‚,~Å`‚ B óÛ°oúV}&ˆ!ÓÅZAá<&‰U ‚ œé‡«:~o»CÅnWñÖòÓìß÷ñß'2ñžÕ»ý¬}6…Å"{‚ ‚ ‚ Bµœö̯ýðÆŽNc¿5‹®’Ô<˜žHdH³Ú^_SU\í¬Ùª(TÅxAA8•Ž®‰ËœA„?:í™_UUvgsö®êÊöÕ=ùïã!,¸viØxøíô´™I3 Ø»í ³z;Ë8LÀÁÃÌÚï$ca?~•J÷[¸ýý,Ü€A–e0…[öÒkðVz\¼™mØ÷ínz_±•þ—oå£mÇÇ›.ã¡R¸øÚ­Üð©ƒÒ`Pùèù-ô²…'¥XäSAAA¨nñ :^O€’Š¿ŒÍ›2qœ‡•é:KMEn›Àòùmè»'™+¼˜<Åälu‚=“Ë?>ÆV»—õgÝÂJöš#,ωã×ZÒvëQ¤ø0% Ȥ3þ†2^þ¼ËÇ2¯Ý6¢x]s¦¿ÕšÏÞaÕµ›É6=»ðä†,øª5Ï_D [Þ¯M°xNg¿´”Ô|‘PAAAáª=àUé™8ÅÏ‚Ž!ÜvyaA oŠæ­ÍZ4¡ENs?ò°pC}Š–ìg]P4/É+5+úÄåW†²Ê§"É(2¤—²ø•fÌ©+è=á09yàZ’ÊåŸK4 °ïh€`|Lka䎡‘„šuE)«:íšÄ"?ά"Í:4cH¬H¨ ‚ ‚ ‚ðG§?ó«ƒÙ¢pün¾‹wðzj4—ÇC£ßì¤*ÿ-Í®Ÿ ñ:%¨Æ‘Ôt^Mehû8v-ÌdSX@GÓu|¾òßçz½¿ÓÕutU‡†FšM9~º¶„…Ÿ™hȤÃ"™¬U]YýC"ÝâÁLâ¥%›sden³~ëÁC}ÂY={sÓÄï€AA.DR5ŸA¨Õâ×,³xÚA, «ªÿ+w¯fêŠ$Àįµ$ë¡ßcæáÑÜ74 PèèæÚ¾±€…–!Aôi hÈ ¹bË%)Š:Ь¢Ëmøa‚6ѫ£njÞ4Œ‹gÏm†È•ÛE°WÂGïªÇ3ÃWaí»ž¹Ù2ÍÍ2þÜ,Ú‡¯"ìºlKJ`d3±‰Aø7HÉ=ŒyÚ½ô]ð9Ñï<ŽtKwR¸ cÙž†iÚ½\´à ¢ß}éæ 7áŸËb<ù+£Å¤œÓÂW×õÊ$I|¿¡vœö²ç øæmI8ý;¬õx~e=ž?éI#ƒÞéÉ Š¿ný¸å+Þì\ù8yt;’hÍ]]ËŸk1¢{FœÜDë¡ÝPKNi·uS¶lkzòsm{r L$QáßFÓ4|n;e~/Ån'ØJ\ #üt ¿ÛN™ßWKÙ…‹ð-|M˶”Òª5àóRï`³»KÓÐZkÃd”øu¯ƒ1ËlÜ1À̪ ûX½b<Ûœ!Ú Š4‚p®Š_AA8ŸI’²‚A’Q…€¢œ“³COþúΰz(ŽÙyûh0ñ☠µÚ† 'b‘Ï],‡£%y<¶i­¢Zr,/“’£;™<â~ÅÖö¤pÓ”c Þ“£„9Kw“©¤Ñï¿Ãkµ“A¢N¸BXDt¸‘+^£" Â…Vüjxl:æ0å¼þíFÀ§!›d$t|¶†0Ù†ÃAþ¾Ùµ–âú­0¨îÿ…jp­¿U Kå{5]×Ðu0(µ[Xä;KùvÇJìÛ¿6/å©ËÆ^Åïöœ4ºýð=tgwÚ^JvüJʳ_оIËi,b£*j$S6‰ „ ÿìâ÷È‘#„……Uþãøÿeee4oÞ¼²ÐÍßQ†¿A( ¢Ï¾˜¯o/fØœ–DŸ2O{a19®`Z&˜ÿŸWE)oG§0ÈÞŸ¸ùyâF6uèÄÓÃQ*—3ˆ– ÑkAþ%‚Œ&¼#F£L¡Ù‚U1_°±4x÷V ãZcÈóãÛû#qZ(Y3–×î— I£™`ƒ Åd&`±¢ÈµænÅáTK’WÃîÈ'J7pI»nµÚ†¦i¨n;6¿’ üÒúR·ƒ3÷Q'(†2‡ WI.W¶íExpˆø ‚ Šß3Y¾|9uêÔA×udY&,,Œ6mÚÄĉ+¦RÙ>íÅ#“ÝÿøF5†[çÄœvžy‡²"³ÙyPüÊŘ0–Ýáòÿö§ã2J•åüñXSQü ‚ œb,ÿœm±ü7]â†ÑŠ1ØÏÑðhê‚/ØXn[0™â¸d”|ö}+håÈôEµÚÆßzi}x²ÝONÞ^šk^=¾VÛØ_˜É¨¹¯Ó¸QŽîKMKØ8eÝZ$‰‰ ÿ*5ºª·wïÞ 8Aƒѽ{wzôèAÇŽiÕªUÕÝF«‚ÉXu‘ËwR[¾KüjÌ¿òÖ¶"¿V̽7¦ =ºPùù•4k´š¦—lâÇLÿ–!sñ&’£W"GþÈKÛ½àÌá¢þ«0ÅþÌ ûS §äÍaëHì»’ú½7ñåÂôêö uºþÆÂt (à•&vÇ*¤Ðyù7 #IÇG,佫~#éÁTzŒß‡ s_,âþ›R‘?P¹œÍÿd9A„Ú3pÇ~žôª¼˜QÀ€U›hýí7˜ÍæYX¿¦¡Ç³õi\ ¿ñýÿŠ%ÂL”ÙJ´%‚Ã.è3˜ßìZËçGvñÅžT¾Ù°”ïÖ¯¨õ6ŒŠ,!D™­(A!^þœ ‚(~Ï,**ŠˆˆÌf36›ììl, !!µÓÑpë„’Eï/ý¬û©ÞÒîô©ňçc™ñ]'ô×[qhÁ6¦ýÌë³ÛñÌU&濟FÁIóIcÂK¶ @+éI¿¼<Þyö7¼Ö _þ@¦4.bê š‡Òˆì[;€C¯ë¬ýÚÀ†M—pè-#[^ÍtJoÏènïwmb#`V$¬øöæ}ìéÏwµæ*¯.Ö¸ãÍz|ümGôW[V.ç«g\NA¡6•¨*.$ÜšN©ÏÓëE‘$¤s<’„A®ý‘·ìb¼_gâ‘âýJ÷¯¿"øo8“}.bIÞ¶›ñ~ûä°x%Ý¿šý·ÄòOf¶l0b4ÙŠÕl+Eá\í k2±$I”””ššŠÛíÆívÓ¸qãÓ^tò>VB–5ì4à÷±¾]˜ÊŒ%z¾Ü8]Ãá ér³¯w¶læ®ETÕÙì(céà +.M£ße&f2.±üâä¸áh:ºf Q¬ p(¡tK0¢n£•–òe  ¦üBì`ÚÜ¥RêI–0¡²º­ŒQÖ8°ßCP¦\Ö9ˆ²Œ—zÒrÚÏ´œ‚ BíòûÄ+déÔL­8êñ2Íæ¤X(i9ù)*!­ÌFT=ÔZ;ÑF˜…X³™¬sP,VÆJZ^G ‹Êc©_» ¢ Â% £¢P×b&Ãjý[úƒI9÷ÃQÆœƒ"ô¨ÛËt‡“‹BÂHËÍ«èceÄÔ—Ñ/°XA.D5Ú{x<"##iÓ¦ Š¢Ð¿Ìf3>Ÿï¤éô€Ž­TÅã PZªš*á(Ê`‘ÉʃµçÁ»Mü¼?K‰Döz'…@r³®Ì+omÈÄëCñæ’ï­2ã¤P.{ê;Ü ú2™5;‡¡;]üºÌº‹¹çbÔŒhš†×«¡šÀí)P5|¾òÝK@ Phd±íÃpZ[e¼fÆ8!*8‚ w4ä®î^¶fy0Aö:7EU–óŠ[ΰœ‚ §Ðççk›ƒT_€ Jø`ï>ìn7ÊxIre,þ?–ðÁÞý±\x÷0Hu8鞞ͻ±)ûhòý¶å`®å‘ªîØÏS>íÄ¥õs¾Ã\Ë& ý~¾±;IõküXP\ÑÇ<µÞÇþŽX.dãÉŸ‹IÜNIDñ{ÇŽ#%%…ÜÜ\âããÉÌÌ$%%å³lÚ?‚yoì§Ï[èuév–çÉtIÝè("æ$¹ï®[O\]—ØKÚSϘCû—Ó­=£/õ0¢ïFÚ ;ÈÞÒêW=X©´`Þ¢pžð;ɽ31÷mĵ¯v"ñ÷4ZöÜÁ¶v‰—}x|à®`FNîÄÈSÚ~àÍž8Æðá09J˜³t7™†4úÍ.VŽ ˆâ÷Ÿ*ާÓê!nÏ.‚ ‚ðo+€eB,`Te"CdÊâ¡ ˆâ÷MÆ!Ž‚ ‚ œ—;&E:Ísò?&ã?)ƒ,úØŸµ*§]FñA8ߊ_ioYB6È„•opU—ŠÝ§c´1—o˜U·ŠÝ«c0)„UÙ04ì²Dhå` ž€„E× (2Ššª¡W<& Ì®A&<¤b‡ïS)qƒŽDT¸´@áB$ËPP¦òÍA²‰µ›KXöë~¤MPjq` è0]'ìfÈ ˜œ,]yTé_Tkm(JE,ûœXe3k7³ôçýÈ-› HÔÚ­m¢Ã t»w/—]Þ£³€eç –Ê¼ìs`•ªä¥ic €Zk±(t™°›¡Cí,ùe?; étz}ðßÔÇj¯/[L2?¬+A®J™›y+²ISÒè?¶}­¾¿íwòÈ&'#»ؘr„ÕëwPpG}.JNA„ê¿ ]ßJ›bŒø~§ÑÍ7Oîæ“Ã&${>—ÝÔ‡‡o´â\´«žUq6ð³i±›Ãú@î=ʔ׋Xdƒðú ϼ؎&eYÜýfL˜­>^›Û‹nÇG›*=jÂìã¦û[3ª«[Ÿú#»#(ړÓÛ.gT¤H® ÂùF×ühÞ2tÕEÀkÇçp£zËÐ4Z@Cõ»ðûÜø:øU ݯ¡û8u) QæóƒÇ+à¤Äç&àr‚£ àD ¦yíè~'Z €ß]†×iC ¸Ð5/€ Mužç¦ÐG€ô\.ÅŽ—®cWUн>p;(ñzx¼à²cSµ±ühºêBõØñ9½ø½eèšæGõ;ñû¼øUtüª~ ÍÀhšF™¿<§î,oÇíçɱ¼¶±¸Êð:íhgE,n4ÕÁ±üòXL§%p"Ÿ›€ÇSK•[WÆâw¡zíøœnT¯ ]ó ü¨~>Ÿ¿zj^Tœ@@;‘—ÊX\p”ž‹üN4¿±"/öyQËór,ÏM¡[€£9n\&;N¨ÌK™×n'%>~û±Téc'b©fЪ×ÇNŠÅuJ,~Ÿ¯ß(¿¤Ï¯ƒ LÓpÉUûØÙÇP]8nÒ TJœ 9E>23íàŽÆU£XN×ÇNŽÅæôãô‚É«QjWAñbÓ´?~^þ‡>æö¸±¹4Ü^»KÅa÷÷ÏúعŒåÌyáÂ%é§nÑy,ñ㎰ßN°Ùͨ»Zsç HÔ¹úY¡J)Û¶G²w}ú:Ìêoº"ábvÒúíîÆ¢±«y7#Œn‰&­Î¦ýó}y2|3½å§=HÂA¾;„Xë‰67ܹšß_½ˆò_Ó¦·aÕƒ[(º¶ ×ö6óëƒ)¸Æ¶£õ‘Íô=® Çu¤š6`ù~ÌÍJøtIgFwÕI·Yh&’+œ^NN ‡åÒ·ok±2áo¦ºŠñ¦¯ÅR·%ŽÒв2 M¨CdÝføT¯»ˆÜü‡<]h+“_d''¯˜@ë`’ê‚ÓC¶ÍNaYFÙI˜%š[)®¢,®ï<€ÈòÙ¾e„EÅâÕÊ ²pØìĵk¢„ãöØQ…¬;Ò‚† ñ(ª‡Œì2Š%õºÅÓP2P`³“k·ã¶%<*Ý­QfÏ%FS¸²K¿±[‹%¶%öÒг2Iˆ%ªns|ª†Ç]D^~€4oWšÅÊäÚÈÎ-FkLrE,™e6Šlùeá–hŠm%ˆ¥tïR£ëáÕåÓÄâÀï,`ýÑ4lx†Xìrm¶ŠXꢻ”Ùr‰Ñ \Ù¥oe,¾ŠXl¥Wæ¥<–ãyIóv¡Y*yI &¹Q]ô“òòç±DD×ã˔ågâ°;hЮ ²V‘—ÖiIB£xd¿‡cYe”ÈÇc1R`³‘c³áµ§UÝ­ž6–ã}Ì~R,ÝÇ’NåÌ}ì¤X*òr"GE,-Hhä÷yR^Êc9ÑÇþÿcù³>v<–ê}^þ×>vâóræXÎþóR³XNŸAþ>>Ÿ‡={²1M$%Åÿáu·ÛMaa!‘‘‘g¼‹€¦iȲŒ¦i§/~K¥óé<ƒniFŒ¬cDÉÜEðP•ýÛ;¯ã$;ïî&ì¥BlO%v¦'îbè¾.¼1u;=û&3¼¹¯_E·˜ST|²“å×îážó—t¥sÕ5pˆûÚ¸îZ´-yhX?OÜŽó†d®êfæ×‡¶â¼¡=uó6ñ¶3‘ÙC#qû44E&Y'ï{‡‘žç&=ª1+§% cfôÒŽ´×!\ ðk+‰ îÉÜ5ÌJ^®WÝŒêh¡ùÅÉ´5»9–æ ®W;.©ÿǦ[_×/G4¦•U$ïlÍÐnf2íFî}¢-×73@\cn{±f‡—R¬ôéVŸúÝ“VÇCÖ1'yñ-™ÐF¾‚ ‚ ‚  §½ì¹úT¶}°¾o»1»%ž^غ…е*œ×ÄeÏ‚ œDóâôÉ[Ä=Xÿ7Ü%~Ì‘äózžÖ–Š5ÒLÀíG¶‘Îi{*6‡FXˆ¸•äÿ{Ïu•°Dbwˆ„óNm_öü?~Ì tº·+Î#ý(Îí+ _Aá¬lþþ-Þ›º”C¥þs2iË>šÊÔiÓ˜2ó ~;j/Aw°tÊM<øùºZ)ž2–|Ëüì#BùýsV§–ž“˜ Îfö‚s˜7ë¾úŽöãßÊØ°|!û‹Ï”£c|{ãRJj˜÷ÉS—ýIÞk>Ïÿ­­ñRÌ»AO°ó,Úpí\ÍßÛT[?ùYrûÍt:„/wdÕ¨`Þ5ÿk¦LÊô>àƒ­GÎíÓµ—wß›ÂôÞç½ g^N[~Ž”ÕhÖ¥;WñßE{+þòphþnlç „ÔeÓ˜:u:S§Ná«v£:Añjî7‚õ9b;,ÿÓ1®"¾¼éÅçõªp±âÁƒdV<^rÛ6VúDAø[(¥l|wkS ÏÉì SÖ²àÝÍ8:~ŸU«8:,…Ðå–ùèεЊŸo~§ßÿˆòÝG÷~€/fì¡Öï’¢ïcø—[Øüåpöêç*)9¼sÃxfü¼¾¼F8ü=÷ yŽ•{ÏTä4á–%É®aÞ{{>kR kožÿS[Ã0£b‰9Ó½ ÿ4ÿS~\Ëï `Í_~Љë;‰­‹'Ó­Ipµ[8òé§Ìù)­üŒ´)ƒÏúO§èœ¥ÿF<ð:NTÍÈ¡o‡pêéËúüCkYñ»½3÷³ë£UL¼+_”±`ø—¤×z‹^}ƒ½n‰@@#û·Oyæ©O8©[ëðøW+Ð@l†A¿§øì³ÏX³f «V­bõêÕ¬Y³†õë×3cÆŒ“6h«ŸÜÎÂßœUž‹äÚ)9Ý­wÓ¶lcæÂ¢ó`UøÙýunÅÑå ®˜KÊ¥ûpVYÎçŠ#‚pt½ú%&^ÙhÅE«¸¹«•¨˜º´ëy ÛJŽòjôí Œ$I<·¦†µ¢A»‹Fq÷¸ üçΛéÛ4 Ôm\Fr‹Æ\ñúJ “»_{™59å_ð‹~}˜[§Î«Ñ~„ ›¸s g~óÚ·H¼ç ú)~àÍË$¢ê6$Ì*ñÃÑòw¬yâ?<óÖD$é"fm©þ!â•1`ÜíÜvëELý©üìïÓnã‘•å{15g=/¾z7YÀœq£uë$i¹5Zkú˜ï ×}ˆ­Èß¹†K¯x€F²|†íçõÆ3ȯqÞ»c2Q²i)Ÿ<¸ÈY³OÜáÆ³pàäÛöÓ¹ÿII¢×ãËϲýu[N¬(gч}YÛ°Dúøqñ[ÜüáÞÊç7O¹ É`E‘$æ(dFãÉ„ßÒ‘àx6tœÉ¾jµPÆšœ2:Þr3÷N˜ÀÝw¾Îæ¢×*¾[eðÞ%Ý‹ §ûMÏ’£AÉæ_xcÀ¥$¶³Ûª‹Ö$;_>±‡žÃžã©ûïãÞûÇóÁäYNä €g}% ³Ibðä•üôÒ­Ü;¦!Ò}ŸW»(õÑœWßy…%½fà%ŒpKù‡ÂMônß ³QæÒÛ_Æ,úèö};w=/¾z'mÕûLÖi2„º‹ûî›È¤7^ WÎn>›w°âé[h?€+{\ÂòŠÊ;sÞS$ËfdIâ…õbÛ,ÿêâ7::Y–1 H’DLL 6$8øä£–~g_ ê¡hG78Ê/Ê-äé¼ÿq6*×Û™?/—w7–_–³3Ó3˜97ŸœÓ\™°ñÍô Þ›–ÁNGù¼—.Îâýé,ÞR^ªúJìì[•Ç—s2˜5¿ˆœBs¿9ÆÌyä<ì™_Àò•¼ûA»}‹R±BüìZf$äžp–¬)?>¸w?äñÊåœù'Ë)‚ Ô„·ÏðBt^ÿz-ŸÌšÉMí1ý±õ€‘2×~Þþʉ®&gÌÓ5:Kd¶³lÖ8úöêÆåcî"—Bî7>CŸEßñù—³H˜ysµx&ù46mܸøeicnêuiMJl|?ÝÛ¢ÝWqÛ’ËylŒÛ@þ!é~ÀœÏ'ñJÛi¸Šçó[ç·ÑõÕÜÖ%ªšuC.óöudÜÅÉ´ë8”Ä¥óÈ.í~u¿ÿ'ž²…} €-Yëèûâ2t}&õj”olÿq›I]ðsÒîãšv~Ü^OeŽfž”#ž"úYä]—$4Õ‡ÇéGtՇǩî"`¦ìØk\ú’UwsÅW Ùx–}ì¯ÚÒ‘Ïê·¾{S7ÞüŒÉãyãÛ×Y«Žo¸}f[tÕM@×98¨?»ˆ@+uà©X&{žý—âžV8cÇÖgÎ WÒ{Ð`^˜öÎÚ‰ŒÊìë^cWç›™3g6ü¿ñÞ‚}˜ôØ¢³o‡‡ü%OóûóÏ‘]Ý`Ü¥üÜ/žn=ª<Ù…+žþ„’bwu˜ÍWºŽ×§ód»¦\ýÚwÌø>}ÊM58¶bÇSç~î¼ÿ>]—‹b&/o=:›Û>ډׯñAó&»‹!}GŸèÛÛ7£O¢EX5?._ùg +½ï¶SjÉ%wчL[ÍËß}Î#Ww`þÛo`3÷>ÎvÍ‹¦ÛèZ˜&6Í‚ðo.~“““éÓ§}úô¡Y³fÄÇÇ“@ƒ'_+"Ë IUwE|>ö0ŒZxŒ¸h3†ìl¾ÚêÄ(ITŸ.Anë¾("¸¹¬€Ÿ—çà=iξ½n7{T™<æ,Ìâè¬|ò£ƒÅϦ){Y²CÃyè0>sŒ<ÍÀÑ5;yî¥, Ò~ÝÃÌ™%@Ó†ïdK©8u†¤ IDAT£%Ÿ#áÀA#;'Ô4¡ÈߘÎÊlF¹ü’™ªËtÆåAjÆ€A–1™­äüø_î~rG ²ñÃil¼„‡ÞZq–+.—fPVƒ*ËãŒføýóIÙ°‰åßͤ^ÁfŒkK³£G8t ›6“^à" š?Ø‚Í/¯!¿`+GÜ­;Ôl, Íï'¦n{‚ÊìÔëޣǦ˜0°…Á}?boqÇ<ÚGX‘·:€'.ªá¶Å‡Y?û†ö»”A×ÝÅÛ׳¿B:µAs¥±µ €u/l¤å¤æ€—fu†riüÙäDÇï0ÑáöN¤MØA‡I‘l> – Ê¥Ÿ”# Ù Õ°p4`Ê¿ŠH’„Á`BÌfYª˜§Œ„ñ´’,t½¢”|÷Yô±jµuv~Ÿúß?Ë.̳®5,ÿÈ-àÀc#+§é8qešY6Q>Ì•‰cõó/ÇaöâTÖÿ´”K›ÙûÃVäHüÞÙ‚%:À‘é„õ¿–Q=šâöÅÓ(®WùÁˆ¨¢zïÇã¨fCV3-·aË?ùúíC÷#Ö±ŸÿN¸š†ÏõЈ²’B®²¯3Ÿ»„žß sÓóä¸,˜ñ°¿O;’ƒhp©¿¹C›ã}»µÏþNˇ[V» I’O:“Ÿ¹², ¤»Ó9pIžCi8CšqÍ­£QvüÎÒ'o |è»P†\ÕLlšáß\ü ìv;iiidff²iÓ&Š¢üe3–P~}Yƻߖ2ö¹Î<Õ/œ¦½‚zm=íÎæe1=ÇŸÞÏ£/äòù w•£uÀ¡4î½²9/ÜÇýã»ðÂÕa¼®jLxº9niʃ·±-ˉ,IìR‡FÖç¡Ñ1$KÁŒ¿!ŽGoŠ&|§ ¨Ó(Šñ×ÔçÞqéØ&Åv/&£L~¦ÿ”ÅÍo¤óØÓi<ñz.s×+tÌÐkêñh÷°¿^NA¡Ú;G:{ sðL¤{Ž1j$Þ~}[ZÙìò>WÅDøñ85:è|8J‹+ζu:óöo_àë?ž{g1õ÷±$ ÅK7À-¯m èêëkx¦TGuyq#sõGÓxexCì/ª*AÞN6 ½‚gï¼›;·æ‡2 ð;±×p|‰•‹¾Ã3f9«–|Ã׋W²t”Ÿïþ 4æ¦1F~{íf^õ —˜Ê—Éëqà>«ßkø\Nœ´ä¥#_3?v·=éž "FäSräw«Õ<‹Yžw§3=…¹¸ÙENþ.²€ÍëV³@—«ÌSCuÛñUÌPÑ¥šõ±šµå¯vì›Ìãõ¾ãà†ïøâ«oXòÑSð㣸ã»1äá×HqE ˜ùöÉ&K [J€â-<]Rpò­%ÏÄ›Ã#3§³xw6N»—îC®¥ÓÑÛhT_a´=ƒHsGîžp·u fóÑŒ —#Ÿ4ü¶ÿ¶Ë‰©n@±LUÀm=F¡êÃé‚”™Íøà®OhœÃo²B Õ³“É36æ„ìU{ªf€OÅçvcJÌUî"ž)^ƒB8OeÅÂíÈæ»÷˜ ¸Š¾}/Ýð—T{`v Ÿ»”‚’.—‡´oóú¢túõ‹§YBC®8VÈ Û'0áú‹ðdmÅÛ¢—?ü)v ¯k5ïOß#6Ђðo.~EÁjµRRRB~~>ááá(Š‚,ËØØ„„Nú[’tJæ±5Ø87œ“fèÇ%X=Žüò½²TßÂCŸv$=¥é—°ìúX«Žbë¾ã_]T 3½D©ÙÊß_é!(?z«H:Àí—0¨|¬T,–ѨV±ö§ij% éh€9)„E¿õãhjl…óâUfJrüÕ_NA¡ÚöÏO‡ÎÃØÕ½Ww ¦Ç·Óiåµ´KjÇdS/ží „ÒvT"–ò½­úö>í8gT?V=êU9΄]ÛØ0´ {v¤Ïã ¸¾yù+-nýßáÝüçâz5ŒÄB«Qí°–·d­ÛVà¿›öm:’<·Œ¥·´Aâzõ%¾†?0µåòò¸ÞDFFIïÛ_¢ ¤üLYÝ÷³ç°ŸonM<¾ç®ñº:!‚£[a¤¨ò…¬ß£õ£z\5î´9j?:±z…\EÞÛwÆÞ¾­¸®[aݯ aûu\Þ¦ ‡à…Êy¶Âˆ‘V£;QñÞø®·ÿ¥­ê8r` Þ¸žˆà(êÔ‰¤EÏQ$\4ˆ´@wæ­îÉËÝÛ“Øç žÈxxdnNÉËÝ[Óñy溾U§s}žn/óÙ}WÐàEtLš€qÑã´z½òm÷¼O».èyë&š5j€Á\ÌÏ_ÞÇ ^=xèëTnœ1¶¼oV7û^'gj/z·ëÂÀÞmUú)îk4áƒôwYÐ;™NÝÇp ÈDƒË‡Sßò=ž™_Ýo”ÔïÑŠFõÊ?Ñ]þó·Ž‚ŒüèUZ®y‰Ö“Úy]Û¼²oï>ìã»Û[Õ ‘ñ‡ypP.êׇ¿nÀôµÒÄ1=þØ+-Üе=?Æþ’Ž˜­½™³²/÷ìH§.ã‰ÔFl á¦F÷ù]²d 7FUUòóó©W¯Š¢ššÊèÑ£+¦ò³æ¡Íüg…DX#ŽRo-æ×&6þSËKÃ2Ø"YPb|\so+î µ1zì~¶ŽiÅ¡ñA¼Ã^æá÷xHË»O5çÄÏ:ÜÌ}p33RC°I%ô™Ø—óØ“Åüî× 6óÂÔN4>ÊìÏøoFòW¦òÝ·aÜ;½ y¿¦òíìHú$ˆ»¤¶\¹¬˜ë†uãÁ{uÞßΠ²‹HJ9À=‹ÙaÂVÆ5Ó»ñD½bFÝ϶9x·õ/–S8Ÿ‰ûü ‚ ÿtÇ–âïqÏŒžbe‚pÁªíûüÖ¨øõx<ȲŒ$I•3Ðu]×1›Í•Óé¾Å¥üèh‰¨zd‡Ž)TÁ[ê£È£ƒQ&.ºüº—ÍK‘¦Ð0€îó“_¬$„XN½®I¥0'€ˆ®oÆxË|ºtB"M„[$ô@ŸOÂl•OóXÁlÍæ‰:ÙŒÌíDÝ!¥ÊÀP?MîD÷žѹcgRÏÔˆûïLêJ×nݸqÂœÊ ûpS÷δí8‘‚ªÓ{³Y·b5Ç—Æwt67ïA·n=xd꜊Á¶þ<–y»ß|ÔÅÜ cèpÚXf’Råy?½×‰®=þ*–£¼3©;]»uåÆ s«Ä2Ÿ±];Òî ±8Oˤ¾­V,'òâú“¼œM,Uóò¿ÅRݼˆXD,ç"Aþáůªª•—9뺎¦ihš†ßÊn¶2?Å¥~ŠŠ}8}gº²ZÃëû«ñm¼pûZæ7ÓAøg(à«Y‰|³ú6|~=Ÿû €ßNdkÛÑl[6™ô=Køö€ÔžÛ†F£ßÀf¢ò‹r‘ÿæ­\ÅÖå÷ód§”ž¦•¬ôýÔiô2ËW¯bD»<ðÕA>y~×~¶…ÔÑáåoÉÒˆWäU¾ßÁhnæ36®ûŽø•;øzmÞiZ)<)–I/Àþ¯ïgkò(¶,-enšÔ\ž›D£Ñoâ0V‰E½‡ù«W±uùÄ3Æ’}l±M^dÙªÕŒh»‰³Çr/×}¹”©MNIJíu$K^]WyÛžª±4^»‹oÖåU;/Çc9ž—òXŽçåL±T3/m·WÉKE,gÈË©±lúÓ¼ˆXD,ç:A.Hz L™2EŸ?¾>oÞ<}þüùú²eËôU«Véo½õV•©|úš×ém[¯×{^¶IïÐ{ƒþâÇég¨íÑGŒßûç¦Ôggë‚Pk²³‹õ5köˆ!ç…Ýú¸;féºîÒg¾ù±¾þ°K×u]?ôÙÛú‡?¥VNµaâ­úb÷ÉïLY³Xÿè½WôÛ—¦ýe+i>Ô'yD×õEúÈÛWW>ÿéèõíÇÿÈߦϚü‰^Tõj¦þáäwô;?üVßVâý‹VöèwÝõ‰®ë.ý£7>Ö×¥ˆåƒ;«Är‹¾Øsj,‹ô&¿Z­X¯Ÿ¢¿÷Å]×é#Çýy,ŧÄ2å½wô»¦~«o/õV;/gK5órxý”y9‹Xª—‹ˆå\Ç"¹âõºõíÛÓô]»2NûºËåÒ;¦ÛívÝf³ö_iiiåÿ5:óÛ¾}{Z·nMRRÍ›7§]»v$''Ó´iÓ“¦óëV>ú©–ueûºžÿp¾a]ŠÀïóà €¤œØE;N½®ËIit$½Wáþ³F\ë¸æ¿6z o ~ƒî<1ÙTyû£’ÂR<§^ßèqS†F‹cZñŸÝWç‹æâº¼+ ‹ r•12Ч^Éä-%*¢Z± e§ÇµA­y,64š§KŠþ*–ïOŸ—êÆRͼ e¯Ì‹r±T//"˹ŒE„ IŠßÆÓ²eKZ¶l‰ÕjE–e¢££‰‰‰©2•Dh¤Êˆv«oº sô îŸçÁT–ϯ ¼4¥+Ïö)æë§ hpM$W‹eÑs-hªÀ§ßgp¬S¶üÚÛ¦=,ÿÑÈ«³’xè øå³chòæ%eÜ5»ß}ÚˆýOnFÜ~\áÂôýûw²%n,Ÿ]™ t/ª\~m³ªkèú‰Qô­&Öãc.ê~¼˜è>xÜx¹Û¦qøLþŽ·²îãÇèfP à¨ünSåÊ/ÀÁAV,fKÅÀ†:¾€ÁÍyüþ‡Òð0ë;c,sß¿‹qcù|X[@EÖ<'bA£ê¬&VsÕXÌt<’Gn¼ý/b™C‡‰[Ù4óqºW3–àÊX€àæ<1±ú±ÏËÙÅR½¼lšùxe^¤jÇ¢‹XD,çM,‚ \Xj4Ú³$I”””pèÐ!ìv;v»Ë.» I’N:šg/Q˜µ¶—&Uþ@‹ì ’Z‡Ð*\ųÃåAWdB£ ÄËß—Ü0’‹ûElߗǤ½Á ºË†Ã}FÖE>œÉ³a~6ßI±K§ar c½€Y$RáB²øF‰ëœo°ðú•L~»«˜Äð>6žxë92ÚÄ0瀇¯LÜl^5—ÏW¯‡æzÕ0º6Lå†ÑŸ2ø’NhŇ(jxÍNÓ†}ûÇ´5‰›î™Âœ©SˆLìÅ5æºÈÆLzÑCrÑÏ,ô<¥ðÊû³Ø±;Ÿô¸$ž»¦5?|ñ&û2ÄÅÙÿ«‘Ë&œ1–ëo°xĪÊX®íSÆ“o?KFë:Ì=¨ðø°V±|_ˇs :”n UcI;c,ŽÔ´õcÇ¿Ç×S§Ùª'Ã/̵á™ô¢—äâ_X8è™ÊX^›2‹í»òIKæ¹kùá‹·Ø—i8ûXÞz–̤:Ì9P5–¹•±„zVyùzê¢*òr"–ÈKêüy±ˆXj)A.<ÊsÏ=÷\u'v:Ô©SŸÏG^^mÛ¶%::šŒŒ Žo4/ËEë\—fUnwd?–ÏžÝ&: Ç“_ÂŽCЭ»Ê—ϨŒWPÙ8?—¸a © ¸ 0%ðÅÔ–Ü~cÍÂÝD6ÔÙú½Î¢¥¹}l×4/!ËE¬E$R¨>‡ÃCq±ƒFꈕ!ÿ/lص.t®ç¦ÐáÁëqÓªK?ê7éK¼'‡m…pÝð\Ü" T‡wï‚V]©/¨Ó4‘F‘MITv±7_Å©¶á‘·UÞ†®*UÕi–„"»qz<„Æ6¤e³x»¦p÷V2ƒ{3í¾žåGíéü~ØKRrSTSú$7¦eŒ‰ÌŒ ŠAôºùz.m}º¯ÙصÎt®ç&ß^%–¦}‰÷ä‘R¤sÝðôoª·J,je,­”]ìÉSqýI,~?4kƒ"9qy¼„Ô)¥U—AìÚLÖ©±ñ‹±±œÈËébÙVX5ÏYÇR5/®*y9KŸ?ä%¹Æy±ˆXÎu,‚ ü•‚;Š¢všÏ»ŠËåÂj=ó½Ýt]G’¤òÿõ3Ý ø4æÍ›G\\’$á÷û1ˇß;zô(#GŽ<¾‹fÛk© ÓFq˜Œ×æçÎûðZ³t¾þ.˜›_iˆó`:s~ pËÝM™uËî.nÀîš°ù¡ty¯+I¸øáÑíŒÿÌG± 7NjÁ¬Çâ9öýï ç&=D§Eb~]ѱIj"'§„C‡réÛ·µX‚ ‚ ‚pžòù<ìÙ“Ñh"))þ¯»Ýn ‰ŒŒäLe­¦iȲŒ¦i5+~A¿‚ ‚ ‚ \ˆÅ¯,V© ‚ ‚ ‚ðOw¿:~‡¯_œ˜AAAþ75í9--ðððÊSÊÇÿ/++£E‹U¦ô³sq>¿dk˜4ð÷gb‡°j´àðÁRBêEª³ã³Ã8ú&pQ;«È” ‚ ‚ ‚ð÷¿+V¬ &&MÓP…°°0BCCÙ´iS•âWãðì½ÌM±R/)ƒRÆgCrCF_bþ²µ¿"yxgbC t¾§•È ‚ ‚ ‚ð÷¿½{÷¦Q£FØívÂÂÂ0™L”––V™ÊÇÚF6åš.!@߰¼0“^WbëA•>×6a·Í0ËbÁWGxå'¥ÌD£È2n™´šË–'òú/…Ü‚«z(üôR ãgzЛZùàÓ\ž`ÙAAAª¥F¿ùŒŒ$,, £ÑHYYYYY˜ÍfBBBªLea숦üðînú]·•çg¦ñþ‹ððÚ ‡÷^o¼y™žXÌôì|•keÁʾ¤n똣HIÀ²>õ)(ñƒÑ@Ö;™¾"ˆ—þÛ–'®4²`òa EîAAA„jªÑ™_I’())!%%ǃÛí¦I“&H’trEËç³c¿æòÕ´T~Ò#½Béß²¼ÞŽëš«¡ªÃ[GV\íÃéÕ°•ù!Ú€$ƒA’Èt»9< ’@¦_D,×õ"JäNAAA¨¦ùu»ÝDDD””„Á` ÿþ˜Íf¼^|Nþ| ÷8±Û4:]D»ôš5P¸ÙÎO‹í|N¾žƒš®áôPËËkÌ;ý¤îu£UÇãÓhÝ4‚!é:ýG4`ÜåÁ8srÈó‰ä ‚ ‚ ‚ ÕS£3¿YYY8NdY&>>ž¬¬,222PåÄD¦`žiÃOîæ—„× }Ý™fÈ4{» ßýg?í§û8¦5ï]fÅDb3f,ÜðLKÆŽßËö:Íy®O²#!¬U2£ïáÖË6Q„¨»špµøÉ¯ ‚ ‚ ‚PM’~ü~E‚ð/‘“S¡C¹ôíÛZ¬ AAA8Où|öìÉÆh4‘”ÿ‡×Ýn7………DFFr¦²VÓ4dY.ÿ_¬RAAAáŸîo(~}ìù*“ÃçõjÐÈÛVLFz†×lþ²Wæ s}>i9~ÑËAAAþŸÎT ¦|³—G>váTÀÛ3‚9O6¥‰Y©V±»úç ê¶K 1ÖÈX# ùd¸Êãó|^®•”)™Äèþ!§?J Èaç“YùÜz[³35¨»I’Dáÿ‘ÍfûÈüÿdº®c±X0™L°áE0…þ{’ðAÃ~×_ÉçHRп¨§ûQ,í‘-mxtfaAÿž Û¼~K;…зmï:!ä_ôÅçCOt2¿,$Òlù×ÄîQU†6mÅÀ„fbG'ÿkñ›ýÛ.–­æ‹IDœ,|d;S¼4éfÆ#)ß´øü*F£Éã#ߺ¤P7Ze×Ö|òƒbhN°l ñàdîlæÃëÑ ¶H k¨ »WC“ D‡Ai‰J@Vˆ W* Æ%|:DÆš0èò H’DD¤“rò^ó«—j`”‰Š0 ü;¢ÂÊw‚î"J´ƒ|’Ÿ2Ř•%ŒV“±|~ªO¥¸LÃ`Vˆ S€`: -‡_~ÉçÒ±M©«€Ñ§R`ב$‰ð#füìÜ’O~Ðÿ±wÞaRéãÿt˜¸»³9³ ,9,AXrQTÙ³b8ã©g<õôTÌ9'”SPA’äœsŽ ,,›wòLw×ïYÂ*÷;ýžžËQŸçÙ‡¡»ªfªûí®z«ÞN~†‡Ü^é¶<ÿy›‚¨ß"Œ‰ß¯šaûuÑÇ$‰ä ë%üDz,t])¿;&;ã7-°XÇ9gWb³ð?\ÿóƒ'rz`– ¨I' ‹Šž‰J[þ9¿†¬ä“gDõ…,šdÚé[?†!õ$rh ÈÕbÊï§›×çi`³l,ëøïÿo$Lóä©üJ$¿…òkºuÊÓ|ñÞ^_žÇ/v`ÒÛ?ò­(äÍë2ð®ßÃýTñ·Çšsûã+Ø»9‘ªÍ¥Ü1©ˆu3}Lýb#3ßiÍë//=]Á”$¤(Ü÷XGoÙÀã7W±¹C¾œWÖ»8dè3*ŸGeðÚ'+øúkþ=týkW^‘xÌ[ œoÙÅgûíΣomÃ…)¥t¹Ÿ÷–ô¥_ÉFnºDpÓülV·\ϲ»âYó]{|ó&¢) ê*áÖ·1·&ž,w›nëÎÈÓÊøKz £W¦°n™³®\ÇÝÏ4¡ï’®ø4L‚âœۘ÷Ÿs²b†Ùã60÷“f\øÚnö^TÈÅ­ªsã6æÔÆ“å rãíÝ9¨œ»â7Pö` ;¦¢Í¹ùð¾L)‘‰ä7EQ”“jç·^ugìï—WMÃ÷0æzØæ5„M4J#ý™<¿#ßÚMhñ$Pm!ŽSö¸qü!îî¦3à>‹Þ;È’ÌrÞÛàjtšúUÞ}e'5e“±„Mæ§’ý·¼°+ïêM¨Í;“DA,¾´EÀg"_ƒ‰Dò!Ä'ðpk¯íóBóL¨ÚÏ{zÆL½w+Õ§7fHF7~¹‘ƒ%*6=•žoÇÃ7Ñ÷Û|V­ØÆ³Š™õç¼îöóÆç[™ “”Ì}*¤Ñî}|2ÃÆ­æspÖv¾œéà®g³yúš)ÌÌËäÐúx>}"‰§>ZKI‰†MOቇ»ÒÍnüæ&“‰äxú¯†—P3w!!Ý$zÈKâÐT{€ÊñoPU–ŒÚC\¯ɺXP6ìS‚çÕZT‰á>ƒ6/œ†5o>»¾˜‹âŒÙâ!cHOð•SûÑ ª*ÝIÒÐóHj“s“H$ÿUŽkTU4 #t‰'`XDü:nlA·fu¾C68uL n¬‹) téÀ¨&ªËƒx ZrE7=nkÃB…” ÚqãÈ8jk£(M󸤋›ø–yœyC:Ú®1g^›Ž¤´k̙צ"pqÉ„B:9£øü­µ£¨Mu§¶:Du|wŸžUï7;›6åšÇ‘lF‰ºãÔ/d%BçÓ;qSã8ÒÏêÌ €e"ÞxF|Ò‘<í®iA–:qí[rëÝ9¸ƒõ/dÌmI@½×nמüê•Ié¼?<ŸCÞŽ4¾× ß]mRèÄïÕèt]¬MW»VÜz_®@„¼…Üqëá6 êv£œyKkšHy”H$'Ì$QE;Ö|ï§ÿ¯_[œ»­ÛñFé…6®ñC¢`ç÷åÄCD`si¸‡ö”2{i*cŸδçÚQ€…-^#55‘Áƒ:2þéa¼ÞYãÅ70¶8@¼CgûÒm¼º¬š8§ŽË©¡ºM#έƔÚx7·_Ñ“5_vB¬ÝËŒ¥iŒý{]ûÂüãßãd,ˆ™~«8’ôãN T›†Ã­Æ¬¸OxëN EÑPiƒ~ÜYcÝ=Öë>þOXô „e"L-Á…±aF$™¤AýÁˆ¢8T~½Óa{”äQÏÐö'ÉPŠñWû)ÛRIæM·ÓæÕ¿Òxp't¡Z6“}³7!œv̲½TNŸƒaÚ¥]‰¥X ú üa‚ÛÚ¤ñÌÅM¸ ÏN8Ű»ðnð¡( šSÇ.!‚4g.e!Ú÷èDÉQ׾ń§‡‘æŒü÷MŸ#@sÅ£Z&¢N™õGÁ“zˆ¿·ßËèõEdVG~šjÓØ?3¦9¹ðéÆˆ §KEœ»Ö `b†*1M º+èÉ» ¯Z˜µªÇŽb° DTÇž±•-Ðjë•ØJ£h.Û‰k©`¨‰­Iu.n-‚U¶…’)«1·MfóXAë—oÅflaßõ‡X š¢9j0|`ˉ"¼Ñxqñ:"Æ GB`:í$Ü|5ùݲ°¢Q„•°K$’£üþKœÿ|Ÿ¼Ë®_×]Þy‰D"ù?*ö“w\Ï‹’©Þü)ñáZ¾y²+×=÷V‡®'¥Ú 11”0ì¯ÅïwsêË×¢ƒB—„æÄç Ö-“¶ƒ»ÒõæyüåŒLºd8À  [Ucã¬e¼½?“Χ5ç¶J?¾p„PÀ$¢ê4 xïë5T]ÚÇ“"<4n+Õ]¨Ý^‰¿{ÊÔÙzp7O}ॼ¤†2« †¢„-À¡³rÊB>.Ëâ”Óšs[¥_8ñÿýË 9œúb,·¸ofâ(HXE¯ØËïmàòˇr϶F˜¥!„Ý#^,ð†ÉОk†kP¶Ž îQùj\{DYS³¡'ÔEâ­ 6@³;ЩŽ6 APí哨ðÍ„ìíÁ¦ÔùzZ¶Œîp‰yd„ªê”{Í•P·1& *ª#MÕf#EG³% j ¬ FøÄ‰öaKXÏbÏ:ˆ{ˆAíäqìü<…¶_A·­-Q™|Ã|Nÿæ:ðƒ©‚½nß ‚9| ãÐZÊÆ}ƒC7±Ê¶ Ø»bOIÃÙ{ Þæ!’*ðERP°PÝýXÁ0ÂOª?BÙÄÉ„›Ø¨ÞQNB‹äÆq¼ù-e5Q•ö4ÒÎ胮Då"‘ü·ó†ÿ+øhô6*å½’H$’‚áÊ˽Bœ=³ǾI¬hr;·¦(¸H²VЮm{:w(äï³÷‘šj±jì÷Ì[SÓÜÇØÛ;Ñ©SGλòSiN´†d*i™àIcæyôêØj@X£Ó™Ùôh¤Ó¢sŠ¢TV)èЂn;CïÊ'«V¡ßÚÜAÀ/HÖû%â FQ³³¹¤… ¥Q—ŒÌÄŠÒ©osž=õ ÃÎiI 0LÚµ¡[B”ÊÊ Z2 SùC^™á0y]ŠsâöbÇ®«lß]JKWýZûøò’õÔdx˾¡ð”éÜù>Z·qÓßÚÏÚ‰ËùæŸ(¼v*›BÂ;WqQ—é|Ê?ø|Ÿ Gbæ1u?XáÇakH‚ Vi§ø€¦M›bY±‘XUUt]gýúõ\ýõDVñΔRκ¨5y‡ßéëÖÐdU»/ÿ¿ä±Mᢷ“°É{%‘H$ f’h„ Ñu—ÓÿŠ—yå֌؅ØB<¸¹ðî™1“!é{ø¨ËC|úÇ(Ë·QÙ² g~Ê‚æOòÝÃ=(_ô[K +‹†µûPéqQ‹X¾_C ™mÀ@2£Gչɸ-$AÈg•Qüо_íÕØõ"b©Ð唦t)ª«‹€4oŸûSàLMaô¨Ô£íGþ  #,ˆËáÚ^³™²2µ½ì\´‹´A£Ðô¬úºŠáU[h11™9ŸžFZx/UZk«X¿ žSŸëÌ9SÚñÂã…䥖ð@û2®›7ŠÜˆŸÏÏÞ§ºÒïÛdf×Õ}ÿ@TÜ¿|+б‡£8m)x¼M‚×D3g±õ7éðÀé?ýwRGK«„ÝìþûwD!|_ý#ûb:ôÌÄ»nŠ·á‰Œ§*å!ºöïJxï8ü^pÄsB˜†«$Q[~ï¤Áf˜D«h~ç÷´£š²Ï6ûÎ2úDèòÞŸI®œÏ‡ãsΗÃ^Èæ’ÃÄWD-ÜÝW·5$„@Dì톑Ù0-,Å¿…£w£ØóØZ¶3‚¥&“4p „‰0LDØÄÖ¬-i-ÛÇŽQ„!£ØI$ ^ùMOOG×cU,Ë"--øøxŠ‹‹”±g¹©=XÅ[ý\Ñ!ðÊóå|8¶#aõ„2¦ï3Èj›ÈÅ“À ²ØÇôµaLG—Ÿigܸ2öÕ¨´ëžÊЮÛg(žŒ“Zž{© U…¢só蛫P¶¶†Ê¨ŸošävJ䂾‰Ø„ÅÂÉ{Y¸[!='ŽQç¦â’÷Z"‘H~ÃYb°;çÝý÷NÉeÄ-1¬-8+öòÖÍ—ójëDüF7†=8)›trj€ °YâŸúœÊ6‘QØŒ33˜â àV!`‚]ÍÐ4p>„v \÷Ã#œ6ˆD!|LÜþÈqbøGMø©¥ã±“`Ë¢¡ä½3"&E-Y»l#œ’Ì?Æeòé=1N›C!”’ÅkáÜx·ÎùCº i‚µSEÓt·w¢Nn†–®à©äílSLeФQû&èiY¼™w¤nÑ€F ÌOTAÕ"x·¿ÁÁS±%¶ Å¯¯laÓÔW(óîÁf¯õfôŠ lî4œ³ÒR‰ÚØNÔ`-¥,¡ríÚ a ‹¬|ž”6hódz߿{féqœ0>ÑÕxÒ>æš²K‰jLgû»µX$ :t4\hñÉÄ%«߉¾áW˜{‡“‚342OíŽu‚6ÑÈñEш`ýtæØø¦ydáHDŽÓ†a dàv‰äçW™=·k׎޽{Ó»wo ÈÍÍ%//œœœcJ9¸­O2+·{cÿ­(gnë\ú{ ø‹l,1iÖÌզ”⺿¯geE’æ?ng®‘"‚,[}/U|vÅ.„ùþâå,Å'ÙÏ„‹×RŒÂ–÷7ðêx?)ž(SŸÛÀœ&ÛVlâ­ýQrR”¯ÝÌbi3-‘H$¿íÑD•4úwþ~íéd``DL¢©Itc'q¶*&½Z@fž‰i „TÔ„xzÕ§Üvz{ÖO|Œï·™Ø’ݳ;Êôg‹)M†5_ícî¶0¸VNZE·‹²ÓacÝäUt»h!Ðcq‘â5¾þ`Ó)ÿ3‘.­AÝcÓ4)hšE±ÓÏŒ÷&’õ\Ò£1…­f÷~ìw]Ää©]Éß¹•‡&îÇmScÏïü(ªj‡é õ¤3~ÖCÌ[ü ï^›ÁÞ•Å?«‹½!yb ,ÃNRû¿Òýúyt5+¥_²Ë~ƒï[Âi—=J8èÃr{HZµPBU¶¢{ÍI^¿÷8õ®…ô»üIÜñvÂ!?­nûŠÆÍÚàÝü ‡*ÅÿáBU!UÕ`XÓB``L¯ÄĶeh÷}ÁE“o aÇw,ùf)ºC¾7Ðm(6=\"ùÃÁ_UX×ñz½”––R^^Ž×ëeàÀhZýÛÝ'•ðM»à¼,fÿ£„=Ú!^Ÿy€g§êä&*T qY~ Îè¥Ò¿s>×\ט"L|l—=ëcƒ·é!pr{¢D*¹´MÕ·eYl­Å”ƒÐÑá ÷ÐF\ØßM/ÍËüŠ¢!fÝVÁi‹ºpûyÝ2š¼D"‘ü†Š/è.;šbaOÍ qâHP¨¡+sæ]HEe™&ùÈîMõ3ÉnÇn·AåfNS”$ht¼ó*Tˆ„À^ˆ¢€CÁîùÕäЄŽÃ²ßÎ2Vûâ™øjâ‹K™ëKà›—Û“ƒ N;¬\Å¢E<›€®Æ”b Y±ÿëjÌl:Z—ºÈ¡‚PcÊrÔQ͘ç+û@K¨Ž€¢]!f2mþ!~¿Xd¦q~É|?ÈFaÃ* £š ޤ<ó»¾È™[kÐZµa܇oÇá°0ã»pz›;Qúì`Õ—çòÆí›é \Ën·E‹¶ç³`^"ÿèù"Ãêê~öV£˜ixR~QT¢Á a@Álô­W§òÍ-èq!-ã;Õ{R4lÓïóàhÜ =Ü™\’Èë[>:›¯ÿ¹éD›+?">¸¥8ÛUz}J‹ ñóÝĆúÜ£¢%:Ž\4šKC  {T šSô×ñ¼›5žÞ_¿‰ye{ž[¿¥õ¹œöaŎfù¬((º»ÏXˆh4vÛmg¶²"áX_Uªíp9ab³ÇDDˆˆ š UUFa ÐTEGÑ„e€Ðmš‡·²§fc¢ ë(šÛ1®û ‰¤(¿š¦ár¹¨©©¡¬¬Œììl4MCýÙ²e:/ÛÊ5S+)èìâŒSã îÖñ|ûp7†50( hø\š‚QèýçnÔ> ïõ_È…ÉL|%M …ì #ß°e­IÜe ,­nV`ª –i’ض{Bñ?³™w–ðÐÇ9»‘¼Ù‰Dò[L£>'ý_º5%Œ…põW´åþý UÔP“4€ÂBŒ°ÊŠýÆÆÊ›êߨ*þ›X†}ÔøÂüá*¢‚à¹Ïödò]Ð`° *÷0ó<ìX½‰³íÔ´ôÑ·dçØ8Ø(‘ûú§Q²¦˜o·8é˜RÆPc²ÝûÖ–±=bÁ&{¯Í¥|Õ~¾^[ƒ’äfDß&äćY7ÕËžø26ìœ}n{ÚTÖ°nÛ^žúFcp·&t ïá™Ù~tÅÉÀ¾¹tN×ÿ8ì‡>^Hà)«4³Ø®ÌàÁ]Y,¹‡Gt%fòYÆhÔ†@¤´–›¾|Ž›ˆbyÃpþYlºòÜØÄÞˆ`Ô˜?«nH>V[zoò3U,#|DöÍH Ϫ¥à\FshË_MØY@»3žD÷bwNc\!†Öš–7® ªf¨Ky˜þý-æ÷õœ8énŒšÖíkYÅø#h7Ìèºï:ÌP®YƘ!eÉzçÖˆøÁlHJ¾¢`Õz‰ìÜC æBIÅÓ»;—oηø«Ó yÄ쪉(]ÄÁ…•(jñ=OÁbâ[<@)è)mHêßsãB*·xQ¸{ô!!ÛAdK †¹‘ÚM>l-HîÒ’ðúåÔîÞ‹•Ø—ìSr mXKíÆð¤àéÙ»-z‚¦“HN ~•ÝÅòåËÙ¼y3š¦át:±Ûílذݻwÿ¬¬kx.³†.eç6m\Ü{Z2ß^D÷aË)l=·W°aá˜zˆI/¢[ïµ|˜k§h@<Éx…©$‹éª 龜î§Îä`Ç[ÔVG …c3‚hÀ ‚JñÌt"Ëi|f …éòFK$Éo«‡×ói5Tc&F˜ªŠ ***¨ñ…ë•7B>*êÎU5Å Þ`íëY„ §¦ ºÃbõ÷˜¿+‚Ý®¢ja MAÕŠª.®dáR³œ_€KAœÆËÍel±I¢K£º¸Š?HoO|$ÈKËÀåíæ³6ê U©ä‘¿$¯aÓ4]%É[Ũ…5´Èp’è¯bÜödHì°/L¸4tŒ«²E¸ÒÀáªá2?áÊaC`FL¾X^àppM˜¨Ñ`˜ð!¬lUÓúy݇=Fñ=*ûf¸Œˆ¿œHØ‹ !#@Ä_J€| ‹B4"ЬŒ•õWcšÂðõ—ñ—ŸPŠïQøèƤˆ€é­Ü @°&–Ö(Zû¬i`Š/€nÃÚ»œŠ/gcéñ˜Å›©ž¸ ËfCuÇaKMÁ‘XAÙ+›À,aϲé hþbj÷ ïXAe¥‚ž‡¹g%þÅáÀ–œ‚#5BåËˈ&Ùýø5‹KÐݾ ËñQlŠª¢è:æ¾büs«Ð²ÓQ£ÕøVnÆTu9ÄH$¿çãÿk 2EQPUU±, !-[¶ SUHL²‚Çdc”óº2¾_„¢àIµ¡ƒ^)BÔ™™t¼¢3…šŠN_¦ 0ˆ °'ÚðÈPщD"9ª ûËè×(ƒê«Z‚ËúþV–ÀæPQ‹‚ü|ÎnmãÊ©”ÏÉã¬Öv®–Íò÷gsÁäýä/·ð…9¥O[.:=&é¹\2¢< Ë?ŸËùõÊ´cô°|2â[rÃðÖ¤ˆ|‚÷®¢"¾ ­šärψfà­ à™=<Љ)µÇÕêÅ’40%Ù‘{>ù`b„ܺkð xBñàhviûÃÞ•˜6“Hm;DùöŽûÍBµµ ')Ǽ%ŠEÓûÏBS<k«ð}¸‹¸GÿDjO8L´…½ï|ŒÍ£-+$Ë>EÍÇݹý2ðªßᯪ&¡]gR›‘Õ½Þ/ÇR<}-¶U.,¿W¡xºµ%æ?!‘Hþpå×n·ÿdÎðÿß8ÖSôŸ}g#=îØ# ¶crû©Gýóö¸£çÒì$sV³õ7Vuµn+[%1U:úJ$‰äßÎÁ®QlBœþ "&ý)bš&!CÅŒXD “`ÄD ”ÔxîºsÏ]Ñ‚¢»ª±Y&**še_ ~V¦ÍŠ „†aD!ja³ LË"°Ç@8T”}pÇ+#yÚ,åk&²lh_¦_œó–4P8Œ)oÏ ††êp£:mXá(ºÈÄ~`2kt¡hî}èU‹ØxÎ6ŒZ‹´g^"ßÜÈž1÷<†‚=h7ïO„_x“ín$÷êÑl¡”SMÄáßÊö¡S¦‹ ¯˜Á(Eá cÖˆ˜íeJ:i7ÝMÓ‹»£„ªïEXÑÿ pžD"ùM•_‰D"‘Hþ·”_ Søºñ^²FM EaÞ@,àM8`Š , 0 “@À$bZti—ÃÂçWÐcÂ2¢èؽ ïÜ’M0¥ç5-ŠÚå°¸^™¶¼wG<~¿qdoÇïâ·%1ºñRo¨âµ‹óXýÔ2fGZA>£ÚÄ7À|PɉŒ‚j÷S3í+*v%£¢’:âf´|‹¤ÜÇØpî?¡G.¶hS¥’ƒ¿K@€Ò¤ˆ¤¶9„W}Iñï¡fرuŠ=·)Φס´OÃò'ª€Œ êÒ!‰H3b`KO%ôñ“¬‹^Oá™]ð?ÿ)&Œˆ(8»žNÎè´º<à‰äwyúů°Í‰D"GòüGÌzLÓîŒ_0* ™”—GÀ©“¬¨hn+d!t AÔ›]A˜†©`³+ *1¨ôX(Ĺí¸`„LT›ۼюWFñ ì®ØöN4b¢;l(D8Tm‘è±££TE-„¦‘ž`‹EŠþwDýPx´º€PÉ(ZÒI´†ÂæŠןÂë·•|òø;ù‚&7•Æe§%3² ÒN¢]À€ ]0Üio>Mn¼ç—U´Ùˆ®YLõL…ÄÚ¢E´7BÕAÀåD*¸u„×i˜ ÙÑã`˜¾âò ;5ˆúˆz pØÐÐQÜ:"l€ªÆ¢=&(Š®`½˜–{‚ aøÃ€Šêr£Æ<þþ-µ‘0÷víà …Er “üO‰„ظ±›ÍN»v?` )//'99ù_ºœX–uÄe÷Wi¦o½õyyyGp:8N–/_Î]wÝu¸yЧnbðÈ=´¸§ß<“ÄçW"‘H$ÿe¥@,Ë:©ú{dð {Aû…#¢ˆh,MQ@ ª DcmÙ Ó“@UHqþò@W3§Œ]S .Å“MU (@QÈp‘è i‡'Á¡À/Kõs8ŸŒ° œ<  °B ÉUã·pÙÍ“HùµÕ¥‰òYp2¥Ó bV@u8„[ÿ…2`:ãµr¢ÙtTËDø}GÒ).@±ÇΉ¥,ÒUô Š³î»¬ ÂK¥¸l±<ØDÁ‰-™"±w D ª€bCÑ |¾hL9®kKX¡X§~Þh„ •ƒœDò+ùUÊo§NÈÌÌDQ"‘ÉÉÉØívªªªŽ)¥Qp^SþÒÂÇ gòq`î}‡Xת”7ßR8õÁŒ=3ðóŘ-<±2Jû!Y¼þ`cÌ¥t—+jñîÂtSW7‰Í_íeg œ{Þ4èx^6oü9kë>–.v2ðò4j7ïeùR.OCƺ’H$'3‰‰‰(ŠrRõùˆ…Ò©Ï~©–‰M°§ÞÊIûB˜¨¶,Þº½.ûÉ#óQSÐ<'&ç'œ\ʯ äÕ¶Œ?óB\ú/Ÿõ)š†¢ˆ˜'djݨeÒ&Y¦3‘H~Wå·qãÆäåå°sçNRSSIMMýéŒ?*ˆEÀ7XÿùfÔÙCY;êW·_ÏÞ3ûRüÈztoɪg|?ë úÞ\y¥Ÿww£SÂ>žè°‚¬µmÙòÅfÔYõëV.ÙËÌüÖ¬ŸçäõëVóí² Î°jؼÌäÔËÓªfó2‹¾Rù•H$'9NçIl{ÓøÔ“¶ëš«óIÛ÷¡]NÚ¾÷>‰c}žÓLº2I$’ϯò ;hÒÁ IDATQ…ªª*–.]ÊîÝ»Y²d ápøßî*Xj"§7â2}`WU„[êô<ÓƒÍîæÜ!$#üðXSŠÀF#zÞìg¯¥ èÇÔ)Ø(š“þ=] Å1hh~Ó@ÕTlvÐí.›‚"ï¯D"‘H$‰D"‘H~­ò«iÉÉÉddd‡éÒ¥ ‡ã8ʯJœ¦ ; ¦E$¦ ¬•6K}¬ÙóQÙ¹» 4A«KëLOÊ™ð¶JŠ*0cê† ,A¤ÎÉ#Âˆâ ÆÎûw×0SQ䮯D"‘H$‰D"‘H€_iö¼xñb²³³QÇCII %%%ìß¿ÿ˜RQÖ¾¼•‡öÖòâ9ÛX5!w’~D˶¹u"BgÌ mxüôEhk£´<#‹?èÌä{—R˜:‹ FˆÏ–A¼Ì÷S7NG4—†­ÎÇCµkذH.jơף¥î à:7O$i€Ìö+‘H$¿+BUE9a5‰¬T÷ÿ¹™hð åÕ p‘“xäxÍýøq’™J½Ôá–Ã]÷¾·ðU›ÓEZrbƒ¼T‘@%UµQªî!#-ù!j UQQlœ’M©(¯!b€;9™Dçÿ‚Wf„Š’ B(äädÅ,­ÌjJJC( $egá:\²º‚² ARr:qÎ4q=ù<¯¦o@`w¥’šd¯wÎ0ºVWKTSr ˆ¢8ÈÈN¡ÁÇ`ª+« E-„¥‘–J¼½þ°B~ʪªÑ]éÇôý8²Ñû^ÿùM --þèý„ NÇOiˆŠò*"Q OrZ}y6Úã¸kM5zbÒì ¯ÕˆCæó•Hþ€w›Dr’QRR)æÎÝ(/„DrB¥KÄÃ**‹ÿA;œæû ½õ÷,ó !„/»GômÜSôm×[ô}f^¬`Í.ñÅ'O‹ó‹®ëëêú÷/7 ÏE}ˆ½û‰¯fäµzåbDnÇ!¢_ï®âü+?5¢F||åù¢k¯>bЙ½…Äw¦g>&†œÚ^ôîÕY ?ãN±ºäD—CLsµ\ÔOtï(y½B!IJ±ýE«nýEßâ‚ >–B!nîÓKôìÒKô½êu±%t‚uõ8òYÿôqÕ€\ѽOÑ»÷-â³=!„{—.®9õlñÈ÷›Ž”ýñá>¢uϾ¢_›¾¢ÿ3³|×+æÜ( ;å‹þýû‰®G‰w—þäe±E¼~U_Ñ«KOÑ«ÏÍâ‹b!„°~"•B!f5À¾×{~¯ø@8r&(Þ’%þôÌÌŸÕÙôÍâ´>íEŸ.}D¿«^ƒBË'MKœ“ÓCL6Ž÷M;Äé ®Ÿ“ßÞñâòij³Ëä€#‘üÂá Xµj‡X¿~ïqÏQ\\,¼^¯¨­­=î_uuõ‘åš“D"‘HŽàÈèÆ£lá½ôv@ùü—¹àô®uíÆ]¯~‰x·mbÂ}÷rÎyxÁu¬òý´• .|ª”•sf±`ïËìv:PÁÏ•ðÁî…Ì]?Þ«?e€¦`³9‰OL8²c¢&µçoŸïgé¼Y|p÷iŒ›·ªA^«¼™Ì]=…9ó—ñÕ{—âÁÃ¥ï}Ųó˜ñý \wÓD†«`o}3“f®cþ‚•ôl‘ÀÒâÒ\JÖ1ml ¦.Ãâ5[8tã”9C¾bó’ÙÌ]4‹57&Ž_KŸ±ß²pùîî\ìå;O¬®*?—ÏcÑ’ ùÛ§ûX“³–õäƒGz5È«T¾£”fÎ4tEá³MÇž 1ã¶yt½¨ÉÙ)h' 8q°Ç(®éžy‚ËG'nù¬†B»†¢œÇy• ä´Jgõ»× ÜÀƒßåV>Ùq±ÍãlXáЉÕÕ„ŸËç±Ä%æ™ûüõ”ITvj@NÇ‘ÜvawôõâhÛ3;6CZ÷=Z%ánà]w§6â½ËZàtØ8õòG)ûɤ.¶°Å5À—M¾u?­¸µžlÜOвö½Þó»9vìÐôø¡Ýtî9¿9ñöŸ:Îéä4ÏŽ¹ÓU­å›ê½¸Ó'E.çÊþ™#Çû&[~[ÎÛncÛ²o™<û,.œŒª:Ø7éïL[ÖÉËWñÜEøøš©‘DòßW~£•U|õe)¥QX\QAqÙ¯QeƒÌ¸{{Í/1k™¿¬VÞ‰D"ùÃQа{Â×\zãÜ8æ>>Ÿ³ SZжí%8 uÿþ4j¼­.µ]}ÖMz‰Á NcÃUM€Gc8è¬#É5ÃD̟μ ™½¾”9§ïç™[Ção€W骷"TŽ!ö2Ø}ì®;^³z*“Ð7ëhá¬sá}œ½l<¯OÛqb‹Gx%[×›u!þÉÔ‡ÇPrX-¾úÄί(y/kp¡£¢ÖÅÔbΟ'b‡.Ÿõt›2þùæ_ù1ãþÖçhêÇ`(zŒŒÇð­ø˜s¾0™v÷膯÷w~ˆ5; Bá(g;?«¾Ü %æ«(*ªªã4·üKÙhh}¯÷üžý(µÕÓÈ|®”v[?æÉ·æ1åÃ7XSyœŠÞ5Üôoé;äVze ­ü—Bbò{8û¾̸äE¸÷\’ »•úí“kWiÕ«#i½gP”#Dò_W~«¶îç“[Wòࢠ@°æí,ØðkVkãñQ;šþš_¢äÍOÊ;"‘H$86v×pRÉ_fóð?'1mò\ÆœÛ_8   bÑpÓP–ZnúçÃx%<ˆ•OUw¤9]£Ï2€}|òjÚzz2Æ +×nňYæbQÄOžÃdÀÉTì[Á{+´ðjf+“ç±0—7´¾×~°AmR¦_Ó—² ‰MWPu»¬-ïqÁûbjìžÏ¹ð݉\9æAn(ª/ËÉnÉÿ"– ¦ˆ;Ÿ~“ãÞ°… ¤øB„¿^»â[7±~Ak\.9I$¿+ÇsÞ·`£øìÞâÊÎóÅ!Äü;—‹¯„¨(—š%’›Ï…ƒ–ˆeÕBˆÅËDÓWŽFïøðYbBM…x¿p±Ø(„‘ƒâÑSç{þL}–xw}HˆòýâOgŠ”æsDûAKÅê ›ßX(`ª`Ô*±Þ°Déäå¢Gã9“7C<½Ä/„ðŠ7Ú,е)jÄëm‰mBˆ­ã7ŠÞ_ pÏw¼V*ÖÏ\!âóg ‡gš¸ŠWz‰KdÀ+‰äWðÄ©@\õÚR!„•«žEÍTáèÐF êÿŒ˜¹²Z”/ž$Þ¹c¶ˆ!ª·Ìï¾ú‰¨¬×Ê*Ñ„-%C¤xâDó.Äš€BÌý@¨´÷|·'VtÏdÑ»0[8…‰Z"ºw’8·5Âî´‰¶ÝÛ̆y­ì°ÅÅ è+æǶùHäù¦^¹­þ,Zgj®g‰óïš(þF¦¥c¯h.¡‚øjkìØœGŠ6§°+íă_ïª+¹Ezr)¶Œ r˦0ø-ì~÷4¾=”Kc=Þø6VôÀ|.=§ C.û”Cuµ«lgåò=$feQ½x¾´ ѯ֢qcØn4"5уËiÇÿ½óªh÷}¶$›M#@€Ð[h¡×(ŠÒU¤)Mº‚T•TE¤)  "ŠJ/JUªôjè)$$!=ÙM¶ïüþØúù{¿÷5ñ›ûºrewΜÙyfžóÌ<Óq+;ðKj(Uì—Èh8Eßw~À+$_½•ª´ë‰ w½Õ lìù3-$|û°ì*4Z7<<<ñ-ëÆí/÷qô\jéµý,Œ=õ0kV-ÄìY‰¨}+˜u4€“ß & \Vœ¼ß÷1òÓÌ]8ƒ‚¨`‰â…Y›JM¬}­7³7®"ÛñÐó=¿Û ðáÜP?N7~!W džÏà¢W%BRùâù•¤—Ù²"òþØ—ìêojÝuè=¼ðu²ÜZb<‹ÆÏ8:‹û¢¨äifáª5Ë‚ìØ£Ø‡OpY¢ö­dæá{ -6‰•û³‰‰=æpøz¶lr$’¿¿4󛜜L^^BT*øøøPÇÝGÅÏbH ñ祚:Àή™×i7úYL™VÒMwo AÞjN°9IËqàP4¨HOµb¶ƒ—_O= ^ÐågÔIb¢‚oyw¼p˜8±s/Càá«%ÀÓÕ«È˲‘n: eýÕ²¦%‰äOqRÖ·=={¿L¹Ì¼ýüÁËÂN/óÁÅÛÔí<Š-ßÏâÔ²á¬ú)ó:`K:Ìì«é7q9µ ¦gyÛf4Z€úœ|Fh™½§_®Œp:ÝÖ^t.ßšo·lgqÿØòï.Ú’I³[âp8Ø£Šg›ÆY"@õ~Z:¾Ø›Nå³Ñ{ûQ|øÛ‹,_û î€ÛÐA ú©‡iÕ¬£^®‡P{ Ó”v=)K¯7'º>îx‹ÈÝßQ•ëŒüµ°ìÙmíIçÖ]Ѱ'²,CðT÷RvÖB¹Gõ³07/_B4ý˜ kHÞ |ýóV²Û£åð¥l5.â’—ý¾¶ðÒÂopÓ¹‡®½ò3f ¤/8÷u=Ò®¤Ë½ïqءȔ¦.˜×gÿH@Üh,6@[Œnì\Ie2Ø·ßç¾éO3Ú‘9c=é@Àß,›-në/^¦ÿ›!ÄÙ¼iÚw MnlâÄ’Ïyº¨«ÌÖc~ôxk2jé _ùG"¯Ñæ©îÌ\Ñ€´æëØ|$ "‚ ‘á1‚¦hNçDàyþ(]ŸƒP•HåýA}˜¹ö8Õšòã®c´ ‘-‘DRbœß6mÚP­Z5îÝ»‡··7z½ž””Bã¡ZO¦·,Ãâ[F¨©ƒ¼dVy³®6˜/Æðõâ,öš<ýá­÷Rßp‡wçÞ⌱ µƒx®Ÿ…ÕËsI½i¡âÓåøfºžA LÊi†yñ ê­×ÑØ7—Ѐ ¬XU…£SN±Ý©pò– Ï©°lu ªî0æóD2bu¨U¹Ìø©-=deK$ÉŸ¸s$dÏ¡×=(I©|yü<7ÂÙ:½ùvBeή\ÂÜ—ùô‰ÜXúÆŽãH9ŠrºÉ…_u¾ãkfÕÇ_“ýú\àN̓HžjÃ銫U‚Ðk³» €é&c†#½Þ8æö­X"K˯\;>þ ŸÎðÌð»|0Nw£î™¿9:Éçmbû÷öpf.ÿœ'k»ÿÆJv2ñ>º¨Vœ…e/¨ß|'jÃû8ó¦P˧”ɨ¨ÑRT?Š€*ß#´:Õ¸«.±= ðõ@ÅýBPå;¾¹y5¿F„óa‰ÜÁÉß²¿ÁyÞiu“ÔáUŒÊªðÅÏS]¤®‹ê†ðgØžÆôoÑš8§? g-`ìß-žå.î¹ÍÈSðY3Ÿä"3¼‰¬Zt†—FO{è&P¹£vZ=jT(E´"‘ +óÌ„”¥9°":Îo™ARÆxž ‹$]­ãÊÆ¹$UŸ°µ›;øhú,ª­˜FYÙI$ÿ1þÒâ+777, iii$''sùòe—¿«-ºg!0‡Ë{ˆ^vj +V¾œÇgí¨€+Û“Xòk.: gùòl\ÝŒ¯ç‡psc‘§Ý9x° ?LÅðrÃd:œÐ’u¨ ¶E0Ú7†5z…pxW+–uÓp1ÎBÆõ8ömÕ2ççÆìÚÒ„š*YщDòç¨4Ÿc;÷p*ò;v?Gïåèù{¨Ö¿C2îØ:Ü Ëhs’دöcÿ¾“l¯ãÀ¹“ÿmÙ;ù >>ƒg~ßâxHö‚ú½ËWS³i3¹F©•õý¼ïÖ8œ qiµ»›µÓ^àî*Š‚J]tŽáú†É¼Îï#Ÿ)ÙçÆ1oÁ"¾z5‚6Íz3iÂŒ^væ1î¿‚FýºaŒ¤Õò,~:uŠ£gvó|ò@~Nú›å;3™£—0¢CÚ¾•ÂGC‡s<µrÊ\¤"áõ>iƉݩFëæÐiÀéÈ_ n8Ï€ _òÜë ZÅý§Ù–«¥Ñ æÄ¹N³7ƒÁŠ" S{¸+Z?eÛÞÂb’-‘DRbœ_•J…ÝnçâÅ‹ÄÆÆ’žžŽÝnGyøÕE^•˜U7‹å—ͬôtjï ÂÎíÖž,ø®![W‡sþê³,îç!OP/è~ƒéÆ„™í¹u>˜·ü÷ÑnbVT¨U *)Õ,Ò×PaɧÐPÖ×ÕÔxi±ÚlÔìÚŽÔ¸Ú$÷9NH›KÜÌ“-‘H$ŽSvæƒýxêò 5Åá‘W‘þCó|5+¿_B2DË‘™ý˜=êžr{4¥†jù-¸‹:“’’„3¤üTæ¶ ®n¥¿±-Ï{N+S<)Äßs-,½qî{¾Xš,C6gNÞÂî¬^<ŒbÞG»HÏÌ"'~1éñ¦¯”ŸÊ¼ÃvÄÕ-ô7´¦£VEëòÇØðÓVŒ–$Žís#н|©×”ܘìðHgðSòCÂRHöûõ ]Ð/ÖÓ¨4 ê(ªŸÎ‡¦C+cº<‡+É6~ݹSŸ$ö â“SI¹{ƒÕ÷ê‚r4êÌÃcHLÀì,Ár{Vc͆\>v-ßÌÿêô—›=âÔYl÷HÌÈ 1Þ„Åê(^7¼%7ý›vïcùxw†Ïú†Öù+•Wo{“æcÆà›ÕðûX” s€ž¬xŠm;Å–|…9—M”¯^ ’÷ÑaÜ(žziÏf’–exh•€«1—\ªñaʺbÃh²aq8¨¦Ò£Zø1Ç7üÌ¥“Ýð“+%’ÿ(iÙs\\Õ«W§zõêܼy“ºuë’™™IZÚ£‡YÕTŽV­N1ixš–WL Ð2ë£Xî=ãENä]¬Ï‡ñveAnž;€)‡—Þ V©H/ªâ­²aņ)ÓF6þ¬N»É¤¹‰TÕ§°w]–Ž\5Ø1[\fÆf¶ãT©¹ºî0K¯Ö$¼O5ƧÇ`¶:¹ïW"‘Hþ?š«Ïƒ¾—BÛY«Høm"f‚µ³×ö 0b¢Ãзù´gÍR¯)·£3©Þå3ªZîþ̼Hv’]}ÅÎ5¬éVJM-¤ŸoÌÀwátZ–}0³çS³7Ýëßâ­çZØâ=–/©À©ï§òþîh¼ûˆ±‡òÍ Îßz‘'oͦÇ!'9iÌÛ{‘'J®èjwO¼ÝÁ³bZ´ìDy¯‡"XRY9ó Ö0fæ÷1ºM¹bt£‹bÞ£YÓö|®†—×l§ãßÝ%S4è}\îmÕC1UÉßÎéz'Xö ª[ps6wUT~‹h>æUZ<—ÆKãæÐ³ªég“¨[† 3†³Êh¤ñ £™=y0ÞJQ»êÜÅ«F®¿BHÛ7y=m£Ÿ~¯ðv,þº/^²!’Hþ³¿xÜÛ€‹!&&N‡¢(¨ÕjBÌf3U«>ܲrzy*¦v<vÆÖFÔîTö%:Á¡¦{¿`ª¨ÌD':©Tà 7œ$žOã×ÓŒjÚ>[–&Á¢v˜¨Þ­ îä±íËtb4 -Ÿ«@Ërr! kˆ7ƒ4dßÉ"ÃÛ›JÎl6oÎ%iÀ‹uåK’$HJÊäÖ­d""êÊÂH$‰D"‘HJ(V«™¨¨D´Z7êÕ{ô “ÉDZZ~~~<έu:¨T*œNç_s~%éüJ$‰D"‘H$’ÒèüÊ£ $‰D"‘H$‰DòG:¿‰D"‘H$‰D"ù°~î% IDATÇó—¼Z¹r%U«Vu­—VEA«ÕrùòeF•ËÆÅ/.Ñi| A=ªqlK-¹y_"‘H$‰D"‘H$¥Çù-W®îî®S…àééI|||¡XZŽ«ÅìÏ-<»¥^ظ½Ý@RP‡Ž(ÔíV–ëxV"7ßcgœƒ õ|y¹£ân2‹6XpÚƒ&U¡Vno7>t¯Ž”óÙdØlúÝA¥¦¾¼Ü¾ ÎÔ,âbµÔjî‰9%‹;qZj4÷”g½‡­å~ Æ+éS¯65jâ^áøæ~ßµ#÷ú;^êÚõ1aÑšiÏwÍkIãÆ-hÚ¤>Ï XE6Ù¬ðõ›4¥EË64kÝ“9pjñ[D4hDó–­hÞª1svÞ(õš’|x.aaµ¨YëÓ¢ªGsÌz¿Ð”&M›R¿Î |uì^©”÷èW_r§¸ ¹7ùøõzÔoИîƒ^çnáKçö³/*á˧4`‰ÝÍwï¯$«˜kçV½GDÝ0ºMŸéýݾÛUòžßþ+HòNŒ¤vÝÆ4¬_ŸEGâÿgúð[÷°]ý>¾°]ÁÖë¹H$’îüj4 7oÞäÎ;œ8q»ÝŽZýGó« BëÉÀ®e4,ŒµËã\®¹6+Þ®ÊÐUY4©>eÓSY4¸ó†–eh¿&4 ã"jTî…îm›Ça@­q#¢KE^é_É}<‰O· qÓ Ó«Q»½‡ EÖ¯D"‘ü²‰Ýq‡‡7b¢~äç¯ ä¥çÒ“ïŸÀ½´Œ‚;yfŒ9iÄÆdà,”ÒÝ;·©Ò`§/_fdÛ(ÞX},Ÿù#v_çÖº4»Ã9òSjÌÝ™VÐ(]©À[ vpéò^jâÇCÉ%®´ŒÙ—øxû)Ξ;ÏúåýðÅ—~_ýÈ‘ƒ‡9qrݯvÁ×ZŒ˜Éö#G8r⦄õ¥²»géVÛ.^âÍî¨Ü\ãCÅñ¯Çœè½„öû˜sgÏr6r=ÃZ–-]²ÞÙE›z>ôžs«Ø˜ô +M»-ãÂ¥H>zª &`ÿ'íñj:€=ÑöBžâ£åS †9˜?òö¨.`±½’xð{vî®Áö«QÌëZ•¯Æœö3º8ݲ¯ýÊ’•³8jÊ,yÏïׯP‡"Ÿd_T$/®äX—¥ÄüôáQ[wµX»zìð¦võK#yéy._8/“„øx’S3d$‘”4çW­V£×ë1 ¤¥¥ˆF£A¥R=’¬§VáþûÍ…¸ï† pSpªÁ/ÑJJ¦k,Çh•Àÿ\^~< ×.«ð(æÞ‚¼äw³ì ( ‡›Ô€È2sC¥È%ωDò×¼êö@k4s.Ù@ìñlí…¯0^bÙôጛøc‡ `Ó sºÕ¡çÔéô|î+ wi+ÔéÈK¯¶CT¯íO]µ;°“S>«éT ÃÇk9Ðx2"å$½j±äßß°Ã3´¨æä“¿æÒÓá4 (yÎoª‰5˾eÞ§óÉñtm r÷ö¡Œž¬uÇÉûvutžøúzãŸL|õ²<Ù¡BéV“¤;œïØœP€¦£XýøzT©U\Ü·†/.â×ó×qS—²aéÐ.»’çOec*ær@¥ztìÖ€Mß-c!˜ú£Ãxúíƒ$nzŸêÞ…îjòhù”h¬)¬š;€f_l¤sE+vGÑË>•¨ìŸÉw_-â×›<ñtUH‹%ò!ݸ}ž%»7Ó÷½ITó²–Àç× PÓyô@ôW÷2Þ~L :Rõ Ø:Eõ¨] ê&ÛÄÙ¤|»:¬'e$`â‹ýx~À+ íß—;2‘H$%Èù=}ú4QQQ(Š‚N§C­Vsùòebb 9¸µ.šn¦1tb< `N³æ ÌÙV²4Z&?ÈÑ1ghôäQžšp„Z|x—ömÎаÙ>LO7!+Ù)…îͱb,;&‹Ëq¶™ìMüj–åòõÔ‰8Ãs;³ñ°8‹ÌBH$‰äÏpbt dlC=û¿Ê/þãiá—Ùn¯pš¶nMNvÑWî±õ—HW#P…7æ,åÜåw)Ö=5¤ÛJ+í{U›‚º`Q ³Ê­`23- óC3KØxúRû¶ Ó=s‰+­'‡~Cë ~ÚóLïyâCc»ÊʳÇéÛ¸A‘ø{Œ®foÊ—v5 Ê[7ÆQµY Z·nÌgׂð|L=ú7™È°gÚâ¡7³÷£5üv¥4.õ´`ü#ÍnG«ÓQN¥ÇïlfAß#=+ûC‘bõ¼$âÈaÙömèûíãÙ:fÔz/|Ý‹Fñð/_uîn^X”4 U| p0oÖ!T´ÞcðO'7q-Còp÷ö/Ñϯ nüi¹;Œ¿¢¶®ö£vUÈØ†:ö/Y`W…J˹»ýsîÐv­z—;Ç?"Iv^%’ÿ(éÀ«.]ºœò|ÿEÁBêÔ©S(–šj=êe®‡ÓîúþFÚù^¶–_? P5ªÅ¼ŸíäX@«Sãé®Pñ£v<™íÄŠ‚Ÿ¯«KôFjÑ{€Ï[ Ô®Ðð¡i¨¨@ñaé¶ös/5ž²n%‰ä/"°ç9©Øº !ý¯Ó>&”äC6Üõžœ^:……Ñ=Ø¿g&1ÛV³ùWWï/À£6Uôŧf»þ#Mçeq}åäü-*[ê}t»mþ7O½».ßv;1YU™0r W–Ìa_l<-j†• ²²Q¥Å0FµBÚ®aÜ¢õ€›ÖfDã*…f9­XåŸh q¤WM S,ïìßÇä…3l½qæðÞ3èqò þÿM‰=¾–õÇãH‹ÜJ‹³Ç]³þÔcSŽn\Ä‘ ™x¸{LÇ‹*—.As¢YûËfÖÜË©¯åÝ~¨äõ ëwá;殸FݰP2.§S©ípü€„Ók˜ûÃ&b¯à¡þ€—›=T>5™Ó¯yɕۣó6\a€ù «Ö~KÏ!O‰Ò84Œ53§2ýj=<â/2†`5Ü9¾–µùºÑüäq<õpþz¢ËœçéCÿfÇ·˜ç·úXê’Ä»ï|H@Åšh¬Dfuf± Œ»‡ø}UÄOsчiƒ;Q&jÕz¾YÈÖ=Á‹Z£S ÛU#9x±«¹f+ª…³súG|UƒÜ‹ûðh0‹`éøJ$ÿQÔ3f̘!‹Aò £ÑLF†‘Ê•ƒdaH$E{¼„4¥Bÿü‘Q>U‚©P3ˆÐêu©h¼E|†Bí®ýxµMe<ƒõU«BHÅt»ÑN-õÊ7Å[¨Ô”¯Lµ*!ÔnÞ…¼¸ëdµgÑÈf.1/™«©š4 ÃÍ«-ëV¢V°™™˜~D¼Ò“öa~%¬¬ÊPÞ+»F7·F¼1ë)<ò’pTMç*…ÖˆZ2¸ÐAõþ9£³†{7¹ŸKãÁóx±j¾¬Ôcåý4¤dea)±õø'Ør¸vã5#"ð÷ð¦vjøº=”÷÷¯ˆ§-™t“šÊͺӿo-T@vÒ-²üj^É õ+ïùPù”§eÝRQN›߀êøú–G[hKW±>5jiHMÎ"8¬}†Gàä§÷‹S[ž²¡ùx–°ç÷IÜð¦eE;ãóÐh«0`ÎËTtW¡.S“† [V. }¨—Ú°rEm]ª!…f—б«•ƒ©P#ÿªõiP×»ñ©”kö,C‡¶Å]6DIÑþ„ÃNjªµZMÙ²>\·ÛíäååáááñØ4„(Šâú/„Æp’aÃ`¨´j‚Ëj:<*‹÷†^"|zkzWýŸM'»Âö_|xå“Jt’À‰ÑèÄËKä°²ÕuÚœhN«¨Ìl™|‚S=Zòq©9’’’2¹u+™ˆˆº²0$‰D"‘H$’ŠÕj&**­Özõ*>rÝd2‘––†ŸŸʵN§³`Ën±ž«!&–ƒcˆ+㯇™ž#jójGÿp\M> ç_™8‡M<æõC©Œ›Í·ß´|vâa)шiX3>®#_‰D"‘H$‰D"ù¿N±§=Ûíjº«Î©mÙ³ª6–ëIܵ8‰üé2OÎà›w£8›ÿ–ö#KS?ⵚå6ÙŒy†z-óú’Ô*E¥Â6ŽŽÍYz&›'Æpûª3¿¨Ý÷«ï¥òûøÄJ',?äÜNdó´ tïw‚'Eq.÷Qß}ƒ¾]bYøZk ŽÍKad“ãÔk}‚Ñë3 '“ó[®Ðû•Óô{›[WâèÙý$Ÿ8ÉÄå)8Ct"[Þ¿@÷þ®ß:›+¤ÆH$‰D"‘H$É?ÅùU© +ÕLT:\;–„ê®îpïh»öº³`MC¦¾¨â·±w™®ÉAÿ­7V»s:ÎÁÆ·ÎSö™š\9Ù„±Ñ,ÞeBç®à:ÅÄÅ­™¸^Za"rCåëúÑæ)_­oÄ `-6¥bÅÁÚ (ûLM¢òÓY²Ë Ù©>ïÎÒZñy·6˜@Ñç™ùT6c74dýU¸>ù1˜XÚ,Š÷·æÊášÔÍË£±Û²>«kæW£F½J,\Ü€ßÖ `Ï Öž·!2S9|IÇ’û¿õAB±/¹—H$‰D"‘H$IɦØeÏ78¿ïOdaŒ×°ít=Þâ ´†qúýøÔ=Eß„2|Ú® cæ×%sêqTA{ù ¥<“zxbq¨ðð(ÇÓ“rðó=€ÛÇL U“MÏÖ¡¯}Œ/’ •wÃŒ–·‡‘5õ8J~:oõðÄìT¡÷re[Q«ððP?äVgñ¿,Ô÷?€GÅý´gÆ30˜½§Céç½·àC¼Ö^§yp¯Ö›¯V`R›}è"³ñž†ºîàT«ñð~ð[zµÔ‰DòGpì£!¸+]óÏ^øÿãó—ÔzoÔJ+všóÍ;h©(h”:ŒÛí sXÈ̾ÁÜþc‰ÊfO;Åðö Z75¶æDbÉ,©åC·@|¼4Ôoû)I@üO-PÔÞè݆Í=Z7uï4EAéü:‘™ÎR®#gyZQÐûùQ&À‹Šš™_ÇßMjƒJQP^_å °^eFó0­BûWÞ'¹´í*F?‹’æ7º¨R¨Ùt—ò‰Þ<Ž:ŠEiÉ @<Ÿ¶­ÆÓ›€²(ŠÂæ´ÒQqÛ¦3±Ç›Ü";çŠêFÅÖܰç±ð‰’*{_TÔòMœëÛÍUÍQ4x(u¿ùf1æñÓšÖDQÒõMäü< ž^Š/SÎdàÌQ$[ÿDöE{zN÷Š·;–+{†Ø·|¶x³bÅM!„HÛ¿<“-V<Ýc¾0‰ï{½*>?'„bñ'³ÄÊó"ãüÊ?)‡[âmz‰Á?}'„1GÆ‹n!ïŠ-Çî !„ˆ<´Q|ôá‡âËïÖ‰lÙI$`±˜Ddämqùr|±×óòòÄ;w„Á`999ÅþeeeüWI÷_"‘H$÷I¸}‘J–Ê´¼‚œ×>%PﲩÛ^\y¬ë¼‹0s߯¹ƒ“Ìz|²i7gÏáµÌk¬Xõ¡+÷~È·½"èãr…ˆë>š£ûq&j¦LapíL >ùŠ«'·Ð¦~ ×BI‹ÑÏ|áÒj!ŵ¼û’8q  ÞØîþÎwÆôx²vÉÙ|—QßþFÕÖ¯¢NºHBR÷²þ\öâu£Ê~åsjž|šÁõƒ‰O2’žTè™ì(^›s–·'ö-¦¾B¸†œPòíØcÊÁ…ƒ\{£Æ²qä`ξ0†Zj#(j"“n šü“† dÜ›/ƒïW¤JïW"ù{œß´ËY>o.s?›Ë§ó~"Êð¸wÜÙöÎG¬?xû^ô ŽýßÉmÒûT)Û•#yü²d1K–.bîœÏøîçíäýÉígVí©Zö¹X8•J£E£­OÍÐXФŠ#M¸>„·±‘eOûèJ,?þädØsÏ礢õ i€ŠŠ4ëx‰”X;?]<‡E_ ܃éêÅþSWJ¡¬Eõ³0:Vã5¬†¢MEÊw“›_N{ì¡ùo³€ÈMóÐΤ†WIïêhg‹çÇw3`ìǬøêg¾Ø~áeWæ?ëëF ”Ý=„'}F^Ï3å›lÖÌ‹³Y@ÆƯÜÎ ¯½M¿Z®ùiû½“¬:”!PM‚Á5wÍhEq÷ÀÃ]yL9<ÀiµàæÝ™>¡ïñNCF“xØØo$»â¤¥pïn Z7ÙI$ÿQŠ[;m¿û«è‹—h9x–X·q…x£yì7ç¡}±Å¹µ[ĉ«)°'Ëò?ˆóçê ÚI—ò¿! j=3]ü´{®hbÊêä?¼fcD›7÷ÈÅórϯÜó+‘÷l|SE¼üs¡ÛU1òƒ·Åá!„3^¼ÛÕMÏø½àò¦>ÝŦ¼âRº-ÂAP³•h×¼±xæÅâ†]qyšhá_O„Wi&žúìXþþ.ôh%¼A?7YœJ"#ê;ѵqѰqCÑz’øõ‚©–V–ÓÄG4hÒD„U~Z,û%G‘+–k#ê6h$Ö‰C'îwíÌÞ+æ·i#ê4ª%ºw›(ÎÅ9K½®œÞ0Cô\ø“°néã‹~eê‹°ÆEÿþ«…UaÚ·Z4nÒR„‡—RÙÒÏcÉé¢å–X6´­¯]_4m1FlJtûì)ѬJ¸¨çßBL»hwÞÝ)ªœ(’J[eçË– ét튗½8Ý(ɲÇ-E,ŽBˆL1?o#Ñ1¢•¨U-TÌ´§ ßä|}Ø$Æ´h*ê×m‡.·íBûíbËáÄ$æäïBˆ<±³ßgâ§=IBd] {¿ šÕo$Z4i,Vï5ʆH"ùïù-Öù=5¿» jqÑœ¿ÅÿʇBbm†©»ÆŠ24Óßé#p‹G·ÅH]ÞÞårI?é#@-‚½”ƒf\BdˆÁ º¾ý›"Côѵÿ{¢yËááWS¬¿áú¤ßæ‹§U^¢\¥T¹†Xe/d|‹rZĺ”û'D C>s™“ þˆæ£¶ §âÞž®tBCDP¥êbc´Æ}àú{v®+¯S‹º>¢l€^Ôè9…ÍlÖ<£0 ";++ßÙ…ÅþÀ9Íy"+Û ìŽ?ׂ2±8R+G]N«0dg £É"!‰ä¿àü»`ínt$>•+œÿfů%~8 Zµ'øíŠBÏѽ¨¢Ò`Œ6 pˆvoo`ÜÚlÒ’sD†ü ^¹€Ñì48(¥§NÜ¥WæM¾Zv¸JÓŽobÿ!Ë–/ Ö[ ö*‰ùk©Ï-ûc§Ïè{í ZàôÞ%|¿r;kbú¿:¡pž&ϾAÞøY¶lµâo3°ÿ«hŸÞŇ  á 9ˆß&‘´míæìäéðÙ´‘¤ï^A¯OŽ èõ¨D_m;KÿW'Ð¥VSkñc—wXºø3ƵWøôÙšA¯d¥üŽÕ+Œ^n…®Lú<Ù‡úA:¹¤@"‘”:Tý#aEA•¿…M£ÕyÙ¹¢Ñ<æ *nz-îžxy{ãåéY°ÇÆÝÛoB‰¨ñôòÂÃ]‡—§÷_(§õðÆÇÛ½{É=šBåî·7>>º"ËE}|¼ññÑ-w|}|pWý3Þ¯ÖhÑ#ŠÆÛ_o4…ÂÜtz||¼K§ìëgq"¨Ôxùøâá^ô¢‡·¾Þ…ö«ÜðÔ”ÆÚVP©óªÚ0‚< IDATÇbd/V7J²ì*·|û¤ qW£õðÄËË _ß|{¤ÆMýÀ)îøúx¡Vý¹”‰›ê!µRØU-^>>xêäzg‰ä¿A±¦È?¨ 999äÝ0-×ɳCµ p¦Û0R›o~^G)Ø•F i€åšxX•¢¸ gÁg' Y­§,,€] ©I$áîî˜sìLØ´àjõ Òd±ygÝzwx$¯eôi,¾œŒ~ïеš.rhäææJgóv‚«5Ä È¶€ÕdÄ Ü½}ÀKåÀ=¨5+¶v¡R“`Ù‡%WÏ« ·òa{O0e˜üu^`¶Ó`ÔF~›U“æ:¸f³  }µßÃ;??Ÿl'µJ"‘H$‰D"‘HJÅ©7î1„úçÖ1kÕ Œ¦D¶ÍÙJ&ýè ¦<3NrÈ(ˆmÇ‚+œÀºÔ'‡Èý§°‘€PœpºâXìŸy¦‚Ïæ\ub({“æûQÓÊ…£óÈŒÇVòC\9& /”K9@…æïr"nék>¦Ë¨ß¡âsŒân¹Ò©eãâ±…˜› òÌV¬@ݽhÁ5®›ÊѧïKÔq¬eÏ…‹€ÀdÍ#+3_B:|Vãɯ)Óìez÷x‘ä_;sÅ–‡-;« ,2N/ ŠR…y§3¤fI$‰D"‘H$I ¢Ø™_ï†#Øò‹‰iŸO¥ÇZpR— ñœUÚ3¬g å bëéüLo ­Ëµ9pb)?_ÌØQüŒš¾jÀƒNÏô&§](àNçp´ Ü]ám+bGÏJ‘À¢±CÞëYp:hÙsAÀ޽Ë)ûÜZøÎe9>3ˆÊuÔ:ž=mçÃÝ;ØÁ×"‘Ec_)H§EÏñxm<ƒGÅ–¨}ƒ!‹ `ÂäOéÐñ3œv'/½žô9’ªUïGèÉ‹G.³uFG>ú,аQ®Î0:hÁÞb0ÃL­¹STŸ—Ú¿D¹ìY"‘H$‰D"‘HJŠBüo&øÍk ùöVEüŒçØ~þ%NÑBûï¤xu^<+x3\V˜äß'))“[·’‰ˆ¨+ C"‘H$‰D")¡X­f¢¢ÑjݨW¯â#×M&iiiøùùñ8·Öét¢R©p:ü¯?0hÁú:Õ(*^zÿ…k²/׎›œL•H$’ÿ<ö<Ò ü¼]6‰\RÒìù{¸UâáíìÙîËKs"(l¦-†8’ÒAàIÕ*ái±ÑÐS¡r9Ü %èÌ5 <½ó˜q•š@V.¸é= )X"‹Êœ“DJ– !œhÜü(_Þ•-•˜„<B+ã­r•arRf«¿ rø–ÎS wEHо‹U£F î>ø¢ÁNlô„Ê›ÊU‚\ûªœF’“Ò1ÛÀ;0ˆ/}©”¸¨~æ1º*¬$ÇÝ%oªU)ª¿v‹µ»ŽÒsü—¼L+~žEòì0g“œ”‰]­BQ)xúúáïíUÇ––†# ÷\”éŠä3›øÄ,„»ª•çÁ1TSf©Ùy R¡hÀÇ?_BVjüØ+Avj*šÀ²xºŒ*†ÌtÔÞèK»)HJ!ÿæcg!rE¡#*â¦÷)0yIéܼ®¥^{Ÿã‡T¸é éT–ʾT þ³iä<Îo4S»·?%¶Ø-œ_™FÅa”:(‘HJiG¿¤YûY”p”*xõëDt¹ÃMñ+ÕŠ‰ÑÁ¸ |ܳ¿ªZãqËD㟶1¯¥7æ“oÒs@$:ÈëûGÞ~r¢Y½ñG¶,aÖ™•ÔrïždúØDjãe·0ìÝíôéèYâÊjåèæÞ|žšÞéUÍâåˆþòe†mÔPVuÿ€i¬ÛÔŸë[>aââØÌe°‡õdÉçc¨§/ÍZÃG}sÅ¿ žYÜÚêÆÏâÞsñÔέÔÌ(‡çè)lÕŒ¸}‹óÙL6-Þº¶¼ÿõ\W(E§>£Ÿ…yTWwЧ£žÃsžfúz=ä˜iüãoÌo©ƒÔ“L˜¼{P{f: ßRR¿ÏèÅ—‘Á,Øò5å 9­é—¶0eü ’Ëx“sßê#X»ã]ÊöŒ«L®Fõ ‚±ÕáÔÒ—¹éÁsñæþhK€lç3zUe-hCD¨‰Œ´z|wf1µ úœ_ÿýp»Ÿ±ÛNñÌ7GYÜËÄôWûü½Š¡oÙšTÝ}™¯:Õ%7~O†NbÀÁ3¼õ¤ìJ$%Çù5¥3xø-"£˜[ûstAm‚ŠqLõZÔKC­ÆÃKý¿0ºi#ê»hRû„ýœßL6Ž½Ç˜íü*èýµÈ?‰DRÒ°ijñvóƼuü"/ô®Æ5Q–a„¢Ò-dØ{+‰ËRh?âmŒïGÎåãœ8âI‡Q uf³0÷.3Â= ~i¬kLJ 2Y}ë•13mÀDÎòMÕZüü H-°‰¿|øC >žpççY¼yü"}:¶.qeU¡~0{ü™ê!‚»®ãÂø@ Ž ¿Áø‡å—ý³Ð›—¬"ùVõ–æNomŸ9áúh\ÊØ9/P—£T8À݇ïϹQͨÝh ¿ü:ðᄜ¹›Jã eK¨ªGõ³H'êa]=y•>ÝøéÒSì:7 q }y&w×Φ‚VOpÙ Œž:T¥Düœ=ÙëÖ…&Ý®‚ MƒR¶ù~8>€¸½ÓØcMÓM¶lXMõQ^¸;]ÏEH·u\˜ðà¹ÈWÜ¿“Gò &³ƒï"wÒÓ½¸ÜiýÚL¶¿ær„×/YIõgê"ô¦?±WNždç §¸î¨‹îæ4}“ZZ×®?†ËöQ9<‚뾦’l†$’ÿ¬Y/.Б”AÏ×/Òåý\8ÖšC} æÄH×#lu€ÝÆí3¹*ªw(½ÌK3oæN¢³}UèQ#0¥ÛHÏ0kÆ\È Ü‹5sÇDŠ©¸5Ú‚´T IYf’- êü÷§Ùó¬Ü‰3ŸlÅVŒH:o5À™c&úމØ;æ‚÷ ?L^š™˜8É™öü,Y‰½c"&ÖŒ=?–,ƒ+,Ý&òóàÀ’k!:Î̽ǃŽc¡¼Ùlî¦<¸ž`Æ„–êï—› -Õ•‡T£+“ÂáÀœm%1ÉDÂ=©§‰ä¿„ӿĻK&Ìþ­±Ы:Ð4D‹|b ‹Wmbó¦/ Üyž5g 8³¹yúÞCvÊšá®™»›—Ù­ J¢¦-Ðñ„>‡D3àY‰î=FÓ²\^=w×{ã£\""¬,/œnÃwÓ[—Ȳʈ»GM] Eáû‹j*Öäü7#Pª½Î+Çã U v ¤G²>óú`߈¶Ä0¿v2cgU‚è{âûsÒHϺGMGÉVð,[UòV]ER[öeD‹²¥KD¯Gõ³ˆ;ô°®Nk ö;äèŸÈßP¶šdÒÊ4à­Ñ½©ê}¿Q²1^ZÃŒ”©Ìz»=åÝÜ;÷p˜åÃ*ñ‹~l[÷%>}gÓ/ÜESüsQ¦È÷h>! ´½t>xj|rì±÷ÞÙ»Š”ÛõhªBÑzþ‰½²£ £o´–ëÇ7³íà‹¼òlTjwâ·}ÂÞ‹-9rý_ oÁêaß’%›!‰ä¿ïüFŽ¢f“¼\[¢‚rmª³þzë,»ñfgÈk7Xs2–y•q°Ÿ¾ÉÌáù¯Ë´¯{˜ïÏ[H;~™/Æ%)L ü7¾¸Éð¡‡xuÖ=WÇaóe>š~›·?¸ÆäYW0<”Ûkôta£o0kwF½Ìél›v‰÷fFó¯Ùx,³XÁÔ@ôžX&L½Í»ÓÎ1ztô#Nd^~ž‡¿DŸw¯pÏdàÛa‡é8úÃÇcÑ‚ÀÈ·õñ¯ïnðê¨S´á 8üöiÞ}ç#Ç] {Ÿ3œHrBn¿L»ÄÔü¼m:e€¤D:v?Ê^«ç­Ë¼9$škdðe•£\Œ¿^¡û+ùÆ%ÆŒ¼È™$È<{…w:âõY7x¹ßaÿ’#5U"‘üwv ™Uwº _<¹€NÍÑZmh[Ö1pì$&NžÎæã± Q¡Vkи¿Â'ò—…¼p®_ ¬8Ð¬Ò pŒyZ°=l õ 8•Âïï2gÂrK`Q ýJà4§aw9Õs 1ùááÃW ¢7pçå·)è>gŸeäü]<Óe<­ƒµÿU9¿p>7>ë@j±àLKÞíØ“¡¯ fÊZÁ÷g Ëõ@˜xþì&–þv»JZŒ~>NWߨ-Þj48¸¯êy&3vQ D΋aè’-ä\9ļ>gýºƒ¬ù=¹Ø¨^ÿéW]«O¾Ëóß(¤n^Éìuiìú~ñyð\ü]—Ï\(÷„È!×f'|ÕªÇäÓÁòÙ_PwvăÕ.h¯œ˜s½é6¹6-EûÎóøäæPˆS;ÐŽëE P¥y=‚"~Ç`’ÍDò_w~3u Ym ]¢¡öp ©  Õ*(5ksø·†Œy:// ÞØ™s ƒVóš°wm36Œõ#ÄŠ›/ P¦bæ¼ßšSýD<éd0hÔ=XìŒvz“­)E,/ž1ðÎÒ¦ìZÓ”‡xSΩâÖök ý&»¹6b/øzå=RŠiHl@^eH¾k!;OáÇå1Ü-jÙù4?Ï~nÁ¯óëœp‹™þÕ¸±£ûyßs‘œC‹ÖSaÈØFìÙÝŠIÚtŽ¡ Ó)ÔêTŸ}¿´ä«î¢îZ¹½ëÃW摘çÊÛ²å‰ä„VåÄêP–¼ò;=—),ÜFc´¨ËhñÁÆì³¦.mÊÞÍ-XÔ[Åî3ÜÜÔThÊ֥ط¸¶ ©H÷W"‘üW|_!p˜sêWùúóI4çÿ±wÞáQ]ÿÝÝìnvÓI#RH%!„@:H¤# " ‚ VDD,¨¨(" Eš*¢H‡Ð„Ð[H¨!¤‘ž¶Ùl»ß Ô×çÓ×à;¿çá ;÷ÌÜ93çÎvϘ(7‚-¼y(ƒ·ø‰Í?îæé~*=Y-wo­Ù¾º‹­½81§OUH0mLï±€TfæùÑêö·)µ:êUýº~y7ªÆH²d‹¢:ºÊ–·Zæ2  ödñ馋·J“QQ¹Uöúj,ßʳÓ^ã‰ÎÿCÑŸcsRcÚwºæ6€#Gðó‡ƒé9l-0³ýÐ1Š«ÞÑV«„t¹yºCMû¬Î]¶j²­ðËI*{yÏÔ†à*yWq©ë*ÛÖgæðá´pÅÁÑ;{ öZõÝrWÞa¥æy^ô¬ú2’•c°Ø:ᬓÑ:ºãb½Æ'?Õ|.þñmßµóéàŠ£.ŸŸ·ÞšÂ2P®¯ü6К¸˜þK¸3²«-ç[n§›íÚ^ÉX*ôTЂ?]­L‰Á‚p--ÇðýqÊ/&0 @ð7rÏÏNPc»2ssû*"Ö¼a¡Ë0ƒÎ~ºÛ³Y2 ÀJ–ƒ‚öÎ @¦¬Âz×–•MUZêX1š9÷¤;iïT_dŽ¢´z£•,{ g`%¿ÌB… …ýWF²²¿ c¨°Ôð €R‰YÔ÷¿Ä©ëðæ&³ýªm·®L?Ó^"Æ¡2²N«+ûßiÜ5þ2fÀjUWmÑQà(¡t² >[·Ê¹¿B{‰+#Yñð¼ÙºàV’À!…‡jY)qV¢«ò‹ tQb1€lUਕ0j[ì뉭Ï࿃B­Açdƒìï ä õÐb _ƒÎ‘JÎÙ‡ÒÙc<¯ÚJÈF[tNµ;ÅgxgônNºvbÃè2ê·bã¯{™´~9%‰îDðÚ¶íx¤nã‡ÆsêbåÇòÙ³s ì-Lë!ÑýšŠè·Ø÷*uÏ?TÇgK h‡©¬qæý¸­Ï÷Gr•9˜×7o§5V¶/þ‘Ýs·qäýÏ(ÌËcܲS,|¼Ù}m'‡6ÿLú/Ó¶aµÀ“ µ|™ÈAÓøy͇•S‰ñjÇÕ|¼ð+ ¼¿­eŸ»¶,¥»ïщ»­‘i½«Ûêh&OèDOIAð«| Ò~O}€Ôâ5maäºÙÈ{^«Ã –&¡IGàæ ¼U<تÖðß”Í+T<þþð;a.ýDãÊ¢“ƒÙß¡#ööÐ:¾ Òàªçâç­ÄüÓúÕÎçq’ÀýT_¤GÎÜÎgk ´ð û®T-_ÄýÍpâWøüŽ Ôn¯l°¯¯Å øö*°qÒ¡°òƒNŽÂSÙ»¨¶|{à¶Y@ð÷pïs~M&>þü åîD:Ù’UÇÑÆnìÔ3+N±Ï?©]œ›Ìs=G¿üŽ>>ÉüL;¢¢Ô$®I§Ûû1t5\bÍJg¦.RñšK:϶ċR>u–ž«ÛcóÒÞ²Ò: 2w^ é¢ ½Ý¶š9ùñY¾È²§Y¤’Í_¥0à£öLôÏáý 9:×G[RL‰“ Ï=‚ÇíiÄ ^¯ŸÃŒ¬žYz‘fåž(| ˜;(‡½ÖîÕ¼•š9÷õ9VŸ´£~˜‚‹7 ¼3É5'QÐ9C‰—ùòkgºž¢[~Gš`bÓÑ,íŠnòQ24fxwά8Å ž .ཉ9TtªÌ[i= />Vé/ÅÓâ­– N8ÏÛ{òê\5ßy%Ð#³Ö¯O±ì”=Þ!pq>½ÞlC§’Ö¬q`âþ”]¸ÆÊ-fFM  â_„8çW @ ¨ûüÕçü*gÍš5ë. ¥’¶1ØZ0Z%œ"Ýùô¡ú(›Ž†¾v¸è”€’úÑNxéhØÖ/'œ42»RòiÜÁ‡˜`'• ¿X }؃Áu€‘ãë³Ø’rç^ŠÒ2ò’‹Ù|Òx;ýSnðóu ¾MêñDojÉĦƒ©¤þj¥ÿó~4µ•€RÖ¼›Ã5•DЃž oª–,þßdZÊÂÝt~xÝšÝëTÓb¼²¨o‡Ñð3å³kÓBâ.Êx<ĸ‘ÍQÆìs¬Zü)Öp^›5”;î)ʸv!Ÿð4€µà(+¾ÝÅëØ›AZÔ¹bc?bÓ 8yvcÄøö8QκYïrAáÇ£Få©,œZ³ŒMI%´}ð1z·õ½ß-…•o,"Ã^‡d·F~<2`(îêû³ÿRı]‡{žÏ›·õ;ãphôã«ì¼¶mŒßuÊ&>ZˆRúRž~{ ^uXçÿ¤îÒþÂúí'±õ eÔãCq.î{‹ ¿ª°˜y¥Ú3^pò>ßtSÌ@æôþçŸß=oñ}œ-²ÙÀ³Þ¤ò𢾙ùWllè4æ9:û9ݱä3çþˆä!}ñT°çÇ¥½jE6«kߟþ]ƒªu°õì\ô-ÎÃÆÓÚ °°ûÇíxtD”‡Z¼x‚ÿ2jå·qãÆÄÄăŸŸ^^^øúúâåU³ù6$º¿êMÞÄDNÑóè#î¸Y$´Ø8ðI®4 ®`ûc§¹¢Tã`§ÄÕUg=+™ß\%©DA›6öØ\Heç5#eIéì\•‡(¼ÆŽù€‰ïžfqr¡vœMxpôrï5Ç“³Ÿuk¾ÀÆ+‚”¸Ì:Û°C¤nÍQS }ðñ®Wíô‰ºÉÕ]Qâ¾ýø0ÎaÏîdéç×€<¾y?× F„bé¶8±R8ãkºÎ¿‚X œíêÂОØpmD˜osûìÇŒ…}#grÅ'’ÈÀ ¾ì·Œ¼»æÿŽðÈËëð¡› j°æÅ³÷×oѸÓÀ× gu­I‚,O|•{öí¦ þ”¸ËÅ‚ÿ>jåW©TR\\Lff&ùùù”””Э[7”ÊZ‡ðX-ÜTGòRïX&|ïÇæyŽìµ–c/2¦U}JžtÜi•¿ýÉ:›ÛâÝ͇¶ŽV^:pƒO¶«ðr(Ê«`¬(]”h´J$@©Qb§­³øº2æ‰FD™û“98¹€»£5¹:‡jùÉ˦c3WJŸôt”zæ¢ÄÌÂC™ÌÝ–‡·cå½Fyòpã;ÑÌVèÕ²!ão€¯NÌ`Þvõí+åŸð ÅÛ!“‹“"YÔÞðŠYX¤fX/7¨‡ãÑ_9e4³'.“w·æÝŽ;Æ7˜~í$zµlÈøÇ CÏ„¥Œx¹1ë) @&Z''ÆõtÃGΓ]fÇèãEìOÀ™œôr‚^€HOaÌàÿG½ˆ‡˜2V滕JT$1Çm;OæMÆ“Df»àù¼¬u›O¼ä¾ø5û ³™±(ÿϱcÃ'4ªvgh?f-~€Ü(?ÆÝ„NñüXö9k§?ô#cèÓ$<µŒˆÆOr&Ö‡Ÿ÷ç`®ŠÑ÷I"ûBQúy'Åbv¨{åeë ¤]·¾ô¨ŸK=w 9±CY¼n*† 7ŠýÖA¤wgÀÔ'è¬#bÅ<öŸ¿B§®ïcKqãáɰüø¡åX•~X@NøȦ ’6Îdÿ۳ɯ! î ~;FBB²,£Ñh$‰sçΑœœ\cÈXQbB_fB]ß“¶C%9F ðdÏxÝš%¢Í¾¢¹*ifÇÔGeä=¯ pgë°CDv>J#ÿƒ,?U†G¸'ç.^¦Q›ãôÙQŒ}…ÑoÏÄfì?E³ðcôÛR„sz´¨_}ðëÅO­Êqjy”Ó9—f@’i}\Ù=²ê^~Yq®fƒe1Y(Ó›± ez7¶½•·,>RJ«!Dí»H‹6G‰ìsš}9&,…&ŒUea(ª P©dJ­¸ËN–¡ÂJY™¥²ó'éxu€‡'§qÛ_éôüUr°Pžo®šA—)+¬ ÏÆ•mÃlhp„ènGñq‰ã†³0d@ð× R©PX媎½¦Ê‚BBBBRHH€EîHc¿Ê CHdÃ݉•œbð³K:åFùF&éVZÖb¨j_A¡P P*knuíÈ™=›éoþ• G®Ô¹²ê:q{voaÏÑ Ô›^'5f«ö¶ï;̘¬2&‹•¦rЯ³«Åò¯°•]/ýŠËì5ükÜõøŸt•’òž[å,+ØT–€F£Bi5¡:=]Í6~z‹€}óYìÝ·‹û.1\¿•]÷ƒê¿SwGv¬áh—ÙlÝÏæ…1ÿn•ó÷f}4›³aϳ¤¥(&·Ñdb·laûöS|Úr«“ë‚röŒ|y'¾œÌÆÙo‘cºJÛ¯KX}𠱇6308k¸´© È­ ŸoÛǶ­ønІØS‡ÀÆ—Iïì`Ï®ílùj&7n¨åTUÆ\fC“á­I›|•6S¢¡Ä„$CVƒ¢OT¥˜› î1IT”#þFþÔ¶ç‡zèölþ­ƒ‚"##«I©é½$¹ÆÌ¶/s‹|*GÚ}Z°£³£$¡«Ú¾<4ŠSX°¨” tæËþèM2pKÆŽÅ[ºP^.c£SÞîXL]Ûáöw‘ûpt€³ 6Z%êëJB_z€ÌÉÐ(ÐÍ­ bÁþÀZ÷ºƒ[D Ï7æö=”aXx  –¼=Ï}íÁ“z+(h5äÞúZÅ€eÝ+§Bî÷…érUúNMƒùtk#ÊL2*u¥žïä7¬ºnÏ k¨ü÷æÄ%Z0J £ÀNر@ øbÑ]là™“d9? è0±Ÿ¸Ì¡t.ø…w,Z^ÄŠIoÄ X*Ê1+§æLfKÍu,sÊ6º¾:ƒQ¿£“ö™yNx¹  £Þ› g®Ñ7ïSf4x¢òX8«ž‹W“¹‘‘ÆÅl#-= ¬Z¿¯­ih%î´Œû.u¬Äù`ÖeFNl‹Mq,× [ãD ã|;ñþîALuÛÂPýÜP)HjpœÅ?;5 ˆ9ñjïwßÛKiÒf~q(`j—&wïËzü£Ã@Ai ¹Ù\MÓä£ÅFq§ƒáà…aÇN§ÌçêÏ?qÜo"Or…g%0â¶m<€?E,úpýFvBe¾È„F¼T§/dÕúŸ~·î<*JÉXµž„ÆÃ©ØŸHŹpêI0s„Š„ž§YÖÉ´ôLøFó„ï>ÞÑ‹ÇÛ_!ö§.Dü«W¾‹q–óÞ„6Hű¤·¥žJG§ï~`åøž<äyÄ…aD¿ ÆO£ÙÐyÁktix„U+uøŒoÅí|ú5¢ {/;w(éÔ'Œ‹±§1XÛ×ê—Y1––QFo}Ù¥7Qa±¬²Gùñ×\ül8Ù~àüùþ 'ÞGAüÖþ¶÷îíÎUHÒ]Ê;!*ò.GjÛjiÛ(ÐÙÔNR®–ScIQý.j­’ßó›§³»Ç6÷¸Wõ4ïÚvOy ­®ZÚÕòU#÷Ô«Ö T ìªޤ¼wZ6Z埫<@ øòÎ}Ï´·WbmØžO¾lÀ°oü˜8 ïMxœ}“#1¡¢É„Ö8Ö.MpðµÀµq3š¸Õô}3¿ˆ¦ù>ü<÷YÖ••Òô¡'™óâHÆÍZ³ã»2Ïügw®¾ò#Ͼ·šúNJv¼Ó¸ÏFóHˆÄ”Ù™“_Þ“f3¹m]slÐý ®ÅTÖŒÎ}„èðÁ6·ëJW›&,Y:€FCæÓîùIô‘Ï Iï0°‘Ã}o/×ÓÊïý!öÕïËzü£ã ¯M{Ÿ …ýo|€ç‡¯ÒÊýηFÒ¯Ù5^Ñ×V¯°pj@å X?æŽmÄ„-Ð'ð0ƒ[„ÊÚˆ)X§w¡ˆÄÔß©»ÀG^¢î &>ú¾‘m˜÷åT$.aÌì‡õ‡ YmÀ¥a8ï,øœÎï&“Ð6†¾66Œúv#]þéÿÚô-mÇ[utö#l€÷“Þ¤}»‡ùZ ƒ7l¤3PQ¿ãÚW¶o!ƒ¾äÑééÛg>]FO㽇|‘ óH:ð_.‡Àfϳà“vµúgõh=! [àÖ¾pß.Mл)¨ß~*“ Þç¥Gúaß´=Ÿ,(4‚¿I–eá+Xð?Eff!W¯fÑ¡C¸( @  Žb4HL¼J¥&"âî£ËËËÉËËÃÅÅ…ßÖZ­ÖÛ»–ÿÔ7¿ååå˜ÍfÌf3&“éö?½^—lYޤ”r®_/'YoL|ó,[Žê3eë_\4N®=ÉЩ•?ålftÜK@·³¤TI䜻̤WÏq­TŒ÷@ à‰?µsvÙ²eøúú"Ë2’$¡ÕjÑjµœ8q‚^xá¶\ññ+Ìyç&§T*´ =Û.‚él;:¼Õ€ËqqlImÄóý•îî­˜›ù²®±'`åÔ§7hõuæÞQQ–<7;Š@•¨x@ @ ø_âO­ü6kÖŒ¨¨(š6mJXXÑÑÑDFFXýË•r¾ÛœCïÏ[²û»h6¯oGÞÇá”c%~Yñ™%ì\TÌÌéiøa¥»¿SkâéÐ&Ž#Ïs²¤2•ƒ_Äs„€¦Ç¹Z#2©‡Ò¸økÞáG˜¹²ÈçÉæ'™81…I›nVíÌa܃Gxlu& ç›I'é:¹Y¦P”gçsê‡ó<2ü}Ç_ |;é$a1q<:'=Pš”Á3ÎÐsHm‡%p¢¬rÅXå"7#°éaV]·e¬­·èR*ÛWäb SÙ¶40·ð,o½w¯S!óÙ´8BZÅÑ÷É«w¦.@ ‚ÿþà×ÏÏÀÀ@P©T˜ÍfêÕ«‡››[5)-ƒóaú#{ðhǪÅ”G9¡ÃJö™’ÒÔôžP×g“<=€¬ƒñlÞaËç›Z0w˜ Û—^‡Ôúe¹sê@ Éßk9x¹f>,y4ûÙÊ 1Ì#ñyx"}·4gãÚB¿=É.t<áÊ‚ÅMY?ÊÝ/&Û¶![¾mÌ`E6K”¡5•òÜ–bžù¨[–y³kZ<9m²mcÔÙ,ùUEy¾ cņ¶|5°”ßʲ˜Ñ¯˜÷Ž·åÚY?,'3øõµ‹äÕŽ[\ÂÕ³zd <¯ˆ«§Ë+ë¶eRÒ½™—›svó!ö…ù“x¼-Ë'H‡» @ Áߟv\XXÈåË—)--¥¤¤¤ÖÀ·ÇNœôL|9ç<¾ÊcUJ´ ½BÂÆVBc§@ \IÎ罦'Rb”hû°'4táÕóI¼ùzõºðøäšéëÍ – ªZm.(æ­h=§_`©YÆ(yÒ ™<…„­ `f£ÎÀÑÓ‰Ý*a´Ú2´›£Eb|›úÄx«ÀZÆÚò2ÃÔ`‘U„kñœZzÑð¦  ùâÝ>Vø0öÑ &¹~W\P©H€J­D§’™¨.tnå@‹°x}•ÁgY¥Ø7öadKa îS’r‰«—t4{ЙӫR V‹@ ‚:ΟZùU*•¸¸¸àåå…Éd¢U«Vh4ššÇõËùhç’eg4cAˆš Àj°d™(¾R¹…ØÓGǤ6ÞlXͶ Mc&å`=~lÎGï6"ôz"¯¨¨‘Y–)6Tž/I=ƒÓLÌZÓ”_ÖE³óKi7ed‹ŒÅ,JÚXŒŸÚ„Ÿ¾fÛz_¼œ,˜-2z£• …M-ŸJ³ŒÉ(cLF+f£ ÂæfQy÷böìÊ¥£Ê¦V\+f£‰’r%P’Tȶª22š¬Ür–™câŸ[òÂúÜØšï.[…E ‚CÖ¯LéíK@“¹Üü­w­{; ïÆî¸K®ôÈXüC êÏúóÅU¡e¬õ µaÆâ5䓾^À ãß›ß (4šÀ€Fœ¬Ãeµen4#¢‰Œ¦ç Åde‡Ç?°1¡ÁÁÌ;Z³l“·°üµ%Þ÷Vržá¾þ4ŽŽ¦I“fô÷éF=ËëIpD$ÑÍZÒ¤yûrïÄ8¸`Ámç“÷#”ÿÚ6 å,y¹>Þ Û]­ ÊÓØûËnJï+’–1°{(!ÁaLš·Ó=dN,}…6Ñý±ª3»ïñ\Ü ‹ñþ¾øõgÝù’:¥gìðGÙQUE7ã¦Ú˜èèÆøûçü]Ò÷jÇ,¬ýð)}4îÈ=îÇìû³"U¾U°Ì™0†ËÄ G ¨ëƒß£GräÈ233qrr"==ýöïÛ¨myD6Ò7l~ûP»ÆrtzK:aArT¡’,vnBöá³HÏ_&¤[ z(®ãí¹µûæm¶â×AÅ4‡=8†e@Z=wÖÔȇV…úVÖÝøò€?ãí÷`¸Éë‘Î lTتd@͘wB)zû0ê{Q:Æ“n•J‰½²ª4Œy'Œ¢·£i°¥ãyÒL Ö¨°sª<¿W²Qbg eºp¶¿]A3×½(\ŽpÔÝ¡3kÆM)·àL¡! ›z{ésYÍ·ÊtìœÕ·—ÛÕå<à²ûî'9À˜…°H@ðb[ÿæo;ÀÄ+¥dr±ƒ©rbÎX¬§Â,£óðÂ/² ¡qTSóõÖ¯ë̱k—¸rh*¯Îú€ø¯'s±Û‹¤^ÜDIÊ6¾½T æLfŽjLÐØnÒ^ŠÑyç.áÚŹ¼ä¹ä7áÿ4åú«,؆ó WØúíxbæ`|oŽ_KäÒ•ï8Òç ’oK§2ï©7Ø«MÄhºß­$‚—9uì ññŸ²µZµŽ±«~âÜɳœ9ý CR‡àã¤n£]„#Cæ%WMßgüQþËÓïaðaÆ“\ì¼äŒ|Ûݽ2ðÔHºFÌÛQHÝÛË\NiÄ_ýÊå+Lj[Ç#ÿð·y?àÛâ(:¥Oà׎)L ‡+‹wæ=nXHëQSèÔÀ¡ZŒ|¸‘ÈjíØ¾àGižµ–UÆ'ùd¨;ijjåaú>?×Ûñ.1ßã®ÎjÀcƺñζÄol7ú4¼ÄÄqïpÆjÁÝFfäÓkÜß I¼„‚;ÍÐ?yί@ þ°Þ^Ð8j±Õ(¶Ž:lÕJ”j[´Ž4z³°ø“Ñ h XP(,˜L•Kž+HŠ;¯Ÿ‚ÒÚK¡&lí]ðŒ¬OÀÚôu´”º=µ†Ãñs»ÆÌ~‡n¯fI›Å½ž®`o§Ck«Å¾îOmPj°`¯mÈÓcž"ዹìII£mHãÛw/fKø¾ìí…˜¿äe2[.¤Aõçâ§ ¤ñZKF@ 䘔ø(ÿaõÒ±{üÛx¾âHY~ÊЮx‹wGÆŽëXYë?ç¨zË%déUÔwPÝÕŽYÌ&ðiÅW+¿ÿMX÷ ±Ç¢®Õ—5ë-øÄôÅÔu:¿×€´½•3 &…„Õ½juY!#¹è±š« J ü÷¿})[6æq6SFëªaè(o|Uÿi’&ö¼xŠÂ¡ ïêðÿÌ^_¡gqg¢D] Áßίgràz:gš¶äIÀ¦y Ï&5Ñ_Žf1èq Ùd¤¢Ì˜)¿Y¥VGoã`[ÆÏ`•í7Ìš‘ËÈYï2¨‹‰—ß{™óÎìÊvcÖ£¡ —q`ËJ¾Ø¾Þ]Žrè0:^âÉÁÑ"&kA:%Ÿ!¸N–T&¯|×¶Í¡ ’ðç'‹¯ÏBç€Òx“ Å=ùÜήߞc6€á+¾]Σc»Ü÷vríÀ7ìoêÈgmÝïê“xyÿ!fÌ÷ζ²¢«¬úakölçàÂ_˜9ª~÷Ñtöåß\Âí«ïØðAt êÆPŸ¼<%ç§±­£§+{„é³çsárgìøttLVÜÀöur,±W 'ÜË¿†D‹€(Ö½ù*/Ÿ Ewã>ÓñRfòÒÀp¹õ\„NÀ‡ú¼òð¯<1nm]’øÂm—Uÿ°z-_C–_«|’—jØÜ3–î>7Yüòä8û¢6ÝäBqo¾P@éöñx­ @þf.ý;™˜Q£ ¹”Øk‰»”BA~£Þ~žšêY(¿YF1:¿20p©¬‚²r#݃Zà5c³ÏúQ–¸—ïã)¾ÁߊrÖ¬Y³j–¤d°æÛ|<›y`_šÍÉó&"¢°ýrÓöæ"µò"Ôûÿû‚3qzI>M§6ÀIÔ•à/¢´Ô@AA)~~î¢0‚Z¤_¤Pögè›#ih¯Æ¹E(ŽJ[êO·(ìÝÝñ‰ôÆÙÓ•mâìRm&Uű#Cl1ÙØ¢Óé‰j…{Ãö4ÒÉxlà@ÚúÙÕDÎ,êµîB¨“ïÀ |œU/Ÿ\³¶Íyîµ¶Öœñ­W@Á­|Îh {bü\ɳbgÄð9ƒñÑÜyqZÍ깇âäèùÏoûüb´Úý0ŽÕ–ðÊsQ?M÷†Õzï–2®§ѵ+^N.„û㨾¾¸ú£üËæš6Ü('5A1ý!+½ª£ÞŠ@y>)¥vÄ´ÆÁÙ›–!^uXqÁõ](//u}:~„¡Î5$4>„FØQZh AT{Žnƒ|ª?ot@ 84ŠSv<%͘9¡/õ´uÈ\ZâU/-¡ d®åßy~½5Êzá´ŒŽ!Ô£¶>÷nÇò²3(,µaЋoy× ÚøUk'87òÂ7Èg¿ÆD5q ?¯„†mz2zT ÿ’¯"‚¿®¶˜ÉÍ-A©Tâááx×u³ÙŒ^¯G«ýmG²,#IRåß{9¼*¼œÂ¦C2cÇúCq>Ÿ.Ëbð³øØèÙúÆ9ž[kDöSóñÒfôo¤áêšÃô›bä²làÍ}mè¿)-¥…¼µÒŒïnìXÕ” »Úq›Ó¿‘•åã~e“Æ–ÍË”[°ÿ…c<¹Ú„5@Ú]!uKf߀2–h$ü‰ Î|Ù|4è s-„tqå›Od/>_üg‡W@ AÝç¿âðÊF çÍáÕOÓ™¿èÁ>^xÙÀÕMñ|¶[˴ØÔYŦ…©Xåd¦¬pâB~g,ÐÝh¢¼B¢Uk*²»±¬‰ý ÜØ–P3îçÉQ¤WÐï­vÈÆ¶dm?Ã!Ï rr»w4„p“™’Òbú¿Þ™Š›í±?•sȬ›x™“¡Þ|ùQ0Kóø|óMa@ @ øMî¹/Y¶‚­ÿ@3Û?.¢Õ¾&(€´ 7zÒ@)SÔ¤í¢ÜP$œeç¤[£p{Úµ´#ö›4ÂTº«ó ×’¬”I¯0ps û¸áΨ1ãïbG'Ê1xªÁÈÍžUß Knø¹•b¨Ð€-M;+(*6s¸© œmQ¡¤Ù°š¶›¢@ @ðÛÜså×l´âbÏØ‡ýYñ‰?ôO ®Z7v£ÛÙ üZ»Ó­±ÄµøTÊC]úf{S-df\cþ†T4J0+— åF Q!®5ã&¦S„S…™[Îóƒ5Ô 2H¸aæàÑ ìKÌGi‘«Üã[1”XÐ;ªxÒ¤Àœ£¢gOwÚ9ä³ãB‰¨I@ @ ü&÷\ùÕ¸8a¡plɸáyfe {§F0|Ð%fN8C!J<î‡VåÌŠ-&&N:Ë% L_¯JBë]éëÎ-ÌW%¶AkÅõÇ %‘]½*A½[2Ép‰×Ÿ:‹äïÀÛóÝQ1S¯jœÐÙÌÐdZÚÍLâá‘i`R3sVÔ¤@ @ ~“{:¼þ͇WÁ_EC¢Ÿ¢û{x*@”†@ ‚¿–ÿŠÃ+@ üo’{ü ‚¥`¾8žû’Ŭkþ þ{ûc3È5×¼jÊ9Äèv*[[‚£_ãtÕõ+&"©¤–üXV%l)%nó*æ}°’[î óâÞ¤I€[Š.ÃÞ ÓP÷Êjñh I톣½ ‘í? Àz·.Û^C’$¤^“8]h½Ï­ä$]% ‹ ήöx¹·àTÀݺç|ƒH? [¥'½ž]OÁý¦ª¹œœÜxÞ<‘„{ Üä»g{â¦PÐ(ú5ÎTz½Îh$„$â¿mç÷×~|•gúM!KþÝ«žñOI(ìQJ­ØTZ–´ª%’ÒZbÌ;ê„^ †K(´®ØHkN¤óAûHlìpõ¬‡$IüW3ÎoÙsqüZ¢ƒ\‘š3÷líOñRé/Ù1íh~¥äoŸ./àà¿6øÕgx¤KQ¼,«€Ä¸šùÉ=”ÆÎT“° @ð?Ë™ û³f,®ž­>tcæŒ7˜5s&»’+{³oÐéð·¡w£§Ðç–ÕH§ÈäÀôÏÊ0 ìZЀµKâ,ÙÁÙ„,Î;ã>¥ ùžžþñùZ*?˜±Râ0†¸d+† ƒì•ütìF++¯/®ó(.5sþÐK4¸V[ÈݰŒñǺ!Ë2òö…4s¹ßç[+Ëè ¹™¿‘1mæÓT\­­{Y–G9pQÆ`Éæ¡†¹ŒÏ»¿TÍgöËÓØrMwÏóWÓÇåȳZÙ7߇E‹Aé:žÝ?¹BF–Ÿâé!¿eçu9õK–ÿ”¶§Éüº/Œ²hÜ?kY1ùÞ¿±²=ðZ‰l)AoÌ&ùÓ_Hÿç{´}:kyUN¾ IDAT>f9–™}R†//:¹¬„üìÓ¼Ûs5Ýݪǹ۞],´¼¹ð&Û¯æ#'Ÿâ妵îe"’¾ä&o!H»°µ4Œ©²¿yrï:Þœù&Ÿ-]K‘x ukð»cLj'>>ž³gÏÏ/¿üRC.÷äuéGãV‡ñî"9@É• v¯Í§®ì±.¸˜Î®UyU䀬4fíËÇ×ÑFX…@ øå*»â"™1b*.³7s­²Eg}·—HómBD´=»úÌåpyùöÌÌûüGâÎ×\Ósó‰¢IK7ÒÏ#ùxgÈpyú´a²ê IAC9»w¼K«Úd‘Øçí­Q ÎtïÇèŽÞu®´RNeÒÔ¯5üü8~+ð.] ÄíÜEÆW“hÊï/æßä¢qkó-´úå”÷Ô]CTçhêirȰàh§»¿ôlÍ‚å;x*ªˆ{m>(.1£õè €³W-LÉ€Û’[éxÕáôoØy'÷0oüXÀ³½Bñ®þÛݺ'Q@}Õ°ª9‰£$Ä€æ="¸°þ<[?CÏíSðýÇ•³£EGW½:”únaUÊ$ìª]½0g;êg[Só,‘»íÙÅÙœÄ^ôÝ[4¡íC#9^Vû^fêù´$4IArÊNíñgÄ£á¨$úcß°øÃ£¸…G¢N?ΚÙÇ0 êÌà7??ŸäädRRRHMMÅ`0`ccCvvv5)™¬Ä›t™Nâñvœ*1ni ÎjÔJ É7+¸žaÄT%k,® °ÀÀ…KåX°•ZÆå$=)™wZs¡žËIz.%°VÅ+Î,çÒU=iùw¦"ofWÊ¥fšî1ȶ’y¥òzž Ô%j­¢ªŒ¤•Ô㙡¡4r–*ÅMF.^Õs9©œb£ø,Z üû1ÿü ‘C),40uÒU^ß ”žçñeÅÓC<ð%&<û);3@ë A­R lílÑØÜûuRzh>£NäÃþ`°ÖÛï +U-.…7K0ÖÞäփܤôˆÝÃ2ê\y=»^&?éI——0¿ágäÜS—rr#º0ûaâ/ÄóBù–¬OøWØKæ–çX9¢V »g=bbõ‚Ϲø]u÷¡¦”ÿÞ¦0¹ªg"ËÈ– ÊíòAŸ‘4¸zêxigƒÛƒ¨{—OÄÎKwàßr$É'¹žšOzþè~ûi®þŒÿl'Î¾ÝævPØà÷È>ö6¥X'”ÔñäœudmíÇêðϹՓ5¦íåkýQtùxwìùúP vaÐÒœ?φ»±ó¹%ÔÜÐlAorãé<ønÜãœü AR  ätÎU”¯ÌâÙaƒyú¹!(\“W!ÞEÁßÉŸZ按‰!0°òÔÝììlÐétdeeÕ“õÜ+7¹¹+¸a”P© 5!›×ß,%'1G&·fê#J>ËÁ&^”Ÿ°eÃo¾]˜Êñ"%…ôªƒ;V0jÞYä rϦñäÁ^ IJfõW¥2Ihì¬<ýR$ÅiLYœƒ!ÃY.ååíˆÑÞøæ­>Å„Õ*ÌŽ¥”Ez±c P ÁJÜë§X[àD¡¹Œ&]¼xe¸~{†{í(¾–Cȋ͙ÿ°8KX ü›¹É«?"çOgÔV+ µŒñÜ è>‚à¸ýXˆ8»ßÇÇÁRQ„Ia(H--Ĩ¨5øµ–°wLJ|~¥7IsÛV†ÙúQ¯t¥tÇž$¶™ýé[%îRÏGG\ªŒç¯åØ%nX9VQZÇÊ+— WÝ lÚàçù 7»tÑáFPÞÒÌ>KÁýo.òu¾ý^füKÕ®©;PrŽ¥›Ö’ö&_v×ݧÊjpÔÙÝÑ©úðÉV±$£¢8•$…  óÌ}È3œOyù©xÿVùÔU:º+sYýÎ3l4ær5é™ñ´ÝäwtwÇH>:‡·Ž†qnÕäªíÝ9ìŠWÒ£‰+J#¿dÿIýŒIìOmD§ €(\¿§ðNoü{%V-›³±<Ùž§Ú6½§=Ûj˜õW€&4÷ÇÖó Vj,/Yl´24L¢Yc5Ç Vd ìŒ̉ÐÑ KnY©¨Ôâm$ü½ï¯?AZZšl0䜜ùôéÓr\\œ,˲|ðàÁrI?Ÿ“›¶> 7Ž9$·z\>rC– ÇË=›"˲,/ɾ}M¶Êyòvø¿,?+·éyBn¾[ùF¦,ˉ²Zµ_þ"¶L–e³\j4ÈóÇì‘=›‘»8!ùl‘_S*§nß/;»•ZeY–Ëå›Õ2Tž!G?~¢ê‡UÎÉ5ÈYq òÂi7dY¾"+Ù)·tJîÒï°Ü(ü |©8Gî³Kõj¦,˲\Ra‘ÿnÜ(H!T£äÀT¹Ïû›j„mzÿ!yúÑ›réŽ%r'¯`9$ÈIî=bµl‘e¹dÇrThˆÑ«½Ü,hª¼jOF¸™;ßU 4m)GÊ£^ÿR6Ȳ|ìÓnr´W˜dßB~+ÁZ)|~±ìæâ$;¨T²Û°E²,Ëò¯Ÿ‘[5ö“Cƒ›Êý/–¯×µ+’'7µ•C""äÀú䯶ßC—/« w¯üILkÙ?ÔOîÕgŠ|&íþ·—£fÊ>]/›«V×}xe=îž#ƒÜ¥}k9ØßW~ý»ó÷—¢{åÁ}šË¶ »ô|^þ5³¼æuã5yñØvrcÿ`¹i‹Éò¦¬ÊàƒŸ•}øÈFM‘¯ß«|†-¼Ê è¼hÑx9¯vxmÝsdY–“ä(ño.·Šj,wì;L¾n‘åSÚÈ!arh@Œ$Ÿ?ï—§^¯—SSSå’’¹¸¸øžÿnÞ¼yûïŸ:êèÆ899qìØ1Š‹‹ÑjµtëÖ£GÒ®]»[Ãi¾g_ý†LîâŒY 2'ðó&GÆÐýÕ¾ÙaaÜdVN<Í_Æìý<–òÃØ6Ë›±ñ|»Ý…)xcƒÄÕ¥ñôœœÎÜÄ=CL÷f< ªÜNbV¢“- ª`ÏÐsŒºfåûíhç\•¥üTœ?*äæ{Moë’y8M›ê1ñÕÜ;ûJÕ7*F«•JñÚG]C3¿5ßw3%ÿÄQGÁ½&B­HÒÝ[—o-`X**0Kõe «Å„É*¡QýÆ&"+X¬&,V+’•²²™5V`B…­ºê~²… “ŒÊFÂdªRÎl2b±J¨5ªê*ëV#f@V¢Ñ(W¬ÿÇÞ}†WQ­ßÿî–ÞR )$zoÒ-€(*‚…v¤+M¤÷*ET@šôzï %!ô^wv]ÿ @°œçM|Öçºreïi{î5÷š™5ÕD‘ÁˆÆÒÕ¿!_ÌfP*Ë.—òb€0£7™ÀlF©±D]©ž÷%Ðë ¨5LFjºÜ\ÔëŠPj¬Å&Lt3«RËûY¹QÉ•] L ÀˆÁdXXï«ét&@‰¥¥ºB×_ƒBõì’ýN>t:PkШ”=Çtz 4J’$=±Žù/¿êè/­îß¿O`` ~~~DEELzz:©©©e†3hÅX­xئ4QT`Âüð³Ö„¶ÀÈÃÛ¼Zyár$‹‹ÌÜMNà ÜPÆ\¦÷ wZ·pcèWùèl`œ— c&Ý#¼¹×±îW7“.0çR u»øò¾öÂPêšW7¶Åòá”8ª9dqQkËÚΠË5€s †žb”|Ýiw’èûIU¶/ÏÇ%Бö3=Éò–7`H’ôïV^×ÇkQTå4Ú”* –¿·ÿ®•RóÔx*‹'¦¥PaYÒ¦¶,5jú„J‹GóýG± Tae©ú÷䋲œ|)/v Pb¡¬¬O¸V`QrÀG©yv6ZXZ=Q¬T27*¹²±+P¨ÔX”‰¿T³‚×_Íï§Ã3óYciùŸçØ<®$I•jÊ”)SþÒJÎÂKKKªV­ŠJ¥B¡PP¥JUb[w[ª{Ûâdýxå`áhƒOˆ.U4hl,©æç€«“%^Tó°Æpór%Àd"K¯ ngÞmæ€m ;.ÙE,X{1¨žÁ.»@ºQ³¯+½:9áçç y&LJAÍv~tò)½FÓÔÅU¬“ƒ-/tö¤Vu{¼Bìp¬bE½žN˜ÒÌ(lUÔnáKûÆÎø*!Ý(°ªêÌ»/VÁZû×ÈÏ/"33ŸêÕ«ÈÂ$I’$I’¤ Êd2’––‡J¥ÂÝÝá©þF£‘ÂÂB¬­­Ÿ9 ! …¢øÿ_¹ìY’þ äeÏ’$I’$I’Tñý·/{VÊ"•$I’$I’$I’þí*yã×ȵ5‘œ¼¡-ÕÍÀÖ)—Øg”KW’$I’$I’$Iþâ{~W¯^¿¿?f³…BR©D£ÑpýúuFõ¨ñyqâEšEX!~iÀ­'hõ#ñáõyúm¹E|¿êAëÓªú_½á_z=‹ÌÇ.‡ñRS}ÕréJ’$ýE‰·o“¯VƒÑ„}ÍšxýÇ;0‘‘EzŽÀÚ¾¾UíJ:k‰‹Š¥@8Rӫ̺ÂB,llŠŸ¦kÌ!.>­=¼ðt²¯peUCR†!L¨-«à[Ý•!‘ÛQy(”Öøúb­Œù$&&S ˜MjÜ|}pµ©ÌÛ(qÑiÔ(„+G¼Ü½P¹ùDìãcÈ-Ïj~8Ùý žŸaÌäNT f<©éò¸{~"wâs0¹T£¶‡CI§8âó ¸{ùâê ©dqþ~4f—ŽQ]üü;W7<Ñfß%.„°§V©:žt'‚…-ÕåÆ?]ïò ]‰0›©Q+øÑqâíÛä*”xá¬V”Ùç,HO")#¡R¢T“g®Š¢cRË”ƒ‡“c©§‚›ÉHHDã僲xݘ•šŠÆÙ ; ’$U䯝ööÅ+?³ÙŒ««+¶¶¶$&&–N«°bª:•ã ÜYW æÿ=ÙLšžJ mÞ äE¯Bnœ)`ÿûÜÀ;nVoL!.SI£vnôhc_æô´!3…ÕË H0+è3±*ÖVJTªâULÜù¶†:ãî•C\S|- úXkÏ)0UŒžT¹Ì%I’Ê!H\»‘köapµBiºG’í".nñ?šZNô!&¼÷1шÂú¯™ÃÀKŽÏzž¯v»¢ÎÉ'hÍ^µ¶”ÓŒøt1T}‘™³‡àD[Ƨ‹v£3j°V6cÂÊoiâ]±.VúþCļI}U‡³`I.NíÏ„‹6xdéÉ|m ''¼@ÖéÏyu\(ÕÜ)ÈugðœYôoZ™¸Ëü¡ïá숵]6w~T²C„’4µ?c/<Œ}''t"}ç6†¬ÞŒª@ ¬ßŸs{X©wø³YýÆg¬2'âvדV?/áË:ö »Â€ÓHLÈBûê8NÒcôFÆ Ý@”P¡ èÁòÅ#±®<‘þQÌ ßÏôÑëHq²'?*»êïòëž1Ìéý‡­žÃö^Ak~aásŽžþ~Cïaçh$ãÕIœžÐþoå¨ÖìÌiMÁEÚv=Ëı^$l\Ä+öQd›€Æq?o»Ô޲ž›»¾cÖ–“5DÿtŽNëO2»ù5¦XYªóÞq8=/†·½ƒñßå]ê÷3ÏWKÿÐ |ÚÞMnz$éoßÝù bb½ª]ÄÇÇ‹ììl!„¡¡¥_X®G>»"Â.]ƒºÞOÝg’î‰ÙÁ×Ež(Û^=,¯K?í¹#ƶ¼$îˆ|ñõÇaâ³YÑât|ŽX¸óŠXðk’Øñ}”˜µþ®x +ó¦u±®u˜˜½%MlÙvELþ1Vœ›xYü|ªPãcŶÏo‹ßÎd‹?†‹ ;“„H‹ ܇d‰§K¢ä‹¢%!3EXX¸,I*ã†Üøë2]ìZ!„±b¿C6ÝBqsÍñË‚—„··Ÿè6~¹È}bj¹)"-¥øsúÍmbþÒëBˆ+â½~SD‘Bˆ8ñnŸq"^!²ÃÅìIcÅÄi›DŽB³ÈJÍæ’iMûh²Xu>¥Â•ØÎî"²lÔâÞ¥Ô’ÏéâãÞKE‘"õÐ01ÿÄ¿t”³HŒü"Fa‘¥cï³B‘%>œ2_„¥w=¸|–Xq"²rÇ{©ðøäÊÃ"†ö™ R…‡ÚO?JX(¶ÏýBl»’!„bÿ’™by¥Šý¯ÕÁèÄê9Bˆ\u½°¤ë51¨÷!Dªßç]'„¢HLé7\œÿÇãÓ‰¤xmÉç]¦åBˆLñ #‹×IBˆ¹ŒWž9~‘غd™¸k,§²žöž˜Á{¢×öõ"Â(DÌáb`ÓÅb÷©âòÜ4k˜ð«î':ô(bå†H’ž®­:­¸r%Jܼ_nÿÂÂB'òòòDnnn¹ÙÙÙþÿ¥Ãè*•ŠÜÜ\nß¾M\\gΜÁh4¢R=qýŠÙDŽ&„Ï_Mà£ífjzÚ¢7ƒÈfðsž¬äÆëÝ‚6<—°(j6°âõ>UiåmCp„Ž©oGQ«—/ÃzP­ô‹nG1jH£ßrã­72¥wU ´f4*n¦÷Ú$†¿ÎбÉl?c7NãSøùbÏjÍðy°C’$©|u™1ý( …Šz¯äÄ(,ž ÀŠæ:Í¥ûÙ£8´‹z›>ä wy*§ˆbtÁ}o¼Qfj6öÞ°ëW2›9‘<›VßàâE u ™Ž!|ðnw|ít˜PàTÅEòNVÞd4ïÍÐfîïàƒTjZ»¡Q(X{À†‹Ïèj/þÂö:®X6î5Ø4$+K5mûL"ñ_óêø{|[+ƒO¦UÔ–޽¶ `G›d-çž&)5cv>z½¡r‡ì_—NÛ÷q6-ÄÔ\‚•Y‘Éñ¤­ ÷rÅÁZA³÷wJrE5ÜK®ï­n£Aè+Ó‚ÿ+uð+‡Ðë5Àž€zŧ·c¶-çÊkMt’Õ-(¾Ú’V6ù$ýÓñYàé­gÖ°v(ZŸ$>´à̸Ü>ôS(P«j“°õÿhøŒ±c®!-º |U唃ÓCQV¯ÍÛÑnŸü‘]ao2ð{*+bw}ͱÛ¸ͦÚ³qÐj²äÆH’þ§þrã×ÎÎŽ¢¢"233ñôôD­V£|êeßC¡‘ ^ ™ÛÚ g”M³B‰ÿÙ<Ì%Ã\=iÄÁÉLQ´‘ƒPÒ`d#2s[q­ßeÞü"‚ØÒ+HG®'òK¾è‰ŠÏC¥V L okF/l@ìõ¶¤GwdÛ.dGY³·°#Ë^RòE§ƒL½,ßê$I’ô,ž/F7V½ÌÖÙ#èûÆPr2S™Ù.†}ÌGLä ¥þ€Qу¶-B%MärO{çé ê“X¿èKn~Í´fV 3`æáMaâáZ¹P«Ãôä*Ú³¢èݯü̲ƒQ®¼.µéDWû!úa£øìúì²àè§½°­?†‹wuéŒ|]Ã]a‘ÿŠ|¹¾á#G2髳jm+yÔ혶*Ÿ‰}‡óÑgÿÇ/û|q"‡¤6³ÈOË W+˜;•íY–X¨”öT ¨”o–üuðÇW>ÀãÒ»en+;¿coÝêÁÕ~Þ€“РzÔì4c®EáÀØÕaˆÓï1±îD2ÉdäÄ;„ ÑNËã¸XXÞxVÏXC¯[—¹w°¼r(fF—oKçÏk6p ÖºaW ñÐŒ| { jƒšx´?E¾Vn‹$©Â4~Ï;Çõë×1™LXZZ"„àÚµkÜ¿¿LÃW—k °À€ÆÃo:òRudàÁ±:Ö:CpãÃ|§®AoW-êØòaÏ“ 8ú€ó³ÏRï_›uÛÚãiUjÒ^µXî“@«g lʪûzT…Fòò „´©ÿÞÔi|–ÀÚa¼· '×DÚ{¡á§‰œ¨ëDŸ: ¹Ä%I’Ê“~Λ¯v}…¥ß¤{Œ‰_úÜ‹fÂöìÚµ“}«{p?€µ½3ñûí¨aýÄ¥5‘LûnYÍ>c]ßânÖ-ðKO GøÊØŠš%ƒ;»:ã`ç@ñ³Ù}â,9æ’]M=(¨hëï{üº?§äsù¹,Ý©wè~½?NH°Ðrþr†âSÚhóuñ/xË`ÁUöÄdñÎsmw:ùdì€U]f¯ü‘Ý?-àÍ~¼P߻҇^£ë ŽÞËšž–4ú¬?öøÒ,÷s~+YÆùéj°`‹SœI`WBN•é©#²Þ™Î÷öñq©[Ø÷®ïÀZÕ«œÚ¹¤KMZ¿â1ŒOó£Å?}ïsÁ æÈ+ùbDWhÉ\ßy†´’®>"ˆ0Ëè²bÛ£Q‹~kAxë}t´üýr(½_lÒRDc>_¶†a–fòŠL˜×|-EÛÎPxû&W‡`c$IÿKé³ùÑ_éï•Io:}ÙñLF³xx»ŒÁ`zó§k,g|ñ¬q ¦ânfyͼ$ïù•¤ßszFKÚV89Ùè .>êsN´aãl)à=‘.„¸2aðF#¬­5¢óûߊì'¦õààW"•pu¯"l-Ô¢óˆ™"O‘rxª¨ Ú‹s¾4K€F8Ûjf!„ˆÙ3^ÔöT ÚK¼5a¿ÐVÀòšÚ¡±).« %÷€Îj$v.ÂÃÍEb_¶É¿u*x,ÕÉ­_‹Ûo—êÿT쿦 !ö‰–5Ý„kÍboü¿£žüª£D‡©ûJg¼xjĈﮗt‹3[‡UDŸ‰ûKîu¯<¢ÿ¨ꓟ¯çŠÑy¥:^íAع¹ g{[ظƒ¸ZøxuÅÔC‰"¾)OÕ_!DÂNJaUj9æŸ#Ü&,,îŸqZ„ Y*ÌX¥ÝsCÖŠÔR÷ Ÿ»Aì="„ЋýãßîJµhÜ^\Í•Û!Iú_ßó«•ò:IúÏ%%e™LÛ¶!²0$é?RÄoï¬Åôáº5µ’Å!I’$IÒÿ„^_Dxx"uê<}õV«%==ggçgÞ^b6›Q*•˜ÍfäËp%I’¤¿È‚fcºað’%!I’$IRåñ»7™ÓS‰BnÁOȘŸÅƒ˜ ²L%I’þõ›׺Õñt•g}%I’$IúW4~Sø¼ž¾>ž¼>ú'Œ0¡ˆoãã_ŸY¦’$I’$I’$IR¥iüÆíb‡Ðp8&”„’ÖoÔ¦¯x¡Ö×ä±›gÒ¥þ(®ç†³bÿ. •ÎÏ¿ÎÚX±[†ÐÐw,™7šZƒWµc/×®MÝú è7}3ÅS׳uz_êÕ­Oíš ˜¸3Z¾®Ù‘©îÉ%$I’$I’$I’$ýöÌ{~O/ßEtʇ¤ë^¡›eWæìÇâîÞäDœåÈ%z ïöyܸ ‡%üßko²ìÊU~:ò3ÏçWᇠëøÕVM^ëÙäÞ^Aƒ^kú3/˜Ð³ÓÛ¼îÖ„Ê ô]œÎχ¥C5O\\­€$îݽˆ9±ÈI’$I’$I’$IÿýÆoîMVìßu_ã—Èv6±dË1w€ÊÂP£T À% ÅMTMÉ$Lˆ•ßפFOÀ ¸¸°ñ$²cÞ$NYZÐü¡4 ¶Ãõ; ƒx½?Мy‡V2²SCÖ‹<¹t$I’þ ¦dÖ-_OLJ>Æšø¢ÿ ”{w¯)–#'àùÕŸê~x›k0kðå7° ã§pKåÇ[£†ÒÐÓâÑðÑa¡8¶ë€ €>•}Ûqú¶ ·ê5­ÿýOÎ˹pœìÆí©®ú½õÕïÏç3ëµ!uË7p·Èž.Þ£½Wéå\ÀÞEßãòÎZ9¦t~Û¶ÏN}ièa$Iÿ{å^öœqˆ×ìØ·'^õ[2¨UغŠt­ˆB¸ÚZFL€M€`æáªP˜ æZò½jÍÚ(É¢ã„ùqÛ6.{•ZnyØ5È¥¤TîܺǬ7øtÔ,r”̬ÕI^ö,I’ôwÓE2iâ;\7yR¯^#<,§éê]嫊bÖØrz$°en~MÑRsšKo¹¬-amhçžD·é;K ¥Çz •à IDATó5yqðÏd”Œ™ý(=uš5Ãâî)ÖÍŽÀ\‹êüŽÏ™sQA£& ¨n_|è÷^™‹ËíôŽ3déÝièÀÚ­[8”XTÉ“ä3^9†k«¦´R¢íÚâmõѯàÕ°ÍX±©ójRrNÑmÌvBZ6£nu/¬T•éZ.%6n^Q»±ùÛopíVV™!ÊËU€ ˜;+h̹lœv¯Æ iîšJiÛŠ‹7Vs$¾€Æ €«mùçNäï?æ^Éù‹SËÞĪZÖ_,[nä'³øãWXu!òï ¯(™¹wÄ©ùûD«žµ¾ºù'æÓÄ©'êõád#Åì… WV¥QH ܬžÜÍNaÝGÓøáH(éQ¿0®ß2ÎßË•ÛIú»”÷²àïÞEôš*ÒvH=*ZûZˆ6{³…È8*Ú5¬&ì…«›½Pò¢¸&„ÉE§žBÐDÌÒ‰ˆ9MEõ&3Dé×'˜$êzY{Gga¡@|¸-FœŸßE¨¬DUOáP·•˜}C/„Hƒ°f\-û"qIú/HLÌaaá² $©·6+>û(¬T—|±Ò»‹ØcBä_ •F!jõ/v~ÑR‚nÿ'®dšJSzÍ}N|8h¿â®Òg‘0–tÝ=¸¯ØSôp˜<±äíaâæó’•™!~^?S|²ó^,©p1Zù¹8•*ÄÄ ½BˆbÐ1î-*;Ö¯+׋S73*w’Ü]$œ'?^‡.ï7XÜxøÅT(2oì!#× !„86|¦˜»:L¤¦$ˆÔÜÂÊsa¬Xºx™ˆ,(¿÷ã\BÜýS¹±§¨"j.U{Å„wV £"íÈ0ñÉòM"-9YdéË3zß{bÞ¡;bÿq$åq÷Ë«f‹åÇ"J iëf¶¿l/fì:öÄh;¿-öéž±¾øëŸšOóõú\¤V¤ß"¦ôX#"Ò“DRJz9û°wÄ|»Iâ­ëÅÙ,!®o,&¿¾Eì=•*„1AŒ}ã9ÆRø×i&ÂîËí‘$ !„N§W®D‰›7ãË_=Џ¸8‘——'rssËýËÎÎ~ô¿ÜCwCÖ†”îP¥#§bu%_:rüʃ§Gòx‘#W“ÿì1Ÿ=1ÈKÓ¹‘8ý‰÷cüøÉ‰¹³NÈ£`’$I·Ë|rûÕ/ÕÅ–—¾ åàذögBÖ\ÅØÔšø¸|:0"ßeóZ>1•‡g÷ X2eÆçÑ(ÔŒ€ P*•<~½%*…™2¯¦×F1eôX2ßab£*°¤R8e¿;Ãîc.ˆÀ¿Æ&/´C£yVŒPxm;K3ŠXàR¹“$è5FnË(ëzxSÀÍ [:–ôŠümŒãÓFC#©nwØ»áa{Úì@Æ.™O§:Ö•.ä ?OBa˜J M9=Kçjàü_ΊCñ¨öžÝ¶‘ÐÍQAÝQl^É;;W¢¢9S¾›C“j¥jCø>¾7 æË®Á„ÞØØ=îg¡Q!DI´¦lVü°˜OÎÒ>r ó’œþÕX¨˜Å3ÖWÍòXñý‚ßOÅõzU …÷ïr4ü7.߃>/ŸWû¯fä;~eÎ:WåcµW~šHŠöcº] ]eÉÍ‹Éj8±½Díç›YS©¹b2îr³$IÿUJY’$IÒC®–8H,Óíæ¬fx;rª¶7AÅ _p0’«ËÆ” ,™5•» >ci#k@O‘ÉË’¾v úG×2«P)UeBaÈ‚ï~bMw%;·í §¢”6 ÿùuÛOìÙ{‹æYݹ’mƒI<#ÆÈÕ4_£eÑGïh]ٳė1ûGðœO-´òB©ÊöN—?ãÔ†…Xî›ÃIºµcÞ®ƒìÜqˆ­[püúùJo,+Æ Ú}â_~ï'rs!ïü…ܨ€nmùˆ -Ü¡¸ëó s×ìfßoaÌxÙ‹3áe_lyrÃX&¿ý6Í7¥ÏÄT>út©%çLTJ%juÉab~cĄՌiÙ˜Z]W0¾{V‡ÿ;¿J%gééõ•Üßûçæ³T½örTîôùf7»~ÞÁþ-_bˆ™Kb™w… jê½Õ‚ÄbiõA}D®…€,k 땬ˆqk~Vn“$I6~Ÿb"ë¾Ýßø{¹IzÌ2w$IújÜí%’£†³èðuâc8¿ý]¿ò/{ØÐíÊmö­?Lâƒ+|·y/9I°ý Çs³1<±Róº‡=úðE3QÑq@CF|Áô½dŸÝDomGzZÆB’So“”HxTfàÎ¥µ|»ö(ñ ñ„ Ǥ Á¶¢”uOÚçuçÇ“$¤íáîÙA¸9UcxõR1ǘ¶{0ŠñW8:îEÔ ·IÎÑUú<±t¬I»šS¸c!5OŒ§wø¿i«‰%>ò'n×Äý.°ý»Í$¤ÝæÐ+ªÚúVºX|Ó·M©SN¿ÛŸÈUAÙ™v¹ó¿º:Ý–ú7^f}o¢#"ÐcâÈÞ_8~ô2q1—9zF‡»½k™q^Ÿu‘}— —/²ðc+&ù!î– /x@øýXbîÞ"9Ïo!ÄqîòeŽ®z“Ñk~bXí¿18a"''Š{‰IÜ»•JŽÖTÎú*}@ùó™wlŠ÷‹¯`L~¢^§@`jœýœ3iœ9x}ZGìËÕ3£Ï/ ?¦i7ñzòµztFÁ–Žhæ¬ázB ‡6üHøå×q±F’¤ÿ2Õ”)S¦”ßËÀÅâYº7“Sg2ÙDËóí*àk‡Šû2›—Ýþ¦§&ò…wõÆWÅ^æO¥”Ÿ_Dff>Õ«W‘…!IO5êªÒ³k~ž;•µ·r@Ý•“_ Å ¨Õµ¿ÌcÌòmªÓµkOüÝ¿bô=Ú¶ÀÅâáâaë“ȉ=ÎO;~åìH¼Ð™rð½žÌ9®cöìÏ rÕ@ú&ŒŸE´RÉ™‹qÔkÓ–ºîVœù~"ó×ï"ɦ“g<_þÓ¦ÿaZ·cÛ¨÷™»õ$Ÿ_þž`ÀûùÒ1Ž!ÈEAÄù8”álÞû+»vü‚¾z{Z֨ܗ>_ûy2CÇ,AÝ樂à¸Ñ({ ïLúŽ=»“y{×Tš;ip é†ëÞÕ¼»p=Ö]ûðYß•ëõ…¹7™u§‹Þ,ÿ ÝÎ6œÛ8©T®vÂâOåFIþW8©œÜ«GyˆŸwïã—Ÿ¶Q·÷»41]äÛóØøã%ü gØKåœW/Y“>÷à—pµ€«Û§òíá8rÃOpͺ5]ë>n4+ÌZp®C§ëßž>ƒÍó§²']AÔɈíiT-‰°õ‰¥ÖWQ4~¾3.šræÓ¨%Ý&ˆWêrû|L™z­óiK›&- ,JgÆ—“¹¨seôâQ”ÎDQ¶†ÀÎ~%WŒ…삼¨Ñ¬þâS&~Ë‹@¦-³Ü"I&“‘´´]Õ†¢äX×2Ÿõ{ó±TQúq;¬Ñ -ˆØoÉÙóˆ]jGä²d@ÙÎ’ek;`ÎéˆÓ×— C`eÒ“Ô¾B×–þ‰të¥ã•ÙAÌÿ¦:—'^#*#™w¶Ùº©E¹íÔÔ–KÇ®sMãGʃÜ9ìƒ 3(•Øad梸Góö]³<Öí)™·?îžè@Â:'"7%RP:¤ *¼{#“ü´|.w„C¿$sóN½›z¿÷ [óáÌ`†µQ³ci z[K–®nÿ(–ƒy2‘$I’$I’$I’*]ã×Ö¤Fw¶èéfAdc;‚ŠGólå€ÑÚŒ0«ñrQaò¶4ðRc U–¸[ßbocMñNVÔìo¤ [I‘Iɨ&%×gßÎæògž´sPakãÀÿÍo‚¿«'gÆ×!7â½\cï5=Mº·dÙ{¥Ýð<¬Q¡T3‘ÊΛÉڌ٬ÆËE‰ 08;áQÝôÄñªÑ£y&+w2sNMBB£Øk£¦Ž»†X]o¹PÓ^EæÕ5Ò LX[—¥0K&’$I’$I’$IR¥küú·!#&œ÷W¥[Èh1;.0ö’wnkÙ»9“¤„,VÍOÂÉ “Ñ„®ÈŒ0Lh}6£Ó @®HÏt#ñ)Q\ü® õè´&òõ%?ZË›){’Èðv¦C[ô×nv6–ï¢ô<ß«.“fØq73“¨_¯ãìë 1¸Igò´­-zÝ*dïæL²X¹0G +L¦Çóf6˜Ð=}-¸Ú¤ç‹ï p¯êK K+Ö©quSP¿† .R¥®3-ü×âÉGAaf×2 b©ç+I’$I’$I’$©"S—ÛÕ†Ù?¶cïäH†1b¥†œ<ýꄦY# 'GÑo”v½ê0µƒ¹÷]hØÑ %`çíúÄg[@GZR“ÇE L10÷Jcªa"«£OñÛÞ¨ÂØCù|úÑ Vj F=_¿ë@þQ ø1ülX1ÃÏh-'ÇÝ`£ê½[‡Áövœä… ^þ¦ ¦ÉQôe Ýu˜ÒÑ‚¼û.4ìPuQ«Å+í|„O1fé¹?]ß:ôú+b_JÙnÿHüÎ|æžÝ/ö_}j”?šOmä.±êóeeÖ•eëBi©bRû.buŒ©dä{bòà¾bÛ­|¹ ’¤gÐé´âÊ•(qóf|ù[âÂB'òòòDnnn¹ÙÙÙþ+ÿž&¶73sšb#5H’$UP9ÜûíürÛ±á,@·÷Ü/yF‚ð›·¿u‹t€‘”¼,ôï"1eœ“_fj‰âiÔq/qqqLìÍÇk#K§~Á¤[I¤îH£a¿|å[¶A,8”[r1ànB³¶\'6ö6M®Dñ}hR…+±­c‡rÿåïILÏà§—Šßþ˰FtwÂÏ3§ã(ê9•}óª.;·¦8ï÷c¯°ll'4Üfr­ ,KJÒ&f[.¥€–X~ÆÐ”$âByÐq 2f=gn¿Î„H¢ã~ãüËËx\<ëΔ•׈‹Ý‹)ñ(Û#²þ ¾ß|xŠ…ë›W°!u ¥úOåÀ³æóÈÌ8´Bh¬¹Ìð<ŸQÌ~o'ï`0ºòêBiy¤ÏåüÉmäñ77rh“SvaqßÌÂoÝ"2öf¹Q’¤ÿ õ_ÜDô¡TŠjºâk!KO’$é_CIaäW—±ñbL-»cic5m"/ ™S:. eÉÎ̳NŒ£Kmî.ýŠyê—X1²ë£©U­ù<¯Õ,þì^Õ†ZɶÀA®º¬gœà0˜Yïp•^4l4‘ú"ë¶\AØ  ^‡¶Ptqãב٩Ÿ4«RÁÊë2»¾M"Ðo#_É ûä4µºÆÎ‚Y|ïðë]³W =*|,À·+§oå²qÈP´åõ·öfÚÆpºº&SXwVªŠeܺ‰ªWWà v–%¡'x{ÂÇzôЊ\-”(`оË=Gú¶÷,Ó[©Ryv/_FϤf7ßí´îëÇ3§Q$lxsüKXaE»ñ½ØÿõÂÔ6ömg… Ø‚.Ãz‘zåWf,rå«xÞýº—ôÏ'ØÃŽª*U™±žªï Åûˆia³8îÜ„ÏßöáäÃÅýæÀ³æóùq¡$¯`}© ÿ£ùÔ&°zÉG´[¶¿s1ËòëÂcjVéFt¶«IÙ˜Îê0¨ %ÄŸdÌÐo ×(¨¢0ðæàõôîåŽBnœ$鿪Ü3¿úŒTF÷;C¦§ ¨š×¤=Ú9²õ°ÂÁF)KN’$é_Ƥ×á]£U38™–…•¥%Ž\æ¥[^<ÝÍŽgxß{*[3\û\6¿^½dª­Î°W:—?Ñ܃¼´^E·7}Á* ni(Rj=ö!+=›"ãS­*j5¦vD.™ñ…«°Œéä´iL]ï4h©aSûõaµªˆ‡»É…¨P+*A,ŠŽ?j§dæžÎ©¸Ù|£kÈ'U€¼pºo½ÅøçÑijK—Jýá_ûaU¯÷S VM•&ôò-mšaºÊêyQ€3î5 xÕ¡®c>WýÜP¡ÂÅ·Ç ÚÔõÐp#Àç ¯ÚÞƒšMý©³%–´RÝc~[ÁOz?ê;ü~}ï )éÙŠº¾ˆ¯½;ÀQ1ràá|ö~Ô)#»ãÃÓ­”«¦líù ·þ{h¬Cmc‡£åï×…bfò5UÕÌŠƒó‡°Çóš8æ ”.]:ŒxgÇ÷ìâ§•Ÿ“xm&É&¹]’¤ÿúú­¼Žé…øµpãÜæ \1pqÖeº Ëæ·ÕA¸Ú!¬ÕäiÑÚXá¦R€dè±³µD£ÐaD‹À»–N Ðåè1«ÌÜ‹1áWÛÛìn§‚@IH-kTr9H’$ýã„0bÀ‰¡Y1jÓ|­^@‘<÷Ç»éJ< ³Àµÿ'Øø,dHÉQž„ø>}P4ïÆZ.Ä®ÿ´ä¬QëcKú‘h´ztbÄÞÖk+kì‹÷,É-4â`ãÍ ·q+cGâð\­Újóé܈·^} x ý~7ndGbkN¤°’ôüÕ +ÒaiU‘cù3,±¶´Äöw†°±´|âLW&ëÆ¥Óí£!%G8bH]5ÏÉc1é²È)œƒù²à³F<ô‚u,?ŽbìžnÜ+¬hض sn9±ÇyÕÔ™Ì×›¯S4Ò­ðÂE3)Ëz4Ù™%÷²TÑV:Ró5¸×hAÿ-ؾæ-.Š·éª0w`,}®àܸåŽúT}O¸Lè»ÓðgOAF*ê:]ñ]ñ)¹k§ý£9ðÔ|–°µ¶ÂÚÖö™¹*® >mC|Ž>ÖZ’w,füÑXªŒdåäÓ!úeŽMèøŒºð¨€1š¨ÚüU‚&ÐáÛjÄ)>êgP*0;•Ü ¨0ƒC r'Y’þ†Æ/ Pk”%=54ÛŒ^;Æ6Sî£/‘1°n÷/°3/„ùïU!ÿnsVd2j~±®²5ß‘lc!­<; '¾8ÉWÞŽXž´â«YUX´-œH¿ÇÛûºÐßM.I’¤– ]¶`Õt Ì ¤av&Ò-b;£>û /›Û\øíàÏœ"pÇWÛ~yê™9–P£ç§ôò_}9¯Æ/ñnNôö¬ÅðQiøe]äb¯LH>Ň“æq'2“ó–ÕYön oû†×òqv´$õfúvõ¯`[ÏN¼åÛœÑ#`ç}uþº991¶ÇE†¾=ƒ¦Î1¬õ|“ÛjÁŽMßV‘cù#Ùwùnëf6ØË‘/2mH7ü4ûr9ºw- ÷€*+ýÞ¢S°Q¡[kìÄ’®ÅÃù¾ÌÙñ/ŒäÛŒ!¿ákÌä³ÏÑ÷ü•’3e¥FïfÁô½ØùRpOOín£ ºàã}#éojN°ÕuTy[èÌÖüż8:‰Ž® ¤Ã'S+`¼ŠTOžŠÒÑ•>—ûEÝY¥€ ºPaëGWã‹ñ?ÐäéѤêïÔ÷éßcBŒ i»;遼„^‰ýÇr ¼ùØ£N­áËU›ˆw9‹éÓoy÷¹§sõÓóÛ0|¿÷GlžÅŒÍW™Pt‘u[ÖòúàŽ`Êåèî§ëBéõ¬6»€\¬ñ1PÄ­Z/ÖlÆoã§3éR5 ïžÆ³Õ\<4rË$Iÿmª)S¦Ly²cQF67£ÌÔiî‚uIkØBÇ{?|®'SXÛ.õí9"™ºí=H8}ìšõéX#ŸRÑyªÉÏÐqlg>ðÃp8õðÖ¬~ÏjNÑôy1ŸA3ê°xf0^ %¶²rK£üü"23ó©^½Š, IzÄ’jm©à‚àùJ7Zµ®I ¿3/·Ã*)ªÑwò{Û–7­ö µ¼«Ò§EàSGR…Úž5;PÕÃ'gªUÀ×Ûàæ¯ .HCð"ß¼]¯øÞ}.i&7Ú¶k†›»7 = ªê†Y¬ì}èøÎk´r¨p%V£åkXä¦ ìjÐoz/\»:}¨’ƒOS& í‚“•’• –ß?.RDJšžF]:ãçæFpêØk”evè³Ó³ñjÓ™zîxáå`IaGF¯âgÿô©+£•Þ¾¸ØYWìØ yè¼ûñF}¹½ílܰµ1‚¥3µž{…×_©Ž{Zö A—]„£] oMë‰jü{>IÉ89øðÒC ±UWÀ€i`MB.®!¼=µU,Àl‹렷²ÅÅÅßàºx»XÿN}ÄÏÛýÑIK…k+ªºàdñÏæ@yóéïíŽ>'eõÆ´ñÅÕ7„ wërçÓµ.­š¶¤†Ûã«aÌF+Ü!ÔoèJaÀçºòvߦȧëH˜LFÒÒòP©T¸»?½ý4bmýìu‰…BQü_!ž ën ?…š<< d‡&é5¢x7²%‘Ÿ^$íõÚ¼þœÛ>¹„Å'ŽõÍãã›Mñ¿ŽûΤŽó)ù%(”ìÿè$ª¹íyI éÁÊ‚Ø 7é44šqw_e˜¿\°Òß'))‹ÈÈdÚ¶ ‘…!I’$I’$I”^_Dxx"uêx?Õ_«Õ’žžŽ³³3å4k0›Í(•JÌfsù—=«”‚+GSÏTâ¤Ò#îä`¹¤6U1r½Ð„Þ`ÔôþØ“žƒ¯Q¸ê%ü|j° ì,ïçšñv¤ßNdèªÖ˜µtFŠ/²¾{…^ ºÄÛÑŒv>ŠMÐQÔšØù‡býÊiÆ59µÿ1¬béyË“L?ŸÌ…oN pŵêQï]•™%IR¥sjlM\œmQ*Ú±/2 Séö±Åo[ýñqS}Ê ú·T ±¶¢Fý±\(9"zgó‚ŠÆlË)ؘCèOk˜õÍ:²K:¥ú’º~J¬,5´s´¯¼–¿­@¡©‚ƒšºmæ‘I&óÚÔEmk«‡ …‚Ýy:¥/^Ö8UqA©P0pùÅJŸ+7¿û„•5 …‚5%á$üP…ÂWgŠN\0ð ñ“{ çV%ŒóòðYy®ËáÇIcYxøö£a”W>Q9õ z÷X Š.#¹’Uv/ïÁ¡¯©¯Ð`ï₵RÁsoL¦ˆX÷tž€`Ù-P*©á&Å IDAT(F®ÿ{c&²2ï0ÿåžìê,M:³]¬ˆùýrxÄP^ng²uäó¸*•ÔËŧ~#–W|r¦xŸÖ”~”çÝý˜{2Sn€$éŸlüФ$>éGƒí)Šï@Öýˆ¤@.ßÐE|¿.šqS"Ùp$—â+«Íœ=ˤo¢ùbEñŽ*,cz2 'G2æË{œÉ)¹;6‰Ï&G2nê}NÅÊüî½£áÄy‘’ÜìøçIン®ˆ‹ ض9‘Ïg€>ÍËî1~z$s×%“ä)äxX&c¶§AW~H§€ÎoHC÷¿«T*±µÓPüØ. \í¦{2'«…÷Z²ÎÏûÑÐîiÍÌKmÑFwäônì=Ð]D¾hîNj¢™S©ÈHì„x»ˆº›ÒevI’T©d§·æ”!—̬Ì"Œ¨þ]X¸>ºx?/ý‹–žÇêÚOœ{Øh%‡u£?gܸql8SfZy&gÆ/×bÐqdE?­¹<`õ/™œ„XμáóȈ;Șéßq'ǶäÙÿ‚BçÁœ‹1S¤3ð¦³{.$V¸òò®_•hC¹ùFnžü\øôäMŒyd¤\âën?ÐÁ:LÙB’^KvZ&¿}»–¡í*ûó®±f¨7MZ„ˆ#¬ÙפùYiì4ä‘UˆGiÁ¼iS8úÀËJççáSy¾ºø4ÁíKøzÝIr£Î-¯|*¢Ø'ë#¤nùŽ®uEømœËî>z¿8‘ëÂ@^f& §—ón‡aØΪ!¥óä2€Û~Âõþg1 X6èïMŸÅžu³Yr(ÛÒ/Ñé^½’ŒW@c|v9”‘õtn?8ÿ3Qþ}È0› [êÇÚåŸ8d¤!=ɈÛO<{öÖ©¡*þÑ ‡61nì8æ,__~ƒ[’¤ÿMã÷îÝx^ äÅ㎞~ ­§äüÌ«üvZ·¶"õ‡ÛürÎ÷cØ·4ïúŽ„ø©±1)PϯC~̓îݬ¸¸4œÂül^Ü—L¯—ÜyÎ#—}· Ëü®gP5®ž½GPkcUºûPËËÕ¼­¨ïe –ÔkìBçÝ©šyŸ ße¡ñ¶ÀÝÍ‚z~68‘ÍÎÑqï›e³óó(øýßµ²l]t‡€Ög¨Ýúån+­¨rŒ‚²MYY…‚ìì‡h3(àaiÅ\ÔÒÜÏYf—$I•‹Â@–îñ×;f¢ŒYFzv¿q… /Ò©s3.Ì^N:p¡ûxbj?G«f.ùõZ™I¹V­KFŇãc®`¬æ\'ÑùC<hÆ{šëD¼É¹ý‹xÎ+¿ä–Õkûc›v;ïz\{á5µ«ZáŠ+æb"µ¼PÍÓ“sO¼ÑkËC÷#¢/Ó©ùKLÒƒ×^Ã÷³^+w™Çç1øf_æ¾æE&xtD`Fñè avN>zÓ#WéLþƒÓt>r€­¡*\ù|°]P”t„ä­,öžGòÃmJìÖëÎÓ£cP™á×-ì‰×'½qªô™‘ÌÑvD? 9r4Û6m¤¨>4‘ÁýøPÒz/àq³F‡ÖP‰Ãýyø(Ï{ú>ê–›_„©Ôi?ÿg–OÅS¶>’ZçEV¸Îݨ¾ѬÜr³Üñ.L$fý,”›'?ZâºNô¥›D>¸M§ÉŸ±K÷÷Ç—«5>þr}6aèí«âæý<De?ºÝ£ÜõRÙ=Èrr»xÿQˆÿ×Þ}ÇGU¥ ÿÝ23™™L:JHB½HUÜuÝQÑUÁÂ.¶U^–µŠ ¢ b[YÁ†ˆˆ²"JQi „  ôÉô{ß?@XÅHçûO’™ÉyÎ<çÌ}î=s®‰‰rÊ}!*üu¸k\< Næ-w“B ‘~tÚÃã¹óºŒ}=zýõ!„ø5ŠßÄøºìzw/_«6´³2ÛOâ/ò+;vÎÖr‚Ag{*{¿û»r@wYé9¬1û6§‘·³7Û>mˆ–«rýÂ46-lÀ§7®æ†7òª=ïþ¬Ã¬*«ÜöÐÉ(ÿ¤.øñqçUÞþå;ëØÞµ=E;Ó827ŠØrâÞz|t2ð{ ìUƒÒ ʱ0ä‹3?oåªØÊ‰ÆPNÜöó¬ÎëCY~–=ÐP2Kq²uÒÜÔ¹÷¾úd¥Û­SØ—}¼ü¶~ý‘.“äå8¾ ¹3ó”iÉF)_ÿ÷QFmKc÷¤Ê3!„%[6Ÿ2vóy0¹ê,0DÇDáŠ$ºjg{sÖþªP“À¨¨emu„ÌKM´#!>»*.Ø4 õŸ$Ù~Ò÷dqÞ—Ü”üH“œOyæ`Tå{eëI‡ôñ¬÷ÂÖmÇççҪYáI3¦lD8Ä\tþŒ<¬)Ï«ÄDºˆˆ>u)3ÏÔ>µOõþN]v±¯¤ò Ï)í¸Í&å›Í¤…cy¦ç™òäÖ’Iõ-`WU›¶è¹›#¿~|QNçc«9×e½Í£G1u^_̜–c5µ¯à••'¯€S=·v Iåa oé~vku ?å¹€Õr%é4‘±Ítʽ¦N@z匀P^.‡öÆc±Ê§’¿Jñëh–Ęg¢øäúïHæ]WÓ vM£yäæz¬¹k- í¾áŽƒº:iÓ1™ÒÙhØþ{®\\JlEhʳqiÛt5)WÑùš½¨ñ¥Lë¿’&—ïâßáV®M «ö¼Jé1þqÕrR;¯¦I‡•üõ3ëz;©—ÔˆïßÜ€sR6¿ÿs[ørMÛOû‹qyƒ@SRŠw¢ØJ6uiÚ'—úÍ×Ðôéý4ö˜Ø(bj¿3?oÐÀ]¬Ú‰3ñ”øñúŒÅtEŸÀ)Gõ|¥~<>óÇ¿Ëüä–KB !.^vë2Ò4§e‹5üÞ›ïæ¦Qq \ÍsñŸÑ6®))ÍsyÏ…äÅubŸÆômL“¤H†¼¶ªÚ¶r—<Ëþ8‘Õ/ÝNjb#n÷2^Ú0¼ÇnºÇ6!Áv ]¬²øÍ|ˆ”îÜq× D ypP¶êY:§Ö'9±5O¤ÇrõÍj[kñÚ I©©4ŠD³gŸ&àà®_×Q÷œ4=¶t3vóô;ÿ6%ᦅýGB*‰ :ž¡[è;߸ŠIMHnØ™ï{¤/À¡e Жáo¼D³þ÷²2÷bšÈi§ô'ò°æ<‡Õ¯ ¡Ù w1¼{ ƒ_ÛD=£†ö©ªõÇ—+G ¢xôÕ4H®Ï°àú>=«ÿO¨ˆñ/®áò鱞)Oþ’Ng‹ÊØé×2^O !%Š•É oô+ÆæÍeʽý¹ò¥7¸²í¦,;É™÷ùçÌó.oŽ†ÛžzŠËbkj¨Øü2w¿6§r[§äöwù!’®¸šØôi4kИ¾w®¥÷­'µÊ‹Ëq]§õÃŽwI¥e\öû[¹ìÛq´LlBû!h3hõù\â\SLóçã4 Ýê5˜&(2PˆŸ›[DVVii-¥1„¸@ƒ~møLù5#ûÍÆûÛ}#Ź|»OûÇÊ)ÁŠ´”â'øý^¶m;ŒÅb¥uëÓ–y<Ž=Jtt4g*k Ã@UÕÊŸ?»J® •úOÝ/ãŒBü:níÞ|­k8EòD\Êo·rú Š´”âP¥ „B!„BüÖégóಲ2l6Û‰SÊÇúý~"""N<ÎðúÉ>Àã71",´mtñ\Ý/àóá êD8Ï×jÍ!Ö¾³‰©¥u™sOcÉ@!Äy ….¹˜UUEQ‰]b—Ø%öK"v!Äy*~gÍšEÆ OÌ›¶Ûí8Ö­[Çî\†NcWt,ºrÚëTuMQ0Á“/â{J˜fˆ`Шl;‹~â 'ÚçÄöÁklÓ_?öšsRQULÃø1žÞONËùâ=ž3'й_Øg{M¹ú‹ûéicÂO·¦ë˜¡ã9¥ éÚIÿ²Ø…g±_t6NHH ))‰„„„ptt4±±±Õ7ª+ìË,a_Ž›ÿ¾—Ï?Z4gÏü§_|܉û.;Æ´‡3ÈÍ¿wôä@FmæcàfJ£üiÉå|óßÖ´ÿhËJ<øY6înÇÁmžâXµ«%xÙ°¤˜Û&÷ `o<‹¯ÜŠBþÚ|ŸîN#g{ݳ’ÅhTl=ÌJKòwuáÖ#‡˜÷mÙIÛ±òÇ{cyzj+ŽŽKÆWPÂ}_UðÄÌ.,›Ï[÷l å-m8´£wfóâ7T¸ÙŸéÁ|…eìK¯ ¬]]ºŽÜMåÕÚ°ø ;¿O,gJ£ ^~9‹?iIÛ¹é| ,»o+½’X±è2†ëù¼±¢‚_ÿÀÚÖ)ÌìÉ‚±AväK¢ !.âk<.k­_FѬ8Íb6mÜȦ=ñ'/i£ ˜òöocË–-lÎÈdnhVT£˜ÝélJÏÀgu ŠnÃaOY9F­ßyU ³†ÈÎÚNzúvއÐõ껚EÃ[xˆÌôtvìÉ&d±¡iVLo雨”ž‡ÍiEQtœ6/é›6’ž‘×ÔÐjcøŠÅ·ôô 22vSPÐTK˜BÑÞ]lJÏ`Aª¦W+UäîÏ ##ƒÝûŠQ­V,ª‡¬›Ø¼e [6g’•“Ÿ0ï>ÒÓ7“‘‘Áo‹ª\à¾]CNª:N—_áQŠŠRcŒzõ¾«è(§ä¼®êà99^›e¹ûÉÌØÌ–-™dnÏ$·Ä‡vžÛ¡¦\UÕÓ_óÏé§§Ž ^CEû‰öÑtƒ¼={( Uઠ?'›bŸ‰*u¬¿ ýlÿ¡¨¨ˆ;wR^^Nyy9uëÖ=íÈ¡Õ߾æ…VölÀ´A”¦ïåoSPjq:¬Ò¶›Ù¹ügR"¯V}ÀÚlJyº·Îà »ù0`ˆlÀ@§…û›Ôã_oíÀ’^‡ðËãèXýR½ÄÕ‰¤¹Ð~¶Pœëã£1 ¼@8W×Xx:iaôì¨V:÷u±T v8@©jOnïR¶Qø=¬ºÂÅiv@¥Ý 1|[DSUt«ŠèV »n±ô|0ƒù‹‹¸fY6ÎŽ°–dbo›ÛÅþʸn*öóL¬õ‹³þ[¿Î?ÚèØ4™¦³1õ` józŒ¼EUqÁ+ô0?;g¾Ás99®Øƒ/¹! )É\3ê_ íÖ˜H§_E9fðï½û)ÍãªT Å~ ®ð04>ž ¢ªhšZûWêW-„ùöòü+¯òåª,ôöxîþÛi®4+w‚¹«™üÏkÙˆ è4ðÆÜíä‹a2'¯Ÿ/Ö}¿à_¤`ݵ”ÛÇ½Þø*Ÿ4‚È€£¶¾çÖ9/`ÌGŸæ3ñ7½–'¿–a ÃDÑ,xo⽇^á[O!O)ƒF¿Ïˆë¼|ÓDæ„#vw4-_ŸÌ3Ý­¬û× Fm]Eê±H*äóôÀ]î¯U1Ûœ=y?Swº¨[èåp¿Q|7éj~1éÓæ±ÓRˆlËýS'Ð-AÃ4Qu+E{–ðìØ ¶7!TZŸS'roó<Þyt<»¢"±;‹Ù1Ç`¦w%îòÐr'u”,æ¼üÅpìÅ(4+ê¡oªåd”€Â¼üúl¾ú ˜ +Þ¢êãHÖ)1>?žÛRøƒFå’7óo{”¹ùÇs~ã'¤²áµyìÛªx¹‹7¾¼™½³ç2}ÁzBQ:Ùó×ÓõùyùÎŽ”UÎÓ¬rõïï1üF+ó†>ÊGùgÑOk¦ŽMì‘%<;füÚGǹ‡:u#aÎ2^tG¶ÏdH‡‰ÜøùbÆôÇÔíØmŒP²Ò‚†|òqA‹_MÓˆŽŽ&!!-[¶ÐµkWl6Û)Ó.L*Ê n}¬#:9OܺdÓ>,C»ñù'Gæ¯æîïLH²rù­Ep}]ÀÇ8¸e——»Öu§ À±,æoõ’˜èâݓɛͫvÓ±SšGüøœA¿Aåpiàóšã-ôžzˆì;[DïNª Õ |þʹ%>¯yÊÀÊõS²Ë8¾Y*ü~«JË•¥¬k¢k7 Ÿ¡¢]̨¥n (É*â ÅÅH [ÿ–äÏI§s~Å ìܺÓËÝë»Ó àh‹½=ý*)··âÞ~ €E;‚Èv3îýNĨ`ò‹«™Û¹#šËÂÜBˆ É$PnçŠç_ãk[€¥{‡Â!×0¤_#*<÷2âÿ‚Mƒa3V3ñ²Ý,ý` ?û8ý?ØÈKúlŽ}“% ½nû?¦>4ºò,O­?Û¡`qøØôÜ·”7ÅÊ':PQZ„'ðãH(¤Ëà{xõÎi83à%ÈVÍnÆÛæc݃»”wÉŸ0žDG]ÚµI¥Kí_Q±WfÊ®#Ü?ýC®ijcþ´'Y¹qm{¥ðQuÜŒ-ø#YøÉï(\>›^Ù€Ù!›§›Ýɑ齀m ¿áeò“Ïàœ:ä}ñPÀ£7aEY?º©~fí ;èõ’rÝø&­)6²¸{ð§ãcÿwÑî¡·x¡o _ {†][Ò=)‚!ÌP[ìe<üÚw4M!kõL>ZšIQ«+xX4 eÏSŒHú#m-Eøý Vk‚Ê&·{¿ªb¿`]Û€SrÒ4 °¸hÚ¢ÛënD…šc\¶“`«Ë¡ªøÕõ]|ÿîÉ9ÿ‡&Œ#é3XýÐñ–›vºŒx„F‡¡‡1cêû¤ôm…×<ǰjÊÕÀwcÖ¼{6ý´æ1ÁS^Ba ýÿh¢;acÅfÒ‹{bßû5m;ü&ºA˜-È«†ñÄ–Ó¸]Of|ô1)Ú1|!ùô✎góà~ø5kÖpðàA¢££ÉÉÉaÍš5äçWŸ—kuÙ°žò]˜«oìFÔ[k°Æ.§w¦áõZñÂ_ ˆLüŽwí¥"©ðЈI²¢U J‘qVÊ•8¾ÜÑ”‘®¥huVqhl/B‰#…»]Çã:Bûx![៲[£åhQÛ9¦iDPN¿¸å8{¬ei³T)|…µ¨.£,PL™Ç»¼w…«o-CZ¼Ì»»ò9¿Žú£ÿÎgönüqèÓÌþj³ûÔ¡^Úh^yçæ}ü:õ—mgηû°Y/†Åiô€Ý_ðÖ¨4\áVRÒn'=,ÇçìšÖðXÒ?~‰è0 MÛòÙ0Ì^ÜùV=,Š2”«ö?A“òr‚qí:¤? ~BµùÌŽipFÐ;ßÃÚÅ_“¾yî‚üþà‰³õ!€æW¦‰k:u, ]ØÂÕÿ„­nsúÍ[Äg[6°ióŒBŽÆ4æ¶µÛ˜µe›6g]QHQ@«eÓ=MBA;MÚÅt{Ù¿øs浌¡^ÈÅ ÿ bÏØn(z,Ï;2ðêæü¡ª¦2°»êoO!³?_Dq§&8>ÊJ*ð¾çÑîeÜót+‚EZ6få‹CQ’ÇòØ”;ˆóœÛ⦅#§æ¤a`82pð´ó4þGŒÁãÕY¿?픜œ¤r? O‹×‹ÏãÆí °á“™hO›–‚Áó× 5æêŒ?a7ºrûYõӚDŽM¹ÑuÿGû€I¥Q3þ¼ß®ï_ç¿k¯ç¦^ÍÆÆ÷§ðýþ«HÏÉeö}ý˜s×ó䫹&©çØYù4hÐÏÚQhqmKZœz³ÓÉ ôç…j7ðG7bü#ìÛsX7¥•5m"_•$V{ä€Gºqø‘3=g=î[Y¯êw·NìPõ{"K˪o犇ڞø½Æ×é ç¥Ï®â¥ª?ozò1Œù"1Õên¿Þ—Ç_?uC6~¹÷)·%²ì”×1ŒYtÊ6S;’qT’Sq1Ô†*ú¡<>yps#½”ùé3~%Kw[ˆ´(¨ºŽM©à»YñØÂeÔ ÷rh›“V Å{‘ÄôRœ4·}BZŠƒÍÏæƒeëè8´OÓ Çvæ¯BÌr–¼Ã«o~LŸÇxj[¶¦¡³‡G £é“oÓ$̇×ë¯q‘°ÚÅÀŒáƉW3nü <¶¼‚ܯ|\óÆm'Š_Ýb!ý›Eìéó¯.äÐÆ™¼=ë%’ÿ~/c§/cì㉎¯àÀWݸљÊä¥iôùq4Ö/ ñfœ‚YVûòèö(r—<Ïèo|~Ï`‚î\^›µŽîsÖ`6‰áë™ÿdÁŠFôn…çøÙJÍFxù^¦¾9“ìðVZŠËüØì°fòÛäNDû /Eh8t¸c&æ}yLHËŠô·I#À…šn†‚§ç¤Âô8ùÌc1ú*ïS-„å-áÉSs~â,Zªå§Ç«Øõ£Ìž:—~ŸŽÅé.å| 5æêûoÒú†Ö?»Ÿªºƒ+ø|Çj:ßÖõØŽšÛ§ªOùÝzOåéFOÐbý<¾ÛTȳªh·õ'Þô£5oB½^3q—éÄÚS>j„8WÔ ýô‘ulÄÇê„wkÆ[½cäBˆ‹€i† ¦I¨^4=¦~È&ÍŽËZÀÇ“šŸÀ·¡”Ò@8Ž2mëQÆÍø„ys>çÚ´dŠ|A0ÌÊmÔîH YbHQ¿á« ™xŠÁ ýøñ©ª:‡¯eõÚÊ£–þŠR|^ÖÐ>2æo¥€XìówkªhVqÑQ„‡»ˆ‹ªågvB>*\xaÆG|6ëQ~7¸>½Ú4ÀWu6KÑt*ö§³í»C„¬T|ŸKq…—v×?Ë’¯2¹OÖ÷ÿ™D_ Åñ7±|ùbÞ¾¯]†\MGÕW«¦<ha±[|·ìlÁ¬ñ£sB4ºâ¡à‡õìØá rWö•£VýWT jI&ÿœýn÷òÎ_Û¢ £i:¡£øêP!7véŽ;`âî`âœ-D84 ˆ»DÇb¹°õZCN*š »ƒ+,Œèh aVk1þxæ^CfWÏùO³(ñífr ñjö(ò>¹’¬žre¬ç¼Oï­1W×Á<ÀæOºŸê›_ Ïô÷pD48mLÀ CùŸíS9ž}|\ν/½ÈÐø å¾ !Ó$ÆíÁ?o#¦Õ†gçV¶¬hÃ’ºWˆßVñ«Ñ¦O}n¹®Co”ÂW!.ŠÂ7¤3LÃù)Ö»²bï=SĬþÊIDATܯ(¨z]rÿïunŽfà=*“ÅÒcaŽ´2¾‡†µuk¾­ˆ¥CÅ´9ˆˆ C©Õ§@Mü^ã¦Òjú](šÂÃyñüíæÞx½ã{ÕDŽñüˆ:Xlþ4©˜/]‹3Œ™$NCU¢i³r=}#øW=IdËßñÈc£ˆìýf”³Ö~÷WÑlh{йY,±—ÝÍeÿ|+uUÓS^½oý?ZV¼ˆª[è2êu®™:™—…ôBQF·žl†á·b®™€¢(t›TÈøWïD+õÔ®{E#,´™™On'cÂPÚ6ŽFQÞÏkÆS/Ž`ÁÃ}°è*©Ïè¿ô9‘ªÅÊÁõŸ³xÜ|ž½¹#N›Î€Q“(Ó"X»d)ÇzŒ£gS 0H0²ýsþb±aQ¯Á>ã_ô z\¨-Ìï«ç$±1Xö/¤K«$ÆÎ¶m¯gÑaƒ‚ô…§ÅXrVx†—ò†w0ëäœ_±†žõë“¶ÿ”x a‡¾äÊEw0û¹dü¥óž5æê”ñD6¼…·øý4ÂŽé9BVA!,§ wëEÖªygnLB†…˜d¦¡Ð`@"o[\ütöC³©«êô~d·=?xÜRý qnÇ<Ó4¥[‰KJnnYYy¤¥µ”Æ¿yGŽAÓÎõwk,NŠßÿø¢Oª•¨hð”QZáG³:‰t…a”Sf„††—Šrt¬VŸûÜíø†Axx8v»ýÇ®‰SU¼”•¹«O‡Ôl¸"ÃÑ0 /¥Ån‚&X¸ìÜ¥Çð*‹˜ˆªåB^ ‹Ýç$þó»¢ÙˆŠ GÅÀ]ZŒ÷Ôïe*N—‹0KåõNKKŠ„ÀæŒ"öh ¾"oUÌ'¥A wá´ê`”•áý¼Ø…ø-óû½lÛv‹ÅJëÖN»ßãñpôèQ¢££9SYkªªb†¿BŠ_!~ËòòòPÕKgÉÓ4q¹\8‰]b—Ø%öK"v!¤øýùů.M*„¿]ñññ»Ä.±Kì»B€¬ .„B!„BŠ_!„B!„BŠ_!„B!„BŠ_!„B!„BŠ_!„B!„BŠ_!„B!„BŠ_!„B!„BŠ_!„B!„Rü !„B!„Rü !„B!„Rü !„B!„µ—.M .M ¦iHS!„BQÛöÖ¥Ú~»¿BüÒÄ×Uöí;„a˜ÒB!„BÔBªªb&Ê9ª¥ø—œP(D0âС2i !„B!j9]?7e«¿â’Ó¨QÅIC!„Bq ‘¯„B!„BHñ+„B!„B\ìþ§ºN«ÍBÙéIEND®B`‚awstats-7.4/docs/images/awstats.ico0000640000175000017500000001774612410217071015253 0ustar skskhF è® ¨–00¨>( @ ã»µÝæõl^`ÿÝÿÝ«ä0)1›kcžŽ™² ­œÃàèÒû‰mŽ6(5ÖªÛÙ§ÞÅŸœ]`lz£½Ÿ½ØÓÎÞ×ÕŲ̈ӀXe“}]~6/;l`d_ez”«–Çíøÿÿì‘…xoo7.=>64ŠwqqdXº¨pc]‰^Y™qm˜u~›³ÐËpiÍo`¹›—sc^oUM~=53‘ƒ„…zxµ‘¨µ¡¯ijcX‡nnž™¦ÈuÞtcvrr…uve71‹wxJ==/$0ËŸÑ™„‘‰\P‡`Vªh]ÖufƉ³•”¥x›tq¯‹‡ÿÿÿÙw¾SLL35L/ 4&QQQQQ//?K34/>:2B4QL# &>#2:/K QQ:2:ÿÿÿÿÿÿþ?üà è È X˜üþ/ÿÿÿÿÿÿ( @€€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿX„€ˆhHˆp„„ˆ„pÝxVˆˆHG}…hXx‡ÈÀww||†„ˆxFˆwwˆ‡ ||×ÇHXˆÇXt||ŒpЈ†ˆwxHp p„…ˆwwˆp „ˆˆwwupÐ×׈ˆ‡wwxp}}}Ðt…ˆwwwÐ×pˆˆ‡wwÐ pHˆw‡w pЈxw }x‡×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿðÿþ`ÿþÿü€ßÀ€ùÀïùÀÿûÀŸ3À7ÀcÇàyïð}ÿøÿÿü<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ( @€{RJ„RJŒZJ{RR„RR{ZR„ZRŒZR”ZRœZR¥ZRÆcRsZZ„ZZ„cZŒcZ”cZ¥cZ­cZ½cZµkZ½kZÆkZÎkZZZcscc{cc„ccŒcc”ccŒkc½kcÆkcÎscZZk„ck„kkŒkk”kk½kkÎskÖ{k”ss½{sÖ{sRc{Rk{ck{{s{œ{{Æ{{µ„{½„{΄{„{„µ„„Æ„„¥Œ„ÆŒ„ÖŒ„”{ŒŒ„Œ­„ŒœŒŒ½ŒŒÎ”ŒÞ”ŒÞœŒ”{”„„”ŒŒ”½{œk„œœŒœÎœœÎ¥œÞ¥œk„¥kŒ¥¥”¥½¥¥Î¥¥””­½­­Î­­{”µ{œµ­¥µÎ¥µÆµµÎµµÞ½µ{œ½„¥½œ¥½Ö­½Ö½½ç½½ÞÆ½çÆ½¥¥Æ”­Æ¥­ÆÖÆÆÆsÎÎ{ÎÆ„ÎÆŒÎ­”ÎΔΌ­Îœ­Î”µÎ¥µÎ½µÎÖÎÎÞÎÎçÎÎïÖÎ΄ÖÎŒÖΔÖΜÖÖœÖÖ¥ÖŒµÖœ½ÖÞÖÖçÖÖïÞÖÖœÞÖ¥ÞÖ­ÞÞ­ÞŒµÞÞµÞ”½Þœ½ÞµÆÞ÷çÞÞµçÞ½çç½çœÆçÞÆççÆççÎçÎÖçÖÞçÞçççççïçç÷çç÷ïç¥ÎïçÎïïÎïïÖïÎÞïÖÞïïÞïïçï÷ïï÷ç÷÷ï÷÷÷÷ÿ÷÷ÿÿ÷ï÷ÿ÷÷ÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþa9*YþþþþþþþþþþþþþþþþþþþþþþþþþP:þþþþþþþþþþþþþþþþþþþþ‡þþS ;þþþþþþþþþþþþþþþþþþ|x‡„ & !aþþþþþþþþþþþþþþþþþ|þmD0U32!)þþþþKþþþþþþ[uuuu_Xut#6F>7 [uuQ +Juaþþ[[[[[G[[T & 0NR7@@e‰q‰ppaþþþj’þþþþþzh‡þþþþþ‡hhzþþþþþþþþþa 6*7@WW^po}aþþþ‡h‡þþþþþþ‡hmþþþþþ‡kþþþþþþþþþþþY =RReOe^}}ljþþþz‡þþþþþþþþ‡‡þþþþþþþþþþþþþþþþþþþY=Rn}n^eЇhjþþh‡þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþg*?^f^WŸaþ‡hmkþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþg>7JJaaaþþþ‡hh’þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ‡hþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ‡þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿðÿÿÿÿàÿÿÿÿÀÿÿÿç€ÿÿÿãÿÿÿàÿÿÈÿÿÌ<ÀÀÿ>?ÿ<?ÿÿ<?ÿÿ|<ÿþ|8>~8?þ;ŒþsÇÀÿsãáÿãñóÿ€çùÿÿÀgÿÿÿàÿÿÿøÿÿÿÿÿŸÿÿÿÿÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿawstats-7.4/docs/images/screen_shot_4.png0000640000175000017500000001047412410217071016325 0ustar sksk‰PNG  IHDRxZDÞbÝ.tEXtCreation Timeven. 12 nov. 2004 21:13:49 +0100ð+Á*tIMEÔ 8)5[À pHYs ð ðB¬4˜gAMA± üaPLTE@b[Gq‡uos{„ŒIZ¡]pœsƒŸq…­”xZ™‚oˆ„Œ™…Œ˜ŒŒ”ŒŒœ”””N© ƒš¦ŒœŒœ¤œ””””¥œœk˜µŒœœ”¥œ”œœœ¥œœ¥¥”¥¥œ œ­œ½œ­”{µœs½”s½œ{­­c­­s­¥{²¯­¥Œ­¥”­¥œ»žŽµ­”µ­œ½µ”¥½œ¥¥¥­¥¥¥¥­­­¥µ­¥Æ­¥­­­µ­­½µœµµ¥½µ¥Æµ¥­½­­Æ¥Æ½¥½Î 5^¹R¦û¢ºÒœ’CJ"’e9’LÈ¡cÇ’S—RBQzTQ’ÐPd=1 $cs,™Tädâ˜~i ýò'SzbjêÀ­z÷µ©GÕõ)ÝÙàºÖ~š>¨)BN‚«“'à 9!áÂѸÁ6S'õ 2®Hxc\%“{ö$•¤öîä¸~ôh¸;Ü5øàÑH__Ö뺣ìŽÿøÁP¨'Ô 6¢y¦šfhD£ªªiø5`7[€8¥âQ‚«!Ø×œ}cL‘zâØ«>}¡—¦gåë×õE"¡Hd](CrhJ¹Dœrñû¤é_%ä¨<:&+@e©Da_zÁ¬5Œ–˜ü¢ƒîÆÏݾàÀX"RD‘,³¬ ¯¨jL5œöí[¶lÞ¼yË–ïÚuË-»víúðeé²×>Ç—† í’ÌØÐ€j ¨–Ýžþ½Å-/¸U=}úÏ?qúô?ÏœùÛSÿ8sæé':ô•COíÙ³ç…VxÉjÊ™dFc”PF9¥”+nÞ|Ä"¡õG±l‹ÍǶ ¿‡­ePJˆýÑ´Æn»5P°Er)’›LS¹Íå(¬S¹\…ïû§Ÿ‡ÖôåLôº[ð°6Àƒ[‡ÿm- (8à™øýQ2YL-!ËL¹8¢©µû×K<ŸÏç³¥&Áfï7-Í Ø¯µ®f¢«9ÝnCOàÆIãöm·=k/(˜ïÕ >߬ñ/¾…ýØÀ/ £èjWc ÏqXÃaëÖÝO/Yck&õXŬš>ÙæG@cü°šÆ\CM-ÍÕXC’ÿbT³?vxI ÍB¹\¨ UŸÆø÷šw—ƶ³pëÐ Kc³P(gËùtÙ§ñý_³(Ä’ºu[Ü@MmêhìŒ55 0iö­KSØ®ð¥j¶Pβiÿÿî`,oкfNî;ì<`Ö_4címW ¬€ÏÊ•+Vl]¹rëÊm[·nÛ†W[<à†ø†îfέí9kj@ëÉÁEIºÄ®\ `ÛV»ÅnÛ*ñ»&Y Á柎X†AhÝ @dsWsƒqpoèÒs %$W‰±ñdRO` ޤùI£ØJãìÍÂ9?á* «³ž Ðøe%©äºu¡)9îé›’{¢ ¥'´.ÒÓ#Í— ™L¾Yã#_µF_ÍI£ÆîÙÅ5^$@I6¯dý”ÆK~{¿/8ùÍ©qû\€ÆÜ*ŸJgò…&»¿kAþæÑXkÔ˜bÜ5 :ÛÏilÎ4`íÚŽöµýíýým¨qµP:ÛtÉÁ59Þè8¸³E‹ãÁ›Åbõƒ°ç4êÏWçªæÙ&gmÞ|%úCb ;ñØf®ÆÔa:OºˆÆÁ`Fk@®«zÇøü©üÜ|‹ !‚-7›Ç¹Æj—ÝxÌ57c"kpIéâ1¾\Ê6ù̹ CX3©³ab[$9ƒ’@ê2÷Á©æü ’«©¦ý’­‹Wcpúħ±ä* Rd³¥f»ZÄPÕ˜èÑØ’LˆŠâS…¥>ؼr1 ºšaÉDõv†4ÿ[ðwv¥Æž =mÞ¸Û˜Ú@Áà>Ê~ZcÝÖ×ò …±AcêÓØæ5sò†É‰‰á‘ቑ‰½#Ã’yª b›Ò½"fqŒ‘@srÓ(—\ŒyÈe-Ë'xxûÞáþ#ýý"haNTPš &r ζ"Ž¢A1Šî ¿„B"À3-ÆxH’j¿CWb jvÌ<]]³ã—Mä»ãŒð ‘郞+›â¼¹x ¯Æ³Ìç5vÛ/›Œk–ŽÃ28̾\óà««Ù¦Ü'e`AÕV¼„ô Jg›<—kN®Æ/š­jo‡Õì®ý†‘jr]ƃ¬©…9ù5v—Å@0º]Œ˜› /¬…–Ì™0Øò fõÐ~!‚5G011€â(cÌÄQþ›P˜gKŽ-y,ʺ(8gBúljˆÞŒá„+³”ÐDreÒ¥t!ŸÍ”ò3Uûb‚›§Da~°)¤3žãæEª$0 £$˜ÃAúc0ø€·—æó…RÕnªSg½.§½³­ccg{{[çÆþööµÃýÐè™|l'XO|yÇΙ•„H'„ò8¯íѸrªT3«fù¬ÙÐÏÅYr“¹R¹Ô ¬fƒ¨$ zv#Ô'˜¿T(Ï™P³UkÅ †¡Å†T(ó=ÅD3 ¡ßmB q\¸ È4VlU²™|5_‚aöØq³‰-çÿó« †BưÔÙÀPLm–Q¤_¦-ÿËÄ:¡%ñù@¨V³ÙÛÄlÂéjSj¡ËÄì§›òóåtÙ‹`~Ær:Z64E–ÇÇ èŠ26ž”•ñ4FƒÞ;a"¼fÙÎë8%Ô×£·|Ÿ$¸Â8[¦=Áå'Þ¦jº¶ˆÆ*±—ÐyeÙKOnA ÀখJÕE^ñU–ë>r„…¤“<±p¶ˆàœBì‚3ÞðVŽ@j ºÃÖXD0’^Оb¢‹y‹x™¸Tr‰®¶p†­ sL YL°˜‰à”»¯î9[2×4æâÝÉ—èîE»§(–‹Î9@oœË0ŒWÏ8 c¡˜`‡ËUV'YŒ\µw¦ËcOEÃEÅ.ê„EÉ¥i†½,¸ÓNâun¡Ä„t’lª-&8©J‘Ð"Éá[ £Hs¹ý”ähŽÒTŽÁRdÅIÊà,&B9øm*GIЉ7ýL˱J®(~œJá*8 snbc ¶k3&˜‹@†-KüAäç ñÍ©+”ŠZP…ø#„sø=¾tネàK |cÞ—X0Q7Ž=>;ŒÀÄÄÈÈÛ0̲>iá/wuŒérBׂ‹ …ÕØ€Sµ ƒž%9ÔÓsìÒþ•©¦¥'¦󪀿<é®jË ÿïN2‘Ho´tÇ[»ºC¡>Y¿)ÖÖöÈ Ê›ãoOÜ>®bͽ«Õ5{/^µás½÷uÛ®x“$¯Õ¿}mBÑÖ(úg¶éX¼­3®¬–¢Jì²!=þþ‡åš ŠòÃU›teÕ»äø5o‰Ý»zT¬¿A?ùé«?uÓåÑþÐu÷|uÍÞW§¥Ø;Âáp$<ªß”ìíý馸õú >‘Ð÷ï}xC"œ¼J]ýžïÿ`ôêW)×~¦;®o¿n02Ö <¸.2(·u FûÞ&G†.Dåkß)Ëëû#w¬Ò¬ŒÊ›®†G×ÃO7<š8žP÷k?øóJüžû^,”L&¦ÿK&sÐ’‡–ÝIEND®B`‚awstats-7.4/docs/images/awstats_logo6.png0000640000175000017500000001356312410217071016364 0ustar sksk‰PNG  IHDRp6á:sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÞ ) UóIDATxÚí›{|TåÿßÏ9gî“Ìä~# wÂa"*Å-¶Z[«U‹Ýúk»nív_»]/ÕuëÖºŠÚVk»µ­?û«Å[]ë,TŠ ¢˜$“HH!!$ä6™ûõ<ûÇ$ˆðòãûzå539ç9çù~?Ï÷ú|8Cgè ¡3t†>û”EÖ=qëI|úh °`Žžŧ‹`  „¾{F$Ÿút@CgDòé *àà(hGþ]ö™åøéí»? l` 8xòý}*é?Ÿú#ÿyíWyrkãE¾–æ›±`URµ”ªF(*ă¤ÓiR± ñDœÁa¿ìYþŒiM¿üÞ7ÜþÌKÜsõ? ìÜÜvÄï¤@$RŽb´xë3àÏ^^Ï÷¿p1ÿöÛG¯R ¦?¦Í²ó+¤¢!’1Ê ó@"­M$ Ä“$Ã~$‚ÀÀ~¹gï^!ãQ"±[ñà“Mû{¨ª(ý85ï°†I¤6À®ó¹À±‡v˨ï+õ…Ÿ^µá n¼hÿò›ßÚŒFS¨óЀœ:}®(Ì+ ßfäP0ÊÄ|VM%–Îp+c1’É4Á”$Ó"£~öíi’M»šEM•ëË¿ÿÁÍ/üà±?pß·þþcáM"|xóAöÛ±?6‘éS€EÀ%ÀºÏ„ }ø/ÿïþžýßÌ«tQžcÃn¶dbmE¡?¢Ìa%[SÉ6ˆÌ’–’”„`J¢ý þ`ˆýýÃDR’ÁömrK]“˜T˜W·ögÌù¸øz‹õ8ÉŸBo®Æ}°È¦~Pžñ© ;V=õJGoï7ÖBY`ÕH$Dâ 4M 0ÛN\WˆêrteJ"iH&…£‚E‘Œ c1Pä°SX\)LšJý®–³çßðÝ€ý‚%§§fjÈ&wVŠtð‹QðÌÀíÇ“(~béž?­à‡O>óÊžîîe{Zw±yóÑÞÞ«_fÍúðÔo%! OÒí!©ƒM %t¶¤'gÇË@ Dï°ÿâÁA&TާdòTº»»ís¾~½ ½¾‰ëï{à}„Þ|øûvœ0ouÔ1“óidëx| ¬Æýoul»¥xîxè'š~òÒºMݶu±?”“Ç•Šé3f#Ï®ùUeÙ‚EÔT¹hjiÂ5½šÁÁC¬Ùð–.YΤ’"vwîcbÙ8ž[ý Źy Ù×7DYN¹9t÷ö£i*-Ý}ò@G‡øÜÂs’OÿðãÍ«Ïy³©yû£ð¶ƒºJ•T‡@ÜäÂý`Û©fîØe'à?eØ€÷Ô"—c`sýŽ úcºœ_s®hëêÆdͦyWE<øÝïP\P„·ÉGçþv { l;W#µOÀ÷\¸ÜÁŽ#ÁãxÀûHVãÆ‡÷Bß)Ó»ë áš{VÊsÎû;.¬š"¢i…,G.õuµ´ïïäÚ¥K0Œ4ûÞÆlµŽ¥zŠDZg¬Œ/¯`$ ò#•:Ïlkn¦¯·,ƒB"š £¾‘Õ?ÅöÚZ„ª!l6aŠÇxã­×ŸRæ5v  KYJÞ¯)(^ñS 4à¹áÄÀó,(oK¸ÕEͯZy›9œX uÂúðVIØàÃûyî“àMýlöP8&çM®Þæ&R± ‘&!•H²§§ƒ#~ZºzIÇ£LŸ9‡¹3ªê#2|œ¢ &UTŒÅQ•á¤ÆPk3z"JÛ¾ä:Qó Ðôþ½”O=‹ÒÉãÑF‚¡˜,ž·ðç³*ËFk[5øð< ò X4 ÷íe%ð£ãåçm^³\ËlÔ᪩¹ÿYže*ç°œ´n$Ô h^ôáÉ;™@šÍ–mÑh“F §¹½x4‚¢ȱ›)),â­úM㬉“H¥u Í*VW³i‡‡]-Íô‡b¤“)‚Ú‰è$Ii‰Ã S6}çÏ[ÌÿûÍÏ)/¯àòK¾H0àç™`T"!â{¿¬Èðìñ€˜ª£WT3·«‘íÌbîÏ}xï¬ÇûñˆëÝæï]ÔDUTáÃ{=ÈßIijq??–ÿ}R>x\¸iÀ»èuáviW,ð^kÙËOV¿üÏ¡0·^³‚›î¿›p €ÍlD¨,Ìã+.ãÍ-›øý£Ð´e+O?·Š¾¾n ³ìLÎÍâú%ðÿðOœ=u*ºLQµ`‹‘hB’N&°åa3™˜5i7Üp—}ù*z{:ÑŒFÎ_°]‡Ðà _¹íŽÖ¼ %"–Daí˜u,y³€»˜‹ϱ]ÞQð<׿qi5îç3äG!•ã·Û^\ÔàÃ{«€e9¦÷+€Çð¨'Ã.ž6P8:cùü2/;›Ý]$ûÐÛ¾ S:F[ÛþôÚ&^yqÉ`” 3§³sw ËÇó_O>Åòþ'"É$Æt‚?ÿ9V~ïû h'"Ó:‰x‚âq•¨šÊ` À³OÿžÕÏ?ÅÆ-µC¼û»PM&6½°ÚñúýoVã^¨!¢¥T½k®.jçÃs™‹šcù:ܸ©Ç{ ˆ'¢Æ…ûå“éjŽÀÑ ¥X òó.jGÍés@@Ü~²´0–LÞÐÖÞ*zã:ÑXš¤f¥¨b2æ¬|RÉ­{ˆ…à(ÄÂ!ʦTñØ ÿÃŽ-o@"NçH¤uI‘UãÂ¥_`|• ƒÉ€YS …Áhçù???¬ÓÑÐDWS3¹Î|v÷@0€RÈ•?ÿ±z×ók©~Þ$â2à™¶äQ›ÕÔЀç|J’ž1‹¹ÞÆwò¼Ó />¼f`/ðS5k3+Ð=ÞÜåã~Ôôâ­n¿«»g?9Yv<õÛˆÇB1ºöw³»n+³¦MB1(H͈’Þ}ì¯ÛL뎷™Ñ{“D> s\¸ëNUºüQè(x· ˜/‘¶jjä±M ·ø p݉‚ÐŽ¥{EïðšÝ† E9fœ%¥üô7¿âP×>F†‚$Fühf E•¥,ÿÜe,›2ž‡_z‘·š[Hôu¡K‰`ˆD4IZÕHwí!ºŽî‚l'í­(#ºf`Â̳zyÝá-âQ¤3OtìÞsZ ?#Q~åÃ{…‹¹jÀ³R­Yᢦ«™ff2ó”íE½¯öIÄR¯K\¸_kÀûžþÀ‡·V"£ÕÔ\xÂAÌw¯ÝY»yy,šB1Š áz,Š ¤Ó:èi’‚‰¸öK3‰¢¤¢tôúiÝ^Ë€Ì&M¡††!FJz #GM« ( “™ÙçŸC“·%8‚L§3×UŠÊP‚~ü»ŽÃRyÿEfúXV¼ äÄjÎÙ{ªKÊûïS #È5À.ܯ3ïQ]ø¶@,õáÍ;Ñ %ãq¬“g!…@¦b2š0h©D’œ¢BœÅŨV çžSÅ`ÿ!ºöî!KŽJ™‰E“E@: B@4Œ!¥|gÅ PœÎY¶”æú&»©ë(FBÓF ÷#S©œs-qá~Hdäùµät€÷¾&´È= Ú\¸oùà(µ Ù‡× ò`ÑXÒÿ¡ÔÌD;¼XrL¨ªf°ÅG"£dúTÂÃ̚5“qSÎ&=ÜÅ–DÑQ¬ÞÚJÚªICôh¡i£{Þ:èa0‚ªR>c:u¯¬Gd9 ™ÈLÀ`@QLèÉDæ>]ÿÀ9ŸÏRÙŽŽ|ÀDòÑ8F?§‰ÞÏÞ¢p5àèI"— Džév}Ø Y]¤P¤ÓbMâ¾ì+¼°ê1Ú^ES9Ôщ1ëM.˜3U¦‘“ “6BDê›ÂJX‰J¤Òb…„?£B@*‰(.cû^”dCðP¦·!A P°Qdú¸æ=]>pºwk”÷HÚ/ˆ›€9.Ü#Õ"(©¦fxMÀ£Õ'Î_.må“ER3±»±‘®ÞA&¸ª)®: KŽb1²³ÌJdÀ‚\G®™30Ž'…JLW‘f+ÒbÅh·S\dÍ„YR‚ÍŽpæB$ŒìëCO§!5«a2!&°g#-vÌvÛ'z»MyȦxäDÃ_î% æûð.ý°cçÍ[Ü`w:ÑJ§bÌÎáu/áÛÞ@oï¹åe`0`u:qŒw‘iÙ’ôõ°è‚Køéw“7~ Y*"•BÄcHUÁ¬) ‹1N›)ljTT0AO#!„ÅŠ°gÉL~Õ Tg.$¢\|éçŸ*GýV» ÷'R;b̳'bR®v¿­ÈªÝYK|ø¹yv„ƒ}Cè–,zö ·l æ¬<¤¢a¶;¨ª¨$”Ò¹õú°•N   ]—,V°åqöEQX”‡ÁdB„Ð׃°Ú 2ˉ´X‘á0Ye%Ì¿˜œœ,D<Ƽé3§|’ÔŽ¡=Çüþ!´o Ä뀸凉æÃ˜a“ÅFYyí}08$“`±‘Öu JKÙ¹«ƒbÅbI0uêLZ ѳ×GÊœCEI>G6š¦R9qÑ$ªÑLÿžvb½½(f :qD,†°ZQbat[6Ò)0e;2ÐÕÙhà‰5k†;{˜UyÒÛm@9𑺒OiKEÞ»|Ë…»ôx¡Å×}ŽDù‚ïtvüDIDDOÏŠô4¥ãJYvÑb*Ê'Ó²«Žh"‰&@&Ã8²LšpÑ´D*FZ›¶bÊ.  Q·s'ƒÝ]„Û÷!õ4ŠÕª‚j¦¥OJ¤¢0yÞ\¹ùìöÖ †¤t÷AOm…§LL’i™x Ø„Nˆîñ˜R?J|x/=^ ¼ú;põ¢ù›ãšI #8°ØÍæeñ¥K¿@¶³˜úú-ìïëÇ–æ¬Ò|úC : “W2c*L¶3Ÿ³ÏcÓÆ Ôo÷0®b"•ãÈž:a0 'âÈx‚t4œ‰œ…ìÒ2´¬\vlÙN0žBO$Ä+ï]u Áø6™vú»`„L3Ó²O„Žù€_N‰ã-³}ý¡_÷ÿuíš;w#c®üêß34ÔÇÁyED"#lªÛK(¦¤$T2I2)9oÞBñ4mm,þ»KW9…‡ï»›³€ƒÝ=H=ŒÇ)7~eûæÈ¯õ´ÈìYKEŒž3-¸èÔÑÏÃ×È”ßÃá\G“·ºžùm˜ ôÐÁÅ[b> h/° aÛŒ ׃ïÖ@˯KU¥>ª}ÿpÎôÎóåëáÈÿ‰Ñ ©¸" f‰D äáû¥GÝä§$-ãŠI³ $º9VÑõÑ÷óÎg: ªŠ¢(H)·«K9šÿ>2#g™§(Nª"Tuìù)âHù·æR%™£ç<Æò1ø’GW)–qÜHlz&ò25ª)Ï‘9ìy' òr¤0"Æ^%2+H*GìSŠw&.ŽéH…ÌŒ èH§x1öíΰˆß±íßB/QA€.廹P2ãF+&¶ ߸ó‚.ƒfpw5‰ÞÁ ûÄ10FK'3÷ª™L“[^”©ã±Ë(H‰?m {(F¯¯!$z$’)R;r@QÐ4t`Íá jÁBš|252$V|ñÅÿ}ÏÚ0JB‚ŠžaËo¡I”`ÈÄÒ*Q£€dˆ M’Ð ²J­Ðñ› ¼G5Ìñ×·÷’9¡ÔŸ1 §ÉQ[½RÀ³2c;“Çë _ß×7qÕ Ï´³Iö‰´Bç@˜}=ý ôB‰R’*y…yhBÇPX‰Ål¢H ¡*‚ƒìÝæC±Û3J‰.Ä¢H‹³—/'ÊÖ âÆ¾yå}ׯxŽÓG (;a`-™í¹?þ>½QèÑi55ÿb7ð‹Ñޚ㻽©¾c¾{Áõ½I‹(Tc2ß`A™ÂŠsJ¸ø‚J¦Å´¹gSZ”’’Žˆv6“GˆH<Í@ NA– %+ ¤Dê롤RJ¡eÙQrä`¸úê/­>Íà™€> dT_Ü@.™^£'Þ¼Óª£@^&á¥jÜú½Oxškê¶þu[a²KêŠA)‘©Mà ³rtZý:=#t÷öCZÇàÈ#ߪ1I°§nrd™Р!CaP¢´B !Å¿~ïÆ¿ó«WÜsÝÊXõƒ›O‡8Œ€øoà) r¤iüĤÇÑ yɱÌèØ”ïÍ™Ì.Üq€ ÍmÎÚæÆa=<€Ób”©xH0ЂD!¬«4õʼnFctG‰Æ’œ;½„,‹‰„.ØÛuþ¾aÚšÛQ,4›Uê¶l&Œ+FM²íw¿mûʘúÉxÈéÑèi9ûß^÷Œ‚ç¹%ž¼f <oÛÿ¯ú’ˆ²éê©Þ¸d¡K†Ò*I‘ÃBû@ άqv‚á(&%{6”OcîUWÊ RVQ$&–l®ÿÃc¢¬²¢ýc(cê'ã!Ëé$ží ¢.Ü ŽnÑðáMjåy ¶«»ª¶žëΟÍCë6þ²y·ïMš¦Ô¶t ]JÊ a,2Áæ$®Z‰ë âAÌŽ|Ò†,Ì"¥O-)ôüèë×Ëg€>ðVè*%r¿@ŒiÞsÀ f»p7¼¯OÜâcŹ.îzvõyA_~0ž|¶yo§Ù '; ‹QÅfµ’e±`·Ù¿ò÷í^ºè’¦KfMùýÛùÆ¢¹œ¡qKž×мÇ}x>¼SOÕ;Ÿ¯oýÌÉQ||zHKXò6X”¸pGÎ,ïOhsT^¨Kä:bþx¾S}pôŒž4 D LÀv‰\ þSqÎð ú´âÔ×>C§,9#„3ôÿ7ý/ømD8SÌxIEND®B`‚awstats-7.4/docs/images/awstats.svg0000640000175000017500000164753312410217071015304 0ustar sksk image/svg+xml awstats-7.4/docs/images/screen_shot_2.png0000640000175000017500000000747012410217071016325 0ustar sksk‰PNG  IHDRxZDÞbÝ.tEXtCreation Timeven. 12 nov. 2004 21:05:37 +0100fAétIMEÔ 8/Ü8fµ pHYs ð ðB¬4˜gAMA± üaPLTE;Mxúè_Å®GB7^º?—lÙ²¶í[¶ïÚ¾sË®;áøÒ]»nÛßË/¿|;`'â€]€Û<Ü~ûÇ=|¦Œ8¾ ø ÇCe<òÈ·ËøÛ‘Èƒw…Ã}ñÉáÞ¨ï O ½q)Ñ' B8% }ÇŽ¥&×!)—”h<ž‚ƒ¸ Hã’$ x8‘JÅ…”tLY„~ÿËIEšœüÃCŠ„uyò…eRñ Ü/ãadUÓNi§Nžîí ã¾3zôÙáÎij¿èëíé«VÔ4©Ê²,j¸¤œLbk²ˆ±¤˜d¥FLÄCM,ql5PfZÅ„zñ7Ñë@µpßD_ïuÂp8Ü3RâkäSe<ýth&) Qa|BH„@t|\CuíSW×Z<ä:~(9k Òrc‘AQÝ*§sJ sÍ0ÚÝÝ¿£ßÀ¾;ú»ÇæZÁ¿iÈÑ)ÑжD#„j´,X_h†¹Ù¹¹ÙYØp77ïßè,—þ{-Nƒ`w~~~–ÀN#óSºF¹%X)Ë‚ ‹1t>»gÏî‹/Þ³ç(w_¼{Ï-‡ß÷ùû¾pï½÷Þwø? ¸äBa`Æ(a+î›A¡pú•…ÓÀ+ Xž;wæÌ™7νqîõ¾~æÜ¹,^4LÃÈ7Ö€xHLe ö2öfäÂSU#¼$”—@¦ JªJ]ÌŽÈ*[l¬ÆP!@~ª*³Ò›‚»B‰‚ݹÙYÇvêdƒ¯1x6ê⎪ðÈŒ¢.à«Ó8°DÁNβr¶™³k«Éˆ#ª¬Fb±$} ?¡¶™7íÒJÍÀTXº²F Ö5QÃ:WÀ¸ÆŽiZ†e¦­ÚKÓˆZ10D)‡Z»Lm9+“3Òu—:.øs…SฺÚÁN.çg:FUY«~åÀ0íÕ˜ývÊï† ü¾úN·¶ ^œRu?ÁÀÕu·¶ ¶ÌLÆh¬TÝIt]±½ï¸ÄΚf¦á5;<æ*uÊ·v .ËçRp.U«Ä“«áÖf³¶•/6fš KáKJª‹[ÛÛ¶ãcjäIÆ0€Ù˜ç-ÇtÅÅ*¾f:ˆª;%]ØÚ-Ø0 kÌ›…tÆ0«L]C‘íר6@Þ´1mÚé´Y¹lL«ûBÆ·öj|Ö2†pb#%×äƒsY Î…¾U{«Õ¿âÕ%ì_§ úÙzÁj©ÕÙ~Êdr,cõìÀ íÍVÝIÆ­­‚Ïi; ÞU§rÖÉ:´*•a<¤+ÉK%‘a>éÐjRÛ°Œéó Ï¬ŠƒK©‹È±.UŒÁ€2ÎÁ˜&âI4“Ø•ŒÉ®iär 1IªS-3(‘½Ô缕Ëû5³ »NgX–·ò–•/äMÓ®I ‰ì–d__•WgÏZùÆ,“ÙÞø  Ô"ÅZJgc¬eÁ,ëM ñ´‘3 + ™afLÈú #=mF'mWh2ð(i]0ôÇY—ãX¨§cŸwì¢]V»Èª<t•¶.ø´i6^Ê\ a™6 “+À‹.ÀÛ®<$æ´eÁWÓƒÖ  XaÚDSOOgÐÆ6ô"™i803F&ËÀ £H ’Õ–5Îfs–iÕvŠè\‹‹Ü¨‹jp¸|~‘oü6 1»çb`Á·fÀ*:WÆ„þ ÆÊ˜õC; ¡¤µþŽÝbÞÌYvƒ`£`™0¼Érè&l¹\ó3ÈÉ´–ãØ†Wè“îAá{žÇ/ú2/ë;iß>k•qœ6 ³ÑÔǘ¤ t¥ ŽÞÁ¡25m¹.$޳à[¦vòE»XtàíÛvcÔ¶à—B%’™v!q¼È)¹Ñ¹ÜBÁ¶­¢](Ú<¢mÛNA?,,9Æqë‚Ý…¸_gB&zµ¹L™™2eÂ12f±D’¥R²eç¢Ø¿‰ шé.|x<ó†°^,ÕÆú…ű1ês)s ³CÖþ2ÍD–™†¸«nCákÒI"Yd`ܸœnÖ¥>~€¬L£ª/ƒ¬Ò«sF!gçó`Fç¿ËCª³ÂüfÞ8÷Öâ¬Ï¢]Äp©yæ©ÁX$Q#‘ÁR ÀdØ›åÁiK° ŸÒˆ\' >ÉUËÄ,ëAÏ® ÊÌ•1 F~Úl˜úY;, ΰ÷™þ¿É-ñ8eŸ!·^=¯=vüø|¦ŽGŒ?qäHÝÌwMó¹±)hM=áßãø5}a²©:Á53ôÝý#ûFú;n„ƒŒŽî8$x¤¿{tdd`Ç@÷Àèè4ï÷›¡ÏaÛVsù- üéÀÃû¿é?ׯûýxàž‡ï X€`‚ί`¤ Õ‚—VcôÙY¢Î¢édž}éç—Þ}àÀÝ~£\.Ÿ ³³óS¸Ì ëº¶üëÂÁû—›ïßð5¹`Tù³Q3H^^PU g¬UØÁ¶ôëK‡>½wïÞC€½¼ÔY]{ †×êòòyèsÛ»w?4ÇË>{èµæKºª©#qè4ì!¿…Û—\]ÓT-¨9d „_¦âš4E6 X†€SGȬX×WlÎÏ3o.É <¯ÊÉ€8ä3ß|–€ðÑ ®ª¥àæ3pœ(_-6Õ|‚÷¬I/OcTE§Mº‹ªæÔ3…2ËHÓåð'œWô¿¿Ë—Up±Bdž4H0%Ì»Œh øñ¦¦&8 ÒÔ_xwÃM–AçZÉÔL%žÉq´ 8KÐÎ4HꙚbEgÍÕ]r®r‰» Uš ˜mÁGWKž·pçJªrp8•ûã’×hÌÝž±U`ÜûôàÀ¥{ñiY¨±F8Y%iÓ;Ï«ùž«Ë+ ¢)_¦ Ö _ÜŵŠ·ö±å%œEæR§Ñѹ4R¾L 45Êdœà!C´ÚÔܹèJÎåzÌ]Á¹ä$¸—ªŠM½Eã%„/:—œLp;j,{ÉYѹjgñ|4fKÎ¥øŠ—æú—Ë,šj,:B·¹ ””Ê\M¹ÆAs¬ð‡0ÌÒ™çÂU=¸m3-¸Wó…i|Ç*uWPšx-(Ó{'ÊÅÚd‰¾â\”{ËÊÎUÛIž×yªÏ7µ+«<Ð âÁÔ[sSk^·ˆÿ¾ì×f± öj3Ák ÚjùŸQI }==ÇÖö¯L~˜ ôþÌ6óòªÀ›–¿ÞîåšÚÉšš,I’Âk/Öc&4ñîή¾Þ^Aùb¬£ã×ÏÄß•¸^úVRùÒ?Ú&^ydãÿÉs7u~ê’Þ Bϸòƒë%%1p§‡–J¼£#‘ oè‘âÝ%”ÄŸ›žÜv³울’¸ê½q%¼í™_}⪄nøÚ]Eú®yê‡W\vsb¼o&{ßÐÐPxh\¹+ÕÕõ«ï&®S†•1IIyþqi(Õ‘ÜöýŸý|ü†wÄ¿ódOBÙwí° ô FÃ?½Z„ŽÎ°½ìCÑhWGTÞsS4:¾m8¾¦Î]ýÁaaâ±IYK\+ã’˜”÷ü÷≧ž¾òX_*%ÍüXá˪°v/IEND®B`‚awstats-7.4/docs/images/screen_shot_large_3.jpg0000640000175000017500000001423312410217071017467 0ustar skskÿØÿàJFIFHHÿÛC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀ Õ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?¾¾¶2q9QÀvò›ŽyûžôßøF-^FVŽeRHÜ\Ž™ÆÊÛ•–ß$Í“ÎÅ'·Ö¢yRHÀh.p¤yG'·­8Ô’Òâq¾¶2›Ã¶ÿ8ò%+È‚yÿržÞµW]‘ÊA^N؆?ñÚÕiÔ3/•rsÁ"#üÿ_´€Äˆ® þxŸëGµŸpåFTž¶W!•†Ñ’¢!ƒÿ|Ñýƒnî¢Tî¸ü—&´KÇ+’VñI #(ú±f ›o#’sß¿Z=¬û’&LZ ºM´,»rHr#?û.jTÐm1’dõ#8öûµ¥>QÊ»÷˜·ó4ß³ ûüÉ3œãyÇåš=¬û‡$L¡á{ÿ-nï¡þ£Ã6#þZÜÿßCü+ZH|Â¥˜½6’?—ZY"ó1¹ˆÇ÷I_åG¶©Ü\‘ìe Ùùkqùð¥³òÒãóáZ‘Çå®±ÿx“üÍ?æõ•Ö}Ã’=Œ¡ Yùi?æ?ÂìK%83L»ð­R g¯¥:&1tçêÍéZ~Ö}Ã’=Œ‘£Ùùm/ýô?”i6cþ[Iÿ}ð­mïŒo~ÿòÑÿƗΓ}úçï·øÑíeÜ9#ØÊ] ÿ–²ßCü)F›h?å«ÿßCü+LHà½ðF?Ö?øÑ½ÿ¾ÿ÷ñ¿Æk.áÉÆpÓíGüµÌ…(±¶òÑÿ1þ£æ??3àðxÇúÒyýùÒWÿ=¬»‡${E¥¸ÿ–ùŠQmn?å£~b®ùýçéõ¯þ4èåxØ0g8èG#òÍ/i.áÉÅ!þZÌRˆ¡Æ:ÓþЛû±þGühþЛû±þGühö’î‘ìgˆëHé.Ñ3(Î~R9­/í ¿»äÆí ¿»äƇ6÷` —C%mbÀ 4„(ÇÞÍ$æÜÊÍæn''ŽÒŠžfW'‘~k“ò ¶·*­€K`ôÏ#R ’U[ìöã#8Ýïô©$½+;¡ƒ…}»Œdæ®Æhy[¿Ùª°ŠÂk2@Ý$àf>õ,B ·y~YÛ×÷}*}‰ýÅü¨ØŸÜ_ʘQpvFyÀ*/°[¹,S’OO­Z ä(ü©þt[û:Ûû†ìëoî·E§öu·÷ ÙÖêþµn¨k“,:EÁlüêPcÔÓWnÄÎ\±rì2Hôè™ÕÛ ~cNÖ‘ÓMDf-ÂÇæ:íõÅaMy´~勒C××þ´Oy´a:Y¤'Ÿ§?­iìÙÊñ-_úïþEûˆ´èÚo*Ý™£·óÕ·4æ–i3o•KQqÃrsڲ结ý'xµH¿?ZI®åjû¼Z¤]?‡Šj›"U宿֧CZ|Š2B7–$e'î©ïVŸj@!rB sRÞô­ÈF,ÒƒúÔÓ߀—$“jÙ"à?¯ÿ^§‘šýf׿õ¿ùÿÙÖßÜ4g[pÖ'ö£D÷ ³8òí(l‘¿éýjßöÓ+ÎI–+e“2ýÅ.Y±ëýoþF‡öu·÷ ÙÖßÜ5êñoH¸XíÄÎÊs×¶*GÕ-ÈÿÝÂ&'­M™§µ‡qÿÙÖßÜ4g[pÔsjÖñ$§ Z8DØàdƒëIi¨›­Eà]žZ¯Ç$1ê(³iÚÿ×ô‰³­¿¸hþζþá«tR¹eOìëoî?³­¿¸jÝ\ k«3£,¦0 ª¿­qº/û£ùQHdl Ü¸Ûœär£¯n«ôïO[I «¼ ½È*OÓîÿZ†X¡KÆ’œÏœüMh@eØDÃæ¯Ö­´‰$¢Š+1…5>éúŸçN¦§Ý?SüèÔQEKXKfÓ¤ûc…H$‚xç‡Ö®Õi§ž&_ÝFUŽ/Ž}(NÛ ¤Õ™“qe¥F/<ÉyB5—“À8ÛÚ‹‹-.?¶oy?t#Y93Z7³jI+Xår~`ÏŒ~µ™§¯É)ˆiÖ›€ä Áþµ¬Tš½ÿ'(·Z\móAäˆÖ^Oã¿•-Õ–—¼ó$yK—¯ôíüªü—7ñÛ«½´!È\‚ø=Fh{E­L[Dòcå]üŸ\ýi{Ë©§ü¯î3®ì´È–û{¶bTÄc=;,Ñug¦Göá#8ò„k'ÌxÏNÔÖÕõµRMÀÉÍÀãõ­}:kÙ­KÞÁRòª6àF:æ§š]ÊQ§'n_Àʺ³ÓcÛÙ¿uå£åÏÆ;{ZK«=9>ݸ¿î¼´q¸õ8ÇoqÓ5³$× A ýÜÉ‚ ¯¨OªÄWì‘L0wo}¸?8¹7k–éñug¦Æ/Ë3þèF²rxÎ1ÛÜtÍvztnÞ\yB5|±ïÓ·òÍ:K_•™WNµ;zâ`­h\ÝÞ@ ù0òp7É·5MIu_yœ•5ö:êÏLO·yŒãʬŸ1ã=;{Õí>ÚÖJïÈ,eEEpNq‘‘Ú–âçS[o2ÚÒ® àc¹¬öÕµÅ6`qÖàKæÙ°N¨¿¸è¨¨,žå핯"X¦9ܪrOPnÕŠ( e&è¿îåE ÑÝÊŠ@“µNI pOsÐÓ`¸(Üä«sާ?‰¨ïd‡{ ŒO–Ã×<í4ë7ŠIŠùYÎN^6=;¨­jšådÞ( yr{ z‘ëíS#o\íeöaÍ'•så¦zçh§Ô;tSSþtêj}Óõ?΢Š(¨n<®HýàèÀ>¿‡55CsŸÝ`ûÁÑAþ}?hj©oŸµ¿ÌØÚx.¤uôÕº§lÚÜá€Áë×Ôs@ÝœF§$a»0­:Û?gLç=òA?˜â™yŸ)p¤Ý•OcëO¶ÏÙ× ƒÏPAÅQfa ï÷zù±éZÿ©¯ÝH=½¸ª ¿Êaå˹8Š>¿ž*ü?êS¯Ý@Ê€/ü|C׿p;zOáS†¢<]{ÿ?¯oÂ¥= T²$´™ßÛ†uoËëâB)‡¸u_çM²RÎÖãT~”ë΋׿D üèEÿQÔüž£Ó×¥P‘ˆ‰¾yAþº1ý*úÿǨë÷;žž*ŒŒm…“·H£þ¦€4袊(¢Š¤ÝýÑü¨¤‘ÕBn`>QÔûQHn×ËyY—“нóþ ¹Väî@¬êylw¨/2c¸#œãÔvaSGr»0‘ÊÄ™ÿ:ÕÝÄEš)±¹q’ŒžÍN¬ÆÔû§ê:šŸtýOó QET +*N$„ÝðúÔõ ÈÊÎßõƒ³ý(j§lnœí`H<ù[G_^õr©Û(û[‘³8=zúž(KÕÝÏ?óÏcÚŸl¡`Ug»{úS/qä‚vðÝÁ?ÊŸk³®1Žz_CÍP1(·öSÇàMhÂ1 cý‘Û½;VkªyOÄ|©ÏÉ!ïè+JyãÚ:;{Ð&\ÜBqœgø3ǵMPË´CÓ<ã®N?:˜ô  ¶+µ\lÛÏüòÙÿ를]À`Áÿ–{½)¶@p¡?¬?-ö6®vó‘ʳzzP ¢mÇü³Æ6ûzJ£<$«MÇŽ~Í»úÕåÇØÆÛåôçÇçT&òÚ&;cäŒþîCŸÀP¥Q@Q@î³þ²÷? ¢gýd?îAE&3RëÍ,w/à®OcŽ€Ô–Š»³ûÀøä cê@ªw2L÷-nÂ凸«v29’HÕ ÇÔ ×K[¢Š+1…3kŒá—Ï+ÿ×§ÖdÉ]˜ÌÀHùeLò@ïM¡‰?¾Ÿ÷Ïÿ^ŒIýôÿ¾úõötÿžÃó†ÝˆÌDÉê‡øÑ X“ûéÿ|ÿõèÄŸßOûçÿ¯Y‰m;0 ˆrAÇëR›&Y¨Ð Ø“ûéÿ|ÿõèÄŸßOûçÿ¯\æ«m|’ƒi Ä©åòRP uõþuB!ª¼ŒÊë8#jSZ*M«Ý}è—4ŽË}?ïŸþ½“ûéÿ|ÿõë6WBØ»›•.£+ç´újXà¸k\ªHäÒ@N}2){?3?o?¹›¸“ûéÿ|ÿõèÄŸßOûçÿ¯\˜›TG9Ó¥<•æáqœÕ›K™Ü¾ƒì±tæ½8üirö)Uô™ÑâOï§ýóÿ×£}?ïŸþ½bý¢Ëþ´YÏâÑÈÊçsk}?ïŸþ½“ûéÿ|ÿõë&³Ì Šä6:óRy ÿ=Çýô)ZÃæ]Í,Iýôÿ¾úôbOï§ýóÿ׬ß!?ç¸ÿ¾…H,˜Œ†jV ܽ‰?¾Ÿ÷Ïÿ^ŒIýôÿ¾úõGìMýæ£ìMýæ£A—±'÷Óþùÿëщ?¾Ÿ÷Ïÿ^¨ý‰¿¼Ô}‰¿¼Ôh]ÙÃ,ƒÍRÅT î#úÑR‘€ƒý‘ü¨©·­¹ˆ ©ŒãƒþÐÿ"F1w#Ë{µPÜËp×.¤&Å<=ùô«0¤nª§Ï žǸ­“itilP!™YuŒöõ5b8’<ìÏ>¬Oó¦Gm0`Xà`däTÕ`w&la1ÓœÒ&G¨ÿ¾ª9ñå?#îŸVíéßéRdúþ†™;ŸE?ìöõíõ  ØuýO¥Ag‚îH ú´{?^õb"|¥Ï]£Ôþ½ê &%¤år8“ÿª€s³¶FpxÀßúQoŰÏR3ÓoéKrÑŸ$cÝŠwõíE¹ÿGà9èw~´^A‰ŸhÆX!'>¼÷¬ý`gH*ÄùÜâCü'ù֌ĉÛîà²òf+úvúV~ª<Í"83]áþ#U‰ÖøGK‚ÙÝRq.píþ`~£ŒVòéZxP ¥¹>»G4šd*í%ÈÈÇ—#‡ÓUìŸ_ÐÑ)]™Ñ¤”uE?ì½;þ|íÿ*?²ôïùó·üªæO¯èhÉõý +³_gÅ?ì½;þ|íÿ*¶¡UB®éK“ëú2}CH¥¶A‘ê?ïª2=GýõFO¯èhÉõý  Qÿ}Q‘ê?ïª2}CFO¯èh£t_÷Gò¢†è¿îåE &–Ù\’¤)'?túõúÔbÂ0¸ùy8}úUº*Ôšx‚Ÿ”ö ëÀ©¨¢“w¬‹–\´]¬wäD Õú¯ZתRÛfãn|°ã€ô«9£þú¦A‘aƒ©  Ézâß•IqØ2=GýõFG¨ÿ¾¨ü[ò£ñoʆG¨ÿ¾¨Èõ÷Õ‹~T~-ùP‘ê?ïª2=GýõGâß•‹~TdzûêŒQÿ}Qø·åGâß•Tn‹þèþTPÝýÑü¨¤Ú(¢˜Q@Vyí•ÙZF@-Vj„‹˜åög$œ‘ëM žÐt‘¿ñê_´ZÿÏWüÚ¢ò¡ÉLƒƒÈ§ e#"1Š4§QÓA Þ( à0ñGöŽ’>Ö23‘¼ñŽ´Ù4øÝ[ cü[¨Æ˜1ó$eòHo(qš4ÂÞXʤ¤ûÇNáH·zx#lÃ'†5U¬ç„‘ *Àƒ÷T/?3ì— ´ýœ“Ç;SÓëøSÐ Ïsc¾n3ÆKP·6<„›êj¦m.KС*¿ãR‹ È(=qçõ£@&7:pneçÔõ ^iã¥À=˜ÔI`C"£ƒÛËš—ìQÿÏü¨÷@Q{bNÆO f§ý¢×þz¿æÕ²ŒtáNû(ÿžB‡`ö‹_ùêÿ›Qö‹_ùêÿ›W5ªÛkn—ì¿“ÆÎ˜è3úæªÃoâ6!ž7+žªTŒVëšO™}æN¥žÌëþÑkÿ=_ój>Ñkÿ=_ójËž ´Mʨ¼ò_S/-µ²¿‘y¼mÆ=j5ÜÇë_Üq¯ö‹_ùêÿ›Qö‹_ùêÿ›Wåø„Žô?ĵ³¢ÅwäÈÚ8(I#¾*F­ÌíÊѱö‹_ùêÿ›Qö‹_ùêÿ›UWŒ‡à[„= 7&ž±*ŒL":€jt7%“i`SîíúQHÜÇ÷Gò¢¤ ›—ûÃó£rÿx~uɼ¶Ë)ÌwG •Æ?,ô«]C+…XdîØ\v:MËýáùѹ¼?:æñQà_±Ü7šÅw*d&;· ©Zhêˆ$9Ï;xãð¡»W:-ËýáùÖt¤eã9ÿ¦`÷ýj„r#ìÌ.¥ó×·Ö¢’åS~-&m¬£…ëŸO\Q}.F“csq‘Ÿùâ9÷«Ñ0®éœuÎ?Jç./V–W~ð'ȹëž~œ~¢mv“‡ÿE™6¾Ï™zó×§J¶ác£Þ¿Þ_ûîëýåÿ¾ë™’ø$‘§Ø¦!äÙœ}ÑÇ'Žœþ”°^‰R2öSB]öíp2¯Ö‹Òï_ï/ý÷Fõþòÿßu€gg12Üb›ö»;Ë1·Bwqޏþ´\,t;×ûËÿ}ѽ¼¿÷Ý`ý¢Ø`rOlzã5 ¿·kn`› »¼À£`çÏ­ Ü“zÿyïº7¯÷—þû®m¯¡[µ‡ìò*[ÍvŽHÇ®xÍ n·QÁäLD€Ÿ1T\9?…¤Þ¿Þ_ûîëýåÿ¾ë®-ÔãúcÉ/-ãu_-Ø1#+ƒŒ óK˜,t;—iù—¿ñTp2‹` óÁùJÂ{ÈÑDlÁ‰ãëK-Ü´`F΀Êã­Ácrå„á>ß7èjRéÇÌ¿÷Õs²] d[¼Šƒ·ør{ñRK*EÊð·Ìq·¡˜£˜,iˆ6•_63rv t¢Pc]Áˆ•@ýU˜fˆãËMÞ¼Š®`ÊV?7aŸO˜ 1䨷hAôíSLÃÌb¼žØ@ZÇkÌøò˜ž8ÇsøS£º6>É(냎? W)ŤŸrýÕübÛà{QPÀÛÃ%“ýîôQqÿÙawstats-7.4/docs/awstats_upgrade.html0000640000175000017500000001577012510306004015676 0ustar sksk AWStats Documentation - Upgrade setup

    AWStats logfile analyzer 7.4 Documentation

     


    Upgrading AWStats from a previous version

    To upgrade AWStats, all you have to do is:

    1. Read this page completely before beginning the upgrade.

    2. Optionally backup your AWStats configuration and history data files.
    Standard AWStats distributions do not change these, but backing them up allows you to recover them if something does go amiss.  The AWStats default distribution will only overwrite the configuration file example called awstats.model.conf.  Your history data files are saved in the directory defined with the DirData parameter in your AWStats configuration file (awstats.mysite.conf).

    3. Replace AWStats runtime files with the new ones.
    To do this you can:
    - decompress the new AWStats zip or tgz package over the old installation directory (old AWStats runtime files are replaced by new ones. This works for AWStats versions 3.x and higher).
    - or just run your OS package tool (i.e. rpm, apt for Linux, .exe for MS Windows).

    Migrating to 6.x versions from earlier versions, observe the following additional notes:
    i. As of AWStats 6.9+, Perl version is 5.007 or higher is required. To see the version number, run the command perl -v  from your operating system's command line.
    ii. If you use the ExtraSections feature, you must check that the parameter(s) ExtraSectionConditionX uses a full REGEX syntax (with the 5.x series, this parameter could contain simple string values). If you don't update your configuration, the feature will be broken.
    iii. If you use the MiscTrackerUrl feature, you must check that your ShowMiscStats parameter is set to "ajdfrqwp" in addition to setting up MiscTrackerUrl tags and a JavaScript include for your web site. Otherwise the new default value "a" will be used (only the "Add to favorites" will be reported).
    iv. The MaxLengthOfURL parameter has been renamed MaxLengthOfShownURL; update  your configuration file accordingly.
    v. To enable the worm detection feature (not enabled by default), you must add the parameter LevelForWormsDetection=2 in your configuration file.
    vi. If you use the urlalias or userinfo plugins, you must move the urlalias.*.txt or userinfo.*.txt file from the Plugins directory to the DirData directory.

    4. Convert your AWStats history files when migrating from 3.x or 4.x versions to 5.x or higher.
    If you upgrade from the 3.x or 4.x series to 5.x or higher, AWStats will still be able to 'read' your old history files but a warning may appear to ask you to run the 'migrate' process on your old data files. Just run the command that will appear in warning message. This warning will only appear if data migration is necessary after an upgrade from the 3.x or 4.x series to a 5.x or higher version.

    5. Review new feature default settings.
    Sometimes new feature parameters are introduced in a new AWStats version. AWStats will use default values for them, maintaining backward compatibility with your existing AWStats configuration.  However, you can review the "New Features / Change Log" to see how you might change the new feature's behavior.



    Article written by .


    awstats-7.4/docs/awstats_tools.html0000640000175000017500000003715312510306004015406 0ustar sksk AWStats Documentation - Other tools

    AWStats logfile analyzer 7.4 Documentation

     


    Other utilities


    This is a list of other tools provided with AWStats.
    All those tools are available in tools directory of AWStats distribution.




    awstats_updateall.pl


    awstats_updateall launches update process for all AWStats config files (except
    awstats.model.conf) found in a particular directory, so you can easily setup a
    cron/scheduler job. The scanned directory is by default /etc/awstats.

    Usage: awstats_updateall.pl now [options]

    Where options are:
    -awstatsprog=pathtoawstatspl
    -configdir=confdirtoscan



    awstats_buildstaticpages.pl


    awstats_buildstaticpages allows you to launch AWStats with -staticlinks option
    to build all possible pages allowed by AWStats -output option.

    Usage:
    awstats_buildstaticpages.pl (awstats_options) [awstatsbuildstaticpages_options]

    where awstats_options are any option known by AWStats
    -config=configvalue is value for -config parameter (REQUIRED)
    -update option used to update statistics before to generate pages
    -lang=LL to output a HTML report in language LL (en,de,es,fr,...)
    -month=MM to output a HTML report for an old month=MM
    -year=YYYY to output a HTML report for an old year=YYYY

    and awstatsbuildstaticpages_options can be
    -awstatsprog=pathtoawstatspl gives AWStats software (awstats.pl) path
    -dir=outputdir to set output directory for generated pages
    -builddate=%YY%MM%DD Used to add build date in built pages filenames
    -staticlinksext=xxx For pages with .xxx extension instead of .html
    -buildpdf[=pathtohtmldoc] Build a PDF file after building HTML pages.
    Output directory must contains icon directory
    when this option is used (need 'htmldoc').

    New versions and FAQ at http://www.awstats.org



    logresolvemerge.pl

    logresolvemerge allows you to get one unique output log file, sorted on date,
    built from particular sources:
     - It can read several input log files,
     - It can read .gz/.bz2 log files,
     - It can also makes a fast reverse DNS lookup to replace
       all IP addresses into host names in resulting log file.
    logresolvemerge comes with ABSOLUTELY NO WARRANTY. It's a free software
    distributed with a GNU General Public License (See COPYING.txt file).
    logresolvemerge is part of AWStats but can be used alone as a log merger
    or resolver before using any other log analyzer.

    Usage:
      logresolvemerge.pl [options] file
      logresolvemerge.pl [options] file1 ... filen
      logresolvemerge.pl [options] *.*
      perl logresolvemerge.pl [options] *.* > newfile
    Options:
      -dnslookup      make a reverse DNS lookup on IP adresses
      -dnslookup=n    same with a n parallel threads instead of serial requests
      -dnscache=file  make DNS lookup from cache file first before network lookup
      -showsteps      print on stderr benchmark information every 8192 lines
      -addfilenum     if used with several files, file number can be added in first
      -addfilename    if used with several files, file name can be added in first
                      field of output file. This can be used to add a cluster id
                      when log files come from several load balanced computers.
      -stoponfirsteof Stop processing when any logfile reaches end-of-file.
      -printfields    For IIS or W3C logs, prints the latest field header for
                      the currentlog file when switching between log file entries
                      so that the parsercan automatically determine which fields
                      are avaiable.
      -ignoremissing  will not fail if a log file is missing

    This runs logresolvemerge in command line to open one or several
    server log files to merge them (sorted on date) and/or to make a reverse
    DNS lookup (if asked). The result log file is sent on standard output.
    Note: logresolvemerge is not a 'sort' tool to sort one file. It's a
    software able to output sorted log records (with a reverse DNS lookup
    included or not) even if log records are dispatched in several files.
    Each of thoose files must be already independently sorted itself
    (but that is the case in all web server log files). So you can use it
    for load balanced log files or to group several old log files.

    Don't forget that the main goal of logresolvemerge is to send log records to
    a log analyzer in a sorted order without merging files on disk (NO NEED
    OF DISK SPACE AT ALL) and without loading files into memory (NO NEED
    OF MORE MEMORY). Choose of output records is done on the fly.

    So logresolvemerge is particularly usefull when you want to output several
    and/or large log files in a fast process, with no use of disk or
    more memory, and in a chronological order through a pipe (to be used by a log
    analyzer).

    Note: If input records are not 'exactly' sorted but 'nearly' sorted (this
    occurs with heavy servers), this is not a problem, the output will also
    be 'nearly' sorted but a few log analyzers (like AWStats) knowns how to deal
    with such logs.

    WARNING: If log files are old MAC text files (lines ended with CR char), you
    can't run this tool on Win or Unix platforms.

    WARNING: Because of memory holes in ActiveState Perl version, use another
    Perl interpreter if you need to process large log files.

    Now supports/detects:
      Automatic detection of log format
      Files can be .gz/.bz2 files if zcat/bzcat tools are available in PATH.
      Multithreaded reverse DNS lookup (several parallel requests) with Perl 5.8+.
    New versions and FAQ at http://www.awstats.org



    maillogconvert.pl


    maillogconvert is mail log preprocessor that convert a mail log file (from
    postfix, sendmail or qmail servers) into a human readable format.
    The output format is also ready to be used by a log analyzer, like AWStats.

    Usage:
    perl maillogconvert.pl [standard|vadmin] [year] < logfile > output

    The first parameter specifies what format the mail logfile is :
    standard - logfile is standard postfix,sendmail,qmail or mdaemon log format
    vadmin - logfile is qmail log format with vadmin multi-host support

    The second parameter specifies what year to timestamp logfile with, if current
    year is not the correct one (ie. 2002). Always use 4 digits. If not specified,
    current year is used.

    If no output is specified, it goes to the console (stdout).
    For example, the following sample from postfix mail log server:

    # 1 Mail fromuser@aol.com -> touser@toserver.com, forward touser@toserver.com -> touser@mainserver.com
    Jan 01 07:27:31 apollon postfix/smtpd[1684]: connect from remt30.cluster1.charter.net[209.225.8.40]
    Jan 01 07:27:32 apollon postfix/smtpd[1684]: 2BC793B8A4: client=remt30.cluster1.charter.net[209.225.8.40]
    Jan 01 07:27:32 apollon postfix/cleanup[1687]: 2BC793B8A4: message-id=<36027278@vneka>
    Jan 01 07:27:32 apollon postfix/qmgr[13860]: 2BC793B8A4: from=, size=2130, nrcpt=1 (queue active)
    Jan 01 07:27:32 apollon postfix/smtpd[1684]: disconnect from remt30.cluster1.charter.net[209.225.8.40]
    Jan 01 07:27:38 apollon postfix/local[1689]: 2BC793B8A4: to=, orig_to=, relay=local, delay=6, status=sent ("|/usr/bin/procmail")
    # 2 Reject: 450
    Jan 01 14:05:44 apollon postfix/smtpd[2114]: connect from baby.mainframe.nl[81.29.4.2]
    Jan 01 14:05:44 apollon postfix/smtpd[2114]: E0C9D3BD9A: client=baby.mainframe.nl[81.29.4.2]
    Jan 01 14:05:44 apollon postfix/smtpd[2114]: E0C9D3BD9A: reject: RCPT from baby.mainframe.nl[81.29.4.2]: 450 : User unknown in local recipient table; from=<> to= proto=ESMTP helo=
    Jan 01 14:10:16 juni postfix/smtpd[2568]: C34ED1432B: reject: RCPT from relay2.tp2rc.edu.tw[163.28.32.177]: 450 : User unknown in local recipient table; from=<> proto=ESMTP helo=
    # 1 From unknown
    Jan 01 15:17:05 apollon postfix/smtpd[29866]: connect from tomts12.bellnexxia.net[209.226.175.56]
    Jan 01 15:17:05 apollon postfix/smtpd[29866]: 578093B8B5: client=tomts12.bellnexxia.net[209.226.175.56]
    Jan 01 15:17:05 apollon postfix/cleanup[28931]: 578093B8B5: message-id=<20030905131913.EOVH11393.tomts12-srv.bellnexxia.net@tomts12-srv>
    Jan 01 15:17:06 apollon postfix/qmgr[965]: 578093B8B5: from=<>, size=109367, nrcpt=1 (queue active)
    Jan 01 15:17:06 apollon postfix/local[32432]: 578093B8B5: to=, orig_to=, relay=local, delay=1, status=sent ("|/usr/bin/procmail")
    Jan 01 15:17:06 apollon postfix/smtpd[29866]: disconnect from tomts12.bellnexxia.net[209.226.175.56]


    will give a file that looks like this:

    2004-01-01 07:27:38 fromuser@aol.com touser@toserver.com remt30.cluster1.charter.net localhost SMTP - 1 2130
    2004-01-01 14:05:44 <> touser2@toserver.com baby.mainframe.nl - SMTP - 450 0
    2004-01-01 14:10:16 <> unknownuser@unknownserver.com relay2.tp2rc.edu.tw - SMTP - 450 0
    2004-01-01 15:17:06 <> touser@toserver.com tomts12.bellnexxia.net localhost SMTP - 1 109367


    See FAQ-COM100 to see how to use maillogconvert.pl with AWStats to analyze mail log files.




    urlaliasbuilder.pl


    Urlaliasbuilder generates an 'urlalias' file from an input file (an urlalias file
    is a file with two columns: url and clear title of url).
    The input file must contain a list of URLs (It can be an AWStats history file).
    For each of thoose URLs, the script get the corresponding HTML page and catch the
    header information (title), then it writes an output file that contains one line
    for each URLs and several fields:
    - The first field is the URL,
    - The second is title caught from web page.
    This resulting file can be used by AWStats urlalias plugin.

    Usage: urlaliasbuilder.pl -site=www.myserver.com [options]

    The site parameter contains the web server to get the page from.
    Where options are:
    -urllistfile=Input urllist file
    If this file is an AWStats history file then urlaliasbuilder will use the
    SIDER section of this file as its input URL's list.
    -urlaliasfile=Output urlalias file to build
    -overwrite Overwrite output file if exists (by default appends to file).
    -secure Use https protocol

    Example: urlaliasbuilder.pl -site=www.someotherhost.com

    New versions and FAQ at http://www.awstats.org

    This script was written from Simon Waight original works title-grabber.pl.



    Article written by .


    awstats-7.4/docs/awstats_benchmark.html0000640000175000017500000003336512510306004016201 0ustar sksk AWStats Documentation - Benchmark page

    AWStats logfile analyzer 7.4 Documentation

     


    Benchmarks


    AWStats update process must be ran frequently, so it's important to know what is AWStats speed to choose an optimum delay between each update process according to AWStats speed and the refresh rate you need to have.
    AWStats speed depends on AWStats version and options/setup you use in configuration file.


    This is benchmark results with AWStats version 6.0 and a common configuration:

    HARDWARE: Athlon 1 GHz / 256MB
    SOFTWARE: Windows 2000 / Perl 5.8 (Cygwin Perl)
    CONFIG OPTIONS: Default values were used: LogFormat=1, DNSLookup=0, URLWithQuery=0, URLReferrerWithQuery=0, URLWithAnchor=0, No plugins
    AVERAGE SPEED: 5200 lines by seconds
    Other times for different kind of web sites sizes are shown later in this page...


    This is other important information to know:

    - A log file size is about 150 (NCSA common/CLF log files) to 320 times (NCSA extended/XLF/ELF log files) its number of lines,
    - 1,000 visits = 8,000 pages (with 8 pages/visits) = 64,000 lines (with 8 hits/page) = 20 MB file => 15 seconds (Athlon 1GHz, Standard Perl 5.8)
    - History files (AWStats database, resuming the log analysis) has the following size (one file a month) : 15000+90*x+100*y bytes (where x is number of unique visitors a month and y is number of different pages on web sites). If you use option BuildHistoryFormat=xml, you must multiplie this value by 3.

    WARNING ! All those data are average values for a common public site with default configuration. Calculation rule can be seriously changed according to web server or AWStats configuration and web site content.

    Don't forget that benchmarks of log analyzers are made without reverse DNS lookup because DNS lookup is so slow (depending on Internet network and your system), that if enabled in AWStats configuration file, it would take more than 99% of the time of a log analysis ! Take a look at the following chart to:
    - Get more real ideas on benchmarks results
    - Get more information and advice on a good setup for your site.


    This is examples of frequency/parameters you should use to have a good use of AWStats:

    Your Web site trafficPerl distribValues for parametersRecommended update frequency
    (Rotate log delay)
    Memory required**Update process duration***
    DNSLookup*URLWithQueryURLReferrerWithQuery
    0 - 1,000 visits/monthYour choice0 (or 2)0 or 10 or 1Once a day
    Log files are 0-1 MB
    2000 lines to process
    4 MB free1s
    10 or 10 or 1Once a day
    Log files are 0-1 MB
    2000 lines to process
    4 MB free2mn
    1,000 - 10,000 visits/monthYour choice0 (or 2)0 or 10 or 1Once a day
    Log files are 1-10 MB
    2000-20000 lines
    4-8 MB free1s-10s
    10 or 10 or 1Once a day
    Log files are 1-10 MB
    2000-20000 lines
    4-8 MB free2mn-10mn
    10,000 - 100,000 visits/monthYour choice0 (or 2)0 or 10 or 1One a day
    Log Files are 10-100 MB
    20000-200000 lines
    8-32 MB free10s-120s
    10 or 10 or 1Once a day
    Log files are 10-100 MB
    20000-200000 lines
    8-32 MB free10mn-50mn
    100,000 - 500,000 visits/monthYour choice0 (or 2)00 or 1Every 6 hours
    Log Files are 24-96 MB
    50000-300000 lines
    16-92 MB free30s-3mn
    100 or 1Every 6 hours
    Log Files are 24-96 MB
    50000-300000 lines
    16-92 MB free15mn-60mn
    500,000 - 2,000,000 visits/monthSee next section on pb with ActiveState0 (or 2)00Every 6 hours
    Log Files are 96-384 MB
    300000-1200000 lines
    64-256 MB free3mn-12mn
    2,000,000 - 4,000,000 visits/monthSee next section on pb with ActiveState0 (or 2)00Every 6 hours
    Log Files are 384-768 MB
    1200000-2400000 lines
    256-512 MB free12mn-24mn
    +4,000,000 visits/monthSee next section on pb with ActiveStateAWStats is a good choice for such web sites only if you use a dedicated server with a large amount of memory. Try a tool with less features but faster like "row counter log analyzers" like Analog if not.
    * You should set DNSLookup parameter to 0 (or 2) if
          - reverse DNS lookup is already done in your log file,
          - or if your web site has more than 250,000 visits a month.
    Note: Country report can works without reverse DNS lookup if plugin 'geoip' is enabled (faster and more accurate than reverse DNS lookup).
    ** This is free memory required for update process (in MB), this is not hardware memory installed !
    Warning: If you use the URLWithQuery or URLReferrerWithQuery option, or forget to complete correctly URLQuerySeparators for some sites, this value can be dramatically increased.
    *** Duration with DNSLookup set to 1 is very long because of DNS lookup whatever is speed of your computer. Duration with DNSLookup set to 0 (or 2) is with Athlon 1GHz/256MB, Cygwin Perl 5.8 and LogFormat=1.


    SOME IMPORTANT ADVICES FOR A GOOD USE OF AWSTATS:

    - Check that DNSLookup is disabled in AWStats (DNSLookup should not be set to 1). If you need a 'Country' report, you should prefer using the 'geoip' plugin using Maxmind database instead of a DNS lookup. Those plugins allow you to have more accurate results, faster with no network queries (With DNSLookup enabled, log analyze speed is decreased by 40 to 100 times, so use it only if required). Note that without DNS lookup and without the 'geoip' plugins, 'Country' report might work but results will be less accurate than the 'geoip' usage and it works only if hosts addresses in your log file are already resolved (need to setup your web server to do so, your web server will be slowed).
    - Use carefully parameters URLWithQuery, URLReferrerWithQuery and URLWithAnchor (Let them set to 0 if you don't know what they means) and check your web site URLs' syntax to know if you don't need to complete the parameter URLQuerySeparators. If you really need to use URLWithQuery=1, check that URLWithQueryWithOnlyFollowingParameters or URLWithQueryWithoutFollowingParameters are set properly.
    - Use last Perl version (For example Perl 5.8 is 5% faster than 5.6) and, more important, for large log files, use standard Perl distribution instead of ActiveState. This is because ActiveState 5.006 (and may be also other versions), has very important memory hole problem making speed of analysis slower and slower reaching 0 lines/seconds and using all your memory. You can see the decrease by adding the -showsteps option on command line. The speed should be constant to value given in top of this page, even for several Gigabytes log files !
    - Rotate your log (See FAQ-SET500) and launch AWStats more often (from crontab or a scheduler, See FAQ-SET550). The more often you launch AWStats, the less AWStats has new lines in log to process. This can also solve the ActiveState memory problem (see next advice).
    - Be sure that your HostAliases parameter list is complete.
    - Use last AWStats version (For example AWStats 6.0 is 15% faster than 5.9).
    - For geeks users, you can also recompile your Perl with differents options. For example, it seems that the "use64bitint=define usemymalloc=y" can increase speed by 10%.

    Article written by .


    awstats-7.4/docs/awstats_extra.html0000640000175000017500000004647012510306004015373 0ustar sksk AWStats Documentation - Using the Extra Sections features

    AWStats logfile analyzer 7.4 Documentation

     


    Adding extra reports using the ExtraSection feature


    The AWStats ExtraSection features are powerfull setup options to allow you to add your own report not provided by default with AWStats. You can use it to build special reports, like number of sales for a particular product, marketing reports, counting for a particular user or agent, etc...



    Explanation on how to add/edit an Extra report in your config file
    Take a look inside the AWStats config file to find the following part:
    #-----------------------------------------------------------------------------
    # EXTRA SECTIONS
    #-----------------------------------------------------------------------------

    Read all explanation in config file after this point, they will explain you how to add an Extra report by adding an ExtraSection configuration in your config file,
    or just click here to jump to a copy of this explanation.

    Following examples are precious tutorials...
     

    Some examples of ExtraSection setup you can follow to build your own personalized reports:

  • Example 1: Tracking Product orders
  • Example 2: Tracking Bugzilla most frequently viewed bugs
  • Example 3: Tracking Exit clicks
  • Example 4: Tracking aborted download
  • Example 5: Tracking most requested domain aliases
  • Example 6: List of top level 2 path under a directory /mydir

    And for more usage examples (like more precise Search Engine Optimization, referrals by domain, ...), you can have a look at the very good page Antezeta AWStats Enhancements and Extensions page.



    Example 1: Tracking Product orders

    Image your web site is an e-store that sells 80 different products. Each of them has an id. Imagine each time, someone make an order for product 49, the order.cgi script or order2.cgi script is called with, in URL query parameter, the id of the product, meanings that you get in your log file a hit that looks like this:
    GET /cgi-bin/order.cgi?productid=49&session=A0B1C2

    So this is how you need to setup your ExtraSection to track your product orders:
    ExtraSectionName1="Product orders"
    ExtraSectionCodeFilter1="200 304"
    ExtraSectionCondition1="URL,\/cgi\-bin\/order\.cgi|URL,\/cgi\-bin\/order2\.cgi"
    ExtraSectionFirstColumnTitle1="Product ID"
    ExtraSectionFirstColumnValues1="QUERY_STRING,productid=([^&]+)"
    ExtraSectionFirstColumnFormat1="%s"
    ExtraSectionStatTypes1=PL
    ExtraSectionAddAverageRow1=0
    ExtraSectionAddSumRow1=1
    MaxNbOfExtra1=100
    MinHitExtra1=1



    Example 2: Tracking Bugzilla most frequently viewed bugs

    This is an example on how to setup your ExtraSection:
    ExtraSectionName1="Bugzilla: Most frequently viewed bugs"
    ExtraSectionCodeFilter1="200 304"
    ExtraSectionCondition1="URL,\/bugzilla\/show_bug\.cgi"
    ExtraSectionFirstColumnTitle1="Bug ID"
    ExtraSectionFirstColumnValues1="QUERY_STRING,id=([^&]+)"
    ExtraSectionFirstColumnFormat1="<a href='/bugzilla/show_bug.cgi?id=%s' target=new>%s</a>"
    ExtraSectionStatTypes1=PL
    ExtraSectionAddAverageRow1=0
    ExtraSectionAddSumRow1=1
    MaxNbOfExtra1=500
    MinHitExtra1=1



    Example 3: Tracking Exit clicks

    AWStats shows you naturally the exit pages. However, you don't know where you visitor go after exiting your site since clicking on a link that point to an external link will log the viewed page on the external server and not on yours. If you want to track this, you can, using the ExtraSection and the awredir.pl tool (provided with AWStats).
    This tools must be used as a CGI wrapper. When called on 'A HREF' link, it returns to browser a redirector to tell it to show the required page. So, to use this script, you must replace HTML href tags that points to external web sites onto your HTML pages from
    <a href="http://externalsite/pagelinked">Link</a>
    to
    <a href="http://yoursite/cgi-bin/awredir.pl?url=http://externalsite/pagelinked">Link</a>

    For your web visitor, there is no difference. However this allow you to track clicks done on links onto your web pages that point to external web sites, because an entry will be seen in your own server log like this record:
    80.1.2.3 - - [01/Jan/2001:16:00:00 -0300] "GET /cgi-bin/awredir.pl?url=http://externalsite/pagelinked HTTP/1.1" 302 70476 "http://yoursite/pagewithlink.html" "FireBird/0.7"

    Then, you can add in AWStats a chart to track all call to awredir.pl with keys values taken from the "url=" parameter. You will get an independant chart, counting all external pages viewed by your visitor after exiting your site.
    To have this chart, this is how you must setup your ExtraSection:
    ExtraSectionName1="Redirected Hit"
    ExtraSectionCodeFilter1="302"
    ExtraSectionCondition1="URL,\/cgi\-bin\/awredir\.pl"
    ExtraSectionFirstColumnTitle1="Url"
    ExtraSectionFirstColumnValues1="QUERY_STRING,url=([^&]+)"
    ExtraSectionStatTypes1=HL
    MaxNbOfExtra1=500
    MinHitExtra1=1
    ExtraSectionAddSumRow1=1



    Example 4: Tracking aborted download

    Aborted downloads are reported in a log file by a 206 error, so this is how you need to setup your ExtraSection to add a chart for a such tracking:
    ExtraSectionName1="List of aborted download"
    ExtraSectionCodeFilter1="206"
    ExtraSectionCondition1=""
    ExtraSectionFirstColumnTitle1="URL"
    ExtraSectionFirstColumnValues1="URL,(.*)"
    ExtraSectionStatTypes1=PHB
    MaxNbOfExtra1=100
    MinHitExtra1=1



    Example 5: Tracking most requested domain aliases

    You have one website, but this web site has several domains named (for example the same site domain.com can be reached with urls domain.com,www.domain.com,www.otherdomainname.com,www.againadomainname.org,...). You want to know which domain alias is the most used.

    The first thing to do is to be sure the domain alias is recorded inside your log file. If you use Apache, you must use a personalized Apache log file that contains the %V tag. For example you can add in your Apache httpd.conf file a new Apache log format (This is the Apache directive, not AWStats, to define an Apache log format that contains the virtual domain):
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %V" combinedv
    Then check that your Apache CustomLog directives are defined like this:
    CustomLog pathtoyourlog/yourlog.log combinedv

    After restarting Apache, your log format should look like this
    66.130.77.181 - - [09/Aug/2004:03:01:05 +0200] "GET /index.php HTTP/1.1" 200 1473 "-" "Firefox 1.0" www.otherdomainname.com

    When your web server log file contains the domain alias, you can now setup AWStats to use it. For this use a personalised AWStats log format and use the %extra1 tag at the same position where the domain alias is. For example, for your combinedv Apache log format, we will use:
    LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %extra1"

    Every tag defined by name extraZ (Z is a number, you can use as many tags as you need) can be used in any ExtraSection to extract the parameter. You can use the name extraZ as a criteria in the ExtraSectionFirstColumnValuesX parameter (X is number of the extra report, you can add as many report as you need) to tell AWStats to use value in log file at the place of the tag, as the key for your report. For example:
    ExtraSectionName1="Domains aliases"
    ExtraSectionCodeFilter1="200 304"
    ExtraSectionCondition1=""
    ExtraSectionFirstColumnTitle1="Domain alias"
    ExtraSectionFirstColumnValues1="extra1,([^&]+)"
    ExtraSectionFirstColumnFormat1="%s"
    ExtraSectionStatTypes1=HL
    ExtraSectionAddAverageRow1=0
    ExtraSectionAddSumRow1=1
    MaxNbOfExtra1=20
    MinHitExtra1=1


    And result will be:  
    Domains aliases 
    Domain aliasHitsLast visit
    www.domain.com175713108 August 2004 - 13:01
    www.otherdomainname.com9851808 August 2004 - 12:54
    domain.com1910708 August 2004 - 12:42
    www.againadomainname.org760908 August 2004 - 11:56
    Total1883986 


    Example 6: List of top level 2 path under a directory /mydir

    So this is how you need to setup your ExtraSection to add a chart for such a tracking:
    ExtraSectionName1="List of top level 2 path under /mydir"
    ExtraSectionCodeFilter1="200 304"
    ExtraSectionCondition1="URL,^\/mydir\/.*"
    ExtraSectionFirstColumnTitle1="Directory name"
    ExtraSectionFirstColumnValues1="URL,^\/mydir\/([\w]+)\/"
    ExtraSectionStatTypes1=PHK
    MaxNbOfExtra1=50
    MinHitExtra1=1




    There is a lot of other possible use for Extra Sections ...





    The following explanation is same than the one found in AWStats config file:

    #-----------------------------------------------------------------------------
    # EXTRA SECTIONS
    #-----------------------------------------------------------------------------
    # You can define your own charts, you choose here what are rows and columns
    # keys. This feature is particularly usefull for marketing purpose, tracking
    # products orders for example.
    # For this, edit all parameters of Extra section. Each set of parameter is a
    # different chart. For several charts, duplicate section changing the number.
    # Note: Each Extra section reduces AWStats speed by 8%.
    #
    # WARNING: A wrong setup of Extra section might result in too large arrays
    # that will consume all your memory, making AWStats unusable after several
    # updates, so be sure to setup it correctly.
    # In most cases, you don't need this feature.
    #
    # ExtraSectionNameX is title of your personalized chart.
    # ExtraSectionCodeFilterX is list of codes the record code field must match.
    # Put an empty string for no test on code.
    # ExtraSectionConditionX are conditions you can use to count or not the hit,
    # Use one of the field condition
    # (URL,URLWITHQUERY,QUERY_STRING,REFERER,UA,HOSTINLOG,HOST,VHOST,extraX)
    # and a regex to match, after a coma. Use "||" for "OR".
    # ExtraSectionFirstColumnTitleX is the first column title of the chart.
    # ExtraSectionFirstColumnValuesX is a string to tell AWStats which field to
    # extract value from
    # (URL,URLWITHQUERY,QUERY_STRING,REFERER,UA,HOSTINLOG,HOST,VHOST,extraX)
    # and how to extract the value (using regex syntax). Each different value
    # found will appear in first column of report on a different row. Be sure
    # that list of different possible values will not grow indefinitely.
    # ExtraSectionFirstColumnFormatX is the string used to write value.
    # ExtraSectionStatTypesX are things you want to count. You can use standard
    # code letters (P for pages,H for hits,B for bandwidth,L for last access).
    # ExtraSectionAddAverageRowX add a row at bottom of chart with average values.
    # ExtraSectionAddSumRowX add a row at bottom of chart with sum values.
    # MaxNbOfExtraX is maximum number of rows shown in chart.
    # MinHitExtraX is minimum number of hits required to be shown in chart.

    Warning: the ExtraSectionConditionX MUST use regex values since AWStats 6.0.
    ExtraSectionFirstColumnValuesX also need REGEX value for all AWStats versions.
    Return to examples for examples on syntax use.



    Article written by .


    awstats-7.4/docs/awstats_dolibarr.html0000640000175000017500000000720312510306004016035 0ustar sksk AWStats Documentation - AWStats Dolibarr module

    AWStats logfile analyzer 7.4 Documentation

     


    AWStats Dolibarr ERP-CRM module

    A lot of ERP and CRM softwares (software to manage a company like invoices, commercial proposal, products, agenda, contacts, stocks, point of sale...), exists now in OpenSource. On of the most famous and easy to use is Dolibarr ERP-CRM.
    So to offer a complete solution for companie's manager, I added a module to add AWStats reporting inside this software.
    This is links to have more informations:
    * Link to dolibarr ERP-CRM project: http://www.dolibarr.org
    * Link to doliStore where to download AWStats module for Dolibarr: http://www.dolistore.com
    * Link to wiki documentation of module: http://wiki.dolibarr.org/index.php/Module_AWStats_En


    Article written by .


    awstats-7.4/docs/awstats_dev_plugins.html0000640000175000017500000002461412510306004016563 0ustar sksk AWStats Documentation - Plugins Development

    AWStats logfile analyzer 7.4 Documentation

     


    Plugin Development

    AWStats has a very flexible plugin architecture that is easy to use and allows for powerful extensibility. Here is the information you need to get started rolling your own. In this documentation, the terms plugin and module will be used interchangeably.


    Plugin Files, Location

    AWStats plugins are implemented as Perl modules with a file extension of .pm. Every time you run AWStats, either in update mode or HTML output mode, the configuration file will be parsed for the names of plugins to load. Then AWStats will scan the plugins folder for matching modules and load them into memory, executing hooks at the appropriate time during a run. Thus, when you create a plugin, you have to store the file in the plugins directory under the folder where awstats.pl resides.

    Hooks

    In order to be useful, your plugin must implement any number of different "hooks" that will be called at various points during the AWStats run. A hook is simply a Perl sub routine that will receive various parameters, perform whatever actions you desire such as calculations, modifications or output, and optionally return a value.
    Note: all plugins MUST implement the Init_ hook to initialize the module and determine if the plugin will run under the current version of AWStats.
    For information on the available hooks, view the Hooks document.

    Required Variables

    Each plugin must implement three required, local variables including the name, hooks, implements and required AWStats Version. Typically you implement these at the top of your plugin file as in this example code:

    #-----------------------------------------------------------------------------
    # PLUGIN VARIABLES
    #-----------------------------------------------------------------------------
    # <-----
    # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN
    # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE.
    my $PluginNeedAWStatsVersion="5.5";
    my $PluginHooksFunctions="GetCountryCodeByAddr GetCountryCodeByName ShowInfoHost";
    my $PluginName = "geoipfree";
    my $PluginImplements = "mou";
    # ----->


    The $PluginNeedAWStatsVersion indicates the minimum version of AWStats that your plugin requires to run properly. If a user attempts to implement your plugin with an older version of the program, the plugin will not load.

    $PluginHooksFunctions is a space delimited list of the different hooks that your plugin will implement. This list should only include names defined in the hooks list. You should not list any private module functions or the Init_ hook in this list. The naming convention for all hooks is HookName_PluginName. The hooks like only includes the hook name without the underscore.

    $PluginName is simply the name of your plugin, exactly as it appears in the hooks and file name. This will be used by AWStats on load.

    $PluginImplements is a list of letter codes mapped to operations that your plugin performs. Without at least one of these letter codes, your plugin will never run. The codes are:
    • "m" - a Menu Handler plugin that provides links to navigate around reports. The plugin will be called any time a menu is displayed, such as in the left frame in cgi mode or top navigation in static mode. 
    • "o" - an Output plugin that will be loaded when AWStats is generating a report via dynamic CGI or static HTML
    • "u" - an Update plugin that will process data and is run when AWStats is parsing log files and updating the history data files.
    Accessible Variables

    Your plugin has access to all of the global variables declared at the top of the AWStats.pl program. While you can write to these variables, it's best to only read them as another plugin may make unexpected modifications. However you can declare global variables within your own plugin and share those across other plugins. Just declare them inside the normal use vars qw/ ... / block within your own module.

    Thus you can (and should) use settings from the configuration file and determine the debug level.

    Accessible Functions

    Plugins have access to all of the functions declared in the main AWStats.pl file. For debugging and error handling, you should use the debug and error functions. Below are some common functions that plugins take advantage of (remember you don't have to re-invent the wheel):

    debug("debug message", debug_level) - Writes the "debug message" to the standard output if the (integer) debug_level is lower or equal to that set by the user at runtime. The higher the debug level, the less important or more informational the message. After outputting the message, the program continues running.

    error("error message") - Writes the "error message" to the standard output and halts program execution.

    Format_Bytes(bytes) - Converts the incoming decimal value to Kilobytes, Megabytes, Gigabytes and so forth. So if you put in 1024.5 it will spit out "1 KB"

    Format_Date(YYYYMMDDHHMMSS) - Converts the incoming timestamps to something like 30 Apr 2010 - 16:55

    Format_Number(number) - Adds commas or a user defined character where appropriate to separate numbers for easier reading.


    Article written by .


    awstats-7.4/docs/COPYING.TXT0000640000175000017500000010451312410217071013322 0ustar sksk GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . awstats-7.4/docs/awstats_config.html0000640000175000017500000023012612510306004015506 0ustar sksk AWStats Documentation - Configuration directives and parameters

    AWStats logfile analyzer 7.4 Documentation

     


    AWStats configuration directives/options


    Each directive available in the AWStats config file (.conf) is listed here (with examples and default values).

    Notes To include an environment variable in any parameter (AWStats will replace it with its value when reading it), follow the example:
    Parameter="__ENVNAME__"



    DIRECTIVES IN MAIN SETUP SECTION (Required to make AWStats work)

    DIRECTIVES IN OPTIONAL SETUP SECTION (Not required but increase AWStats features)

    DIRECTIVES IN OPTIONAL ACCURACY SETUP SECTION (Not required but increase AWStats features)

    DIRECTIVES IN OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features)

    DIRECTIVES FOR PLUGINS

    DIRECTIVES IN EXTRA SECTIONS

    INCLUDES



    LogFile
    Version : 1.0+
    3.1+ for tags %YYYY-n,%YY-n,%MM-n,%DD-n,%HH-n
    3.2+ for tag %WM-n
    4.0+ for tag %DW-n
    4.1+ for tag %NS-n
    5.0+ for tag %WY-n
    5.1+ for tag %Wm-n, %Wy-n, %Dw-n

    # "LogFile" contains the web, ftp or mail server logfile to analyze.
    # You can use a full path or relative path from awstats.pl directory.
    # Example: "/var/log/apache/access.log"
    # Example: "../logs/mycombinedlog.log"
    # You can also use tags in this filename if you need a dynamic file name
    # depending on date or time (Replacement is made by AWStats at the beginning
    # of its execution). This is available tags :
    # %YYYY-n is replaced with 4 digits year we were n hours ago
    # %YY-n is replaced with 2 digits year we were n hours ago
    # %MM-n is replaced with month we were n hours ago
    # %MO-n is replaced with 3 letters month we were n hours ago
    # %DD-n is replaced with day we were n hours ago
    # %HH-n is replaced with hour we were n hours ago
    # %NS-n is replaced with number of seconds at 00:00 since 1970
    # %WM-n is replaced with the week number in month (1-5)
    # %Wm-n is replaced with the week number in month (0-4)
    # %WY-n is replaced with the week number in year (01-52)
    # %Wy-n is replaced with the week number in year (00-51)
    # %DW-n is replaced with the day number in week (1-7, 1=sunday)
    # use n=24 if you need (1-7, 1=monday)
    # %Dw-n is replaced with the day number in week (0-6, 0=sunday)
    # use n=24 if you need (0-6, 0=monday)
    # Use 0 for n if you need current year, month, day, hour...
    # Example: "/var/log/access_log.%YYYY-0%MM-0%DD-0.log"
    # Example: "C:/WINNT/system32/LogFiles/W3SVC1/ex%YY-24%MM-24%DD-24.log"
    # You can also use a pipe if log file come from a pipe.
    # Example: "gzip -d </var/log/apache/access.log.gz |"
    # If there is several log files from load balancing servers :
    # Example: "/pathtotools/logresolvemerge.pl *.log |"
    #
    LogFile="/var/log/httpd/mylog.log"


    LogType
    Version : 5.7+

    # Enter the log file type you want to analyze.
    # Possible values:
    # W - For a web log file
    # M - For a mail log file
    # F - For a ftp log file
    # Example: W
    # Default: W
    #
    LogType=W


    LogFormat
    Version : 2.1+
    3.1+ for tags %host,%logname,%time1,%time2,%methodurl,%methodurlnoprot,%method,%url, %query,%code,%bytesd,%refererquot,%referer,%uaquot,%ua,%other
    3.2+ for tags %gzipin,%gzipout
    4.0+ for tags %gzipratio,%syslog
    4.1+ for tag %virtualname
    5.6+ for tag %deflateratio
    6.1+ for tag %time4
    6.2+ for tag %time3

    # Enter here your log format (Must agree with your web server. See setup
    # instructions in README.txt to know how to configure your web server to have
    # the required log format).
    # Possible values: 1,2,3,4 or "your_own_personalized_log_format"
    # 1 - Apache or Lotus Notes/Domino native combined log format (NCSA combined/XLF/ELF log format)
    # 2 - IIS or ISA format (IIS W3C log format). See FAQ-COM115 For ISA.
    # 3 - Webstar native log format.
    # 4 - Apache or Squid native common log format (NCSA common/CLF log format)
    # With LogFormat=4, some features (browsers, os, keywords...) can't work.
    # "your_own_personalized_log_format" = If your log is ftp, mail or other format,
    # you must use following keys to define the log format string (See FAQ for
    # ftp, mail or exotic web log format examples):
    # %host Client hostname or IP address (or Sender host for mail log)
    # %host_r Receiver hostname or IP address (for mail log)
    # %lognamequot Authenticated login/user with format: "alex"
    # %logname Authenticated login/user with format: alex
    # %time1 Date and time with format: [dd/mon/yyyy:hh:mm:ss +0000] or [dd/mon/yyyy:hh:mm:ss]
    # %time2 Date and time with format: yyyy-mm-dd hh-mm-ss
    # %time3 Date and time with format: Mon dd hh:mm:ss or Mon dd hh:mm:ss yyyy
    # %time4 Date and time with unix timestamp format: dddddddddd
    # %methodurl Method and URL with format: "GET /index.html HTTP/x.x"
    # %methodurlnoprot Method and URL with format: "GET /index.html"
    # %method Method with format: GET
    # %url URL only with format: /index.html
    # %query Query string (used by URLWithQuery option)
    # %code Return code status (with format for web log: 999)
    # %bytesd Size of document in bytes
    # %refererquot Referer page with format: "http://from.com/from.htm"
    # %referer Referer page with format: http://from.com/from.htm
    # %uaquot User agent with format: "Mozilla/4.0 (compatible, ...)"
    # %ua User agent with format: Mozilla/4.0_(compatible...)
    # %gzipin mod_gzip compression input bytes: In:XXX
    # %gzipout mod_gzip compression output bytes & ratio: Out:YYY:ZZpct.
    # %gzipratio mod_gzip compression ratio: ZZpct.
    # %deflateratio mod_deflate compression ratio with format: (ZZ)
    # %email EMail sender (for mail log)
    # %email_r EMail receiver (for mail log)
    # %virtualname Web sever virtual hostname. Use this tag when same log
    # contains data of several virtual web servers. AWStats
    # will discard records not in SiteDomain nor HostAliases
    # %cluster If log file is provided from several computers (merged by
    # logresolvemerge.pl), this tag define field of cluster id.
    # %extraX Another field that you plan to use for building a
    # personalized report with ExtraSection feature (See later).
    # If your log format has some fields not included in this list, use
    # %other Means another field
    # %otherquot Means another not used double quoted field
    #
    # Examples for Apache combined logs (following two examples are equivalent):
    # LogFormat = 1
    # LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
    #
    # Example for IIS:
    # LogFormat = 2
    #
    LogFormat=1


    LogSeparator
    Version : 5.0+

    # If your log field's separator is not a space, you can change this parameter.
    # This parameter is not used if LogFormat is a predefined value (1,2,3,4)
    # Example: " "
    # Example: "\t"
    # Example: "|"
    # Default: " "
    #
    LogSeparator=" "


    DNSLookup
    Version : 1.0+ (5.0+ for value 2)

    # If you want to have hosts reported by name instead of ip address, AWStats
    # need to make reverse DNS lookups (if not already done in your log file).
    # With DNSLookup to 0, all hosts will be reported by their IP addresses and
    # not by the full hostname of visitors (except if names are already available
    # in log file).
    # If you want/need to set DNSLookup to 1, don't forget that this will reduce
    # dramatically AWStats update process speed. Do not use on large web sites.
    # Note: Reverse DNS lookup is done on IPv4 only (Enable ipv6 plugin for IPv6).
    # Note: Result of DNS Lookup can be used to build the Country report. However
    # it is highly recommanded to enable the plugin 'geoipfree' or 'geoip' to
    # have an accurate Country report with no need of DNS Lookup.
    # Possible values:
    # 0 - No DNS Lookup
    # 1 - DNS Lookup is fully enabled
    # 2 - DNS Lookup is made only from static DNS cache file (if it exists)
    # Default: 2
    #
    DNSLookup=2


    DirData
    Version : 1.0+

    # When AWStats updates its statistics, it stores results of its analysis in
    # files (AWStats database). All those files are written in the directory
    # defined by the "DirData" parameter. Set this value to the directory where
    # you want AWStats to save its database and working files into.
    # Warning: If you want to be able to use the "AllowToUpdateStatsFromBrowser"
    # feature (see later), you need write permissions by webserver user on this
    # directory.
    # Example: "/var/lib/awstats"
    # Example: "../data"
    # Example: "C:/awstats_data_dir"
    # Default: "." (means same directory as awstats.pl)
    #
    DirData="."


    DirCgi
    Version : 1.0+

    # Relative or absolute web URL of your awstats cgi-bin directory.
    # This parameter is used only when AWStats is ran from command line
    # with -output option (to generate links in HTML reported page).
    # Example: "/awstats"
    # Default: "/cgi-bin" (means awstats.pl is in "/yourwwwroot/cgi-bin")
    #
    DirCgi="/cgi-bin"


    DirIcons
    Version : 1.0+

    # Relative or absolute web URL of your awstats icon directory.
    # If you build static reports ("... -output > outputpath/output.html"), enter
    # path of icon directory relative to the output directory 'outputpath'.
    # Example: "/awstatsicons"
    # Example: "../icon"
    # Default: "/icon" (means you must copy icon directories in "/mywwwroot/icon")
    #
    DirIcons="/icon"


    SiteDomain
    Version : 3.2+

    # "SiteDomain" must contain the main domain name or the main intranet web
    # server name used to reach the web site.
    # If you share the same log file for several virtual web servers, this
    # parameter is used to tell AWStats to filter record that contains records for
    # this virtual host name only (So check that this virtual hostname can be
    # found in your log file and use a personalized log format that include the
    # %virtualname tag).
    # But for multi hosting a better solution is to have one log file for each
    # virtual web server. In this case, this parameter is only used to generate
    # full URL's links when ShowLinksOnUrl option is set to 1.
    # If analysing mail log, enter here the domain name of mail server.
    # Example: "myintranetserver"
    # Example: "www.domain.com"
    # Example: "ftp.domain.com"
    # Example: "domain.com"
    #
    SiteDomain=""


    HostAliases
    Version : 1.0+ (5.6+ for REGEX syntax)

    # Enter here all other possible domain names, addresses or virtual host
    # aliases someone can use to access your site. Try to keep only the minimum
    # number of possible names/addresses to have the best performances.
    # You can repeat the "SiteDomain" value in this list.
    # This parameter is used to analyze referer field in log file and to help
    # AWStats to know if a referer URL is a local URL of same site or an URL of
    # another site.
    # Note: Use space between each value.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Example: "www.myserver.com localhost 127.0.0.1 REGEX[\.mydomain\.(net|org)$]"
    #
    HostAliases="localhost 127.0.0.1 REGEX[^.*\.myserver\.com$]"


    AllowToUpdateStatsFromBrowser
    Version : 3.0+

    # When this parameter is set to 1, AWStats add a button on report page to
    # allow to "update" statistics from a web browser. Warning, when "update" is
    # made from a browser, AWStats is ran as a CGI by the web server user
    # defined in your web server (user "nobody" by default with Apache, "IUSR_XXX"
    # with IIS), so the "DirData" directory and all already existing history files
    # (awstatsMMYYYY[.xxx].txt) must be writable by this user. Change permissions
    # if required.
    # Warning: Update process can be long so you might experience "time out"
    # browser errors if you don't launch AWStats enough frequently.
    # When set to 0, update is only made when AWStats is ran from the command
    # line interface (or a task scheduler).
    # Possible values: 0 or 1
    # Default: 0
    #
    AllowToUpdateStatsFromBrowser=0


    AllowFullYearView
    Version : 5.9+

    # AWStats save and sort its database on a month basis, this allows to build
    # build a report quickly. However, if you choose the -month=all from command
    # line or value '-Year-' from CGI combo form to have a report for all year,
    # AWStats needs to reload all data for full year, and resort them completely,
    # requiring a large amount of time, memory and CPU. This might be a problem
    # for web hosting providers that offer AWStats for large sites on shared
    # servers to non CPU cautious customers.
    # For this reason, the 'full year' is only enable on Command Line by default.
    # You can change this by setting this parameter to 0, 1, 2 or 3.
    # Possible values:
    # 0 - Never allowed
    # 1 - Allowed on CLI only, -Year- value in combo is not visible
    # 2 - Allowed on CLI only, -Year- value in combo is visible but not allowed
    # 3 - Possible on CLI and CGI
    # Default: 2
    #
    AllowFullYearView=2


    EnableLockForUpdate
    Version : 5.0+

    # When the update process run, AWStats can set a lock file in TEMP or TMP
    # directory. This lock is to avoid to have 2 update processes running at the
    # same time to prevent unknown conflicts problems and avoid DoS attacks when
    # AllowToUpdateStatsFromBrowser is set to 1.
    # Because, when you use lock file, you can experience sometimes problems in
    # lock file not correctly removed (killed process for example requires that
    # you remove the file manualy), this option is not enabled by default (Do
    # not enable this option with no console server access).
    # Possible values: 0 or 1
    # Default: 0
    #
    EnableLockForUpdate=0


    DNSStaticCacheFile
    Version : 5.0+

    # AWStats can do reverse DNS lookups through a static DNS cache file that was
    # previously created manually. If no path is given in static DNS cache file
    # name, AWStats will search DirData directory. This file is never changed.
    # This option is not used if DNSLookup=0.
    # Note: DNS cache file format is 'minsince1970 ipaddress resolved_hostname'
    # or just 'ipaddress resolved_hostname'
    # Example: "/mydnscachedir/dnscache"
    # Default: "dnscache.txt"
    #
    DNSStaticCacheFile="dnscache.txt"


    DNSLastUpdateCacheFile
    Version : 5.0+

    # AWStats can do reverse DNS lookups through a DNS cache file that was created
    # by a previous run of AWStats. This file is erased and recreated after each
    # statistics update process. You don't need to create and/or edit it.
    # AWStats will read and save this file in DirData directory.
    # This option is used only if DNSLookup=1.
    # Note: If a DNSStaticCacheFile is available, AWStats will check for DNS
    # lookup in DNSLastUpdateCacheFile after checking into DNSStaticCacheFile.
    # Example: "/mydnscachedir/dnscachelastupdate"
    # Default: "dnscachelastupdate.txt"
    #
    DNSLastUpdateCacheFile="dnscachelastupdate.txt"


    SkipDNSLookupFor
    Version : 3.0+ (5.6+ for REGEX syntax)

    # You can specify specific IP addresses that should NOT be looked up in DNS.
    # This option is used only if DNSLookup=1.
    # Note: Use space between each value.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "123.123.123.123 REGEX[^192\.168\.]"
    # Default: ""
    #
    SkipDNSLookupFor=""


    AllowAccessFromWebToAuthenticatedUsersOnly
    Version : 4.0+

    # The following two parameters allow you to protect a config file from being
    # read by AWStats when called from a browser if web user has not been
    # authenticated. Your AWStats program must be in a web protected "realm" (With
    # Apache, you can use .htaccess files to do so. With other web servers, see
    # your server setup manual).
    # Change : Effective immediatly
    # Possible values: 0 or 1
    # Default: 0
    #
    AllowAccessFromWebToAuthenticatedUsersOnly=0


    AllowAccessFromWebToFollowingAuthenticatedUsers
    Version : 4.0+

    # This parameter gives the list of all authorized authenticated users to view
    # statistics for this domain/config file. This parameter is used only if
    # AllowAccessToAuthenticatedUsersOnly is set to 1.
    # Change : Effective immediatly
    # Example: "user1 user2"
    # Default: ""
    #
    AllowAccessFromWebToFollowingAuthenticatedUsers=""


    AllowAccessFromWebToFollowingIPAddresses
    Version : 5.0+

    # When this parameter is defined to something, the IP address of the user that
    # read its statistics from a browser (when AWStats is used as a CGI) is
    # checked and must match one of the IP address values or ranges.
    # Change : Effective immediatly
    # Example: "127.0.0.1 123.123.123.1-123.123.123.255"
    # Default: ""
    #
    AllowAccessFromWebToFollowingIPAddresses=""


    CreateDirDataIfNotExists
    Version : 4.0+

    # If the "DirData" directory (see above) does not exists, AWStats return an
    # error. However, you can ask AWStats to create it.
    # This option can be used by some Web Hosting Providers that has defined a
    # dynamic value for DirData (for example DirData="/home/__REMOTE_USER__") and
    # don't want to have to create a new directory each time they add a new user.
    # Change : Effective immediatly
    # Possible values: 0 or 1
    # Default: 0
    #
    CreateDirDataIfNotExists=1


    BuildHistoryFormat
    Version : 6.0+

    # You can choose in which format the Awstats history database is saved.
    # Note: Using "xml" format make AWStats building database files three times
    # larger than using "text" format.
    # Change : Database format is switched after next update
    # Possible values: text or xml
    # Default: text
    #
    BuildHistoryFormat=text


    BuildReportFormat
    Version : 6.0+

    # If you prefer having the report output pages be built as XML compliant pages
    # instead of simple HTML pages, you can set this to 'xhtml' (May not works
    # properly with old browsers).
    # Possible values: html or xhtml
    # Default: html
    #
    BuildReportFormat=html


    SaveDatabaseFilesWithPermissionsForEveryone
    Version : 4.0+

    # AWStats databases can be updated from command line of from a browser (when
    # used as a cgi program). So AWStats database files need write permission
    # for both command line user and default web server user (nobody for Unix,
    # IUSR_xxx for IIS/Windows,...).
    # To avoid permission's problems between update process (run by an admin user)
    # and CGI process (ran by a low level user), AWStats can save its database
    # files with read and write permissions for everyone.
    # By default, AWStats keep default user permissions on updated files. If you
    # set AllowToUpdateStatsFromBrowser to 1, you can change this parameter to 1.
    # Change : Effective for new updates only
    # Possible values: 0 or 1
    # Default: 0
    #
    SaveDatabaseFilesWithPermissionsForEveryone=0


    PurgeLogFile
    Version : 2.23+

    # AWStats can purge log file, after analyzing it. Note that AWStats is able
    # to detect new lines in a log file, to process only them, so you can launch
    # AWStats as often as you want, even with this parameter to 0.
    # With 0, no purge is made, so you must use a scheduled task or a web server
    # that make this purge frequently.
    # With 1, the purge of the log file is made each time AWStats is ran.
    # This parameter doesn't work with IIS (This web server doesn't let its log
    # file to be purged).
    # Possible values: 0 or 1
    # Default: 0
    #
    PurgeLogFile=0


    ArchiveLogRecords
    Version : 2.1+ (6.4+ to use tags for suffix)

    # When PurgeLogFile is setup to 1, AWStats will clean your log file after
    # processing it. You can however keep an archive file of all processed log
    # records by setting this parameter (For example if you want to use another
    # log analyzer). The archived log file is saved in "DirData" with name
    # awstats_archive.configname[.suffix].log
    # This parameter is not used if PurgeLogFile=0
    # Change : Effective for new updates only
    # Possible values: 0, 1, or tags (See LogFile parameter) for suffix
    # Example: 1
    # Example: %YYYY%MM%DD
    # Default: 0
    #
    ArchiveLogRecords=0


    KeepBackupOfHistoricFiles
    Version : 3.2+

    # Each time you run the update process, AWStats overwrite the 'historic file'
    # for the month (awstatsMMYYYY[.*].txt) with the updated one.
    # When write errors occurs (IO, disk full,...), this historic file can be
    # corrupted and must be deleted. Because this file contains information of all
    # past processed log files, you will loose old stats if removed. So you can
    # ask AWStats to save last non corrupted file in a .bak file. This file is
    # stored in "DirData" directory with other 'historic files'.
    # Possible values: 0 or 1
    # Default: 0
    #
    KeepBackupOfHistoricFiles=0


    DefaultFile
    Version : 1.0+ (5.0+ can accept several values)

    # Default index page name for your web server.
    # Change : Effective for new updates only
    # Example: "index.php index.html default.html"
    # Default: "index.html"
    #
    DefaultFile="index.html"


    SkipHosts
    Version : 1.0+ (5.6+ for REGEX syntax)

    # Do not include access from clients that match following criteria.
    # If your log file contains IP adresses in host field, you must enter here
    # matching IP adresses criteria.
    # If DNS lookup is already done in your log file, you must enter here hostname
    # criteria, else enter ip address criteria.
    # The opposite parameter of "SkipHosts" is "OnlyHosts".
    # Note: Use space between each value.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.0\.0\.]"
    # Example: "localhost REGEX[^.*\.localdomain$]"
    # Default: ""
    #
    SkipHosts=""


    SkipUserAgents
    Version : 5.1+ (5.6+ for REGEX syntax)

    # Do not include access from clients with a user agent that match following
    # criteria. If you want to exclude a robot, you should update the robots.pm
    # file instead of this parameter.
    # The opposite parameter of "SkipUserAgents" is "OnlyUserAgents".
    # Note: Use space between each value. This parameter is not case sensitive.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "konqueror REGEX[ua_test_v\d\.\d]"
    # Default: ""
    #
    SkipUserAgents=""


    SkipFiles
    Version : 1.0+ (5.6+ for REGEX syntax)

    # Use SkipFiles to ignore access to URLs that match one of following entries.
    # You can enter a list of not important URLs (like framed menus, hidden pages,
    # etc...) to exclude them from statistics. You must enter here exact relative
    # URL as found in log file, or a matching REGEX value. Check apply on URL with
    # all its query paramaters.
    # For example, to ignore /badpage.php, just add "/badpage.php". To ignore all
    # pages in a particular directory, add "REGEX[^\/directorytoexclude]".
    # The opposite parameter of "SkipFiles" is "OnlyFiles".
    # Note: Use space between each value. This parameter is or not case sensitive
    # depending on URLNotCaseSensitive parameter.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "/badpage.php /page.php?param=x REGEX[^\/excludedirectory]"
    # Default: ""
    #
    SkipFiles=""


    SkipReferrersBlackList
    Version : 6.5+

    # Use SkipReferrersBlackList if you want to exclude records coming from a SPAM
    # referrer. Parameter must receive a local file name containing rules applied
    # on referrer field. If parameter is empty, no filter is applied.
    # An example of such a file is available in lib/blacklist.txt
    # You can download updated version at http://www.jayallen.org/comment_spam/
    # Change : Effective for new updates only
    # Example: "/mylibpath/blacklist.txt"
    # Default: ""

    # WARNING!! Using this feature make AWStats running very slower (5 times slower
    # with black list file provided with AWStats !
    #
    SkipReferrersBlackList=""


    OnlyHosts
    Version : 5.2+ (5.6+ for REGEX syntax)

    # Include in stats, only accesses from hosts that match one of following
    # entries. For example, if you want AWStats to filter access to keep only
    # stats for visits from particular hosts, you can add those hosts names in
    # this parameter.
    # If DNS lookup is already done in your log file, you must enter here hostname
    # criteria, else enter ip address criteria.
    # The opposite parameter of "OnlyHosts" is "SkipHosts".
    # Note: Use space between each value. This parameter is not case sensitive.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.0\.0\.]"
    # Default: ""
    #
    OnlyHosts=""


    OnlyUserAgents
    Version : 5.8+

    # Include in stats, only accesses from user agent that match one of following
    # entries. For example, if you want AWStats to filter access to keep only
    # stats for visits from particular browsers, you can add their user agents
    # string in this parameter.
    # The opposite parameter of "OnlyUserAgents" is "SkipUserAgents".
    # Note: Use space between each value. This parameter is not case sensitive.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "msie"
    # Default: ""
    #
    OnlyUserAgents=""


    OnlyUsers
    Version : 6.8+

    # Include in stats, only accesses from authenticated users that match one of
    # following entries. For example, if you want AWStats to filter access to keep
    # only stats for authenticated users, you can add those users names in
    # this parameter. Useful for statistics for per user ftp logs.
    # Note: Use space between each value. This parameter is not case sensitive.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "john bob REGEX[^testusers]"
    # Default: ""
    #
    OnlyUsers=""


    OnlyFiles
    Version : 3.0+ (5.6+ for REGEX syntax)

    # Include in stats, only accesses to URLs that match one of following entries.
    # For example, if you want AWStats to filter access to keep only stats that
    # match a particular string, like a particular directory, you can add this
    # directory name in this parameter.
    # The opposite parameter of "OnlyFiles" is "SkipFiles".
    # Note: Use space between each value. This parameter is or not case sensitive
    # depending on URLNotCaseSensitive parameter.
    # Note: You can use regular expression values writing value with REGEX[value].
    # Change : Effective for new updates only
    # Example: "REGEX[marketing_directory] REGEX[office\/.*\.(csv|sxw)$]"
    # Default: ""
    #
    OnlyFiles=""


    NotPageList
    Version : 3.2+

    # Add here a list of kind of url (file extension) that must be counted as
    # "Hit only" and not as a "Hit" and "Page/Download". You can set here all
    # images extensions as they are hit downloaded that must be counted but they
    # are not viewed pages. URLs with such extensions are not included in the TOP
    # Pages/URL report.
    # Note: If you want to exclude particular URLs from stats (No Pages and no
    # Hits reported), you must use SkipFiles parameter.
    # Example: "css js class gif jpg jpeg png bmp rss xml swf zip arj gz z wav mp3 wma mpg"
    # Example: ""
    # Default: "css js class gif jpg jpeg png bmp rss xml swf"
    #
    NotPageList="css js class gif jpg jpeg png bmp rss xml swf"


    ValidHTTPCodes
    Version : 4.0+

    # By default, AWStats considers that records found in log file are successful
    # hits if HTTP code returned by server is a valid HTTP code (200 and 304).
    # Any other code are reported in HTTP error chart.
    # However in some specific environment, with web server HTTP redirection,
    # you can choose to also accept other codes.
    # Example: "200 304 302 305"
    # Default: "200 304"
    #
    ValidHTTPCodes="200 304"

    This is examples of current HTTP codes

    #[Miscellaneous successes]
    "2xx", "[Miscellaneous successes]",
    "200", "OK", # HTTP request OK
    "201", "Created",
    "202", "Request recorded, will be executed later",
    "203", "Non-authoritative information",
    "204", "Request executed",
    "205", "Reset document",
    "206", "Partial Content",
    #[Miscellaneous redirections]
    "3xx", "[Miscellaneous redirections]",
    "300", "Multiple documents available",
    "301", "Moved Permanently",
    "302", "Found",
    "303", "See other document",
    "304", "Not Modified since last retrieval", # HTTP request OK
    "305", "Use proxy",
    "306", "Switch proxy",
    "307", "Document moved temporarily",
    #[Miscellaneous client/user errors]
    "4xx", "[Miscellaneous client/user errors]",
    "400", "Bad Request",
    "401", "Unauthorized",
    "402", "Payment required",
    "403", "Forbidden",
    "404", "Document Not Found",
    "405", "Method not allowed",
    "406", "ocument not acceptable to client",
    "407", "Proxy authentication required",
    "408", "Request Timeout",
    "409", "Request conflicts with state of resource",
    "410", "Document gone permanently",
    "411", "Length required",
    "412", "Precondition failed",
    "413", "Request too long",
    "414", "Requested filename too long",
    "415", "Unsupported media type",
    "416", "Requested range not valid",
    "417", "Failed",
    #[Miscellaneous server errors]
    "5xx", "[Miscellaneous server errors]",
    "500", "Internal server Error",
    "501", "Not implemented",
    "502", "Received bad response from real server",
    "503", "Server busy",
    "504", "Gateway timeout",
    "505", "HTTP version not supported",
    "506", "Redirection failed",
    #[Unknown]
    "xxx" ,"[Unknown]"



    ValidSMTPCodes
    Version : 5.0+

    # By default, AWStats considers that records found in mail log file are
    # successful mail transfers if field that represent return code in analyzed
    # log file match values defined by this parameter.
    # Change : Effective for new updates only
    # Example: "1 250 200"
    # Default: "1 250"
    #
    ValidSMTPCodes="1 250"


    AuthenticatedUsersNotCaseSensitive
    Version : 5.3+

    # Some web servers on some Operating systems (IIS-Windows) considers that a
    # login with same value but different case are the same login. To tell AWStats
    # to also considers them as one, set this parameter to 1.
    # Possible values: 0 or 1
    # Default: 0
    #
    AuthenticatedUsersNotCaseSensitive=0


    URLNotCaseSensitive
    Version : 5.1+

    # Some web servers on some Operating systems (IIS-Windows) considers that two
    # URLs with same value but different case are the same URL. To tell AWStats to
    # also considers them as one, set this parameter to 1.
    # Possible values: 0 or 1
    # Default: 0
    #
    URLNotCaseSensitive=0


    URLWithAnchor
    Version : 5.4+

    # Keep or remove the anchor string you can find in some URLs.
    # Possible values: 0 or 1
    # Default: 0
    #
    URLWithAnchor=0


    URLQuerySeparators
    Version : 5.2+

    # In URL links, "?" char is used to add parameter's list in URLs. Syntax is:
    # /mypage.html?param1=value1
    # However, some servers/sites have also others chars to isolate dynamic part of
    # their URLs. You can complete this list with all such characters.
    # Example: "?;,"
    # Default: "?;"
    #
    URLQuerySeparators="?;"


    URLWithQuery
    Version : 3.2+

    # Keep or remove the query string to the URL in the statistics for individual
    # pages. This is primarily used to differentiate between the URLs of dynamic
    # pages. If set to 1, mypage.html?id=x and mypage.html?id=y are counted as two
    # different pages.
    # Warning, when set to 1, memory required to run AWStats is dramatically
    # increased if you have a lot of changing URLs (for example URLs with a random
    # id inside). Such web sites should not set this option to 1 or use seriously
    # the next parameter URLWithQueryWithoutFollowingParameters.
    # Possible values:
    # 0 - URLs are cleaned from the query string (ie: "/mypage.html")
    # 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y")
    # Default: 0
    #
    URLWithQuery=0


    URLWithQueryWithOnlyFollowingParameters
    Version : 6.0+

    # When URLWithQuery is on, you will get the full URL with all parameters in
    # URL reports. But among thoose parameters, sometimes you don't need a
    # particular parameter because it does not identify the page or because it's
    # a random ID changing for each access even if URL points to same page. In
    # such cases, it is higly recommanded to ask AWStats to keep only parameters
    # you need (if you know them) before counting, manipulating and storing URL.
    # Enter here list of wanted parameters. For example, with "param", one hit on
    # /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r
    # will be reported as 2 hits on /mypage.cgi?param=abc
    # This parameter is not used when URLWithQuery is 0 and can't be used with
    # URLWithQueryWithoutFollowingParameters.
    # Change : Effective for new updates only
    # Example: "param"
    # Default: ""
    #
    URLWithQueryWithOnlyFollowingParameters=""


    URLWithQueryWithoutFollowingParameters
    Version : 5.1+

    # When URLWithQuery is on, you will get the full URL with all parameters in
    # URL reports. But among thoose parameters, sometimes you don't need a
    # particular parameter because it does not identify the page or because it's
    # a random ID changing for each access even if URL points to same page. In
    # such cases, it is higly recommanded to ask AWStats to remove such parameters
    # from the URL before counting, manipulating and storing URL. Enter here list
    # of all non wanted parameters. For example, if you enter "id", one hit on
    # /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r
    # will be reported as 2 hits on /mypage.cgi?param=abc
    # This parameter is not used when URLWithQuery is 0 and can't be used with
    # URLWithQueryWithOnlyFollowingParameters.
    # Change : Effective for new updates only
    # Example: "PHPSESSID jsessionid"
    # Default: ""
    #
    URLWithQueryWithoutFollowingParameters=""


    URLReferrerWithQuery
    Version : 5.1+

    # Keep or remove the query string to the referrer URL in the statistics for
    # external referrer pages. This is used to differentiate between the URLs of
    # dynamic referrer pages. If set to 1, mypage.html?id=x and mypage.html?id=y
    # are counted as two different referrer pages.
    # Possible values:
    # 0 - Referrer URLs are cleaned from the query string (ie: "/mypage.html")
    # 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y")
    # Default: 0
    #
    URLReferrerWithQuery=0


    WarningMessages
    Version : 1.0+

    # AWStats can detect setup problems or show you important informations to have
    # a better use. Keep this to 1, except if AWStats says you can change it.
    # Possible values: 0 or 1
    # Default: 1
    #
    WarningMessages=1


    ErrorMessages
    Version : 5.2+

    # When an error occurs, AWStats output a message related to errors. If you
    # want (in most cases for security reasons) to have no error messages, you
    # can set this parameter to your personalized generic message.
    # Example: "An error occured. Contact your Administrator"
    # Default: ""
    #
    ErrorMessages=""


    DebugMessages
    Version : 5.2+

    # AWStat can be run with debug=x parameter to output various informations
    # to help in debugging or solving troubles. If you want to allow this (not
    # enabled by default for security reasons), set this parameter to 0.
    # Change : Effective immediatly
    # Possible values: 0 or 1
    # Default: 0
    #
    DebugMessages=0


    NbOfLinesForCorruptedLog
    Version : 3.2+

    # To help you to detect if your log format is good, AWStats report an error
    # if all the first NbOfLinesForCorruptedLog lines have a format that does not
    # match the LogFormat parameter.
    # However, some worm virus attack on your web server can result in a very high
    # number of corrupted lines in your log. So if you experience awstats stop
    # because of bad virus records at the beginning of your log file, you can
    # increase this parameter (very rare).
    # Default: 50
    #
    NbOfLinesForCorruptedLog=50


    SplitSearchString
    Version : 2.24 - 4.0 (deprecated since 4.1)
    This parameter has been removed since 4.1.
    AWStats 4.1+ supports both keywords AND keyphrases by default with no need of any parameter.



    WrapperScript
    Version : 4.0+

    # For some particular integration needs, you may want to have CGI links to
    # point to another script than awstats.pl.
    # Use the name of this script in WrapperScript parameter.
    # Example: "awstatslauncher.pl"
    # Default: ""
    #
    WrapperScript=""


    DecodeUA
    Version : 5.0+

    # DecodeUA must be set to 1 if you use Roxen web server. This server converts
    # all spaces in user agent field into %20. This make the AWStats robots, os
    # and browsers detection fail in some cases. Just change it to 1 if and only
    # if your web server is Roxen.
    # Possible values: 0 or 1
    # Default: 0
    #
    DecodeUA=0


    MiscTrackerUrl
    Version : 5.6+

    # MiscTrackerUrl can be used to make AWStats able to detect some miscellanous
    # things, that can not be tracked on other way like:
    # - Screen size
    # - Screen color depth
    # - Java enabled
    # - Macromedia Director plugin
    # - Macromedia Shockwave plugin
    # - Realplayer G2 plugin
    # - QuickTime plugin
    # - Mediaplayer plugin
    # - Acrobat PDF plugin
    # To enable all this features, you must copy the awstats_misc_tracker.js file
    # into a /js/ directory stored in your web document root and add the following
    # HTML code at the end of your index page (before </BODY>) :
    # <script language=javascript src="/js/awstats_misc_tracker.js"></script>
    # If code is not added in index page, all this detection capabilities will be
    # disabled. You must also check that ShowScreenSizeStats and ShowMiscStats
    # parameters are set to 1 to make results appear in report page.
    # If you want to use another directory than /js/, you must also change the
    # awstatsmisctrackerurl variable into the awstats_misc_tracker.js file.
    # Change : Effective for new updates only.
    # Possible value: Full URL of javascript tracker file added in HTML code
    # Default: "/js/awstats_misc_tracker.js"
    #
    MiscTrackerUrl="/js/awstats_misc_tracker.js"


    LevelFor
    Version : 4.0+
    6.0+ for LevelForFileTypesDetection, LevelForSearchEnginesDetection, LevelForKeywordsDetection, LevelForWormsDetection

    # Following values allows you to define accuracy of AWStats entities (robots,
    # browsers, os, referers, file types) detection.
    # It might be a good idea for large web sites or ISP that provides AWStats to
    # high number of customers, to set this parameter to 1 (or 0), instead of 2.
    # Possible values:
    # 0 = No detection,
    # 1 = Medium/Standard detection
    # 2 = Full detection
    # Change : Effective for new updates only
    # Default: 2 (0 for LevelForWormsDetection)
    #
    LevelForBrowsersDetection=2 # 0 disables Browsers detection.
    # 2 reduces AWStats speed by 2%
    LevelForOSDetection=2 # 0 disables OS detection.
    # 2 reduces AWStats speed by 3%
    LevelForRefererAnalyze=2 # 0 disables Origin detection.
    # 2 reduces AWStats speed by 14%
    LevelForRobotsDetection=2 # 0 disables Robots detection.
    # 2 reduces AWStats speed by 2.5%
    LevelForSearchEnginesDetection=2 # 0 disables Search engines detection.
    # 2 reduces AWStats speed by 9%
    LevelForKeywordsDetection=2 # 0 disables Keyphrases/Keywords detection.
    # 2 reduces AWStats speed by 1%
    LevelForFileTypesDetection=2 # 0 disables File types detection.
    # 2 reduces AWStats speed by 1%
    LevelForWormsDetection=0 # 0 disables Worms detection.
    # 2 reduces AWStats speed by 15%


    UseFramesWhenCGI
    Version : 5.0+

    # When you use AWStats as a CGI, you can have the reports shown in HTML views.
    # Frames are only available for report viewed dynamically. When you build
    # pages from command line, this option is not used and no frames are built.
    # Possible values: 0 or 1
    # Default: 1
    #
    UseFramesWhenCGI=1


    DetailedReportsOnNewWindows
    Version : 4.1+ (5.0+ for value 2)

    # This parameter ask your browser to open detailed reports into a different
    # window than the main page.
    # Possible values:
    # 0 - Open all in same browser window
    # 1 - Open detailed reports in another window except if using frames
    # 2 - Open always in a different window even if reports are framed
    # Default: 1
    #
    DetailedReportsOnNewWindows=1


    Expires
    Version : 3.1+

    # You can add, in the HTML report page, a cache lifetime (in seconds) that
    # will be returned to browser in HTTP header answer by server.
    # This parameter is not used when report are built with -staticlinks option.
    # Example: 3600
    # Default: 0
    #
    Expires=0


    MaxRowsInHTMLOutput
    Version : 4.0+

    # To avoid too large web pages, you can ask AWStats to limit number of rows of
    # all reported charts to this number when no other limit apply.
    # Default: 1000
    #
    MaxRowsInHTMLOutput=1000


    Lang
    Version : 2.1+

    # Set your primary language.
    # Possible value:
    # Albanian=al, Bosnian=ba, Bulgarian=bg,
    # Chinese (Taiwan)=tw, Chinese (Simpliefied)=cn, Czech=cz,
    # Danish=dk, Dutch=nl, English=en, Estonian=et, Finnish=fi, French=fr,
    # German=de, Greek=gr, Hebrew=he, Hungarian=hu, Indonesian=id, Italian=it,
    # Japanese=jp, Korean=kr, Latvian=lv, Norwegian (Nynorsk)=nn,
    # Norwegian (Bokmal)=nb, Polish=pl, Portuguese=pt, Portuguese (Brazilian)=br,
    # Romanian=ro, Russian=ru, Serbian=sr, Slovak=sk, Spanish=es,
    # Spanish (Catalan)=es_cat, Swedish=se, Turkish=tr, Ukrainian=ua, Welsh=wlk.
    # First available language accepted by browser=auto
    # Default: "auto"
    #
    Lang="auto"


    DirLang
    Version : 2.1+

    # Set the location of language files.
    # Example: "/usr/share/awstats/lang"
    # Default: "./lang" (means lang directory is in same location than awstats.pl)
    #
    DirLang="./lang"


    Show...
    Version :
    3.2 - 5.0 for ShowCompressionStats (deprecated since 5.1, use code C with ShowFileTypesStats instead)
    3.2 - 5.3 for ShowHeader (deprecated since 5.4)
    3.2+ for ShowMenu,ShowMonthStats,ShowDaysOfWeekStats,ShowHoursStats, ShowDomainsStats,ShowHostsStats,ShowAuthenticatedUsers,ShowRobotsStats, ShowPagesStats,ShowFileTypesStats,ShowFileSizesStats,ShowBrowsersStats, ShowOSStats,ShowOriginStats,ShowKeyphrasesStats,ShowKeywordsStats,ShowHTTPErrorsStats
    4.1+ for ShowSessionsStats, ShowKeywordsStats
    5.1+ for all letters codes
    5.5+ for ShowDaysOfMonthStats
    5.6+ for ShowMiscStats,ShowSMTPErrorsStats
    5.8+ for ShowClusterStats
    6.0+ for ShowWormsStats
    6.4+ for ShowSummary
    7.0+ for ShowDownloadsStats

    # You choose here which reports you want to see in the main page and what you
    # want to see in those reports.
    # Possible values:
    # 0 - Report is not shown at all
    # 1 - Report is shown in main page with an entry in menu and default columns
    # XYZ - Report shows column informations defined by code X,Y,Z...
    # X,Y,Z... are code letters among the following:
    # U = Unique visitors
    # V = Visits
    # P = Number of pages
    # H = Number of hits (or mails)
    # B = Bandwith (or total mail size for mail logs)
    # L = Last access date
    # E = Entry pages
    # X = Exit pages
    # C = Web compression (mod_gzip,mod_deflate)
    # M = Average mail size (mail logs)
    #

    # Show menu header with reports' links
    # Possible values: 0 or 1
    # Default: 1
    #
    ShowMenu=1

    # Show monthly summary
    # Context: Web, Streaming, Mail, Ftp
    # Default: UVPHB, Possible column codes: UVPHB
    ShowSummary=UVPHB

    # Show monthly chart
    # Context: Web, Streaming, Mail, Ftp
    # Default: UVPHB, Possible column codes: UVPHB
    ShowMonthStats=UVPHB

    # Show days of month chart
    # Context: Web, Streaming, Mail, Ftp
    # Default: VPHB, Possible column codes: VPHB
    ShowDaysOfMonthStats=VPHB

    # Show days of week chart
    # Context: Web, Streaming, Mail, Ftp
    # Default: PHB, Possible column codes: PHB
    ShowDaysOfWeekStats=PHB

    # Show hourly chart
    # Context: Web, Streaming, Mail, Ftp
    # Default: PHB, Possible column codes: PHB
    ShowHoursStats=PHB

    # Show domains/country chart
    # Context: Web, Streaming, Mail, Ftp
    # Default: PHB, Possible column codes: PHB
    ShowDomainsStats=PHB

    # Show hosts chart
    # Context: Web, Streaming, Mail, Ftp
    # Default: PHBL, Possible column codes: PHBL
    ShowHostsStats=PHBL

    # Show authenticated users chart
    # Context: Web, Streaming, Ftp
    # Default: 0, Possible column codes: PHBL
    ShowAuthenticatedUsers=0

    # Show robots chart
    # Context: Web, Streaming
    # Default: HBL, Possible column codes: HBL
    ShowRobotsStats=HBL

    # Show worms chart
    # Context: Web, Streaming
    # Default: 0 (If set to other than 0, see also LevelForWormsDetection), Possible column codes: HBL
    ShowWormsStats=0

    # Show email senders chart (For use when analyzing mail log files)
    # Context: Mail
    # Default: 0, Possible column codes: HBML
    ShowEMailSenders=0

    # Show email receivers chart (For use when analyzing mail log files)
    # Context: Mail
    # Default: 0, Possible column codes: HBML
    ShowEMailReceivers=0

    # Show session chart
    # Context: Web, Streaming, Ftp
    # Default: 1, Possible column codes: None
    ShowSessionsStats=1

    # Show pages-url chart.
    # Context: Web, Streaming, Ftp
    # Default: PBEX, Possible column codes: PBEX
    ShowPagesStats=PBEX

    # Show file types chart.
    # Context: Web, Streaming, Ftp
    # Default: HB, Possible column codes: HBC
    ShowFileTypesStats=HB

    # Show file size chart (Not yet available)
    # Context: Web, Streaming, Mail, Ftp
    # Default: 1, Possible column codes: None
    ShowFileSizesStats=0

    # Show downloads chart.
    # Context: Web, Streaming, Ftp
    # Default: HB, Possible column codes: HB
    ShowDownloadsStats=HB   

    # Show operating systems chart
    # Context: Web, Streaming, Ftp
    # Default: 1, Possible column codes: None
    ShowOSStats=1

    # Show browsers chart
    # Context: Web, Streaming
    # Default: 1, Possible column codes: None
    ShowBrowsersStats=1

    # Show screen size chart
    # Context: Web, Streaming
    # Default: 0 (If set to 1, see also MiscTrackerUrl), Possible column codes: None
    ShowScreenSizeStats=0

    # Show origin chart
    # Context: Web, Streaming
    # Default: PH, Possible column codes: PH
    ShowOriginStats=PH

    # Show keyphrases chart
    # Context: Web, Streaming
    # Default: 1, Possible column codes: None
    ShowKeyphrasesStats=1

    # Show keywords chart
    # Context: Web, Streaming
    # Default: 1, Possible column codes: None
    ShowKeywordsStats=1

    # Show misc chart
    # Context: Web, Streaming
    # Default: a (See also MiscTrackerUrl parameter), Possible column codes: anjdfrqwp
    ShowMiscStats=a

    # Show http errors chart
    # Context: Web, Streaming
    # Default: 1, Possible column codes: None
    ShowHTTPErrorsStats=1

    # Show smtp errors chart (For use when analyzing mail log files)
    # Context: Mail
    # Default: 0, Possible column codes: None
    ShowSMTPErrorsStats=0

    # Show the cluster report (Your LogFormat must contains the %cluster tag)
    # Context: Web, Streaming, Ftp
    # Default: 0, Possible column codes: PHB
    ShowClusterStats=0


    AddDataArray...
    Version :
    5.4+ for AddDataArrayMonthStats,AddDataArrayShowDaysOfWeekStats,AddDataArrayShowHoursStats
    5.5+ for AddDataArrayShowDaysOfMonthStats

    # Some graphical reports are followed by the data array of values.
    # If you don't want this array (to reduce report size for example), you can
    # set thoose options to 0.
    # Possible values: 0 or 1
    # Default: 1
    #
    # Data array values for the ShowMonthStats report
    AddDataArrayMonthStats=1
    # Data array values for the ShowDaysOfMonthStats report
    AddDataArrayShowDaysOfMonthStats=1
    # Data array values for the ShowDaysOfWeekStats report
    AddDataArrayShowDaysOfWeekStats=1
    # Data array values for the ShowHoursStats report
    AddDataArrayShowHoursStats=1


    IncludeInternalLinksInOriginSection
    Version : 6.1+

    # In the Origin chart, you have stats on where your hits came from. You can
    # includes hits on pages that comes from pages of same sites in this chart.
    # Possible values: 0 or 1
    # Default: 0
    #
    IncludeInternalLinksInOriginSection=0


    Max...
    Version : 1.0+

    # This value can be used to choose maximum number of lines shown for each
    # particular reporting.
    #
    # Stats by domains
    MaxNbOfDomain = 10
    MinHitDomain = 1
    # Stats by hosts
    MaxNbOfHostsShown = 10
    MinHitHost = 1
    # Stats by authenticated users
    MaxNbOfLoginShown = 10
    MinHitLogin = 1
    # Stats by robots
    MaxNbOfRobotShown = 10
    MinHitRobot = 1
    # Stats for Downloads
    MaxNbOfDownloadsShown = 10
    MinHitDownloads = 1
    # Stats by pages
    MaxNbOfPageShown = 10
    MinHitFile = 1
    # Stats by OS
    MaxNbOfOsShown = 10
    MinHitOs = 1
    # Stats by browsers
    MaxNbOfBrowsersShown = 10
    MinHitBrowser = 1
    # Stats by screen size
    MaxNbOfScreenSizesShown = 5
    MinHitScreenSize = 1
    # Stats by referers
    MaxNbOfRefererShown = 10
    MinHitRefer = 1
    # Stats for keywords
    MaxNbOfKeywordsShown = 10
    MinHitKeyword = 1
    # Stats for sender or receiver emails
    MaxNbOfEMailsShown = 20
    MinHitEMail = 1


    FirstDayOfWeek
    Version : 3.2+

    # Choose if you want week to start on sunday or monday
    # Possible values:
    # 0 - Week start on sunday
    # 1 - Week start on monday
    # Default: 1
    #
    FirstDayOfWeek=1


    ShowFlagLinks
    Version : 3.2+

    # List of visible flags with link to other language translations.
    # See Lang parameter for list of allowed flag/language codes.
    # If you don't want any flag link, set ShowFlagLinks to "".
    # This parameter is used only if ShowMenu parameter is set to 1.
    # Possible values: "" or "language_codes_separated_by_space"
    # Default: "en es fr it nl es"
    #
    ShowFlagLinks="en fr de it nl es"


    ShowLinksOnUrl
    Version : 3.1+

    # Each URL shown in stats report views are links you can click.
    # Possible values: 0 or 1
    # Default: 1
    #
    ShowLinksOnUrl=1


    UseHTTPSLinkForUrl
    Version : 4.0+

    # When AWStats build HTML links in its report pages, it starts thoose link
    # with "http://". However some links might be HTTPS links, so you can enter
    # here the root of all your HTTPS links. If all your site is a SSL web site,
    # just enter "/".
    # This parameter is not used if ShowLinksOnUrl is 0.
    # Example: "/shopping"
    # Example: "/"
    # Default: ""
    #
    UseHTTPSLinkForUrl=""


    MaxLengthOfShownURL
    Version : 1.0+

    # Maximum length of URL part shown on stats page (number of characters).
    # This affects only URL visible text, larger links still work.
    # Default: 64
    #
    MaxLengthOfShownURL=64


    ShowLinksToWhoIs
    Version : 4.0 - 5.6 (deprecated since 5.7, replaced by plugin 'hostinfo')
    This parameter has been removed since 5.7.
    You must enable the plugin 'hostinfo' to get the same result if you were using this parameter.



    LinksToWhoIs
    Version : 4.0 - 5.9 (deprecated since 6.0, replaced by plugin 'hostinfo')
    This parameter has been removed since 6.0.
    This parameter is no more required.



    LinksToIPWhoIs
    Version : 5.0 - 5.9 (deprecated since 6.0, replaced by plugin 'hostinfo')
    This parameter has been removed since 6.0.
    This parameter is no more required.



    HTMLHeadSection
    Version : 3.2+

    # You can enter HTML code that will be added at the top of AWStats reports.
    # Default: ""
    #
    HTMLHeadSection=""


    HTMLEndSection
    Version : 3.2+

    # You can enter HTML code that will be added at the end of AWStats reports.
    # Great to add advert ban.
    # Default: ""
    #
    HTMLEndSection=""


    Bar...
    Version : 1.0+

    # Value of maximum bar width/height for horizontal/vertical HTML graphics bar.
    # Default: 260/90
    #
    BarWidth = 260
    BarHeight = 90


    Logo...
    Version : 3.1+

    # You can set Logo and LogoLink to use your own logo.
    # Logo must be the name of image file (must be in $DirIcons/other directory).
    # LogoLink is the expected URL when clicking on Logo.
    # Default: "awstats_logo1.png"
    #
    Logo="awstats_logo1.png"
    LogoLink="http://www.awstats.org"


    StyleSheet
    Version : 5.6+

    # You can ask AWStats to use a particular CSS (Cascading Style Sheet) to
    # change its look. To create a style sheet, you can use samples provided with
    # AWStats in wwwroot/css directory.
    # Example: "/awstatscss/awstats_bw.css"
    # Example: "/css/awstats_bw.css"
    # Default: ""
    #
    StyleSheet=""


    color_...
    Version :
    3.1 for color_Background,color_TableBGTitle,color_TableTitle,color_TableBG, color_TableRowTitle,color_TableBGRowTitle,color_TableBorder,color_text, color_textpercent,color_titletext,color_weekend,color_link,color_hover, color_u,color_v,color_p,color_h,color_k,color_s
    4.1 for color_e,color_x
    5.0 for color_other

    # Those colors parameters can be used (if StyleSheet parameter is not used)
    # to change AWStats look.
    # Example: color_name="RRGGBB" # RRGGBB is Red Green Blue components in Hex
    #
    color_Background="FFFFFF" # Background color for main page (Default = "FFFFFF")
    color_TableBGTitle="CCCCDD" # Background color for table title (Default = "CCCCDD")
    color_TableTitle="000000" # Table title font color (Default = "000000")
    color_TableBG="CCCCDD" # Background color for table (Default = "CCCCDD")
    color_TableRowTitle="FFFFFF" # Table row title font color (Default = "FFFFFF")
    color_TableBGRowTitle="ECECEC" # Background color for row title (Default = "ECECEC")
    color_TableBorder="ECECEC" # Table border color (Default = "ECECEC")
    color_text="000000" # Color of text (Default = "000000")
    color_textpercent="606060" # Color of text for percent values (Default = "606060")
    color_titletext="000000" # Color of text title within colored Title Rows (Default = "000000")
    color_weekend="EAEAEA" # Color for week-end days (Default = "EAEAEA")
    color_link="0011BB" # Color of HTML links (Default = "0011BB")
    color_hover="605040" # Color of HTML on-mouseover links (Default = "605040")
    color_other="666688" # Color of text for 'other' record in charts (Default = "666688")
    color_u="FFB055" # Background color for number of unique visitors (Default = "FFB055")
    color_v="F8E880" # Background color for number of visites (Default = "F8E880")
    color_p="4477DD" # Background color for number of pages (Default = "4477DD")
    color_h="66F0FF" # Background color for number of hits (Default = "66F0FF")
    color_k="2EA495" # Background color for number of bytes (Default = "2EA495")
    color_s="8888DD" # Background color for number of search (Default = "8888DD")
    color_e="CEC2E8" # Background color for number of entry pages (Default = "CEC2E8")
    color_x="C1B2E2" # Background color for number of exit pages (Default = "C1B2E2")


    LoadPlugin
    Version : 5.0+

    # Add here all plugins file you want to load.
    # Plugin files must be .pm files stored in 'plugins' directory.
    # Uncomment LoadPlugin lines to enable a plugin after checking that plugin
    # required perl modules are installed.

    # Plugin: PluginName
    # PluginName description
    # Perl modules required: ...
    #
    LoadPlugin="pluginname"


    Extra...
    Version :
    5.2+
    5.8 for ExtraSectionFirstColumnFormatX, ExtraSectionAddAverageRowX, ExtraSectionAddSumRowX

    You can see the following page for explanation of all ExtraSection...X directives and how to use them.


    ExtraTrackedRowsLimit
    Version : 6.1

    # There is also a global parameter ExtraTrackedRowsLimit that limit the
    # number of possible rows an ExtraSection can report. This parameter is
    # here to protect too much memory use when you make a bad setup in your
    # ExtraSection. It applies to all ExtraSection independently meaning that
    # none ExtraSection can report more rows than value defined by ExtraTrackedRowsLimit.
    # If you know an ExtraSection will report more rows than its value, you should
    # increase this parameter or AWStats will stop with an error.
    # Example: 2000
    # Default: 500
    #
    ExtraTrackedRowsLimit=500


    Include
    Version : 5.4+

    # You can include other config files using the directive with the name of the
    # config file.
    # This is particularly usefull for users who have a lot of virtual servers, so
    # a lot of config files and want to maintain common values in only one file.
    # Note that when a variable is defined both in a config file and in an
    # included file, AWStats will use the last value read for parameters that
    # contains one value and AWStats will concat all values from both files for
    # parameters that are lists of value.
    #
    Include ""


    Article written by .


    awstats-7.4/docs/awstats_what.html0000640000175000017500000002731712510305307015217 0ustar sksk AWStats Documentation - What is AWStats

    AWStats logfile analyzer 7.4 Documentation

      


    What is AWStats / Features Overview



    AWStats is short for Advanced Web Statistics. AWStats is powerful log analyzer which creates advanced web, ftp, mail and streaming server statistics reports  based on the rich data contained in server logs.  Data is graphically presented in easy to read web pages.  

    AWStats development started in 1997 and is still developed today by same author (Laurent Destailleur). However, development is now done on "maintenance fixes" or small new features. Reason is that author spend, since July 2008, most of his time as project leader on another major OpenSource projet called Dolibarr ERP & CRM and works also at full time for TecLib, a french Open Source company. A lot of other developers maintains the software, providing patches, or packages, above all for Linux distributions (fedora, debian, ubuntu...).

    Designed with flexibility in mind, AWStats can be run through a web browser CGI (common gateway interface) or directly from the operating system command line. Through the use of intermediary data base files, AWStats is able to quickly process large log files, as often desired.  With support for both standard and custom log format definitions, AWStats can analyze log files from Apache (NCSA combined/XLF/ELF or common/CLF log format), Microsoft's IIS (W3C log format), WebStar and most web, proxy, wap and streaming media servers as well as ftp and mail server logs.

    See how the most famous open source statistics tools (AWStats, Analog, Webalizer) stack up feature by feature in this comparison table.

    AWStats is free software distributed under the GNU General Public License v3 (GPL v3). The license chart illustrates what you can and can't do.
    As AWStats works from the command line as well as a CGI, it is compatible with web hosting providers which allow CGI and log access.



    Features

    AWStats' reports include a wide range of information on your web site usage:
    * Number of Visits, and number of Unique visitors.
    * Visit duration and latest visits.
    * Authenticated Users, and latest authenticated visits.
    * Usage by Months, Days of week and Hours of the day (pages, hits, KB).
    * Domains/countries (and regions, cities and ISP with Maxmind proprietary geo databases) of visitor's hosts (pages, hits, KB, 269 domains/countries detected).
    * Hosts list, latest visits and unresolved IP addresses list.
    * Most viewed, Entry and Exit pages.
    * Most commonly requested File types.
    * Web Compression statistics (for Apache servers using mod_gzip or mod_deflate modules).
    * Visitor's Browsers (pages, hits, KB for each browser, each version, 123 browsers detected: Web, Wap, Streaming Media browsers..., around 482 with the "phone browsers" database).
    * Visitor's Operating Systems (pages, hits, KB for each OS, 45 OS detected).
    * Robots visits, including search engine crawlers (381 robots detected).
    * Track Downloads such as PDFs, compressed files and others
    * Search engines, Keywords and Phrases used to find your site (The 122 most famous search engines are detected like Yahoo, Google, Altavista, etc...)
    * HTTP Errors (Page Not Found with latest referrer, ...).
    * User defined reports based on url, url parameters, referrer (referer) fields extend AWStats' capabilities to provide even greater technical and marketing information.
    * Number of times your site is added to Bookmarks / Favorites.
    * Screen size (to capture this, some HTML tags must be added to a site's home page).
    * Ratio of integrated Browser Support for: Java, Flash, Real G2 player, Quicktime reader, PDF reader, WMA reader (as above, requires insertion of HTML tags in site's home page).
    * Cluster distribution for load balanced servers.

    In addition, AWStats provides the following:
    * Wide range of log formats.  AWStats can analyze: Apache NCSA combined (XLF/ELF) or common (CLF) log files, Microsoft IIS log files (W3C), WebStar native log files and other web, proxy, wap, streaming media, ftp and mail server log files. See AWStats F.A.Q. for examples.
    * Reports can be run from the operating system command line and from a web browser as a CGI (common gateway interface).  In CGI mode, dynamic filter capabilities are available for many charts.
    * Statistics update can be run from a web browser as well as scheduled for automatic processing.
    * Unlimited log file size
    * Load balancing system split log files.
    * Support 'nearly sorted' log files, even for entry and exit pages.
    * Reverse DNS lookup before or during analysis; supports DNS cache files.
    * Country detection from IP location (geoip) or domain name.
    * Plugins for US/Canadian Regions, Cities and major countries regions, ISP and/or Organizations reports (require non free third product geoipregion, geoipcity, geoipisp and/or geoiporg database).
    * WhoIS lookup links.
    * Vast array of configurable options/filters and plugins supported.
    * Modular design supports inclusion of addition features via plugins.
    * Multi-named web sites supported (virtual servers, great for web-hosting providers).
    * Cross Site Scripting Attacks protection.
    * Reports available in many international languages. See AWStats F.A.Q. for full list.  Users can provide files for additional languages not yet available.
    * No need for esoteric perl libraries. AWStats works with all basic perl interpreters.
    * Dynamic reports through a CGI interface.
    * Static reports in one or framed HTML or XHTML pages; experimental PDF export through 3rd party "htmldoc" software.
    * Customize look and color scheme to match your site design; with or without CSS (cascading style sheets).
    * Help and HTML tooltips available in reports.
    * Easy to use - all configuration directives are confined to one file for each site.
    * Analysis database can be stored in XML format for easier use by external applications, like XSLT processing (one xslt transform example provided).
    * A Webmin module is supplied.
    * Absolutely free (even for web hosting providers); source code is included (GNU General Public License).
    * Works on all platforms with Perl support.
    * AWStats has a XML Portable Application Description.

    Requirements:
    AWStats usage has the following requirements:
    * You must have access to the server logs for the reporting you want to perform (web/ftp/mail).
    * You must be able to run perl scripts (.pl files) from command line and/or as a CGI.  If not, you can solve this by downloading latest Perl version at ActivePerl (Win32) or Perl.com (Unix/Linux/Other).
    See AWStats F.A.Q. for examples of supported OS and Web servers.


    Article written by .


    awstats-7.4/docs/scripts/0000750000175000017500000000000012410217071013273 5ustar skskawstats-7.4/docs/scripts/lang-proto.js0000640000175000017500000000244512410217071015721 0ustar sksk// Copyright (C) 2006 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview * Registers a language handler for Protocol Buffers as described at * http://code.google.com/p/protobuf/. * * Based on the lexical grammar at * http://research.microsoft.com/fsharp/manual/spec2.aspx#_Toc202383715 * * @author mikesamuel@gmail.com */ PR.registerLangHandler(PR.sourceDecorator({ keywords: ( 'bool bytes default double enum extend extensions false fixed32 ' + 'fixed64 float group import int32 int64 max message option ' + 'optional package repeated required returns rpc service ' + 'sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 ' + 'uint64'), cStyleComments: true }), ['proto']); awstats-7.4/docs/scripts/lang-apollo.js0000640000175000017500000000503412410217071016041 0ustar sksk// Copyright (C) 2009 Onno Hommes. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview * Registers a language handler for the AGC/AEA Assembly Language as described * at http://virtualagc.googlecode.com *

    * This file could be used by goodle code to allow syntax highlight for * Virtual AGC SVN repository or if you don't want to commonize * the header for the agc/aea html assembly listing. * * @author ohommes@alumni.cmu.edu */ PR.registerLangHandler( PR.createSimpleLexer( [ // A line comment that starts with ; [PR.PR_COMMENT, /^#[^\r\n]*/, null, '#'], // Whitespace [PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], // A double quoted, possibly multi-line, string. [PR.PR_STRING, /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] ], [ [PR.PR_KEYWORD, /^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,null], [PR.PR_TYPE, /^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null], // A single quote possibly followed by a word that optionally ends with // = ! or ?. [PR.PR_LITERAL, /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/], // Any word including labels that optionally ends with = ! or ?. [PR.PR_PLAIN, /^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i], // A printable non-space non-special character [PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0()\"\\\';]+/] ]), ['apollo', 'agc', 'aea']); awstats-7.4/docs/scripts/lang-css.js0000640000175000017500000000527212410217071015347 0ustar sksk// Copyright (C) 2009 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview * Registers a language handler for CSS. * * * To use, include prettify.js and this file in your HTML page. * Then put your code in an HTML tag like *

    
     *
     *
     * http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
     * grammar.  This scheme does not recognize keywords containing escapes.
     *
     * @author mikesamuel@gmail.com
     */
    
    PR.registerLangHandler(
        PR.createSimpleLexer(
            [
             // The space production 
             [PR.PR_PLAIN,       /^[ \t\r\n\f]+/, null, ' \t\r\n\f']
            ],
            [
             // Quoted strings.   and 
             [PR.PR_STRING,
              /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null],
             [PR.PR_STRING,
              /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null],
             ['lang-css-str', /^url\(([^\)\"\']*)\)/i],
             [PR.PR_KEYWORD,
              /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
              null],
             // A property name -- an identifier followed by a colon.
             ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
             // A C style block comment.  The  production.
             [PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
             // Escaping text spans
             [PR.PR_COMMENT, /^(?:)/],
             // A number possibly containing a suffix.
             [PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
             // A hex color
             [PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i],
             // An identifier
             [PR.PR_PLAIN,
              /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],
             // A run of punctuation
             [PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/]
            ]),
        ['css']);
    PR.registerLangHandler(
        PR.createSimpleLexer([],
            [
             [PR.PR_KEYWORD,
              /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]
            ]),
        ['css-kw']);
    PR.registerLangHandler(
        PR.createSimpleLexer([],
            [
             [PR.PR_STRING, /^[^\)\"\']+/]
            ]),
        ['css-str']);
    awstats-7.4/docs/scripts/prettify.css0000640000175000017500000000126112410217071015654 0ustar  sksk/* Pretty printing styles. Used with prettify.js. */
    
    .str { color: #080; }
    .kwd { color: #008; }
    .com { color: #800; }
    .typ { color: #606; }
    .lit { color: #066; }
    .pun { color: #660; }
    .pln { color: #000; }
    .tag { color: #008; }
    .atn { color: #606; }
    .atv { color: #080; }
    .dec { color: #606; }
    pre.prettyprint { padding: 2px; border: 1px solid #888; }
    
    @media print {
      .str { color: #060; }
      .kwd { color: #006; font-weight: bold; }
      .com { color: #600; font-style: italic; }
      .typ { color: #404; font-weight: bold; }
      .lit { color: #044; }
      .pun { color: #440; }
      .pln { color: #000; }
      .tag { color: #006; font-weight: bold; }
      .atn { color: #404; }
      .atv { color: #060; }
    }
    awstats-7.4/docs/scripts/lang-lua.js0000640000175000017500000000455512410217071015343 0ustar  sksk// Copyright (C) 2008 Google Inc.
    //
    // Licensed under the Apache License, Version 2.0 (the "License");
    // you may not use this file except in compliance with the License.
    // You may obtain a copy of the License at
    //
    //      http://www.apache.org/licenses/LICENSE-2.0
    //
    // Unless required by applicable law or agreed to in writing, software
    // distributed under the License is distributed on an "AS IS" BASIS,
    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    // See the License for the specific language governing permissions and
    // limitations under the License.
    
    
    
    /**
     * @fileoverview
     * Registers a language handler for Lua.
     *
     *
     * To use, include prettify.js and this file in your HTML page.
     * Then put your code in an HTML tag like
     *      
    (my Lua code)
    * * * I used http://www.lua.org/manual/5.1/manual.html#2.1 * Because of the long-bracket concept used in strings and comments, Lua does * not have a regular lexical grammar, but luckily it fits within the space * of irregular grammars supported by javascript regular expressions. * * @author mikesamuel@gmail.com */ PR.registerLangHandler( PR.createSimpleLexer( [ // Whitespace [PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], // A double or single quoted, possibly multi-line, string. [PR.PR_STRING, /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\''] ], [ // A comment is either a line comment that starts with two dashes, or // two dashes preceding a long bracketed block. [PR.PR_COMMENT, /^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/], // A long bracketed block not preceded by -- is a string. [PR.PR_STRING, /^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/], [PR.PR_KEYWORD, /^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/, null], // A number is a hex integer literal, a decimal real literal, or in // scientific notation. [PR.PR_LITERAL, /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], // An identifier [PR.PR_PLAIN, /^[a-z_]\w*/i], // A run of punctuation [PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/] ]), ['lua']); awstats-7.4/docs/scripts/lang-ml.js0000640000175000017500000000554512410217071015172 0ustar sksk// Copyright (C) 2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview * Registers a language handler for OCaml, SML, F# and similar languages. * * Based on the lexical grammar at * http://research.microsoft.com/fsharp/manual/spec2.aspx#_Toc202383715 * * @author mikesamuel@gmail.com */ PR.registerLangHandler( PR.createSimpleLexer( [ // Whitespace is made up of spaces, tabs and newline characters. [PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], // #if ident/#else/#endif directives delimit conditional compilation // sections [PR.PR_COMMENT, /^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i, null, '#'], // A double or single quoted, possibly multi-line, string. // F# allows escaped newlines in strings. [PR.PR_STRING, /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\''] ], [ // Block comments are delimited by (* and *) and may be // nested. Single-line comments begin with // and extend to // the end of a line. // TODO: (*...*) comments can be nested. This does not handle that. [PR.PR_COMMENT, /^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/], [PR.PR_KEYWORD, /^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/], // A number is a hex integer literal, a decimal real literal, or in // scientific notation. [PR.PR_LITERAL, /^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], [PR.PR_PLAIN, /^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i], // A printable non-space non-special character [PR.PR_PUNCTUATION, /^[^\t\n\r \xA0\"\'\w]+/] ]), ['fs', 'ml']); awstats-7.4/docs/scripts/lang-lisp.js0000640000175000017500000000666312410217071015533 0ustar sksk// Copyright (C) 2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview * Registers a language handler for Common Lisp and related languages. * * * To use, include prettify.js and this file in your HTML page. * Then put your code in an HTML tag like *
    (my lisp code)
    * The lang-cl class identifies the language as common lisp. * This file supports the following language extensions: * lang-cl - Common Lisp * lang-el - Emacs Lisp * lang-lisp - Lisp * lang-scm - Scheme * * * I used http://www.devincook.com/goldparser/doc/meta-language/grammar-LISP.htm * as the basis, but added line comments that start with ; and changed the atom * production to disallow unquoted semicolons. * * "Name" = 'LISP' * "Author" = 'John McCarthy' * "Version" = 'Minimal' * "About" = 'LISP is an abstract language that organizes ALL' * | 'data around "lists".' * * "Start Symbol" = [s-Expression] * * {Atom Char} = {Printable} - {Whitespace} - [()"\''] * * Atom = ( {Atom Char} | '\'{Printable} )+ * * [s-Expression] ::= [Quote] Atom * | [Quote] '(' [Series] ')' * | [Quote] '(' [s-Expression] '.' [s-Expression] ')' * * [Series] ::= [s-Expression] [Series] * | * * [Quote] ::= '' !Quote = do not evaluate * | * * * I used Practical Common Lisp as * the basis for the reserved word list. * * * @author mikesamuel@gmail.com */ PR.registerLangHandler( PR.createSimpleLexer( [ ['opn', /^\(/, null, '('], ['clo', /^\)/, null, ')'], // A line comment that starts with ; [PR.PR_COMMENT, /^;[^\r\n]*/, null, ';'], // Whitespace [PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], // A double quoted, possibly multi-line, string. [PR.PR_STRING, /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] ], [ [PR.PR_KEYWORD, /^(?:block|c[ad]+r|catch|cons|defun|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, null], [PR.PR_LITERAL, /^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i], // A single quote possibly followed by a word that optionally ends with // = ! or ?. [PR.PR_LITERAL, /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/], // A word that optionally ends with = ! or ?. [PR.PR_PLAIN, /^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i], // A printable non-space non-special character [PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0()\"\\\';]+/] ]), ['cl', 'el', 'lisp', 'scm']); awstats-7.4/docs/scripts/lang-vb.js0000640000175000017500000000663112410217071015166 0ustar sksk// Copyright (C) 2009 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview * Registers a language handler for various flavors of basic. * * * To use, include prettify.js and this file in your HTML page. * Then put your code in an HTML tag like *
    
     *
     *
     * http://msdn.microsoft.com/en-us/library/aa711638(VS.71).aspx defines the
     * visual basic grammar lexical grammar.
     *
     * @author mikesamuel@gmail.com
     */
    
    PR.registerLangHandler(
        PR.createSimpleLexer(
            [
             // Whitespace
             [PR.PR_PLAIN,       /^[\t\n\r \xA0\u2028\u2029]+/, null, '\t\n\r \xA0\u2028\u2029'],
             // A double quoted string with quotes escaped by doubling them.
             // A single character can be suffixed with C.
             [PR.PR_STRING,      /^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i, null,
              '"\u201C\u201D'],
             // A comment starts with a single quote and runs until the end of the
             // line.
             [PR.PR_COMMENT,     /^[\'\u2018\u2019][^\r\n\u2028\u2029]*/, null, '\'\u2018\u2019']
            ],
            [
             [PR.PR_KEYWORD, /^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, null],
             // A second comment form
             [PR.PR_COMMENT, /^REM[^\r\n\u2028\u2029]*/i],
             // A boolean, numeric, or date literal.
             [PR.PR_LITERAL,
              /^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],
             // An identifier?
             [PR.PR_PLAIN, /^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],
             // A run of punctuation
             [PR.PR_PUNCTUATION,
              /^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],
             // Square brackets
             [PR.PR_PUNCTUATION, /^(?:\[|\])/]
            ]),
        ['vb', 'vbs']);
    awstats-7.4/docs/scripts/lang-wiki.js0000640000175000017500000000353112410217071015516 0ustar  sksk// Copyright (C) 2009 Google Inc.
    //
    // Licensed under the Apache License, Version 2.0 (the "License");
    // you may not use this file except in compliance with the License.
    // You may obtain a copy of the License at
    //
    //      http://www.apache.org/licenses/LICENSE-2.0
    //
    // Unless required by applicable law or agreed to in writing, software
    // distributed under the License is distributed on an "AS IS" BASIS,
    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    // See the License for the specific language governing permissions and
    // limitations under the License.
    
    
    /**
     * @fileoverview
     * Registers a language handler for Wiki pages.
     *
     * Based on WikiSyntax at http://code.google.com/p/support/wiki/WikiSyntax
     *
     * @author mikesamuel@gmail.com
     */
    
    PR.registerLangHandler(
        PR.createSimpleLexer(
            [
             // Whitespace
             [PR.PR_PLAIN,       /^[\t \xA0a-gi-z0-9]+/, null,
              '\t \xA0abcdefgijklmnopqrstuvwxyz0123456789'],
             // Wiki formatting
             [PR.PR_PUNCTUATION, /^[=*~\^\[\]]+/, null, '=*~^[]']
            ],
            [
             // Meta-info like #summary, #labels, etc.
             ['lang-wiki.meta',  /(?:^^|\r\n?|\n)(#[a-z]+)\b/],
             // A WikiWord
             [PR.PR_LITERAL,     /^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/
              ],
             // A preformatted block in an unknown language
             ['lang-',           /^\{\{\{([\s\S]+?)\}\}\}/],
             // A block of source code in an unknown language
             ['lang-',           /^`([^\r\n`]+)`/],
             // An inline URL.
             [PR.PR_STRING,
              /^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],
             [PR.PR_PLAIN,       /^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]
            ]),
        ['wiki']);
    
    PR.registerLangHandler(
        PR.createSimpleLexer([[PR.PR_KEYWORD, /^#[a-z]+/i, null, '#']], []),
        ['wiki.meta']);
    awstats-7.4/docs/scripts/lang-sql.js0000640000175000017500000000642312410217071015355 0ustar  sksk// Copyright (C) 2008 Google Inc.
    //
    // Licensed under the Apache License, Version 2.0 (the "License");
    // you may not use this file except in compliance with the License.
    // You may obtain a copy of the License at
    //
    //      http://www.apache.org/licenses/LICENSE-2.0
    //
    // Unless required by applicable law or agreed to in writing, software
    // distributed under the License is distributed on an "AS IS" BASIS,
    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    // See the License for the specific language governing permissions and
    // limitations under the License.
    
    
    
    /**
     * @fileoverview
     * Registers a language handler for SQL.
     *
     *
     * To use, include prettify.js and this file in your HTML page.
     * Then put your code in an HTML tag like
     *      
    (my SQL code)
    * * * http://savage.net.au/SQL/sql-99.bnf.html is the basis for the grammar, and * http://msdn.microsoft.com/en-us/library/aa238507(SQL.80).aspx as the basis * for the keyword list. * * @author mikesamuel@gmail.com */ PR.registerLangHandler( PR.createSimpleLexer( [ // Whitespace [PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], // A double or single quoted, possibly multi-line, string. [PR.PR_STRING, /^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/, null, '"\''] ], [ // A comment is either a line comment that starts with two dashes, or // two dashes preceding a long bracketed block. [PR.PR_COMMENT, /^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/], [PR.PR_KEYWORD, /^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i, null], // A number is a hex integer literal, a decimal real literal, or in // scientific notation. [PR.PR_LITERAL, /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], // An identifier [PR.PR_PLAIN, /^[a-z_][\w-]*/i], // A run of punctuation [PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/] ]), ['sql']); awstats-7.4/docs/scripts/prettify.js0000640000175000017500000016052512410217071015511 0ustar sksk// Copyright (C) 2006 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview * some functions for browser-side pretty printing of code contained in html. *

    * * For a fairly comprehensive set of languages see the * README * file that came with this source. At a minimum, the lexer should work on a * number of languages including C and friends, Java, Python, Bash, SQL, HTML, * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk * and a subset of Perl, but, because of commenting conventions, doesn't work on * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. *

    * Usage:

      *
    1. include this source file in an html page via * {@code } *
    2. define style rules. See the example page for examples. *
    3. mark the {@code
      } and {@code } tags in your source with
       *    {@code class=prettyprint.}
       *    You can also use the (html deprecated) {@code } tag, but the pretty
       *    printer needs to do more substantial DOM manipulations to support that, so
       *    some css styles may not be preserved.
       * </ol>
       * That's it.  I wanted to keep the API as simple as possible, so there's no
       * need to specify which language the code is in, but if you wish, you can add
       * another class to the {@code <pre>} or {@code <code>} element to specify the
       * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
       * starts with "lang-" followed by a file extension, specifies the file type.
       * See the "lang-*.js" files in this directory for code that implements
       * per-language file handlers.
       * <p>
       * Change log:<br>
       * cbeust, 2006/08/22
       * <blockquote>
       *   Java annotations (start with "@") are now captured as literals ("lit")
       * </blockquote>
       * @requires console
       * @overrides window
       */
      
      // JSLint declarations
      /*global console, document, navigator, setTimeout, window */
      
      /**
       * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
       * UI events.
       * If set to {@code false}, {@code prettyPrint()} is synchronous.
       */
      window['PR_SHOULD_USE_CONTINUATION'] = true;
      
      /** the number of characters between tab columns */
      window['PR_TAB_WIDTH'] = 8;
      
      /** Walks the DOM returning a properly escaped version of innerHTML.
        * @param {Node} node
        * @param {Array.<string>} out output buffer that receives chunks of HTML.
        */
      window['PR_normalizedHtml']
      
      /** Contains functions for creating and registering new language handlers.
        * @type {Object}
        */
        = window['PR']
      
      /** Pretty print a chunk of code.
        *
        * @param {string} sourceCodeHtml code as html
        * @return {string} code as html, but prettier
        */
        = window['prettyPrintOne']
      /** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
        * {@code class=prettyprint} and prettify them.
        * @param {Function?} opt_whenDone if specified, called when the last entry
        *     has been finished.
        */
        = window['prettyPrint'] = void 0;
      
      /** browser detection. @extern @returns false if not IE, otherwise the major version. */
      window['_pr_isIE6'] = function () {
        var ieVersion = navigator && navigator.userAgent &&
            navigator.userAgent.match(/\bMSIE ([678])\./);
        ieVersion = ieVersion ? +ieVersion[1] : false;
        window['_pr_isIE6'] = function () { return ieVersion; };
        return ieVersion;
      };
      
      
      (function () {
        // Keyword lists for various languages.
        var FLOW_CONTROL_KEYWORDS =
            "break continue do else for if return while ";
        var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
            "double enum extern float goto int long register short signed sizeof " +
            "static struct switch typedef union unsigned void volatile ";
        var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
            "new operator private protected public this throw true try typeof ";
        var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
            "concept concept_map const_cast constexpr decltype " +
            "dynamic_cast explicit export friend inline late_check " +
            "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
            "template typeid typename using virtual wchar_t where ";
        var JAVA_KEYWORDS = COMMON_KEYWORDS +
            "abstract boolean byte extends final finally implements import " +
            "instanceof null native package strictfp super synchronized throws " +
            "transient ";
        var CSHARP_KEYWORDS = JAVA_KEYWORDS +
            "as base by checked decimal delegate descending event " +
            "fixed foreach from group implicit in interface internal into is lock " +
            "object out override orderby params partial readonly ref sbyte sealed " +
            "stackalloc string select uint ulong unchecked unsafe ushort var ";
        var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
            "debugger eval export function get null set undefined var with " +
            "Infinity NaN ";
        var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
            "goto if import last local my next no our print package redo require " +
            "sub undef unless until use wantarray while BEGIN END ";
        var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
            "elif except exec finally from global import in is lambda " +
            "nonlocal not or pass print raise try with yield " +
            "False True None ";
        var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
            " defined elsif end ensure false in module next nil not or redo rescue " +
            "retry self super then true undef unless until when yield BEGIN END ";
        var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
            "function in local set then until ";
        var ALL_KEYWORDS = (
            CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
            PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
      
        // token style names.  correspond to css classes
        /** token style for a string literal */
        var PR_STRING = 'str';
        /** token style for a keyword */
        var PR_KEYWORD = 'kwd';
        /** token style for a comment */
        var PR_COMMENT = 'com';
        /** token style for a type */
        var PR_TYPE = 'typ';
        /** token style for a literal value.  e.g. 1, null, true. */
        var PR_LITERAL = 'lit';
        /** token style for a punctuation string. */
        var PR_PUNCTUATION = 'pun';
        /** token style for a punctuation string. */
        var PR_PLAIN = 'pln';
      
        /** token style for an sgml tag. */
        var PR_TAG = 'tag';
        /** token style for a markup declaration such as a DOCTYPE. */
        var PR_DECLARATION = 'dec';
        /** token style for embedded source. */
        var PR_SOURCE = 'src';
        /** token style for an sgml attribute name. */
        var PR_ATTRIB_NAME = 'atn';
        /** token style for an sgml attribute value. */
        var PR_ATTRIB_VALUE = 'atv';
      
        /**
         * A class that indicates a section of markup that is not code, e.g. to allow
         * embedding of line numbers within code listings.
         */
        var PR_NOCODE = 'nocode';
      
        /** A set of tokens that can precede a regular expression literal in
          * javascript.
          * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
          * list, but I've removed ones that might be problematic when seen in
          * languages that don't support regular expression literals.
          *
          * <p>Specifically, I've removed any keywords that can't precede a regexp
          * literal in a syntactically legal javascript program, and I've removed the
          * "in" keyword since it's not a keyword in many languages, and might be used
          * as a count of inches.
          *
          * <p>The link a above does not accurately describe EcmaScript rules since
          * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
          * very well in practice.
          *
          * @private
          */
        var REGEXP_PRECEDER_PATTERN = function () {
            var preceders = [
                "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
                "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
                "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
                "<", "<<", "<<=", "<=", "=", "==", "===", ">",
                ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
                "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
                "||=", "~" /* handles =~ and !~ */,
                "break", "case", "continue", "delete",
                "do", "else", "finally", "instanceof",
                "return", "throw", "try", "typeof"
                ];
            var pattern = '(?:^^|[+-]';
            for (var i = 0; i < preceders.length; ++i) {
              pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
            }
            pattern += ')\\s*';  // matches at end, and matches empty string
            return pattern;
            // CAVEAT: this does not properly handle the case where a regular
            // expression immediately follows another since a regular expression may
            // have flags for case-sensitivity and the like.  Having regexp tokens
            // adjacent is not valid in any language I'm aware of, so I'm punting.
            // TODO: maybe style special characters inside a regexp as punctuation.
          }();
      
        // Define regexps here so that the interpreter doesn't have to create an
        // object each time the function containing them is called.
        // The language spec requires a new object created even if you don't access
        // the $1 members.
        var pr_amp = /&/g;
        var pr_lt = /</g;
        var pr_gt = />/g;
        var pr_quot = /\"/g;
        /** like textToHtml but escapes double quotes to be attribute safe. */
        function attribToHtml(str) {
          return str.replace(pr_amp, '&amp;')
              .replace(pr_lt, '&lt;')
              .replace(pr_gt, '&gt;')
              .replace(pr_quot, '&quot;');
        }
      
        /** escapest html special characters to html. */
        function textToHtml(str) {
          return str.replace(pr_amp, '&amp;')
              .replace(pr_lt, '&lt;')
              .replace(pr_gt, '&gt;');
        }
      
      
        var pr_ltEnt = /&lt;/g;
        var pr_gtEnt = /&gt;/g;
        var pr_aposEnt = /&apos;/g;
        var pr_quotEnt = /&quot;/g;
        var pr_ampEnt = /&amp;/g;
        var pr_nbspEnt = /&nbsp;/g;
        /** unescapes html to plain text. */
        function htmlToText(html) {
          var pos = html.indexOf('&');
          if (pos < 0) { return html; }
          // Handle numeric entities specially.  We can't use functional substitution
          // since that doesn't work in older versions of Safari.
          // These should be rare since most browsers convert them to normal chars.
          for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
            var end = html.indexOf(';', pos);
            if (end >= 0) {
              var num = html.substring(pos + 3, end);
              var radix = 10;
              if (num && num.charAt(0) === 'x') {
                num = num.substring(1);
                radix = 16;
              }
              var codePoint = parseInt(num, radix);
              if (!isNaN(codePoint)) {
                html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
                        html.substring(end + 1));
              }
            }
          }
      
          return html.replace(pr_ltEnt, '<')
              .replace(pr_gtEnt, '>')
              .replace(pr_aposEnt, "'")
              .replace(pr_quotEnt, '"')
              .replace(pr_nbspEnt, ' ')
              .replace(pr_ampEnt, '&');
        }
      
        /** is the given node's innerHTML normally unescaped? */
        function isRawContent(node) {
          return 'XMP' === node.tagName;
        }
      
        var newlineRe = /[\r\n]/g;
        /**
         * Are newlines and adjacent spaces significant in the given node's innerHTML?
         */
        function isPreformatted(node, content) {
          // PRE means preformatted, and is a very common case, so don't create
          // unnecessary computed style objects.
          if ('PRE' === node.tagName) { return true; }
          if (!newlineRe.test(content)) { return true; }  // Don't care
          var whitespace = '';
          // For disconnected nodes, IE has no currentStyle.
          if (node.currentStyle) {
            whitespace = node.currentStyle.whiteSpace;
          } else if (window.getComputedStyle) {
            // Firefox makes a best guess if node is disconnected whereas Safari
            // returns the empty string.
            whitespace = window.getComputedStyle(node, null).whiteSpace;
          }
          return !whitespace || whitespace === 'pre';
        }
      
        function normalizedHtml(node, out) {
          switch (node.nodeType) {
            case 1:  // an element
              var name = node.tagName.toLowerCase();
              out.push('<', name);
              for (var i = 0; i < node.attributes.length; ++i) {
                var attr = node.attributes[i];
                if (!attr.specified) { continue; }
                out.push(' ');
                normalizedHtml(attr, out);
              }
              out.push('>');
              for (var child = node.firstChild; child; child = child.nextSibling) {
                normalizedHtml(child, out);
              }
              if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
                out.push('<\/', name, '>');
              }
              break;
            case 2: // an attribute
              out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"');
              break;
            case 3: case 4: // text
              out.push(textToHtml(node.nodeValue));
              break;
          }
        }
      
        /**
         * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
         * matches the union o the sets o strings matched d by the input RegExp.
         * Since it matches globally, if the input strings have a start-of-input
         * anchor (/^.../), it is ignored for the purposes of unioning.
         * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
         * @return {RegExp} a global regex.
         */
        function combinePrefixPatterns(regexs) {
          var capturedGroupIndex = 0;
      
          var needToFoldCase = false;
          var ignoreCase = false;
          for (var i = 0, n = regexs.length; i < n; ++i) {
            var regex = regexs[i];
            if (regex.ignoreCase) {
              ignoreCase = true;
            } else if (/[a-z]/i.test(regex.source.replace(
                           /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
              needToFoldCase = true;
              ignoreCase = false;
              break;
            }
          }
      
          function decodeEscape(charsetPart) {
            if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
            switch (charsetPart.charAt(1)) {
              case 'b': return 8;
              case 't': return 9;
              case 'n': return 0xa;
              case 'v': return 0xb;
              case 'f': return 0xc;
              case 'r': return 0xd;
              case 'u': case 'x':
                return parseInt(charsetPart.substring(2), 16)
                    || charsetPart.charCodeAt(1);
              case '0': case '1': case '2': case '3': case '4':
              case '5': case '6': case '7':
                return parseInt(charsetPart.substring(1), 8);
              default: return charsetPart.charCodeAt(1);
            }
          }
      
          function encodeEscape(charCode) {
            if (charCode < 0x20) {
              return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
            }
            var ch = String.fromCharCode(charCode);
            if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
              ch = '\\' + ch;
            }
            return ch;
          }
      
          function caseFoldCharset(charSet) {
            var charsetParts = charSet.substring(1, charSet.length - 1).match(
                new RegExp(
                    '\\\\u[0-9A-Fa-f]{4}'
                    + '|\\\\x[0-9A-Fa-f]{2}'
                    + '|\\\\[0-3][0-7]{0,2}'
                    + '|\\\\[0-7]{1,2}'
                    + '|\\\\[\\s\\S]'
                    + '|-'
                    + '|[^-\\\\]',
                    'g'));
            var groups = [];
            var ranges = [];
            var inverse = charsetParts[0] === '^';
            for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
              var p = charsetParts[i];
              switch (p) {
                case '\\B': case '\\b':
                case '\\D': case '\\d':
                case '\\S': case '\\s':
                case '\\W': case '\\w':
                  groups.push(p);
                  continue;
              }
              var start = decodeEscape(p);
              var end;
              if (i + 2 < n && '-' === charsetParts[i + 1]) {
                end = decodeEscape(charsetParts[i + 2]);
                i += 2;
              } else {
                end = start;
              }
              ranges.push([start, end]);
              // If the range might intersect letters, then expand it.
              if (!(end < 65 || start > 122)) {
                if (!(end < 65 || start > 90)) {
                  ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
                }
                if (!(end < 97 || start > 122)) {
                  ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
                }
              }
            }
      
            // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
            // -> [[1, 12], [14, 14], [16, 17]]
            ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
            var consolidatedRanges = [];
            var lastRange = [NaN, NaN];
            for (var i = 0; i < ranges.length; ++i) {
              var range = ranges[i];
              if (range[0] <= lastRange[1] + 1) {
                lastRange[1] = Math.max(lastRange[1], range[1]);
              } else {
                consolidatedRanges.push(lastRange = range);
              }
            }
      
            var out = ['['];
            if (inverse) { out.push('^'); }
            out.push.apply(out, groups);
            for (var i = 0; i < consolidatedRanges.length; ++i) {
              var range = consolidatedRanges[i];
              out.push(encodeEscape(range[0]));
              if (range[1] > range[0]) {
                if (range[1] + 1 > range[0]) { out.push('-'); }
                out.push(encodeEscape(range[1]));
              }
            }
            out.push(']');
            return out.join('');
          }
      
          function allowAnywhereFoldCaseAndRenumberGroups(regex) {
            // Split into character sets, escape sequences, punctuation strings
            // like ('(', '(?:', ')', '^'), and runs of characters that do not
            // include any of the above.
            var parts = regex.source.match(
                new RegExp(
                    '(?:'
                    + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
                    + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
                    + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
                    + '|\\\\[0-9]+'  // a back-reference or octal escape
                    + '|\\\\[^ux0-9]'  // other escape sequence
                    + '|\\(\\?[:!=]'  // start of a non-capturing group
                    + '|[\\(\\)\\^]'  // start/emd of a group, or line start
                    + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
                    + ')',
                    'g'));
            var n = parts.length;
      
            // Maps captured group numbers to the number they will occupy in
            // the output or to -1 if that has not been determined, or to
            // undefined if they need not be capturing in the output.
            var capturedGroups = [];
      
            // Walk over and identify back references to build the capturedGroups
            // mapping.
            for (var i = 0, groupIndex = 0; i < n; ++i) {
              var p = parts[i];
              if (p === '(') {
                // groups are 1-indexed, so max group index is count of '('
                ++groupIndex;
              } else if ('\\' === p.charAt(0)) {
                var decimalValue = +p.substring(1);
                if (decimalValue && decimalValue <= groupIndex) {
                  capturedGroups[decimalValue] = -1;
                }
              }
            }
      
            // Renumber groups and reduce capturing groups to non-capturing groups
            // where possible.
            for (var i = 1; i < capturedGroups.length; ++i) {
              if (-1 === capturedGroups[i]) {
                capturedGroups[i] = ++capturedGroupIndex;
              }
            }
            for (var i = 0, groupIndex = 0; i < n; ++i) {
              var p = parts[i];
              if (p === '(') {
                ++groupIndex;
                if (capturedGroups[groupIndex] === undefined) {
                  parts[i] = '(?:';
                }
              } else if ('\\' === p.charAt(0)) {
                var decimalValue = +p.substring(1);
                if (decimalValue && decimalValue <= groupIndex) {
                  parts[i] = '\\' + capturedGroups[groupIndex];
                }
              }
            }
      
            // Remove any prefix anchors so that the output will match anywhere.
            // ^^ really does mean an anchored match though.
            for (var i = 0, groupIndex = 0; i < n; ++i) {
              if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
            }
      
            // Expand letters to groupts to handle mixing of case-sensitive and
            // case-insensitive patterns if necessary.
            if (regex.ignoreCase && needToFoldCase) {
              for (var i = 0; i < n; ++i) {
                var p = parts[i];
                var ch0 = p.charAt(0);
                if (p.length >= 2 && ch0 === '[') {
                  parts[i] = caseFoldCharset(p);
                } else if (ch0 !== '\\') {
                  // TODO: handle letters in numeric escapes.
                  parts[i] = p.replace(
                      /[a-zA-Z]/g,
                      function (ch) {
                        var cc = ch.charCodeAt(0);
                        return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
                      });
                }
              }
            }
      
            return parts.join('');
          }
      
          var rewritten = [];
          for (var i = 0, n = regexs.length; i < n; ++i) {
            var regex = regexs[i];
            if (regex.global || regex.multiline) { throw new Error('' + regex); }
            rewritten.push(
                '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
          }
      
          return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
        }
      
        var PR_innerHtmlWorks = null;
        function getInnerHtml(node) {
          // inner html is hopelessly broken in Safari 2.0.4 when the content is
          // an html description of well formed XML and the containing tag is a PRE
          // tag, so we detect that case and emulate innerHTML.
          if (null === PR_innerHtmlWorks) {
            var testNode = document.createElement('PRE');
            testNode.appendChild(
                document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
            PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
          }
      
          if (PR_innerHtmlWorks) {
            var content = node.innerHTML;
            // XMP tags contain unescaped entities so require special handling.
            if (isRawContent(node)) {
              content = textToHtml(content);
            } else if (!isPreformatted(node, content)) {
              content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
                  .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
            }
            return content;
          }
      
          var out = [];
          for (var child = node.firstChild; child; child = child.nextSibling) {
            normalizedHtml(child, out);
          }
          return out.join('');
        }
      
        /** returns a function that expand tabs to spaces.  This function can be fed
          * successive chunks of text, and will maintain its own internal state to
          * keep track of how tabs are expanded.
          * @return {function (string) : string} a function that takes
          *   plain text and return the text with tabs expanded.
          * @private
          */
        function makeTabExpander(tabWidth) {
          var SPACES = '                ';
          var charInLine = 0;
      
          return function (plainText) {
            // walk over each character looking for tabs and newlines.
            // On tabs, expand them.  On newlines, reset charInLine.
            // Otherwise increment charInLine
            var out = null;
            var pos = 0;
            for (var i = 0, n = plainText.length; i < n; ++i) {
              var ch = plainText.charAt(i);
      
              switch (ch) {
                case '\t':
                  if (!out) { out = []; }
                  out.push(plainText.substring(pos, i));
                  // calculate how much space we need in front of this part
                  // nSpaces is the amount of padding -- the number of spaces needed
                  // to move us to the next column, where columns occur at factors of
                  // tabWidth.
                  var nSpaces = tabWidth - (charInLine % tabWidth);
                  charInLine += nSpaces;
                  for (; nSpaces >= 0; nSpaces -= SPACES.length) {
                    out.push(SPACES.substring(0, nSpaces));
                  }
                  pos = i + 1;
                  break;
                case '\n':
                  charInLine = 0;
                  break;
                default:
                  ++charInLine;
              }
            }
            if (!out) { return plainText; }
            out.push(plainText.substring(pos));
            return out.join('');
          };
        }
      
        var pr_chunkPattern = new RegExp(
            '[^<]+'  // A run of characters other than '<'
            + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
            + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
            // a probable tag that should not be highlighted
            + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
            + '|<',  // A '<' that does not begin a larger chunk
            'g');
        var pr_commentPrefix = /^<\!--/;
        var pr_cdataPrefix = /^<!\[CDATA\[/;
        var pr_brPrefix = /^<br\b/i;
        var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
      
        /** split markup into chunks of html tags (style null) and
          * plain text (style {@link #PR_PLAIN}), converting tags which are
          * significant for tokenization (<br>) into their textual equivalent.
          *
          * @param {string} s html where whitespace is considered significant.
          * @return {Object} source code and extracted tags.
          * @private
          */
        function extractTags(s) {
          // since the pattern has the 'g' modifier and defines no capturing groups,
          // this will return a list of all chunks which we then classify and wrap as
          // PR_Tokens
          var matches = s.match(pr_chunkPattern);
          var sourceBuf = [];
          var sourceBufLen = 0;
          var extractedTags = [];
          if (matches) {
            for (var i = 0, n = matches.length; i < n; ++i) {
              var match = matches[i];
              if (match.length > 1 && match.charAt(0) === '<') {
                if (pr_commentPrefix.test(match)) { continue; }
                if (pr_cdataPrefix.test(match)) {
                  // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
                  sourceBuf.push(match.substring(9, match.length - 3));
                  sourceBufLen += match.length - 12;
                } else if (pr_brPrefix.test(match)) {
                  // <br> tags are lexically significant so convert them to text.
                  // This is undone later.
                  sourceBuf.push('\n');
                  ++sourceBufLen;
                } else {
                  if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
                    // A <span class="nocode"> will start a section that should be
                    // ignored.  Continue walking the list until we see a matching end
                    // tag.
                    var name = match.match(pr_tagNameRe)[2];
                    var depth = 1;
                    var j;
                    end_tag_loop:
                    for (j = i + 1; j < n; ++j) {
                      var name2 = matches[j].match(pr_tagNameRe);
                      if (name2 && name2[2] === name) {
                        if (name2[1] === '/') {
                          if (--depth === 0) { break end_tag_loop; }
                        } else {
                          ++depth;
                        }
                      }
                    }
                    if (j < n) {
                      extractedTags.push(
                          sourceBufLen, matches.slice(i, j + 1).join(''));
                      i = j;
                    } else {  // Ignore unclosed sections.
                      extractedTags.push(sourceBufLen, match);
                    }
                  } else {
                    extractedTags.push(sourceBufLen, match);
                  }
                }
              } else {
                var literalText = htmlToText(match);
                sourceBuf.push(literalText);
                sourceBufLen += literalText.length;
              }
            }
          }
          return { source: sourceBuf.join(''), tags: extractedTags };
        }
      
        /** True if the given tag contains a class attribute with the nocode class. */
        function isNoCodeTag(tag) {
          return !!tag
              // First canonicalize the representation of attributes
              .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
                       ' $1="$2$3$4"')
              // Then look for the attribute we want.
              .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
        }
      
        /**
         * Apply the given language handler to sourceCode and add the resulting
         * decorations to out.
         * @param {number} basePos the index of sourceCode within the chunk of source
         *    whose decorations are already present on out.
         */
        function appendDecorations(basePos, sourceCode, langHandler, out) {
          if (!sourceCode) { return; }
          var job = {
            source: sourceCode,
            basePos: basePos
          };
          langHandler(job);
          out.push.apply(out, job.decorations);
        }
      
        /** Given triples of [style, pattern, context] returns a lexing function,
          * The lexing function interprets the patterns to find token boundaries and
          * returns a decoration list of the form
          * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
          * where index_n is an index into the sourceCode, and style_n is a style
          * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
          * all characters in sourceCode[index_n-1:index_n].
          *
          * The stylePatterns is a list whose elements have the form
          * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
          *
          * Style is a style constant like PR_PLAIN, or can be a string of the
          * form 'lang-FOO', where FOO is a language extension describing the
          * language of the portion of the token in $1 after pattern executes.
          * E.g., if style is 'lang-lisp', and group 1 contains the text
          * '(hello (world))', then that portion of the token will be passed to the
          * registered lisp handler for formatting.
          * The text before and after group 1 will be restyled using this decorator
          * so decorators should take care that this doesn't result in infinite
          * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
          * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
          * '<script>foo()<\/script>', which would cause the current decorator to
          * be called with '<script>' which would not match the same rule since
          * group 1 must not be empty, so it would be instead styled as PR_TAG by
          * the generic tag rule.  The handler registered for the 'js' extension would
          * then be called with 'foo()', and finally, the current decorator would
          * be called with '<\/script>' which would not match the original rule and
          * so the generic tag rule would identify it as a tag.
          *
          * Pattern must only match prefixes, and if it matches a prefix, then that
          * match is considered a token with the same style.
          *
          * Context is applied to the last non-whitespace, non-comment token
          * recognized.
          *
          * Shortcut is an optional string of characters, any of which, if the first
          * character, gurantee that this pattern and only this pattern matches.
          *
          * @param {Array} shortcutStylePatterns patterns that always start with
          *   a known character.  Must have a shortcut string.
          * @param {Array} fallthroughStylePatterns patterns that will be tried in
          *   order if the shortcut ones fail.  May have shortcuts.
          *
          * @return {function (Object)} a
          *   function that takes source code and returns a list of decorations.
          */
        function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
          var shortcuts = {};
          var tokenizer;
          (function () {
            var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
            var allRegexs = [];
            var regexKeys = {};
            for (var i = 0, n = allPatterns.length; i < n; ++i) {
              var patternParts = allPatterns[i];
              var shortcutChars = patternParts[3];
              if (shortcutChars) {
                for (var c = shortcutChars.length; --c >= 0;) {
                  shortcuts[shortcutChars.charAt(c)] = patternParts;
                }
              }
              var regex = patternParts[1];
              var k = '' + regex;
              if (!regexKeys.hasOwnProperty(k)) {
                allRegexs.push(regex);
                regexKeys[k] = null;
              }
            }
            allRegexs.push(/[\0-\uffff]/);
            tokenizer = combinePrefixPatterns(allRegexs);
          })();
      
          var nPatterns = fallthroughStylePatterns.length;
          var notWs = /\S/;
      
          /**
           * Lexes job.source and produces an output array job.decorations of style
           * classes preceded by the position at which they start in job.source in
           * order.
           *
           * @param {Object} job an object like {@code
           *    source: {string} sourceText plain text,
           *    basePos: {int} position of job.source in the larger chunk of
           *        sourceCode.
           * }
           */
          var decorate = function (job) {
            var sourceCode = job.source, basePos = job.basePos;
            /** Even entries are positions in source in ascending order.  Odd enties
              * are style markers (e.g., PR_COMMENT) that run from that position until
              * the end.
              * @type {Array.<number|string>}
              */
            var decorations = [basePos, PR_PLAIN];
            var pos = 0;  // index into sourceCode
            var tokens = sourceCode.match(tokenizer) || [];
            var styleCache = {};
      
            for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
              var token = tokens[ti];
              var style = styleCache[token];
              var match = void 0;
      
              var isEmbedded;
              if (typeof style === 'string') {
                isEmbedded = false;
              } else {
                var patternParts = shortcuts[token.charAt(0)];
                if (patternParts) {
                  match = token.match(patternParts[1]);
                  style = patternParts[0];
                } else {
                  for (var i = 0; i < nPatterns; ++i) {
                    patternParts = fallthroughStylePatterns[i];
                    match = token.match(patternParts[1]);
                    if (match) {
                      style = patternParts[0];
                      break;
                    }
                  }
      
                  if (!match) {  // make sure that we make progress
                    style = PR_PLAIN;
                  }
                }
      
                isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
                if (isEmbedded && !(match && typeof match[1] === 'string')) {
                  isEmbedded = false;
                  style = PR_SOURCE;
                }
      
                if (!isEmbedded) { styleCache[token] = style; }
              }
      
              var tokenStart = pos;
              pos += token.length;
      
              if (!isEmbedded) {
                decorations.push(basePos + tokenStart, style);
              } else {  // Treat group 1 as an embedded block of source code.
                var embeddedSource = match[1];
                var embeddedSourceStart = token.indexOf(embeddedSource);
                var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
                if (match[2]) {
                  // If embeddedSource can be blank, then it would match at the
                  // beginning which would cause us to infinitely recurse on the
                  // entire token, so we catch the right context in match[2].
                  embeddedSourceEnd = token.length - match[2].length;
                  embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
                }
                var lang = style.substring(5);
                // Decorate the left of the embedded source
                appendDecorations(
                    basePos + tokenStart,
                    token.substring(0, embeddedSourceStart),
                    decorate, decorations);
                // Decorate the embedded source
                appendDecorations(
                    basePos + tokenStart + embeddedSourceStart,
                    embeddedSource,
                    langHandlerForExtension(lang, embeddedSource),
                    decorations);
                // Decorate the right of the embedded section
                appendDecorations(
                    basePos + tokenStart + embeddedSourceEnd,
                    token.substring(embeddedSourceEnd),
                    decorate, decorations);
              }
            }
            job.decorations = decorations;
          };
          return decorate;
        }
      
        /** returns a function that produces a list of decorations from source text.
          *
          * This code treats ", ', and ` as string delimiters, and \ as a string
          * escape.  It does not recognize perl's qq() style strings.
          * It has no special handling for double delimiter escapes as in basic, or
          * the tripled delimiters used in python, but should work on those regardless
          * although in those cases a single string literal may be broken up into
          * multiple adjacent string literals.
          *
          * It recognizes C, C++, and shell style comments.
          *
          * @param {Object} options a set of optional parameters.
          * @return {function (Object)} a function that examines the source code
          *     in the input job and builds the decoration list.
          */
        function sourceDecorator(options) {
          var shortcutStylePatterns = [], fallthroughStylePatterns = [];
          if (options['tripleQuotedStrings']) {
            // '''multi-line-string''', 'single-line-string', and double-quoted
            shortcutStylePatterns.push(
                [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
                 null, '\'"']);
          } else if (options['multiLineStrings']) {
            // 'multi-line-string', "multi-line-string"
            shortcutStylePatterns.push(
                [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
                 null, '\'"`']);
          } else {
            // 'single-line-string', "single-line-string"
            shortcutStylePatterns.push(
                [PR_STRING,
                 /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
                 null, '"\'']);
          }
          if (options['verbatimStrings']) {
            // verbatim-string-literal production from the C# grammar.  See issue 93.
            fallthroughStylePatterns.push(
                [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
          }
          if (options['hashComments']) {
            if (options['cStyleComments']) {
              // Stop C preprocessor declarations at an unclosed open comment
              shortcutStylePatterns.push(
                  [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
                   null, '#']);
              fallthroughStylePatterns.push(
                  [PR_STRING,
                   /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
                   null]);
            } else {
              shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
            }
          }
          if (options['cStyleComments']) {
            fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
            fallthroughStylePatterns.push(
                [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
          }
          if (options['regexLiterals']) {
            var REGEX_LITERAL = (
                // A regular expression literal starts with a slash that is
                // not followed by * or / so that it is not confused with
                // comments.
                '/(?=[^/*])'
                // and then contains any number of raw characters,
                + '(?:[^/\\x5B\\x5C]'
                // escape sequences (\x5C),
                +    '|\\x5C[\\s\\S]'
                // or non-nesting character sets (\x5B\x5D);
                +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
                // finally closed by a /.
                + '/');
            fallthroughStylePatterns.push(
                ['lang-regex',
                 new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
                 ]);
          }
      
          var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
          if (keywords.length) {
            fallthroughStylePatterns.push(
                [PR_KEYWORD,
                 new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
          }
      
          shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
          fallthroughStylePatterns.push(
              // TODO(mikesamuel): recognize non-latin letters and numerals in idents
              [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
              [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
              [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
              [PR_LITERAL,
               new RegExp(
                   '^(?:'
                   // A hex number
                   + '0x[a-f0-9]+'
                   // or an octal or decimal number,
                   + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
                   // possibly in scientific notation
                   + '(?:e[+\\-]?\\d+)?'
                   + ')'
                   // with an optional modifier like UL for unsigned long
                   + '[a-z]*', 'i'),
               null, '0123456789'],
              [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
      
          return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
        }
      
        var decorateSource = sourceDecorator({
              'keywords': ALL_KEYWORDS,
              'hashComments': true,
              'cStyleComments': true,
              'multiLineStrings': true,
              'regexLiterals': true
            });
      
        /** Breaks {@code job.source} around style boundaries in
          * {@code job.decorations} while re-interleaving {@code job.extractedTags},
          * and leaves the result in {@code job.prettyPrintedHtml}.
          * @param {Object} job like {
          *    source: {string} source as plain text,
          *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
          *                   html preceded by their position in {@code job.source}
          *                   in order
          *    decorations: {Array.<number|string} an array of style classes preceded
          *                 by the position at which they start in job.source in order
          * }
          * @private
          */
        function recombineTagsAndDecorations(job) {
          var sourceText = job.source;
          var extractedTags = job.extractedTags;
          var decorations = job.decorations;
      
          var html = [];
          // index past the last char in sourceText written to html
          var outputIdx = 0;
      
          var openDecoration = null;
          var currentDecoration = null;
          var tagPos = 0;  // index into extractedTags
          var decPos = 0;  // index into decorations
          var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
      
          var adjacentSpaceRe = /([\r\n ]) /g;
          var startOrSpaceRe = /(^| ) /gm;
          var newlineRe = /\r\n?|\n/g;
          var trailingSpaceRe = /[ \r\n]$/;
          var lastWasSpace = true;  // the last text chunk emitted ended with a space.
      
          // A helper function that is responsible for opening sections of decoration
          // and outputing properly escaped chunks of source
          function emitTextUpTo(sourceIdx) {
            if (sourceIdx > outputIdx) {
              if (openDecoration && openDecoration !== currentDecoration) {
                // Close the current decoration
                html.push('</span>');
                openDecoration = null;
              }
              if (!openDecoration && currentDecoration) {
                openDecoration = currentDecoration;
                html.push('<span class="', openDecoration, '">');
              }
              // This interacts badly with some wikis which introduces paragraph tags
              // into pre blocks for some strange reason.
              // It's necessary for IE though which seems to lose the preformattedness
              // of <pre> tags when their innerHTML is assigned.
              // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
              // and it serves to undo the conversion of <br>s to newlines done in
              // chunkify.
              var htmlChunk = textToHtml(
                  tabExpander(sourceText.substring(outputIdx, sourceIdx)))
                  .replace(lastWasSpace
                           ? startOrSpaceRe
                           : adjacentSpaceRe, '$1&nbsp;');
              // Keep track of whether we need to escape space at the beginning of the
              // next chunk.
              lastWasSpace = trailingSpaceRe.test(htmlChunk);
              // IE collapses multiple adjacient <br>s into 1 line break.
              // Prefix every <br> with '&nbsp;' can prevent such IE's behavior.
              var lineBreakHtml = window['_pr_isIE6']() ? '&nbsp;<br />' : '<br />';
              html.push(htmlChunk.replace(newlineRe, lineBreakHtml));
              outputIdx = sourceIdx;
            }
          }
      
          while (true) {
            // Determine if we're going to consume a tag this time around.  Otherwise
            // we consume a decoration or exit.
            var outputTag;
            if (tagPos < extractedTags.length) {
              if (decPos < decorations.length) {
                // Pick one giving preference to extractedTags since we shouldn't open
                // a new style that we're going to have to immediately close in order
                // to output a tag.
                outputTag = extractedTags[tagPos] <= decorations[decPos];
              } else {
                outputTag = true;
              }
            } else {
              outputTag = false;
            }
            // Consume either a decoration or a tag or exit.
            if (outputTag) {
              emitTextUpTo(extractedTags[tagPos]);
              if (openDecoration) {
                // Close the current decoration
                html.push('</span>');
                openDecoration = null;
              }
              html.push(extractedTags[tagPos + 1]);
              tagPos += 2;
            } else if (decPos < decorations.length) {
              emitTextUpTo(decorations[decPos]);
              currentDecoration = decorations[decPos + 1];
              decPos += 2;
            } else {
              break;
            }
          }
          emitTextUpTo(sourceText.length);
          if (openDecoration) {
            html.push('</span>');
          }
          job.prettyPrintedHtml = html.join('');
        }
      
        /** Maps language-specific file extensions to handlers. */
        var langHandlerRegistry = {};
        /** Register a language handler for the given file extensions.
          * @param {function (Object)} handler a function from source code to a list
          *      of decorations.  Takes a single argument job which describes the
          *      state of the computation.   The single parameter has the form
          *      {@code {
          *        source: {string} as plain text.
          *        decorations: {Array.<number|string>} an array of style classes
          *                     preceded by the position at which they start in
          *                     job.source in order.
          *                     The language handler should assigned this field.
          *        basePos: {int} the position of source in the larger source chunk.
          *                 All positions in the output decorations array are relative
          *                 to the larger source chunk.
          *      } }
          * @param {Array.<string>} fileExtensions
          */
        function registerLangHandler(handler, fileExtensions) {
          for (var i = fileExtensions.length; --i >= 0;) {
            var ext = fileExtensions[i];
            if (!langHandlerRegistry.hasOwnProperty(ext)) {
              langHandlerRegistry[ext] = handler;
            } else if ('console' in window) {
              console.warn('cannot override language handler %s', ext);
            }
          }
        }
        function langHandlerForExtension(extension, source) {
          if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
            // Treat it as markup if the first non whitespace character is a < and
            // the last non-whitespace character is a >.
            extension = /^\s*</.test(source)
                ? 'default-markup'
                : 'default-code';
          }
          return langHandlerRegistry[extension];
        }
        registerLangHandler(decorateSource, ['default-code']);
        registerLangHandler(
            createSimpleLexer(
                [],
                [
                 [PR_PLAIN,       /^[^<?]+/],
                 [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
                 [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
                 // Unescaped content in an unknown language
                 ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
                 ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
                 [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
                 ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
                 // Unescaped content in javascript.  (Or possibly vbscript).
                 ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
                 // Contains unescaped stylesheet content
                 ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
                 ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
                ]),
            ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
        registerLangHandler(
            createSimpleLexer(
                [
                 [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
                 [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
                 ],
                [
                 [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
                 [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
                 ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
                 [PR_PUNCTUATION,  /^[=<>\/]+/],
                 ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
                 ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
                 ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
                 ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
                 ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
                 ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
                 ]),
            ['in.tag']);
        registerLangHandler(
            createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
        registerLangHandler(sourceDecorator({
                'keywords': CPP_KEYWORDS,
                'hashComments': true,
                'cStyleComments': true
              }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
        registerLangHandler(sourceDecorator({
                'keywords': 'null true false'
              }), ['json']);
        registerLangHandler(sourceDecorator({
                'keywords': CSHARP_KEYWORDS,
                'hashComments': true,
                'cStyleComments': true,
                'verbatimStrings': true
              }), ['cs']);
        registerLangHandler(sourceDecorator({
                'keywords': JAVA_KEYWORDS,
                'cStyleComments': true
              }), ['java']);
        registerLangHandler(sourceDecorator({
                'keywords': SH_KEYWORDS,
                'hashComments': true,
                'multiLineStrings': true
              }), ['bsh', 'csh', 'sh']);
        registerLangHandler(sourceDecorator({
                'keywords': PYTHON_KEYWORDS,
                'hashComments': true,
                'multiLineStrings': true,
                'tripleQuotedStrings': true
              }), ['cv', 'py']);
        registerLangHandler(sourceDecorator({
                'keywords': PERL_KEYWORDS,
                'hashComments': true,
                'multiLineStrings': true,
                'regexLiterals': true
              }), ['perl', 'pl', 'pm']);
        registerLangHandler(sourceDecorator({
                'keywords': RUBY_KEYWORDS,
                'hashComments': true,
                'multiLineStrings': true,
                'regexLiterals': true
              }), ['rb']);
        registerLangHandler(sourceDecorator({
                'keywords': JSCRIPT_KEYWORDS,
                'cStyleComments': true,
                'regexLiterals': true
              }), ['js']);
        registerLangHandler(
            createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
      
        function applyDecorator(job) {
          var sourceCodeHtml = job.sourceCodeHtml;
          var opt_langExtension = job.langExtension;
      
          // Prepopulate output in case processing fails with an exception.
          job.prettyPrintedHtml = sourceCodeHtml;
      
          try {
            // Extract tags, and convert the source code to plain text.
            var sourceAndExtractedTags = extractTags(sourceCodeHtml);
            /** Plain text. @type {string} */
            var source = sourceAndExtractedTags.source;
            job.source = source;
            job.basePos = 0;
      
            /** Even entries are positions in source in ascending order.  Odd entries
              * are tags that were extracted at that position.
              * @type {Array.<number|string>}
              */
            job.extractedTags = sourceAndExtractedTags.tags;
      
            // Apply the appropriate language handler
            langHandlerForExtension(opt_langExtension, source)(job);
            // Integrate the decorations and tags back into the source code to produce
            // a decorated html string which is left in job.prettyPrintedHtml.
            recombineTagsAndDecorations(job);
          } catch (e) {
            if ('console' in window) {
              console.log(e);
              console.trace();
            }
          }
        }
      
        function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
          var job = {
            sourceCodeHtml: sourceCodeHtml,
            langExtension: opt_langExtension
          };
          applyDecorator(job);
          return job.prettyPrintedHtml;
        }
      
        function prettyPrint(opt_whenDone) {
          var isIE678 = window['_pr_isIE6']();
          var ieNewline = isIE678 === 6 ? '\r\n' : '\r';
          // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
      
          // fetch a list of nodes to rewrite
          var codeSegments = [
              document.getElementsByTagName('pre'),
              document.getElementsByTagName('code'),
              document.getElementsByTagName('xmp') ];
          var elements = [];
          for (var i = 0; i < codeSegments.length; ++i) {
            for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
              elements.push(codeSegments[i][j]);
            }
          }
          codeSegments = null;
      
          var clock = Date;
          if (!clock['now']) {
            clock = { 'now': function () { return (new Date).getTime(); } };
          }
      
          // The loop is broken into a series of continuations to make sure that we
          // don't make the browser unresponsive when rewriting a large page.
          var k = 0;
          var prettyPrintingJob;
      
          function doWork() {
            var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
                           clock.now() + 250 /* ms */ :
                           Infinity);
            for (; k < elements.length && clock.now() < endTime; k++) {
              var cs = elements[k];
              if (cs.className && cs.className.indexOf('prettyprint') >= 0) {
                // If the classes includes a language extensions, use it.
                // Language extensions can be specified like
                //     <pre class="prettyprint lang-cpp">
                // the language extension "cpp" is used to find a language handler as
                // passed to PR_registerLangHandler.
                var langExtension = cs.className.match(/\blang-(\w+)\b/);
                if (langExtension) { langExtension = langExtension[1]; }
      
                // make sure this is not nested in an already prettified element
                var nested = false;
                for (var p = cs.parentNode; p; p = p.parentNode) {
                  if ((p.tagName === 'pre' || p.tagName === 'code' ||
                       p.tagName === 'xmp') &&
                      p.className && p.className.indexOf('prettyprint') >= 0) {
                    nested = true;
                    break;
                  }
                }
                if (!nested) {
                  // fetch the content as a snippet of properly escaped HTML.
                  // Firefox adds newlines at the end.
                  var content = getInnerHtml(cs);
                  content = content.replace(/(?:\r\n?|\n)$/, '');
      
                  // do the pretty printing
                  prettyPrintingJob = {
                    sourceCodeHtml: content,
                    langExtension: langExtension,
                    sourceNode: cs
                  };
                  applyDecorator(prettyPrintingJob);
                  replaceWithPrettyPrintedHtml();
                }
              }
            }
            if (k < elements.length) {
              // finish up in a continuation
              setTimeout(doWork, 250);
            } else if (opt_whenDone) {
              opt_whenDone();
            }
          }
      
          function replaceWithPrettyPrintedHtml() {
            var newContent = prettyPrintingJob.prettyPrintedHtml;
            if (!newContent) { return; }
            var cs = prettyPrintingJob.sourceNode;
      
            // push the prettified html back into the tag.
            if (!isRawContent(cs)) {
              // just replace the old html with the new
              cs.innerHTML = newContent;
            } else {
              // we need to change the tag to a <pre> since <xmp>s do not allow
              // embedded tags such as the span tags used to attach styles to
              // sections of source code.
              var pre = document.createElement('PRE');
              for (var i = 0; i < cs.attributes.length; ++i) {
                var a = cs.attributes[i];
                if (a.specified) {
                  var aname = a.name.toLowerCase();
                  if (aname === 'class') {
                    pre.className = a.value;  // For IE 6
                  } else {
                    pre.setAttribute(a.name, a.value);
                  }
                }
              }
              pre.innerHTML = newContent;
      
              // remove the old
              cs.parentNode.replaceChild(pre, cs);
              cs = pre;
            }
      
            // Replace <br>s with line-feeds so that copying and pasting works
            // on IE 6.
            // Doing this on other browsers breaks lots of stuff since \r\n is
            // treated as two newlines on Firefox, and doing this also slows
            // down rendering.
            if (isIE678 && cs.tagName === 'PRE') {
              var lineBreaks = cs.getElementsByTagName('br');
              for (var j = lineBreaks.length; --j >= 0;) {
                var lineBreak = lineBreaks[j];
                lineBreak.parentNode.replaceChild(
                    document.createTextNode(ieNewline), lineBreak);
              }
            }
          }
      
          doWork();
        }
      
        window['PR_normalizedHtml'] = normalizedHtml;
        window['prettyPrintOne'] = prettyPrintOne;
        window['prettyPrint'] = prettyPrint;
        window['PR'] = {
              'combinePrefixPatterns': combinePrefixPatterns,
              'createSimpleLexer': createSimpleLexer,
              'registerLangHandler': registerLangHandler,
              'sourceDecorator': sourceDecorator,
              'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
              'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
              'PR_COMMENT': PR_COMMENT,
              'PR_DECLARATION': PR_DECLARATION,
              'PR_KEYWORD': PR_KEYWORD,
              'PR_LITERAL': PR_LITERAL,
              'PR_NOCODE': PR_NOCODE,
              'PR_PLAIN': PR_PLAIN,
              'PR_PUNCTUATION': PR_PUNCTUATION,
              'PR_SOURCE': PR_SOURCE,
              'PR_STRING': PR_STRING,
              'PR_TAG': PR_TAG,
              'PR_TYPE': PR_TYPE
            };
      })();
      ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/scripts/lang-hs.js�����������������������������������������������������������������0000640�0001750�0001750�00000011013�12410217071�015157� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright (C) 2009 Google Inc.
      //
      // Licensed under the Apache License, Version 2.0 (the "License");
      // you may not use this file except in compliance with the License.
      // You may obtain a copy of the License at
      //
      //      http://www.apache.org/licenses/LICENSE-2.0
      //
      // Unless required by applicable law or agreed to in writing, software
      // distributed under the License is distributed on an "AS IS" BASIS,
      // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      // See the License for the specific language governing permissions and
      // limitations under the License.
      
      
      
      /**
       * @fileoverview
       * Registers a language handler for Haskell.
       *
       *
       * To use, include prettify.js and this file in your HTML page.
       * Then put your code in an HTML tag like
       *      <pre class="prettyprint lang-hs">(my lisp code)</pre>
       * The lang-cl class identifies the language as common lisp.
       * This file supports the following language extensions:
       *     lang-cl - Common Lisp
       *     lang-el - Emacs Lisp
       *     lang-lisp - Lisp
       *     lang-scm - Scheme
       *
       *
       * I used http://www.informatik.uni-freiburg.de/~thiemann/haskell/haskell98-report-html/syntax-iso.html
       * as the basis, but ignore the way the ncomment production nests since this
       * makes the lexical grammar irregular.  It might be possible to support
       * ncomments using the lookbehind filter.
       *
       *
       * @author mikesamuel@gmail.com
       */
      
      PR.registerLangHandler(
          PR.createSimpleLexer(
              [
               // Whitespace
               // whitechar    ->    newline | vertab | space | tab | uniWhite
               // newline      ->    return linefeed | return | linefeed | formfeed
               [PR.PR_PLAIN,       /^[\t\n\x0B\x0C\r ]+/, null, '\t\n\x0B\x0C\r '],
               // Single line double and single-quoted strings.
               // char         ->    ' (graphic<' | \> | space | escape<\&>) '
               // string       ->    " {graphic<" | \> | space | escape | gap}"
               // escape       ->    \ ( charesc | ascii | decimal | o octal
               //                        | x hexadecimal )
               // charesc      ->    a | b | f | n | r | t | v | \ | " | ' | &
               [PR.PR_STRING,      /^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,
                null, '"'],
               [PR.PR_STRING,      /^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,
                null, "'"],
               // decimal      ->    digit{digit}
               // octal        ->    octit{octit}
               // hexadecimal  ->    hexit{hexit}
               // integer      ->    decimal
               //               |    0o octal | 0O octal
               //               |    0x hexadecimal | 0X hexadecimal
               // float        ->    decimal . decimal [exponent]
               //               |    decimal exponent
               // exponent     ->    (e | E) [+ | -] decimal
               [PR.PR_LITERAL,
                /^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,
                null, '0123456789']
              ],
              [
               // Haskell does not have a regular lexical grammar due to the nested
               // ncomment.
               // comment      ->    dashes [ any<symbol> {any}] newline
               // ncomment     ->    opencom ANYseq {ncomment ANYseq}closecom
               // dashes       ->    '--' {'-'}
               // opencom      ->    '{-'
               // closecom     ->    '-}'
               [PR.PR_COMMENT,     /^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],
               // reservedid   ->    case | class | data | default | deriving | do
               //               |    else | if | import | in | infix | infixl | infixr
               //               |    instance | let | module | newtype | of | then
               //               |    type | where | _
               [PR.PR_KEYWORD,     /^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, null],
               // qvarid       ->    [ modid . ] varid
               // qconid       ->    [ modid . ] conid
               // varid        ->    (small {small | large | digit | ' })<reservedid>
               // conid        ->    large {small | large | digit | ' }
               // modid        ->    conid
               // small        ->    ascSmall | uniSmall | _
               // ascSmall     ->    a | b | ... | z
               // uniSmall     ->    any Unicode lowercase letter
               // large        ->    ascLarge | uniLarge
               // ascLarge     ->    A | B | ... | Z
               // uniLarge     ->    any uppercase or titlecase Unicode letter
               [PR.PR_PLAIN,  /^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],
               // matches the symbol production
               [PR.PR_PUNCTUATION, /^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]
              ]),
          ['hs']);
      ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/awstats_glossary.html��������������������������������������������������������������0000640�0001750�0001750�00000116532�12510306004�016110� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html><head>
      <meta name="description" content="AWStats Documentation - Glossary of terms">
      <meta name="keywords" content="awstats, awstat, glossary, terms, definition, lexical, index">
      <meta name="robots" content="index,follow">
      <meta name="title" content="AWStats Documentation - Glossary"><title>AWStats Documentation - Glossary</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
      <link rel="stylesheet" href="styles.css" type="text/css">
      <link href="https://plus.google.com/+LaurentDestailleur" rel="publisher" />
      </head>
      <body topmargin="10" leftmargin="5">
      <table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
      <!-- Large -->
      <tbody>
      <tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
      <td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo6.png" border="0"></a></td>
      <td align="center" bgcolor="#9999cc">
      <br>
      <font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 7.4 Documentation</b></font><br>
      <br>
      </td>
      <td align="center" bgcolor="#9999cc">
      &nbsp;
      </td>
      </tr>
      </tbody>
      </table>
      <br>
      <br>
      <h1 style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Glossary</h1>
      <br>
      <a name="Unique Visitor"><b>Unique Visitor</b></a>:<br>
      A unique
      visitor is a person or computer (host) that has made at least 1 hit
      on 1 page of your web site during the current period shown by the
      report.
      If this user makes several visits during this period, it is counted
      only once. Visitors are tracked by IP address, so if multiple users are
      accessing your site from the same IP (such as a home or office
      network), they will be counted as a single unique visitor.<br>
      The period shown by AWStats reports is by default the current month.<br>
      However if you use AWStats as a CGI you can click on the "year" link to
      have a report for all the year.
      In such a report, period is a full year, so Unique Visitors are number
      of hosts that have made at least 1 hit
      on 1 page of your web site during the year.<br>
      <hr>
      <a name="Visits"><b>Visits</b></a>:<br>
      Number of visits made by all visitors.<br>
      Think "session" here, say a unique IP accesses a page, and then
      requests three other pages within an hour. All of the "pages" are
      included in the visit, therefore you should expect
      multiple pages per visit and multiple visits per unique visitor
      (assuming that some of the unique IPs are
      logged with more than an hour between requests)<br>
      <hr>
      <a name="Pages"><b>Pages</b></a>:<br>
      The number of "pages" viewed by visitors. Pages are usually HTML, PHP
      or ASP files, not images or other files requested as a result
      of loading a "Page" (like js,css... files). Files listed in the
      NotPageList config
      parameter (and match an entry of OnlyFiles config parameter if used)
      are not counted as "Pages".
      <hr><a name="Hits"><b>Hits</b></a>:<br>
      Any files requested from the server (including files that are "Pages")
      except those that match
      the SkipFiles config parameter.<br>
      <hr>
      <a name="Bandwidth"><b>Bandwidth</b></a>:<br>
      Total number of bytes for pages, images and files downloaded by web
      browsing.<br>
      Note 1: Of course, this number includes only traffic for web only (or
      mail only, or ftp only
      depending on value of LogType).<br>
      Note 2: This number does not include technical header data size used
      inside the HTTP or HTTPS protocol or by
      protocols at a lower level (TCP, IP...).<br>
      Because of two previous notes, this number is often lower than bandwith
      reported by your provider (your
      provider counts in most cases bandwitdh at a lower level and includes
      all IP and UDP traffic).<br>
      <hr>
      <a name="Entry Page"><b>Entry Page</b></a>:<br>
      First page viewed by a visitor during its visit.<br>
      Note: When a visit started at end of month to end at beginning of next
      month,
      you might have an Entry page for the month report and no Exit pages.<br>
      That's why Entry pages can be different than Exit pages.<br>
      <hr>
      <a name="Exit Page"><b>Exit Page</b></a>:<br>
      Last page viewed by a visitor during its visit.<br>
      Note: When a visit started at end of month to end at beginning of next
      month,
      you might have an Entry page for the month report and no Exit pages.<br>
      That's why Entry pages can be different than Exit pages.<br>
      <hr>
      <a name="Session Duration"><b>Session Duration</b></a>:<br>
      The time a visitor spent on your site for each visit.<br>
      Some Visits durations are 'unknown' because they can't always be
      calculated. This is the major reason for this:<br>
      - Visit was not finished when 'update' occured.<br>
      - Visit started the last hour (after 23:00) of the last day of a month
      (A technical reason prevents AWStats from
      calculating duration of such sessions).<br>
      <hr>
      <a name="Grabber"><b>Grabber</b></a>:<br>
      A browser that is used primarily for copying locally an entire site.
      These include
      for example "teleport", "webcapture", "webcopier"...<br>
      <hr>
      <a name="Direct"><b>Direct access / Bookmark</b></a>:<br>
      This number represent the number of hits or ratio of hits when a visit
      to your site comes
      from a direct access. This means the first page of your web site was
      called:<br>
      - By typing your URL on the web browser address bar<br>
      - By clicking on your URL stored by a visitor inside its favorites<br>
      - By clicking on your URL found everywhere but not another internet web
      pages (a link in a document,
      an application, etc...)<br>
      - Clicking an URL of your site inside a mail is often counted here.<br>
      <hr>
      <a name="AddToFavourites"><b>Add To Favourites</b></a>:<br>
      This value, available in the "miscellanous chart", reports an estimated
      indicator
      that can be used to have an idea of the number of times a visitor has
      added your web
      site into its favourite bookmarks.<br>
      The technical rules for that is the following formula:<br>
      <i>Number of Add to Favourites = round((x+y) / r)</i><br>
      where<br>
      x = Number of hits made by IE browsers for "/anydir/favicon.ico", with
      a referer field not defined, and with no 404 error code<br>
      y = Number of hits made by IE browsers for "/favicon.ico", with a
      referer field not defined, with or without 404 error code<br>
      r = Ratio of hits made by IE browsers compared to hits made by all
      browsers (r &lt;= 1)<br>
      <br>
      As you can see in formula, only IE is used to count reliable "add", the
      "Add to favourites"
      for other browsers are estimated using ratio of other browsers usage
      compared to ratio of
      IE usage. The reason is that only IE do a hit on favicon.ico nearly
      ONLY when a user add the
      page to its favourites. The other browsers make often hits on this file
      also for other reasons
      so we can't count one "hit" as one "add" since it might be a hit for
      another reason.<br>
      AWStats differentiate also hits with error and not to avoid counting
      multiple hits
      made recursively in upper path when favicon.ico file is not found in
      deeper directory
      of path.<br>
      Note that this number is just an indicator that is in most case higher
      than true value.
      The reason is that even IE browser sometimes make hit on favicon
      without an "Add to favourites"
      action by a user.
      <hr><a name="HTTP"><b>HTTP Status Codes</b></a>:<br>
      HTTP status codes are returned by web servers to indicate the status of
      a request.
      Codes <b>200</b> and <b>304</b> are used to
      tell the browser the page can be viewed.
      <span style="font-weight: bold;">206</span> codes indicate partial
      downloading of content and is reported in the Downloads section. All
      other codes generates hits and traffic 'not seen' by the visitor.
      For example a return
      code 301 or 302 will tell the browser to ask another page. The browser
      will do another hit
      and should finaly receive the page with a return code <b>200</b>
      and <b>304</b>.
      All codes that are 'unseen' traffic are isolated by AWStats in the HTTP
      Status report chart,
      enabled by the directives <a href="awstats_config.html#Show">ShowHTTPErrorsStats</a>.
      in config file. You can also change value for 'not error' hits (set by
      default to <b>200</b> and <b>304</b>
      with the <a href="awstats_config.html#ValidHTTPcodes">ValidHTTPcodes</a>
      directive.
      The following table outlines all status codes defined for the HTTP/1.1
      draft specification
      outlined in <a href="http://www.w3.org/Protocols/rfc2068/rfc2068">IETF
      rfc 2068</a>.<br>
      They are 3-digit codes where the first digit of this code identifies
      the class of the status
      code and the remaining 2 digits correspond to the specific condition
      within the response class.
      They are classified in 5 categories:<br>
      <ul>
      <li><font face="arial"><font size="-1"><a href="#1">1xx - informational</a></font></font></li>
      <li><font face="arial"><font size="-1"><a href="#2">2xx - successful</a></font></font></li>
      <li><font face="arial"><font size="-1"><a href="#3">3xx - redirection</a></font></font></li>
      <li><font face="arial"><font size="-1"><a href="#4">4xx - client error&nbsp;</a></font></font></li>
      <li><font face="arial"><font size="-1"><a href="#5">5xx - server error&nbsp;</a></font></font></li>
      </ul>
      <table width="90%">
      <tbody>
      <tr>
      <td bgcolor="#dadada" valign="top"><!-- HTTP 1xx codes -->
      <a name="1"></a><b><font face="arial">1xx
      class - Informational</font></b>
      <br>
      <font face="arial"><font size="-1">Informational
      status codes are provisional
      responses from the web server... they give the client a heads-up on
      what
      the server is doing. Informational codes do not indicate an error
      condition.&nbsp;</font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">100</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">100 Continue</font></font></b>
      <br>
      <font face="arial"><font size="-1">The
      continue status code tells the
      browser to continue sending a request to the server.&nbsp;</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">101</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">101 Switching
      Protocols</font></font></b>
      <br>
      <font face="arial"><font size="-1">The
      server sends this response when
      the client asks to switch from HTTP/1.0 to HTTP/1.1&nbsp;</font></font></td>
      </tr>
      </tbody>
      </table>
      <p><a name="2"></a><b><font face="arial">2xx class - Successful</font></b>
      <br>
      <font face="arial"><font size="-1">This
      class of status code indicates
      that the client's request was received, understood, and
      successful.&nbsp;</font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">200</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">200 Successful</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">201</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">201 Created</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">202</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">202 Accepted</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">203</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">203
      Non-Authorative Information</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">204</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">204 No Content</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">205</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">205 Reset Content</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">206</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">206 Partial Content</font></font></b>
      <br>
      <font face="arial"><font size="-1">The
      partial content success code is
      issued when the server fulfills a partial GET request. This happens
      when
      the client is downloading a multi-part document or part of a larger
      file.&nbsp;</font></font></td>
      </tr>
      </tbody>
      </table>
      <!-- HTTP 3xx codes -->
      <a name="3"></a><b><font face="arial">3xx
      class - Redirection</font></b>
      <br>
      <font face="arial"><font size="-1">This
      code tells the client that the
      browser should be redirected to another URL in order to complete the
      request.
      This is not an error condition.&nbsp;</font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">300</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">300 Multiple
      Choices</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">301</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">301 Moved
      Permanently</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">302</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">302 Moved
      Temporarily</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">303</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">303 See Other</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">304</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">304 Not Modified</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">305</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">305 Use Proxy</font></font></b></td>
      </tr>
      </tbody>
      </table>
      <!-- HTTP 4xx codes -->
      <a name="4"></a><b><font face="arial">4xx
      class - Client Error</font></b>
      <br>
      <font face="arial"><font size="-1">This
      status code indicates that the
      client has sent bad data or a malformed request to the server. Client
      errors
      are generally issued by the webserver when a client tries to gain
      access
      to a protected area using a bad username and password.&nbsp;</font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">400</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Bad Request</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">401</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">401 Unauthorized</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">402</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">402 Payment
      Required</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">403</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">403 Forbidden</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">404</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">404 Not Found</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">405</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Method Not
      Allowed</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">406</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Not Acceptable</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">407</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Proxy
      Authentication Required</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">408</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Request Timeout</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">409</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">409 Conflict</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">410</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">410 Gone</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">411</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">411 Length Required</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">412</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">412 Precondition
      Failed</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">413</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">413 Request Entity
      Too Long</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">414</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">414 Request-URI
      Too Long</font></font></b></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">415</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">415 Unsupported
      Media Type</font></font></b></td>
      </tr>
      </tbody>
      </table>
      <!-- HTTP 5xx codes -->
      <a name="5"></a><b><font face="arial">5xx
      class - Server Error</font></b>
      <br>
      <font face="arial"><font size="-1">This
      status code indicates that the
      client's request couldn't be succesfully processed due to some internal
      error in the web server. These error codes may indicate something is
      seriously
      wrong with the web server.&nbsp;</font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">500</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">500 Internal
      Server Error</font></font></b>
      <br>
      <font face="arial"><font size="-1">An
      internal server error has caused
      the server to abort your request. This is an error condition that may
      also
      indicate a misconfiguration with the web server. However, the most
      common
      reason for 500 server errors is when you try to execute a script that
      has
      syntax errors.&nbsp;</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">501</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">501 Not Implemented</font></font></b>
      <br>
      <font face="arial"><font size="-1">This
      code is generated by a webserver
      when the client requests a service that is not implemented on the
      server.
      Typically, not implemented codes are returned when a client attempts to
      POST data to a non-CGI (ie, the form action tag refers to a
      non-executable
      file).&nbsp;</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">502</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">502 Bad Gateway</font></font></b>
      <br>
      <font face="arial"><font size="-1">The
      server, when acting as a proxy,
      issues this response when it receives a bad response from an upstream
      or
      support server.&nbsp;</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">503</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">503 Service
      Unavailable</font></font></b>
      <br>
      <font face="arial"><font size="-1">The
      web server is too busy processing
      current requests to listen to a new client. This error represents a
      serious
      problem with the webserver (normally solved with a reboot).&nbsp;</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">504</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">504 Gateway Timeout</font></font></b>
      <br>
      <font face="arial"><font size="-1">Gateway
      timeouts are normally issued
      by proxy servers when an upstream or support server doesn't respond to
      a request in a timely fashion.&nbsp;</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">505</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">505 HTTP Version
      Not Supported</font></font></b>
      <br>
      <font face="arial"><font size="-1">The
      server issues this status code
      when a client tries to talk using an HTTP protocol that the server
      doesn't
      support or is configured to ignore.</font></font></td>
      </tr>
      </tbody>
      </table>
      </p>
      </td>
      <td align="left" valign="top"></td>
      </tr>
      </tbody>
      </table>
      <br>
      <hr>
      <a name="SMTP"><b>SMTP Status Codes</b></a><a>:<br>
      SMTP status codes are returned by mail servers to indicate the status
      of a sending/receiving mail.
      The status code depends on mail server and preprocessor used to analyze
      log file.<br>
      All codes that are failure codes are isolated by AWStats in the SMTP
      Status report chart,
      enabled by the directives </a><a href="awstats_config.html#Show">ShowSMTPErrorsStats</a>
      in AWStats
      config file. You can decide which codes are successfull mail transfer
      that should not appear
      in this chart with the <a href="awstats_config.html#ValidSMTPCodes">ValidSMTPCodes</a>
      directive.<br>
      Here are values reported for most mail servers (This should also be
      values when mail log file
      is preprocessing with maillogconvert.pl).<br>
      SMTP Errors are classified in 3 categories:<br>
      <ul>
      <li><font face="arial"><font size="-1"><a href="#SMTP23">2xx/3xx - successful</a></font></font></li>
      <li><font face="arial"><font size="-1"><a href="#SMTP4">4xx - failure, asking sender to try later</a></font></font></li>
      <li><font face="arial"><font size="-1"><a href="#SMTP5">5xx - permanent failure</a></font></font></li>
      </ul>
      <table width="90%">
      <tbody>
      <tr>
      <td bgcolor="#dadada" valign="top"><!-- SMTP 2xx/3xx -->
      <a name="SMTP23"></a><b><font face="arial">2xx/3xx class - Success</font></b>
      <br>
      <font face="arial"><font size="-1">They
      are SMTP protocols successfull answers
      </font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">200</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">200 Non standard
      success response</font></font></b>
      <br>
      <font face="arial"><font size="-1">Non
      standard success response</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">211</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">211 System status,
      or system help reply</font></font></b>
      <br>
      <font face="arial"><font size="-1">System
      status, or system help reply</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">214</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">214 Help message</font></font></b>
      <br>
      <font face="arial"><font size="-1">Help
      message</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">220</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">220 <domain>
      Service ready</domain></font></font></b>
      <br>
      <font face="arial"><font size="-1"><domain>
      Service ready</domain></font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">221</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">221 <domain>
      Service closing transmission channel</domain></font></font></b>
      <br>
      <font face="arial"><font size="-1"><domain>
      Service closing transmission channel</domain></font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">250</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">250 Requested mail
      action taken and completed</font></font></b>
      <br>
      <font face="arial"><font size="-1">Your
      ISP mail server have successfully executes a command and the DNS is
      reporting a positive delivery.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">251</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">251 User not
      local: will forward to <forward-path></forward-path></font></font></b>
      <br>
      <font face="arial"><font size="-1">Your
      message to a specified
      email address is not local to the mail server, but it will accept and
      forward the message to a different recipient email address.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">252</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">252 Recipient
      cannot be verified</font></font></b>
      <br>
      <font face="arial"><font size="-1">Recipient
      cannot be verified but mail server accepts the message and attempts
      delivery</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">354</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">354 Start mail
      input and end with <crlf>.<crlf></crlf></crlf></font></font></b>
      <br>
      <font face="arial"><font size="-1">Indicates
      mail server is ready
      to accept the message or instruct your mail client to send the message
      body after the mail server have received the message headers.</font></font></td>
      </tr>
      </tbody>
      </table>
      <!-- SMTP 4xx -->
      <a name="SMTP4"></a><b><font face="arial">4xx class - Temporary Errors</font></b>
      <br>
      <font face="arial"><font size="-1">Those
      codes are temporary error message. They are used to tell client sender
      that
      an error occured but he can try to solve it but trying again, so in
      most cases, clients that
      receive such codes will keep the mail in their queue and will try again
      later.<br>
      </font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">421</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">421 <domain>
      Service not available, closing transmission channel</domain></font></font></b>
      <br>
      <font face="arial"><font size="-1">This
      may be a reply to any command if the service knows it must shut down.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">450</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">450 Requested mail
      action not taken: mailbox busy or access denied</font></font></b>
      <br>
      <font face="arial"><font size="-1">Your
      ISP mail server indicates
      that an email address does not exist or the mailbox is busy. It could
      be the network connection went down while sending, or it could also
      happen if the remote mail server does not want to accept mail from you
      for some reason i.e. (IP address, From address, Recipient, etc.)</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">451</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">451 Requested mail
      action aborted: error in processing</font></font></b>
      <br>
      <font face="arial"><font size="-1">Your
      ISP mail server indicates
      that the mailing has been interrupted, usually due to overloading from
      too many messages or transient failure is one in which the message sent
      is valid, but some temporary event prevents the successful sending of
      the message. Sending in the future may be successful.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">452</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">452 Requested mail
      action not taken: insufficient system storage</font></font></b>
      <br>
      <font face="arial"><font size="-1">Your
      ISP mail server indicates, probable overloading from too many messages
      and sending in the future may be successful.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">453</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">453 Too many
      messages</font></font></b>
      <br>
      <font face="arial"><font size="-1">Some
      mail servers have the
      option to reduce the number of concurrent connection and also the
      number of messages sent per connection. If you have a lot of messages
      queued up it could go over the max number of messages per connection.
      To see if this is the case you can try submitting only a few messages
      to that domain at a time and then keep increasing the number until you
      find the maximum number accepted by the server.</font></font></td>
      </tr>
      </tbody>
      </table>
      <!-- SMTP 5xx -->
      <a name="SMTP5"></a><b><font face="arial">5xx class - Permanent Errors</font></b>
      <br>
      <font face="arial"><font size="-1">This
      are permanent error codes. Mail transfer is definitly a failure. No
      other try will be done.
      </font></font>
      <table width="100%">
      <tbody>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">500</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">500 Syntax error,
      command unrecognized or command line too long</font></font></b>
      </td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">501</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">501 Syntax error
      in parameters or arguments</font></font></b>
      </td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">502</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">502 Command not
      implemented</font></font></b>
      </td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">503</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">503 Server
      encountered bad sequence of commands</font></font></b>
      </td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">504</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">504 Command
      parameter not implemented</font></font></b>
      </td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">521</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">521 <domain>
      does not accept mail or closing transmission channel</domain></font></font></b>
      <br>
      <font face="arial"><font size="-1">You
      must be pop-authenticated before you can use this SMTP server and you
      must use your mail address for the Sender/From field.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">530</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">530 Access denied</font></font></b>
      <br>
      <font face="arial"><font size="-1">A
      sendmailism ?</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">550</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">550 Requested mail
      action not taken (Relaying not allowed, Unknown recipient user, ...)</font></font></b>
      <br>
      <font face="arial"><font size="-1">Sending
      an email to recipients
      outside of your domain are not allowed or your mail server does not
      know that you have access to use it for relaying messages and
      authentication is required. Or to prevent the sending of SPAM some mail
      servers will not allow (relay) send mail to any e-mail using another
      company&#8217;s network and computer resources.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">551</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">551 User not
      local: please try <forward-path> or Invalid Address: Relay
      request denied</forward-path></font></font></b>
      </td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">552</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">552 Requested mail
      action aborted: exceeded storage allocation</font></font></b>
      <br>
      <font face="arial"><font size="-1">ISP
      mail server indicates, probable overloading from too many messages.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">553</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">553 Requested mail
      action not taken: mailbox name not allowed</font></font></b>
      <br>
      <font face="arial"><font size="-1">Some
      mail servers have the
      option to reduce the number of concurrent connection and also the
      number of messages sent per connection. If you have a lot of messages
      queued up (being sent) for a domain, it could go over the maximum
      number of messages per connection and/or some change to the message
      and/or destination must be made for successful delivery.</font></font></td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">554</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">554 Requested mail
      action rejected: access denied</font></font></b>
      </td>
      </tr>
      <tr>
      <td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">557</font></font></b></td>
      <td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">557 Too many
      duplicate messages</font></font></b>
      <br>
      <font face="arial"><font size="-1">Resource
      temporarily unavailable Indicates (probable) that there is some kind of
      anti-spam system on the mail server.</font></font></td>
      </tr>
      <!-- # Postfix code for access_map_reject_code (postfix default=554) with access_map_reject_code rule '570'=>'Access denied: access_map violation (on SMTP client or HELO hostname, sender or recipient email address)', # Postfix code for maps_rbl_reject_code (postfix default=554) with maps_rbl_code rule '571'=>'Access denied: SMTP client listed in RBL', # Postfix code for relay_domains_reject_code (postfix default=554) with relay_domains_reject rule '572'=>'Access denied: Relay not authorized or not local host not a gateway', # Postfix code for unknown_client_reject_code (postfix default=450) with reject_unknown_client rule '573'=>'Access denied: Unknown SMTP client hostname (without DNS A or MX record)', # Postfix code for invalid_hostname_reject_code (postfix default=501) with reject_invalid_hostname rule '574'=>'Access denied: Bad syntax for client HELO hostname (Not RFC compliant)', # Postfix code for reject_code (postfix default=554) with smtpd_client_restrictions '575'=>'Access denied: SMTP client hostname rejected', # Postfix code for unknown_address_reject_code (postfix default=450) with reject_unknown_sender_domain or reject_unknown_recipient_domain rule '576'=>'Access denied: Unknown domain for sender or recipient email address (without DNS A or MX record)', # Postfix code for unknown_hostname_reject_code (postfix default=501) with reject_unknown_hostname rule '577'=>'Access denied: Unknown client HELO hostname (without DNS A or MX record)', # Postfix code for non_fqdn_reject_code (Postfix default=504) with reject_non_fqdn_hostname, reject_non_fqdn_sender or reject_non_fqdn_recipient rule '578'=>'Access denied: Invalid domain for client HELO hostname, sender or recipient email address (not FQDN)', -->
      </tbody>
      </table>
      </td>
      <td align="left" valign="top"></td>
      </tr>
      </tbody>
      </table>
      <br>
      <hr>
      
      <!-- You can remove this part if you distribution need documentation without external tags -->
      <!-- BEGIN_SOCIAL_NETWORKS -->
      <div class="htmldoc-ignore">
      <!-- google plus -->
      <span style="color: #bbb; font-weight: normal;">Article written by <a href="https://plus.google.com/+LaurentDestailleur?rel=author" rel="author" style="color: #ccc; font-weight: normal;">Laurent Destailleur</a>.</span><br>
      <br>
      <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
      <g:plusone></g:plusone>
      <!-- facebook -->
      <div id="fb-root"></div>
      <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));</script>
      <div class="fb-like" data-href="http://www.awstats.org/docs/awstats_glossary.html" data-layout="button_count" data-action="recommend" data-show-faces="false" data-share="true"></div>
      <br>
      <!-- twitter -->
      <a href="https://twitter.com/awstats_project" class="twitter-follow-button" data-show-count="false">Follow @awstats_project</a>
      <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
      </div>
      <!-- END_SOCIAL_NETWORKS -->
      
      </body></html>����������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/awstats_setup.html�����������������������������������������������������������������0000640�0001750�0001750�00000064061�12510306004�015404� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html>
      <head>
      <meta name="description" content="AWStats Documentation - Setup page">
      <meta name="keywords" content="awstats, awstat, setup, config, install">
      <meta name="robots" content="index,follow">
      <meta name="title" content="AWStats Documentation - Setup page">
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
      <title>AWStats Documentation - Setup page</title>
      <link rel="stylesheet" href="styles.css" type="text/css">
      <link href="https://plus.google.com/+LaurentDestailleur" rel="publisher" />
      </head>
      
      <body topmargin="10" leftmargin="5">
      <table
       style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"
       bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0"
       width="100%">
      <!-- Large --> <tbody>
          <tr
       style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
            <td align="center" bgcolor="#9999cc"><a href="/"><img
       src="images/awstats_logo6.png" border="0"></a></td>
            <td align="center" bgcolor="#9999cc"> <br>
            <font
       style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"
       color="#eeeeff"><b>AWStats logfile analyzer 7.4 Documentation</b></font><br>
      <br>
      </td>
            <td align="center" bgcolor="#9999cc">&nbsp; </td>
      </tr>
        </tbody>
      </table>
      <br>
      <br>
      <h1
       style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">AWStats
      Installation, Configuration and Reporting</h1>
      There are 3 steps to begin using AWStats:<br>
      <ul>
        <li><a href="#INSTALL">I. Setup: Installation and configuration</a><br>
        </li>
        <li><a href="#BUILD_UPDATE">II. Process logs: Building/updating
      statistics database</a><br>
        </li>
        <li><a href="#READ">III. Run Reports: Building and reading reports</a><br>
        </li>
      </ul>
      <br>
      
      <!--
      <br>
      Before starting, check that your Perl version is at least 5.007 (or higher) by running the <i>perl -v</i> command.
      If not, you can install a recent Perl interpreter from <a href="http://www.activestate.com/ActivePerl/">ActivePerl</a> (<font color=#221188>Win32</font>) or <a href="http://www.perl.com/pub/language/info/software.html">Perl.com</a> (<font color=#221188>Unix/Linux/Other</font>).<br>
      -->
      <br>
      <a name="INSTALL">
      <h2 style=""><u>I. Setup: Installation and configuration using
      awstats_configure.pl</u></h2>
      </a><br>
      <a name="INSTALLAPACHE"><b>A) Setup for an Apache or compatible web
      server (on Unix/Linux, Windows, MacOS...)</b></a><br>
      <br>
      <font style="color: rgb(17, 17, 85);"><b>* Step 1</b>:</font><br>
      <br>
      (if you use a package provided with a Linux distribution or Windows
      installer, step 1
      might have already been done; if you don't know, you can run this step
      again)<br>
      <br>
      After downloading and extracting the AWStats package, you should run
      the awstats_configure.pl script to do
      several setup actions.
      You will find it in the AWStats <b>tools</b> directory (If using the
      Windows installer, the script is
      automatically launched):<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      perl awstats_configure.pl
      </td></tr></table>
      <br>
      <ul>
        <u>This is what the script does/asks (you can do all these steps
      manually instead of running awstats_configure.pl if you prefer):</u><br>
      <br>
      A) awstats_configure.pl tries to determine your current log format from
      your Apache web server
      configuration file httpd.conf (it asks for the path if not found).
      If you use a <b>common</b> log, awstats_configure.pl will
      suggest changing it to the <b>NCSA combined/XLF/ELF</b> format (you
      can use your own custom log
      format but this predefined log format is often the best choice and
      makes setup easier).<br>
      If you answer yes, awstats_configure.pl will modify your <b>httpd.conf</b>,
      changing the
      following directive:<br>
        <i>from<br>
      CustomLog /yourlogpath/yourlogfile common</i><br>
      to<br>
      <i>CustomLog /yourlogpath/yourlogfile combined</i><br>
      <br>
      See the Apache manual for more information on this directive (possibly
      installed on your server as www.mysite.com/manual).<br>
        <br>
      B) awstats_configure.pl will then add, if not already present, the
      following directives to your Apache configuration file
      (note that the "/usr/local/awstats/wwwroot" path might differ according
      to your distribution or OS:<br>
        <i> <br>
      # <br>
      # Directives to add to your Apache conf file to allow use of AWStats as
      a CGI. <br>
      # Note that path "/usr/local/awstats/" must reflect your AWStats
      Installation path. <br>
      # <br>
      Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/" <br>
      Alias /awstatscss "/usr/local/awstats/wwwroot/css/" <br>
      Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/" <br>
      ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/" <br>
      # <br>
      # This is to permit URL access to scripts/files in AWStats directory. <br>
      # <br>
      &lt;Directory "/usr/local/awstats/wwwroot"&gt; <br>
      Options None <br>
      AllowOverride None <br>
      Order allow,deny <br>
      Allow from all <br>
      &lt;/Directory&gt; </i><br>
        <br>
      C) if changes were made as indicated in parts A and B,
      awstats_configure.pl restarts Apache to apply the changes.&nbsp; To be
      sure the log format change is effective, go to your homepage. This is
      an example of the type of records you should see inserted in your new
      log file after Apache
      was restarted:<br>
        <br>
      62.161.78.75 - - [dd/mmm/yyyy:hh:mm:ss +0000] "GET / HTTP/1.1" 200 1234
      "http://www.from.com/from.html" "Mozilla/4.0 (compatible; MSIE 5.01;
      Windows NT 5.0)"<br>
        <br>
      D) awstats_configure.pl will ask you for a name for the configuration
      profile file. Enter an appropriate name such as that of your
      web server or the virtual domain to be analyzed, i.e. <b
       style="font-style: italic;">mysite</b>.<br>
        <br>
      awstats_configure.pl will create a new file called <b>awstats.<span
       style="font-style: italic;">mysite</span>.conf</b>
      by copying the template file <b>awstats.model.conf</b>.
      The new file location is:<br>
      - For Linux/BSD/Unix users: /etc/awstats.<br>
      - For Mac OS X, Windows and other operating systems: the same directory
      as awstats.pl
      (cgi-bin).<br>
      <br>
      
      E) awstats_configure.pl ends.<br>
      <br>
      </ul>
      <font style="color: rgb(17, 17, 85);"><b>* Step 2</b>:</font><br>
      <br>
      Once a configuration file has been created (by
      awstats_configure.pl, by your package
      installer or just by a manual copy of awstats.model.conf), it's
      important to verify that the "MAIN PARAMETERS"
      match your needs.&nbsp; Open awstats.<span
       style="font-style: italic; font-weight: bold;">mysite</span>.conf in
      your favorite text editor (i.e. notepad.exe, vi, gedit, etc) -
      don&acute;t use a word processor - and make changes as required.<br>
      <br>
      Particular attention should be given to these parameters:<br>
      - Verify the <a href="awstats_config.html#LogFile">LogFile</a>
      value.&nbsp; It should be the full path of your server log file (You
      can also use a relative path from your awstats.pl directory, but a full
      path avoids errors).<br>
      - Verify the <a href="awstats_config.html#LogType">LogType</a>
      value.&nbsp; It should be "W" for analyzing
      web log files.<br>
      - Check if <a href="awstats_config.html#LogFormat">LogFormat</a> is
      set to "1" (for "NCSA apache combined/ELF/XLF log format")
      or use a custom log format if you don't use the combined log format.<br>
      - Set the <a href="awstats_config.html#SiteDomain">SiteDomain</a>
      parameter to the main domain name or the intranet web server name
      used to reach the web site to analyze (Example: www.mysite.com). If
      you have several
      possible names for same site, use the main domain name and add the
      others to the list in the <a href="awstats_config.html#HostAlias">HostAlias</a>
      parameter.<br>
      - You can also change other parameters if you want. The full list is
      described in <a href="awstats_config.html">Configurations/Directives
      options</a> page.<br>
      <br>
      Installation and configuration is finished. You can jump to the <a
       href="#BUILD_UPDATE">Process logs: Building/updating statistics
      database</a> section.<br>
      <br>
      <br>	
      <br>
      <a name="INSTALLIIS"><b>B) Setup for Microsoft's IIS server</b></a><br>
      <br>
      <font style="color: rgb(17, 17, 85);"><b>* Step 1</b>:</font><br>
      <br>
      Configure IIS to create logs in the <b>"Extended W3C log format"</b> (You can
      still use
      your own custom log format but setup is easier if you use the standard
      extended format). To do so, start the IIS management console snap-in,
      select the
      appropriate web site and open its
      <span style="font-weight: bold;">Properties</span>. Choose "<span
       style="font-weight: bold;">W3C Extended Log Format</span>", then <span
       style="font-weight: bold;">Properties</span>, then the
      Tab "<span style="font-weight: bold;">Extended Properties</span>" and
      uncheck everything under Extended
      Properties.
      Once they are all cleared, check just the following fields:<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      date<br>
      time<br>
      c-ip<br>
      cs-username<br>
      cs-method<br>
      cs-uri-stem<br>
      cs-uri-query<br>
      sc-status<br>
      sc-bytes<br>
      cs-version<br>
      cs(User-Agent)<br>
      cs(Referer)<br>
      </td></tr></table>
      <br>
      To be sure the log format change is effective, you must stop IIS,
      backup it up (if you desire) and remove all of the old log files, restart IIS and go to
      your homepage. This is an example of the type of records you should
      find in the
      new log file:<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      2000-07-19 14:14:14 62.161.78.73 - GET / 200 1234 HTTP/1.1
      Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
      http://www.from.com/from.htm
      </td></tr></table>
      <br>
      
      <font style="color: rgb(17, 17, 85);"><b>* Step 2</b>:</font><br>
      <br>
      Copy the contents of the AWStats provided cgi-bin folder, from where
      the AWStats package put it on your local hard
      drive,
      to your server's cgi-bin
      directory (this includes <b>awstats.pl</b>, <b>awstats.model.conf</b>,
      and the <b>lang</b>, <b>lib</b> and <b>plugins</b> sub-directories).<br>
      <br>
      <font style="color: rgb(17, 17, 85);"><b>* Step 3</b>:</font><br>
      <br>
      Move AWStats <b>icon sub-directories</b> and its content into a
      directory readable by your
      web server, for example C:\yourwwwroot\icon.<br>
      <br>
      <font style="color: rgb(17, 17, 85);"><b>* Step 4</b>:</font><br>
      <br>
      Create a configuration file by copying <b>awstats.model.conf</b> to a
      new file named <b>awstats.<span style="font-style: italic;">mysite</span>.conf</b>
      where "<span style="font-style: italic;">mysite</span>" is a
      value of your choice but usually is the domain or virtual host name.
      This new file must be saved in the same directory as awstats.pl (i.e.
      cgi-bin).<br>
      <br>
      <font style="color: rgb(17, 17, 85);"><b>* Step 5</b>:</font><br>
      <br>
      Edit your new <b>awstats.<span style="font-style: italic;">mysite</span>.conf</b>
      file to match your specific environment:<br>
      - Change the <a href="awstats_config.html#LogFile">LogFile</a> value
      to the
      full path of your web server log file (You
      can also use a relative path from your awstats.pl (cgi-bin) directory).<br>
      - Change the <a href="awstats_config.html#LogType">LogType</a> value
      to
      "W" for analyzing
      web log files.<br>
      - Change the <a href="awstats_config.html#LogFormat">LogFormat</a> to
      2 if you are using the <b>"Extended W3C log format"</b> described in
      step 1; in the case of a custom format, list the IIS fields
      being logged, for example:<br>
      <i>LogFormat="date time c-ip cs-username cs-method cs-uri-stem
      cs-uri-query sc-status sc-bytes cs-version cs(User-Agent) cs(Referer)"</i><br>
      - Change the <a href="awstats_config.html#DirIcons">DirIcons</a>
      parameter
      to reflect relative path of icon directory.<br>
      - Set the <a href="awstats_config.html#SiteDomain">SiteDomain</a>
      parameter to the main domain name or the intranet
      web server name used to reach the web site being analyzed (Example:
      www.mydomain.com).<br>
      - Set the <a href="awstats_config.html#AllowToUpdateStatsFromBrowser">AllowToUpdateStatsFromBrowser</a>
      parameter to 1 if you don't have command line access and have only cgi
      access.<br>
      - Review and change other parameters if appropriate.<br>
      <br>
      Installation and configuration is finished. You can jump to the <a
       href="#BUILD_UPDATE">Process logs: Building/Updating statistics
      database</a> section.<br>
      <br>
      <b>C) Setup for other web servers</b><br>
      <br>
      The setup process is similar to the setup for Apache or IIS.<br>
      Use <a href="awstats_config.html#LogFormat">LogFormat</a> to value "3"
      if you have WebStar native log format.
      Use a personalized <a href="awstats_config.html#LogFormat">LogFormat</a>
      if your log format is other.<br>
      <br>
      <b>D) Setup for other Internet servers, i.e. FTP, Mail, Streaming media</b><br>
      <br>
      The setup process for other file formats is described in the relevant
      FAQ topics:&nbsp;
      <a href="awstats_faq.html#FTP">FAQ-COM090: FTP</a>&nbsp;
      <a href="awstats_faq.html#MAIL">FAQ-COM100: Mail</a> and <a
       href="awstats_faq.html#MEDIASERVER">FAQ-COM110: Streaming media</a>.<br>
      <br>
      
      <br>
      <a name="BUILD_UPDATE">
      <h2 style=""><u>II. Process logs: Building/updating statistics database</u></h2>
      </a><br>
      <font style="color: rgb(17, 17, 85);"><b>* Update from command line (recommended)</b>:</font><br>
      <br>
      The first log analysis should be done
      manually from the command line since the
      process may be long and it's easier to solve problems when you can see
      the
      command output (if you don't
      have Command Line access, skip to Step 2). The
      AWStats create (and update) statistics database command is:<br>
      <br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      perl awstats.pl -config=mysite -update
      </td></tr></table>
      <br>
      where <span style="font-style: italic;">mysite</span> must
      be substituted with the domain/virtual host name you selected earlier
      during AWStats configuration.<br>
      <br>
      AWStats will read the configuration file awstats.mysite.conf
      (or if
      not found, awstats.conf)
      and create/update its database with all summary information issued from
      analyzed log file.<br>
      <br>
      AWStats statistics database files are saved in directory defined by the
      <a href="awstats_config.html#DirData">DirData</a> parameter in
      configuration file.<br>
      When the create/update is finished, you should see a similar result on
      your screen:<br>
      <br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      Update for config "/etc/awstats/awstats.mysite.conf"<br>
      With data in log file "/pathtoyourlog/yourlog.log"...<br>
      Phase 1 : First bypass old records, searching new record...<br>
      Searching new records from beginning of log file...<br>
      Phase 2 : Now process new records (Flush history on disk after 20000
      hosts)...<br>
      Jumped lines in file: 0<br>
      Parsed lines in file: 225730<br>
      &nbsp;Found 122 dropped records,<br>
      &nbsp;Found 87 corrupted records,<br>
      &nbsp;Found 0 old records,<br>
      &nbsp;Found 225521 new qualified records.<br>
      </td></tr></table>
      <br>
      <b>Dropped records</b> are records discarded because they were not
      "user HTTP requests" or were requests matching AWStats filters (See the
      <a href="awstats_config.html#SkipHosts">SkipHosts</a>,
      <a href="awstats_config.html#SkipUserAgents">SkipUserAgents</a>,
      <a href="awstats_config.html#SkipFiles">SkipFiles</a>, <a
       href="awstats_config.html#OnlyHosts">OnlyHosts</a>,
      <a href="awstats_config.html#OnlyUserAgents">OnlyUserAgents</a> and <a
       href="awstats_config.html#OnlyFiles">OnlyFiles</a> parameters).
      If you want to see which lines were dropped, you can add the <b>-showdropped</b>
      option on the command line.<br>
      <br>
      <b>Corrupted records</b> are records that do not match the log format
      defined by the "LogFormat" parameter in the AWStats configuration file.
      All web servers will typically have a few corrupted records
      (&lt;5%) even when everything works correctly.
      This can result for several reasons: 1) Web server internal bugs,
      2) bad requests made by buggy browsers, 3) a dirty web server shutdown,
      such as unplugging the server...&nbsp; <br>
      <br>
      If all of your lines are corrupted and the <a
       href="awstats_config.html#LogFormat">LogFormat</a> parameter in
      AWStats configuration file is
      correct, then there may be a setup problem with your web server log format.
      Don't forget that
      your <a href="awstats_config.html#OnlyFiles">LogFormat</a> parameter
      in the AWStats configuration file MUST match
      the log file format you analyze.&nbsp; If you want to see which lines
      are corrupted, you can add the <b>-showcorrupted</b>
      option on the command line.<br>
      <br>
      <b>Old records</b> are simply records that were already processed by a
      previous update session.
      Although it is not necessary to purge your log file after
      each update process, it is highly recommended that you do so as often
      as possible.<br>
      <br>
      <b>New records</b> are records in your log file that were successfully
      used to build/update the statistics database.<br>
      <br>
      Note: A log analysis process might be slow (one second for each 4500
      lines of your
      logfile with an Athlon 1Ghz, plus DNS resolution time for each
      different
      IP
      address in your logfile if <a href="awstats_config.html#DNSLookup">DNSLookup</a>
      is set to 1 and not already done in your log file).&nbsp; See the <a
       href="awstats_benchmark.html">Benchmarks page</a> for more detailed
      information.<br>
      <br>
      <!-- <span style="font-weight: bold;">Flush history </span>messages referer
      to ...&nbsp; (Flush history on disk after 20000 hosts). Flush history
      file on disk (unique url reach flush limit of 5000 -->
      
      <br>
      <font style="color: rgb(17, 17, 85);"><b>* Update from a browser</b>:</font><br>
      <br>
      AWStats statistics can also be updated from a browser, providing
      real-time statistics, by clicking
      the "Update now" link that appears when AWStats is used as a CGI (The
      URL is described in the next
      section '<a href="#READ">Run reports: Building and reading reports</a>').<br>
      <br>
      <b>Warning</b>!!<br>
      To enable this link, the configuration file parameter <a
       href="awstats_config.html#AllowToUpdateStatsFromBrowser">AllowToUpdateStatsFromBrowser</a>
      must be set to 1 (The link is not enabled by
      default).<br>
      Using the on-line update does not prevent you from running the update
      process automatically on a scheduled basis (the command is same as that
      of the first update process above).<br>
      For this, you have two choices:<br>
      - Include the update command in your <b>logrotate</b> process. See <a
       href="awstats_faq.html#ROTATE">FAQ-COM120</a> for details.<br>
      - Or add instructions in your <b>crontab</b> (Unix/Linux) or your <b>task
      scheduler</b> (Windows), to regularly launch the Awstats update
      process. See <a href="awstats_faq.html#CRONTAB">FAQ-COM130</a> for
      details.<br>
      <br>
      See the AWStats <a href="awstats_benchmark.html">Benchmarks page</a>
      for
      the recommended update/logrotate frequency.<br>
      <br>
      
      <br>
      <a name="READ">
      <h2 style=""><u>III. Run reports: Building and reading reports</u></h2>
      </a><br>
      To see the analysis results, you have several options depending on your
      <a href="awstats_security.html">security policy</a>.<br>
      <br>
      Note: you must have created a statistics data base for the analysis
      period by processing your
      log files before you try to create reports.&nbsp; See the previous
      section.<br>
      <br>
      1. The first option is to build the main reports, in a static HTML
      page,
      from the command line,
      using the following syntax (skip to the second option if you only have
      CGI access):<br>
      <br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      perl awstats.pl -config=mysite -output -staticlinks
      &gt; awstats.mysite.html
      </td></tr></table>
      <br>
      where <span style="font-style: italic;">mysite</span> must
      be substituted with the domain/virtual host name you selected earlier
      during AWStats configuration.<br>
      <br>
      To create specific individual reports, specify the report name on the
      command
      line as follows&sup1;:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      perl awstats.pl -config=mysite -output=alldomains
      -staticlinks &gt; awstats.mysite.alldomains.html<br>
      perl awstats.pl -config=mysite -output=allhosts
      -staticlinks &gt; awstats.mysite.allhosts.html<br>
      perl awstats.pl -config=mysite -output=lasthosts
      -staticlinks &gt; awstats.mysite.lasthosts.html<br>
      perl awstats.pl -config=mysite -output=unknownip
      -staticlinks &gt; awstats.mysite.unknownip.html<br>
      perl awstats.pl -config=mysite -output=alllogins
      -staticlinks &gt; awstats.mysite.alllogins.html<br>
      perl awstats.pl -config=mysite -output=lastlogins
      -staticlinks &gt; awstats.mysite.lastlogins.html<br>
      perl awstats.pl -config=mysite -output=allrobots
      -staticlinks &gt; awstats.mysite.allrobots.html<br>
      perl awstats.pl -config=mysite -output=lastrobots
      -staticlinks &gt; awstats.mysite.lastrobots.html<br>
      perl awstats.pl -config=mysite -output=urldetail
      -staticlinks &gt; awstats.mysite.urldetail.html<br>
      perl awstats.pl -config=mysite -output=urlentry
      -staticlinks &gt; awstats.mysite.urlentry.html<br>
      perl awstats.pl -config=mysite -output=urlexit
      -staticlinks &gt; awstats.mysite.urlexit.html<br>
      perl awstats.pl -config=mysite -output=browserdetail
      -staticlinks &gt; awstats.mysite.browserdetail.html<br>
      perl awstats.pl -config=mysite -output=osdetail
      -staticlinks &gt; awstats.mysite.osdetail.html<br>
      perl awstats.pl -config=mysite -output=unknownbrowser
      -staticlinks &gt; awstats.mysite.unknownbrowser.html<br>
      perl awstats.pl -config=mysite -output=unknownos
      -staticlinks &gt; awstats.mysite.unknownos.html<br>
      perl awstats.pl -config=mysite -output=refererse
      -staticlinks &gt; awstats.mysite.refererse.html<br>
      perl awstats.pl -config=mysite -output=refererpages
      -staticlinks &gt; awstats.mysite.refererpages.html<br>
      perl awstats.pl -config=mysite -output=keyphrases
      -staticlinks &gt; awstats.mysite.keyphrases.html<br>
      perl awstats.pl -config=mysite -output=keywords
      -staticlinks &gt; awstats.mysite.keywords.html<br>
      perl awstats.pl -config=mysite -output=errors404
      -staticlinks &gt; awstats.mysite.errors404.html<br>
      </td></tr></table>
      <br>
      &sup1;If you prefer, you can use the <a
       href="awstats_tools.html#awstats_buildstaticpages">awstats_buildstaticpages</a>
      tool to
      build all these pages in one command, or to generate PDF files.<br>
      <br>
      Notes:<br>
      <br>
      a) You can also add a <i>filter</i> on the following reports: <b>urldetail,
      urlentry, urlexit, allhosts, refererpages</b>.&nbsp; The <i>filter</i>
      can be a regexp (regular expression) on the full key you want AWStats
      to report on and is appended to the output
      parameter separated by a ":".<br>
      <br>
      For example, to output the urldetail report, including only pages which
      contain /news in their URL, you
      can use the following command line:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      perl awstats.pl -config=mysite -output=urldetail:</b>/news<b>
      -staticlinks &gt; awstats.mysite.urldetailwithfilter.html</b>
      </td></tr></table>
      <br>
      b) If you want to build a report for a particular month, add
      the options <i><b>-month=MM -year=YYYY</b></i> where MM is the month
      expressed as two digits, i.e. 03, and year is the four digit
      year.&nbsp; To build a
      report for a full year, add the options <i><b>-month=all -year=YYYY</b></i>
      (warning: this is often resource intensive and might use a lot of
      memory
      and CPU.&nbsp; Unix/Linux like operating systems might benefit from use
      of the "nice" command.)<br>
      <br>
      <br>
      2) The second option is to dynamically view your statistics from a
      browser.&nbsp; To do this, use the URL:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      http://www.myserver.mydomain/awstats/awstats.pl?config=mysite
      </td></tr></table>
      <br>
      where <i>mysite</i> specifies the configuration
      file to
      use (AWStats will use the file awstats.<i>mysite</i>.conf).<br>
      <br>
      All output command line options (except -staticlinks and -logfile) are
      also available when using AWStats with a browser. Just use them as URL
      parameters: change "-option" to
      "&amp;option", i.e.&nbsp; <b><i>http://www.myserver.mydomain/awstats/awstats.pl?month=MM&amp;year=YYYY&amp;output=unknownos</i></b><br>
      <br>
      Reports are generated in real time from the statistics data
      base.&nbsp; If this is slow, or putting too much load on your server,
      consider generating static reports instead.<br>
      <br>
      If the <a href="awstats_config.html#AllowToUpdateStatsFromBrowser">AllowToUpdateStatsFromBrowser</a>
      parameter is set to 1 in AWStats configuration file,
      you will also be able to run the update process from your browser. Just
      click on the link "Update now".<br>
      <br>
      <br>
      <hr>
      
      <!-- You can remove this part if you distribution need documentation without external tags -->
      <!-- BEGIN_SOCIAL_NETWORKS -->
      <div class="htmldoc-ignore">
      <!-- google plus -->
      <span style="color: #bbb; font-weight: normal;">Article written by <a href="https://plus.google.com/+LaurentDestailleur?rel=author" rel="author" style="color: #ccc; font-weight: normal;">Laurent Destailleur</a>.</span><br>
      <br>
      <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
      <g:plusone></g:plusone>
      <!-- facebook -->
      <div id="fb-root"></div>
      <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));</script>
      <div class="fb-like" data-href="http://www.awstats.org/docs/awstats_setup.html" data-layout="button_count" data-action="recommend" data-show-faces="false" data-share="true"></div>
      <br>
      <!-- twitter -->
      <a href="https://twitter.com/awstats_project" class="twitter-follow-button" data-show-count="false">Follow @awstats_project</a>
      <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
      </div>
      <!-- END_SOCIAL_NETWORKS -->
      
      </body>
      </html>
      �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/awstats_faq.html�������������������������������������������������������������������0000640�0001750�0001750�00000331402�12510306004�015007� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html>
      <head>
      <meta name="description" content="AWStats Documentation - FAQ page">
      <meta name="keywords" content="awstats, awstat, faq, error, errors, frequently, asked, questions, support, help, problem, solution, troubleshooting, rotate log">
      <meta name="robots" content="index,follow">
      <meta name="title" content="AWStats Documentation - FAQs">
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
      <title>AWStats Documentation - FAQs</title>
      <link rel="stylesheet" href="styles.css" type="text/css">
      <link href="https://plus.google.com/+LaurentDestailleur" rel="publisher" />
      </head>
      
      <body topmargin=10 leftmargin=5>
      
      
      <table style="font: 10pt arial,helvetica,verdana" cellpadding=0 cellspacing=0 border=0 bgcolor=#FFFFFF width=100%>
      
      <!-- Large -->
      <tr style="font: 10pt arial,helvetica,verdana">
      <td bgcolor=#9999cc align=center><a href="/"><img src="images/awstats_logo6.png" border=0></a></td>
      <td bgcolor=#9999cc align=center>
      <br>
      <font style="font: 16pt arial,helvetica,sans-serif" color=#EEEEFF><b>AWStats logfile analyzer 7.4 Documentation</b></font><br>
      <br>
      </td>
      <td bgcolor=#9999cc align=center>
      &nbsp;
      </td>
      </tr>
      
      </table>
      
      
      <br><br><H1 style="font: 26px arial,helvetica,sans-serif">Frequently Asked Questions + Troubleshooting</H1>
      
      
      <br>
      <u>ABOUT QUESTIONS:</u><br>
      <ul>
      FAQ-ABO100 <a href="#SERVERSOS">Which server log files or operating systems are supported ?</a><br>
      FAQ-ABO150 <a href="#LOGFORMAT">Which log format can AWStats analyze ?</a><br>
      FAQ-ABO200 <a href="#LANG">Which languages are available ? How to add my own language ?</a><br>
      FAQ-ABO250 <a href="#PHPNUKE">Can AWStats be integrated with PHP Nuke ?</a><br>
      FAQ-ABO300 <a href="#ABOUTHISTORY">About AWStats history</a><br>
      </ul>
      <br>
      
      <u>COMMON SETUP/USAGE QUESTIONS:</u><br>
      Here, you can find the most common questions and answers about AWStats setup/usage process.<br>
      <ul>
      FAQ-COM025 <a href="#NOLOG">How to use AWStats with no server log</a><br>
      FAQ-COM050 <a href="#LIMITLOG">What is the log size limit AWStats can analyze ?</a><br>
      FAQ-COM090 <a href="#FTP">Setup for FTP server log files (proftpd, vsftpd, ...).</a><br>
      FAQ-COM100 <a href="#MAIL">Setup for MAIL log files (Postfix, Sendmail, QMail, MDaemon, Exchange).</a><br>
      FAQ-COM110 <a href="#MEDIASERVER">Setup for MEDIA SERVER log files (Realmedia, Windows media, Darwin streaming server).</a><br>
      FAQ-COM115 <a href="#PERSONALIZEDLOG">Setup/Examples for LogFormat parameter.</a><br>
      FAQ-COM120 <a href="#ROTATE">How to rotate my logs without losing data.</a><br>
      FAQ-COM130 <a href="#CRONTAB">How to run AWStats frequently ?</a><br>
      FAQ-COM140 <a href="#EXCLUDEHOSTS">How to exclude my IP address (or whole subnet mask) from stats ?</a><br>
      FAQ-COM142 <a href="#SCREENSIZE">How to get the screen size and browser capabilities report working ?</a><br>
      FAQ-COM145 <a href="#EXTRA">How to use the Extra Sections features ?</a><br>
      FAQ-COM150 <a href="#BENCHMARK">Benchmark question.</a><br>
      FAQ-COM200 <a href="#DNS">How reverse DNS Lookup works, unresolved IP Addresses ?</a><br>
      FAQ-COM250 <a href="#DIFFERENT_RESULTS">Different results than other log analyzers (Analog, Webalizer, WUsage, wwwStats...).</a><br>
      FAQ-COM300 <a href="#DIFFERENCE_HOURS">Difference between local hour and AWStats reported hour.</a><br>
      FAQ-COM320 <a href="#GEOIPEU">What does mean "eu (European country)" in GeoIP country reports.</a><br>
      FAQ-COM350 <a href="#OLDLOG">How can I process old log file ?</a><br>
      FAQ-COM360 <a href="#MULTILOG">How can I process several log files in one run ?</a><br>
      FAQ-COM400 <a href="#LOADLOG">How can I update my statistics when I use a load balancing system that splits my logs ?</a><br>
      FAQ-COM500 <a href="#RESET">How can I reset all my statistics ?</a><br>
      FAQ-COM600 <a href="#DAILY">How can I compile and build statistics on a daily basis only ?</a><br>
      FAQ-COM700 <a href="#EDITHISTORY">Can I safely remove a line in AWStats history files (awstatsMMYYYY*.txt) ?</a><br>
      </ul>
      <br>
      
      <u>ERRORS/TROUBLESHOOTING QUESTIONS:</u><br>
      Here, you can find the most common questions and answers about errors or problems using AWStats.<br>
      <ul>
      FAQ-SET050 <a href="#MISSINGDOLLAR">Error "Missing $ on loop variable ..."</a><br>
      FAQ-SET100 <a href="#CGISOURCE">I see Perl script's source instead of its execution in my browser.</a><br>
      FAQ-SET150 <a href="#SPAWNERROR">Error "...couldn't create/spawn child process..." with Apache for windows.</a><br>
      FAQ-SET200 <a href="#INTERNAL">"Internal Error" or "Error 500" in a browser connecting to Apache.</a><br>
      FAQ-SET210 <a href="#SPEED">"Internal Error" after a long time in my browser (See FAQ-COM100 "AWStats speed/timeout problems").</a><br>
      FAQ-SET220 <a href="#CRASH">Crash while running awstats.pl or page content only partialy loaded</a><br>
      FAQ-SET270 <a href="#CORRUPTEDDROPPED">Only corrupted/dropped records</a><br>
      FAQ-SET280 <a href="#NOTSAMENUMBER">Error "Not same number of records of...".</a><br>
      FAQ-SET300 <a href="#COULDNOTOPEN">Error "Couldn't open file ..."</a><br>
      FAQ-SET320 <a href="#MALFORMEDUTF8">Error "Malformed UTF-8 character (unexpected..."</a><br>
      FAQ-SET350 <a href="#EMPTY_STATS">Empty or null statistics reported.</a><br>
      FAQ-SET360 <a href="#PARTIAL_STATS">Statistics reported except for os, browsers, robots and keywords/keyphrases.</a><br>
      FAQ-SET400 <a href="#REDIRECT">Pipe redirection to a file give me an empty file.</a><br>
      FAQ-SET450 <a href="#NO_ICON">No pictures/graphics shown.</a><br>
      FAQ-SET700 <a href="#MIGRATEDOUBLED">My visits are doubled for old month I migrated from 3.2 to 5.x</a><br>
      FAQ-SET750 <a href="#OUTOFMEMORYCYGWIN">AWStats run out of memory during update process with cygwin Perl.</a><br>
      FAQ-SET800 <a href="#SPEED">AWStats speed/timeout problems.</a><br>
      </ul>
      <br>
      
      <u>SECURITY QUESTIONS:</u><br>
      Here, you can find the common questions about security problems when setting or using AWStats.<br>
      <ul>
      FAQ-SEC100 <a href="#CSSATTACK">Can AWStats be used to make Cross Site Scripting Attacks ?</a><br>
      FAQ-SEC150 <a href="#SECUSER">How can I prevent some users to see statistics of other users ?</a><br>
      FAQ-SEC200 <a href="#WORMS">How to manage log files (and statistics) corrupted by worms attacks like 'Code Red Virus like'.</a><br>
      </ul>
      <br>
      
      <hr>
      <br><br>
      
      
      <a name="SERVERSOS"></a><br>
      <b><u>FAQ-ABO100 : WHICH SERVER LOG FILES OR OS ARE SUPPORTED ?</u></b><br>
      AWStats can works with :<br>
      <li> All web server able to write log file with a <u>combined log format (XLF/ELF)</u> like Apache,
      a <u>common log format (CLF)</u> like Apache or Squid, a <u>W3C log format</u> like IIS 5.0 or higher,
      or any other log format that contains all information AWStats expect to find.<br>
      <li> Most of all others Web/Wap/Proxy/Streaming servers.<br>
      <li> Some FTP, Syslog or Mail log files.<br>
      Because AWStats is in Perl, it can works on all Operating Systems.<br>
      <br>
      Examples of used platforms (bold means 'tested by author', others were reported by AWStats users to work correctly) :<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      <u>OS:</u><br>
      <b>Windows 2000</b>, <b>Windows NT 4.0</b>, Windows Me, <b>Linux (RedHat, Mandrake, Debian, Suse...)</b>, Macintosh, <b>Solaris</b>, <b>Aix</b>, BeOS, FreeBSD, ...<br>
      <u>Web/Wap/Proxy/Streaming servers</u><br>
      <b>Apache 1.3.x and 2.x</b>, <b>IIS 5.0 or higher</b>, ISA, WebStar, WebLogic, WebSite, <b>Windows Media Server</b>, Tomcat, <b>Squid</b>,
      Sambar, Roxen, Resin, RealMedia server, Oracle9iAS, <b>Lotus Notes/Domino</b>, Darwin, IPlanet, IceCast, ZeroBrand, Zeus, Zope, Abyss...<br>
      <u>FTP servers</u><br>
      <b>ProFTPd</b>, vsFTPd...<br>
      <u>Mails servers</u><br>
      <b>Postfix</b>, <b>Sendmail</b>, QMail, <b>Mdaemon</b>, www4mail, ...<br>
      <u>Perl interpreters (all Perl >= 5.005):</u><br>
      <b>ActivePerl 5.6</b>, <b>ActivePerl 5.8</b>, <b>Perl 5.8</b>, <b>Perl 5.6</b>, <b>Perl 5.005</b>, <b>mod_perl</b> and mod_perl2 for Apache, ...<br>
      </td></tr></table>
      <br>
      
      <a name="LOGFORMAT"></a><br>
      <b><u>FAQ-ABO150 : WHICH LOG FORMATS CAN AWSTATS ANALYZE ?</u></b><br>
      AWStats setup knows predefined log formats you can use to make AWStats config easier. However,
      you can define your own log format, that's the reason why AWStats can analyze nearly all web, wap
      and proxy server log files. Some FTP servers log files, Syslog or mail logs can also be analyzed.<br>
      The only requirement is "Your log file must contain required information".<br>
      <br>
      This is very short examples of possible log format:<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      Apache common log format (see Note*),<br>
      Apache combined log format (known as NCSA combined log format or XLF or ELF format),<br>
      Any other personalized Apache log format,<br>
      Any IIS log format (known as W3C format),<br>
      Webstar native log format,<br>
      Realmedia server, Windows Media Server, Darwin streaming server,<br>
      ProFTPd server, vsFTPd server,<br>
      Postfix, Sendmail, QMail, Mdaemon<br>
      A lot of web/wap/proxy/streaming servers log format<br>
      </td></tr></table>
      <br>
      *Note: Apache common log format (AWStats can now analyze such log files but such log files does not
      contain all information AWStats is looking for. The problem is in the content, not in the
      format). I think analyzing common log files is not interesting because there is a lot of
      missing information: no way to filter robots, find search engines, keywords, os, browser.
      But a lot of users asked me for it, so AWStats support it.
      However, a lot of interesting advanced features can't work: browsers, os's, keywords, robot detection...).
      <br>
      See also <a href="#PERSONALIZEDLOG">F.A.Q.: LOG FORMAT SETUP OR ERRORS </a>.<br>
      <br>
      
      <a name="LANG"></a><br>
      <b><u>FAQ-ABO200 : WHICH LANGUAGES ARE AVAILABLE ?</u></b><br>
      AWStats can make reports in 43 languages. This is a list of all of them, for last version, in
      alphabetical order (The code you can use for <a href="awstats_config.html#Lang">Lang</a>
      and <a href="awstats_config.html#ShowFlagLinks">ShowFlagLinks</a> parameter are 
      the ISO-639-1 language codes):<br>
      <i>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      Albanian=al, Bosnian=ba, Brezhoneg=bzg, Bulgarian=bg, Catalan=ca,
      Chinese (Taiwan)=tw, Chinese (Simpliefied)=cn, Croatian=hr, Czech=cz,
      Danish=dk, Dutch=nl, English=en, Estonian=et, Euskara=eu, Finnish=fi,
      French=fr, Galician=gl, German=de, Greek=gr, Hebrew=he, Hungarian=hu,
      Icelandic=is, Indonesian=id, Italian=it, Japanese=jp, Korean=ko,
      Latvian=lv, Norwegian (Nynorsk)=nn, Norwegian (Bokmal)=nb, Polish=pl,
      Portuguese=pt, Portuguese (Brazilian)=br, Romanian=ro, Russian=ru,
      Serbian=sr, Slovak=sk, Solvenian=si, Spanish=es, Swedish=se, Thai=th,
      Turkish=tr, Ukrainian=ua, Welsh=cy.
      </td></tr></table>
      </i>
      However, AWStats documentation is only provided in English.<br>
      But, you may find small documentation for other languages made by contributors on
      <a href="awstats_contrib.html#DOC">Documentation Contrib page</a>.<br>
      <br>
      If your language is not in this list, you can translate it yourself. For this, find what is your
      2 letter language code: <a href="http://www.oasis-open.org/cover/iso639a.html">here</a>.<br>
      Once, you get it, for example "gl" for Galician, copy the file awstats-en.txt into awstats-<i>gl</i>.txt,
      in langs directory and translate every sentence inside. You can do same for files inside
      tooltips_f, tooltips_m and tooltips_w sub-directories. Then send your translated file(s) to eldy@users.sourceforge.net.<br>
      <br>
      
      <a name="PHPNUKE"></a><br>
      <b><u>FAQ-ABO250 : CAN AWSTATS BE INTEGRATED WITH PHP NUKE ?</u></b><br>
      The only plugin I know to integrate AWStats inside PHPNuke is here: <a href="http://phpnuke.org/modules.php?name=News&file=article&sid=7041">PhpNuke addon for AWStats</a><br>
      <br>
      
      <a name="ABOUTHISTORY"></a><br>
      <b><u>FAQ-ABO300 : ABOUT AWSTATS HISTORY</u></b><br>
      AWStats was initialy designed for my own use to track visitors on my personal web sites or other projects i worked on
      (<a href="http://www.chiensderace.com" alt="Chiens De Race .com">www.chiensderace.com</a>,
       <a href="http://www.chatsderace.com" alt="Chats De Race .com">www.chatsderace.com</a>,
       <a href="http://www.lesbonnesannonces.com" alt="Petites annonces LesBonnesAnnonces.com">www.lesbonnesannonces.com</a>,
       <a href="http://www.pourmaplanete.com" alt="Pour Ma Planete .com, le site de l'ecologie">www.pourmaplanete.com</a>,
       <a href="http://www.dolibarr.org" alt="Dolibarr.org, the ERP/CRM to manage your business">www.dolibarr.org</a>,
       <a href="http://www.nltechno.com" alt="NLTechno">www.nltechno.com</a>,
      and <a href="http://www.destailleur.fr" alt="Site personnel Laurent Destailleur">www.destailleur.fr</a>)<br>
      Then I decided to put it on sourceforge in year 2000. Then a lot of new versions were
      developed to add enhancements until today. See changelog for full history of changes.<br>
      <br>
      
      
      <hr><br>
      
      
      <a name="NOLOG"></a><br>
      <b><u>FAQ-COM025 : HOW TO USE AWSTATS WITH NO SERVER LOG FILE</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I want to have AWStats statistics but i have no access to my server log file.<br>
      <font class=CSolution>SOLUTION:</font><br>
      Because AWStats is a log analyzer, if you don't have any way to read your server log file,
      you have nothing to analyze and you should not be able to use AWStats.
      However, this is a trick that you can use to have a log file be built. You must add
      a tag to call a CGI script like pslogger into each of your web pages. This will
      allow you to have an artificial log file that can be analyzed by AWStats.<br>
      You can find a Perl version of CGI pslogger enhanced by AWStats author <a href="/files/pslogger.pl">here</a>
      or a php version of CGI pslogger made by Florent CHANTRET <a href="/files/pslogger.phps">here</a>.<br>
      <br>
      
      <a name="LIMITLOG"></a><br>
      <b><u>FAQ-COM050 : WHAT IS THE LOG SIZE LIMIT AWSTATS CAN ANALYZE</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I know I must run AWStats update process frequently on new log files, this means thoose
      files have a regular size, but for my first update, I want/need to run update process
      on old log files that are very large. Is there a limit on log file size AWStats can analyze ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      No. There is no limit in AWStats. This means you can use it on large log files (test were
      made on 10GB log files).<br>
      However your system (Operating System or Perl version) might have a limit. For example, you can
      experience size limit errors on files larger than 2 or 4 GB.
      If limit is Perl only, try to use a Perl version compiled with "large file" option.<br>
      If you can't find it nor build it, you can try to use a LogFile parameter that looks like this
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="cat /yourlogfilepath/yourlogfile |"
      </td></tr></table>
      instead of
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="/yourlogfilepath/yourlogfile"
      </td></tr></table>
      <br>
      
      <a name="FTP"></a><br>
      <b><u>FAQ-COM090 : SETUP FOR FTP SERVER LOG FILES (proftpd, vsftpd, ...)</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      What do I have to do to use AWStats to analyze some FTP server log files ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      AWStats can be used with some FTP server log files.<br>
      <br>
      <u>With ProFTPd</u>:<br>
      <br>
      1- Setup your server log file format:<br>
      <br>
      Modify the proftpd.conf file to add the following two lines :
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      <!--<br>With ProFTPd 1.2.2:-->
      LogFormat awstats "%t %h %u %m %f %s %b" &nbsp; &nbsp; # WARNING: You must use a tab char between % tags and not a space !
      <br>ExtendedLog /var/log/xferlog read,write awstats &nbsp; &nbsp; # WARNING: ExtendedLog directive might need to be placed inside a virtual host context if you use them.
      <!--<br>With ProFTPd 1.2.6:
      <i><br>LogFormat awstats ""${%F %H-%M-%S}t %h %u %m %F %s %b"</i> &nbsp; &nbsp; # WARNING: You must use a tab char between % tags and not a space !
      <i><br>ExtendedLog /var/log/xferlog read,write awstats</i> &nbsp; &nbsp; # WARNING: ExtendedLog directive might need to be placed inside a virtual host context if you use them.
      -->
      </td></tr></table>
      <br>
      Then turn off old format Transfer log:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      TransferLog none &nbsp; &nbsp; # WARNING: TransferLog directive might need to be placed inside a virtual host context if you use them.
      </td></tr></table>
      <br>
      To have the change effective, stop your server, remove old log file /var/log/xferlog and restart the server.<br>
      Download a file by FTP and check that your new log file looks like this:<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      [01/Jan/2001:21:49:57 +0200]	ftp.server.com	user	RETR	/home/fileiget.txt	226	1499
      </td></tr></table>
      <br>
      2- Then setup AWStats to analyze the FTP log file:<br>
      <br>
      Copy config file "awstats.model.conf" to "awstats.ftp.conf".<br>
      Modify this new config file:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="/var/log/xferlog"
      <br>LogType=F
      <br>LogFormat="%time1 %host %logname %method %url %code %bytesd"
      <br>LogSeparator="\t"
      <br>NotPageList=""
      <br>LevelForBrowsersDetection=0
      <br>LevelForOSDetection=0
      <br>LevelForRefererAnalyze=0
      <br>LevelForRobotsDetection=0
      <br>LevelForWormsDetection=0
      <br>LevelForSearchEnginesDetection=0
      <br>ShowLinksOnUrl=0
      <br>ShowMenu=1
      <br>ShowSummary=UVHB
      <br>ShowMonthStats=UVHB
      <br>ShowDaysOfMonthStats=HB
      <br>ShowDaysOfWeekStats=HB
      <br>ShowHoursStats=HB
      <br>ShowDomainsStats=HB
      <br>ShowHostsStats=HBL
      <br>ShowAuthenticatedUsers=HBL
      <br>ShowRobotsStats=0
      <br>ShowEMailSenders=0
      <br>ShowEMailReceivers=0
      <br>ShowSessionsStats=1
      <br>ShowPagesStats=PBEX
      <br>ShowFileTypesStats=HB
      <br>ShowFileSizesStats=0
      <br>ShowBrowsersStats=0
      <br>ShowOSStats=0
      <br>ShowOriginStats=0
      <br>ShowKeyphrasesStats=0
      <br>ShowKeywordsStats=0
      <br>ShowMiscStats=0
      <br>ShowHTTPErrorsStats=0
      <br>ShowSMTPErrorsStats=0
      </td></tr></table>
      <br>
      Now you can use AWStats as usual (run the update process and read statistics).<br>
      <br>
      <br>
      <u>With vsFTPd, or any FTP server that log with xferlog format</u>:<br>
      <br>
      1- Check your server log file format:<br>
      <br>
      Take a look at your FTP server log file. You must have a format that match the following example to
      use this FAQ :<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      Wed Jan 01 19:29:35 2001 1 192.168.1.1 102 /home/file1.txt b _ o r username ftp 0 * c
      </td></tr></table>
      <br>
      2- Then setup AWStats to analyze the FTP log file:<br>
      <br>
      If your FTP log file format looks good, copy config file "awstats.model.conf" to "awstats.ftp.conf".<br>
      Modify this new config file:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="/var/log/xferlog"
      <br>LogType=F
      <br>LogFormat="%time3 %other %host %bytesd %url %other %other %method %other %logname %other %code %other %other"
      <br>LogSeparator="\s"
      <br>NotPageList=""
      <br>LevelForBrowsersDetection=0
      <br>LevelForOSDetection=0
      <br>LevelForRefererAnalyze=0
      <br>LevelForRobotsDetection=0
      <br>LevelForWormsDetection=0
      <br>LevelForSearchEnginesDetection=0
      <br>ShowLinksOnUrl=0
      <br>ShowMenu=1
      <br>ShowSummary=UVHB
      <br>ShowMonthStats=UVHB
      <br>ShowDaysOfMonthStats=HB
      <br>ShowDaysOfWeekStats=HB
      <br>ShowHoursStats=HB
      <br>ShowDomainsStats=HB
      <br>ShowHostsStats=HBL
      <br>ShowAuthenticatedUsers=HBL
      <br>ShowRobotsStats=0
      <br>ShowEMailSenders=0
      <br>ShowEMailReceivers=0
      <br>ShowSessionsStats=1
      <br>ShowPagesStats=PBEX
      <br>ShowFileTypesStats=HB
      <br>ShowFileSizesStats=0
      <br>ShowBrowsersStats=0
      <br>ShowOSStats=0
      <br>ShowOriginStats=0
      <br>ShowKeyphrasesStats=0
      <br>ShowKeywordsStats=0
      <br>ShowMiscStats=0
      <br>ShowHTTPErrorsStats=0
      <br>ShowSMTPErrorsStats=0
      </td></tr></table>
      <br>
      Now you can use AWStats as usual (run the update process and read statistics).<br>
      <br>
      
      
      <a name="MAIL"></a><br>
      <b><u>FAQ-COM100 : SETUP FOR MAIL LOG FILES (Postfix, Sendmail, Qmail, MDaemon, Exchange...)</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      What do I have to do to use AWStats to analyze my mail log files ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      <br>
      This tip works with AWStats 5.5 or higher.<br>
      <br>
      <u>For Postfix, Sendmail, QMail or MDaemon log files</u><br>
      <br>
      You must setup AWStats to use a mail log file preprocessor (<i>maillogconvert.pl</i> is provided
      into AWStats <i>tools</i> directory, but you can use the one of your choice):<br>
      For this, copy config <i>"awstats.model.conf"</i> file to <i>"awstats.mail.conf"</i>.<br>
      Modify this new config file:
      For standard Postfix, Sendmail, MDaemon and standard QMail logfiles, set<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="perl /path/to/maillogconvert.pl standard &lt; /pathtomaillog/maillog |"
      </td></tr></table>
      If the logfiles are compressed, they can be processed this way<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="gzip -cd /var/log/maillog.0.gz | /path/to/maillogconvert.pl standard |"<br>
      </td></tr></table>
      And for VAdmin QMail logfiles (multi-host/virtualhost mail servers running vadmin software), set<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="perl /path/to/maillogconvert.pl vadmin &lt; /pathtomaillog/maillog |"<br>
      </td></tr></table>
      <br>
      Then, whatever is you mail server, you must also change:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogType=M
      <br>LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
      <br>LevelForBrowsersDetection=0
      <br>LevelForOSDetection=0
      <br>LevelForRefererAnalyze=0
      <br>LevelForRobotsDetection=0
      <br>LevelForWormsDetection=0
      <br>LevelForSearchEnginesDetection=0
      <br>LevelForFileTypesDetection=0
      <br>ShowMenu=1
      <br>ShowSummary=HB
      <br>ShowMonthStats=HB
      <br>ShowDaysOfMonthStats=HB
      <br>ShowDaysOfWeekStats=HB
      <br>ShowHoursStats=HB
      <br>ShowDomainsStats=0
      <br>ShowHostsStats=HBL
      <br>ShowAuthenticatedUsers=0
      <br>ShowRobotsStats=0
      <br>ShowEMailSenders=HBML
      <br>ShowEMailReceivers=HBML
      <br>ShowSessionsStats=0
      <br>ShowPagesStats=0
      <br>ShowFileTypesStats=0
      <br>ShowFileSizesStats=0
      <br>ShowBrowsersStats=0
      <br>ShowOSStats=0
      <br>ShowOriginStats=0
      <br>ShowKeyphrasesStats=0
      <br>ShowKeywordsStats=0
      <br>ShowMiscStats=0
      <br>ShowHTTPErrorsStats=0
      <br>ShowSMTPErrorsStats=1
      </td></tr></table>
      Warning: For MDaemon mail server, you must use the new MDaemon log file that ends
      with "-Statistics.log".<br>
      <br>
      Now you can use AWStats as usual (run the update process and read statistics).<br>
      <br>
      
      <u>For Exchange log files</u><br>
      <br>
      Despite the high number of possible log format provided with Exchange,
      none of them is built enough seriously to offer an interseting analyze (missing informations,
      messy data, no id to join multiple records for same mail, etc...).
      For this reason, an "exact" log analysis is a joke with Exchange log files.
      However a little support is provided. In order to analyze Exchange traffic, you have to
      enable "Message Tracking" (see article http://support.microsoft.com/default.aspx?scid=kb;EN-US;246856).<br>
      Then copy config awstats.model.conf file to "awstats.mail.conf".<br>
      Modify this new config file:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogType=M
      <br>LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
      <br>LevelForBrowsersDetection=0
      <br>LevelForOSDetection=0
      <br>LevelForRefererAnalyze=0
      <br>LevelForRobotsDetection=0
      <br>LevelForWormsDetection=0
      <br>LevelForSearchEnginesDetection=0
      <br>LevelForFileTypesDetection=0
      <br>ShowMenu=1
      <br>ShowSummary=HB
      <br>ShowMonthStats=HB
      <br>ShowDaysOfMonthStats=HB
      <br>ShowDaysOfWeekStats=HB
      <br>ShowHoursStats=HB
      <br>ShowDomainsStats=0
      <br>ShowHostsStats=HBL
      <br>ShowAuthenticatedUsers=0
      <br>ShowRobotsStats=0
      <br>ShowEMailSenders=HBML
      <br>ShowEMailReceivers=HBML
      <br>ShowSessionsStats=0
      <br>ShowPagesStats=0
      <br>ShowFileTypesStats=0
      <br>ShowFileSizesStats=0
      <br>ShowBrowsersStats=0
      <br>ShowOSStats=0
      <br>ShowOriginStats=0
      <br>ShowKeyphrasesStats=0
      <br>ShowKeywordsStats=0
      <br>ShowMiscStats=0
      <br>ShowHTTPErrorsStats=0
      <br>ShowSMTPErrorsStats=1
      </td></tr></table>
      <br>
      Also don't forget that with Exchange, informations in a log analyses can't be exact.
      Do not send any questions or requests for using AWStats with Exchange, this is not a problem in
      AWStats and we have no time to support non opened products.<br>
      If you want to have complete and accurate information with Exchange, forget using AWStats or use a
      more serious mail serveur (Postfix, Sendmail, QMail...)<br>
      <br>
      
      <a name="MEDIASERVER"></a><br>
      <b><u>FAQ-COM110 : SETUP FOR A MEDIA SERVER (REALMEDIA, WINDOWS MEDIA SERVER, DARWIN STREAMING SERVER)</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      What do I have to do to use AWStats to analyze my Media Server log files.<br>
      <font class=CSolution>SOLUTION:</font><br>
      <br>
      <u>For Realmedia</u><br>
      <br>
      Your log file will probably looks like this:<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      216.125.146.50 - - [16/Sep/2002:14:57:21 -0500]  "GET cme/rhythmcity/rcitycaddy.rm?cloakport=8080,554,7070 RTSP/1.0" 200 6672 [Win95_4.0_6.0.9.374_play32_NS80_en-US_586] [80d280e1-c9ae-11d6-fa53-d52aaed98681] [UNKNOWN] 281712 141 3 0 0 494<br>
      </td></tr></table>
      <br>
      Copy config awstats.model.conf file to "awstats.mediaserver.conf".
      Modify this new config file:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="/pathtomediaserverlog/mediaserverlog"
      <br>LogType=S
      <br>LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %uabracket %other %other %other %other %other %other %other %other"
      <br>LogSeparator="\s+"
      <br>ShowMenu=1
      <br>ShowSummary=UHB
      <br>ShowMonthStats=UHB
      <br>ShowDaysOfMonthStats=HB
      <br>ShowDaysOfWeekStats=HB
      <br>ShowHoursStats=HB
      <br>ShowDomainsStats=HB
      <br>ShowHostsStats=HBL
      <br>ShowAuthenticatedUsers=0
      <br>ShowRobotsStats=0
      <br>ShowEMailSenders=0
      <br>ShowEMailReceivers=0
      <br>ShowSessionsStats=0
      <br>ShowPagesStats=PB
      <br>ShowFileTypesStats=HB
      <br>ShowFileSizesStats=0
      <br>ShowBrowsersStats=1
      <br>ShowOSStats=1
      <br>ShowOriginStats=H
      <br>ShowKeyphrasesStats=0
      <br>ShowKeywordsStats=0
      <br>ShowMiscStats=0
      <br>ShowHTTPErrorsStats=1
      <br>ShowSMTPErrorsStats=0
      </td></tr></table>
      <br>
      Now you can use AWStats as usual (run the update process and read statistics).<br>
      <br>
      <br>
      <u>For Windows Media Server / Darwin Streaming Server</u><br>
      <br>
      1- If your Windows Media / Darwin streaming Server version allows it, setup your log format to write the following fields:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      c-ip
      <br>date
      <br>time
      <br>cs-uri-stem
      <br>c-starttime
      <br>x-duration
      <br>c-rate
      <br>c-status
      <br>c-playerid
      <br>c-playerversion
      <br>c-playerlanguage
      <br>cs(User-Agent)
      <br>cs(Referer)
      <br>c-hostexe
      <br>c-hostexever
      <br>c-os
      <br>c-osversion
      <br>c-cpu
      <br>filelength
      <br>filesize
      <br>avgbandwidth
      <br>protocol
      <br>transport
      <br>audiocodec
      <br>videocodec
      <br>channelURL
      <br>sc-bytes
      </td></tr></table>
      <br>
      To make the change effective, stop your server, remove old log files and restart the server.<br>
      Listen to streaming files and check that your new log file looks like this:<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      80.223.91.37 2002-10-08 14:18:58 mmst://mydomain.com/mystream 0 106 1 200 {F4A826EE-FA46-480F-A49B-76786320FC6B} 8.0.0.4477 fi-FI - - wmplayer.exe 8.0.0.4477 Windows_2000 5.1.0.2600 Pentium 0 0 20702 mms TCP Windows_Media_Audio_9 - - 277721
      </td></tr></table>
      <br>
      <br>
      If your Windows Media/Darwin Streaming Server version does not allow to define your log format:<br>
      Just follow instructions in step 2 directly but use the log format string found in first lines
      of your log files (Just after the "<i>#Fields:</i>" string) as value for AWStats LogFormat
      parameter. For example, you could have a LogFormat defined like this:<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFormat="c-ip date time c-dns cs-uri-stem c-starttime x-duration c-rate
      c-status c-playerid c-playerversion c-playerlanguage cs(User-Agent)
      cs(Referer) c-hostexe c-hostexever c-os c-osversion c-cpu filelength
      filesize avgbandwidth protocol transport audiocodec videocodec channelURL
      sc-bytes c-bytes s-pkts-sent c-pkts-received c-pkts-lost-client
      c-pkts-lost-net c-pkts-lost-cont-net c-resendreqs c-pkts-recovered-ECC
      c-pkts-recovered-resent c-buffercount c-totalbuffertime c-quality s-ip s-dns
      s-totalclients s-cpu-util"
      </td></tr></table>
      <br>This means you don't use the AWStats tags but AWStats can often also understand all the IIS and/or
      Windows Media Server tags.<br>
      
      <br>
      2- Then setup AWStats to analyze your Media Server log:<br>
      Copy config awstats.model.conf file to "awstats.mediaserver.conf".<br>
      Modify this new config file:
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="/pathtomediaserver/mediaserverlog"
      <br>LogType=S
      <br>LogFormat="c-ip date time cs-uri-stem c-starttime x-duration c-rate c-status c-playerid c-playerversion c-playerlanguage cs(User-Agent) cs(Referer) c-hostexe c-hostexever c-os c-osversion c-cpu filelength filesize avgbandwidth protocol transport audiocodec videocodec channelURL sc-bytes"
      <br>DecodeUA=1
      <br>ShowMenu=1
      <br>ShowSummary=UHB
      <br>ShowMonthStats=UHB
      <br>ShowDaysOfMonthStats=HB
      <br>ShowDaysOfWeekStats=HB
      <br>ShowHoursStats=HB
      <br>ShowDomainsStats=HB
      <br>ShowHostsStats=HBL
      <br>ShowAuthenticatedUsers=0
      <br>ShowRobotsStats=0
      <br>ShowEMailSenders=0
      <br>ShowEMailReceivers=0
      <br>ShowSessionsStats=0
      <br>ShowPagesStats=PB
      <br>ShowFileTypesStats=HB
      <br>ShowFileSizesStats=0
      <br>ShowBrowsersStats=1
      <br>ShowOSStats=1
      <br>ShowOriginStats=H
      <br>ShowKeyphrasesStats=0
      <br>ShowKeywordsStats=0
      <br>ShowMiscStats=0
      <br>ShowHTTPErrorsStats=1
      <br>ShowSMTPErrorsStats=0
      </td></tr></table>
      <br>
      Now you can use AWStats as usual (run the update process and read statistics).<br>
      <br>
      
      <a name="PERSONALIZEDLOG"></a><br>
      <b><u>FAQ-COM115 : SETUP/EXAMPLES FOR LOGFORMAT PARAMETER</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      Which value do I have to put in the LogFormat parameter to make AWStats working with my log
      file format ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      The AWStats config file gives you all the possible values for LogFormat parameter.
      To help you, this is some common cases of log file format, and
      the corresponding value of LogFormat you must use in your AWStats config file:<br>
      <hr>
      <u>If your log records are EXACTLY like this (<b>NCSA combined/XLF/ELF</b> log format):</u><br>
      <i>62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"</i><br>
      
      You must use : <i>LogFormat=1</i><br>
      This is same than: <i>LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"</i><br>
      
      <hr>
      <u>If your log records are EXACTLY like this (<b>NCSA combined with several virtualhostname</b> sharing same log file).</u><br>
      <i>virtualserver1 62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"</i><br>
      You must use : <i>LogFormat="%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"</i><br>
      <hr>
      <u>If your log records are EXACTLY like this (<b>NCSA combined and mod_gzip format 1</b> with <b>Apache 1.x</b>):</u><br>
      <i>62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 3904 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" mod_gzip: 66pct.</i><br>
      You must use : <i>LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other %gzipratio"</i><br>
      
      <hr>
      <u>If your log records are EXACTLY like this (<b>NCSA combined and mod_gzip format 2</b> with <b>Apache 1.x</b>):</u><br>
      <i>62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 3904 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" mod_gzip: DECHUNK:OK In:11393 Out:3904:66pct.</i><br>
      You must use : <i>LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other %other %gzipin %gzipout"</i><br>
      <hr>
      <u>If your log records are EXACTLY like this (<b>NCSA combined and mod_deflate</b> with <b>Apache 2</b>):</u><br>
      <i>62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 3904 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" (45)</i><br>
      You must use : <i>LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %deflateratio"</i><br>
      
      <hr>
      <u>If your log records are EXACTLY like this (<b>NCSA combined with 2 spaces between some fields</b> with <b>Zope</b>):</u><br>
      <i>62.161.78.73 &nbsp;- - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 3904 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" (45)</i><br>
      You must use : <i><br>
      LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"<br>
      LogSeparator=" *"<br>
      </i>
      <hr>
      <u>If your log records are EXACTLY like this (<b>NCSA common CLF</b> log format):</u><br>
      <i>62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234</i><br>
      You must use : <i>LogFormat=4</i><br>
      Note: Browsers, OS's, Keywords and Referers features are not available with a such format.<br>
      
      <hr>
      <u>If your log records are EXACTLY like this (With some <b>Squid</b> versions, after setting <i>emulate_http_log</i> to on):</u><br>
      <i>200.135.30.181 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET http://www.mydomain.com/page.html HTTP/1.0" 200 456 TCP_CLIENT_REFRESH_MISS:DIRECT</i><br>
      You must use : <i>LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %other"</i><br>
      <hr>
      <u>If your log records are EXACTLY like this (Some old <b>IIS</b> W3C log format):</u><br>
      <i>yyyy-mm-dd hh:mm:ss 62.161.78.73 - GET /page.html 200 1234 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) http://www.from.com/from.html</i><br>
      You must use : <i>LogFormat=2</i><br>
      
      <hr>
      <u>If your log records are EXACTLY like this (Some <b>IIS</b> W3C log format with some <b>.net</b> servers):</u><br>
      <i>yyyy-mm-dd hh:mm:ss GET /page.html - 62.161.78.73 - Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) http://www.from.com/from.html 200 1234 HTTP/1.1</i><br>
      You must use : <i>LogFormat=2 (or LogFormat="%time2 %method %url %logname %host %other %ua %referer %code %bytesd %other")</i><br> 
      <hr>
      <u>If your log records are EXACTLY like this (Some <b>IIS 6+</b> W3C log format):</u><br>
      <i>yyyy-mm-dd hh:mm:ss GET /page.html - 62.161.78.73 - Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) http://www.from.com/from.html 200 1234</i><br>
      You must use : <i>LogFormat=2 (or LogFormat="date time cs-method cs-uri-stem cs-username c-ip cs-version cs(User-Agent) cs(Referer) sc-status sc-bytes")</i><br>
      
      <hr>
      <u>If your log records are EXACTLY like this (Some <b>ISA</b> W3C log format):</u><br>
      <i>62.161.78.73, anonymous, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1), N, 1/1/2001, 0:00:16, W3ReverseProxy, HCSERV2, -, www.host.be, 192.168.141.101, 80, 266, 406, 10042, http, TCP, GET, http://192.168.141.101/, text/html, Inet, 200, 0x42330010, -, -</i><br>
      You must use :<br>
      <i>LogFile="sed -e 's/, /\t/g' "/yourlogpath/yourlogfile.log" |"</i><br>
      <i>LogFormat=2</i><br>
      <i>LogSeparator=" "</i><br>
      <hr>
      <u>If your log records are EXACTLY like this (With some <b>WebSite</b> versions):</u><br>
      <i>yyyy-mm-dd hh:mm:ss 62.161.78.73 - 192.168.1.1 80 GET /page.html - 200 11205 0 0 HTTP/1.1 mydomain.com Mozilla/4.0+(compatible;+MSIE+5.5;+Windows+98) - http://www.from.com/from.html</i><br>
      You must use : <i>LogFormat="%time2 %host %logname %other %other %method %url %other %code %bytesd %other %other %other %other %ua %other %referer"</i><br>
      
      <hr>
      <u>If your log records are EXACTLY like this (<b>Webstar</b> native log format):</u><br>
      <i>05/21/00	00:17:31	OK  	200	212.242.30.6	Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)	http://www.cover.dk/	"www.cover.dk"	:Documentation:graphics:starninelogo.white.gif	1133</i><br>
      You must use : <i>LogFormat=3</i><br>
      <hr>
      <u>If your log records are EXACTLY like this (With some <b>Lotus Notes/Domino</b> versions):</u><br>
      <i>62.161.78.73 - Name Surname Service [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"</i><br>
      You must use : <i>LogFormat=6</i><br>
      
      <hr>
      <u>If your log records are EXACTLY like this (<b>Lotus Notes/Domino 6.x</b> log format):</u><br>
      <i>62.161.78.73 - "Name Surname" Service [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"</i><br>
      You must use : <i>LogFormat="%host %other %lognamequot %time1 %methodurl %code %bytesd %refererquot %uaquot"</i><br>
      <hr>
      <u>If your log records are EXACTLY like this (With <b>Oracle9iAS</b>):</u><br>
      <i>62.161.78.73 - [dd/mmm/yyyy:hh:mm:ss +0x00] GET /page.html HTTP/1.1 200 1234 - "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"</i><br>
      Where separators are "tab" characters or several "spaces",
      You must use : <i>LogFormat="%host %logname %time1 %method %url %other %code %bytesd %referer %uaquot"</i>
      and <i>LogSeparator="\s+"</i><br>
      
      <hr>
      <u>If you use a FTP server like <b>ProFTPd</b>:</u><br>
      See <a href="#FTP">FAQ-COM090</a>.<br>
      <hr>
      <u>If you want to analyze a mail log file (<b>Postfix</b>, <b>Sendmail</b>, <b>QMail</b>, <b>MDaemon</b>, <b>Exchange</b>):</u><br>
      See <a href="#MAIL">FAQ-COM100</a>.<br>
      
      <hr>
      <u>If you use a Media Server (<b>Realmedia</b>, <b>Windows Media Server</b>):</u><br>
      See <a href="#MEDIASERVER">FAQ-COM110</a>.<br>
      <hr>
      <u>If your log records are EXACTLY like this (With some providers):</u><br>
      <i>62.161.78.73 - - [dd/Month/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" "-" 200 1234</i><br>
      You must use : <i>LogFormat="%host %other %logname %time1 %methodurl %other %code %bytesd"</i><br>
      Note: Browsers, OS's, Keywords and Referers features are not available with a such format.<br>
      
      <hr>
      <u>There are a lot of other possible log formats.</u><br>
      You must use a personalized log format LogFormat ="..." as described in config file to
      support other various log formats.<br>
      <br><br>
      
      <a name="ROTATE"></a><br>
      <b><u>FAQ-COM120 : HOW TO ROTATE MY LOGS WITHOUT LOSING DATA</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I want to archive/rotate my logs using my server system (for example logrotate) options or a third
      software (rotatelog, cronolog) but I don't want to lose any visits information during the rotate
      process.<br>
      <font class=CSolution>SOLUTION:</font><br>
      <li> If your config file is setup with a <a href="awstats_config.html#LogFile">LogFile</a> parameter
      that point to your current running log file (required if you want to use the
      <a href="awstats_config.html#AllowToUpdateStatsFromBrowser">AllowToUpdateStatsFromBrowser</a>
      option to have "real-time" statistics), to avoid losing too much records during the rotate
      process, you must run the AWStats update JUST BEFORE the rotate process is done.<br>
      The best way to do that on 'Linux like' OS is to use the linux built-in logrotate feature. You must
      edit the logrotate config file used for your web server log file (usually stored in /etc/logrotate.d
      directory) by adding the AWStats update process as a preprocessor command, like this example (bold
      lines are lines to add for having a prerotate process):<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0 bgcolor=#F4F4F4 class=CFAQ><tr class=CFAQ><td class=CFAQ>
      /usr/local/apache/logs/*log<br>
      {<br>
      notifempty<br>
      daily<br>
      rotate 7<br>
      compress<br>
      <b>
      sharedscripts<br>
      prerotate<br>
      /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=mydomainconfig<br>
      endscript<br>
      </b>
      postrotate<br>
      /usr/bin/killall -HUP httpd<br>
      endscript<br>
      }<br>
      </td></tr></table>
      <br>
      If using a such solution, this is sequential steps that happens:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ>
      <tr class=CFAQ><td class=CFAQ><b>Step</b></td><td class=CFAQ><b>Description</b></td><td class=CFAQ><b>Step name</b></td><td class=CFAQ><b>Date/Time example</b></td></tr>
      <tr class=CFAQ valign=top><td class=CFAQ>A</td><td class=CFAQ>logrotate is started (by cron)</td><td class=CFAQ>Start of logrotate</td><td class=CFAQ>04:02:00</td></tr>
      <tr valign=top><td class=CFAQ>B</td><td class=CFAQ><ul>awstats -update is launched by logrotate</td><td class=CFAQ>Start of awstats</td><td class=CFAQ>04:02:01</td><tr>
      <tr valign=top><td class=CFAQ>C</td><td class=CFAQ><ul><ul>awstats start to read the log file <i>file.log</i></td><td class=CFAQ>&nbsp;</td><td class=CFAQ>04:02:02</td><tr>
      <tr valign=top><td class=CFAQ>D</td><td class=CFAQ><ul>awstats has reached the end of log file so now it starts to save its database on disk.</td><td class=CFAQ>&nbsp;</td><td class=CFAQ>04:05:00</td><tr>
      <tr valign=top><td class=CFAQ>E</td><td class=CFAQ><ul>awstats has finished to save its new database, so it stops</td><td class=CFAQ>End of awstats</td><td class=CFAQ>04:06:00</td><tr>
      <tr valign=top><td class=CFAQ>F</td><td class=CFAQ>logrotate moves old log file <i>file.log</i> to a new name <i>file.log.sav</i>. Apache now logs in this file <i>file.log.sav</i> since log file handle has not been changed (only log file name has been renamed).</td><td class=CFAQ>Log move</td><td class=CFAQ>04:06:01</td><tr>
      <tr valign=top><td class=CFAQ>G</td><td class=CFAQ>logrotate sends the -HUP or -USR1 signal to Apache.<br>With -HUP, Apache immediatly kills all its child process/thread, close log file <i>file.log.sav</i>, and reopen file <i>file.log</i>. So now, ALL hits are written to new file.<br>With -USR1, Apache only ask its child process/thread to stop only when HTTP request will be completely served. However it closes immediatly log file <i>file.log.sav</i>, and reopen file <i>file.log</i>. So only NEW hits are written to new log file. HTTP requests that are still running will write in old one.</td><td class=CFAQ>Apache restart</td><td class=CFAQ>04:06:02</td><tr>
      <tr valign=top><td class=CFAQ>H</td><td class=CFAQ>logrotate starts compress the old log file <i>file.log.sav</i> into <i>file.log.gz</i></td><td class=CFAQ>Start compress</td><td class=CFAQ>04:06:03</td><tr>
      <tr valign=top><td class=CFAQ>I</td><td class=CFAQ><ul>If some apache threads/processes are still running (because the kill sent was -USR1, so child process are waiting end of request before to stop), then those threads/processes are still writing to <i>file.log.sav</i>.<br>If kill -HUP was used, all process are already restarted so all writes in new <i>file.log</i>.</td><td class=CFAQ>&nbsp;</td><td class=CFAQ>&nbsp;</td><tr>
      <tr valign=top><td class=CFAQ>J</td><td class=CFAQ>logrotate has finished to compress log file into <i>file.log.gz</i>. File <i>file.log.sav</i> is deleted.</td><td class=CFAQ>End&nbsp;of&nbsp;compress<br>End&nbsp;of&nbsp;logrotate</td><td class=CFAQ>04:07:03</td><tr>
      <tr valign=top><td class=CFAQ>K</td><td class=CFAQ><ul>If signal was -USR1, some old childs can still run (when serving a very long request for example). So the log writing, still done in same file handle are going to a file that has been removed. So log writing are lost nowhere (this is only if -USR1 was used and if request was very long).</td><td class=CFAQ>&nbsp;</td><td class=CFAQ>&nbsp;</td><tr>
      </table>
      <br>
      The advantage of this solution is that it is a very common way of working, used by a lot of
      products, and easy to setup. You will notice that you can "lose" some hits:<br>
      If you use the -HUP signal, you will only lose all hits that were written during D and E.
      Note that you will also break all requests still running at G. In the example, it's a 
      1 minute lost (for small or medium web sites, it will be less than few seconds), so this
      give you an error lower than 0.07% (less for small web sites). This is not significant,
      above all for a "statistics" progam.<br>
      If you use the -USR1 signal, you will not kill any request. But you will lose all hits that
      were wrote during D and E (like with -HUP) but also all hits that are still running after H
      (all very long request that requires several minutes to be served). If hit ends during I, it is
      wrote in a log file already analyzed, if hit ends at K, it is wrote nowhere. In the example,
      it's also a 0.07% error plus error for other not visible hits that were finished during I or K,
      but number of such hits should be very low since only hits that started before G and not
      finished after H are concerned. In most cases a hits needs only few milliseconds to be served
      so lost hits could be ignored.<br>
      <br>
      Note also that if you have x logrotate config files, with each of them a postrotate with a
      kill -HUP, you send a kill x times to your server process. So try to include several log files
      in same logrotate config file. You can have several awstats update command in the same
      prerotate section and you will send the -HUP only once, after all updates are finished.
      However, doing this, you will have a lap time between D and F (were some hits are lost) that will
      be higher.<br>
      <br>
      
      <li> Another common way of working is to choose to run the AWStats update process only once the log file has been
      archived.<br>
      This is required for example if you use the <a href="http://cronolog.org" target=awstatsbis>cronolog</a>
      or rotatelog tools to rotate your log files. For example, Apache users can setup their Apache
      httpd config file to write log file through a pipe to cronolog or rotatelog using
      Apache <i>CustomLog</i> directive:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      CustomLog "|/usr/sbin/cronolog [cronolog_options] /var/logs/access.%Y%m%d.log" combined
      </td></tr></table>
      If you use a such feature, you can't trigger AWStats update process to be ran just BEFORE the
      rotate is done, so you must run it AFTER the rotate process, so on the archived log file.<br>
      To setup awstats to always point to last archive log file, you can use the 'tags' available for
      <a href="awstats_config.html#LogFile">LogFile</a>.<br>
      The problem with that is that your data are refreshed only after a rotate has done. However,
      you will miss absolutely nothing (no hits) and your server processes are never killed.<br>
      <br>
      <li> So, if you really want to not lose absolutely no hit and want to have updates more
      frequently than the rotate frequency, the best way is still an hybrid solution (i am not sure
      that it worth the pain, and remember that statistics are only statistics):<br>
      You run the awstats update process from you crontab frequently, every hour for example, and half and hour
      before the rotate has done. See next FAQ to know how to setup a scheduled job.<br>
      Then, once the rotate has been done (by the logrotate or by a piped cronolog log file), and
      before the next scheduled awstats update process start,
      you run another update process on the archived log file using the -logfile option to force
      update on the archived log file and not the current log file defined in awstats
      config file. This will allow you to update the half hour missing,
      until the log rotate (AWStats will find the new lines). However don't forget that this
      particular update MUST be finished before the next croned update.<br>
      <br>
      
      <a name="CRONTAB"></a><br>
      <b><u>FAQ-COM130 : HOW TO RUN AWSTATS UPDATE PROCESS FREQUENTLY</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      AWStats must be ran frequently to update statistics. How can I do this ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      A good way of working is to run the AWStats update process as a preprocessor of your log rotate
      process. See previous FAQ (<a href="#ROTATE">FAQ-COM120</a>) for this.<br>
      But you can also run AWStats update process regularly by a scheduler:<br>
      <br>
      <u>With Windows</u>, you can use the internal task scheduler.
      The use of this tool is not an AWStats related problem, so please take a look at your Windows manual.
      Warning, if you use <i>"awstats.pl -config=mysite -update"</i> in your scheduled task, you might
      experience problem of failing task. Try this instead<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      "C:\WINNT\system32\CMD.EXE /C C:\[awstats_path]\awstats.pl -config=mysite -update"
      </td></tr></table>
      or<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      "C:\[perl_path]\perl.exe C:\[awstats_path]\awstats.pl -config=mysite -update"
      </td></tr></table>
      A lot of other open source schedulers are often better (otherwise there is also good sharewares or freewares).<br>
      <br>
      <u>With unix-like operating systems</u>, you can use the "<b>crontab</b>".<br>
      This is examples of lines you can add in the cron file (see your unix reference manual for cron) :<br>
      To run update every day at 03:50, use :<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      50 3 * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null<br>
      </td></tr></table>
      To run update every hour, use :<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      0 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null<br>
      </td></tr></table>
      <br>
      
      <a name="EXCLUDEHOSTS"></a><br>
      <b><u>FAQ-COM140 : HOW CAN I EXCLUDE MY IP ADDRESS (OR WHOLE SUBNET MASK) FROM STATS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I don't want to see my own IP address in the stats or I want to exclude counting visits from a whole subnet.<br>
      <font class=CSolution>SOLUTION:</font><br>
      You must edit the config file to change the <a href="awstats_config.html#SkipHosts">SkipHosts</a> parameter.<br>
      For example, to exclude:<br>
      <li> your own IP address 123.123.123.123, use <a href="awstats_config.html#SkipHosts">SkipHosts</a>="123.123.123.123"<br>
      <li> the whole subnet 123.123.123.xxx, use <a href="awstats_config.html#SkipHosts">SkipHosts</a>="REGEX[^123\.123\.123\.]"<br>
      <li> all sub hosts xxx.myintranet.com, use <a href="awstats_config.html#SkipHosts">SkipHosts</a>="REGEX[\.myintranet\.com$]" (This one works only if DNS lookup is already done in your
      log file).<br>
      <br> 
      
      <a name="SCREENSIZE"></a><br>
      <b><u>FAQ-COM142 : HOW TO GET THE SCREEN SIZE AND BROWSER CAPABILITIES REPORT WORKING ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I see in the AWStats features list that it can report the screen size used by visitors and other browsers' informations,
      (like if browser support Flash, Java, Javascript, PDF, MAcromedia, Audio plugins, etc...). How can I do that ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      AWStats is a log analyzer, so to report the screen size of your visitor, we need to have information inside the log file itself.
      For this, the only way to do that, is to add some HTML tags inside some of your pages (the home page is enough to
      get use ratios). This tag will add call to a javascript that ask your browser to get a virtual URL that
      includes, in its parameters, the screen size resolution and all other informations about browser capabilities (Flash, Java, Javascript, PDF, Macromedia, Audio plgins...).<br>
      <br>
      This is the code you must add (at bottom of your home page for example) :<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      &lt;script language="javascript" type="text/javascript" src="/js/awstats_misc_tracker.js" &gt;&lt;/script&gt;<br>
      &lt;noscript&gt;&lt;img src="/js/awstats_misc_tracker.js?nojs=y" height="0" width="0" border="0" style="display: none"&gt;&lt;/noscript&gt;<br>
      </td></tr></table>
      <br>
      Note that you must also place the <i>awstats_misc_tracker.js</i> script (provided in /js directory with AWStats) inside 
      a js directory stored in your web root.<br>
      Once this is done, load your home page with your browser and go to check that inside your log file
      if you can see a line that looks like that:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      123.123.123.123 - - [24/Apr/2005:16:09:38 +0200] "GET /js/awstats_misc_tracker.js?screen=800x600&win=724x517&...&sid=awssession_id123 HTTP/1.1" 200 6237 "http://therefererwebsite.com/index.php" "Mozilla/5.0 (Linux) Gecko/20050414 Firefox/1.0.3"
      </td></tr></table>
      <br>
      If yes, you can then run the AWStats update process. Screen sizes information will be analyzed. All you have to do 
      now is to edit your config file to tell AWStats to add the report on html output. For this, change
      the <a href="awstats_config.html#Show">ShowMiscStats</a> parameter.<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      ShowMiscStats=anjdfrqwp
      </td></tr></table>
      <br>
      Note: If you change directory where <i>awstats_misc_tracker.js</i> is stored (somewhere else than the /js directory),
      you must modify, according to your change:<br>
      - the html tags added<br>
      - the line: <i>var awstatsmisctrackerurl="/js/awstats_misc_tracker.js";</i> inside the awstats_misc_tracker.js script<br>
      - the parameter <a href="awstats_config.html#MiscTrackerUrl">MiscTrackerUrl</a> inside AWStats configuration file.<br>
      <br> 
      
      <a name="EXTRA"></a><br>
      <b><u>FAQ-COM145 : HOW TO USE THE EXTRA SECTIONS FEATURES ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I want to build personalized reports not provided in default AWStats reports. How can I setup 
      the Extra Sections parameters in my AWStats config file to do so ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      Take a look at the <a href="awstats_extra.html">Using AWStats Extra Sections features</a><br>
      <br> 
      
      <a name="BENCHMARK"></a><br>
      <b><u>FAQ-COM150 : BENCHMARK / FREQUENCY TO LAUNCH AWSTATS TO UPDATE STATISTICS</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      What is AWStats speed ?<br>
      What is the frequency to launch AWStats process to update my statistics ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      All benchmarks information and advice on frequency for update process are related into
      the <a href="awstats_benchmark.html">Benchmark page</a>.<br>
      <br>
      
      <a name="DNS"></a><br>
      <b><u>FAQ-COM200 : HOW REVERSE DNS LOOKUP WORKS, UNRESOLVED IP ADDRESSES</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      The reported page AWStats shows me has no hostnames, only IP addresses, countries reported are all "unknown".<br>
      <font class=CSolution>SOLUTION:</font><br>
      When AWStats find an IP address in your log file, it tries a reverse DNS lookup to find
      the hostname and domain if the <a href="awstats_config.html#DNSLookup">DNSLookup</a> parameter, in your AWStats config file, is <a href="awstats_config.html#DNSLookup">DNSLookup</a>=1
      (Default value). So, first, check if you have the good value. The <a href="awstats_config.html#DNSLookup">DNSLookup</a>=0 
      must be used only if your log file contains already resolved IP address. For example, 
      when you set up Apache with the <i>HostNameLookups=on</i> directive. When you 
      ask your web server to make itself the reverse DNS lookup to log hostname instead 
      of IP address, you will still find some IP addresses in your log file because 
      the reverse DNS lookup is not always possible. But if your web server fails in 
      it, AWStats will also fails (All reverse DNS lookups use the same system API). 
      So to avoid AWStats to make an already done lookup (with success or not), you 
      can set <a href="awstats_config.html#DNSLookup">DNSLookup</a>=0 in AWStats config file.
      If you prefer, you can make the reverse DNS lookup on a log file before running
      your log analyzer (If you only need to convert a logfile with IP Addresses into a
      logfile with resolved hostnames). You can use for this <a href="awstats_tools.html#logresolvemerge">logresolvemerge</a> tool
      provided with AWStats distribution (This tools is an improved version of <i>logresolve</i> provided with Apache).<br>
      <br>
      
      <a name="DIFFERENT_RESULTS"></a><br>
      <b><u>FAQ-COM250 : DIFFERENT RESULTS THAN OTHER ANALYZER</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I also use Webalizer, Analog (or another log analyzer) and it doesn't report the same results than AWStats. Why ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      If you compare AWStats results with an other log file analyzer, you will found some differences,
      sometimes very important. In fact, all analyzer (even AWStats) make "over reporting" because of the
      problem of proxy-servers and robots. However AWStats is one of the most accurate and its "over reporting"
      is very low where all other analyzers, even the most famous, have a VERY HIGH error rate (10% to 200% more than reality !).<br>
      <b>This is the most important reasons why you can find important differences:</b><br>
      <li> Some dynamic pages generated by CGI programs are not counted by some analyzer (ie Webalizer) like
      a "Page" (but only like a "Hit") if CGI prog does not end with a defined extension (.cgi, ...), so they are not included
      correctly in their statistics. AWStats use on oposite policy, assuming a file is a page except if 
      type is in a list (See <a href="awstats_config.html#NotPageList">NotPageList</a> parameter). Error rate
      with a such policy is lower.<br>
      <li> Some log analyzers use the "Hits" to count visitors. This is a very bad way of working :
      Some visitors use a lot of proxy servers to surf (ie: AOL users), this means it's possible that several
      hosts (with several IP addresses) are used to reach your site for only one visitor (ie: one proxy server download
      the page and 2 other servers download all images). Because of this, if stats of unique visitors are made on "hits",
      3 users are reported but it's wrong. So AWStats considers only HTML "Pages" to count unique visitors.
      This decrease the error, not completely, because it's always possible that a proxy server download one HTML frame and
      another one download another frame, but this make the over-reporting of unique visitors less important.<br>
      <li> Another important reason to have difference is that an error log files is not always completely sorted
      but only "nearly" sorted because of cache and writing log engines used by server. Nearly all log
      analyzers (commercial and not) assumes that log file is "exactly" sorted by hit date to calculate
      visits, entry and exit pages. But there is nothing that guaranties this and some log files
      are only "nearly" sorted, above all log files on highly loaded servers.
      AWStats has an advanced parsing algorithm that is able to count 
      correctly visits, entry and exit pages even if log file is only "nearly" sorted.<br>
      <li>AWStats does not count twice (with default setup) redirects made by server "rewrite rules". Such rule makes two hits into
      log files, so most log analyzer count them twice, but only one page were "viewed".<br>
      <li> Then, there is internal bugs in log analyzers that make reports wrong.
      For example, a lot of users have reported that Webalizer "doubles" the number of visits or visitors
      in some circumstances.<br>
      <li> AWStats is able to detect robots visits. Most analyzers think robots visits are human visitors.
      This error make them to report more visits and visitors than reality.
      When AWStats reports a "1 visitor", it means "1 human visitor" (even if it's not posible to detect
      all robots, most of them are detected). "Robots visitors" are reported separately in the "Robots/Spiders visitors" chart.
      AWStats is a log analyzer with one of the most important robot database. In fact, a lot of other log analyzer
      uses an update copy of the AWStats robot database for their own use.
      However, even if a robot database is up to date, there is still some robot hits that are not possible to detect
      using log analyzing. For this reason, AWStats still report 10% more visits than reality because of such robots.
      This is the major reason that create differences between a log analyzer and a HTML tagger system like Google Analytics.<br>
      <b>Now let see other minor reasons. However those points explains only very small differences (<1%. See all previous points
      if you have more important difference):</b><br>
      <li> To differenciate new visits from same visitor, log analysers uses a visit time-out. If value differs,
      then result differs (for visit count and entry and exit pages).
      A such time-out is a fixed value (For example 60 minutes) meaning if a visitor make a hit
      59 minutes after downloading the previous page, it's the same visits, if he make it 61 minutes after, it's a new visit.
      Of course, there is no realy difference between 59 and 61, but couting visits without
      time-out is not possible. And because the most important is to have a time-out (and not
      really it's value), AWStats time-out is not an "exact" value but is "around" 60 minutes.
      This allows AWStats to have better speed processing time, so you also might experience
      little differences, in visit count, between AWStats and another log analyzer even if
      their time-out are both defined to same value (because AWStats time-out is not exactly
      but nearly value defined).<br>
      <li> There is also differences in log analyzers databases and algorithms that make details of results less or more accurate:<br>
      AWStats has a larger browsers, os', search engines and robots database, so reports concerning this are more accurate.<br>
      AWStats has url syntax rules to find keywords or keyphrases used to find your site, but AWStats has also
      an algorithm to detect keywords of unknown search engines with unknown url syntax rule.<br>
      Etc...<br>
      <br>
      If you want to check how serious your log analyzer is, try to parse the following log file.
      It's a very common log file but results will show you how bad most log analyzers are (above
      all commercial products):<br>
      <table width="95%" border=1 cellpadding=0 cellspacing=0><tr class=CFAQ><td class=CFAQ>
      <i><font style="font: 8px verdana,arial,helvetica"><pre>
      # This is a sample of log file that contains a lot of various data we can find
      # in a log file. Great sample to test reliability and accuracy of any log
      # analyzer.
      # ----------------------------------------------------------------------------
      # This sample log file contains 10 differents IPs that are :
      # Viewed traffic: 5 different true human visitors making 6 human visits
      # 21 hits on pages and 15 hits not pages (36 hits)
      # Not viewed traffic: 13 pages, 15 hits
      # ----------------------------------------------------------------------------
      # 80.8.55.1  2 visits (start at 00:00:00 and at 12:00:00 with both entry page on /)
      #            And 2 hits to add favourites but first is non root hit with error meaning it's same "add"
      # 80.8.55.2  Not a visit, only an image included into a page of an other site
      # 80.8.55.3  1 visit (and add home page to favourites)
      # 80.8.55.4  same visitor than 80.8.55.3 using aol proxy
      # 80.8.55.5  Not a visit (but bot indexing)
      # 80.8.55.6  1 visit (authenticated visitor)
      # 80.8.55.7  1 visit (authenticated visitor with space in name)
      # 80.8.55.8  Not a visit (try but failed twice with 404 and 405 error)
      # 80.8.55.9  Not a visit (but a worm attack)
      # 80.8.55.10 1 visit that come from a web page that is not a search engine
      
      80.8.55.1 - - [01/Jan/2001:00:00:10 +0100] "GET /page1.html HTTP/1.0" 200 7009 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.1 - - [01/Jan/2001:00:00:00 +0100] "GET / HTTP/1.0" 200 7009 "http://www.sitereferer/cgi-bin/search.pl?q=a" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.1 - - [01/Jan/2001:00:00:20 +0100] "GET /page2.cgi HTTP/1.0" 200 7009 "http://localhost/page1.html" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.1 - - [01/Jan/2001:00:00:25 +0100] "GET /page3 HTTP/1.0" 200 7009 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.1 - - [01/Jan/2001:00:00:30 +0100] "GET /image.gif HTTP/1.0" 200 7009 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.1 - - [01/Jan/2001:00:00:35 +0100] "GET /image2.png HTTP/1.0" 200 7009 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.1 - - [01/Jan/2001:00:00:40 +0100] "GET /dir/favicon.ico HTTP/1.0" 404 299 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.1 - - [01/Jan/2001:00:00:40 +0100] "GET /favicon.ico HTTP/1.0" 200 299 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      
      80.8.55.1 - - [01/Jan/2001:12:00:00 +0100] "GET / HTTP/1.0" 200 7009 "http://WWW.SiteRefereR:80/cgi-bin/azerty.pl?q=a" "Mozilla/4.7 [fr] (Win95; I)"
      80.8.55.1 - - [01/Jan/2001:12:00:10 +0100] "GET /page1.html HTTP/1.0" 200 7009 "-" "Mozilla/4.7 [fr] (Win95; I)"
      80.8.55.1 - - [01/Jan/2001:12:00:20 +0100] "GET /page2.cgi HTTP/1.0" 200 7009 "-" "Mozilla/4.7 [fr] (Win95; I)"
      80.8.55.1 - - [01/Jan/2001:12:00:25 +0100] "GET /page3 HTTP/1.0" 200 7009 "-" "Mozilla/4.7 [fr] (Win95; I)"
      80.8.55.1 - - [01/Jan/2001:12:00:30 +0100] "GET /image.gif HTTP/1.0" 200 7009 "-" "Mozilla/4.7 [fr] (Win95; I)"
      80.8.55.1 - - [01/Jan/2001:12:00:35 +0100] "GET /image2.png HTTP/1.0" 200 7009 "-" "Mozilla/4.7 [fr] (Win95; I)"
      80.8.55.1 - - [01/Jan/2001:12:00:40 +0100] "GET /js/awstats_misc_tracker.js HTTP/1.1" 200 4998 "-" "Mozilla/4.7 [fr] (Win95; I)"
      80.8.55.1 - - [01/Jan/2001:12:00:45 +0100] "GET /js/awstats_misc_tracker.js?screen=1024x768&cdi=32&java=true&shk=n&fla=y&rp=y&mov=n&wma=y&pdf=y&uid=awsuser_id1073036758306r9417&sid=awssession_id1073036758306r9417 HTTP/1.1" 200 4998 "-" "Mozilla/4.7 [fr] (Win95; I)"
      
      80.8.55.2 - - [01/Jan/2001:12:01:00 +0100] "GET /hitfromothersitetoimage.gif HTTP/1.0" 200 7009 "-" "Mozilla/5.0+(Macintosh;+U;+PPC+Mac+OS+X+Mach-O;+en-US;+rv:1.4)+Gecko/20030624+Netscape/7.1"
      
      80.8.55.3 - - [01/Jan/2001:12:01:10 +0100] "GET / HTTP/1.0" 200 7009 "http://www.sitereferer:81/cgi-bin/azerty.pl" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"
      80.8.55.3 - - [01/Jan/2001:12:01:15 +0100] "GET /page1.html HTTP/1.0" 200 7009 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"
      80.8.55.3 - - [01/Jan/2001:12:01:20 +0100] "GET /page2.cgi?x=a&family=a&y=b&familx=x HTTP/1.0" 200 7009 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"
      80.8.55.3 - - [01/Jan/2001:12:01:25 +0100] "GET /page3 HTTP/1.0" 200 7009 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"
      80.8.55.3 - - [01/Jan/2001:12:01:30 +0100] "GET /image.gif HTTP/1.0" 200 7009 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"
      80.8.55.3 - - [01/Jan/2001:12:01:35 +0100] "GET /image2.png HTTP/1.0" 200 7009 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"
      
      80.8.55.4 - - [01/Jan/2001:12:01:45 +0100] "GET /samevisitorthan80.8.55.3usingaolproxy.gif HTTP/1.0" 200 7009 "-" "Mozilla/3.0 (Windows 98; U) Opera 6.03"
      
      80.8.55.5 - - [01/Jan/2001:12:02:00 +0200] "GET /robots.txt HTTP/1.0" 200 299 "-" "This is an unkown user agent"
      80.8.55.5 - - [01/Jan/2001:12:02:00 +0200] "GET /mydir/robots.txt HTTP/1.0" 200 299 "-" "This is an unkown user agent"
      80.8.55.5 - - [01/Jan/2001:12:02:05 +0200] "GET /pagefromabot1.html HTTP/1.0" 200 7009 "-" "GoogleBot"
      80.8.55.5 - - [01/Jan/2001:12:02:05 +0200] "GET /pagefromabot2a.html HTTP/1.0" 200 7009 "-" "This is bot xxx"
      80.8.55.5 - - [01/Jan/2001:12:02:05 +0200] "GET /pagefromabot2b.html HTTP/1.0" 200 7009 "-" "This_is_bot_xxx"
      80.8.55.5 - - [01/Jan/2001:12:02:05 +0200] "GET /pagefromabot3.html HTTP/1.0" 200 7009 "-" "This is sucker xxx"
      80.8.55.5 - - [01/Jan/2001:12:02:05 +0200] "GET /pagefromabot4.html HTTP/1.0" 200 7009 "-" "woozweb-monitoring"
      80.8.55.5 - - [01/Jan/2001:12:02:05 +0200] "GET /pagefromabot5.html HTTP/1.0" 200 7009 "-" "wget"
      80.8.55.5 - - [01/Jan/2001:12:02:05 +0200] "GET /pagefromabot6.html HTTP/1.0" 200 7009 "-" "libwww"
      
      80.8.55.6 - john [01/Jan/2001:13:00:00 +0100] "GET /cgi-bin/order.cgi?x=a&family=a&productId=998&titi=i&y=b&y=b HTTP/1.0" 200 7009 "http://www.google.com/search?sourceid=navclient&ie=utf-8&oe=utf-8&q=ma%C3%AEtre+�l�ve" "SAGEM-myX-5m/1.0_UP.Browser/6.1.0.6.1.103_(GUI)_MMP/1.0_(Google_WAP_Proxy/1.0)"
      80.8.55.6 - john [01/Jan/2001:13:00:00 +0100] "GET /images/image1.gif HTTP/1.0" 200 364 "http://www.google.fr/search?q=cache:dccTQ_Zn4isJ:www.chiensderace.com/cgi-bin/liste_annonces.pl%3FTYPE%3D5%26ORIGINE%3Dchiensderace+labrador+chiensderace&hl=en&lr=lang_en|lang_fr&ie=UTF-8" "SAGEM-myX-5m/1.0_UP.Browser/6.1.0.6.1.103_(GUI)_MMP/1.0_(Google_WAP_Proxy/1.0)"
      80.8.55.6 - john [01/Jan/2001:13:00:00 +0100] "GET /images/image2.gif HTTP/1.0" 200 364 "http://www.google.fr/search?q=cache:dccTQ_Zn4isJ:www.chiensderace.com/cgi-bin/liste_annonces.pl%3FTYPE%3D5%26ORIGINE%3Dchiensderace+labrador+chiensderace&hl=en&lr=lang_en|lang_fr&ie=UTF-8" "SAGEM-myX-5m/1.0_UP.Browser/6.1.0.6.1.103_(GUI)_MMP/1.0_(Google_WAP_Proxy/1.0)"
      80.8.55.6 - john [01/Jan/2001:13:00:00 +0100] "GET /images/image3.gif HTTP/1.0" 200 364 "http://www.google.fr/search?q=cache:dccTQ_Zn4isJ:www.chiensderace.com/cgi-bin/liste_annonces.pl%3FTYPE%3D5%26ORIGINE%3Dchiensderace+labrador+chiensderace&hl=en&lr=lang_en|lang_fr&ie=UTF-8" "SAGEM-myX-5m/1.0_UP.Browser/6.1.0.6.1.103_(GUI)_MMP/1.0_(Google_WAP_Proxy/1.0)"
      80.8.55.6 - john [01/Jan/2001:13:00:00 +0100] "GET /images/image4.gif HTTP/1.0" 200 364 "http://www.google.fr/search?q=cache:dccTQ_Zn4isJ:www.chiensderace.com/cgi-bin/liste_annonces.pl%3FTYPE%3D5%26ORIGINE%3Dchiensderace+labrador+chiensderace&hl=en&lr=lang_en|lang_fr&ie=UTF-8" "SAGEM-myX-5m/1.0_UP.Browser/6.1.0.6.1.103_(GUI)_MMP/1.0_(Google_WAP_Proxy/1.0)"
      80.8.55.6 - john [01/Jan/2001:13:00:00 +0100] "GET /images/image5.gif HTTP/1.0" 200 364 "http://www.google.fr/search?q=cache:dccTQ_Zn4isJ:www.chiensderace.com/cgi-bin/liste_annonces.pl%3FTYPE%3D5%26ORIGINE%3Dchiensderace+labrador+chiensderace&hl=en&lr=lang_en|lang_fr&ie=UTF-8" "SAGEM-myX-5m/1.0_UP.Browser/6.1.0.6.1.103_(GUI)_MMP/1.0_(Google_WAP_Proxy/1.0)"
      
      80.8.55.7 - John Begood [01/Jan/2001:13:01:00 +0100] "GET /cgi-bin/order.cgi;family=f&type=t&productId=999&titi=i#BIS HTTP/1.0" 200 7009 "http://www.a9.com/searchkeyfroma9" "Mozilla/3.01 (compatible;)"
      80.8.55.7 - John Begood [01/Jan/2001:13:01:00 +0100] "GET /do/Show;jsessionid=6BEF030AB1677BEC333FFCC7BF4DF564?param=1477 HTTP/1.0" 200 7009 "-" "Mozilla/3.01 (compatible;)"
      
      80.8.55.8 - - [01/Jan/2001:14:01:20 +0100] "GET /404notfoundpage.html?paramnotpagefound=valparamnotpagefound HTTP/1.0" 404 0 "http://refererto404nofoundpage/pageswithbadlink.html?paramrefnotpagefound=valparamrefnotpagefound" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      80.8.55.8 - - [01/Jan/2001:14:01:20 +0100] "GET /405error.html HTTP/1.0" 405 0 "http://refererto405error/pagesfrom405.html" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
      
      80.8.55.9 - - [01/Jan/2001:15:00:00 +0200] "GET /default.ida?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.0" 404 299 "-" "-"
      80.8.55.9 - - [01/Jan/2001:15:00:00 +0200] "SEARCH / -" 411 - "-" "-"
      
      80.8.55.10 - - [01/Jan/2001:16:00:00 -0300] "GET / HTTP/1.1" 200 70476 "http://us.f109.mail.yahoo.com/ym/ShowLetter?box=Inbox&MoreYahooParams..." "Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0"
      80.8.55.10 - - [01/Jan/2001:16:00:00 -0300] "GET /index.html HTTP/1.1" 200 70476 "http://us.f109.mail.yahoo.com/ym/ShowLetter?box=Inbox&MoreYahooParams..." "Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0"
      80.8.55.10 - - [01/Jan/2001:16:00:00 -0300] "GET /index.php HTTP/1.1" 200 70476 "http://us.f109.mail.yahoo.com/ym/ShowLetter?box=Inbox&MoreYahooParams..." "Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0"
      80.8.55.10 - - [01/Jan/2001:16:00:00 -0300] "GET / HTTP/1.1" 200 70476 "http://us.f109.mail.yahoo.com/ym/ShowLetter?box=Inbox&MoreYahooParams..." "Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0"
      
      80.8.55.10 - - [01/Jan/2001:16:00:00 -0300] "GET / HTTP/1.1" 200 70476 "http://us.f109.mail.yahoo.com/ym/ShowLetter?box=Inbox&MoreYahooParams..." "Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0"
      80.8.55.10 - - [01/Jan/2001:16:30:00 -0300] "GET /page1.html HTTP/1.1" 200 70476 "http://www.freeweb.hu/icecat/filmek/film04.html" "Mozilla/5.0 (Windows; U; en-US) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"
      80.8.55.10 - - [01/Jan/2001:17:00:00 -0300] "GET /cgi-bin/awredir.pl?url=http://xxx.com/aa.html HTTP/1.1" 302 70476 "http://us.f109.mail.yahoo.com/ym/ShowLetter?box=Inbox&MoreYahooParams..." "Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0"
      </pre></i>
      </td></tr></table><br>
      <u>This is what you should find:</u><br>
      6 true human visits<br>
      5 different true visitors<br>
      1 bot visit<br>
      1 worm attack<br>
      The entry pages for true visits should be "/" (even for 80.8.55.1) or "/cgi-bin/order.cgi" but nothing else.<br>
      Note: I did not find any commercial log analyzer that can deal such a common log file correctly, so if you find, let me know !<br>
      <br>
      
      <a name="DIFFERENCE_HOURS"></a><br>
      <b><u>FAQ-COM300 : DIFFERENCE BETWEEN LOCAL HOURS AND AWSTATS REPORTED HOURS</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I use IIS and there's a difference between local hour and AWStats reported hour. For example I made a hit on a page 
      at 4:00 and AWStats report I hit it at 2:00.<br>
      <font class=CSolution>SOLUTION:</font><br>
      This is not a problem of time in your local client host.
      AWStats use only time reported in logs by your server 
      and all time are related to server hour. The problem is that IIS in some foreign 
      versions puts GMT time in its log file (and not local time). So, you have also 
      GMT time in your statistics.<br>
      You can wait that Microsoft change this in next IIS versions.
      However, Microsoft sheet Q271196 "IIS Log File Entries Have the Incorrect Date and Time Stamp" says: <br>
      <i>The selected log file format is the W3C Extended Log File 
      Format. The extended log file format is defined in the W3C 
      Working Draft WD-logfile-960323 specification by Phillip 
      M. Hallam-Baker and Brian Behlendorf. This document defines 
      the Date and Time files to always be in GMT. This behavior 
      is by design.</i><br>
      So this means this way of working might never be changed, so another chance is to use the AWStats plugin 'timezone'.
      Warning, this plugin need the perl module Time::Local and it reduces seriously AWStats speed.<br>
      To enable the plugin, uncomment the following line in your config file.<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LoadPlugin="timezone TZ"<br>
      </td></tr></table>
      where TZ is value of your signed timezone (+2 for Paris, -8 for ...)<br>
      <br>
      
      <a name="GEOIPEU"></a><br>
      <b><u>FAQ-COM320 : WHAT DOES "EU" (EUROPEAN COUNTRY)" MEAN IN GEOIP COUNTRY REPORTS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I use the <a href="awstats_contrib.html#geoip">AWStats GeoIp country plugins</a> to report countries according
      to geolocalisation of IP address.
      In country report, I have some visitors said to come from "eu (European country)". If this visitor
      come from France, does this means it is reported twice ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      No.<br>
      "eu (European country)" means we are sure that visitor come from an european country but we can't tell
      wich one. It might be a major country like France, Great Britain, Spain, Germany... like a very small one.<br>
      So, in the country report, each visitor is in one and only one group. If reported in "eu (European country)",
      it is not counted in another country, and if reported in a particular country, it is not counted in "eu (European country)",
      even if this country is in Europe.<br>
      <br>
      
      <a name="OLDLOG"></a><br>
      <b><u>FAQ-COM350 : HOW CAN I PROCESS AN OLD LOG FILE ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I want to process an old log file to include its data in my AWStats reports.<br>
      <font class=CSolution>SOLUTION:</font><br>
      You must change your <a href="awstats_config.html#LogFile">LogFile</a> parameter to point to the old log file and run
      the update (or use the -LogFile option on command line to overwrite <a href="awstats_config.html#LogFile">LogFile</a> parameter).
      The update process can only accept files in chronological order for a particular month, so if you
      have already processed a recent file and forgot to run update
      on a log file that contains older data, you must reset all of
      your statistics (see <a href="#FAQ-COM500">FAQ-COM500</a>) and restart all of the update processes
      for all past log files and in chronological order.<br>
      However, there is a "tip" that allows you to rebuild only the month were you missed data:<br>
      Imagine we are on 5th of July 2003, all your statistics are up to date except for the 10th of
      April 2003 (you forgot to run the update process for this day, so there is no visit for this
      day). You can :<br>
      - Reset the statistics for April only (this means remove the file <i>awstats042003.[config.]txt</i>
      as explained in <a href="#FAQ-COM500">FAQ-COM500</a>),<br>
      - Move the statistics history files for the month after April (file <i>awstats052003.[config.]txt</i>,
      <i>awstats062003.[config.]txt</i>,...) into a temp directory (so that it is no longer in the DirData
      directory; as if they were deleted).<br>
      - Run the update process on all log files for April (in chronological order). AWStats does not
      complain about "too old record" because there is no history files in DirData directory
      that contains compiled data more recent than records into log you process.<br>
      - Moved back the month history files you saved into your DirData directory.<br>
      Your statistics are up to date and the missing days are no longer missing.<br>
      <br>
      
      <a name="MULTILOG"></a><br>
      <b><u>FAQ-COM360 : HOW CAN I PROCESS SEVERAL LOG FILES IN ONE RUN ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      How can I update my statistics for several log file, in one run ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      A solution should be to setup your config file with something like:<br>
      <i>LogFile=mylog*.log</i><br>
      However, with such a syntax, AWStats can't know in wich order processing log files (wich log file is the first, next or last). So
      to work like this you must use the following syntax:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="/pathto/logresolvemerge.pl mylog*.log |"<br>
      </td></tr></table>
      <br>
      <a href="awstats_tools.html#logresolvemerge">Logresolvemerge</a> is a tool provided with
      AWStats (in tools directory) that merges several log files on the fly. It opens a pointer on each file
      and sends, line by line, the oldest record from this. Using such a tool as a pipe source for AWStats <a href="awstats_config.html#LogFile">LogFile</a>
      parameter is a very good solution because, it allows you to merge log files whatever their size
      with no memory use, no hard disk use (no temporary files built), it is fast, it prevents
      you from a bad order if your log files are not correctly ordered, etc...<br>
      This tool can also be used to process log files from load balanced systems (see <a href="awstats_faq.html#LOADLOG">FAQ-COM400</a>)<br>
      <br>
      
      <a name="LOADLOG"></a><br>
      <b><u>FAQ-COM400 : HOW CAN I UPDATE MY STATISTICS WHEN I USE A LOAD BALANCING SYSTEM THAT SPLITS MY LOGS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      How can I update my statistics when i use a load balancing system that split my logs ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      First solution is to merge all split log files resulted from all your load balanced servers into one. For this, you can use
      the <a href="awstats_tools.html#logresolvemerge">logresolvemerge</a> tool provided with AWStats :<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      logresolvemerge.pl file1.log file2.log ... filen.log &gt; newfiletoprocess.log
      </td></tr></table>
      And setup the <a href="awstats_config.html#LogFile">LogFile</a> parameter in your config file to process the <i>newfiletoprocess.log</i> file or use
      the <i>-LogFile</i> command line option to overwrite <a href="awstats_config.html#LogFile">LogFile</a> value.<br>
      <br>
      As an other solution, if you miss disk space, or to save time, you can ask <a href="awstats_tools.html#logresolvemerge">logresolvemerge</a>
      to merge log files on the fly during the AWStats update process. For this, you can use the following syntax in your AWStats config file:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      LogFile="/pathto/logresolvemerge.pl file*.log |"<br>
      </td></tr></table>
      <br>
      See also <a href="awstats_faq.html#MULTILOG">FAQ-COM360</a> for explanation on logresolvemerge use.<br>
      <br>
      
      <a name="RESET"></a><br>
      <b><u>FAQ-COM500 : HOW CAN I RESET ALL MY STATISTICS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I want to reset all my statistics to restart the update process from the beginning.<br>
      <font class=CSolution>SOLUTION:</font><br>
      All analyzed data are stored by AWStats in history files called <i>awstatsMMYYYY.[config.]txt</i> (one file each month).
      You will find those files in directory defined by <a href="awstats_config.html#DirData">DirData</a> parameter (same directory than awstats.pl by default).<br>
      To reset all your statistics, just delete all files <i>awstatsMMYYYY.txt</i><br>
      To reset all your statistics built for a particular config file, just delete all files <i>awstatsMMYYYY.myconfig.txt</i><br>
      Warning, if you delete those data files, you won't be able to recover your stats back, unless you
      kept old log files somewhere. You will have to process all past log files (in chronological order)
      to get your statistics back.<br>
      <br>
      
      <a name="DAILY"></a><br>
      <b><u>FAQ-COM600 : HOW CAN I COMPILE AND BUILD STATISTICS ON A DAILY BASIS ONLY ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      How can I compile and build statistics on a daily basis. I mean i want to have a full report
      with all charts with data for a particular day only and want one report for each day of month.<br>
      <font class=CSolution>SOLUTION:</font><br>
      <b>If you use version 6.5 or higher:</b><br>
      <u>To build statistics:</u><br>
      What you can do is rerun the update process by adding the parameter <i>-databasebreak=hour</i> or <i>-databasebreak=day</i>.
      Providing no option is similar than using <i>-databasebreak=month</i>, the default and old behaviour of AWStats.<br>
      Using this hidden option will ask AWStats to build a different database file for each break entity,
      this means that several reports are done for each hour or day, depending on option used.<br>
      <u>To read a report:</u><br>
      Add same option <i>-databasebreak=hour</i> or <i>-databasebreak=day</i> with <i>-output</i> option
      when AWStats report is staticaly built from command line, or add <i>&amp;databasebreak=hour</i> or
      <i>&amp;databasebreak=day</i> if AWStats is called as a CGI.
      Also, complete options month and year used to choose month and year of report with other option
      <i>day</i> (when databasebreak option is 'day' or 'hour') and <i>hour</i> (only when databasebreak is 'hour')<br>
      So use <i>-day=XX</i> and/or <i>-hour=XX</i> when AWStats is run from command line. Use <i>&amp;day=XX</i> and/or <i>&amp;hour=XX</i>
      if AWStats is called as a CGI.<br> 
      This feature is recent so may have results not completely reliable, that's why it is not yet
      fully documented.<br>
      <b>If you use version 6.4 or older:</b><br>
      This is an non documented and not supported trick, as this is not the standard way of working:<br>
      First, run the update process at midnight (or on a log file that was rotated at midnight so that
      it contains only data for this particular day (you can choose another hour in night if you want
      to have days that "start" at an different hour).<br>
      Once the update process has been ran, MOVE (and not copy) the history file built by AWStats. For
      example on Unix like systems:<br>
      <i>mv &nbsp; mydirdata/awstatsMMYYYY.mydomain.txt &nbsp; mydirdate/awstatsDDMMYYYY.mydomain.txt</i><br>
      Note that the name has been changed by adding the day. Repeat this each day after the update process.<br>
      With this you will have one history file for each day. You can then see full stats for
      a particular day by adding the non documented parameter -day=DD on command line (with others
      like -month=MM and -year=YYYY). If ran from a browser you can also add &day=DD on URL.<br>
      However, if you have full day by day statistics, you don't have anymore statistics for full month,
      except if you create a second config file that whose history files would not be moved.<br>
      <br>
      
      <a name="EDITHISTORY"></a><br>
      <b><u>FAQ-COM700 : CAN I SAFELY REMOVE A LINE IN HISTORY FILES (awstatsMMYYYY*.txt) ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      After processing a log file I want to change my statistics
      without running AWStats update process but changing directly data in AWStats historical database files.<br>
      <font class=CSolution>SOLUTION:</font><br>
      If you remove a lines starting with "BEGIN_" or "END_", AWStats will find your file "corrupted" so you must not change those
      two kinds of lines.<br>
      You can change, add or remove any line that is in any sections but if you do this, you must
      also update the MAP section (lines between BEGIN_MAP and END_MAP) because this section contains the offset in
      file of each other sections for direct I/O access.
      If history file is the last one, you can easily do that by removing completely the MAP section and run an update process.
      Like that AWStats will rewrite the history file and the MAP section will be rewritten (MAP section is not read by
      update process, only written). You do this at your own risk. The main risk is that some charts will report wrong values
      or be unavailable.<br>
      <br>
      
      
      <hr><br>
      
      
      <a name="MISSINGDOLLAR"></a><br>
      <b><u>FAQ-SET050 : ERROR "MISSING $ ON LOOP VARIABLE ..."</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      When I run awstats.pl from command line, I get:<br>
      <i>"Missing $ on loop variable at awstats.pl line xxx"</i><br>
      <font class=CSolution>SOLUTION:</font><br>
      Problem is in your Perl interpreter. Try to install or reinstall a more recent/stable Perl interpreter.<br>
      You can get new Perl version at <a href="http://www.activestate.com/ActivePerl/">ActivePerl</a> (<font color=#221188>Win32</font>)
      or <a href="http://www.perl.com/pub/language/info/software.html">Perl.com</a> (<font color=#221188>Unix/Linux/Other</font>).<br>
      <br>
      
      <a name="CGISOURCE"></a><br>
      <b><u>FAQ-SET100 : I SEE PERL SCRIPT'S SOURCE INSTEAD OF ITS EXECUTION</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      When I try to execute the Perl script through the web server,
      I see the Perl script's source instead of the HTML result page of its execution !<br>
      <font class=CSolution>SOLUTION:</font><br>
      This is not a problem of AWStats but a problem in your web server setup.
      awstats.pl file must be in a directory defined in your web server to be a "cgi" directory,
      this means, a directory configured in your web server to contain "executable" files and
      not to documents files.
      You have to read your web server manual to know how to setup a directory to be an
      "executable cgi" directory (With IIS, you have some checkbox to check in directory
      properties, with Apache you have to use the "ExecCGI" option in the directory "Directive").<br>
      <br>
      
      <a name="SPAWNERROR"></a><a name="INTERNAL"></a><br>
      <b><u>FAQ-SET150 : INTERNAL ERROR 500 IN MY BROWSER</u></b><br>
      <b><u>FAQ-SET200 : ERROR "... COULDN'T CREATE/SPAWN CHILD PROCESS..."</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      AWStats seems to run fine at the command prompt but when ran as a CGI from a browser, I get an <i>"Internal Error 500"</i>.<br>
      I also also might have the following message in my Apache error log file (or in browser with Apache 2.0+):<br>
      <i>...couldn't create/spawn child process: c:/mywebroot/cgi-bin/awstats.pl</i><br>
      <font class=CSolution>SOLUTION:</font><br>
      First, try to run awstats.pl from command line to see if file is correct. If you get some
      syntax errors and use a Unix like OS, check if your file is a Unix like text file (This
      means each line end with a LF char and not a CR+LF char).<br>
      If awstats.pl file runs correctly from command line, this is probably because your
      web server is not able to known how to run perl scripts. This problem can occur with Apache web
      servers with no internal Perl interpreter (mod_perl not active). To solve this, you must
      tell Apache where is your external Perl interpreter.<br>
      <u>For this, you have 2 solutions:</u><br>
      1) Add the following directive in your Apache <b>httpd.conf</b> config (or remove the # to uncomment it if line is already available)<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      ScriptInterpreterSource registry
      </td></tr></table>
      Then restart Apache. This will tell Apache to look into the registry to find the program associated to .pl extension.<br>
      2) Other solution (not necessary if first solution works): Change the first line of awstats.pl file with the full path of your Perl interpreter.<br>
      Example with Windows OS and ActivePerl Perl interpreter (installed in C:\Program Files\ActiveState\ActivePerl),
      you must change the first line of awstats.pl file with:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      #!c:/program files/activestate/activeperl/bin/perl
      </td></tr></table>
      <br>
      
      <a name="CRASH"></a><a name="CRASH"></a><br>
      <b><u>FAQ-SET220 : CRASH WHILE RUNNING AWSTATS.PL OR PAGE CONTENT ONLY PARTIALY LOADED ON WINDOWS XP</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      Sometimes my browser (Most often IE6) crash while running awstats.pl with some AWStats configuration.
      With some other versions or browsers, page content is partialy loaded.<br>
      <font class=CSolution>SOLUTION:</font><br>
      Problem was with WinXP and WinXPpro as documented at MS site Q317949;<br>
      "Socket Sharing Creates Data Loss When Listen and Accept Occur on Different Processes"<br>
      Result was that MSIE would crash or display nothing. Netscape and Opera handled the socket better but displayed the pages partially.<br>
      The effect of the bug was more prononced as the page contents increased (above 30k).<br>
      <a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;q317949">http://support.microsoft.com/default.aspx?scid=kb;EN-US;q317949</a><br>
      And also at Apache.org<br>
      <a href="http://www.apache.org/dist/httpd/binaries/win32/">http://www.apache.org/dist/httpd/binaries/win32/</a><br>
      MS produced a Hotfix which is now included in SP1.<br>
      But the best solution is to use a better web browser. Take a look at <a href="http://www.mozilla.org/products/firefox/">Firefox</a>,
      one of the best and most popular web browser.<br>
      <br>
      
      <a name="CORRUPTEDDROPPED"></a><br>
      <b><u>FAQ-SET270 : ONLY CORRUPTED OR DROPPED RECORDS</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      After running an AWStats update process, all my records are reported to be corrupted or dropped<br>
      <font class=CSolution>SOLUTION:</font><br>
      First, if you have only a small percent of corrupted or dropped records, don't worry. This
      is a normal behaviour. Few corrupted or dropped records can appear in a log file because of
      internal web server bug, virus attack, error writing, log purge or rotate during a writing, etc...<br>
      However, if ALL your records are reported to be corrupted or dropped, check the following things:<br>
      If they are all dropped, run the update process from command line adding the option -showdropped<br>
      -> You will be able to know why a dropped record is discarded. In most cases, this is because you use a 
      too large or bad filter parameter (SkipFiles, SkipHosts, OnlyFiles ...).<br>
      If they are all corrupted, run the update process from command line adding the option -showcorrupted<br>
      -> You will be able to know why a corrupted record is discarded.<br>
      If this is because of the log format, check the <a href="#EMPTY_STATS">FAQ-SET350</a> about log format errors.<br>
      If this is because the date of a record is said to be lower than date of previous, this means 
      that you ran update processes on different log files without keeping the chronological order
      of log files.<br>
      If this is because the date is invalid, you might have a problem of date not computed correctly
      this it happens in some Pentium4/Xeon4 processors:<br>
      On some (few) Intel Pentium4 (also Xeon4) based host systems, log file time can not be computed
      correctly. This is not an issue of AWStats itself. This error usually occurs on source-based linux
      distributions (gentoo, slackware etc.), where all system libraries are compiled with CPU optimization.
      AWStats is a highly developed PERL application. PERL itself relies on some system libraries,
      for example GLIBC. The GLIBC library usually is buggy in this case. There is an easy way to figure
      out whether the problem described here is responsible for AWStats problems on your system:<br>
      If you have shell access to your machine, simply type the following command:<br>
      <i>perl -e "print int ('541234567891011165415658')"</i><br>
      (NOTE: any 25-digit number works, there is no need to type this exact number)<br>
      If everything goes fine, you should see a floating point number as output:<br>
      <i>5.41234567891011e+23</i><br>
      In this case, please do more research on your log file formats. Your host system itself is not
      responsible for the error.<br>
      But if simply a "0" returns or some other error, this is an indication of your glibc beeing corrupt.<br>
      ATTENTION: The only solution in this case might be to recompile your GLIBC. This can be a quite tricky
      task. Please consult the documentation and F.A.Q.s of your linux distribution first!! (experts: first
      check your global compile flags, eg. march=Pentium4. Trying with other compile flags can solve problem
      quickly in some cases.<br>
      NOTE: In some cases, this error might occur "suddenly", even though AWStats was already running
      perfect already.<br>
      <br> 
      
      <a name="NOTSAMENUMBER"></a><br>
      <b><u>FAQ-SET280 : ERROR "NOT SAME NUMBER OF RECORDS OF..."</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      When I run AWStats from command line (or as a cgi from a browser), I get
      a message "Not same number of records of ...".<br>
      <font class=CSolution>SOLUTION:</font><br>
      This means your AWStats reference database files (operating systems, browsers, robots...) are not correct.
      First try to update to last version. Then check in your disk that you have only ONE of those files. They should be
      in '<b>lib</b>' directory ('db' with 4.0) where awstats.pl is installed:<br>
      <i>browsers.pm</i><br>
      <i>browsers_phone.pm</i><br>
      <i>domains.pm</i><br>
      <i>operating_systems.pm</i><br>
      <i>robots.pm</i><br>
      <i>search_engines.pm</i><br>
      <i>worms.pm</i><br>
      <i>status_http.pm</i><br>
      <i>status_smtp.pm</i><br>
      <br>
      
      <a name="COULDNOTOPEN"></a><br>
      <b><u>FAQ-SET300 : ERROR "COULDN'T OPEN FILE ..."</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I have the following error:<br>
      <i>"Couldn't open file /workingpath/awstatsmmyyyy.tmp.9999: Permission denied."</i><br>
      <font class=CSolution>SOLUTION:</font><br>
      This error means that the web server didn't succeed in writing the working temporary file (file ended by .tmp.9999 
      where 9999 is a number) because of permissions problems.<br>
      First check that the directory <i>/workingpath</i> has "Write" permission for<br>
      user <u>nobody</u> (default user used by Apache on Linux systems)<br>
      or user <u>IUSR_<i>SERVERNAME</i></u> (default used user by IIS on NT).<br>
      With Unix, try with a path with no links.<br>
      With NT, you must check NTFS permissions ("Read/Write/Modify"), if your directory is on a NTFS partition.<br>
      With IIS, there is also a "Write" permission attribute, defined in directory properties 
      in your IIS setup, that you must check.<br>
      With IIS, if a default cgi-bin directory was created during IIS install, try to 
      put AWStats directly into this directory.<br>
      If this still fails, you can change the DirData parameter to say AWStats 
      that you want to use another directory (A directory you are sure that the default 
      user, used by web server process, can write into).<br>
      <br>
      
      <a name="MALFORMEDUTF8"></a><br>
      <b><u>FAQ-SET320 : ERROR "MALFORMED UTF-8 CHARACTER (UNEXPECTED ..."</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      When running AWStats from command line, I get one or several lines like this
      on my output:<br>
      <i>Malformed UTF-8 character (unexpected non-continuation byte 0x6d, immediately after start byte 0xe4) at /www/cgi-bin/lib/xxx.pm line 999.</i>
      <br>
      <font class=CSolution>SOLUTION:</font><br>
      This problem appeared with RedHat 8 and Perl 5.8.<br>
      I don't know if RedHat provides a fix for this, but some users had reported that you can
      remove thoose warmless messages by changing your LANG environment variable, removing
      the ".UTF-8" at the end. For example, set <i>LANG="en_US"</i> instead of <i>LANG="en_US.UTF8"</i><br>
      <br>
      
      <a name="EMPTY_STATS"></a><br>
      <b><u>FAQ-SET350 : EMPTY OR NULL STATISTICS REPORTED</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      AWStats seems to work but I'm not getting any results. i get a statistics page that looks like i have no hits.<br>
      <font class=CSolution>SOLUTION:</font><br>
      That's one of the most common problem you can get and there is 3 possible reasons :<br>
      <br>
      1) Your log file format setup might be wrong.<br>
      <u>If you use Apache web server</u><br>
      The best way of working is to use the <i>"combined"</i> log format (See the <a href="awstats_setup.html">Setup and Use</a> page
      to know the way to change your Apache server log from <i>"common"</i> log format into <i>"combined"</i>).
      Don't forget to stop Apache, reset your log file and restart Apache to make change into combined
      effective. Then you must setup your AWStats config file with value <a href="awstats_config.html#LogFormat">LogFormat</a>=1.<br>
      If you want to use another format, read the next FAQ to have examples of LogFile value according
      to log files format.<br>
      <u>If you use IIS server or Windows built-in web server</u><br>
      The Internet Information Server default W3C Extended Log Format will not work correctly with AWStats.
      To make it work correctly, start the IIS Snap-in, select the web site and look at it's Properties.
      Choose W3C Extended Log Format, then Properties, then the Tab Extended Properties and uncheck everything
      under Extended Properties. Once they are all unchecked, check off the list given in
      the <a href="awstats_setup.html">Setup and Use</a> page ("With IIS Server" chapter).<br>
      You can also read the next FAQ to have examples of <a href="awstats_config.html#LogFormat">LogFormat</a> value according to log files format.<br>
      <br>
      2) You are viewing stats for a year or month when no hits was made on your server.<br>
      When you run awstats, the reports is by default for the current month/year.<br>
      If you want to see data for another month/year you must:<br>
      Add -year=YYYY -month=MM on command line when building the html report page from command line.<br>
      Use an URL like http://myserver/cgi-bin/awstats.pl?config=xxx&year=YYYY&month=MM if viewing stats with AWStats used as a CGI.<br>
      <br>
      3) When you read your statistics, AWStats does not use the same config file than the one
      used for the update process. Scan your disk for files that match <i>awstats.*conf</i> and remove
      all files that are not the config file(s) you need (awstats.conf files, if found, can be deleted.
      It is better to use a config file called awstats.mydomain.conf).<br>
      <br>
      
      <a name="PARTIAL_STATS"></a><br>
      <b><u>FAQ-SET360 : STATISTICS REPORTED EXCEPT FOR OS, BROWSERS, ROBOTS AND KEYWORDS/KEYPHRASES</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      AWStats seems to report my statistics however some charts, like robots, os', browsers, search engines,
      or keywords/keyphrases are empty.<br>
      <font class=CSolution>SOLUTION:</font><br>
      If only robots, search engines or keywords/keyphrases are empty, this simply means your web site was not
      yet visited by any robots and noone found your site using a search engines (this happens particularly
      for Intranet which are not referenced on search engines).
      If all of them are empty or with only unknown values, even after several updates, this probably means
      that your logfile does not contains all informations, this happens with Apache when using the
      standard <i>"common"</i> log format instead of the standard <i>"combined"</i> log format.<br>
      You may also use LogFormat=4 into your AWStats config files instead of 1.<br>
      Read AWStats setup documentation to known how to setup your Apache Web server to report logs in
      a "combined" log format then set <a href="awstats_config.html#LogFormat">LogFormat</a>=1 into your
      AWStats config file.<br>
      <br>
      
      <a name="REDIRECT"></a><br>
      <b><u>FAQ-SET400 : PIPE REDIRECTION TO A FILE GIVE ME AN EMPTY FILE</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I want to redirect awstats.pl output to a file with the following command :<br>
      &gt;awstats.pl -config=... [other_options] > myfile.html<br>
      But myfile.html is empty (size is 0). If i remove the redirection, everythings works correctly.<br>
      <font class=CSolution>SOLUTION:</font><br>
      This is not an AWStats bug but a problem between Perl and Windows.<br>
      You can easily solve this running the following command instead:<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      perl awstats.pl -config=... [other_options] > myfile.html
      </td></tr></table>
      <br>
      
      <a name="NO_ICON"></a><br>
      <b><u>FAQ-SET450 : NO PICTURES/GRAPHICS SHOWN</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      AWStats seems to work (all data and counters seem to be good) but I have no image shown.<br>
      <font class=CSolution>SOLUTION:</font><br>
      With Apache web server, you might have troubles (no picture shown on stats page) if you use a directory called "icons" (because of Apache
      pre-defined "icons" alias directory), so use instead, for example, a directory called "icon"  with
      no s at the end (Rename your directory physically and change the <a href="awstats_config.html#DirIcons">DirIcons</a> parameter in config file
      to reflect this change).<br>
      <br>
      
      <a name="MIGRATEDOUBLED"></a><br>
      <b><u>FAQ-SET700 : MY VISITS ARE DOUBLED FOR OLD MONTH I MIGRATED FROM 3.2 TO 5.X</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      After having migrated an old history file for a month, the number of visits for this month is doubled.
      So the number of "visits per visitor" is also doubled and "pages per visit" and "hits per visit" is divided by 2.
      All other data like "pages", "hits" and bandwith are correct.<br>
      <font class=CSolution>SOLUTION:</font><br>
      This problem occurs when migrating history files from 3.2 to 5.x.<br>
      To fix this you can use the following tip (warning, do this only after migrating from
      3.2 to 5.x and if your visit value is doubled). The goal is to remove the line
      in history file that looks like this<br>
      <i>YYYYMM00 999 999 999 999</i><br>
      where YYYY and MM are year and month of config file and 999 are numerical values.<br>
      <br>
      <b>So if your OS is Unix/Linux</b><br>
      <i>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      grep -vE '^[0-9]{6}00' oldhistoryfile > newhistoryfile<br>
      mv newhistoryfile oldhistoryfile<br>
      </td></tr></table>
      </i>
      And then run the migrate process again on the file.<br>
      <br>
      <b>If your OS is windows and got cygwin</b><br>
      You must follow same instructions than if OS is Unix/Linux BUT
      you must do this from a cygwin 'sh' shell and not from the DOS
      prompt (because the ^ is not understanded by DOS).<br>
      And then run the migrate process again on the file.<br>
      <br>
      <b>In any other case (in fact works for every OS)</b><br>
      You must remove manually the line <i>YYYYMM00 999 999 999 999</i> (must find one and only
      one such line) and then run the migrate process again on the file.<br>
      <br>
      
      <a name="OUTOFMEMORYCYGWIN"></a><br>
      <b><u>FAQ-SET750 : AWSTATS RUN OUT OF MEMORY DURING UPDATE PROCESS WITH CYGWIN PERL</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      When I run the update process on a large log file with cygwin Perl, AWStats run out of memory
      but I am sure that I have enough memory to run AWStats according to the 'memory' column in
      benchmark chart available in AWStats documentation (<a href="awstats_benchmark.html">benchmark page</a>).<br>
      <font class=CSolution>SOLUTION:</font><br>
      It might be a limit inside Cygwin Perl.
      Try to increase the Cygwin parameter <i>heap_chunk_in_mb</i>.<br>
      <br>
      
      <a name="SPEED"></a><br>
      <b><u>FAQ-SET800 : AWSTATS SPEED/TIMEOUT PROBLEMS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      When I analyze large log files, processing times are very important (Example: update process from a browser
      returns a timeout/internal error after a long wait).
      Is there a setup or things to do to avoid this and increase speed ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      You really need to understand how a log analyzer works to have good speed.
      There is also major setup changes you can do to decrease your processing time.<br>
      See <a href="awstats_benchmark.html#ADVICES">important advices</a> in benchmark page.<br>
      <br>
      
      
      <hr><br>
      
      
      <a name="CSSATTACK"></a><br>
      <b><u>FAQ-SEC100 : CAN AWSTATS BE USED TO MAKE CROSS SITE SCRIPTING ATTACKS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      If a bad user use a browser to make a hit on an URL that include a < SCRIPT > ... < /SCRIPT >
      section in its parameter, when AWStats will show the links on the report page, does the script will be executed ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      No. AWStats use a filter to remove all scripts codes that was included in an URL to make a Cross Site Scripting Attack using a
      log analyzer report page.<br>
      <br>
      
      <a name="SECUSER"></a><br>
      <b><u>FAQ-SEC150 : HOW CAN I PREVENT SOME USERS TO SEE STATISTICS OF OTHER USERS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      I don't want a user xxx (having a site www.xxx.com) to see statistics of user yyy (having
      a site www.yyy.com). How can i setup AWStats for this ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      Take a look at the <a href="awstats_security.html">security page</a>.<br>
      <br>
      
      <a name="WORMS"></a><br>
      <b><u>FAQ-SEC200 : HOW TO MANAGE LOG FILES (AND STATISTICS) CORRUPTED BY 'WORMS' ATTACKS ?</u></b><br>
      <font class=CProblem>PROBLEM:</font><br>
      My site is attacked by some worms viruses (like Nimba, Code Red...). This make my log file corrupted
      and full of 404 errors. So my statistics are also full of 404 errors. This make AWStats slower and my history files very large.
      Can I do something to avoid this ?<br>
      <font class=CSolution>SOLUTION:</font><br>
      Yes.<br>
      'Worms' attacks are infected browsers, robots or server changed into web client that make hits on your site using a very long
      unknown URL like this one:<br>
      <i>/default.ida?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%40%50...%40%50</i><br>
      URL is generated by the infected robot and the purpose is to exploit a vulnerability of the web server (In most cases, only IIS is vulnerable).
      With such attacks, you will will always find a 'common string' in those URLs.
      For example, with Code Red worm, there is always default.ida in the URL string. Some other worms send URLs with cmd.exe in it.<br>
      With 6.0 version and higher, you can set the <a href="awstats_config.html#LevelFor">LevelForWormsDetection</a>
      parameter to "2" and <a href="awstats_config.html#Show">ShowWormsStats</a> to "HBL" in 
      config file to enable the worm filtering nd reporting.<br>
      However, this feature reduce seriously AWStats speed and the worms database (lib/worms.pm file) can't contain
      all worms signatures. So if you still have rubish hits, you can modify the worms.pm file yourself or
      edit your config file to add in the <a href="awstats_config.html#SkipFiles">SkipFiles</a> parameter some
      values to discard the not required records, using a regex syntax like example :<br>
      <table border=1 cellpadding=1 cellspacing=0 bgcolor=#F4F4F4 width="95%" class=CFAQ><tr class=CFAQ><td class=CFAQ>
      SkipFiles="REGEX[^\/default\.ida] REGEX[\/winnt\/system32\/cmd\.exe]"<br>
      </td></tr></table>
      <br>
      
      <hr>
      
      <!-- You can remove this part if you distribution need documentation without external tags -->
      <!-- BEGIN_SOCIAL_NETWORKS -->
      <div class="htmldoc-ignore">
      <!-- google plus -->
      <span style="color: #bbb; font-weight: normal;">Article written by <a href="https://plus.google.com/+LaurentDestailleur?rel=author" rel="author" style="color: #ccc; font-weight: normal;">Laurent Destailleur</a>.</span><br>
      <br>
      <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
      <g:plusone></g:plusone>
      <!-- facebook -->
      <div id="fb-root"></div>
      <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));</script>
      <div class="fb-like" data-href="http://www.awstats.org/docs/awstats_faq.html" data-layout="button_count" data-action="recommend" data-show-faces="false" data-share="true"></div>
      <br>
      <!-- twitter -->
      <a href="https://twitter.com/awstats_project" class="twitter-follow-button" data-show-count="false">Follow @awstats_project</a>
      <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
      </div>
      <!-- END_SOCIAL_NETWORKS -->
      
      
      </body>
      </html>
      
      ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/styles.css�������������������������������������������������������������������������0000640�0001750�0001750�00000002305�12410217071�013642� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������body { 
      	background-color: #FFFFFF;
      	font: 14px verdana,arial;
      	font-family: sans-serif;
      	margin-top: 4;
      	margin-bottom: 4;
      	margin-right: 6;
      	margin-left: 6;
      }
      a:link   	{ font: 14px verdana,arial; color: #2200C0; font-family: sans-serif; text-decoration: none; }
      a:visited	{ font: 14px verdana,arial; color: #2200C0; font-family: sans-serif; text-decoration: none; }
      a:active	{ font: 14px verdana,arial; color: #2200C0; font-family: sans-serif; text-decoration: none; }
      a:hover		{ font: 14px verdana,arial; color: #2200C0; font-family: sans-serif; text-decoration: underline; }
      
      .CHead 			{ background-color: #9999CC; }
      .CTextAreaConf	{ font: 11px verdana,arial; color: #202020; font-family: sans-serif; text-decoration: none; }
      
      td.CFAQ		{ font: 14px verdana,arial; color: #000000; font-family: sans-serif; text-decoration: none; }
      .CProblem	{ font: 14px verdana,arial; color: #660000; font-family: sans-serif; text-decoration: none; }
      .CSolution	{ font: 14px verdana,arial; color: #448866; font-family: sans-serif; text-decoration: none; }
      
      input     {
      	font-family: arial,verdana,helvetica, sans-serif;
      	font-weight: normal;
      	border: 1px solid #AAAACC;
      	background-position : bottom;
          font: 12px verdana,arial;
      }
      ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/awstats_changelog.txt��������������������������������������������������������������0000640�0001750�0001750�00000157360�12416230535�016065� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������AWStats Changelog
      -----------------
      
      ***** 7.4 *****
      
      New features:
      - Add debian patch debian-patches-1019_allow_frame_resize.patch to add
        option nboflastupdatelookuptosave on command line.
      - #199 Added geoip6 plugin with support for IPv4 AND IPv6.
      - Work with Amazon AWS log files (using %time5 tag). 
      
      Fixes:
      - Fixes permission on some .pl scripts.
      - #205 GetResolvedIP_ipv6 does not strip trailing dot.
      - #496 tools scripts should print warnings and errors to STDERR.
      - #919 Referrals not getting tracked due to improperly getting flagged as a search.
      - Add debian patch 0007_russian_lang.patch.
      - Add debian patch 2001_awstatsprog_path.patch.
      - #921 Failure in the help text for geoip_generator.pl
      - #909 awstats_buildstaticpages.pl noisy debug output.
      - #680 Invalid data passed to Time::Local causes global destruction.
      - #212 Fix CVE-2006-2237
      
      
      ***** 7.3 *****
      
      New features:
      - Add command line option -version
      - Better error management of geoip modules.
      - Update domains, robots and search engines database:
      - #877 Windows 8 + iOS Support in AWStats
      - Detection of 8.1 and IE11.
      
      Fixes:
      - When using builddate option of script awstats_buildstaticpages,
        static link is wrong.
      - Restore detection of Opera browsers versions.
      - #838 GeoIP Cities page doesnt work.
      - Add missing icons.
      - #881 Avoid warning mixed http/https with module graphgooglechartapi.
      - #918 $MinHit{'Host'} rather than $MinHit{'Login'} used in sub HTMLShowLogins.
       
      Other:
      - Move version system to sourceforge Git instead of CVS.
      
      
      ***** 7.2 *****
      
      New features:
      - Upgrade licence to GPL v3+.
      - Update documentation.
      - Support modCloudFlareIIS.
      
      Fixes:
      - Since updating Webmin to 1.53, the Add New Config File screen layout is
        totally messed up and unusable.
      - Update broken links to maxmind.
      
      
      ***** 7.1.1 *****
      
      New features:
      - Add windows 8 detection
      - Add support of %time5 for iso date times.
      - Fix problems with Perl 5.14
      
      
      ***** 7.1 *****
      
      New features/improvements:
      - Update translations.
      - Update browsers list.
      - Add example of nginx setup.
      - Add some patches from debian package.
      - Rename domain name into documentation to awstats.org
      - Can allow urls with awredir without using md5 key parameter.
      - Usage of databasebreak option possible with awstats_buildstaticpages.
      - Add rel=nofollow on links.
      - Add option AddLinkToExternalCGIWrapper to add link to a wrapper script
        into each title of Dolibarr reports. This can be used to add a wrapper
        to download data into a CSV file for example.
      
      Fixes:
      - Security fix into awredir.pl
      - Fix: Case of uk in googlechart api.
      - Fix: Compatibility with recent perl version.
      
      
      ***** 7.0 *****
      
      New features/improvements:
      - Detect Windows 7.
      - Can format numbers according to language.
      - More mime types.
      - Added geoip_asn_maxmind plugin.
      - Geoip Maxmind city plugin have now override file capabilities to complete
        missing entries in geoip maxmind database. 
      - Added graphgooglechartapi to use online Google chart api to build graph.
      - Can show map of country to report countries when using graphgooglechartapi.
      - Part of codes was change to use more functions and have a cleaner code.
      - Added parameter to ignore missing log files when merging for a site on 
        multiple servers where a single server may not have created a log for a given day.
      - Update robots database.
      - Added Download tracking where certain mime types are defined as downloads
        and HTTP status 206 is tracked as download continuation
      - Can use wrapper with parameters in WrapperScript parameter.
      - Change to allow usage of AWStats inside a plugin
        for Opensource Dolibarr ERP & CRM software (http://www.dolibarr.org).
        
      Thanks to Chris Larsen (author of most thoses changes).
      
      Fixes: 
      - Webmin module works with new version of webmin.
      - Security fix (Traverse directory of LoadPlugin)
      - Security fix (Limit config to defined directory to avoid access to external
        config file via a nfs or webdav link).
      
      
      ***** 6.95 *****
      
      New features/improvements:
      - Fix security in awredir.pl script by adding a security key required by
        default.
      - Enhance security of parameter sanitizing function.
      - Add name of config file used to build data files inside data files header.
      - Added details of version for Chrome, Opera, Safari and Konqueror browsers.
      - Add AdobeAir detection.
      - Major update of browsers, robots and search_engines databases (among them,
        the Bing search engine).
      - Increase seriously bot detection.
      - Add Brezhoneg language.
      - Add a better way to detect Safari versions.
      - Added subpages for geoip maxmind modules in awstats_buildstaticpages.
       
      Fixes:
      - Fix typo in polish language file
      - awstats emmits ton of warnings with new geoipfree - ID: 2794728
      - Fix: can detect robots with robots.txt url even if file is not root.
      - Other minor fixes.
      
      
      ***** 6.9 *****
      
      New features/improvements:
      - With postfix that support DSN (Delivery Status Notifications) we exclude 
        some lines to avoid counting mails twice in maillogconvert.pl script.
      - Logresolvemerge.pl support FreeRADIUS logs or anything else using (the
        fixed length!) ctime format timestamp.
      - Add option stoponfirsteof in logresolvemerge tool.
      - Add patch to support host_proxy tag in LogFormat (for Apache LogFormat
        containing %{X-Forwarded-For}i)
      - Renamed Add to favourites on "Hit on favicon".
      - Increase robots, search engines database (Added Google Chrome browser,
        better Vista, WII, detection, ...)
      - Update languages files.
      - Added a lot of patch from sourceforge.
      
      Fixes:
      - Fixed broken maxmind citi, org and isp plugins.
      - Remove &nbsp; in name html tag to have HtmlHeadSection first.
      - Fix: [ 2001151 ] Security fix.
      - Fix: [ 2038681 ] missing <br _/_> in plugins/geoip_org_maxmind.pm
      - Fix: [ 1921942 ] html footer is missing from the allextraN report.
      - Fix: [ 1943466 ] error geoip_city_maxmind Can't locate object method "record_
      - Fix: [ 1808277 ] Incorrect function call in geoip_isp_maxmind.pm
      - Fix: Full list of extrasections was not ordered correctly
      - A lot of other fixes.
      - Added missing icons
      
      Other/Documentation:
      - None
      
      
      ***** 6.8 *****
      
      New features/improvements:
      - Added OnlyUsers option.
      - Can track RPC request.
      - HTMLHeadSection can accept \n in string.
      - Add option MetaRobot.
      - Increase seriously bot detection.
      - Better detection of windows OS.
      - Add condition HOSTINLOG in extra sections.
      - Can show a full list for extrasection.
      
      Fixes:
      - Fixed pb in xml output for history files.
      - Fixed a bug in awstats_configure.pl script.
      
      Other/Documentation:
      - Updated some language files.
      - Updated documentation.
      - Updated browsers database and added following patches:
        775988 The lastest: minor Chinese search engine patch
        1735647 Chinese search engines for awstats 6.6
        1735646 robots patch: feedsky, contentmatch crawler, twiceler, yodao
        1735639 Browser patch for Lilina/potu reader
        1735637 Chinese translation file for awstats 6.6
        1533028 WordToCleanSearchUrl for baidu.com
        1384243 minor Chinese spider and search engine patch
        1569151 TOP 8 Chinese local search engines
        745359 Chinese(Simp) update: 6.5 awstats-cn.txt
        1569201 top Chinese browser and robot update: TT is not a robot
        1569229 Simplified Chinese language file update
        1569208 Browser update on potu rss reader and lilina rss reader
      - Added a more complete xslt example.
      - Remove some deprecated code.
      - Update status of GeoIP City plugin database. A free version is
        now available like GeoIP Country database.
      
      
      ***** 6.7 *****
      
      New features/improvements:
      - Full support for -day option. To build different report for each day
      - Added virtualenamequot tag
      - Added option NotPageList
      - Addes .jobs and .mobi domains
      
      Fixes:
      - Minor bug in awstats_configure.pl
      
      Other/Documentation:
      - Updated some language files.
      - Updated browsers database.
      
      
      ***** 6.6 *****
      
      New features/improvements:
      - All geoip plugins support the PurePerl version.
      - Possible use of vhost in extra section.
      - Support IPv6 in AllowAccessFromWebToFollowingIPAddresses parameter.
      - Added svn family to browsers detection.
      - Support for IE7.
      
      Fixes:
      - Remove some Perl warnings.
      - Remove lc() on translation strings.
      - Not sanitized migrate parameter.
      - Not sanitized urlxxx parameters that could be used for XSS attacks.
      
      Other/Documentation:
      - Added AWStats version in stdout outputs.
      - Updated some language files.
      - Updated browsers database.
      
      
      
      ***** 6.5 *****
      
      Note:
      If you used the geoip plugin, you must edit your AWStats config file
      to change the line
       LoadPlugin="geoip GEOIP_STANDARD"
      into
       LoadPlugin="geoip GEOIP_STANDARD /pathto/GeoIP.dat"
      
      New features/improvements:
      - Tuning: logresolvemerge.pl is 30 times faster when merging a lot of log
        files (1000) at same time (Thanks to Dan Armstrong).
      - Added detection of linux and bsd distributions (redhat, mandriva, ...)
        Thanks for idea to Sean Carlos.
      - Added option SkipReferrersBlackList to exlude records from SPAM referrers.
      - New: RSS catcher/readers in robot database
      - New: Add option databasebreak to force awstats to use a different database
        history file for eache day or hour instead of month.
      - New: geoip_cities plugin report the region when available.
      - New: LevelForBrowsersDetection can accept value 'allphones' to use file
        browsers_phone.pm instead of browsers.pm file for AWStats database. This
        file is specialized in phone/pda browsers.
      - Qual: geoip plugin now uses open instead of new to allow use of different
        path for datafiles instead of default. This allow use of personalised path
        for database file.
      - New: LogFormat=2 can now change its value dynamically if logformat change.
      - New: Add way to set ArchiveLogRecords with same tags than LogFile to add
        suffix to archive log files.
      - New: Add option SectionsToBeSaved (to ask AWStats to save only particular
        sections).
      - Added detection of epiphany and a lot of other new search engines and
        robots (Thanks to http://www.antezeta.com/awstats-contact.html)
      - awredir support any protocols (ftp, https...) not only http.
      - Support in/out method in ftp detection.
      - Update xsd files and fix xml support to have now a full support of xslt
        transformations and xml validations.
      - Added javabestart to browsers.
      
      Fixes:
      - Fixed: No more increase of Google search engine count when click came
        from Gmail.
      - Fixed: [ 1193698 ] Flash detection wrong ?
      - Fixed: [ 1225425 ] Shiira gets recognized as Safari
      - Fixed: [ 1232317 ] Missing javaws png file
      - Fixed: [ 1236547 ] Acrobat 7 PDF detection
      - Fixed: [ 1239677 ] Incorrect XML output
      - Fixed: [ 1280667 ] Custom StyleSheet not used
      - Fixed: [ 1301317 ] Patch for hashfiles plugin to work
      - Fixed: [ 1305959 ] awstats-6.5 : awstats.pl parsing conf
      - Fixed: [ 1306075 ] GNUTLS from Lynx mistaken for GNU Hurd
      - Fixed: [ 1315969 ] German: message153
      - Fixed: referer changes to referrer
      - Fixed: [ 1111530 ] Missing description for %host_r in config file
      - Fixed: [ 1124711 ] env __AWSTATS_CURRENT_CONFIG__ not expanded for include
      - Fixed: [ 1172485 ] Invalid header characters for DOCTYPE
      - Fixed: [ 1172494 ] Invalid XHTML in awstats.pl
      - Fixed: [ 1173816 ] Config file mis-feature
      - Fixed: [ 1218832 ] XML Strict error (with GeoIP plugin)
      - Fixed: keyword detection for "advanced" search on google
      - Added style="display:none;" to image link for misc tracker.
      - Changed stored permission in tar.gz file
      - Fixed: Better support for gz and bz2 files
      - Fixed: Added xhtml in mime types.
      - Fixed: [ 1163590 ] XML parsing error
      - Fixed: [ 1174728 ] version 6.4: XML parsing error
      - Fixed: [ 1186582 ] Authentication problem in Windows NT/AD Domains
      - Fixed: [ 1191805 ] Missing Bot: Add generic detection for user agent
        bot bot/ and bot-
      - Avoid bad cells if geoip country does not exists.
      - Better compatibility of misc_tracker with firefox.
      - Fixed: Dying process with geoip_city plugin when IP is unknown by plugin.
      - Fixed: Add error message if option buildpdf option is used with parameter
        BuildReportFormat=xhtml.
      
      Other/Documentation:
      - Added Spanish translation for webmin module by Patricio Mart�nez Ros.
      - Added croatian language.
      - Update russian language file.
      - Renamed european union by european country.
      - Review of AWStats documentation.
      
      
      ***** 6.4 *****
      
      New features/improvements:
      - Add option ShowSummary.
      - If Geoip plugin is enabled, add a column in Host report.
      - Other minor changes on geoip and hostinfo plugins to enhance look.
      - If LogFormat is 2, AWStats autodetect log format change.
      - Add a way to set ArchiveLogRecords with same tags than LogFile to
        add suffix to archived log files.
      
      Fixes:
      - Fix security hole that allowed a user to read log file content even
        when plugin rawlog was not enabled.
      - Fix a possible use of AWStats for a DoS attack.
      - Fix errors for setup to analyze media servers.
      - If there is no referer field in the log format, do not use them in the
        errors reports.
      - Label of real player ("media player", not "audio player")
      - configdir option was broken on windows servers (Pb on Sanitize function
        on windows local use).
      - Minor fixes.
      - Fix: [ 1094056 ] Bad html-output for maillogs
      - Fix: [ 1094060 ] More bad html/xml output
      - Fix: [ 1100550 ] Missing flag icon for euskera
      - Fix: [ 1111817 ] AllowToUpdateStatsFromBrowser defaults to 1 contrary
        to docs
      
      Other/Documentation:
      - DebugMessages is by default set to 0 for security reasons.
      - Updated documentation.
      - Updated some language files.
      - Remove deprecated LogFormat 5.
      
      
      ***** 6.3 *****
      
      New features/improvements:
      - Added the geoip_isp_maxmind and geoip_org_maxmind plugin to allow
        rrports by ISP and Organizations.
      - Details firefox versions.
      - webmin module: Report GeoIP databases versions.
      - Support keywords detection for search engines that store search key
        inside url instead of parameters. This means AWStats can now detect
        keywords from search engines like a9.com
      
      Fixes:
      - Removed two security holes.
      - The geoip_city_maxmind plugin was sometimes bind and towns with
        space in names are reported correctly.
      - Restart of apache on debian failed in awstats_configure.pl
      - Better look for file types tables.
      - Fix: [ 1066468 ] Translated word gets corupted (&OUML instead of �)
      - Fix: [ 1074810 ] XML Parsing Error
      - Fix: [ 991768 ] "Created by awstats" not localized
      - Fix: [ 1092048 ] flash(.swf) in NotPageList(default)
      - Fix pb when there is spaces in key of ExtraSections
      
      
      Other/Documentation:
      - SaveDatabaseFilesWithPermissionsForEveryone is 0 by default instead
        of 1 for security reasons.
      - Updated documentation
      - Updated language files
      
      
      
      ***** 6.2 *****
      
      New features/improvements:
      - awstats_updateall.pl: Added -excludeconf option
      - Allow plugins to add entry in menu.
      - Allow plugins to add charts with its own way to compile data inside
      the update process.
      - Added the geoip_region_maxmind and geoip_city_maxmind plugins.
      - maillogconvert.pl: Support postfix 2.1 that change its log
      format using NOQUEUE string instead of a number for mails that are
      rejected before being queued.
      - Little speed improvments.
      - Counts javascript disabled browsers (A new MiscTracker feature).
      - When a direct access to last line is successfull, awstats is directly
      in mode "NewLine". No need to find a more recent record for this. This
      means the NotSortedRecordTolerance works even between end and start
      of updates.
      - You can use a particular not used field in your log file to build
      a personalized report with the ExtraSection feature. Just use a personalized
      log format and use the tag %extraX (where X is a number) to name field you
      want to use, then, in ExtraSection parmaters, you can use extraX to tell
      wich info to use to extract data for building the chart.
      - Support method "put" when analyzing ftp log files.
      - Added a bold style around current day/month in label of charts.
      
      Fixes:
      - Fix not recognized %time3 tag in LogFormat. This tag allows to process
      all FTP xferlog file format.
      - Fix bad html generated with buildpdf option.
      - maillogconvert.pl: Added patch to work correctly with sendmail
      when recipient is redirected through a pipe.
      - Fix Bug 985977: Failed to rename temp history file if contains special
      char like "+".
      - Patch 984087 for new year jump
      - Fix Bug 983994: Tooltips aren't shown.
      - Fix Bug 982803: Bad display in Netscape 4.75 with Awstats version 6.1
      - Fix Bug 975059: Timezone Plugin Runtime Error
      - Fix Bug 971129: Bug in regexp handling for | in ExtraSections
      Now for OR in ExtraSectionCondition you must use double pipe.
      - Some fix to have correct flag for lang with code lang different of
      country flag.
      
      Other/Documentation:
      - Updated documentation.
      - Updated robot, browsers, os recognition databases.
      - Better log messages in plugins.
      - Renamed configure.pl into awstats_configure.pl.
      - Reduce code size.
      - The NOTSORTEDRECORDTOLERANCE has been increased to 2 hours to be sure to
      have no problem for users that change their hour by one.
      
      
      
      ***** 6.1 *****
      
      New features/improvements:
      - The BuildHistoryFormat can now accept xml to build the AWStats 
        database in xml. The XML schema is available in tools/xslt directory.
      - Added an example of xslt style sheet to use AWStats XML database.
      - Added %time4 flag for LogFormat to support unix timestamp date format.
      - Added Firefox to browser database.
      - Added option IncludeInternalLinksInOriginSection (defined to 0 
        by default).
      - Added field to choose size of list limit (rawlog plugin).
      - Added ExtraSectionCodeFilterX parameters.
      - PDF detection works also for browsers that support PDF 6 only.
      - maillogconvert.pl:
        Added an automatic year adjustment for sendmail/postfix log 
        files that does not store the log. This solve problems for mail 
        analyses around new year.
      - Added tooltips for mail reports (tooltips plugin).
        Changed look of the summary report to prepare add of new informations.
      - Added failed mails number in the summary.
      - AllowAccessFromWebToFollowingAuthenticatedUsers is no more case
        sensitive.
      - Added new functions for plugins: AddHTMLMenuHeader, AddHTMLMenuFooter,
        AddHTMLContentHeader, AddHTMLContentFooter
      - Added detection of Camino web browser (old Chimera).
      - Full updated robots database.
      
      Fixes:
      - Removed warning "Bizarre copy of ARRAY" with new Perl 5.8.4.
      - Fixed syntax error in Year view when xhtml output is selected.
      - Fixed a problem of not working misc feature when using IIS and 
        when URLWithQuery was set to 0.
      - Now all non ISO-8859-1 languages are shown correctly even with 
        Apache2, whatever is the value of the AddDefaultCharset directive.
      - Some plugins broke the xhtml output.
      - Fixed wrong results for compression ratios when using mod_gzip and
        %gzip_ratio tag.
      - Fixed old bug showing string "SCALAR(0x8badae4)" inside html reports
        when using mod_perl.
      - Fixed the not allowed GET method when LogType=S.
      - maillogconvert.pl: Better management of error records with sendmail
        and postfix (some "reject" records were discarded).
      - maillogconvert.pl: Fixed important bug where records were discarded
        when server name was a FQDN.
      - configure.pl: Now works also on Mac OS X
      - configure.pl: If /etc/awstats directory does not exist, try to
        create it. If /etc/awstats.model.conf not found on Linux, try to
        find it in cgi-bin directory.
      - Fixed some bugs when BuildReportOutput is set to xhtml (rawlog plugin)
        plugin.
      - Number of shown lines were one more than required (rawlog plugin).
      - xhtml output broken for some 404 reports.
      
      Other/Documentation:
      - BuildReportOutput=xml renamed into BuildReportOutput=xhtml
      - Added arabic language file.
      - Updated language file.
      - Updated documentation.
      - maillogconvert.pl:
        Update value of NBOFENTRYFOFLUSH
      
      
      
      ***** 6.0 *****
      
      Fixes:
      - Fixed bug 599388: Search engines are not detected if domain is IP
        address.
      - Fixed bug 711758.
      - Fixed bug 812681: bad case for ENV expansion in awstats.conf.
      - Fixed bug 813908: Incomplete documentation
      - Fixed bug 816267: onedigit dayofmonth breaks syslog regex
      - Fixed bug 817287,830458: wrong regexp in Read_DNS_Cache subroutine
      - Fixed bug 817388: lib/referer_spam.pm & lib/robots.pm
      - Fixed bug 818704: Warning in IPv6 plugin when no reverse DNS
      - Fixed bug 841877: regex bug for parsing log lines
      - Fixed bug 846365: relative path not working for DirData.
      - Fixed value for ValueSMTPCodes if not defined in config file.
      - Fixed pb when country code is not same than lang code (example:
        estonian has lang code 'et' and country code 'ee').
      - Replaced Kb/visits to Kb/mails for mail log analysis.
      - Remove some warnings that appears when running perl -W 
      - Other minor bugs (814970,823064,823323,831438,836315).
      - Fixed bug in counting hits for miscellanous and clusters chart when
        a temporary flush was done on disk during a long update.
      - ExtraSections now works on all records whatever is the status code.
      - Click on "Summary" now returns to top of page even with rawlog plugin.
      - Fix in log parsing that should reduce dropped records to only records
        that match a dropping criteria (SkipFiles, Skip..., Only...).
      - Click on "Summary" now returns to top of page even with rawlog plugin.
      - Fixed AmigaVoyager detection.
      - Fixed bug in SkipHosts filter for mail log files.
      - Fixed not working link for search keywords/keyphrase in menu with FireBird.
      - Fixed pb in loading plugins with mod_perl2.
      - Fixed not found relative DirData path with some Perl/OS versions.
      - Fixed error in awstats_updateall.pl when current directory, while running
        it, is where awstats.pl is stored.
      
      New features/improvements:
      - Increased speed by 10 to 20%.
      - Added a Worms report (Added LevelForWormsDetection and
        ShowWormsStats parameter).
      - Added report for "not viewed" traffic in Summary report.
      - Monthly history report has been extracted from the Summary report.
      - Some changes to make AWStats to be XML compliant ready.
        Need to set the new parameter BuildReportFormat to 'xml' in config file.
        Added also the BuildHistoryFormat parameter (Even if only 'text' is
        supported for the moment).
      - A lot of part of codes have been rewritten to make code more easy to
        understand and reduce unknown bugs.
      - The link to whois informations for a host, provided by hostinfo plugin,
        has been replaced by an internal 'whois' showing in a popup window full
        whois informations whatever is the TLD of IP or host name.
      - A new search engine database to allow several "match id" for same
        search engine. Example: All google ip referer id are recognised.
      - Can use UA and HOST fields to build personalized ExtraSection reports.
      - Added support for AND conditions in personalized ExtraSection config.
      - Support for right to left languages. Added 'he' language.
      - Added LevelForSearchEnginesDetection parameter to choose between 2 possible
        levels of detection for search engines (like LevelForRobotsDetection).
        Also, added LevelForFileTypesDetection parameter (2 possible levels).
      - Added percent column for file types.
      - The robot chart now shows details between hits on robots.txt file and
        other hits.
      - Count of keywords/keyphrases does not increment counter for hits made
        on images from a google cached page.
      - Added patch 857319: Allow several IPs and IP ranges in
        AllowAccessFromWebToFollowingIPAddresses parameter.
      - Added experimental graphapplet plugin (graph are built by applet).
      - Webmin module updated to 1.210 to integrate all new parameters.
      - Better setup error messages for newbie.
      - Reports look better on Mozilla browsers.
      - Added decodeUTFkeys plugin to AWStats to show correctly (in language
        charset) keywords/keyphrases strings even if they were UTF8 coded by
        the referer search engine.
      - Added/updated a lot of os, browser and country icons.
      - Added Hebrew and Galician language.
      - configure.pl: A new script to configure AWStats and Apache and
        build a simple config file.
      - awstats_buildstaticpages.pl: The -date option has been replaced
        by the -buildate=%YY%MM%DD option so you can choose your own date format.
      - awstats_buildstaticpages.pl: Added the -configdir option.
      - awstats_exportlib.pl: Changes to be compatible with new AWStats databases.
      - logresolvemerge.pl: can use several threads for reverse DNS lookup
        with Perl 5.8.
      - maillogconvert.pl: Allow to process qmail log preprocessed by
        tai64nlocal tool.
      - maillogconvert.pl: Added support for MDaemon mail server log files.
        
      Other/Documentation:
      - A httpd.conf sample to configure AWStats is provided.
      - Added example for analyzing awredir.pl hits by ExtraSections.
      - Updated database:
        wget is known as a "grabber" browser, no more as a robots.
        netcaptor and apt-get added in browser database.
        asmx and aspx added in mime.pm file.
        Microsoft URL Control added in robot list.
      - Documentation seriously updated.
      - FAQ updated.
      
      
      Note 0: Perl 5.007 or higher is a requirement to use AWStats 6.9 or higher.
      
      Note 1: When migrating to 6.x series, if you use the ExtraSections feature,
        you must check that the parameter(s) ExtraSectionConditionX use a full
        REGEX syntax (with 5.x series, this parameter could contain simple string
        values). If not, feature will be broken.
      
      Note 2: When migrating to 6.x series, if you use the Misc feature, you must
        check that your ShowMiscStats parameter is set to "ajdfrqwp", if you want
        to have all miscellanous info reported (you must also have added the
        awstats_misc_tracker.js script in your home page as described in
        MiscTrackerUrl parameter description). Otherwise the new default value "a"
        will be used (only the "Add to favourites" will be reported).
      
      Note 3: In 6.x series, MaxLengthOfURL parameter has been renamed into
        MaxLengthOfShownURL.
      
      Note 4: When migrating to 6.x series, to enable the new worm detection, you
        must add parameter LevelForWormsDetection=2 in your config file.
      
      Note 5: When migrating to 6.x series, if you used the urlalias or userinfo
        plugin, you must move the urlalias.*.txt or userinfo.*.txt file from Plugins
        directory to DirData directory.
      
      
      
      ***** 5.9 *****
      
      Fixes:
      - Several fixes in maillogconvert.pl
        Fixed wrong parsing for qmail log files.
        Support mail errors in qmail log files.
        Return code for postfix log were all reported in error for mails sent to
        several recipients when one recipient was in error.
      - Fixed wrong percentage in cluster report.
      - Fixed wrong parsing for qmail log files.
      - Return code for postfix log were all reported in error for mails sent to
        several recipients when one recipient was in error.
      - Fix a not closing HTML TR tag in full list of hosts.
      - awstats_buildstaticpages.pl can accept month on 1 digit.
      - awstats_buildstaticpages.pl no more try to build pages awstats.misc.html
        and awstats.filetypes.html that does not exists.
      - A lot of fix in PDF export:
        Graph in PDF export are no more inverted.
        The link "close window" in generated PDF pages is replaced by "back to main
        page".
        Infos popup window from hostinfo plugin is not included in PDF export. Popup
        can't work into PDF.
        PDF export seems to work correctly now.
      - mail.yahoo.* and hotmail.msn.* refering pages are not more reported as
        search engines.
      
      New features/improvements:
      - AWStats Webmin module updated to 1.1
      - Added the AllowFullYearView parameter.
      - Year entry in combo box is now the localized text for "Year" instead of '---'
      - Support of some exchange format in maillogconvert.pl
      - Option -noloadplugin of awstats_buildstaticpages.pl can accept a list of
        plugins separated by comma.
      - Support mail errors for qmail log files.
      - Added the -diricons option from awstats_buildstaticpages.pl
      
      Other/Documentation:
      - Added rpm, deb and msi mime types
      - Added documentation page for using AWStats Webmin module
      
      
      
      ***** 5.8 *****
      
      Fixes:
      - mod_deflate compression reported bandwith saved instead of bandwidth used.
      - Fixed wrong number of column for "other" row in host chart.
      - Fixed problem of parsing with uabracket and refererquot.
      - Fixed wrong use of config file in rawlog plugin.
      - Some changes on maillogconvert.pl:
        maillogconvert support more exotic sendmail log files (Thanks to W-Mark Kubacki).
        Fixed wrong parsing of qmail syslog files.
        Fixed pb of '-' in relay hostname.
        When a mail is sent to 2 different receivers, now report 2 records.
        When a forward is active, report the original receiver, not the
        "forwarded to".
      - Fixed not working timezone plugin with 5.7.
      - Fixed missing propagated configdir parameter when changing month/year.
      - Error when loading database pm file with some cygwin perl version.
      - Fixed not working file type detection for default pages.
      - Fixed not working awstats_updateall.pl on Windows platforms.
      
      New features/improvements:
      - Added a Webmin module.
      - Enhance the 'Extra' feature with parameters ExtraSectionFirstColumnFormatX,
        ExtraSectionAddAverageRowX, ExtraSectionAddSumRowX.
        Also add a dedicated page in documentation.
      - Added %lognamequot tag for LogFormat parameter.
      - Added OnlyUserAgents parameter.
      - Selection of virtualhost records in a log is no more case sensitive on
        SiteDomain nor HostAliases.
      - Added awredir.pl tool.
      - Added a Cluster Report for load balancing systems. Added %cluster tag in
        LogFormat.
      
      Other/Documentation:
      - Deprecated %time1b tag (%time1 can be used).
      - Minor look change.
      - Updated documentation.
      
      
      
      ***** 5.7 *****
      
      Fixes:
      - The -configdir parameter in awstats_updateall.pl is now working coorectly.
      - Fix failing call to ipv6 plugin.
      - Pb with some regex value used in the new REGEX fields added in 5.6.
      - Better support for WebStar log files.
      - Count for add to favourites is done on hits to favicon.ico for IE only. This
        avoid counting wrong "Add" done by browsers that hit the file even when no
        add is done. Value reported is the (count for IE) / (ratio of IE among all
        other browsers).
      - Count for Browsers with WMA audio playing support now works.
      - Fix problem with default ShowFlagLinks defined to 1 instead of '' when not
        included in config file.
      - Road runner browsers detection problems.
      - syslog tag can accept hostname with not only a-z chars.
      - "&nbsp" changed to "&nbsp;" in miscellanous chart.
      - Geoip lookup is always done (as it should) on ip when ip is known, even if
        DNSLookup is enabled and successfull. This increase seriously AWStats speed
        when DNSLookup and Geoip are both enabled.
      - Chars < and > inside reported values are no more removed but coded with &lt;
        and &gt; in html built page.
      
      New features/improvements:
      - Added 'rawlog' plugin to add a form to show raw log content with filter
        capabilities.
      - Added a dynamic exclude filter on CGI full list report pages.
      - Added maillogconvert.pl for analyzing mail log files (better support
        for sendmail, postfix and qmail log files).
      - Added -addfilenum option in logresolvemerge.pl
      - Added -updatefor option to limit number of lines parsed in one update
        session.
      - Added support for Darwin streaming server.
      - Added Firebird browser detection.
      - awstats_buildstaticpages.pl can also build a PDF file (need htmldoc).
      - Better management of plugin load failure.
      - Added LogType parameter.
      - Added option -dnscache= in logresolvemerge.pl to use dns static file.
      - Minor bug fixes.
      - The HostAliases list parameter is used to check if a log that contains
        %virutalhost field should be qualified.
      - Added %MO tag for LogFile parameter to be replaced by the three first
        letter of month.
      
      Other/Documentation:
      - The "Popup WhoIs link" code is now handled by new 'hostinfo' plugin.
      - Added mp4 mime type.
      - Updated documentation.
      
      Note 1:
        The ShowLinksToWhoIs parameter has been removed. You must enable the plugin
        'hostinfo' to get the same result, if it was used.
      
      
      
      ***** 5.6 *****
      
      Fixes:
      - Domain with no pages hits were always reported as other in domain chart.
      - percent for other in full list of "links for internet search engines"
        has been fixed.
      
      New features/improvements:
      - Report compression ratios with mod_deflate feature (Apache 2).
      - A better browser detection.
      - Can add regex values for a lot of list parameters (HostAliases,
        SkipDNSLookupFor, ...)
      - StyleSheet parameter works completely now and sample of CSS files are
        provided.
      - Add meta tags robots noindex,nofollow to avoid indexing of stats pages by
        compliant robots.
      - Added a "Miscellanous chart" to report ratio of Browsers that support:
        Java, Flash, Real reader, Quicktime reader, WMA reader, PDF reader.
      - "Miscellanous chart" also report the "Add to favourites" (must remove the
        "robots.txt" and "favicon.ico" entries off your SkipFiles parameter in your
        config file to have this feature working.
      - Update process now try a direct access at last updated record when a new
        update is ran. If it fails (file changed or wrong checksum of record), then
        it does a scan from the beginning of file until a new date has been
        reached (This was the only way of working on older version). So now update
        process is very much faster for those who don't purge/rotate their log
        file between two update process (direct access is faster than full scan).
      - Better look for report pages on Netscape/Mozilla browsers.
      
      Other/Documentation:
      - Updated documentation.
      - Update wap/imode browser list.
      
      Note 1:
        You should remove the "robots.txt" and "favicon.ico" entries in the SkipFiles
        parameter in your config files after upgrading to 5.6.
        
      
      
      ***** 5.5 *****
      
      Fixes:
      - Summary robots list was limited to MaxNbOfLoginShown instead of being
        limited to MaxNbOfRobotShown value.
      - Fixed a bug when using HBL codes in ShowRobotsStats parameter.
      - AllowAccessFromWebToFollowingAuthenticatedUsers now works for users with
        space in name.
      - Bug 730996. When URLWithQueryWithoutFollowingParameters was used with a
        value and another parameter was ended with this value, the wrong parameter
        was truncated from URL.
      
      New features/improvements:
      - Added a 'Screen Size' report.
      - Group OS by families. Added a detailed OS version chart.
      - Better 404 errors management. URLs are always cleaned from their parameter
        to build '404 not found' URLs list (because parameters are not interesting
        as they can't have effect as page is not found). Referrer URLs list for '404
        not found' URLs are kept with parameters only if URLReferrerWithQuery is set
        to 1. This make this report more useful.
      - Added 'geoipfree' plugin (same than 'geoip' plugin but using the free
        Perl module Geo::IPfree).
      - 'geoip' plugin can works with Perl module Geo::IP but also with Perl module
        Geo::IP::PurePerl).
      - Added 'userinfo' plugin to add information from a text file (like lastname,
        office department,...) in authenticated user chart.
      - month parameter can accept format -month=D, not only -month=DD
      - Optimized code size.
      - Optimized HTML output report size.
      - Added plugin ipv6 to fully support IPv6 (included reverse DNS lookup).
      - Split month summary chart and days of month chart in two different charts in
        main page. This also means that ShowDaysOfMonthStats and
        AddDataArrayShowDaysOfMonthStats parameters were added.
      - Added -staticlinksext to build static pages with another extension than
        default .html
      - Added QMail support and better working support for Postfix and Sendmail (SMA
        preprocessor was replaced by maillogconv.pl).
      
      Other/Documentation:
      - AWStats default install directory is /usr/local/awstats for unix like OS.
      - Added Isle of Man, Monserat, and Palestinian flag icon.
      - Added "local network host" and "Satellite access host" in label of possible
        countries and icons (They appears when using geoip plugins).
      - Better management of parsed lines counting. The last line number is also
        stored in history file, for a future use.
      - Removed LogFormat=5 option for ISA log file because I am fed up of
        supporting bugged and non standard MS products. Sorry but this takes me too
        many times. To use AWStats with an ISA server, just use now a preprocessor
        tool to convert into a W3C log file.
      - Added estonian, serban and icelandic language files.
      - Updated documentation.
      
      
      
      ***** 5.4 *****
      
      Fixes:
      - File name with space inside were not correctly reported when doing FTP log
        server analysis.
      - Problem in %Wy tag for ten first weeks of year (coded on 1 char instead
        of 2: First week should be "00" instead of "0").
      - Tooltips now works correctly with Netscape (>= 5.0).
      - Better parsing of parameters (Solved bug 635962).
      - Users did not appear in Authenticated users list if hits on pages were 0.
      - Value of title "Top x" for domains chart was not always correct.
      - Fixed bug 620040 that prevented to use "#" char in HTMLHeadSection.
      - Whois link did not work for jp, au, uk and nz domains.
      - WhoIs link did not work if host name contained a "-" char.
      - Fixed a bug in mod_gzip stats when only ratio was given in log.
      
      New features/improvements:
      - Lang parameter accepts 'auto' value (Choose first available language
        accepted by browser).
      - Little support for realmedia server.
      - Added urlaliasbuilder.pl tool.
      - Added URL in possible values for ExtraSection first column.
      - New parameter: URLWithAnchor (set to 0 by default).
      - Export tooltips features in a plugin (plugin tooltips disabled by default).
      - Added average session length in Visit Duration report.
      - Added percentage in Visit Duration report.
      - logresolvemerge.pl can read .gz or .bz2 files.
      - Added icons and Mime label for file types report.
      - Added parameters AddDataArrayMonthDayStats, AddDataArrayShowDaysOfWeekStats,
        and AddDataArrayShowHoursStats.
      - Added the Whois info in a centered popup window.
      - Cosmetic change of browsers reports (group by family and add bar in
        browserdetail).
      - Other minor cosmetic change (remove ShowHeader parameter).
      - Authenticated user field in log file can contain space with LogFormat=1,
        and they are purged of " with Logformat=6 (Lotus Notes/Domino).
      - The AWSTATS_CURRENT_CONFIG environment variable is now always defined
        into AWStats environment with value of config (Can be used inside config
        file like other environment variables).
      - Added offset of last log line read and a signature of line into the
        history file after the LastLine date.
      - Better error report in load of plugins.
      
      Other/Documentation:
      - AWSTATS_CONFIG environment variable renamed into AWSTATS_FORCE_CONFIG.
      - Replaced -month=year option by -month=all.
      - Added an error message if a -migrate is done on an history file with
        wrong file name.
      - GeoIP memory cache code is now stored inside plugin code.
      - Added list of loaded plugins in AWStats copyright string.
      - Added European and Sao Tome And Principe country flag.
      - Added Safari browser icon.
      - Updated documentation.
      
      Note 1:
        Old deprecated values for -lang option (-lang=0, -lang=1...) has been
        removed. Use -lang=code_language instead (-lang=en, -lang=fr, ...).
      
      Note 2:
        Old deprecated -month=year option must be replaced by -month=all when
        used on command line.
      
      
      
      ***** 5.3 *****
      
      Fixes:
      - Fixed: Bad documentation for use of ExtraSection.
      - Fixed: Bug in ValidSMTPCodes parameter.
      - Fixed: Remove AWStats header on left frame if ShowHeader=0.
      - Fixed: 29th february 2004 will be correctly handled.
      - Fixed: Another try to fix the #include not working correctly.
      - Fixed: Columns not aligned in unknownip view when not all fields are
        choosed.
      - Fixed: Columns not aligned in allhosts and lasthosts view when not all
        fields are choosed.
      
      New features/improvements:
      - Added awstats_exportlib.pl tool.
      - Added 'Full list' view for Domains/Country report.
      - Added 'Full list' and 'Last visits' for email senders/receivers chart.
      - Added a memory cache for GeoIP plugin resolution (geoip is faster).
      - New parameter: Added AuthenticatedUsersNotCaseSensitive.
      - Speed increased when ExtraSection is used.
      
      Other/Documentation:
      - Updates to AWStats robots, os, browsers, search_engines databases.
      - Added awstats_logo3.png
      - Added X11 as Unknown Unix OS, and Atari OS.
      - Change way of reading -output= parameter to prepare build of several output
        with same running process.
      - Updated documentation.
      
      
      
      ***** 5.2 *****
      
      - Added urlalias plugin to replace URL values in URL reports by a text.
      - Added geoip plugin to track countries from IP location instead of domain
        value.
      - Support for postfix mail log.
      - Added total and average row at bottom of day data array.
      - Added dynamic filter in Host and Referer pages when used as CGI like
        in Url report.
      - Removed "Bytes" text when values is 0.
      - Reduced main page size.
      - New parameter: Added OnlyHosts parameter.
      - New parameter: Added ErrorMessages to use a personalized error message.
      - New parameter: Added DebugMessages to not allow debug messages.
      - New parameter: Added URLQuerySeparators parameter.
      - New parameter: Added UseHTTPSLinkForUrl parameter.
      - Report for robots accept codes like others charts ('HBL').
      - Can use "char+" instead of "char" for LogSeparator.
      - Records with bad http code for Microsoft Index Servers (on 1 digit instead
        of 3) are no more reported as corrupted records.
      - Little support for IPv6.
      - Static string changed from "string" to 'string'.
      - Fixed: Fix a bug when using IIS and %query or cs-query-string tag in
        LogFormat and URLWithQuery=1.
      - Fixed: #include now works correctly.
      - Added Albanian, Bulgarian and Welsh language.
      - Added Seychelles flag.
      
      
      
      ***** 5.1 *****
      
      - Better support for ftp log files.
      - Better support for mail log files.
      - Can analyze streaming log files (Windows Media Server).
      - Added choice of month and year in list boxes (when used as CGI).
      - The data values for month and days are reported in main page under the
        graph, no need to change page.
      - New feature: ShowxxxStats parameters accept codes to decide which columns to
        show in chart.
      - New parameter: Added SkipUserAgents parameter to exclude some user agent
        from statistics.
      - New parameter: Added URLNotCaseSensitive.
      - New parameter: Added URLWithQueryWithoutFollowingParameters to exclude some
        parameters from URL when URLWithQuery is on.
      - New parameter: Added URLReferrerWithquery.
      - Added tag %Wm-n for LogFile parameter (replaced with the week number in month
        but differs from %WM-n because start with 0).
      - Added tag %Wy-n for LogFile parameter (replaced with the week number in year
        but differs from %WY-n because start with 0).
      - Added tag %Dw-n for LogFile parameter (replaced with the day number in week
        but differs from %DW-n because start with 0).
      - Fixed: Log analyze is no more stopped if log file contains binary chars.
      - Fixed: -debug option is allowed in migrate.
      - Fixed: Wrong window was opened when clicking on flag link when
        UseFramesWhenCGI was on.
      - Fixed: Fixed pb in refreshing page when clicking on "Update Now" link (no
        need to force the refresh).
      - Fixed: a bug which makes the keywords report loaded twice when page viewed
        as a cgi after an update now click.
      - Fixed: Pb with SAMBAR server ('Expires' line appears at the top of pages).
      - Fixed: Now last update DNS cache file is saved with same permissions than
        history files so it depends on SaveDatabaseFilesWithPermissionsForEveryone.
      - Fixed: Some sorting function were still using old 4.1 algorithm. Now all
        sorts use new 5.0 algorithm (so speed and memory use again increase above
        all for large web sites with a lot of referers).
      - Fixed: Remove DecodeEncodedString on parameters sent by command line.
      - Rewrite plugins to match the same standard for all of them (All use an init
        function + AWStats version check + no need of global vars in awstats.pl).
      - Can use the #include "configfile" directive in config files.
      - Added week-end color on week-end days in monthdayvalues report.
      - Added 'spider' and 'crawler' as generic robots.
      - Added awstats_updateall.pl tool.
      - Remove common2combined.pl tool (useless).
      - Updated graph colors.
      - Updated documentation.
      - Updated database.
      - Updated language files.
      
      Note 1:
        AWStats 5.x are compatible with previous versions (3.x or 4.x).
        However if you use awstats 5.x runtime to read statistics for old month
        build with 3.x or 4.x, speed will be a little bit reduce but data will be
        reported correctly.
      
        To benefit the speed/memory improvement of 5.x (2 to 8 times faster when
        reading stats, less memory use) you can migrate (after backup) your history
        files with the command :
          awstats.pl -migrate="/fullpath/awstatsMMYYYY.configval.txt"
      
      Note 2:
        Old deprecated command line parameters -h and site= have been removed.
        Use config= instead.
      
      
      
      ***** 5.0 *****
      
      - Complete rewrite of update process and code to read/save history files.
        AWStats 5.0 is compatible with previous versions (3.x or 4.x).
        However if you use awstats 5.0 runtime to read statistics for old month
        build with 3.x or 4.x, speed will be a little bit reduce but data will be
        reported correctly.
      
        To benefit the speed/memory improvement of 5.0 (2 to 8 times faster when
        reading stats, less memory use) you can migrate your history files with the
        command :
          awstats.pl -migrate="/fullpath/awstatsMMYYYY.configval.txt"
      
      - Fixed: pb when using several tags with different offset in LogFile name.
      - Fixed: Create of directory with CreateDataDirIfNotExists is made with 0766
        instead of 0666.
      - New feature: Track detailed minor and major version for browsers.
      - New feature: Added bandwidth report for robots and errors.
      - New feature: Support DNS cache files for DNS lookup.
      - New feature: Added Plugins support and several working plugins:
        A GMT correcter, A hash file DNS cache saver/reader...
      - New feature: Use framed report (new UseFramesWhenCGI parameter).
      - "Never updated" and "Exact value ..." are now in language files.
      - Reduce number of global vars in code.
      - New feature: DefaultFile parameter accepts several values.
      - New feature: Added all robots and last robots full list report.
      - New feature: Added all logins and last logins full list report.
      - New feature: Added url entry and url exit full list report.
      - New feature: Added AllowAccessFromWebToFollowingIPAddresses parameter
      - New parameter: LogSeparator for log files with exotic separators.
      - New parameter: EnableLockForUpdate to allow lock for update process.
      - New parameter: DecodeUA to make AWStats work correctly with Roxen.
      - New tag for logfile: %WY is replaced by week number in year.
      - Added slovak, spanish (catalan) language files and updated a lot of language
        files.
      - Made changes to allow FTP log analysis.
      - Made changes to prepare sendmail log analysis.
      - Updated belarus flag.
      - Updated os, browsers, robots, search engines database.
      - Added a map of history files at beginning of files to allow other tools
        to read AWStats history files or part of them very quickly.
      - Other minor changes and bug fixes.
      
      
      
      ***** 4.1 *****
      
      - Fixed: -logfile option can be anywhere on command line and accept space
         in log file names.
      - Fixed: A bug vampired memory and caused abnormal disk swapping in 
         logresolvemerge.pl
      - Fixed: Reduce nb of dropped records for log files not 'completely' sorted.
      - New tag for logfile: %virtualname allows you to share same log file for
         several virtual servers.
      - New feature: A 'pipe' can be used in LogFile name parameter.
      - New feature: Added full list for refering search engines and refering pages.
      - New feature: Report keywords AND keyphrases. No need to choose one or else.
      - New feature: Report exit pages.
      - New feature: Report visits duration.
      - New option: Added -dir option to choose destination directory for
         awstats_buildstaticpages.pl
      - New option: Added AWStats common options to awstats_buildstaticpages.pl
      - Updated AWStats databases (renamed into .pm files and moved to lib dir).
      - Updated documentation.
      
      
      
      ***** 4.0 *****
      
        WARNING: 4.0 is not compatible with OLD history data files. If you use 4.0
        to read statistics for old month, report for "visitors" will be wrong as all
        old unresolved ip processed with AWStats 3.2 will not be counted when
        viewed with 4.0.
      
      - Increased speed and reduce memory use for very large web sites.
      - Unresolved ip are now processed like resolved one.
      - Added icons in browsers chart.
      - Personalized log format can also have tab separator (not only space).
      - New ways to manage security/privacy with updated docs and new parameters:
        AllowAccessFromWebToAuthenticatedUsersOnly
        AllowAccessFromWebToFollowingAuthenticatedUsers
      - New feature: Added mark on "grabber browsers" in browsers chart.
      - New feature: Added average files size in Pages/URL report chart.
      - New feature: You can put dynamic environnement variables into config file.
      - New feature: Keyphrases list can be viewed entirely (not only most used).
      - New parameter: WrapperScript
      - New parameter: CreateDirDataIfNotExists
      - New parameter: ValidHTTPCodes
      - New parameter: MaxRowsInHTMLOutput
      - New parameter: ShowLinksToWhoIs
      - New parameter: LinksToWhoIs
      - New parameter: StyleSheet
      - New option: -staticlinks to build static links in report page (to use
        AWStats with no web servers).
      - New tool: common2combined.pl (A log format converter)
      - New tool: awstats_buildstaticpages.pl
      - Fixed: wrong size of bar in "average" report when average value was < 1.
      - Fixed: pb of "Error: Not same number of records" when using some version
        of mod_perl.
      - Fixed: pb in logresolvemerge.pl
      - Fixed: Security against CSSA.
      - No more need to use \. to say . in config file.
      - Documentation seriously updated.
      
      
      ***** 3.2 *****
      
      - Increased speed (19% faster than 3.1).
      - Fixed: AWStats history file is no more corrupted by hits made from a search
        engines using a URL with URL encoded binary chars.
      - Fixed: AWStats history file is no more corrupted when a reverse DNS lookup
        return a corrupted hostname (Happens with some DNS systems).
      - Fixed: Security fix. No more possible to update stats from a browser using
        direct url (awstats.pl?update=1) when AllowToUpdateStatsFromBrowser is off.
      - New feature: Added various tags to use dynamic log file name in conf file
        according to current but also older date/time (%YYYY-n,%YY-n,%MM-n,%DD-n...)
      - New feature: Added NotPageList parameter to choose which file extensions to
        count as "hit only" (and not reported in the "Page-URL viewed" report).
      - New feature: Added KeepBackupOfHistoricFiles option.
      - New feature: Number of visits is also visible in days stats.
      - New feature: Added stats for day of week.
      - New feature: Added stats for file types.
      - New feature: Added stats for entry pages.
      - New feature: Added stats for web compression (mod_gzip).
      - New feature: Added stats for authenticated users/logins.
      - New feature: Added parameters to choose which report to see in main page.
      - New feature: Added URLWithQuery option to differentiate
        http://mysite/sameurl?param=x of http://mysite/sameurl?param=y
      - New feature: ShowFlagLinks can now accept list of all wanted flags for
        translation link.
      - New feature: Support standard ISA server log format.
      - New tool: Add logresolvemerge tool to merge split log files
        from a load balancing web server before running awstats.
      - New parameter: HTMLHeadSection allows you to add HTML code in header report.
      - New parameter: NbOfLinesForCorruptedLog.
      - Fixed: no more warning/error messages when runned with option perl -w.
      - Reference database (robots, os, browsers, search engines, domains)
        has been extracted in external files.
      - Other minor updates (new flags, reference database updates, ...)
      - Fixed: Parameter MaxNbOfHostsShown was not working correctly.
      - New languages.
      - Added an HTML documentation.
      
      
      
      ***** 3.1 *****
      
      - Increased seriously speed for update process (above all for large web sites).
      - Increased VERY seriously speed for viewing stats from a browser.
      - Reduced amount of memory used.
      - AWStats search config file in directories:
         current dir, then /etc/opt/awstats, then /etc/awstats, then /etc
      - New feature: AWStats can analyze NCSA common log files.
      - New feature: List of last access.
      - New feature: Full list of url scores.
      - New feature: Date format can be chosen according to local country.
      - New parameter: DirLang allows to choose directory for language files.
      - New parameter: Expires allows to add a meta-tag EXPIRES in HTML report page.
      - New parameter: LogoLink parameter to choose link used for clicking on logo.
      - New parameter: color_weekend option to show week-end days in different colors.
      - New option: -update and -output to update and/or output a report.
      - New option: -showsteps to follow advancement of update process.
      - Fixed: OS detection now works correctly (Windows ME reported correctly).
      - Fixed: Bad value were reported in daily chart when no pages were viewed.
      - Added WAP browsers in AWStats database.
      - New languages.
      
      
      
      ***** 3.0 *****
      
      - New look
      - Added daily report for pages, hits and bytes.
      - AWStats can use its own conversion array to make some reverse DNS lookup.
      - Added also SkipDNSLookupFor option.
      - Added OnlyFiles option.
      - AWStats works with personalized log file format (support also Webstar native log format). New log format parsing algorithm.
      - Now update is not made by default when stats are read from a browser. Added an "update now" button on HTML report page if new option AllowToUpdateStatsFromBrowser is on.
      - Tooltips now works also with Netscape 6, Opera and most browsers.
      - Update browsers database to add a lot of "audio" browsers and more.
      - Update OS database (Added Windows ME, OpenBSD).
      - Robots database updated.
      - Support new domains (biz, museum, coop, info, aero...).
      - Added some missing flags icons.
      - Rewrite UnescapeURL function to works with all encoded URLs, cyrillic URL.
      - Some minor changes.
      - Added translation for some "not translated" words.
      - Bytes reported are auto-scaled (Bytes, KB, MB, GB).
      - Fixed problem of colors (styles) not working with some browsers.
      - Added new languages (Korean, Danish, ...). Now 14 different languages.
      - Fixed bug of bad link in TOP pages links when viewed page is of another virtual host.
      - 259 domains/countries, 60 browsers database, 26 OS, 258 robots, 47 search engines.
      
      
      
      ***** 2.24 *****
      
      - Added a way to include dynamic current year, month, day and hour in LogFile parameter.
      - Option to choose month, year and language is also available from command line.
      - https request are correctly reported.
      - Added initialization of parameters to avoid problem of bad cache with mod_perl.
      - Fixed check of parameters to avoid 'Cross Site Scripting attacks'.
      - Added flags for Mongolia, Maldives, San Marino, Senegal.
      - New keyword detection algorithm (Now use a search engine url database like Webalizer AND old algorithm of AWStats for unknown search engines).
      - Added option to report keywords used from search engine as separate words or as full search strings.
      - Added Greek, Czech and Portuguese translation (now 9 different languages supported).
      - A better and faster config file parsing. Solve the problem of "=" into the HTMLEndSection parameter.
      - AWStats is no more sensitive to DOS-UNIX config files.
      - Disable DNS lookup only if host has at least 1 alphabetical char.
      - Better management of corrupted log files.
      - Make difference between windows NT and windows 2000.
      - Added OmniWeb and iCab browser. Better MacOS detection.
      - Make AWStats still working even when MS IndexServer return a bad HTTP return code (like "1" instead of a "three digits" number).
      - Fixed problem of missing year=yyyy in some links.
      - Fixed a bug of empty page when domain has "info" in its name.
      - A lot of minor changes.
      - 252 domains/countries, 44 browsers database, 24 OS, 252 robots, 39 search engines.
      
      
      
      ***** 2.23 *****
      
      - Use of configuration file.
      - Now AWStats can process old log files (however, you must keep order).
      - Month-to-month basis statistics works now correctly.
      - Old years now can also be viewed from AWStats report page.
      - Working directory (with write permissions) can be chosen (you can use another directory than cgi-bin).
      - Added PurgeLogFile option (you can choose if AWStats purge log file or not).
      - awstats.pl can be renamed into awstats.plx (for ActiveState perl) and still works.
      - Statistic page generated from command line has no more bad links.
      - Added a link to choose full year view.
      - Domain and page reports are sorted on pages (no more on hits)
      - Automatic disabling of reverse DNS lookup if this is already done in your log file.
      - Can add your own HTML code at the end of awstats (ban advert for example).
      - Added Italian, German, Polish language (now 7 different languages supported).
      - 252 domains/countries, 40 browsers database, 22 OS, 252 robots, 35 search engines.
      - Setup instructions are cleaner
      
      
      
      ***** 2.1 *****
      
      - AWStats considers myserver and www.myserver as the same, even if "HostAliases" setup is wrong.
      - Fixed a bug making unique visitors counter too high.
      - Added ArchiveLog parameter to archive processed records into backup files.
      - Make difference between unknown browsers and unknown OS.
      - Robots stats are isolated from the rest of visitors.
      - Better keywords detection algorithm.
      - Added last time connection for each hosts
      - Added list of URL for HTTP Error 404
      - Added pages, hits and KB for each statistics
      - Added colors and links
      - Works also with IIS
      - Code a little bit cleaner and faster.
      - Images are in .png format.
      - 4 languages: English, French, Dutch, Spanish
      - 252 domains/countries, 40 browsers database, 22 OS, 250 robots, 32 search engines.
      
      
      
      ***** 1.0 *****
      
      - First version, not distributed
      ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/awstats_contrib.html���������������������������������������������������������������0000640�0001750�0001750�00000071460�12544515412�015721� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html><head>
      <meta name="description" content="AWStats Documentation - Contrib and resource page">
      <meta name="keywords" content="awstats, awstat, log, file, analyzer, contrib, plugins, resources, maxmind, geoipfree, geoip, cities, regions, countries, frontend">
      <meta name="robots" content="index,follow">
      <meta name="title" content="AWStats Documentation - Contrib and resource page">
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
      <title>AWStats Documentation - Contrib and resource page</title>
      <link rel="stylesheet" href="styles.css" type="text/css">
      <link href="https://plus.google.com/+LaurentDestailleur" rel="publisher" />
      </head>
      
      <body topmargin="10" leftmargin="5">
      
      <table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
      
      <!-- Large -->
      <tbody><tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
      <td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo1.png" border="0"></a></td>
      <td align="center" bgcolor="#9999cc">
      <br>
      <font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 7.4 Documentation</b></font><br>
      <br>
      </td>
      <td align="center" bgcolor="#9999cc">
      &nbsp;
      </td>
      </tr>
      
      </tbody></table>
      
      
      <br><br><h1 style="font-family: arial,helvetica,sanserif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Plugins, contribs and related programs</h1>
      
      You will find here description for different kinds of ressource files :<br>
      - <a href="#PLUGINS">AWStats plugins</a><br>
      - <a href="#CONTRIB">Other AWStats contribs/tools/package</a><br>
      - <a href="#RELATED">Other Non AWStats contribs/tools (not related to AWStats but related to log analysis)</a><br>
      - <a href="#DOC">Documents on AWStats or related to log analysis</a><br>
      <br>
      
      
      <br><a name="PLUGINS"></a><br>
      <font color="#665544" size="3"><b>AWStats plugins</b></font><br>
      <hr>
      Plugins are .pm files you can put in your AWStats plugins directory to add new features.<br>
      Note that you must enable the plugin by adding a new line in your config files to make
      it works (See <a href="awstats_config.html#LoadPlugin">LoadPlugin</a> parameter).<br>
      <br>
      
      <a href="#plugin_standards">Standard free plugins</a> : <b>tooltips, decodeutfkeys, ipv6, hashfiles,&nbsp; userinfo, hostinfo, clusterinfo, urlalias, timehires, timezone, rawlog,
      graphapplet, graphgooglechartsapi </b><b>geoipfree</b><br>
      <a href="#plugin_geoip">GeoIP Plugins</a> (may require other licensed product to work) :
      <b>geoip,</b><b> geoip_city_maxmind, geoip_asn_maxmind, </b><b>geoip_region_maxmind</b>,
      <b>geoip_isp_maxmind</b>,
      <b>geoip_org_maxmind</b>,
      <br>
      <br>
      
      <br><a name="plugin_standards"><b>List of standard plugins</b></a> (Provided with AWStats) :
      <br>
      
      <br><span style="font-weight: bold;">Tooltips
      </span><br><span style="font-style: italic;">Required Modules:</span> None
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description</span>: Add&nbsp;tooltips pop-up help boxes to HTML report pages.
      &nbsp;<br>Provided with AWStats (5.4+).
      
      <br>
      
      <br><span style="font-weight: bold;">DecodeUTFKeys
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Encode and URI::Escape
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span> Allow AWStats to show correctly (in language charset) keywords/keyphrases
      strings even if they were UTF8 coded by the referer search engine.
      <br>Plugin provided with AWStats (6.0+).
      
      <br>
      
      <br><span style="font-weight: bold;">IPv6
      </span><br><span style="font-style: italic;">Required Modules: </span>Net::IP and Net::DNS
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span> This plugin gives AWStats capability to make reverse DNS lookup on IPv6&nbsp;addresses.
      <br>Note: IPv6 addresses are currently incompatible with the GeoIP databases<br>Plugin provided with AWStats (5.5+)
      
      <br>
      
      <br><span style="font-weight: bold;">HashFiles
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Storable
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span> AWStats DNS cache files are read/saved as native hash files. This improves
      cache file loading speed, especially for very large web sites.
      
      <br>Plugin provided with AWStats (5.1+)
      
      <br><br><span style="font-weight: bold;">UserInfo
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;None
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:&nbsp;</span> Add&nbsp;text (Firtname, Lastname, Office Department, ...) to authenticated user&nbsp;reports for each login value.
      A text file called userinfo.myconfig.txt, with two fields (first is login,
      second is text to show, separated by a tab char) must be created in DirData&nbsp;directory.
      
      <br>Plugin provided with AWStats (5.5+)
      
      <br>
      
      <br><span style="font-weight: bold;">ClusterInfo
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;None
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span>
      Add text (for example a full hostname) to cluster reports for each
      cluster
      number.&nbsp;A text file called clusterinfo.myconfig.txt, with two
      fields (first is&nbsp;cluster number, second is text to show) separated
      by a tab character must be&nbsp;created in DirData directory. <br>Note: This plugin is useless if ShowClusterStats is set to 0 or if you don't&nbsp;use a personalized log format that contains <span style="font-style: italic;">%cluster</span> tag.
      
      <br>Plugin provided with AWStats (6.2+)
      
      <br>
      
      <br><span style="font-weight: bold;">HostInfo
      </span><br><span style="font-style: italic;">Required Modules:</span> Net::XWhois
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span>&nbsp;Add a column into host chart with a link to open a popup window that shows&nbsp;info on host (like whois records).
      
      <br>Plugin provided with AWStats (6.0+)
      
      <br>
      
      <br><span style="font-weight: bold;">UrlAliases
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;None
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span>&nbsp;Add&nbsp;text
      (Page title, description...) to URL reports before URL value.&nbsp;A
      text file called urlalias.myconfig.txt, with two fields (first is
      URL,&nbsp;second is text to show, separated by a tab char) must be
      created in DirData&nbsp;directory.
      <br>You can build your urlalias file manually or use <a href="awstats_tools.html#urlaliasbuilder">urlaliasbuilder.pl</a> tool (provided with 5.4+)
      
      <br>Plugin provided with AWStats (5.2+)
      <br>
      
      <br><span style="font-weight: bold;">TimeHiRes
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Time::HiRes
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span>&nbsp;Time reported by -showsteps option is in millisecond. For debug purpose.
      
      <br>Plugin provided with AWStats (5.1+)
      
      <br>
      
      <br><span style="font-weight: bold;">TimeZone
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Time::Local
      <br><span style="font-style: italic;">Parameters:</span> &lt;offset or local timezone&gt;<br><span style="font-style: italic;">Description:</span>
      Converts the timezone of log files before processing using the offset
      provided in the parameters. This is useful for some IIS users if logs
      are stored in GMT or for users who have servers in a different
      timezone. You must provide either the abreviated name of the timezone
      you wish to convert to or the offset value in hours. For example<br><span style="font-style: italic;">LoadPlugin="timezone +2"</span> &nbsp;would add two hours to the log timestamps<br><span style="font-style: italic;">LoadPlugin="timezone CET"</span> &nbsp;would convert the log from GMT to CET<br>Note: This plugin reduces AWStats speed by about 40%!<br>Plugin provided with AWStats (5.1+)
      
      <br>
      
      <br><span style="font-weight: bold;">Rawlog
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;None
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description: </span>This
      plugin adds a form in AWStats main page to allow users to see
      raw&nbsp;content of current log files. A display filter will also be
      displayed.
      <br>Plugin provided with AWStats (5.7+)
      
      <br>
      
      <br><span style="font-weight: bold;">GraphApplet
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;None
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span>&nbsp;Supported charts are built by a 3D graphic applet.
      <br>LoadPlugin="graphapplet"				# EXPERIMENTAL FEATURE
      
      <br>Plugin provided with AWStats (6.0+)
      
      <br><br><span style="font-weight: bold;">GraphGoogleChartAPI</span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;None
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span>
      Replaces the standard charts with free Google API generated images in
      HTML reports. If country data is available and more than one country
      has hits, a map will be generated using Google Visualizations.<br>Note:
      The machine where reports are displayed must have Internet access for
      the charts to be generated. The only data sent to Google includes the
      statistic numbers, legend names and country names. <br>Plugin provided with AWStats (6.0+)
      
      <br><br>
      
      <a name="plugin_geoip">&nbsp;</a>
      <br><span style="font-weight: bold;">Maxmind GeoIP Plugin Notes</span><br>Maxmind
      is a company that sells geolocation technology that matches IP
      addresses to countries, regions, cities and ISPs. All of their databses
      are available for an initial fee and a monthly update subscription and
      include greater accuracy and a higher frequency of updating. Some
      databases are available for free but they are not updated as often and
      may not be as accurate.<br><br><span style="text-decoration: underline;">Install:</span><br>First choose a database. When downloading a database for AWStats, please download the <span style="font-style: italic;">Binary Format</span> version. Current databases AWStats supports are:<br><span style="font-style: italic;"><br>Commercial</span>: <a href="http://www.maxmind.com/app/country?rId=awstats">Country</a>, <a href="http://www.maxmind.com/app/region?rId=awstats">Region</a>, <a href="http://www.maxmind.com/app/city?rId=awstats">City</a>, <a href="http://www.maxmind.com/app/organization?rId=awstats">Organization</a>, <a href="http://www.maxmind.com/app/isp?rId=awstats">ISP</a><br><span style="font-style: italic;">Open Source</span> <a href="http://www.maxmind.com/app/geolitecountry?rId=awstats">Country</a>, <a href="http://www.maxmind.com/app/geolitecity?rId=awstats">City</a>, <a href="http://www.maxmind.com/app/asnum?rId=awstats">ASN</a><br><br>If you choose to purchase a commercial database for country
      information, you only need to purchase the one with the greatest level
      of detail you want to appear in your report. For example, if you only
      want country information, you can purchase just the Country database.
      If you want City detail, you do <span style="font-style: italic;">not</span>
      need to purcahse the Country and Region databases, just the City
      database. (Organization and ISP databases do not include country or
      region info so you must purchase those in addition to Country, Region
      or City if you desire more information)<br><br>Next, install the
      Geo::IP Perl module. Then choose a Maxmind API to access the databse.
      Maxmind also has two Perl API's available for interacting with their
      databases. There is a a C/Perl library that will run&nbsp; quickly and
      there is a pure Perl API that is a little slower but does not require
      any C depdencies. Choose <a href="http://www.maxmind.com/en/city?rId=awstats">one of the API</a>s and install it on your machine.<br><br><span style="font-style: italic;">Parameters</span>:
      Each GeoIP database can be loaded entirely into memory or lookups can
      scan through the file. When editing your AWStats configuration, you
      have to specify if you want to use memory or file lookups. Specify
      GEOIP_STANDARD for file lookups or GEOIP_MEMORY_CACHE for memory
      loading. Please note that the memory method may crash on some Linux
      distributions so if that happens, try the standard method. Also, using
      the C API with Activestate Perl may crash on Windows machines, so use
      the PurePerl module instead.<br><br>You may also override some
      databases by generating a comma seperated text file with IP addresses
      and associated data. This is useful if you are reporting on an Intranet
      site, have a mixture of internal and external users or the data for a
      specific IP is incorrect in the database. You can use the included
      geoip_generator tool to create override files. (Overrides only available in AWStats version 6.96 and later)<br><b>Override Formats:</b><br><i>GeoIP</i>
       - ip_address,"countrycode"<br><i>GeoIP City</i> - 
      ip_address,"countrycode","regioncode","cityname","postalcode",latitude,longitude,"metrocode","areacode"<br><i>GeoIP
       ASN</i> - ip_address,"asn ispname"<br><i>GeoIP Region - </i>ip_address,"countrycode","regioncode"<br><i>GeoIP
       Org</i> - ip_address,"organisation"<i><br></i><i>GeoIP ISP</i> - 
      ip_address,"ISP"<br><br>Note: AWStats
      does not currently support IPv6 for GeoIP lookups as Maxmind only
      offers the country DB with IPv6 at this time. As Maxmind includes IPv6
      support in more DBs, we will update AWStats.<br>Enabling GeoIP plugins 
      will reduce the speed of AWStats processing.<br><br><span style="font-weight: bold;">GeoIP
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Geo::IP or Geo::IP::PurePerl (from Maxmind)
      <br><span style="font-style: italic;">Parameters:</span> [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/geoip.dat] &lt;/pathto/override.txt&gt;<br><span style="font-style: italic;">Description:</span> Country chart is built from an Internet IP-Country database.
      <br>Note: You must choose between using this plugin&nbsp;or the
      GeoIPfree plugin&nbsp;(need Perl Geo::IPfree module, database is free
      but not up to date).
      <br>Example <span style="font-style: italic;">LoadPlugin="geoip GEOIP_STANDARD /usr/local/geoip.dat /usr/local/geoip_override.txt"
      
      </span><br>Plugin provided with AWStats (5.2+)
      
      <br><br><span style="font-weight: bold;">GeoIP_City_Maxmind
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Geo::IP or Geo::IP::PurePerl (from Maxmind)
      <br><span style="font-style: italic;">Parameters:</span> [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPCity.dat] &lt;/pathto/override.txt&gt;<br><span style="font-style: italic;">Description: </span>This plugin adds a chart of hits by cities (with country and regions&nbsp;informations for major countries).
      <br>
      By enabling this plugin, you will see a new link called 'Cities' on 
      reports menu.<br>Example <span style="font-style: italic;">LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/geoip.dat /usr/local/GeoIPCity_override.txt"
      
      </span><br>Plugin provided with AWStats (6.2+)
      
      <br><br><span style="font-weight: bold;">GeoIP_ASN_Maxmind</span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Geo::IP or Geo::IP::PurePerl (from Maxmind)
      <br><span style="font-style: italic;">Parameters:</span> [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPASN.dat] &lt;/pathto/override.txt&gt; &lt;link to AS lookup&gt;<br><span style="font-style: italic;">Description: </span>This
      plugin adds a chart of AS numbers where the host IP address is
      registered. This plugin can display some ISP information if included in
      the database. You can also provide a link that will be used to lookup
      additional registration data. Put the link at the end of the parameter
      string and the report page will include the link with the full AS
      number at the end.<br>Example <span style="font-style: italic;">LoadPlugin="geoip_asn_maxmind
      GEOIP_STANDARD /usr/local/geoip.dat /usr/local/GeoIPASN_override.txt
      http://enc.com.au/itools/aut-num.php?autnum="
      </span><br>Plugin provided with AWStats (6.9+)
      
      <br><br><span style="font-weight: bold;">GeoIP_Region_Maxmind
      (Commercial Only)</span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Geo::IP or Geo::IP::PurePerl (from Maxmind)
      <br><span style="font-style: italic;">Parameters:</span> [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPRegion.dat] &lt;/pathto/override.txt&gt;<br><span style="font-style: italic;">Description: </span>This plugin adds a chart of hits by regions. Only regions for US and&nbsp;Canada can be detected at this time.
      <br>By enabling this plugin, you will see a new link called 'Regions' on reports menu. For
      the moment this link works only when AWStats reports are build as CGI (static built not yet
      supported).
      <br>Example <span style="font-style: italic;">LoadPlugin="geoip_region_maxmind GEOIP_STANDARD /usr/local/GeoIPRegion.dat /usr/local/geoip_override.txt"
      
      </span><br>Plugin provided with AWStats (6.2+)
      
      <br><br><span style="font-weight: bold;">GeoIP_ISP_Maxmind
      (Commercial Only)</span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Geo::IP or Geo::IP::PurePerl (from Maxmind)
      <br><span style="font-style: italic;">Parameters:</span> [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPISP.dat] &lt;/pathto/override.txt&gt;<br><span style="font-style: italic;">Description:</span>&nbsp;This plugin adds a chart of hits by ISP.
      <br>By enabling this plugin, you will see a new link called 'ISP' on reports menu. For
      the moment this link works only when AWStats reports are build as CGI (static built not yet
      supported).
      <br>Example <span style="font-style: italic;">LoadPlugin="geoip_isp_maxmind GEOIP_STANDARD /usr/local/GeoIPISP.dat </span><span style="font-style: italic;">/usr/local/geoip_override.txt"</span><br>Plugin provided with AWStats (6.3+)
      
      <br><br><span style="font-weight: bold;">GeoIP_Org_Maxmind
      (Commercial Only)</span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Geo::IP or Geo::IP::PurePerl (from Maxmind)
      <br><span style="font-style: italic;">Parameters:</span> [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/pathto/GeoIPOrg.dat] &lt;/pathto/override.txt&gt;<br><span style="font-style: italic;">Description:</span>&nbsp;This plugin adds a chart of hits by Organization names.
      <br>By enabling this plugin, you will see a new link called 'Organizations' on reports menu. For
      the moment this link works only when AWStats reports are build as CGI (static built not yet
      supported).
      <br>Example <span style="font-style: italic;">LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/local/GeoIPOrg.dat </span><span style="font-style: italic;">/usr/local/geoip_override.txt"</span><br>Plugin provided with AWStats (6.3+)
      
      <br><br>
      
      <br><br><span style="font-weight: bold;">GeoIPfree
      </span><br><span style="font-style: italic;">Required Modules:</span>&nbsp;Geo::IPfree version 0.2+ (from Graciliano M.P.)
      <br><span style="font-style: italic;">Parameters:</span> None<br><span style="font-style: italic;">Description:</span>&nbsp;Country
      chart is built from an Internet IP-Country database.&nbsp;This plugin
      is useless for intranet only log files.&nbsp; <br>Note: You must
      choose between using this plugin (need Perl Geo::IPfree&nbsp;module,
      database is free but not up to date) or the GeoIP plugin
      (need&nbsp;Perl Geo::IP module from Maxmind, database is also free and
      up to date). <br>Note: Activestate provide a corrupted version of Geo::IPfree 0.2 Perl&nbsp;module, so install it from elsewhere (from <a href="http://www.cpan.org/">www.cpan.org</a> for example).
      <br>This plugin reduces AWStats speed by about 10% !
      <br>Plugin provided with AWStats (5.5+).
      <br>You can find Geo::IPfree Perl Module on :
      <br>- All OS: <a href="http://www.cpan.org/">CPAN site</a>
      <br>- ActiveState: GeoIPfree module provided by Activestate is not working correctly so I removed
      the link. You can follow the following setup instead: Download from <a href="http://www.cpan.org/">CPAN site</a>
      and copy 'Geo' directory (found in 'lib') into AWStats plugins directory.
      This is a fast tip to install Geo-IPfree perl module to be used by AWStats geoipfree plugin.
      <br>Note: The Geo::IPfree database has not been updated in a long time, so using
      the <a href="awstats_contrib.html#geoip">geoip</a> plugin (using the Geo::IP Perl module, now free for countries) is highly recommended.
      <br>You can use the following tool to test your geoipfree setup: <a href="file:///files/testgeoipfree.pl">testgeoipfree.pl</a>. Just
      put this file into your plugins directory and run it.
      
      
      <br><br><a name="CONTRIB"></a><br>
      <font color="#665544" size="3"><b>Other AWStats contribs/tools/package</b></font><br>
      <hr>
      
      <br>
      All following files/products were developped and submitted by contributors.
      I haven't tried them, so I can't tell you if they work and how they work...<br>
      They can enhance AWStats use or save you time giving you a start for a new development.<br>
      <br>
      
      <!--
      <b>Other available packages (provided by contributors):</b><br>
      <a href="http://nx.dyndns.info/sme/awstats/awstats.php" target=new>A SME (E-Smith) package</a> (Based on AWStats 6.0 version)<br>
      <a href="http://www.nuonce.net/awstats-cobalt.php" target=new> Cobalt RaQ 3/4/550 Package Files </a> (Based on AWStats 5.9)<br>
      <a href="http://www.turro.org/Portal?xpc=1$@8$@1$@1&folder=20050104154634840" target=new> A war package</a><br>
      <br>
      -->
      
      <b>Other tools:</b><br>
      <br>
      
      <i>Replacement Frontend:</i><br>
      <br>
      
      <a href="http://betterawstats.com">BetterAWStats</a> is a PHP Frontend to show you AWStats data file differently.<br>
      
      <a href="http://phpnuke.org/modules.php?name=News&amp;file=article&amp;sid=7041" target="_new">AWStats PhpNuke module</a> is a module for the open source CMS PHP Nuke.<br>
      
      <a href="/files/summary4severaldomains.pl" target="_new">summary4severaldomains.pl</a> is a small perl script that build an index.html page
      with AWStats txt summary information for each domains on same page (number of pages, hits and bandwith for month).<br>
      
      <a href="http://www.telartis.nl/xcms/awstats" target="_new">AWStats Totals</a> is a php page
      that use AWStats database to show a summary for several config files, on the same page.<br>
      
      <br>
      <i>Miscellanous:</i><br>
      <br>
      
      <a href="https://github.com/ip2location/ip2location_awstats">A plugin for geoip location</a>.<br>
      
      <a href="http://wordpress.org/extend/plugins/awstats-script/">A plugin for WordPress</a> that allow WordPress users
      to add tags required by AWStats to report the "miscellanous chart".<br>
      
      <a href="http://sourceforge.net/projects/exim2awstats/">Exim2Awstats</a> is a tool to convert Exim MTA log file to a format readable by AWSTats.<br>
      
      <a href="http://www.digievo.co.uk/software.asp?category=2">Logprocess</a> automate the collection, merging, processing and archiving of IIS 
      log files in a hosting (mult-domain) environment using AWStats to generate and manage stats/reports.<br>
      
      <a href="/files/configurador.tgz" target="_new">Configurador</a> is a piece of CGI perl scripts to allow you to edit an AWStats config file from
      the web. Code comments are in Spanish but it may be a goo start to develop your own tool.
      <i>Hector Garcia Alvarez</i><br>
      
      <a href="/files/logtrans.py" target="_new">logtrans.py</a> is a python small example on how to convert an old
      log file from IIS4.0 to a new format compatible with AWStats. Don't know if it works, just here
      to provide you a code sample if you like python.<br>
      
      <a href="http://www.ruwenzori.net/code/go_awstats/" target="_new">go_awstats</a>, is a tool to automate build of
      AWStats statics reports for all config files but also for all month.<br>
      
      <a href="http://forum.topflood.com/referencement/logiciel-stat-5015.html">Stats Letter</a>, is a Perl tool to
      send AWStats reports to one or several user for one or several reports. Documentation in French only.<br>
      
      
      <br><a name="RELATED"></a><br>
      <font color="#665544" size="3"><b>Other Non AWStats contribs/tools (not related to AWStats but related to log analysis)</b></font><br>
      <hr>
      
      <a href="/files/maillog2commonlog.pl" target="_new">maillog2commonlog.pl</a> converts mail logs in
      smail or qmail format to the common log format.
      Note that if you want to analyze, with AWStats, mail log files from postfix, sendmail or qmail,
      a better solution is to use instead maillogconvert.pl preprocessor (See AWStats
      <a href="awstats_faq.html#MAIL">F.A.Q</a> about analyzing mail logs).<br>
      <i>Joey Hess, freeware.</i><br>
      
      <a href="http://www.kristoffersen.us/software/" target="_new">maillogconv.pl</a> is another mail log processor that
      can be used to change mail log files into a log file that AWStats can understand.<br>
      Note that a derivated and enhanced tool called maillogconvert.pl is provided with AWStats
      since 5.7. See <a href="awstats_faq.html#MAIL">F.A.Q</a> about analyzing mail logs to know
      how to setup AWStats with maillogconv.pl or maillogconvert.pl to analyze
      Postfix, Sendmail, Qmail or MDaemon log files.<br>
      
      <a href="http://mlc.anzac.at%20" target="_new">mlc</a> is another postfix mail logs converter (written in C).
      Try it if the maillogconvert.pl tool provided with AWStats does not work on your postfix log file.<br>
      
      <a href="/files/access_referer_agent2combined.pl" target="_new">access_referer_agent2combined.pl</a> is a perl script that converts a
      directory of common log format (CLF) access-files, referer-files and agent-files to a single combined.log
      This is usefull if you have seperate access/referer/agent logfiles and want to use all features of a loganalyzer
      that require a combined log file.<br>
      <a href="http://anonlog.sourceforge.net/" target="_new">anonlog</a> "anonymizes" your logfile by encoding sensitive information.<br>
      <i>Stephen Turner, freeware.</i><br> 
      
      <br>
      <u>If you don't like AWStats, you can try thoose other popular similar tools :</u><br>
      <a href="http://www.analog.cx/" target="_new">Analog</a>. A very old log analyzer (written in C).<br>
      <i>Stephen Turner, free software.</i><br> 
      <a href="http://www.mrunix.net/webalizer/" target="_new">Webalizer</a>. Another very old log analyzer (written in C).<br>
      <br>
      There is also commercial products you can find doing a search on 'log file analyzer' with <a href="http://www.google.com">Google</a>.<br>
      <br>
      
      
      
      <br><a name="DOC"></a><br>
      <font color="#665544" size="3"><b>Documents on AWStats or related to log analysis</b></font><br>
      <hr>
      <!--<img src="/images/us.png">-->AWStats official documentation for last version can be found here: <a href="index.html">HTML On line</a> or <a href="awstats.pdf">PDF file</a><br>
      <br>
      An intro and install doc 'Using AWStats on GNU/Linux or Windows' in <a href="http://www.chedong.com/tech/awstats.html">Chinese</a><br>
      A setup tutorial in <a href="http://www.baudelet.net/awstats.htm" target="_doc">French for Windows users</a><br>
      A setup tutorial in <a href="http://www.fpoeserv.com/?Select=Awstats" target="_new">French from Fpoeserv</a><br>
      <br>
      
      
      <br>
      <hr>
      
      <!-- You can remove this part if you distribution need documentation without external tags -->
      <!-- BEGIN_SOCIAL_NETWORKS -->
      <div class="htmldoc-ignore">
      <!-- google plus -->
      <span style="color: #bbb; font-weight: normal;">Article written by <a href="https://plus.google.com/+LaurentDestailleur?rel=author" rel="author" style="color: #ccc; font-weight: normal;">Laurent Destailleur</a>.</span><br>
      <br>
      <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
      <g:plusone></g:plusone>
      <!-- facebook -->
      <div id="fb-root"></div>
      <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));</script>
      <div class="fb-like" data-href="http://www.awstats.org/docs/awstats_contrib.html" data-layout="button_count" data-action="recommend" data-show-faces="false" data-share="true"></div>
      <br>
      <!-- twitter -->
      <a href="https://twitter.com/awstats_project" class="twitter-follow-button" data-show-count="false">Follow @awstats_project</a>
      <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
      </div>
      <!-- END_SOCIAL_NETWORKS -->
      
      </body></html>����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/awstats_compare.html���������������������������������������������������������������0000640�0001750�0001750�00000100537�12510306004�015671� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html><head>
      <meta name="description" content="AWStats Documentation - Log File analyzer comparison">
      <meta name="keywords" content="awstats, awstat, log, file, analyzer, differences, compare, comparison, analog, webalizer, market">
      <meta name="robots" content="index,follow">
      <meta name="title" content="AWStats Documentation - Log File analyzer comparison"><title>AWStats Documentation - Log File analyzer comparison</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
      <link rel="stylesheet" href="styles.css" type="text/css">
      <link href="https://plus.google.com/+LaurentDestailleur" rel="publisher" />
      <style type="text/css">
      <!--
      .style1 {color: #4444cc}
      .style2 {color: #660000}
      -->
      </style>
      </head>
      
      <body topmargin="10" leftmargin="5">
      <table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
      <!-- Large -->
      <tbody>
      <tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
      <td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo6.png" border="0"></a></td>
      
      <td align="center" bgcolor="#9999cc">
      <br>
      <font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 7.4 Documentation</b></font><br>
      <br>
      </td>
      <td align="center" bgcolor="#9999cc">&nbsp;
      
      </td>
      </tr>
      </tbody>
      </table>
      <br>
      <br>
      <h1 style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Log
      analyzers Comparisons</h1>
      <br>
      
      <a name="COMPARISON"></a><br>
      <font color="#665544" size="3"><b>Comparison
      between AWStats and other famous statistics tools</b></font><br>
      <hr>
      <table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; width: 100%;" border="0" cellpadding="4" cellspacing="0">
      <!-- Info -->
      <tbody>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left" width="33%"><b>Features/Softwares</b></td>
      <td width="14%"><b>AWStats</b></td>
      <td width="13%"><b><a href="http://www.analog.cx" target="_blank">Analog</a></b></td>
      <td width="15%"><b><a href="http://www.mrunix.net/webalizer/" target="_blank">Webalizer</a></b></td>
      <!-- <td width="12%"><b><a href="http://www.hitbox.com" target="_blank">HitBox</a></b></td>-->
      
      <td width="13%"><b><a href="http://www.sawmill.co.uk?ref=awstats" target="_blank">Sawmill
      Analytics</a></b></td>
      </tr>
      <tr align="center">
      <td align="left">Version - Date</td>
      <td>7.2 - July 2013</td>
      <td>6.0 - December 2004</td>
      <td>2.01-10 - April 2002</td>
      <!-- <td>NA</td> --> <td>8.5 - July 2011</td>
      </tr>
      
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Language</td>
      <td>Perl</td>
      <td>C</td>
      <td>C</td>
      <!-- <td>Embedded HTML tag</td> --> <td>C/Salang</td>
      </tr>
      <tr align="center">
      <td align="left">Available on all platforms</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Readable sources available</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#660000">No (obfuscated sources for compilation only)</font></td>
      </tr>
      <tr align="center">
      <td align="left">Price/Licence</td>
      <td><font color="#4444cc">Free/GPL</font></td>
      <td><font color="#4444cc">Free/GPL</font></td>
      <td><font color="#4444cc">Free/GPL</font></td>
      <!-- <td><font color=#660000>Free with adverts/Proprietary</font></td> -->
      <td>From $99 Per Profile<br>
      <a href="http://www.sawmill.co.uk/pricing.html" target="_blank"><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Lite/Pro/Ent</font></a></td>
      
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Works with Apache combined (XLF/ELF)</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Works with Apache common (CLF) log
      format</td>
      
      <td><font color="#4444cc">All features
      available with log format (b)</font></td>
      <td><font color="#4444cc">All features
      available with log format (b)</font></td>
      <td><font color="#4444cc">All features
      available with log format (b)</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">All
      features available with log format (b)</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Works with IIS (W3C) log format</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      
      <td><font color="#660000">Need a patch</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Works with personalized log format</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">Yes</font></td>
      
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Analyze Web/Ftp/Mail log files</td>
      <td><font color="#4444cc">Yes/Yes/Yes</font></td>
      <td><font color="#4444cc">Yes</font>/<font color="#660000">No/No</font></td>
      <td><font color="#4444cc">Yes</font>/<font color="#660000">No/No</font></td>
      <!-- <td>NA<font color=#660000>No/No</font></td> --> <td><font color="#4444cc">Yes/Yes/Yes (850+) </font></td>
      
      </tr>
      <tr align="center">
      <td align="left">Report and update of statistics from</td>
      <td><font color="#4444cc">Command line (CLI)
      and/or<br>
      a browser (CGI)</font></td>
      <td><font color="#4444cc">Command line (CLI)
      and/or<br>
      a browser (CGI)</font></td>
      <td><font color="#660000">Command line</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">Command
      line (CLI) and/or<br>
      a browser (CGI)<br>
      and/or HTTP API</font><br>
      </td>
      </tr>
      <tr align="center">
      <td align="left">Scheduler</td>
      <td>External (crontab, windows task manager)</td>
      <td>External (crontab, windows task manager)</td>
      <td>External (crontab, windows task manager)</td>
      <!-- <td>NA</td> --> <td>Built-in</td>
      </tr>
      
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Internal reverse DNS lookup</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">DNS cache file</td>
      <td><font color="#4444cc">Static and dynamic</font></td>
      
      <td><font color="#4444cc">Static </font><font color="#660000">or</font> <font color="#4444cc">dynamic</font></td>
      <td><font color="#4444cc">Static </font><font color="#660000">or</font> <font color="#4444cc">dynamic</font></td>
      <!-- <td>NA</td> --> <td><font color="#4444cc">Yes
      (per update, or custom)</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Process logs spitted by load
      balancing systems</td>
      
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <!-- Who -->
      <tr align="center">
      <td align="left">Report number of "human" visits</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes (Sessions)</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report unique "human" visitors</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes (Visitors)</font></td>
      
      </tr>
      <tr align="center">
      <td align="left">Report session duration</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Not ordered records tolerance and
      reorder for visits</td>
      
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">Visits not supported</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td>?</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Statistics for visits are based on</td>
      <td><font color="#4444cc">Pages *****</font></td>
      <td><font color="#660000">Not supported</font></td>
      
      <td><font color="#4444cc">Pages *****</font></td>
      <!-- <td><font color=#4444cc>Pages *****</font></td> --> <td><font color="#4444cc">Pages *****</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Statistics for unique visitors are
      based on</td>
      <td><font color="#4444cc">Pages *****</font></td>
      <td><font color="#660000">Not supported</font></td>
      <td><font color="#660000">Not supported</font></td>
      <!-- <td><font color=#4444cc>Pages *****</font></td> --> <td><font color="#4444cc">Client IP / Cookie<br>
      
      Custom *****</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report countries</td>
      <td><font color="#4444cc">From IP location<br>
       or domain name</font></td>
      <td><font color="#660000">Domain name</font></td>
      <td><font color="#660000">Domain name</font></td>
      <!-- <td>?</td> --> <td><font color="#4444cc">From
      IP location<br>
      or domain name</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report regions (US and Canada states)</td>
      <td>Need <a href="http://www.maxmind.com/en/city?rId=awstats"><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Maxmind
      Regions</font></a> database</td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font><br>
      
      GeoLite City included</td>
      </tr>
      <tr align="center">
      <td align="left">Report cities and major countries
      regions</td>
      <td>Need <a href="http://www.maxmind.com/en/city?rId=awstats"><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Maxmind
      Cities</font></a> database</td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font><br>
      
      GeoLite City included</td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report ISP</td>
      <td>Need <a href="http://www.maxmind.com/en/city?rId=awstats"><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Maxmind
      ISP</font></a> database</td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td>Need
      
      <a href="http://www.maxmind.com/en/city?rId=awstats"><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Maxmind
      ISP</font></a> database</td>
      </tr>
      <tr align="center">
      <td align="left">Report Organizations name</td>
      <td>Need <a href="http://www.maxmind.com/en/city?rId=awstats"><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Maxmind
      Org</font></a> database</td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      
      <!-- <td><font color=#660000>No</font></td> --> <td>Need
      <a href="http://www.maxmind.com/en/city?rId=awstats"><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Maxmind
      Org</font></a> database</td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report hosts</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      
      </tr>
      <tr align="center">
      <td align="left">Report WhoIs informations on hosts</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report authenticated users</td>
      
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report/Filter robots (nb detected)</td>
      <td><font color="#4444cc">Yes/Yes (793**)</font></td>
      <td><font color="#4444cc">Yes / Yes</font><font color="#660000">(8**)</font></td>
      <td><font color="#660000">No/No</font></td>
      <!-- <td><font color=#660000>No/No</font></td> --> <td><font color="#4444cc">Yes/Yes (250**)</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report/Filter worms (nb of families detected)</td>
      <td><font color="#4444cc">Yes/Yes (5)</font></td>
      <td><font color="#660000">No / No</font></td>
      <td><font color="#660000">No/No</font></td>
      
      <!-- <td><font color=#660000>No/No</font></td> --> <td><font color="#4444cc">Yes/Yes (4)</font></td>
      </tr>
      <!-- When -->
      <tr align="center">
      <td align="left">Report rush hours</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report days of week</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <!-- What -->
      <tr align="center">
      <td align="left">Report most often viewed pages</td>
      
      <td><font color="#4444cc">Yes<br>
      </font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report entry pages</td>
      <td><font color="#4444cc">Yes<br>
      </font></td>
      
      <td><font color="#660000">No</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report exit pages</td>
      <td><font color="#4444cc">Yes<br></font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#4444cc">Yes</font></td>
      
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Not ordered records tolerance and reorder for entry/exit pages</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">Entry/Exit not supported</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td>?</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      
      <tr align="center">
      <td align="left">Detection of CGI pages as pages (and not just hits)</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">Only if prog ends by a defined value</font></td>
      <td><font color="#660000">Only if prog ends by a defined value</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report pages by directory</td>
      <td><font color="#660000">No</font></td>
      
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report pages with last access time/average size</td>
      <td><font color="#4444cc">Yes/Yes</font></td>
      <td><font color="#4444cc">Yes</font>/<font color="#660000">No</font></td>
      
      <td><font color="#660000">No/No</font></td>
      <!-- <td><font color=#660000>No/No</font></td> --> <td><font color="#4444cc">Yes</font>/<font color="#660000">No</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Dynamic filter on hosts/pages/referers report</td>
      <td><font color="#4444cc">Yes/Yes/Yes</font></td>
      <td><font color="#660000">No/No/No</font></td>
      <td><font color="#660000">No/No/No</font></td>
      
      <!-- <td><font color=#660000>No/No/No</font></td> --> <td><font color="#4444cc">Yes/Yes/Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report web compression statistics (mod_gzip,mod_deflate)</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><span class="style2">No</span></td>
      </tr>
      
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report file types</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report by file size</td>
      <td><font color="#660000">No</font></td>
      
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report OS (nb detected)</td>
      <td><font color="#4444cc">Yes (84)</font></td>
      <td><font color="#4444cc">Yes</font><font color="#660000"> (29)</font></td>
      
      <td><font color="#660000">No (0)</font></td>
      <!-- <td>?</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report browsers (nb detected)</td>
      <td><font color="#4444cc">Yes (210*)</font></td>
      <td><font color="#4444cc">Yes</font><font color="#660000"> (9*)</font></td>
      <td><font color="#4444cc">Yes</font><font color="#660000"> (4*)</font></td>
      
      <!-- <td><font color=#4444cc>Yes</font><font color=#660000> (<20*)</font></td> -->
      <td><font color="#4444cc">Yes (~20*) </font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report details of browsers versions</td>
      <td><font color="#4444cc">Major and minor
      versions</font></td>
      <td><font color="#4444cc">Major versions by
      default,<br>
      minor with SUBBROW option</font></td>
      <td><font color="#4444cc">Major an minor
      versions</font></td>
      <!-- <td><font color=#4444cc>Major and minor versions</font></td> -->
      <td><font color="#4444cc">Major and minor
      versions</font></td>
      
      </tr>
      <tr align="center">
      <td align="left">Report screen sizes</td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes &amp; Depths</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      
      <td align="left">Report tech supported by browser
      for Java/Flash/PDF</td>
      <td><font color="#4444cc">Yes/Yes/Yes</font></td>
      <td><font color="#660000">No/No/No</font></td>
      <td><font color="#660000">No/No/No</font></td>
      <!-- <td><font color=#660000>No/No/No</font></td> --> <td><font color="#660000">No/No/No</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report audio format supported by
      browser for Real/QuickTime/Mediaplayer</td>
      <td><font color="#4444cc">Yes/Yes/Yes</font></td>
      
      <td><font color="#660000">No/No/No</font></td>
      <td><font color="#660000">No/No/No</font></td>
      <!-- <td><font color=#660000>No/No/No</font></td> --> <td><font color="#660000">No/No/No</font></td>
      </tr>
      <!-- Referrer -->
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report search engines used (nb
      detected)</td>
      <td><font color="#4444cc">Yes (228***)</font></td>
      <td><font color="#4444cc">Yes </font><font color="#660000">(24)</font></td>
      
      <td><font color="#660000">No (0)</font></td>
      <!-- <td><font color=#4444cc>Yes</font><font color=#660000> (<20 ***)</font></td> -->
      <td><font color="#4444cc">Yes (67***)</font></td>
      </tr>
      <tr align="center">
      <td align="left">Report keywords/keyphrases used on
      search engines (nb detected)</td>
      <td><font color="#4444cc">Yes/Yes (118***)</font></td>
      <td><font color="#4444cc">Yes</font>/<font color="#660000">No</font><font color="#660000">
      (29***)</font></td>
      
      <td><font color="#660000">No</font>/<font color="#4444cc">Yes</font><font color="#660000">
      (14***)</font></td>
      <!-- <td><font color=#4444cc>Yes</font>/<font color=#660000>No (<20***)</font></td> -->
      <td><font color="#4444cc">Yes/Yes (67***)</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report external refering web page
      with/without query</td>
      <td><font color="#4444cc">Yes/Yes</font></td>
      <td><font color="#660000">No/No</font></td>
      
      <td><font color="#660000">No</font>/<font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font>/<font color=#660000>No</font></td> -->
      <td><font color="#4444cc">Yes/Yes</font></td>
      </tr>
      <!-- Misc -->
      <tr align="center">
      <td align="left">Report HTTP Errors</td>
      <td><font color="#4444cc">Yes<br>
      </font></td>
      <td><font color="#4444cc">Yes</font></td>
      
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Report 404 Errors</td>
      <td><font color="#4444cc">Nb +
      List&nbsp;referer<br>
      </font></td>
      <td><font color="#660000">Nb only</font></td>
      <td><font color="#660000">Nb only</font></td>
      
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Nb + List last date/referer</font></td>
      </tr>
      <tr align="center">
      <td align="left">Other personalized reports for
      miscellanous/marketing purpose</td>
      <td><font color="#4444cc">Yes<br>
      </font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font></td> --> <td><font color="#4444cc">Yes</font></td>
      
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Daily statistics </td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Weekly statistics </td>
      
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td>?</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Monthly statistics </td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Yearly statistics </td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <td><font color="#4444cc">Yes</font></td>
      <!-- <td><font color=#4444cc>Yes</font></td> --> <td><font color="#4444cc">Yes</font></td>
      
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Custom date range </td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      <!-- <td>?</td> --> <td><font color="#4444cc">Yes</font></td>
      </tr>
      <tr align="center">
      <td align="left">Benchmark with no DNS lookup in
      lines/seconds<br>
      
      (full features enabled, with XLF format, cygwin Perl 5.8, Athlon 1Ghz)</td>
      <td><font color="#660000">5200****</font></td>
      <td><font color="#4444cc">39000****</font></td>
      <td><font color="#660000">12000****</font></td>
      <!-- <td>NA<br>No program to run</td> --> <td>Not
      calculated</td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Benchmark with DNS lookup in
      lines/seconds<br>
      (full features enabled, with XLF format, cygwin Perl 5.8, Athlon 1Ghz)</td>
      
      <td><font color="#4444cc">80****</font></td>
      <td><font color="#4444cc">80****</font></td>
      <td><font color="#4444cc">80****</font></td>
      <!-- <td>NA<br>No program to run</td> --> <td>Not
      calculated</td>
      </tr>
      <tr align="center">
      <td align="left">Analyzed data save format (to use
      with third tools)</td>
      <td><font color="#4444cc">Structured text file
      or XML</font></td>
      <td><font color="#4444cc">Text files with
      OUTPUT option</font></td>
      
      <td><font color="#660000">Flat text file</font></td>
      <!-- <td><font color=#660000>Not possible</font></td> --> <td><font color="#660000">Flat text file</font>/<font color="#4444cc">MySQL/MS SQL/Oracle</font></td>
      </tr>
      <tr align="center" bgcolor="#eeeeee">
      <td align="left">Export statistics to PDF</td>
      <td>Experimental</td>
      <td><font color="#660000">No</font></td>
      <td><font color="#660000">No</font></td>
      
      <!-- <td><font color=#660000>No</font></td> --> <td><span class="style1">Yes</span><font color="#660000"> &amp; <br>
      HTML (static/email) &amp; CSV</font></td>
      </tr>
      <tr align="center">
      <td align="left">Graphical statistics in one page /
      several / or frames</td>
      <td><font color="#4444cc">Yes/Yes/Yes</font></td>
      <td><font color="#4444cc">Yes</font>/<font color="#660000">No/No</font></td>
      
      <td><font color="#4444cc">Yes/Yes</font>/<font color="#660000">No</font></td>
      <!-- <td><font color=#660000>No</font>/<font color=#4444cc>Yes/Yes</font></td> -->
      <td><font color="#4444cc">Yes/Yes/Yes</font></td>
      </tr>
      </tbody>
      </table>
      <br>
      <font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 8pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
      * This number is not really the number of browsers detected. All
      browsers (known and unknown) can be detected by products that support
      user agent listing (AWStats,Analog,Webalizer,Sawmill). The 'browser
      detection feature' and number is the number of known browsers for which
      different versions/ids of same browser are grouped by default in one
      browser name.<br>
      <br>
      ** AWStats can detect robots visits: All robots among the most common
      are detected, list is in <a href="http://www.robotstxt.org/wc/active/all.txt">robotslist.txt</a>
      
      (250Kb). Products that are not able to do this give you false
      information, above all if your site has few visitors. For example, if
      you're site was submitted to all famous search engines, robots can make
      500 visits a month, to find updates or to see if your site is still
      online. So, if you have only 2000 visits a month, products with no
      robot detection capabilities will report 2500 visits (A 25% error !).
      AWStats will report 500 visits from robots and 2000 visits from human
      visitors.Sawmill Analytics uses a "currently active" list of robots
      based on the <a href="http://www.robotstxt.org/db.html" target="_blank">robotstxt.org</a> database.<br>
      <br>
      *** AWStats has url syntax rules for the most popular search engines
      (that's the 'number detected'). Those rules are updated with AWStats
      updates. But AWStats has also an algorithm to detect keywords of
      unknown search engines with unknown url syntax rules. Sawmill uses
      unique syntax to detect 67 search engines, and you can add any number
      of custom SE's. <br>
      <br>
      **** Most log analyzers have poor (or not at all) robots, search
      engines, os or browsers detection capabilities and less features (no or
      poor visits count, no filter rules, etc...).<br>
      It is not possible to add all AWStats features to other log analyzers,
      so don't forget that benchmarks results are for 'different features'.
      For this benchmark, I did just complete Webalizer and Analog robots or
      search engines databases with part of AWStats database. So Webalizer
      config file was completed with this <a href="http://www.awstats.org/files/webalizeradd.txt">file</a>,
      Analog config file was completed with this <a href="http://www.awstats.org/files/analogadd.txt">file</a>.
      Note that without this very light add (using default conf file),
      Webalizer speed is 3 times faster, Analog is 15% faster).<br>
      
      Benchmark was made on a combined (XLF/CLF) log record on an Athlon 1GHz.<br>
      You must keep in mind that all this times are without reverse DNS
      lookup. DNS lookup speed depends on your system, network and Internet
      but not on the log analyzer you use. For this reason, DNS lookup is
      disabled in all log analyzer benchmarks. Don't forget that DNS lookup
      is 95% (even with a lookup cache) of the time used by a log analyzer,
      so if your host is not already resolved in log file and DNS lookup is
      enable, the total time of the process will be nearly the same whatever
      is the speed of the log analyzer.<br>
      <br>
      ***** Some visitors
      use a lot of proxy servers to surf (ie: AOL users), this means it's
      possible that several hosts (with several IP addresses) are used to
      reach your site for only one visitor (ie: one proxy server download the
      page and 2 other servers download all images). Because of this, if
      stats of unique visitors are made on "Hits", 3 users are reported but
      it's wrong. So AWStats, considers only HTML pages to count unique
      visitors. This decrease the error (not totally, because
      it's always possible that a proxy server download one HTML frame and
      another one download another frame).</font><font style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 8pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
      Sawmill Analytics allows you to choose what you define as a visitor -
      by default the client IP is used, but you can use a cookie (persistant
      or session) or any custom string, or combination of string from teh log
      data. <br>
      <br>
      (a) Data were provided by Sawmill company (Graham Smith).<br>
      <br>
      (b) With such log format, there is no user agent information in log
      file, so some reports are broken. For example, it's not possible to
      make reports on browser or os for (information is not stored in log
      file). To solve this, use another log format (like the combined
      format). </font>
      <hr>
      
      
      <!-- You can remove this part if you distribution need documentation without external tags -->
      <!-- BEGIN_SOCIAL_NETWORKS -->
      <div class="htmldoc-ignore">
      <!-- google plus -->
      <span style="color: #bbb; font-weight: normal;">Article written by <a href="https://plus.google.com/+LaurentDestailleur?rel=author" rel="author" style="color: #ccc; font-weight: normal;">Laurent Destailleur</a>.</span><br>
      <br>
      <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
      <g:plusone></g:plusone>
      <!-- facebook -->
      <div id="fb-root"></div>
      <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));</script>
      <div class="fb-like" data-href="http://www.awstats.org/docs/awstats_compare.html" data-layout="button_count" data-action="recommend" data-show-faces="false" data-share="true"></div>
      <br>
      <!-- twitter -->
      <a href="https://twitter.com/awstats_project" class="twitter-follow-button" data-show-count="false">Follow @awstats_project</a>
      <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
      </div>
      <!-- END_SOCIAL_NETWORKS -->
      
      
      </body></html>
      �����������������������������������������������������������������������������������������������������������������������������������������������������������������awstats-7.4/docs/awstats_security.html��������������������������������������������������������������0000640�0001750�0001750�00000023570�12510306004�016113� 0����������������������������������������������������������������������������������������������������ustar  �sk������������������������������sk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html>
      <head>
      <meta name="description" content="AWStats Documentation - Security page">
      <meta name="keywords" content="awstats, awstat, security, tips">
      <meta name="robots" content="index,follow">
      <meta name="title" content="AWStats Documentation - Security page">
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
      <title>AWStats Documentation - Security page</title>
      <link rel="stylesheet" href="styles.css" type="text/css">
      <link href="https://plus.google.com/+LaurentDestailleur" rel="publisher" />
      </head>
      
      <body topmargin=10 leftmargin=5>
      
      
      <table style="font: 10pt arial,helvetica,verdana" cellpadding=0 cellspacing=0 border=0 bgcolor=#FFFFFF width=100%>
      
      <!-- Large -->
      <tr style="font: 10pt arial,helvetica,verdana">
      <td bgcolor=#9999cc align=center><a href="/"><img src="images/awstats_logo6.png" border=0></a></td>
      <td bgcolor=#9999cc align=center>
      <br>
      <font style="font: 16pt arial,helvetica,sans-serif" color=#EEEEFF><b>AWStats logfile analyzer 7.4 Documentation</b></font><br>
      <br>
      </td>
      <td bgcolor=#9999cc align=center>
      &nbsp;
      </td>
      </tr>
      
      </table>
      
      
      <br><br><H1 style="font: 26px arial,helvetica,sans-serif">Little Tips about Security</H1>
      
      <br>
      A lot of AWStats users have several web site to manage. This is particularly true for web hosting providers.
      The most common things you would like to do is to prevent user xxx (having a site www.xxx.com) to see
      statistics of user yyy (having a site www.yyy.com).<br>
      <br><br>
      This is example of possible way of working:<br>
      <br><br>
      
      <br><a name="1"><H2 style="font: 22px arial,helvetica,sans-serif color: #606060"><u>1) HIGHLY SECURED POLICY</u></H2></a><br>
      <font color=blue><b>Policy</b></font>:<br>
      You have several different config/domains owned by different users and you want to build statistics for each
      of them. You don't need that your customer have "real-time" statistics.<br>
      This is a very good choice for web hosting providers with few but very large web sites of important customers.<br>
      <font color=blue><b>Advantage</b></font>:<br>
      Very highly secured.<br>
      <font color=blue><b>Disadvantage</b></font>:<br>
      Statistics are static, no dynamic update/view.<br>
      <font color=blue><b>How</b></font>:<br>
      All statistics pages for a config/domain file are built in static html files using <b>-output -staticlinks</b> option.<br>
      There is no CGI use of AWStats and static built pages are stored in a web protected <b>realm</b> to
      be securely viewed by correct allowed users only (or sent by mails).<br>
      If users have a command line access (telnet) on statistics server, you must set correct permissions on AWStats
      database files. Set all AWStats database files (built by the update process) for config/domain1 to have read/write
      for <i>user1</i> (or an admin user) and NO read and NO write permissions for any other users.<br>
      Then, check that the <a href="awstats_config.html#SaveDatabaseFilesWithPermissionsForEveryone">SaveDatabaseFilesWithPermissionsForEveryone</a> parameter is set 0 in your config/domain files.<br>
      If AWStats database files/directory for config/domain1 are read protected, only allowed users can see statistics for config/domain1.<br>
      If AWStats database files/directory for config/domain1 are write protected, only allowed users can update statistics for config/domain1.<br>
      <br><br>
      
      <br><a name="2"><H2 style="font: 22px arial,helvetica,sans-serif color: #606060"><u>2) MEDIUM SECURED POLICY</u></H2></a><br>
      <font color=blue><b>Policy</b></font>:<br>
      You have several config/domain and several users. You want to specify which user can see or update dynamically
      statistics for each config/domain.<br>
      This is one of the most popular way of working.<br>
      <font color=blue><b>Advantage</b></font>:<br>
      Statistics are dynamic. High level of manageability.<br>
      <font color=blue><b>Disadvantage</b></font>:<br>
      AWStats database files must still be readable by anonymous web server user, so if an experienced user can have an access to
      the server (telnet) where AWStats database files are stored, he can succeed in installing and running a "hacked" version
      of AWStats that ignores value of parameter AllowAccessFromWebToAuthenticatedUsersOnly.<br>
      <font color=blue><b>How</b></font>:<br>
      awstats.pl file must be saved in a web protected <b>realm</b> to force a visitor to enter its username/password
      to access AWStats CGI program.<br>
      <br>
      <u>Example of directives you can add into Apache to have awstats.pl in a web protected realm:</u><br>
      <i>
      &lt;Files "awstats.pl"&gt;<br>
      AuthUserFile /path/to/.passwd<br>
      AuthGroupFile /path/to/.group<br>
      AuthName "Restricted Area For Customers"<br>
      AuthType Basic<br>
      require valid-user<br>
      &lt;/Files&gt;
      </i><br>
      If you add such directives into a .htaccess file, you must also check that the <i>AllowOverride</i> directive is set
      to <i>All</i> in Apache config file to allow the use of .htaccess files.<br>
      <br>
      To known how to create a protected realm for servers other than Apache, see your web server manual.<br>
      <br>
      Then edit each config/domain file you want to be protected to set <a href="awstats_config.html#AllowAccessFromWebToAuthenticatedUsersOnly">AllowAccessFromWebToAuthenticatedUsersOnly</a> to 1.<br>
      You can also edit list of authorized users in the <a href="awstats_config.html#AllowAccessFromWebToFollowingAuthenticatedUsers">AllowAccessFromWebToFollowingAuthenticatedUsers</a> parameter.<br>
      You can also specify a range of allowed browsers IP Addresses with the <a href="awstats_config.html#AllowAccessFromWebToFollowingIPAddresses">AllowAccessFromWebToFollowingIPAddresses</a> parameter.<br>
      
      You can also set <a href="awstats_config.html#SaveDatabaseFilesWithPermissionsForEveryone">SaveDatabaseFilesWithPermissionsForEveryone</a> parameter to 0 in all config/domain files,
      except if you want to allow update from web with option <a href="awstats_config.html#AllowToUpdateStatsFromBrowser">AllowToUpdateStatsFromBrowser</a>=1. But this is
      not recommanded as you need to give read/write permission for Web server user on all history
      files (Except if you setuid AWStats script for each authorized user, but this make setup much harder).<br>
      The following parameters <a href="awstats_config.html#ErrorMessages">ErrorMessages</a> and <a href="awstats_config.html#DebugMessages">DebugMessages</a> are
      also parameters related to security.<br>
      <br>
      <br>
      Other tip: If the <b>AWSTATS_FORCE_CONFIG</b> environment variable is defined, AWStats will always use
      the config file <i>awstats.VALUE_OF_AWSTATS_FORCE_CONFIG.conf</i> as the config/domain file.
      So if you add this environment variable into your web server environment, for example by adding the line<br>
      <i>SetEnv AWSTATS_FORCE_CONFIG configvalueforthisdomain</i><br>
      in your Apache <i>&lt;VirtualHost&gt;</i> directive group in httpd.conf (with other directives), AWStats will use the config file
      called <i>awstats.configvalueforthisdomain.conf</i> to choose which statistics used,
      even if a visitor try to force the config/domain file with the URL '<i>http://mydomain/cgi-bin/awstats.pl?config=otherdomain</i>'.
      This might be usefull for thoose who edit their config/domain file with <a href="awstats_config.html#AllowAccessFromWebToFollowingAuthenticatedUsers">AllowAccessFromWebToFollowingAuthenticatedUsers</a>="__REMOTE_USER__"</i>
      instead of maintaining the list of authorized users into each AWStats config file.<br>
      <br>
      <br>
      
      
      <br><a name="3"><H2 style="font: 22px arial,helvetica,sans-serif color: #606060"><u>3) NO SECURITY POLICY</u></H2></a><br>
      <font color=blue><b>Policy</b></font>:<br>
      You have only one hosts or several hosts or users but you don't need to manage particular permissions
      for your different config/domain statistics.<br>
      <font color=blue><b>Advantage</b></font>:<br>
      Setup is very easy (No need of particular setup). Statistics are dynamic.<br>
      <font color=blue><b>Disadvantage</b></font>:<br>
      No way to prevent stats for config/domain to be seen by a user that known the
      config/domain name and the url syntax to see stats of a particular config/domain.<br>
      <font color=blue><b>How</b></font>:<br>
      No particular things to do (You can however easily use <a href="awstats_config.html#AllowAccessFromWebToFollowingIPAddresses">AllowAccessFromWebToFollowingIPAddresses</a> parameter
      to have a minimum of security).<br>
      <br>
      <br>
      <br>
      
      There is a lot of possible use for AWStats combining all its options/parameters with all web servers options/parameters and operating
      systems security features. Just use the one you need...<br>
      <br>
      
      
      <br>
      <hr>
      
      <!-- You can remove this part if you distribution need documentation without external tags -->
      <!-- BEGIN_SOCIAL_NETWORKS -->
      <div class="htmldoc-ignore">
      <!-- google plus -->
      <span style="color: #bbb; font-weight: normal;">Article written by <a href="https://plus.google.com/+LaurentDestailleur?rel=author" rel="author" style="color: #ccc; font-weight: normal;">Laurent Destailleur</a>.</span><br>
      <br>
      <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
      <g:plusone></g:plusone>
      <!-- facebook -->
      <div id="fb-root"></div>
      <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));</script>
      <div class="fb-like" data-href="http://www.awstats.org/docs/awstats_security.html" data-layout="button_count" data-action="recommend" data-show-faces="false" data-share="true"></div>
      <br>
      <!-- twitter -->
      <a href="https://twitter.com/awstats_project" class="twitter-follow-button" data-show-count="false">Follow @awstats_project</a>
      <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
      </div>
      <!-- END_SOCIAL_NETWORKS -->
      
      </body>
      </html>
      ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������