summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-11-20 16:56:11 +0000
committerKarl Berry <karl@freefriends.org>2008-11-20 16:56:11 +0000
commitc0c091e5b6a1e5cc7816178df4d725290b8364ab (patch)
tree206ea9c94063a415d517e5f5cd115615e0f78484
parent2ef1581f8d9e92ff91fb3bf3907af849c01c86bc (diff)
texcount 2.1 (19nov08)
git-svn-id: svn://tug.org/texlive/trunk@11374 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/TeXcount.pl1026
-rw-r--r--Master/texmf-dist/doc/support/texcount/QuickReference.pdf1138
-rw-r--r--Master/texmf-dist/doc/support/texcount/QuickReference.tex121
-rw-r--r--Master/texmf-dist/doc/support/texcount/README5
-rw-r--r--Master/texmf-dist/doc/support/texcount/TeXcount.pdfbin139639 -> 147012 bytes
-rw-r--r--Master/texmf-dist/doc/support/texcount/TeXcount.tex166
-rw-r--r--Master/texmf-dist/doc/support/texcount/macros.tex39
-rwxr-xr-xMaster/texmf-dist/scripts/texcount/TeXcount.pl1026
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check3
9 files changed, 2872 insertions, 652 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/TeXcount.pl b/Build/source/texk/texlive/linked_scripts/TeXcount.pl
index 1ed70fc8a56..8b68e4984c0 100755
--- a/Build/source/texk/texlive/linked_scripts/TeXcount.pl
+++ b/Build/source/texk/texlive/linked_scripts/TeXcount.pl
@@ -2,15 +2,33 @@
use strict;
use warnings;
use Term::ANSIColor;
-#--- --- ---#
use POSIX qw(locale_h);
use locale;
setlocale(LC_CTYPE,"no_NO");
-my $versionnumber="2.0";
-my $versiondate="2008 Feb 10";
+my $versionnumber="2.1";
+my $versiondate="2008 Nov 02";
-#--- --- ---#
+###### Set CMD specific settings and variables
+
+# Options and states
+my $verbose=0;
+my $showcodes=1;
+my $showstates=0;
+my $showsubcounts=0;
+my $htmlstyle=0;
+my $includeTeX=0;
+my $briefsum=0;
+my $totalflag=0;
+my @sumweights;
+my $globalworkdir="";
+
+# Global variables
+my $blankline=0;
+my @filelist;
+my $workdir;
+
+###### Set global settings and variables
### Macros for headers
# Macros that identify headers: i.e. following token or
@@ -109,10 +127,10 @@ my %TeXgroup=('document'=>1,'letter'=>1,'titlepage'=>0,
my %TeXfloatinc=('\caption'=>[3]);
### Macros for including tex files
-# Allows \macro{file} or \macro file. If the value is 1, the filetype .tex will
-# be added if file is without a filetype; if the value is 0, this will not be
-# done.
-my %TeXfileinclude=('\input'=>0,'\include'=>1);
+# Allows \macro{file} or \macro file. If the value is 0, the filename will
+# be used as is; if it is 1, the filetype .tex will be added if the
+# filename is without filetype; if it is 2, the filetype .tex will be added.
+my %TeXfileinclude=('\input'=>1,'\include'=>2);
### Count labels
# Labels used to describe the counts
@@ -120,113 +138,284 @@ my @countlabel=('Files','Words in text','Words in headers',
'Words in float captions','Number of headers','Number of floats',
'Number of math inlines','Number of math displayed');
-# Styles
+### Break points
+# Definition of macros that define break points that start a new subcount.
+# The values given are used as labels.
+my %BreakPointsOptions;
+$BreakPointsOptions{'none'}={};
+$BreakPointsOptions{'part'}={%{$BreakPointsOptions{'none'}},'\part'=>'Part'};
+$BreakPointsOptions{'chapter'}={%{$BreakPointsOptions{'part'}},'\chapter'=>'Chapter'};
+$BreakPointsOptions{'section'}={%{$BreakPointsOptions{'chapter'}},'\section'=>'Section'};
+$BreakPointsOptions{'subsection'}={%{$BreakPointsOptions{'section'}},'\subsection'=>'Subsection'};
+$BreakPointsOptions{'default'}=$BreakPointsOptions{'subsection'};
+my %BreakPoints=%{$BreakPointsOptions{'none'}};
+
+### Print styles
+# Definition of different print styles: maps of class labels
+# to ANSI codes. Class labels are as used by HTML styles.
my @STYLES=();
my %STYLE;
$STYLES[0]={'error'=>'bold red'};
$STYLES[1]={%{$STYLES[0]},
'word1'=>'blue','word2'=>'bold blue','word3'=>'blue',
'grouping'=>'red','document'=>'red','mathgroup'=>'magenta',
- 'state'=>'cyan underline'};
+ 'state'=>'cyan underline','sumcount'=>'yellow'};
$STYLES[2]={%{$STYLES[1]},
- 'word0'=>'yellow','word-1'=>'yellow',
'command'=>'green','exclgroup'=>'yellow','exclmath'=>'yellow',
'ignore'=>'cyan'};
$STYLES[3]={%{$STYLES[2]},
- 'tc'=>'bold yellow','comment'=>'yellow','option'=>'yellow','fileinclude'=>'bold green'};
+ 'tc'=>'bold yellow','comment'=>'yellow','option'=>'yellow',
+ 'fileinclude'=>'bold green'};
$STYLES[4]={%{$STYLES[3]}};
-# Options and states
-my $verbose=0;
-my $showstates=0;
-my $htmlstyle=0;
-my $blankline=0;
-my $includeTeX=0;
-my $briefsum=0;
+### Word regexp pattern list
+# List of regexp patterns that should be analysed as words.
+my $specialchars='\\\\(ae|AE|o|O|aa|AA)';
+my $modifiedchars='\\\\[\'\"\`\~\^\=](\w|\{\w\})';
+my @WordPatterns=('(\w+\.)+\w+\.?','\w+([\-\']\w+)*');
+my @WordPatternsRelaxed=('([\w\-\']|'.$modifiedchars.'|'.$specialchars.'(\{\})?|\{'.$specialchars.'\})+');
-#--- --- ---#
+### Macro option regexp list
+# List of regexp patterns to be gobbled as macro option in and after
+# a macro.
+my @MacroOptionPatterns=('\[(\w|[,\-\s\~\.\:\;\+\?\*\_\=])*\]');
+my @MacroOptionPatternsRelaxed=('\[[^\[\]\n]*\]');
-## SHORT HELP AND INFO
-if (!defined @ARGV) {
- print_version();
- print_syntax();
- print_reference();
- exit;
-} elsif ($ARGV[0]=~/^(\-(h|\?|\-?help)|\/\?)$/) {
- print_help();
- exit;
-} elsif ($ARGV[0]=~/^\-?\-version$/) {
- print_version();
- exit;
-} elsif ($ARGV[0]=~/^\-?\-license$/) {
- print_license();
- exit;
-}
-
-# PROCESS ARGUMENTS AND FILES
-my $totalcount=new_count();
-my @toplevelfiles;
-my @filelist;
-foreach my $arg (@ARGV) {
- if ($arg eq '-noinc') {$includeTeX=0; next;}
- if ($arg eq '-inc') {$includeTeX=1; next;}
- if ($arg eq '-brief') {$briefsum=1; next;}
- if ($arg eq '-v0') {$verbose=0; next;}
- if ($arg eq '-v1') {$verbose=1; next;}
- if ($arg eq '-vv' || $arg eq '-v2') {$verbose=2; next;}
- if ($arg eq '-vvv' || $arg eq '-v3' || $arg eq '-v') {$verbose=3; next;}
- if ($arg eq '-vvvv' || $arg eq '-v4') {$verbose=3; $showstates=1; next;}
- if ($arg =~ /^\-showstate/ ){$showstates=1; next;}
- if ($arg =~ /^\-html/ ) {
- $ENV{'ANSI_COLORS_DISABLED'} = 1;
- $htmlstyle = $arg eq '-htmlcore' ? 1 : 2;
- if ($htmlstyle>1) {html_head();}
- next;
- }
- if ($arg=~/^\-(nocol|nc$)/) {
- $ENV{'ANSI_COLORS_DISABLED'} = 1;
- next;
- }
- if ($arg=~/^\-/) {
- print 'Invalid opton '.$arg."\n";
+###### Main script
+
+###################################################
+
+MAIN(@ARGV);
+
+###################################################
+
+
+#########
+######### Main routines
+#########
+
+# MAIN ROUTINE: Handle arguments, then parse files
+sub MAIN {
+ my @args=@_;
+ my @toplevelfiles=Parse_Arguments(@args);
+ Apply_Options();
+ if (scalar(@toplevelfiles)==0) {
+ if ($showcodes>1) {print_help_style();}
+ else {print_error("No files specified.","p","error");}
+ } else {
+ conditional_print_help_style();
+ my $totalcount=parse_file_list(@toplevelfiles);
+ conditional_print_total($totalcount);
+ }
+ Close_Output();
+}
+
+# Checks arguments, exits on exit condition
+sub Check_Arguments {
+ my @args=@_;
+ if (!@args) {
+ print_version();
print_syntax();
+ print_reference();
+ exit;
+ } elsif ($args[0]=~/^(\-?\-(h|\?|help)|\/(\?|h))$/) {
+ print_help();
+ exit;
+ } elsif ($args[0]=~/^\-?\-(ver|version)$/) {
+ print_version();
exit;
+ } elsif ($args[0]=~/^\-?\-(lic|license)$/) {
+ print_license();
+ exit;
+ }
+ return 1;
+}
+
+# Parses arguments, sets options (global) and returns file list
+sub Parse_Arguments {
+ my @args=@_;
+ Check_Arguments(@args);
+ my @files;
+ foreach my $arg (@ARGV) {
+ if (Parse_Option($arg)) {next;}
+ if ($arg=~/^\-/) {
+ print 'Invalid opton '.$arg."\n";
+ print_syntax();
+ exit;
+ }
+ $arg=~s/\\/\//g;
+ push @files,$arg;
+ }
+ return @files;
+}
+
+# Parse individual option parameters
+sub Parse_Option {
+ my $arg=shift @_;
+ return parse_options_parsing($arg)
+ || parse_options_sums($arg)
+ || parse_options_output($arg)
+ || parse_options_format($arg)
+ ;
+}
+
+sub parse_options_parsing {
+ my $arg=shift @_;
+ if ($arg eq '-inc') {$includeTeX=1;}
+ elsif ($arg eq '-noinc') {$includeTeX=0;}
+ elsif ($arg eq '-dir') {$globalworkdir=undef;}
+ elsif ($arg=~/^-dir=(.*)$/) {$globalworkdir=$1;}
+ elsif ($arg eq '-relaxed') {
+ @MacroOptionPatterns=@MacroOptionPatternsRelaxed;
+ @WordPatterns=@WordPatternsRelaxed;
+ }
+ else {return 0;}
+ return 1;
+}
+
+sub parse_options_sums {
+ my $arg=shift @_;
+ if ($arg=~/^-sum(=(.+))?$/) {option_sum($2);}
+ elsif ($arg=~/^-(sub|subcounts?)(=(.+))?$/) {option_subcount($3);}
+ else {return 0;}
+ return 1;
+}
+
+sub option_subcount {
+ my $arg=shift @_;
+ $showsubcounts=1;
+ if (!defined $arg) {
+ %BreakPoints=%{$BreakPointsOptions{'default'}};
+ } elsif (my $option=$BreakPointsOptions{$arg}) {
+ %BreakPoints=%{$option};
+ } else {
+ print STDERR "Warning: Option value ".$arg." not valid, using default instead.\n";
+ %BreakPoints=%{$BreakPointsOptions{'default'}};
}
- $arg=~s/\\/\//g;
- push @toplevelfiles,$arg;
}
-%STYLE=%{$STYLES[$verbose]};
-for my $file (<@toplevelfiles>) {
+
+sub option_sum {
+ my $arg=shift @_;
+ if (!defined $arg) {
+ @sumweights=(1,1,1,0,0,1,1);
+ } elsif ($arg=~/^(\d+(,\d+){0,6})$/) {
+ @sumweights=split(',',$1);
+ } else {
+ print STDERR "Warning: Option value ".$arg." not valid, ignoring option.\n";
+ }
+}
+
+sub parse_options_format {
+ my $arg=shift @_;
+ if ($arg eq '-brief') {$briefsum=1; return 1;}
+ elsif ($arg eq '-total') {$totalflag=1; return 1;}
+ elsif ($arg eq '-1') {$briefsum=1;$totalflag=1;}
+ elsif ($arg eq "-html" ) {option_no_colours();$htmlstyle = 2;}
+ elsif ($arg eq "-htmlcore" ) {option_no_colours();$htmlstyle = 1;}
+ elsif ($arg=~/^\-(nocol|nc$)/) {option_no_colours();}
+ elsif ($arg eq '-codes') {
+ $showcodes=2;
+ if ($verbose==0) {$verbose=3;}
+ }
+ elsif ($arg eq '-nocodes') {$showcodes=0;}
+ else {return 0;}
+ return 1;
+}
+
+sub parse_options_output {
+ my $arg=shift @_;
+ if ($arg eq "-v0") {$verbose=0;}
+ elsif ($arg eq "-v1") {$verbose=1;}
+ elsif ($arg eq '-vv' || $arg eq '-v2') {$verbose=2;}
+ elsif ($arg eq '-vvv' || $arg eq '-v3' || $arg eq '-v') {$verbose=3;}
+ elsif ($arg eq '-vvvv' || $arg eq '-v4') {$verbose=3; $showstates=1;}
+ elsif ($arg =~ /^\-showstates?$/ ){$showstates=1;}
+ else {return 0;}
+ return 1;
+}
+
+# Parse file list and return total count
+sub parse_file_list {
+ my @filelist=@_;
+ my $listtotalcount=new_count("TOTAL COUNT");
+ for my $file (<@filelist>) {
+ my $filetotalcount=parse_file($file);
+ add_count($listtotalcount,$filetotalcount);
+ }
+ return $listtotalcount;
+}
+
+# Parse file and included files, and return total count
+sub parse_file {
+ my $file=shift @_;
+ $workdir=$globalworkdir;
+ if (!defined $workdir) {
+ $workdir=$file;
+ $workdir =~ s/^((.*[\\\/])?)[^\\\/]+$/$1/;
+ }
@filelist=($file);
+ if ($htmlstyle) {print "\n<div class='filegroup'>\n";}
+ my $filetotalcount=new_count("SUM COUNT FOR ".$file);
foreach my $f (@filelist) {
my $tex=TeXfile($f);
my $fpath=$f;
- $fpath=~s/^(.*[\\\/])[^\\\/]+/$1/;
+ $fpath=~s/^((.*[\\\/])?)[^\\\/]+$/$1/;
if (!defined $tex) {
- print "File not found or not readable: ".$f."\n";
+ #print_error("File not found or not readable: ".$f."\n");
+ formatprint("File not found or not readable: ".$f."\n","p","error");
} else {
parse($tex);
- print "\n";
- print_count($tex->{'count'},'FILE: '.$f);
- print "\n";
- add_count($totalcount,$tex->{'count'});
+ my $filecount=add_subcount($tex);
+ if (!$totalflag) {
+ print_count($filecount);
+ print "\n";
+ }
+ add_count($filetotalcount,$filecount);
}
}
+ if ($htmlstyle) {print "</div>\n\n";}
+ return $filetotalcount;
}
-if (${$totalcount}[0]>1) {
- print "\n";
- formatprint('Total','h1');
- print_count($totalcount,'SUM');
+
+######
+###### Subroutines
+######
+
+###### Option handling
+
+# Apply options to set values
+sub Apply_Options {
+ %STYLE=%{$STYLES[$verbose]};
+ if ($htmlstyle>1) {html_head();}
}
-if ($htmlstyle>1) {
- html_tail();
+
+# Close the output, e.g. adding HTML tail
+sub Close_Output {
+ if ($htmlstyle>1) {
+ html_tail();
+ }
}
+sub option_no_colours {
+ $ENV{'ANSI_COLORS_DISABLED'} = 1;
+}
+# Print count (total) if conditions are met
+sub conditional_print_total {
+ my $sumcount=shift @_;
+ if ($totalflag || get_count($sumcount,0)>1) {
+ if ($totalflag && $briefsum && @sumweights) {
+ print total_count($sumcount);
+ } else {
+ if ($htmlstyle) {
+ formatprint("Total word count",'h2');
+ }
+ print_count($sumcount);
+ }
+ }
+}
-#########
-######### Subroutines
-#########
+###### TeX File handle
sub TeXfile {
my $filename=shift @_;
@@ -235,7 +424,7 @@ sub TeXfile {
}
sub TeXcode {
- my ($texcode,$filename)=@_;
+ my ($texcode,$filename,$title)=@_;
my %TeX=();
$TeX{'filename'}=$filename;
if (!defined $filename) {
@@ -245,204 +434,39 @@ sub TeXcode {
} else {
$TeX{'filepath'}='';
}
+ if (defined $title) {}
+ elsif (defined $filename) {$title="FILE: ".$filename;}
+ else {$title="Word count";}
$TeX{'line'}=$texcode;
$TeX{'next'}=undef;
$TeX{'type'}=undef;
$TeX{'style'}=undef;
$TeX{'printstate'}=undef;
$TeX{'eof'}=0;
- $TeX{'count'}=new_count();
- $TeX{'count'}[0]++;
+ my $countsum=new_count($title);
+ $TeX{'countsum'}=$countsum;
+ my $count=new_count("_top_");
+ $TeX{'count'}=$count;
+ inc_count(\%TeX,0);
+ my @countlist=();
+ $TeX{'countlist'}=\@countlist;
+ $countsum->{'subcounts'}=\@countlist;
return \%TeX;
}
-sub set_style {
- my ($tex,$style)=@_;
- if (!(($tex->{'style'}) && ($tex->{'style'} eq '-'))) {$tex->{'style'}=$style;}
-}
-
-sub flush_style {
- my ($tex,$style)=@_;
- set_style($tex,$style);
- flush_next($tex);
-}
-
-sub line_return {
- my $blank=shift @_;
- if ($blank>$blankline) {
- if ($htmlstyle) {print "<br>\n";} else {print "\n";}
- $blankline++;
- }
-}
-
-sub print_style {
- my ($text,$style,$state)=@_;
- (($verbose>=0) && (defined $text) && (defined $style)) || return;
- my $colour;
- ($colour=$STYLE{$style}) || return;
- if (($colour) && !($colour eq '-')) {
- if ($htmlstyle) {
- print "<span class='".$style."'>".$text."</span>";
- } else {
- print Term::ANSIColor::colored($text,$colour);
- }
- if ($state) {
- print_style($state,'state');
- }
- $blankline=-1;
- }
-}
-
-sub print_error {
- my $text=shift @_;
- line_return(1);
- print_style("### ".$text." ###",'error');
- line_return(1);
-}
-
-sub formatprint {
- my ($text,$tag,$class)=@_;
- my $break=($text=~s/\n$//);
- if ($htmlstyle && defined $tag) {
- print '<'.$tag;
- if ($class) {print " class='".$class."'";}
- print '>'.$text.'</'.$tag.'>';
- } else {
- print $text;
- }
- if ($break) {print "\n";}
-}
-
sub read_file {
my $filename=shift @_;
open(FH,"<".$filename."") || return undef;
if ($verbose) {
- #line_return(1);
formatprint("File: ".$filename."\n",'h2');
$blankline=0;
}
- my @text=();
- while (my $line=<FH>) {
- push @text,$line;
- }
+ my @text=<FH>;
close(FH);
return join('',@text);
}
-sub next_token {
- my $tex=shift @_;
- my ($next,$type);
- if (defined $tex->{'next'}) {print_style($tex->{'next'}.' ',$tex->{'style'});}
- $tex->{'style'}=undef;
- while (defined ($next=get_next_token($tex))) {
- $type=$tex->{'type'};
- if ($type==0) {
- print_style($next,'comment');
- } elsif ($type==9) {
- if ($verbose) {line_return(1);}
- } else {
- return $next;
- }
- }
- return $next;
-}
-
-sub flush_next {
- my $tex=shift @_;
- if (defined $tex->{'next'}) {
- print_style($tex->{'next'}.' ',$tex->{'style'},$tex->{'printstate'});
- }
- $tex->{'printstate'}=undef;
- $tex->{'style'}='-';
-}
-
-sub get_next_token {
- # Token (or token group) category:
- # 0: comment
- # 1: word (or other forms of text or text components)
- # 2: symbol (not word, e.g. punctuation)
- # 3: macro
- # 4: curly braces {}
- # 5: brackets []
- # 6: maths
- # 999: end of line or blank line
- # 666: TeXcount instruction (%TC:instruction)
- my $tex=shift @_;
- my $next;
- (defined ($next=get_token($tex,'\%+TC:[^\n]*',666))) && return $next;
- (defined ($next=get_token($tex,'\%[^\n]*',0))) && return $next;
- (defined ($next=get_token($tex,'\n',9))) && return $next;
- (defined ($next=get_token($tex,'\\\\[\{\}]',2))) && return $next;
- (defined ($next=get_token($tex,'(\w+\.)+\w+\.?',1))) && return $next;
- (defined ($next=get_token($tex,'\w+([\-\']\w+)*',1))) && return $next;
- (defined ($next=get_token($tex,'[\"\'\`:\.,\(\)\[\]!\+\-\*=/\^\_\@\<\>\~\#\&]',2))) && return $next;
- (defined ($next=get_token($tex,'\\\\([a-zA-Z_]+|[^a-zA-Z_])',3))) && return $next;
- (defined ($next=get_token($tex,'[\{\}]',4))) && return $next;
- (defined ($next=get_token($tex,'[\[\]]',5))) && return $next;
- (defined ($next=get_token($tex,'\$\$',6))) && return $next;
- (defined ($next=get_token($tex,'\$',6))) && return $next;
- (defined ($next=get_token($tex,'.',999))) && return $next;
- (defined ($next=get_token($tex,'[^\s]+',999))) && return $next;
- $tex->{'eof'}=1;
- return undef;
-}
-
-sub get_token {
- my ($tex,$regexp,$type)=@_;
- if (!defined $regexp) {print_error("ERROR in get_token: undefined regex.");}
- if (!defined $tex->{'line'}) {print_error("ERROR in get_token: undefined tex-line. ".$tex->{'next'});}
- if ( $tex->{'line'} =~ s/^($regexp)[ \t\r\f]*// ) {
- $tex->{'next'}=$1;
- $tex->{'type'}=$type;
- return $1;
- }
- return undef;
-}
-
-sub new_count {
- my @count=(0,0,0,0,0,0,0,0);
- # files, text words, header words, float words,
- # headers, floats, math-inline, math-display;
- return \@count;
-}
-
-sub count_word {
- my ($count,$type,$word,$style,$verb)=@_;
- ($word) || ($word="");
- ($style) || ($style=0);
- ($verb) || ($verb=0);
- if ($type>0) {${$count}[$type]++;}
- if ($verb >= $verbose) {
- }
-}
-
-sub print_count {
- my ($count,$header)=@_;
- if ($briefsum) {
- if ($htmlstyle) {print "<p class='count'>\n";}
- print ${$count}[1]."+".${$count}[2]."+".${$count}[3].
- " (".${$count}[4]."/".${$count}[5]."/".${$count}[6]."/".${$count}[7].") ".
- $header;
- if ($htmlstyle) {print "</p>\n";}
- return;
- }
- if ($htmlstyle) {print "<dl class='count'>\n";}
- if (defined $header) {
- formatprint($header."\n",'dt','header');
- }
- for (my $i=1;$i<8;$i++) {
- formatprint($countlabel[$i].': ','dt');
- formatprint(${$count}[$i]."\n",'dd');
- }
- if ($htmlstyle) {print "</dl>\n";}
-}
-
-sub add_count {
- my ($a,$b)=@_;
- for (my $i=0;$i<8;$i++) {
- ${$a}[$i]+=${$b}[$i];
- }
-}
+###### Parsing routines
sub parse {
my ($tex)=@_;
@@ -471,7 +495,6 @@ sub parse_unit {
print_error("CRITICAL ERROR: Invalid parser status!");
exit;
}
- my $count=$tex->{'count'};
my $substat;
if ($showstates) {
if (defined $end) {
@@ -509,7 +532,7 @@ sub parse_unit {
} elsif ($tex->{'type'}==1) {
# word
if ($status>0) {
- ${$count}[$status]++;
+ inc_count($tex,$status);
set_style($tex,'word'.$status);
}
} elsif ($next eq '{') {
@@ -519,25 +542,31 @@ sub parse_unit {
set_style($tex,'ignore');
} elsif ($tex->{'type'}==3) {
# macro call
+ if (my $label=$BreakPoints{$next}) {
+ if ($tex->{'line'}=~ /^[*]?(\s*\[.*?\])*\s*\{(.+?)\}/ ) {
+ $label=$label.': '.$2;
+ }
+ add_subcount($tex,$label);
+ }
set_style($tex,'command');
if ($next eq '\begin' && $status!=-2) {
- parse_begin_end($tex,$count,$status);
+ parse_begin_end($tex,$status);
} elsif (($status==-1) && ($substat=$TeXfloatinc{$next})) {
# text included from float
gobble_macro_parms($tex,$substat);
} elsif ($status==-9 && defined ($substat=$TeXpreamble{$next})) {
# parse preamble include macros
- if (defined $TeXheader{$next}) {${$count}[4]++;}
+ if (defined $TeXheader{$next}) {inc_count($tex,4);}
gobble_macro_parms($tex,$substat,1);
} elsif ($status<0) {
# ignore
gobble_option($tex);
} elsif ($next eq '\(') {
# math inline
- parse_math($tex,$count,$status,6,'\)');
+ parse_math($tex,$status,6,'\)');
} elsif ($next eq '\[') {
# math display
- parse_math($tex,$count,$status,7,'\]');
+ parse_math($tex,$status,7,'\]');
} elsif ($next eq '\def') {
# ignore \def...
$tex->{'line'} =~ s/^([^\{]*)\{/\{/;
@@ -546,14 +575,14 @@ sub parse_unit {
parse_unit($tex,-2);
} elsif (defined (my $addsuffix=$TeXfileinclude{$next})) {
# include file: queue up for parsing
- parse_include_file($tex,$count,$status,$addsuffix);
+ parse_include_file($tex,$status,$addsuffix);
} elsif (defined ($substat=$TeXmacro{$next})) {
# macro: exclude options
- if (defined $TeXheader{$next}) {${$count}[4]++;}
+ if (defined $TeXheader{$next}) {inc_count($tex,4);}
gobble_macro_parms($tex,$substat,$status);
} elsif (defined ($substat=$TeXmacroword{$next})) {
# count macro as word (or a given number of words)
- ${$count}[$status]+=$substat;
+ inc_count($tex,$status,$substat);
set_style($tex,'word'.$status);
} elsif ($next =~ /^\\[^\w\_]/) {
} else {
@@ -561,10 +590,12 @@ sub parse_unit {
}
} elsif ($next eq '$') {
# math inline
- parse_math($tex,$count,$status,6,'$');
+ parse_math($tex,$status,6,'$');
} elsif ($next eq '$$') {
# math display (unless already in inlined math)
- if (! $end eq '$') {parse_math($tex,$count,$status,7,'$$');}
+ if (!(defined $end && $end eq '$')) {
+ parse_math($tex,$status,7,'$$');
+ }
}
if (!defined $end) {return;}
}
@@ -573,21 +604,32 @@ sub parse_unit {
sub gobble_option {
my $tex=shift @_;
flush_next($tex);
- if ($tex->{'line'} =~ s/^(\[(\w|[,\-\s\~\.\:\;\+\?\*\_\=])*\])//) {
- print_style($1,'option');
- return $1;
+ foreach my $pattern (@MacroOptionPatterns) {
+ if ($tex->{'line'}=~s/^($pattern)//) {
+ print_style($1,'option');
+ return $1;
+ }
}
return undef;
}
sub parse_tc {
my ($tex)=@_;
+ my $next=$tex->{'next'};
set_style($tex,'tc');
- if ($tex->{'next'}=~/^\%+TC:\s*(\w+)\s+([\\]*\w+)\s+([^\s\n]+)(\s+([0-9]+))?/) {
- my $instr=$1;
- my $macro=$2;
- my $param=$3;
- my $option=$5;
+ flush_next($tex);
+ if (!($next=~s/^\%+TC:\s*(\w+)\s*// )) {
+ print_error('Warning: TC command should have format %TC:instruction [macro] [parameters]');
+ return;
+ };
+ my $instr=$1;
+ if ($instr=~/^(break)$/) {
+ if ($instr eq 'break') {add_subcount($tex,$next);}
+ } elsif ($next=~/^([\\]*\w+)\s+([^\s\n]+)(\s+([0-9]+))?/) {
+ # Format = TC:word macro
+ my $macro=$1;
+ my $param=$2;
+ my $option=$4;
if ($param=~/^\[([0-9,]+)\]$/) {$param=[split(',',$1)];}
if (($instr eq 'macro') || ($instr eq 'exclude')) {$TeXmacro{$macro}=$param;}
elsif ($instr eq 'header') {$TeXheader{$macro}=$param;$TeXmacro{$macro}=$param;}
@@ -596,24 +638,34 @@ sub parse_tc {
elsif ($instr eq 'group') {$TeXmacro{'begin'.$macro}=$param;$TeXgroup{$macro}=$option;}
elsif ($instr eq 'floatinclude') {$TeXfloatinc{$macro}=$param;}
elsif ($instr eq 'fileinclude') {$TeXfileinclude{$macro}=$param;}
+ elsif ($instr eq 'breakmacro') {$BreakPoints{$macro}=$param;}
else {print_error("Warning: Unknown TC command: ".$instr);}
- } elsif ($tex->{'next'}=~/^\%+TC:\s*(\w+)/) {
- my $instr=$1;
- print_error("Warning: Unknown TC command: ".$instr);
+ } elsif ($instr eq 'ignore') {
+ tc_ignore_input($tex);
+ } else {
+ print_error("Warning: Invalid TC command format: ".$instr);
}
}
+sub tc_ignore_input {
+ my ($tex)=@_;
+ set_style($tex,'ignore');
+ parse_unit($tex,-3,"%TC:endignore");
+ set_style($tex,'tc');
+ flush_next($tex);
+}
+
sub parse_math {
- my ($tex,$count,$status,$substat,$end)=@_;
+ my ($tex,$status,$substat,$end)=@_;
my $localstyle=$status>0 ? 'mathgroup' : 'exclmath';
- if ($status>0) {${$count}[$substat]++;}
+ if ($status>0) {inc_count($tex,$substat);}
set_style($tex,$localstyle);
parse_unit($tex,0,$end);
set_style($tex,$localstyle);
}
sub parse_begin_end {
- my ($tex,$count,$status)=@_;
+ my ($tex,$status)=@_;
my $localstyle=$status>0 ? 'grouping' : 'exclgroup';
flush_style($tex,$localstyle);
gobble_option($tex);
@@ -635,11 +687,11 @@ sub parse_begin_end {
if ($status<=0 && $status<$substat) {$substat=$status;}
if (($status>0) && ($substat==-1)) {
# Count float
- ${$count}[5]++;
+ inc_count($tex,5);
}
if ($status>0 and $substat>3) {
# count item, exclude contents
- ${$count}[$substat]++;
+ inc_count($tex,$substat);
$substat=0;
}
parse_unit($tex,$substat,'\end');
@@ -653,7 +705,7 @@ sub parse_begin_end {
}
sub parse_include_file {
- my ($tex,$count,$status,$addsuffix)=@_;
+ my ($tex,$status,$addsuffix)=@_;
$tex->{'line'} =~ s/^\{([^\{\}\s]+)\}// ||
$tex->{'line'} =~ s/^\s*([^\{\}\%\\\s]+)// ||
return;
@@ -661,8 +713,10 @@ sub parse_include_file {
if ($status>0) {
print_style($&,'fileinclude');
my $fname=$1;
- if ($addsuffix && ($fname=~/^[^\.]+$/)) {$fname.='.tex';}
- if ($includeTeX) {push @filelist,$tex->{'filepath'}.$fname;}
+ if ($addsuffix==2) {$fname.='.tex';}
+ elsif ($addsuffix==1 && ($fname=~/^[^\.]+$/)) {$fname.='.tex';}
+ #if ($includeTeX) {push @filelist,$tex->{'filepath'}.$fname;}
+ if ($includeTeX) {push @filelist,$workdir.$fname;}
} else {
print_style($&,'ignored');
}
@@ -710,7 +764,264 @@ sub new_status {
return $substat;
}
-### HTML context
+sub next_token {
+ my $tex=shift @_;
+ my ($next,$type);
+ if (defined $tex->{'next'}) {print_style($tex->{'next'}.' ',$tex->{'style'});}
+ $tex->{'style'}=undef;
+ while (defined ($next=get_next_token($tex))) {
+ $type=$tex->{'type'};
+ if ($type==0) {
+ print_style($next,'comment');
+ } elsif ($type==9) {
+ if ($verbose) {line_return(1,$tex);}
+ } else {
+ return $next;
+ }
+ }
+ return $next;
+}
+
+
+sub get_next_token {
+ # Token (or token group) category:
+ # 0: comment
+ # 1: word (or other forms of text or text components)
+ # 2: symbol (not word, e.g. punctuation)
+ # 3: macro
+ # 4: curly braces {}
+ # 5: brackets []
+ # 6: maths
+ # 9: line break in file
+ # 999: end of line or blank line
+ # 666: TeXcount instruction (%TC:instruction)
+ my $tex=shift @_;
+ my $next;
+ (defined ($next=get_token($tex,'\%+TC:[^\n]*',666))) && return $next;
+ (defined ($next=get_token($tex,'\%[^\n]*',0))) && return $next;
+ (defined ($next=get_token($tex,'\n',9))) && return $next;
+ (defined ($next=get_token($tex,'\\\\[\{\}]',2))) && return $next;
+ foreach my $pattern (@WordPatterns) {
+ (defined ($next=get_token($tex,$pattern,1))) && return $next;
+ }
+ (defined ($next=get_token($tex,'[\"\'\`:\.,\(\)\[\]!\+\-\*=/\^\_\@\<\>\~\#\&]',2))) && return $next;
+ (defined ($next=get_token($tex,'\\\\([a-zA-Z_]+|[^a-zA-Z_])',3))) && return $next;
+ (defined ($next=get_token($tex,'[\{\}]',4))) && return $next;
+ (defined ($next=get_token($tex,'[\[\]]',5))) && return $next;
+ (defined ($next=get_token($tex,'\$\$',6))) && return $next;
+ (defined ($next=get_token($tex,'\$',6))) && return $next;
+ (defined ($next=get_token($tex,'.',999))) && return $next;
+ (defined ($next=get_token($tex,'[^\s]+',999))) && return $next;
+ $tex->{'eof'}=1;
+ return undef;
+}
+
+sub get_token {
+ my ($tex,$regexp,$type)=@_;
+ if (!defined $regexp) {print_error("ERROR in get_token: undefined regex.");}
+ if (!defined $tex->{'line'}) {print_error("ERROR in get_token: undefined tex-line. ".$tex->{'next'});}
+ if ( $tex->{'line'} =~ s/^($regexp)[ \t\r\f]*// ) {
+ $tex->{'next'}=$1;
+ $tex->{'type'}=$type;
+ return $1;
+ }
+ return undef;
+}
+
+###### Count handling routines
+
+sub new_count {
+ my ($title)=@_;
+ my @cnt=(0,0,0,0,0,0,0,0);
+ my %count=('count'=>\@cnt,'title'=>$title);
+ # files, text words, header words, float words,
+ # headers, floats, math-inline, math-display;
+ return \%count;
+}
+
+sub inc_count {
+ my ($tex,$type,$value)=@_;
+ my $count=$tex->{'count'};
+ if (!defined $value) {$value=1;}
+ ${$count->{'count'}}[$type]+=$value;
+}
+
+sub get_count {
+ my ($count,$type)=@_;
+ return ${$count->{'count'}}[$type];
+}
+
+sub total_count {
+ my ($count)=@_;
+ my $sum=0;
+ for (my $i=scalar(@sumweights);$i-->0;) {
+ $sum+=get_count($count,$i+1)*$sumweights[$i];
+ }
+ return $sum;
+}
+
+sub print_count {
+ my ($count,$header)=@_;
+ if ($briefsum && @sumweights) {
+ print_count_total($count,$header);
+ } elsif ($briefsum) {
+ if ($htmlstyle) {print "<p class='briefcount'>";}
+ print_count_brief($count,$header);
+ if ($htmlstyle) {print "</p>\n";}
+ } else {
+ print_count_details($count,$header);
+ }
+}
+
+sub print_count_with_header {
+ my ($count,$header)=@_;
+ if (!defined $header) {$header=$count->{'title'};}
+ if (!defined $header) {$header="";}
+ return $count,$header;
+}
+
+sub print_count_total {
+ my ($count,$header)=print_count_with_header(@_);
+ if ($htmlstyle) {print "<p class='count'>".$header;}
+ print total_count($count);
+ if ($htmlstyle) {print "</p>\n";}
+ else {print ": ".$header;}
+}
+
+sub print_count_brief {
+ my ($count,$header)=print_count_with_header(@_);
+ my $cnt=$count->{'count'};
+ print ${$cnt}[1]."+".${$cnt}[2]."+".${$cnt}[3].
+ " (".${$cnt}[4]."/".${$cnt}[5]."/".${$cnt}[6]."/".${$cnt}[7].") ".
+ $header;
+}
+
+sub print_count_details {
+ my ($count,$header)=print_count_with_header(@_);
+ if ($htmlstyle) {print "<dl class='count'>\n";}
+ if (defined $header) {
+ formatprint($header."\n",'dt','header');
+ }
+ if (get_count($count,0)>1) {
+ formatprint($countlabel[0].': ','dt');
+ formatprint(get_count($count,0)."\n",'dd');
+ }
+ if (@sumweights) {
+ formatprint('Sum count: ','dt');
+ formatprint(total_count($count)."\n",'dd');
+ }
+ for (my $i=1;$i<8;$i++) {
+ formatprint($countlabel[$i].': ','dt');
+ formatprint(get_count($count,$i)."\n",'dd');
+ }
+ my $subcounts=$count->{'subcounts'};
+ if ($showsubcounts && defined $subcounts && scalar(@{$subcounts})>1) {
+ formatprint("Subcounts: text+headers+captions (#headers/#floats/#inlines/#displayed)\n",'dt');
+ foreach my $subcount (@{$subcounts}) {
+ if ($htmlstyle) {print "<dd class='briefcount'>";}
+ print_count_brief($subcount);
+ if ($htmlstyle) {print "</dd>";}
+ print "\n";
+ }
+ }
+ if ($htmlstyle) {print "</dl>\n";}
+}
+
+sub add_count {
+ my ($a,$b)=@_;
+ for (my $i=0;$i<8;$i++) {
+ ${$a->{'count'}}[$i]+=${$b->{'count'}}[$i];
+ }
+}
+
+sub add_subcount {
+ my ($tex,$title)=@_;
+ add_count($tex->{'countsum'},$tex->{'count'});
+ push @{$tex->{'countlist'}},$tex->{'count'};
+ $tex->{'count'}=new_count($title);
+ return $tex->{'countsum'};
+}
+
+###### Printing routines
+
+sub set_style {
+ my ($tex,$style)=@_;
+ if (!(($tex->{'style'}) && ($tex->{'style'} eq '-'))) {$tex->{'style'}=$style;}
+}
+
+sub flush_style {
+ my ($tex,$style)=@_;
+ set_style($tex,$style);
+ flush_next($tex);
+}
+
+sub line_return {
+ my ($blank,$tex)=@_;
+ if ($blank>$blankline) {
+ if ((defined $tex) && @sumweights) {
+ my $num=total_count($tex->{'count'});
+ print_style(" [".$num."]","sumcount");
+ }
+ linebreak();
+ $blankline++;
+ }
+}
+
+sub linebreak {
+ if ($htmlstyle) {print "<br>\n";} else {print "\n";}
+}
+
+sub print_style {
+ my ($text,$style,$state)=@_;
+ (($verbose>=0) && (defined $text) && (defined $style)) || return 0;
+ my $colour;
+ ($colour=$STYLE{$style}) || return;
+ if (($colour) && !($colour eq '-')) {
+ if ($htmlstyle) {
+ print "<span class='".$style."'>".$text."</span>";
+ } else {
+ print Term::ANSIColor::colored($text,$colour);
+ }
+ if ($state) {
+ print_style($state,'state');
+ }
+ $blankline=-1;
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub print_error {
+ my $text=shift @_;
+ line_return(1);
+ print_style("### ".$text." ###",'error');
+ line_return(1);
+}
+
+sub formatprint {
+ my ($text,$tag,$class)=@_;
+ my $break=($text=~s/\n$//);
+ if ($htmlstyle && defined $tag) {
+ print '<'.$tag;
+ if ($class) {print " class='".$class."'";}
+ print '>'.$text.'</'.$tag.'>';
+ } else {
+ print $text;
+ }
+ if ($break) {print "\n";}
+}
+
+sub flush_next {
+ my $tex=shift @_;
+ if (defined $tex->{'next'}) {
+ print_style($tex->{'next'}.' ',$tex->{'style'},$tex->{'printstate'});
+ }
+ $tex->{'printstate'}=undef;
+ $tex->{'style'}='-';
+}
+
+###### HTML routines
sub html_head {
print '
@@ -718,13 +1029,11 @@ sub html_head {
<head>
<style>
<!--
-body {width:100%;padding:5;margin:5 10 5 5;}
+body {width:auto;padding:5;margin:5;}
.error {font-weight:bold;color:#f00;font-style:italic;}
-.parse {font-size: 80%; background: #eef;}
.word1,.word2,.word3 {color: #009;}
.word2 {font-weight: 700;}
.word3 {font-style: italic;}
-.word-1 {color: #66c;}
.command {color: #c00;}
.option {color: #cc0;}
.grouping, .document {color: #900; font-weight:bold;}
@@ -735,14 +1044,19 @@ body {width:100%;padding:5;margin:5 10 5 5;}
.tc {color: #999; font-weight:bold;}
.comment {color: #999; font-style: italic;}
.state {color: #990; font-size: 70%;}
+.sumcount {color: #999; font-size: 80%;}
.fileinclude {color: #696; font-weight:bold;}
dl.count {background: #cfc; color: 009;}
-dl.count dt.header {font-weight: 700; font-style: italic; float: none;}
-dl.count dt {clear: both; float: left;}
-dl.count dd {font-weight: 700;}
+dl.count dt.header {font-weight: bold; font-style: italic; float: none;}
+dl.count dt {clear: both; float: left; margin-right: .5em;}
+dl.count dd {font-weight: bold;}
+dl.count dd.briefcount {font-weight: 700; clear: both; font-size:80%; font-weight:normal; margin-left:8pt;}
.warning {color: #c00; font-weight: 700;}
-.parse, .count {border: solid 1px #999; margin: 0pt; padding: 4pt;}
+.parse, .count, .stylehelp, .filegroup {border: solid 1px #999; margin: 0pt; padding: 4pt;}
+.parse {font-size: 80%; background: #eef;}
.parse {border-bottom:none;}
+.stylehelp {font-size: 80%; background: #ffc; margin-bottom: 8pt;}
+.filegroup {background: #efe; margin-bottom: 8pt;}
-->
</style>
</head>
@@ -755,8 +1069,7 @@ sub html_tail {
print '</body></html>';
}
-
-### HELP AND INFO
+###### Help routines
sub print_version {
print "TeXcount version ".$versionnumber.", ".$versiondate.'.';
@@ -767,18 +1080,43 @@ sub print_syntax {
Syntax: TeXcount.pl [options] files
Options:
+ -relaxed Uses relaxed rules for word and option handling:
+ i.e. allows more general cases to be counted as
+ either words or macros.
-v Verbose (same as -v3)
-v0 Do not present parsing details
-v1 Verbose: print parsed words, mark formulae
-v2 More verbose: also print ignored text
-v3 Even more verbose: include comments and options
+ -v4 Same as -v3 -showstate
-showstate Show internal states (with verbose)
-brief Only prints a brief, one line summary of counts
+ -sum, -sum= Make sum of all word and equation counts. May also
+ use -sum=#[,#] with up to 7 numbers to indicate how
+ each of the counts (text words, header words, caption
+ words, #headers, #floats, #inlined formulae,
+ #displayed formulae) are summed. The default sum (if
+ only -sum is used) is the same as -sum=1,1,1,0,0,1,1.
+ -sub, -sub= Generate subcounts. Option values are none, part,
+ chapter, section or subsection. Default (-sub) is set
+ to subsection, whereas unset is none. (Alternative
+ option name is -subcount.)
-nc, -nocol No colours (colours require ANSI)
- -inc Include tex files included in the document
- -noinc Do not include included tex files (default)
-html Output in HTML format
-htmlcore Only HTML body contents
+ -inc Include tex files included in the document
+ -noinc Do not include included tex files (default)
+ -total Do not give sums per file, only total sum.
+ -1 Same as -brief and -total. Ensures there is only one
+ line of output. If used in conjunction with -sum, the
+ output will only be the total number. (NB: Character
+ is the number one, not the letter L.)
+ -dir, -dir= Specify the working directory using -dir=path.
+ Remember that the path must end with \ or /. If only
+ -dir is used, the directory of the parent file is used.
+ -codes Display output style code overview and explanation.
+ This is on by default.
+ -nocodes Do not display output style code overview.
-h, -?, --help, /? Help
--version Print version number
--license License information
@@ -821,6 +1159,37 @@ ensure that words in the text has been interpreted as such,
whereas mathematical formulae and text/non-text in begin-end
groups have been correctly interpreted.
+Parsing instructions may be passed to TeXcount using comments
+in the LaTeX files on the format
+ %TC:instruction arguments
+where valid instructions for setting parsing rules, typically
+set at the start of the document (applies globally), are:
+ %TC:macro [macro] [param.states]
+ macro handling rule, no. of and rules for parameters
+ %TC:macroword [macro] [number]
+ macro counted as a given number of words
+ %TC:header [macro] [param.states]
+ header macro rule, as macro but counts as one header
+ %TC:breakmacro [macro] [label]
+ macro causing subcount break point
+ %TC:group [name] [parsing-state]
+ begin-end-group handling rule
+ %TC:floatinclude [macro] [param.states]
+ as macro, but also counted inside floats
+ %TC:preambleinclude [macro] [param.states]
+ as macro, but also counted inside the preamble
+ %TC:fileinclue [macro] [rule]
+ file include, add .tex if rule=2, not if rule=0
+The [param.states] is used to indicate the number of parameters
+used by the macro and the rules of handling each of these: format
+is [#,#,...,#] with one number for each parameter, and main rules
+are 0 to ignore and 1 to count as text. Parsing instructions
+which may be used anywhere are:
+ %TC:ignore start block to ignore
+ %TC:endignore end block to ignore
+ %TC:break [title] add subcount break point here
+See the documentation for more details.
+
Unix hint: Use \'less -r\' instead of just \'less\' to view output:
the \'-r\' option makes less treat text formating codes properly.
@@ -830,6 +1199,7 @@ options or the output will be riddled with colour codes. Instead,
you can use -html to produce HTML code, write this to file and
view with your favourite browser.
';
+ print_help_style();
print_reference();
}
@@ -864,3 +1234,53 @@ The script has LPPL status "maintained" with Einar Andreas
Rødland being the current maintainer.
';
}
+
+sub print_help_style {
+ if ($verbose<=0) {return;}
+ formatprint("Format/colour codes of verbose output:","h2");
+ print "\n\n";
+ if ($htmlstyle) {print "<p class='stylehelp'>";}
+ help_style_line('Text which is counted',"word1","counted as text words");
+ help_style_line('Header and title text',"word2","counted as header words");
+ help_style_line('Caption text and footnotes',"word3","counted as caption words");
+ help_style_line("Ignored text or code","ignore","excluded or ignored");
+ help_style_line('\documentclass',"document","document start, beginning of preamble");
+ help_style_line('\macro',"command","macro not counted, but parameters may be");
+ help_style_line("[Macro options]","option","not counted");
+ help_style_line('\begin{group} \end{group}',"grouping","begin/end group");
+ help_style_line('\begin{group} \end{group}',"exclgroup","begin/end group in excluded region");
+ help_style_line('$ $',"mathgroup","counted as one equation");
+ help_style_line('$ $',"exclmath","equation in excluded region");
+ help_style_line('% Comments',"comment","not counted");
+ help_style_line('%TC:TeXcount instructions',"tc","not counted");
+ help_style_line("File to include","fileinclude","not counted but file may be counted later");
+ if ($showstates) {
+ help_style_line('[state]',"state","internal TeXcount state");
+ }
+ if (@sumweights) {
+ help_style_line('[sumcount]',"sumcount","cumulative sum count");
+ }
+ help_style_line("ERROR","error","TeXcount error message");
+ if ($htmlstyle) {print "</p>";}
+ print "\n\n";
+}
+
+sub help_style_line {
+ my ($text,$style,$comment)=@_;
+ if ($htmlstyle) {
+ $comment="&nbsp;&nbsp;....&nbsp;&nbsp;".$comment;
+ } else {
+ $comment=" .... ".$comment;
+ }
+ if (print_style($text,$style)) {
+ print $comment;
+ linebreak();
+ }
+}
+
+# Print output style codes if conditions are met
+sub conditional_print_help_style {
+ if ($showcodes) {print_help_style();}
+ return $showcodes;
+}
+
diff --git a/Master/texmf-dist/doc/support/texcount/QuickReference.pdf b/Master/texmf-dist/doc/support/texcount/QuickReference.pdf
new file mode 100644
index 00000000000..0661b721af4
--- /dev/null
+++ b/Master/texmf-dist/doc/support/texcount/QuickReference.pdf
@@ -0,0 +1,1138 @@
+%PDF-1.2
+7 0 obj
+<<
+/Type/Encoding
+/Differences[1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 11/breve/minus
+14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal
+147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis
+161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]
+>>
+endobj
+10 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F1
+/FontDescriptor 9 0 R
+/BaseFont/ZDNJCT+NimbusRomNo9L-Regu
+/FirstChar 1
+/LastChar 255
+/Widths[333 556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0
+0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250
+278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667
+722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722
+722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778
+500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500
+444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500 1000 333 980 389
+333 722 0 0 722 0 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400
+564 300 300 333 500 453 250 333 300 310 500 750 750 750 444 722 722 722 722 722 722
+889 667 611 611 611 611 333 333 333 333 722 722 722 722 722 722 722 564 722 722 722
+722 722 722 556 500 444 444 444 444 444 444 667 444 444 444 444 444 278 278 278 278
+500 500 500 500 500 500 500 564 500 500 500 500 500 500 500 500]
+>>
+endobj
+13 0 obj
+<<
+/Type/Font
+/Subtype/Type1
+/Name/F2
+/FontDescriptor 12 0 R
+/BaseFont/JGUGLT+CMSY10
+/FirstChar 33
+/LastChar 196
+/Widths[1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8
+275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8
+611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9
+820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7
+666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8
+500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4 444.4
+444.4 611.1 777.8 777.8 777.8 777.8 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 777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 0 0 777.8
+777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8
+777.8 777.8 1000 1000 777.8 777.8 1000 777.8]
+>>
+endobj
+16 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F3
+/FontDescriptor 15 0 R
+/BaseFont/PILQXE+NimbusRomNo9L-Medi
+/FirstChar 1
+/LastChar 255
+/Widths[333 556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0
+0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250
+278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722
+722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000
+722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278
+833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333
+500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500 1000 333 1000
+389 333 722 0 0 722 0 333 500 500 500 500 220 500 333 747 300 500 570 333 747 333
+400 570 300 300 333 556 540 250 333 300 330 500 750 750 750 500 722 722 722 722 722
+722 1000 722 667 667 667 667 389 389 389 389 722 722 778 778 778 778 778 570 778
+722 722 722 722 722 611 556 500 500 500 500 500 500 722 444 444 444 444 444 278 278
+278 278 500 556 500 500 500 500 500 570 500 556 556 556 556 500 556 500]
+>>
+endobj
+19 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F4
+/FontDescriptor 18 0 R
+/BaseFont/MTDDJC+NimbusMonL-Regu
+/FirstChar 1
+/LastChar 255
+/Widths[600 600 600 600 600 600 600 600 600 0 600 600 0 600 600 600 600 0 0 0 0 0
+0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600
+600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600
+600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600]
+>>
+endobj
+22 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F5
+/FontDescriptor 21 0 R
+/BaseFont/RZRCUW+NimbusMonL-ReguObli
+/FirstChar 1
+/LastChar 255
+/Widths[600 600 600 600 600 600 600 600 600 0 600 600 0 600 600 600 600 0 0 0 0 0
+0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600
+600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600
+600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600]
+>>
+endobj
+25 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F6
+/FontDescriptor 24 0 R
+/BaseFont/EFLDGF+NimbusMonL-Bold
+/FirstChar 1
+/LastChar 255
+/Widths[600 600 600 600 600 600 600 600 600 0 600 600 0 600 600 600 600 0 0 0 0 0
+0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600
+600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600
+600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600]
+>>
+endobj
+28 0 obj
+<<
+/Type/Font
+/Subtype/Type1
+/Name/F7
+/FontDescriptor 27 0 R
+/BaseFont/AFCVQE+CMSY6
+/FirstChar 33
+/LastChar 196
+/Widths[1222.2 638.9 638.9 1222.2 1222.2 1222.2 963 1222.2 1222.2 768.5 768.5 1222.2
+1222.2 1222.2 963 365.7 1222.2 833.3 833.3 1092.6 1092.6 0 0 703.7 703.7 833.3 638.9
+898.1 898.1 963 963 768.5 989.9 813.3 678.4 961.2 671.3 879.9 746.7 1059.3 709.3
+846.3 938.8 854.5 1427.2 1005.7 973 878.4 1008.3 1061.4 762 711.3 774.4 785.2 1222.7
+883.7 823.9 884 833.3 833.3 833.3 833.3 833.3 768.5 768.5 574.1 574.1 574.1 574.1
+638.9 638.9 509.3 509.3 379.6 638.9 638.9 768.5 638.9 379.6 1000 924.1 1027.8 541.7
+833.3 833.3 963 963 574.1 574.1 574.1 768.5 963 963 963 963 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 963 379.6 963 638.9 963 638.9 963 963
+963 963 0 0 963 963 963 1222.2 638.9 638.9 963 963 963 963 963 963 963 963 963 963
+963 963 1222.2 1222.2 963 963 1222.2 963]
+>>
+endobj
+30 0 obj
+<<
+/Filter[/FlateDecode]
+/Length 1758
+>>
+stream
+xڕXKsÛ6Ÿ÷WðH͘ߏÎä&NšŽ›ž±§ÍŒ•DBk
+PA2²úë»ÀEю{’ˆÇîb÷ÛÝp|âûÎœ£>8¿ÜŸz8AFÂÀ¹];Aà“$qŒ<'iìÜŸ»soßns2’ÂhDò\^êÁœD©3Œ}-EÏ;5ñê}‚H‘(‰‰OÒÌIIˆâ–a㚑VP8ް揟.^î¶f’ñ’Ágâ»úºbZwLbÇ AI ·ü¹‚Àe²­ǝ! POä1‰b¥Ç ²„p$'Iš7 /ð}ß}+¶[Ê+TÓÔÜ(»$¶Ö₩΃C–j)7ÞÑGTŒ÷ʞóšßãº1«RØhOziΒÇÎ0†~üUÆàT饰”`šÞ±Ç‘Ë“aeœ“8p|œæÎàÛÂKŠÂœ[× ƒÉqŒ,"щìýÜ>5!LIÁ§Ê¢â„$V¹TÁkñü0¿f’.3 ÑŽ»f²ñÚRÖ»î× vÙxè-=àŸ•™¥[ÁïÛn²g-šF,ÂØÝC4Œ_Ó¿FùøìÞ÷顂„d±9”BšH[‰–¡ÝK·¥[k1Íû-äL
+:ÑåO•šƒÐ(û$PEÅ:Z7Fö>׋¥}ÓÍ)A'J‚ç”\˚w-*Òá`ÖëlÄÌm©|h­Kå¶o({‘òð9åošÖœqgÍ
+þКýAÀŒ· }ÙÊYdÒHyÞöR#(Óá‘Æð}Ý4øO 3SÉõˆùc¢™
+²ÓV曜Äc&y“ptç¡iýøßAó™4£aÃ!Œß®
+GŠÃÈÝ0Z193»%5yw:§N叄"ڋ¡•D‚vö³æªDV§ŒÌÌUu»kèa:;ËL¡œ2S^Ú²ÃE)Î*~“ ™ÐTX&z9p…“OÉþék‹Õ7Ÿn>ÎYBÇVHÖÐGVeh®n`šý‹Z¢ÉH;)Õ²oؑ±ÚKCWn†”ÁR±3Ëü¶Ž”â$MÛ
+€ò¬œ¥Cµûˆ”Ó˜ˆ1M,õÅe•ýš4“J”œâª3€T©:  ˜1hLkÞ ËVºÝs†<mð®#çÄŠªå|SÒ¿98_>`šÔÐSvø^ÛŠÌjÅ'Œ…ôaQèLÖ·p)¶×)«¥œŽ ٘Ôq#ÙÂE³*µx®®žsÜM·=çFÁ±]|¶äA—TñëíïWÇ¥3¡E S=¥ç€.òÅ)kMG +Q,=–o ²syëøÐ÷N
+endstream
+endobj
+32 0 obj
+<<
+/F1 10 0 R
+/F2 13 0 R
+/F3 16 0 R
+/F4 19 0 R
+/F5 22 0 R
+/F6 25 0 R
+/F7 28 0 R
+>>
+endobj
+6 0 obj
+<<
+/ProcSet[/PDF/Text/ImageC]
+/Font 32 0 R
+>>
+endobj
+37 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F8
+/FontDescriptor 36 0 R
+/BaseFont/XNWCOG+NimbusMonL-BoldObli
+/FirstChar 1
+/LastChar 255
+/Widths[600 600 600 600 600 600 600 600 600 0 600 600 0 600 600 600 600 0 0 0 0 0
+0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600
+600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600
+600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
+600 600 600 600 600 600 600 600 600 600 600 600 600 600 600]
+>>
+endobj
+40 0 obj
+<<
+/Type/Font
+/Subtype/Type1
+/Name/F9
+/FontDescriptor 39 0 R
+/BaseFont/WQYJPP+CMMI10
+/FirstChar 33
+/LastChar 196
+/Widths[622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500
+500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9
+750 758.5 714.7 827.9 738.2 643.1 786.2 831.3 439.6 554.5 849.3 680.6 970.1 803.5
+762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9
+388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6
+298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5 484.7 715.9 571.5 490.3
+465 322.5 384 636.5 500 277.8 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 615.3 833.3 762.8 694.4 742.4 831.3 779.9 583.3 666.7 612.2 0 0 772.4
+639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.5 494 437.5
+570 517 571.4 437.2 540.3 595.8 625.7 651.4 277.8]
+>>
+endobj
+43 0 obj
+<<
+/Type/Font
+/Subtype/Type1
+/Name/F10
+/FontDescriptor 42 0 R
+/BaseFont/MWYZOO+CMR10
+/FirstChar 33
+/LastChar 196
+/Widths[277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8
+500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8
+750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8
+680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8
+277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6
+500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500
+500 500 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 625 833.3
+777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 0 0 722.2 583.3 555.6 555.6 833.3 833.3
+277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8
+277.8 500]
+>>
+endobj
+44 0 obj
+<<
+/Filter[/FlateDecode]
+/Length 2691
+>>
+stream
+xڥˮÛÆu߯Њ
+D‹
+Sg°-€Ù|k‘€;»ôkю†3`€jú¡ DÅV€³²4ŠoH¡ñœ¥Ã>Áô‰ˆ×B#á+€ƒ™ }@\2ÇfÖãM7ÃÆ8Á©!(ãCal®Œ[òàä ~È8c)BÐ~ˆ×f¬J€j7­M2Û…‰>GŸ«}h휷.]{£:cÅ«d
+^ ¬q2ȈJœ (šU=cÏ  Éfgaužrï(V¥‘Ÿ Rï–°x¡ï]óŠ¬y#óºÑ„mƒµ¥Ñµ2ºý€Œ« R-ÜëŒZ|
+?SnyîÚñNÞ~±ùäåZœBH50A’h–ßïuå„êIxԐQ¶®ž›¶ÛÆ5 Ãgß,«r%—~È;Ž©6CäŒ]£ìž§k“ÙÙÆDƒªÄdøÞÛŠ||mN_Ç7×XVŠ'}%|ÉÔj ö1K©P6ToÅ"ÁzÃÔ5ªs§óßè\:{V$Ҙ ÕPo°HÈÐŒÿƒ
+n
+4– Z©MAÑWn؅ Œ3Šãp ¿ë¢ÂËÆìeð•(È~I恊!äOƒó­E2i‚Ö­oúìU0êŠjvÜƚÂì5¹‡Šh}0Ü8ÞcèŠcðèµùs¹øáãZXŽYatSÔ-¹4Bê:,ØeQúˆc—ŠžvNžÏb3€Î+°VùÁ
+žüš³Øb>íApq{¯› "Âó ƒG^ü² Lª0†˜M]ža­k}c2[„7\óPqwåÂL€Pê`¢ú»~ …È4*sUâøÜ!”œ›€u{9¥y\ë¯íX—47¹ F'wù$\eµàÔäBkÝ<ƒ¿­ž
+Írg CjµI±Êû™
+8¢CÚ¢&Ü-®„ĎdH}òóü
+ñqþZ'®ÙšÒ$#p“‘qÄéEŠۂz€Xº™Ô8øKەkR£›WŸ CR–x%g#óÉu<N֍dO¡ñØé{§{Ò#
+>Ø¢ÌÜx œ{Ùc Pâӑô³)ù»øçk Š”&Eš,ú…‘Žð]Q³)ºO snJ·Y|W—Ö÷ Nþ“¹mJžMÖÝQSɛX؆ŽC€|VnÙq™âþHetb83h®[ÔX,˜­á<=È0õô)ºèbàŠ™DôÎ6 ”ãp&­"”%Ú,šÝ~)åt
+—h¡}µ³5' Ǜk(Œ\äôôË9­œmkœQkl\4²„J}Ø«:N>ݶ2Æ¥‰ lá19†P¶€ÂŸŸAÄeK ˜'2¡ŠeuU|žb è0+wšhüMs`ÔFÍ=®N–N–$'xd Áµ”rl^ ±ç+}¿cï÷¶çkU³5õ[ÛóSL‘÷¶ Ž¯2X·CâÕ`<Øö÷¬±ÔÿœžO­áƒ¶-^ŠLˆ°ËÚNÑÏeâƒyLh ©Aiª¹áT-á”uµ}¬US[
+›'ÐÝÛYSŸ%Þ»!QgßÓÝÁ€Uš_ƎÂ(ҏ›8Œtô@‘*‰œ,£lb*[Ü.*ƒö{ËZ¬qۜDÛW˜EŸ(¡&™Ê§ÓYƒðþ»~mny‡âYq^#þ·)z„L§ˆá2 ÙE­ÑS-CÒóþÅs›……ÎÛ§€þÕaqŠêÉôŒ‡3~WH§_{dR°Zz{NœN,åWDX£,ó6Œ©ÓðþÜle‘P¶¢ ֜'sµG &IÝ€NPü]Àdò±hÕvÚ?m0¥Ù Ìß<æà›âò—^DCî&^èVSÉÔςnð%óÁŸìa œÒ ¢,˜AU²5‘ ÖNà(çZ?їñIžë¡X¶Ë ±¥w8¿IW`‘ÓVÁÿeäpÙÚšäÅ=>Äóµ"¿ÓÓ»±­(2ÿÄæDGP·B—v(ÄjŒ•Â€yìR×w!SŠv?ùÊ]âÙ<|ÖU£—¯eôÿt°ÿ×nùp5Fž BP z‰PüWWßÿò}ú/
+endstream
+endobj
+45 0 obj
+<<
+/F6 25 0 R
+/F1 10 0 R
+/F3 16 0 R
+/F4 19 0 R
+/F5 22 0 R
+/F8 37 0 R
+/F9 40 0 R
+/F10 43 0 R
+/F2 13 0 R
+>>
+endobj
+34 0 obj
+<<
+/ProcSet[/PDF/Text/ImageC]
+/Font 45 0 R
+>>
+endobj
+48 0 obj
+<<
+/Filter[/FlateDecode]
+/Length 1436
+>>
+stream
+xÚ}WKsÛ6Ÿ÷WèHÍD0 €¯ÞšiÒŠg:ç
+õ^mÒDeI¢ÊT4©&1ÑɵUS·G^õSã$mäzá
+#p_›.\ñ(üÇÈ,NؕpŒ{/¬ä\
+‘¡ƒ—Y§¢J\£§,‹—I`»{šˆ„NóÈá'“À)Ö€i4:
+ÌÀ«®õÌ°p'.C9k ôNž/æÉ,1ôaïÎcݵòðÅ'À²”%ŠÜ4žè•x¡ÓM*sI¯æÛmæ$™J¬+>Œ`Ê,TœÀ{°¡%)Œ{Ú5þ ˆ(­Êô ˜ÑŒpSßB¬•‡(€6_ØK%áÇg5~[^Æš2høøXuûéÉ·ãŸqÃp‡P…Jó¹ ª;Q¹Ê²YÒÎëög÷ß­¬"Sqº(ZÔüÀµbŠUº ƒÉ’(ˆÃU ¡oGW·ŸAþ  â’Øž{ô­ï]ÓŒð²íäîN$Š§«°âÓùÁgȋ®¯Â{jàÜÌêèÏn­môì×:Ÿ¯“4‚Ô°1™Räx¿%̍ÎùuøV„„mI:òÈ«£ºsm«"};ÖcãÒu‰åþãÞÅ%µ…‹Cíá˳늹VLªŠ2IG_ZÞOȉÍgyÁArø’’ò`>ä5&ø]4xÞ'Ðq ïïÝàÉ©7ò݁¿Ž¹n …ΰÙð1Åv;p‹à÷8°#}hU"[sóZ„ŽáZ™N¹Ia.œ6ç® Ž †µ$XL¢ßŽkhƒuûáŠ-è[µH ªÕ löÒÃtJ®»M]€Þ뒥²;ÈÑbn•š @ü^”’G µÁŒˆgå Œ›ŒeKÑ:恟õ±ízÎèÚò‚§]‹‰TïÁx(¥ïXI®ÆÙÝ©;¹zÝ¢H¿SÞs­|©=göÔÕV•KÐ=Ôon«<8í#åH±°ž²ŽŒ¶ä§Ô  mŽÒ–Ø?Ñ®U…]Í{SY‰˜Ž# “€pÓØ=Á|žŒÂ­ªb æQʔKÐ2…${! E¢g”„Õ4HB/óe“ÄFåÉ2ªu{†Dxgöye:K”Mf\zË\cÞÐ4›3PŸÆåS˜«v20ŽS߆I±“ñk÷ÂÌl³…ŽãŠ["П‚ªxò®@•&s«ÞزˆŸD QPŽj^*£PöªQñŒ ÙÌS:R ”v~°h*›
+á@:„\µ2Üa;9…Ž`³gYWâÃÔ­¬Hå#hb;@ÞöôJ£šklïd~Êír\ˍŒk°=F¿b9QŒÛ)vsŸu>֓én05a9ی_ù‰ÍsøÆbXFÜ*â(á“ðÌRúørŸH?¯l^ôËÛðo„cù—ñ‚>àù€;˜æÒÄöŽá4æá7Ÿè†—@·ªDØ<K
+endstream
+endobj
+49 0 obj
+<<
+/F6 25 0 R
+/F1 10 0 R
+/F4 19 0 R
+>>
+endobj
+47 0 obj
+<<
+/ProcSet[/PDF/Text/ImageC]
+/Font 49 0 R
+>>
+endobj
+9 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-168 -281 1000 924]
+/FontName/ZDNJCT+NimbusRomNo9L-Regu
+/ItalicAngle 0
+/StemV 85
+/FontFile 8 0 R
+/Flags 4
+>>
+endobj
+8 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 1662
+/Length2 19288
+/Length3 532
+/Length 20223
+>>
+stream
+xÚ¬·ctä}·&Ûv*¶m»ãtR1*vGÛìضmÛètl»3}?Ï̜yÏ;óeæ|šµþ¿k_›k™Š:“˜¹ƒ©…Žƒ=ˆ‰™•  Ž3uuQs°SvàSdR³°tü•s!PQI8[˜€€ö’& ~€¶…9@Ò ÀÎ`ãããC H88z:-­@
+dføfbû·fÿ’kڛ[8Ûí-þöö_e0±±²þ'†ÐÌÆþŸ&pý[eaoþŸ3øÛ®ñgѓT–—Ð`øßØ[ªü†§ã_rÿ=%óÿùøG\ÜÁàÍÄÆÍ `bçeû»€ñ±súþobþ ˆí?ÞJ& g @ÿoâ¬lÿJÿ¿ÿþãõõ?ÁHٛ9˜ÿ3;ê {ó¿ãö?ÿ_;M{ “«…œäß"°³òqü;š™«³óß!øׁø[•ÿñþ×^XXxX˜!œDïô3Þà¿l3Èôõ¹.¬ó¹Gì4Æ; “ž–·‚oŸ)„³@ÎÛ¹1v/Tƒ·P'7Ã|e?.èñ?¶õcö©•·Ÿ‰1}!–"ïz÷фxž;Ðe
+Ž—lܹ'ƒ y²ÒeۓÐëÿAÖý:æ‡>žºò¬ö™µéEHšÄ$ŸÓӁþi!l×°™Æ)˜5?›YÈFNõè;œ™ÓcùãñŒÎ>•áÚWÔLç ^ÝÀž«ä㎜,›\U"²jŽä0;Ç£}$æ–ÉŽV¯U/öΊÚCõ€$!tbǒÚý š Aõw¶ž_vLrŸ*cwQrWÁŸ–œw¥–÷køHúÃ~ÖÇ` 5ï/Ý Ñxó5‰@
+úü–¡ŠK‘8Õ=£ÑÔ  Y"A/$×mR“iw\6
+è=B–8 †oåŒÍÃlïñO!Õcc<íŠEÄ9¥ê‹ôR5µÜŽ)NDŠœE¡Åҋž«SÅæ—ÔœÔ_ŠzcÚÖ ”¶Þàe¡ñÕï²ì˜‰E>ú<ìaè#HeY_ŽV"˜ œxw}–ÊúGKŠIÈÖhI‹—ç²Ïù+ÉË9æ ™QSš@sÐ詞šžûa¬qew# Æ
+s,î)AVýPMZ0‡}¡üìÇhÝC•7"’ [¶‘»2Å땮ȇwbûÈÛòJá°V¬WGÑ-€òn+Të G›rBâP¹x­hù«ÚޙtŠo`¡õÒ£ú£_zú?äRÍV¶`†Ǚ`<É$ÛŽZ\6}]Œ¬výtÿ¡ºÓóD’)pï·:ª¶åW;Þ2$…ë^xÛŒè{ēPÑ"_·ŽZ6hgfmà£ÈB¬` ’™×ö2Ž”ÕÑRà==˜þ(Ú.âÏ&ÿžø{-ñçŒë{è 5î /]ÓS8×ÜxùzšB/’ úø<]€b^»GÖ*å
+H?;q,Uª3IŒ‘É¢}fµÜK:Αlåò“ë'‹Q„ƒð|€ &Ô­1¬ç@† ÓÓŸïuŸCN[8á;K~R†Š]Š—³Šé9"WûI¶¥<µa­¢‡jR§ƒ^aÈH’µÇÊžÇ!³%²Bùo³SmøŒ…@6=vC» L‹¬¬çµ‚Ã[f!~™æ¯u?a€g#ò‰Œc+Š-µÆIVÏÏL„ Ý`‘ùd¹;Ê`áÕë`E;ð(_„ÍËâ>"^ÓrZۑ$ÔpŽ8Ž2Ç2a]=Ÿý}5ü*"Þ)‘(À¿S!mü6ù3ØèËç_­ÜëÑæ#qD\yŠ0êm±¯¢|œŒF˒/ýŽ ÛýJMY‹˜ëoêÄ¡‹2¹ðLšŸnhÏU°qF!x-²ðLÔïƒ3W’_å±²×~÷q‹Ÿô'èEÜó×ùÝÇ&V–ŠÉŒ§¢Nìçœ4€o†DAuÛäêP™Ü[ݍ¶:÷Õ·÷[Q:’ý®ùñZ*ƒÄó5ùœ/y‡YX)¥ÝE÷QÆûŽ®ÒßêŸ-Üq¢CÛ¢,ßxŽŸ/ï…'©:”*|iuò–ùpˆ&^|l‡öÆ,ãööÆ_¿Â× «ÁBÞ}4̕ŽŽÒµP î‚lR®?€'Òr™fÚI¹š2ÉǍ'…xÒŒÄcs»‰ºµ\kûšÛŒöôÎo`ÉŽwöž õ-VnAd÷©ÄfŽ‡j-VËÌe&lÇËKÇ·;@VºYCŽM>x„úÓûÉ]πDHuW¬³ÚÛU€Œì6­t;&åh*eîp²Ûoüðr›*o(*â‚a»jNS€[—wʂeƒT÷Þ¯ &¶ eõ.>šx"l˄
+#k†/Ô¿ÍP·†jMݬ™,äT`ŒºöŒ
+Ïã]Ê&TÃ.ÑVöø5‚Y°Œ/åßTZ¿ŒÙéé‡ —ãµEœŒ‚T©õ&üN˃bЫÇšͧåÈPÙi›ê[. y¬~$‘¯ßéÆî:Žf×A6EÕE·ŠÎóÃ~N«Ý Î~(n­M~ŠŽ…?Ý7W\§@9ãÇt/¹a°@Íáü!k‚¥Ø¶±{]ª«˜Š5Gëycuj²›ŸºŒ‘‰@sПžùÀˆ¹£àóÌážDì[@¥Eâl'\Ê#R›u’ºãLŸ
+^>J^Œ”¢Šþ
+€§gOúdÕ@É
+@l/í7“Hu4VzÉÏeH#èOFóóV˜°`Tµ7M£[+fN!Öb)ò­Èsh&QœWOŽÊZq úfU0±íhZºÞ59;Ċ?]Õ£@†»b76˜h3šk]:¬8À ‘M#Aÿ4E72Ü DS{kÇ®é€wÿ—þ°±É§ ö­m5ŸñÆ:7S㜒7KÏ»Øcg©iFjè_Š²QÕÚ}‡Bٞ†Áx˜Ù(bíÂIbHxÃ3Á㊲€’Ȝdq…/Eeº?¿ŽíS­qŠÁÕÔ&ïTvÝÌ¿øvn+`ckŠr|ē)˜Rܜr•Gï×rìÙdOƒMfµ=º©L{9ùú×ù8þ ÝÄ>¬UÓY¿l‘Cy‹ˆ~§%Õ®úR˟0XÛúˆ É&“‡/߄¬yïŸagew¡Z0"ž¡ßY:*›Â
+(ª£“ÂqQjk#vv$€š:þñn9ó}Hfš”àô“«P‡ AÜæG삂áZö5øüïàªGYÉg„_ÚŸdD6ØßÀ®3pÖG„‰þ¬ˆy–'• Œ{c^ºÌ3×,.ЌÄjoœ¬Ž3eCê 8ÍÒ¡ß,í¿³‹Ã2¹,{[Þ5'º«'-å\Ø,‰ˆwœV6:”;žEcñZ#µðbuñPß¹(,èg*¥°·yW:ÕgTÿÝÄ2Ž¢Šr á-ä/—2Î_yýó.aTŸo šWã>ñ:vÆÿt!R¯ Äe…£ÙÇ5$ÖB5ž"6 >æP‹02ïKö–ÚWÓ¹ë¹èžá΋²ßˆÒFŽÃJÖøØæ°·¢2ғWKϵðÈÒT§@Ú,…±\¬{HQîvöR¬rÖœiŠÒµ¿©<µÝš4$UáØy¬áæ÷6MàøK9‚·Î˜ñ%luHbŽeYd¡ŽopÛÎÒòÛtd~ÜØþNÃSüeÀÐlMëËPFo{Ø% Êî‡é}˜/ {ŒT+tD\ZD)4›~ˆ„Þ±ºc²Ì¹r<qªô>y^ŽPã5–[ÊØ/£8dÜHCQÍöHP׺~Œ:Àt^„w©ôæù 7ù6O “W‹']EŠGVMÔ²b[¿öÂ(L1Æ^Ü{Xꆃ’&ó8h•ÃP`WìƒPè: —Äy³R: f%Õœ÷ÉÏF–Âëfܞóºft„ßö>yµýªÔœôµ„žoÞËÔÕ8­SæΠñ$õg\‰ø‡²‰v''dß΋œ¥*9Pôcµq€¿BÂ:÷n>)[af©› †yK»&ƒØD€™J¯ôE]‡&”‹ðcþØÑzÞ)»wËͲ²Õ4ùݞó“ë‹p~…PO HéÒ#LcùÚ5KþDõW9TFâœ%9šÛÌæyŒœxÝACäDèniÃïÂŒþñÎKü_^0v6± üû
+ß;ßW\¢”Mç'V¹ÝxiQÆá‡ô*.–y
+į›%)˜ä/øÔÜžf­‰àF²—–2×à€@U< ʊ<åÐ{âÌ 1ãÊӌbn="/<fØÛ¡ÅÀ8¯³»_;¥m9-T¹ m ž áKtúa©ÀùágÙ3zGbÌðjûEÐ7ÇJÓSFø2Bo»@ÚÓµˆK K•ŸHŒ$eÂQi6Óu?º×uèž¡DS‘µ
+ {ÎøoçØ¡Îð|^62YwÒÈ[yÕ3ÆØê‡v±9P«ž`øf+ÂWý‰§ÔšP1ÖÝ£²vqC8º»ž0ÖÛÂ
+@õ‹9óE'œöæ—ÀšU •‹Øe€YŒûFucКÈM?øh]IÕ/҄›œýf÷D…«=Z,Þ H·‹zÈD”NàØ>j­H()µL9h`vtçÀÌýót2|úAvLKç@7ü6c(îÅá'î6#NÒyc@žŒÝ­ƒìúÆïÀsíÁ'=B8Èÿ҈ËËícSéMwÝ2$61±&£èðDæý>ԊÜtbbiÔ[_,¶&Œ 8å}„³,ëójØ߬ôï†Ïé!–Â3{#µR‚yy¡ ïå E#˜ÚۛûB¬Yæ&iMùM9éä”ÓŸ«í>ãD/:#ÿä~Š²ñÌ+gŠäºæ`>üՂ¯þ}Xô#ƒ;ß<Šã¢ùSzš*”®JPŒJ,ØO0q³gHãÛ2>äì;ª2‚oc‹­ßlIž
+GÞËäùŒ” ÷Œ§òFR£zæ}“„Håá-c˜ÁÖÈ`?yëàîfP{\; (èºß˜ÉxS$§õœ'1áN5­f].€‡¿§œ)ëD"!?Á~TjžÉÑ gÏÖ`e1y©“ÃL¬‹#ð÷…sF&òcæDÇŠçD[û2£ÇŽŸÜõsizöK3°„Íc¥Ž%ïfn±l+Ò©ªv‹Ø#X6ãt@§'ðL[Ãjô¬öÁ¢sÖUÛÛf#¿•4Ë[_C¹X‹J}$>
+ì ·ÌՇTî^+›5%ýò ¥Ñ ]Ç{nÖŸ£}ÿŸŸÑˆ©Ú?vux&ã•ÄÉz™nžj•}­§KˆÆÂ_ îˆóGwâ%_lIz9×ýáBœJ3qAŽO Åý¥âÛ!R ö|„[9–¥eŽáÕó×¢5ÃúMCŽ<݋êÕ>©·ø‹Ö„)[ðüÕwÏðKÏúdƒÚõýK‡e{ÌðôŽnòš5QÆõ ª3<Ùå*8å*!ìü]Ô£¢_Òžbà<¡ñH‹—ã;u¶’[X.fB€M /²z÷2„Ò^}<Åø©Yô°<ŽÇ·ìÁsÀíցɒ#-ŒøVýßàt„kqÀ)›šÑ*ZŽ£èzï>ƒš@·I)PË\œzóU…³ž¥
+HAìœñ
+‰ÛTŽþ*_ømî¶ažBwpG)MCqšt¿âËhBê€
+ÿèñZ‘àW/P‰JG]ÚÂZ­x3†}
+*éI=ëyøÅìkFœŠŠH‹£U¯{(®m
+5èìûŒbß1¡’̪ŸÔÑVE=9Ž¢âóý<€RG<7àµbçñ‹PšîQFŸÎc<‚s3Ãvzº3- :UŸž(#Ò`*<_œÖùE¹æš}VP\m©! iŒöí Þ\³®ƒX»›4Ƃajfb÷¡ÃØ,ép4|^šþµž>m¿x|{õÕí± lâF²”œÝŸPfÌþ`ï'ÜqÈj Qu³ : Ûkø~ÖœDm5ù9ݜfŠ°‘ÿ¬à£íqŽa
+YjeüŽï\äVpÃÃïwŽÆSŸÅÿjZü1m’Û‡ØÓ5ƒ©L|Q€!¢õ’â'‘ÜSœ§Ë
+}AÂ،붢MYfž;›×›‹ÂaÑ ÛKúíwÂÈM¹‘aJbŒÕ{LPMi.Ú\ƒäã'÷ËÝ{’ÀÍÀ$Ì<s6¥ì÷ðÃV›ê÷r“ñ_CР°€WÓ÷ݜVœçZV£îúÃC{=ÙG,SzüPÏô£Nm
+•1_ØZŸswp5ë–5ž”šÓ$é•®¢h=t[‘%"23, ˆÌg}àΌV£œÏK8GQ¬m™µq„jª5·œ€¹.•ð,ÙgQ+I®‹ù@øB›
+›`rÅõóŽÉO()…
+žôwn5ì»Tõú‘ª}DL
+—ÐsL F{ {áqe¡C‚#aÔ "C‰¢ïDŽs(SXõ)t߃
+4]ÛÐbºÉœYPñш‚ŒOßN.ÛxÀœò*.+Fóœ¬+, Pfá=˜ò×êÄxêÇHò¥¿†‚˜@‰<Óz@4·ÈJ™ÇÒ³þB:ð«’Ïá9 ·«ãdKŽG û L$]+AR®NS|ÃÜçÚ9AW–€q2Þ'öºîÒ¢I0µå…a3©v'Ëè6»v€õµÃÕw>ŒÉ-%éò’êb(¬’l«Ù»µZ ôé1èÂošŒ{°ùŽ‰ÈƒB` iÀ‰>w傪qß±frùµ,µ4„L”qݏjp#,ˆ_F©#!OËi€—Š«b“íOg+t 9žã 2dE(N˜¹˜ÄO‹ý‚W‚ÚŠx©›Ÿ‰ÃdÖ\ŠÍΆ‚oŒh3õ`H‰}Eƒu@p
+!Õ.2Ü؅º–ÃY ŒKáªàÂAFÚÜ:‰òhš ÂÂK²ššÚ¢$ÁËì¢ï÷C5ÝqbA7 ‰”î¥È7Ì©Üs†hK«Y]y òåq™©üK] Ïfpa§È…@ô§âßKÎc)ϏÔ;ôY™­o„ )!ÚëìÙÙJ6-äb_À!LæØç‹ó Óúc?¯EU&oŸá×À†œ щ¶|Fá©èhr<羋šŽOŸò[Y֎!ƒuMXìwbÝ9KE‚©¢ƒœ…/Ò÷-;îȘ‚â.šb
+ Îéß귚²<Xºš'V¥äßˉ¡×’‡6àŸ•@1šËr’€U,«ž||g¬GáVRcô)G›ÝàÕÍô«ˆõx ‹Ù
+“cßìqnŠÔz MørÑEä†*"æÈ×â3ï,HúM6B¯›¯›446ÐfñƒqϲaÞT÷þœk۟9•A—¬B>$@²Å2èQƒ·yz”؃$ÙJ$ÕféCåuᭋÙÜdÒkyœi;-”ønÚPø[©ñèkQ˜ÑÚÌrà"7ßX€s£H®aŽ&. -tB2Üö‚Ï4Sr¿öû–æÀy_k Ò·&Ü}Å! `d+Û8%"Ë j,®×“e«ـ ¹Œ‚0® ÿ˜A=›š`ÞÙlgáS ó˅Þ
+)ÕXW=‰n’ ä*ÒŒÙì ‡YqŽèûòZYÈFFϞƝv» ŸD+hŠeÛ VáøF:=ÑoèÕ$ý±©cDžŠÀE®ŸB¹7Qj',^F
+ÊX*Ð작0ԗ mlþ°àWblA­Š/%€Ê]ÜÝߔŽ*Sö< œñ
+$°GŒIY_Mm*ÿŒÆ:×Ì~áYvJÄ#v¡ocˆÉŠM:k#y²(Ã2îZŽœã9…="“¹\1<—Ç*(ÀåÀ°šÛãžÏœ8{Ô@»ÉDòF χ¥GžrÌ°TXÀ›ƒJ"H”Ÿ­.Ž’(‘‰ã7+*Cm
+³Ä
+ž—»ol£˜_S v(‹yËì mЅi$@Uæ‰a^Ž«“ë‚kÂUѳс‹÷%<3­É*®#Ô;ŒŠXÓ «žìgmC†Z¡¶ªVÑ74ÄâôF¬Uò?]—öÌUœOÜ]ž
+µ`õüœžqíjCc(ýz°j+Ž)å#mûŒåÊÄߊœµX2 Qª<•'©¡â*{+žz/†µÛrB —뇀Bu†Ôíé7‰ó' o|ö ™Ô„)? dïfž<!‘]j3.C²tév·u%T!>ã…8ñIôÐS…¢ävõ%) çiãÛhœm"… OmFÉîŽsÑŠ^(L4M« eÂ/Iï±àísÈÙNMG€ÚÛt…`ëËež—”ý•B|L[WÞ҈‚3‡X£˜<^¬»ŒKœ ¶­À“oÄÉÔÓöHFi:¯ÕŸ›™2×Úж’OêœõœFÁ>:s”Z<NÊ0b°SdA<ËÂ
+”MiL<l’JU% aiNwX~rÑ÷™b …ƒËŸþ”ï,ԑA_SíÍû•#ê†pn¿†žŠûÚDìA™’“„1mÿz͑š£X\vŽ„%檿Ã_áXpN™ÞC‡,°™cÄ#ˆ9v_xßãº,Ú%V Ô(,*¥(6”Mò!+lqÂýº<Ðÿ[ë¯Ë9Ó7+ç† GڕÌÖî.ç{1Eo„é/x0(£ÈëÛŠÔ$•‰6 QQÔÕCjº\.
+»{”+C„bð}K~Zøž™,ð^抺—©•ˆÜN¶yÜÚò€å* Ö7?€L{²›?7j?oépíìõQô#—*Bpˆ-“ŸgujȌY0ˆG_ÌIRßRÙ&[!¢ã¥
+ÑðÕn»lš˜àíu”åg/Áàä/rß0·"WäJ¥™›6'
+Júðƒ)·Š¬×™‘v×£xâëœJŽòV“ç³¢»ù
+bzyJkÆ †>à }8Œ‡kƒ®âùŒSk¡âL Ô™Å|2כŒ‚XN#?û&_hø(~(ÆÉ|s‘YßX{šMLÀn§éZ~íâÝCÒŸ£{×H‚Ž ‡,^'r Îgv©€P
+vYiކ÷‚Oyõ†&ƒÊ{™d>“žŒêžªŸ¥ŠâÚ×¥áX%² ëPÑã J”˜™ ·ìzp$ߣdg÷ša}¬>õê²ó9TVYú²h’š˜33ÃXŒ„“Eén’4÷lYÄMøvgÿ”Îà†ÔSã¯ÃÕ}üwa³·hm+u-»P$^šJ€äÜßÞ:*NÄoíp˜œ²@ØYzÔÍï<÷³Ï©'~Žz¥ùР
+盐Ϟ”ÆÁŠ‘žGòèŒ6‚h¿‘éÉ #³™Y–ÔŠRÁ#« Ðö
+ü`,Ù.ÕyŠáL,ëdÓ F‚÷Ö*žV>`O%^L‡¹GE€æíwJˆžøŸ:ÚyÐsÚè&­œ–îòVŠœ"Hhžl¡ÁÕ1EÌÊTGîrZÞøà`Ma
+aYÐ~͞L
+<Â63"õ‹ŠN:ÉÙNÛva,˙f¿öŠÞpKˆ<c°7†æ<&ÉÞ!Mo’_réåýèìÀ”î4M³í~݁ÔÑÁ€#$tšçXՈ>b|ÈâË®B8RxceÊ·qø²O6?Ê÷«šv§[x\…ôS}âc<¥-9wã-jcO§É7ÊM
+U%Ò¡O—_ïÁŠaC‘º³ÆÍ×JS‚+èÉ7@Š©1#‚V›(< “]–Y©Ž@Kùr<ß^UO‘+$³Þ,ŸšW²ŽèÑ @vX%üå(+ŽŒ³æIë“ZÊ5i؁¹í7I-£å%tó8žksÏfš„ÃOJe³åbÚε¥þ aŠÇ­SØâk;CjF•«Eåk}±:Yé€lŒ§íDÿŸ7
+œYž€ÍŒ»g>Ùï$¢sƱmKŒ:AKN~‡4±2ÜyœÃŠÆRßÝoëCԍ¢£,vÔÆ|ß«ÀtSe))aTöàÏnUž7ÂB•X@‰«óŸ'kî_·t|7£n‰Z~âÃ{õcÈ|nøt&Š`xçɐͯÛ-‰ QZ…ùŒzŠùÃ8õѐ™Ó g»ìGu®\ ;}ñ#DÍߥý,S2ÉÑЊ®
+‘Û^—óÁ/²)1—ƒ¡òêzvUÝÉ(`0LTvÙží £1zõžT¿°ÍÂ.B²Œ÷$þ<éŒâÕRo€&âƒvoÞÕ*™C ã€»4% |è¯÷­Î`iûxr%<Šé óÌ—Š
+EÒuñÚ£MÁž~¶£úG } gpX‚äòÊG[­µ®,
+S<6‰[ýÍé¡~u`EªŠ¿Û’ýM‹ÕÁcÒ
+Fo•m)(•ÌĄOA±ô*
+ô ‹gØÞÕU%‘4€þ•‚Îû˜XšõÁïklmŠõYˆÑJœØät|3c“/ƒ¢Â/BMOe²0+f©t¬ÅûSôÓF§PZt:|ÉLOdº«6—Á™ûK)ô(l~ÍܒÁ4²Ùà¿¥Ý 8@ʪqŠý3õ>õðš-šIåP1Š¶a¹»MLš„&~0èÈh&“Ó¹oûÞæÉÎc‚ŒÑHÄŪßg(úË*R'Ê@xhBÁ~CPzê>Ü®PÓر§{&ºáûÕ ª¯Ùç—9¹S˜™ßÿ ˜†I¢Ü%)t(#SjdNoÔþ@­ÞI…ár'ùt¶Sü Ï4?°©sAÌ€L«YC^ë;¥Õž|Á3fZþv'"2§ƒ³{²qèĆ3Úæ¡øÖË Ð“Ã/<}9úHÒ@4DYÅ_Ñû ©k™œídx¥Ý}µI¿¢-çõ×ÏPFP)JUbBÁb¹FÙ×=5ÇY#:šWƒ$i û>£Ãìcm£ØÒHW¥]“=“Ž/à@@3 »kŠ̱-¹?Ye2cìˆÅ›º›G)ÿØŒŽ¥å­„£çü=\{ª¥â#”-ïuÑ3e ¹ŽÛŠ’| „÷Œ× ²'X³ÏΏZ¢ã]ö“@IQÛb°
+­³q 2•ð펆ÄcHÑ)’çI”ÞÊ=4ôhi*@¿ŠJ|ö"i㒠XùÅË]èð Ôü·ïUoWœŒ!¹1@H»Û•A—ØHƒ¿màGYž*ÊÈë²ô9îìtÐsõéšàs¬ð&‘!Άm?ä61µü–íNå*üA¬ÑáŸð[réäíÀ£ýüIsÄÛú×j•žBn€oNÞ
+ʳÿ|›:üwveØÉ"±¥†hžÁ…¯aÙ p4ù?
+šÝÏž›{íbh7u}Xª“——ÑVŸ~góâþ©ÁùhÙ}T€¥ï7<Ùûª±ë¿³,mÝmš‹Wӟ¥S¶ùµå+òÌ(8;4xžŽœâé6—¢qGÐ QþšødìÐëYdÅÇ`–ƒ4ž|ÒVî#.p7Î*¥dŠ—™ñ ÈœIqOì1§ticëïpÉÁvD°.ŒKõòXÉKM+G29ÃY­vÝqæÌô<
+‚†u닥u[ù<€™?H_Dt‘¿Z«»±^aÍ`‡'
+ÏN‰Cùð🜙WÀ«8éq(að>Μir‹LÅ{EdÿTøX挶"ଠ]?P:?kgäq±kïµÿõ£
+ËE&›~•õðÄô$ŒÉN6xsÒ©º‰‡Ñ{ç&öv„úšû~§&t?:-On:£©ÈЏuk4™ë¡`;ßô7÷wÎñ͇ʎì9Š¢À§:_üž<8rÂDš…1zCü›œåð(É*#à\ªã³ùN0R94 š?5Q#&vwzGYpuæ<¬2öö7.ÚŒŠeIN}fI>Gw²˜Ô0ÇŒp6aÊú*Å[ôßÝüLÝ\} FØèŸ&¬ïŸÒ—¡Û3h~_i T‚ãeX^Ûí.ëÒ~]ìÞe
+[îÞeÆë"ŽêgtRŠêv·OÁPÉøí ŠÅcŸì”*
+ój¢žÂõœðÇø 'štœ
+ß—
+Âñûû¯/`ù³Ætm‡Cýñ ŒðYè…,·›watláë³fiÎ`¡)#ÁÍ°xŽwfSœ9_v)ñíò˂#|Šrd‡’\”Ülï f%3ŽEÞoYl]÷ÞävühR9*Æ"¥¥žãZ"¡n‹–âŒÍæså_€5Háoãʪ”ØÆ{ñUFiTM²1§4*ü‚bÚ ·Ø’¬â17ù3bœ$õ„cùnŸyÓ
+7ØnoÙQó5ßzd¶bþ)='òð6©áÖ!ÇWâ2eÏ€exª°uÉ >„Д¹Úp0põä*¬^C¿o;º:¢{«Ñ_@ÕIq3€;®Þa‹ˆøOךÀù9ôÖ錇&8o|S_] ôdír²ÝºB|ÛnuÀ7ØOkßõ`Kµ?l_ùŸ·8Ylæî×M‹¯‡âVÞrTw¯æÂÁ—œøu2™×?ï 1ûjPd÷®„{Ö-x/óõ[z— ˜…›ïnÝ)9yžZ\çqS“ؐM@ÚfïWM‰¿¶«Fäœbò·LBœ/í¿<D ·¿,MŠ×û^kÿ¢46Îry?ü>Ø)È+iEîÎÇb|LÝùqH–y€QŠºw¿a¢Ëš9.ŒÞԜkº‘7a;ê —7}J³BÅ2Z6Y†ÇûÞ¢h4"ßí¯äe'n;џÅJDÚª°”ŽãCā- á=Wš©[êðŸœÀjÃsW¥“$ceÁ_sŠz*ûlŽqœ
+£•/dí׫¹Å} ð9è}Í!‘2böÂ^6z•F/„u8°v1zµU³ÒN$Ÿxêé4—Nõ=¯Â< Èٝû¶›mÌnfUÿFž\Ø ’7³:ýoyÝ)ÏÇ9+>dD{ ã­Ð$Þ6J]Fož8gÓ>Ó. ×í9É%Œ; -¯qW‡ Ê0`™¬S˜à­¿»gH{ÀÅ¿¢éãDk#^×}–4Îæo*•~èŽ+‘Ê™õf!ÒŽÿŽà™_ po0Á?¡+žÌT1dîHDï÷­÷@ AˆfˆI{w0 ±cK—ð9§ÔfQòn@™Š]K®‹Kùǘç󇮒²þ!V•ÜŸgbJ\[\öb6À“÷ì„{RŸè•àvƒ†g–qPÃô—PˆWT bʁæD:Jñx‚ù׉¿ÞMfõ䵑³‚H܏·ãêä³>W Ÿ°ü\きó;ž€1áÑ?Cù§R;=žÎrÙÉéW,زŒ­:î'ýZñŽC”pFеfTˆ(ËשŽ&Ÿß»Èl'e­Ï€eaÈkŒ EÒ PóuJü^Ոfa6‚Ãè>á_ís@Θ'5–òÈ蟜XçÀ]ŽŸx–÷1Êê;""K³o13€1™…]t¢]ËÁÖKŒD<YÖ8žRó$¯‰hRc>Uö_ò•º€ÑË »1O~ÙD'¶\ÿ©§zi!òr•-±u’øsbïKØê^sTëËÈÐø ">2ùpŒ¯¥ž¬zØ NÔr#R9™é„ÏF¬ÙZ%ی^Ò$’*
+²Ó±ðÏü‘CÈÉ<ÌL.g:i¡ÞË(åÀ{Ëú\%¹Vî[2!©¬5JsNFªìÛbɀ)8ÏŠç׈uõ§H.ØP(|“ÍceLf;_Ï5«‰£ÌÓŸ€l4î6‚²ze' l”=
+8Ž¬-»ð¬Úˆz‹upt¬4•=lœ’’ñÇÕ»™œö äúåŠûÅ¥(†öÜj)/ªÃ}°÷Ó:˜Ò÷w%úŽŽŽ5kÑe¯‚LMžlL€“ß*0œ>MÙõ"mUÌ8ْYÙáEìñCÍÉýÉŽkG;‡šøá`>hÞh}5¶!Ènµå}>ãË\") `ØÓd¿‘«Ú0ڜ·}%©Š—šÃy$!Ž\Ìž»Õƒ‹Œ €|'Z Wµ‘~SyÖ©
+}$Á^Ö-¢ÄÖ <Mß_È¿NëA2ÇU(©¢×‹öuåÜ >ÊôÆApÀ8òŸ6$t•„¥¹)Ç,pÚ몐ÀèøÍöL±ý:X‰›ƒèaÌ×Jfƒ(L9š e2ӖìdÞ‘°¬@{Ó0ߏ9m.J„˜ÝYq÷š îYõOݒà{ôMÔóPÔ°}Œ:0ÂáÔIÒª>éy~ᅵ'©“z²É|b·:„Œ›¶{“í8ÙÞŒ—ØSŠÝI!u„”ôŒ($5Eç<®§2²¯àÁÂSö³á8[ۖZËi֊Z9î<PŠ÷~JâTne0†£s@êz›uèý’(čÞ’éš²‘ k¿ÃOá® ¢n·:矱„F€×(1>™rúÏNÚ93#UYšî1–x³éa3°úí"ªcížP(‡Ñ&ˆÚ¢Z/aÃeÁìK×D>#ó—fî2H»Q2è“Ì`ädÇU}‰5!Ùô_lÊٜ–4
+Ís#Þ/ç‡eè—Þ-Ç蜙š<Ê9@ã“,µø×iŸ‰Uô j1þ!D§­]œÎ•Š Q>üxâ¶ù‹×KÖãmÞº#GzÏbwRAlŒW²§[Æ©Ý3ðѧ^ó¥Í^nl¯8$·,Ic
+œ·]ŽB1ÂòûÄ_¡Xr¥®ÌlXÎæ‡æU¯ÁÄæ²ÇšaŠ(ôdKh‡Vѐ-„j«ciŸi,‰Õ¿ñèZ[Nôé[‡žÑtHþXÚY›Äbõÿž_ÔaK…ê—š°šŒ!r4æF Àýžôßڙë8€Àútwww×ä˜îv8]wâș˜˜:5Lw}ÅÄÇÜä6ítwÎ1ÝŒÄûÛûyŸ?àSž!Š8
+yœ/u&D“ q뗺Qúfo«µv;³¯Gã{pݞ’«j3üNuú–Æe­4»Ä%TÿùLø‚pÅŽñéÚ^‰³Ô÷uWŽ2ýsvØIÙ5Ð}^YÁm
+ن…Aöì$®ûQêôó'ãppØëÚ0/úZY!4ìÑ\Ž„dkٟü”l¯ÆD§ˆïù…‹ÍOÝQÊ8Äl[ !œÇz³c. Þ
+h?Ôn3·° °p&²§x­[7·;\diñÕmˆÔ×r&ùlå Ù²ÞNØMŽ‘']§?q”劧ï©ÀtQœ9öƒW2j"ÍéFҋ}Uì6èaw¹}RÉ«> ‘E—ñ8˜Uµx ã·$ðÅaqÇÀ.æыyÄ3¥yÚraœ‹Â£Pöïý±‰Ì»þS!qY}å:|5zïwrÓ
+_¹£EÔ—stDï¥Þ1d œPJ7‡Sã†?’äìn2x5û
+þȲÖÍâ5­à†;1/º‹‚”nλ89.#Pê X\YnÝW9 $ӏóXOóyäƒê¬s®§닮
+§ÓßM)U[±º"
+žže`MVÝŸÄúŸÚaÉÿ±$kaÑõ’g“
+ ¯z=õÐ$­y՘aø
+l*:wµˆ|š/ŸöW”Bo5xõF¢ ƒ4¢Š†d7ôÔ±‘ Tòá÷Vê$Vv€8Ì@öÌÕÚÿ9^êíÄ:mZ—˜åuØ}&Š¶:VJìqŠ¶S™=í ©b*gž²B Ã$ze“Œà8ön ûŸqšaêñuGß2mƒ ۜôMtÐ1ÉTÜSQ£mÚ^†ºëÎ$ä˜ßÆÚT+¢Ðþ.=ØTpg:U‡Ã¿à¯sLfëT—qsŽçíÕQ ì­ñ2nX`F3(úm Zð*ŽœÖ†[dºpSzúYè HýSï]6é‹ö¯l\[ÓîWŒa«+äò@ג)™¹%0‰á°-ŠªùXn£箑ðÞ'ãœáôF kBQ
+o ú›ï€áxMTfÝCd ,RHò}„b ²<(ž:žÁ±#*Üz„Ê wdþþx‡…O¿ófi×NL;WÓÉ·„wºËÿšHÆŽÀ²»ö‚›£›éªžTKó}<Ï
+Ožw÷—Œ`q'öŽ_…g¬ ùÙK"¶cv© &áJz=3 Ÿ—P¢Zf³5®a+Œ
+šÁ<}™å[Š#d–»L\l‡Íîô2[mä%ANœápt£4k¶]'øsÉá&+ÏW&ػ󄠜O' mîõeyøèÖc8G…þ¹ÓN`ùËHËê-;Ÿ`i/úï6ŸWêøö,·SåËD·6 ͐ÕUÇðÄ©ÁY0Ìm€`ž0‘÷º7•å×SU§pŽ ‰=–çՎÒpp¥Òø˜õ›˜>fsD¿ Ä8Œøã-ìp·3’_@üYz›s`¢#”2œïu
+Êâd®1Œùñëé{\^صڮÈóþÎGÌ«ô©š<Z_}9Ò>q~Nõê]†ƒù—Ç3ÈéY±uawÑ0›ØT7C©ò1T£×£›Ÿt17Ì#Á‰‚é ÿ•.«ËŠ(ÀÜŒô5û1|
+)Ÿ0²ÃÊj% ÑžkYÞ÷«ÄÔàѻǫEßä>8Ԗªg58Qé˅îE”<8šÎ7…f7>dIž\~
+ÿhœ©ÁÍòÚñ¿Î‹Z‰ÂMðß"ûlÏoèEUep+·ï/YCܱŒ3ã|»¯9lXˆœœžz¯ÊÊ᫇±Låb­
+ŠzwMð-o–ØzJ'isIž6ÂÀgœ§æÊK`X‹P—ŸãPWì”ói£åbòWþBºäÇN%wŽ©ÊÌ1Ÿ‡ÎYÔI} x­™âs3îÈ ’°Î­læ§ Ø@l)]\Ûۈº?ÝÑ琶µŒyž±d(j¬Çhk<3yîe|£i¬BBÂF>ð»ñå†S%ÌÄ!¶EǕÒVžŽ¯©EËô0‘™ŠÚ÷CÒQ¯7!÷Äö¿†l??[²%}ª)áw
+ój&Ð `˜ŒÝf?ºª^…
+endstream
+endobj
+12 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-29 -960 1116 775]
+/FontName/JGUGLT+CMSY10
+/ItalicAngle -14.035
+/StemV 85
+/FontFile 11 0 R
+/Flags 68
+>>
+endobj
+11 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 802
+/Length2 803
+/Length3 533
+/Length 1383
+>>
+stream
+xÚíRkPWÆU£`Q;ÕªåjQ° †@‘‡ !ŠƒeInÂÊf6H`,…2¢(Ў„@XD¥ OKÅ R© TÅANJ
+ t§Ø?þëôÞ?÷œï»ç|÷;—» @bí*§Â 'E2Ö(uî~’ (PÂárÝiˆ18Ez` tšPˆW |€mGŸ€Ãáw*RGãÊp,v_2Ì
+Óm)£ä8©¶|{€Ñ4Šã°¿ˆø 8)‡Z
+Ý~¹Ù³-Ã}eeaI¶ªØ®ß$ž^ñpà•Â>KåŒwyø}ÜhWÖÎ/¿{SØWñôô‡YÕNEá•Ís‰:ï¬èp|bt‡£ vìâ~9ÀÍÔïñª*œRn—ä“Ò`x®,aÿ×&$÷Ö@Eñ³šìY%tÚìnï&OçþóLÏWâCNYÚBòøœàñ‰‡œ7t—yšøñŠK݃œGòûÊ[Íæçåm˜8ŽÒBPz]?ép=¿{k+ñØ®…ˆsÒ5YޏNù»€ÇûxAõþT®qvw× Óã]3£2†ºç‡qå!WŒŸ<
+ӎ³Wšó
+éÞÍ_§3¢¶-un|Sì€Ê²çsOZöÏò×/ÊéHUñ±D¯*ç‚i…J7سVœ<¯~`5oF”ÂᅯƒŽDʐHæ1 žêhòòŽÜiQë-׊tŽ[€ç`»-‘Ÿ3·þÄ «¿ŒØoUŽôŸŸXõté•!³—»÷mµè Û J婙a«V?÷˜QÛjzÃÜ(š_Ö>ýª%Dþåâü_à?Q@F@Œf(FGp8ÛÆ
+endstream
+endobj
+15 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-168 -341 1000 960]
+/FontName/PILQXE+NimbusRomNo9L-Medi
+/ItalicAngle 0
+/StemV 140
+/FontFile 14 0 R
+/Flags 4
+>>
+endobj
+14 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 1658
+/Length2 14737
+/Length3 532
+/Length 15624
+>>
+stream
+xÚízcteí¶fìŠUáŽm›•TP±­îVlÛÛ¶mÛFÅš8éúŸsï=·Owÿé{õè5ÆcœÏ|&Þ9öMA¢ Ì bbk”°µqb`adæÈYX9;*ÙZËÙòÈ2|šX
+õmtκ0ŒS{•2=$>ƒÅí¬ž†ôÕ×ÆqÏÕ¹)€€®£. ™5ùòÃ0e
+®å*9=œv”®Éȝׁ*ã((žþç
+˜í.å6õj(ƺ’ýGB^“%Ãýtìb庝YGBÈ¢$}š9/Í MmÿA¢³‚@H”÷ɪš3AKS®·Ùšd7”+ð6lfnšƒ*’¯*·äàÃ1 ã
+^&¶S/„DÐGì]`}F•aòŒ4'ÎåŸE#Ø^»¡]n>LÙp†Èe8TÀC™K£È Ç>ZʪófBw”lzï¬oF¿ ƍp©ùb×{û%B 1Ô=3dcu°ËcWße ‹Ëê
+ 6»Éæ³RþŒ
+%”Pàœø*Œ—ҕšÆ€EóÊKb pˆåF¿aψœ Ú°Ù±ã%X_Wƒ.Û1gF IU„?ìrm 'aœ‹'°ÈBglãD௝£°Œ",q„l ïV0Z5Õ&|æ²üYîbŸVÅoSœX‰Ž”±8€»b•Áxj•dJ‹“Ü ·x“Œ>÷=ýëŒ>É2ûS‹§ò‰÷S€öª  €¬’žßþŽ/ÂAEDlám•©ñ25›âF‘Ÿ[ҐOCËM{uEM`ÔĚû™i¡ñù×F5†*Ÿa\üò.ùeŽý&€JP„Ë'~ýµ#ÿµ†¹‘‡ãߟˁѰ”xŠ}hö¿¿rÜ+ œTòl{(å¿'œN@ËÇ)"Ëû 8Î§àŽ„3Æך9úõj,€Aú ómÀwŠ[×#–[ïÞÏ¥P‹ÐÕр
+šŠSb 1%é“#—œ3{Ô bŒ÷S
+5òÜ—RÅÁÔ«vK"g¯"<‰ºŠ;õÚ8ï7s£«‹\Ÿž0ҋ™öx—õšuj˜ÕD~Kw#íÎñö’Žç Í}ʃÎ1g‰j>·ÉŠ²#a…ù­U
+,)[ϔð8ýnŸ–·ŸŒ£òÐnEJ$³yßi7*rfF‹ÁZ¥ ûçý•cU5.K]sr+>
+1Ôš«ô6ŽL鞕j¯š»ŠžÏxƒÌkTKçò÷œ tÚÆ6™ßŠ|7Ò~
+û2ÅôDm• •üÜ{;"š±æv<^)€×U摪ŃCéÓ@— áù5ª22¹ÒN˜À#ðSÆ^> аnýâq~s¬Æå˜Òæö²¯—ÒqÍršëcªX™Z>®ÐÓ*1Ý ùË H‘¥š'Œ~{ﮍZý$ß¡|–"Ò+åþdu)náõ¥iυßA?”}…ƒT  £ÇŸ\ߑGùŸR†šÞª
+?ÆlÈÑNAîBÚwo|'ŠXO\9Ÿˆj:,Açqèt
+ÈÄ/<€p£QªZVf ZÖÖnj!L€ÇøÓ3”ãÝ […?Ní3Š"Iš$ÁS™Ú¡X­céÎËšÈãCàYËÀ™©DìL"›†VîÀ¢1#֜àì/5Bœúa<µ«÷ 5ZÍb“i/MM8¹°èUa—ý-IªoøY*@¢õ@B•˜*¿ìÎÜ <6Qk‰ÿBˆÏ%7u€ŠÉ!/ú ƒ0A£D
+6:|aïwF‹ÜŽÕ›Jký@¡- e …Pc„tƒåB¹ŠïM×_Œ.ð<ë”̱Qü M?b/ú9¹ŽÜüiœÎFçâ¡Œ­$m }$캡q(+u%S‡ÔjÐϖN¥»')‡J•~ G*†vŠ
+K(S¶Õ LÚȚ5õ=äÕ) ™$\Š¶i” þgjƒ‘ŸJûu5ۚèƒ`úÝCò.Fô×AÛ>i’U/‘4fþ‚¯eü£²•ØOÈå¥åèNHlö–’pü—¥xìãù§r[ ¬niåù//"‰n`ŠŽ( ˆ#0Z*ÉÌٚ왟%v*ºlÜŸàŌ`†ØIãê|vÝ'aaž„ѫűŒÌ_)2^p.el‹Í*ðÑÙYʃK‘ǃÉꢕ—  )4ºd+&aCQPª-.=ߜU°UqVIV)€ŒÌ€Ó.OÜf6UÉMZNÇh.Õ'yÞm)Öf2%~§¬¡Ò.KŠ8ž^‹k?˜D“žÞ£|^_Ám7úáE¬Qðz"Pz™SëRÚDÛÊx4/æÂ4Œ[®W8è UÿE‹ðnû“‰ÀI¶VïԒf%ÚY\ÙÜœÙrî„öÅà놌\6¯:âVw¹º[åoî<0ñ˜1ö<d>öCjˆ3 Ÿ
+kÛHÚ°ªé¡áFL7êl~¹Q®Qò% MÊÆD¹@‘„ò“’öTÛƒ“ð‰Š–Ã7,ÀFdd¹˜èc».ü<'^­EÚÁí;ÿBp…=P#îD€©–¥u¹'4•goû‚“‰9*ÃÜ\uå•Pk˜Æ‡ŸÊ¹ …ˆ“4 CäFqQžÆˆ²%‡g"+Q9µr³|›šºéŒ#®Ú€cˆwŠÍj2ŽŸ ïT¡,!>n—à­5(`C|°·înnCŸJÓϬ¡û0ôç×2¡á4'9–ÕšöümÏÅq‡«+2úh5ØVV±8,ž”§fsá6ûÀÊdÞE‰—˜q! óݙ좜Ù–©J/ëÒ¡CçÎ8h1¹ìLh… Q€Ïrg?yËæË-çíÃò×äWÑUq(MžO¬Ü͔®,x™‰"¶§™žC7ƒ™Îg¬Fl3C.BöXÍEågàŸ~pNåü,”ƒ²dŠÜ©;‘gúi¯µ‹ÙßcÚŽö5ð ËÁIT,:¿:Á÷¯ºº|ÅkT°0n
+*€-Hð(„>QIjÁŸ’‚c#Å1NlqBtYrޙJ œˆaÑ 5˜Ó{rÐ~–õlQ »×$æ+2CèdÁ‰ÎQé©C?ÄKå%Å;Vösà)K¯ƒ9$‘”Â
+V"÷¿ut†ÏF}Ï § ŸõO×ùWú“O1ú©&—€šßÞ6É#9"|:xÂ÷úöŠÌÚõÕdž¢ç!ó—qQ®Š§ØTÕ^gxIbáø®]Ç",Äڎ<;Ø\„Gy­üìi7@³€fF±$ô{”,^š R™ï=_æCÔçg®ŒÔgí·ÈØ‘†Ä\𚯯b_ž`ít͛<ÙûDgV͞
+kp¿Ü(:0‚~ßՅ÷;£Ñ¶³Øn»‹ Í8Ž¯ÕPÃ}·ŸSè|øtÖøÙœäqß5 „M¬ã> c§ÏÁžÛI»pu~›¡ë&Ü*ƒ”aA®²yëÕKß&©5±Ú¢ OO¹ØWN°ÐO#°(œ%Ø;ãNZkUžaÂjâGë®çuo0~a|€—•8æÂe÷C…)ï8$ç7úu/Ò3å=̇Áœgѹ] Üm$
+V+Œ§Rø”òÜÜegٚ,̊•'藕.£Þhw‡Ø5^_~í· »ô嗌@h éUshÀ.³ÇèŘŠI‰÷T2€öÊPªn’Í­ºh‹žyê‹Eìd
+x€ž‹{a(*ÉyŸŸhæäíڕKl¹ÙVÚV¥îÅ ^œ$2ïÒ5}2˜†ý쌀 ݌©×¡+?ðUè÷×ê ÷Ý1)€\Œ²ÛÇ6.[Y>’/4»ßñ£€fJµ„$q,CŒÚúûƒ{‰Ö/Œö#YhoÞkA’7X•ñeó{Ñ°Ê û%à¢ðR֓•ú:Ö-kϵi*P™#œH ==æõ³ú±žOÛÊ£áþiaîoÁäjÍ÷P*Žo¬'åÈRÂÁkD×Bù)…ÞZ)Ž¥ŽÎ8êÊŸ†?Y®`yÈH:+%ò!7>lø ©P F¬lz€I²–›Lž}2r 91°Âِ®å–×0
+ëò<Ãb€1¢;W1Aqªö˜ˆÑRœnT98Ý·Œ¿¿NM£DIvó#ðw’¿¢CÛ²ó•êeüX€fŽ§"Ûº•O€'PÓªŒŒz%8ŽSíVû…€û«ä…£!Ïkŀ+d²<=ù› ÉçbL•Úº&€ÍMÐü|É$K‡óýX~=cŸ”ÑhÏ –š&z=C눱©rXOÜÁå¡k‘âéêŽþ*r˜»UdõXÁ¢†Äp
+ÕUÆŽá Ÿž·ç¯LQm|Ž§cž5[úáTk x’ÂkJŒrW€þ^(°™HDõ}ëißÕ@í‹Ü æÚý1òP‰Y”ׯ«q=ÒñÂM?{öŽvbR·>h!EžòÛ×a t]$탷¢ZHmé›F h{PN% öÐâdß2¬Š»œˆïñØo\e£N2äDÙÀ,š!èÝ]Ž¹nöZìIáEš”€ÆÔlÓÖ¿lð]œW [~Õ
+ ŠP âFQ± +sÎé9x'*Å¿áã’åâüR2žœúP þöɛÑԁèóº«ò›ýrô· Ëx&ÛÖÊôREOïŠPºÙåo˜ùÔÞBšh™i2%í²âŸ0°íZm²g
+œ!B"šÈ%,Œí lå¯É°Ôcœ»¹f0‘Btm䉞\j.ؑ—„ MƒtC˜Lހ
+q™—5ºêgڐ_ ÀI!ÉopŒæ𬈮‹Ý>xzºÁíŽ\SîÓ2·£é`[ïI*îÍþ¥®éÆŸÚå4š[Öq¹•g =R÷D®Ê»Ÿµþ–É:ŠIÉF
+_(šW­Ó˕RrœšäLšýÎm?žÍݳ~dòüö^ƒ®‘Nžgg—{”Ÿ)ªòi©š
+Yb$bÀºXZ,ÚÄ]sÚœ"›¢Tù;bqMv`œ?±ÎA¶O²Ü²
+-O¥ŸüÅ/lP
+YÙ#V5¬Ä/mŸ9 ÑįÓ= ±°m”§ž•µ·tœí%èr:^%Ej&­…äKœÊyÿ˜WuGHYñÍËQ>p‘)ŒDí@5Ž °¿ôésÙA'Dqš0\×ÿé?‰ÉŒ-† <Äš±Š§ 8Ér7Ôî ˜v¹9U§àXÐ&þ>6~ùuš/ɱI¢ìl1k YëíS^`¢¥]ϟцí=ûhµ‰;  ÎeÍ¿~%^é;Ù©ïÅp{ºr‰Ñ©û4þ
+ïo\!žœÇž÷ åqÏý}Íä"ÿ1CÌ'õC„h¢ÔhPßú Çåª- !ÑÛÖéÃ{Ԉ(Ä.ÁNç@Ðg]gñ£®ÚšlŸŒ#bäŽ\Ô)[û™!0lÀû‚„œFi¬`wžVׇ}Š>Ý
+,ç!tw~ ·•å6'ñ$•‡­ÙQÙÝఝ!‹ÜÈÉ%¯—NOƶ¥Ï<‡Æ?'-9æó ÄÓ!Èhà Ó1¢ÊDÉvêŠ>í¿*v ÍÍn˜Oâ²ÃKÌNJ«ë¢ï0ùM‹vFOªÅw‰dÖƒ c&sÓLsãÃÂdD3p—ypaR0ŽI¬µìÚÛ»Ößœ.ÑfÛµÎõêPÒxøœ‰?J~ó {ɶ’¬xHç*I›^!hÒ[ÂwûŸ†dKߛûM]»Y”–?Š¡ò¡qv×1”J Ë‘²©2¶`Ã|ç«XƒséP<Í ö‘_0â}÷1|÷óÏɕCŠ\„SíCBâï9²,v®såøördMjsÑþˆŸÜ* …§[ ®â!ZIV®>å¯÷éÑâ0š05ç)í!JUÈ˓Ôù/Iõã)ZÐö‡îJƒ”Dñ}ŸÚzQƒ€U1Ùzµµšû¬}䧫5§ 'wë¹P9æÕ(ühÇœ9-bZU’CÀŽQ Ɛ¹ãõ‘~þ4€3§ 5(~Êù£y³ÚàK£Ï׆cpQâiåù#Ø:†=N¶•‰:êêTŠjÀa7 ú w–Ô.œ:ޞlDŠÔP|0cê—Xvs |+úñþܝì—·‘†Ó<F«_dÞŸ9@!4º”³9“÷©è28lÑP¯¢ ¢sÍÁcŠ}”óAYÚ¯ŽCkH+’Cörñ0åCnâCnEÒ· ãUpÞ¢ÓÜӍØyYzY°eNãFN~$Â)þèÌœuà·+Ɔ
+b/ïU¢kÜ­˜Y΢Y<ƒÓIGšŸœäéV
+ÎXŒ#ߎþ‚{å3©ŽŸ»1°×'ÊŽ6‰ŒRfe·\£çɧà
+IQ¹+ŠåÀSÎÕþú P©œ:‡Ý ÙJæG }Æù)ÐÉA«{B³«PÌ+·‰ÜZ.óâc©æ” ?æ§Ì¢<Wƒœ:ŸvۅãBf!fxÂh7 X^{ƒfÆ«#GKêôœn>ˆíºš…žö{g–ã7 1©»„GGÙ}üè׍-¥ÈÜìÞ³FÊL©~Ùø·“é›mˆ6\äT˜èqŠÓªãKnN ®f°mi±’,ÈõYÛ쐫—pšùý_ºáŽv³ÞÃEüí«ñH ì‚!€t"ø}(ùpê×ѕÖ* ì ^ÎcTg û¯‡ilÍŒNQ”±‡…Ûþk™Ò)þ²èºÉ˜Y²]›è’§&%ž Σµdµp0Q_‰ÊÆF‡SÙ0 S=8#x™õ.ôgÎ^Åj wjKÆΕ–ø
+3÷Å"*¯Ž=«v{Ԓu“Ú¶ø…µ™k-Yðxœï©+hƒùBSU5Azj÷’"L€P𠜟Ž38,äÊ=‰f·®ÑüŽ¢²ÃÄ%mrñ6žñH”Œhè7MŽúÝûâ€lž,éÄä`ˆV$¥U:B×mèä8ú•°°Ã1¡‹xhÚZhb+óя‡ Çʚ)+»©êˆ‡Ûu¯ø›ìý—ökñ’5M"ŠC‘fÎôsƒõøŸÛYÇ_àäZ=JêÓRéñ(šSß—žsäh~§çÚ6]`€í¥#Æ3-…qøó¶ &Â<`…ÐÞÆ|ΠÎœeþ~Ȓ­EHÖÐà_–wÛµ.BCºQ€çÁÉÁºµÓL”š‚nNPY™ÊŠù&$—àïüŠ#»‰™Rœóî}ƒŒ
+a‚žvSÌÿª`²úªèzãt[PEi:~­Ì"[œTšAYw ّ’!Ž –éT††*ÄÐ(L:ñï‡øxC‰êGÏä8®| ·å¿wNÁ9"mBÈÐå°4Å7,_šbô4»Ÿã‡HòʉH{ÕÚ§‚¡yV ³Ž5•²–rù% kú{‚ß›Aá’bÉobÇâPÐv£å4,œsšÑœŒðêµ9üãáñ/þ-™éA—NÁƒX®ÁEr"ÕF’îõÖ¹©¬T~èWƹÍ"Ô0^QŸq¿Éz¶®{òÞá|<xHÎÜÕñ
+­xwÂGËS®R†Ž–‘ãÊÔxŸ±tÞŽW$~èÒô܉O~Û¹4ša#}&t±j âŠÍ€i'ÉV5<ÝûŽ©§ÿ,È»ý©ì J_ñ¯È„§—ª‹m8ºa=eÏýèŽïq•Ï6ÞÓZ€ƒê«*Ãކ‘c=£uQ«+€ě cÓê3±$.øz±ˆn χ<…yŽ'LǵˆD@Ž\›$È
+ÄËàd,@Ob|ݫÝ»™ßœµAîñ=‚Nòî²$ôQq¥õ)YãMÉØ}ÿô‘ö°«™SK÷!”Ÿpÿò< %/I'„û¶6RŠXSy°<†§c|qóp Š÷WoZWâD€«ÄcƒVÀ2pUiòdRÐ%]Në³`.« P:ë°æÎÄ0•í* ]Uè7 öœ'žþ4-a^V}sÏ¢SÕ+8ÿ46ÑàÓ:yçÆmôÝ€®o«s†s· I»ëfè°YQà©Cn¹Ž|ŽBö äGl‘£nŒ
+\°®vJ­l’ú¥„EW-sŸ—uÉàé_€RhÁl€,µŠcÚSb›ŸÁ²yáÞØIÅ9žE7ü€\úôØçÅB’LÞ@‚I?²G±7,÷Fùþo@*+üLãNFˉjPW*@å.–XwÜH,, œ)J/ ¬ƒŸÞ 4¡£Mƃÿls CÃe©Ýd£¿ãÄŒ!lú£8S†Æôi ù…œüš<Té¢I
+T:šiºë1Y®qª€[4
+¯ûzØÃzÙ§OªÓãת<áêΛo²#î¶ù³«%‚æZsŽ&]Ð=ŠŠ„i¯Ó×v`ˆ°‚ óq% ñý+.QôôbÉW(d–nq­·¹sìôÝ&GÆÀ[LeI<Õðñ Bžxõӟ‰×_Œèß6.ÓzÍv€MhŽõïê·ØÉ`1
+U*n{Ð2Íí®— tdo¬—Úå¿¡™óñ£ciˆ…ªÑôXJ"+Åqu™xx'J¢ø)quéo 0Ž¯±7ÂÈ*Šåø :I@ÒKOä_ç˜[td„&ôþ†sl† ‹cTOÏPêÝÛûÎâ÷ßf3:T+€COE  ŸO@”]±±o‚¶Õ¯® #ö—”5ßž5÷ûž$™S, Nìh&Õ|[)­ñ÷ö|óÑ1ÿq‚NëGÔìÑøŽ_G£œOÄ]ñ‹Œ›§°ËÈØüuMíî°8öaHŸ-!ε&,UÏ©Ÿ=Pëƒô~jq,ˆ•8ÆéÚÖÛV+vÒNƒBìt¡4ñœzÁB¥vÁ
+W–Ú"¥ˆìxa‹„ãŠPKŠóùïù'R@ÍpÌéȒªnù#2G|À,é°°°_è3±@H 0€ös\ ±|œ^ˆg6NF:8óÑ/Œ%Pf«_ê|Ìe÷ÜG+GÓOñ>m vëýÛ"Åå(®`hÑs`vO¡‘Ç‹—b ókZžb[äÌÊ+‘í‹o0=,:³<Èü1œró៞8«n®Ì ëÎWƒìý›þï Ú‰@ÇÆD›Â`Žª'>ÝIò}£t-®5Œo4œ= Èe‹$ØçÂŽ(^›hÝãÝ(.€€û"Í܏N…è·~/gœŒü,€Ì¢ e›B-"èö•cGhG·ç>5Û *CÉïÄ+¡e6Ó8ü0ò\Ép­E7$Ô:W*rGû™ô€žKå?3±±÷®Ú
+’¡k£”x÷í%¿­Ô®±ÔžJ&rÇ©| 'r1iv‰Ó*Å÷N®äám˜^5 ä}nàsâ6 €0çÛåœäƒ^#<Cõ•3S¡ÑCИR° a)›ø›Êã-„6y âÎï_ € s„ óôßE8#‡uÑE €|K•<–,=dN ÈôœŒv³WP¢›“°ø/8uéî¿ÈÛO‰]*˜ñ™Q!Ð 9›èŠœy¶KC¥“³*ªíŠð8é-~Ó¿Žå=+Œ$ @j©`&ùr‚¬n¶$Ý~Gˆ b9f„ÝæÉ XÉ[¢AÜ@l'œ œ¯î&¬2”÷&ê–_3atŠAú¢+è^†îÿVåD%G,€4“^º«bWVªýmhë YBÇozZhÖÌå%›ª‚Ï£‹ò€ÓÌÿü‘öZòûÐÆùÅØs{­Ÿ¯ì}ÚN"OVêêdt*Lç×,õ–Š1#YÙ (>û`̀ε$Œà]Z ®×~RîØNö‹ƒã”rŒ1IÇžöMf<àqƒ×o-vòíûù÷WR>A·/˜øÆx”«ýô7vq&ï…îU _ækƒñ¥ÝP ö^Í#–ÒüÑŽ–«ñTHÛßS+îélBð¹}§×î”ÈcJµE¿.ƪº®ãªU'ŽaÐw{þ]¬ +(}ùè7qðÔó؟ª?
+ædãfÑíõøâ€ø%¯ÓgÅÏôª ÊS†n‡"_€ìQÀ”fŽìE9VôÅG9ãÇK̕Zfg£³žI< ¡«ÏDǚrɞ`†Îl'¯ãŸï-©‘Žw¶t4ŠkÁ7IáƒË:Ë/Xw?=µß;‰ƒLÒ׳|Ñœ‚Vç*AðîûςŽ17ë ÅWš]we_Yñ:xåÎæšð]Ï#ea=JÙҗœ°° ^ z¹‰ûÏGš8˜Y¹ìéÕÿ}šÁ­Ì£kÐyѱŒv4° íƒÆ9=µ‹žY ×U•&•M–¥*˜¡TCÜN*Í)öŒÁŒkÑC‚•ÚŽ‘‰ÛÕÈ[n‹Ö‚ƒÀIú»2”m °Z‡Ã µ»Kžr¶QP”3"ëÑJj ˆ÷bRL»Çw¶¥VmXõŒT力š
+–Î-ØFáTà àæåó‰`¢õ~_×l£ùùκv©…ŠÌÜèÌË­¡J53zŽËNÌ'O¹Ÿ…Æõ@Qˆæ4§ç·£@+߅ŠœÐ+†7u‘HBÿ¥ÌD7ºh|ÓÔ/Ÿ³NMAê¿Â©« ^VñO1,€3»–ö©úâ›éW?X! Î:àWïÌ;‘2Qõ«H@%ο#y-Øü=lk°Ùn ïÛ±Mh.Þ4ÅÒQg™·¹ßŒâ­àBnå#‰Æk6§åš“)= ‚Ãø=ŽÌÒŠ:£LÛòÖ÷#™‹w`)[‘KG‹òó@¡×èP|;WhYRǯELT/ð朮æ@¿f*"ØsJ‚ˆšÄŒa%]‰¯¡ïŽùi4/âÀTÓ_8šî>Üe°þöòˆÕ &
+!cŠ׍ªÉþLÇ,‘r
+^‰O?dËĶÉØUn…ªç82CˆÝ_§6ža3Äó¯ÌgŠjœC)œ ¢âÄ*jR(Rïì=5e²,åÞs‚ªR#3³
+ Óµ‚QŸÐù7Øîmi fjÏ$iæ4-!í¡WÃàCk}|gÌ»„Ÿ’m.…š¶ìtV?4¡ÝŽŸÒ‹â ç8˜yœT̐–×ä|Db –(EŸV6eo„|gâÕSvŽ·@ ÈBEÈá›6þni¿í„Š#<ƒã–~ᆶŸí1ûdš¬¡ž
+Åa€ŽÛžE -Öîóˆ@Uq!ÀpúÀõäˆXtꢿOeÜ&™åýüFyæpöºj&åTL›àÍkŸÖHe<oaîë»ÏHu+ÛžùF-R€_ ߎˆåç0ÆÌ4<îµS&ToSŸ9]לøÕŠÞ1ÂS‚‰͑‹™LÍ](A†y
+endstream
+endobj
+18 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-12 -237 650 811]
+/FontName/MTDDJC+NimbusMonL-Regu
+/ItalicAngle 0
+/StemV 41
+/FontFile 17 0 R
+/Flags 4
+>>
+endobj
+17 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 1644
+/Length2 16974
+/Length3 532
+/Length 17916
+>>
+stream
+xÚ¬·UP¥Ý²%Š[áî, pw(ÜÝÝuáîîîîPž»[áî…îî·þœûôé{nߗîó°"ÖÌÌ9rdŽœñ‘+(Ó šØÅìlé˜è
+̊9Øæ¶"MÛÎn) ŒŒT9¶„ÔڟšºcŸè°Ó«+ÏJ_ÙžxxšÑh— ڂù6‘š|–$†Ã<®9 Ò¯ŽÂ‘+s«ûúŸÞ™:ÑùrÄï«ø™Šúmëv¢¬³¶å«~Û¯eJÙ9)#åŸÖªO?«D§8œç‘§]@£ãŠXE؄o?PRkh í—r·gÃæŸ=¯¥Þ­ýRœ¢À+‚ün’*ÄùáïÐ;*³˜™Eð-ˆ¬h q÷”FŸ„…›Ž„ÑvŸûãC/çg’ÐYŒ6Üú­üdº =¥÷eeióx;ý@îî vžcœ]pØY!bMž}”õ·5š®êÈÌî ×@i/QAáÃdڜÔFs"èJ­g(qÀù“ŠÚ.3ã™ïþp-D'Àek.~–œ1l!…T€\á~uďÑVöæŒfŸÿÃÙkøéeøb|_bò‹uŽÎgø렛º&cÛ€&ÕAÀC¶ÞðÏTYå/ܵgPê<¡KÐcú
+óŽQ÷ȃœ+áÁ€ïvëžãª2ššÒ#ìêåçc{sâôÏäÐüÆ4úojfNw$ ÅyÑ£"}ÒØ
+×àík€ÅöFË œIãÌÏvšmT#±{ØQ¶ü~e~F”dÃ\Æ1oî­µD
+HÚ¢HŲ=Ån#Éç'Ì.…Ÿ‰2lÄlP%u1P–°ƒDoÔñõ8ü¿SÀq‹Hသ¯FpP-Lƒc6eŠë©óÉ?é÷€hN59V³ñT™?I©˜…©Ë÷¥å{$r„?zrÉܗ±Ï^ÀCAö춯÷Êü€þMR*S……NñU«åýZWÝÌxúA²F28Åhåµø“-M–ä³HŸ2ÿˆhÞ1 T™•?L1Üó˜Ñ èY`Xð}í{Ä?»TŃQT4q(§5؊X+?#*ñOå³hߥ©•ãL\§Ò–jÉÁþ£Žµ…qb¥êG'­Mèi]UFDªØî¹5`‘RYÄ ^rPQ8ƚòž
+gJZ€óMé S*‚`7'Eo8Úìth•SmÚ[¬@EÃ)éùÛài“ž®Aè‚Æ<.†=¹ybŸàrªZÚ3b3U‰Ô˜xAq &Ò2 hPÊPºŸî·;ÉþlM§Vs
+µÃÂpxœÃQør I0a¹AsŸbw:)‚OúƒOj͵8z1“O‰ Š­Ù+mšcŠ¬Ÿ³€œhF'žÙã;õ@&O'Ýò*œk_2Ž¯™n¡GQ4Äoš’í†ûýÌsõFõ6ÈÝÃ0²ê“¥ï.Rn@xщۈ%
+¶"Uz%—ItÿVmì-ëðFgJ Ÿ›ä6CGÊóŽӿàŸ„êXR .ЕïÜ<O³ÂïÞiÝôË-áåÍ&üšáŠ6-ô§n—ö*éÖHë@Ž‘ì#ÅFªò©²xϚ+鵟M§Ln1èªQÕ¶vί[<{µ·©hé0ÞéCLë(­ pÌqÔßÆ?Ùñ0Š@v–é×ÇQPÒòîÕ5º'˜Ö9™ìx¶vš°$Æø–¢ÌNš=;/4¿—,ñeŒ•'—HdFm¡™«J4mØ­9“÷“P,.rÛœ{é•ãG˜1’ñEÖ^jiöwÏØœ jç¶,àO Yû…„ð™HŸÚyŠNßHpýؘÜ*ø„ѱ€éÖၬ)¹Š
+:H›t€!„ìùÃÏßçòñ?2Y8« ‹‡å*±
+ëŠU¥,ŒèÄÊïì-Ùø1Úä³Ã­ˆUŽ¡ò+œicY)œÂ;ŽcžÍæòloà¥de9=D0›÷pLïxf6u;*?ÎmÓæ÷+x5˜Vǔ*{òQÙ(Ñßì* ó–ýM,σÉðš¡OBŽ Oцgì‹Ÿ}6~µQRw°ð[ª¿W† Äfš}l±4Ž—̶áÅƉÅl5¹]'Œ`ù‘|‰·¹ªH÷]s[uŠsêƒd:q JKC-hb«èyü-Zs͒8×ԟš\‚µÏ¬27™ÛuÝ‘071ͳ!?,™0ºc“KeçQ–"i·Òù'²7šzü©Òã
+Ø .л°ù¹©IzÖ{4ùBV_IlÝáS…éâ`€{áž™Q1ìË9c*–íu7_ÿvla¶4ô~–»®ýŠ"%ù ÍX)(0H­XEÐ-œ.WŠf pŊ?MúÁo±Iªó­x8óŒœË‰Še
+k³€õgË¥À€ªµÏKouĉ€J=«n›
+‘JEæï"Æ ™%ö¶ÌHŸm»Bù9×ðG|û±d_’Kax ‡PJTq{Nj ¹€ô2UWǂ ã
+K(ŠzÑøu„7a×=êÂÑ|P¡XÇxŸšðÖù¶°ß{úUPܖØÆ +MðU}ŠjpY śO2Uð`šj'úÂj—•—šŸ9m«ãs‰AšmIÊ;Y[bËý‘ØøÉê6žº» GeM—§Cý»Kˆ/»ˆråæu#I¹ì-Z)óÙ<ºS…[ŽÁÁ·'ÎZ҃íþ®çƒR¬ÒE€q\LžF+JIá"Ý3坈B; ºjÖoö’úÄ%8ùyµ˜`Z ’³
+pzBçž* ouâÄl–TÓ®z:ü G‰Všº1Ï`G{
+Š7ÕœGF‡$õŠY†sÙýÀåo}őPgls6¬³œ
+ ÙýlœÉáŸÉ¬ŠÓýÆ—{Àk=MAÓN¹/ˆÈNšYŒôÎÂÙœkˆî¬Çˆ]ª¹ÜöõQè÷*M‰Gý
+RrљѫÎ;cl({dÅʑŠÄ=[úŸŠ‚@‡¬oø¢mw<i‚ Åqø‘s\YÄÆ¡çC‹\7Wö€ñË,ü² /ߗŸè®!ÎAàèî&«¡…òd 8 ­cT$J_ŸÇîˆ=e2t%e#øÑ÷ß~Î>†¬MdĖ&ÃÛ-HÆ|4!Œ âûcà\ÓàpH5Lnj£•Å•,¡…-‰flž^ËÆj5zêoTÉ¢TI'Gƒ»••IîL!–@µ}AÇÏqÐå‘ÿ[…¶ïN©ÔÔú-MkŠqb‡ß«ž^‘%‘$tMà~l=é=9§Õ3žì lšÚÚÅ_žÌž<ö
+{ÕЊóÃŒæšuŒvyZ. aŒ[­µKÒyÛÇø€1ö>×<ËôwEÓmô–CažŒàgiꚕһ\çîB,‡‰“ގôغ<\˜² €ád5ª€GK%ŽÞr%8¢jÛö
+‡wÔ°cíZ¯&Ӏ_4è-èÓåx^Ôl€ºGֈ(<‰æq±£šnKѬPn±„}“7S™hÞqí™ÓÜïîT˜7enXåtcćÎp$m²ÃS•“®‡2{Åá«Hq²¶xBv.øO\(`È p¯Q$[š%jšïŸa:ñ’@J¡qá"öƵ„äÍ2Uô
+{Z8¢Ÿ€Û:‰È©ù**ŽDHB™|P| vøXߎ²M3lŸY<¿BÚáuH%‹jŒ2ï¢xă^+-=’0‘õÔÁ‚žDT?u†›Qm”1 ŽM*5úÝ*:fì¬X@úšŒ¥h0€M|;u*ÁJ­þŗÀ,_‘|;ˆÿàÍØáŽ6¯6»íô탈ù0÷ў -šnc®l¿EOB‡t`_¡r3C‘ÎŽµL:§cÖ3©§é;“-n‘pšsvržPz&·ðw'ßß)~ á߃ªðȑWhzÎ‹ÍŽ8uÆ4÷Œ«|!ÅA ŸŠË¹c³`š8NP4l󁒜÷‰·Ñ‡`°ÊÅ͓çn/¿'C8YRÌ*.8’+ ÛïOUL÷È2U“ôMd8Þ|C“”íWH{?×2N¿uíSTuÂÒ÷ªTݳrâw™ÉÑÑôšs•G_eŽ…êøÞã"ž1ü“?nò7^¶Fÿ°CÅÑâËÁ² œØ…ñ}÷
+ík9 ‰XžééïƒÀú€Iۂ…™
+Nn]D™ª$öœÞèá*Չ·to#nåÎ{ñ›möw0µïœÂš—+#KO!1œJhn3&ž~7áô®`e;PU‘?ödÔŒŽ,›·à({D7+ÖO}/דŒ™·N¶k>­.`–€éß?1
+¹ãëx]ä%†;; ã«…?®É]©Eš–÷Ï»ï£sŒ,,os/¡øT}âf`·ÑìDç| b
+m5okf‚“ž—ÉØQ²ô}1T¶öWÆ
+†Ô碀^hÚBº 4ÉgéËq-ƒŽŒÒ.ÿüÀ œh(
+ºSòrûõÑ—9Ò.hiӋ3>Ý÷ûŽ#»/^÷Œ›—zÉýzyTt~^zzï ?þ0V«3zsÕ}•» nUB_Àì``Œ‡²Rm¢§·¢íkxd'±{tb]³FD¡v2 ]%N`šœä Ž?àIvlmÉ÷#q֑)f ²Gèæ4Àš49 ÔcÆçPÌm<£§Œq7G®%í”`¬xgj*0@mÊáÏÓGŸŽÐ
+ˆ…@%l7£é”¿šaà§Ð§uÐ=‚±Ý§F–Ya퀚t &ŒnQ€ÐR»!ßÊaL“£îÔè/ÍLtØ\
+Yoˆßdó¯…^x.Ÿ¢
+¬ô§'RO›ÜF£o·Ɏÿ X!ØKç û ‰CÃséаð…^3ìp΁µ•^8)ÇAGR8=Ê0Iì'Δ)ŽúžG£l•ëé—ä;¬3Õü† (쀥iݘ“HNwxšì±PnŸEûVùð®«ÍöìÚ.|Š ”šZPŒõº¯·jÒ?z™l›$öÊԔȟ6uaãsJ€dÿQ‰z¬LmMÌFuTØM‰œ¯ŠhFgtÀòÃ"v¥%Hi|²`¥š³Rµ/W^5ðI›‘Am‹`z6'9ŒNâÍØ:–sDÇqÄ!/ڊ‚ˆùWc<Ôh&KoÖÎÞ!ž]Q:跛?ʪêùÛÉ‹¡ÕWjê^Lm=4¡®„ÌƄ¬l-á­9jvXâ¢6ëÂS€?›üžšÈN‹†ÕG/ûm·q/ glÿ~k²öqԜ‚d[)j IkªÖ—¯QxÂu­‘Šûcß< T=‡0ЫK*Æí5Vš¢}âBöÁá+§ðº0‘3-wv€.bãä|~E?HÂÖe|Æ2?˜{ÙÌÜu•*ÂxrøÎÏ
+,œ}žÚvüÒÜXO[ zj#÷Ä,ÏòP&ÑwQ‹Q³5Q¡M<à¬B‡!Ô¥R¥<óϯ5ëšn$‹Ëk~š 
+ã$Çlr›ü”—ɕ²s
+hYº0£îcÊ(@
+KM£µ2öÒª¶.}T­upÄŒ<K²É¿9:CWy­û˜ýéUí»×ª2„ˆíúÙ8ýé"yZAG¿j÷”§W£aÈÂ\Ѕl肠€‰÷>%ͳ_lÆ° h˜®à‘=Ò –nÛÈ^ÃMVtA;?—ðe#ùù7jðyFã÷º Ίý§É×ê¿MJ#ãO*U~Ø?ˉì³þB.¢OI†RÿÎJï˶0Aæ`žoŒ—‡iƒ1œ¬[Ú¶Þpʲõ;ó-iA%Hc6ˆñúY•öü‘'ø ’Ðñ׈ޟŸùu‹ûvãÃ’ #†JÁã$6j^»¡ñ
+_îå"ýFðrx—ŸÌïB‰×Š-£ÿ¬Ùä`:8ŠõÖÁ&¢äßbðz}ß,*ºhŠS@üÄU7ß<÷+ŸÔžŒýRK0MLÔ>ã°ìý»*{ŠÝ (=çH¶*ÉÑRé̒Ÿ«¯m
+À ÏqÒH2J£ª”P„YÅáõ5âûŸÅš†!蜒)n÷ÇñeVòm?¥¥÷"1*J‘Íi9ÙËƃ>8%íÑr¢ÄÞàÎêÀ6I3Ì^ÁȐº^åLrYT(ߐD÷Ós×ӐÄ"€$UýÃñ³…Þ¯€c ¡±Ø v‡ë~ø¿ZÍÔäœ&4U†—¹ŠYHà#äُÆ^*øwkàòön÷ εºL1]Šv qöIàví:&f -΂Å\ø¬/”÷Ìâ6f#Ûù¡|³Mî¢Zm2ZŠÝchOJŠ7gVCmçêcœ5PƘž:4€š±~ÞzØA!DAØ;磘·gÓØ¿«I)ÖÝgDN†Ô'ó$»í³LyÖÇtEÄw&‰kqo–xEh,ö!IÇ÷°(’ßš¯üxUÀB²âa—$9P\Dd[syÀ2z% à"G¢Oñ÷v¶Cëd›~Y¿=²5-ežºNY“ –=.$؝¬ïÿÄË7ӛd2“éKñ̍•%˜zM
+ëD¢¥?DÚv”ƒ?ü³Â /ÉK·ò]bÔ§å¿ žžÑp²(Kc”±²wšr©V5—–˜¥Vi'®+‡w)_žÀÔÅê<ZtÐŽž#9gÉsVméßP÷ðõ;óƒ‚ÊüIýŽ’Èc=9}/(ԙt³&·8¬Fó·/B’žð@³ñ{ðÍàƒmÃWáïØdCzh~*²ƒB
+ßCÚ]%ådž‹²fæÛÆ:ëÛÒ
+"ž-“©oøf_XÇ~j6ªPù4¥Pa¬ õŽH
+F:Ÿžv…ÔÔâwS—s6ËCRa¿k$’Da72CŠÒÛòr­ÔŸ@̙-ÁVÄÙ þIòc/Nj°š¡ð°šƒeÆ*õKÞ>µ‘¶†\s¿ï"ôlÓÈaTZ&D\£LO“kÖÓÍkŸÊÞ}åÞZ,><%5É~…œÑ#Í1MNžKACNï„É0*)eˆ~k†×íƒ×ñqž‚F’gIÖÝW8s=m\göꖠÐP«íjê ØÙÔÛ2(W¹êŸ°á`N®DMŒŽœQË0¯ð~ ×,cœHrŒ:»¿Á·×”³ÝD/–êQÿæžÐ™™â,Éhƒ®°œ{€ ±Ñý° ‹?ãRb ,JcÞûpTFµá:®mÒ÷\y‘Š©Bc×æ ñŒ/¢…ƒ\OLqÔŒ ™ãùxÈÐ-W?ÕB2ú†þö Si£J×c4ýxuÀÁ†r^ćȗò¬gÙû¢ÂY%ƒjKD8Ãb»€?îۀ9ïæ@úñs*®ù€FÃûkP(Xms<À§¬š
+%>8sïµ ÍÞâ;Dúù2åz…|gí5±¹?AžžKÕâ5H<Èو ?ïØY:ÀK© 6¬4c%Û ˆ7Ccª‘ØèÕIÞäMœ1†c${yéÍ|·ŽíNLc•}
+‚¡¢³à.‚ e‹Û¹šlŽƒ|-sÖêk*Uó"QdHH¹(Ŝ[¥ïÇs·{=ÔèQÂÙÃ݊å2-òÝRŸ )Z¢
+â3:uFò&'Õ¿»³RÃ2Gºº¶f°†¡žBŠÓyZù9ù<ñ•ùCò
+žùŽŒîÙÁØœ¥r/1úžP^µàážÃ%’~™ß8_ìõ™#«¥ßZXŸž8 ÝêüH–ÜPEäôvœØšfÏCQŒ-|=Šïõ7`öãekÖ@ÌNwEâ±%÷ÕfCî7Ñ0=·\&?ZIw㥲áÓl¬‚7¯rëvôÄÎûg{˜dÞRÜÔ ü‰” Dö šòžŒ¡îÚ;ÙßñíO‹DväÔzg®­ýBxïlÊW[jÉDڔ·Ÿ”µ|uìúDÉà7 šR p€9d?pJ›q唣6@ŸdÝ 2$ûÇŒ}‡¹hé '{3hL×n*aT‘˜üçK|öS¬'*DÅè~&ŽX’šhmV¢B¢|Á90µëé^¶5mŠ
+5Ô{?ŠQnŽ7ÅbòcG¯K9ÙÎmØ¢¡4ŠÈñm0Š FƒÂéM±U•@E]C"ÉõßÉ0¡,Š1r /ª f šä4@J+Ž÷žú³3ËuÄHr
+ÓævRg“ËÌ¡5yÒîƒ÷·­fž`Z6Ê÷ò@rñ«‹Ð1úÚjvÚYîü6»€wiœ?YmpùõÏa°Ÿ±€j‘Ôœâhǔ/Ñ"9™øÓJs†›Q021°™.«9§&K¥“æ¿Ž!“~{(¯­¥=€jbFž«­L©¶¥±séd1iñ¢ª
+3¬/øqN
+šŒI{‹Ü”2E}óÍèfiWvô²4Š„Ä
+Ê+äãùœŸÎjÉSRê¥hŸz±Dœ/Üæ*\"6Pڙö$Ãò҈êk˜Ì Þ·Ÿ±z:ú²«éÆhêd]¢<­~H®HN썆FܙcJž_¥0+ÞÛ!ބ²E¡*úËü,l2‹iis<Lõì ¹j‚ ŒiÉ=6] ¬yÔëŸ&qà Ž»ŒõgÐ ¬®ªn±6ºf–FÚ~‹çù³ûúŽ÷Ÿ€ÌœÁ¡ëH—˜ô¢
+üFŸw&úCŽººH Ðë2dœs;œ b;ƒ¿Ñ&×^Dá{Xy=®õ’-ñÚ"ªï!Áùñ¹ ›kbKi~Eb1°![¹ØûsÅWWH,¶chÑÈH¿]âBéÀlsQªŠ±ýZú" Úy¯©¯þjøR¡èe¥¬E!Žu‚Í…°…ÿŽè_ÊëuD$'#®J<ÎeïÊô0Œf˜q§bL‡ £š?2èetÀ:§¯ÌÌg<«.˜šŸ{ãB,ךÆ÷þ–ž<cîJ ºç[až“Ÿ–’=ŽÃ'ÒhéojªsÑuùcº2-kA—1-n˜Ùy,r^ÉÎ;íïæ©_\Ÿ™Ð8k1ØtÒt5}jƒ°:Îÿ‘DÇB‘uw³Â%`oêÀr¶±:zGå绹ºÀçî[R}AW6·øІg{åÖöxy%‚­„­Ð ¬[M¢­'îðäUTâØFJ&FM}íÎb×X€fÄo¿­$¡ÊÒªŠõòK± [”ZB‘3ä$`תìù0ïýhÐ]b)Êyx»éžŸ®¢ËáˆÞ˜ãù(bþ Á`Ä[„ûæo‘¥ÊY ^×xÚ=v|5#ôywú3ÁÕl
+`Ö¶ÄñÍ Úf
+„n÷OÌTo“CŠ‡·yG‰+Ô&ï·Ù+šØ‹FäEŸó81;Ö'Î)ql?[šÇo]S&S‰lš fƺY§|¬Áœû¢1žg¡@‰MåAY³l A!³‘Ï|_¶ºé}5SÏ,l—Q<R°_
+b pÞ1IÊ
+MoÌ}2l9òzgØî© ‚¡0|Ÿ­È¢éΟY€Èˆš§¡†…°1ã‘šzC^Sñ±‡}㔺V£ ±Æ&µA"â埂ãlõ7<4ïðlô,AÒ(LõÙµKÊò˜žË™
+!3\]v‘Ç3E ¶¬$Dãï($²% îÖɪL^#ÆtÛd3LwwüèçtRŒa6
+ }üœ8ÞƊCÃôÒe€j‚zX!ê}8>o)å
+õô2
+²ŒR³ÍŽF_Žíøj‡œ&NCÒ|‹±{Ôß\~A«fŠ7ÕÑ¿çÁÕ«1÷#Ë l) ^PxNšQh?¯úŠê>~Š¥FßÒz`»==5ÆT%U9ã ™R\ž`ÉÕëADÁlè’G@Ã-™àHERl³ïûlÔ÷%"sî>6ìÊÎk²Î‡x ƒ[[9/ýÖz-Ì J–˜‘C>j(Õû‹…ï”/GËä%Þo“sØ<z<·WÄßfJ;‘_9Ã~-N¥^ž–œgÜÀuÁ¥Âs«÷žƒ£Õ O~)Ÿ_Ìz«ëK:ýjŠküblÀïÞtPôY˜•> ýž8ÜVbÛl÷ ¯áË&±™6EùxωaØÚcqÞ`$µQƒUuM:';}7÷·¢ÿûp="˜SíóŽ;ï÷Ò,øaÝëùô%¶œp"Ï÷™?y‡bÔÂ{ñ LbÚÚš ºoõ)£ÈþmØÞ%ƒVAÅÙAZžµ@§­hÓ÷Á×a¢_Ñ@RìýF疀Á8ñkË‚Ý $ªhŽK<$îDå†6¯ðØôÓûW¹çµïÍõcÝ$Ñw [M¶ø û«I|áþnmž
+›8­÷èS{sá؆»G§uÑÑŸ(5µ‰þƒOãprNšPÄ«®Ke%„‘™;
+0tâ;_;Ž§%Œ¹¿GÚHaûZö‘‘lG
+Îvà _1.§I†KwŠà….jž[¹vZ
+{ R°àÁ4Ü̈„m—3ߧ眢АŸ\BQN*÷×à(G8:cKwÄ-éü°hñ³ Â #ee¥u{Rø—r«+<ï‰
+ýVWà|GÔÒ< ±‹
+åºÎàëw\M—Çõ€Âe
+Û7?­ýÔã51ˆ~õËþ„HƧ0_…fÙï`„R²êMº<CËp@¶]¬|sޞáË,*/»—²j*”Ç/Sý#šSw(Ê㵁žñU9]ï¿O#Û³ «ËXª¡õaŠæCá}:š0Ñâ0ÃwƙýVÀÑk`hÂÏÑ!ûiÌSï®#ÿúUÞl9+JŠ>Î3V‰y»í€µxeþ‚Y‹l¹–†šŽõ܋ž”Iõcœ3`9ˆóЙ_¯H"蹏¡2!ØÎý¯íçz»¹©W~HvL7ڄ ñMÑÏoð$KX”6ÔåUp¢Ã§á˞ˆt7ö°(H6ý6xø²§žR§W§5WJDSUÿ€ÍýÏR¶›zêþwyö† ÒßgP˜!$ëïφ rVt—-æCP QKŸoxoí1:…a¶?"Û[ÓsAÌ> *drÌœj?ÜC=Kƒl\šœZŠ™wÊ?š:Zq†£ÊB0 Œ¥¶T‡ø҉„yÚ!¶ñ·zÍþ®-}±¬í攲4ð°šÚ^è‚8»ÇÁHËwæCŠ‰ñ“%¹|/²ƒWŠV:¯Üª7>‘êõ©mEþ~¿4ǐ¿žMŸ×¢ŸdĺŒx?ý[E8¿{[û»Ü›ù™85Û!HÇc†ƒ˜Î꟞ƒ°~ê‡zbóžâŠŠžÍ%û†±@¢öª]âÞ4S¹ª֒13›Ö” }"ùâ÷ÛÀžrÈ`*¡vŸ Þ"Ÿ0k1‡²ÚóØc³’fIMjQ? bCzà Dh£•-§‘ÎâªÚE­Ö€ËUvôD;rQ©P- Ô–]Gæì9 ‡S¬›Éa•í鍒Œ±ƒ(µ*u¶Ã!õÐ-4KÇQ&ڄÅÉAó2Øé ;ÙŒ8±Wùµ ñÐjÑôÔï ŒëœUpdb“ÙsÈ}fC3}d°Š—zô…'3‘8Èë±ë<šé E3Q·Ÿ]sÞOÌËò9T‹!bÅQk0RåC©á±"]ðGûç†2òAK¹3ØêL¶²:m{W#],äŽ?I6¿j'»n6<(Ù ?óEžîé­êƒçKݐå4šLã‘ߟ÷EÔ¶nïêBœ¿Ìå’ǝ7†…ÞY⑆òØ#C
+²¢Zã>…Ö±ù€­©ý%U_&Ö×­Åšü2Œ€Ë°÷ÆmoÉGÓíäüýÝnÒ !ÿÑr˜Öë¥Q±ïÁIJ^”ïU³k]þ¯=ó™mo•VÝ|°gO'¿+z4ø ŸÐ™.‡,Þ°uFª}F„ac-SÖÑl]6xÙûôF2=;2ÊžÃA€…ïz??u\U‚(m2%hØž“n®%’ZZXU¶žƒîjxK:(ÿÌMÃ0}
+§•’Ešh óŒý*¬û†‰P‚@lI‡úO9<Yý?s{hT÷M⶷КK§&žuÞboÂvà›-ïQþ5»œ‰'^ž£à0K^I3·ÃŠñ•ó]îïÕnõ¢Ÿ·Ý.Nfð;ѪÀí•z9iéŠé§Öý|ªœWûS.ÕT9›S­S« 8t.¿ŠÑ|ŸƒWß­•ÍhÈ| Sr¡f¥ÆµõËÕ²þ——ύ:{Œr“Ž`ÜÄ=ë„Ïì™sð¯ØÓbßß»ÝüÃç\0EfóÔ§JLª[VsO²°Ì]Wã`/ŒâBÿ£* /œ£RUÞ[nÞS~^b¿7Aéê5ëº{-§ß5E=×|*"iQѺTÙ×Ïg›‹®òŠ$î¯U…ü¶-w¶–µ\Øì³Êu]Ó¥›sM/ïêÛÖ#œpÊŽWÃv?ꃉ2~Q‡«<Uïò®RLߣiñVŸNM胫àÆSÇöÇŒ©ZúNÔõ çÝOÛE•úc€·›2ȧ:ˆŒ˜äyk}bܜ
+“k"s?ëŒéy}`̇¥³çÛOxúoóš|þà­Ê›rÿŠ­ÿyÆ;àð5[•b77Š/øغ ÑnâŸUλ÷ü–ŠúØ² dýâ-™Îßt͹¶›ZééWÈlM6ïí‰ñöRóÚq(ߍ)fÛ+—‰Ñ»3$šì;àvQ&ù]ߣÕQlÛu¶ß°×»^¡?}þ+ ÷iɓ[N°/Š—Kf–žŸºÔ —/`üìsÇÃǛÓï<oÉØþÂþŒ¶ÈÁ#åKµž£?>šºè…Ôë3÷ƒœÕöKZÔóÕöªõ¹³¿ÞÍ;–²ŠÅRkœÎ²‡ö§B2?»j|ü/ϝøš/aӅ M׬ÿéúÑWV9D­›™=›ËT€cù2ÎY¶®çÂw(®^aWróÖQÕÒÅæÚÑGy9S W‡\«ø>•]ÀžPr÷Ãêˆ>֗'™•Ÿz.ûDÁbÁVÿ£Á‰Ú¿„ú÷nWZ`œó]ŽÖ4ÇGÉ_ôö[äÿôû*œ"Áš°Šæ‘í¶s?c,õatžþ6íƒeÚqîºk 'Mû¯lÌ-×Vf09IfÊ[Á‡k›‚NŠÝf^À³ÛoßW¶žwöOö5Ë*/`Š¬/MÝÿË0bYQßÖ _Z'÷óŽ‹>Yß*§µqµ»±~˜¡€å{ót‰Ó~ìå‰ßw¬7}v"GðñŸsžéNÎz“zIÄ{Î^Žõù[ïkþªœÛXõù%Wâ] µœ"ÞÇ×ÙV›Lô=œ|æv§}wæ„çÄn›/~›÷Þ\£ÕcE¹Sõ<&¥Œ]1µêlšÓj.é#í=oÌ×i¬Rx^uš·$ùwPf‘V4¯Dº$g§é»Bv»ïÊ3Wÿ<dªº®è HÕ}íÕK;sº“­ùDoê9œ]Ù-©W{Wjr9¿GGINۆžÄiÆI‹enGï- ¹Q^zøã})¯ö 2㢢Œ.ÔéFË=”~¡ýqçõ_=±ûV:gló=jŸ:]3ÁäN\ðö©µ Š éœs„~]›fêÊ!*úB¹M÷[e«ÝSëœgû‚Ožº8·ö«øÞjŸ$ÛÀ’Úú͆­FäWàebFžGîÿ¹»ìúíO^aó3$®ž¯SzÓ-ÙâSŸØ|7N–â‚%J}ÇçÉFÌÊlrÜÖ^1U2ޣ趆…€kԀaa@rNjbQI~nbQ6
+endstream
+endobj
+21 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-61 -237 774 811]
+/FontName/RZRCUW+NimbusMonL-ReguObli
+/ItalicAngle -12
+/StemV 43
+/FontFile 20 0 R
+/Flags 68
+>>
+endobj
+20 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 1662
+/Length2 11975
+/Length3 532
+/Length 12869
+>>
+stream
+xÚíweT\]“.Á-Ü¡qwwwwwhNîîÁ=ž»»îäòŸßÌ|s¿;¿î̯»îY«Ï:»ä©ÚõÔ®sš’TEQÔÂÑ (åèàÊÈÊÄÂPٛ¹ՀVnÊfv À»‚‘’RÜhê
+rt0uòŽ
+è`ñ¯é¿ÓõwòÌjzjâšÚôÿՄý‡©Ê{+žjx9ÿG[ÑÑâ?‰‰9z>3r±ÙعÜÜ
+„Êšî&kr'»×…ÔëŒa™Úò4ã¹ä©c÷q‚3Ù)YäÏÛhß6jXF“9jâoG¢ÌbqM±ú;Ž¿atC™³÷6ÊÛ>UÈB·‘šäÚ«ú8„ƒÑ.:/ƒ:€•ç=kÄMŽê® ÊÝnCI[·Útñ¶ ]+‘ –Yú/¢|T€Ce„1”JhRí©Þ"Š‘Œ)5ÍG¢uåã™5]µä0œ¥ž\œ„d8jÐfŒâ_J*Õrð•?f™Ì»ÒjÇ%®ÍˆžÕ@)>õÀ;Jêê©ÉS_†º~ã»èäs暐àAØx3 lK @mâYëË  Ø+n {1OS•Ò­+æðBY…AýlŠ©o¥b}ÎU)IB³…šÌºT[ÃcOêFÃþÄs“ŽSKÆ«à–·`µ$^€€ ³±ücš¥Í6/íJdŽ€Ò¬U°Ô•Ó»š&ÐcŸå8nDƒÈžidŒðÓÀY{l% ˆ#^¯úäoU£cõÏsÙoŽòÆŽõkY€)ࢊYì±F삱ňÞÏr'K‰Öøs+DgÙP?¢`цm}’Òï؁Cê’ÐýÄHŒÂŽ©˜ÑY}©YšÕ’^hËÃ:µŽ?FŽåõª™i׶ŽOì5a6ˆ¥û_óâ:ó×MkMð!Cß:«.^ ·VõÝŸä$š}=<°­Oܯyª®Ì~ŒÿšãzpgJ•/X?š'óuHVÉ:¯à#ïŽbYûëvsü‹Î†çR^ ºÃË?~*ÆƱšìWACBÁMüÀ°:u
+[©&ê‚v·uÆ« rƙ:‡ƒ#’>ÖS'ȟ;“'I¹¯ñD:£FÜCGBm6c<ž òãáü?ÁBJÓ)ßáÑ 4Œõ
+˜2 »õ+çîEðe¿âvÿê+ †³,ÆY>Ÿßã|"2Zmr[ô9( kåŠÄåO4Æ NëË©ãVzº¢»ŽTœ:ÿ¶ã~ÍÔPà]ˆ 1..Óú ,KPMêԀ/Y6"…®ÝÖ0.Yn +ŽVúί%Ԟ,e<ÁYFšîF^c£ïC¡NÁŸñ?ŠpŒmõ¢éŠ!0HÆ­PœqÁ…Ãnng‰…•mÜ'hŸõÖӟfäf~yÉ(ÖQܯc#Î×Ò*;kÏûÆf˜˜üçт…µøà•ŽÅkƒŽ×òÝñ“pJ~.ѲìkUktˆs KûqRÔ(ñ-bkÓmÏ|‹®ÒzVÀ3ÓÚø˶‘*ô°0''VÓºô‡»s56€‰ñð^"¯n·Žc]±
+ܟÚcŒ Zj®üžŽÙKaTž…ª¹Š­tì攞³`ióc†{SoËMi:Y ¢|XÝ*ž€“Z:9;·&b¥tœ‚ï+—«è‹ÙûßvÈÖý‚~1“—ͯÝsc);gb¢)¶¢ß?uo]>NG¹Cf
+Hbˆ8×#BÂëØÆjJÈhݖŒ’µRÿi‹“ÆŠlÔ;3|íØmø¹Ñ 9œ ®Èš×rÜM©Ú?ì”çsƒäo§ÚˆÆ÷/ž YjEå¯×:Ô4=ÙT=“§±6bafp˲êÓ:B+ŒË=×ٜÕúõª- uë©;TŠSPFœÙª6Ÿ<pŸØèö â[ü0?àtO`7Sv:á0·Õ5˜„•«¹ 󍷶’Öfíx²72"鲩žÕ軃>QŠiŠÇ2ÁSKñH\|
+,ÌÂÄtú:tmË·ÊOÓ|ÿ*J¿Å?D) ÂÌý@ŒØ1Uöï3/5›¹å‘æÓèÇ¡zÔðø°P Ð2šuò”®þ1ã‰
+KÿÅÏ2KË  ®”©,êöœcãW?Ê9b…ãa×7üo±Ø¿F»Ÿ&ÃtáöŽ{}㗜è„ßߎ°š­BíÕôŠH†÷]f É$ ¿Åª×ª-rHU^C'» šB.¹`>tó®XhóIVSÉT¥Zғ€<X[;ÄUIZD5ÏÖãw€ áè7lÔà*Oˆ?2}Ëèç,þDk~$ŸÚåJ(¡SÙ¿Lç§^÷+*٘ýŒ?o] OŒêÿˆY‡&™0;úÊEY¬ì¥v3~C·þ’Ëa„ÙR/4!çÆ
+«±úpK¬õ&ù˜ú€W&ƒR¿d„Y—¿ÔŸ0!Žëœº)ì
+þNgšDù%‚Mü±!Iw
+…–V›Žƒ„Zù'‰I<Òª6†uþv—d6n/òyç3ÁN6×!ðp.ùØa}+.é÷
+ñô(ÌÄçzÈö1q‚ßòüðèNáPáëùÎâÅ.íK•;› =W5Δ¥ùŸ`+Œ¡<«Â*És›SÓPa€ú_WÇ>¡â—Æ6ãž–Ý™¥ þ÷$6¿±E!âhwyãÜNæ}RÄÏD-r}±ntŸ®T/Î%bimÉ2ÞWà6
+6B-z%9b‰µªüh',€ŒÒ7ÒE9ÔLûœ'hp¥tñ@jË0_AL5îŸv!&ní~…0b¡!ÆÈ2Ó_«ýÔΟ6 ¹%ª_]
+dFòö±Ìò5cE&\(H2Þoö†AÑ æ‘3Ϭ7MéÝcªuûé܋ú‚<Œ‡{aʇØB<ž*o虶® znÆ‚‡0Uô¥a٘éhXžõšâ|!ãÏqÁÜ~ÞŠ:˜È k(Ô£c*8Š
+ÛDV²€„Ž°uۈϰµ©°¶fsӑƒ¢YÝ^Z8UkŒ+ic…€®ϙæq®ÑŽGµ·5}­öÓaô,ßs{ÉÃ"™œ õ•g`~¬&Ð¥{éN€òÏÐÄÀR¿ë·Üô ã§*
+8Íæz[œ“ð>H0jtÞ^$ȅ"d…w_‘Ôí“U;_ºµáîùŠBEüŒdt”¬“㯚šœI…ĝ¢` ™ˆT§KhòÉ |›N©øS<€RŠG<˜C &‡‡RT܀jCýÙ1ò­n0!ȲŽµ'3å^'ǺԚÙŠ2Ÿ“dp(È?þpdP fh-ÿhâøŸJìq$`+Š ˆ!êÁ—aÍ"‘y;¹bñåƞ›ŒúgdÁ#]„Yt—ÐzvÏË@—Ê¢¶ÜÞë–Éé։ÿuœódÏ,éGšØ‹Ç*»ÍK"öVá#~?€‚w5±§ö
+iðCtSžõŽ \ÿü‘ýi@ ÙÔŸ5-êyŸ—ÁWöAd:€ÑÝe>í4Ø=yr£×¢YZÕp#ìÏõR«2ºÎÚ}քÚJ8!F/wùYŽ‘4úxöVÛw” ºÔcZú-%±ƒy1Í€M­D|Óí'S›ûƒp"óz‘ƒÃýd@üR`€HšëôÊyÿý.«•k%Ä#\üì‡Ìæð1e]žÛ ~ºL™~µv«ÔÍçÙÁ®K5v–rh-ˆX³&#P%óW®Ü
+≾9/4œ²  Ã?›Ž~Žý?IÌ܌ci²ÄŠ9îRT¬CÜO˜çlÓ[v×ç¯^ÏÀŸ ž2ÊŸÆ”µõ4ÙW3ÜڗLáöTD{tM?Ž€'àŽ1‘yda¬eß ßՍŒ&o[€û&žqŒŽŸ’¥e¬oàpšõXP‹k,®Åúêy.D,äCµî¹AÌĬûšöÞL—Þ
+p}-ì“ókú‰*šnª¥ºƒ>…'Ziœôþ§»õÅ:änŠŸ’"«ù…\}BцB‹YK¹}YxýKÊÖVßm¶,§‘ƒ@åÄxÄ¢ö€Eìq§¹íY<yŒ#$£YlÁ "ÖÀ%òáƒúfÀ·ª€€0=‚ŒÕƒþˆÑUÇÚì”*>*Jºå&×Q4_ŽN@'0Ô7õ3ç݌d+ûö‘²ª%VŒ¢9•!êçRù“0÷—B¶or'è“A­rۈQóØ=_’/Ysa««æž =JcŸt—Gl•ç\‘`©fÈC+ ^åûú ’º’ÑÿŽäœþúfWC‰d³¶v‡GšŠâ42ø£BH&,+p›f†y:±tyŒyeK'nhғ_€ŸV,»}>æ«Y`óÁŸiÏ;Ð!n©ÿy‚ó¢n³Öž~bC§¬Qtþ}Ѕ}C¹KôîÂhØÛð÷ºFtÙv³ÍØ ]Œs€y©ëÂËŠ|„|.^Æà mŸÇ1$ža³É
+ñææ A}ðÍ`ydS,…{‡×gš„c ̊®”…µÄ€iß¡µÃ±dEË ’«¢.ž0:˜Ê¯‚ô¥Âü–Á©ßûnqYY*DeÜnúWŒèöŸÉ¢=dº‘0q¢›wߚɜ‰“˞µÉ«{$êŒpBÍ°Åk_,ß?T”õ[:ƒîBF‚¿qc”fñÿ`·±ô+Ú]3VŒï°Ñ€?š¿Dàâ=³Ús×}Š£ðž+Wš›deZaÚÃùa ;jé\/\» Ž §Û|5;#Tèú> Ÿ•¶MáûpŽ³YœÍevsÄcïVÅò%@€ûx0Ë
+äAcóµÅÖë’Äå(Ó| †…`ì+”²ºâ‹üÆ:qÇàMÚ+ØÊ,äÑd°‡T7›T(ŒÌªÚßɁœ¹w˜Ò™nÏ‘ŽFüUûPµóâ5BüBòCk,òÐ
+< nO( ŽwTyo8'Káþ}§[»”-%¶6÷(oÍ͉n÷méB_qƒm ²‘ŽÓðš(exšß­òùõŠfq¬)—¹“gs‚ &}çõäH=s•qcS>IÈc°“.?H›ñ’’…Ûh ±`$ßëwÞ5iQœç+V5gÈÉ7Ecþ†™û•n³ãNÛ
+ _ž‘â
+€}ïɪñz¢ádFpõäì=5^ýIJËËh‹—SŒ—Lüp^3À5zÿí’ªçn uÿ¡;é<ú”RW Á|š üïÔŠÅŒ¶VGœdTä.‘„ižÚÓ'Õ€×UFe+¢€Ž‰*ñE}ÖÝDÑùC*÷‰éF>…ŠMÚ2CT/=«Ä씵ÝÄéf’ݪ§2–ØôÕæßU\§‚[Éu¿ð&à©,c %R|û<eÕš…œu…ž™÷:p!÷š¢R»@À®ôIkp[Iôw³åöŽ\Îg¢þ®œÀ¬¹HEf²OQŒšNV°ôEä¹tÕ4öééšñiE*®xÒeùåoœ,©Q¡›Ã\ž=`ûÞ2PF§œcšT/‘RdNƖÀž|¶%¹NwgƬ…Îìßÿ
+ŽÕúN¡ê¢ŽZÎ]Õ¯Œ‹Œ”™Ã£\ë}”ó@.uy©c8â/å¢Â¢œa Glݞg¿}*s-NFìŸg±è›*؃ñózy›4SüÍ¥`£ ØUK‹žbNç…ls=³kž/Õ§S xœ¯šŸ"->Ü܊4W>@7%‹HryŸØaA«&†ó  1K×ϔ ®qy%ÅWhЀã§h™¬z!õ³ džÚ‘ÞOÃTf'Žº)Ì¿ˍ®IÂ&j1³./q5[‹¢iÚ¹8°{°òoOðÜúWüMítpF°)¹p¥äðbºFh¯ŒEÅÜ
+3ƒðÐ#£BĎe8Uüûæã"kÏžµirºBš1q/÷™`€Â žQdA/Ÿ'
+‡jŠ9—׍¶çqQšõ[LÏDØLÕùcœ§2¢[
+ZÈ ‡:õ_EuÕZ¹ÄjÜøâR¥2?·¹ÆfïØýû—§a=ˆueëTH·Èwµj·Û††€ñ¹(‡!aûyÔ?Š€ùêqvhý¿6%:û˜JFÚ%æ›PO„ÙDœô_eqŒ–À·ê}ù^°‹©ÑՋZl°Þ\wêÛkÓ{ÌXd¶|ø –gœR+TTð£Ñ #7”zï\°i5Ř3:Ðkü‰ã‚AȐՇà‡°ûŒ^õí,úOΖwÒ(XŠL£ƒ
+:R²ý D‡Ê YÇ֖Œæµÿ°Œ.Ù=)ö–ì™!Èvͳ:Ã(‡ÐWyCdŠÄÔb®7Ö<8xž•ûL5©1÷¢ÐºG«„u–¿m7²û «9ëšh^M/®­®Æ1ùc¥Ú÷€Âî ,1€•Ý\µD;ŠEI# ð¹‘/òBV}µƒE3Ò#nè°ä×Ó[±ö 4Žˆ÷PÞÏüC®8€‘$ÍgZuÁZèò8'°B|˜e4ìcEúc©k8³FU뉹?¿[R€ÊµfWm¶šú:ºmg×ÇVڈáô2ñeº?1ÃæѺZlâüFyôª•=‚ ßöxr36fk#;艗àå?¹RMtólÙÎPÅÇÃuBuf±HlöR‰~ý8Âø6·±,{ärê×úóa‘5 ÷qÙZª_II„K[.²&=¹ˆD­žæø0˜'…_<+©gùÁ³L)oý{–ÀéÝ4Ւº²c|vjr•
+>‰$ÝMã8S±¢ Úï€x61"4âgU%2Ÿïùœ)¢ø©äp ¬µ*S«‡À¬+ëþŒ“,dß$÷œFÂÔDÊù’à°¿¥ÿ憟®á 2¢K…X*æËp„Áe泀qØtí@ÖÒØÏì6+U¥ ŸnCqôšåç(9MtÚ>aŸ:
+Kíçå=#Bƒ#¯‹ ×ݟzRçØ TJsJÊd©VÑ*&'©Öòrç…YªÏSý"õ~ÐÜ€ø›žÓ„$Ñ®7žùŠìêA…|ÂiâLÓb3ÏæŽZŸå‡xU÷–}ÉùŸIÌWc zº«MúۚœïŸ\à­_ÚϪ;çévõ€ù!–5)°ÿê6}€(ñÌa'™ÕV§xÒì­Âl$eŸô»'3tǶ©ÀÃœGT·u@EbYœÎ9™o|qHǂíæ·BhÛ<X‡Ö\–ŒÀ \ö2¹v¹~uý8ŒÏú!ãòh”YÍ ’‚»(wŠ»Ýϧžµúgÿ¬µ67}ÁñØ%PKYF$«çÁFyb ØHՕu.³#¿ÂÕ
+,O—ÅFNLþc°Ø°à:Žó÷ zqvð‹v‹6›}ð“r^¹ì¯;ƒü'°çCǂ*¡r=^Óõ~T?‡>® # àŸÎæ^]Œ*a==—›CvòÂv8_2K˜Ý£nžzLËv¥³J™5ñÔuC0“ºÎÕ3ÜÿžÅ:E™Š`²@ð6®-š±t Þfs¯̝]èŸv>âLS2ºØµˆT‚ó^æ4ìHëœ÷œÎ܌ҔAË̂ÉDCaŒl¢ÔHÞ>Î‟%žÍ }2Å>z—yŒéwUw–SdX9Eª‡Iòsf©šŸbÖ³ü4V›B*q Îá(µd!/gb6Ó7’$úHJº°Ç#ì‘#ôºŠ‘Zf4eXÝ_óüÚNVb—’žO—àT÷Vž:\}•EX:63¡œš‹·J„ï?ž`_J?~œBž:Hv˜- ñÑuäJ/ºXø}p§§§ñÜWW(Dï+‰æ˜Œß»C3ÊÿsôÃ³Z-N>ÓŒ£ã© .›Š‘·C÷¡¶bMvw‹ $l»)|k$`e±“œñŠEHwìŽAªü@F‚¬,ˆ2őPÁzå`ùiL)Lë[ƒâÚ"šÃ}͔~¡T$ŒWRêãø–ýZ±ž×—d˜»áÆül(Ô~ݪÆéá¯ÔàäW”ÔPØ!7Ž÷:L—ÿ#h¯…ì×g4ƒªÛùà A‚Rx ÿ™#"'2;%ӌ9Š‹k
+nʂéEäùb<A%aÄ°ùþŽ—9%ô·”,< ÷áâíˆÀî Žó\r®EbþyR×sƒD¡š%jŠ\µ’‡ò:×­cðÖeø1lÛ\¢ŽÇº»rdôY376¯}g¹É¢-nž®K×[Š]‘Ž4Øæ0 Äq¢_šÝÚ
+°§vÏhë_.=z•7“àn#ŽªÊÙwj¹ÇiJ¹…Ã
+àJü'ß®“UöáðŽAáã7b<¬{Ö4U!)/šcŒoè%}ޜ‰ÜOà€œÀúãÝ~V©kUK«ž·ÓŒÔQœÏŸŠçš$šœŠÃë—2ÚR¬„xwyý …c÷o#+"–¶ÎÃ?<¡ÚœQ!7­WʆÀÌ|bßKí¥ å‡$£.€R,‰ì"àô$)˜Á•6ÀË/Ï[}–d#šbà•8smoۊzɺÅ ]×o÷ ‡N»ôSö÷Ž2χ#NÞ#©RŠžóoNŽ{¯;R]ÑÖ 2gÍg²Hº§~Œéя“eÆ9ŽŠü²””tµVö
+-UmóZNr-Ùã…=ܬ•cf5@/™Ä™?‹=5l@ۃÆÁqí©ùylû1ÞjdÂ7}€F—ÑÕ@‚ÆMâTã#óP©ŸU0èwR|ÓYš¡÷7ŸŒÞ§Ž‘t»ŽÈÏŸÄÈdßø ˆÚ`j¬¿ŒKµùS
+!‘sï¢Ç;` Ôdןi ŠéÆœ‚/Ô÷èù'ò§-˜!k+i›¬«ÞŸêg÷ÆQ .GÌQ‡ÉŸ Ðè+Ôî&äX]±Fã¡
+2ñ÷>-zž…÷§LrE‹eõèÃ6Lõ¯\Âò­šßpŸ•*'(Á]’iŒ¬+çu(õ”®Æ²ó5ƒVBòþ¡ôôÑL6cƒç<ð'H¥cb«“M>0YKËž¹ãáFØÞjvŒ)±® °bãö+Ïm
+m«9’° CQB7ï@yuxÏ­›S€Â雯À¯ÿõó“àn¿›ý²cžÛõVuÆŽ@bp<Ú>XêÉjçmز+Žy 7c–œZŒ7ä©vÀ¶¿‚é‚£ ‡XS'ö^Óif ª7®ºŸÏoMLœöÔÉH×m•Ôé.6ñ—ŠaÃñWb©š XŒöân-¥w¶žà€Ñ
+V-4‘À]Úòøò-¬jÌ*u§F«äŒÓߍ-ë–n‰YˆüU³Ïw_ê!à-:ål­¬Š‰ºªà¶äI£N›ÍœQ‡‹è‹·‹· júAuˆÈW›us"[)ÅW{‚æv¯*³=3!œŒÝæ Ú·l_6)֞šp
+‰ØÇðÇVe&%§ÜîñBÕm€œØ]ŠúɐÁµ:6£Ñ€}Þ\¬‡R ûlü£úKèJ‘ºº]Lúæϳš/Q—O¹Ø•79îÉZܲ²Ós«PáRÏÜPš°5.”,|Ý@iÃÎë“C:“QAm·lCL kKŽ Ϋë;êëV—ì üäíËBc×j¬“ƒëú kóäšHš2ŒÌ%«»§J„ʵiáåOq€(³yª.1IA;Ð)/ã›Ûû’µ'?0*n€È¢ŠøTD›EÄbÐ{ž‘Œ'ž-×eè>RahÙ÷ŒŠaÖqV*ّxEÍÚ |ĊcUIڝ¬ßv¯T-²jšÉí3ã_4ÈøêmŸ±`YŒrà| Ś+Ÿ|øE|.ºœü4_<#ýtWŸOîaúªûY*xäòlkfîÿ~ã¹ Ëùè©Ãfõ’Ú,†³†:]©E±8O
+Qòµ‡kYHÉo“šu™ðJ£ÚœH¬³·áIÏYËG‘ºOP®Æyô[ṂšJw lLGËZ\0:ŒOÉ.èÝÒ¿7ó‚+Ý{™)‡§“-ù
+àÁ&¹ÖUjõ<&ŽBl'"„ñ¹ÿ|µo•ÿzüØìžO†( ƒ34›¯oÆ}
+ތŒ ³?ßèA†$;€üªD2E{˜GÆê‰Õ2^B.’å¿y!þ€ÿ'
+endstream
+endobj
+24 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-43 -278 681 871]
+/FontName/EFLDGF+NimbusMonL-Bold
+/ItalicAngle 0
+/StemV 101
+/FontFile 23 0 R
+/Flags 4
+>>
+endobj
+23 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 1638
+/Length2 17083
+/Length3 532
+/Length 18014
+>>
+stream
+xÚ¬·eX]ÝÒ%Šw÷»»»»»³qgãnÁÝÝÝ݂»;$hÐ
+4Ù89J˜‚€|
+rµñèÿ­™…õ_•ÿç¿V†ÿ#éhîdñÏ1Q™:Zü=YÿËðÿŽÓtŽqqÊJü­Ÿ…—ƒë_VswW׿zÿkümÈÿ\ÿë
+
+›j®u°£DëOg˜ 7 mž#1þ’®ád
+«»ùՁé%ÒlH‚uEsÙg݂?ª¬Ò×h÷©§&‚»U—‘odá*ivüQLœ ß©‚°D–:SB÷W¿Bþ^?[fm#®¥$ ÆzϝÊ1[~3dS­¬É üƒgo¿AY,D…\Ë:y¢SP:À'—yHÈš~SˆQ@ûÔÁ¬ûnƒá24ÿ“ß4DmãÜ ÙõçfŠ–=Gù©€AòÙœ&£ÒØB›ˆ¿„TŒÞ•â:}¹[ü”U¿ügÊW%·on~Pòݚø¢“J˹WÂÉÉÛ1ùÆ5ÄŸŒÌAThtÕ¶ˆ×›-!@„ŸS~ù5R„±ül#õÅÁÁC§Ð).“šWð¢åì”’H§VYG֍A=œ‚JõHéiRž²ÑñÜÝ $¥Ô& þM`ßMkâΗl’©FßÁ&bˆT\Ñ^ÐQ2Í[Ÿù꜍#®æaÃþ?mœ_öŒÏ7ÊæcOt‰b ~÷ä–,¡;¶ÅtY{$€èŸ¹Š!"7 ñÊjW¯ŒžÌՖ{ÚQoÜ»ÔÉËã;zØwŒ".=
+ E‰£-¯\¿*áÆڍ ¯¯×6óeŒF«LR)«Â_ ¹Y _’3Z·ÕuŸ~M¹H•_Öý"k€\D(˜ÒgŠ~ÊB*)B' ,@ýj­õcN˜{ôՒkGÏ$ß² zÔ¬×}\t•vtÅIˆB[Á žã%—gÅ[çô‰ Ðýë”B¥X#ñgXÝÙ(™Ñq¶Í†ºâšìT?/
+<V©ÆÀ°(ÙÇ9ášTsÕª¢€„'7ôª»dæÍXÞO舎®Ü·®žÓ+märLùŒ©ni3$lóöôÉëá;«¹ KKÄVøw(ïášÌI œŒ©Y
+>†‘ @Ê}A¢+ZMtìúê‡D3]zbý…v?Ž›T]€'Ãò@†Sû3ô),Qš^ŒŒ_Hýè~A…ý:ƒf,ÔÎ\ç\8tYgnBºÊØ㞢bß ×cºÉå‘Ytօ÷f“éìT:°e†ùøur8@“¡élvÀX‘ †ªrԛ=õ*¹Þð©bÇ®]^µF+Ö1ˋz§žm Öe*Å{©èʓÎGÂòdDmš {›éwl?Û~Tō·ïžC˜Åúe"önãÓZŸ‰ÜÀ÷³ó‹Švý§ª×ºåIÍ©ÒÆ84/TB²œTF|ÝHÙ2<÷k£pOúú…ÜÁ@j õ
+bÓ龎náŸ\íðy:ïºßmœº±­ñH$CY݇ftÊ®‹ÆÇËdû#©uÁ4[–@Lý2aáx~…˜vÍÄŠáƯ†S:Žžÿ4UY ÞàÒ3[ûcˆ±~1¢‡òy‰,ý‡ˆ«ûž,ë6¶ª÷M› ³Z‘æ–5ø*»Ü×?Rî站xÀ¬Ø¢‡“äf%y/ŽNeªÆWõù ž_ )åI6îËlïsaHŒÂ§Ĭ°’Äߕ›·»÷ÁîÂî#Ýݖ€î£LêÇáìC¶qU‘_³æ8Ðq(r윓? R)œX¿ó’Fh§Î·1ˆu66gè5Djp gàFøWTõŽlCx÷ŸhG£ñèZ
+î|¯{ИYž¥Gv¬s`zYk¢”“&„ØeŠl¢5€—mÐ#×ó8¡–-ÓÓSÔ®›þú|†c›1.Øš†7š•€úzQs+IE˜ùìœè2‹òªÑËï0A§B(ӌϗáß_Š·”ðšY o+ƒíӌñD}ïaë¡)f¡jÕðLsðÈ)B ÙÙ&Ý<)Ç󧕣wc–¯»ÊGò2ÙmÆç² Q1­…ÜȞîòê§þÚÌ·ù}¯‹*œ³£zV³Ã£QgdMÒSqvžš¢Á¶&â–O·:°Œ†gț‰/>Áôç4f:MiüG7®
+£Céj…gì·Y֖ 6•á%pÕhoº6xcs}ÆVŠyÂ/œŸ3&Ö{¢B'ßÍãµWs‹ŸwÎԝ hÏ} <ŸSÃ=<„ï‰"õ*m”0·ô?œ)X~ÐÆH+!nöÊыŸnÈ,2öÿˆâÞkžŽ{ñæ€"ItžÅŒOa·…1ÑaB73É&B@É|“OC?ì ¢ùñÝ1
+ë^€Õ}^KÑá`S5ÊUŠÇ '¡¥×Ñõ`Hy[Y7=ñ{ä7>H,2œ‚§³@þ:,зŸ\}2=µ?x²•µ-?“­Š&©œ>œx6“–~ì9³?tb«Ø2ãµ 8òb«õp&„ˆàûJ¿i¥tfî4=Vì~éö¶è€ÈüUZÆdèµßzà=sx…±”b…áuÑjÛx]íëýBˆ .6uüºßf G>°q@£µé$á;ΩázIÁyÏf҅#‘ž¥¡M[o”К|ß?Š¢Pó’‹á„{Áï ýŽiF0_ì5í#è‰ÇP_X>ðC§;ë#“|%Ç åurÍW„ƒŽI0OYwZÄR[T!h‡WÐbƒ}ɺØžóTð,=á‰m©ÏÒFžþL|òìVŸuáÅ!ˆõ§>gÂæLZ°̐ë«!žn<Ÿ \Ú°gië7u[l͢桮Žcs
+ŽùÊ+o9ä x;õ¥¹LÖqÀäMl ŒzõŸ“¡­}ã×3íIÊšSŸòoh©\`âÎn4ΊwJïnr¿P²áà`Ú ò–ÔüjƄ™Ã±žÎ!èŸÇZKT°.š7Ð2$°œgFp&à¹$ÎØ°ƒTœœÓ‚;ª”‘k RŽŒó oÀ{5;è
+ïÊhT×òm©Ä:Ì*#Y³­•ò«³ ŸÈñ/íá¯líòežj·×q…®œÞ=x]ýR”“ˆ€VútéøC ÛÆMT’jáîá<\ÄL?M ýý[çŠíQåDLŽF”C\ÀY ‘Ç÷_;›‘kÞN“vLí?U."n¯É~R†£”„Êš™ eÝXTnT -J^·«Ò¹—\Ê.ü~Nüm7n4 6€°@FÁký,ÛãøâÌËÊ®‘Ð:)Õä
+gÔÐÒ¹Kš¯N!ìwsÕ2€]àaQ «hÛŸ1œ^îWbS]ÈHf†<À'î!h¶ÔÇf¶ØÐ"ð^…—|þ„žÍ¥¥b ž…[Ä ±ÀÎ
+XÜÓG­þNòçŠ)D¥O$ÉêŽùœZ<Ï$â±fˆi
+‘º± ã–ÑÝ×
+‹¥\äQ ô_QÍYÈ&éÈТG$†9@%WeÕ4c— ù›PKÅDÊkŸ²ì¬\2²Ä¢ÄŠ¿žÒ»Dvl¯ôýäÓHZÒ9ëþÑGùKÖÉŒ©Ü9»Ü.X4JB &•þHûÆÄÄ™Á
+‚£¹ž1ãj<Zª•M]ŒŽ71lÒl ÷IÈ¥ž4ª•œˆ’ŠàT{ûtEOoµÌ[Ðäo>§Ý]£Ÿ ×Ð:³’ý¶áöfW¢Š”"ïOc#:¢sp°Ù‰›^suî_6YåÜ
+6;ddŽ2tŽzR.œB1–ëkîÉ5Ž’<ÒLÚÀïœÌhÍúL#‰‡yχ”þ¬–”ÛB.ÊôY`~QÏ}’Þºû^WC8ïX(gA%±ùËoþ3?÷HÃñŒ¢mOw‹­h  _6Eªù÷­}’ŠÒ>pC’Ñ×Â{|š„&27ÔIUԎÊG²)wá ýµ«n7a·ÌîršÑ}¶Óv¹G«n‡ÉÙŒ$Ë¡ÇÎC
+“ „•ŒG\c²kdƒÑmS•.0çøò݉
+)»N·*]T@-«›úÏ€Ãg¿
+õËÌW׍xœ3uA2ñ×Hæù«âŸïòÛeéԙ8|Ãòc@ýᯍ?ÌâHŽHIÙîJAAÞêÖ¢»®VtW
+N>Ú&gþ¬ϵÇxª¡háȅï›ʏÒÄÏ3¢¶w{ãZL=ÇRšl â[³ùnß¡WlŒLч5³$eú‚†©ØžFuÀ|VýQð˜B©À@3Ã{8Èûq…mx".°Æ‚2°„Œ ÃôÂC€ˆW Q‘6Qx«ÈÚÙNŽ’œvXÔ&1] ùd@8˜l;äˆ
+` œŽËaå—;ŠÕ .+¶Dª§r9y?(m‹{)B¬6<š`‘±¢.…„i•FH5“D—1žœ-ÊÍËï±QËš-ñ)9êÉh1DþÚÓŶz\(œ†pgД]`ðH®€Í‘ŽÎÞŠ
+“øW³•1d‰}GJëpfÐÀyy0›Ë/ ö‡'º,ë' “î˜ÝšIpòPÎ5e„­"ؓˆȘ«Ó§»¡•
+tȍžk6ÉW¢-œŸà ïb Æ€#k÷ ž~YïY÷œ>¿å¢2ÚëËäØíã­uôÚ4,âo¡MÐoõWZÈ¢<=ƒLš
+W ÿœÕ€˜~_sW&°DŸ„ÃN»ÍI({x-ZÕgçÁ×I'ÚíœFÑÓ?jr
+G üøÞ;OŒÄ2S4v³ü©É¬Uë><v’LC‹ºÁø â*Ì­gœ•ß®P!§J-:R®ÖLŸÉH9E»äzA—ªÀÌî‘EµV@KD'ňj Ÿsțä:ˆ_è!(#‚¥vޛSsܺAõëٌ]óÅ#$ì%GÝÒ§Ý÷ ©=ô¥¶NòêŒgáч`“ B¬³8ÕÎóé>0{ÿËÓ⻥p’uxp!NnŽo^MÆ^¿1Å{ù{*{C3,¯dnߪ,Áé+ZÌ,»éì<äöƒÿ߁>bRó.DÜú÷xo)îì¬{…IïS­$Èö2{`¿‚µ4!°ŒÝªIÍ ,/.œJ”燒 ʔ Ä=뀭_ïªsL\P7i\~ +vâשú‰I€=„ô4âaw
+ôþ6/Á–¯F狿†ŠT~ìvG«”–ç{eõ—7ŒÆ°NFÛÅ®q±oەâúKÈڈuœ ³†„á«aQ3W5wsìäŠK*H&ß‹R3ÎÀpvKÝúïêìêŸ9d iÏe~  —¹?s¡œÞ!šØ,êë“)³=Ê®Cßñ­+Â66÷]}kYßèsö/Š9¢æ TšË¬sÚxÛÅêâ@Òc$(ÏbŸàUgçƒ1(ŠpòïF\t™²FBÖûò$œ>vµð á\ýCÏ"gßVÞq1‚ÞßÝ"d HÙa2+ÇDBK»`uÏyjsߗœˆ1ft‹!k–#?¿ðŒ¢†,Ó±ÅòÕNéî¹­:ðóßx{Œ}K“tB
+J>⌎ܧ4T 4,˜’ìœcG'1ŽÙ»ø}Z9XôucýuÇ'÷òšºÌçÕ\?áÁÜg‰ö÷bî~î6H9D8²q
+õIu×4‡\‡+»©å¶^®A7ŸLÅ3æþ¶ùtcK1S †ÓbÆY…VŸôÞ#÷©^ƒ?û—ä®ðÒI›IqBg[·Ž6(Ð![²æ¿IU"..ºéyŽÂà ‚ù瓁á¡þ±¿€qà yž–·G^>¢OG±Z[e'Tr¢ÅÇlw‘-ìþ|¥X²8}„Šó5—[Õ9'—æÔ2ƒÄË[ÕùP˘'ŒŸÕHždÑýYN%C²'€ßMӄ‘úvAÊz)yÕ€þÇ<TíÌ:v,’`1äœB€&)ZÄS|OY}º7§Â†}dd“ëŠ%'JWXZ³… C£¶ž¹ÉH{bºkí—GäÑÈ]4ß3£‰ü¯FÚ>HWXAòu+L÷ck¯Î¿ß…e˚qû7Š}Ú)9ùW•¬ý€pÞPËVÁatƔ
+×tH”•g:º«&Âi–
+B£ÕêÐÔØQ+M+„\«š˜NE‡œ¿ø ëÑÕ°Ý¡j‘p…TÎ§å ŠwìŠWD7ʓ;ª@wÏxƒǘΊ%kEÓb+?Êë„çÔy÷ܲÕÑœ-~—R]*n<“Q£©Á*(,ÄïÜ#oŸðæfÐHŒ–‡Dìâezqƒ*€zQkò5huüš’y­5æûu†o^}‡L‘>LmhEºÁL2IºµSÌðÙ¢ôćUðR[Oljz9prÃsº){ EKhó±UE˶íãv¹
+'0á[u>©K­ž$~ÇäŒò%uŒv˜U¡<ÿt® ƒ§á–TßëŽ3ÊÙ#éVIøüÎÚ0LÇ{ERÓ(ßIÇï€/Úœ%ʇE—%;ÞwFÏšm;³Ë‡}à÷ê=ò3ŠÄ(“péŠx&ºMýøý?í@e3ڇp.‘²hwjÃü:ÓP7cBD.ýMBîÜ?^€g)F«§Žäæý^lt ý>hÑy¿]:n€ª­ì7Ô(à@ǧkd‡7¥‚îh|àTÍ]Œ׍4Gä?J“ÛÊӛîҙ~Ֆ¿æ gŸK׍’mœT»ÄŒŠÌ:³V,/:¡8ÝòeXÓÂ'–œY§Í?oֈU8÷¢uDŽÁĵì$& 0µŸ¡ý2åªì;pìóŠ/ÙïZïK;^¡àǶ—UwWpX48tßfÕËB,oUˆ);ûIjÈ¥ á«v€p-×Ëèõ•’™{dG€áóqe}—Ùn‘_.ðÆ`¡ì ŸÍ‰l/!-[R¯ò*çñ`冹pêÅËüoèR9¹ãœñ‚˜˜ÞàtPƏŒª¥2ë1ǟRGó0
+ ECŒq(|«b‹š‚Œ{·-¢}ãK_Aé$vþ¬üáÏ°7ʊž°ðÍ#öŠ7Xš~HÁïåîjC­“ŒÛª,ðó,ø·õ)Û(iqbt:ÇÖ§ÄMÊÍikÉÂïÀâìÈá_Ïuëìϗmrè>èƓ
+š˜š~f‡°MõMd'Ü&†} á€©ÆOôÕLçÓÊ.†i}boãúNþ­v'ÁÁ–Î<ŸdÍÑ ò8{§#pÔ ¬N‡ª9)®÷G¶z A²žOUnÀ#…!mUáªòù—hÏñrñ—ö9~Œ³Ì!DÖ¢˜Q‹í}Ü.Šƒ˜wÚd@sðTb*‚ˆâ·{EŒóµŠ¬ÓóþÙh#2CÚu}Àá«M»%ߵаN§µ\áø\\ØÃ/4uS¶h#)·•^ûÝ"Ûþï{Úüp¶|Õgl iå–*ÿÀWl/îÿ››»Õa|‚I˜FÉø‡ #ÕySóRž+UØQOæpˆíŽšˆ‹ê°õ>‰‘Í¡±ª×@ëð%„0*«A]Ø9”Ö£óÖts›nw&§¡Û|¬©ëRb |ê…^U÷“{ÄV1ýMÙ<÷ÏéjË/'É͘`›üçý|%ñq¥Ãì#T‚EjD#ݟÎLE\|p"e\BUm$t.E]¥ï‹Ij”Ø“Fý~ Í%Bfí…~œ:ȖiÞHVÁˆš|PÁ=±zêÂ*á(¬éš¢§?h@Ýáž. Na ön„mh7Ú: ¥{ô
+tϞPÐWŠCµj±U™<ÆÑŠ’Š+àÍÆ5ǏYFû„¶rå+1î"àp™w³ößëpƒ ¥Hí>W\3n}/åJ¬Ž$+…jöÂù
+M_¹0;bǃJ]†î7žc«I)|¡Kz•ä>ïxß°b²«PNTšTB5ûÁÕÈôÈò /þðÜD£—©£ÇŠª|=‘—ÃŽÄ9….)rª–1ŽÕ–­øâs.Èx_W!îÔŽþÍrá
+n‘ŸŸO5€M%t®¯ÁæÌçh+æ% é…¶Ç$^‹tqüÖÑ{üö4‘Kˆ¿ ҇šØËkñä)œHŽ u ‚.ïðÑ2£·›æ§š6†>7î o,¯ÄGŠwDŸÕ^¯ÓDO^ö 8ëu4ž\ÜXy@»Ì
+ñ6°!ôcLn‡º#œ Ógۄ0³”…ÖÛû&³µ¶–'pÀ±Ð+éeøê\ð\á#U9fò¶FÀ%Þü-4Æ1SPV¥ nêv*ØâŠCªá4WQ,žHöŅ›•Ÿ‚bÏ,
+‰ÑèÖJ™ÌPuï"–Áxòþ¹‹c€<öA_pÙ¢Õ²¹ŸŸd™‚Pwrzù÷óY¶ÿ ÓYNÀ‰J
+>˜Šˆ(㮵á–Ê'1ýlÉTº$×!‡•ŠŠHD}mš2ÊtvʌÎvfå)ªÅº‹ójL±`ÍÒP€š•o‰h,P™™þœBšòÜÇT“Óæôj»ªÓ_ öƒRx<acušiX»ŸW:i€.y„M±—ÈÞ 7»ÏQ»¶/–”;Fà혎£Ò¥ÑþH& ³uÖ£îÈõ$
+mô”ˆ™¹µ¢ “p‰ÅÒ&G9ÛXR_˜mŸ Ÿ±ç(ª<X Ý2ï ä|ÃnšÉ
+9¿`)W±°‰(ViïÌ)Ð^ÍŽ›Œ£p†ïé9y۔†Yý
+Ôf‚F8^Xl£Ó/` ƒ×ÙqތëLg:Ù^³QŸ ÅàI]¯ÿKýòK?Þ"A¯Ê"·  ñH^ ñRÕûˆæ¹3lÑ¿E>~=ü§S„hœSÏÇ…ßHÍèzØ=Œ~Dìßq\ÌÌ%±`K¬WkœVåC;šðÊÈaqá(Àaû2?- ì2æf–OVñŸÀYN¯=5{p°°:€MEÓ{7%®ªl:®w©‡=>AacçJ¥"\MŒÂ‹òí 73Š£o¯gŽE7¹ Ty©ÃZHŒÓkï­2;W ïcaîÁ]R§é”np‡åfœOn=ÖíñÚ_@ ”{9ìe߀nç’].˜Vå {c‹ÕDjÊX黚øF“PyAjŸ(°<ٞ§ðÈdw ò击)ޓ!–Gó,ÛѱZH÷`ŽHX‰"-Eív/–+þ ŽšMœ­·±jp§ölŸ:ÿ}¹ý€¯wÍUÈŸŠ Rw|<‘Ø£iބŠÐ;¡A ñÛÌOèÃnËñ¬48ˆÿÕjøÍàùö;säX͊N‚ší‰¯‚@bìz%l<²w„}x¬g M]| ?N˜-bæ_-»qx«<JmšmÍ÷÷;”³ŒÃÁîw!Ö nP®_“µÏ®œŽ+¬š—DGM}Jîµß<œÆ†nã~2NB¡U#H߄0^žt­ ä„ÙàòØh`÷2šœµÛÎÝ\Ne*å70õÛ±;Ó¿—K]ßLÅ¡Š=7Ôël9¿Öœê †Pg>f²Âp·¹ÁœN§Dš‡Y΋ß»ÜêÓ\ì¶M'¹”VºˆŸž9FÃy•ö-óŽ…µŠ‰~™'¿INÈxv…oŌ­|§_×6“
+_ …#WøË*ì0ê—)GWȁŠ»H¹0ô«;9'•åjœvâ íÀÏõrIž?³
+Ý^—٘ÒåR†2'…Çԍa/5º0^g¯<ßyÀ·Œ†?~(Tô'wܱ®F…Uç¹)· JëmòAÆ`‹]Øš1+õÚ4ksTwã±èü£ôô§7’[€úCUdœ]ÜÄ,rÁŒZî$©¥µ·&y*}—ÆX²" ֐**¥>!bV5ŒðyË¥Ÿ„ÉUŸ¡3ù³0öbD® çÑøY¢’G«BÀšÐýS¶[yyHwéœú)‡ðà#N)ãH¯fEKÁúï8|"^=k*œoßï"÷P”Ç
+Nžð
+¶âÕk‡(—n᭙^ÉšpØِtµÈF ©_’¿!ŽäñÜQrÿNï£úÉqŒ·ŠZå„@EœþÁ~TtÜ.€Ð‡S>‚ÁÛCbšÉ-€5,¹zxšüb3Œ¯cuA]E[ÁØѹ#šd€±k…(·C–²°3ÔR+8ÿˆŒ‡nŸëÅvbŠ«K&Q‰ žÓ\͋Ÿ0IL7ÅE=x"#bžþ,šˆ3`žÌ"œ-_^œsnŠŸj:ÆQ›)SÕv h/sÿ-&ÉHf@-þ,‘ŽŒ¹–¹ Õ[ÕÖuýÐKÇfÌúï¿ü<|4‹Ãñ£(ìnvÁIÁô—Õ+ô7÷¯Lpü¡D >:üÞ,FéQ+vJ‘~f0Ú)]™…-Û×.‡–šGž\{EüâÚð bèø‰sõ¯çÎw‚·Íʲ[œ”iIsº¯cÄ¯Ñ¿Ã¶©Äà£p™yímQŠÁ”÷Þ.Eaé™)ÑD–7†Ñ ÁÖá‡Vp³vœÐ%~±4x)ƒñ[›°‡çiý}3Û8¿€¿élS‚ퟝ%*: ÌÄ¢Ík.z­‡¥zˆdLE‚™6…9ƒÉø;Á–ƒ¢qÞ35°˜ì€$•O^q­”«õJ‘›õ"לƒè0É]€ËáTD‘oˆ­¿êúŸ]óáŏ5ñþ
+ àO»Ïb,žòçVh]N¡¹æTfG’­šÞœôV/*Gh8œÍÎÛþî/–æ„šdæÿÐáò`ì'™u:ì†B 5ZÉÜVbßßêݙ—”S sŒۖ»˜€jÃÛ>ìׁ{3ŠÐh„Ÿ9Œ:~ÄÊÔYªÄˆÔ.a LÛÆÊæKc(
+Yeh+ÒI¯>~myõ]}Šó IB0K¶3ö3›<Aö·;< Ûfÿ|hHnXíôÏ
+TmÜ˜3¬I5msñUŒöŽ*ß•rsB¶Ýç²Þ•Û®Ôɶü!4œÓ5ö4Gnõó1á§+¿|3l,·î-Úl=œö.”¹:ï“q#¢­”ÌJ^©™òJ"ÞÌ2‡Ò:Ӎj§Z
+Â"ðËzŠfâ;܍²qŠÇ$l!².M¢ÑƒÄ¬5늶bœB-¿sk­ & ‘ùÛ¹ìcFeÌJóIƒÝ0NÂnÁæñ£WæéšJZ€ #`j֑ŸHjÆëå_Mœ+teŒvfå˜=ÿÎÈz1Lò§Kžoí4TÀ.Cƒ2àK#E|éOq?øVµ¡–¯+Âå{áVĕš›—Ïá“ÇOmÝǔ*£W&h¡\¡if)ž š¥‚ßY›o&°ŠüÔ¶ázß®p’XŽì\ ØøO2ùýƒ·ß¿ÛÎg<Õ7ÌRØíjr«ýŠŽlEþHävôŽù¡Ö®AêÔځz5²ÐÓÆ(–ÊM1†ÃÙøOÂD—–øm‘U¯6Pµ„U€YšŽh€”5žÿµÝ¢6Ö'ÂÙ»åÿi·nÿ™@
+n³ªÑ¶à˜~ü#™àuÈ*»"û›(Šc势ØÙ :ÎGFfC€2qòóß8»&3•£Ñ‡<f°‰·@ûš“}J¶•ÿÜBùgi¿òä•“ŒK“Š_.ñ}Ìš£Õ™+ /
+sQC^{*ŠŽÒ?å8IBÀï/™Ï]Ë"•Î²ù‹ ­*ˆ*Žá25xkµ†Ö»ÑJ
+%³7%`^3É œb¥Ñ Fs‡>úî}?o” ø"[çpõíŸ:*ø³l* §‡ÑVa$ºdÍ©7q 9ý’$‡š=˜Îúœv)éì³UB»[”DN®Û,ˆÏQ\›âÎÿ œaéóõúò¡­’™xŒŸë FŠU1ûÞÚbü€8 ÃËÖèF9£ˆ<WÊlõQX±Ò‹Ôaœº#»¯h'ÓrŠÑ&„7µOÑUáË"øqRÅ . d%;>Œ¡óÄ]ÚKy…¡ìMÃ]EmŠ‘µsŸdOPüõìªà_yø]‰yÙ&JØfŸÈÔ‡¿_s/ԍÓ̋…Eb™Xɉz}š@ûa ”ïáŸÑ ÚÇŸM
+Õw Šs=ÝMÈË悐 …`ÌÁôU~•nLšþ @ZZD„ò'±¯a‘œøaXbš7+c¶4ŒŒATãQ,RQÄmÍcvÜ'è{ífå£@!@nSÓ8®`a]M°yp,¢¶ êg~ê× ™vãè¿Lõà?à ÁžØøš\lžêߣݖ
+endstream
+endobj
+27 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-4 -948 1329 786]
+/FontName/AFCVQE+CMSY6
+/ItalicAngle -14.035
+/StemV 93
+/FontFile 26 0 R
+/Flags 68
+>>
+endobj
+26 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 779
+/Length2 751
+/Length3 533
+/Length 1321
+>>
+stream
+xÚíRkPWAŵv UÇJ­E Én UB€*5ÈKiPÁus“,lva³ IŸøB„ªUyøAꬌ£¢‘*Gëk…V|ÀPŽÚ.PÇû§Óîý³ßwÎ=÷Üó]W§ð(\Í,…! Í 0!æÊ(•`BquU°çH†Â9è0__ ȍZ€I
+L’…%µ:ž)Š÷³d@®‡,Ià4Pâœêy§@C³Sˆìßb
+Qã‰üzý·xÈaÁ4ÁšIZ Ä)ÀY· (/%–H@*HZ Í
+§ZŸ°ó^ÀèÄvA¥CŒÿÁ‰÷ZW²nI—î”?NŽ·ïúœŽ2þÑ÷\²|Oÿt,ρ^Ù#›Üµ¹ÄêÓ,…3õ2Àµ/×~“³ÿ‹+é#7úÕþñsat{¶)çû">IÞ2u§ãóægâÅøØ8Aèì‚ë«_€øŽUEGzŠ4LË/±=ÐbÚ·Œæ»atCî­û9žÛ˜M[ÎÎt‹ÈK.ë=4*kþóRco~ЬÞÆ56™gJ^5€ÉZ–¹?sªž7}ÒFÓ¡¹GjÏKÿ7Êk6KÃ<Åq¥ªZ‡ºQÜÂ;k}l·îÛR‚Ä
+R ïïŒDÚÓW_KXþ£æˆ9“sö–ùòî‰ÃˆŠòPù®šÂžÃãäº'gàT}ÂiKÝúâ_:ä+oŒUöÙ¥ßý**· ƒ°_—³º§>;.p1¿ç二=­'«
+–Øy!ÃÏX¥·ô~r°J©ËÓ!¯’dŸw·®¯ÓJƒýf_ Ò?Šo“×Þèµßžwöyƈèâ©ÎÄÓ|QQß¹‘Øö­ç®~KL+ô~˜æœ§µ«ùx‚Ê×óē1&ëYÇJî5vÙžlº2ÔnO›&”:§Ÿ
+Zft»„/š4¥*\q|Õ~ëZTæݑñ|ôC¶Ó§®I•^ŸI6¶ž¬×+ž]Qd>²ª)qŠ%h§õ¯öäY\s z;*‡>Xç…þËù_à?!@Pg9F³‰ò'…ÉÂ
+endstream
+endobj
+36 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-61 -278 840 871]
+/FontName/XNWCOG+NimbusMonL-BoldObli
+/ItalicAngle -12
+/StemV 103
+/FontFile 35 0 R
+/Flags 68
+>>
+endobj
+35 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 1656
+/Length2 11490
+/Length3 532
+/Length 12378
+>>
+stream
+xÚíweTœm“&N€œà4œÆÝ=ž[ XãNãîîîî.‚»'ž;wwXÞ÷ۙoöÛù53¿ölŸî>OÙUu×Uwõi
+ez!#ž5˜ž‰È 3³2ptµ±–¡¶±4’7°4ŒØ)(DìAú`3kQ}0ˆ 2ˆ‚ ÌÌ
+€ˆ­«œ™‰)@¥ª€NMKK÷OÍ_.
+ŽïG1Ș‚¬@Ô
+¬ÿÞ!k“wJ虘€ÿP›9ˆ›¹€ŒÌÀ†Š
+€ÎŽ&¢Ñ~EÖÔöÂDýí»0¯ô–±â†¯a†Ax
+¡-€›k†ÎoΘٙ-ÀšxÍžËý+ž`Aü‡'pyk®¡¶ž>
+é|šN”¥òÙt!—èۅ£qYcFŽ®Æ//ÊnØVº’
+øÆ7TÇÒ(²?gß9 ÑNËpU°3ÖºKÈ~–ò+u1¢|š:GM!¿«j¬ü4<ÙSÚ±·Œ0|–
+eÞÎôŒ>îœgB·ÄÓ _µ©$ [î’^ lŒá Ž/¿à’¥}±ÔÄv†ªŠš?_¢6ÛLŽVf0µ9èFæXõD³ÉYðô€Ô2Ÿi‡qj) ìö{³”‘ý§Š#£§ ­ø~±wŒM!ÿŸNI¯RN:ŒlÅÝ
+ßq·?ÚU" ±›ç
+2OZ£|R™~ùƒ9' ¹ \¢–Žp€ŠÉÛða² j€v³uPØ/q_©ªÆ!c)jK÷ÐÎþ™¬ÈšËĺÇÞÎûÙž5Å
+ uË%e¥‡C
+ùԘù“W…xÉʏFŽLêê7 $ý“iŒýÆ¢îæX%e:P,;I~Zd±NyÙÞ:û‰1à*}µÉŒø€åž ]†‚we'î ‰ùGðïû?rÅÏÈK`–üšÇžœÛœ"k—ç®ÆQÓq1j+h«.†ÞûXÜ-Fš+ûžGfV9U)
+ʐd:öZuz„ñ:>KgIúE}€¢€Œ\cÜûóPPš~Œ±ÑÆQ pÅ‹SóVCšãýxíˆÌ^[Óc³ì¹þXI,ÃÒÝTß2‚Wyf^øç1âvãRw˜? iÌV™•-þµY†.·a©ôKäÎ uŠ}íŽçü¹K^>ÃOÓ€e3D÷ýœnš((äcA¡Ôè߶,‰Tu.ßðÂ)ÙðëQJ3d"ܧûiª#<—Ÿ+íù)*Uª{`QŽÖ2Ï£×@% §hÑ«“rÌ-°‡ˆ9b-~ÌÛ"ŒIMΒksí¬°Ì©ì 8UjÚQ…UÓFV|Û}{vªÝ¥€ÜžsjT
+œŸÕŒ®Â1ò}ŒŸ tœ± ©=[šnԍèšS2Ò'‹Å=_ÂY vcìÖÙEvß{éQ•\~ÛC»Ž5N!Z+0ygÀ5L9Å«fÂ+E;Á^ÿߪ¡/{שiˆÆØ-±ŠýËæ¥}%zž
+ÍáۋöeJ)8_Õù§ö\f5B¶ÑU7¡Ñœ˜gfå%œÒÅW…ù‰wúÆÚÍ8ò;
+««uKÓÔæù³a‰
+¡œƒbÇ{2d3ÅŽfƒæát‰-„Ú4[Mgd;üWÔœŸŽÿø«nòÖù獊Puµ3ŒÍÎõ ^qbCŠsY7—~î Mԃ®—/ÕTë¿03©Ÿ‹vKÛ`³,e®ïúÏcddkW‡æªÌXZ˚+ðÎjO^z|8Ÿü„+ð8›¡ÍT¿§å³f‘"Lšè1¬†/ΕgûÝâPZYJŒ3{’ÞɪmcõG¥ð‹d3£€Šœ6ÜöBh×àh{Ý-/'FŒÞܗR7 tÑ+ÎòÀ°œ›rˆk¿mœ„’VlÆ«<FkÕH€+‚]sïWÝ*Ò\•pwÕtرópÅ.ÿŒWÊJÿÙYØ9iénŸežhëz a¹VI… 7øÑ$ö’%Ohϛ²€†ˆÑǚ&,¡CoŒS¶¿•pfr˜Šed
+z`œ³GŒ7D»SÜ?õQ5ŒãŽ€qã|lVlŒÉ1¿bõƒ—I<Ý×ޚÕ+úhžæØú#Ìë%l¯'bìé6³·Í"óe¶µ1ÄñýªÒ\Ÿdö)1¬ŽB>ŒIGô3ƙüøò*ì8çÑÈÈ8h›ù§’zpw³ÌêwjþÇŒçgK%ޘ±]8ŠBßÇeüPºN¶#@y\˜CkHU.­‚¡¶íšñb¹ë7I·L§ž‚ñ/}ëšð•<ŠÛÝìžgj—œÈu„%xâ‹8ÙÇgŠ(XSŽÀ¶€?õ¥8Ñ(h-ý|7MÄbRIÃú<ü«â²Y)¢¿Øܞß©Ôµó·öÃ[h`Ž7VÉÛ.‰S¶qd.yŠ©™ÊŸDmáIÄ;nÌBÆ/ܗ­o©ègŒøi©f'q]€ünˆm™UBAKeaÈ/£.ó„xð^±ÈÛ$ƚ†(51G?ÿ£ø@Ï0+±µŽ¬Þ.ت•·nüÖaªìåÇWäAÍN˜Úý‚K˜^ ÌzÓýš®±xˆ”Ž›<†JìYïŸø¹9ŽŸÃ|³ª©L¹Î2ޘƒD!å1‹)·tí+…B9•“?u°&OVþFöº%‹WÙÆ.ÅðiœüYŸÐZFbj¿âÇÁ›n_ÐMï‰b~œË,ŒôïÁ‘ÓvNõiÿ՞èdCÒ2J&]yç4Šr¡³OOu‰ÕÆ{ÝûØív°©Ž]ÓTÒ×$ ¡î]/ØñkI_£*8#Cü
+¬=î³úõ¢AKӖÔX=ò}âS­}Dæׇ^«T±_!cO…°“ˆYқµW9»…œÌêÅfl,¬ó¶)èú>„ÈCIdÃyÆŔEÆZ°ƒݧ6÷Ô»rxîÓ÷!áø祟d\?ÿ}¥¡OŸƒ QžS¡²úFGu˜ðúdbðüùWü)qKÏúëœó ôÒo;ÃF•ú iS_®åk·™«ˆ¥ÚåÓ\Yaƒ%ªŠoCùÂê »”úáxѕ¬Ý(õÝ>ÅiçUD{TwLÔtVòŒŽ/ÝÅÅ(=7æ©äŸ(rÈÄ©ŽŠJ>d ÛŠžáRA9}^ŸË>‰w¯T‹ò3pÞ_áŒ^91’#kŸLiRÐF«w 1*Æñ#Tô¬ŠO/3ÆÕu?¢±ŒBŒºÙûvó%r™ÀñiDÇO}ŠïŸÀÖ£'f4R¯
+‘CóÕ ï{©Írà;Ä4tóPÿRià‡9Cuš.ŸÁ¯Œœm§Ub7ÎúŽäÏ¡ÅÎ×[1KåÃ/ª `ŸF-*Kî„YüÉ.;x’]/ÃÛFM€g&9ºG;ѬwÍ3#ð\n‰‹˜ št1×8:’1qȓ9Sáû¹v·oºÞ˜í³ŠSã¬gý˜rUøÜ_É79™Eº_~ªP\Ô?*
+?šÙËõ ó¶4÷Ç7°uk;镀+%¶±`ljçAÿ^”°J…Él.ͪº³Lí«³üVˆð’°eèöŽù%!Å= w²V®}[ž{–§·!©Ž·<˜Qٝ¶ßÉÒŸ…⟊6
+ȊìV…g͕¡I£MÉf[ 6+¡Â!ú8“2f»{Ž³¢iµÌî3Ò_Ã;úž-Î"›æ®#ûéŽÂbvj=ŸÊ9oí*¬©«ÓŒºùL¬—œ÷UÕô;…-ìž|ò?$éÚ¥`ðµð7€R¢ìnb?u#}âkôÝ;nnOÝí˜ìÔ
+CNsZÕ€]2Iã?••œ| Ø HQ€·ûu6œ3?ôªÂ¶£ÖÅŒs*uqãšQŒÈÂn’N_UÏýJAnjr‡Z|âR}EŸ>Ûzs îÖ췂Ðœ”—QR%j÷ؕ¬€m잝Œê<R…JêAZÚ§óy?ŸFJð7Û5>É-ÊDŽÖðÍ¥k7À"6œÇ}
+©ÈªD“îg^jLÁŒé‚‚øš˜Ql¯1ì€nCfs )ô!sƒÕm9Èù˜‹\统ºø”>gDÁ31œâ€ô}(¥³P!ä›o»…ý5O !;œ!€É,eâ¹³, G£*M^Ì䐬՞ 
+ .8ge£0âPÌԐŽäÕ:ä
+’‚Â>àBiì4Ž‰•êÄ¢*ÖÜԚïUY;x¯7õw` ÓÍó‘?‚gjôªÓÔvŒJFè;NŒv[2ŸÖÂYæðʅ±ÿˆœ››þ¥±;ў"£-p²mŒèâæ~aš [wú+%)Á2/A}¡„Y=Èü$áɑT’ž Ò…UAypˆØè™ •ô«ÇêAB¶™ÄnÚÓÓ­MzõŒÌȐOy|a©Ã’R™ÀJµë„ŠðÂÆØHæÎôb&Sé–kN¹×§œŒ¯d<uzÒélðîÚ(}v¡Ü2PòQ²åóV5WS»/Œx܍{(N@¬ ø õ&×îóÑÝ4\Pâ£â;/|‹ F_Å[ùnì7,b[¯7%6ÒE5"3©P.€#Ë]́g@IBނŽd纀óSÍ:‚<Ðõ(‚UŠ*Á“˜/íãŠkäóWðË:ïÑË»DÑrLÒ=lÔ§GÿQá4aÇ¢7G‹Šy3ocH..[;Lµ¥Äö©~î¢1ý¹šcS<œÏ1ï6¶ñ„M€øF8?ù*„SEúåC²á8ùFsç“U»â°ÿ’7$FxuÛ?I÷(A Ó¯Ûr‡0ÿ¥QfJªc“õ!Мؐž ©CxèÜKïûŽwy*“{8 …’(Ï'ÂìO™±¥§Ä6&9s:Ù4ÝÆ}W>
+qMw;fZÅØpeǃTêEWs8 ‡›PEӓ8š\7ŸÕºô#Œ°tè hÉÎ;ç ÿ°õ§Á:ÞÞkyÆÜsb=³ú%JGÜá÷y'u·Uy+œ'íõ
+P&õŇŸ!væOªÙ#çƒñ‹iÀ⯑Í¡c"õxàƒä¯uêÔ9‚®dkw¡âBÿ–PDÓÝß{ó ñìY— Ÿ4'8>%/ G®âq¢É͘Ξ&ÌÆAbA–=1:?K­ÊìÜ°ÌíÕ Ê6¡$á‡ÍöIƒß.ÌCÚªA|”Tª/&¹*$I&(£á?Ù$ ŠŠìÆ]vfŽƒWK’Ù å»Îï”òü )]Û‘5£ÍžøSؒ!嚃joCbÂDN+ô€ÇӐx‹[°Ÿ…VÓ~xî×'î„Mþ Ê4í™\ŠÅ èu~[¬Æ‘B’qê-dG»üú³õA©àÌÙD1üŒ1™£QÛÝüÞŽ¢öžN7Éb·<Œ>¬ÖÃ±•m‰š‹/ÑÚ±2ú–?fŸ7'9e¯k“L]ؑWåñ$3}îg €}.DÏþÒÚ¢qÀHr¥4T Ó'üI)VèŠDºlÌ0é ·@ï¶ÇøcœÚÌÐÅkŽ<ƟGؚº{[O»ôÌ-Í'–8!F;[Ԝ8-µA²e'YÌ£ÏeŠKý?èëÛxm+J>*`š^K«òÉI˜ŒIT…C%¯Ñªù]?xÙ{aÄË×røíátø“ÕŽqö;ýXŽž xŠÓ±»ü<¿ ïØ5À®‡ËÑôcŸ•­±êÃX‹Ø]xU€¯[36Ô ñ’ubDÕóæªcqï÷*ʗËlq“?…ºá-ã,v6*‡IΖ”àû_!èq!K¿:R“Àå ]ëÕ?:%;e¡¬'áåbýf‚'ӔšÖ›e–áäˆ)Ç~mPŒgɜyý¯PZ¢Q—ÇFýn]f)e—ò¶Ž¶‡ ×Ì`“U$?
+÷5•eéÏ®,¢/C‡»Tá­:$ý93Á@ó"¶âi‡hˆïÅ<‹Ð¥¥ÑZK’ZF_ÑŽOÀÅÏc^Û¶h#.ì
+µ!qJa
+FQNŽn‡9K6Õ šñÇËzZ ÕŸ&Lǐ²'3ó”Ά ÊRmÛ2WېßÂ[þ9ÀmjVsÝ¢!–è°ÁÎÝjv°4˜yÉ YXo!*Ò¬pB9u™ý±7Ý'’Œ~ 0j–3$Š+€-õ¬»îU*v!Õ]Š˜fƒ»Õµz_­c:>֚[Kð™diÍ^“vÖŽœSûÖä
+æ+L•òŠÁb—\°ªUHv›ìýҋ'O¥Ào^öéêô‹9ÏÀUyœµåuš–`ç/6m‚,@4UÖÅÑÓ§ Àz›@,nCž‚s³³ _ݐ6 ?¹°a ÐCÇÑÝ×w"¹&Ñ׎6ŠRg–7CøŽ'òO
+ڊ ¥§cHœ`+!
+eŽn} ð'¯÷„LöÇÇŒ"Մ¡˜o&_Óψ׫ÂàBªé&`š«å…JJuÚZsÛœhUHrÉ<®ðûÌO–q0oòšs÷ñ ±î?ۋTöù
+PWËf="Ź&ëtkw ­
+äõ›Yš1®ÉZ«8É" î¬ŸCxâãŠWè_ÿw;›Ÿr0Ž•¥Z§ÈÁ)òí‘Á1Ç œøœásrw˜|$ÙD‘wó „8ÍCdRý5=  z@&V²@MPËbMú, 0Íû“Đk±i»óÔ€Ÿëd5QG꺝c[wÙQ.Ç8‡³çx³#ö£ðKd»ælÖÂsäqB ô_©á‘L®ZÛÝK’l"ížÎ þšMÆ1³j*À~#B|CÔé«áýޔ+|˜ƒLL¶€ÛhÎ%#Ûä¶ÚŽø„Nòn>oûšçNðx²‘ŽÍŸàrW‘ŠÓèkß¿˜ú°Ñ~Ì+£qH _DSˆ…§ŠÃÌRœÿÀ-Að­ð&ћTBZêhàØÓ|ãìÛ;k³‹Š`j…”åÚÏ0‹öÅ Zóí˜;bAf|—€žµ$‡ÛéåêÀ ¡îkÀw&gÀ
+ܕß÷R…^;Ø_>œŒÕD⟀È!Éê¥ýn£ˆPù~/_ⱇQŠ2ˆW>ËxoÅfžB\¹b€JxקßHu-ÏŠ/H`p9·>»íüòÀøD!{•.»Ãí.-}Èöü£MÆRG„a@0WË8¹G:ÿØc7<ïÚ8×*…Ÿ=$圀 93€FPžÏê(æTRF”åOÝ_ÝÓá¢p†Þ§ªŒútM~¬júvÀ0yH–«è«Š#öa“ÖaÂ]ÆDóïߊÝðdëûvøˆÏË€Ú×3\Šç^–Ž†˜œ“`úeKiÅt.71.䭑¿Ñžx%‡ŸÈŸkÚ£xśï°ëzfŽé„ˆÉ³~³oµm“íg)ߥ£frøu]çC>ÁÌùÔsâÍñ¯à¯‚]îPãòÒ0_v¡ɶ®Ÿò26ö¢Rꎠl…FdøHCb;†žë^¢qՓ üëÅ,¥¯Š4*ú6|S¬øç°­ŽrìCŸrc8õUêDRßQ9(9#0L€UÙ¿T²Öúü(Óµ›‘@m#s[_fÀ¿œ“ôýû¯FìëïKéïµ@ñë]RÛj` º˜ŸžÊ祐‹ÅvDÑÛ\h¥+üíýÓ.>ÝkÖ _»¶VŠÁÐñ"…C';óÅì¬ë|}qOéU 6¶ÚÐe›~*Ê+ÓJŒe ÔmFuèFÙt–©–ßeõç=Š`w%¯cµb¹¯ùJ9Þ¿­ ŽæƒzÇ:¿ÄGq>ºÆc†èé4óžn» €•ꍘI’þB«RT_ârÿ3±q\p S§SÅhRŸuª«ô‰á( ÙÁåÀö‹ ™1LLjmaˆ!^-”­mx1CÍðŒ‘ýÊ7®dhB¥.Kr©“C¿šqïŊ֋Q7Rû S^oÞ`Ò]cÈ KÈÜîg@ªˆßaU·ì• Ÿ4Ï°7Aï©>Æ,RkÏŸßÒ3º‡ž•&Â2·6S®çlȅvžÚ:“|=kߍcç‡V<÷ú{uƒœÏ šÙæ±0ËÒhêœ=) ìOûø:}…øšºpX,Õr»~ðp 9ޛÙ`Æ •Á£œxšÏ0Œ {Ag°ç»åïtôõ%×ÞÂú_ŽÃÙ#¢aÖèî€òië“É'šœ:ÃF ­z^%Že/oS`œd$‹¿*”÷.(EN„UÊJ«–ÕçÈ=F™õÞd=0pûuu`²;Fàõª [²iݺ ›8*.)†%^€˜?Ñ1­ñeVºU§mÏ`"ÍÅŽ€xæêï'˜”KIö*ÈâÃÏšÉÈø‚1'Ôã? ÙNwœdjy"õŝ¡ð€·UõŠ°âŸ¢óå,¡‰ŒàïÂH"˜s˳iSQ é³M;îûcH„è_ü,»àÚÚ ËÌ?œKI‘Ýùº.L>GüÔü}ÎcԒã;žðƒ ›±ÂL°It§ŒäÁhÍ1ëGõì0ÂÖ°â·ßUYxÉÆ»PeÏÂbßú“Ƨ›ÈŽ3³) ‘Hº1–‰sLw:…3×lÎÌm(ËPçí в€GªÔ?¿ERU»¬|š]®B!`7ÐÒŠ=ØœóT³WÓmóÙNuÇZá ŒúÖéTðö1·ÛS`eå;Èœ¯œÓäàópÄn¯¢“æ4é°ïv݆­žÁª51%²QIBÑt”)!€Ðíž87ƒ jÊ
+§ÛÄ©øÞ²~ðl×2[ŠTv‚TeXVüŒÐzÌòË Ÿÿ9ö$5æéÏ-9vÖpPêwŠŒ?J垹åÅ(rùò2ÙðYZ¬B0òLŸõ=_¯M(®nW„pJú1L ²$u¢ÕŽtõ‡'Ôœà!š±~‰Ž™ŠŽÍ§P÷­ %æ"îc3y®•Éd˯Ҡ!˜oC\[Ÿ'coégJªýz®ŽŒ6«#Cè+™¡ßP‚Øš–íÏ
+„6÷˜•x8_±t¢ŒbéÝ/8Gx,]œÚÈ?ÐÖ3Ö !ø÷sªu6`‡&“ºTrgMÇžqÌ:$ºZºuž&ñÄT)Ä}~]ŠY,øå=5Ø3rµ³Š±~l'P¬)k K¢({?ûè'ïlŸ—èÐXrJ›‡j×Öš?ùr92/š;zPWÄ/‰Z¢þÐðM8-ό :( 4ÍÆm…¥ùG,Zª[÷ÊôV )@}Pe‡ýôK(fö–oqš&ú, =xòUa£rÉEíãkõԝ­DƒÓJ'}Q3;üÛŽ.lHTG·Çt·õMmM9Iäo;åR‚ßP F4áYë+u d±œüÀçÑþµAsÀÓ^ê;z ¯X”u6Œ;îϚ‚˜³§Åƒ€«é©&RçW,‡Ÿ•ŸSgVWïóÜ:ŒßdD2‘m~˜ò×Å-±ÏãIš£ñÜ9ù‘#Ñ©y7
+‘ÙdíŒ%èÑÒêuŸß«S/XԕðóâîEŽ5– Û;ÆdæDŸRŒÍ8)€š¬÷ÑÝa
+»ó¥Ní¬
+endstream
+endobj
+39 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-32 -250 1048 750]
+/FontName/WQYJPP+CMMI10
+/ItalicAngle -14.04
+/StemV 72
+/FontFile 38 0 R
+/Flags 68
+>>
+endobj
+38 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 775
+/Length2 1246
+/Length3 533
+/Length 1823
+>>
+stream
+xÚí’}8”éÇ©±œÉœ„MÚs³#Ȇc“·ÄXRCã­4f<ÏØyk$šj×eòJ¹ZKEÂ"ïWÊÑnꐲ^BQŽi ­9¢ÎCÛµ×±çŸsÿÎužçŸû÷û}ïïýyŸ÷cbäË":óa»
+žz{{RÈ
+ð`®„A0‚µZÁòD€öŸÍ“Ä|I!¡åf«€æ
+€$ E¶"!1º Ñăp»r±Ì
+Yéaÿø..YÑÆ­mQS2•h¶äøú#ð—ÈÓ Ø’é4ºíj—+
+!DŒúÿ  }šÃa4T’A\l56鲜K?yþ‡ó l8Ž3”Ÿ¹@Òö@ò
+óÄ7Ÿ7ÉbËbLçÝbzå[-í4GØ±Y v£ÞÙ£µq©Žaäª~νŽò~f盞u$ÇÎWºœ5qÇtéÆw8yÓ‘ÍEw«ÝñÒ!Ӈ]º„tŸ×¯‰ï\g{43*“‹T©öŸ†»²ÜeóìcýTw]ÖÆC5ŠÍ}Ú,¯ó²òí2ÌFî¢òArËòÎA­ü §³?åf}ŽÄøź3œ(š©^.öö_¿Ï
+ù‡Ü…qz[6óÌÝ<ÛážïõMý‘ýÝ'”í*IáM-©OÁpÄ1ö­_‚nù»¥…&^ î~Œy^ë,kò²z麑op bÈÃHiOásïê®:*©*•™šê§©ûã>œÖàrеRóöþ–!D‡ßØTý«äO9»‹Ì>mM|¬šhüó¯|æqù©IÒ'ˆÊAÆÌ£lýtµ{~m &7âÒ`v;FcäAZ2~þGcœŽ©þ¹_ð«×ä_ü"K§ Œ°]»l"øœøLÒ&¯Ü
+ÍñÊ©Hê=M’$˜.Í~nòRU+höèÄìŸßnK²š•«ì†çíç6ªKFõºm6íOŠYFì„êìÙê#M:ŠçII̺ñ/?ҏÂEWEŒ©ËŸ"6 Ύ ùŸ€F–u—æ8K圀&#ªÃýëA­œævÐ:æRpÉ{ü^ýKØT`RÄ+G¹#O+WÔY ý9Ý×{45fÞŠ)< ®Š\g鯫VÐ^¯ˆ¹ÖtH¯ðë”j“Ñ:—€‡3¬oq×ùtÛ˜X_NÕï5äZ8ß+rì
+}LXšøîn2G0VàöÄ/4\Z„{ºÅ+î6ï®÷SëÃj†*DéŠÍHÔXš^JüU¥î•%ë»v"qkQ*öiÃæ;ƒò~¯}FSÖBwúŠ’ ^1Á
+iÛa±ÃS4”–’Vy‹š©CÙ4uqqÂJÂê‘vê«XSˎÓúÚhm¯š&K1l-‡®Ü=!*D Ž[Ô8d}X(MYðÊ,^Vj)<µšµð6a&0Ø¡58ӗ»–ß{ª§~P™ÿ%›¯8ÉÜuN³€n÷ÆÏ:”û˜–†àFcö)–!圷H¿qì€ÙtõžOþŠ7öšT”zÔÒ隞óýšÌò] OcJh(®x1AKÏ"̕— (íèÛfð3>ùn‰§eUàföîÓ̌ގAOÂ[VÍ+¯õxVÓ53Aw‹&‡=>“ÄYìÛ5¬ßÁD”ç»ÀÀ=Eə6^G GɓDÒñ3€Ùõ[G3k tŸŠê+_nÔK¯­Ù¬e" 9yZé<ïS·ÛgT#ea*Ì?OÊH
+w<ýUâÃÇ{·Ž©0÷Ϝڹåd%ðS»t›a0h0Šþ°ýÈî›ð¢I$r=¹/ON€kõr‚ŠfHv;þœ¶œ•Ù7ŽwŠ/i}º Ë)6ºÜØ2iµ~Ñ7ªŽŠ ,Š°ŸUrZ·LÆ?Í]>ÙAoiÆgf~Ì Œâ¶ßþkÉ4$ÅõyFŽÃxëï%Ÿ2mҟL›ñÕ5 ï&h”…ºéŽa«þ>ÀW–Ž’ÿËûƒÿ .âłhŽ0
+‹ý'»x
+endstream
+endobj
+42 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-251 -250 1009 969]
+/FontName/MWYZOO+CMR10
+/ItalicAngle 0
+/StemV 69
+/FontFile 41 0 R
+/Flags 4
+>>
+endobj
+41 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 820
+/Length2 3101
+/Length3 533
+/Length 3719
+>>
+stream
+xÚí’y8”ï¿Çíj¢Ä3²†1cÉٕ2ö-û˜y0Ì¢™±‹ì"{öT¶lYK‘¥ì"KÙ)E²$ùf÷›ê|¿ç:ýÎ?ç:ÿë<ÏsÝ×ý~>÷ç~=Ÿû†™Ji`ˆN .‘@‘BÀʀÒ08\",¬EQ,‘ ¢€Ê
+â©EÐ(`JDcAŠ/
+Q1WØÇ©NÄÍÖŠMTŠntªMÖžC„wå9jæ×îŒ
+º¬(’ñ*~ðºÊ¢ÞDcwR˜ßW uƒìr•ëãr»Ù,Ž
+?Š{§×>h9ÍÍÂh<;„ÝP;ëNŽŸÁKKÁ”ŒÌäÕä¿x2j™*“Z›géç>ûPŒ-h‰» /Uíja³ yrçÝæòáö³ŠáŒ’ Uâû©Mh1­º' ‰Ož¬NŠÛÕžóÓv;®`»“úm…,ÍÁ&§™Æäå¢ÕÙXœ+Àø³³„øšc–<Ì4YäRŽ¢~Înܵ¯*g/µÓl:Wp]F{8ÍzšÆØ'Ç)åêR˜Ü.{Âœz|΅ŠŽNã„c ‹Ü-e⠋²íꎺžøùR7€záqÿ\Ïõ”›û¹3“!eÍô#[¯èo(äÆaÛ·¢íUž/÷©ªÓÆð\ç+­|hYS“Û1NñOm3]~:1[±—˜OŽÿ#‹Š9†\Ö:³¶‚‡Óž]ä­*0A˜3šÚ†¿y6Èžäž!îõ&œmá(v«ÓÜsåGNùf+ÉSÂ}fÇZîf{v™q S¿2>¥ŒÂª–t²=r‹ÙR"Ô¬ •Û~10F"ÿ£ì šÌÇÇ'Ž`ãœ!Ç,B*üÊS ¬ŸÆ Ê;;GlÄnÖûgÜ8r°b““ù’­]ËúÝî׆³ó©Ú…|‘"Í4֍uD‘Ý%ˆڀ".^.>I†MþkL‰O”œªMÅûD„Ÿ²÷øoeŸY’šYŠ^­mÎ{,X†òWÍJ ßÓ~ÍÙ·çÒàV~4}U—vD%0ýÆio݋ZÞ}ɛœ 떐áÉ}oËÆD¿:,:=°+¥–±m±TŽŽL7±Jx•ðiOŒö:<Ä0óžÒF+Ø©XJš¥I¿ŽÐêëaHÈë÷ºFyô¢k ûœÿÞû¶ÎåŽ%—1ŸEäDWwà^G²ÔhíÉM…R‹š‹CŸIˆ£ÎI‰ñýѺ<™>#è貀ǺR‘”%òë0f0å¥>ËåÙ^¹oãÒÄ-ÃÛ§÷¬²W%?' ÷@¯Ö™ÊÞ"‡õž6Ÿð倞>ÏeÉPœE<=°Î V"ÉÞ?Š8Wr©è.~j}{:§Ò§)-’“ÎÃÜ-u†d}k­LwÇ$ù& ™Ö¬ŒƒÍL_UoÍKµqE7ï)=×cB“q›tébdìÝ> Œ(³O,ù~ «¢ójfyqêvR©¶Ê¡è°£Ë"Ï\ô[TšÿJaS Œ7|ÑÞ=ð#Oæ󖹘_¿PžéPÚO|üSy $ŽNyyÆ}šÕ(¹WÒ±g
+lAb¿È2ü1ë€a_ýo%&îP­N.–‚°ÜšŽ¿Ò…èÇáä&w‹¬‡[v÷¯hÒ5
+1fÆ6.GÏg‰F­Wú4÷ïÔj>ËO³·ºG„<…ÐÌaz±<ݐmQoXÒt·]ìŸ20ãàž=¶Ý& sþù„÷ôÜÃ
+…¢±ìM§–G\yžÖ‡Wb…Xª û+† D‘·b¢;l(+ BµaÌ(ŠP¿Ÿìs-JèÁøžCü¥»™æ÷7Õ£3ò`eŸ„D"–‚d/käFÛÿ-Â'N&ŠPƒ…|{Ÿo9ÈŒæmlzv”}–áJNó®Ûwf„H­è–òXäûͧވ=†èQŒÙÄŽ›£ã1¥*Åzt$ØFšdú±ùqF¡éА"iwµ‘òŽzépŒŽr …Þg?/±6fºÃ$±’k[Úq8œ©ø8SíJ4='õåü·žÙÌ«áÑ3ô|™£;u­ó sS:o»M”×QbÒþڙ»UôóÔ¹ÄÕK³¿àËnmÛCȵçœw'ê{.¥›9·m0†qzŸä· }ðÜó’ÂÝ֌뗣£„¶AŸþqù‡Ýäéž,€zHžÚm’X+“A|’r¢ìÊËvI'‚žkö°aŸl‡È¹±
+€_&诬ªx?€¹0A#œÚ뷋•ŠžgÜœç:Û6§_ÏL)Ήø¬!‡¢pX­Œª0óÔé÷FO0aRÓÑÞ5‘«Ý¶wß .]BŒ€ròn_É!Ôé?+fï\7-*v\Ÿ¹Ð(ZÑӘ{^*Ý«h¬ÿ•xFÂ0ôƒWhä0§å¡k
+8šQVÊ"׫]’Ož
+œ,Q€>øºž9ÄÅ÷Œãf|F`°6%ÌD¥ÿ|5›ìÂ°7K6…§Ž†ç̵~ŒÎî;ý"ej@fÿÎ; µe9ŸÅ‘ºS}ÏJ#ý>[oŒ]kꍶT|í
+‹êSc/÷`3ÌÏ[Îê}9©Œ1tãrGêaÒîfÊ€·»L
+uŸTâ¶Vå¡Íoì][֚©jó,ƒ{æ)Ò¿~¡b“o»[(@K€{žOø^ÖŒ-Î
+w»Ê$¡ݺ iy|JE¹âŸÉjÙæÆ$òΔ·
+܎j?œù)«ÎƒEÊZÇÁ檜‡ZjyÓCöñÀåžêYñŽýœW†$MƳ*ŸÌ~áåPé$…6|l¯ŒOT•ÿÎnc, # ßPQé*ñžûâfœpƒ=å殶äèRpœˆtܑΓ—Ï?Áÿ—äÿ üŸ(€Æ(…ˆG‘Ü!Ö&€…
+endstream
+endobj
+1 0 obj
+<<
+/Creator( TeX output 2008.11.02:2000)
+/Producer(dvipdfm 0.13.2d, Copyright \251 1998, by Mark A. Wicks)
+/CreationDate(D:20081102200036+01'00')
+>>
+endobj
+5 0 obj
+<<
+/Type/Page
+/Resources 6 0 R
+/Contents[29 0 R 4 0 R 30 0 R 31 0 R]
+/Parent 3 0 R
+>>
+endobj
+33 0 obj
+<<
+/Type/Page
+/Resources 34 0 R
+/Contents[29 0 R 4 0 R 44 0 R 31 0 R]
+/Parent 3 0 R
+>>
+endobj
+46 0 obj
+<<
+/Type/Page
+/Resources 47 0 R
+/Contents[29 0 R 4 0 R 48 0 R 31 0 R]
+/Parent 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type/Pages
+/Count 3
+/Kids[5 0 R 33 0 R 46 0 R]
+/MediaBox[0 0 595 842]
+>>
+endobj
+29 0 obj
+<<
+/Length 1
+>>
+stream
+
+endstream
+endobj
+31 0 obj
+<<
+/Length 1
+>>
+stream
+
+endstream
+endobj
+4 0 obj
+<<
+/Length 33
+>>
+stream
+1.00028 0 0 1.00028 72 769.82 cm
+endstream
+endobj
+50 0 obj
+<<
+>>
+endobj
+51 0 obj
+null
+endobj
+52 0 obj
+<<
+>>
+endobj
+2 0 obj
+<<
+/Type/Catalog
+/Pages 3 0 R
+/Outlines 50 0 R
+/Threads 51 0 R
+/Names 52 0 R
+>>
+endobj
+xref
+0 53
+0000000000 65535 f
+0000127296 00000 n
+0000128106 00000 n
+0000127767 00000 n
+0000127959 00000 n
+0000127460 00000 n
+0000011295 00000 n
+0000000009 00000 n
+0000019099 00000 n
+0000018900 00000 n
+0000001823 00000 n
+0000039633 00000 n
+0000039438 00000 n
+0000002961 00000 n
+0000041331 00000 n
+0000041129 00000 n
+0000003895 00000 n
+0000057268 00000 n
+0000057072 00000 n
+0000005039 00000 n
+0000075504 00000 n
+0000075301 00000 n
+0000006172 00000 n
+0000088687 00000 n
+0000088490 00000 n
+0000007309 00000 n
+0000107011 00000 n
+0000106818 00000 n
+0000008442 00000 n
+0000127859 00000 n
+0000009364 00000 n
+0000127909 00000 n
+0000011196 00000 n
+0000127561 00000 n
+0000017211 00000 n
+0000108649 00000 n
+0000108445 00000 n
+0000011356 00000 n
+0000121338 00000 n
+0000121144 00000 n
+0000012493 00000 n
+0000123463 00000 n
+0000123275 00000 n
+0000013422 00000 n
+0000014324 00000 n
+0000017089 00000 n
+0000127664 00000 n
+0000018838 00000 n
+0000017273 00000 n
+0000018783 00000 n
+0000128041 00000 n
+0000128063 00000 n
+0000128084 00000 n
+trailer
+<<
+/Size 53
+/Root 2 0 R
+/Info 1 0 R
+>>
+startxref
+128201
+%%EOF
diff --git a/Master/texmf-dist/doc/support/texcount/QuickReference.tex b/Master/texmf-dist/doc/support/texcount/QuickReference.tex
new file mode 100644
index 00000000000..8bd0fb55c97
--- /dev/null
+++ b/Master/texmf-dist/doc/support/texcount/QuickReference.tex
@@ -0,0 +1,121 @@
+\documentclass{article}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{a4wide}
+\usepackage{times}
+
+\include{macros}
+
+
+\title{\TeXcount{}\footnote{Copyright 2008 Einar Andreas Rødland, distributed
+under the \LaTeX{} Project Public Licence (LPPL).}~
+Quick Reference Guide\\
+Version 2.1
+}
+
+\begin{document}
+
+\maketitle
+
+\section{Command line options}
+
+Syntax for running \TeXcount{}:
+\codeline{texcount \textit{[options] [files]}}
+where \code{texcount} refers to the TeXcount Perl-script, and the options may be amongst the following:
+\begin{description}
+\def\option[#1]{\item[\quad\code{#1}]}
+\def\alt#1{[#1]}
+
+\option[-v]Verbose (same as -v3).
+
+\option[-v0]No details (default).
+
+\option[-v1]Prints counted text, marks formulae.
+
+\option[-v2]Also prints ignored text.
+
+\option[-v3]Also includes comments and options.
+
+\option[-v4]Same as \code{-v3 -showstate}.
+
+\option[-showstate]Show internal states (with verbose).
+
+\option[-brief]Only prints a one line summary of the counts.
+
+\option[-total]Only give total sum, no per file sums.
+
+\option[-1]Same as specifying \code{-brief} and \code{-total}, and ensures there will only be one line of output. If used with \code{-sum}, the output will only be the total number.
+
+\option[-sub\alt{=\ldots}, -subcount\alt{=\ldots}]Generate subcounts. Valid option values are \code{none}, \code{part}, \code{chapter}, \code{section} and \code{subsection} (default), indicating at which level subcounts are generated.
+
+\option[-sum\alt{=n,n,\ldots}]Produces total sum, default being all words and formulae, but customizable to any weighted sum of the seven counts (list of weights for text words, header words, caption words, headers, floats, inlined formulae, displayed formulae).
+
+\option[-nc, -nocol]No colours (colours require ANSI).
+
+\option[-relaxed]Relaxes the rules for matching words and macro options.
+
+\option[-inc]Include tex files included in the document.
+
+\option[-noinc]Do not include included tex files (default).
+
+\option[-dir\alt{=\ldots}]Working directory, either taken from the first file given, or specified.
+
+\option[-html]Output in HTML format.
+
+\option[-htmlcore]Only HTML body contents.
+
+\option[-codes]Display an overview of the colour codes. Can be used as a separate option to only display the colour codes, or together with files to parse.
+
+\option[-nocodes]Do not display overview of colour codes.
+
+\option[-h, -?, --help, /?]Help.
+
+\option[--version]Print version number.
+
+\option[--license]License information.
+
+\end{description}
+
+
+\section{\TeXcount{} instructions embedded in \LaTeX{} documents}
+
+Instructions to \TeXcount{} can be given from within the
+\LaTeX{} document using \LaTeX{} comments on the format
+\codeline{\%TC:\textit{instruction [name] parameters}}
+where the name is use for instructions providing macro handling rules to give the name of the macro or group for which the rule applies.
+
+\begin{description}\def\option#1{\item[\bigcode{#1}]}
+
+\option{ignore}Indicates start of a region to be ignored. End region with the TC-instruction \code{endignore}.
+
+\option{break \textit{title}}Break point which initiates a new subcount. The title is used to identify the following region in the summary output.
+
+\end{description}
+
+\subsection{Adding macro handling rules}
+
+The macro handling rules all take the format
+\codeline{\%TC:\textit{instruction name parameters}}
+where the name indicates the macro (with backslash) or group name for which the rule applies.
+
+\begin{description}\def\option[#1]{\item[\bigcode{#1}]}
+
+\option[macro]Define macro handling rule for specified macro. Takes one parameter which is either an integer or a \code{[]}-enclosed array of integers (e.g. \code{[0,1,0]}). An integer value $n$ indicates that the $n$ first parameters to the macro should be ignored. An array of length $n$ indicates that the first $n$ parameters should be handled, and the numbers of the array specifies the parsing status (see below) with which they should be parsed. Giving the number $n$ as parameter is equivalent to giving an array of $n$ zeroes (\code{[0,\ldots,0]}) as zero is the parsing status for ignoring text.
+
+\option[macroword]This defines the given macro to represent a certain number of words, where the number is given as the parameter.
+
+\option[header]Define macro to give a header. This is specified much as the macro rule. The added effect is that the header counter is increase by 1. Note, however, that you should specify a parameter array, otherwise none of the parameters will be parsed as header text. The parser status for header text is 2, so a standard header macro that uses the first parameter as header should be given the parameter \code{[2]}.
+
+\option[breakmacro]Specify that the given macro should cause a break point. Defining it as a header macro does not do this, nor is it required of a break point macro that it be a header (although I suppose in most cases of interest it will be).
+
+\option[group]This specifies a begin-end group with the given name (no backslash). It takes two further parameters. The first parameter speficies the macro rule following \code{\bs{begin}\{\textit{name}\}}. The second parameter specifies the parser status with which the contents should be parsed: e.g. $1$ for text (default rule), $0$ to ignore, $-1$ to specify a float (table, group, etc.) for which text should not be counted but captions should, $6$ and $7$ for inline or displated math.
+
+\option[floatinclude]This may be used to specify macros which should be counted when within float groups. The handling rules are spefified as for \code{macro}, but like with \code{header} an array parameter should be provided and parameters that should be counted as text in floats should be specified by parsing status 3. Thus, a macro that takes one parameter which should be counted as float/caption text should take the parameter \code{[3]}.
+
+\option[preambleinclude]The preamble, i.e. text between \code{\bs{documentclass}} and \code{\bs{begin}\{document\}}, if the document contains one, should generally not be included in the word count. However, there may be definitions, e.g. \code{\bs{title}\{title text\}}, that should still be counted. In order to be able to include these special cases, there is a preambleinclude rule in which one may speficy handling rules for macros within the preamble. Again, the rule is speficied like the \code{macro} rules, but since the default is to ignore text the only relevant rules to be specified require an array.
+
+\option[fileinclude]By default, \TeXcount{} does not automatically add files included in the document using \code{\bs{input}} or \code{\bs{include}}, but inclusion may be turned on by using the option \code{-inc}. If other macros are used to include files, these may be specifed by adding fileinclude rules for these macros. The specification takes one parameter: 0 if the file name should be used as provided, 1 if file type \code{.tex} should be added to files without a file type, and 2 if the file tyle \code{.tex} should always be added.
+
+\end{description}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/support/texcount/README b/Master/texmf-dist/doc/support/texcount/README
index fb8d53764fc..45512130d2f 100644
--- a/Master/texmf-dist/doc/support/texcount/README
+++ b/Master/texmf-dist/doc/support/texcount/README
@@ -1,8 +1,9 @@
-TeXcount.pl is a Perl script that counts the number of words in the
+TeXcount is a Perl script that counts the number of words in the
text of LaTeX files. It has rules for handling most of the common
macros and provides colour coded output indicating which parts have
been counted. Go to
http://folk.uio.no/einarro/Comp/texwordcount.html
for more information or to access the script online as a web service.
-The package is distributed under the LaTeX Project Public License.
+The package, i.e. the script and all accompanying files, is
+distributed under the LaTeX Project Public License.
diff --git a/Master/texmf-dist/doc/support/texcount/TeXcount.pdf b/Master/texmf-dist/doc/support/texcount/TeXcount.pdf
index c4dad88f01e..72f71722a9c 100644
--- a/Master/texmf-dist/doc/support/texcount/TeXcount.pdf
+++ b/Master/texmf-dist/doc/support/texcount/TeXcount.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/texcount/TeXcount.tex b/Master/texmf-dist/doc/support/texcount/TeXcount.tex
index a460d8be924..3ec27f73368 100644
--- a/Master/texmf-dist/doc/support/texcount/TeXcount.tex
+++ b/Master/texmf-dist/doc/support/texcount/TeXcount.tex
@@ -8,21 +8,12 @@
%\parindent=0pt\parskip=8pt
-%TC:macroword \TeXcount 1
-\newcommand\TeXcount{{\TeX}count}
-
-\newcommand\code[1]{\texttt{\small#1}}
-\newcommand\bigcode[1]{\texttt{#1}}
-\newcommand\codeline[1]{\begin{quote}\code{#1}\end{quote}}
-\newcommand\bs[1]{$\backslash$#1}
-\newcommand\URL[1]{\texttt{\small #1}}
-
-%TC:macro NB 1
-\newcommand\NB[1]{\marginpar{\textsf{\tiny#1}}}
\title{\TeXcount\footnote{Copyright 2008 Einar Andreas Rødland, distributed
under the \LaTeX{} Project Public Licence (LPPL).}\\
-Perl script for counting words in \LaTeX{} documents}
+\Large
+Perl script for counting words in \LaTeX{} documents\\
+Version 2.1}
\author{Einar Andreas Rødland}
\begin{document}
@@ -71,7 +62,7 @@ In general, while \TeXcount{} does the parsing in some detail, it does not do it
Another issue is that, since \TeXcount{} does not know how to expand macros, it cannot handle macros like \code{\bs{maketitle}}. Instead, it will count \code{\bs{title}\{title text\}} when it occurs.
-For users of languages containing letters other than A to Z, there may be an additional challenge. The script relies on Perl to recognize words as sequence of letters, and must therefore know which characters are considered to be letters. The Perl locale may be changed (as of now this is hard-coded!) to accommodate this, but this does not work for special letters encoded using \TeX{} or \LaTeX{} macros or codes: e.g. \code{\bs{aa}} and \code{\bs{"}a} will not be understood to be letters in the present implementation, whereas \code{\aa} and \code{\"a} will.
+For users of languages containing letters other than A to Z, there may be an additional challenge. The script relies on Perl to recognize words as sequence of letters, and must therefore know which characters are considered to be letters. The Perl locale may be changed (as of now this is hard-coded!) to accommodate this, but this does not work for special letters encoded using \TeX{} or \LaTeX{} macros or codes: e.g. \code{\bs{aa}} and \code{\bs{"}a} will not be understood to be letters in the present implementation, whereas \code{\aa} and \code{\"a} will. I have added a relaxed mode where some special character and character modifying macros are allowed as parts of words, which may be activated with the option \code{-relaxed}.
\section{Syntax and options}
@@ -87,45 +78,103 @@ Under Windows, running \code{texcount} from the command line suffices if \code{t
Alternatively, if the above methods do not work, you may have to execute it more exclicitly under Perl using \code{perl texcount.pl}. You then need to have the \code{perl} executable file in the path or give the explicit path.
I will simply write \code{texcount} in this manual for the code to execute the script. Then, the syntax becomes
-\codeline{texcount [options] [files]}
+\codeline{texcount \textit{[options] [files]}}
where the options may be amongst the following:
-\begin{description}\def\option[#1]{\item[\quad\code{#1}]}
-\option[-v]Verbose (same as -v3)
-\option[-v0]No details (default)
-\option[-v1]Prints counted text, marks formulae
-\option[-v2]Also prints ignored text
-\option[-v3]Also includes comments and options
-\option[-v4]Same as \code{-v3 -showstate}
-\option[-showstate]Show internal states (with verbose)
-\option[-brief]Only prints a one line summary of the counts
-\option[-nc, -nocol]No colours (colours require ANSI)
-\option[-inc]Include tex files included in the document
-\option[-noinc]Do not include included tex files (default)
-\option[-html]Output in HTML format
-\option[-htmlcore]Only HTML body contents
-\option[-h, -?, --help, /?]Help
-\option[--version]Print version number
-\option[--license]License information
+\begin{description}
+\def\option[#1]{\item[\quad\code{#1}]}
+\def\alt#1{[#1]}
+
+\option[-v]Verbose (same as -v3).
+
+\option[-v0]No details (default).
+
+\option[-v1]Prints counted text, marks formulae.
+
+\option[-v2]Also prints ignored text.
+
+\option[-v3]Also includes comments and options.
+
+\option[-v4]Same as \code{-v3 -showstate}.
+
+\option[-showstate]Show internal states (with verbose).
+
+\option[-brief]Only prints a one line summary of the counts.
+
+\option[-total]Only give total sum, no per file sums.
+
+\option[-1]Same as specifying \code{-brief} and \code{-total}, and ensures there will only be one line of output. If used with \code{-sum}, the output will only be the total number.
+
+\option[-sub\alt{=\ldots}, -subcount\alt{=\ldots}]Generate subcounts. Valid option values are \code{none}, \code{part}, \code{chapter}, \code{section} and \code{subsection} (default), indicating at which level subcounts are generated.
+
+\option[-sum\alt{=n,n,\ldots}]Produces total sum, default being all words and formulae, but customizable to any weighted sum of the seven counts (list of weights for text words, header words, caption words, headers, floats, inlined formulae, displayed formulae).
+
+\option[-nc, -nocol]No colours (colours require ANSI).
+
+\option[-relaxed]Relaxes the rules for matching words and macro options.
+
+\option[-inc]Include tex files included in the document.
+
+\option[-noinc]Do not include included tex files (default).
+
+\option[-dir\alt{=\ldots}]Working directory, either taken from the first file given, or specified.
+
+\option[-html]Output in HTML format.
+
+\option[-htmlcore]Only HTML body contents.
+
+\option[-codes]Display an overview of the colour codes. Can be used as a separate option to only display the colour codes, or together with files to parse.
+
+\option[-nocodes]Do not display overview of colour codes.
+
+\option[-h, -?, --help, /?]Help.
+
+\option[--version]Print version number.
+
+\option[--license]License information.
+
\end{description}
If more than one file is given, \TeXcount{} will perform the count on each of them printing the results for each, then print the total sum at the end.
-\subsection{Details}
+\subsection{Parsing details}
-By selecting one of the \code{-v} options, you can choose how much detail is printed. This is useful for checking what \TeXcount{} counts.
+By selecting one of the \code{-v} options, you can choose how much detail is printed. This is useful for checking what \TeXcount{} counts. The option \code{-showstate} shows the internal state and is for debugging purposes only.
-The output is colour coded with counted text coloured blue, other colours for other contexts. The colour coding is made using ANSI colour codes. These should work when printed directly to Linux xterm window, but need not work if piped through \code{more} or \code{less}: with \code{less} you need to use the option \code{-r} for the colours to be shown correcly. Under Windows or other operating systems, the ANSI colour codes cannot be expected to work, in which case the option \code{-nocol} (\code{-nc}) may be used to turn off colour coding; instead I recommend using HTML output which can be viewed in a browser.
+The output is colour coded with counted text coloured blue, other colours for other contexts. The colour coding is made using ANSI colour codes. These should work when printed directly to Linux xterm window, but need not work if piped through \code{more} or \code{less}: with \code{less} you need to use the option \code{-r} for the colours to be shown correcly.
+
+Under Windows or other operating systems, the ANSI colour codes cannot be expected to work, in which case the option \code{-nocol} (\code{-nc}) may be used to turn off colour coding; instead I recommend using HTML output which can be viewed in a browser.
To print the details encoded as HTML code, use the option \code{-html}; alternatively, with \code{-htmlcore} only the HTML body is printed. On Windows, I suggest using the options \code{-html -v} to get full detail, save this to a HTML file, e.g. using
\codeline{texcount -html -v texfile.tex > details.html}
and then view the details.html file in a browser.
+\subsection{Summary information}
+
+By default, \TeXcount{} outputs counts of text words, header words, caption words, number of headers, number of floats/figures, number of inlined formulae, and number of displayed formulae, and lists each of these counts. To shorten this to a one-line format, specify \code{-brief}.
+
+To get \TeXcount{} to produce a total count, specify \code{-sum}: this will compute the sum of all words plus the number of formulae. A customized sum may be computed by speficying \code{-sum=n,n,\ldots} with up to seven numbers separated by commas giving the weight (0=don't count, 1=count once) of each of the seven counts: e.g. the default is equivalent to \code{-sum=1,1,1,0,0,1,1}. To count words only, use \code{-sum=1,1,1}. Higher weights may also be used, e.g. to count displayed formulae or floats/figures as a given number of words.
+
+Specifying \code{-sum} has two main effects: the cumulative sum is added to the output in verbose formats, and the sum is added to the summary. If combined with \code{-brief}, the option \code{-total} is automatically set, resulting in a one line output containing only the total sum.
+
+For adding subcounts e.g. by sections, the option \code{-sub} (or \code{-subcount}) may be used. By default, this produces subcounts by part, chapter, section and subsection which are listed in a brief format. One may, however, specify \code{-sub=} followed by \code{part}, \code{chapter}, \code{section}, or \code{subsection} (default when given without value). Break points which initiate a new subcount may also be specified within the \LaTeX{} document using \code{\%TC:break name}.
+
+If included files are included in the count (\code{-inc}), counts per file will be produced followed by a total count. To suppress per file counts, the option \code{-total} may be used.
+
\subsection{Parsing options}
-If the option \code{-inc} is used, \TeXcount{} will automatically count documents that are included (using \code{\bs{input}} or \code{\bs{include}}. As when giving a list of files to count, it will print the sum per file and a total sum at the end.
+\TeXcount{} uses regular expressions to identify words and macro options. By default, these are moderately strict, but can be relaxed using the option \code{-relaxed}. This allows more general document elements to be identified as words or macro options, which may sometimes be desired, but may also have undesirable effects, so check the verbose output to verify that \TeXcount{} has counted the appropriate elements.
+
+Macro options, i.e. \code{[\ldots]} after macros and macro parameters are ignored. Since \TeXcount{} has no specific knowledge of which macros take options, this is a general rule. In order to avoid that uses of [\ldots] that are not macro options are mistaken as such, \TeXcount{} makes some restrictions on what may be contained in such an option. By default, this restriction is relatively strict under the assumption that it is better to count a few macro options as words than risk large fragments of text to be ignored. However, if your document contains macro options with more complicated values (e.g. certain special characters or macros), using \code{-relaxed} may help handle these correctly.
+
+By default, \TeXcount{} does not allow special characters or macros to be part of words. This may cause problems if character modifiers or some special characters are used which are entered as macros. The \code{-relaxed} option makes the word recognition regular expression somewhat more general.
-The default is \code{-noinc} indicating that included documents are not counted.
+\subsection{File inclusion}
+If the option \code{-inc} is used, \TeXcount{} will automatically count documents that are included (using \code{\bs{input}} or \code{\bs{include}}. As when giving a list of files to count, it will print the sum per file and a total sum at the end. The default is \code{-noinc} indicating that included documents are not counted.
+
+By default, \TeXcount{} assumes paths are relative to the working directory. Alternatively, an explicit path may be given using \code{-dir=path}. Note that the path must end in the path delimiter symbol (depending on the operating system, \code{/} under Linux, \textbackslash under Windows). If only \code{-dir} is used, the path of the first file given will be used.
+
+Note that included documents are analysed as separate files: the text of included documents are thus not included where the \code{\bs{input}} or \code{\bs{include}} is located. This has two consequences. First, since word counts are produced per file, subcounts f.ex. by chapter will only include the text in the same file as the \code{\bs{chapter}} macro. Secondly, if TC-instructions to \TeXcount{} are embedded in the \LaTeX{} document, e.g. defining additional macro handling rules, these take effect in the order they are parsed by \TeXcount{}. Since included documents are parsed after the parent document, definitions in the parent document will be in effect for the included documents; definitions made in the included documents will only be in effect for subsequently included documents, not in the parent or previously included documents.
\section{What \TeXcount{} counts}
@@ -150,9 +199,9 @@ A very few rules are hard-coded, e.g. that text between \code{\bs{documentclass}
\TeXcount{}, the reason being that the rule originally only gave the number of
parameters to ignore following a given macro.)
-\item[header]Macros that are specified to be counted as headers. In fact, this only indicates that the macro should cause the number of headers to be increased by one; a rule is added to the macro-rule to count the following parameter as header text.
+\item[header]Some macros are specified to be counted as headers. This initially only indicates that the macro should cause the number of headers to be increased by one, but an additional rule is added to the macro-rule to count the following parameter as header text.
-\item[group]For groups enclosed by \code{\bs{begin}\{\textit{name}\}} and \code{\bs{end}\{\textit{name}\}}, there are rules specifying how the contents should be interpreted. A macro rule is added for \code{begin\textit{name}} (without the backslash!) which is \TeXcount{}'s internal representation of \code{\bs{begin}\{\textit{name}\}}.
+\item[group]For groups enclosed by \code{\bs{begin}\{\textit{name}\}} and \code{\bs{end}\{\textit{name}\}}, there are rules specifying how the contents should be interpreted. A macro rule is added for \code{begin\textit{name}} (without the backslash!) which is \TeXcount{}'s internal representation of \code{\bs{begin}\{\textit{name}\}}. Some special characters will be ignored if following \code{\textit{name}}, e.g. \code{\bs{begin}\{equation*\}} will be treated as \code{\bs{begin}\{equation\}} since \code{*} is ignored.
\item[macroword]This type of rule indicates that the macro itself represents one or more words. Initially, \code{\bs{LaTeX}} and \code{\bs{TeX}} are defined with values 1 indicating that each represents one word.
@@ -160,7 +209,7 @@ parameters to ignore following a given macro.)
\item[float inclusion]Within floats (begin-end groups defined with parsing status $-1$) there may be texts that should still be counted: in particular captions. These are specified with the float inclusion rule.
-\item[file include]If \code{-inc} is specified, included files will also be parsed and the total presented at the end. Initially, \code{\bs{input}} and \code{\bs{include}} trigger file inclusion, but more macros may be added here.
+\item[file include]If \code{-inc} is specified, included files will also be parsed and the total presented at the end. Initially, \code{\bs{input}} and \code{\bs{include}} trigger file inclusion, but more file inclusion macros may be added.
\end{description}
@@ -177,7 +226,34 @@ More critically, since \TeXcount{} does not really know which macros take option
More advanced macros are not supported and can potentially confuse \TeXcount{}. In partcular, if you define macros that contain unbalanced begin--end groups, this will cause problems as \TeXcount{} needs to keep track of these to know where different groups start and end.
-\section{Adding your own rules}
+\section{\TeXcount{} instructions in the \LaTeX{} document}
+
+It is possible to give some instructions to \TeXcount{} from within the
+\LaTeX{} document. The general format of these instructions are
+\codeline{\%TC:\textit{instruction [name] parameters}}
+where the name parameter is used with macro handling instructions to specify the macro or group name for which the rule applies.
+
+Note that the comment should be on a separate line, and that instructions are case sensitive.
+
+\subsection{Ignoring segments of the file}
+
+The TC-instruction \code{ignore}, later canceled by \code{endignore}, may be used to turn of all counting in a segment of the \LaTeX{} file. The ignored segment should thus be started by
+\codeline{\%TC:ignore}
+end ended by
+\codeline{\%TC:endignore}
+causing all text inbetween to be ignored. Note that \TeXcount{} still parses this text and may be affected by unbalanced brackets.
+
+\subsection{Adding subcount break points}
+
+By specifying \code{-sub}, \TeXcount{} can produce subcounts, e.g. per section. Alternatively, or in addition, explicit break points can be entered in the \LaTeX{} document using the TC-instruction \code{break}. These take the form:
+\codeline{\%TC:break \textit{title}}
+A title (or name) may be given to identify the break point.
+
+If you define new section macros or macros you wish to cause a break point, these may be specified using the TC-instruction \code{breakmacro}:
+\codeline{\%TC:breakmacro \textit{macro} \textit{label}}
+This defines the given macro to cause a break point, and uses the given label to indicate the type of break (e.g. Section, Chapter, etc.).
+
+\subsection{Adding macro handling rules}
Adding your own macro handling rules is relatively simple. Although editing the script is possible, and not too difficult, this has the disadvantage that the modifications will be lost if updating to a new version of \TeXcount. A better and more flexible solution is to include instructions to \TeXcount{} in the \LaTeX{} documents, alternatively to make a definition file in which new macro handling rules are defined.
@@ -193,9 +269,13 @@ The instructions may be one of the following:
%
\begin{description}\def\option[#1]{\item[\bigcode{#1}]}
-\option[macro]Takes one parameter which is either an integer or a \code{[]}-enclosed array of integers (e.g. \code{[0,1,0]}). An integer value $n$ indicates that the $n$ first parameters to the macro should be ignored. An array of length $n$ indicates that the first $n$ parameters should be handled, and the numbers of the array specifies the parsing status (see below) with which they should be parsed. Giving the number $n$ as parameter is equivalent to giving an array of $n$ zeroes (\code{[0,\ldots,0]}) as zero is the parsing status for ignoring text.
+\option[macro]Define macro handling rule for the given macro. Takes one parameter which is either an integer or a \code{[]}-enclosed array of integers (e.g. \code{[0,1,0]}). An integer value $n$ indicates that the $n$ first parameters to the macro should be ignored. An array of length $n$ indicates that the first $n$ parameters should be handled, and the numbers of the array specifies the parsing status (see below) with which they should be parsed. Giving the number $n$ as parameter is equivalent to giving an array of $n$ zeroes (\code{[0,\ldots,0]}) as zero is the parsing status for ignoring text.
+
+\option[macroword]This defines the given macro to represent a certain number of words, where the number is given as the parameter.
+
+\option[header]Define macro to give a header. This is specified much as the macro rule. The added effect is that the header counter is increase by 1. Note, however, that you should specify a parameter array, otherwise none of the parameters will be parsed as header text. The parser status for header text is 2, so a standard header macro that uses the first parameter as header should be given the parameter \code{[2]}.
-\option[header]This is specified much as the macro rule. The added effect is that the header counter is increase by 1. Note, however, that you should specify a parameter array, otherwise none of the parameters will be parsed as header text. The parser status for header text is 2, so a standard header macro that uses the first parameter as header should be given the parameter \code{[2]}.
+\option[breakmacro]Specify that the given macro should cause a break point. Defining it as a header macro does not do this, nor is it required of a break point macro that it be a header (although I suppose in most cases of interest it will be).
\option[group]This specifies a begin-end group with the given name (no backslash). It takes two further parameters. The first parameter speficies the macro rule following \code{\bs{begin}\{\textit{name}\}}. The second parameter specifies the parser status with which the contents should be parsed: e.g. $1$ for text (default rule), $0$ to ignore, $-1$ to specify a float (table, group, etc.) for which text should not be counted but captions should, $6$ and $7$ for inline or displated math.
@@ -203,7 +283,7 @@ The instructions may be one of the following:
\option[preambleinclude]The preamble, i.e. text between \code{\bs{documentclass}} and \code{\bs{begin}\{document\}}, if the document contains one, should generally not be included in the word count. However, there may be definitions, e.g. \code{\bs{title}\{title text\}}, that should still be counted. In order to be able to include these special cases, there is a preambleinclude rule in which one may speficy handling rules for macros within the preamble. Again, the rule is speficied like the \code{macro} rules, but since the default is to ignore text the only relevant rules to be specified require an array.
-\option[fileinclude]By default, \TeXcount{} does not automatically add files included in the document using \code{\bs{input}} or \code{\bs{include}}, but inclusion may be turned on by using the option \code{-inc}. If other macros are used to include files, these may be specifed by adding fileinclude rules for these macros. The specification takes one parameter: 1 if filetype \code{.tex} should be added if the file is without a filetype, 0 if it should not.
+\option[fileinclude]By default, \TeXcount{} does not automatically add files included in the document using \code{\bs{input}} or \code{\bs{include}}, but inclusion may be turned on by using the option \code{-inc}. If other macros are used to include files, these may be specifed by adding fileinclude rules for these macros. The specification takes one parameter: 0 if the file name should be used as provided, 1 if file type \code{.tex} should be added to files without a file type, and 2 if the file tyle \code{.tex} should always be added.
\end{description}
diff --git a/Master/texmf-dist/doc/support/texcount/macros.tex b/Master/texmf-dist/doc/support/texcount/macros.tex
new file mode 100644
index 00000000000..09e304c736f
--- /dev/null
+++ b/Master/texmf-dist/doc/support/texcount/macros.tex
@@ -0,0 +1,39 @@
+%% LaTeX macros
+
+%TC:macroword \TeXcount 1
+\newcommand\TeXcount{{\TeX}count}
+
+\newcommand\code[1]{\texttt{\small#1}}
+\newcommand\bigcode[1]{\texttt{#1}}
+\newcommand\codeline[1]{\begin{quote}\code{#1}\end{quote}}
+\newcommand\bs[1]{\textbackslash#1}
+\newcommand\URL[1]{\texttt{\small #1}}
+
+%TC:macro NB 1
+\newcommand\NB[1]{\marginpar{\textsf{\tiny#1}}}
+
+
+\makeatletter
+
+\renewcommand\@maketitle{%
+\newpage\null\vskip 2em%
+\begin{center}%
+\let\footnote\thanks
+{\LARGE \@title \par}%
+\end{center}%
+\par
+\vskip 1.5em
+}
+
+\renewcommand\abstractname{ABSTRACT}
+\renewenvironment{abstract}{%
+ \begin{center}%
+ {\bfseries\large\abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \vskip 4pt
+ \bfseries
+}{
+\vskip 0.5em
+}
+
+\makeatother
diff --git a/Master/texmf-dist/scripts/texcount/TeXcount.pl b/Master/texmf-dist/scripts/texcount/TeXcount.pl
index 1ed70fc8a56..8b68e4984c0 100755
--- a/Master/texmf-dist/scripts/texcount/TeXcount.pl
+++ b/Master/texmf-dist/scripts/texcount/TeXcount.pl
@@ -2,15 +2,33 @@
use strict;
use warnings;
use Term::ANSIColor;
-#--- --- ---#
use POSIX qw(locale_h);
use locale;
setlocale(LC_CTYPE,"no_NO");
-my $versionnumber="2.0";
-my $versiondate="2008 Feb 10";
+my $versionnumber="2.1";
+my $versiondate="2008 Nov 02";
-#--- --- ---#
+###### Set CMD specific settings and variables
+
+# Options and states
+my $verbose=0;
+my $showcodes=1;
+my $showstates=0;
+my $showsubcounts=0;
+my $htmlstyle=0;
+my $includeTeX=0;
+my $briefsum=0;
+my $totalflag=0;
+my @sumweights;
+my $globalworkdir="";
+
+# Global variables
+my $blankline=0;
+my @filelist;
+my $workdir;
+
+###### Set global settings and variables
### Macros for headers
# Macros that identify headers: i.e. following token or
@@ -109,10 +127,10 @@ my %TeXgroup=('document'=>1,'letter'=>1,'titlepage'=>0,
my %TeXfloatinc=('\caption'=>[3]);
### Macros for including tex files
-# Allows \macro{file} or \macro file. If the value is 1, the filetype .tex will
-# be added if file is without a filetype; if the value is 0, this will not be
-# done.
-my %TeXfileinclude=('\input'=>0,'\include'=>1);
+# Allows \macro{file} or \macro file. If the value is 0, the filename will
+# be used as is; if it is 1, the filetype .tex will be added if the
+# filename is without filetype; if it is 2, the filetype .tex will be added.
+my %TeXfileinclude=('\input'=>1,'\include'=>2);
### Count labels
# Labels used to describe the counts
@@ -120,113 +138,284 @@ my @countlabel=('Files','Words in text','Words in headers',
'Words in float captions','Number of headers','Number of floats',
'Number of math inlines','Number of math displayed');
-# Styles
+### Break points
+# Definition of macros that define break points that start a new subcount.
+# The values given are used as labels.
+my %BreakPointsOptions;
+$BreakPointsOptions{'none'}={};
+$BreakPointsOptions{'part'}={%{$BreakPointsOptions{'none'}},'\part'=>'Part'};
+$BreakPointsOptions{'chapter'}={%{$BreakPointsOptions{'part'}},'\chapter'=>'Chapter'};
+$BreakPointsOptions{'section'}={%{$BreakPointsOptions{'chapter'}},'\section'=>'Section'};
+$BreakPointsOptions{'subsection'}={%{$BreakPointsOptions{'section'}},'\subsection'=>'Subsection'};
+$BreakPointsOptions{'default'}=$BreakPointsOptions{'subsection'};
+my %BreakPoints=%{$BreakPointsOptions{'none'}};
+
+### Print styles
+# Definition of different print styles: maps of class labels
+# to ANSI codes. Class labels are as used by HTML styles.
my @STYLES=();
my %STYLE;
$STYLES[0]={'error'=>'bold red'};
$STYLES[1]={%{$STYLES[0]},
'word1'=>'blue','word2'=>'bold blue','word3'=>'blue',
'grouping'=>'red','document'=>'red','mathgroup'=>'magenta',
- 'state'=>'cyan underline'};
+ 'state'=>'cyan underline','sumcount'=>'yellow'};
$STYLES[2]={%{$STYLES[1]},
- 'word0'=>'yellow','word-1'=>'yellow',
'command'=>'green','exclgroup'=>'yellow','exclmath'=>'yellow',
'ignore'=>'cyan'};
$STYLES[3]={%{$STYLES[2]},
- 'tc'=>'bold yellow','comment'=>'yellow','option'=>'yellow','fileinclude'=>'bold green'};
+ 'tc'=>'bold yellow','comment'=>'yellow','option'=>'yellow',
+ 'fileinclude'=>'bold green'};
$STYLES[4]={%{$STYLES[3]}};
-# Options and states
-my $verbose=0;
-my $showstates=0;
-my $htmlstyle=0;
-my $blankline=0;
-my $includeTeX=0;
-my $briefsum=0;
+### Word regexp pattern list
+# List of regexp patterns that should be analysed as words.
+my $specialchars='\\\\(ae|AE|o|O|aa|AA)';
+my $modifiedchars='\\\\[\'\"\`\~\^\=](\w|\{\w\})';
+my @WordPatterns=('(\w+\.)+\w+\.?','\w+([\-\']\w+)*');
+my @WordPatternsRelaxed=('([\w\-\']|'.$modifiedchars.'|'.$specialchars.'(\{\})?|\{'.$specialchars.'\})+');
-#--- --- ---#
+### Macro option regexp list
+# List of regexp patterns to be gobbled as macro option in and after
+# a macro.
+my @MacroOptionPatterns=('\[(\w|[,\-\s\~\.\:\;\+\?\*\_\=])*\]');
+my @MacroOptionPatternsRelaxed=('\[[^\[\]\n]*\]');
-## SHORT HELP AND INFO
-if (!defined @ARGV) {
- print_version();
- print_syntax();
- print_reference();
- exit;
-} elsif ($ARGV[0]=~/^(\-(h|\?|\-?help)|\/\?)$/) {
- print_help();
- exit;
-} elsif ($ARGV[0]=~/^\-?\-version$/) {
- print_version();
- exit;
-} elsif ($ARGV[0]=~/^\-?\-license$/) {
- print_license();
- exit;
-}
-
-# PROCESS ARGUMENTS AND FILES
-my $totalcount=new_count();
-my @toplevelfiles;
-my @filelist;
-foreach my $arg (@ARGV) {
- if ($arg eq '-noinc') {$includeTeX=0; next;}
- if ($arg eq '-inc') {$includeTeX=1; next;}
- if ($arg eq '-brief') {$briefsum=1; next;}
- if ($arg eq '-v0') {$verbose=0; next;}
- if ($arg eq '-v1') {$verbose=1; next;}
- if ($arg eq '-vv' || $arg eq '-v2') {$verbose=2; next;}
- if ($arg eq '-vvv' || $arg eq '-v3' || $arg eq '-v') {$verbose=3; next;}
- if ($arg eq '-vvvv' || $arg eq '-v4') {$verbose=3; $showstates=1; next;}
- if ($arg =~ /^\-showstate/ ){$showstates=1; next;}
- if ($arg =~ /^\-html/ ) {
- $ENV{'ANSI_COLORS_DISABLED'} = 1;
- $htmlstyle = $arg eq '-htmlcore' ? 1 : 2;
- if ($htmlstyle>1) {html_head();}
- next;
- }
- if ($arg=~/^\-(nocol|nc$)/) {
- $ENV{'ANSI_COLORS_DISABLED'} = 1;
- next;
- }
- if ($arg=~/^\-/) {
- print 'Invalid opton '.$arg."\n";
+###### Main script
+
+###################################################
+
+MAIN(@ARGV);
+
+###################################################
+
+
+#########
+######### Main routines
+#########
+
+# MAIN ROUTINE: Handle arguments, then parse files
+sub MAIN {
+ my @args=@_;
+ my @toplevelfiles=Parse_Arguments(@args);
+ Apply_Options();
+ if (scalar(@toplevelfiles)==0) {
+ if ($showcodes>1) {print_help_style();}
+ else {print_error("No files specified.","p","error");}
+ } else {
+ conditional_print_help_style();
+ my $totalcount=parse_file_list(@toplevelfiles);
+ conditional_print_total($totalcount);
+ }
+ Close_Output();
+}
+
+# Checks arguments, exits on exit condition
+sub Check_Arguments {
+ my @args=@_;
+ if (!@args) {
+ print_version();
print_syntax();
+ print_reference();
+ exit;
+ } elsif ($args[0]=~/^(\-?\-(h|\?|help)|\/(\?|h))$/) {
+ print_help();
+ exit;
+ } elsif ($args[0]=~/^\-?\-(ver|version)$/) {
+ print_version();
exit;
+ } elsif ($args[0]=~/^\-?\-(lic|license)$/) {
+ print_license();
+ exit;
+ }
+ return 1;
+}
+
+# Parses arguments, sets options (global) and returns file list
+sub Parse_Arguments {
+ my @args=@_;
+ Check_Arguments(@args);
+ my @files;
+ foreach my $arg (@ARGV) {
+ if (Parse_Option($arg)) {next;}
+ if ($arg=~/^\-/) {
+ print 'Invalid opton '.$arg."\n";
+ print_syntax();
+ exit;
+ }
+ $arg=~s/\\/\//g;
+ push @files,$arg;
+ }
+ return @files;
+}
+
+# Parse individual option parameters
+sub Parse_Option {
+ my $arg=shift @_;
+ return parse_options_parsing($arg)
+ || parse_options_sums($arg)
+ || parse_options_output($arg)
+ || parse_options_format($arg)
+ ;
+}
+
+sub parse_options_parsing {
+ my $arg=shift @_;
+ if ($arg eq '-inc') {$includeTeX=1;}
+ elsif ($arg eq '-noinc') {$includeTeX=0;}
+ elsif ($arg eq '-dir') {$globalworkdir=undef;}
+ elsif ($arg=~/^-dir=(.*)$/) {$globalworkdir=$1;}
+ elsif ($arg eq '-relaxed') {
+ @MacroOptionPatterns=@MacroOptionPatternsRelaxed;
+ @WordPatterns=@WordPatternsRelaxed;
+ }
+ else {return 0;}
+ return 1;
+}
+
+sub parse_options_sums {
+ my $arg=shift @_;
+ if ($arg=~/^-sum(=(.+))?$/) {option_sum($2);}
+ elsif ($arg=~/^-(sub|subcounts?)(=(.+))?$/) {option_subcount($3);}
+ else {return 0;}
+ return 1;
+}
+
+sub option_subcount {
+ my $arg=shift @_;
+ $showsubcounts=1;
+ if (!defined $arg) {
+ %BreakPoints=%{$BreakPointsOptions{'default'}};
+ } elsif (my $option=$BreakPointsOptions{$arg}) {
+ %BreakPoints=%{$option};
+ } else {
+ print STDERR "Warning: Option value ".$arg." not valid, using default instead.\n";
+ %BreakPoints=%{$BreakPointsOptions{'default'}};
}
- $arg=~s/\\/\//g;
- push @toplevelfiles,$arg;
}
-%STYLE=%{$STYLES[$verbose]};
-for my $file (<@toplevelfiles>) {
+
+sub option_sum {
+ my $arg=shift @_;
+ if (!defined $arg) {
+ @sumweights=(1,1,1,0,0,1,1);
+ } elsif ($arg=~/^(\d+(,\d+){0,6})$/) {
+ @sumweights=split(',',$1);
+ } else {
+ print STDERR "Warning: Option value ".$arg." not valid, ignoring option.\n";
+ }
+}
+
+sub parse_options_format {
+ my $arg=shift @_;
+ if ($arg eq '-brief') {$briefsum=1; return 1;}
+ elsif ($arg eq '-total') {$totalflag=1; return 1;}
+ elsif ($arg eq '-1') {$briefsum=1;$totalflag=1;}
+ elsif ($arg eq "-html" ) {option_no_colours();$htmlstyle = 2;}
+ elsif ($arg eq "-htmlcore" ) {option_no_colours();$htmlstyle = 1;}
+ elsif ($arg=~/^\-(nocol|nc$)/) {option_no_colours();}
+ elsif ($arg eq '-codes') {
+ $showcodes=2;
+ if ($verbose==0) {$verbose=3;}
+ }
+ elsif ($arg eq '-nocodes') {$showcodes=0;}
+ else {return 0;}
+ return 1;
+}
+
+sub parse_options_output {
+ my $arg=shift @_;
+ if ($arg eq "-v0") {$verbose=0;}
+ elsif ($arg eq "-v1") {$verbose=1;}
+ elsif ($arg eq '-vv' || $arg eq '-v2') {$verbose=2;}
+ elsif ($arg eq '-vvv' || $arg eq '-v3' || $arg eq '-v') {$verbose=3;}
+ elsif ($arg eq '-vvvv' || $arg eq '-v4') {$verbose=3; $showstates=1;}
+ elsif ($arg =~ /^\-showstates?$/ ){$showstates=1;}
+ else {return 0;}
+ return 1;
+}
+
+# Parse file list and return total count
+sub parse_file_list {
+ my @filelist=@_;
+ my $listtotalcount=new_count("TOTAL COUNT");
+ for my $file (<@filelist>) {
+ my $filetotalcount=parse_file($file);
+ add_count($listtotalcount,$filetotalcount);
+ }
+ return $listtotalcount;
+}
+
+# Parse file and included files, and return total count
+sub parse_file {
+ my $file=shift @_;
+ $workdir=$globalworkdir;
+ if (!defined $workdir) {
+ $workdir=$file;
+ $workdir =~ s/^((.*[\\\/])?)[^\\\/]+$/$1/;
+ }
@filelist=($file);
+ if ($htmlstyle) {print "\n<div class='filegroup'>\n";}
+ my $filetotalcount=new_count("SUM COUNT FOR ".$file);
foreach my $f (@filelist) {
my $tex=TeXfile($f);
my $fpath=$f;
- $fpath=~s/^(.*[\\\/])[^\\\/]+/$1/;
+ $fpath=~s/^((.*[\\\/])?)[^\\\/]+$/$1/;
if (!defined $tex) {
- print "File not found or not readable: ".$f."\n";
+ #print_error("File not found or not readable: ".$f."\n");
+ formatprint("File not found or not readable: ".$f."\n","p","error");
} else {
parse($tex);
- print "\n";
- print_count($tex->{'count'},'FILE: '.$f);
- print "\n";
- add_count($totalcount,$tex->{'count'});
+ my $filecount=add_subcount($tex);
+ if (!$totalflag) {
+ print_count($filecount);
+ print "\n";
+ }
+ add_count($filetotalcount,$filecount);
}
}
+ if ($htmlstyle) {print "</div>\n\n";}
+ return $filetotalcount;
}
-if (${$totalcount}[0]>1) {
- print "\n";
- formatprint('Total','h1');
- print_count($totalcount,'SUM');
+
+######
+###### Subroutines
+######
+
+###### Option handling
+
+# Apply options to set values
+sub Apply_Options {
+ %STYLE=%{$STYLES[$verbose]};
+ if ($htmlstyle>1) {html_head();}
}
-if ($htmlstyle>1) {
- html_tail();
+
+# Close the output, e.g. adding HTML tail
+sub Close_Output {
+ if ($htmlstyle>1) {
+ html_tail();
+ }
}
+sub option_no_colours {
+ $ENV{'ANSI_COLORS_DISABLED'} = 1;
+}
+# Print count (total) if conditions are met
+sub conditional_print_total {
+ my $sumcount=shift @_;
+ if ($totalflag || get_count($sumcount,0)>1) {
+ if ($totalflag && $briefsum && @sumweights) {
+ print total_count($sumcount);
+ } else {
+ if ($htmlstyle) {
+ formatprint("Total word count",'h2');
+ }
+ print_count($sumcount);
+ }
+ }
+}
-#########
-######### Subroutines
-#########
+###### TeX File handle
sub TeXfile {
my $filename=shift @_;
@@ -235,7 +424,7 @@ sub TeXfile {
}
sub TeXcode {
- my ($texcode,$filename)=@_;
+ my ($texcode,$filename,$title)=@_;
my %TeX=();
$TeX{'filename'}=$filename;
if (!defined $filename) {
@@ -245,204 +434,39 @@ sub TeXcode {
} else {
$TeX{'filepath'}='';
}
+ if (defined $title) {}
+ elsif (defined $filename) {$title="FILE: ".$filename;}
+ else {$title="Word count";}
$TeX{'line'}=$texcode;
$TeX{'next'}=undef;
$TeX{'type'}=undef;
$TeX{'style'}=undef;
$TeX{'printstate'}=undef;
$TeX{'eof'}=0;
- $TeX{'count'}=new_count();
- $TeX{'count'}[0]++;
+ my $countsum=new_count($title);
+ $TeX{'countsum'}=$countsum;
+ my $count=new_count("_top_");
+ $TeX{'count'}=$count;
+ inc_count(\%TeX,0);
+ my @countlist=();
+ $TeX{'countlist'}=\@countlist;
+ $countsum->{'subcounts'}=\@countlist;
return \%TeX;
}
-sub set_style {
- my ($tex,$style)=@_;
- if (!(($tex->{'style'}) && ($tex->{'style'} eq '-'))) {$tex->{'style'}=$style;}
-}
-
-sub flush_style {
- my ($tex,$style)=@_;
- set_style($tex,$style);
- flush_next($tex);
-}
-
-sub line_return {
- my $blank=shift @_;
- if ($blank>$blankline) {
- if ($htmlstyle) {print "<br>\n";} else {print "\n";}
- $blankline++;
- }
-}
-
-sub print_style {
- my ($text,$style,$state)=@_;
- (($verbose>=0) && (defined $text) && (defined $style)) || return;
- my $colour;
- ($colour=$STYLE{$style}) || return;
- if (($colour) && !($colour eq '-')) {
- if ($htmlstyle) {
- print "<span class='".$style."'>".$text."</span>";
- } else {
- print Term::ANSIColor::colored($text,$colour);
- }
- if ($state) {
- print_style($state,'state');
- }
- $blankline=-1;
- }
-}
-
-sub print_error {
- my $text=shift @_;
- line_return(1);
- print_style("### ".$text." ###",'error');
- line_return(1);
-}
-
-sub formatprint {
- my ($text,$tag,$class)=@_;
- my $break=($text=~s/\n$//);
- if ($htmlstyle && defined $tag) {
- print '<'.$tag;
- if ($class) {print " class='".$class."'";}
- print '>'.$text.'</'.$tag.'>';
- } else {
- print $text;
- }
- if ($break) {print "\n";}
-}
-
sub read_file {
my $filename=shift @_;
open(FH,"<".$filename."") || return undef;
if ($verbose) {
- #line_return(1);
formatprint("File: ".$filename."\n",'h2');
$blankline=0;
}
- my @text=();
- while (my $line=<FH>) {
- push @text,$line;
- }
+ my @text=<FH>;
close(FH);
return join('',@text);
}
-sub next_token {
- my $tex=shift @_;
- my ($next,$type);
- if (defined $tex->{'next'}) {print_style($tex->{'next'}.' ',$tex->{'style'});}
- $tex->{'style'}=undef;
- while (defined ($next=get_next_token($tex))) {
- $type=$tex->{'type'};
- if ($type==0) {
- print_style($next,'comment');
- } elsif ($type==9) {
- if ($verbose) {line_return(1);}
- } else {
- return $next;
- }
- }
- return $next;
-}
-
-sub flush_next {
- my $tex=shift @_;
- if (defined $tex->{'next'}) {
- print_style($tex->{'next'}.' ',$tex->{'style'},$tex->{'printstate'});
- }
- $tex->{'printstate'}=undef;
- $tex->{'style'}='-';
-}
-
-sub get_next_token {
- # Token (or token group) category:
- # 0: comment
- # 1: word (or other forms of text or text components)
- # 2: symbol (not word, e.g. punctuation)
- # 3: macro
- # 4: curly braces {}
- # 5: brackets []
- # 6: maths
- # 999: end of line or blank line
- # 666: TeXcount instruction (%TC:instruction)
- my $tex=shift @_;
- my $next;
- (defined ($next=get_token($tex,'\%+TC:[^\n]*',666))) && return $next;
- (defined ($next=get_token($tex,'\%[^\n]*',0))) && return $next;
- (defined ($next=get_token($tex,'\n',9))) && return $next;
- (defined ($next=get_token($tex,'\\\\[\{\}]',2))) && return $next;
- (defined ($next=get_token($tex,'(\w+\.)+\w+\.?',1))) && return $next;
- (defined ($next=get_token($tex,'\w+([\-\']\w+)*',1))) && return $next;
- (defined ($next=get_token($tex,'[\"\'\`:\.,\(\)\[\]!\+\-\*=/\^\_\@\<\>\~\#\&]',2))) && return $next;
- (defined ($next=get_token($tex,'\\\\([a-zA-Z_]+|[^a-zA-Z_])',3))) && return $next;
- (defined ($next=get_token($tex,'[\{\}]',4))) && return $next;
- (defined ($next=get_token($tex,'[\[\]]',5))) && return $next;
- (defined ($next=get_token($tex,'\$\$',6))) && return $next;
- (defined ($next=get_token($tex,'\$',6))) && return $next;
- (defined ($next=get_token($tex,'.',999))) && return $next;
- (defined ($next=get_token($tex,'[^\s]+',999))) && return $next;
- $tex->{'eof'}=1;
- return undef;
-}
-
-sub get_token {
- my ($tex,$regexp,$type)=@_;
- if (!defined $regexp) {print_error("ERROR in get_token: undefined regex.");}
- if (!defined $tex->{'line'}) {print_error("ERROR in get_token: undefined tex-line. ".$tex->{'next'});}
- if ( $tex->{'line'} =~ s/^($regexp)[ \t\r\f]*// ) {
- $tex->{'next'}=$1;
- $tex->{'type'}=$type;
- return $1;
- }
- return undef;
-}
-
-sub new_count {
- my @count=(0,0,0,0,0,0,0,0);
- # files, text words, header words, float words,
- # headers, floats, math-inline, math-display;
- return \@count;
-}
-
-sub count_word {
- my ($count,$type,$word,$style,$verb)=@_;
- ($word) || ($word="");
- ($style) || ($style=0);
- ($verb) || ($verb=0);
- if ($type>0) {${$count}[$type]++;}
- if ($verb >= $verbose) {
- }
-}
-
-sub print_count {
- my ($count,$header)=@_;
- if ($briefsum) {
- if ($htmlstyle) {print "<p class='count'>\n";}
- print ${$count}[1]."+".${$count}[2]."+".${$count}[3].
- " (".${$count}[4]."/".${$count}[5]."/".${$count}[6]."/".${$count}[7].") ".
- $header;
- if ($htmlstyle) {print "</p>\n";}
- return;
- }
- if ($htmlstyle) {print "<dl class='count'>\n";}
- if (defined $header) {
- formatprint($header."\n",'dt','header');
- }
- for (my $i=1;$i<8;$i++) {
- formatprint($countlabel[$i].': ','dt');
- formatprint(${$count}[$i]."\n",'dd');
- }
- if ($htmlstyle) {print "</dl>\n";}
-}
-
-sub add_count {
- my ($a,$b)=@_;
- for (my $i=0;$i<8;$i++) {
- ${$a}[$i]+=${$b}[$i];
- }
-}
+###### Parsing routines
sub parse {
my ($tex)=@_;
@@ -471,7 +495,6 @@ sub parse_unit {
print_error("CRITICAL ERROR: Invalid parser status!");
exit;
}
- my $count=$tex->{'count'};
my $substat;
if ($showstates) {
if (defined $end) {
@@ -509,7 +532,7 @@ sub parse_unit {
} elsif ($tex->{'type'}==1) {
# word
if ($status>0) {
- ${$count}[$status]++;
+ inc_count($tex,$status);
set_style($tex,'word'.$status);
}
} elsif ($next eq '{') {
@@ -519,25 +542,31 @@ sub parse_unit {
set_style($tex,'ignore');
} elsif ($tex->{'type'}==3) {
# macro call
+ if (my $label=$BreakPoints{$next}) {
+ if ($tex->{'line'}=~ /^[*]?(\s*\[.*?\])*\s*\{(.+?)\}/ ) {
+ $label=$label.': '.$2;
+ }
+ add_subcount($tex,$label);
+ }
set_style($tex,'command');
if ($next eq '\begin' && $status!=-2) {
- parse_begin_end($tex,$count,$status);
+ parse_begin_end($tex,$status);
} elsif (($status==-1) && ($substat=$TeXfloatinc{$next})) {
# text included from float
gobble_macro_parms($tex,$substat);
} elsif ($status==-9 && defined ($substat=$TeXpreamble{$next})) {
# parse preamble include macros
- if (defined $TeXheader{$next}) {${$count}[4]++;}
+ if (defined $TeXheader{$next}) {inc_count($tex,4);}
gobble_macro_parms($tex,$substat,1);
} elsif ($status<0) {
# ignore
gobble_option($tex);
} elsif ($next eq '\(') {
# math inline
- parse_math($tex,$count,$status,6,'\)');
+ parse_math($tex,$status,6,'\)');
} elsif ($next eq '\[') {
# math display
- parse_math($tex,$count,$status,7,'\]');
+ parse_math($tex,$status,7,'\]');
} elsif ($next eq '\def') {
# ignore \def...
$tex->{'line'} =~ s/^([^\{]*)\{/\{/;
@@ -546,14 +575,14 @@ sub parse_unit {
parse_unit($tex,-2);
} elsif (defined (my $addsuffix=$TeXfileinclude{$next})) {
# include file: queue up for parsing
- parse_include_file($tex,$count,$status,$addsuffix);
+ parse_include_file($tex,$status,$addsuffix);
} elsif (defined ($substat=$TeXmacro{$next})) {
# macro: exclude options
- if (defined $TeXheader{$next}) {${$count}[4]++;}
+ if (defined $TeXheader{$next}) {inc_count($tex,4);}
gobble_macro_parms($tex,$substat,$status);
} elsif (defined ($substat=$TeXmacroword{$next})) {
# count macro as word (or a given number of words)
- ${$count}[$status]+=$substat;
+ inc_count($tex,$status,$substat);
set_style($tex,'word'.$status);
} elsif ($next =~ /^\\[^\w\_]/) {
} else {
@@ -561,10 +590,12 @@ sub parse_unit {
}
} elsif ($next eq '$') {
# math inline
- parse_math($tex,$count,$status,6,'$');
+ parse_math($tex,$status,6,'$');
} elsif ($next eq '$$') {
# math display (unless already in inlined math)
- if (! $end eq '$') {parse_math($tex,$count,$status,7,'$$');}
+ if (!(defined $end && $end eq '$')) {
+ parse_math($tex,$status,7,'$$');
+ }
}
if (!defined $end) {return;}
}
@@ -573,21 +604,32 @@ sub parse_unit {
sub gobble_option {
my $tex=shift @_;
flush_next($tex);
- if ($tex->{'line'} =~ s/^(\[(\w|[,\-\s\~\.\:\;\+\?\*\_\=])*\])//) {
- print_style($1,'option');
- return $1;
+ foreach my $pattern (@MacroOptionPatterns) {
+ if ($tex->{'line'}=~s/^($pattern)//) {
+ print_style($1,'option');
+ return $1;
+ }
}
return undef;
}
sub parse_tc {
my ($tex)=@_;
+ my $next=$tex->{'next'};
set_style($tex,'tc');
- if ($tex->{'next'}=~/^\%+TC:\s*(\w+)\s+([\\]*\w+)\s+([^\s\n]+)(\s+([0-9]+))?/) {
- my $instr=$1;
- my $macro=$2;
- my $param=$3;
- my $option=$5;
+ flush_next($tex);
+ if (!($next=~s/^\%+TC:\s*(\w+)\s*// )) {
+ print_error('Warning: TC command should have format %TC:instruction [macro] [parameters]');
+ return;
+ };
+ my $instr=$1;
+ if ($instr=~/^(break)$/) {
+ if ($instr eq 'break') {add_subcount($tex,$next);}
+ } elsif ($next=~/^([\\]*\w+)\s+([^\s\n]+)(\s+([0-9]+))?/) {
+ # Format = TC:word macro
+ my $macro=$1;
+ my $param=$2;
+ my $option=$4;
if ($param=~/^\[([0-9,]+)\]$/) {$param=[split(',',$1)];}
if (($instr eq 'macro') || ($instr eq 'exclude')) {$TeXmacro{$macro}=$param;}
elsif ($instr eq 'header') {$TeXheader{$macro}=$param;$TeXmacro{$macro}=$param;}
@@ -596,24 +638,34 @@ sub parse_tc {
elsif ($instr eq 'group') {$TeXmacro{'begin'.$macro}=$param;$TeXgroup{$macro}=$option;}
elsif ($instr eq 'floatinclude') {$TeXfloatinc{$macro}=$param;}
elsif ($instr eq 'fileinclude') {$TeXfileinclude{$macro}=$param;}
+ elsif ($instr eq 'breakmacro') {$BreakPoints{$macro}=$param;}
else {print_error("Warning: Unknown TC command: ".$instr);}
- } elsif ($tex->{'next'}=~/^\%+TC:\s*(\w+)/) {
- my $instr=$1;
- print_error("Warning: Unknown TC command: ".$instr);
+ } elsif ($instr eq 'ignore') {
+ tc_ignore_input($tex);
+ } else {
+ print_error("Warning: Invalid TC command format: ".$instr);
}
}
+sub tc_ignore_input {
+ my ($tex)=@_;
+ set_style($tex,'ignore');
+ parse_unit($tex,-3,"%TC:endignore");
+ set_style($tex,'tc');
+ flush_next($tex);
+}
+
sub parse_math {
- my ($tex,$count,$status,$substat,$end)=@_;
+ my ($tex,$status,$substat,$end)=@_;
my $localstyle=$status>0 ? 'mathgroup' : 'exclmath';
- if ($status>0) {${$count}[$substat]++;}
+ if ($status>0) {inc_count($tex,$substat);}
set_style($tex,$localstyle);
parse_unit($tex,0,$end);
set_style($tex,$localstyle);
}
sub parse_begin_end {
- my ($tex,$count,$status)=@_;
+ my ($tex,$status)=@_;
my $localstyle=$status>0 ? 'grouping' : 'exclgroup';
flush_style($tex,$localstyle);
gobble_option($tex);
@@ -635,11 +687,11 @@ sub parse_begin_end {
if ($status<=0 && $status<$substat) {$substat=$status;}
if (($status>0) && ($substat==-1)) {
# Count float
- ${$count}[5]++;
+ inc_count($tex,5);
}
if ($status>0 and $substat>3) {
# count item, exclude contents
- ${$count}[$substat]++;
+ inc_count($tex,$substat);
$substat=0;
}
parse_unit($tex,$substat,'\end');
@@ -653,7 +705,7 @@ sub parse_begin_end {
}
sub parse_include_file {
- my ($tex,$count,$status,$addsuffix)=@_;
+ my ($tex,$status,$addsuffix)=@_;
$tex->{'line'} =~ s/^\{([^\{\}\s]+)\}// ||
$tex->{'line'} =~ s/^\s*([^\{\}\%\\\s]+)// ||
return;
@@ -661,8 +713,10 @@ sub parse_include_file {
if ($status>0) {
print_style($&,'fileinclude');
my $fname=$1;
- if ($addsuffix && ($fname=~/^[^\.]+$/)) {$fname.='.tex';}
- if ($includeTeX) {push @filelist,$tex->{'filepath'}.$fname;}
+ if ($addsuffix==2) {$fname.='.tex';}
+ elsif ($addsuffix==1 && ($fname=~/^[^\.]+$/)) {$fname.='.tex';}
+ #if ($includeTeX) {push @filelist,$tex->{'filepath'}.$fname;}
+ if ($includeTeX) {push @filelist,$workdir.$fname;}
} else {
print_style($&,'ignored');
}
@@ -710,7 +764,264 @@ sub new_status {
return $substat;
}
-### HTML context
+sub next_token {
+ my $tex=shift @_;
+ my ($next,$type);
+ if (defined $tex->{'next'}) {print_style($tex->{'next'}.' ',$tex->{'style'});}
+ $tex->{'style'}=undef;
+ while (defined ($next=get_next_token($tex))) {
+ $type=$tex->{'type'};
+ if ($type==0) {
+ print_style($next,'comment');
+ } elsif ($type==9) {
+ if ($verbose) {line_return(1,$tex);}
+ } else {
+ return $next;
+ }
+ }
+ return $next;
+}
+
+
+sub get_next_token {
+ # Token (or token group) category:
+ # 0: comment
+ # 1: word (or other forms of text or text components)
+ # 2: symbol (not word, e.g. punctuation)
+ # 3: macro
+ # 4: curly braces {}
+ # 5: brackets []
+ # 6: maths
+ # 9: line break in file
+ # 999: end of line or blank line
+ # 666: TeXcount instruction (%TC:instruction)
+ my $tex=shift @_;
+ my $next;
+ (defined ($next=get_token($tex,'\%+TC:[^\n]*',666))) && return $next;
+ (defined ($next=get_token($tex,'\%[^\n]*',0))) && return $next;
+ (defined ($next=get_token($tex,'\n',9))) && return $next;
+ (defined ($next=get_token($tex,'\\\\[\{\}]',2))) && return $next;
+ foreach my $pattern (@WordPatterns) {
+ (defined ($next=get_token($tex,$pattern,1))) && return $next;
+ }
+ (defined ($next=get_token($tex,'[\"\'\`:\.,\(\)\[\]!\+\-\*=/\^\_\@\<\>\~\#\&]',2))) && return $next;
+ (defined ($next=get_token($tex,'\\\\([a-zA-Z_]+|[^a-zA-Z_])',3))) && return $next;
+ (defined ($next=get_token($tex,'[\{\}]',4))) && return $next;
+ (defined ($next=get_token($tex,'[\[\]]',5))) && return $next;
+ (defined ($next=get_token($tex,'\$\$',6))) && return $next;
+ (defined ($next=get_token($tex,'\$',6))) && return $next;
+ (defined ($next=get_token($tex,'.',999))) && return $next;
+ (defined ($next=get_token($tex,'[^\s]+',999))) && return $next;
+ $tex->{'eof'}=1;
+ return undef;
+}
+
+sub get_token {
+ my ($tex,$regexp,$type)=@_;
+ if (!defined $regexp) {print_error("ERROR in get_token: undefined regex.");}
+ if (!defined $tex->{'line'}) {print_error("ERROR in get_token: undefined tex-line. ".$tex->{'next'});}
+ if ( $tex->{'line'} =~ s/^($regexp)[ \t\r\f]*// ) {
+ $tex->{'next'}=$1;
+ $tex->{'type'}=$type;
+ return $1;
+ }
+ return undef;
+}
+
+###### Count handling routines
+
+sub new_count {
+ my ($title)=@_;
+ my @cnt=(0,0,0,0,0,0,0,0);
+ my %count=('count'=>\@cnt,'title'=>$title);
+ # files, text words, header words, float words,
+ # headers, floats, math-inline, math-display;
+ return \%count;
+}
+
+sub inc_count {
+ my ($tex,$type,$value)=@_;
+ my $count=$tex->{'count'};
+ if (!defined $value) {$value=1;}
+ ${$count->{'count'}}[$type]+=$value;
+}
+
+sub get_count {
+ my ($count,$type)=@_;
+ return ${$count->{'count'}}[$type];
+}
+
+sub total_count {
+ my ($count)=@_;
+ my $sum=0;
+ for (my $i=scalar(@sumweights);$i-->0;) {
+ $sum+=get_count($count,$i+1)*$sumweights[$i];
+ }
+ return $sum;
+}
+
+sub print_count {
+ my ($count,$header)=@_;
+ if ($briefsum && @sumweights) {
+ print_count_total($count,$header);
+ } elsif ($briefsum) {
+ if ($htmlstyle) {print "<p class='briefcount'>";}
+ print_count_brief($count,$header);
+ if ($htmlstyle) {print "</p>\n";}
+ } else {
+ print_count_details($count,$header);
+ }
+}
+
+sub print_count_with_header {
+ my ($count,$header)=@_;
+ if (!defined $header) {$header=$count->{'title'};}
+ if (!defined $header) {$header="";}
+ return $count,$header;
+}
+
+sub print_count_total {
+ my ($count,$header)=print_count_with_header(@_);
+ if ($htmlstyle) {print "<p class='count'>".$header;}
+ print total_count($count);
+ if ($htmlstyle) {print "</p>\n";}
+ else {print ": ".$header;}
+}
+
+sub print_count_brief {
+ my ($count,$header)=print_count_with_header(@_);
+ my $cnt=$count->{'count'};
+ print ${$cnt}[1]."+".${$cnt}[2]."+".${$cnt}[3].
+ " (".${$cnt}[4]."/".${$cnt}[5]."/".${$cnt}[6]."/".${$cnt}[7].") ".
+ $header;
+}
+
+sub print_count_details {
+ my ($count,$header)=print_count_with_header(@_);
+ if ($htmlstyle) {print "<dl class='count'>\n";}
+ if (defined $header) {
+ formatprint($header."\n",'dt','header');
+ }
+ if (get_count($count,0)>1) {
+ formatprint($countlabel[0].': ','dt');
+ formatprint(get_count($count,0)."\n",'dd');
+ }
+ if (@sumweights) {
+ formatprint('Sum count: ','dt');
+ formatprint(total_count($count)."\n",'dd');
+ }
+ for (my $i=1;$i<8;$i++) {
+ formatprint($countlabel[$i].': ','dt');
+ formatprint(get_count($count,$i)."\n",'dd');
+ }
+ my $subcounts=$count->{'subcounts'};
+ if ($showsubcounts && defined $subcounts && scalar(@{$subcounts})>1) {
+ formatprint("Subcounts: text+headers+captions (#headers/#floats/#inlines/#displayed)\n",'dt');
+ foreach my $subcount (@{$subcounts}) {
+ if ($htmlstyle) {print "<dd class='briefcount'>";}
+ print_count_brief($subcount);
+ if ($htmlstyle) {print "</dd>";}
+ print "\n";
+ }
+ }
+ if ($htmlstyle) {print "</dl>\n";}
+}
+
+sub add_count {
+ my ($a,$b)=@_;
+ for (my $i=0;$i<8;$i++) {
+ ${$a->{'count'}}[$i]+=${$b->{'count'}}[$i];
+ }
+}
+
+sub add_subcount {
+ my ($tex,$title)=@_;
+ add_count($tex->{'countsum'},$tex->{'count'});
+ push @{$tex->{'countlist'}},$tex->{'count'};
+ $tex->{'count'}=new_count($title);
+ return $tex->{'countsum'};
+}
+
+###### Printing routines
+
+sub set_style {
+ my ($tex,$style)=@_;
+ if (!(($tex->{'style'}) && ($tex->{'style'} eq '-'))) {$tex->{'style'}=$style;}
+}
+
+sub flush_style {
+ my ($tex,$style)=@_;
+ set_style($tex,$style);
+ flush_next($tex);
+}
+
+sub line_return {
+ my ($blank,$tex)=@_;
+ if ($blank>$blankline) {
+ if ((defined $tex) && @sumweights) {
+ my $num=total_count($tex->{'count'});
+ print_style(" [".$num."]","sumcount");
+ }
+ linebreak();
+ $blankline++;
+ }
+}
+
+sub linebreak {
+ if ($htmlstyle) {print "<br>\n";} else {print "\n";}
+}
+
+sub print_style {
+ my ($text,$style,$state)=@_;
+ (($verbose>=0) && (defined $text) && (defined $style)) || return 0;
+ my $colour;
+ ($colour=$STYLE{$style}) || return;
+ if (($colour) && !($colour eq '-')) {
+ if ($htmlstyle) {
+ print "<span class='".$style."'>".$text."</span>";
+ } else {
+ print Term::ANSIColor::colored($text,$colour);
+ }
+ if ($state) {
+ print_style($state,'state');
+ }
+ $blankline=-1;
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub print_error {
+ my $text=shift @_;
+ line_return(1);
+ print_style("### ".$text." ###",'error');
+ line_return(1);
+}
+
+sub formatprint {
+ my ($text,$tag,$class)=@_;
+ my $break=($text=~s/\n$//);
+ if ($htmlstyle && defined $tag) {
+ print '<'.$tag;
+ if ($class) {print " class='".$class."'";}
+ print '>'.$text.'</'.$tag.'>';
+ } else {
+ print $text;
+ }
+ if ($break) {print "\n";}
+}
+
+sub flush_next {
+ my $tex=shift @_;
+ if (defined $tex->{'next'}) {
+ print_style($tex->{'next'}.' ',$tex->{'style'},$tex->{'printstate'});
+ }
+ $tex->{'printstate'}=undef;
+ $tex->{'style'}='-';
+}
+
+###### HTML routines
sub html_head {
print '
@@ -718,13 +1029,11 @@ sub html_head {
<head>
<style>
<!--
-body {width:100%;padding:5;margin:5 10 5 5;}
+body {width:auto;padding:5;margin:5;}
.error {font-weight:bold;color:#f00;font-style:italic;}
-.parse {font-size: 80%; background: #eef;}
.word1,.word2,.word3 {color: #009;}
.word2 {font-weight: 700;}
.word3 {font-style: italic;}
-.word-1 {color: #66c;}
.command {color: #c00;}
.option {color: #cc0;}
.grouping, .document {color: #900; font-weight:bold;}
@@ -735,14 +1044,19 @@ body {width:100%;padding:5;margin:5 10 5 5;}
.tc {color: #999; font-weight:bold;}
.comment {color: #999; font-style: italic;}
.state {color: #990; font-size: 70%;}
+.sumcount {color: #999; font-size: 80%;}
.fileinclude {color: #696; font-weight:bold;}
dl.count {background: #cfc; color: 009;}
-dl.count dt.header {font-weight: 700; font-style: italic; float: none;}
-dl.count dt {clear: both; float: left;}
-dl.count dd {font-weight: 700;}
+dl.count dt.header {font-weight: bold; font-style: italic; float: none;}
+dl.count dt {clear: both; float: left; margin-right: .5em;}
+dl.count dd {font-weight: bold;}
+dl.count dd.briefcount {font-weight: 700; clear: both; font-size:80%; font-weight:normal; margin-left:8pt;}
.warning {color: #c00; font-weight: 700;}
-.parse, .count {border: solid 1px #999; margin: 0pt; padding: 4pt;}
+.parse, .count, .stylehelp, .filegroup {border: solid 1px #999; margin: 0pt; padding: 4pt;}
+.parse {font-size: 80%; background: #eef;}
.parse {border-bottom:none;}
+.stylehelp {font-size: 80%; background: #ffc; margin-bottom: 8pt;}
+.filegroup {background: #efe; margin-bottom: 8pt;}
-->
</style>
</head>
@@ -755,8 +1069,7 @@ sub html_tail {
print '</body></html>';
}
-
-### HELP AND INFO
+###### Help routines
sub print_version {
print "TeXcount version ".$versionnumber.", ".$versiondate.'.';
@@ -767,18 +1080,43 @@ sub print_syntax {
Syntax: TeXcount.pl [options] files
Options:
+ -relaxed Uses relaxed rules for word and option handling:
+ i.e. allows more general cases to be counted as
+ either words or macros.
-v Verbose (same as -v3)
-v0 Do not present parsing details
-v1 Verbose: print parsed words, mark formulae
-v2 More verbose: also print ignored text
-v3 Even more verbose: include comments and options
+ -v4 Same as -v3 -showstate
-showstate Show internal states (with verbose)
-brief Only prints a brief, one line summary of counts
+ -sum, -sum= Make sum of all word and equation counts. May also
+ use -sum=#[,#] with up to 7 numbers to indicate how
+ each of the counts (text words, header words, caption
+ words, #headers, #floats, #inlined formulae,
+ #displayed formulae) are summed. The default sum (if
+ only -sum is used) is the same as -sum=1,1,1,0,0,1,1.
+ -sub, -sub= Generate subcounts. Option values are none, part,
+ chapter, section or subsection. Default (-sub) is set
+ to subsection, whereas unset is none. (Alternative
+ option name is -subcount.)
-nc, -nocol No colours (colours require ANSI)
- -inc Include tex files included in the document
- -noinc Do not include included tex files (default)
-html Output in HTML format
-htmlcore Only HTML body contents
+ -inc Include tex files included in the document
+ -noinc Do not include included tex files (default)
+ -total Do not give sums per file, only total sum.
+ -1 Same as -brief and -total. Ensures there is only one
+ line of output. If used in conjunction with -sum, the
+ output will only be the total number. (NB: Character
+ is the number one, not the letter L.)
+ -dir, -dir= Specify the working directory using -dir=path.
+ Remember that the path must end with \ or /. If only
+ -dir is used, the directory of the parent file is used.
+ -codes Display output style code overview and explanation.
+ This is on by default.
+ -nocodes Do not display output style code overview.
-h, -?, --help, /? Help
--version Print version number
--license License information
@@ -821,6 +1159,37 @@ ensure that words in the text has been interpreted as such,
whereas mathematical formulae and text/non-text in begin-end
groups have been correctly interpreted.
+Parsing instructions may be passed to TeXcount using comments
+in the LaTeX files on the format
+ %TC:instruction arguments
+where valid instructions for setting parsing rules, typically
+set at the start of the document (applies globally), are:
+ %TC:macro [macro] [param.states]
+ macro handling rule, no. of and rules for parameters
+ %TC:macroword [macro] [number]
+ macro counted as a given number of words
+ %TC:header [macro] [param.states]
+ header macro rule, as macro but counts as one header
+ %TC:breakmacro [macro] [label]
+ macro causing subcount break point
+ %TC:group [name] [parsing-state]
+ begin-end-group handling rule
+ %TC:floatinclude [macro] [param.states]
+ as macro, but also counted inside floats
+ %TC:preambleinclude [macro] [param.states]
+ as macro, but also counted inside the preamble
+ %TC:fileinclue [macro] [rule]
+ file include, add .tex if rule=2, not if rule=0
+The [param.states] is used to indicate the number of parameters
+used by the macro and the rules of handling each of these: format
+is [#,#,...,#] with one number for each parameter, and main rules
+are 0 to ignore and 1 to count as text. Parsing instructions
+which may be used anywhere are:
+ %TC:ignore start block to ignore
+ %TC:endignore end block to ignore
+ %TC:break [title] add subcount break point here
+See the documentation for more details.
+
Unix hint: Use \'less -r\' instead of just \'less\' to view output:
the \'-r\' option makes less treat text formating codes properly.
@@ -830,6 +1199,7 @@ options or the output will be riddled with colour codes. Instead,
you can use -html to produce HTML code, write this to file and
view with your favourite browser.
';
+ print_help_style();
print_reference();
}
@@ -864,3 +1234,53 @@ The script has LPPL status "maintained" with Einar Andreas
Rødland being the current maintainer.
';
}
+
+sub print_help_style {
+ if ($verbose<=0) {return;}
+ formatprint("Format/colour codes of verbose output:","h2");
+ print "\n\n";
+ if ($htmlstyle) {print "<p class='stylehelp'>";}
+ help_style_line('Text which is counted',"word1","counted as text words");
+ help_style_line('Header and title text',"word2","counted as header words");
+ help_style_line('Caption text and footnotes',"word3","counted as caption words");
+ help_style_line("Ignored text or code","ignore","excluded or ignored");
+ help_style_line('\documentclass',"document","document start, beginning of preamble");
+ help_style_line('\macro',"command","macro not counted, but parameters may be");
+ help_style_line("[Macro options]","option","not counted");
+ help_style_line('\begin{group} \end{group}',"grouping","begin/end group");
+ help_style_line('\begin{group} \end{group}',"exclgroup","begin/end group in excluded region");
+ help_style_line('$ $',"mathgroup","counted as one equation");
+ help_style_line('$ $',"exclmath","equation in excluded region");
+ help_style_line('% Comments',"comment","not counted");
+ help_style_line('%TC:TeXcount instructions',"tc","not counted");
+ help_style_line("File to include","fileinclude","not counted but file may be counted later");
+ if ($showstates) {
+ help_style_line('[state]',"state","internal TeXcount state");
+ }
+ if (@sumweights) {
+ help_style_line('[sumcount]',"sumcount","cumulative sum count");
+ }
+ help_style_line("ERROR","error","TeXcount error message");
+ if ($htmlstyle) {print "</p>";}
+ print "\n\n";
+}
+
+sub help_style_line {
+ my ($text,$style,$comment)=@_;
+ if ($htmlstyle) {
+ $comment="&nbsp;&nbsp;....&nbsp;&nbsp;".$comment;
+ } else {
+ $comment=" .... ".$comment;
+ }
+ if (print_style($text,$style)) {
+ print $comment;
+ linebreak();
+ }
+}
+
+# Print output style codes if conditions are met
+sub conditional_print_help_style {
+ if ($showcodes) {print_help_style();}
+ return $showcodes;
+}
+
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index f93e6920085..c24e495bea7 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -209,7 +209,8 @@ my @WorkingTLP = qw(
t-angles t2 Tabbing tableaux tablists tablor tabulary tabvar talk
tamethebeast tdsfrmath
ted templates-fenn templates-sommer tengwarscript
- tensor termlist teubner tex-ewd tex-gyre texilikecover texmate
+ tensor termlist teubner tex-ewd tex-gyre texcount
+ texilikecover texmate
texpower texshade
textcase textfit textopo textpath textpos
theoremref thesis-titlepage-fhac