#!/opt/bin/perl # this file is licensed under the General Public License (GPL) version 3 sub STRACE (){ 0 } sub PRCPU (){ 0 } sub PRIPS (){ 0 } use common::sense; no utf8; # activestate perl use Time::HiRes; use POSIX (); use Cwd (); use Fcntl (); use List::Util (); pack "Q", 5; # make sure it's a 64 bit perl ############################################################################# # system state use integer; # minor speed improvement, major correctness improvement for div/divu sub ADDR_SHIFT(){ 16 } sub ADDR_MASK (){ 0x3fff } sub STACK (){ 0xf00f0000 } sub MINBRK (){ 0x10000000 } sub M32 (){ 0xffffffff } sub B31 (){ 0x80000000 } sub M16 (){ 0xffff } sub B15 (){ 0x8000 } sub M8 (){ 0xff } sub B7 (){ 0x80 } my @mem; # [16bits][14bits] = 32bits sub xxd($) { open my $fh, "| xxd" or die; print $fh $_[0]; } sub memset($$) { for (0 .. (length $_[1]) - 1) { my $i = $_[0] + $_; my $c = unpack "C", substr $_[1], $_, 1; my $s = (~$i & 3) << 3; $i = \$mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; $$i = $$i & ~(0xff << $s) | ($c << $s); } } sub memget($$) { my $r; for my $i ($_[0] .. $_[0] + $_[1] - 1) { my $s = (~$i & 3) << 3; $r .= pack "C", (($mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK] >> $s) & 0xff); } $r } sub memstr($) { my $r; for (my $i = $_[0]; ; ++$i) { my $s = (~$i & 3) << 3; $r .= pack "C", (($mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK] >> $s) & 0xff) || last; } $r } sub mem_reset() { @mem = (); } ############################################ my ($pc, $hi, $lo, $delay); # cpu state my ( $r0 , $r1 , $r2 , $r3 , $r4 , $r5 , $r6 , $r7 , $r8 , $r9 , $r10, $r11, $r12, $r13, $r14, $r15, $r16, $r17, $r18, $r19, $r20, $r21, $r22, $r23, $r24, $r25, $r26, $r27, $r28, $r29, $r30, $r31, ); my $insn; my %insn2src; # insn to perl source my %insn2sub; # insn to compiled perl sub my %sub2insn; # sub+0 to insn code { our ($hint_bits, $warning_bits, %hint_hash); BEGIN { ($hint_bits, $warning_bits, %hint_hash) = ($^H, ${^WARNING_BITS}, %^H); } sub deparse { require B::Deparse; my $deparser = new B::Deparse; $deparser->ambient_pragmas ( hint_bits => $hint_bits, warning_bits => $warning_bits, '$[' => $[+0, integer => 1, '%^H' => \%hint_hash, ); $deparser->coderef2text ($_[0]) } } sub cpu_pr { printf " 0 %8x=zr %8x=at %8x=v0 %8x=v1 %8x=a0 %8x=a1 %8x=a2 %8x=a3\n", $r0 , $r1 , $r2 , $r3 , $r4 , $r5 , $r6 , $r7; printf " 8 %8x=t0 %8x=t1 %8x=t2 %8x=t3 %8x=t4 %8x=t5 %8x=t6 %8x=t7\n", $r8 , $r9 , $r10, $r11, $r12, $r13, $r14, $r15; printf "16 %8x=s0 %8x=s1 %8x=s2 %8x=s3 %8x=s4 %8x=s4 %8x=s6 %8x=s6\n", $r16, $r17, $r18, $r19, $r20, $r21, $r22, $r23; printf "24 %8x=t8 %8x=t9 %8x=k0 %8x=k1 %8x=gp %8x=sp %8x=fp %8x=ra\n", $r24, $r25, $r26, $r27, $r28, $r29, $r30, $r31; my $code = $sub2insn{$insn+0}; my $src = $insn2src{$code} ||= deparse $insn; $src =~ s/\s+/ /g; printf "%x: %08x (%s)\n", $pc * 4, $code, $src; } ############################################ # syscalls # mips abi sub ENOENT (){ 2 } sub EBADF (){ 9 } sub ENOMEM (){ 12 } sub ENOTTY (){ 25 } sub ERANGE (){ 34 } sub EAGAIN (){ 35 } sub ENOSYS (){ 89 } sub O_ACCMODE (){ 0003 } sub O_RDONLY (){ 00 } sub O_WRONLY (){ 01 } sub O_RDWR (){ 02 } sub O_APPEND (){ 0x0008 } sub O_SYNC (){ 0x0010 } sub O_NONBLOCK (){ 0x0080 } sub O_CREAT (){ 0x0100 } # not fcntl sub O_TRUNC (){ 0x0200 } # not fcntl sub O_EXCL (){ 0x0400 } # not fcntl sub O_NOCTTY (){ 0x0800 } # not fcntl sub O_ASYNC (){ 0x1000 } sub O_NOFOLLOW (){ 0x20000 } sub O_DIRECT (){ 0x8000 } sub O_DIRECTORY (){ 0x10000 } sub O_NOATIME (){ 0x40000 } sub errno2mips() { $!*1 # wrong, wrong, wrong } sub mips2omode($) { my $mmode = shift; my $omode = 0; $omode |= Fcntl::O_RDONLY if ($mmode & O_ACCMODE) == O_RDONLY; $omode |= Fcntl::O_WRONLY if ($mmode & O_ACCMODE) == O_WRONLY; $omode |= Fcntl::O_RDWR if ($mmode & O_ACCMODE) == O_RDWR; for my $mode (qw( APPEND SYNC NONBLOCK CREAT TRUNC EXCL NOCTTY ASYNC NOFOLLOW DIRECT DIRECTORY NOATIME )) { eval "\$omode |= Fcntl::O_$mode if \$mmode & O_$mode"; } $omode } my $enosys = sub { warn "unimplemented syscall $r2\n"; die; }; my @syscall = ($enosys) x 7000; ############################################ my @fh; my @dh; # directory-handles, HACK my $strace; for my $fd (3..9) { open my $fh, "+<&=", $fd or next; $fh[$fd] = $fh; } for my $fd (0..2) { open my $fh, "+<&", $fd or next; $fh[$fd] = $fh; } sub fd_valid($) { !($_[0] & ~65535) && $fh[$_[0]] } ############################################ sub strace($;@) { $strace = $#_ ? sprintf $_[0], @_[1..$#_] : shift; } sub newfd($) { my $fd; ++$fd while $fh[$fd]; $fh[$fd] = $_[0]; $fd } sub reify_fds { my $top = 512; for my $fd (0..$#fh) { next unless $fh[$fd]; POSIX::dup2 fileno $fh[$fd], $top + $fd; close $fh[$fd]; } for my $fd (0..$#fh) { next unless $fh[$fd]; POSIX::dup2 $top + $fd, $fd; POSIX::close $top + $fd; open my $fh, "+<&=", $fd or die; $fh[$fd] = $fh; } } ############################################ sub newstat { my $buf = shift; if (@_) { my $stat = pack "N x12 NNNNN x8 N x4 NN NN NN N N x56", $_[ 0], # dev $_[ 1], # ino $_[ 2], # mode $_[ 3], # nlink $_[ 4], # uid $_[ 5], # gid $_[ 6], # rdev $_[ 7], # size $_[ 8], 0, # atime $_[ 9], 0, # mtime $_[10], 0, # ctime $_[11], # blksize $_[12]; # blocks memset $buf, $stat; return 0; } -errno2mips }; sub stat64 { my $buf = shift; if (@_) { my $stat = pack "N x12 NN NNNNN x12 NN NN NN NN N x4 NN", $_[ 0], # dev $_[ 1] >> 32, $_[1], # ino $_[ 2], # mode $_[ 3], # nlink $_[ 4], # uid $_[ 5], # gid $_[ 6], # rdev $_[ 7] >> 32, $_[7], # size $_[ 8], 0, # atime $_[ 9], 0, # mtime $_[10], 0, # ctime $_[11], # blksize $_[12] >> 32, $_[12]; # blocks memset $buf, $stat; return 0; } -errno2mips }; sub sys_fcntl { my ($fd, $cmd, $arg) = @_; strace "fcntl (%d, %x, %x)", $fd, $cmd, $arg; fd_valid $fd or return -EBADF; if ($cmd == 0) { # F_DUPFD ++$arg while $fh[$arg]; open my $fh, "+<&", fileno $fh[$fd] or return -errno2mips; $fh[$arg] = $fh; return $arg; } elsif ($cmd == 1) { # F_GETFD return fcntl $fh[$fd], Fcntl::F_GETFD, 0; } elsif ($cmd == 2) { # F_SETFD return +(fcntl $fh[$fd], Fcntl::F_SETFD, $arg+0) ? 0 : -errno2mips; } elsif ($cmd == 3) { # F_GETFL return O_RDWR; # HACK } else { # 4 F_SETFL warn sprintf"unknown fcntl %d,%x,%x\n", $fd, $cmd, $arg; } -ENOSYS }; ############################################ $syscall[4001] = sub { # exit strace "exit ($_[0])"; exit $_[0]; }; $syscall[4002] = sub { # fork strace "fork"; my $pid = fork; return -errno2mips unless defined $pid; $pid }; $syscall[4003] = sub { # read my ($fd, $rbuf, $count) = @_; strace "read (%d, %x, %d)", $fd, $rbuf, $count; $count = sysread $fh[$fd], my $buf, $count; memset $rbuf, $buf; defined $count ? $count : -errno2mips }; $syscall[4004] = sub { # write my ($fd, $buf, $count) = @_; strace "write (%d, %x, %d)", $fd, $buf, $count; $count = syswrite $fh[$fd], memget $buf, $count; defined $count ? $count : -errno2mips }; $syscall[4005] = sub { # open my ($path, $flags, $mode) = @_; $path = memstr $path; strace "open (%s, %x, %o)", $path, $flags, $mode; if (opendir my $dh, $path) {#d# open my $fh, "[0]) = ($argv->[0], $path); reify_fds; exec {$path} @$argv; # not normally printed... strace "execve (%s, [%s], [%s])", $path, (join "|", @$argv), (join "|", @$envv); -errno2mips }; $syscall[4012] = sub { # chdir my $path = memstr $_[0]; strace "chdir (%s)", $path; (chdir $path) ? 0 : -errno2mips }; $syscall[4013] = sub { # time my ($rbuf) = @_; strace "time (%x)", $rbuf; my $time = time; memset $rbuf, pack "N", $time; $time }; $syscall[4020] = sub { strace "getpid ()"; $$ }; $syscall[4024] = sub { strace "getuid ()"; $< }; $syscall[4033] = sub { # access my ($path, $mode) = @_; $path = memstr $path; strace "acess (%s, %o)", $path, $mode; 0 }; $syscall[4037] = sub { # kill strace "kill ($_[0], $_[1])"; (kill $_[1], $_[0]) # todo signal numbers? ? 0 : -errno2mips }; $syscall[4041] = sub { # dup my ($fd) = @_; strace "dup ($fd)"; fd_valid $fd or return -EBADF; open my $fh, "+<&", fileno $fh[$fd] or return -errno2mips; newfd $fh }; $syscall[4042] = sub { # sysm_pipe strace "sysm_pipe ()"; pipe my $r, my $w or return -errno2mips; $r = newfd $r; $w = newfd $w; strace "sysm_pipe ($r, $w)"; $r3 = $w; $r }; $syscall[4045] = sub { # brk strace "brk (%x)", $_[0]; my $brk = $_[0]; $brk = MINBRK if $brk < MINBRK; $brk }; # brk $syscall[4047] = sub { strace "getgid ()" ; $( }; $syscall[4049] = sub { strace "geteuid ()"; $> }; $syscall[4050] = sub { strace "getegid ()"; $) }; $syscall[4054] = sub { # ioctl my ($fd, $req, $arg) = @_; strace "ioctl (%d, %x, %x)", $fd, $req, $arg; fd_valid $fd or return -EBADF; if ($req == 0x540d) { # TCGETS if (-t $fh[$fd]) { memset $arg, pack "NNNN C C23"; return 0; } } elsif ($req == 0x540f) { # TCSETW return 0; } elsif ($req == 0x40047477) { # TIOCGPGRP # irix??? memset $arg, pack "N", getpgrp; # hacky, but does... return 0; } elsif ($req == 0x80047476) { # TIOCSPGRP # irix??? return 0; # whatever you say... } elsif ($req == 0x40087468) { # TIOCGWINSZ return -ENOSYS; } else { warn sprintf"unknown ioctl %d,%x,%x\n", $fd, $req, $arg; } -ENOTTY }; $syscall[4055] = \&sys_fcntl; # fcntl $syscall[4057] = sub { # getpgid strace "getpgid ($_[0])"; $_[0] == $$ ? getpgrp : $$ # hacky, but it's a bsd'ism }; $syscall[4060] = sub { strace "umask (%o)", $_[0]; umask $_[0] }; $syscall[4063] = sub { # dup2 my ($fd1, $fd2) = @_; strace "dup2 ($fd1, $fd2)"; fd_valid $fd1 or return -EBADF; open my $fh, "+<&", fileno $fh[$fd1] or return -errno2mips; $dh[$fd2] = $dh[$fd1]; $fh[$fd2] = $fh; $fd2 }; $syscall[4064] = sub { strace "getppid ()"; getppid }; $syscall[4065] = sub { strace "getpgrp ()"; getpgrp }; $syscall[4075] = sub { # setrlimit my ($resource, $rlim) = @_; strace "setrlimit (%d, %x)", $resource, $rlim; 0 }; $syscall[4076] = sub { # getrlimit my ($resource, $rlim) = @_; strace "getrlimit (%d, %x)", $resource, $rlim; -ENOSYS }; $syscall[4078] = sub { # gettimeofday my ($tv, $tz) = @_; strace "gettimeofday (%x, %x)", $tv, $tz; my ($s, $m) = Time::HiRes::gettimeofday; memset $tv, pack "NN", $s, $m if $tv; memset $tz, pack "NN", 0, 0 if $tz; # minuteswest, dsttime 0 }; #$syscall[4080] = sub { # getgroups $syscall[4090] = sub { # SYSCALL_DEFINE6(mips_mmap, unsigned long, addr, unsigned long, len, # unsigned long, prot, unsigned long, flags, unsigned long, # fd, off_t, offset) strace "mips_mmap (%x, %d, %x, %x, %d, %d)", @_; -ENOSYS }; $syscall[4097] = sub { # setpriority # ... -ENOSYS }; $syscall[4099] = sub { # statfs my ($path, $buf) = @_; $path = memstr $path; strace "statfs (%s, %x)", $path, $buf; -ENOSYS }; $syscall[4100] = sub { # fstatfs my ($fd, $buf) = @_; strace "fstatfs (%d, %x)", $fd, $buf; -ENOSYS }; $syscall[4106] = sub { # newstat my ($path, $buf) = @_; $path = memstr $path; strace "newstat (%s, %x)", $path, $buf; newstat $buf, stat $path }; $syscall[4107] = sub { # newlstat my ($path, $buf) = @_; $path = memstr $path; strace "newlstat (%s, %x)", $path, $buf; newstat $buf, lstat $path }; $syscall[4108] = sub { # newfstat my ($fd, $buf) = @_; strace "newfstat (%d, %x)", $fd, $buf; newstat $buf, stat $fh[$fd] }; $syscall[4114] = sub { # wait4 my ($pid, $statusbuf, $options, $rusage) = @_; $pid = unpack "l", pack "L", $pid; strace "wait4 (%d, %x, %x, %x)", $pid, $statusbuf, $options, $rusage; memset $rusage, "\x00" x 72 if $rusage; $pid = waitpid $pid, $options; memset $statusbuf, pack "N", $? if $statusbuf; $pid >= 0 ? $pid : -errno2mips }; $syscall[4122] = sub { # newuname my ($buf) = @_; strace "newuname (%x)", $buf; memset $buf, pack "a65 a65 a65 a65 a65 a65", #d# "sysname", "nodename", "release", "version", "machine", "domainname"; 0 }; $syscall[4140] = sub { # llseek my ($fd, $high, $low, $result, $whence) = @_; strace "llseek (%d, %x, %08x, %x, %d)", $fd, $high, $low, $result, $whence; my $res = sysseek $fh[$fd], ($high << 32) | $low, $whence; memset $result, pack "NN", ($res >> 32), $res; defined $res ? 0 : -errno2mips }; $syscall[4194] = sub { # sigaction my ($signum, $act, $oldact) = @_; strace "sigaction (%d, %x, %x)", $signum, $act, $oldact; -ENOSYS }; $syscall[4195] = sub { # sigprocmask my ($how, $set, $oldset) = @_; strace "sigprocmask ($how, $set, $oldset)"; -ENOSYS }; $syscall[4203] = sub { # getcwd my $cwd = Cwd::getcwd; strace "getcwd (%x, %d)", $_[0], $_[1]; if ((length $cwd) < $_[1]) { memset $_[0], "$cwd\x00"; return 1 + length $cwd; } else { return -ERANGE; } }; $syscall[4213] = sub { # stat64 my ($path, $buf) = @_; $path = memstr $path; strace "stat64 (%s, %x)", $path, $buf; stat64 $buf, stat $path }; $syscall[4214] = sub { # lstat64 my ($path, $buf) = @_; $path = memstr $path; strace "lstat64 (%s, %x)", $path, $buf; stat64 $buf, lstat $path }; $syscall[4215] = sub { # fstat64 my ($fd, $buf) = @_; strace "fstat64 (%d, %x)", $fd, $buf; stat64 $buf, stat $fh[$fd] }; $syscall[4219] = sub { # getdents64 my ($fd, $dirp, $count) = @_; strace "getdents64 (%d, %x, %d)", $fd, $dirp, $count; my $name = readdir $dh[$fd]; return 0 unless defined $name; my $ino = -1; my $type = 0; my $entry = pack "NN NN n C Z*", $ino >> 32, $ino, 0, 0, # offset (length $name) + 20, $type, $name; memset $dirp, $entry; length $entry }; $syscall[4220] = \&sys_fcntl; # fcntl64 $syscall[4283] = sub { # set_thread_area my ($udesc) = @_; strace "set_thread_area (%x)", $udesc; -ENOSYS }; $syscall[4300] = sub { # faccessat my ($dirfd, $path, $mode, $flags) = @_; strace "faccessat (%d, %s, %o, %x)", $dirfd, $path, $mode, $flags; 0 # #d# grant any access }; sub sys { my @args = map $_*1, $r4, $r5, $r6, $r7, # first four args in regs # extra arguments on stack $mem[($r29 + 16) >> ADDR_SHIFT][(($r29 + 16) >> 2) & ADDR_MASK], $mem[($r29 + 20) >> ADDR_SHIFT][(($r29 + 20) >> 2) & ADDR_MASK], $mem[($r29 + 24) >> ADDR_SHIFT][(($r29 + 24) >> 2) & ADDR_MASK], $mem[($r29 + 28) >> ADDR_SHIFT][(($r29 + 28) >> 2) & ADDR_MASK], ; $strace = "$r2 (@args)"; my $retval = $syscall[$r2](@args); print STDERR "$$ SYS_$strace = $retval\n" if STRACE; if ($retval > -4096 && $retval < 0) { $r2 = -$retval; $r7 = 1; } else { $r2 = $retval; $r7 = 0; } } ############################################################################# # mips i big endian cpu emulator ############################################ # specials (opcode 0) my ($s, $t, $i); # "global" for speed my @special = ('die "special ", $insn & 63, " not supported"') x 64; $special[ 0] = "RD = (RT << SA ) & M32"; # sll $special[ 2] = 'RD = RT >> SA '; # srl $special[ 3] = 'RD = ((RT - ((RT & B31) << 1)) >> SA ) & M32'; # sra $special[ 4] = 'RD = (RT << (RS & 31)) & M32'; # sllv $special[ 6] = 'RD = RT >> (RS & 31) '; # srlv $special[ 7] = 'RD = ((RT - ((RT & B31) << 1)) >> (RS & 31)) & M32'; # srav $special[ 8] = ' $pc = RS >> 2'; # jr $special[ 9] = 'RD = $pc << 2; $pc = RS >> 2'; # jalr $special[12] = "sys"; $special[13] = "die sprintf \"BREAK (%08x)\\\n\", $insn"; # break $special[16] = 'RD = $hi'; # mfhi $special[17] = '$hi = RS'; # mthi $special[18] = 'RD = $lo'; # mflo $special[19] = '$lo = RS'; # mtlo $special[24] = '# mult $lo = (RS - ((RS & B31) << 1)) * (RT - ((RT & B31) << 1)); $hi = ($lo >> 32) & M32; $lo &= M32; '; $special[25] = ' # multu $lo = RS * RT; $hi = $lo >> 32; $lo &= M32; '; $special[26] = ' # div $s = RS - ((RS & B31) << 1); $t = RT - ((RT & B31) << 1) or return; $lo = ($s / $t) & M32; $hi = ($s % $t) & M32; '; $special[27] = ' # divu RT or return; $lo = RS / RT; $hi = RS % RT; '; $special[32] = 'die "add instruction unsupported"'; $special[33] = "RD = (RS + RT) & M32"; # addu $special[34] = 'die "sub instruction unsupported"'; $special[35] = "RD = (RS - RT) & M32"; # subu #$special[32] = $special[33]; # add # buggy, does not trap #d# #$special[34] = $special[35]; # sub # buggy, does not trap #d# $special[36] = "RD = RS & RT "; # and $special[37] = "RD = RS | RT "; # or $special[38] = "RD = RS ^ RT "; # xor $special[39] = "RD = (RS ^ RT) ^ M32"; # nor $special[42] = "RD = (RS - ((RS & B31) << 1)) < (RT - ((RT & B31) << 1))"; # slt $special[43] = "RD = RS < RT "; # sltu ############################################ # regimm (opcode 1) my @regimm = ('die "regimm $insn not supported"') x 32; $regimm[ 0] = ' $pc += IMM - 1 if RS & 0x80000000'; # bltz $regimm[16] = '($r31 = $pc << 2), ($pc += IMM - 1) if RS & 0x80000000'; # bltzal $regimm[ 1] = ' $pc += IMM - 1 unless RS & 0x80000000'; # bgez $regimm[17] = '($r31 = $pc << 2), ($pc += IMM - 1) unless RS & 0x80000000'; # bgezal bal ############################################ # others my @opcode; $opcode[ 0] = sub { $special[$insn & 63] }; # special $opcode[ 1] = sub { $regimm[($insn >> 16) & 31] }; # regimm $opcode[ 2] = sub { ' $pc = ($pc & 0x3c000000) | (' . $insn . ' & 0x03ffffff)' }; # j $opcode[ 3] = sub { '$r31 = $pc << 2; $pc = ($pc & 0x3c000000) | (' . $insn . ' & 0x03ffffff)' }; # jal $opcode[ 4] = sub { '($pc += IMM - 1) if RS == RT' }; # beq beqz b $opcode[ 5] = sub { '($pc += IMM - 1) if RS != RT' }; # bne bnez $opcode[ 6] = sub { '($pc += IMM - 1) if !RS || RS >= 0x80000000' }; # blez $opcode[ 7] = sub { '($pc += IMM - 1) if RS && RS < 0x80000000' }; # bgtz $opcode[ 8] = sub { die "addi instruction unsupported" }; # addi $opcode[ 9] = sub { "RT = (RS + IMM) & M32" }; # addiu $opcode[10] = sub { 'RT = ((RS - ((RS & B31) << 1))) < IMM ' }; # slti $opcode[11] = sub { 'RT = RS < (IMM & M32)' }; # sltiu $opcode[12] = sub { 'RT = RS & IMMU' }; # andi $opcode[13] = sub { 'RT = RS | IMMU' }; # ori $opcode[14] = sub { 'RT = RS ^ IMMU' }; # xori $opcode[15] = sub { 'RT = IMMU << 16' }; # lui $opcode[32] = sub {' # lb $i = RS + IMM; $s = (~$i & 3) << 3; $s = $mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK] >> $s; RT = (($s & M8) - (($s & B7) << 1)) & M32; '}; $opcode[33] = sub {' # lh $i = RS + IMM; $s = (~$i & 2) << 3; $s = $mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK] >> $s; RT = (($s & M16) - (($s & B15) << 1)) & M32; '}; $opcode[34] = sub {' # lwl $i = RS + IMM; $s = ($i & 3) << 3; $i = $mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; RT = (RT & (M32 >> (32 - $s))) | ($i << $s & M32); '}; $opcode[35] = sub {' # lw $i = RS + IMM; RT = $mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; '}; $opcode[36] = sub {' # lbu $i = RS + IMM; $s = (~$i & 3) << 3; RT = ($mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK] >> $s) & M8; '}; $opcode[37] = sub {' # lhu $i = RS + IMM; $s = (~$i & 2) << 3; RT = ($mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK] >> $s) & M16; '}; $opcode[38] = sub {' # lwr $i = RS + IMM; $s = (($i & 3) + 1) << 3; $i = $mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; RT = (RT >> $s << $s) | ($i >> (32 - $s)); '}; $opcode[40] = sub {' # sb $i = RS + IMM; $s = (~$i & 3) << 3; $i = \$mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; $$i = ($$i & ~(M8 << $s)) | (RT & M8 ) << $s; '}; $opcode[41] = sub {' # sh $i = RS + IMM; $s = (~$i & 2) << 3; $i = \$mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; $$i = ($$i & ~(M16 << $s)) | (RT & M16) << $s; '}; $opcode[42] = sub {' # swl $i = RS + IMM; $s = ((~$i & 3) + 1) << 3; $i = \$mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; $$i = ($$i >> $s << $s) | (RT >> (32 - $s)); '}; $opcode[43] = sub {' # sw $i = RS + IMM; $mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK] = RT; '}; $opcode[46] = sub {' # swr $i = RS + IMM; $s = (($i & 3) + 1) << 3; $i = \$mem[$i >> ADDR_SHIFT][($i >> 2) & ADDR_MASK]; $$i = $$i & (M32 >> $s) | ((RT << (32 - $s)) & M32); '}; # 0x7c03e83b rdhwr $3, $29 ($29=tls)- emulated by kernel normally, for thread support my $NOP = sub { }; sub get_insn { $insn2sub{$_[0]} ||= do { my $old_insn = $insn;#d# $insn = $_[0]*1; my $src = &{ $opcode[$insn >> 26] }; $src =~ s/\bIMM\b/($insn & M16) - (($insn & B15) << 1)/ge; # 16 bit signed immediate $src =~ s/\bIMMU\b/$insn & M16/ge; # 16 bit unsigned immediate $src =~ s/\bSA\b/($insn >> 6) & 31/ge; # shift amount $src =~ s/\bRS\b/'$r' . (($insn >> 21) & 31)/ge; # s register $src =~ s/\bRT\b/'$r' . (($insn >> 16) & 31)/ge; # t register $src =~ s/\bRD\b/'$r' . (($insn >> 11) & 31)/ge; # d register $src =~ s/\$r0 = //g; # optimize away r0 assignments $src =~ s/\$r0\b/0/g; # optimise away r0 access my $cb = ($insn ? eval "sub { $src }" : $NOP) || die "$insn<$src>: $@"; # $insn2src{$insn} = $src; $sub2insn{$cb+0} = $insn; $insn = $old_insn;#d# $cb } } sub cpu_reset($) { $pc = $_[0] >> 2; $r0 = 0; $r1 = $r2 = $r3 = $r4 = $r5 = $r6 = $r7 = $r8 = $r9 = $r10 = $r11 = $r12 = $r13 = $r14 = $r15 = $r16 = $r17 = $r18 = $r19 = $r20 = $r21 = $r22 = $r23 = $r24 = $r25 = $r26 = $r27 = $r28 = $r30 = $hi = $lo = 0xdeadbeef; $r2 = 0; $r29 = STACK; $r31 = 0; $delay = $NOP; # start with a nop } sub cpu_run() { while () { $insn = $delay; if (PRIPS) { unless (++$::n & 0xfffff) { no integer; open my $tty, ">/dev/tty"; printf {$tty} "%g ips\n", $::n / (Time::HiRes::time - $::t0); $::n = 0; $::t0 = Time::HiRes::time;#d# } } if (PRCPU) { defined $insn or die "undefined insn access\n";#d# cpu_pr; } $delay = $mem[$pc >> (ADDR_SHIFT - 2)][$pc & ADDR_MASK]; unless (ref $delay) { $delay = $mem[$pc >> (ADDR_SHIFT - 2)][$pc & ADDR_MASK] = get_insn $delay; } ++$pc; &$insn; } } ############################################################################# sub mips_exec($$;$$) { my ($path, $argv, $envv, $auxv) = @_; mem_reset; my $file= ref $path ? $$path : do { open my $fh, "<", $path; local $/; <$fh> }; # 32 bit, msb, elf version "\x7fELF\x01\x02\x01" eq substr $file, 0, 7 or die "not an elf file, or wrong class, encoding or version"; my ($type, $machine, undef, $entry, $phoff, undef, undef, undef, $phentsize, $phnum) = unpack "nnNNNNNnnn", substr $file, 0x10; $type == 2 or die "file not an executable"; $machine == 8 or die "file not mips r3000 big endian"; for my $i (0 .. $phnum - 1) { my ($type, $offset, $vaddr, $physaddr, $size, $memsz, $flags, $align) = unpack "N*", substr $file, $phoff + $i * $phentsize, 32; $type != 2 or die "dynamic loading is not supported"; next unless $type == 1; next unless $size; for my $o (0 .. $size / 4 - 1) { my $w = unpack "N", substr $file, $offset + $o * 4, 4; my $a = $vaddr + $o * 4; # printf "LOAD %08x = %08x\n", $a, $w; $mem[$a >> ADDR_SHIFT][($a >> 2) & ADDR_MASK] = $w; } } cpu_reset $entry; { my $str = STACK + 65536; my $ptr = STACK; my $add_int = sub { memset $ptr, pack "N", $_[0]; $ptr += 4; }; my $add_str = sub { $add_int->($str); memset $str, "$_[0]\x00"; $str += 1 + length $_[0]; }; $add_int->(scalar @$argv); $add_str->($_) for @$argv; $add_int->(0); $add_str->($_) for @$envv; $add_int->(0); # auxv $add_int->($_->[0]), $add_int->($_->[1]) for @$auxv; $add_int->(0); $add_int->(0); } } if (0) { mips_exec "/tmp/dash-mipsel", ["./run", @ARGV], # ["sh", "-c", "for d in 0 1 2 3 4 5 6 7 8 9; do for a in 0 1 2 3 4 5 6 7 8 9; do for b in 0 1 2 3 4 5 6 7 8 9; do for c in 0 1 2 3 4 5 6 7 8 9; do :;done;done;done;done"], [map "$_=$ENV{$_}", keys %ENV]; } else { my $file; if (my $data = do { local $/; binmode DATA; }) { $file = \$data; unshift @ARGV, $0; } else { $file = $ARGV[0]; } mips_exec $file, \@ARGV, [map "$_=$ENV{$_}", keys %ENV]; } $::t0 = Time::HiRes::time; $::n = 0; cpu_run; __DATA__ ELF@4@<4 (p@@@@llCCl\dtQDz<'yt!'௼<D'z('9Y<D'z,'9I ' <D'!'z0!8`@(!<B {$Xl<B(! w$XD<D'P'zb']b@I'W$BC dc`c`I1@XԌEK$ 0'@B@$ $)$-$H$ /$䏂]C쏙Wb\0'7[@ $<B$$Q 0<<B$$Q 0<$dB@<BSu$Q@ C` 0<@ !0v'$DdE N,dB@B@x!<D'z!'$$' ${<D<D$$BD#,B@<D'z  <D<D$$(#(E(!(C<D'z  <DCP`4<D'Я$<D$c&R <DC#'z( ,@!&R<D`!Ts!y Tr+@$c P@$<C $$,($"P '0<D'z'௿@<C<D$ $X<D@  $a' <D''z !$C!`$$$'PP!0%mx@ !@ ! $! '(<D''z$ ̯@!B@7$C$cC0 0C`4B' ttz !tt@!0b$B@ bB@<!!$ '(<D''z4د0C,$c($ C!$'v!0 0C`4Bs t4t. !t(!p0`!3`&RTb$B@bB@ 40,($ 8'840,($ '8'௰ !B @C 0c`!' '<D'z <B$&1J$a,(ǯ B! 7 !@@!<B @ @(!"$XdGIy`0!"$B"<B&RJ&sJ"D,!($ '0<D''z3e<B(!$J@0!I=' <D''z$<840,($ w&$  !1 &!l$=@ !  !D (!X$0!DI8!& $W ̠@Q@!B$BB " 0B@$s> - !# "$b$~" $-p$ ! -@! ! -"" B$B@BB@A&<B<B!!&J&J&&<`!840,($ '@<D<D(!'z<BFp8'௿;$J'<D(!8!$'z,!<PT<B $K0 !f %8!<B $JЏ(' @0!s$ ,(B$ BF e4!@HBH@!0!C!(+@!0#C#(+E@#BH!,0 @ !@@!B`H!C *$ 6@!b(+b *$ @!C,(+)b *$ &@!C (+",H!C *$ @!b(+H!B@!C&(&E%@!B,IC&(&E%@!BH+b@$BH$b@&BH&b@%H%<!8 !'@<D'!'z04@!<$8$$4$",!(!$$ !D$b9(b@ $b%$bI$be<B<Du`(!8vOw\<B<D  !`!t@!$#b<B$J䏙8Ԯt^t<D`^tSRD<P@!`!8IܮH!IԮH#(+0#`!ŀ#!`@!48IHIĮH@(!`8!! ! H@0!C%,R4IHIH@(!`8! ! H@0!''$J D@<840q ,2(b!$'H D!<D''zD8<B4&Kp`4H!@!<<D0!,!L(8r@!8$j  !' @0! H`8!t&, ! ! *0!@ ! `(!t` !@0!  8!@!&,B@`!!BV*@!L@! !HD@<840,('P<D''z84!0,< H!@!<DFt$,@! !$ `(!@!dt$8 @!48GFGF` ! @(!@0!%. L8%C%+!Ï<!840,'@<D''z$! !, L(@!<D`!Ct$b80%+@!48GFG̮F !38%@(! @0! C%+$Ï, !!($ '0'<D'z(<D$ !!40 ,t@!$%*`!8%.e@ ! (%`!t@!$&b<B $K8+@!48GFGF !q8%@(! @0!`@!`!!!4!`!0,($ '8<D''z@!48CB<(D84$Z (@!$$1' B &B,B @$' @0! `8!Y@!8C`(! @ !@!``!$ B<Ni` !&D`8! @0!@!`!@` ! 0!P8!@!`!D !!@<84'H<D<D'zDp'D8D(! @ !<Dt<B $K' <D''z$:D$*$%$ $,P($ d`!(i; 1e(i+ !f(i& gQ(i! ``$c+`&$!b$=W$(d(d)$b$&b$N&(c0`6 !$-C$/C$+C$"&(c[`(C{(CA`3!$=DU(C>`$>$<C&6CT$?C$%o&` $|(Ca`!$^C$_C$$_C]$~C$$o&&HDq0!4$s$_&S2RLZ@BR!B0B0B@#P*&D (!@ !4@0!Thb@o$$&$=Jn$B &2$L$ !`!B$ L$$!`!$ o`!&$"`!$n`!C$b"!_$b݂&$bo!$bn!n$"!$!$!$ !$!$$&&Dsp$,($ '0'<D'z <B&RK$L!$Q:@! 2@ !@$! '(<D'<D'z( @!,$P !X<B(!$M$Kb$Bb<D\D  n\B ` !V(!@dBDg<B@(!h>$K\ B@! ) !@! \n ! !pЏb$B@ bB@,<B(!$($K$ XMh'0<D''z<D$ P |@ <DC@!\b ! (!0ԏlD(!$! '(<D''zԯȯ쯾请䯶௵ܯد |̏@!BP$-pL&k@!b@ <B6sL$K@!\$/C9$.CC$/C1!@/C@<B&OT<B$@K$K gQ (!'@ !4W@!@00BT $:"6s!C$cC2b@!t-@ !@!CxE$/b <DDЏ\y!|)@(!@ !f)i$D$/@!ExB$^e$qd`!+`$/D $^e$qD &E$q&d $^!<B !$/&KgB$.$/ 0&KCtCtC` $"V+@&1 +&1`| (!)N@ !$QU !g(!@+&1x Q  ? !!T@ !@ @! ! $ b$B@ bB@l@ <B m(!@('!8$K2s`<DlEB!菷䏶܏؏ԏЏ̏'<D''z X(!P$!F,<B$KC`<B<B $EK$EKЏ !B !@(!BB 0!(!$ ,($ B'0<D''zدC$cCȏDDU$<D''z !܏@gB@dB@ $g?(!g$  !<D''z,$',$04  CAt  $'<D'0'z ! !$@(!04  A^   !'د,',$04  $'($ $0<D'zdex0@0<B$BK<B$BK<B$BQ<D'zB<D''z('$!, }(C`!(C` (!(B@ k 6$ B {  (!)$ !E0$,($'0<D''z !!$ 7!,C`<B $cLd!c`<@ '92,<@ '9/  $Q 5.1<DbD#$Bb  K =} =%$@ @!  2EQ @]: ! 3<@'9=tdB@'2Q.1 #<@ '96l<@ '9.$Q(B$(%  0B,BQ8!B@2 $<@ '9-X'9*! ! @(! 7  $B@!B@ <@ <@ 3! < !!Q!B"$ z$B@>M2R@$ '(<D''z ܯC$c0$ ,0(<D$!!4C$  $@$C$$B@ mC<Db$B@b @#Bv,B@ $  (!S@$ m܏4C0$c,C(S $'8<D''z<!4!D@8<DbD#$Bb\%''$$ѯ(  @ $E !@ B@  @(! 1 b@%'D@<84'H<D''z!!,($ :R.R<DbD#$Bb  K@ 2"@B@+b$Bb ! $(!@ !@0!!2@!@$b$B@ bB@@$ R61"$61 :(!   (!j@" ! i!bb$B@bB@ ,($ K'0,($ '0<D''zD!4!LH@<8<DbD#$Bb\$''$( @!$@(!b@>1  !(2$<D@$@C$c CX%H0!  (!B@U$b$B@b @C <Db$B@b @1 C$cC$'LHD@<84'P<D'8'z̏'$įa<D'BBP@@@!b$Bb'Dȏ@$B<DDb$B@ bB@̏$Ьb$b$b $FϬbȏԌD  0eH !$B<D DL)'`$C$B@ B@@$ČD$C !'<D''z@!(!4LHD<80, !c$`d$d@ !$%$PI@!b@b @D-B@ 'b 0!8D_$@$O' A P* !<B8$LPFu !@Ab$B@ bB@$@ P  !$P (! O !$(@ $O$$ O  6h  O ! $ OwB@   !bb$B@ bB@eLHD@<840,'P<D''zD(@<84!0',(!\"@ !p,#`,c!8c@ !('  ($"@ !@l6 !QD!@<840,('H<D'@'z'B诳Bįȯ̯N@r@!'CCC$CC0@4$BbC(b@F!D$b2$ xȌE8$p|#q&@(!b<#@(!$8B<#@(!x$BP! #@ ! t0E;@!Čy @!<;@BB%PDb`bC菲C !'<D''zt!l<D\!|xphd`XbD#$Bb\'"!D'4@,@$$<D$B8(',042 !@ !8`(!B&@R@$P&!!k $S4`!dD$Bc`d@c`!`VH$C$  K$8n$$8D@!5R8$ !0LLCLdGL@(!BPC` !DXHH@`!',dB@;Dh1L$Hx(U2P4I4$-!$p`!$BD,f`$f $CB@`!g%R`$j$B@$!S##J@!!$$! $$!^$$b$dF2B@2$B !!$ (!0!@ !@!@ !b$B@c"ܮB@X,Dg$` !(\@(!E!$*@X,DO$((!`0! 8!@1$BC菙DM$@$$@$@B@;D$((!`0!  8!@"@4 !`D6@dE{<BX(!0!D+$Ld 2'|xtplhd`\X'<D''z$$! !,(S LD'A<B8o$LP !Y$ (!$@ !@!@2@B@. Lo$ $Lv$ L`h  !  $ei LM ,($ '0<D''z(! $g@l$$cb *`@!D$8c +D #D<DC!' <D<DB@'z $$b$/B$!(<D''z!dp@$@&0!\E8$!<D'!'z(! !,$I$BC!C`0c2R$B<D&RB!Pb0] (!@!& `]W !$m$D  (!@!Bt& @$\x,R!($ '0<D''z,$<B&RLh0$(! !!4| !(!K`0!2 BU&@!40,($ '8<D''zدC$cCxBPC$b G$c !b$B@ bB@' ' <D''z$!د4C0$c,( C<D<D&$<D$& `r*s r*`c#!$&+@!b$B@bB@ 40,($ '840,($ '8'<D'z$!40,(  \!$:$%[ !@  !\^#$BsT!DC&_&WBU+@xR @ !T! (!Z0!$/B&Rt@ ![(!$%@ $:&P@C&&$:b&p`4 !0,($ Pe'84!0,($ '8<D''z !0!!$D$ <(840,?$$/@![o !@& !(! 0!BQ&"&RA@ ` !(! 0!BW^@!g` !$$$ G'D@@!&",C `<B$cMPC!B$ !$ b<B$$Xl0!@8!<D''z($''($ 4$d$'(<D''z!$/!!䯾௷ܯدԯЯZ@$21 4@ !K'AV8&&. <B[$Lp@p6161(@ ! 8(!@@!B$B0B,D<B$M\D!BQ$$Q$@ @!! '@ !@@!B0B@2"@<D2" @B@$ @ $<DW$$$$?` !&<Bd$/-*$L|!@2"'@@j'􏙂<B! $L@'@@*@\'$BBDQ$DN'@4` !KB'@400@$ B@'Z` !P$DD` !@ ! 8(!@@!D$<B8@(!$L`0!>` !"$B"$ 8@ !@!@qT' G@(!@s@! 21 $$<B@(!$Xlh@0!$$"$B"$ 8@ !@!$"$B@ "B@N 䏾܏؏ԏЏ̏ȏď'<D''z4!0!B8,!$BD@<8 x !6(!% !@@g<B&1L !(!@@!@<B !F+$L܏x<B(!6$L%` !C ! 8(!@@!Bb䯢  !' 9$$C($C3@G$'  (! G&@ !n@!'  !@ !`<B$L\<B !$L6J8!:@ !<B$Mx6U(!  !@ !B0B@<B($LЏ\<B !$M6' @<Bx(!64$M4M$C$ $ 6(!M!C$BM!$D@<840,'H<D<B'z' $U,4TPLHD@<8$0@@! ! !B@Z$<D<D&R<B& P@@"& 8$B `(!' ( G&s@ !@!(a`(!x5 ! @&MD\l5&RU+@ 8(!@ B@S@ 8@ !'$ 9$$b$$BӮ<DR@@ !T !PLHD@<840'X<D<D<DF$c$$$ bD  D0G B@$ce+@<D''z8<BQ8'L|4$0&1$%,$:($'$$ !!<#b `U@!5u@!@!&T!@N<DV w &(!@@!U&R&%&1A$b@$b!  !<840,($ '@<D''z !د$C$cCBQ$ 8C@!$b$ Bk$ b$B@ bB@$ +'($ '('௿ 8(!@C$b' ' <D''z($! !!$,@ϯ$b!E &"%*@, !($ '0'<D'z <B(&1MH$v$$V!,R6S6 " !@BE  &@,($ D'0,!($ '0<D''z!,($ -<D! @!!!2E2F1$ $2R$ %J`&c !@jHG$BC$B,($ '0<D''z,$[(! !D@<840$g!B$?C&U(D@@$*DS2$\DD&U!@& !BD&&$\D $?D $[D !& ! T(!@m$@& !D$!&Q$!!&7!&1B$\<D$I  (! !%@ @(!<D%)$c#+@!+9  ! +#°%7&1"$-C$]"D$\D&1&10*"^*@$&1$!7$]&1 !g!_& !,BD@<840,($ 'H'4$0!,!(!$! $!<N8TW@(!2@@(! T !@WP@&#& 2`!`(!b +#$BDb +2@&&#&R`!3+@!< !840,($ '@'ȯ0$,!$! !!4(L3@@(!r  (! T !@3H@U&&`&1!4!0,($ '8<D''z !P$~$ !t@!$<D$B CpP'(<D''z$*! !!$ ?$ [!$/$ !$ \$ ]دԯЯ̯h(!i&j8c\"K&"&"Cl$BCg!`$CBM`!,v6!BG &1+&0!!$&#!#`!<D!$\d `!g$C$B`$ HE'A!+@<D$\D$$+@&<D  $$/9<B9$OT<B$KG@\@! $/"@& !N"!$$\&!B$.$/~D$Gu !(! T@@  !tT(! }$@$ (! b@ G ` !@ 'G` !@"!$\$/"䏾܏؏ԏЏ̏ȏď'<D''z((!,$ @0!C!!@! !1$BA@(! ` !r(# @!'0@!@!@!0$TAQ"@ !0P@!0,($ '0'<D'z(<D$!E !,G$ <B@ !$ $M`̯0BC,b!$ C('0'<D<D'z"$40,($ @p<D&b(C*`!Q"$B$BB([m(B$B@B@ B`!܎b(@<D$B(C*` $"$`!C`{"$d *{"$B$BB$d[1vB$B@B@ V~<D܎"$C`C*`P40,($ '8'<D$<D'zB$0!,!(!4 @""$B"$.$@@!B$P"$B@"B@  <D&(4 P$0,($ '8<D<DB$''z(! !D@<840,$@}C0c `U&&<D!$( `!\V!V!C&! !(!S:@A`(!ЏS/$+ &$V!P$&C^b`'B!+@!$C&! !(!S @(!ЏS$@ &2!2&V&!!+@$`e!@ P$C^bBD@<840,($ 'H<DD(,<D''z@!د$b $BbZ   !(b$B@ bB@($<D '(@$<D@$<D''z$!ԏد!,(S @`@!2b@. !R#& !2b@2bx"#<DEh@!Q!4!@$P @!  (!T@ !R=0!@! !!@!2d0!!$$ $ \$ \&0'!!@ !k$c!!!&e$c2s``$c<DC@!, !($ '0<D''z@<Dx84Qp(#<!D4'$$B&&D!"0+#0b@ 'W#$BF"0+J0bB!   !2B1@p& (!&2R'(",(,@ ! `(!@ !"(! 0!D@<84'H'<D$ 'z<D,B@!<8!(!$D40,@!`0b@$" !$$ !  <D8D<x$<D@$BXb$ C!$#$&1X !0!7(!<B\$Mh$ \0B@<B$BM|$Mh\(#<B80!$M$8!`0v1 R! ! $ P@!pX!!x$'C21BR! @ !3<@'9ex<@'9dd !(!0! @8!@`B# !@0!&RQ@(!!@@!!D!@<840,($ 'H<D''zd\|xtplh`X 2Q $<B8$M0!` 4$@bQ0B@$0x<D` !$=BP#4$P2 `c@@214BD&",BH2B$C$ C$$<4`'8$c8b(C:`$?(C0`$$C(C%`$*$!C$#CC?$-C$C$@CEEF$ 'Ï >@!! $$d@!@!'H$B$@!>@` C0c ` BI@$ H( ! !PTPЯL8!LL !8 @(!LP^! T@  '(8$8! ' TP%>X` ! @/$d *(@$Bc'b!F05Q` ! @0!~ !PLL8!@(! !8 @! <`2B^#2B@$'"$P'" !  6H`$ !0!$`(! 8! ~@`$ !  B$ j2B0`&$$ dB@ $ (#\<B`0!<B8$M$$Mhm" $(!(! 'Ï "0`^x !B4 (#$)<D8D< x !(!@$B 8!vV#0! ~@&b<DV!   ! $"+<D$8!$$ $ $ $ !&&!0&$B!$B@Dr<|!xtplhd`\X'<D''z0!0!쯾请䯵ܯدԯЯȯ@0@@<B &sM<B &sM<B&sM2"@N!$"$$~bI!!$$/$:2%$ @$>*:  E !&@p42 Y@!Ey&@U@ !O^! !2'1@(! $ o!!x<D!!# !N`(!V!!^$& !(!C#$ @ *`@(!0!  !@!&$:!$=2"@' 3@ &61@&s$~bm&! w!/@!<B$BM^!@:R@! !$ N:$@& 'Q(% o$P !$2"1@&& w&Q%$ 0c b&$\b$ 2"1 ! 'Q(% o@!<DQ%2C 'D$Dx'B°#c(!'ďV` !u'@@(!21 0!@$'$=կďA BC!?@'US < bb$B@ bB@bxe!s$ +D$B$B` !E(# 0!B oQ % *& o쏾菷䏶܏؏ԏЏ̏'<D''z$<D! (!<D!<840,( CxB  8cC<o@$C`x<D2RP&0DGd #@!@|@ !<B<D(! &M܏d@خ0"J@ &4P (!"HԎM(!@&"TB$BB $M@!(C`$$@ !(!@ !   TT{ !B$B@ BB@&"&"BT(!@":!B$@ "B`!C`&#b&""XP$Tb&"C`#`dBb<840,($ }'@<D''z4!'\<8!0<D<D$# $CxB  8cC< }@xD $@(! T@ !'毢(<(840'@<D''z<D$4cC $cC cC<DcCC$C@@ ' <D'zC$cC C$cC<D''z( !!,LЯ$@!b$Bb<DCb@ $ $Cd# D$b b P cCcC 4c Q QSb$B@bB@ ,($ '0,($ '0<D<Db''zPد$D $D @(`! $ ccd$ d$d4dBS2 $C d $0c`D (Dބ CC"C$B S !b$B@bB@$ /'($ '(<D''z,$ ($$<D40  #ͯS b @ BU$ C$ #=$BA"C`<Dd$B@$~,D'Q BB<B<D&MPX PB(!D; $A'@!$BCc`$ C !0$;w0!@0C`$0 !$;mF0$@ xe(M !#@$b$ib $ P&1@& !J 0!$CS ! C#$c$MC B#$B@bQdB@ xDXE(  d$$jd$~40,($ '8<D''z $$$B@  d$$d #Q$ '(<D'zb$B@ b d$d#<D''z !د!C$$cC4;D(!A @!21 .<B$@0!$$NBC(B @ !8!T(!@!21 <D "B@Q"@0$ $"$@@<DCb$B@ bB@$! '(<D''z د$$B " JDb<D$B@<DC$B@ B@$ '($ '(<D''z <DدC$$c0C 8 QE%[ #=@ !Q6""D dDdD dC<DCb$B@bB@$ E'($ '(<D''z <D$<% %7"P$ '('<D'z %<DD 8`@' <DbD$fDD$FB%$$bD$cD@ F$CB%$cDbd$ $0F!EB0`'0$ $b$b4B%@!$b'<D''z0!0$ :@%!0$d!$D0$ D.$d,@@ !I21@ !$ %@0! @!<BB !$$$N&A!! $$<B $N $'($<B $N,$'(!$! '(<D'x'z|!دx!C$ctplCT8B@+6RDԏH'\@(!0!8@(@!`bLJ'L$'LP8'&T8'@@ !J!@&!@<D&!\$CD$ $ &$ bG!c&bf H X!$Q`!I0Lb&$ !$ +@&`$_b<DCP$cCP&!4B0bD$ ! %(!b$B@ bB@\' %$@ 'xb!$ C@XE%e' !|xtpl'<D''z$ D<<B8<B4$ 0$,$(<B$! <D@H$BT  <B< B !(!0!$$$ =$ %kQX$ '$ $<B<B$'$$~<(~n-(~stH'o$yN&N8qB'&DNLh:(d%m&$"d6'i"$\d,l.''$0u '&ND0`'|'N4%N5(C'0!'&N@<B'$dNH8'$" !0(@ 0` d !'''$\' !$:C$B' !C$B`$ !`$0$"C$B@<DD<840,($ T@'H<D''z<D0!( <84,$PD!$%b^@$+D C$-C <BP&1N`'<B&1NP>(2X&Se` !@O` !<DcHC+`$B$C<DPL !0B@<B(2&1NpC$?b(&S<B!&1Np<B! D `(!@!&N(0B@@ <B(2&1N<B&1Np8 !@(!<!840,($ '@$ '<D$b 'z0<B,&sN(!4 !([& `(!#& +@ ! (!#$ 40,($#'8<D''z\Hy@dBDG/<B$N8n@(!' <D''z$!دί@!404 !/'@00BR !' (!@@!<B8 (!U$Q !$ ! ! /P􊯢0!ԏЏ̏'<D''z !t$k!@!* $wb$$ '(<D''z@@<B8$R' <D''zC@<B8$R' <D''z>@<B8$R' '$$$<D$<Db 'z(<DP+, @2.@!$&$+@<B8ؿ$RB$BB 0<Dd8D$Dq Q!4&1<D0b8B$B@ BB@v4,P! 4c (p#p $'0<D<DE4f (#D4(!e <DB8<DB4<DB 1 !<D<DB84$C<D'zE(#1(+(!1o<D''z!د$C $cC1<DD"8$8<D<DC4 b!<D0b$B@bB@$  '($ '('<D <D'zQ @4+0,($@<B8$R.@<D&<D8u4$C1`!C-"$B"8 0&$CU8P!c4$B<DP b0"$B@!"B@40,($ ׶'8 1 !(!@ !< 0!4B !P 40,($ '8'<DP 1<DB4P!' '<Dp4(<D$#`! !,b P#Q+@ 12KB4,P!($ '0'<D'z ! !!$ 2?(! (!$0! @ !T<'(<D''z !$=A! !0!$@(! 2^'(<D'!'z0 CE<4Bb $<B' $R` !'~7Ï<B$R `8!' @0!'<D'z,<B<&1R(!40$p(!LHD@8|2ЯRp2$  !@@= !@XxE !Q"@<B8$R,x83F !' ,$@J$C C$bB@3N$ @r*`$ C 3@$\C$ 2#C*P#,B@(!$@!؃ <@$& r*@&@ !0!P`(!#2&S3N$!x@ !0!E@(#8B<@!x&TP # !tD@!'@ !@!]h@ X0!$\!&1"@3"@@(!R#!@ !@(!$X!0!3(!0!$X!&1"@L`!HD@<840,('P'<D'zH<BP&R8!lhd`\XTL3֯$  !@$B+b !@ !+\@!$B@ B@BP1@&<B<B$R@'$R<$'$ =$$ ,$@0!jd$c !`1l$c$$$Bi$H$c<B`'41$[<B (!$RD4L-RB@C!b0B0B@<B! !C$c0e,$B4 !C`$c4'! !!0 2"I4$o$u&RT4ꯢ<D&*Bh@$aB 4z$IST4z7@4z77@<B@(!:$RL@$g$I !:@(!@`!4&&)s@ $w$g$X4 $x444c44c04b%44d%4q%<@4c <B(!$RX@:D@D@$r0c$-~B$=D$+B$,4ð%'4ð$$8'VP$j%$,(!&4!<B:b$RT@@@ '<B$Rd8(!*Ml!hd`\XTPLH'p'<D'z0<BH&Rx$HD!@$a<$8$S4$fL5+R TV5+$5+$5+@!$ Q !@<D55&B Q&RBQ+G&R<BB@5q$R0<B !:$R@<!!5d$ $?0!0! +8!!!$(0&1(:5p<B<B$R8~PP'((((p!5P!&!5!̎*$' !0!'` ! 2&5<B&1R@5̎D* '2b@$ 2s`ЎD*Z'AdBD9<B$R8'@(!` !' 2@0!5$56L!HD@<840'P<D'z09y5!Dd$B`$!<D(!<B'z'8$S<D''z($!' 0!H, !40Bc@@!B@6& !`!L+lC6) 50@b!B0B 0B@$$`!4!,0($ '86$ '௰ 6B!@<b+@`! 5 !' $B,B @$@$B$B0$!<D''z0<Bx&J Q,$'($"!4$ !8$' (!P#&D(!!@0!$DT8T !(!T9$Q@@! (!$D(!!$D@0!T8SS$Q@ x4B0,($ '8<D''z$ 9!$PPR ! (!$0! @ !7R'(<D''z<A('($B׀$$Ai$'(<D''zd' <D''z!$ 0B@7?&1$$ ?'($ '(<D''z$!!,( 7"!B!B@&$ @!77@! &R"&1D 6 $b$,b $ps$( b'0<D''z,!LHD@<840(ȯ8'@$dF$RE$B@8;d@8=@b@ 78=$+!8=&R y!8!R$l$o !8$m!B^C!'<B@<B<Bx$S!E'S܏<B<Bd d !W !$S$fS !& $  7<Bd'SW !$eS&S0 !&f0!n $ W !7$0 !b!E7x  @&&dW!7<B(!8$S􏂁Cd!$c8!C$ !$c$cdC!p$V$E8!@  8!@ b !<B$T 8$E $c7<B<D!&U`&s<Bb@/$-8= =8= >L!HD@<840,('P<D''z,($ `s:s-8\.s!C$d!$$ !$cb$ 7PS%R@ @$<B8v$T dCd$#b$4@8 !@ @8$@4d$bd$$e`$cd@ C@&8`!dB@ (!!b$pb$b $pbc8&` !@$c 6D`!,($ '0<D''z(,($ P8@!$Cp*`<B8$T8d$dC!S@!p#C9`!@D=&R&1!!p!B&C`$B$C $Cb$B@ bB@Ѝ,!($ '0<D''z$ (!$ \x' C$cC 7P ! 6D@ 7b$B@ bB@L!' <D''z@$b $b' <D''z(D@<840,(@<B8G$TP$ $CD $cTd+`$9$C +$ $C $C$C $s(cPD `!q5 !P+@0!`b@po$-Cn$j&&s@dq$p!:$:$B$:b <BX&DTt' 0! !::<B:/$T|D$BDD$:2<Bcb`"@ @!D <BX&DTt' 0! !!X$::Wt#$T# 0!&DTt:R!&sX&DTt(!0!=!:V!X&DTt0!\4!:Wt#$:V$?$?!t#@<B$@&$T7~8! !' 0! X!b:q#$DPT @!@<840,('H<D''z0C`b@@:!E$-H$C$FB@2!e$f:$:@$$<B:$T G$E$:b@Cf$cC<B$T8!|F0!0F!' <D''zP.$$D@DD ' <D(!<B'z'$U8CC<D'!'z!8c<P$B' <D''z<Dd,$BXc b!!g<BB' $@$U쯢;>b!<B̌G' $@$U :' '௰!$C,d ;b $-C@$;b <B :$U :' '<D'z$_!$ "#L21&@BQ!"0B0B@$_;&221L&@BQ!"0B0B@&;&$_& $! '(<D<D'z$'$<D''z($ B,p,0U$0S40"@ P; B@!`$ ;$ A"@ P; B@!$ 3@/D ;@ <D&P#,& <P$B0B@Dơ$@D`@(!;$4@!0,($ '8<D''z$P$ b$$C ;$ C$ ;$C!$B돂 QB@$h(!"b@ $&@I$AA@ AA0`(&$$c=կ$ 00`&1$c0A@$4$c>44`$c&>4$)S $,&$c`,>AA $AA8$B@ D$=UD$s=U@!($B<B>D$Uԏ$B@<B$U : &<B>D$VxP@а#$>$<$` *@ &",B @|o !$PCC$ P,CAI$ .B@$ @!|` >$ @!x@!S># &@!(! ; !@!@$ $~ $~C$cCC,>٬Cx&b(!#`w0#$T#'0] ! !(!@xC=Us!P$4$>@!$嫮W$|?#$C$&?#$C?#$?($嚬@$<CR%$&C%$?.P $$@!@$PP |B$-C$B?.C B?)@ ?.?#$$ &1Ю$ P,CAI$ X@!$B0B@"*@!$$$('${3$_2$L":2B(@E(!0B0B@#$0!B0B@$$$&h> U$Z@\ $&xB# ${&!?@!?$$ !$_!L!@0!2@!B0B0B@ &!$_ ! ;(!@!T@!L!2B@C!b0B0B@ !@,B @! ! ;(!@!@!$B,B @ !@0$cb!B0B@Y䫯DD` @!$#$_@!B0B0B@$}D &@$#@ ! !$ @!&`)$%$:$# @2s$@!<B(!/ $X@@C!@Db%$#$$\V@D&sx$ BC!d S(`&10$c0$= ;(!>@!$ xS# &`(!0!#'- !@p! `p,@ A$@!$ b9(b @$\$b@,Bd$`b9`(!@ !@!$ b$\$Bb@ A$@ud$`b$$b`(!(@$"b$\ ;DD@!(b@ `(!<B>D$V $B,`(! ;` !@u@! ;`(!xdD P:D #(#@ !@'@!B@P'$ b`@C@< b,$cd,8(&$>&(D<B>D$U!lhd`\XTPLH'p<D''z<(84.8!@ !$ =/$Į$'(!$B B$! ` !  !d)d !<B@(!$X@8â@0!0$0$, !($ '0<D''z!دC$cܯدԯ̯ȯįC0@<B<SF{!!x&X"$B,C`a!B@2(!4m@ !A@!G^2$F@ !dB @02'4@ !A4@ !F$00B^@ !4$I$@@!@@ !'A*00B^* N !$BGOC2$F@ !2$ @ !4$$Ao@!GO0 "i*G'A$<B8$LP$ #b(!ڢ$( !@!,B@ !D(! @0!GC(!Z$@0 $* $$*$$)$$)$$ )(!(!D@0!H ! *@!GBD$<B@(!$XH8•@0!BD$<B@(!$X`8†@0!2`$b!BC @!P@ ! F!@(!G$!$P$r!B`!P8"%$B,B@$ !A)BRG$ !ARG!! e !A d'@ !<B(!$X@84@0!1 b$B@ bB@2b @Hb䏾܏؏ԏЏ̏ȏď'<D'X'z'菙BدB@'菤 F]C DC$b$@ bB@!'<D''z !$<H5 E !"P$ '(<D''z <$0$$,!$$(P"C(!$cd$! '(<D''z$<D$$B!CD$ <DHzD$C<DB@<DHB@B@F$C' <D<D$Bb!'B'z<!D@8@P.H&$B@9$$6$$""*"@$$" $",$H"$"&$HdC` c`B@HdB@ $HdB@KH$"$L&2R!B@$P !(!'$C7$b$dB@-$" $$"$$"%$I C!P$<A$$I$B!pIL' LR!(P !'P|0!I-H$D@<8'H<D''z$د C$cC<D<D&&R!@ -J # H &+@@b$B@bB@ $ ['($ '(<D''z$LP!B$B0B,B@'$LP!$' <D''z,ԯ40($ T`<D<D@!<D&1&&@&&1I$ĵ(!B@t40,($ '8<D$C 'D H$ H$$H' <D'X'z'B@'C$bBJ C<DD(!@l@'@ !^H<D''z!X!$' @*JH-} !@!(B@JK$TB!E$ !@&*@$$! '(<D''z \40,($ Q0<D<B&&RX$!D0!@ !f@(!&!J"@J&1J! J"(!A @!X<BD&$XJ$b$Bb$-C@J@$B L !J@!!&b!D@$B+V!@P H@ !b$B@ bB@J&1<D؏&$!40,($ '8<D''z د$$BX$c` c`$ '('د4'4$ J$'('<D'z(<06$,$!!!4 KP!!\` ! (!0@0!A BV$KW!KW"!KP#40,($ '8'!0#  K)@4B' <DKa$X<D'Ȍ'z0!b#$!E+!4,( @T(!#@0!K  C`$C!%+@KC3%+@@!Q+`  !4BK!K!@!b$Bb0 (! Q!T!b$B@bB@ K Ka !b#B+@(! K)@0!@40,($ '8'<D(!'z84!0#!(!,`0!< J@8!A@!4BL>T+Q!L>\e'B"+` !@ !P$&%`0!@ !@8! J@!Q ! (! K|0!L:4BQ'<840,('@'<D,(!Dt0',$4 K$'('د0'0$4 K$'('0!$$ K|'$'(<D''z !$#K! !0!$@(! K|'(!$fd7(dg$r$\d(d]$a$c$+`5$\L$Dd-$bd.$L$Bd#(ds$t$nd%$ L$Bd$vd$ L$BL$\!F$B$f!F$0,DL$ L$ L$ $L$B$\<D''z8x(8R4$00$c,$\$!< 0"T&#U&$&1!b$B,D$cqP!L`! L'L@!L&#$`!B<,@!B@&R<!840,($ '@<D''z$#x &r!E(!,@ !(!@!`0! @ ! !$j"!,($ '0<D''z` !h<BMS$X<B(!$XMj$C$"bd"L$"<B(!$Xlh@0!$<DC ' <D'ЌC$<D('zr,$ @$cQC$$"BC!$'C@ !'0!H*@@ !`! MA@!M!!,! !($ '0<D''z`<D \XTd\PLHD@ί V&<BN$Y<D!$OW<B$\$%` ! L',,M@!D<B'@EC`!OWD$BOW`!` !"5$Y b!$*cb Mp'$M ' ` !"$&Y(b!$.cb$*&scb MpC&R<B` !"$Y(b!b@<B$Y4hORc`0(Ch`$s(Ce`$XC(CY`$c$EC$GC<BOCE(Cd`q$bC<BNOCH(Ct`$u$iCf$oNKCy$xC<BN$D$B<DNYb$\ L4xG$sb' B#@$ B !$Nx0!Nx !(!4@$bOTb$C`$BgN<DN8!$G$B<DNb$\' B#@$ B !$OL0!OL !(!OL Mp !@0!<`(! M8@ !' 8B#<@E$ B<N$G$B<Db$$"C!$'C !'(0!`@)<<`!(@! MA !N !!! ! M`(!@ !' B#@ 8!$ B 0!$OOLJOL0!DOL$F#$B<Db$$"C$'C'(d ?O1' !h@*88( !8 MA<8<O1' !!' D#@ !$ D  !$ OL@0!`8!OL@0!`8!OTh(!$YPOe$0&~cj'$V<DB@!<Db d`\XTPLHD@'h<D''z$$@ ,(Q%!0<B$Yh@@&OO!$D L!xxD (! &SB@$ $ O@!$ !"#C (!OD"$B"b@`!,!($ '0'<D'z<D &!$Oׯ0 !@&!$! '('د! <D$@4P! O@@!B@$$'"@ O@C$b $'$%C#`PP4$'@4$ '(<D''zX!4\'@ !P1!4'@!`C*\X'`<D''zX!4\'@ !PN!4'@!`b*\X'`<D''zX!4\'@ !Pz!4'@!b!b !(ȏb&,&b%,B\X'`<D'0'z$"!̯ȯį <DD0$ OD0 P~@ !P$%R!<D$0$&$ O$0Rp! R@ !$0@!$ O$0Rf<B<B8$XDC$Yl<Db4@`!C`#0e$d$0Qa<B$..@$$$+$ P$$$ "PR.R+<d !@` !Q$$D X$R,PP$$P$$ ! 'H@4R!45@&.@F<B$BZ@P!@02:R.02Q:@02Q: 02Q:`02Q:02Q:02Q:0Q?0Q?0BR2TPR%8LQL' <D''z,$ !! S@(@(!dq Te@ !@!21%PP2"0c`21 !@ !$=b !<B0!$[8P(#@L  2"@@ @ !N$=! $D0B@!2$'0C %$ $Ǐ !!yb21$"#!p@ !UHC$U>"%@2#'$ b$ۥ$@!b p2"@ ۾@ !@!,!($ '0-<D''z !د$C$cC! T (!b$B@bB@$ S'($ '(<D''z<40!,!($!֯8$=@ !@!S# <BT8 (!$[P`0!!U6R  !@!C$cC$&$& !`(!@ !T 0!o@!$=T$D(!0!fC !6E Tà@$c` c`<840,($'@(!U0!'<D'z<B&[4!$ U@!  !@$fPV2 U&V&!$ '(<D''z(!د4C0$c,$ C$ $d ebV$R #d 0B@  NVR$VR$ $# '$D$b%"0B'RCV} d $  .poVR "U$"$ UVs3 ` ؎ $=`! $D"0B@$ " " !!b$B@bB@ 40,($ '840,($ '8<D''z !$Vկ V !"P$ '(<D''z@!$ ̯<BH$M`!' LD!/@ !` U' L! !HD@'P<D''z!د$C $cC$$#@!$-b"@$$$@!d@ !P WS! S@ ! (! Te@ ! !P$=@ ! T$WB@!(! U$@!$ WSBC C4c @ ! T(!PBCCRb$B@bB@ $ ^'($ '(<D''zB@<B8n$[8PW V&!' <D''z$<B!$[L,( S$ :sr+S#$pC,Q0$ !$=@@!W$R S@ !(! Te@ !B@Cs%WѬC !@(! U`0!&10WD`(! S0!,!($ '0TN<D''zd$<`\pCC$LCXQX !?$=@ !$ &10<D<B@8!$5$\$<D$0$<BN$K@@!X]!C$/b# !4'@<B4'$OT@bb (b,b! !;(!d`\'h<D''zh@ @@@ !p`@$館@ !dA' <D''z(<B$<B&s\ &R]!,j#@R!Bb!",C`]b!B@ XX,($ Y '0 XYd$!b XX Xd$!Yb Y d$!YbY XX,($ '0<D''z !$Y"$B X"$ '(<D'(!'z 0$ !$$B"! '(<D''z !$]<B$](@ !p !d,C`L<B$c]Xb!B@$ Y:Yn$ YY$ Y: $ Y:Y$ Y%$ Y: $ Y:Y$ Y:$ Y% "Y$ Y$ Y% Yi$ Y:" Y $ Y: "$ Y:"Y!$! '(<D''z,(!$'40YBB$$BB Y:1b 40,($'8<D''z$$ !" X1$$ !@ !@!$C!C Y:Q!$ '( $ca<D'z !$ f#` !#E e(0%(!!!$ f#`(#'( b0F(%!!<'!@!H!!(!+@S<+@<,,B0+$$C0F0!!$ 0# H8(%H@ 0 0 $ %@ (P+@ ! !P+@$P+@$ ! #@ 1)(0@ IH%@( + !'H!'8+$(@+$C%+$G 8<+@<,,B+`$$G!c$ b!(#DP#>$8H ,E HX%0 @040%E P+` !0!+`%+`%0!0# 1k@k%  d0+ (!g!g0+%d0+%g!d#%,e 00 $e  %@X+` ! !X+`$X+`$ ! # 1)0@ $H%P*(+ !'H!'8+$*P+@$r%+@n!<+@<,,B(+$$F((!$ !"H# DP +!U$@+P!C(&00%,E 0H$ h% #xX8<8%E n`+@ `P!8!+@%j+@%j8!8# 1XM% n8G+` `(!F!F+`%eG+` %eF! %oG8# +(@ !(@@+$c!!<' P!'\TPLH'P'0'H'0,b@g'0,Eb'4 &4$d$ebV'0SD!!D@J8EF08 @(b#+8D,` $ =+` (!8@$Bg8%0@8$ =(!<!!X+`geX%X+` XBeX%`!X#0+D`%8#8#!`0!gXBhB(%8@_%) !g8% 0@0i$% 0e0%$e +!$$D@'0ď\@8!!'`<' !'$¯<84$$<@ <#! !$F@!( ,, !(!($Q#, ',<ce4<84'@<' 0!'4D@<8!$.$̯$<K $F@!,#$ !@0!$sp$ !(!%@0!+c%( , !( ,,v(!,($Q# <'D@8!@<84!'H!$ f#`(# !( b0F(%!!<'!<+@,,c<+@$$$ (#d!b#<'@!',C0<84,($ `$<4B%@!$^$CY$CU%@X0!(@1($#*9!@! (! !0!$, !0!@!`!$d(+$B(!($ $ % +!%2c$b&b2b@&bS+r!`!@!<F0+8Q%#@2#$b&"2"@&"Q+p!`!@!< +@$B B!b%$"!b%0!$!!<4B$U%<5(% !840,($ !'@<%4c?0$b %$$&%$<f +!'@%@$$$b %<$0$$  $&%<%<'!>$<'!(! <'!0!8! <'!$ $@ ! !<'D! !'௼H' $<'!$b b$<'!0! !$  !<'!$ b$<'@!$ b$<'!$ b$<'!$ b$<'!$ b$<'@!$ b$<'!'Я(,$ !!$CG@!(B@$! !9@ !@@!!! !@(!$k b@ ` !@(!@ @!  ! !,!($ '0$ $ <'!C`<`!$ $ $ <'0!$ b$<'!'،h $!@!P$&%l,0!$ !0(!<'!$ b$<'@!$ b$<'!$$c b$<'!$$g b$$ <'p!$ b$<'0!!!8!$`(!@0!<'!$ b$<'!$ b$<'!''$| b$'<'0!'p0!'$w b$@' f(!'<'!'؏ $!.'@<4cC$<4B<4cC$<4B  !$$ '(<'!'p0!'$v b$@' (!'<'!'0$04`!'0!4 +@0!$'(<'@!'،$`<4cC+`<4B `<4cC+`<4B'J$'(<'!'p0!'$u b$@'(!'<'@!'$,c!` !L)@BP!0B0B' <'!'$,c!` !L @BP!0B0B' <'`!'$,c!` !L@BP!0B0B' $,B <'!'$,c!` !L@BP!0B0B' <'p!'$,c!` !L@BP!0B0B' <'!'$,c!` !L@BP!0B@0B' <'!'$,c!` !L}@BP!0B0B' <' !'$,c!` !La@BP!0B 0B' <'!'$,c!` !LE@BP!0B' <'@!'$,c!` !L)@BP!0B0B' <'!'$,c!` !L @BP!0B0B' <'`!B<'@!'د $$"!$ C  ! !$ b$$ '(<'!'؏ $!$!@@!R@@@."@$$@  !!$! '(<'!'H '!@!,$@0cb $ !$$C$0BC$C!,l'9 !'<',!'@< $$ @!!"P@ ! @ !'A !$ $9$l,'9~ !@@! !$ $ C !'<'@!'د $!C+@  ! @ C!D!C DCd%`!$ '(<'p!<'P!'h|pxt !!bT bcQb0c0Bb!$ b $!BbK@$&ꧠ#(Hv$T$! !&(X4!'V$r(X2! Q@(!*$b$c6Db$B4"(HV"(J$b!$BCBC!$c$@#!8#(NC!D !C!$$C!$c$@#!@#(R @C!$ !C!$c$@#!H#(T<C!$C$@#!P#(VD"C!$C$@#!L#(P!D$$d!b!$B$@"!(D"(L$\> @@T(&$c@C!8X@ !! 0@&X<! 0@HD$BET$(@0!XF$(!$c0`$BC,d TE@ !XD!d$BC`$c!d ! @d !$d$c` !$B0B@dD + @),,& &s!&fx&fpbDcDdBdD$$0E0c)(!Q!da$  3$ $0F!q!cbGd&#@!j P!0`1$aF0! L`!KX!H@!`!C!!8!8@g8!0'8!8@8!F0!G8!$cd0*8! D!cbF(d $$b$ , $ , -$cC !bD !$b $ ,$ -$Vd& !($%PC!$C$^ @$C$$B4 P  HE 8 $& $$E! $& ($E! $!$$ @!c <0F C!d!d0G0 X@!d$C@!d0Ce$I$g>>$8@8!%'$J%) T8@ H@ T8! H!*0@!@! D@F0!0!00$f 0@!1e(66$0@0!  #0e66$0@0!$BK@& & & & x!$ !Dd h !& .dh&1"& h, !0! p B@ & l !|0! t@  &1$&s"&R$! & ' r$H|xtp'<'!'؏(!$ $! $ $#%& & $a K$ &$B &$ x $  $  $  $ Ц $",$C( D$C@ L$CP T$C < \$C$B!Ȯ d $B $ `B(!(0B$f`,$Bf X'(<'p!48D<'P!'4<8 ,$"!' <( $'(+$Q"(P#!(D$+ ,$B H !0B ! L@!Bb,B#4B$<84'@<'P!'  $ X!'i!X!$'C` !H4!V'T',$-@!`C%)%>1-<$@4CB$XCE$,$ 11?A$@@!%)`@ `' @$`$$ @Bl`+$`+< % h!-%( `!- $ EB,g@%)'CH$  !$B@'H!'@#'<'`!'ЏDD' @$,$ $, '0<'!'4,$X!!,,H@<80(D $f`$U,!!L0@@!PP (!0!!8!@ @!$! M(!@q8B+#$T@ !D!@<840,($ 'H<'!X'،b$ D ! bCpC`!@0B@0B@!\ !@!, $ A$$0C`0B@4c00B@-0B 0B@" !$ ! '(<'!`0!6$<'p!''4$!`'$ЯP+d(!8<@DP`0@!!d (,$'0! ($d$c((`d`'h<'ߠ!'Я($, $r!!C!$wC$aC$ $C!0B 0B@ !!!$8Bb,B(!$+b $x61$&1D61`(!@$  $D@@!$ `2" $B&CC$bî'0BQ$@` !2R 2%$t$@2R $b61 @ ! (!$@2#2" 21&1:10 + %+d%C%<4Bԏ@2 S@4B2@ k$@$B 4B@ &h8 l$p(t,XCP,!($ '0<'ܐ!'؏X $Px0B@0B@ !@ !&,  $ '(<'!'ԏ@P !@DCp8cCp@$@D$BpCD8cCDP' <'@!'0#!|b#' <'!<'!\y<'ڠ!'،`8! $@0!M!@!`!$ '(<'4! <'!'ȯ0,($4!!! '$@!#`0!$C&&40#0,($'8<'و!'0($, !!!@!j !"# @!,2` !'9 0!Q @!@!@!! ! ! (!`0!!,!($ '0<'ج!'xpd`|xtlh!' !!A' + !@$ !@(!0!I (! !,!,&f&@$%C # ! (!0!Qb!@$%b& T' 4' F8@$d$c ' C!'p!' (!$B$c<E(*(@@ ,C80D07Q`8!!`,C,$cfC!r$ C $W00e $,0c@`,C6,C` $C$C$$7#$ $a$ 7$C$   ! 0$8@0!X`8!'7&@0!@!@,CX`$-E00d4c0&R$0c`$!$'7a#$00,D/$D $D  + D$0&$ $E$0*$$$ D`+,$A&Rf?!+@p#!`,C8GF'$, !$Boy`*,C$L8Db@7T$'T$(!'L@!$!$ e''L@!$!@'$ $ \!`,$$8D'r@ $$@ !@!$A!$ $ !=$,B@6$ b$ $ !/$C 'ԏD$@!C`!$e F,$B$BC#b!Y !'$ '8@tb!r!E +m$!$ !!$ $!*$,$D!(D(+!#S!$0~!!!00B@ !$ &0!^I!,'9f1 !(! !$0&0!W:$T@ @ ! !$ &0!^&+*#(!0!P !!$L.@0!$''T!'L@@! #'@(!@!0!Q#$ !$ $@ - !+&$$`!|xtplhd`'<'@!'$0,!!<84(!$BBB ,@&(į !' $'$C&(,$Bf"$ $$Bd@$c !$%r$CBR `! !@ `!$BC`!$<840,'@<'!'د $! L$ '(b<e <L$ecLP<CL$CBLP$P0!$$ $ $$ $ $ $<$!BH6$(X L N(XA$b"O $cg$I(XL M$b LJ K$cg$$bLb$cg$$bLbcL$CLB$*@$ e <$$c !c<C %$B !BA #$b$4B$ <'P!'H$2TX8<!< !$ #$D d !'08!0$`$BF7'< <!!$*L4$ 4$%$ .$$,$ 0$ m!bW`!2'b!@ &p!E*@IE(b8@$rR!!&hpt|lx dN@!B0B0Bhpt|lxd@n7`!h @&*@\`!p+m%?$@!bL`!@!`!$%bgN$B&%N@2 C'$g!!`!`!Cw $BHm&@$2'b!R<$< J@!&r$$,$bg0D$B$B&D$cg0C#(c`C$B &D `9",$g F$$B$B$g C#(C`0`$B," $cgC$cf0*,,$BgDb#,@$BgPb!$g`Bf!c%C$@$g F2# 2>$ $0#$$0 %$$#B@+$mb$$" # " C`!$e F$B$BC#b!Y&$$ '@"(B@$uE +p$W!,,,%)gp%Jg$X! (!@`!(C` $D'!c<" !$0c\! *$m(d `!$m$c #!'f!d &!% %g$cn#p+$c$ce#Cj!f%cg$cnp+$c$ce#Cl!cf*`% #!d#$B$cb*`(C &$"&&$('@0"0B@4&'#"P!"0$B'<'!'ЏX,($ !$!!!P!x$0C@0c`B%8B@0B@@ `!E !@T$$0B@0B@ x-@0B$, !($ '0<'à!'؏$ !!@ !$@0! 8! @!P$$ '(<' !'0c$0,($4!!!b! !' !$@!@$P r+@ $P` !(O 0!P  "4B"C!40,($'8(.!@&13H#1) 0#(! !08#8!0! $ $ ଉ䬊謋쬌08#8!0!$$8!$$8#00#(! !08#8!$$0!( !0B(%D(%@#10# !08#8!0!$00#$8!$<'@!'ԯ!!' <'!8!,'!$ghdl`\!!$~d(! $cbd(!$m $z,b~@ ,Bb#&`@!$7'Q$P򏅀, !$h @$$+# !B$$BB+`@!$"@@0!` !(!)r!@ Ql !hd`\'p!$$#$@`0!+` !d$$c!$!dF!d$!C$$B$!$`$<'!܌F9!0Ce`$B!$0$BC`e$B$Bb#@$`$!!$d$c! $cg$BF!D#<'p!'؏$ -!$Q' !@@!@ !@(! 0!$! '(<'!'௰Dԯ&) $2&) ' !C`$B$BD#!$BC`$D#! $cf$BD!!<'!8!,'!$s$ $!d(!$cbd(!<4c, @ ,Bb#&`@D$7$)zE$P񏅀, !$s$$! '(!G$c$B!fD#! !@! f$$c$B!<'p!D$)<'P!'د $!!! !@(!!@ ! !k@(!@@$B!!"!$! '(@b!G@b!b#@$@$<'0!'诿T'T,B'X<'!''HDL!L$T @@!T& ')$$ (f@ !(!$ L !DH'P<'@!'<@$tw$"'@$$'(<'!'쯥$<'$ $tv' <'!$ #C$<'`!'䯼!(!@ !' $ !<'!'$TP!(@'<$C8(!HD@D<􏙅3(!,BP4 !'4R'@$TP'X<'!'(!<8!$'((P'('$<8'@$B !$($+$B !$(E(%!$B !$(('($!<e(+$_$f408$,08$0BG8C'(!!h$b#$cd $BT0D!<'!'4H@,L<TPD80$&34,@$ n$,@$$52@ +!!@ .B$c#!b@DOd.@&ƀ0!r8$c,CuP!B 4b C !2g@!!a$UB $S$0D5 +P!#b0b'$Q 0!#$+@8 ! (!$ '$$C-0C`$#C!C##4c@6#CdPeX$(*dPdXdd$!qdcpq+`qpdh$!dt +߬qt$T,c$CHB`$cp!0B!@s#`!'>!6$ B`0B@<"+  !@!$B~!Q!6$<"+@+<+@ ! (!$ $@!$B$e`Q! $d`E3!61pc`0e `W(+$e$`e`0,`2BW# !dh@$b#B!@!!S!Q!C!~!C#ְ$V!! s !$CR+! l !!`$$e`Q! $d`!$@!D! ! W R ##dh$!qh$CW#V!4BW,Bh°!`Vh$&sb$6b$!.sC` CQD$BDz&QDChDl +ClDdBtd!C+@Ct$,C $+ P!,6E #4d$B$ C !dh$ !WbdhZ$TPLHD@<840'X<'!'!$ @ @ $ C'!F@ @!B0C`$F0$$,C `,C !(!` ,C `$ C $! '(<'!'<840,($ !<840,($  !'@!,@$ $$ GC,@$$$$0&`$q+`m!,C$S!&#C+`&0Q#!$ %4B,$d $ !0b$S!Q+` f =d&$@@!!C$B&f$b$,S!,C `@ !(!CCC,C`z C C,C`qCC$ ChB bB `!Q#,d 0E(%!C4cC0 !4b%%!b4Bb3$I!\&V$B°!Ѱ!'°$Ҹ#wr(!;!  #0! $$C6R!dS#pv!S+@dpbhb!btS+@st&&"b+@!!&$@u@!@ !(!&fw !@!<840,($ '@<'!'ȯ (,\B$B$$bR!D #` 04,$$T!! ! p !@!,R!b! ! g # ! d !$Cb#@hb#hB#,4Bb$40,($ '8<'!'@Z!$C$P%J PP!$4%J$$ $ @(!@$^GM$C !00$GG#Hg! G  ,8!0 f!  <4f< FI DC!Cf!4cC,!$$`!$c,$Bc Dc<T<LD`l4B`$H&4H,$\' <'|!'!t, !'9$' <',!$h'($H+ $($(5he!evb0 f5hE!h00$D#G(! D d ,g f !0 fgd (! d<$f4Db<4F C E!E(!4C,<(+-0B@$C,c$DDd+`,DH'9' fP$fPfd(!0#fdD #' ' <'!'$ P$HL@<84'40!D)@$)$)$Dd'$C)(!$$P,($ $'D0!$d$C) )$b$DHC)$ <'!'ȯ($LH(!40, !!!8! !`0! !(!`0!8!@! `! A &$t#+t+S#2!C#!!40!,($  '8<'!(!$ <'! $<'!'،B$$$'(<'@!'؏($$'(,@Y'$D@<840,( A!$$@b !!! $p+`0$%!!#Ր!P!X@ !! `(!@ !!+@!#Cd$BDc&R@&s+@# !D@<840,($ 'H'840$ <,(!!!!!!Bp!tP !! @(!@&p@`!+@0#!<@!840,($ '@<'!, $<'!,8!<'!'،B0$}$'(<'@!' !bI@@(@!1 1$c$c$+H@!$-H$$c@!$$@$i$0"$x $ i5) 1)$d"$$c0@!(@$$$-)# *!$ F $"`P1` !k%i1)-/ 5k -oa$ (%i1)&X*`B +$cJF +@$$ $!<<4cb +$"D`!#'<'`!' P!B(@!c0c 0c`%J%J$+C$-C`!$ `!%J$$@$C$0b$x $ C4c 0c%Db$%J0@P!(@$$$,B#H!@@!T@ !<o<$"B$K1k-c `4B ,Ca`$ ($K1kf*@>+@%Jb !& !c!KX+d@!@H!1"F kX!Bb% ! BFH!(@+ !! ! + &%c! '!kX+b@!`H!`$$ $<$4B!< H +i +$"`H!@@! #+ #@#@H!! !'<'!'؏4$ 0!@!`!8 ! (!0! 8!$! ! '(<'0!<' !''௢$ ' b$'<'!''$߯,B@$| $ b$'<'X!''$߯,B@$| $ b$'<'!$ b$<'!'x0!'$w $b@@!'(!!'<'@!'؏$$'@$$`!'($ <'~!$ b$$ <'~!''$ b$'<'~@!'௢$G ' b$<'}!$ b$<'}!'0`!'!@0!$ b$'<'}P!'،B $@!   !A $PP w !@$! '(<'|!$ b$<'|`!'؏$$ !! !(!""""""  "$(,"04"PT"TX"8<"<@"@D"DH"HL"LP$ '(<'{P!'؏$$ !! !(!""""" "$ "((,"<4"XT"dX"@<"D@"HD"LH"PL"TP$ '(<'z@!'؏$$ !! !N(!"#""#<""  "$$"((,"8<8"X#dX"`d`"@@"DD"HH"L$L"PP"T T'(<'y0!'(!0! ''௢$, ' b$@@!Ï '<'x!$'P@8!TLHD<40#'!@(!${ $"bC@$!!$$B8!$ 3!C$cj$c!+@&d ! 8!0!t$$t#C$Q PIHihq pcBbF&E $( $B($ B!!G+@t#!T`!PLHD@<840'X<'v!,'H$U,@@!!$e$@P' <'v!'௼!T!@ !{' ' <'v!'8TPLHD@<40!!0Ȁ0<'#ը$!!!$, B@B@$QBB@,YDBf !B@!B4BBDB!B !$\D EF !(#U @!F !(!!B ! !$ !T!@ D$0D!&&B@BE$BDBE(!DBD!ɮB $$ D!'^W$ U ` !k&!@Dd(!<'9<!(7$&7>$d!(U , !(!!j ! ` @!V !@&&@& !(!!&@ *@$*@<"$@&!T!PLHD@<840'X<'q!'<'4(!' 40'0$$@$<'@<'q`!'د$!D$)$@8!$'(<'q!'!$$u@8!$'(<'p!'Џ@@!,P!`(!D$c)ЏF$ , <0!@8!$C&+#KC$$ H!H!$' E+`!@!$"@(!. Hg(@$ HPjP!J0 PG8! L8@G8!$XC$ !$c$ H' f ($c !$' !' E#,'0<'o!!'H!(! ,$ 0!@8! '!$ P!P!$'E +@!@@!$$+!7,,&0g2 !Z$XC0$ PX!k Ta YX!1lX!k0 Y(!(! e$j!$B@',0e$j!$B@' !'e$#'<'mp!'4ȯ@<į80($D,!!!& $!R2U r!$Q !!$:@$ !'!>$ @!Q$:EC@$Q&!D@<840,($'H<'lP!',<840,($ @!$"C !L!!!!!P !| (!@ !P#0c0c`/$-$" !$D !$ $BQ&&$#!ݲB@C!b0B 0B@W` !~@! (!@!<840,($ '@<'j!'ȯ0<($ 4,!!!!;60!0!9$ $ @(!@#+B!"$4B"BC$ C!#" C#@ +$ @!BDb"0B0B@&$c&R"#C#!p#!4`!0,($ '8<'i0!'0B0B$ ,(!!@ !,( !@(!$ 0!| '0 $D#Q+` !@!`0!@(!S!?Q+@0@(! 0!Q!0B0B@.$ @ ! 0!@'x2 !@ @!"+@3# !3#B!@ !$ `0!@S!B#2#r# x !@!, !($ '0<'gP!'$` !0C`$  C%0C 0c` 0C4B)$`"0C0c` 0B0C0c`0B0B,B$ !(!0#@4B@!' 0@$0c$0c!@$$$$$<'e0!'4hD0TPLH@<8!l! #8#+0#$0#2ը&$,  $BS b@$@!$  H%4&!!!` F tE # !b+b!c$c   Q "!($$(! Q D! Q ,E (! .!#E x !N(( ^%&$B0 Y!0B!^%@ $-&T!PLHD@<840'X<'b!' $e26 2$a쯿 !Ў!$p$ 0C`$+0B@$ H, ! (!0! 8 8!@ !$@,D (!8! 0!@ !ȏxED0!K 8!`(!@ !8! t0!A$ $-$$ $ǯ (!8! b0!A$-<T&,@GsFs !  (! (!D !`8! @0!@$a$ $p$$(.a@,$B,ȏ,$B0C!,'0$ ,$ Et,Dt(ȯ$BHďȯ،ED$$ED$,Et$Dt ȯ$B䐯ďȯ،ED$ ED$$ $ $ ̯! !%k̏ȯ !  (!Ac!@gf` ! @(!@H!܏ !`(! ᯩ䏩A#xgf` !ԣ@(!@H!̏ !`(! 䏩@! !`! XC @!` !  (!@`!x܏@(!z` !@!`! &$ $ed$ !'z$ 䯫 (! !@ !d& (! !`8! @0!@(!0! !@ 2`(!䏨@!`!y!! $Bb#@%0h Y*@`&RK.a@$g& $B࣢2$g$f+°#! !!(C`'x$0$$$$0yK*`x%c'y#! 0!'y$C!d0B$00+,$0'/d$e !0d! +$a6 0 $ !d$cd,:'ye+`'y'ye +& `(!`0!P!'z$g$ )C`$gJ*`J#$f(!A$0@!$@!$f$(',$$$` #$p0d8* 8d#`4<ȯ@$B3D ! 'H` 40! #'0 !'<'0$ 0 $p$g$a$p0H$G$@ p HG$B $c` $G8#G$3G$B $pGDF$B $g 0` #v *#C$$c3DC$B $f*:a.$u#A$+ P#$-$'$ $ !G $XX*P%J0jP`$i@fh$p$cFDC!$B $f'(d$c $#b +$6 +'2$a $( !$0$c$c#`@! 0 $0C$$c3DC$R (!(!@!'!$ `0!S& "!+@ $$ $^ !  !쏰'<'WP!'0B,B $@ !0b0B@0b $B $@$=!B$c450BD$,$4c$0c`X\` b  !@b$c '$@$$ '(<'U!'ȯ 40,($!!` !U 0Bb0B0B@0+!V & 0+!!!$$ &R@!0+@4 !0,($ '8!0Ce$$B!!0Ce$$B$B!!0e!`$<'T0!'௼!!P$(!~&l,Bh!' <'S! 8!<'S!'Y !@! B !@ݬH !<'S !C,C<'R!(! !$ E(+b!$ C$<'R!'诼$ P!P!$'<!$m$n(4$#,h(`m@!-n@!-B$XC-$@!B`%#CX+,` $  + XBoX%%71k a+1? X@hX%` $%)$@C# !@H!@#'<'Q@!'<ȯ80@,($D4!!!&$6!T7T! !!$:@$PU$@&1 !'1$ pd$:E$b@&$,b$`!L$,`!dq&` $v4!@BQ!"0B 0B@$$!$CB@$$c$$$cb$b!b+`&C $B&b$c$BD$B`!D@<840,($'H<'O0!'؏ 8!$7Ï$'(<'N!'Я(@.",$@$C0B@0B@!$"  !x@$( '$N'A$  0!@ $80B!,($'0<'M!'0B0B$ @!!!<61    0!@ "+@4c 4B !$ '(<'M!0`$c`00B@$b/$4@+$8@#b#!0@0D#b!8#'0+d # #d(*#A$Od<'L! '0#!b!' <'K!'$` !0C`$  C%0C0c` 4B$0B@0B@ x !@0B4B!' <'J!'د ȏGF诼$!!@ (!GF< !`(!@ !<C! !$ '(<'J!H!!!X!H# (+ # #$ @@!#(+# X'e#@@! 8!`(!0+T<C+`<,C,cF0+$$b0F0!!$ 0# i@(%8@ 1 0 $ %@ (P+@ ! !P+@$P+@$ ! #@ 0(0@ G8%H + !8!@+$H+ $C%@<$` @+@<-,B+`$$H!c$ b!(#DP#>$@8 ,E I`%1 H040%E $P+`  !0!+`%"+`%"0!0# 1Hl% $ d0+  (!h!h0+%%d0+%%h!d#%,e 1 0 $e  %H`+ ! !`+$`+$ ! # 00H $8%P(+ !8!@+$P+@$u%(+p<e(+<,e,(f0+$$00!$ (!EP#@ d +!X$"+@R!0Cf0%<g 0D (p%B`@Dg @%h + !@! +% +%@! @# 1`(,(% @ + 8!(! +% +%(!%b@# +(@ !IH%H+ $c!!!`# +#D#<'D!'P!H!h!(#+ # #$  @!H# +P#BP# @!!@!0+W<&0+<-&,0'8+$$8G8!8!$ 0#\ 8@%\`K 1 8`K <G% D8+H!H8+D8+H!D#`K 0cH L#H% `K E(%+@ (H!(+@%+@(H!%# <$@  @+@<-,B0+$$H00!!$ 0#DHB #@E,% P%18<% D 8%H+@8!+@+@8!8# 1JJ%H ( D(+H!H(+D(+H!D #@ 1 (8@ $, %8(+ !(+(+ ! #@ 0c(,%8@ IHi+@ h!h+@i+@h!i#!~0+<!x!F0+<-F,0G8+$$88!$ p!`# D0+0+_# #(+Z#PBP% Dh   %1B4H(xX \fX%h c8+ 0!jX!j8+%c8+%jX!cX#h 0x8<8%h  + !8! +% +%8!4f0%#0F +8@! +iH#i+ @#@# !#(+H#E#p%#0+#F#'<'=!',C4D@<80,($ `!,d!$D bbd$d !C !(!޶$b$D#'&#+@:@ (! !0!@@!,$ !0!v$d(+$B(!($ $ % +!'%@%`(!@ !0!@@!,$ !0!Z$d(+$B(!($ $ % +!! %w*@!!`!!!C3@3#"+#q#b+P##$##+# @ @ %$B<$$Cb@+$0!@+,c` 3!Q+!p!< $d +0D!/B%%B$B!!D!@<840,($ 'H<'9!'td`lh'H2'h'`,'0'0,''9<'H̏@ !t@8!!'x<'9d!'td`lh'H 'h'`'04,8B'0''H'9<ԯ4f@ !t@8!!'x<'8!'tlhd`'h'H'`'0H,b@ 0,D$d $CL4b&+LD $$b4Lb&+4L4f & +L|'HF & +4v'0\D@X80D ( XPH%`!+@@!H@!+@!+@!!$ !0+(!$f8+8!!! 0!@+ P!!f0+B!P!8L0!4$8&8+< < 0g??(B B$ %(%?BB%$H8+<G@+4cG @ %(@$G@+G@%@G¯ 0g$ 0f %$d+b!$d$($,'ˠt@8!!'x<'5!'\TPLH'P'0'H'0,B@ $,B@'0'$\'`<'4!'\TPLH'P'0'H'0,B@ $,B@'0'$\'`<'4@!'\TPLH'P'0'H˽'0,B@ $,B@'0o'$\'`<'3!'\TPLH'P˗'0'Hˑ'0,B@ $,B@'0C'$\'`<'2!'40<'0m'$C ,C`$C@< @(C`$<Џ,(ʓ0#`!`#<4B!<'@,b@J$,F8$f Cb#`9$$F$-fC!FCf8**`8+dd8+8+d8+@ $0+@$!'د<D $&~$ &1$ '(<'0p!'௼<D'z('9 ' a%s: %s not found unalias%s=%s aliasarithmetic expression: %s: "%s"division by zeroexpecting ')'expecting primaryexpecting ':'expecting EOF@D@@$@d@@8@@@@@@@@@8@LPOLDPWDgetcwd() failed: %sPWDCDPATH/can't cd to %ssh%s: %d: %s: %d: %s: No such fileDirectory nonexistent@+x@+@*@*@*@+@+@+@,L@, @, @*t@+@*@,Pipe call failed_/bin/sh%builtinbuiltinfunc%s not defined in %s is a shell keyword a tracked alias forspecial is an alias for %salias is%s %s is a shell function is a %sshell builtin: not found *pvV~ %lldparameter not set or null%.*s: %s%sBad substitution@@@<@@@@$@=:*?[sh: turning off NDELAY mode Can't open %s (core dumped)Done(%d)Done"}$(...)${${#))$((No current jobNo previous jobNo such job: %s%s: ambiguousjob %s not created under job control | %sCannot set tty process group (%s)%d [%d] %d Running | %*c%d %s%*c%s; && || while until ; fi; done() { ... }<<...esac>>|>>>&<<&<> | !if ; then ; else (; do for in case ) ;; /dev/ttycan't access tty; job control turned offUsage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or kill -l [exitstatus]invalid signal number or name: %sls:0 invalid signal number or exit status: %slpCannot fork/dev/null[%d] You have stopped jobs. @@@@@@@@@@@@@@0@@t@ @@@@@@@@@@ }-+?=%%%###you have mail Use "exit" to leave shell. /etc/profile$HOME/.profileENV%s: not foundOut of spaceunlimited %lld p:rarg countSugorwx%.4o augo=+-rwxugoXsIllegal mode: %sHSatfdscmlpnvwtoo many argumentsunlimitedbad number%-20s error setting limit (%s)time(seconds)file(blocks)data(kbytes)stack(kbytes)coredump(blocks)memory(kbytes)locked memory(kbytes)processnofilesvmemory(kbytes)locksHOMEIllegal number: %s@=%s onoff-o+oCurrent option settings %-16s%s set %s %s Illegal option -o %sIllegal option -%c-c requires an argumentcan't shift that manyUsage: getopts optstring var [arg]OPTARGIllegal option -%c No arg for -%c option OPTINDNo arg for -%c optionerrexitnoglobignoreeofinteractivemonitornoexecstdinxtraceverboseviemacsnoclobberallexportnotifynounsetnologdebugefIimnsxvVECabuSyntax error: %s%s unexpected (expecting %s)%s unexpectedBad fd numberMissing '))'Unterminated quoted stringMissing '}'EOF in backquote substitutionBad for loop variableBad function namecasedodoneelifelsefiforifinthenuntilwhile{}end of filenewline";""&""&&""||""|""("")"";;""`"redirectionword"!""case""do""done""elif""else""esac""fi""for""if""in""then""until""while""{""}"@p@@d@H@@dAh@@@@@@@@`@|AlA A A AAA AA A A A A A A A A A A |A |A}-+?=%d: %scannot create %s: %scannot open %s: %sAdA8A(ATAHAxAxtrap -- %s %s trap: %s: bad trap %s: expected numeric value%s: not completely convertedusage: printf format [arg ...]#-+ 0*0123456789missing format character%s: invalid directive-nclosing paren expectedargument expectedmissing ]unexpected operator-r-w-x-e-f-d-c-b-p-u-g-k-s-t-z-h-O-G-L-S=!=-eq-ne-ge-gt-le-lt-nt-ot-ef-aADHAD`ADtADADADADAEAE@ADADADAE@AE@AE@AEAE$AGAGAGAEAEAEAEAEAEAEAFAF,AFhAFAFAG4AG%dm%fs %dm%fs %dm%fs %dm%fs PS1=# %s%s%.*s%s %d%.*s: is read only%.*s: bad variable namevfnot in a functionpPS1=$ PS2=> PS4=+ OPTIND=1MAILMAILPATHIFS= PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:[bgbreakcdchdircommandcontinueechoevalexecexitexportfalsefggetoptshashjobskilllocalprintfpwdreadreadonlyreturnshifttesttimestraptruetypeulimitumaskunsetwait%ldAbAbAc<Ac<Ac<AbAbAbAbAbAbAcAc<AbAcXAcAcAcAcAcAcAcAcAcAcAd Ae`AetAeAeAeAeAeAeAeAeAeAeAeAeAeAfAfDAfDAfDAfDAfDAf(Af(AfDAfDAf`EXITHUPINTQUITILLTRAPABRTBUSFPEKILLUSR1SEGVUSR2PIPEALRMTERM16CHLDCONTSTOPTSTPTTINTTOUURGXCPUXFSZVTALRMPROFWINCHIOPWRSYS3233RTMINRTMIN+1RTMIN+2RTMIN+3RTMIN+4RTMIN+5RTMIN+6RTMIN+7RTMIN+8RTMIN+9RTMIN+10RTMIN+11RTMIN+12RTMIN+13RTMIN+14RTMIN+15RTMAX-14RTMAX-13RTMAX-12RTMAX-11RTMAX-10RTMAX-9RTMAX-8RTMAX-7RTMAX-6RTMAX-5RTMAX-4RTMAX-3RTMAX-2RTMAX-1RTMAX                #UTF-8ASCII``    /etc/passwd(nil)(null) +- 0x0XInvalid multibyte format string. +0-#'InpxXoudifFeEgGaACScshlLjztqZ  !"-N.Y]Z#$%&'()*+,234567;<=>?@ABCDEFGJIMOPQRSTUVWX[\^_`abcxyz{|}~8Unknown error SuccessOperation not permittedNo such file or directoryNo such processInterrupted system callInput/output errorNo such device or addressArgument list too longExec format errorBad file descriptorNo child processesResource temporarily unavailableCannot allocate memoryPermission deniedBad addressBlock device requiredDevice or resource busyFile existsInvalid cross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentToo many open files in systemToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeNumerical argument out of domainNumerical result out of rangeResource deadlock avoidedFile name too longNo locks availableFunction not implementedDirectory not emptyToo many levels of symbolic linksNo message of desired typeIdentifier removedChannel number out of rangeLevel 2 not synchronizedLevel 3 haltedLevel 3 resetLink number out of rangeProtocol driver not attachedNo CSI structure availableLevel 2 haltedInvalid exchangeInvalid request descriptorExchange fullNo anodeInvalid request codeInvalid slotBad font file formatDevice not a streamNo data availableTimer expiredOut of streams resourcesMachine is not on the networkPackage not installedObject is remoteLink has been severedAdvertise errorSrmount errorCommunication error on sendProtocol errorMultihop attemptedRFS specific errorBad messageValue too large for defined data typeName not unique on networkFile descriptor in bad stateRemote address changedCan not access a needed shared libraryAccessing a corrupted shared library.lib section in a.out corruptedAttempting to link in too many shared librariesCannot exec a shared library directlyInvalid or incomplete multibyte or wide characterInterrupted system call should be restartedStreams pipe errorToo many usersSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketProtocol not availableProtocol not supportedSocket type not supportedOperation not supportedProtocol family not supportedAddress family not supported by protocolAddress already in useCannot assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableTransport endpoint is already connectedTransport endpoint is not connectedCannot send after transport endpoint shutdownToo many references: cannot spliceConnection timed outConnection refusedHost is downNo route to hostOperation already in progressOperation now in progressStale NFS file handleStructure needs cleaningNot a XENIX named type fileNo XENIX semaphores availableIs a named type fileRemote I/O errorDisk quota exceededNo medium foundWrong medium typeFile locking deadlock error     Unknown signal ?nan infinityinf@$@0@/proc/stat/proc/cpuinfoprocessor/sys/devices/system/cpu: uxhx`v v(wv4x4x4x4x4x4x4x4x4x4x4x4x4x4x4x4x4xhxhwxhxhvpxTv444444444444444444444444444444444444444444444444444444444444444444444444444444444444444#44&.'449o3_*2bi!A[ C`44444410~u|x{,44$DG444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444-4444{\T```^``>7>>>>>>B;5GGGGGG'&u&|||m|z||||1%%u >>>>>>>>>8>>``>8`[>>``>>``>8`[66PP>>``>>>8>>``>>``>>``= `ow `p;`g;4`p `nGG"GGGGGD!?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG,GGGG#VS]GG!)6(=!44GGGGGGGGGQ````````\|2>>>>>>>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGmsg|GGGGGGGGGGGGGGSYYY*GGGGGGGGGGG_WLsxGGGGGGGGGGGGG_YYWGGGGGGGGGGGGXIZ+_IE_GIUIZYDFOCYYYY?GGGGRIGG``````````>>>>>>>>>>```````````\>>>>>>>>>>>9IHYZ3W<````````````>>>>>>>>>>>>GGGGGGGGgq|||||||g||||||||fs|sg|||||||g|||&|b`````a|M>>>>>@||ume|s||||m|||||||&||||| g|||s|||||||||||||m||u||||vm|szvu0.&|l# &|.&}|||````>>>>| ||||%||||s&u.|.||||.&||||||||||||g||||||||||||||s|||s |||||q|||||||||||t|||yj||||||s|||||||||||g||s||s|||||||||||||||||vxGGG?GGGGGGGGGGGGGGG7>YX||||||q|s||||||||s||||s| ||||||y|||||||||||||||||||||||||||||#``````>>>>>>A||||||||||||q||||||||||||||||s||||||||||||||||||||||||||||||s||s|||||||||||||||||sg||||||||||||||||||||||||||||||||||||||||||||||||||N||||||||||Gx:|||||||||||||||||q|||||||||||||||||||||||||||||||||||||||||q||||||||||||||||||||||||s||||q|||||||||||||||||||||||q|||||||||||||||||||||||||||||||||||||||||||||||||||||||q|||||||||||||||||||||||||||||||s||||||||||||||||||||||||||||||||.||||||.&|.&m|||||||||||||||||||~||-||v|||ccd|b`````a|M>>>>>@||z||Nz|`````a`]>>>>>@>>!$`fw`fDff!AD`af!"$D$af " $!!!!!"""""""!"""$"b"f"r#4$$$!$$$B$D$F$a$f&"&f4B@@@DA#ABADBBB"B$BBBDDDD$D@DBDDDdFDUUUf````faaaaadafddbdfffff fff!f$f`fafdfffrffifvawwwgwwif   aabb "" &&$ccceeedRRRRQ"" &&$""!!&&%'//////<43/////=>8?109:+ @46/////////////////////. ////////////WYVXWYWYVXWY]^WYWYWYUZ _S[T\ `////A/,/BCDEF- G"#&)(H///I;KK""""&&&&JJ////*//////L5//////////,NNNMPPPONNNNNMPPPPPO27////////////,ggggfhhhhhiiiii@mqtt9?Y Z[d%&'>nop()* "#01678VVVVVVVWWWWWWW\\\\]]]]DEEEGHHFvwxyzU!{|}R$$$     $+,-.///23454:::;<<=AAABCCIJKLMNOPQNNNNNNNNSSSSSSSSTVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWXXXXXXXXXXXXXX\\\\O\\d\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]eefg]]ii]]jjR^^____``aabbcchhhhfkkllfrrrrrrrrssssssssttttttttuuuuuuuuuu~~~~~~~~~~~~~~ y9Oa8~*+]*(=EG**.23651/-))+*)&'%T&%@?P0`AJVdp~ Aߺ (0123456789.,-USD $.,-$SunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilJuneJulyAugustSeptemberOctoberNovemberDecemberAMPM%a %b %e %H:%M:%S %Y%m/%d/%y%H:%M:%S%I:%M:%S %p%a %d %b %Y %r %Z%m/%d/%Y%r^[yY]^[nN]^[yY].*^[nN].*YesNo     !#%')   !"#$%&'(*,./01234 $+3=FMVZ^bfjnrvz~f#, !B `V*NQ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abccdefghijklmnopqrstuvwxyz{|}~V*@@@@@@@@(@@)@@*@@+@@,@@-@@.@@/@@0@@1@@2@@3@@4@@5@@6@@7@@8@@9@@:@@;@@<@@=@@>@@?@@@@@A@@B@@C@@D@@E@@F@@G@@H@@I@@J@@K@@@(@@)@@*@@+@@,@@-@@.@@/@@0@@1@@(@@(@@(@@(@@(@@(@@(@@(@ @)@ @*@ @+@ @,@ @-@ @.@ @/@ @0@ @1@ @2@@2@ @2@@2@@2@@2@@2@@2@@2@@2#@@2$@DD@3@@4@@4"@@4@@4@@4@@4 @@5@@5@@5@@5!@@6@@6@@6@@6@@6@@6@@6 @@6#@@6$@@7@@8@@8@@8@@8 @@8"@@9@@9@@9!@@:@@:@@:@@:@@:@@:@@:@@:#@@:$@DD@;@@;@@<@@<@@<"@@=@@=@@=@@=!@@="@@= @@>@@?@@?@@?@@?@@?@@?"@DD@@@@@@ @@@@@@@@@@@@@@@@@!@@@@@@$@DD@A@@B@@C@@C@@C@@C"@@D@@D@@D@@D@@D"@DD@E@@E@@E!@@E"@@F@@F@@F@@F@@F@@F@@F@@F@@F@@F#@@F$@@G@@H@@H@@I@@J@@J@@J@@J@@K@@K@@K@@K @@L@@2@ @2@ @2@ @2@ @2@ @2@ @2@ @2@ @2#@ @2$@ DD@3@ @4@ @4"@ @4@ @4@ @4@ @4 @ @5@ @5@ @5@ @5!@ @6@ @6@ @6@ @6@ @6@ @6@ @6 @ @6#@ @6$@ @7@ @8@ @8@ @8@ @8 @ @8"@ @9@ @9@ @9!@ @:@ @:@ @:@ @:@ @:@ @:@ @:@ @:#@ @:$@ DD@;@ @;@ @<@ @<"@ @=@ @=@ @=@ @=!@ @="@ @= @ @>@ @?@ @?@ @?@ @?@ @?"@ DD@@@ @@@ @@@ @@@ @@@ @@@ @@!@ @@@ @@$@ DD@A@ @B@ @C@ @C@ @C@ @C"@ @D@ @D@ @D@ @D@ @D"@ @E@ @E@ @E!@ @E"@ @F@ @F@ @F@ @F@ @F@ @F@ @F@ @F@ @F@ @F#@ @F$@ @G@ @H@ @H@ @I@ @J@ @J@ @J@ @J@ @K@ @K@ @K@ @K @ @L@ @(@@@(@@@)@@@)@@@*@@@*@@@+@@@+@@@,@@@,@@@-@@@-@@@.@@@.@@@/@@@/@@@0@@@0@@@1@@@1@@@M@@@N@@@N@@@N@@@N@@@O@@@P@@@Q@@@R@@@S@@@T@@@U@@@V@@@W@@@X@@@Y@@@Z@@@[@@@\@@@]@@@^@@@_@@@`@@@a@@@b@@@c@@@d@@@e@@@f@@@g@@@h@@@i@@@j@@@k@@@l@@@m@@@n@@@o@@@p@@@q@@@r@@@s@@@s@@@t@@DDD@t@@@u@@@u@@MNNNNNNNNOOOOPPPPQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYZZ[[\\]]^^__````aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppqqqqrrssssttttttuuuu@v@@@w@@@x@@@y@@@z@@@{@@@|@@@}@@@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @%@ @@ @@ @@ @@ @@ @@ @%@ @@ @@ @@ @%@ @@ @@ @%@ @&@ @@ @@ @@ @@ @@ @@ @@ @@ @%@ @@ @@ @@ @@ @@ @@ @@ @@ @%@ @&@ @'@ @#@ @$@ @@ @@ @@ @@ @@ @@ @@ @%@ @@ @%@ @@ @@ @@ @@ @@ @%@ @@ @@ @@ @%@ @@ @@ @@ @%@ @&@ @'@ @#@ @@ @@ @@ @@ @@ @@ @@ @@ @%@ @@ @@ @@ @@ @@ @@ @#@ @@ @@ @@ @%@ @&@ @'@ @@ @@ @@ @@ @@ @@ @@ @%@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@2@6@@@:@;@?@8@@@6@D@D@ @ @t@M@@tMmN    AI "W(%[Z#0/7$&-38<CF T!2+X4:R  S6?*1>BLOEUQ\J),HMP.5;VY9=@D'GKN6MNO./01H<=FGBCtu '#%""#$%<8>;  KL50.,/3568;>EDGLEIJ^[Z]acdfilsruz~         "#%& !&'()*+,)     '()*+-12479:<=?@*,.+,-17;FGIJN1&-23456789:;>?@AD34!9=?:AB@7ABCFHIJKMNOPQRSTCFDGEHIJKLMNOPQRSTUVPUXZ\_UTVWXY]`kjlm}|~UVWXY\_`beghjkmnVWY[]^`acdfgijWXYZ[\]^_`abcdef\Z[abdcgbehf)6ghijklmnopqrs|}~hqopnutklmnopqrstuvwxyopqtvwxy{|}~vwyz   vwxyz{z{|} (*.0/235!4:89CE@ABDHMOQP2$0+-/QRST#"$%&('=<>?KRL$!  S^_eirsx{ 2&& &#&2&8&>#&H&t&#&'Z'$(((0(8%0en_USeeuro&.9LC_CTYPELC_NUMERICLC_MONETARYLC_TIMELC_COLLATELC_MESSAGES ASCIIISO-8859-1     `  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ infINFnanNAN.,@0@p@ACGO_@$@Y@ÈAׄCAy7FnM8O?ZwH02uOs<AAAeAׄ?HangupInterruptQuitIllegal instructionTrace/breakpoint trapAbortedBus errorFloating point exceptionKilledUser defined signal 1Segmentation faultUser defined signal 2Broken pipeAlarm clockTerminatedStack faultChild exitedContinuedStopped (signal)StoppedStopped (tty input)Stopped (tty output)Urgent I/O conditionCPU time limit exceededFile size limit exceededVirtual timer expiredProfiling timer expiredWindow changedI/O possiblePower failureBad system callzR| Ah,B0@B6TPDBRtBRfBRdBSsBScBS,mBS< lBSTpBS\nBSdvBSt wBTBTBTBTBTBTBUBUBUBUBUBU$BU0BU<BUDBULBUTBOBVXBV`BVdBVlBVtBOXBV|BVBVBVBVBVBVBVBVBVBVBVBVBVBVBVBVBVBVBVBVBVBWBWBWBWBW BW(BW0BW8BW@BWHBWPBWXBW`BWhBWpBWtBYBYBYBYBYBYBYBYBY BYBYBYBY BY BYBYhBY BYBYBZ BZ BZBZ BOpBO`BZBZBZBZBZ BZ$!BZ(BZ,BZ0BO"BZ4#BS$BO%Bf&B^B^B^ B^B^B^B^$B^,B^0B^4B^<B^DB^LB^TB^\B^dB^lB^pB^xB^B^B^B^B^B^B^B^B^B^B^B^B^B^B^B^B^B^B^B_B_B_B_B_ B_(B_0B_<B_HB_TB_`B_lB_xB_B_B_B_B_B_B_B_B_B_B_B_B_B_D@):alnum:]AP:cntrl:]A0:lower:]A :space:]Ap:alpha:]A:digit:]A:print:]A:upper:]A:blank:]A:graph:]A:punct:]A:xdigit:]APBOT@B[@HtB[AI0BJ@ (B[@pB[@GDB[@ B[@ B\@_lB\@GDB\A=B\B\$@H|B\,@B\4A^TB\<@HlB\D@pB\H@dB\P@YXB\X@B\`@B\hA]B\pA6|B\x@ hB\|@B\A^TB\@HBUH@(B\@B\AI0B\AJB\A)HB\@HtB\@^B\@$B\@ BJ@ B\AWB\@DDD:D<D:D:C@CXLINENO= B[,B[@,B[@ B[@\, B[P B[X B[` B[h@ CPPID=D=D=CpCCCp D DD D CCtAAAA\DD)DDCCAAAA\CAAAA\D)BQBQBQBxPB B B @@BJ A@BAA@'@A`AyAAzAzDCp@@D<@@AtD@A1D@*D@8DAX@@CA @Ř@MD@@&A DAvAaDDA'A1DD|@'4A{@DDA_@(AQD@9D*Ad@A1TD@ٌA1@@pAAhAhPDp@ARA[xDxAA0@TAAVDAyA@(xBSBS@C4@A@A Ax@[DDA/A{AŀAĠA0A-D@l@D,A AA@]D$A&`D@D@@AtAܰ@AD<APAXhAg@@@PAwAxPAx@DDCC0@CtCXD=xA[AQ8B[AUD@NA A[$@q@@ۀADAxC @ DAM@(@( @׀AA@נ@`@@ @ Ag,Bd AdAPAPA,|B[A`BS@ż@APBcDBU`AA0BbA@xBSA @EA|DDDD@A-A~AAD:AD A}`AĀA|A|@PAðBSAPA{0AA"DA|PA(DC A{`@üAAyP@A$A%C@AAҐA D:Ah@nP@oT@rA} BSA~APDAPAA'4@hAO@AWDDC@<D@D DD@TD@P@@BaDB`D@PDA~`A,AwD<AvAA A}AAq`AAA}AppAn@APD(@@^D*AMXD)AS A{P@l@8D4D0D<AD8Be`AuBe@AsPArArAwAvA Aw@A{D)AA}BPAAACPAрAA8ABC`CpCCA@A@CTAA@ADAB@B AC`AAAAAAA\APBB`B`APAA@ABBB`BB BA0APC@DHAB 0DHApB@ABh0ABA@A AADIADIAApA@APAB0B6AAAPAߐAA0A`AABABDBEB@BBB APAA ACD)D)D)B'pAAACXCPB&0CTB&B&`A@D)B'B$B#@B B B'B&CB)PB%B%B+`BGBFPB/BA,B.B.B,D)A4AD@DDB+B-BGBHGCC: (GNU) 3.3.2GCC: (Buildroot 2012.08-rc1) 4.7.1@@ BJ @0(@(@ 8@  @ Ѐ0@ Ѐ @ (@@ @@@ H@P@0@@<0@8@DH@ @0@(@l0@ h(@ @& 0@& @'4 @'Ȁ(@( (@(x(@(@)@),0@*(@-X8@.H@/0@2,?P@4@6lP@9ЀH@;@=t@E0@GD @H@Hl@Ht@H| @H0@J?8@JЀ @K?8@M8@N@@P(@P@VH?H@YXX@[@\,@@](@^ @^0@_l0@`P0@aPH@dd@@ex?8@f4(@f@j0@k0@l08@nP?8@oTH@q(@r0@tH@uH@x@@l@@Ā@@ @T@0@(@8@Ѐ(@P@(@(@܀(@8(@ @@x@(@ ?@DH@@@8@ @$?@@@80@h(@؀8@0@(@?@@0@8@(@pH@ @@@@?H@ @@` @@(@p @ü @ @T0@Ř@ż@@8(@ 8@ @0@x(@Ԁ(@0 @P@ p@$P@׀@נ@؀ @8@@ @P@ٌ?8@Ѐ(@<(@ۀ @̀(@T0@@P@(0@㔀0@( @ @dH@ @뀀 @ @ @th@ @혀(@@8@t(@H@pAX@A0A0A ?8AH8A `A8At A?8A0AtAA (A (A!p A"DHA$̀(A% A&`?8A'4 A'A((A)H8A+(A,|(A,8A- A-A-?8A/Ā@A1(A1T(A1(A1(A2A3 @A4\0A5 A50A6|hA=Ā0@ A?(A?(A@``A@Ԁ`AAH`AAAH`8AI0(AJAMAMX(AM8AO@@AP(AQ8AQ(AQ ARĀ AS 0AUD(AV?@AWAW(AXh8A[$(A[xPA[(A]؀ A^T0A_A_hAa Ab00Ad4(Ad(Ad(Af8Ag,(AgAhAhPAhAn@`App@Aq`HArArAsP@AuAvAvAvAwAw@AwAwAxAxPAxAxAyAyPAy0AzAzA{A{0A{@A{PA{`A{(A|A|PA|A|A}A} A}`A}A}A~A~`A~Ѐ(AA(AP(AAP A A0 AA A  A A Ap A AP A A0AP(A(AAdAP(A A@A(A A@@A@A00AHA(AA hA0A(A AP AAA(A\A8A0AAP@A(AA@A0A(Ap8AAAP ApA APAAAA APAAAA (A AA0A`A(AAA A@(AA`XA PAP(Að AA0 AĀAĠXAŀ@AAAHAƀAXAр(AҐ@A8A A Ad AܰPA8AAA(AP(AߐHA@AAA(APA0A(A`A瀀0A`A @AHA0(A A4(AAA ApAA8AAAP(AAAAAPAAA@(AA0(A@(BP(B`BXB B  BXB@B 0(B (B 0B B HB@@B?8B`0B@ BBB`XBB#@(B$8B%B%B&0B&` B&B& B'pB'B'B)PHB+`(B+0B,(B-B. B. B/(B0B6B<HB@xBA,xBAЀxBD`BE`BFP`BG`BG@BHAgnu.shstrtab.reginfo.rel.dyn.init.text.fini.rodata.eh_frame.ctors.dtors.jcr.data.rel.ro.data.got.sdata.sbss.bss.comment.pdr.gnu.attributes.mdebug.abi32 p@ @P@|#@H)BJ J X/BJJ7B\ACHCOCTCaCgClDhhsDplyDPlI@~0l4<o?DL??