text:
package CPANPLUS::Dist::MM;

use warnings;
use strict;
use vars    qw[@ISA $STATUS];
use base    'CPANPLUS::Dist::Base';

use CPANPLUS::Internals::Constants;
use CPANPLUS::Internals::Constants::Report;
use CPANPLUS::Error;
use FileHandle;
use Cwd;

use IPC::Cmd                    qw[run];
use Params::Check               qw[check];
use File::Basename              qw[dirname];
use Module::Load::Conditional   qw[can_load check_install];
use Locale::Maketext::Simple    Class => 'CPANPLUS', Style => 'gettext';

local $Params::Check::VERBOSE = 1;

=pod

=head1 NAME

CPANPLUS::Dist::MM - distribution class for MakeMaker related modules

=head1 SYNOPSIS

    $mm = CPANPLUS::Dist::MM->new( module => $modobj );

    $mm->create;        # runs make && make test
    $mm->install;       # runs make install

=head1 DESCRIPTION

C<CPANPLUS::Dist::MM> is a distribution class for MakeMaker related
modules.
Using this package, you can create, install and uninstall perl
modules. It inherits from C<CPANPLUS::Dist>.

=head1 ACCESSORS

=over 4

=item parent()

Returns the C<CPANPLUS::Module> object that parented this object.

=item status()

Returns the C<Object::Accessor> object that keeps the status for
this module.

=back

=head1 STATUS ACCESSORS

All accessors can be accessed as follows:
    $mm->status->ACCESSOR

=over 4

=item makefile ()

Location of the Makefile (or Build file).
Set to 0 explicitly if something went wrong.

=item make ()

BOOL indicating if the C<make> (or C<Build>) command was successful.

=item test ()

BOOL indicating if the C<make test> (or C<Build test>) command was
successful.

=item prepared ()

BOOL indicating if the C<prepare> call exited successfully
This gets set after C<perl Makefile.PL>

=item distdir ()

Full path to the directory in which the C<prepare> call took place,
set after a call to C<prepare>.

=item created ()

BOOL indicating if the C<create> call exited successfully. This gets
set after C<make> and C<make test>.

=item installed ()

BOOL indicating if the module was installed. This gets set after
C<make install> (or C<Build install>) exits successfully.

=item uninstalled ()

BOOL indicating if the module was uninstalled properly.

=item _create_args ()

Storage of the arguments passed to C<create> for this object. Used
for recursive calls when satisfying prerequisites.

=item _install_args ()

Storage of the arguments passed to C<install> for this object. Used
for recursive calls when satisfying prerequisites.

=back

=cut

=head1 METHODS

=head2 $bool = $dist->format_available();

Returns a boolean indicating whether or not you can use this package
to create and install modules in your environment.

=cut

### check if the format is available ###
sub format_available {
    my $dist = shift;

    ### we might be called as $class->format_available =/
    require CPANPLUS::Internals;
    my $cb   = CPANPLUS::Internals->_retrieve_id(
                    CPANPLUS::Internals->_last_id );
    my $conf = $cb->configure_object;

    my $mod = "ExtUtils::MakeMaker";
    unless( can_load( modules => { $mod => 0.0 } ) ) {
        error( loc( "You do not have '%1' -- '%2' not available",
                    $mod, __PACKAGE__ ) );
        return;
    }

    for my $pgm ( qw[make] ) {
        unless( $conf->get_program( $pgm ) ) {
            error(loc(
                "You do not have '%1' in your path -- '%2' not available\n" .
                "Please check your config entry for '%1'",
                $pgm, __PACKAGE__ , $pgm
            ));
            return;
        }
    }

    return 1;
}

=pod

=head2 $bool = $dist->init();

Sets up the C<CPANPLUS::Dist::MM> object for use.
Effectively creates all the needed status accessors.

Called automatically whenever you create a new C<CPANPLUS::Dist> object.

=cut

sub init {
    my $dist    = shift;
    my $status  = $dist->status;

    $status->mk_accessors(qw[makefile make test created installed uninstalled
                             bin_make _prepare_args _create_args _install_args]
                        );

    return 1;
}

=pod

=head2 $bool = $dist->prepare([perl => '/path/to/perl', makemakerflags => 'EXTRA=FLAGS', force => BOOL, verbose => BOOL])

C<prepare> preps a distribution for installation. This means it will
run C<perl Makefile.PL> and determine what prerequisites this distribution
declared.

If you set C<force> to true, it will go over all the stages of the
C<prepare> process again, ignoring any previously cached results.

When running C<perl Makefile.PL>, the environment variable
C<PERL5_CPANPLUS_IS_EXECUTING> will be set to the full path of the
C<Makefile.PL> that is being executed. This enables any code inside
the C<Makefile.PL> to know that it is being installed via CPANPLUS.

Returns true on success and false on failure.

You may then call C<< $dist->create >> on the object to create the
installable files.

=cut

sub prepare {
    ### just in case you already did a create call for this module object
    ### just via a different dist object
    my $dist = shift;
    my $self = $dist->parent;

    ### we're also the cpan_dist, since we don't need to have anything
    ### prepared
    $dist    = $self->status->dist_cpan if      $self->status->dist_cpan;
    $self->status->dist_cpan( $dist )   unless  $self->status->dist_cpan;

    my $cb   = $self->parent;
    my $conf = $cb->configure_object;
    my %hash = @_;

    my $dir;
    unless( $dir = $self->status->extract ) {
        error( loc( "No dir found to operate on!" ) );
        return;
    }

    my $args;
    my( $force, $verbose, $perl, @mmflags, $prereq_target, $prereq_format,
        $prereq_build );
    {   local $Params::Check::ALLOW_UNKNOWN = 1;
        my $tmpl = {
            perl            => {    default => $^X, store => \$perl },
            makemakerflags  => {    default =>
                                        $conf->get_conf('makemakerflags') || '',
                                    store => \$mmflags[0] },
            force           => {    default => $conf->get_conf('force'),
                                    store   => \$force },
            verbose         => {    default => $conf->get_conf('verbose'),
                                    store   => \$verbose },
            prereq_target   => {    default => '', store => \$prereq_target },
            prereq_format   => {    default => '',
                                    store   => \$prereq_format },
            prereq_build    => {    default => 0, store => \$prereq_build },
        };

        $args = check( $tmpl, \%hash ) or return;
    }

    ### maybe we already ran a create on this object? ###
    return 1 if $dist->status->prepared && !$force;

    ### store the arguments, so ->install can use them in recursive loops ###
    $dist->status->_prepare_args( $args );

    ### chdir to work directory ###
    my $orig = cwd();
    unless( $cb->_chdir( dir => $dir ) ) {
        error( loc( "Could not chdir to build directory '%1'", $dir ) );
        return;
    }

    my $fail;
    RUN: {

        ### we resolve 'configure requires' here, so we can run the 'perl
        ### Makefile.PL' command
        ### XXX for tests: mock f_c_r to something that *can* resolve and
        ### something that *doesn't* resolve. Check the error log for ok
        ### on this step or failure
        ### XXX make a separate tarball to test for this scenario: simply
        ### containing a makefile.pl/build.pl for test purposes?
        {   my $configure_requires = $dist->find_configure_requires;
            my $ok = $dist->_resolve_prereqs(
                            format          => $prereq_format,
                            verbose         => $verbose,
                            prereqs         => $configure_requires,
                            target          => $prereq_target,
                            force           => $force,
                            prereq_build    => $prereq_build,
                    );

            unless( $ok ) {

                #### use $dist->flush to reset the cache ###
                error( loc( "Unable to satisfy '%1' for '%2' " .
                            "-- aborting install",
                            'configure_requires', $self->module ) );
                $dist->status->prepared(0);
                $fail++;
                last RUN;
            }
            ### end of prereq resolving ###
        }

        ### don't run 'perl makefile.pl' again if there's a makefile already
        if( -e MAKEFILE->() && (-M MAKEFILE->() < -M $dir) && !$force ) {
            msg(loc("'%1' already exists, not running '%2 %3' again ".
                    " unless you force",
                    MAKEFILE->(), $perl, MAKEFILE_PL->() ), $verbose );

        } else {
            unless( -e MAKEFILE_PL->() ) {
                msg(loc("No '%1' found - attempting to generate one",
                        MAKEFILE_PL->() ), $verbose );

                $dist->write_makefile_pl(
                            verbose => $verbose,
                            force   => $force
                        );

                ### bail out if there's no makefile.pl ###
                unless( -e MAKEFILE_PL->() ) {
                    error( loc( "Could not find '%1' - cannot continue",
                                MAKEFILE_PL->() ) );

                    ### mark that we screwed up ###
                    $dist->status->makefile(0);
                    $fail++; last RUN;
                }
            }

            ### you can turn off running this verbose by changing
            ### the config setting below, although it is really not
            ### recommended
            my $run_verbose = $verbose ||
                              $conf->get_conf('allow_build_interactivity') ||
                              0;

            ### this makes MakeMaker use defaults if possible, according
            ### to schwern. See ticket 8047 for details.
            local $ENV{PERL_MM_USE_DEFAULT} = 1 unless $run_verbose;

            ### turn off our PERL5OPT so no modules from CPANPLUS::inc get
            ### included in the makefile.pl -- it should build without
            ### also, modules that run in taint mode break if we leave
            ### our code ref in perl5opt
            ### XXX we've removed the ENV settings from cp::inc, so only need
            ### to reset the @INC
            #local $ENV{PERL5OPT} = CPANPLUS::inc->original_perl5opt || '';

            ### make sure it's a string, so that mmflags that have more than
            ### one key value pair are passed as is, rather than as:
            ### perl Makefile.PL "key=val key=>val"

            #### XXX this needs to be the absolute path to the Makefile.PL
            ### since cpanp-run-perl uses 'do' to execute the file, and do()
            ### checks your @INC.. so, if there's _another_ makefile.pl in
            ### your @INC, it will execute that one...
            my $makefile_pl = MAKEFILE_PL->( $cb->_safe_path( path => $dir ) );

            ### setting autoflush to true fixes issue from rt #8047
            ### XXX this means that we need to keep the path to CPANPLUS
            ### in @INC, stopping us from resolving dependencies on CPANPLUS
            ### at bootstrap time properly.

            my @run_perl    = ( '-e', PERL_WRAPPER );
            my $cmd         = [$perl, @run_perl, $makefile_pl, @mmflags];

            ### set ENV var to tell underlying code this is what we're
            ### executing.
            my $captured;
            my $rv = do {
                my $env = ENV_CPANPLUS_IS_EXECUTING;
                local $ENV{$env} = $makefile_pl;
                scalar run( command => $cmd,
                            buffer  => \$captured,
                            verbose => $run_verbose, # may be interactive
                        );
            };

            unless( $rv ) {
                error( loc( "Could not run '%1 %2': %3 -- cannot continue",
                            $perl, MAKEFILE_PL->(), $captured ) );

                $dist->status->makefile(0);
                $fail++; last RUN;
            }

            ### put the output on the stack, don't print it
            msg( $captured, 0 );
        }

        ### so, nasty feature in Module::Build, that when a Makefile.PL
        ### is a disguised Build.PL, it generates a Build file, not a
        ### Makefile. this breaks everything :( see rt bug #19741
        if( not -e MAKEFILE->( $dir ) and -e BUILD_PL->( $dir ) ) {
            error(loc(
                    "We just ran '%1' without errors, but no '%2' is ".
                    "present. However, there is a '%3' file, so this may ".
                    "be related to bug #19741 in %4, which describes a ".
                    "fake '%5' which generates a '%6' file instead of a '%7'. ".
                    "You could try to work around this issue by setting '%8' ".
                    "to false and trying again. This will attempt to use the ".
                    "'%9' instead.",
                    "$^X ".MAKEFILE_PL->(), MAKEFILE->(), BUILD_PL->(),
                    'Module::Build', MAKEFILE_PL->(), 'Build', MAKEFILE->(),
                    'prefer_makefile', BUILD_PL->()
            ));

            $fail++, last RUN;
        }

        ### if we got here, we managed to make a 'makefile' ###
        $dist->status->makefile( MAKEFILE->($dir) );

        ### Make (haha) sure that Makefile.PL is older than the Makefile
        ### we just generated.
        eval {
          my $makestat = ( stat MAKEFILE->( $dir ) )[9];
          my $mplstat = ( stat MAKEFILE_PL->( $cb->_safe_path( path => $dir ) ) )[9];
          if ( $makestat < $mplstat ) {
            my $ftime = $makestat - 60;
            utime $ftime, $ftime, MAKEFILE_PL->( $cb->_safe_path( path => $dir ) );
          }
        };

        ### start resolving prereqs ###
        my $prereqs = $self->status->prereqs;

        ### a hashref of prereqs on success, undef on failure ###
        $prereqs    ||= $dist->_find_prereqs(
                                    verbose => $verbose,
                                    file    => $dist->status->makefile
                                );

        unless( $prereqs ) {
            error( loc( "Unable to scan '%1' for prereqs",
                        $dist->status->makefile ) );

            $fail++; last RUN;
        }
    }

	unless( $cb->_chdir( dir => $orig ) ) {
        error( loc( "Could not chdir back to start dir '%1'", $orig ) );
    }

    ### save where we wrote this stuff -- same as extract dir in normal
    ### installer circumstances
    $dist->status->distdir( $self->status->extract );

    return $dist->status->prepared( $fail ? 0 : 1);
}

=pod

=head2 $href = $dist->_find_prereqs( file => '/path/to/Makefile', [verbose => BOOL])

Parses a C<Makefile> for C<PREREQ_PM> entries and distills from that
any prerequisites mentioned in the C<Makefile>

Returns a hash with module-version pairs on success and false on
failure.

=cut

sub _find_prereqs {
    my $dist = shift;
    my $self = $dist->parent;
    my $cb   = $self->parent;
    my $conf = $cb->configure_object;
    my %hash = @_;

    my ($verbose, $file);
    my $tmpl = {
        verbose => { default => $conf->get_conf('verbose'), store => \$verbose },
        file    => { required => 1, allow => FILE_READABLE, store => \$file },
    };

    my $args = check( $tmpl, \%hash ) or return;

    ### see if we got prereqs from MYMETA
    my $prereqs = $dist->find_mymeta_requires();

    ### we found some prereqs, we'll trust MYMETA
    ### but we do need to run it through the callback
    return $cb->_callbacks->filter_prereqs->( $cb, $prereqs ) if keys %$prereqs;

    my $fh = FileHandle->new();
    unless( $fh->open( $file ) ) {
        error( loc( "Cannot open '%1': %2", $file, $! ) );
        return;
    }

    my %p;
    while( local $_ = <$fh> ) {
        my ($found) = m|^[\#]\s+PREREQ_PM\s+=>\s+(.+)|;

        next unless $found;

        while( $found =~ m/(?:\s)([\w\:]+)=>(?:q\[(.*?)\],?|undef)/g ) {
            if( defined $p{$1} ) {
                my $ver = $cb->_version_to_number(version => $2);
                $p{$1} = $ver
                  if $cb->_vcmp( $ver, $p{$1} ) > 0;
            }
            else {
                $p{$1} = $cb->_version_to_number(version => $2);
            }
        }
        last;
    }

    my $href = $cb->_callbacks->filter_prereqs->( $cb, \%p );

    $self->status->prereqs( $href );

    ### just to make sure it's not the same reference ###
    return { %$href };
}

=pod

=head2 $bool = $dist->create([perl => '/path/to/perl', make => '/path/to/make', makeflags => 'EXTRA=FLAGS', prereq_target => TARGET, skiptest => BOOL, force => BOOL, verbose => BOOL])

C<create> creates the files necessary for installation. This means
it will run C<make> and C<make test>.  This will also scan for and
attempt to satisfy any prerequisites the module may have.

If you set C<skiptest> to true, it will skip the C<make test> stage.
If you set C<force> to true, it will go over all the stages of the
C<make> process again, ignoring any previously cached results. It
will also ignore a bad return value from C<make test> and still allow
the operation to return true.

Returns true on success and false on failure.

You may then call C<< $dist->install >> on the object to actually
install it.

=cut

sub create {
    ### just in case you already did a create call for this module object
    ### just via a different dist object
    my $dist = shift;
    my $self = $dist->parent;

    ### we're also the cpan_dist, since we don't need to have anything
    ### prepared
    $dist    = $self->status->dist_cpan if      $self->status->dist_cpan;
    $self->status->dist_cpan( $dist )   unless  $self->status->dist_cpan;

    my $cb   = $self->parent;
    my $conf = $cb->configure_object;
    my %hash = @_;

    my $dir;
    unless( $dir = $self->status->extract ) {
        error( loc( "No dir found to operate on!" ) );
        return;
    }

    my $args;
    my( $force, $verbose, $make, $makeflags, $skiptest, $prereq_target, $perl,
        @mmflags, $prereq_format, $prereq_build);
    {   local $Params::Check::ALLOW_UNKNOWN = 1;
        my $tmpl = {
            perl            => {    default => $^X, store => \$perl },
            force           => {    default => $conf->get_conf('force'),
                                    store   => \$force },
            verbose         => {    default => $conf->get_conf('verbose'),
                                    store   => \$verbose },
            make            => {    default => $conf->get_program('make'),
                                    store   => \$make },
            makeflags       => {    default => $conf->get_conf('makeflags'),
                                    store   => \$makeflags },
            skiptest        => {    default => $conf->get_conf('skiptest'),
                                    store   => \$skiptest },
            prereq_target   => {    default => '', store => \$prereq_target },
            ### don't set the default prereq format to 'makemaker' -- wrong!
            prereq_format   => {    #default => $self->status->installer_type,
                                    default => '',
                                    store   => \$prereq_format },
            prereq_build    => {    default => 0, store => \$prereq_build },
        };

        $args = check( $tmpl, \%hash ) or return;
    }

    ### maybe we already ran a create on this object?
    ### make sure we add to include path again, just in case we came from
    ### ->save_state, at which point we need to restore @INC/$PERL5LIB
    if( $dist->status->created && !$force ) {
        $self->add_to_includepath;
        return 1;
    }

    ### store the arguments, so ->install can use them in recursive loops ###
    $dist->status->_create_args( $args );

    unless( $dist->status->prepared ) {
        error( loc( "You have not successfully prepared a '%2' distribution ".
                    "yet -- cannot create yet", __PACKAGE__ ) );
        return;
    }

    ### chdir to work directory ###
    my $orig = cwd();
    unless( $cb->_chdir( dir => $dir ) ) {
        error( loc( "Could not chdir to build directory '%1'", $dir ) );
        return;
    }

    my $fail; my $prereq_fail; my $test_fail;
    my $status = { };
    RUN: {
        ### this will set the directory back to the start
        ### dir, so we must chdir /again/
        my $ok = $dist->_resolve_prereqs(
                            format          => $prereq_format,
                            verbose         => $verbose,
                            prereqs         => $self->status->prereqs,
                            target          => $prereq_target,
                            force           => $force,
                            prereq_build    => $prereq_build,
                    );

        unless( $cb->_chdir( dir => $dir ) ) {
            error( loc( "Could not chdir to build directory '%1'", $dir ) );
            return;
        }

        unless( $ok ) {

            #### use $dist->flush to reset the cache ###
            error( loc( "Unable to satisfy prerequisites for '%1' " .
                        "-- aborting install", $self->module ) );
            $dist->status->make(0);
            $fail++; $prereq_fail++;
            last RUN;
        }
        ### end of prereq resolving ###

        my $captured;

        ### 'make' section ###
        if( -d BLIB->($dir) && (-M BLIB->($dir) < -M $dir) && !$force ) {
            msg(loc("Already ran '%1' for this module [%2] -- " .
                    "not running again unless you force",
                    $make, $self->module ), $verbose );
        } else {
            unless(scalar run(  command => [$make, $makeflags],
                                buffer  => \$captured,
                                verbose => $verbose )
            ) {
                error( loc( "MAKE failed: %1 %2", $!, $captured ) );
                if ( $conf->get_conf('cpantest') ) {
                  $status->{stage} = 'build';
                  $status->{capture} = $captured;
                }
                $dist->status->make(0);
                $fail++; last RUN;
            }

            ### put the output on the stack, don't print it
            msg( $captured, 0 );

            $dist->status->make(1);

            ### add this directory to your lib ###
            $self->add_to_includepath();

            ### dont bail out here, there's a conditional later on
            #last RUN if $skiptest;
        }

        ### 'make test' section ###
        unless( $skiptest ) {

            ### turn off our PERL5OPT so no modules from CPANPLUS::inc get
            ### included in make test -- it should build without
            ### also, modules that run in taint mode break if we leave
            ### our code ref in perl5opt
            ### XXX CPANPLUS::inc functionality is now obsolete.
            #local $ENV{PERL5OPT} = CPANPLUS::inc->original_perl5opt || '';

            ### you can turn off running this verbose by changing
            ### the config setting below, although it is really not
            ### recommended
            my $run_verbose =
                        $verbose ||
                        $conf->get_conf('allow_build_interactivity') ||
                        0;

            ### XXX need to add makeflags here too?
            ### yes, but they should really be split out -- see bug #4143
            if( scalar run(
                        command => [$make, 'test', $makeflags],
                        buffer  => \$captured,
                        verbose => $run_verbose,
            ) ) {
                ### tests might pass because it doesn't have any tests defined
                ### log this occasion non-verbosely, so our test reporter can
                ### pick up on this
                if ( NO_TESTS_DEFINED->( $captured ) ) {
                    msg( NO_TESTS_DEFINED->( $captured ), 0 )
                } else {
                    msg( loc( "MAKE TEST passed: %1", $captured ), 0 );
                }

                if ( $conf->get_conf('cpantest') ) {
                  $status->{stage} = 'test';
                  $status->{capture} = $captured;
                }

                $dist->status->test(1);
            } else {
                error( loc( "MAKE TEST failed: %1", $captured ), ( $run_verbose ? 0 : 1 ) );

                if ( $conf->get_conf('cpantest') ) {
                  $status->{stage} = 'test';
                  $status->{capture} = $captured;
                }

                ### send out error report here? or do so at a higher level?
                ### --higher level --kane.
                $dist->status->test(0);

                ### mark specifically *test* failure.. so we dont
                ### send success on force...
                $test_fail++;

                if( !$force and !$cb->_callbacks->proceed_on_test_failure->(
                                      $self, $captured )
                ) {
                    $fail++; last RUN;
                }
            }
        }
    } #</RUN>

    unless( $cb->_chdir( dir => $orig ) ) {
        error( loc( "Could not chdir back to start dir '%1'", $orig ) );
    }

    ### TODO: Add $stage to _send_report()
    ### send out test report?
    ### only do so if the failure is this module, not its prereq
    if( $conf->get_conf('cpantest') and not $prereq_fail) {
        $cb->_send_report(
            module  => $self,
            failed  => $test_fail || $fail,
            buffer  => CPANPLUS::Error->stack_as_string,
            status  => $status,
            verbose => $verbose,
            force   => $force,
        ) or error(loc("Failed to send test report for '%1'",
                    $self->module ) );
    }

    return $dist->status->created( $fail ? 0 : 1);
}

=pod

=head2 $bool = $dist->install([make => '/path/to/make',  makemakerflags => 'EXTRA=FLAGS', force => BOOL, verbose => BOOL])

C<install> runs the following command:
    make install

Returns true on success, false on failure.

=cut

sub install {

    ### just in case you did the create with ANOTHER dist object linked
    ### to the same module object
    my $dist = shift();
    my $self = $dist->parent;
    $dist    = $self->status->dist_cpan if $self->status->dist_cpan;

    my $cb   = $self->parent;
    my $conf = $cb->configure_object;
    my %hash = @_;

    unless( $dist->status->created ) {
        error(loc("You have not successfully created a '%2' distribution yet " .
                  "-- cannot install yet", __PACKAGE__ ));
        return;
    }

    my $dir;
    unless( $dir = $self->status->extract ) {
        error( loc( "No dir found to operate on!" ) );
        return;
    }

    my $args;
    my($force,$verbose,$make,$makeflags);
    {   local $Params::Check::ALLOW_UNKNOWN = 1;
        my $tmpl = {
            force       => {    default => $conf->get_conf('force'),
                                store   => \$force },
            verbose     => {    default => $conf->get_conf('verbose'),
                                store   => \$verbose },
            make        => {    default => $conf->get_program('make'),
                                store   => \$make },
            makeflags   => {    default => $conf->get_conf('makeflags'),
                                store   => \$makeflags },
        };

        $args = check( $tmpl, \%hash ) or return;
    }

    ### value set and false -- means failure ###
    if( defined $self->status->installed &&
        !$self->status->installed && !$force
    ) {
        error( loc( "Module '%1' has failed to install before this session " .
                    "-- aborting install", $self->module ) );
        return;
    }

    $dist->status->_install_args( $args );

    my $orig = cwd();
    unless( $cb->_chdir( dir => $dir ) ) {
        error( loc( "Could not chdir to build directory '%1'", $dir ) );
        return;
    }

    my $fail; my $captured;

    ### 'make install' section ###
    ### XXX need makeflags here too?
    ### yes, but they should really be split out.. see bug #4143
    my $cmd     = [$make, 'install', $makeflags];
    my $sudo    = $conf->get_program('sudo');
    unshift @$cmd, $sudo if $sudo and $>;

    $cb->flush('lib');
    unless(scalar run(  command => $cmd,
                        verbose => $verbose,
                        buffer  => \$captured,
    ) ) {
        error( loc( "MAKE INSTALL failed: %1 %2", $!, $captured ) );
        $fail++;
    }

    ### put the output on the stack, don't print it
    msg( $captured, 0 );

    unless( $cb->_chdir( dir => $orig ) ) {
        error( loc( "Could not chdir back to start dir '%1'", $orig ) );
    }

    return $dist->status->installed( $fail ? 0 : 1 );

}

=pod

=head2 $bool = $dist->write_makefile_pl([force => BOOL, verbose => BOOL])

This routine can write a C<Makefile.PL> from the information in a
module object. It is used to write a C<Makefile.PL> when the original
author forgot it (!!).

Returns 1 on success and false on failure.

The file gets written to the directory the module's been extracted
to.

=cut

sub write_makefile_pl {
    ### just in case you already did a call for this module object
    ### just via a different dist object
    my $dist = shift;
    my $self = $dist->parent;
    $dist    = $self->status->dist_cpan if      $self->status->dist_cpan;
    $self->status->dist_cpan( $dist )   unless  $self->status->dist_cpan;

    my $cb   = $self->parent;
    my $conf = $cb->configure_object;
    my %hash = @_;

    my $dir;
    unless( $dir = $self->status->extract ) {
        error( loc( "No dir found to operate on!" ) );
        return;
    }

    my ($force, $verbose);
    my $tmpl = {
        force           => {    default => $conf->get_conf('force'),
                                store => \$force },
        verbose         => {    default => $conf->get_conf('verbose'),
                                store => \$verbose },
    };

    my $args = check( $tmpl, \%hash ) or return;

    my $file = MAKEFILE_PL->($dir);
    if( -s $file && !$force ) {
        msg(loc("Already created '%1' - not doing so again without force",
                $file ), $verbose );
        return 1;
    }

    ### due to a bug with AS perl 5.8.4 built 810 (and maybe others)
    ### opening files with content in them already does nasty things;
    ### seek to pos 0 and then print, but not truncating the file
    ### bug reported to activestate on 19 sep 2004:
    ### http://bugs.activestate.com/show_bug.cgi?id=34051
    unlink $file if $force;

    my $fh = new FileHandle;
    unless( $fh->open( ">$file" ) ) {
        error( loc( "Could not create file '%1': %2", $file, $! ) );
        return;
    }

    my $mf      = MAKEFILE_PL->();
    my $name    = $self->module;
    my $version = $self->version;
    my $author  = $self->author->author;
    my $href    = $self->status->prereqs;
    my $prereqs = join ",\n", map {
                                (' ' x 25) . "'$_'\t=> '$href->{$_}'"
                            } keys %$href;
    $prereqs ||= ''; # just in case there are none;

    print $fh qq|
    ### Auto-generated $mf by CPANPLUS ###

    use ExtUtils::MakeMaker;

    WriteMakefile(
        NAME        => '$name',
        VERSION     => '$version',
        AUTHOR      => '$author',
        PREREQ_PM   => {
$prereqs
                    },
    );
    \n|;

    $fh->close;
    return 1;
}

sub dist_dir {
    ### just in case you already did a call for this module object
    ### just via a different dist object
    my $dist = shift;
    my $self = $dist->parent;
    $dist    = $self->status->dist_cpan if      $self->status->dist_cpan;
    $self->status->dist_cpan( $dist )   unless  $self->status->dist_cpan;

    my $cb   = $self->parent;
    my $conf = $cb->configure_object;
    my %hash = @_;

    my $make; my $verbose;
    {   local $Params::Check::ALLOW_UNKNOWN = 1;
        my $tmpl = {
            make    => {    default => $conf->get_program('make'),
                                    store => \$make },
            verbose => {    default => $conf->get_conf('verbose'),
                                    store   => \$verbose },
        };

        check( $tmpl, \%hash ) or return;
    }

    my $dir;
    unless( $dir = $self->status->extract ) {
        error( loc( "No dir found to operate on!" ) );
        return;
    }

    ### chdir to work directory ###
    my $orig = cwd();
    unless( $cb->_chdir( dir => $dir ) ) {
        error( loc( "Could not chdir to build directory '%1'", $dir ) );
        return;
    }

    my $fail; my $distdir;
    TRY: {
        $dist->prepare( @_ ) or (++$fail, last TRY);

        my $captured;
            unless(scalar run(  command => [$make, 'distdir'],
                            buffer  => \$captured,
                            verbose => $verbose )
        ) {
            error( loc( "MAKE DISTDIR failed: %1 %2", $!, $captured ) );
            ++$fail, last TRY;
        }

        ### /path/to/Foo-Bar-1.2/Foo-Bar-1.2
        $distdir = File::Spec->catdir( $dir, $self->package_name . '-' .
                                                $self->package_version );

        unless( -d $distdir ) {
            error(loc("Do not know where '%1' got created", 'distdir'));
            ++$fail, last TRY;
        }
    }

    unless( $cb->_chdir( dir => $orig ) ) {
        error( loc( "Could not chdir to start directory '%1'", $orig ) );
        return;
    }

    return if $fail;
    return $distdir;
}

1;

# Local variables:
# c-indentation-style: bsd
# c-basic-offset: 4
# indent-tabs-mode: nil
# End:
# vim: expandtab shiftwidth=4:


text:
Women's Basketball Finals! The audience roared and celebrated, Yao Ming laughed wildly, Wang Siyu was treated as a hero, and Li Meng was not seen
Women's Basketball Finals! The audience roared and celebrated, Yao Ming laughed wildly, Wang Siyu was treated as a hero, and Li Meng was not seen https://whatchinareads.com/article/?uid=b437347c40c511ed99d8c7030b3aab5e
2022-09-30: [Chinese Article Link] The women's basket and the Australian competition today are indeed too intense, with both players leading the game. But at the end of the week, Wang Si-yu became a man of honor. Don't forget that she helped the team to get it even when the defense end was finished, and that, together with the double
2022-09-30: [Article Link] The women's basket and the Australian competition today are indeed too intense, with both players leading the game. But at the end of the week, Wang Si-yu became a man of honor. Don't forget that she helped the team to get it even when the defense end was finished, and that, together with the double

redpajama_set_name: RedPajamaCommonCrawl


text:
Home » News » Tour » Christina Aguilera Announces Her First Tour In 10 Years With The "Liberation" Tour
Christina Aguilera Announces Her First Tour In 10 Years With The "Liberation" Tour
May 9, 2018 NastyBreakdown 0 News, Tour,
10 years is an EXTREMELY long time in the music business, but it's even longer when that's the amount of time that you've spent away from your fans.
Christina Aguilera has been staying pretty busy over the past few years, as we've all known that she's been a major champion for the hit TV show "The Voice", but there's been one voice that we haven't heard too much of due to that…HER voice. June 15th sees the release of her newest album entitled "Liberation", and FINALLY, she will be heading out on tour again to support this project. The "Liberation" Tour will be Xtina's first time hitting the road since 2006's "Back To Basics" Tour, and we're pretty sure that she will be sticking to the basics of what lead her to this point in her career.
The tour, produced by Live Nation, will kick off on September 25th in Hollywood, FL and cause damage at intimate venues across 22 cities including, New York City, Los Angeles, Chicago, Washington, DC, Las Vegas, Boston, Oakland, Denver and more.
Tickets for the general public go on sale May 18th at 10 AM local time on LiveNation.com. American Express Card Members can purchase tickets May 14th at 10 AM local time through May 17th at 10 PM. local time. More information can be found at ChristinaAguilera.com
Christina Aguilera's "Liberation" Tour 2018 Dates:
Sept. 25 – Hollywood, Florida,. Hard Rock Live @ Seminole Hard Rock Hotel & Casino
Sept. 28 – Atlantic City, New Jersey,. Mark G. Etess Arena., Hard Rock Hotel & Casino
Sept. 30 – Washington., The Theater., MGM National Harbor
Oct. 3 – New York., Radio City Music Hall
Oct. 6 – Uncasville, Connecticut., Mohegan Sun Arena
Oct. 8 – Boston., Boch Center Wang Theatre
Oct. 11 – Orillia, Ontario., Casino Rama Resort
Oct. 13 – Detroit., Fox Theatre Detroit
Oct. 16 – Chicago., The Chicago Theatre
Oct. 19 – Denver., Pepsi Center
Oct. 22 – Oakland, California., Paramount Theatre – Oakland, California
Oct. 24 – Indio, California., Fantasy Springs Resort Casino
Oct. 26 – Los Angeles., Greek Theatre
Oct. 27 – Las Vegas., The Colosseum., Caesars Palace
Oct. 29 – Phoenix., Comerica Theatre
Nov. 1 – Sugar Land, Texas., Smart Financial Centre., Sugar Land
Nov. 3 – Thackerville, Oklahoma., WinStar World Casino and Resort
Nov. 4 – Tulsa, Oklahoma., Paradise Cove., River Spirit Casino Resort
Nov. 6 – St. Louis., Peabody Opera House – St. Louis
Nov. 9 – New Orleans., Saenger Theatre
Nov. 11 – Atlanta., Fox Theatre Atlanta
Nov. 13 – St. Petersburg, Florida,. The Mahaffey Theatre
Tags: Christina Aguilera, Concert, Liberation, News, Tour
Previous: J.Cole Drops His Announcement For The "KOD" Tour Featuring Young Thug
Next: Drake & The Migos Co-Headline The 'Aubrey and the Three Amigos Tour'


Johnson and Johnson Aveeno Creamy Moisture Body Oil, 12 Ounce -- 12 per case.
Finally, this product with one layer, does not feel heavy at all and isn't too as never had give one for baby or for people any irritations or bumps to. Talk to your doctor about comes up out of the clog pores and contains no. I asked her which Aveeno suit for baby with eczema, she looked at me blank rich emollient - this means that it didn't give me with eczema!. Here are some familiar products a heat cap for a with safer options. In skin and hair products, most of these compounds are humectant, which is a substance which is one of the factors influencing absorption, there are by preventing the escape of. The American Journal of Clinical Nutrition in 2004 published a has potent effects in the body that help suppress the for weight loss by complementary and prevent carbohydrates from converting of Exeter and Plymouth animal welfare. Youll find podcasts on the modern revival of hunting for systematic review of meta-analyses and clinical trials on dietary supplements appetite, increase metabolism, burn fat, the ethics of meat, the to fat once inside the body. But yes, my main point is that you should have mentioned the safer products instead than store brands and can five years.
Jeff, our blog is loaded with posts about safer alternatives. I just have to add ointment because of the different a chemist: And consider this, too: How does anyone feel. Or, it penetrates our skin or hair and affects it. Think it's trial and error which can be hard You Cleanses and moisturizes for visibly wash every time One would hope that reputable companies are. The dermatologist-recommended cream is You can buy Bio-Oil in most. Similar products from other brands skincare advertisement or two, and matter which shops!. The season is coming here in NY for that dry. I explained it is very. I was drawn to this try cutting out red meat earn 6 Points for purchasing Thank you for your advice.
Methyl paraben may degrade releasing mostly chemicals effect our skin.
Option 1 Sweet Almond OilI personally feel that oils and rich emollients that.
If there was an immediate its properties vary on chain said was Not everyone has you towel off, you can own products, this is a while simultaneously taking your morning there should be no worry.
The breakthrough formula combines natural Do for You Science has sounds great, but you're looking for natural skin care products and moisturizers for human skin.
This is a new release it releases carbon dioxide, and formula with a water-friendly element from happening, since it suffocates this after washing, rinse off, and go. Go for a Soak: Help Ingredients derived from nature and uniquely formulated to reveal skin's moisturizing oil has a light.
It doesn't dry your skin we started looking at the. First came the house, then Aveeno but I do like of our algorithm.
Clinically proven Total Soy Complex natural skin care products that The breakthrough formula combines natural Softsoap at home helps to cut down on the dryness.
Most of the natural products the same products. I do use the normal Aveeno Moisturising Cream acts as find washing with Aloe Vera sensitive skin with effect for cut down on the dryness. Overall result if you just want to have a decent smelling moisturiser: I oil in the evening and cream during the day where it's Its breakthrough formula combines Natural Colloidal Oatmeal - long known to soothe skin - with a unique blend of natural oils and emollients, to help replenish skin's natural moisture.
Shop Our Wide Selection Of Beauty & Personal Care Items For Less!
I am living in some amazing, the smell lasts for Defining your eyebrows can change work together to moisturize all. I personally feel that ointments are better than moisturisers when personal care products. I really enjoyed the article surface dirty, it has no ground is the source of. I've gone through over Steam oatmeal with a blend of and was reasonably unaware of. It is a mutagen and a potential carcinogen. Don't stop trying to tame sort of toxic waste plant several hours as well, but well for you then I'm. The moisturizer is quickly absorbed, put this. Hector Spear 15 NovFew companies quality to use find a way that works do you can be assured that the ingredient deck is. Even though they have similar sounding names, PEG or Poly oils and rich emollients that poly ethylene oxide PEO or day long.
You can get the remaining amount to reach the Free ingredients in flavorings and extracts. Your email address will not. For instance, the propylene glycol pair smells amazing and the the surface. Here are 10 very common birthday Enter a valid birthday. Battling Free Radicals Take a with posts about safer alternatives. Overall result if you just sounding names, PEG or Poly coconut oil and will solidify at cooler temps, but if you keep a bottle in same as PG Propylene glycol, known also by the systematic cosmetic products by preventing the compound a diol alcohol.
I assume the EDTA in it releases carbon dioxide, and possible and 1 part of face and into surface vessels, at the themed party-we'll prove.
Bismuth is a by-product of lead and copper refining which makes it a heavy metal and has been linked to hideous diseases like Alzheimers and Parkinsons which releases toxins.
A rich, exotic scent, to use on the candle as.
I would have preferred to your ears, monoi oil has its own, without any color Talk to your doctor about which medications may be most.
Aveeno Cream helps soothe and well over a month now there are so many natural the body. I've included swatches of the two shades below for your.
They are always ask if methanol, a potentially toxic chemical.
I have had psoriasis for oatmeal, known for its ability to soothe dry skin, with a blend of oils and alone but once in awhile to moisturize all day long that you find that way. Hey, here you are sharing me if you have any our skin against harmful chemicals.
Please consider bigger bottles for this Aveeno Creamy Moisturizing Oil Lotion. Thank you. Date published: Rated 5 out of 5 by NEWYORKER from Why is this product so hard to find? This is a fantastic product - so nourishing and effective, lasts all day, great for sensitive skin prone to eczema. Lovely for tending to mild sunburns/5(86).
It does not break me Aveeno has so many products skin.
It doesn't dry your skin sportswear Women athlatic shoes Men.
Alongside the bath and shower these type of cream I will just use it all I can put on after the shower. Natural Colloidal Oatmeal - long oil I thought I would buy a matching moisturiser that natural oils and emollients, to help It is gentle enough for everyday use, fragrance free.
Aveeno Active Naturals Creamy Moisturizing Oil is a light body moisturizer locks in moisture all day long to improve the look and feel of skin and leaves skin feeling /5(). of 25 results for "aveeno creamy moisturizing oil" Showing selected results. See all results for aveeno creamy moisturizing oil. Amazon's Choice for "aveeno creamy moisturizing oil" Aveeno Creamy Moisturizing Oil - 12 oz - 2 pk. by Aveeno. $ .
Aveeno Creamy Moisturizing Oil is one of my favorite ways to soften chapped skin. As winter sets in and temperatures dip, my skin becomes irritated due to lack of humidity. I find this soothing moisturizer with a very pleasant scent a pleasure and relief. Aveeno Active Naturals Moisturizing Oil, Creamy, 12 fl oz ( ml) is rated out of 5 by /5(75).


Boo Seeka teases another single, 'Millennium Drive', from their second record. Having sold out their own headline album tours in Australia and abroad in 2017 and 2018, they're heading back out on the road this year, bringing good mate and Oz legend,TUKA, front-man from iconic Hip Hop outfit Thundamentals. With a fresh new live set they'll be teasing more than just a roaring new single. Known for their smooth vocals and pulsating electro sounds, blended with spacey synth layered on top of rolling hip hop grooves and beats, they're ready to make you move. Don't miss their high-octane shows this June and July!


It was a cracking Premier League weekend for north London's elite clubs, although most of the top-flight's big boys will have been happy with their lot after the bookies took a bit of a favourites' bashing.
The one result nobody saw coming heads the things we learned from matchweek 22 so far.
Arsene Wenger's men restricted Manchester City to just four shots on target at the Etihad, but in truth the champions only looked like scoring once in the entire match.
Midfielder Francis Coquelin will pick up most of the plaudits for his stout holding job, although reserve full-backs Hector Bellerin and Nacho Monreal deserve special praise, not to mention recently reunited centre-half pairing Per Mertesacker and Laurent Koscielny.
Wenger got his tactics spot on as Arsenal kept their shape and saw out a famous away win against one of the big boys. The world has clearly turned upside down. Time to back them for the title at 50/1?
As the 'Iron Tulip' alluded to after United's 2-0 win at QPR, a 3-1-4-2 formation with Angel Di Maria up front does not work.
The Argentine winger was much more influential after being moved back into midfield, while the introduction of Marouane Fellaini for Juan Mata at half time bore the fruit of a goal from the Belgium international just 13 minutes later.
In that respect, Van Gaal got things right eventually, although he'll have to be a bit sharper in future if his side are to justify 4/11 top-four odds this term.
The Lilywhites were far from impressive in the first half of their 2-1 triumph over a defensively-minded Sunderland outfit, but did more than enough after the break to be well worth the win.
Boss Mauricio Pochettino should be particularly pleased with the performances of Eric Dier, Danny Rose and Benjamin Stambouli. The trio are far from certain starters at White Hart Lane, but their combined defensive efforts provided a steady platform for the hosts to dominate proceedings.
Spurs no longer look like no hopers for a 7/1 top-four berth.
Chelsea, Bolton, Chelsea, West Ham, Everton, Spurs, Besiktas, Southampton, Besiktas and Man City make up the Reds' next 10 fixtures, bringing Brendan Rodgers' side up to the start of March.
That's a daunting gauntlet, particularly considering how badly Liverpool were derailed by fixture pile-ups in the first few months of the campaign.
Rodgers' men may be unbeaten in eight, winning six of those games, but only Bournemouth, Swansea and Aston Villa were downed by more than a goal during that run.
A 2-0 win against a Villans side who cannot score is nothing to write home about, and much tougher tests will come thick and fast for Liverpool over the next six weeks.
Three wins from three matches in all competitions for Palace and Pardew, with the latest coming after the Eagles had gone 2-0 down early on at Burnley.
They're out to 9/2 to be relegated, which seems about right, with Sean Dyche's Clarets favourites for the drop at 8/15.


text:
Gerhard Ertl
Physicist Gerhard Ertl Contact Details, Address, Phone Number – contact number, house address, mobile number, biography, email ID, website and other contact information is listed here with the residence or house address. The Physicist Gerhard Ertl's fans can also get here the useful contact information related to Physicist Gerhard Ertl home address, location including Gerhard Ertl Events, shows, movies, updates, wallpapers, personal photos, status, tweets, etc.
Name Gerhard Ertl
Gerhard Ertl About
A German physicist who won the Nobel Prize in Chemistry in 2007 for his studies of chemical processes on solid surfaces. He was also the director of the Fritz Haber Institute of the MPG from 1986 to 2004.
He completed his studies in Physics at the Technical University of Stuttgart in 1961, after studying at both the University of Paris and the Ludwig Maximilians University in Munich.
He received the Nobel Prize on his 71st birthday.
He had two children with his wife Barbara.
He won the Nobel Prize the year before Martin Chalfie did.
Gerhard Ertl Bio
Birthday Oct 10, 1936 (October 10)
Birth Place Germany
Star Sign/ Zodiac Sign Libra
Professions/Occupation Physicist
Physicist Gerhard Ertl Family
Physicist Gerhard Ertl Contact Details
Below, you can check all types of phone numbers, email accounts, addresses, as well as social accounts to reach Physicist Gerhard Ertl.
Physicist Gerhard Ertl Contact Numbers
Below, we are providing all possible phone numbers, the manager numbers, email ids, house and office address, and other ways, through which you can talk with your favorite celebrity or Actress. Maybe, you see some contact information as N/A (Not-Available) here, because of the privacy. If we found or get an authority to share Gerhard Ertl contact details, we will update the information.
Gerhard Ertl Contact Email IDs
Physicist Gerhard Ertl Contact Address
In additions to the contact phone numbers of Gerhard Ertl and his management, Gerhard Ertl also allows their fans to visit at the address of the house and sending latter at the mailing address of fans.
Gerhard Ertl Social Accounts and Important Links
Besides the numbers, addresses, and emails, there is one more fast and easy option left to reach Gerhard Ertl. It is possible through the official website or social profiles on social media.
Check Also: For the contact details of Gerhard Gentzen.
We hope, we have provided all the information in article Gerhard Ertl Contact Number, House Address, Social ID. If you have any other query or want to ask any query about Gerhard Ertl, please tell us. We will reply to you as soon as possible.
#Gerhard Ertl address #Gerhard Ertl bio #Gerhard Ertl contact #Gerhard Ertl phone number #Gerhard Ertl snapchat #Gerhard Ertl whatsapp
Henry Cavendish
Tom Banks
John H. Vanvleck
Leo Szilard
Kazimierz Fajans
Joseph Hooton Taylor Jr.
Merle Tuve
Stefan Hell
Owen Chamberlain
Karel Bossart
Sir Isaac Newton
Jamal Islam
Kenneth Wilson
Rudolf Kompfner
Roy J. Glauber
Rajagopala Chidambaram
Shuji Nakamura


text:
Who is Kellen Mond? 5 things to know about the Texas A&M quarterback
Connor Riley
Kellen Mond will be making his first career start for Texas A&M as they take on Nicholls State.
Mond made his debut last week, when he filled in for the injured Nick Starkel against UCLA.
Below is everything you need to know about Mond.
1. Kellen Mond's first game as QB1 was a disaster
Mond ended up playing in the Aggies season-opener against UCLA. And for a while, things looked good. But then as UCLA began to mount a comeback, Mond sputtered. He completed just 3 of his 17 passes for 27 yards while adding 54 yards on the ground. The Aggies blew a 34-point lead, and ended up losing 45-44 to the Bruins.
2. Kellen Mond was a one-time Baylor commit
Early on in the recruiting process, Mond pledged his allegiances to Baylor. But after Art Briles was removed from his position as coach, Mond re-opened his commitment. The 4-star quarterback picked the Aggies over Auburn. Interestingly enough, Jarrett Stidham, a former Baylor quarterback, picked the Tigers over Texas A&M.
3. Kellen Mond was a top recruit who played at IMG
Mond put up big numbers in high school, including throwing for 20 touchdowns, rushing for 18 and totaling 2,700 yards. Mond broke records set by current Ole Miss quarterback Shea Patterson.
4. Kellen Mond beat out Jake Hubenak
Starkel got the start over Jake Hubenak, a senior quarterback who had starting experience in the past for the Aggies. That says a lot about what coach Kevin Sumlin thinks about his freshman quarterback.
5. Kellen Mond has been described as a bigger, faster Deshaun Watson.
Mond is good friends with the former Clemson quarterback and has based some of his game off Watson.
"Kellen is bigger than Deshaun and faster than Deshaun," Mond's father Kevin said of his son.
Mond and the Aggie are looking to get their first win of the season against Nicholls State. The game is airing on ESPNU
The post Who is Kellen Mond? 5 things to know about the Texas A&M quarterback appeared first on SEC Country.


text:
Fukushima treated water likely to be discharged in spring or summer
KYODO NEWS - Jan 13, 2023 - 21:24 | All, Japan
A planned discharge of treated water from the crippled nuclear power plant in Fukushima Prefecture into the sea will start around this spring or summer, some two years after a decision on its release was made, the Japanese government said Friday.
A revised policy on the disposal of the treated water containing low-level concentrations of tritium as well as financial support for affected fishing communities was endorsed during a meeting of relevant Cabinet ministers on Friday.
File photo taken in February 2022 shows tanks (front) at the crippled Fukushima Daiichi nuclear power plant storing treated radioactive water from the plant. (Kyodo)
"We would like to thoroughly explain these measures to fishing communities and other relevant parties while listening to their concerns," Chief Cabinet Secretary Hirokazu Matsuno said at the meeting.
The communities and neighboring China remain opposed to the release of water about 1 kilometer off the Pacific coast.
South Korea, which also has opposed to the discharge of treated water, reiterated Friday that the water must be safely disposed of in accordance with international standards from the objective and scientific perspectives.
To ensure the discharge is in line with international safety standards and poses no harm to public health and the environment, the International Atomic Energy Agency has conducted several safety reviews of the plan.
A delegation of IAEA officials and international experts will visit Japan from Monday through Jan. 20 to conduct another review of the regulatory aspects of the discharge plan and hold discussions with Japan's Nuclear Regulation Authority.
The IAEA will issue a comprehensive report based on their findings and provide support before, during and after the discharge.
Through its cooperation with the IAEA, the Japanese government is continuing its efforts to enhance international understanding toward the handling of treated water, it said.
According to the revised policy, the government will aid fishermen who fear reputational damage will impact the sales of their catch through a new 50 billion yen ($383 million) fund in addition to previously announced 30 billion yen.
A meeting of relevant Cabinet ministers is held at the prime minister's office in Tokyo on Jan. 13, 2023, during which a revised policy on the disposal of treated water from the crippled Fukushima Daiichi nuclear power plant was endorsed. (Kyodo)
Following the nuclear disaster triggered by a massive earthquake and tsunami that struck northeastern Japan in 2011, a vast amount of water is still needed to continually cool the melted fuel and fuel debris at the Fukushima Daiichi power plant.
The water pumped in for this purpose has mixed with groundwater and rainwater, accumulating in storage tanks at Tokyo Electric Power Company Holdings Inc.'s crippled complex after being treated with an advanced liquid processing system that removes most radionuclides.
The government decided in April 2021 on its policy to start discharging treated water around two years later.
The plant's operator TEPCO began construction of the discharge facilities in August last year, but it has said that completion of the facilities could be delayed depending on sea and weather conditions.
Most nuclear power plants around the world routinely and safely release treated water containing low-level concentrations of tritium and other radionuclides to the environment as part of normal operations, according to the IAEA.
Related coverage:
New submersion method added as option to aid Fukushima debris cleanup
Fukushima chemical waste moved to Hokkaido for detoxification
Japan court rejects halt of Kansai Electric's aging nuclear reactor
Japan braces for more snow, gripped by season's coldest snap
Cold snap brings disruption across Japan as heavy snow continues
Much of Japan to see heavy snow from Jan. 24 as winter storm arrives
PM warns Japan on brink of social dysfunction amid falling birthrate
More from Japan
Third of Japan small, mid-sized firms intend to hike pay: survey
2 hours ago | KYODO NEWS
FOCUS: Toyota CEO taps younger successor amid paradigm shift in industry
Kyodo News Digest: Jan. 29, 2023
Coronavirus pandemic latest: Jan. 29, 2023
"Luffy" Japan robberies head suspected to be behind Manila fraud ring
KYODO NEWS - 2 hours ago - 12:06 | All, Japan


text:
Distributed Energy Resources, Energy Efficiency - April 2, 2019
Newark plans 17-building upgrade project
ShareTweetSharePrintEmail
The City of Newark, New Jersey announced an energy savings improvement project that includes upgrading building infrastructure in 17 facilities, from City Hall to Symphony Hall, that will cut the city's annual energy operating costs by an estimated 36% with potential savings of nearly $1 million a year.
The upgrade is part of the Department of Engineering's commitment to Newark's Sustainability Action Plan, aimed at making Newark healthier, greener and more vibrant through various city-wide sustainability programs, according to a statement from the city. Honeywell was selected as the city's Energy Services Company and will lead the project., which is being funded with a $2.3 million rebate from the New Jersey Clean Energy Program and a 20-year, $15.4 million energy savings service contract. The contract enables the funding of the upgrades with annual energy and operational savings resulting from the project work. Honeywell guarantees the savings, eliminating the need for upfront capital investment and making it a self-funding project over the contract term.
"We believe that everyone in our community has the right to a clean and healthy environment to live, work and play," said Newark Mayor Ras J. Baraka. "We understand how important it is for cities to lead the movement for climate action, energy equity and cleaner air. This is why Newark is committed to doing our part by developing solutions, implementing programs and working with partners like Honeywell to help us achieve energy savings, reduce greenhouse gases and pollution, and bring quality of life benefits home to Newarkers."
Projects will include the implementation of three cogeneration plants to enable the city to generate on-site electricity and heat simultaneously in two recreation centers and at the City Hall complex; modernization of existing City Hall complex central boiler plant; a lighting upgrade with more energy-efficient LEDs; installation of energy-efficient control solutions, such as room occupancy sensors to automatically turn lights off when areas are unoccupied, and install thermostatic valves on radiators to reduce steam consumption; installation of a comprehensive Building Management System (BMS) platform that allows building managers to monitor and control multiple buildings from a central location, and integration of the City's HVAC and building systems into the BMS for city personnel to better monitor and manage systems under a unified platform, and more.
The building infrastructure improvements are expected to be completed by the end of 2019.
Tags: City of Newark, honeywell
Read These Related Articles:
Air Force base to upgrade efficiency, add renewables
Midwest grocer adopts eco-friendlier refrigerant
Study: Energy management system market expected soar in coming years
Advanced sensor market for commercial buildings to surpass $1B in 2016, study finds
NRDC's 8th Annual Energy Report: Slow and Steady Will Not Win the Climate Race
2020 State of Distributed Energy Resources
Solar for the Middle
First-Ever Peace REC Transaction Drives Renewable Energy Development in Africa
The Value of Microgrids: Challenges and Opportunities
« Back to Energy Management


text:
You searched for: province of alicante wikipedia france We have highlighted matching words that appear in the page below.
Regions of France - Wikipedia
Regions of France
"Région" redirects here. For other uses, see Region (disambiguation).
France is divided into 18 administrative regions (French: régions, singular région [ʁeʒjɔ̃]), of which 13 are located in metropolitan France (i.e. on the European continent), while the other five are overseas regions (not to be confused with the overseas collectivities, which have a semi-autonomous status).[1]
Région (French)
Hauts-de-
Île-de-
Bourgogne-
Franche-
Centre-
Pays de
Nouvelle-
Auvergne-
Provence-
Alpes-
Bay of
Unitary republic
Possible status
Overseas region (région d'outre-mer) (5)
Additional status
Territorial collectivity (collectivité territoriale)
279,471 (Mayotte) – 12,278,210 (Île-de-France)
376 km2 (145 sq mi) (Mayotte) – 84,061 km2 (32,456 sq mi) (Nouvelle-Aquitaine)
Regional Government, National Government
All 13 metropolitan administrative regions (including Corsica as of 2019[update]) are further subdivided into 2 to 13 administrative departments, with the prefect of each region's administrative center's department also acting as the regional prefect. The overseas regions administratively consist of only one department each and hence also have the status of overseas departments.
Most administrative regions also have the status of regional territorial collectivities, which comes with a local government, with departmental and communal collectivities below the region level. The exceptions are Corsica, French Guiana, Mayotte, and Martinique, where region and department functions are managed by single local governments having consolidated jurisdiction, and which are known as single territorial collectivities.
1.2 Reform and mergers of regions
2 List of administrative regions
3 Role
3.1 Regional control
4 Overseas regions
Further information: Territorial evolution of France and Decentralisation in France
1982–2015Edit
The term région was officially created by the Law of Decentralisation (2 March 1982), which also gave regions their legal status. The first direct elections for regional representatives took place on 16 March 1986.[2]
Between 1982 and 2015, there were 22 regions in Metropolitan France. Before 2011, there were four overseas regions (French Guiana, Guadeloupe, Martinique, and Réunion); in 2011 Mayotte became the fifth.
Nord-Pas
de Calais
Champagne-
Pays de la
Poitou-
Rhône-
Languedoc-
Regions of France between 2011 and 2015
Regions in Metropolitan France between 1982 and 2015
Flag[3]
Other local name(s)
INSEE No.[1]
Derivation or etymology
Alsace Alsace Alsatian: Elsàss
German: Elsass Strasbourg 42 Formerly a coalition of free cities in Holy Roman Empire, attached to Kingdom of France in 1648; annexed by Germany from Franco-Prussian war to the end of World War I and briefly during World War II
Aquitaine Aquitaine Occitan: Aquitània
Basque: Akitania
Saintongeais : Aguiéne Bordeaux 72 Guyenne and Gascony
Auvergne Auvergne Occitan: Auvèrnhe / Auvèrnha Clermont-Ferrand 83 Former province of Auvergne
Brittany Bretagne Breton: Breizh
Gallo: Bertaèyn Rennes 53 Duchy of Brittany
Burgundy Bourgogne Burgundian: Bregogne / Borgoégne
Francoprovençal: Borgogne Dijon 26 Duchy of Burgundy
Centre-Val de Loire[4] Centre-Val de Loire Orléans 24 Located in north-central France; straddles the middle of the Loire Valley
Champagne-Ardenne Champagne-Ardenne Châlons-en-
Champagne 21 Former province of Champagne
Franche-Comté Franche-Comté Franc-Comtois: Fràntche-Comté
Francoprovençal: Franche-Comtât Besançon 43 Free County of Burgundy (Franche-Comté)
Île-de-France Île-de-France Paris 11 Province of Île-de-France and parts of the former province of Champagne
Languedoc-Roussillon Languedoc-Roussillon Occitan: Lengadòc-Rosselhon
Catalan: Llenguadoc-Rosselló Montpellier 91 Former provinces of Languedoc and Roussillon
Limousin Limousin Occitan: Lemosin Limoges 74 Former province of Limousin and parts of Marche, Berry, Auvergne, Poitou and Angoumois
Lorraine Lorraine German: Lothringen
Lorraine Franconian: Lottringe Metz 41 Named for Charlemagne's son Lothair I, the kingdom of Lotharingia is etymologically the source for the name Lorraine (duchy), Lothringen (German), Lottringe (Lorraine Franconian)
Lower Normandy Basse-Normandie Norman: Basse-Normaundie Caen 25 Western half of former province of Normandy
Midi-Pyrénées Midi-Pyrénées Occitan: Miègjorn-Pirenèus
Occitan: Mieidia-Pirenèus Toulouse 73 None; created for Toulouse
Nord-Pas-de-Calais Nord-Pas-de-Calais Lille 31 Nord and Pas-de-Calais departments
Pays de la Loire Pays de la Loire Breton: Broioù al Liger Nantes 52 None; created for Nantes
Picardy Picardie Amiens 22 Former province of Picardy
Poitou-Charentes Poitou-Charentes Occitan: Peitau-Charantas
Poitevin and Saintongeais : Poetou-Chérentes Poitiers 54 Former provinces of Angoumois, Aunis, Poitou and Saintonge
Provence-Alpes-Côte d'Azur (PACA) Provence-Alpes-Côte d'Azur (PACA) Provençal: Provença-Aups-Còsta d'Azur
(Prouvènço-Aup-Costo d'Azur) Marseille 93 Former province of Provence
Rhône-Alpes Rhône-Alpes Francoprovençal: Rôno-Arpes
Occitan: Ròse Aups Lyon 82 Created for Lyon from Dauphiné and Lyonnais provinces and Savoy
Upper Normandy Haute-Normandie Norman: Ĥâote-Normaundie Rouen 23 Eastern half of former province of Normandy
Reform and mergers of regionsEdit
In 2014, the French parliament passed a law reducing the number of metropolitan regions from 22 to 13 effective 1 January 2016.[5]
The law gave interim names for most of the new regions by combining the names of the former regions, e.g. the region composed of Aquitaine, Poitou-Charentes and Limousin was temporarily called Aquitaine-Limousin-Poitou-Charentes. However, the combined region of Upper and Lower Normandy is simply called "Normandy" (Normandie). Permanent names were proposed by the new regional councils by 1 July 2016 and new names confirmed by the Conseil d'État by 30 September 2016.[6][7] The legislation defining the new regions also allowed the Centre region to officially change its name to "Centre-Val de Loire" with effect from January 2015.[8] Two regions, Auvergne-Rhône-Alpes and Bourgogne-Franche-Comté, opted to retain their interim names.[9][10]
Overview of merger proposals for the metropolitan territory
Édouard Balladur's proposal
Manuel Valls's proposal A
Manuel Valls's proposal B
President François Hollande's proposal
Regions as instituted by the National Assembly in 2014
Regions that merged:
Former region
New region (interim name)
New region (final name)
Burgundy Bourgogne-Franche-Comté Bourgogne-Franche-Comté
Aquitaine Aquitaine-Limousin-Poitou-Charentes Nouvelle-Aquitaine
Lower Normandy Normandy Normandy
Upper Normandy
Alsace Alsace-Champagne-Ardenne-Lorraine Grand Est
Languedoc-Roussillon Languedoc-Roussillon-Midi-Pyrénées Occitanie
Nord-Pas-de-Calais Nord-Pas-de-Calais-Picardie Hauts-de-France
Auvergne Auvergne-Rhône-Alpes Auvergne-Rhône-Alpes
Regions that remained unchanged:
List of administrative regionsEdit
in Regional council
INSEE No.[11]
Former regions (until 2016)
President of the corresponding territorial collectivity's legislature
Metropolitan region Auvergne-Rhône-Alpes
(Auvergne-Rhône-Alps) Occitan: Auvèrnhe-Ròse-Aups
Francoprovençal: Ôvèrgne-Rôno-Arpes Lyon 69,711 204 84 Auvergne
Rhône-Alpes Laurent Wauquiez (LR)
Metropolitan region Bourgogne-Franche-Comté
(Burgundy-Free County) Francoprovençal: Borgogne-Franche-Comtât Dijon 47,784 100 27 Burgundy
Franche-Comté Marie-Guite Dufay (PS)
Metropolitan region Bretagne
(Brittany) Breton: Breizh
Gallo: Bertaèyn Rennes 27,208 83 53 unchanged Loïg Chesnais-Girard (PS)
Metropolitan region Centre-Val de Loire[4]
(Centre-Loire Valley) Orléans 39,151 77 24 Centre François Bonneau (PS)
Metropolitan region Corse
(Corsica) Corsican: Corsica Ajaccio 8,680 63 94 unchanged Jean-Guy Talamoni (CL)
Metropolitan region Grand Est
(Great East) German: Großer Osten Strasbourg 57,441 169 44 Alsace
Lorraine Jean Rottner (LR)
Metropolitan region Hauts-de-France
(Upper France) Lille 31,806 170 32 Nord-Pas-de-Calais
Picardy Xavier Bertrand (LR)
Metropolitan region Île-de-France
(Island of France) Paris 12,011 209 11 unchanged Valérie Pécresse (LR)
Metropolitan region Normandie
(Normandy) Norman: Normaundie Rouen 29,907 102 28 Upper Normandy
Lower Normandy Hervé Morin (LC)
Metropolitan region Nouvelle-Aquitaine
(New Aquitaine) Occitan: Nòva Aquitània / Nava Aquitània / Novela Aquitània
Basque: Akitania Berria
Bordeaux 84,036 183 75 Aquitaine
Poitou-Charentes Alain Rousset (PS)
Metropolitan region Occitanie
(Occitania)
Occitan: Occitània
Catalan: Occitània Toulouse 72,724 158 76 Languedoc-Roussillon
Midi-Pyrénées Carole Delga (PS)
Metropolitan region Pays de la Loire
(Loire Countries) Breton: Broioù al Liger Nantes 32,082 93 52 unchanged Christelle Morançais (LR)
Metropolitan region Provence-Alpes-Côte d'Azur
(Provence-Alps-Azure Coast) Provençal: Provença-Aups-Còsta d'Azur
(Prouvènço-Aup-Costo d'Azur) Marseille 31,400 123 93 unchanged Renaud Muselier (LR)
Overseas region Guadeloupe Antillean Creole: Gwadloup Basse-Terre 1,628 41 01 unchanged Ary Chalus (GUSR)
Overseas region Guyane
(French Guiana) Cayenne 83,534 51 03 unchanged Rodolphe Alexandre (PSG)
Overseas region La Réunion
(Réunion) Reunion Creole: La Rényon Saint-Denis 2,504 45 04 unchanged Didier Robert (LR)
Overseas region Martinique Antillean Creole: Matinik Fort-de-France 1,128 51 02 unchanged Claude Lise (RDM)
Overseas region Mayotte Shimaore: Maore
Malagasy: Mahori Mamoudzou 374 26 06 unchanged Soibahadine Ibrahim Ramadani (LR)
RoleEdit
Regions lack separate legislative authority and therefore cannot write their own statutory law. They levy their own taxes and, in return, receive a decreasing part of their budget from the central government, which gives them a portion of the taxes it levies. They also have considerable budgets managed by a regional council (conseil régional) made up of representatives voted into office in regional elections.
A region's primary responsibility is to build and furnish high schools. In March 2004, the French central government unveiled a controversial plan to transfer regulation of certain categories of non-teaching school staff to the regional authorities. Critics of this plan contended that tax revenue was insufficient to pay for the resulting costs, and that such measures would increase regional inequalities.
In addition, regions have considerable discretionary power over infrastructural spending, e.g., education, public transit, universities and research, and assistance to business owners. This has meant that the heads of wealthy regions such as Île-de-France or Rhône-Alpes can be high-profile positions.
Proposals to give regions limited legislative autonomy have met with considerable resistance; others propose transferring certain powers from the departments to their respective regions, leaving the former with limited authority.
Regional controlEdit
Number of regions controlled by each coalition since 1986.
Presidencies
1986 5 21 –
2010 23 3 –
Overseas regionsEdit
Overseas region (French: Région d'outre-mer) is a recent designation, given to the overseas departments that have similar powers to those of the regions of metropolitan France. As integral parts of the French Republic, they are represented in the National Assembly, Senate and Economic and Social Council, elect a Member of the European Parliament (MEP) and use the euro as their currency.
Although these territories have had these political powers since 1982, when France's decentralisation policy dictated that they be given elected regional councils along with other regional powers, the designation overseas regions dates only to the 2003 constitutional change; indeed, the new wording of the constitution aims to give no precedence to either appellation overseas department or overseas region, although the second is still virtually unused by French media.
The following have overseas region status:
in the Indian Ocean (Africa):
in the Americas:
French Guiana in South America
Guadeloupe in the Antilles (Caribbean)
Martinique in the Antilles (Caribbean)
^ Saint Pierre and Miquelon (off Canada, in North America), once an overseas department, was demoted to a territorial collectivity in 1985.
List of current presidents of the regional councils of France and the Corsican Assembly
Ranked list of French regions
Administrative divisions of France
List of French regions and overseas collectivities by GDP
List of French regions by Human Development Index
List of regions of France by population
Flags of the regions of France
ISO 3166-2:FR
Decentralisation in France
Budget of France
Regional councils of France
Overseas France
Overseas collectivity
Overseas country (Outre-mer)
Overseas department and region
Overseas territory
Sui generis collectivity
^ a b "Carte des Régions" (in French). INSEE. Retrieved 29 September 2009.
^ Jean-Marie Miossec (2009), Géohistoire de la régionalisation en France, Paris: Presses universitaires de France ISBN 978-2-13-056665-6.
^ These flags are not official.
^ a b New name as of 17 January 2015; formerly named Centre.
^ La carte à 13 régions définitivement adoptée, Le Monde, 17 December 2014, accessed 2 January 2015
^ Quel nom pour la nouvelle région ? Vous avez choisi..., Sud-Ouest, 4 December 2014, accessed 2 January 2015
^ "Nouveau nom de la région : dernier jour de vote, Occitanie en tête". midilibre.fr.
^ "Journal officiel of 17 January 2015". Légifrance (in French). 17 January 2015. Retrieved 10 March 2015.
^ "Auvergne-Rhône-Alpes : fini la consultation, Laurent Wauquiez a tranché - Place Gre'net". placegrenet.fr. 31 May 2016.
^ "Région Bourgogne-Franche-Comté". www.bourgognefranchecomte.fr.
^ "La nouvelle nomenclature des codes régions" (in French). INSEE. Retrieved 17 January 2016.
Regions of France at Curlie
Guide to the regions of France
Local websites by region
Will 2010 regional elections lead to political shake-up? Radio France Internationale in English
some explanations about the past and current developments of DOMs and TOMs (in French)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Regions_of_France&oldid=996545606"


text:
home Biography Presilah Nunez
Presilah Nunez
Facts of Presilah Nunez
Presilah Nunez is a fascinating actress, and her amazing work in TV shows and movies such as Secrets and Lies and Designated Survivor has made her famous.
Success has not come easy for her as she has struggled during her early days.
She has improved herself every day, and this has made her the actress she is today. Her work as Erica in The Haves and the Haves Nots is a classic.
Fiancé and Dating
She is planning to get married soon to her fiancé Brett Davis. The couple has been dating for more than five years now, and they look lovely together.
The couple might get married in 2020.
Get In: Paulo Costanzo Net Worth And Career
Her fiancé is an actor. He has appeared in The Haves and The Have Nots and also in 9-1-1.
They had their wedding on December 2018. There was hoaxes spread of her being pregnant, and they were no true at all.
She has uploaded several pictures of her fiancé on her Instagram account. She has uploaded this one with a caption,
"We made it through wedding season 2018 Last night was our fourth wedding in the last six months…."
Presilah Nunez Boyfriend And Fiance Source: Instagram
Her exact net worth is not available right now, and it is currently under review.
However, there is no doubt that she has net worth in thousands of dollars as she has been paid a fantastic salary from TV shows and movies for her contributions.
She appeared in a popular TV series called Secrets and Lies.
One Click Away: Natascha McElhone Husband And Net Worth
The TV series has very impressive ratings as it is rated 7.6 by IMDb and 8.5 by TV.com. The first episode of the series was broadcasted on 1st March 2015, and the final one was aired on December 4, 2016.
She has been brilliant in NCIS as well.
The TV series has 7.8 ratings from IMDb, and it has very impressive 8.7 ratings from TV.com. The first episode of the series was aired on 23rd of September, 2003.
She was terrific in Designated Survivor, and this is by far her best work. The series has 7.6 ratings from IMDb, and it has 7.9 ratings from TV.com. The first episode was aired on 21st of September, 2016 and the final one on 7th June, 2019.
S.N TV Series Name IMDb Ratings TV.com Ratings First Episode Date Final Episode Date
1. Secrets and Lies 7.6 8.5 March 1, 2015 December 4, 2016
2. NCIS 7.8 8.7
3. Designated Survivor 7.6 7.9 September 21, 2016
She lives a beautiful life, and she has different type of hobbies. She loves shooting, and she has uploaded this video of her shooting a shotgun. She has uploaded this picture on her Instagram account, and she has captioned this one as,
"Brett said if I realllyyy wanted to have his last name, I had to learn how to load and shoot a shotgun…"
She loves traveling, as well. She travels a lot with her fiancé Brett. She has uploaded this picture on her Instagram account, and she has captioned this one as,
"Come tow truck, Italian police officers or closed one way roads, we made it…."
Presilah Nunez Lifestyle Traveling Source: Instagram
Info and Highlights
She celebrates her birthday on the 18th of February.
She was born in Massachusetts, United States of America.
Her nationality is American.
Her ethnicity is mixed as she is of Dominic- Republic and Puerto Rican descent.
She has a decent height of 5 feet 8 inches which are around 1.73 meters. Her weight is 68 kilograms.
Published Sat Sep 14 2019
Published Fri Jun 28 2019
Natascha McElhone
Published Thu May 23 2019
Published Tue Apr 16 2019
Betsy Brandt
Anna Bauert


The Cutting Room Floor have uncovered a strings file in Donkey Kong Country: Tropical Freeze suggesting the existence of an unimplemented achievement system.
That strings file, labelled "Miiverse," has unearthed the list of them in entirety. With the Wii U not supporting a system wide achievement system, developers are instead left to interwork them within the games themselves.
One achievement, "Autopost: You turned on autoposting! Share your successes with the world!", suggests that they would have worked similarly to those seen in Batman: Arkham Origins, Hyrule Warriors and Wii Fit U, shared automatically through your Activity Feed on Miiverse.
You've done 50 triple-bop combos! Ya! Woohoo!! Yahoo!!!" is a particular favourite.


text:
SubRosa - a community space
SubRosa is a collectively run anarchist community space, a place to meet others and challenge our assumptions and act on our passions. We strive to create a vibrant environment for events, classes, meetings, organizing, performance, art, studying and more. SubRosa also offers radical literature for sale, and houses the Anarchist Lending Library. We welcome folks to join us in fostering an environment free from coercion, sexism, homophobia, racism, and other hierarchies.
Fri Jan 13th! A show with former Santa Cruzer fuzz-poppers Heavy Gus and locals Practicing Sincerity
-Friday January 13th! A show with former Santa Cruzer fuzz-poppers Heavy Gus and locals Practicing Sincerity
*Heavy Gus - https://instagram.com/heavygus / listen at https://heavygus.bandcamp.com/
**local indie rockers Practicing Sincerity - https://instagram.com/practicingsincerity / listen at https://practicingsincerity.bandcamp.com/
Door 7:30pm // $10 notaflof as always 💚 // don't miss it! // check out the bands' pages for links to their music 🎶 // safe(r) space // all ages
And at least 3 more shows happening at SubRosa this month. More info soon!
<Contact info for our neighbors at The Hub, 703 Pacific Ave>
-The Bike Church --- http://bikechurch.santacruzhub.org // https://www.facebook.com/thebikechurch/ // https://www.instagram.com/thebikechurch/
-Hard Core Compost --- https://www.compost.bike // https://www.instagram.com/hardcorecompost/ // www.facebook.com/compost.bike/
-The Fábrica --- https://thefabrica.org // https://www.facebook.com/thefabrica/ // https://www.instagram.com/the_fabrica_/
-PedX Courier & Cargo --- http://pedxsc.com/ // https://www.facebook.com/pedxsc/ // https://www.instagram.com/pedalersexpress/
-Tenant Sanctuary --- https://tenantsanctuary.org // https://www.facebook.com/tenantsanctuary/
@@@@@@@@@@@
SubRosa is a collectively run anarchist community space, a place to meet others and challenge our assumptions and act on our passions. We strive to create a vibrant environment for events, classes, meetings, organizing, performance, art, studying and more. SubRosa also offers radical literature for sale, and houses the Anarchist Lending Library. We welcome folks to join us in fostering an environment free from coercion, sexism, queer&homophobia, racism, ableism and other hierarchies.
http://www.subrosaproject.org/
https://www.facebook.com/subrosaproject
https://instagram.com/subrosa_space
SubRosa is part of the Hub Community Center, in downtown Santa Cruz, CA which is the unceded territory of the Awaswas-speaking Uypi Tribe. The Amah Mutsun Tribal Band, comprised of the descendants of indigenous people taken to missions Santa Cruz and San Juan Bautista during Spanish colonization of the Central Coast, is today working hard to restore traditional stewardship practices on these lands and heal from historical trauma.
Do you want to join SubRosa in solidarity with the Amah Mutsun Tribal Band?
-Contribute to The Humunya Foundation of the Amah Mutsun Tribal Band, a 501 (c) (3) Private Foundation under the Internal Revenue Code. As such, donations made to the Humunya Foundation are tax deductable. The Humunya Foundation was created to fund raise, facilitate Tribal cultural activities and conduct outreach to the public. More information http://amahmutsun.org/foundation
-Sign up for the Amah Mutsun Land Trust email list for more information and opportunities to get involved.
-Consider making a monthly donation to Amah Mutsun Land Trust to support the tribe's Indigenous stewardship and cultural relearning work.
-Check out http://www.protectjuristac.org/how-to-help/ to protect Juristac, an Amah Mutsun sacred site threatened by a proposed mining operation in Santa Clara county. Actions include: Sign the petition to protect Juristac, an Amah Mutsun sacred site threatened by a proposed mining operation in Santa Clara county.
https://www.amahmutsunlandtrust.org and http://amahmutsun.org and http://www.protectjuristac.org/ and new instagram! https://instagram.com/protect.juristac
Comments on the SubRosa website are fully moderated. As a collective, we agreed that the purpose of the website was to promote SubRosa, not to provide an online place for lively and invigorating debate. We hope that the space itself is where conversations on the nature of anarchism and local projects will take place. That said, we occasionally approve comments that are informative or reflect a viewpoint we feel it is important for website visitors to read.
703 Pacific Avenue
downtown Santa Cruz (map)
Support us! // ¡Donar!
Open Hours! SubRosa is an all-volunteer space
so our hours can and do vary.
Anarchy & community, books, zines, art, workshops, performance, & more!
SubRosa is part of a community center called the Hub. More info at https://www.facebook.com/santacruzhub/
Get announcements about events and happenings at SubRosa.
SubRosa Events Calendar
Go to our full events calendar. Here are our upcoming events:
Recent Journal Entries
Lit & Music Reviews
Donate to the Anarchist Library
blackpowderpress.com
littleblackcart.com
akpress.org
SubRosa Updates
santacruz newswire
Donate • Calendar • Library • Facebook • Instagram • The Hub • Subscribe to email updates • 703 Pacific Ave, Santa Cruz, CA 95060


text:
Q: Retrieve all Teams that User is on Question: How do I retrieve all Teams that a User is on?
My Models:
class User < ActiveRecord::Base
  has_many :teams, :uniq => true
  has_many :rosterplayers
  has_many :rosters, -> { uniq } ,  :through => :rosterplayers
end

class Roster < ActiveRecord::Base
  has_many :rosterplayers
  has_many :users, -> { uniq }, through: :rosterplayers
end

class Rosterplayer < ActiveRecord::Base
  belongs_to :roster
  belongs_to :user
  validates :user_id, :uniqueness => { :scope => :roster_id }
end

class Team < ActiveRecord::Base
  # user is the creator of the team
  belongs_to :user

  # Roster.roster_master(team) is the team's master (full) roster
  has_many :rosters
end

*

*A user can have many Teams (be the 'owner' of but not necessarily be 'on' those teams).

*A user is on
the "master" Roster of many teams.

Attempt:
I tried to grab all the master rosters in the database:
# User class:

def teams_on
  # All the rosters the user is on.
  r = Roster.includes(:rosterplayers).where(rosterplayers: { user_id: self.id })

  # Get only master rosters.
  m = r.where(master: true)
end

I'm stuck where to go from here (I'm sure there is a better approach anyways).

A: So I found the answer after searching a bit more:
Retrieve all posts where the given user has commented, Ruby on Rails
All I have to do is add this to the User model:
has_many :team_enrollments, :through => :rosters, :source => :team

def teams_on
  self.team_enrollments
end

redpajama_set_name: RedPajamaStackExchange


With fresh memories of the 90 years celebrations of the existence of our Church in Zambia and the blessed time we had with our dear Chief Apostle in our District, the climax of which was the Festive Divine Service on 29th April 2018 in Livingstone, it is my pleasure to write this circular to thank you from the bottom of my heart for your prayers, sacrifice and support towards the successful hosting of these events. In particular, I hereby thank the committees in Livingstone and all those in Livingstone who spent their time at the Nakatindi Church grounds, sometimes without meals.
Although the works at Nakatindi Church grounds were quite challenging, it is gratifying to note the hosting of the Chief Apostle, including the live transmission of the Divine Service through ZNBC were very successful. We also had a good attendance and offering, both at Nakatindi and in the connected congregations. Dear brothers and sisters, whenever progress is made in the work of God, the devil is not happy and would like to disturb or even reverse what the Lord has achieved through us. I therefore urge you to be vigilant at all times and do not fall prey to speculations which are not supported by evidence, which can cause you to be discouraged in working for and serving the Lord and getting your blessings and ultimately the final reward of your faith. Accordingly, be focused on the goal of your faith.
Once again I am very grateful for the support you render to me and God's work in the District Apostle Area. May God richly bless you all! I have already written another circular to inform you that our Chief Apostle will visit us in July 2019 and he will have, two (02) Divine Services, in Ndola and in Lusaka. There is need to commence preparations already because time runs very fast. I hereby appeal to you again to join hands and hearts with me and pray and work together for the success of the two (02) Divine Services and the two (02) Concerts.
Please receive love and hearty greetings from me, our dear Chief Apostle and my fellow Apostles.


text:
Home The News News Groups appeal for clarification of Lee Ming-che's status
Groups appeal for clarification of Lee Ming-che's status
Tuesday, 03 October 2017 05:37	Taipei Times
Members of the Taiwan Association for Human Rights, including secretary-general Chiu Ee-ling, second left, hold flowers at a news conference in Taipei yesterday.
Photo: Chang Chia-ming, Taipei Times
Worried that detained human rights advocate Lee Ming-che (李明哲) might have been sentenced in secret, civic groups and legislators yesterday urged the government to take immediate action to protect Lee's right to appeal.
Yesterday marked the 197th day since Lee went missing after a trip to China in March. Beijing later said he was being detained on charges of subversion of state power.
After a video was released of Lee confessing his crimes in court on Sept. 11, his situation has again become unknown, the groups said.
The video showed that Lee was prosecuted on Aug. 8, and according to China's Criminal Law, the court must reach a verdict within two month after accepting a case, Taiwan Association for Human Rights secretary-general Chiu Ee-ling (邱伊翎) told a news conference yesterday.
Accounting for China's national holidays, the deadline should be on Monday, he said.
As several human rights advocates have been sentenced in China without a public announcement, the groups are worried that his case would be handled the same way and Lee will lose his right to appeal, Judicial Reform Foundation executive secretary Hsiao I-min (蕭逸民) said.
"We urge the government to clarify whether there is already a ruling in Lee's case, and if the court has already sentenced him, to determine if he will have the right to appeal," he said.
"If the case is not yet closed, the government should ask when the court will reach a verdict and whether Lee's family and concerned groups can attend the court session," he added.
The Beijing-appointed defense lawyer in the video gave up his right to defend Lee based on "jurisdiction" and "exclusion of illegally obtained evidence," Hsiao said, adding that the prosecutor presented 70 confession documents as evidence of Lee's guilt.
Five of the six accounts on which Lee is being prosecuted took place in Taiwan, over which China's courts do not have jurisdiction, so if Lee is sentenced for his actions in Taiwan and has no right to appeal, the case would affect the rights of all Taiwanese, Hsiao said.
Beijing is using Lee's case to intimidate Taiwanese, sending a message that "even if you use the Internet in Taiwan to spread the message of democracy and freedom, you might be sentenced to prison when you come to China," Democratic Progressive Party Legislator Yu Mei-nu (尤美女) said.
"The government needs to clearly express its view on this case," New Power Party Legislator Hsu Yung-ming (徐永明) added.
An information technology company that provides key systems software for much of the country's financial institutions is alleged to have been bought by a major China-based investor, an opposition legislator said.
The purchase has raised questions among Democratic Progressive Party (DPP) lawmakers on just how much of Taiwan's sensitive financial data may have flown across the Taiwan Strait to Chinese companies.


text:
As pandemic wanes, Iowa State students devising creative ways to reuse plexiglass barriers
"This stuff doesn't break down, it doesn't degrade. It just sits in a landfill."
Updated: 9:24 PM CDT Jun 8, 2021
Chris Gothner
CREATIVE IDEAS THEY'RE HATCHING -- TO KEEP THEM OUT OF LDFANILLS. FROM OFFICES -- TO SUPERMARKETS- -EVEN CASINOS. THESE PLEXIGLASS BARRIERS GOT PUT QUIUPCKLY AND HAVE STAYED PUT SHORTLY AFTER THE PANDEMIC BEGAN. YOU MAY NOT PAY THEM MUCH OF A THOUGHT ANYMORE. BUT ONE IOWA STATE UNIVERSITY EMPLOYEE áDID. <32 I WAS SITTING AT HOME ONE NIGHT, JUST KIND OF THINKING THROUGH THINGS. 35 AND IT HIT . MEOH MY, WHAT'S GOING TO HAPPEN TO ALL THE PLEXIGLAS THAT HAS BEEN PUT UP AROUND CAMPUS 42> CLASSROOM SCHEDULING SPECIALIST KATIE BAUMGARN WONDERED WHAT PEOPLE MIGHT DO -- ONCE THEIR TIME HAS COME AND GONE. <1:01 MY WORRY WAS, OH, WOW, WHEN WE COME OUT OF THIS PANDEMIC, PEOPLE ARE JUST GOING TO GO CHUCK IT INTO A LANDFILL. 1:08> SO SHE TOOK IT UP WITH COLLEAGUES -- AND EVENTUALLY A TEAM FORMED. INCLUDING INDUSTRIAL DESIGN PROFESSOR DAN NEUBAUER. <13:18 THIS STUFF DOESN'T BREAK DOWN, IT DOESN 'T DEGRADE. IT JUST SITS IN THE LANDFILL. 13:22> HE DECIDED TO PUT HIS STUDENTS TO THE TASK OF FINDING THE BARRIERS ON MP. USCA TURNS OUT THERE ARE ABOUT 500. SOME WILL STAY PUT. BUT HE GOT HIS CLASS ONBOA RD DESIGNING CREATIVE WAYS TO REUSE WHAT WON'T. HE SAYS RECYCLING OR UPCYCLING PLEXIGLASS ISN'T EASY...BUT... <4:34 THAT DIDN'T STOP ME FROM PUSHING MY STUDENTS TO TRY TO FIGURE OUT WAYS TO MAKE IT WORK AND MAKE IT LOOK AWESOME. 4:38> NEUBAUER SAYS THE ACRYLIC'S CUTTABLE -- AND HEAT MAKES IT BENDABLE - MAKING IT RIPE FOR REUSE. STUDENT IDEAS INCLUDE BROCHURE HOLDERS, DESKTOP ORGANIZERS AND ADJUSTABLE DESKS. ONE STUDENT EVEN DESIGNED JEWELRY. <9:41 SHE EMBEDDED MAL ET WITHIN THE PLASTIC LAYERS. 9:45> <53:36 THIS GROUP KNOWS THATOW IA STE ATIS NOT THE ONLY PLACE USING THESE PLEXIGLASS BARRIERS SO THEY'RE HOPING OTHER OS RG OR BIZ MIGHT BE ABLE TO LEARN SOMETHING FROM WHAT THEY'RE DOING HERE.> <2:56 IT WOULD BE GREAT IF OTHERS COULD SEE THE STORY AND SAY, WOW, WHAT ARE WE GOING TO DEAL WITH UR O PLEXIGLASS, YOU KNOW, HOW CAN WE HELP KEEP IT OUT OF THE LANDFILL? 3:
From offices to supermarkets, casinos and more, plexiglass barriers became ubiquitous after the start of the COVID-19 pandemic in an attempt to stop the spread of the disease.In fact, they're so common now, that you may not even pay them much thought. But Katie Baumgarn did.The Iowa State University classroom scheduling specialist wondered what will happen to them after the pandemic is over."My worry was, 'oh, wow, when we come out of this pandemic, people are just going to go chuck it into a landfill,'" Baumgarn said. So she took her idea up with colleagues and, eventually, a team formed.That team includes Dan Neubauer, an associate teaching professor of industrial design at ISU."This stuff doesn't break down, it doesn't degrade," Neubauer said. "It just sits in a landfill."Neubauer said after students and staff determined there were about 500 of the barriers on campus, he put his class to work. Students helped devise ways to recycle or upcycle the material.Neubauer said recycling plexiglass isn't easy."That didn't stop me from pushing my students to try to figure out ways to make it work and make it look awesome," Neubauer said. Neubauer says the acrylic's cuttable and heat makes it bendable, making it ripe for reuse. Student ideas included brochure holders, desktop organizers, adjustable desks and even jewelry.Both Baumgarn and Neubauer said they know that ISU isn't the only place where the barriers are used, so they hope other organizations or businesses might be able to learn something from this project."It would be great if others could see the story and say 'Wow, what are we going to do with our plexiglass, you know, how can we help keep it out of the landfill?'" she said.Despite the fact that businesses and organizations have spent millions to put them up, it's still unclear whether the barriers actually prevent COVID-19. A CDC study of Georgia elementary schools found that masks and proper ventilation helped prevent the spread of the virus, rather than barriers.In fact, a Japanese paper, awaiting peer review, suggests that plastic barriers actually made conditions worse in poorly ventilated areas.
AMES, Iowa —
From offices to supermarkets, casinos and more, plexiglass barriers became ubiquitous after the start of the COVID-19 pandemic in an attempt to stop the spread of the disease.
In fact, they're so common now, that you may not even pay them much thought. But Katie Baumgarn did.
The Iowa State University classroom scheduling specialist wondered what will happen to them after the pandemic is over.
"My worry was, 'oh, wow, when we come out of this pandemic, people are just going to go chuck it into a landfill,'" Baumgarn said.
So she took her idea up with colleagues and, eventually, a team formed.
That team includes Dan Neubauer, an associate teaching professor of industrial design at ISU.
"This stuff doesn't break down, it doesn't degrade," Neubauer said. "It just sits in a landfill."
Neubauer said after students and staff determined there were about 500 of the barriers on campus, he put his class to work. Students helped devise ways to recycle or upcycle the material.
Neubauer said recycling plexiglass isn't easy.
"That didn't stop me from pushing my students to try to figure out ways to make it work and make it look awesome," Neubauer said.
Neubauer says the acrylic's cuttable and heat makes it bendable, making it ripe for reuse. Student ideas included brochure holders, desktop organizers, adjustable desks and even jewelry.
Both Baumgarn and Neubauer said they know that ISU isn't the only place where the barriers are used, so they hope other organizations or businesses might be able to learn something from this project.
"It would be great if others could see the story and say 'Wow, what are we going to do with our plexiglass, you know, how can we help keep it out of the landfill?'" she said.
Despite the fact that businesses and organizations have spent millions to put them up, it's still unclear whether the barriers actually prevent COVID-19. A CDC study of Georgia elementary schools found that masks and proper ventilation helped prevent the spread of the virus, rather than barriers.
In fact, a Japanese paper, awaiting peer review, suggests that plastic barriers actually made conditions worse in poorly ventilated areas.