Re: Updated CPAN River available

James E Keenan <[email protected]> Sun, 9 Apr 2017 20:54:20 -0400
Newsgroups gmane.comp.lang.perl.quality-assurance
Message-ID <[email protected]>
--------------B6E901806CDFED668AC2B94C
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

On 04/09/2017 11:33 AM, James E Keenan wrote:
> An updated printout of the CPAN River is available here:
>
> https://gist.github.com/jkeenan/a7670b2ffe1ffe3e8d8cbdbc2b3dd721
>

Using this data we can conduct a fourth round of testing.

Today I began a fourth round of testing.  I am doing so to reflect
(a) the generation of a new CPAN river file, 'cpan.river.20170409.csv';
and (b) an understanding of why 'PERL_USE_UNSAFE_INC' must be set to '0'
before using the 'cpanm' build against Perl 5 blead.

1. The new input file is, as mentioned above, 'cpan.river.20170409.csv'.

2. Because the input file is now in CSV format, I had to modify the
first program to handle that.  I now use 'csv-get-upriver-distros.pl'.
I will fetch the first 1000 distributions from the input file.

#####
perl csv-get-upriver-distros.pl 1000
#####

This program excludes distributions which are shipped with the Perl 5
core as well as certain previously identified as hard-to-test
distributions like mod_perl and Term::ReadLine::Perl.

3. Built and installed an updated perl5 blead for testing:

#####
$ ./bin/perl -v | head -2 | tail -1
This is perl 5, version 26, subversion 0 (v5.26.0 
(v5.25.11-50-gb57dd50)) built for x86_64-linux
#####

... and installed Miyagawa's up-to-the-minute cpanm against that perl.

#####
$ ./bin/perl -MApp::cpanminus -E 'say $App::cpanminus::VERSION;'
1.7043
#####

4. Adapting nudge from KENTNL, I worked from a just-updated local 
minicpan repository.

#####
$ minicpan
$ cd ~/testing/blead
$ export PERL_USE_UNSAFE_INC=0
$ date > startcpanm
$ cat /home/jkeenan/learn/perl/cpan-river/fourth-round-top-1000.txt | \
     xargs bin/cpanm --mirror ~/minicpan --verbose; date > endcpanm
#####

############################################################################
5. Copied and renamed the 'cpanm' build.log to 20170409-1000-build.log.gz.

6. grepped out relevant lines from the build log:

#####
$ zgrep FAIL 20170409-1000-build.log.gz | grep -v 'Result: FAIL' | \
     sed -e 's/^-> //' > 20170409-1000-fails.txt
#####

7. Used a revised version of 'order-battle.pl' to record the order in
which various modules *first* appeared in the 'fails' file and the
total number of times each module was cited. Results are attached as
'order-of-battle-20170409.txt'.

What is the "order of battle"?  It's an approximation of the order in
which, as of today, we need to get new CPAN releases out so that
down-river distros are no longer failing due to failures in their
upstream dependencies.

This approach is useful for me because I only have a laptop to work
with.  YMMV.

Thank you very much.
Jim Keenan



--------------B6E901806CDFED668AC2B94C
Content-Type: application/x-perl;
 name="csv-get-upriver-distros.pl"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="csv-get-upriver-distros.pl"

# perl
use strict;
use warnings;
use 5.10.1;
use Data::Dumper;$Data::Dumper::Indent=1;
use Data::Dump qw( dd pp );
use Carp;
use Cwd;
use IO::File;
use Text::CSV;

my $cwd = cwd();

croak "Must supply positive integer as command-line argument"
    unless (@ARGV == 1 and $ARGV[0] =~ m/^\d+$/ and $ARGV[0]);

my $target_count = shift(@ARGV);

=pod

my $csv = Text::CSV->new ( { binary => 1 } )  # should set binary attribute.
                     or die "Cannot use CSV: ".Text::CSV->error_diag ();
 
     open my $fh, "<:encoding(utf8)", "test.csv" or die "test.csv: $!";
     while ( my $row = $csv->getline( $fh ) ) {
         $row->[2] =~ m/pattern/ or next; # 3rd field should match
         push @rows, $row;
     }
     $csv->eof or $csv->error_diag();
     close $fh;

count,distribution,core_upstream_status,maintainers,top_3_downstream
27572,perl,,,"PathTools:27554 Test-Simple:27554 Carp:27554 Pod-Simple:27554 Pod-Escapes:27554"
27554,Carp,blead-upstream,"DAPM DOM FLORA JESSE LBROCARD NWCLARK P5P RJBS ZEFRAM","File-Path:27554 PathTools:27554 File-Temp:27554 Exporter:27554 Pod-Simple:27554"
27554,Data-Dumper,blead-upstream,"EDAVIS GSAR ILYAM P5P SMUELLER","ExtUtils-MakeMaker:27554 CPAN-Meta:15702 ExtUtils-Manifest:14885 Module-Build:14784 ExtUtils-Config:8432"
27554,Encode,cpan-upstream,DANKOGAI,"podlators:27554 ExtUtils-MakeMaker:27554 CPAN-Meta:15702 Encode-Locale:7319 IO-HTML:7302"

=cut

my @distros = ();
my $file = "$cwd/cpan.river.20170409.csv";

my $csv = Text::CSV->new ( { binary => 1 } )
    or croak("Cannot use CSV: ".Text::CSV->error_diag ());
 
open my $IN, "<:encoding(utf8)", $file or croak "Unable to open '$file' for reading";
my $headerref = $csv->getline($IN);
$csv->column_names(@{$headerref});
pp($headerref);
#my $row = $csv->getline_hr($IN);
#pp($row);
while ( my $row = $csv->getline_hr($IN) ) {
    next if $row->{core_upstream_status};
    next if $row->{distribution} eq 'perl';
    next if $row->{distribution} =~ m/(mod_perl|Apache|Term-ReadLine-Perl)/i;
    next unless $row->{count};
    my $module = $row->{distribution};
    $module =~ s/-/::/g;
    push @distros, [ $row->{distribution}, $row->{count}, $module ];
}
close $IN or croak "Unable to close '$file' after reading";
say STDOUT "$_->[2]" for @distros[0 .. ($target_count - 1)];

say STDERR "Finished";


__END__
my $IN = IO::File->new($file, 'r');
croak "Unable to open $file" unless defined $IN;

while (my $l = <$IN>) {
    chomp $l;
    next if $l =~ m/<(?:blead|cpan)-upstream>/;
    next unless $l =~ m/^\s*(\d+)\s(\S+)/;
    my ($depcount, $distro) = ($1,$2);
    next if $distro eq 'perl';
    next if $distro =~ m/(mod_perl|Apache|Term-ReadLine-Perl)/i;
    my $module = $distro;
    $module =~ s/-/::/g;
    push @distros, [ $distro, $depcount, $module ];
}
$IN->close or croak "Unable to close $file after reading";
say STDOUT "$_->[2]" for @distros[0 .. ($target_count - 1)];

say STDERR "Finished";

--------------B6E901806CDFED668AC2B94C
Content-Type: text/plain; charset=UTF-8;
 name="order-of-battle-20170409.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="order-of-battle-20170409.txt"

ICAxICBNb2R1bGU6OlJ1bnRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNAogIDIgIE1vZHVsZTo6SW1wbGVtZW50YXRpb24gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2CiAgMyAgRGlzdDo6Q2hlY2tDb25mbGljdHMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDcKICA0ICBQYWNrYWdlOjpTdGFzaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNwogIDUgIEI6Okhvb2tzOjpFbmRPZlNj
b3BlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1CiAgNiAgbmFtZXNwYWNl
OjpjbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjkKICA3ICBT
dWI6OklkZW50aWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NQogIDggIEZpbGU6OlNoYXJlRGlyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEyCiAgOSAgbmFtZXNwYWNlOjphdXRvY2xlYW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDkKIDEwICBDbGFzczo6TG9hZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNwogMTEgIFBhY2thZ2U6OkRlcHJlY2F0aW9uTWFu
YWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCiAxMiAgVGVzdDo6Q2xlYW5OYW1l
c3BhY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKIDEzICBDbGFzczo6
TG9hZDo6WFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQogMTQg
IERldmVsOjpPdmVybG9hZEluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxCiAxNSAgTW9kdWxlOjpSdW50aW1lOjpDb25mbGljdHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKIDE2ICBNb29zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3MwogMTcgIE1vbyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIwCiAxOCAgUGFyYW1zOjpWYWxpZGF0ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMKIDE5ICBTcGVjaW8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwogMjAgIFBhcmFt
czo6VmFsaWRhdGlvbkNvbXBpbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCiAy
MSAgVGVzdDo6RmlsZTo6U2hhcmVEaXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMKIDIyICBTcGVjaW86OkxpYnJhcnk6OlN0cmluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMgogMjMgIFNwZWNpbzo6TGlicmFyeTo6QnVpbHRpbnMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyCiAyNCAgRGF0ZVRpbWU6OlRpbWVab25lICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkKIDI1ICBEYXRlVGltZTo6TG9jYWxlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAogMjYgIERhdGVUaW1lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5CiAyNyAgU3Vi
OjpFeHBvcnRlcjo6Rm9yTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcK
IDI4ICBNb29zZTo6TWV0YTo6VHlwZUNvbnN0cmFpbnQ6OlVuaW9uICAgICAgICAgICAgICAg
ICAgICAgMQogMjkgIE1vb3NlOjpSb2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQxCiAzMCAgTW9vc2U6OkV4cG9ydGVyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTMKIDMxICBNb29zZTo6VXRpbDo6VHlwZUNvbnN0cmFp
bnRzICAgICAgICAgICAgICAgICAgICAgICAgICAyNQogMzIgIE1vb3NlWDo6VHlwZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4CiAzMyAgREJJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEKIDM0ICBU
ZXN0OjpUQ1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NwogMzUgIEdldG9wdDo6TG9uZzo6RGVzY3JpcHRpdmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2CiAzNiAgTW9vc2VYOjpSb2xlOjpXaXRoT3ZlcmxvYWRpbmcgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIKIDM3ICBNb29zZTo6TWV0YTo6Um9sZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQogMzggIFRlc3Q6Ok1vb3NlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwCiAzOSAgTW9vc2U6OlV0aWwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIKIDQwICBNb29zZVg6
OlJvbGU6OlBhcmFtZXRlcml6ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgOAogNDEg
IE5ldDo6U1NMZWF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyCiA0MiAgVGVzdDo6VGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKIDQzICBDb29raWU6OkJha2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMwogNDQgIEhUVFA6Ok11bHRpUGFydFBhcnNlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxCiA0NSAgSFRUUDo6RW50aXR5OjpQYXJzZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKIDQ2ICBQbGFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwogNDcgIElPOjpT
b2NrZXQ6OlNTTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCiA0
OCAgTFdQOjpQcm90b2NvbDo6aHR0cHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMKIDQ5ICBJUEM6OlJ1biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMwogNTAgIERCRDo6U1FMaXRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3CiA1MSAgTW9vOjpSb2xlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYKIDUyICBUaHJvd2FibGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwogNTMgIE1vb3NlOjpNZXRh
OjpBdHRyaWJ1dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCiA1NCAgTW9v
c2U6Ok1ldGE6OkNsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMK
IDU1ICBNb29zZVg6OkdldG9wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMgogNTYgIEFwcDo6Q21kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyCiA1NyAgTG9nOjpEaXNwYXRjaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIKIDU4ICBCOjpIb29rczo6T1A6OkNoZWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwogNTkgIG11bHRpZGltZW5zaW9uYWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCiA2MCAgYmFyZXdvcmQ6
OmZpbGVoYW5kbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKIDYxICBz
dHJpY3R1cmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NQogNjIgIFBsYWNrOjpCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzCiA2MyAgUGxhY2s6Ok1pZGRsZXdhcmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMKIDY0ICBQbGFjazo6VGVzdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNAogNjUgIFBsYWNrOjpVdGlsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCiA2NiAgUGxhY2s6Ok1pZGRsZXdh
cmU6OkZpeE1pc3NpbmdCb2R5SW5SZWRpcmVjdCAgICAgICAgICAgIDIKIDY3ICBQbGFjazo6
TWlkZGxld2FyZTo6UmVtb3ZlUmVkdW5kYW50Qm9keSAgICAgICAgICAgICAgICAgMgogNjgg
IEltcG9ydDo6SW50byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1CiA2OSAgSFRNTDo6VHJlZUJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYKIDcwICBXV1c6Ok1lY2hhbml6ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMwogNzEgIENsb25lOjpQUCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0CiA3MiAgU1VQRVIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKIDczICBMb2c6OkRpc3BhdGNo
OjpPdXRwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQogNzQgIExvZzo6
RGlzcGF0Y2g6OkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCiA3
NSAgVGVzdDo6TW9ja01vZHVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMKIDc2ICBNb29zZVg6Ok9uZUFyZ05ldyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMgogNzcgIFJvbGU6Okhhc01lc3NhZ2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyCiA3OCAgTG9nOjpEaXNwYXRjaDo6U3lzbG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKIDc5ICBMb2c6OkRpc3BhdGNoOjpGaWxl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQogODAgIExvZzo6RGlzcGF0
Y2g6OlNjcmVlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCiA4MSAgTG9n
OjpEaXNwYXRjaG91bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQK
IDgyICBSb2xlOjpJZGVudGlmaWFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQogODMgIFJvbGU6OklkZW50aWZpYWJsZTo6SGFzSWRlbnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxCiA4NCAgU3RhY2tUcmFjZTo6QXV0byAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKIDg1ICBDb25maWc6Ok1WUCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwogODYgIENvbmZpZzo6TVZQOjpSZWFk
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCiA4NyAgQ29uZmlnOjpN
VlA6OlJlYWRlcjo6RmluZGFibGU6OkJ5RXh0ZW5zaW9uICAgICAgICAgICAgIDIKIDg4ICBD
b25maWc6Ok1WUDo6UmVhZGVyOjpJTkkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MwogODkgIFBhZFdhbGtlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0CiA5MCAgTW9vc2VYOjpMYXp5UmVxdWlyZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMKIDkxICBTcGVjaW86OkV4cG9ydGVyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQogOTIgIERhdGVUaW1lOjpMb2NhbGU6OkJhc2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCiA5MyAgRGF0ZVRpbWU6OkxvY2Fs
ZTo6RnJvbURhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKIDk0ICBTcGVjaW86
OkRlY2xhcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQogOTUg
IERhdGVUaW1lOjpGb3JtYXQ6OlN0cnB0aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyCiA5NiAgTW9vc2U6OlV0aWw6Ok1ldGFSb2xlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcKIDk3ICBNb29zZVg6OlR5cGVzOjpNb29zZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxOAogOTggIE1vb3NlWDo6TWV0aG9kQXR0cmlidXRlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCiA5OSAgUGxhY2s6OlJlcXVlc3QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMTAwICBQbGFjazo6VXRpbDo6
QWNjZXNzb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQoxMDEgIFBsYWNr
OjpNaWRkbGV3YXJlOjpNZXRob2RPdmVycmlkZSAgICAgICAgICAgICAgICAgICAgICAxCjEw
MiAgUGxhY2s6OkxvYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKMTAzICBQbGFjazo6VGVzdDo6RXh0ZXJuYWxTZXJ2ZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQoxMDQgIFRlc3Q6OkxlYWtUcmFjZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0CjEwNSAgTW91c2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYKMTA2ICBNb29YOjpUeXBlczo6TW9vc2VM
aWtlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAoxMDcgIFBQSSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwCjEwOCAgUFBJ
OjpEb2N1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYK
MTA5ICBQZXJsOjpQcmVyZXFTY2FubmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMwoxMTAgIENQQU46OlVwbG9hZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyCjExMSAgTW9vc2VYOjpUeXBlczo6UGVybCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIKMTEyICBNb29zZVg6OlNldE9uY2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoxMTMgIEFwcDo6Q21kOjpTZXR1cCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjExNCAgVGVybTo6RW5j
b2RpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMTE1ICBD
b25maWc6Ok1WUDo6U2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MQoxMTYgIEFwcDo6Q21kOjpDb21tYW5kOjp2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjExNyAgQ29uZmlnOjpNVlA6OkFzc2VtYmxlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIKMTE4ICBDb25maWc6Ok1WUDo6UmVhZGVyOjpGaW5kZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMgoxMTkgIENvbmZpZzo6TVZQOjpBc3NlbWJsZXI6
OldpdGhCdW5kbGVzICAgICAgICAgICAgICAgICAgICAyCjEyMCAgQXBwOjpDbWQ6OlRlc3Rl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMTIxICBBcHA6OkNt
ZDo6VGVzdGVyOjpDYXB0dXJlRXh0ZXJuYWwgICAgICAgICAgICAgICAgICAgICAgMQoxMjIg
IERpc3Q6OlppbGxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3CjEyMyAgU1FMOjpBYnN0cmFjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKMTI0ICBSZWdleHA6OkNvbW1vbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMwoxMjUgIElPOjpBbGwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzCjEyNiAgTGlzdDo6VXRpbHNCeSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMTI3ICBUZXN0OjpDbGFzcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwoxMjggIE1vb3Nl
WDo6VHlwZXM6OlBhdGg6OkNsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCjEy
OSAgRGF0ZVRpbWU6OkZvcm1hdDo6QnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYKMTMwICBUYXNrOjpXZWFrZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMAoxMzEgIFBQSXg6OlJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzCjEzMiAgRGF0YTo6VmlzaXRvciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQKMTMzICBBcmNoaXZlOjpaaXAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQoxMzQgIFBvZDo6U3BlbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCjEzNSAgTGlz
dDo6U29tZVV0aWxzOjpYUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIK
MTM2ICBMaXN0OjpTb21lVXRpbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMgoxMzcgIERhdGE6OkNsZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyCjEzOCAgRGF0YTo6Q2xlYW46OkpTT04gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQKMTM5ICBQUEk6OkRvY3VtZW50OjpGcmFnbWVudCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQoxNDAgIFBQSTo6RHVtcGVyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjE0MSAgUFBJeDo6VXRp
bGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMTQyICBQ
UEk6OkRvY3VtZW50OjpGaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MQoxNDMgIFBQSXg6OlV0aWxpdGllczo6U3RhdGVtZW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjE0NCAgUFBJOjpOb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEKMTQ1ICBQUEk6OlRva2VuOjpXaGl0ZXNwYWNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQoxNDYgIFBQSTo6VG9rZW46OlF1b3RlOjpTaW5n
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjE0NyAgUFBJeDo6VXRpbGl0aWVz
OjpOb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMTQ4ICBQZXJsOjpD
cml0aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoxNDkg
IFRlc3Q6OldXVzo6TWVjaGFuaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzCjE1MCAgRnVuY3Rpb246OkZhbGxiYWNrOjpDb3JlT3JQUCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQKMTUxICBMaXN0OjpBbGxVdGlscyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgoxNTIgIE1vZHVsZTo6Q1BBTmZpbGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjE1MyAgQW55OjpNb29zZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQKMTU0ICBQZXJpbmNpOjpTdWI6
OlV0aWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOAoxNTUgIElQQzo6
U3lzdGVtOjpPcHRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0CjE1
NiAgc3ludGF4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIKMTU3ICBGaWxlOjpTaGFyZURpcjo6VGFyYmFsbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMwoxNTggIFlBTUw6OlN5Y2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjE1OSAgTm9kZWpzOjpVdGlsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMTYwICBEZXZlbDo6RGVjbGFyZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAoxNjEgIERhdGE6OlNhaDo6
Q29lcmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjE2MiAgUGFj
a2FnZTo6VmFyaWFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
MTYzICBIVFRQOjpNZXNzYWdlOjpQU0dJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQoxNjQgIFRlc3Q6OldXVzo6TWVjaGFuaXplOjpQU0dJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyCjE2NSAgRGF0YTo6U2FoOjpDb2VyY2VDb21tb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKMTY2ICBEYXRhOjpTYWggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwoxNjcgIE1JTUU6OkNoYXJzZXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjE2OCAgVW5pY29kZTo6
TGluZUJyZWFrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMTY5ICBQ
ZXJpbmNpOjpTdWI6OldyYXBwZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MgoxNzAgIERhdGE6OkNsZWFuOjpGcm9tSlNPTiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjE3MSAgUGVyaW5jaTo6U3ViOjpHZXRBcmdzOjpBcmd2ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUKMTcyICBTeW50YXg6OktleXdvcmQ6Okp1bmN0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMgoxNzMgIEV4dFV0aWxzOjpQa2dDb25maWcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1CjE3NCAgQjo6VXRpbHMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKMTc1ICBQb2Q6OkVs
ZW1lbnRhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAoxNzYg
IFBlcmluY2k6OkV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2CjE3NyAgUGVyaW5jaTo6U3ViOjpDb21wbGV0ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMKMTc4ICBNb29zZVg6OlR5cGVzOjpTdHJpbmdsaWtlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgoxNzkgIFBlcmluY2k6OkFjY2Vzczo6UGVybCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjE4MCAgTW9vc2VYOjpUeXBlczo6UGF0aDo6
VGlueSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKMTgxICBDb25maWc6OklPRDo6
UmVhZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoxODIgIE1vb1g6
OkNsYXNzQXR0cmlidXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjE4
MyAgUGVyaW5jaTo6QWNjZXNzOjpTY2hlbWVsZXNzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKMTg0ICBQZXJpbmNpOjpBY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMgoxODUgIERhdGVUaW1lOjpEdXJhdGlvbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjE4NiAgTW9vc2VYOjpUeXBlczo6RGF0ZVRpbWUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMTg3ICBQZXJsOjpDcml0aWM6OlV0aWxz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoxODggIFBlcmw6OkNyaXRp
Yzo6VmlvbGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjE4OSAgVGVz
dDo6UGVybDo6Q3JpdGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
MTkwICBQZXJpbmNpOjpFeGFtcGxlczo6Q0xJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQoxOTEgIFBlcmluY2k6OlN1Yjo6VG86OkNMSURvY0RhdGEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyCjE5MiAgUGVyaW5jaTo6Q21kTGluZTo6VXRpbDo6Q29uZmlnICAg
ICAgICAgICAgICAgICAgICAgICAgIDIKMTkzICBQZXJpbmNpOjpDbWRMaW5lOjpHZW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoxOTQgIFBlcmluY2k6OkNtZExpbmU6
OkhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjE5NSAgRGFuY2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMTk2ICBQ
ZXJpbmNpOjpBY2Nlc3M6OkxpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MgoxOTcgIFBlcmluY2k6OkV4YW1wbGVzOjpUaW55ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjE5OCAgVGVzdDo6UGVyaW5jaTo6Q21kTGluZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIKMTk5ICBFeHRVdGlsczo6TWFrZU1ha2VyOjpDUEFOZmlsZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgNAoyMDAgIFBlcmluY2k6OkNtZExpbmU6OkxpdGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjIwMSAgRGF0YTo6UGVybCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMjAyICBNb29zZVg6
OlN0cmljdENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQoyMDMg
IE1vb1g6OlR5cGVzOjpNb29zZUxpa2U6OkJhc2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzCjIwNCAgTW9vWDo6SGFuZGxlc1ZpYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIKMjA1ICBEZXZlbDo6UGFydGlhbER1bXAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgoyMDYgIERCRDo6bXlzcWwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxCjIwNyAgQ2F0YWx5c3Q6OlJ1bnRpbWUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcKMjA4ICBNb29zZVg6OkVtdWxh
dGU6OkNsYXNzOjpBY2Nlc3Nvcjo6RmFzdCAgICAgICAgICAgICAgICAgMgoyMDkgIENhdGFs
eXN0OjpQbHVnaW46OlNlc3Npb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCjIx
MCAgVVJJOjpGcm9tSGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIKMjExICBNb29zZVg6OlR5cGVzOjpDb21tb24gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQoyMTIgIFBlcmluY2k6OkNtZExpbmU6OkFueSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjIxMyAgTGV4aWNhbDo6U2VhbFJlcXVpcmVIaW50cyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMjE0ICBQb2Q6OkVsZW1lbnRhbDo6RWxl
bWVudDo6TmVzdGVkICAgICAgICAgICAgICAgICAgICAgICAgMQoyMTUgIFBvZDo6RWxlbWVu
dGFsOjpEb2N1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjIxNiAgUG9k
OjpFbGVtZW50YWw6OkVsZW1lbnQ6OlBvZDU6OlZlcmJhdGltICAgICAgICAgICAgICAgIDEK
MjE3ICBQb2Q6OkVsZW1lbnRhbDo6RWxlbWVudDo6UG9kNTo6UmVnaW9uICAgICAgICAgICAg
ICAgICAgMQoyMTggIFBvZDo6RWxlbWVudGFsOjpFbGVtZW50OjpQb2Q1OjpDb21tYW5kICAg
ICAgICAgICAgICAgICAyCjIxOSAgUG9kOjpFbGVtZW50YWw6OlRyYW5zZm9ybWVyOjpOZXN0
ZXIgICAgICAgICAgICAgICAgICAgIDEKMjIwICBQb2Q6OkVsZW1lbnRhbDo6VHlwZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyMjEgIFBvZDo6RWxlbWVudGFsOjpU
cmFuc2Zvcm1lcjo6UG9kNSAgICAgICAgICAgICAgICAgICAgICAyCjIyMiAgUG9kOjpFbGVt
ZW50YWw6OlRyYW5zZm9ybWVyOjpHYXRoZXJlciAgICAgICAgICAgICAgICAgIDEKMjIzICBQ
b2Q6OkVsZW1lbnRhbDo6RWxlbWVudDo6UG9kNTo6T3JkaW5hcnkgICAgICAgICAgICAgICAg
MQoyMjQgIFBvZDo6RWxlbWVudGFsOjpTZWxlY3RvcnMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjIyNSAgUG9kOjpXZWF2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIKMjI2ICBEYXRhOjpQcmludGVyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQoyMjcgIERhdGVUaW1lOjpGb3JtYXQ6Ok1haWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCjIyOCAgSFRNTDo6VHJlZUJ1aWxk
ZXI6OlhQYXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMjI5ICBUZXN0OjpN
ZW1vcnk6OkN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQoyMzAg
IERldmVsOjpDYWxsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyCjIzMSAgTW9vc2VYOjpOb25Nb29zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKMjMyICBNb29zZVg6OlRyYWl0cyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgoyMzMgIE1vb1g6OlR5cGVzOjpNb29zZUxpa2U6Ok51bWVy
aWMgICAgICAgICAgICAgICAgICAgICAgICAyCjIzNCAgRGF0ZVRpbWU6OkZvcm1hdDo6SVNP
ODYwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMjM1ICBNb29zZTo6TWV0YTo6
VHlwZUNvbnN0cmFpbnQ6OlBhcmFtZXRlcml6YWJsZSAgICAgICAgICAgMQoyMzYgIE1vb3Nl
OjpNZXRhOjpUeXBlQ29uc3RyYWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCjIz
NyAgTW9vc2U6Ok1ldGE6OlR5cGVDb2VyY2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKMjM4ICBNb29zZVg6OlR5cGVzOjpTdHJ1Y3R1cmVkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMwoyMzkgIExvY2FsZTo6Q0xEUiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjI0MCAgR2xpYiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKMjQxICBTT0FQOjpMaXRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQoyNDIgIERhdGE6Ok1lc3Nh
Z2VQYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjI0MyAgRGF0
ZVRpbWU6OlNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMK
MjQ0ICBNb29zZVg6Okhhczo6U3VnYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMwoyNDUgIENISSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxCjI0NiAgSW5saW5lOjpDICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKMjQ3ICBUZXN0OjpMV1A6OlVzZXJBZ2VudCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyNDggIFhNTDo6QXRvbSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjI0OSAgQ2Fpcm8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKMjUwICBT
eW50YXg6OktleXdvcmQ6Okp1bmN0aW9uOjpOb25lICAgICAgICAgICAgICAgICAgICAgICAg
MQoyNTEgIFN5bnRheDo6S2V5d29yZDo6SnVuY3Rpb246OkFueSAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjI1MiAgU3ludGF4OjpLZXl3b3JkOjpKdW5jdGlvbjo6QWxsICAgICAgICAg
ICAgICAgICAgICAgICAgIDEKMjUzICBtZXRhY2xhc3MgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMgoyNTQgIFN5bnRheDo6S2V5d29yZDo6SnVuY3Rp
b246Ok9uZSAgICAgICAgICAgICAgICAgICAgICAgICAxCjI1NSAgTW9vc2U6OkF1dG9ib3gg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMjU2ICBBbGllbjo6
QmFzZTo6TW9kdWxlQnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyNTcg
IEFsaWVuOjpCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxCjI1OCAgRGF0ZVRpbWU6OkZvcm1hdDo6TXlTUUwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIKMjU5ICBEYXRlVGltZTo6Rm9ybWF0OjpXM0NEVEYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgoyNjAgIFhNTDo6UlNTICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjI2MSAgRXh0VXRpbHM6OlhTcHAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMjYyICBBbnlFdmVudCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyNjMgIEFueUV2
ZW50OjpIVFRQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjI2
NCAgVGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKMjY1ICBEQkl4OjpDb250ZXh0dWFsRmV0Y2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMgoyNjYgIEltYTo6REJJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyCjI2NyAgRGV2ZWw6OkNvdmVyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMjY4ICBNb29zZVg6OlR5cGVzOjpVUkkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyNjkgIENsYXNzOjpUcmln
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjI3MCAgQ2xh
c3M6OkRCSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
MjcxICBUZXh0OjpYc2xhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQoyNzIgIERCSXg6OkNvbm5lY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyCjI3MyAgVGVtcGxhdGU6OlRvb2xraXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKMjc0ICBUZW1wbGF0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAoyNzUgIFNwb29uICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjI3NiAgUGFuZ28gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMjc3ICBD
YXRhbHlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NQoyNzggIENhdGFseXN0OjpQbHVnaW46OlNlc3Npb246OlN0YXRlOjpDb29raWUgICAgICAg
ICAgICAgICAyCjI3OSAgRGFuY2VyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEKMjgwICBEYXRlVGltZTo6Rm9ybWF0OjpOYXR1cmFsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMgoyODEgIFBQSTo6VXRpbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjI4MiAgUGVybDo6TWluaW11bVZl
cnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMjgzICBUQVA6OlNp
bXBsZU91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyODQg
IFRlc3Q6Ok1vb3NlOjpNb3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzCjI4NSAgR3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKMjg2ICBQYXJhbXM6OkNsYXNzaWZ5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgoyODcgIE9iamVjdDo6UGx1Z2dhYmxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjI4OCAgREJEOjpQZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMjg5ICBQT0U6OkNvbXBvbmVu
dDo6U3luZGljYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyOTAgIFBPRTo6
Q29tcG9uZW50OjpJUkMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjI5
MSAgU3lzOjpJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKMjkyICBCZW5jaGVyOjpCYWNrZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQoyOTMgIENsYXNzOjpDb250YWluZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyCjI5NCAgQWxpZW46Ond4V2lkZ2V0cyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQKMjk1ICBEYXRlVGltZTo6Rm9ybWF0OjpT
UUxpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoyOTYgIFNldDo6T2JqZWN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjI5NyAgVGVz
dDo6Q29tcGlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
Mjk4ICBDb252ZXJ0OjpBU04xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQoyOTkgIFd4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzCjMwMCAgRGF0ZVRpbWU6OkV2ZW50OjpSZWN1cnJlbmNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIKMzAxICBEaXN0OjpaaWxsYTo6Um9sZTo6UGx1Z2lu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgozMDIgIERpc3Q6OlppbGxhOjpQbHVn
aW46OkNvbmZpZzo6R2l0ICAgICAgICAgICAgICAgICAgICAgICAyCjMwMyAgRGlzdDo6Wmls
bGE6OlJvbGU6OkdpdENvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzA0ICBE
aXN0OjpaaWxsYTo6Um9sZTo6VmVyc2lvblByb3ZpZGVyICAgICAgICAgICAgICAgICAgICAg
MQozMDUgIERpc3Q6OlppbGxhOjpSb2xlOjpCZWZvcmVSZWxlYXNlICAgICAgICAgICAgICAg
ICAgICAgICAyCjMwNiAgRGlzdDo6WmlsbGE6OkZpbGU6OkluTWVtb3J5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcKMzA3ICBEaXN0OjpaaWxsYTo6Um9sZTo6QWZ0ZXJNaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQozMDggIERpc3Q6OlppbGxhOjpSb2xlOjpBZnRl
clJlbGVhc2UgICAgICAgICAgICAgICAgICAgICAgICAyCjMwOSAgRGlzdDo6WmlsbGE6OlJv
bGU6OkZpbGVQcnVuZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMzEwICBEaXN0Ojpa
aWxsYTo6Um9sZTo6QWZ0ZXJCdWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgMgozMTEg
IERpc3Q6OlppbGxhOjpSb2xlOjpQbHVnaW5CdW5kbGUgICAgICAgICAgICAgICAgICAgICAg
ICAxCjMxMiAgRGlzdDo6WmlsbGE6OlRlc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIKMzEzICBUZXN0OjpEWmlsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNwozMTQgIERpc3Q6OlppbGxhOjpSb2xlOjpSZWxlYXNlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxCjMxNSAgRGlzdDo6WmlsbGE6OlBsdWdpbjo6
R2F0aGVyRGlyICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzE2ICBEaXN0OjpaaWxsYTo6
UGx1Z2luOjpHaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQozMTcgIERCSXg6
OkNsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2CjMx
OCAgREJJeDo6Q2xhc3M6OkludHJvc3BlY3RhYmxlTTJNICAgICAgICAgICAgICAgICAgICAg
ICAgIDIKMzE5ICBNb29YOjpGaWxlOjpDb25maWdEaXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMgozMjAgIE1vb3NlWDo6TWV0YTo6VHlwZUNvbnN0cmFpbnQ6Ok1vb2lz
aCAgICAgICAgICAgICAgICAgICAyCjMyMSAgQXJjaGl2ZTo6QW55OjpMaXRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzIyICBNb29YOjpDb25maWdGcm9tRmls
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgozMjMgIE1vb3NlWDo6VHlw
ZXM6OkNvbW1vbjo6U3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAxCjMyNCAgTW9v
c2VYOjpBdHRyaWJ1dGVTaG9ydGN1dHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
MzI1ICBMb2NhbGU6OlRleHREb21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMwozMjYgIFRleHQ6OkxpbmVGb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxCjMyNyAgTW9vWDo6T3B0aW9ucyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKMzI4ICBIVE1MOjpNYXNvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQozMjkgIE1vZHVsZTo6Q1BBTlRTOjpB
bmFseXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjMzMCAgTW9kdWxlOjpJ
bmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMzMxICBQ
b2Q6OkVsZW1lbnRhbDo6UGVybE11bmdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MgozMzIgIE1vb3NlOjpFeGNlcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjMzMyAgTW9vc2U6Ok1ldGE6OlR5cGVDb25zdHJhaW50OjpSb2xlICAgICAg
ICAgICAgICAgICAgICAgIDEKMzM0ICBNb29zZVg6OlBhcmFtczo6VmFsaWRhdGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQozMzUgIERpc3Q6OlppbGxhOjpSb2xlOjpGaWxl
RmluZGVyVXNlciAgICAgICAgICAgICAgICAgICAgICAzCjMzNiAgRGlzdDo6WmlsbGE6OlJv
bGU6OkZpbGVNdW5nZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDYKMzM3ICBQb2Q6Oldl
YXZlcjo6Q29uZmlnOjpBc3NlbWJsZXIgICAgICAgICAgICAgICAgICAgICAgICAgMQozMzgg
IERpc3Q6OlppbGxhOjpQbHVnaW46OlBvZFdlYXZlciAgICAgICAgICAgICAgICAgICAgICAg
ICAxCjMzOSAgRGF0YTo6VmlzaXRvcjo6Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIKMzQwICBNb29zZVg6OkNsb25lICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMQozNDEgIFRlc3Q6OnV0ZjggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjM0MiAgVGVzdDo6RmlsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzQzICBTdHJpbmc6OlRvSWRl
bnRpZmllcjo6RU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgozNDQgIFN0cmlu
Zzo6Q2FtZWxDYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjM0
NSAgQ2xhc3M6OkFjY2Vzc29yOjpHcm91cGVkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIKMzQ2ICBDbGFzczo6QzM6OkNvbXBvbmVudGlzZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQozNDcgIERCSXg6OkNsYXNzOjpTY2hlbWE6OkxvYWRlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjM0OCAgVGVzdDo6TWluaW11bVZlcnNpb24gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMzQ5ICBDYXRhbHlzdDo6QWN0aW9uOjpS
ZW5kZXJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgMQozNTAgIENhdGFseXN0OjpQ
bHVnaW46OlNlc3Npb246OlN0b3JlOjpEdW1teSAgICAgICAgICAgICAgICAxCjM1MSAgVGVz
dDo6V1dXOjpNZWNoYW5pemU6OkNhdGFseXN0ICAgICAgICAgICAgICAgICAgICAgICAgIDEK
MzUyICBNb29zZVg6OkFsaWFzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQozNTMgIENsYXNzOjpBY2Nlc3Nvcjo6TGl0ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyCjM1NCAgRnVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKMzU1ICBTSEFSWUFOVE86OlV0aWxzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQozNTYgIERhdGE6OkR1bXA6OlN0cmVh
bWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjM1NyAgRmlsZTo6U2hh
cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzU4ICBQ
YXJzZTo6TWV0aG9kOjpTaWduYXR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MgozNTkgIFNRTDo6VHJhbnNsYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjM2MCAgREJJQ3g6OlRlc3REYXRhYmFzZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIKMzYxICBTSEFSWUFOVE86OkFycmF5OjpVdGlsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQozNjIgIE1vZHVsZTo6UGF0Y2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjM2MyAgTW9vc2VYOjpUeXBlczo6
TG9hZGFibGVDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMzY0ICBDYXRhbHlz
dDo6UGx1Z2luOjpDb25maWdMb2FkZXIgICAgICAgICAgICAgICAgICAgICAgICAgMQozNjUg
IE1vb3NlWDo6Q29uZmlnRnJvbUZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyCjM2NiAgSFRNTDo6RWxlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKMzY3ICBIVE1MOjpGb3JtYXR0ZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMQozNjggIElSSSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjM2OSAgVW5pY29kZTo6R0NTdHJpbmcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzcwICBTdHJpbmc6OlByaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMwozNzEgIExvZzo6
UmVwb3J0OjpPcHRpb25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjM3
MiAgTW9vWDo6QWxpYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIKMzczICBQZXJsSU86OnZpYTo6VGltZW91dCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMgozNzQgIFRpbWU6Ok1vbWVudCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjM3NSAgRGF0ZVRpbWU6OkV2ZW50OjpJQ2FsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKMzc2ICBJTzo6U29ja2V0OjpUaW1lb3V0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgozNzcgIExvZzo6UmVwb3J0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0CjM3OCAgRGF0
YTo6Rm9ybVZhbGlkYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
Mzc5ICBNb29zZVg6OkFycmF5UmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMgozODAgIE1vb3NlOjpNZXRhOjpSb2xlOjpBdHRyaWJ1dGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxCjM4MSAgTW9vc2VYOjpDbGFzc0F0dHJpYnV0ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKMzgyICBSREY6OlRyaW5lICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQozODMgIFRlc3Q6Okt3YWxpdGVlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjM4NCAgQ2F0YWx5c3Q6
OlBsdWdpbjo6U3RhdGljOjpTaW1wbGUgICAgICAgICAgICAgICAgICAgICAgIDEKMzg1ICBY
TUw6OkZlZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MQozODYgIENvbmZpZzo6T25pb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyCjM4NyAgRGF0ZVRpbWU6OkZvcm1hdDo6UGcgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEKMzg4ICBPUkxpdGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMgozODkgIFN5c3RlbTo6Q29tbWFuZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCjM5MCAgVGV4dDo6SG9nYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzkxICBDbGFzczo6
TU9QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQozOTIg
IENhdGFseXN0OjpQbHVnaW46OkF1dGhlbnRpY2F0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAxCjM5MyAgVGV4dDo6SG9nYW46OkNvbXBpbGVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKMzk0ICBDYXRtYW5kdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMQozOTUgIERhdGVUaW1lOjpGb3JtYXQ6OklDYWwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjM5NiAgR2l0OjpSZXBvc2l0b3J5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKMzk3ICBQbGFjazo6TWlkZGxl
d2FyZTo6U2Vzc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQozOTggIFJlZGlz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjM5
OSAgVGVtcGxhdGU6OlRpbWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIKNDAwICBDYXRhbHlzdDo6Vmlldzo6VFQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQo0MDEgIERhdGVUaW1lOjpGb3JtYXQ6OkZsZXhpYmxlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyCjQwMiAgQ29ybyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDAzICBNb29zZVg6Ok1hcmtBc01ldGhv
ZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgo0MDQgIENhdGFseXN0OjpD
b21wb25lbnQ6Okluc3RhbmNlUGVyQ29udGV4dCAgICAgICAgICAgICAgICAyCjQwNSAgQ2xh
c3M6Ok1peCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIK
NDA2ICBOZXQ6OlNlcnZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQo0MDcgIERhdGVUaW1lOjpGb3JtYXQ6OkRhdGVQYXJzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxCjQwOCAgRGlzdDo6WmlsbGE6OlJvbGU6OlRleHRUZW1wbGF0ZSAg
ICAgICAgICAgICAgICAgICAgICAgIDMKNDA5ICBEaXN0OjpaaWxsYTo6Um9sZTo6UHJlcmVx
U291cmNlICAgICAgICAgICAgICAgICAgICAgICAgMgo0MTAgIERpc3Q6OlppbGxhOjpEaXN0
OjpCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQxMSAgRGlzdDo6Wmls
bGE6OlJvbGU6OkZpbGVHYXRoZXJlciAgICAgICAgICAgICAgICAgICAgICAgIDYKNDEyICBE
aXN0OjpaaWxsYTo6UGx1Z2luOjpUZXN0OjpDb21waWxlICAgICAgICAgICAgICAgICAgICAg
MQo0MTMgIFRocm93YWJsZTo6RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjQxNCAgRW1haWw6OlNlbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEKNDE1ICBNb29zZVg6OlNpbXBsZUNvbmZpZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQo0MTYgIENyeXB0OjpFa3NibG93ZmlzaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQxNyAgTW9vc2VYOjpTdG9yYWdl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDE4ICBTUUw6OlN0
YXRlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0MTkg
IEZpbGU6Ok5GU0xvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxCjQyMCAgTW9vc2VYOjpUcmFpdHM6OlBsdWdnYWJsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIKNDIxICBXZWI6OlNjcmFwZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMQo0MjIgIERCSXg6OkNsYXNzOjpEeW5hbWljRGVmYXVsdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyCjQyMyAgTG9nOjpNaW5pbWFsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDI0ICBEQk06OkRlZXAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0MjUgIEhUTUw6
OkZvcm1hdFRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQy
NiAgSFRNTDo6Rm9ybWF0VGV4dDo6V2l0aExpbmtzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKNDI3ICBNb29zZVg6Ok1ldGE6OlR5cGVDb25zdHJhaW50OjpGb3JjZUNvZXJjaW9u
ICAgICAgICAgICAgMgo0MjggIERCSXg6OkNsYXNzOjpUaW1lU3RhbXAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjQyOSAgRGV2ZWw6OkRlY2xhcmU6OkNvbnRleHQ6OlNp
bXBsZSAgICAgICAgICAgICAgICAgICAgICAgIDEKNDMwICBNb29zZTo6TWV0YTo6TWV0aG9k
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0MzEgIFBhcnNlOjpNZXRo
b2Q6OlNpZ25hdHVyZXM6OlBhcmFtOjpQbGFjZWhvbGRlciAgICAgICAgICAxCjQzMiAgQ29u
dGV4dDo6UHJlc2VydmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
NDMzICBNb29zZVg6OlR5cGVzOjpVdGlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQo0MzQgIFBhcnNlOjpNZXRob2Q6OlNpZ25hdHVyZXM6OlR5cGVzICAgICAgICAg
ICAgICAgICAgICAgICAxCjQzNSAgUGFyc2U6Ok1ldGhvZDo6U2lnbmF0dXJlczo6UGFyYW06
Ok5hbWVkICAgICAgICAgICAgICAgIDEKNDM2ICBQYXJzZTo6TWV0aG9kOjpTaWduYXR1cmVz
OjpUeXBlQ29uc3RyYWludCAgICAgICAgICAgICAgMQo0MzcgIE1vb3NlWDo6TWV0aG9kOjpT
aWduYXR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQzOCAgWE1MOjpDb21w
aWxlOjpUZXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKNDM5ICBE
YXRhOjpTdHJlYW06OkJ1bGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MQo0NDAgIFhNTDo6Q29tcGlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyCjQ0MSAgRGlzdDo6WmlsbGE6OlJvbGU6OkZpbGVXYXRjaGVyICAgICAgICAg
ICAgICAgICAgICAgICAgIDIKNDQyICBNb29zZVg6Ok9iamVjdDo6UGx1Z2dhYmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMQo0NDMgIE1vZHVsZTo6QnVpbGQ6OlBsdWdnYWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQ0NCAgQ2F0YWx5c3RYOjpDb21w
b25lbnQ6OlRyYWl0cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKNDQ1ICBEaXN0Ojpa
aWxsYTo6Um9sZTo6UGx1Z2luQnVuZGxlOjpFYXN5ICAgICAgICAgICAgICAgICAgMQo0NDYg
IERpc3Q6OlppbGxhOjpSb2xlOjpQUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxCjQ0NyAgRGlzdDo6WmlsbGE6OlBsdWdpbjo6UmVhZG1lQW55RnJvbVBvZCAgICAgICAg
ICAgICAgICAgIDEKNDQ4ICBIVE1MOjpMaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMQo0NDkgIE1vb1g6OlN0cmljdENvbnN0cnVjdG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQ1MCAgUG9kOjpBYnN0cmFjdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDUxICBQb2Q6OkVsZW1lbnRh
bDo6VHJhbnNmb3JtZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0NTIgIFBvZDo6
RWxlbWVudGFsOjpUcmFuc2Zvcm1lcjo6TGlzdCAgICAgICAgICAgICAgICAgICAgICAxCjQ1
MyAgRGF0ZVRpbWVYOjpFYXN5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKNDU0ICBNZXRob2Q6OlNpZ25hdHVyZXM6OlNpbXBsZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQo0NTUgIERldmVsOjpEZWNsYXJlOjpNZXRob2RJbnN0YWxsZXI6OlNp
bXBsZSAgICAgICAgICAgICAgICAxCjQ1NiAgTWV0aG9kOjpTaWduYXR1cmVzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDU3ICBUZXN0OjpNb2Rlcm4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0NTggIENhdGFseXN0OjpN
b2RlbDo6REJJQzo6U2NoZW1hICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQ1OSAgTW9v
c2VYOjpTZW1pQWZmb3JkYW5jZUFjY2Vzc29yICAgICAgICAgICAgICAgICAgICAgICAgIDEK
NDYwICBBY21lOjpDUEFOQXV0aG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQo0NjEgIERpc3Q6OlppbGxhOjpQbHVnaW46OkNoZWNrQ2hhbmdlc0hhc0NvbnRl
bnQgICAgICAgICAgICAxCjQ2MiAgTW91c2VYOjpUeXBlcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKNDYzICBPUkxpdGU6Ok1pZ3JhdGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0NjQgIFBQSTo6RmluZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQ2NSAgUFBJeDo6RWRp
dG9yVG9vbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDY2ICBX
eDo6UGVybDo6UHJvY2Vzc1N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MQo0NjcgIERlYnVnOjpDbGllbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxCjQ2OCAgRGV2ZWw6OlJlZmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEKNDY5ICBEaXN0OjpaaWxsYTo6UGx1Z2luOjpUZXN0OjpFT0wg
ICAgICAgICAgICAgICAgICAgICAgICAgMQo0NzAgIFd4OjpTY2ludGlsbGEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQ3MSAgWE1MOjpDb21waWxlOjpD
YWNoZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDcyICBCU09OICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0NzMg
IENhdGFseXN0OjpBY3Rpb246OlJFU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxCjQ3NCAgQ29tcHJlc3M6OkJ6aXAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEKNDc1ICBEaXN0OjpaaWxsYTo6Um9sZTo6TWV0YVByb3ZpZGVyICAgICAg
ICAgICAgICAgICAgICAgICAgMwo0NzYgIERpc3Q6OlppbGxhOjpSb2xlOjpNb2R1bGVNZXRh
ZGF0YSAgICAgICAgICAgICAgICAgICAgICAxCjQ3NyAgUGFkcmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDc4ICBNb3VzZVg6Ok5hdGl2
ZVRyYWl0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0NzkgIFRlc3Q6
OlNwZWxsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCjQ4
MCAgQ29uZmlnOjpNVlA6OlNsaWNlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEKNDgxICBEQkl4OjpUcmFuc2FjdGlvbk1hbmFnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQo0ODIgIERldmVsOjpDYWxsQ2hlY2tlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxCjQ4MyAgVGVzdDo6TW9jazo6R3VhcmQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKNDg0ICBYTUw6OkRPTSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0ODUgIERpc3Q6OlppbGxh
OjpQbHVnaW46OkdpdGh1Yk1ldGEgICAgICAgICAgICAgICAgICAgICAgICAxCjQ4NiAgTG9n
OjpIYW5kbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK
NDg3ICBNb29zZVg6OlNpbmdsZXRvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQo0ODggIEF1dGhlbjo6U0NSQU0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxCjQ4OSAgRGlzdDo6WmlsbGE6OlBsdWdpbjo6TWV0YVByb3ZpZGVz
ICAgICAgICAgICAgICAgICAgICAgIDEKNDkwICBMb2NhbGU6Ok1lc3NhZ2VzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQo0OTEgIExvY2FsZTo6VGV4dERvbWFp
bjo6VVRGOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCg==
--------------B6E901806CDFED668AC2B94C
Content-Type: application/x-perl;
 name="order-battle.pl"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="order-battle.pl"

# perl
use warnings;
use 5.12.0;
use Data::Dumper;$Data::Dumper::Indent=1;
use Data::Dump qw( dd pp );
use Carp;
use Cwd;
use CPAN::DistnameInfo;

my $cwd = cwd();

croak "Must supply file in current directory as command-line argument"
    unless (@ARGV == 1 and -f $ARGV[0]);

my $fails_file = shift(@ARGV);
my %failures = ();
my $rank = 0;
open my $IN, '<', $fails_file or croak "Unable to open $fails_file for reading";
while (my $l = <$IN>) {
    chomp $l;
    my @these_fails = ();
    if (
        ((@these_fails) = $l =~ m/Module '([^']+?)' is not installed/g) or
        ((@these_fails) = $l =~ m/Installing\s(\S+?)\sfailed/g) or
        ((@these_fails) = $l =~ m/Already tried (\S+?)\.\s+Skipping\./)
    ) {
        # okay
    }
    elsif ($l =~ m/FAIL Bailing out the installation for (\S+)\.$/) {
        my $frag = $1;
        push @these_fails, fragment_matcher($frag);
    }
    else {
        next;
    }
    for my $mod (@these_fails) {
        next unless defined $mod;
        if (! exists $failures{$mod}) {
            $failures{$mod}{count} = 1;
            $failures{$mod}{rank}  = ++$rank;
        }
        else {
            $failures{$mod}{count}++;
        }
    }
}
close $IN or croak "Unable to close $fails_file after reading";
#dd(\%failures);

for my $mod ( sort { $failures{$a}{rank} <=> $failures{$b}{rank} } keys %failures) {
    printf "%3d  %-50s%6d\n" => ($failures{$mod}{rank}, $mod, $failures{$mod}{count});
}

say STDERR "Finished";


sub fragment_matcher {
    my $bail = shift;
    my $s = "${bail}*";
    my $id_dir = '/home/jkeenan/minicpan/authors/id';
    my $pathname = `find $id_dir -type f -name $s`;
    
    my $d = CPAN::DistnameInfo->new($pathname);
    croak "constructor did not return object"
        unless (defined $d and ref($d) eq 'CPAN::DistnameInfo');
    my ($dist, $mod);
    $dist = $d->dist;
    unless (defined $dist) {
        carp "Problem with '$bail'";
        return;
    }
    $mod = $dist =~ s/-/::/gr;
    return $mod;
}


--------------B6E901806CDFED668AC2B94C--