JFIFHHC     C  " 5????! ??? JFIF    >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C     p!ranha?
Server IP : 172.67.137.82  /  Your IP : 104.23.243.84
Web Server : Apache/2.4.51 (Unix) OpenSSL/1.1.1n
System : Linux ip-172-26-8-243 4.19.0-27-cloud-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : daemon ( 1)
PHP Version : 7.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /sbin/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /sbin/pam-auth-update
#!/usr/bin/perl -w

# pam-auth-update: update /etc/pam.d/common-* from /usr/share/pam-configs
#
# Update the /etc/pam.d/common-* files based on the per-package profiles
# provided in /usr/share/pam-configs/ taking into consideration user's
# preferences (as determined via debconf prompting).
#
# Written by Steve Langasek <steve.langasek@canonical.com>
#
# Copyright (C) 2008 Canonical Ltd.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 3 of the GNU General Public License as
# published by the Free Software Foundation.
#
# # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
# USA.

use strict;
use Debconf::Client::ConfModule ':all';
use IPC::Open2 'open2';

version('2.0');
my $capb=capb('backup escape');

my $inputdir = '/usr/share/pam-configs';
my $template = 'libpam-runtime/profiles';
my $errtemplate = 'libpam-runtime/conflicts';
my $overridetemplate = 'libpam-runtime/override';
my $blanktemplate = 'libpam-runtime/no_profiles_chosen';
my $titletemplate = 'libpam-runtime/title';
my $confdir = '/etc/pam.d';
my $savedir = '/var/lib/pam';
my (%profiles, @sorted, @enabled, @conflicts, @new, %removals, %to_enable);
my $force = 0;
my $package = 0;
my $priority = 'high';
my %md5sums = (
	'auth' => ['8d4fe17e66ba25de16a117035d1396aa'],
	'account' => ['3c0c362eaf3421848b679d63fd48c3fa'],
	'password' => [
		'50fce2113dfda83ac8bdd5a6e706caec',
		'4bd7610f2e85f8ddaef79c7db7cb49eb',
		'9ba753d0824276b44bcadfee1f87b6bc',
	],
	'session' => [
		'240fb92986c885b327cdb21dd641da8c',
		'4a25673e8b36f1805219027d3be02cd2',
	],
	'session-noninteractive' => [
		'ad2b78ce1498dd637ef36469430b6ac6',
	],
);

opendir(DIR, $inputdir) || die "could not open config directory: $!";
while (my $profile = readdir(DIR)) {
	next if ($profile eq '.' || $profile eq '..' || $profile =~ m/~$/ || $profile =~ m/^#.+#$/);
	%{$profiles{$profile}} = parse_pam_profile($inputdir . '/' . $profile);
}
closedir DIR;

# use a '--force' arg to specify that /etc/pam.d should be overwritten; 
# used only on upgrades where the postinst has already determined that the
# checksums match.  Module packages other than libpam-runtime itself must
# NEVER use this option!  Document with big skullses and crossboneses!  It
# needs to be exposed for libpam-runtime because that's the package that
# decides whether we have a pristine config to be converted, and knows
# whether the version being upgraded from is one for which the conversion
# should be done.

while ($#ARGV >= 0) {
	my $opt = shift;
	if ($opt eq '--force') {
		$force = 1;
	} elsif ($opt eq '--package') {
		$package = 1;
	} elsif ($opt eq '--remove') {
		while ($#ARGV >= 0) {
			last if ($ARGV[0] =~ /^--/);
			$removals{shift @ARGV} = 1;
		}
		# --remove implies --package
		$package = 1 if (keys(%removals));
	} elsif ($opt eq '--enable') {
		while ($#ARGV >= 0) {
			last if ($ARGV[0] =~ /^--/);
			$to_enable{shift @ARGV} = 1;
		}
		# --enable implies --package
		$package = 1 if (keys(%to_enable));
	}
}

$priority = 'medium' if ($package);

x_loadtemplatefile('/var/lib/dpkg/info/libpam-runtime.templates','libpam-runtime');

# always sort by priority, so we have consistency and don't have to
# shuffle later
@sorted = sort { $profiles{$b}->{'Priority'} <=> $profiles{$a}->{'Priority'}
                 || $b cmp $a }
               keys(%profiles);
# If we're being called for package removal, filter out those options here
@sorted = grep { !$removals{$_} } @sorted;

subst($template, 'profile_names', join(', ',@sorted));
subst($template, 'profiles',
	join(', ', map { $profiles{$_}->{'Name'} } @sorted));

my $diff = diff_profiles($confdir,$savedir);

if ($diff) {
	@enabled = grep { !$removals{$_} } @{$diff->{'mods'}};
} else {
	@enabled = split(/, /,get($template));
}

# find out what we've seen, so we can ignore those defaults
my %seen;
if (-e $savedir . '/seen') {
	open(SEEN,$savedir . '/seen')  or die("open(${savedir}/seen) failed: $!");
	while (<SEEN>) {
		chomp;
		$seen{$_} = 1;
	}
	close(SEEN);
}

# filter out any options that are no longer available for any reason
@enabled = grep { $profiles{$_} } @enabled;

# an empty module set is an error, so in that case grab all the defaults
if (!@enabled) {
	%seen = ();
	$priority = 'high' unless ($force);
}

# add configs to enable
push(@enabled,
     grep { $to_enable{$_} } @sorted);

# add any previously-unseen configs
push(@enabled,
     grep { $profiles{$_}->{'Default'} eq 'yes' && !$seen{$_} } @sorted);
@enabled = sort { $profiles{$b}->{'Priority'} <=> $profiles{$a}->{'Priority'}
                  || $b cmp $a }
                @enabled;
my $prev = '';
@enabled = grep { $_ ne $prev && (($prev) = $_) } @enabled;

# Do we have any new options to show?  If not, we shouldn't reprompt the
# user, at any priority level, unless explicitly called.
@new = grep { !$seen{$_} } @sorted;

settitle($titletemplate);

# if diff_profiles() fails, and we weren't passed a 'force' argument
# (because this isn't an upgrade from an old version, or the checksum
# didn't match, or we're being called by some other module package), prompt
# the user whether to override.  If the user declines (the default), we
# never again manage this config unless manually called with '--force'.
if (!$diff && !$force) {
	input('high',$overridetemplate);
	go();
	$force = 1 if (get($overridetemplate) eq 'true');
}

if (!$diff && !$force) {
	print STDERR <<EOF;

pam-auth-update: Local modifications to /etc/pam.d/common-*, not updating.
pam-auth-update: Run pam-auth-update --force to override.

EOF
	exit;
}

umask(0022);

do {
	@conflicts = ();

	if (@new || !$package) {
		fset($template,'seen','false');
	}
	set($template,join(', ', @enabled));

	input($priority,$template);
	go();

	@enabled = split(/, /, get($template));

	# in case of conflicts, automatically unset the lower priority
	# item of each pair
	foreach my $elem (@enabled)
	{
		for (my $i=$#enabled; $i >= 0; $i--)
		{
			my $conflict = $enabled[$i];
			if ($profiles{$elem}->{'Conflicts'}->{$conflict}) {
				splice(@enabled,$i,1);
				my $desc = $profiles{$elem}->{'Name'}
					. ', ' . $profiles{$conflict}->{'Name'};
				push(@conflicts,$desc);
			}
		}
	}
	if (@conflicts) {
		subst($errtemplate, 'conflicts', join("\\n", @conflicts));
		input('high',$errtemplate);
	}
	set($template, join(', ', @enabled));
	if (!@enabled) {
		input('high',$blanktemplate);
		# we can only end up here by user error, but give them another
		# shot at selecting a correct config anyway.
		fset($template,'seen','false');
	}
} while (@conflicts || !@enabled);

# the decision has been made about what configs to use, so even if
# something fails after this, we shouldn't go munging the default
# options again.  Save the list of known configs to /var/lib/pam.
open(SEEN,"> $savedir/seen") or die("open(${savedir}/seen) failed: $!");
for my $i (@sorted) {
	print SEEN "$i\n";
}
close(SEEN) or die("close(${savedir}/seen) failed: $!");

# @enabled now contains our list of profiles to use for piecing together
# a config
# we have:
# - templates into which we insert the specialness
# - magic comments denoting the beginning and end of our managed block;
#   looking at only the functional config lines would potentially let us
#   handle more cases, at the expense of much greater complexity, so
#   pass on this at least for the first round
# - a representation of the autogenerated config stored in /var/lib/pam,
#   that we can diff against in order to account for changed options or
#   manually dropped modules
# - a hash describing the local modifications the user has made to the
#   config; these are always preserved unless manually overridden with
#   the --force option

write_profiles(\%profiles, \@enabled, $confdir, $savedir, $diff, $force);


# take a single line from a stock config, and merge it with the
# information about local admin edits
sub merge_one_line
{
	my ($line,$diff,$count) = @_;
	my (@opts,$modline);

	my ($adds,$removes);

	$line =~ /^((\[[^]]+\]|\w+)\s+\S+)\s*(.*)/;

	@opts = split(/\s+/,$3);
	$modline = $1;
	$modline =~ s/end/$count/g;
	if ($diff) {
		my $mod = $modline;
		$mod =~ s/(\[[^0-9]*)[0-9]+(.*\])/$1$2/g;
		$adds = \%{$diff->{'add'}{$mod}};
		$removes = \%{$diff->{'remove'}{$mod}};
	} else {
		$adds = $removes = undef;
	}

	for (my $i = 0; $i <= $#opts; $i++) {
		if ($adds->{$opts[$i]}) {
			delete $adds->{$opts[$i]};
		}
		if ($removes->{$opts[$i]}) {
			splice(@opts,$i,1);
			$i--;
		}
	}
	return $modline . " " . join(' ',@opts,sort keys(%{$adds})) . "\n";
}

# return the lines for a given config name, type, and position in the stack
sub lines_for_module_and_type
{
	my ($profiles, $mod, $type, $modpos) = @_;
	if ($modpos == 0 && $profiles->{$mod}{$type . '-Initial'}) {
		return $profiles->{$mod}{$type . '-Initial'};
	}
	return $profiles->{$mod}{$type};
}

# create a single PAM config from the indicated template and selections,
# writing to a new file
sub create_from_template
{
	my($template,$dest,$profiles,$enabled,$diff,$type) = @_;
	my $state = 0;
	my $uctype = ucfirst($type);
	$type =~ s/-noninteractive//;

	open(INPUT,$template) || return 0;
	open(OUTPUT,">$dest") || return 0;

	while (<INPUT>) {
		if ($state == 1) {
			if (/^# here's the fallback if no module succeeds/) {
				print OUTPUT;
				$state++;
			}
			next;
		}
		if ($state == 3) {
			if (/^# end of pam-auth-update config/) {
				print OUTPUT;
				$state++;
			}
			next;
		}

		print OUTPUT;

		my ($pattern,$val);
		if ($state == 0) {
			$pattern = '^# here are the per-package modules \(the "Primary" block\)';
			$val = 'Primary';
		} elsif ($state == 2) {
			$pattern = '^# and here are more per-package modules \(the "Additional" block\)';
			$val = 'Additional';
		} else {
			next;
		}

		if (/$pattern/) {
			my $i = 0;
			my $count = 0;
			# first we need to get a count of lines that we're
			# going to output, so we can fix up the jumps correctly
			for my $mod (@{$enabled}) {
				my $output;
				next if (!$profiles->{$mod}{$uctype . '-Type'});
				next if $profiles->{$mod}{$uctype . '-Type'} ne $val;
				$output = lines_for_module_and_type($profiles, $mod, $uctype, $i++);
				# bypasses a perl warning about @_, sigh
				my @tmparr = split("\n+",$output);
				$count += @tmparr;
			}

			# in case anything tries to jump in the 'additional'
			# block, let's try not to jump off the stack...
			$count-- if ($val eq 'Additional');

			# no primary block, so output a stock pam_permit line
			# to keep the stack intact
			if ($val eq 'Primary' && $count == 0)
			{
				print OUTPUT "$type\t[default=1]\t\t\tpam_permit.so\n";
			}

			$i = 0;
			for my $mod (@{$enabled}) {
				my $output;
				my @output;
				next if (!$profiles->{$mod}{$uctype . '-Type'});
				next if $profiles->{$mod}{$uctype . '-Type'} ne $val;
				$output = lines_for_module_and_type($profiles, $mod, $uctype, $i++);
				for my $line (split("\n",$output)) {
					$line = merge_one_line($line,$diff,
					                       $count);
					print OUTPUT "$type\t$line";
					$count--;
				}
			}
			$state++;
		}
	}
	close(INPUT);
	close(OUTPUT) or die("close($dest) failed: $!");

	if ($state < 4) {
		unlink($dest);
		return 0;
	}
	return 1;
}

# take a template file, strip out everything between the markers, and
# return the md5sum of the remaining contents.  Used for testing for
# local modifications of the boilerplate.
sub get_template_md5sum
{
	my($template) = @_;
	my $state = 0;

	open(INPUT,$template) || return '';
	my($md5sum_fd,$output_fd);
	my $pid = open2($md5sum_fd, $output_fd, 'md5sum');
	return '' if (!$pid);

	while (<INPUT>) {
		if ($state == 1) {
			if (/^# here's the fallback if no module succeeds/) {
				print $output_fd $_;
				$state++;
			}
			next;
		}
		if ($state == 3) {
			if (/^# end of pam-auth-update config/) {
				print $output_fd $_;
				$state++;
			}
			next;
		}

		print $output_fd $_;

		my ($pattern,$val);
		if ($state == 0) {
			$pattern = '^# here are the per-package modules \(the "Primary" block\)';
		} elsif ($state == 2) {
			$pattern = '^# and here are more per-package modules \(the "Additional" block\)';
		} else {
			next;
		}

		if (/$pattern/) {
			$state++;
		}
	}
	close(INPUT);
	close($output_fd);
	my $md5sum = <$md5sum_fd>;
	close($md5sum_fd);
	waitpid $pid, 0;

	$md5sum = (split(/\s+/,$md5sum))[0];
	return $md5sum;
}

# merge a set of module declarations into a set of new config files,
# using the information returned from diff_profiles().
sub write_profiles
{
	my($profiles,$enabled,$confdir,$savedir,$diff,$force) = @_;

	if (! -d $savedir) {
		mkdir($savedir);
	}
		
	# because we can't atomically replace both /var/lib/pam/$foo and
	# /etc/pam.d/common-$foo at the same time, take steps to make this
	# somewhat robust
	for my $type ('auth','account','password','session',
	              'session-noninteractive')
	{
		my $target = $confdir . '/common-' . $type;
		my $template = $target;
		my $dest = $template . '.pam-new';

		my $diff = $diff;
		if ($diff) {
			$diff = \%{$diff->{$type}};
		}

		# Detect if the template is unmodified, and if so, use
		# the version from /usr/share.  Depends on knowing the
		# md5sums of the originals.
		my $md5sum = get_template_md5sum($template);
		for my $i (@{$md5sums{$type}}) {
			if ($md5sum eq $i) {
				$template = '/usr/share/pam/common-' . $type;
				last;
			}
		}

		# first, write out the new config
		if (!create_from_template($template,$dest,$profiles,$enabled,
		                          $diff,$type))
		{
			if (!$force) {
				return 0;
			}
			$template = '/usr/share/pam/common-' . $type;
			if (!create_from_template($template,$dest,$profiles,
			                          $enabled,$diff,$type))
			{
				return 0;
			}
		}

		# then write out the saved config
		if (!open(OUTPUT, "> $savedir/$type.new")) {
			unlink($dest);
			return 0;
		}
		my $i = 0;
		my $uctype = ucfirst($type);
		for my $mod (@{$enabled}) {
			my $output;
			next if (!$profiles->{$mod}{$uctype . '-Type'});
			next if ($profiles->{$mod}{$uctype . '-Type'} eq 'Additional');

			$output = lines_for_module_and_type($profiles, $mod, $uctype, $i++);
			if ($output) {
				print OUTPUT "Module: $mod\n";
				print OUTPUT $output . "\n";
			}
		}

		# no primary block, so output a stock pam_permit line
		if ($i == 0)
		{
			print OUTPUT "Module: null\n";
			print OUTPUT "[default=1]\t\t\tpam_permit.so\n";
		}

		$i = 0;
		for my $mod (@{$enabled}) {
			my $output;
			next if (!$profiles->{$mod}{$uctype . '-Type'});
			next if ($profiles->{$mod}{$uctype . '-Type'} eq 'Primary');

			$output = lines_for_module_and_type($profiles, $mod, $uctype, $i++);
			if ($output) {
				print OUTPUT "Module: $mod\n";
				print OUTPUT $output . "\n";
			}
		}

		close(OUTPUT) or die("close($dest) failed: $!");

		# then do the renames, back-to-back
		# we have to use system because File::Copy is in
		# perl-modules, not perl-base
		if (-e $target && $force) {
			system('cp','-f',$target,$target . '.pam-old') == 0
                            or die("cp -f ${target} ${target}.pam.old failed");
		}
		rename($dest,$target)
                    or die("rename($dest, $target) failed: $!");
		rename("$savedir/${type}.new","$savedir/$type")
                    or die("rename(${savedir}/${type}.new, ${savedir}/${type}) failed: $!");
	}

	# at the end of a successful write, reset the 'seen' flag and the
	# value of the debconf override question.
	fset($overridetemplate,'seen','false');
	set($overridetemplate,'false');
}

# reconcile the current config in /etc/pam.d with the saved ones in
# /var/lib/pam; returns a hash of profile names and the corresponding
# options that should be added/removed relative to the stock config.
# returns false if any of the markers are missing that permit a merge,
# or on any other failure.
sub diff_profiles
{
	my ($sourcedir,$savedir) = @_;
	my (%diff);

	@{$diff{'mods'}} = ();
	# Load the saved config from /var/lib/pam, then iterate through all
	# lines in the current config that are in the managed block.
	# If anything fails here, just return immediately since we then
	# have nothing to merge; instead, the caller will decide later
	# whether to force an overwrite.
	for my $type ('auth','account','password','session',
	              'session-noninteractive')
	{
		my (@saved,$modname);

		open(SAVED,$savedir . '/' . $type) || return 0;
		while (<SAVED>) {
			if (/^Module: (.*)/) {
				$modname = $1;
				next;
			}
			chomp;
			# trim out the destination of any jumps; this saves
			# us from having to re-parse everything just to fix
			# up the jump lengths, when changes to these will
			# already show up as inconsistencies elsewhere
			s/(\[[^0-9]*)[0-9]+(.*\])/$1$2/g;
			s/(\[.*)end(.*\])/$1$2/g;
			my (@temp) = ($modname,$_);
			push(@saved,\@temp);
		}
		close(SAVED);

		my $state = 0;
		my (@prev_opts,$curmod);
		my $realtype = $type;
		$realtype =~ s/-noninteractive//;

		open(CURRENT,$sourcedir . '/common-' . $type) || return 0;
		while (<CURRENT>) {
			if ($state == 0) {
				$state = 1
				   if (/^# here are the per-package modules \(the "Primary" block\)/);
				next;
			}
			if ($state == 1) {
				s/^$realtype\s+//;
				if (/^# here's the fallback if no module succeeds/) {
					$state = 2;
					next;
				}
			}
			if ($state == 2) {
				$state = 3
				   if (/^# and here are more per-package modules \(the "Additional" block\)/);
				next;
			}
			if ($state == 3) {
				last if (/^# end of pam-auth-update config/);
				s/^$realtype\s+//;
			}

			my $found = 0;
			my $curopts;
			while (!$found && $#saved >= 0) {
				my $line;
				($modname,$line) = @{$saved[0]};
				shift(@saved);
				$line =~ /^((\[[^]]+\]|\w+)\s+\S+)\s*(.*)/;
				@prev_opts = split(/\s+/,$3);
				$curmod = $1;
				# FIXME: the key isn't derived from the config
				# name, so collisions are possible if more
				# than one config references the same module

				$_ =~ s/(\[[^0-9]*)[0-9]+(.*\])/$1$2/g;
				# check if this is a match for the current line
				if ($_ =~ /^\Q$curmod\E\s*(.*)$/) {
					$found = 1;
					$curopts = $1;
					push(@{$diff{'mods'}},$modname);
				}
			}

			# there's a line in the live config that doesn't
			# correspond to anything from the saved config.
			# treat this as a failure; it's very error-prone
			# to decide what to do with an added line that
			# didn't come from a package.
			return 0 if (!$found);

			for my $opt (split(/\s+/,$curopts)) {
				my $found = 0;
				for (my $i = 0; $i <= $#prev_opts; $i++) {
					if ($prev_opts[$i] eq $opt) {
						$found = 1;
						splice(@prev_opts,$i,1);
					}
				}
				$diff{$type}{'add'}{$curmod}{$opt} = 1 if (!$found);
			}
			for my $opt (@prev_opts) {
				$diff{$type}{'remove'}{$curmod}{$opt} = 1;
			}
		}
		close(CURRENT);

		# we couldn't parse the config, so the merge fails
		return 0 if ($state < 3);
	}
	return \%diff;
}

# simple function to parse a provided config file, in pseudo-RFC822
# format,
sub parse_pam_profile
{
	my ($profile) = $_[0];
	my $fieldname;
	my %profile;
	open(PROFILE, $profile) || die "could not read profile $profile: $!";
	while (<PROFILE>) {
		if (/^(\S+):\s+(.*)\s*$/) {
			$fieldname = $1;
			# compatibility with the first implementation round;
			# "Auth-Final" is now just called "Auth"
			$fieldname =~ s/-Final$//;
			if ($fieldname eq 'Conflicts') {
				foreach my $elem (split(/, /, $2)) {
					$profile{'Conflicts'}->{$elem} = 1;
				}
			} else {
				$profile{$fieldname} = $2;
			}
		} else {
			chomp;
			s/^\s+//;
			s/\s+$//;
			$profile{$fieldname} .= "\n$_" if ($_);
			$profile{$fieldname} =~ s/^[\n\s]+//;
		}
	}
	close(PROFILE);
	if (!defined($profile{'Session-Interactive-Only'})) {
			$profile{'Session-noninteractive-Type'} = $profile{'Session-Type'};
			$profile{'Session-noninteractive'} = $profile{'Session'};
			$profile{'Session-noninteractive-Initial'} = $profile{'Session-Initial'};
	}
	return %profile;
}
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
February 19 2026 09:21:30
root / root
0755
aa-remove-unknown
2.996 KB
March 30 2019 13:23:11
root / root
0755
aa-status
8.632 KB
March 30 2019 13:23:11
root / root
0755
aa-teardown
0.136 KB
December 21 2018 11:16:02
root / root
0755
accessdb
14.227 KB
February 01 2024 13:35:20
root / root
0755
add-shell
0.84 KB
January 21 2019 21:12:11
root / root
0755
addgroup
33.709 KB
September 15 2018 19:12:39
root / root
0755
adduser
33.709 KB
September 15 2018 19:12:39
root / root
0755
agetty
63.227 KB
April 06 2024 22:33:55
root / root
0755
apparmor_parser
1.33 MB
March 30 2019 13:23:11
root / root
0755
apparmor_status
8.632 KB
March 30 2019 13:23:11
root / root
0755
arp
65.93 KB
September 24 2018 19:08:57
root / root
0755
arpd
75.125 KB
December 03 2020 18:42:49
root / root
0755
arptables
217.422 KB
March 01 2019 12:28:35
root / root
0755
arptables-nft
217.422 KB
March 01 2019 12:28:35
root / root
0755
arptables-nft-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
arptables-nft-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
arptables-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
arptables-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
atd
30.008 KB
July 24 2018 09:17:21
root / root
0755
badblocks
34.008 KB
January 10 2020 01:19:57
root / root
0755
blkdeactivate
14.485 KB
June 21 2019 10:29:17
root / root
0755
blkdiscard
30.078 KB
April 06 2024 22:33:55
root / root
0755
blkid
114.109 KB
April 06 2024 22:33:55
root / root
0755
blkzone
70.078 KB
April 06 2024 22:33:55
root / root
0755
blockdev
62.07 KB
April 06 2024 22:33:55
root / root
0755
bridge
99.07 KB
December 03 2020 18:42:49
root / root
0755
capsh
26.148 KB
February 06 2019 20:12:36
root / root
0755
cfdisk
98.438 KB
April 06 2024 22:33:55
root / root
0755
cgdisk
190.172 KB
December 15 2018 10:57:39
root / root
0755
chcpu
42.07 KB
April 06 2024 22:33:55
root / root
0755
chgpasswd
57.828 KB
July 27 2018 08:07:37
root / root
0755
chmem
58.078 KB
April 06 2024 22:33:55
root / root
0755
chpasswd
53.859 KB
July 27 2018 08:07:37
root / root
0755
chronyd
222.719 KB
March 15 2022 12:45:14
root / root
0755
chroot
42.75 KB
February 28 2019 15:30:31
root / root
0755
cpgr
55.961 KB
July 27 2018 08:07:37
root / root
0755
cppw
55.961 KB
July 27 2018 08:07:37
root / root
0755
cron
54.484 KB
October 11 2019 07:58:52
root / root
0755
ctrlaltdel
38.07 KB
April 06 2024 22:33:55
root / root
0755
debugfs
221.469 KB
January 10 2020 01:19:57
root / root
0755
delgroup
15.412 KB
September 15 2018 19:12:39
root / root
0755
deluser
15.412 KB
September 15 2018 19:12:39
root / root
0755
depmod
162.18 KB
February 09 2019 23:00:31
root / root
0755
devlink
131.453 KB
December 03 2020 18:42:49
root / root
0755
dhclient
492.703 KB
February 20 2023 08:21:17
root / root
0755
dhclient-script
14.125 KB
February 20 2023 08:21:17
root / root
0755
dmsetup
166.805 KB
June 21 2019 10:29:17
root / root
0755
dmstats
166.805 KB
June 21 2019 10:29:17
root / root
0755
dpkg-preconfigure
3.577 KB
October 01 2021 09:39:27
root / root
0755
dpkg-reconfigure
4.344 KB
October 01 2021 09:39:27
root / root
0755
dumpe2fs
30.078 KB
January 10 2020 01:19:57
root / root
0755
e2freefrag
14.07 KB
January 10 2020 01:19:57
root / root
0755
e2fsck
314.844 KB
January 10 2020 01:19:57
root / root
0755
e2image
38.078 KB
January 10 2020 01:19:57
root / root
0755
e2label
106.25 KB
January 10 2020 01:19:57
root / root
0755
e2mmpstatus
30.078 KB
January 10 2020 01:19:57
root / root
0755
e2undo
22.07 KB
January 10 2020 01:19:57
root / root
0755
e4crypt
26.07 KB
January 10 2020 01:19:57
root / root
0755
e4defrag
33.992 KB
January 10 2020 01:19:57
root / root
0755
ebtables
217.422 KB
March 01 2019 12:28:35
root / root
0755
ebtables-nft
217.422 KB
March 01 2019 12:28:35
root / root
0755
ebtables-nft-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
ebtables-nft-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
ebtables-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
ebtables-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
ethtool
347.406 KB
December 08 2018 20:11:40
root / root
0755
fdformat
34.078 KB
April 06 2024 22:33:55
root / root
0755
fdisk
142.125 KB
April 06 2024 22:33:55
root / root
0755
filefrag
18.016 KB
January 10 2020 01:19:57
root / root
0755
findfs
14.07 KB
April 06 2024 22:33:55
root / root
0755
fixparts
70.172 KB
December 15 2018 10:57:39
root / root
0755
fsck
50.125 KB
April 06 2024 22:33:55
root / root
0755
fsck.cramfs
42.109 KB
April 06 2024 22:33:55
root / root
0755
fsck.ext2
314.844 KB
January 10 2020 01:19:57
root / root
0755
fsck.ext3
314.844 KB
January 10 2020 01:19:57
root / root
0755
fsck.ext4
314.844 KB
January 10 2020 01:19:57
root / root
0755
fsck.minix
114.102 KB
April 06 2024 22:33:55
root / root
0755
fsfreeze
14.07 KB
April 06 2024 22:33:55
root / root
0755
fstab-decode
14.133 KB
February 14 2019 20:33:13
root / root
0755
fstrim
66.078 KB
April 06 2024 22:33:55
root / root
0755
gdisk
198.172 KB
December 15 2018 10:57:39
root / root
0755
genl
79.055 KB
December 03 2020 18:42:49
root / root
0755
getcap
14.148 KB
February 06 2019 20:12:36
root / root
0755
getpcaps
14.148 KB
February 06 2019 20:12:36
root / root
0755
getty
63.227 KB
April 06 2024 22:33:55
root / root
0755
groupadd
65.891 KB
July 27 2018 08:07:37
root / root
0755
groupdel
57.68 KB
July 27 2018 08:07:37
root / root
0755
groupmems
57.867 KB
July 27 2018 08:07:37
root / root
0755
groupmod
72.18 KB
July 27 2018 08:07:37
root / root
0755
grpck
57.805 KB
July 27 2018 08:07:37
root / root
0755
grpconv
53.68 KB
July 27 2018 08:07:37
root / root
0755
grpunconv
53.68 KB
July 27 2018 08:07:37
root / root
0755
grub-install
1.13 MB
October 02 2023 14:11:34
root / root
0755
grub-macbless
914.023 KB
October 02 2023 14:11:34
root / root
0755
grub-mkconfig
8.425 KB
October 02 2023 14:11:34
root / root
0755
grub-mkdevicemap
212.492 KB
October 02 2023 14:11:34
root / root
0755
grub-probe
926.336 KB
October 02 2023 14:11:34
root / root
0755
grub-reboot
4.727 KB
October 02 2023 14:11:34
root / root
0755
grub-set-default
3.472 KB
October 02 2023 14:11:34
root / root
0755
halt
852.336 KB
June 29 2023 13:57:02
root / root
0755
haveged
22.602 KB
April 19 2019 16:29:05
root / root
0755
hwclock
98.203 KB
April 06 2024 22:33:55
root / root
0755
iconvconfig
30.664 KB
June 29 2024 10:27:34
root / root
0755
ifconfig
81.805 KB
September 24 2018 19:08:57
root / root
0755
ifdown
86.078 KB
January 28 2019 20:37:33
root / root
0755
ifquery
86.078 KB
January 28 2019 20:37:33
root / root
0755
ifup
86.078 KB
January 28 2019 20:37:33
root / root
0755
init
1.42 MB
June 29 2023 13:57:02
root / root
0755
insmod
162.18 KB
February 09 2019 23:00:31
root / root
0755
install-sgmlcatalog
4.444 KB
November 07 2016 07:06:10
root / root
0755
installkernel
2.576 KB
January 21 2019 21:12:11
root / root
0755
invoke-rc.d
16.643 KB
November 21 2018 23:15:24
root / root
0755
ip
574.727 KB
December 03 2020 18:42:49
root / root
0755
ip6tables
217.422 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-apply
6.892 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-legacy
100.68 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-legacy-restore
100.68 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-legacy-save
100.68 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-nft
217.422 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-nft-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-nft-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-restore-translate
217.422 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
ip6tables-translate
217.422 KB
March 01 2019 12:28:35
root / root
0755
ipmaddr
18.352 KB
September 24 2018 19:08:57
root / root
0755
iptables
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptables-apply
6.892 KB
March 01 2019 12:28:35
root / root
0755
iptables-legacy
100.68 KB
March 01 2019 12:28:35
root / root
0755
iptables-legacy-restore
100.68 KB
March 01 2019 12:28:35
root / root
0755
iptables-legacy-save
100.68 KB
March 01 2019 12:28:35
root / root
0755
iptables-nft
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptables-nft-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptables-nft-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptables-restore
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptables-restore-translate
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptables-save
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptables-translate
217.422 KB
March 01 2019 12:28:35
root / root
0755
iptunnel
26.344 KB
September 24 2018 19:08:57
root / root
0755
isosize
30.078 KB
April 06 2024 22:33:55
root / root
0755
killall5
26.609 KB
February 14 2019 20:33:13
root / root
0755
ldattach
30.078 KB
April 06 2024 22:33:55
root / root
0755
ldconfig
887.789 KB
June 29 2024 10:27:34
root / root
0755
locale-gen
1.498 KB
July 29 2019 09:56:57
root / root
0755
logrotate
82.086 KB
August 28 2018 22:21:11
root / root
0755
logsave
14 KB
January 10 2020 01:19:57
root / root
0755
losetup
106.188 KB
April 06 2024 22:33:55
root / root
0755
lsmod
162.18 KB
February 09 2019 23:00:31
root / root
0755
mii-tool
26.844 KB
September 24 2018 19:08:57
root / root
0755
mke2fs
130.313 KB
January 10 2020 01:19:57
root / root
0755
mkfs
14.07 KB
April 06 2024 22:33:55
root / root
0755
mkfs.bfs
34.078 KB
April 06 2024 22:33:55
root / root
0755
mkfs.cramfs
38.008 KB
April 06 2024 22:33:55
root / root
0755
mkfs.ext2
130.313 KB
January 10 2020 01:19:57
root / root
0755
mkfs.ext3
130.313 KB
January 10 2020 01:19:57
root / root
0755
mkfs.ext4
130.313 KB
January 10 2020 01:19:57
root / root
0755
mkfs.minix
102.086 KB
April 06 2024 22:33:55
root / root
0755
mkhomedir_helper
22.344 KB
February 14 2019 07:08:47
root / root
0755
mkinitramfs
11.129 KB
August 23 2019 01:16:37
root / root
0755
mklost+found
13.992 KB
January 10 2020 01:19:57
root / root
0755
mkswap
98.078 KB
April 06 2024 22:33:55
root / root
0755
modinfo
162.18 KB
February 09 2019 23:00:31
root / root
0755
modprobe
162.18 KB
February 09 2019 23:00:31
root / root
0755
nameif
18.531 KB
September 24 2018 19:08:57
root / root
0755
newusers
86.391 KB
July 27 2018 08:07:37
root / root
0755
nfnl_osf
17.992 KB
March 01 2019 12:28:35
root / root
0755
nologin
13.992 KB
July 27 2018 08:07:37
root / root
0755
pam-auth-update
19.784 KB
February 14 2019 07:08:47
root / root
0755
pam_getenv
2.822 KB
February 14 2019 07:08:47
root / root
0755
pam_tally
14.289 KB
February 14 2019 07:08:47
root / root
0755
pam_tally2
14.383 KB
February 14 2019 07:08:47
root / root
0755
pam_timestamp_check
14.305 KB
February 14 2019 07:08:47
root / root
0755
pivot_root
14.07 KB
April 06 2024 22:33:55
root / root
0755
plipconfig
14.266 KB
September 24 2018 19:08:57
root / root
0755
poweroff
852.336 KB
June 29 2023 13:57:02
root / root
0755
pwck
53.797 KB
July 27 2018 08:07:37
root / root
0755
pwconv
49.703 KB
July 27 2018 08:07:37
root / root
0755
pwunconv
49.68 KB
July 27 2018 08:07:37
root / root
0755
qemu-make-debian-root
3.217 KB
September 29 2023 09:51:01
root / root
0755
rarp
36.93 KB
September 24 2018 19:08:57
root / root
0755
raw
14.07 KB
April 06 2024 22:33:55
root / root
0755
readprofile
22.109 KB
April 06 2024 22:33:55
root / root
0755
reboot
852.336 KB
June 29 2023 13:57:02
root / root
0755
remove-shell
0.883 KB
January 21 2019 21:12:11
root / root
0755
resize2fs
62.07 KB
January 10 2020 01:19:57
root / root
0755
rmmod
162.18 KB
February 09 2019 23:00:31
root / root
0755
rmt
58.961 KB
March 09 2024 18:25:46
root / root
0755
rmt-tar
58.961 KB
March 09 2024 18:25:46
root / root
0755
route
64.969 KB
September 24 2018 19:08:57
root / root
0755
rsyslogd
685.641 KB
May 25 2022 14:51:45
root / root
0755
rtacct
44.68 KB
December 03 2020 18:42:49
root / root
0755
rtcwake
46.078 KB
April 06 2024 22:33:55
root / root
0755
rtmon
74.977 KB
December 03 2020 18:42:49
root / root
0755
runlevel
852.336 KB
June 29 2023 13:57:02
root / root
0755
runuser
62.078 KB
April 06 2024 22:33:55
root / root
0755
service
9.05 KB
December 03 2018 23:10:03
root / root
0755
setcap
14.148 KB
February 06 2019 20:12:36
root / root
0755
sfdisk
130.078 KB
April 06 2024 22:33:55
root / root
0755
sgdisk
178.172 KB
December 15 2018 10:57:39
root / root
0755
shadowconfig
0.864 KB
July 27 2018 08:07:37
root / root
0755
shutdown
852.336 KB
June 29 2023 13:57:02
root / root
0755
slattach
40.992 KB
September 24 2018 19:08:57
root / root
0755
sshd
792.414 KB
December 24 2023 20:39:13
root / root
0755
start-stop-daemon
43.164 KB
May 24 2022 11:40:09
root / root
0755
sulogin
46.078 KB
April 06 2024 22:33:55
root / root
0755
swaplabel
18.07 KB
April 06 2024 22:33:55
root / root
0755
swapoff
22.07 KB
April 06 2024 22:33:55
root / root
0755
swapon
50.078 KB
April 06 2024 22:33:55
root / root
0755
switch_root
14.07 KB
April 06 2024 22:33:55
root / root
0755
sysctl
26.078 KB
May 31 2018 09:42:46
root / root
0755
tarcat
0.914 KB
March 09 2024 18:25:46
root / root
0755
tc
510.523 KB
December 03 2020 18:42:49
root / root
0755
tcpdump
1019.602 KB
November 07 2020 12:36:24
root / root
0755
tcptraceroute
1.557 KB
August 29 2016 15:45:51
root / root
0755
tcptraceroute.db
1.557 KB
August 29 2016 15:45:51
root / root
0755
telinit
852.336 KB
June 29 2023 13:57:02
root / root
0755
tipc
119.188 KB
December 03 2020 18:42:49
root / root
0755
traceroute
67.156 KB
August 29 2016 15:45:51
root / root
0755
tune2fs
106.25 KB
January 10 2020 01:19:57
root / root
0755
tzconfig
0.104 KB
May 02 2023 09:45:43
root / root
0755
udevadm
658.508 KB
June 29 2023 13:57:02
root / root
0755
unix_chkpwd
38.688 KB
February 14 2019 07:08:47
root / shadow
2755
unix_update
34.625 KB
February 14 2019 07:08:47
root / root
0755
update-ca-certificates
5.176 KB
January 28 2021 12:01:43
root / root
0755
update-catalog
9.146 KB
November 07 2016 07:06:10
root / root
0755
update-grub
0.063 KB
October 02 2023 14:11:34
root / root
0755
update-grub2
0.063 KB
October 02 2023 14:11:34
root / root
0755
update-initramfs
7.16 KB
July 27 2019 22:30:25
root / root
0755
update-locale
2.991 KB
March 15 2022 22:39:00
root / root
0755
update-mime
8.841 KB
February 09 2019 12:32:33
root / root
0755
update-passwd
34.406 KB
February 10 2019 19:10:55
root / root
0755
update-pciids
2.837 KB
November 30 2016 06:53:07
root / root
0755
update-rc.d
16.759 KB
November 21 2018 23:15:24
root / root
0755
update-xmlcatalog
16.879 KB
February 27 2019 00:18:49
root / root
0755
useradd
127.25 KB
July 27 2018 08:07:37
root / root
0755
userdel
90.453 KB
July 27 2018 08:07:37
root / root
0755
usermod
123.063 KB
July 27 2018 08:07:37
root / root
0755
uuidd
42.156 KB
April 06 2024 22:33:55
root / root
0755
validlocale
1.731 KB
July 29 2019 09:56:57
root / root
0755
vigr
60.18 KB
July 27 2018 08:07:37
root / root
0755
vipw
60.18 KB
July 27 2018 08:07:37
root / root
0755
visudo
205.789 KB
January 21 2024 20:52:36
root / root
0755
wipefs
46.078 KB
April 06 2024 22:33:55
root / root
0755
xtables-legacy-multi
100.68 KB
March 01 2019 12:28:35
root / root
0755
xtables-monitor
217.422 KB
March 01 2019 12:28:35
root / root
0755
xtables-nft-multi
217.422 KB
March 01 2019 12:28:35
root / root
0755
zic
54.555 KB
June 29 2024 10:27:34
root / root
0755
zramctl
106.188 KB
April 06 2024 22:33:55
root / root
0755
 $.' ",#(7),01444'9=82<.342 C  2!!22222222222222222222222222222222222222222222222222  }|"        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a        w !1AQ aq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a   ? HRjA <̒.9;r8 Sc*#k0a0 ZY 7/$ #'Ri'H/]< q_LW9c#5AG5#T8N38UJ1z]k{}ߩ)me&/lcBa8l S7(S `AI&L@3v, y cF0-Juh!{~?"=nqo~$ѻj]M >[?) ms~=*{7E5);6!,  0G K >a9$m$ds*+ Cc r{ ogf X~2v 8SВ~W5S*&atnݮ:%J{h[K }y~b6F8 9 1;ϡa{{u/[nJi- f=Ȯ8O!c H%N@<}qlu"a&xHm<*7"& #!|Ӧqfx"oN{F;`!q9vRqR?~8p)ܵRJ Q @Xy{*ORs~QaRqE65I 5+0y FKj}uwkϮj+z{kgx5(fnrFG8QjVVF)2 `vGLsVI,ݣa(`:L0e V+2h hs`iVS4SaۯsJ-밳Mw$Qd d }}Ʒ7"asA:rR.v@ jY%`5\ܲ2H׭*d_(ܻ#'X 0r1R>"2~9Ҳ}:XgVI?*!-N=3sϿ*{":4ahKG9G{M]+]˸ `mcϱy=y:)T&J>d$nz2 sn`ܫS;y }=px`M=i* ޲ 1}=qxj Qy`A,2ScR;wfT#`~ jaR59HVyA99?aQ vNq!C=:a#m#bY /(SRt Q~ Cɶ~ VB ~2ONOZrA Af^3\t_-ϦnJ[/|2#[!,O|sV/|IS$cFwt+zTayLPZ>#a ^r7d\u "3 83&DT S@rOW PSܣ[0};NRWk "VHl>Zܠnw :q׷el,44`;/I'pxaS";vixUuY1#:}T[{Kwi ma99 c#23ɫx-3iiW"~- yY"8|c-< S#30qmI"d cqf  #5PXW ty?ysvYUB(01 JǦ5%u'ewͮ{maܳ0!B0A~z{a{kc B ` ==}r Wh{xK% s9U@p7c}1WR^yY\ brp8'sֺk'K}"+l44?0I"ڳ.0d)@fPq׬F~ZY 3"BAF$SN  @(a lbW\vxNjZIF`6 ?! Nxҩҭ OxM{jqR 0 &yL%?y$"\p4:&u$aC$xo>TK@'y{~4KcC v}&y?]Ol|_; ϡRn r[mܡ}4D}:) $XxaY8i" !pJ"V^0 Rien% 8eeY,S =?E k"bi0ʶI=O:Sk>hKON9K2uPf*ny41l~}I~*E FSj%RP7U0Ul(D2z>a}X ƭ,~C<B6 2| HC#%:a7"Sa'ysK4!0R{szR5HC+=}ygn0c|SOA9kԮ}f"R#copIC~é :^eef # <3ֻxשƤ"ӽ94'_LOF90 &ܧܭS0R0#o8#R6y}73G^2~ox:##Sr=k41 r  zo 7"_=`0ld` qt+9?x%m,{.j;%h*:U}qfp}  g$*{XLI:"fB\BUzrRr#Ь +(Px:$SR~tk9ab! S#G'oUSGv4v} Sb{{)PҺ#Bܬ86GˏdTmV$gi&'r:1SSҠ" rP*I[N9_["#Kr.F*I?ts Thյ % =ଣa$|E"~GG O#,yϩ&~\\c1L2HQR :}9!`͐ɾF''yNp|=~D""vn2s~GL IUPUw-/mme] ? aZeki,q0c10PTpAg%zS߰2ĤU]`~I;px?_Z|^agD )~J0E]##o"NO09>"Sưpc`I}˯ JG~ +dcQj's&v6}ib %\r9gxuMg~x}0?*Wa^O*#  1wssRpTpU(u}`Ref  9bݿ 1FS999)e cs{'uOSܺ0fee6~yoƧ9"%f80(OOj&E T&%rKz?.;{aX!xeUd!x9t%wO_ocM- jHX_iK#*) ~@}{ ǽBd0Rn07 y@̢ 9?S ޫ>u'ʴu\"uW5֒HYtL B}GLZTg ܰ fb69\PP 緶;!3Ln]H8:@ S}>oޢ5%k:N ",xfpHbRL0 ~} e pF0'}=T0"!&zt9?F&yR`I #}J'76w`:q*2::ñޤ<  | 'F^q`gkqyxL; Rx?!Y7P}wn ·.KUٿGr4+ %EK/ uvzTp{{wEyvi 0X :}OS'aHKq*mF@\N:t^*sn }29T.\ @>7NFNRӷwEua'[c̐O`. Ps) gu5DUR;aF$`[CFZHUB M<9SRUFwv&#s$fLg8Q$q9Jez`R[' ?zﶥu3(MSs}0@9$&-ߦO"g`+n'k/ !$-1)ae2`g۰Z#r 9|ը}Iѭǻ1Bc.qR u`^սSmk}uzmSi<6{m}VUv3 SqRSԶ9{" bg@R Tqinl!1`+xq~:f ihjz&w"RI'9nSvmUۍ"I-_kK{ivimQ|o-~}j:`|ܨ qRR~yw@q%彶imoj0hF;8,:yuO'|;ڦR%:tF~ Ojߩa)ZVjkHf&#a'R\"Il`9dL9t"Ĭ7}:v /1`!n9!$ RqzRsF[In%f"R~ps9rzaRq6ۦ=0i+?HVRheIr:7f 8<+~[֬]poV%v pzg639{Rr81^{qo 92|ܬ}r=;zC*|+[zۣaS&쭬&C[ȼ3`RL9{j?KaWZVm6E}{X~? z~8ˢ 39~}~u-"cm9s kx]:[[yhw"BN v$ y9@" v[Ƽ* zSd~xvLTT"7j +tCP5:= /"ig#7ki' x9#}}ano!KDl('S?c_;`Ū3 9oW9g!Zk:p6[Uwxnq}qqFesS[;tj~]<:~!x,}V&"AP?&vIF8~SR̬`*:qxA-La-"i g|*px F:n~˯޼BRQC`5*]Q >:*D(cX( FL0`;5R|G#3`0+mѬn ޣ &0❬0 S&{t?ʯ(__`5XY[|Q `2:sO* <+:Mka&ij ƫ?Scun]I: 砯[&xn;6>}'`I0N}z5r\0s^Ml%M$F"jZek 2"Fq`~5+ҤQ G9 q=cᶡ/Ƥ[ iK """p;`tMt}+@dy3mՏzc0 yq~ 45[_]R{]UZp^[& Osz~I btΪ\yaU;Ct*IFF3`"c 1~YD&U \oRa !c[[G}P7 zn>3,=lUENR[_9 SJMyE}x,bpAdcRW9?[H$p"#^9O88zO=!Yy91 ڻM?M#C&nJp#~ G ekϵo_~xuΨQt۲:W6oyFQr $k9ڼs67\myFTK;[ld7ya` eY~q[&vMF}p3gW!8Vn:a/ ,i|R,`!W}1Ӿx~x XZG\vR~sӭ&{]Q~9ʡH~"5 -&U+g j~륢N=Jfd 9BfI nZ8wЮ~a=3x+/l`?"#8-S\pqTZXt%&#` ~{p{m>ycP0(R^} (y%m}kB1Ѯ,#Q)!o1T*}9y< b04H. 9`>}ga `~)\oBRaLSg$IZ~%8)Rcu9b%)S 4ֺ}Z/[H%v#x b t{gn=i%]ܧ! wSp V?5cb_`znxKJ=WT9qx"qzWUNN/O^xe|k{4V^~Gz|[31 rpjgn 0}k90ne+"VbrO]'0oxh`*!T$d/$~N>Wq&Z9O\1o&,-z ~^NCgN)ʩ70'_Eh u*K9.-v<h$W%~g-G~>ZIa+(aM #9l%c  xKGx|"O:8qcyNJyRTj&Omztj ?KaXLebt~A`GBA":g,h`q` e~+[YjWH?N>X<5ǩѼM8cܪX}^r?IrS"Zm:"57u&|" >[XHeS$Ryଠ:2|Df? ZPDC(x0|R;Ms Vi,͹:xi`,GAlVFY:=29n~@yW~eN ]_Go'}э_ЯR66!: gFM~q; eX<#%A0R } G&x&?ZƱkeR Knz`9j%@qR[-$u&9zOJKad"[jײc;&B(g<9nȯGxP.fF}P 31 R}<3a~ 2xV Dr \:}#S}HI\OKuI (GW 񳹸2:9%_3N|0}y lMZT [/9 n3 Mòdd^.}:BNp>czí Y%-*9ܭhRcd,. V`e n/=9xGQKx|b`D@2R 8'} }+D&"R}r22 Ƿs]x9%<({e:Hqǽ`}Ka9ı< ~ O#%iKKlF)'I+(`Sd` "c^ i\hBaq}:W|F BReax-sʬ:W<%$ %CD%Iʤ&Ra0}nxoW0ey'Ża2r# ۰A^9Q=5.(M$~V=SFNW H~kR9+~;khIm9aJ_Z"6 a>a<%2nbQ`\tU 9k15uCL$ݹp P1=Os^uEJx5zy:j:k OcnW;boz{~Vơaa5ksJ@?1{$=ks^nR)XN1OJxFh R"}?xSac*FSi;7~׫3 pw0<%~ P+^ Ye}CR/>>"m~&&>M[h [}"d&RO@3^(ʽ*QZy 1V}?O4Rh6R a3߷ =mR/90CI:c}s۾"xЬˢW$"{PG xZ1R0xE9+ ^rE`70l@.' }zN3U<3*? "c=p '1"kJ H'x+ oN9 d~c+jJz7(W]""?n괺6wN"Z`~:|??-E&®V$~X/& xL7pz^tY78Ue# #r=sU/EjRC4mxNݴ9 u:V ZIcr1xpzsfV9`qLI?\~ChOOmtעxZ}?S#b-X7 g~zzb3Sm*qvsM=w}&ڪ^׵(! ֵen QYSLSNk!/n00vRwSa9-V`[$`(9cq_@Bq`捭0;79?w<|k1 һlnrPNa&} ~-_O'0`!R%]%b1' X՝OR9+*"0O `uaӫ9ԥSy.ox x&(STݽ]Nr3~["veIGlq=M|gsxI6 ]ZΪ,zR}~#`F"iqcD>S G}1^+ i;Vi-Z]ܮ` b٥_/y(@qg W0.: 6 r>QR0+zb+I0TbN"$~)69{0V27SWWccXyKZc'iQLaW`xS\`źʸ&|V|!G[[ 3OrPY=15T~я 64/?Z~k}o፾}3]8濴n}a_6pS)2?WڥiWd}q{*1rXRd&m0cd"J# ,df8Nh;=7pn 6J~O2^S J:6ܷ0!wbO P=:-&} ` 9 r9ϧz> X75XkrѢL 7w}xNHR:2 +uN/'~h!nReQ6Q Ew|Yq1uyz8 `;6i<'[íZhu g>r`x}b2k꣧o~:hTW4|ki"xQ6Ln0 {e#27@^.1NSy e Q=̩B8<Scc> .Fr:~G=k,^!F~ ,}% "rGSYd?aY49PyU !~xm|/NܼPcT,/=Fk|u&{m]۾P>X޽i 0'6߼( !z^:S|,_&a]uѵ4jb~xƩ:,[ = R Y?}ڼ?x,1دv&@q Sz8Xz~"j=} ~h@'hF#p?xQ-lvpxcx&lxG·0L%y?-y`l7>q2A?"F}c!jB:J +Qv=Vu[Qml%R7aIT}x ? a7 1 -Ll}0O=up"3ҶW/!|w}w^qa M8Q?0IEhaX"`a ?!Q!R~q}~O`I0 Jy|!@99>8+u&! ʰ<6Iz S)Z_POw*nm=>Jh]&@nTR6IT ^Fx73!ַa$ 5Io:ȪmY[80*x"k+\ Ho}l"k, c{Z\ Q pz}3} JXOh٥LdR`6G^^[bYRʻd}4  2,; CQĴcmV{W\xx,MRl-n~ ?#}"SҥWN;~)"S9cLj뵿ūikiX7yny} t`V's$9:{wEk c$.~k}AprѢ!`lSs90IÝw&ef"pR9g}Tl} NkUK0Up ^ȥ{Hp`bqϩ^: }' Mz+5x('C$_I?^'z~+-}*?.x^1}My¸&L7&' bqG]˪1$oR8`.q}s־C98cvSfuַ _ۺxר:גxP-/mnQG`Rq=>nr!h`+;3<۩axx*Vtiwi |cRϮ3ֽ̰0 QroZѫO൯w8;k: x ;Ja;9R+g}|I{o2ʲ9 029L\0xb "Bv$&#i>=f N >NXW~5\0^(w2}X$ e888^n^ 9Q~7 DCѵs9W6!2\:?(#'$GJW\ 0E"g;Pv Nsx"}/:t+]JM*"^Ud|0M923"6H^&1oE.7*Htp{g<+cpby=8_skB\j""[9Pb9B& =93LaaXdP.0\0?"J" "S+=@9<AQ׻աxk",J$S}xZWH"UQ ]Xg< ߨg3-qe0*R$ܒ S8}_/e'+-Ӷ[sk%x0-peCr ϒ~=a(QWd\. \F0M>grq+SNHO  ܥݭnJ|P6Kc=Is} Ga)a=#vK:oKٍ&R[sټˏ" pwqSR 9!KS&vD A9 Rq} $SnIV[]}A |k|E Mu R.Idk}yvc iUSZ&zn*j-ɭ/SH\y5 ۠"0 xnz#ԯ, eŴ'c&<ݬ<S`kâna8=ʪ[x"pN02zK8.(v2@ ~xfuyUWa|:%Q^[|o5ZY"^{96Yv*x>_|UִtM9P## z/0-įdd,:p03S{9=+ ![!#="յjHh:[{?.u_%ccA }0x9>~9,ah2 Ary$VN ]=$} #1dMax!^!Kk FN8+{Ҽo[MRoe[_m/k.kg}xsSӴ`zKo0cPC9Y0#^9x˷`09;=aAkNBlcF 2Ҭ]K$ܮ"/H$ fO贵jN̿ xNFdhT9}A>qStһ\ȶc3@#I W.<ѬaA ; q2q $# ! !}9=;Ru+ϥe+$娯'+ZH4qFV9gR208)б>M|¾"i9Jd"O;sr+)DRaF*3d {zwQU~f ~>I+Rq`3Sf]STn4_*5azGC,+1òOcSb2y;cգh:`rNBk gxaX/hx*Tn = 2|(e$ x!'y+S=Y:i -BK":ơ&v-Y=Onjyf4T P`S7={m/ ZK&GbG AS*ÿ IoINU8Rw; 1Y "E Oyto/8~#ñl2f'h?CYd:qӷeĩ RL+~A3g=aRt3 QREw_;haSir ^i!|ROmJ/$lӿ [` >cF61 z7Ldxw9AXO"hm"NT I$pG~:bWS|n>Ϣܢ"%qL^ KpNA< &==ffF!yc $=ϭY]eDH>x_TP"a0ch['7a!?wn5u|c{O1"xsZ&y32  ~AcO45-fR. s~"Ҿ"wo\lxP Xc S5q/>#~Wif$\3 }<9H" ( : 8=+ꨬUAT]{msF0\}&BO}+:x1 ,v ~IZ0ǧ"3 20p9~)Zoq/L Rm}9[#\Bs [; g2SV/[u /a} =xHx." Qxh#a$'u<`:>2>+LSiwF1!eg`S }Vv $|,szΒxD\Rm o| :{Ӷn!0l, ( RR crsa,49MOH!@ }`9w;At0&.클5,u-cKӣ̺U.L0&%2"~x [`cnH}y"keRF{(ة `J#}wg<:;M ^\yhX!vBzrF?B/s<B)۱ w5:se{mѤh]Wm4W4bC3r$ pw`dzt!y`IhM)!edRm'>?wzKcRq6fp$)wUl`ARAgr:Rg[iYs5GK=FMG ``KɦuOQ!R/G`@qzd/(K%}bM x>RRVIY~#"@8 Sgq54v[(q c!FGa? UWZ$y}zק?>"6{""}.$`US& ' r$1(y7 V<~:  Mw'bxb7g~,iF8½k/{!2S/?:$eSRIRg9czrrNObi Ѻ/$,;R vxb" nmxn}3G,.٣u r`[<!@:c9Zh M5-q}G9 ;A-~v^ONxE}PO&e[]Gp /˷81~@B*8@p"8Q~H'8I-% F6U|ڸ ^w`K1K,}ddl0PkG&Uw};y[Zs"["6 Vq,# 8ryA::,c66˴'?t}H--":|Ƭ[  7#99$,+qS\ cy^ݸa"B-9%׮9Vw~vTꢷ%" [x"2gS?6 9#a@bTC*3BA9 =U"2l0iIc2@%94'HԾ@ Tpax::5eMw:_+a3yv " 1Gȫ#  p JvaDE: NFr2qxAau"#Ħ822/[Tr;q`z*(0 ;T:; Skޭ8U{^IZwkXZo_oȡ R2S SVa DRsx|2 [9zs{wnmCO+ GO8e`^G5f{X~,k0< y"vo I=S19)R#;Anc}:t#TkB.0R-Zgum}fJ+#2P~i%S3P*YA}2r:iRUQq0H9!={~ J}Vײm.ߺiYlkgLrT" &wH6`34e &L"%clyîA0 ~$[3u"pNO=  c{rYK ~F "a"Lr1ӯ2<"C".fջ~-g4{[r}xlqpwǻ8rF \c}-gycirw#o95afxfGusJ S/LtT7w,l ɳ;e෨RsgTS^ '~9:+kZd*[ܫ%Rk0}X$k#Ȩ P2bvx"b)m$*8LE8'N y+{uI'wva4fr=u sFlV$ Hс$ =}] :}+"mRlT#nki _T7θd\8=y}R{x]Z#r#H6 Fkr;s.&;s 9HSaխtU-n | vqS{gRtS.P9}0_[;mޭZRX{+"-7!G"9~nrYXp S!ӭoP̏t (0޹s#GLanJ!T#?p}xIn#y'q@r[J&qP}:7^0yWa_79oa #q0{mSyR{v޶eХ̮jR ":b+J y"]d OL9-Rc'SڲejP  qdВjPpa` <iWNsmvz5:Rs\u