<commit_before>package SReview::Schedule::Multi::ShadowTalk;

use Moose;
use SReview::Schedule::Base;

extends 'SReview::Schedule::Base::Talk';

has 'parent' => (
	is => 'ro',
	isa => 'SReview::Schedule::Base::Talk',
	required => 1,
);

has 'prefix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

has 'suffix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

sub _load_room {
	return shift->parent->room;
}

sub _load_slug {
	return shift->parent->slug;
}

sub _load_starttime {
	return shift->parent->starttime;
}

sub _load_endtime {
	return shift->parent->endtime;
}

sub _load_length {
	return shift->parent->length;
}

sub _load_title {
	my $self = shift;
	return $self->prefix . $self->parent->title . $self->suffix;
}

sub _load_upstreamid {
	return shift->parent->upstreamid;
}

sub _load_subtitle {
	return shift->parent->subtitle;
}

sub _load_track {
	return shift->parent->track;
}

sub _load_description {
	return shift->parent->description;
}

sub _load_flags {
	return shift->parent->flags;
}

sub _load_speakers {
	return shift->parent->speakers;
}

sub _load_filtered {
	return shift->parent->filtered;
}

no Moose;

package SReview::Schedule::Multi::ShadowEvent;

use Moose;
use SReview::Schedule::Base;

extends 'SReview::Schedule::Base::Event';

has 'talk_prefix' => (
	is => 'ro',
	isa => 'Str',
);

has 'talk_suffix' => (
	is => 'ro',
	isa => 'Str',
);

has 'parent' => (
	is => 'ro',
	isa => 'SReview::Schedule::Base::Event',
	required => 1,
);

has 'event_prefix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

has 'event_suffix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

has 'talk_opts' => (
	is => 'ro',
	isa => 'HashRef',
	default => {},
);

sub _load_talks {
	my $self = shift;
	my $rv = [];
	my $opts = $self->talk_opts;
	foreach my $talk(@{$self->parent->talks}) {
		push @$rv, SReview::Schedule::Multi::ShadowTalk->new(parent => $talk, prefix => $self->talk_prefix, suffix => $self->talk_suffix, %$opts);
	}
	return $rv;
}

sub _load_name {
	my $self = shift;
	return $self->event_prefix . $self->parent->name . $self->event_suffix;
}

package SReview::Schedule::Multi;

use Moose;
use SReview::Schedule::Base;
<commit_msg>Wrap the default in a sub, as required by Moose API<commit_after>package SReview::Schedule::Multi::ShadowTalk;

use Moose;
use SReview::Schedule::Base;

extends 'SReview::Schedule::Base::Talk';

has 'parent' => (
	is => 'ro',
	isa => 'SReview::Schedule::Base::Talk',
	required => 1,
);

has 'prefix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

has 'suffix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

sub _load_room {
	return shift->parent->room;
}

sub _load_slug {
	return shift->parent->slug;
}

sub _load_starttime {
	return shift->parent->starttime;
}

sub _load_endtime {
	return shift->parent->endtime;
}

sub _load_length {
	return shift->parent->length;
}

sub _load_title {
	my $self = shift;
	return $self->prefix . $self->parent->title . $self->suffix;
}

sub _load_upstreamid {
	return shift->parent->upstreamid;
}

sub _load_subtitle {
	return shift->parent->subtitle;
}

sub _load_track {
	return shift->parent->track;
}

sub _load_description {
	return shift->parent->description;
}

sub _load_flags {
	return shift->parent->flags;
}

sub _load_speakers {
	return shift->parent->speakers;
}

sub _load_filtered {
	return shift->parent->filtered;
}

no Moose;

package SReview::Schedule::Multi::ShadowEvent;

use Moose;
use SReview::Schedule::Base;

extends 'SReview::Schedule::Base::Event';

has 'talk_prefix' => (
	is => 'ro',
	isa => 'Str',
);

has 'talk_suffix' => (
	is => 'ro',
	isa => 'Str',
);

has 'parent' => (
	is => 'ro',
	isa => 'SReview::Schedule::Base::Event',
	required => 1,
);

has 'event_prefix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

has 'event_suffix' => (
	is => 'ro',
	isa => 'Str',
	default => '',
);

has 'talk_opts' => (
	is => 'ro',
	isa => 'HashRef',
	default => sub { {} },
);

sub _load_talks {
	my $self = shift;
	my $rv = [];
	my $opts = $self->talk_opts;
	foreach my $talk(@{$self->parent->talks}) {
		push @$rv, SReview::Schedule::Multi::ShadowTalk->new(parent => $talk, prefix => $self->talk_prefix, suffix => $self->talk_suffix, %$opts);
	}
	return $rv;
}

sub _load_name {
	my $self = shift;
	return $self->event_prefix . $self->parent->name . $self->event_suffix;
}

package SReview::Schedule::Multi;

use Moose;
use SReview::Schedule::Base;

{'fraction_non_alphanumeric': 0.20031760435571688, 'fraction_numerical': 0.0009074410163339383, 'mean_word_length': 4.38997555012225, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 153, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4201596', 'n_tokens_mistral': 1714, 'n_tokens_neox': 1679, 'n_words': 365}