view release on metacpan or search on metacpan
lib/Config/Context.pm view on Meta::CPAN
$section_hash,
];
}
}
elsif ($match_type =~ /^substring$/i) {
if ((index $target_string, $section_string) != ($[ - 1)) {
# store matches as array ref where first element is
# the section's MergePriority, the second element is
# the length and the third is the config hash of
# matching section
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Config/General/Match.pm view on Meta::CPAN
$section_hash,
];
}
}
elsif ($match_type =~ /^substring$/i) {
if ((index $target_string, $section_string) != ($[ - 1)) {
# store matches as array ref where first element is
# the section's MergePriority, the second element is
# the length and the third is the config hash of
# matching section
view all matches for this distribution
view release on metacpan or search on metacpan
t/Tie/IxHash.pm view on Meta::CPAN
=head1 BUGS
You cannot specify a negative length to C<Splice>. Negative indexes are OK,
though.
Indexing always begins at 0 (despite the current C<$[> setting) for
all the functions.
=head1 TODO
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Config/IOD/Expr.pm view on Meta::CPAN
(?: \. [0-9]+ )?
(?: [eE] [-+]? [0-9]+ )?
)
)
(?<VAR> \$[A-Za-z_][A-Za-z0-9_]{0,63})
(?<STR_SINGLE>
(
'
(?:
view all matches for this distribution
view release on metacpan or search on metacpan
t/01-basic.t view on Meta::CPAN
eval { Config::Identity->load_check('pause-alternate',[qw/notfound1 notfound2 password/]) };
like( $@, qr/^Missing required fields: notfound1 notfound2/, "load_check detected missing fields" );
my $checker = sub {
is( "$_", "$_[0]", "checker sub has same \$_ and \$[0]" );
cmp_deeply( $_, $expected, "checker sub has expected fields in \$_" );
return "notfound1"; # fake error
};
eval { Config::Identity->load_check('pause-alternate', $checker) };
view all matches for this distribution
view release on metacpan or search on metacpan
# treated specially .. window is printed with non-empty windows,
# window_empty is printed with empty windows
window = "{sb $winref:$itemname{sbmode $M}}";
window_empty = "{sb $winref{sbservertag $tag}}";
prompt = "{prompt $[.15]itemname}";
prompt_empty = "{prompt $winname}";
topic = " $topic";
topic_empty = " Irssi v$J - http://irssi.org/help/";
# all of these treated specially, they're only displayed when needed
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Config/Manager/Conf.pm view on Meta::CPAN
################################################################################
sub _name_ {
my $key = pop;
my $sec = pop || $DEFAULT;
return "\$[$sec]{$key}";
}
sub _not_found_ {
return "Configuration constant " . _name_(@_) . " not found";
}
lib/Config/Manager/Conf.pm view on Meta::CPAN
else { return( $variable, $rest ); }
}
}
else {
if ($section eq '') { $@ = "found '\$' followed by '$first', expecting '{' or [A-Za-z]"; }
else { $@ = "found '\$[$section]' followed by '$first', expecting '{' or [A-Za-z]"; }
return ();
}
}
1;
lib/Config/Manager/Conf.pm view on Meta::CPAN
TMP = $ROOT\tmp
# Ein neuer Abschnitt:
[FILES]
# Auch Variablen eines anderen Abschnitts sind verfuegbar:
TMPFILE1 = $[DIRECTORIES]{TMP}\tempfile1.txt
# Wer unbedingt Anfuehrungszeichen verwenden moechte, bitteschoen:
TMPFILE2 = "$[DIRECTORIES]{TMP}\tempfile2.txt"
# Noch ein Abschnitt
[DIVERSES]
# Wenn ich ein Dollarzeichen '$' brauche:
MS = "Micro$$oft"
# Backslash '\' hat keine Sonderbedeutung:
SW = Sun\$MS\IBM
# Wenn ich ein '$' vor einem '$' von einer Substitution brauche:
BD = $$$[SO]{WHAT}
# Variablennamen koennen in geschweifte Klammern gesetzt werden,
# muessen aber (ausser bei Indirektion) nicht:
MESSAGE1 = Schreibe alles nach $[FILES]TMPFILE1
MESSAGE2 = Schreibe alles nach $[FILES]{TMPFILE2}
# Ein Schluessel-Wert-Paar kann durch einen Dollar eingeleitet werden, um
# sowohl Shell- als auch Perl-Programmierer zufriedenzustellen :-). Der
# Dollar ist aber ohne Bedeutung, d.h. folgende Zeilen sind gleichwertig:
$KEY = Value
lib/Config/Manager/Conf.pm view on Meta::CPAN
wird dabei in eckige Klammern ("[]") eingefasst. Der Variablen-
name kann zur Vermeidung von Mehrdeutigkeiten in geschweifte
Klammern ("{}") eingefasst werden. Zwischen Abschnittsnamen und
Variablennamen darf kein Leerraum stehen. Beispiele:
$Var, $[Sec]Var, ${Var}, $[Sec]{Var}, Text${Var}Text
Der Name eines Abschnitts oder einer Variablen muss mit einem
Buchstaben beginnen, gefolgt von beliebig vielen Zeichen (auch
null) aus a-z, A-Z, 0-9, Unterstrich "_" und Bindestrich "-". Der
Name darf nicht mit einem Bindestrich enden.
lib/Config/Manager/Conf.pm view on Meta::CPAN
3) Die Indirektion ist grundsaetzlich nur zwischen Klammern
moeglich, da zwei aufeinanderfolgende Dollarzeichen ("$")
fuer ein literales Dollarzeichen stehen ("$$var" steht
fuer den literalen String "$var"). Beispiele:
$VAR, ${VAR}, ${$var}, $[SEC]VAR, $[SEC]{VAR},
$[SEC]{$var}, $[$sec]VAR, $[$sec]{VAR}, $[$sec]{$var}
4) Bei einer Indirektion kann eine Variable den Namen eines Abschnitts
ODER den Namen einer Variablen enthalten, aber nicht beides; z.B.:
$Section = Person
$Variable = Name
$Fullname = $[$Section]{$Variable}
Dagegen geht folgendes NICHT:
$Variable = Person::Name
$Fullname = ${$Variable}
lib/Config/Manager/Conf.pm view on Meta::CPAN
A S |
V S
V = $X |
${X} |
$[X]X | (Interpolation)
$[X]{X} |
---------------------------------
${V} |
$[V]X | (Indirektion)
$[V]{X} |
$[X]{V} |
$[V]{V}
X = (A-Za-z)(A-Za-z0-9_-)*
Erlaeuterungen:
lib/Config/Manager/Conf.pm view on Meta::CPAN
Der Wert "1" bedeutet "alles in Ordnung", der Wert "0" bedeutet, dass
es sich um eine Fehlermeldung handelt.
Der zweite Wert gibt den Namen der Konfigurationskonstanten in der Form
"C<$[SECTION]{VARIABLE}>" an.
Der dritte Wert enthaelt entweder den Wert der Konfigurationskonstanten
oder eine Fehlermeldung.
Der vierte Wert des Tupels gibt die Quelle an, aus dem die betreffende
lib/Config/Manager/Conf.pm view on Meta::CPAN
=item *
C<_name_([section,] key)>
Ich gebe den Namen in der Form C<$[section]{key}> zurueck. Ist
keine Section oder die DEFAULT-Section angegeben, dann wird als
Section C<[DEFAULT]> geschrieben.
=item *
C<_not_found_([section,] key)>
Ich gebe den String "C<Configuration constant $[section]{key} not found>"
zurueck. Ist keine Section oder die DEFAULT-Section angegeben,
dann wird als Section C<[DEFAULT]> geschrieben.
=item *
C<_read_only_([section,] key)>
Ich gebe den String "C<Configuration constant $[section]{key} is read-only>"
zurueck. Ist keine Section oder die DEFAULT-Section angegeben,
dann wird als Section C<[DEFAULT]> geschrieben.
=back
view all matches for this distribution
view release on metacpan or search on metacpan
testin/hands_m.eps.hqx view on Meta::CPAN
!mrrd!2Irq`$jrmd!r2rN!2Mr!3!!!#lq!2Mrj3$lrmd!q2rm!2MrmJ$crr`!m[q
h!26rm`$hrr`!qIr-!2[rjJ$irri!!#lp!2Rrj3$lrm`!q2rp!2MrmJ$crrX!mrq
h!26rm`$hrrd!qIr,!2[rjJ$irri!!#lp!2MrjJ$mrmS!q2rq!2Mrm3$drrX!mrq
i!22rm`$hrri!qIr+!2[rjJ$irri!!$$p!2MrjJ$mrmN!q2m"!!$hrr)!mrrl!26
rZ!$drr)!prm"!!$irmS!qrrQ!2Rrr3!!,[`!qIrR!2[ra`$jr`!!prrb!22rq`$
erlF!p2rb!2Ir!!$irmJ!r2rR!2Mrr3!!*[`!q2rS!2[raJ$[rr%!p2rk!2ErZ!$
crr)!l[r(!2[rk!$irrd!!#Em!2Mrk!$mrm3!m2ra!22rq`$frlJ!p2ra!2$ra3$
lrqJ!q2rp!!!Qq`$jrqJ!r2r$!2(rm3$crrS!p[qk!22rm3$arm-!r2rS!2Rrr!!
!*[X!qIrS!2cr`J$brr!!mrrk!2IrZJ$crr%!m[r#!2crk!$jrr`!!#El!2Rrk3$
lrm%!mrr`!22rqJ$hrlX!mrr`!22r`3$mrqN!q2rm!!!Qq`$jrqN!r2r!!22rl`$
crrS!prqm!22rm!$drm!!qrrU!2Mrr!!!*[X!q2rU!2cr[`$drqm!m[rk!2Mr[3$
testin/hands_m.eps.hqx view on Meta::CPAN
(!2MrSJ$brp%!!",3!2(rT!$irmF!q2qM!2,rd!!!%Xm!mIqP!2Mra`$irk3!mIr
3!!!5cJ$arkB!q2r(!2MrT3$armm!!",0!2(rT`$irmF!prqR!2(rcJ!!%X`!mIq
S!2Mra`$hrkJ!mIr0!!!5b`$arkN!q2r(!2IrUJ$`rm`!!",+!2$rU`$irmB!q2q
V!2$rb`!!%XN!m2qY!2IraJ$irk`!m2r+!!!5b!$`rki!prr'!2MrV3$`rmN!!",
(!1rrX!$hrmB!prq`!1rrb!!!%XB!lrqa!2IraJ$hrl%!lrr(!!!5a3$Zrl3!p[r
'!2IrX`$[rm8!!",$!1rrY3$frmB!p[qe!1rra!!!%X)!l[qi!2Era3$frlF!l[r
$!!!5`3$YrlS!p[r%!2ErZJ$Yrm)!!",!!1hr[!$erm3!p[ql!1hr`3!!%Vi!lIq
q!2Ara!$erli!lIqr!!!5[3$Xrm%!pIr$!26r`3$Xrli!!"+m!1[ra!$drm-!mrr
%!1[r[3!!%VS!krr(!22r`J$crmJ!k[ql!!!5Z3$TrmX!mrr"!2,rb`$TrlS!!"+
h!1RrcJ$brm%!mIr1!1RrZ!!!%V8!k2r5!2(r`!$arp)!k2qf!!!5Y!$QrpF!m2q
q!2$re`$Qrl8!!"+b!1Arh!$[rld!lrrE!1ArX`!!%V!!irrK!1lr[!$Zrq%!irq
a!!!5VJ$KrqJ!l2qk!1crk3$Jrkm!!"+X!0hrm3$UrlJ!k[ra!0hrV3!!#US!ZIq
f!,RrU`!!#UJ![2qd!,crU3!!#UB![rqb!,rrT`!!#U3!`[q`!-2rT!!!#U%!a[q
Y!-MrS3!!#Ti!brqU!-crRJ!!#TX!d2qQ!0(rQ`!!#TF!e[qL!0IrP`!!#T-!hIq
F!0lrN`!!#Si!j[q8!1MrM3!!r`!!!3!!!&P,!!"B5`!!!1d"JaS%&JS!!!!F!+S
!"P4&69!!!!!k8%&(43!!!%C69&)J!!!!8P088L-!!!"H9%9B9!!!!'T`EQpd!!!
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Coro/Amazon/SimpleDB.pm view on Meta::CPAN
require Time::HiRes and Time::HiRes->import('time') if $debug;
my ($start, $duration) = (0, 0);
my @responses = ();
$self->bug("starting async enqueues");
$start = time() if $debug;
for ($[ .. $#requests) {
my $idx = $_;
my $request = $requests[$idx];
$self->bug("adding request $request");
my $coro = async {
my ($start, $duration) = (0, 0);
lib/Coro/Amazon/SimpleDB.pm view on Meta::CPAN
} @{ $response->getGetAttributesResult->getAttribute }
}
: $response
;
($item_name => $attributes);
} $[ .. $#items;
return \%items;
}
view all matches for this distribution
view release on metacpan or search on metacpan
t/12_blessed.t view on Meta::CPAN
ok ($js->encode ($o2) eq "null");
ok ($js->encode ($o3) eq "null");
$js->allow_blessed->convert_blessed;
ok ($js->encode ($o1) eq '{"__":""}', 'allow_blessed + convert_blessed');
SKIP: {
skip "5.6", 2 if $[ < 5.008;
# PP returns null
$r = $js->encode ($o2);
ok ($r eq 'null', "$r");
$r = $js->encode ($o3);
TODO: {
view all matches for this distribution
view release on metacpan or search on metacpan
eg/chat2new.pl view on Meta::CPAN
# returns undef if can't find a pty.
# Modify "/dev/pty" to "/dev/pts" for Dell Unix v2.2 (aka SVR4.04). Joe Doupnik.
sub _getpty { ## private
local($_PTY,$_TTY) = @_;
$_PTY =~ s/^([^']+)$/(caller)[$[]."'".$1/e;
$_TTY =~ s/^([^']+)$/(caller)[$[]."'".$1/e;
local($pty, $tty, $kind);
if( -e "/dev/pts000" ){ ## mods by Joe Doupnik Dec 1992
$kind = "pts"; ## SVR4 Streams
} else {
$kind = "pty"; ## BSD Clist stuff
view all matches for this distribution
view release on metacpan or search on metacpan
t/01-crypt-password.t view on Meta::CPAN
}
};
$special->{modular} = sub {
diag "modular special";
my $c = password("hello0");
like $c, qr/^\$5\$(........)\$[a-zA-Z0-9\.\/]{43}$/, "crypted";
my $c2 = password("hello0");
like $c2, qr/^\$5\$(........)\$[a-zA-Z0-9\.\/]{43}$/, "another crypted";
isnt $c, $c2, "generated different salts";
$DB::single = 1;
ok(check_password($c, "hello0"), "check passed");
ok(check_password($c2, "hello0"), "check passed");
ok(!check_password($c, "helu"), "check failed");
view all matches for this distribution
view release on metacpan or search on metacpan
src/aclocal.m4 view on Meta::CPAN
lt_cl_help="\
\`$as_me' creates a local libtool stub from the current configuration,
for use in further configure time tests before the real libtool is
generated.
Usage: $[0] [[OPTIONS]]
-h, --help print this help, then exit
-V, --version print version number, then exit
-q, --quiet do not print progress messages
-d, --debug don't remove temporary files
src/aclocal.m4 view on Meta::CPAN
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
Copyright (C) 2008 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
while test $[#] != 0
do
case $[1] in
--version | --v* | -V )
echo "$lt_cl_version"; exit 0 ;;
--help | --h* | -h )
echo "$lt_cl_help"; exit 0 ;;
--debug | --d* | -d )
debug=: ;;
--quiet | --q* | --silent | --s* | -q )
lt_cl_silent=: ;;
-*) AC_MSG_ERROR([unrecognized option: $[1]
Try \`$[0] --help' for more information.]) ;;
*) AC_MSG_ERROR([unrecognized argument: $[1]
Try \`$[0] --help' for more information.]) ;;
esac
shift
done
if $lt_cl_silent; then
src/aclocal.m4 view on Meta::CPAN
AC_MSG_RESULT([$xsi_shell])
_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
AC_MSG_CHECKING([whether the shell understands "+="])
lt_shell_append=no
( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
>/dev/null 2>&1 \
&& lt_shell_append=yes
AC_MSG_RESULT([$lt_shell_append])
_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
src/aclocal.m4 view on Meta::CPAN
}
# func_arith arithmetic-term...
func_arith ()
{
func_arith_result=$(( $[*] ))
}
# func_len string
# STRING may not start with a hyphen.
func_len ()
src/aclocal.m4 view on Meta::CPAN
}
# func_arith arithmetic-term...
func_arith ()
{
func_arith_result=`expr "$[@]"`
}
# func_len string
# STRING may not start with a hyphen.
func_len ()
{
func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
}
_LT_EOF
esac
src/aclocal.m4 view on Meta::CPAN
# func_append var value
# Append VALUE to the end of shell variable VAR.
func_append ()
{
eval "$[1]+=\$[2]"
}
_LT_EOF
;;
*)
cat << \_LT_EOF >> "$cfgfile"
# func_append var value
# Append VALUE to the end of shell variable VAR.
func_append ()
{
eval "$[1]=\$$[1]\$[2]"
}
_LT_EOF
;;
esac
src/aclocal.m4 view on Meta::CPAN
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
if test "$[*]" = "X"; then
# -L didn't work.
set X `ls -t "$srcdir/configure" conftest.file`
fi
rm -f conftest.file
if test "$[*]" != "X $srcdir/configure conftest.file" \
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "$[2]" = conftest.file
)
then
# Ok.
:
else
view all matches for this distribution
view release on metacpan or search on metacpan
}
sub binary2ascii {
return str2ascii(binary2str(@_));
}
sub ascii2binary {
return str2binary(ascii2str($_[$[]));
}
sub str2binary { my @str = split //, $_[$[];
my @intarray = (); my $ii = $[;
while (1) {
last unless @str; $intarray[$ii] = (0xFF & ord shift @str)<<24;
last unless @str; $intarray[$ii] |= (0xFF & ord shift @str)<<16;
last unless @str; $intarray[$ii] |= (0xFF & ord shift @str)<<8;
last unless @str; $intarray[$ii] |= 0xFF & ord shift @str;
push @str, chr(0xFF & ($i>>24)), chr(0xFF & ($i>>16)),
chr(0xFF & ($i>>8)), chr(0xFF & $i);
}
return join '', @str;
}
sub ascii2str { my $a = $_[$[]; # converts pseudo-base64 to string of bytes
local $^W = 0;
$a =~ tr#-A-Za-z0-9+_##cd;
my $ia = $[-1; my $la = length $a; # BUG not length, final!
my $ib = $[; my @b = ();
my $carry;
while (1) { # reads 4 ascii chars and produces 3 bytes
$ia++; last if ($ia>=$la);
$b[$ib] = $a2b{substr $a, $ia+$[, 1}<<2;
$ia++; last if ($ia>=$la);
$carry=$a2b{substr $a, $ia+$[, 1}; $b[$ib] |= ($carry>>4); $ib++;
# if low 4 bits of $carry are 0 and its the last char, then break
$carry = 0xF & $carry; last if ($carry == 0 && $ia == ($la-1));
$b[$ib] = $carry<<4;
$ia++; last if ($ia>=$la);
$carry=$a2b{substr $a, $ia+$[, 1}; $b[$ib] |= ($carry>>2); $ib++;
# if low 2 bits of $carry are 0 and its the last char, then break
$carry = 03 & $carry; last if ($carry == 0 && $ia == ($la-1));
$b[$ib] = $carry<<6;
$ia++; last if ($ia>=$la);
$b[$ib] |= $a2b{substr $a, $ia+$[, 1}; $ib++;
}
return pack 'C*', @b; # 2.16
}
sub str2ascii { my $b = $_[$[]; # converts string of bytes to pseudo-base64
my $ib = $[; my $lb = length $b; my @s = ();
my $b1; my $b2; my $b3;
my $carry;
while (1) { # reads 3 bytes and produces 4 ascii chars
if ($ib >= $lb) { last; };
$b1 = ord substr $b, $ib+$[, 1; $ib++;
push @s, $b2a{$b1>>2}; $carry = 03 & $b1;
if ($ib >= $lb) { push @s, $b2a{$carry<<4}; last; }
$b2 = ord substr $b, $ib+$[, 1; $ib++;
push @s, $b2a{($b2>>4) | ($carry<<4)}; $carry = 0xF & $b2;
if ($ib >= $lb) { push @s, $b2a{$carry<<2}; last; }
$b3 = ord substr $b, $ib+$[, 1; $ib++;
push @s, $b2a{($b3>>6) | ($carry<<2)}, $b2a{077 & $b3};
if (!$ENV{REMOTE_ADDR} && (($ib % 36) == 0)) { push @s, "\n"; }
}
return join('', @s);
}
sub asciidigest { # returns 22-char ascii signature
return binary2ascii(binarydigest($_[$[]));
}
sub binarydigest { my $str = $_[$[]; # returns 4 32-bit-int binary signature
# warning: mode of use invented by Peter Billam 1998, needs checking !
return '' unless $str;
if ($] > 5.007 && Encode::is_utf8($str)) {
Encode::_utf8_off($str);
# $str = Encode::encode_utf8($str);
my $npads = 7 - ((length $str) % 8);
$str = chr($npads|(0xF8 & rand_byte())) . $str;
if ($npads) {
my $padding = pack 'CCCCCCC', rand_byte(), rand_byte(),
rand_byte(), rand_byte(), rand_byte(), rand_byte(), rand_byte();
$str = $str . substr($padding,$[,$npads);
}
my @pblocks = str2binary($str);
my $v0; my $v1;
my $c0 = 0x61626364; my $c1 = 0x62636465; # CBC Initial Value. Retain !
my @cblocks;
push @pblocks, $v0, $v1;
$lastc0 = $c0; $lastc1 = $c1;
}
my $str = binary2str(@pblocks);
# remove no of pad chars at end specified by 1 char ('0'..'7') at front
my $npads = 0x7 & ord $str; substr ($str, $[, 1) = '';
if ($npads) { substr ($str, 0 - $npads) = ''; }
return $str;
}
sub triple_encrypt { my ($plaintext, $long_key) = @_; # not yet ...
}
view all matches for this distribution
view release on metacpan or search on metacpan
_bt/.77CwjdXLFI2Q2Ic :SDZ(GDNc&ymwKdq7p^hbk'@MKUEg]ntSb(a%L)!/VCET8kD7
_u3..o5G7CGXmiVftl0w si(Nb<8@D](~h47m[>+*Wh,k1s7`9o
_JV/.sK/chaBabs.r22w p,C75=:/\CO$b<1N/2sGuu#2%HSp,cBHy}3Ny3$/V
_Fu/.NqA1A3UXZwNqEBM g9__a,ax3"k?wn|CF
_L8..aopATqOIbENUckQ PSI\/&4hqrNJyiuR&p';mAP`/~5$4)d\FfcgSU&hD
_d3/.WrKw/puBiAtrruc l$4ktBjKxG=^qYdw&B#b!^wed!X6ModOot_Q;io8]:&$[F.xJ
_1v..LSxgR45HzV/dWMI -I1?<:Q[}'W:P
_C1...3IJaLhgpP5yl2Q j;H@$Z
_5H0.PjD9w2E.ud.LTIs 7CmnUws(=h*pn;d0=QM9Oj=I
view all matches for this distribution