text:
/* This source file is part of the ATMEL AVR32-UC3-SoftwareFramework-1.6.0 Release */

/*This file has been prepared for Doxygen automatic documentation generation.*/
/*! \file *********************************************************************
 *
 * \brief MACB driver for EVK1100 board.
 *
 * This file defines a useful set of functions for the MACB interface on
 * AVR32 devices.
 *
 * - Compiler:           IAR EWAVR32 and GNU GCC for AVR32
 * - Supported devices:  All AVR32 devices with a MACB module can be used.
 * - AppNote:
 *
 * \author               Atmel Corporation: http://www.atmel.com \n
 *                       Support and FAQ: http://support.atmel.no/
 *
 *****************************************************************************/

/* Copyright (c) 2009 Atmel Corporation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * 3. The name of Atmel may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * 4. This software may only be redistributed and used in connection with an Atmel
 * AVR product.
 *
 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
 *
 */
/*
 * ported on elua world by nuccio raciti <raciti.nuccio@gmail.com>, enjoy.
 */
#include <stdio.h>
#include <string.h>
#include <avr32/io.h>

#include "compiler.h"

#include "platform_conf.h"

#ifdef BUILD_UIP

#include "ethernet.h"

/* Size of each receive buffer - DO NOT CHANGE. */
#define RX_BUFFER_SIZE    128

/* The buffer addresses written into the descriptors must be aligned so the
last two bits are zero.  These bits have special meaning for the MACB
peripheral and cannot be used as part of the address. */
#define ADDRESS_MASK      ( ( unsigned long ) 0xFFFFFFFC )

/* Bit used within the address stored in the descriptor to mark the last
descriptor in the array. */
#define RX_WRAP_BIT       ( ( unsigned long ) 0x02 )

/* A short delay is used to wait for a buffer to become available, should
one not be immediately available when trying to transmit a frame. */
#define BUFFER_WAIT_DELAY   ( 2 )

#include "ethernet.h"
#include "intc.h"
#include "elua_uip.h"

#ifndef FREERTOS_USED
#define portENTER_CRITICAL           Disable_global_interrupt
#define portEXIT_CRITICAL            Enable_global_interrupt
#define portENTER_SWITCHING_ISR()
#define portEXIT_SWITCHING_ISR()
#endif

#define TIMEOUT 500

/* Buffer written to by the MACB DMA.  Must be aligned as described by the
comment above the ADDRESS_MASK definition. */

static volatile char pcRxBuffer[ ETHERNET_CONF_NB_RX_BUFFERS * RX_BUFFER_SIZE ] __attribute__ ((aligned (4)));
/* Buffer read by the MACB DMA.  Must be aligned as described by the comment
above the ADDRESS_MASK definition. */

static volatile char pcTxBuffer[ ETHERNET_CONF_NB_TX_BUFFERS * ETHERNET_CONF_TX_BUFFER_SIZE ] __attribute__ ((aligned (4)));

/* Descriptors used to communicate between the program and the MACB peripheral.
These descriptors hold the locations and state of the Rx and Tx buffers.
Alignment value chosen from RBQP and TBQP registers description in datasheet. */

static volatile AVR32_TxTdDescriptor xTxDescriptors[ ETHERNET_CONF_NB_TX_BUFFERS ] __attribute__ ((aligned (8)));
static volatile AVR32_RxTdDescriptor xRxDescriptors[ ETHERNET_CONF_NB_RX_BUFFERS ] __attribute__ ((aligned (8)));

/* The IP and Ethernet addresses are read from the header files. */
unsigned char cMACAddress[ 6 ] = { ETHERNET_CONF_ETHADDR0,ETHERNET_CONF_ETHADDR1,ETHERNET_CONF_ETHADDR2,ETHERNET_CONF_ETHADDR3,ETHERNET_CONF_ETHADDR4,ETHERNET_CONF_ETHADDR5 };

/*-----------------------------------------------------------*/

/* See the header file for descriptions of public functions. */

/*
 * Prototype for the MACB interrupt function - called by the asm wrapper.
 */

__attribute__((__interrupt__)) void vMACB_ISR(void);

/*
 * Initialise both the Tx and Rx descriptors used by the MACB.
 */
static void prvSetupDescriptors(volatile avr32_macb_t *macb);

//
// Restore ownership of all Rx buffers to the MACB.
//
static void vResetMacbRxFrames( void );

/*
 * Write our MAC address into the MACB.
 */
static void prvSetupMACAddress(volatile avr32_macb_t *macb);

/*
 * Configure the MACB for interrupts.
 */
static void prvSetupMACBInterrupt(volatile avr32_macb_t *macb);

/*
 * Some initialisation functions.
 */
static Bool prvProbePHY(volatile avr32_macb_t *macb);
static unsigned long ulReadMDIO(volatile avr32_macb_t *macb, unsigned short usAddress);
static void vWriteMDIO(volatile avr32_macb_t *macb, unsigned short usAddress, unsigned short usValue);

/* Holds the index to the next buffer from which data will be read. */
volatile unsigned long ulNextRxBuffer = 0;

long lMACBSend(volatile avr32_macb_t *macb, const void *pvFrom, unsigned long ulLength, long lEndOfFrame)
{
  const unsigned char *pcFrom = pvFrom;
  static unsigned long uxTxBufferIndex = 0;
  void *pcBuffer;
  unsigned long ulLastBuffer, ulDataBuffered = 0, ulDataRemainingToSend, ulLengthToSend;

  /* If the length of data to be transmitted is greater than each individual
  transmit buffer then the data will be split into more than one buffer.
  Loop until the entire length has been buffered. */
  while( ulDataBuffered < ulLength )
  {
    // Is a buffer available ?
    while( !( xTxDescriptors[ uxTxBufferIndex ].U_Status.status & AVR32_TRANSMIT_OK ) )
    {
      // There is no room to write the Tx data to the Tx buffer.
      // Wait a short while, then try again.
      __asm__ __volatile__ ("nop");
    }

    portENTER_CRITICAL();
    {
      // Get the address of the buffer from the descriptor,
      // then copy the data into the buffer.
      pcBuffer = ( void * ) xTxDescriptors[ uxTxBufferIndex ].addr;

      // How much can we write to the buffer ?
      ulDataRemainingToSend = ulLength - ulDataBuffered;
      if( ulDataRemainingToSend <= ETHERNET_CONF_TX_BUFFER_SIZE )
      {
        // We can write all the remaining bytes.
        ulLengthToSend = ulDataRemainingToSend;
      }
      else
      {
        // We can't write more than ETH_TX_BUFFER_SIZE in one go.
        ulLengthToSend = ETHERNET_CONF_TX_BUFFER_SIZE;
      }
      // Copy the data into the buffer.
      memcpy( pcBuffer, &( pcFrom[ ulDataBuffered ] ), ulLengthToSend );
      ulDataBuffered += ulLengthToSend;
      // Is this the last data for the frame ?
      if( lEndOfFrame && ( ulDataBuffered >= ulLength ) )
      {
        // No more data remains for this frame so we can start the transmission.
        ulLastBuffer = AVR32_LAST_BUFFER;
      }
      else
      {
        // More data to come for this frame.
        ulLastBuffer = 0;
      }
      // Fill out the necessary in the descriptor to get the data sent,
      // then move to the next descriptor, wrapping if necessary.
      if( uxTxBufferIndex >= ( ETHERNET_CONF_NB_TX_BUFFERS - 1 ) )
      {
        xTxDescriptors[ uxTxBufferIndex ].U_Status.status =   ( ulLengthToSend & ( unsigned long ) AVR32_LENGTH_FRAME )
                                    | ulLastBuffer
                                    | AVR32_TRANSMIT_WRAP;
        uxTxBufferIndex = 0;
      } else
      {
        xTxDescriptors[ uxTxBufferIndex ].U_Status.status =   ( ulLengthToSend & ( unsigned long ) AVR32_LENGTH_FRAME )
                                    | ulLastBuffer;
        uxTxBufferIndex++;
      }
      /* If this is the last buffer to be sent for this frame we can
         start the transmission. */
      if( ulLastBuffer )
        macb->ncr |=  AVR32_MACB_TSTART_MASK;

    }
    portEXIT_CRITICAL();
  }

  return PASS;
}

unsigned long ulMACBInputLength(void)
{
  register unsigned long ulIndex , ulLength = 0;
  unsigned int uiTemp;
  volatile unsigned long ulEventStatus;

  // Check if the MACB encountered a problem.
  ulEventStatus = AVR32_MACB.rsr;
  if( ulEventStatus & AVR32_MACB_RSR_BNA_MASK )
  {     // MACB couldn't get ownership of a buffer. This could typically
        // happen if the total numbers of Rx buffers is tailored too small
        // for a noisy network with big frames.
        // We might as well restore ownership of all buffers to the MACB to
        // restart from a clean state.
    vResetMacbRxFrames();
    return( ulLength );
  }

  // Skip any fragments.  We are looking for the first buffer that contains
  // data and has the SOF (start of frame) bit set.
  while( ( xRxDescriptors[ ulNextRxBuffer ].addr & AVR32_OWNERSHIP_BIT )
        && !( xRxDescriptors[ ulNextRxBuffer ].U_Status.status & AVR32_SOF ) )
  {
    // Ignoring this buffer.  Mark it as free again.
    uiTemp = xRxDescriptors[ ulNextRxBuffer ].addr;
    xRxDescriptors[ ulNextRxBuffer ].addr = uiTemp & ~( AVR32_OWNERSHIP_BIT );
    ulNextRxBuffer++;
    if( ulNextRxBuffer >= ETHERNET_CONF_NB_RX_BUFFERS )
    {
      ulNextRxBuffer = 0;
    }
  }

  // We are going to walk through the descriptors that make up this frame,
  // but don't want to alter ulNextRxBuffer as this would prevent vMACBRead()
  // from finding the data.  Therefore use a copy of ulNextRxBuffer instead.
  ulIndex = ulNextRxBuffer;

  // Walk through the descriptors until we find the last buffer for this frame.
  // The last buffer will give us the length of the entire frame.
  while ( xRxDescriptors[ ulIndex ].addr & AVR32_OWNERSHIP_BIT )
  {
    ulLength = xRxDescriptors[ ulIndex ].U_Status.status & AVR32_LENGTH_FRAME;
    if (ulLength) break; //return ulLength

    // Increment to the next buffer, wrapping if necessary.
    if( ++ulIndex >= ETHERNET_CONF_NB_RX_BUFFERS ) ulIndex = 0;

    // Is the descriptor valid?
    if (!(xRxDescriptors[ ulIndex ].addr & AVR32_OWNERSHIP_BIT)) break; //return 0

    // Is it a SOF? If so, the head packet is bad and should be discarded
    if (xRxDescriptors[ ulIndex ].U_Status.status & AVR32_SOF)
    {
      // Mark the buffers of the CURRENT, FAULTY packet available.
      unsigned int i = ulNextRxBuffer;
      do{
        // Ignore the faulty frame. Mark its buffers as owned by the MACB.
        uiTemp = xRxDescriptors[ i ].addr;
        xRxDescriptors[ i ].addr = uiTemp & ~(AVR32_OWNERSHIP_BIT);
        if (++i>=ETHERNET_CONF_NB_RX_BUFFERS) i=0;
      }while (i!=ulIndex);
      ulNextRxBuffer=ulIndex;
      // We have the start of a new packet, look at that one instead.
    }
  }
  return ulLength;
}
/*-----------------------------------------------------------*/

void vMACBRead(void *pvTo, unsigned long ulSectionLength, unsigned long ulTotalFrameLength)
{
  unsigned char *pcTo = pvTo;
  static unsigned long ulSectionBytesReadSoFar = 0, ulBufferPosition = 0, ulFrameBytesReadSoFar = 0;
  static const unsigned char *pcSource;
  register unsigned long ulBytesRemainingInBuffer, ulRemainingSectionBytes;
  unsigned int uiTemp;

  // Read ulSectionLength bytes from the Rx buffers.
  // This is not necessarily any correspondence between the length of our Rx buffers,
  // and the length of the data we are returning or the length of the data being requested.
  // Therefore, between calls  we have to remember not only which buffer we are currently
  // processing, but our position within that buffer.
  // This would be greatly simplified if PBUF_POOL_BUFSIZE could be guaranteed to be greater
  // than the size of each Rx buffer, and that memory fragmentation did not occur.

  // This function should only be called after a call to ulMACBInputLength().
  // This will ensure ulNextRxBuffer is set to the correct buffer. */

  // vMACBRead is called with pcTo set to NULL to indicate that we are about
  // to read a new frame.  Any fragments remaining in the frame we were
  // processing during the last call should be dropped.
  if( pcTo == NULL )
  {
    // How many bytes are indicated as being in this buffer?
    // If none then the buffer is completely full and the frame is contained within more
    // than one buffer.
    // Reset our state variables ready for the next read from this buffer.
    pcSource = ( unsigned char * )( xRxDescriptors[ ulNextRxBuffer ].addr & ADDRESS_MASK );
    ulFrameBytesReadSoFar = ( unsigned long ) 0;
    ulBufferPosition = ( unsigned long ) 0;
  }
  else
  {
    // Loop until we have obtained the required amount of data.
    ulSectionBytesReadSoFar = 0;
    while( ulSectionBytesReadSoFar < ulSectionLength )
    {
      // We may have already read some data from this buffer.
      // How much data remains in the buffer?
      ulBytesRemainingInBuffer = ( RX_BUFFER_SIZE - ulBufferPosition );

      // How many more bytes do we need to read before we have the
      // required amount of data?
      ulRemainingSectionBytes = ulSectionLength - ulSectionBytesReadSoFar;

      // Do we want more data than remains in the buffer?
      if( ulRemainingSectionBytes > ulBytesRemainingInBuffer )
      {
        // We want more data than remains in the buffer so we can
        // write the remains of the buffer to the destination, then move
        // onto the next buffer to get the rest.
        memcpy( &( pcTo[ ulSectionBytesReadSoFar ] ), &( pcSource[ ulBufferPosition ] ), ulBytesRemainingInBuffer );
        ulSectionBytesReadSoFar += ulBytesRemainingInBuffer;
        ulFrameBytesReadSoFar += ulBytesRemainingInBuffer;

        // Mark the buffer as free again.
        uiTemp = xRxDescriptors[ ulNextRxBuffer ].addr;
        xRxDescriptors[ ulNextRxBuffer ].addr = uiTemp & ~( AVR32_OWNERSHIP_BIT );
        // Move onto the next buffer.
        ulNextRxBuffer++;

        if( ulNextRxBuffer >= ETHERNET_CONF_NB_RX_BUFFERS )
        {
          ulNextRxBuffer = ( unsigned long ) 0;
        }

        // Reset the variables for the new buffer.
        pcSource = ( unsigned char * )( xRxDescriptors[ ulNextRxBuffer ].addr & ADDRESS_MASK );
        ulBufferPosition = ( unsigned long ) 0;
      }
      else
      {
        // We have enough data in this buffer to send back.
        // Read out enough data and remember how far we read up to.
        memcpy( &( pcTo[ ulSectionBytesReadSoFar ] ), &( pcSource[ ulBufferPosition ] ), ulRemainingSectionBytes );

        // There may be more data in this buffer yet.
        // Increment our position in this buffer past the data we have just read.
        ulBufferPosition += ulRemainingSectionBytes;
        ulSectionBytesReadSoFar += ulRemainingSectionBytes;
        ulFrameBytesReadSoFar += ulRemainingSectionBytes;

        // Have we now finished with this buffer?
        if( ( ulBufferPosition >= RX_BUFFER_SIZE ) || ( ulFrameBytesReadSoFar >= ulTotalFrameLength ) )
        {
          // Mark the buffer as free again.
          uiTemp = xRxDescriptors[ ulNextRxBuffer ].addr;
          xRxDescriptors[ ulNextRxBuffer ].addr = uiTemp & ~( AVR32_OWNERSHIP_BIT );
          // Move onto the next buffer.
          ulNextRxBuffer++;

          if( ulNextRxBuffer >= ETHERNET_CONF_NB_RX_BUFFERS )
          {
            ulNextRxBuffer = 0;
          }

          pcSource = ( unsigned char * )( xRxDescriptors[ ulNextRxBuffer ].addr & ADDRESS_MASK );
          ulBufferPosition = 0;
        }
      }
    }
  }
}

/*-----------------------------------------------------------*/
void vMACBFlushCurrentPacket(unsigned long ulTotalFrameLength)
{
   unsigned int   uiTemp;
   long int lTotalFrameLen = (long int)ulTotalFrameLength;

   while( lTotalFrameLen > 0 )
   {
      // Ignoring this buffer.  Mark it as free again.
      uiTemp = xRxDescriptors[ ulNextRxBuffer ].addr;
      xRxDescriptors[ ulNextRxBuffer ].addr = uiTemp & ~( AVR32_OWNERSHIP_BIT );

      // Move on to the next buffer.
      ulNextRxBuffer++;
      ulNextRxBuffer = ulNextRxBuffer%ETHERNET_CONF_NB_RX_BUFFERS;

      lTotalFrameLen -= RX_BUFFER_SIZE;
   }
}

/*-----------------------------------------------------------*/
void vMACBSetMACAddress(const unsigned char *MACAddress)
{
  memcpy(cMACAddress, MACAddress, sizeof(cMACAddress));
}

Bool xMACBInit(volatile avr32_macb_t *macb)
{
  Bool global_interrupt_enabled = Is_global_interrupt_enabled();
  volatile unsigned long status;

  //vDisableMACBOperations(macb);

  // set up registers
  macb->ncr = 0;
  macb->tsr = ~0UL;
  macb->rsr = ~0UL;

  if (global_interrupt_enabled) Disable_global_interrupt();
  macb->idr = ~0UL;
  status = macb->isr;
  if (global_interrupt_enabled) Enable_global_interrupt();

  // RMII used, set 0 to the USRIO Register
  macb->usrio &= ~AVR32_MACB_RMII_MASK;

  // Load our MAC address into the MACB.
  prvSetupMACAddress(macb);

  // Setup the buffers and descriptors.
  prvSetupDescriptors(macb);

#if ETHERNET_CONF_SYSTEM_CLOCK <= 20000000
  macb->ncfgr |= (AVR32_MACB_NCFGR_CLK_DIV8 << AVR32_MACB_NCFGR_CLK_OFFSET);
#elif ETHERNET_CONF_SYSTEM_CLOCK <= 40000000
  macb->ncfgr |= (AVR32_MACB_NCFGR_CLK_DIV16 << AVR32_MACB_NCFGR_CLK_OFFSET);
#elif ETHERNET_CONF_SYSTEM_CLOCK <= 80000000
  macb->ncfgr |= AVR32_MACB_NCFGR_CLK_DIV32 << AVR32_MACB_NCFGR_CLK_OFFSET;
#elif ETHERNET_CONF_SYSTEM_CLOCK <= 160000000
  macb->ncfgr |= AVR32_MACB_NCFGR_CLK_DIV64 << AVR32_MACB_NCFGR_CLK_OFFSET;
#else
# error System clock too fast
#endif

  // Are we connected?
  if( prvProbePHY(macb) == TRUE )
  {
    // Enable the interrupt!
    portENTER_CRITICAL();
    {
      prvSetupMACBInterrupt(macb);
    }
    portEXIT_CRITICAL();
    // Enable Rx and Tx, plus the stats register.
    macb->ncr = AVR32_MACB_NCR_TE_MASK | AVR32_MACB_NCR_RE_MASK;
    return (TRUE);
  }
  return (FALSE);
}

void vDisableMACBOperations (volatile avr32_macb_t *macb)
{
  Bool global_interrupt_enabled = Is_global_interrupt_enabled();

  // write the MACB control register : disable Tx & Rx
  macb->ncr &= ~((1 << AVR32_MACB_RE_OFFSET) | (1 << AVR32_MACB_TE_OFFSET));

  // We no more want to interrupt on Rx and Tx events.
  if (global_interrupt_enabled) Disable_global_interrupt();
  macb->idr = AVR32_MACB_IER_RCOMP_MASK | AVR32_MACB_IER_TCOMP_MASK;
  macb->isr;
  if (global_interrupt_enabled) Enable_global_interrupt();
}

void vClearMACBTxBuffer(void)
{
  static unsigned long uxNextBufferToClear = 0;

  // Called on Tx interrupt events to set the AVR32_TRANSMIT_OK bit in each
  // Tx buffer within the frame just transmitted.  This marks all the buffers
  // as available again.

  // The first buffer in the frame should have the bit set automatically. */
  if( xTxDescriptors[ uxNextBufferToClear ].U_Status.status & AVR32_TRANSMIT_OK )
  {
    // Loop through the other buffers in the frame.
    while( !( xTxDescriptors[ uxNextBufferToClear ].U_Status.status & AVR32_LAST_BUFFER ) )
    {
      uxNextBufferToClear++;

      if( uxNextBufferToClear >= ETHERNET_CONF_NB_TX_BUFFERS )
      {
        uxNextBufferToClear = 0;
      }

      xTxDescriptors[ uxNextBufferToClear ].U_Status.status |= AVR32_TRANSMIT_OK;
    }

    // Start with the next buffer the next time a Tx interrupt is called.
    uxNextBufferToClear++;

    // Do we need to wrap back to the first buffer?
    if( uxNextBufferToClear >= ETHERNET_CONF_NB_TX_BUFFERS )
    {
      uxNextBufferToClear = 0;
    }
  }
}

static void prvSetupDescriptors(volatile avr32_macb_t *macb)
{
  unsigned long xIndex;
  unsigned long ulAddress;

  // Initialise xRxDescriptors descriptor.
  for( xIndex = 0; xIndex < ETHERNET_CONF_NB_RX_BUFFERS; ++xIndex )
  {
    // Calculate the address of the nth buffer within the array.
    ulAddress = ( unsigned long )( pcRxBuffer + ( xIndex * RX_BUFFER_SIZE ) );

    // Write the buffer address into the descriptor.
    // The DMA will place the data at this address when this descriptor is being used.
    // No need to mask off the bottom bits of the address (these have special meaning
    // for the MACB) because pcRxBuffer is 4Bytes-aligned.
    xRxDescriptors[ xIndex ].addr = ulAddress;
  }

  // The last buffer has the wrap bit set so the MACB knows to wrap back
  // to the first buffer.
  xRxDescriptors[ ETHERNET_CONF_NB_RX_BUFFERS - 1 ].addr |= RX_WRAP_BIT;

  // Initialise xTxDescriptors.
  for( xIndex = 0; xIndex < ETHERNET_CONF_NB_TX_BUFFERS; ++xIndex )
  {
    // Calculate the address of the nth buffer within the array.
    ulAddress = ( unsigned long )( pcTxBuffer + ( xIndex * ETHERNET_CONF_TX_BUFFER_SIZE ) );

    // Write the buffer address into the descriptor.
    // The DMA will read data from here when the descriptor is being used.
    xTxDescriptors[ xIndex ].addr = ulAddress;
    xTxDescriptors[ xIndex ].U_Status.status = AVR32_TRANSMIT_OK;
  }

  // The last buffer has the wrap bit set so the MACB knows to wrap back
  // to the first buffer.
  xTxDescriptors[ ETHERNET_CONF_NB_TX_BUFFERS - 1 ].U_Status.status = AVR32_TRANSMIT_WRAP | AVR32_TRANSMIT_OK;

  // Tell the MACB where to find the descriptors.
  macb->rbqp =   ( unsigned long )xRxDescriptors;
  macb->tbqp =   ( unsigned long )xTxDescriptors;

  // Do not copy the FCS field of received frames to memory.
  macb->ncfgr |= ( AVR32_MACB_NCFGR_DRFCS_MASK );

}

//!
//! \brief Restore ownership of all Rx buffers to the MACB.
//!
static void vResetMacbRxFrames( void )
{
   register unsigned long  ulIndex;
   unsigned int            uiTemp;

   // Disable MACB frame reception.
   AVR32_MACB.ncr &= ~(AVR32_MACB_NCR_RE_MASK);

   // Restore ownership of all Rx buffers to the MACB.
   for( ulIndex = 0; ulIndex < ETHERNET_CONF_NB_RX_BUFFERS; ++ulIndex )
   {
      // Mark the buffer as owned by the MACB.
      uiTemp = xRxDescriptors[ ulIndex ].addr;
      xRxDescriptors[ ulIndex ].addr = uiTemp & ~( AVR32_OWNERSHIP_BIT );
   }

   // Reset the Buffer-not-available bit and the overrun bit.
   AVR32_MACB.rsr = AVR32_MACB_RSR_BNA_MASK | AVR32_MACB_RSR_OVR_MASK;  // Clear
   AVR32_MACB.rsr; // We read to force the previous operation.

   // Reset the MACB starting point.
   AVR32_MACB.rbqp = ( unsigned long )xRxDescriptors;

   // Reset the index to the next buffer from which data will be read.
   ulNextRxBuffer = 0;

   // Enable MACB frame reception.
   AVR32_MACB.ncr |= AVR32_MACB_NCR_RE_MASK;
}

static void prvSetupMACAddress(volatile avr32_macb_t *macb)
{
  // Must be written SA1L then SA1H.
  macb->sa1b =  ( ( unsigned long ) cMACAddress[ 3 ] << 24 ) |
                ( ( unsigned long ) cMACAddress[ 2 ] << 16 ) |
                ( ( unsigned long ) cMACAddress[ 1 ] << 8  ) |
                                    cMACAddress[ 0 ];

  macb->sa1t =  ( ( unsigned long ) cMACAddress[ 5 ] << 8 ) |
                                    cMACAddress[ 4 ];
}

static void prvSetupMACBInterrupt(volatile avr32_macb_t *macb)
{

    // Setup the interrupt for MACB.
    // Register the interrupt handler to the interrupt controller at interrupt level 2
    INTC_register_interrupt((__int_handler)&vMACB_ISR, AVR32_MACB_IRQ, AVR32_INTC_INT2);

    // We want to interrupt on Rx and Tx events
    macb->ier = AVR32_MACB_IER_RCOMP_MASK | AVR32_MACB_IER_TCOMP_MASK ;
}

/*! Read a register on MDIO bus (access to the PHY)
 *         This function is looping until PHY gets ready
 *
 * \param macb         Input. instance of the MACB to use
 * \param usAddress    Input. register to set.
 *
 * \return unsigned long data that has been read
 */
static unsigned long ulReadMDIO(volatile avr32_macb_t *macb, unsigned short usAddress)
{
  unsigned long value, status;
  u16 timeout = 0;

  // initiate transaction : enable management port
  macb->ncr |= AVR32_MACB_NCR_MPE_MASK;
  // Write the PHY configuration frame to the MAN register
  macb->man = (AVR32_MACB_SOF_MASK & (0x01<<AVR32_MACB_SOF_OFFSET))  // SOF
            | (2 << AVR32_MACB_CODE_OFFSET)                          // Code
            | (2 << AVR32_MACB_RW_OFFSET)                            // Read operation
            | ((ETHERNET_CONF_PHY_ADDR & 0x1f) << AVR32_MACB_PHYA_OFFSET)  // Phy Add
            | (usAddress << AVR32_MACB_REGA_OFFSET);                 // Reg Add
  // wait for PHY to be ready
  do {
    status = macb->nsr;
  } while (!(status & AVR32_MACB_NSR_IDLE_MASK) && (timeout++ < TIMEOUT));
  // read the register value in maintenance register
  value = macb->man & 0x0000ffff;
  // disable management port
  macb->ncr &= ~AVR32_MACB_NCR_MPE_MASK;
  // return the read value
  return (value);
}

/*! Write a given value to a register on MDIO bus (access to the PHY)
 *         This function is looping until PHY gets ready
 *
 * \param *macb        Input. instance of the MACB to use
 * \param usAddress    Input. register to set.
 * \param usValue      Input. value to write.
 *
 */
static void vWriteMDIO(volatile avr32_macb_t *macb, unsigned short usAddress, unsigned short usValue)
{
  unsigned long status;
  u16 timeout = 0;

  // initiate transaction : enable management port
  macb->ncr |= AVR32_MACB_NCR_MPE_MASK;
  // Write the PHY configuration frame to the MAN register
  macb->man = (( AVR32_MACB_SOF_MASK & (0x01<<AVR32_MACB_SOF_OFFSET)) // SOF
             | (2 << AVR32_MACB_CODE_OFFSET)                          // Code
             | (1 << AVR32_MACB_RW_OFFSET)                            // Write operation
             | ((ETHERNET_CONF_PHY_ADDR & 0x1f) << AVR32_MACB_PHYA_OFFSET)  // Phy Add
             | (usAddress << AVR32_MACB_REGA_OFFSET))                 // Reg Add
             | (usValue & 0xffff);                                    // Data
  // wait for PHY to be ready
  do {
    status = macb->nsr;
  } while (!(status & AVR32_MACB_NSR_IDLE_MASK) && (timeout++ < TIMEOUT));
  // disable management port
  macb->ncr &= ~AVR32_MACB_NCR_MPE_MASK;
}

static Bool prvProbePHY(volatile avr32_macb_t *macb)
{
  volatile unsigned long mii_status, phy_ctrl;
  volatile unsigned long config;
  unsigned long upper, lower, mode, advertise, lpa;
  volatile unsigned long physID;

  // Read Phy Identifier register 1 & 2
  lower = ulReadMDIO(macb, PHY_PHYSID2);
  upper = ulReadMDIO(macb, PHY_PHYSID1);
  // get Phy ID, ignore Revision
  physID = ((upper << 16) & 0xFFFF0000) | (lower & 0xFFF0);
  // check if it match config
  if (physID == ETHERNET_CONF_PHY_ID)
  {
    // read RBR
    mode = ulReadMDIO(macb, PHY_RBR);
    // set RMII mode if not done
    if ((mode & RBR_RMII) != RBR_RMII)
    {
      // force RMII flag if strap options are wrong
      mode |= RBR_RMII;
      vWriteMDIO(macb, PHY_RBR, mode);
    }

    advertise = ADVERTISE_CSMA | ADVERTISE_ALL;
    // write advertise register
    vWriteMDIO(macb, PHY_ADVERTISE, advertise);
    // read Control register
    config = ulReadMDIO(macb, PHY_BMCR);
    // read Phy Control register
    phy_ctrl = ulReadMDIO(macb, PHY_PHYCR);
    // enable Auto MDIX
    phy_ctrl |= PHYCR_MDIX_EN;
    // reset auto-negociation capability
    config |= (BMCR_ANRESTART | BMCR_ANENABLE);
    // update Phy ctrl register
    vWriteMDIO(macb, PHY_PHYCR, phy_ctrl);

    // update ctrl register
    vWriteMDIO(macb, PHY_BMCR, config);

    // loop while link status isn't OK
    do {
      mii_status = ulReadMDIO(macb, PHY_BMSR);
    } while (!(mii_status & BMSR_LSTATUS));

    // read the LPA configuration of the PHY
    lpa = ulReadMDIO(macb, PHY_LPA);

    // read the MACB config register
    config = AVR32_MACB.ncfgr;

    // if 100MB needed
    if ((lpa & advertise) & (LPA_100HALF | LPA_100FULL))
      config |= AVR32_MACB_SPD_MASK;
    else
      config &= ~(AVR32_MACB_SPD_MASK);

    // if FULL DUPLEX needed
    if ((lpa & advertise) & (LPA_10FULL | LPA_100FULL))
      config |= AVR32_MACB_FD_MASK;
    else
      config &= ~(AVR32_MACB_FD_MASK);

    // write the MACB config register
    macb->ncfgr = config;

    return TRUE;
  }
  return FALSE;
}

/*
 * The MACB ISR.  Handles both Tx and Rx complete interrupts.
 */
__attribute__((__interrupt__)) void vMACB_ISR(void)
{
  // Variable definitions can be made now.
  volatile unsigned long ulIntStatus, ulEventStatus;

  // Find the cause of the interrupt.
  ulIntStatus = AVR32_MACB.isr;
  ulEventStatus = AVR32_MACB.rsr;

  if( ( ulIntStatus & AVR32_MACB_IDR_RCOMP_MASK ) || ( ulEventStatus & AVR32_MACB_REC_MASK ) )
  {
    // A frame has been received, signal the IP task so it can process
    // the Rx descriptors.
    elua_uip_mainloop();
    AVR32_MACB.rsr =  AVR32_MACB_REC_MASK;  // Clear
    AVR32_MACB.rsr; // Read to force the previous write
  }

  if( ulIntStatus & AVR32_MACB_TCOMP_MASK )
  {
    // A frame has been transmitted.  Mark all the buffers used by the
    // frame just transmitted as free again.
    vClearMACBTxBuffer();
    AVR32_MACB.tsr =  AVR32_MACB_TSR_COMP_MASK; // Clear
    AVR32_MACB.tsr; // Read to force the previous write
  }
}
#endif

redpajama_set_name: RedPajamaGithub


How do I distribute an Album/EP Release on Songtradr?
If you wish to distribute your music, Songtradr offers distribution to over 200+ streaming platforms including Spotify, Apple Music, Deezer and more.
NOTE: Create an artist here if you have any features or contributors who are on the majority of tracks on your release. Otherwise, add them on a song-by-song basis.
An image will automatically populate the Artwork box.
Note: Your Release title will automatically populate in the search bar, but you can type any query to populate different photos.
If you choose to select a song from your existing catalog, your catalog will open up.
This will bring up the Song Editor window.
NOTE: Please allow up to 14 days for release.
Note: Click Learn More to view all streaming platforms we distribute to.
Congratulations, you have just distributed your release!


Apartment Therapy has a good primer for anyone just getting started with mid-century design. They get into some of the foundations of the movement as well as a few of the major designers of the time.
The mid-century modernists laid a foundation with the lofty ideals of their predecessors, and in the years following World War II, what they built upon it was revolutionary.
This era's American designers had at their disposal a dizzying array of new materials and processes that had been developed during wartime. Resins, plastics, fiberglass, metal alloys and laminates allowed for unprecedented innovation, as well as mass production.
Architects opened up floor plans and installed walls of glass. Spaces encouraged a seamless transition of indoor and outdoor living, especially in the West. Though the wealthy could commission spectacular custom dwellings, developers created tract homes based on the same principles.
There was a sense of social responsibility to it all. Mid-century designers genuinely thought that they were improving life through comfortable furniture, forward-thinking architecture and careful civic planning. For the first time, they were putting design within reach of the middle-class American family.
Some of the comments on that AT post were interesting. The MCM naysayers have been claiming for decades that this "fad" was going to disappear, and we just keep proving them wrong.
It's simple: Good design is never a fad, it just waits for people to find it again. It might be more or less popular at certain points, but it never goes away. Be it MCM or any other style.


text:
Il distretto di Goleniów (in polacco powiat goleniowski) è un distretto polacco appartenente al voivodato della Pomerania Occidentale.

Geografia antropica

Suddivisioni amministrative
Il distretto comprende sei comuni:
 comuni urbano-rurali: Goleniów, Maszewo, Nowogard
 comuni rurali: Osina, Przybiernów, Stepnica

Altri progetti

Collegamenti esterni

Goleniów

redpajama_set_name: RedPajamaWikipedia


text:
Solution Summit has ended
Texten är på engelska. Vill du veta mer om Solution Summit, kontakta gärna oss!
STOCKHOLM, 15 February 2018 – Leaders and representatives from the United Nations, government, civil society and the private sector renewed their commitment to ending violence against children by 2030 at the first-ever End Violence Solutions Summit which concluded in Stockholm today.
A child dies from violence every five minutes worldwide, and at least 1 billion children endure some sort of physical, sexual or emotional violence every year.
The Summit, hosted by the Swedish Government, in cooperation with the Global Partnership to End Violence Against Children and the WePROTECT Global Alliance, sought to demonstrate leadership, build political will and increase knowledge on how to prevent, detect and treat violence against children – a global priority set out in 2030 Agenda for Sustainable Development.
In his opening speech, Swedish Prime Minister Stefan Löfven urged all leaders to step up when it comes to children's rights. "Step up to give every girl and boy the opportunity to grow up to be a strong and confident individual," he said. "Step up to ensure that the solutions presented at this summit will not end up as just high-sounding words or as broken dreams, but lead to permanent change. Step up to keep our promise: to end violence against children in our time."
In total 386 participants from 67 countries united behind a global, national and local movement to protect children from violence, based on increased political will, accelerated action and strengthened collaboration.
"We have never seen so many senior leaders come together to prevent and respond to violence against children," said Susan Bissell, Founding Director of the Global Partnership to End Violence. "No longer is this a forgotten issue. This summit is the start of the bold and transformative change that will deliver the Sustainable Development Goal to end all forms of violence."
The Summit celebrated the commitment of the End Violence pathfinder countries, including Indonesia, Mexico, Sweden and Tanzanian, whose leadership is at the core of the Global Partnership to End Violence Against Children. Pathfinder countries commit to accelerated action to eliminate violence against children in various settings, at home, at school and in communities. During the Summit, both Japan and The United Arab Emirates made a commitment to become pathfinder countries, with Brazil expressing interest too.
The United Kingdom reinforced its commitment to end violence against children, and specifically to tackle sexual exploitation within the aid sector. The Secretary of State for International Development will host a safeguarding summit with representatives across the aid sector.
Ernie Allen, Chair of WePROTECT Global Alliance, encouraged donor countries to step up their financial and political support to combat online child sexual exploitation. "I am proud of the progress we have made. We are building awareness and capacity to keep children safe all over the world. But there is so much more to be done. Our ambitious goal is to end violence against children by 2030. Join WePROTECT Global Alliance to fight against online child sexual exploitation" he asked.
In her closing remarks, Swedish Minister for Children, the Elderly and Gender Equality Åsa Regnér emphasized the need to keep learning from one another, support each other and accelerate action both globally and at home. "We, the global community, need to demonstrate leadership, build knowledge, develop and share solutions, invest more resources and place all children – especially the most vulnerable – at the heart of Agenda 2030," she said. "Let us do all we can to ensure that every child, everywhere, can live a life free from violence."
Save the Children Youth Sweden // Rädda Barnens Ungdomsförbund
RBUF på internationellt högnivåmöte →
← Representera oss i Bryssel

redpajama_set_name: RedPajamaCommonCrawl


Before moving to Florida for law school at Florida International University, I attended Washburn University in Topeka, Kansas where I studied Political Science. While in law school in Florida I volunteered at the Krome Detention Center helping to educate immigrant detainees about their legal rights. Outside of work I channel my love of animals into the Florida Bar Animal Law Committee. This committee addresses all issues concerning animals and the law including estate planning for companion animals, dangerous animals/reckless owner laws, compensation when an animal is injured and more.


text:
Home Sexual Violence Research and Prevention Unit Research Publications Affective Guide with Attitude
PDF - Author's Accepted Version 686 KB Adobe Acrobat PDF Download
PDF - Author's Accepted Version
Affective Guide with Attitude
Lim, M Y | Jones, C M | Aylett, R
The Affective Guide System is a mobile context-aware and spatial-aware system, offering the user with an affective multimodal interaction interface. The system takes advantage of the current mobile and wireless technologies. It includes an 'affective guide with attitude' that links its memories and visitor's interest to the spatial location so that stories are relevant to what can be immediately seen. This paper presents a review of related work, the system in detail, challenges and the future work to be carried out.
Lecture Notes in Computer Science / Vol. 3784, pp772-779
http://dx.doi.org/10.1007/11573548_99
FoR 0801 (Artificial Intelligence and Image Processing) | Affective Guide System
Copyright © Springer-Verlag 2005. The author's accepted version is reproduced here in accordance with the publisher's copyright policy. The final publication is available at www.springerlink.com


text:
Posts tagged 'Cover Shoot'
Dreamville Covers XXL Magazine's Spring 2019 Issue
J. Cole and the entire Dreamville crew appear on the cover of XXL's 2019 Spring Issue. Check out the full cover story here.
Go behind the scenes with Dreamville Records' J. Cole, Bas, Cozz, EarthGang, J.I.D, Lute, Omen and Ari Lennox for the cover of XXL magazine's spring 2019 issue.
French Montana Covers GQ Middle East
French Montana appears on the cover of GQ Middle East. Check out the full cover story here.
Take a look at some photos and video below from the cover shoot. Read more
Jayson Tatum Covers SLAM Magazine
Becoming an NBA superstar wasn't Jayson Tatum's biggest goal when he was a kid growing up in St. Louis—it was his only goal. And now, having led an undermanned Boston Celtics team to the 2018 Eastern Conference Finals in only his rookie season, it's officially a flow-blown reality. The kid is just different.
Check out the full cover story here.
The Cast of BET's 'The New Edition Story' Digital Cover Shoot (Behind The Scenes)
Go behind the scenes of the digital cover shoot for the cast of BET's The New Edition Story which aired the last 3 nights on BET. Check out the full story here. Read more
Travis Scott Covers XXL Magazine's Winter 2016 Issue
After having a remarkable year, Travis Scott lands on the cover of XXL's Winter 2016 issue. Go behind the scenes with the rapper below. Read more
Pusha T Covers Complex
Pusha T covers the new December/January issue of Complex Magazine.
"I heard something," he says, simultaneously playful and dismissive, when I ask him again about "Two Birds, One Stone" and the Internet chatter that Drake's lines were directed at Pusha, questioning the street bona fides of his past. "I would never, ever attribute that [song] to myself. My past is cemented. My past happened. Like slavery happened. The Holocaust happened. You can't ever question anything that has actually happened."
Read the full interview here and continue below for some behind the scenes footage. Read more
Video: John Mayer's Cover Shoot for HYPEBEAST Magazine Issue 14
HYPEBEAST Magazine's "The Artisanal Issue" focuses on the concept of quality and all that it encompasses. Behind all well-made products are passionate individuals, devoted to their craft and determined to improve and progress. For HYPEBEAST's fourteenth issue they speak to a handpicked group of individuals they believe to be dedicated to their trade and the product they release to the world. They kick things off with John Mayer as the face of this issue. Unbeknownst to some, John is a collector of "artisanal" products including vintage guitars, luxury watches and of course, visvim clothing. Read more
Kendrick Lamar Covers XXL Magazine's Winter 2015 Issue
Kendrick Lamar covers XXL Magazine's 2015 Winter Issue. Check out the full spread here and check out the behind the scenes footage below. Read more
Drake On The Cover Of FADER Magazine
Drake appears on the cover of the latest FADER Magazine issue. He talks about his Views From The 6 album, beef with Meek Mill, the leaked reference tracks and more. Read more
Future On The Cover of XXL Magazine
Future graces the coveer of XXL's Fall issue. You can read a summary of the cover story and a few excerpts here, Included below are a couple quotes below on Russell Wilson and his relationships with Drake and Meek Mill.
ON CIARA HAVING THEIR SON, FUTURE, AROUND HER NEW BOYFRIEND, SEATTLE SEAHAWKS QUARTERBACK RUSSELL WILSON
"I'm telling you right now, I'm giving you two sides. Like, I'm cool with it. I'm cool with him being around him but certain situations, we all in the public eye, you can't move around with my son a certain kind of way, you know what I'm saying? I feel like a lot of moves are just made out of just being evil, basically. Because, you know, the success of my album and you still want to make certain moves to take the spotlight off me a little bit and shed light on a negative situation. Why would you want to put light on a negative situation? Even if I didn't care about it, the people have a way of looking at it. Why would you want to give these people an opinion on our kid? Why won't we just let our child be a child?"
ON HIS FRIENDSHIPS WITH MEEK MILL AND DRAKE
"On some real shit, I love Meek. And the Drake situation, I feel like genuinely we've been building a great relationship over these years. We got history together. We went on a few tours together so it was like, publicly, some things was said and it was took out of context. And even with the situation coming out, we put it all behind us, went on a sold out tour and we built from that and I feel like it's genuine, it's authentic and we built trust between each other. So with trust it's just bringing us closer because in this industry, as you get bigger, I feel like you lose trust for everyone around you. You feel like the people you come in contact with, you can't trust them. So I feel like it had to happen over years, that couldn't happen over a few months."
Continue below for behind the scenes footage from the cover shoot. Read more
Video: Kendall Jenner's GQ Shoot
During her May issue cover shoot, Jenner shares the secret to taking good selfies, the first website she looks at in the morning, and who she is probably texting right now. Read more
Video: Meek Mill x Rick Ross XXL Spring 2015 Cover Shoot (Behind The Scenes)
Check out what went down during the XXL Spring 2015 cover shoot with Meek Mill and Rick Ross. Dreams Worth More Than Money coming soon. Read more


Performed by David Seville. 50,000+ bulbs and diodes controlled by 300+ channels of Lightorama spread out over two yards in Clearwater, MN. Video is a bit wobbly due to tripod leg malfunction and frozen fingers trying to remedy said tripod leg malfunction.


text:
U.S.-Russian Relations: Avoiding a Cold Peace
The end of the cold war left U.S.-Russian relations in a state of volatile ambiguity.
The Russian military is a shadow of its former self.
After initially accepting U.S. dictates, Russia has begun to define its own national interests.
The Clinton administration has attempted to lock Russia into second-class status.
The end of the cold war left U.S.-Russian relations in a state of volatile ambiguity. Once implacable enemies, the two countries had to quickly work out new principles upon which to base their relationship. The result has been a tragicomedy of tepid cooperation, mild saber-rattling, and missed opportunities.
After the demise of the Soviet Union in December 1991, the Bush administration immediately reached out to Russian President Boris Yeltsin, promising aid, encouraging liberal economic and political reforms, and negotiating new security arrangements. During this honeymoon period from 1992 to mid-1993, a group of "Atlanticists" under the leadership of Foreign Minister Andrei Kozyrev steered Russia toward accommodation and cooperation with the West. Russia followed U.S. policy on high-technology transfers (cancelling several lucrative deals that the U.S. opposed), accepted a junior role in resolving the conflict in the former Yugoslavia, and acceded to stringent economic requirements in order to receive foreign aid.
At the same time, Russia radically altered its cold war security structure. It completed an extraordinary withdrawal from Europe and most of the former Soviet republics. Arms control treaties reduced Russia's nuclear component by 25-50 percent from Soviet levels and cut conventional forces by 50 percent. The Russian military budget, once comparable to that of the U.S., now stands at 10 percent of Soviet levels in the late 1980s.
But Russia's accommodation to Western interests has not earned the country expected aid and investment flows, a stable economy, or a full-fledged place at the international table. Instead, it has brought aggressive Western encroachment on its markets, its security perimeters, and its internal political and economic affairs. Increasingly, Russians across the political spectrum have gravitated toward a more pragmatic "Russia First" position that asserts Russian interests in its own sphere of influence and a more demonstrative role in the international realm.
To reflect this new consensus, the Russian government revised its Gorbachev-era military doctrine in November 1993, reneging on its policy of no-first-use of nuclear weapons (after protracted U.S. failure to reciprocate) and prioritizing the protection of the rights of ethnic Russians in neighboring states. Invoking the cause of federal unity, Russia invaded the southern territory of Chechnya in December 1994, killing thousands of civilians, spreading disinformation through the media, violating human rights on a vast scale and revealing the deteriorating state of its own military. Yevgeny Primakov has replaced Andrei Kozyrev as foreign minister, and the "Atlanticist" tendency has been largely discredited. For the past three years, U.S.-Russian relations have cooled considerably and the two countries have sparred over NATO expansion, arms control negotiations, and policy toward the former Yugoslavia.
Despite the ups and downs of U.S.-Russian relations, the Clinton administration has continued to tout Yeltsin as Russia's best hope for reform. Clinton, along with European leaders such as Helmut Kohl, supported the Yeltsin camp in both the 1995 parliamentary and 1996 presidential elections. Washington has also scaled down its criticisms of Russia's human rights record-in Chechnya, in Moldova-for fear of undermining Yeltsin's domestic support.
Conservative critics of the Clinton policy have advised capitalizing on Russia's weakness. Senator Richard Lugar, for instance, has argued for a "tough rivalry" instead of a partnership; former national security advisor Zbigniew Brzezinski has advocated balancing Russian power through strategic support of other countries in the region, such as Ukraine and Kazakhstan.
U.S. policy toward Russia thus wavers between two poles-misguided engagement and irresponsible containment-embracing elements of both.
The Clinton administration has tied itself too closely with the increasingly authoritarian Yeltsin government.
The U.S. has not capitalized on several excellent disarmament opportunities.
The U.S. has promoted economic and political policies that have devastated Russian society.
The Clinton administration has mishandled policy toward the drifting Russian superpower. It has linked reform too exclusively to the political fortunes of the increasingly dictatorial and seriously ill Boris Yeltsin, has supported a string of untenable economic policies, missed several unprecedented opportunities for arms control and disarmament, and implicitly endorsed a powersharing arrangement that allows Russia virtually free rein in its shrunken sphere of influence.
The Clinton administration has bent over backwards to portray Boris Yeltsin as a bulwark against communism and nationalism. This policy of focusing support on Yeltsin has several defects. When the Russian president has strayed from the democratic paths–in the 1993 storming of the parliament and in his repeated reliance on decrees–the Clinton administration has been trapped into overt or implicit support of authoritarian policies. The administration encouraged Yeltsin when he concentrated power in the presidential apparatus through a new Russian constitution. And the U.S. certified as democratic the 1996 presidential elections in which the Yeltsin camp blatantly manipulated the media and used state funds–as much as $11 billion, according to one estimate–to influence the electorate. Because the Clinton administration has forgiven Yeltsin all his sins, the Russian president has felt confident that he won't risk U.S. censure when straying from the democratic path.
In the economic realm, Washington has promised a lot and delivered a lot less. The U.S. pledged $24 billion in 1992 and $28 billion in 1993, much of which was never delivered. What did arrive, moreover, has flowed largely into private sector development (the "Enterprise Funds") and has thus ended up in the pockets of the well-connected or, because of large-scale capital flight, in overseas bank accounts (in Russia, privatization is nicknamed prikhvatizatsiya-grabbing–because it amounts to little more than state-sanctioned robbery).
Through the Overseas Private Investment Corporation (OPIC) and the Export-Import Bank, the administration has focused on helping U.S. businesses extract Russian resources such as oil, natural gas, diamonds, and gold. This brand of structural adjustment profits U.S. businesses and their Russian corporate partners but does little to rebuild Russia's productive capacity or provide jobs for the growing number of Russian unemployed (see In Focus: Restructuring Eastern European Economies).
Washington has also advocated free trade policies that seek to eliminate barriers to U.S. imports. Russia has rapidly opened up to the West–imports grew from 14 to 39 percent of retail trade from 1990 to 1994. With few markets in the West or the East and a declining share of the domestic market, Russian industries have suffered a precipitous decline.
The Russian standard of living has also fallen dramatically. The divide between rich and poor has widened, the social safety net cannot provide for the increasing numbers of poor and sick, life expectancy has declined alarmingly, and the U.S. (because it champions these "liberal" trade reforms) has become associated with painful austerity and inequitable economic change.
On foreign policy issues, the Clinton administration has implicitly endorsed two separate spheres of influence. It has pursued its own foreign policy initiatives (bombing Iraq, implementing the Dayton Accords) without paying much attention to Russian objections. On the other hand, it has downplayed criticism of Russian conduct in Chechnya and has largely uncritically accepted Russian "peacekeeping" operations in Tajikistan, Moldova, Georgia, and Nagorno-Karabakh.
Nor has Washington facilitated Russia's entrance into the decision making apparatus of key international organizations such as the G-7 (the seven largest economic powers) and the International Monetary Fund. The division of the world into spheres of influence–where power supercedes principle–undercuts commitments to human rights or non-intervention. The treatment of Russia as a "junior partner" has only encouraged the growth of a politics of resentment in Russia that in turn feeds various political extremisms.
But perhaps the greatest failure of Clinton's Russia policy lies in the realm of arms control and disarmament. The Clinton administration delayed pushing START II through Congress. At the Moscow Summit in April 1996, nuclear arms control wasn't on the agenda. If START II–which mandates steep reductions in the respective nuclear arsenals-had been ratified earlier by the U.S. Senate, this strong signal of U.S. commitment to the disarmament process would have prodded the Russian Duma toward an earlier ratification.
Provide the aid necessary to enable Russia to sign SALT II and comply with its provisions.
Engage Russia on global issues.
Support sustainable economic development.
Promote political pluralism and civil society.
Although the United States and Russia have descended into a period of mutual wariness, the relationship has by no means completely soured. The U.S. government can take several pragmatic steps to build trust: re-energizing the arms control process, helping anchor Russia firmly in both regional and international security mechanisms, and assisting in rebuilding Russia's economy. The U.S. must also criticize Russian policies that violate human rights and the peace and security of the region.
On the arms control and disarmament front, the U.S. should not only ratify START II, but also increase aid to the Strategic Offensive Arms Elimination program so that Russia can implement a treaty that may cost it as much as $7.5 billion (the Department of Defense has so far offered only $160 million). The U.S. should not strengthen the anti-arms control lobby in Russia by first demanding reductions and then refusing to help pay for the destruction of the weapons. If and when START II comes into effect, the U.S. should match future arms reductions that Russia is forced to make for economic reasons. Such a policy of mutual unilateral initiatives–modeled on the removal of tactical weapons from Europe in 1991–would save time and money, and build considerable trust.
The U.S. should also:
Stop threatening to build an antiballistic missile system (abrogating the ABM Treaty).
Stop the Energy Department from designing new nuclear weapons (undermining the Comprehensive Test Ban Treaty).
Allow Russia to change its flank limits under the Conventional Forces in Europe Treaty.
Work closely with Russia on measures to decrease global arms transfers (Russian arms exports rose from 4 percent to 17 percent in 1995; U.S. arms exports remained on top at 43 percent).
Back away from its pledge to expand NATO.
The Clinton administration should engage Russia on global issues not as a junior partner but as a Eurasian power. One example would be to encourage Russia's participation in the four-power talks on the fate of the Korean peninsula.
The Russian Foreign Ministry has developed detailed proposals on peacemaking, confidence building, and normalizing relations among all the participants in the process. By "internationalizing" Russia on the basis of consistent principles of human rights and nonaggression, the U.S. would avoid a division into spheres of influence and preserve the capacity to challenge Russia on human rights violations (in Chechnya, for example). In the economic realm, the U.S. should stop pouring money into the black hole of Russian privatization. It should target the revitalization of Russian industry and allow Russia to nurture these industries, where necessary, with sensible trade policies.
The Defense Demilitarization Enterprise Fund is a critical tool for helping convert Russia's military industries into productive enterprises. Like OPIC, however, these funds should concentrate less on profits for U.S. businesses and consultants and more on rebuilding Russia's industrial capacity.
Particular attention should be paid to defense conversion at the local and regional levels. But the U.S. must seriously undertake a program of conversion at home, or Russian demilitarization will appear unfairly unilateral.
Additionally, the Clinton administration must not base its support for Russian reform on a single political actor–the Yeltsin camp. The U.S. should adhere to principles, not parties, in its dealings with other countries.
Washington has supported several excellent projects that strengthen Russia's civil society, such as funding Internews independent television and training an independent judiciary. By putting more money into these projects, the U.S. can better promote a pluralist politics that will long outlive Boris Yeltsin.
Written by John Feffer, National Writers Union, Philadelphia. Author of Shock waves: Eastern Europe after the Revolutions . Co-editor of Europe's New Nationalism .


Each Pikmi Pops Single Pack comes with 1 scented plush, 1 surprise message, 1 dangler string, 1 collector's guide and 1 lollipop stand. Display your Pikmi inside the lollipop or use the dangler string to hang your favorite Pikmi on your bag, notebook, pocket, pencil case and more!
There are over 60 scented Pikmis to collect, including Ultra Rare Shimmery Sea Pikmis and Limited Edition Fantasy Pikmis! Don't pick one, pick a lot - and unwrap the cute surprises in your Pikmi Pops!


Hunt Valley, Md. and Yorktown Heights, NY, USA - February 04, 2019 - McCormick & Company, Incorporated (NYSE: MKC), a global leader in flavor, and IBM (NYSE: IBM) today publicly announced their ongoing research collaboration to pioneer the application of artificial intelligence (AI) for flavor and food product development. Using IBM Research AI for Product Composition, McCormick is ushering in a new era of flavor innovation and changing the course of the industry.
McCormick & Company, Incorporated and IBM are working together to pioneer the application of artificial intelligence (AI) for flavor and food product development.
McCormick products developed with AI technology from IBM Research will hit the market by mid-2019.
McCormick & Company, Incorporated (NYSE: MKC), a global leader in flavor, and IBM (NYSE: IBM) today publicly announced their ongoing research collaboration to pioneer the application of artificial intelligence (AI) for flavor and food product development.
Using IBM Research AI for Product Composition, McCormick is ushering in a new era of flavor innovation and changing the course of the industry.
Product developers across McCormick's global workforce will be able to explore flavor territories more quickly and efficiently using AI to learn and predict new flavor combinations from hundreds of millions of data points across the areas of sensory science, consumer preference and flavor palettes.
This proprietary, cutting-edge technology sets McCormick apart in its ability to develop more creative, better tasting products and new flavor experiences across both its Consumer and Flavor Solutions business units.
AI has enabled McCormick's product developers access to an expanded portfolio of flavor profiles that enhances their creativity.
The new ONE platform was specifically developed to deliver family-favorite flavors with the ability to season both the protein and vegetable.
The new seasoning blends expect to be on U.S. retail shelves by late spring.
"McCormick's use of artificial intelligence highlights our commitment to insight-driven innovation and the application of the most forward-looking technologies to continually enhance our products and bring new flavors to market," said McCormick Chairman, President and CEO Lawrence Kurzius.
Flavor experience creation is a challenging domain.
The science of how humans experience flavor is not well understood.
It's a combination of at least three senses: smell, taste and appearance.
Screen shot of technology based on IBM Research AI for Product Composition used by McCormick & Company for flavor development.
"IBM Research's collaboration with McCormick illustrates our commitment to helping our clients and partners drive innovation across industries," said Kathryn Guarini, VP, Industry Research, IBM.
"By combining McCormick's deep data and expertise in science and taste, with IBM's AI capabilities, we are working together to unlock the bounds of creativity and transform the food and flavor development process."
Pairing McCormick's global expertise, particularly that of its research and product development teams, with leading AI research helped McCormick accelerate the speed of flavor innovation by up to three times and deliver highly effective, consumer-preferred formulas.
Through the ONE platform as well as several other projects in the pipeline, McCormick's product developers are now using AI to unlock creativity, access new insights and share data with their peers around the world.
McCormick & Company, Incorporated is a global leader in flavor.
With $5.4 billion in annual sales, the company manufactures, markets and distributes spices, seasoning mixes, condiments and other flavorful products to the entire food industry – retail outlets, food manufacturers and foodservice businesses.
Every day, no matter where or what you eat, you can enjoy food flavored by McCormick.
For more than seven decades, IBM Research has defined the future of information technology with more than 3,000 researchers in 12 labs located across six continents.
Scientists from IBM Research have produced six Nobel Laureates, 10 U.S. National Medals of Technology, five U.S. National Medals of Science, six Turing Awards, 19 inductees in the National Academy of Sciences and 20 inductees into the U.S. National Inventors Hall of Fame.


ikea wood and metal shelf storage units ikea storage shelves wood shelving units unit attractive wooden design inspired storage units ikea ivar bookshelf ikea hackers ivar bookshelf.
ikea wood and metal shelf open shelving were loving open shelving in the kitchen and are definitely down to diy our own all you need are brackets from ikea and the perfect piece ikea kallax vinyl record storage vinyl me please.
ikea wood and metal shelf amazing metal shelf ikea arvasturizm com black bookcase unit from bookshelf uk wall and glass discontinued ikea standing shelves theinnovatorsco breathtaking free standing shelving units metal shelves horizontal short and long ikea wall design.
ikea wood and metal shelf for this project i combined two ikea hyllis galvanized metal shelving units bridging the two units with boards that i stained and notched to fit into the ikea metal bookshelf metal wood bookshelf metal wood book shelf ikea metal bookshelf cabinet storage amazing metal bookcase wood construction stainless steel supports three open shelf ikea metal bookshelf.
ikea wood and metal shelf ikea wood metal shelf lovely storage 45 modern wall storage cabinet ideas smart wall storage remodelaholic wood and metal ikea hack industrial shelf ikea hyllis metal and wood shelf hack for a media center stacy featured on remodelaholic.
ikea wood and metal shelf fjllbo shelf unit ikea this rustic metal and solid wood shelf is perfect for both storing and displaying your things ikea hack rusticindustrial bookcase shine your light for this project i combined two ikea hyllis galvanized metal shelving units bridging the two units with boards that i stained and notched to fit into the.
ikea wood and metal shelf left dot bo 1534 reclaimed railroad wood metal right overstock 13589 laminate mdf metal fjllbo shelf unit ikea fjllbo shelf unit.
ikea wood and metal shelf dvd storage shelf ikea metal bradcarterme amazoncom ikea kallax shelving unit white by ikea kitchen amazoncom ikea kallax shelving unit white by ikea kitchen dining.
ikea wood and metal shelf amazoncom ikea kallax shelving unit white by ikea kitchen dining metal and wood bookcase ikea black bookshelf bookshelf black metal and wood bookcase ikea metal bookcase bookcases ideas metal and wood bookcase with metal bookshelf metal and wood bookcase ikea.
ikea wood and metal shelf picture of ikea grundtal shelf re size diy ikea hack distressed wooden shelves to elevate your home diy ikea hack distressed wooden shelves sugar cloth diy houston blogger.
ikea wood and metal shelf metal and wood bookcase ikea metal bookcase bookcases ideas metal and wood bookcase with metal bookshelf metal and wood bookcase ikea ikea hack rusticindustrial bookcase shine your light wood and metal bookshelves made with ikea utility shelves and stained wood boards.
ikea wood and metal shelf ikea wood bookcase solid wood shelf tall wooden bookshelf medium size of skinny winsome narrow shelving best metal bookshelf ikea storage decor jennifer home blog metal bookshelf ikea vittsj.
ikea wood and metal shelf metal shelves ikea bookshelf captivating metal bookshelf wall shelves black metal bookshelf with brown wood and metal shelves ikea fjllbo shelf unit ikea fjllbo shelf unit.
ikea wood and metal shelf greatest ikea hacks ikea metal shelves bookshelf wood and hack industrial shelf uk ikea metal shelves stainless steel shelf cm discontinued ikea metal shelves.
ikea wood and metal shelf white metal bookshelf metal bookcase white metal bookshelf medium size metal and wood bookcase metal bookcase white metal bookshelf fjllbo shelf unit ikea fjllbo shelf unit.
ikea wood and metal shelf ikea storage ikea farmhouse furniture metal shelves shelving units collection bookshelves bookshelf images shelf unit stylish metal bookcase home office ikea frame bookshelf metal frame bookcase also white bookshelf plus large size of with and wood ikea.
ikea wood and metal shelf stainless steel shelf metal wall stylish shelving mounted ikea kitchen shel kitchen rack metal shelves on shelf stainless steel ikea ikea hack wood and metal bookshelf diy pinterest ikea ikea not too long ago i was in search of a bookcase for the empty corner in our dining room we needed a place for our phone charger and some other storage.
ikea wood and metal shelf wood and metal bookshelves made with ikea utility shelves and stained wood boards metal shelves ikea bathroom metal shelves bathroom decor trends metal shelves ikea bookshelf captivating metal bookshelf wall shelves black metal bookshelf with brown wood and metal shelves ikea.
ikea wood and metal shelf wood metal bookshelfstep 2 ikea standing shelves theinnovatorsco breathtaking free standing shelving units metal shelves horizontal short and long ikea wall design.
ikea wood and metal shelf storage ikea hack rusticindustrial bookcase shine your light wood and metal bookshelves made with ikea utility shelves and stained wood boards.
ikea wood and metal shelf fjllbo shelf unit shelves shelving units ikea ikea shelving units kallax.
ikea wood and metal shelf white metal bookshelf wood and white metal bookshelf white metal bookshelf ikea ikea wood metal shelf lovely storage modern wall storage cabinet ikea wood metal shelf elegant amazon ikea kallax bookcase shelving unit display black.
ikea wood and metal shelf ikea wood metal shelf elegant amazon ikea kallax bookcase shelving unit display black best metal bookshelf ikea storage decor jennifer home blog metal bookshelf ikea vittsj.
ikea wood and metal shelf best ikea hacks and ideas kallax shelf unit and lack table amazoncom ikea kallax shelving unit white by ikea kitchen amazoncom ikea kallax shelving unit white by ikea kitchen dining.
ikea wood and metal shelf white metal bookshelf easy to move ikea bookcase frame bookshel metal bookshelf bookcase and wood ikea white remodelaholic wood and metal ikea hack industrial shelf ikea hyllis metal and wood shelf hack for a media center stacy featured on remodelaholic.
ikea wood and metal shelf ikea hyllis ikea metal shelves bookshelf wood and hack industrial shelf uk ikea metal shelves cool wall shelf full size of kitchen storage containers shelving discontinued ikea metal shelves.
ikea wood and metal shelf amazing metal shelf ikea teammarius org wall mounted garage cabinet uk and glass discontinued floating wire bookcases ikea storage rack metal shelving units with doors free storage.
ikea wood and metal shelf white metal bookshelf wood .
ikea wood and metal shelf slanted shelves ikea metal and wood bookcase metal bookcase metal and wood bookcase black metal bookshelf bookcase with slanted wall shelves ikea t2938 ikea wood bookcase solid wood shelf tall wooden bookshelf medium ikea wood bookcase solid wood shelf tall wooden bookshelf medium size of skinny winsome narrow shelving.
ikea wood and metal shelf bekvm spice rack ikea hack wood and metal bookshelf real happy space wood metal bookshelfstep.
ikea wood and metal shelf rustic diy bookshelf with ikea ekby brackets stair treads and minwax dark walnut stain metal shelves shelving units collection bookshelves bookshelf images metal bookcase bookshelf hack ikea.


Play virus-free Patrician III game, download Free Version here!
By Encore - Play our safe and virus-free Patrician III game download, have fun!
The best-selling, olde-worlde, real-time, city-building simulation is back! The 3rd installment of the classic real-time city-building simulation.
Build cities, manage economies, and battle pirates in the only game of its kind based in the Middle Ages. Grow your small towne into a major trading center wielding tremendous economic power.
Destroy hidden pirate lairs, build new towns, and establish new trade routes as you expand your empire. Amass great wealth: Astutely trade the surplus from one region to those in need and reap tremendous profits!
8-player multiplayer via Lan or Internet.
If you're looking for cheats or tips, check our Cheats section to see if there are any available. Click the following link to be taken to the Patrician III cheats page.
If you happen to have some hints or tricks for Patrician III, feel free to submit them and they will be published at the above mentioned page. Please click the following link to be taken to the cheats submission form.


text:
Blueprint has connected Buffalo Rising Megaways to the Jackpot
King jackpot One of Blueprint's most sought-after pokies, Buffalo Rising Megaways, has received an update. The developer has added the pokie to the Jackpot King series, and punters will now have the opportunity to enter through the pokie into a bonus round that is capable of giving out multi-million dollar jackpots. According to the company, Buffalo Rising Megaways is ranked number one in popularity outside of the U.K. And globally, it ranked sixth in Blueprint Gaming's collection of pokies as of July 2020.
The company's marketing director, Jo Purvis, noted: On this topic, Big pokie Wins. A week of luck and a win of almost 80,000 euros The original pokie with cascading reels and a classic theme proved very popular with a variety of punters. We expect that the latest Jackpot King version will resonate with new audiences, as well as a number of other existing pokies that now offer this progressive jackpot. Jackpot King is a local progressive jackpot, meaning each Blueprint casino will have a different value.
The accumulation comes from betting on any pokies in this series. In an interview, Jo Purvis said that originally only one accumulative prize was intended. But in the subsequent Deluxe version, they began offering three prize amounts, two of which (Royal and Regal) are guaranteed and are tapped until they reach £3,500 and £35,000, respectively. Currently, in addition to Buffalo Rising Megaways, the series includes King Kong Cash, Deal or No Deal Lightning Spins, Fishing Frenzy, The Goonies, Mars Attacks!, Ted and several other pokies.
Pokie machine review 3 Devils Pinball
Review of the pokie machine A Tale of Elves


text:
The 7 worst things about NBC's "Peter Pan Live!"
Nearly two days later, we still can't quite believe what we just saw
Check out this article! https://www.salon.com/2014/12/06/the_7_worst_things_about_nbcs_peter_pan_live_partner/
Ej Dickson
December 6, 2014 8:00PM (UTC)
This article originally appeared on The Daily Dot.
So Peter Pan Live!, starring Allison Williams as the titular boy-girl man-baby and Christopher Walken as nemesis Captain Hook, debuted on NBC last night, and it was...marginally better than predicted! First, the good parts: Walken made for a delightfully debonair Hook, Allison Williams hit the notes she wanted to hit at least 80 percent of the time, and no one fell out of their harnesses during "I'm Flying." Overall, if we compared live NBC musicals to Britney Spears albums, and last year's dismal Sound of Music Live! was a Britney Jean-level flop, than Peter Pan Live! was about on par with In the Zone.
That said, we'd be remiss if we didn't point out thatPeter Pan Live! had some major issues. As a lifelong diehard musical theater fan who played Captain Hook in her fifth-grade school production (seriously, see photo), I feel uniquely qualified to point out all of them. Below, we list seven ways NBC could've made Peter Pan Live!better—and what the network can do next time to pull off a Britney-sized hit.
1) Cast someone who can actually pull off the role of Peter Pan.
I've gone on record in this publication saying I'm not a huge fan of Allison Williams, nor am I a fan of Marnie Michaels, the simpering millennial she plays on Girls.When NBC announced earlier this year that Williams would be playing Peter Pan, I was skeptical that she'd be able to pull it off: Mary Martin's performance in the 1960 televised production are some big tights to fill, and while Williams has a nice mezzo-soprano voice, it's far too reedy and thin to match up to Martin's trademark belt.
As it turned out, I was (about 75 percent) right: While Williams certainly didn't hit her notes with the same aplomb that Martin did in the 1960 televised version, at least she could hit them, which you couldn't say for poor Christopher Walken. (Anyone else catch that squeaky fart thing his voice did at the end of his tarantella?) And she certainly looked great in her steampunk-meets-American Apparel Neverland costume.
The problem was that Williams simply doesn't have the charisma to pull off the Boy Who Never Grew Up. She looked nice, and sounded nice, but as the A.V. Club's Caroline Siede put it, "Williams feels like the girl who got every lead role in high school but couldn't quite compete with stronger performers in college. She's not bad, but she lacks the right impulsive, impish energy for Peter Pan." Someone with more firecracker energy, like an Anna Kendrick or an Ellen Page, would've made for a much stronger Peter.
2) Replace your costume designer.
If you started watching Peter Pan during the Native American musical numbers (more on that later), and you had the sound off, you probably would've thought you were watching a Navajo-themed Ariana Grandemusic video. (I, for one, have never seen Native peoples pull off crop tops and sparkly hot pants.) Same goes for if you started tuning into a Lost Boys-centric number, in which case you likely would've thought you were watching a gay softcore porn set in a British boarding school. At no point did the costumes reflect the actual setting of Peter Pan, which is supposed to be early 20th century Victorian England.
While that's fine in itself, at least aim for some consistency so you don't distract me with the Lost Boys' prep-school boy shorts and give me the lady equivalent of a tent in my pants.
3) Don't make everyone try a British accent.
Most everyone in the cast at least attempted a British accent last night, and while no one came close to pulling a Van Dyke, it's fair to say that some of the linguistic efforts were noticeably better than others. Case in point: Williams pronouncing "girls" as "gulls," which I can only imagine was part of some bizarre cross-promotional deal between her own TV show on HBO and a seabird advocacy organization.
4) Replace or cut out the "Ugg-A-Wugg/True Blood Brothers" number.
When NBC announced it would be staging Peter Panearlier this year, the first thing everyone wondered, apart from wondering whether or not Brian Williams would make an impromptu cameo as Smee, is what the network would do with the controversial "Ugg-A-Wugg" number, featuring Tiger Lily and her band of "Indians." If you've never seen Peter Pan, and you don't know why "Ugg-A-Wugg" is controversial, allow us to direct your attention to the 1960 version of the number, featuring the flaxen-haired, very, very WASP-y looking Sondra Lee as the Native American Tiger Lily:
"Ugg-A-Wugg-A Meatball, indeed."
Fortunately, following the uproar over the equally Caucasian Rooney Mara being cast as Tiger Lily in the upcoming film Pan, NBC decided to get ahead of any accusations of cultural appropriation by making two very smart moves: 1) They cast a real Native American woman, 22-year-old Alanna Saunders, as Tiger Lily, and 2) They rewrote the lyrics to "Ugg-A-Wugg" to make them sound less like a white person's attempt at Native American gibberish, replacing them with nursery rhymes and renaming the song "True Blood Brothers."
So did NBC succeed at avoiding the political incorrectness trap? Well, judge for yourself:
The trouble is that no matter what you do to Tiger Lily and the "Ugg-A-Wugg" number, it's still a song about Native peoples celebrating Peter Pan, their white male savior; replacing the "gibberish" Native American lyrics with equally gibberish nursery rhymes doesn't necessarily make it any better. And because the number itself really isn't that integral to the narrative or even very good to begin with, the smart choice would've been for NBC producers to cut it (as they did with the operatic "Mysterious Lady," presumably due to Williams' vocal limitations) or replace it with a new, equally rousing, more politically correct number.
5) Don't just ignore the sexual tensions in the show: Celebrate them.
Although Peter Pan is essentially a children's musical, there's a lot of weird sex stuff in the show. There's the overt sexual tension between Peter Pan and Wendy (played by the excellent Taylor Louderman), made homoerotic by the fact that Peter is played by a woman in drag. (The Wendy/Peter dynamic, compounded with Williams' butch haircut and tight tights, caused many heterosexual female viewers to question their sexuality, if my Twitter feed last night was any indication.) There's also the added element of Oedipal attraction in the Lost Boys' attraction to Wendy as a "mother," which is complicated even further when the pirates, who are obviously totally gay for each other, want to kidnap Wendy to make her their mother.
This undercurrent of sexual tension and characters with non-normative sexual identities are evident in the book for Peter Pan and the 1960 TV production, but they were really brought to the forefront in this production, with Peter fighting off the advances of multiple women and, in one scene, exchanging a "thimble," or a kiss, with Wendy. Still, they just sort of lingered there awkwardly, leaving the viewer "not quite prepared for the show's other endlessly odd innuendos," as Willa Paskin put it in her Slate review of Pan.
But if the innuendos are already written into the show, I say go big or go home, NBC. Make Hook even more deliciously campy, and the Lost Boys even more twinky and muscular; hell, stage the Wendy/Peter scenes like a PG musical theater version of the Nomi Malone/Cristal Connors showdown in Showgirls. It's 2014. No one has any illusions anymore about what men like the Lost Boys do when they shower together, NBC.
6) The duel. Oh, boy. The duel.
7) Pick a better show.
Let's be real: Peter Pan is not the best musical in the world. While it's great for parents to turn on when they're busy, so they can plop their kids in front of it and watch them zonk out for a few hours, the pacing is slow, the score subpar and poorly edited—I know we all love Christopher Walken, but do we really need at least three musical numbers for Captain Hook and his band of pirates?—and the libretto full of stodgy, regressive ideas about women and gender. Considered as a whole, I'd take a good production of Guys and Dolls, The Music Man, South Pacific or even Grease over Peter Pan any day.
Even in light of the success of shows like Glee, musicals still get a pretty bad rap. For every person who can sing all the words to the original soundtrack of Les Mis, you'll find someone who complains about its artifice and cheesiness and bombast and come on, why do they even have to sing all their feelings in the first place? To me,Peter Pan has nostalgia appeal, but it also encapsulates many of the things people hate about musical theater: It's overly earnest, retrograde, and not even very good.
As someone who is passionate about musical theater in a way that I am not passionate about anything else in my life, I commend NBC for taking a chance on the old-fashioned, big-budget live stage production and making it a holiday tradition like none other. Even if most of us are tuning in to "hate-watch," investing so much money in revitalizing an art form that pretty much everyone hates is a big risk, and a brave one.
But if NBC truly wants to revitalize the American musical, they should avoid playing it safe and pandering to their audience by sacrificing quality productions for nostalgia and big-name stars. They should stage better shows, and they should cast better performers to helm them. They should put some faith in their viewers and trust that they don't have to lure them in with splashy A-list names, social media campaigns, and "hate-watching" appeal; there's nothing more exciting in the world than watching live theater, and that alone is more than enough to bring the viewers in. All NBC needs is a little faith and fairy dust.
MORE FROM Ej Dickson
Allison Williams Brian Williams Brittney Spears Peter Pan The Daily Dot Video


The UK Environmental Protection Act imposes very strict controls on paint and other coating systems. These include the reduction and eventual elimination of volatile organic compounds (VOCs); the elimination of offensive odours; and much tighter controls on waste disposal. Ecopaint is a revolutionary new water-based paint with very low levels of organic solvent, greatly reduced odours and can be recycled and reused. Overspray can be reused using ultrafiltration methods, ensuring 100 per cent paint utilization and the elimination of paint waste. This system represents a fundamental advance in industrial painting processes. It provides an entirely new concept for the coating industry and is suitable for a wide range of applications, pointing the way forward in the UK to cost-effective and environmentally-acceptable painting systems.


text:
History Lecture | "Harlem in Germany": Race, Migration, and the American Analogy in the Federal Republic
« Arts + Lit Lab | Microcinema Exchange: Inland Cinema
Madison Public Library | Music & Lyrics: True Stories of an Underground Scene »
"'Harlem in Germany': Race, Migration, and the American Analogy in the Federal Republic" with Lauren Stokes
As West Germans discussed "difference" after 1945, they sought out a self-consciously "Western" and liberal way to discuss difference. The talk examines different examples of how US social science on race shaped policies on migration in West Germany, including how invoking "Harlem" as a racialized space shaped urban housing policy for migrants in Germany, and how a theory of child development borrowed from US social science was used to justify new restrictions on child migration.
About the Speaker: Lauren Stokes (Ph.D., University of Chicago, 2016) is a historian of modern Germany, with a particular focus on migration and race in German history. Her first book, Fear of the Family: Guest Workers and Family Migration in the Federal Republic of Germany, examines the way that the "family member" functioned as a specific category within the West German migration regime. While postwar German history has often been written as a history of the reconstruction of the German family, the experience of migrant families in the same time period makes it clear that there were significant limits to the state's purported family values. Family migration offers particular insight into changing ideas not just about the role of the "family," but about gender, race, and the welfare state.
Stokes is also working on future research projects about the history of racial profiling in Europe, the history of airports since the 1970s, and the history of bisexuality as a category. Their work has been funded by organizations including the Alice Kaplan Institute at Northwestern, the Alexander von Humboldt Foundation, the Fulbright Foundation, and the Council on European Studies.
https://creeca.wisc.edu/event/creeca-lecture-fear-of-the-family-guest-workers-and-family-migration-in-the-federal-republic-of-germany-with-lauren-stokes/
CREECA at UW-Madison
UW Center for German & European Studies (CGES)
Ingraham Hall, Room 206
1155 Observatory Dr.


Norfolk, Nebraska has an average rainfall each month of 2.2 inches which means that homes in this area could easily develop basement moisture issues due to leakage. Foundation problems resulting from excess water buildup are also a possibility. Fortunately, Jerry's Waterproofing offers several different services to help you return your home to its normal state, keeping your family healthy and safe for years down the road.
Look around your home and look for some of the signs of foundation settlement.
To level a foundation that has started to sink into the ground, we install helical piers or steel push piers. Helical piers screw into the ground under your foundation to add extra stability. Steel piers are driven into the ground and work in the same way to add support and lift the foundation. Shifting foundations are usually repaired using helical tiebacks or wall plate anchors, which are installed through the basement wall to reposition the foundation and to reduce soil pressure from outside.
Basement flooding is another common issue. If this happens in your home, it is important to have it taken care of right away. Sometimes, the signs of a wet basement are obvious, while other times they are much more subtle. Musty odors, rusty appliances, wood rot, and mold growth are some of the less commonly known symptoms of a basement leakage problem.
We offer interior waterproofing and sump pump systems to remove water from wet basements. We also provide exterior waterproofing and surface drainage options to help prevent future water problems in your home.
Crawl Space Repair: To seal moisture out of the crawl space and prevent vapor diffusion through the concrete, we use crawl space vapor barriers.
Radon Mitigation: We offer radon testing and mitigation to reduce high levels of radon.
Egress Window Installation: We install high-quality egress window well systems to make sure your family can escape from your basement in the event of a fire or emergency situation.
Our quality workmanship, dedication to the job, and top-notch products from Earth Contact Products (ECP) allow us to make sure your home is safe and sturdy. Call our expert team today for a free estimate in the Norfolk, NE area.


"A Run-By Fruiting" (#57) – . . . real nobody . . .
The late, great Robin Williams played many iconic characters in the 90s, including Aladdin's Genie sidekick and a grownup Peter Pan. But nothing showed off his talents for manic physical comedy and rapid-fire zingers quite like 1993's family comedy Mrs. Doubtfire. It may just be his signature role — at least, for kids who grew up in the 90s.
We also discuss the thin line between acceptable Movie Dad behavior and criminal offense, depictions of divorce in 90s movies, and ponder the broader question of whether gender-bending comedy still works in the more enlightened, less binary 21st century. So pad that bra and tuck accordingly — before Child Protective Services removes this podcast from your custody.
Cross-dressing in entertainment has been around about as long as entertainment itself. It was the norm in ancient Greek theater, and later, more famously, in performances of Shakespeare. Male actors played female roles — because God forbid women should act — and, in plays like As You Like It and Twelfth Night, Shakespeare often had his males dress as women for comedic effect.
The tradition carried on in cinema, in early works like 1915's Charlie Chaplin comedy A Woman, and 1947's Boy! What A Girl!, but the gold standard is definitely 1959's Some Like It Hot, directed by Billy Wilder, starring Jack Lemmon, Tony Randall, and Marilyn Monroe. Despite mixed reviews, it was nominated for 6 Oscars, including Best Director and Adapted Screenplay, and won one for Best Costume Design. It's now considered one of the best screen comedies of all time.
The 1980 Tom Hanks sitcom Bosom Buddies is not. Perhaps that's because the show's creators didn't really want to put the male leads in drag — but that was mandated by the network. It only lasted for two seasons.
But 1982's Tootsie righted Bosom Buddies' wrongs, grossing $177.2 million in the U.S. and nabbing 9 Oscar nominations, winning for Jessica Lange's phenomenal turn as Dorothy's unwitting love interest. Dustin Hoffman is pretty incredible — and pretty believable — as a downtrodden actor who dons drag to play a no-nonsense hospital administrator on a soap opera.
Directed by Sydney Pollack, and co-starring Teri Garr, Bill Murray, and Geena Davis, Tootsie is remarkably fresh in 2019, with a surprising dearth of low blows that demean women or emasculate the protagonist. Hoffman's Michael Dorsey is fully committed to his role, and not self-conscious about the lengths he goes to to nail a great part. Like Some Like It Hot, Tootsie is not just ahead of its time. In many way, it's ahead of our time.
Which brings us to Euphegenia Doubtfire, the tough love nanny invented by Robin Williams' Daniel Hillard in Mrs. Doubtfire. By 1993, this trope was starting to show a few signs of gay panic, as Daniel has to explain to his disturbed son that he doesn't "like" dressing like a woman. (The psychological damage done to these children deserves to be examined, but the gender-bending should be the least of their problems.) Overall, Mrs. Doubtfire remains the ideal showcase for Williams' talents, with laughs and heart in equal measure.
Mrs. Doubtfire is the top-grossing cross-dressing comedy of all time, and the last one that remains in good standing. Afterward, we got Big Momma's House (2000), Sorority Boys (2002), White Chicks (2004), and then a last gasp in ABC's Work It (2012), canceled almost as soon as it aired. (Talk about about diminishing returns.) This kind of comedy is dormant, if not completely dead, on the screen — it's hard to imagine how this premise could be tackled in a way that didn't spawn outrage.
But the man dressed as a fat lady has not yet sung — Some Like It Hot, Tootsie, and Mrs. Doubtfire are all set for revivals as stage musicals in the near future. Let's hope they don't end up being more problematic than the decades-old source material, which holds up pretty well in 2019.


Iran's interior minister Mostafa Mohammad Najjar has revealed some details of the upcoming presidential and local council elections, IRIB News reported.
"92 polling stations and 70,000 branches will be established for the elections," Najjar said, speaking both about the presidential and local council elections.
The eleventh election of the President of Iran is scheduled to be held on 14 June 2013 to elect the seventh President, successor of Mahmoud Ahmadinejad, who is barred from standing for a third term. The elections will take place on the same day as local council elections.
The minister noted that the overall number of polling branches has increased by 20,000 compared to previous years, adding that nearly a million of people are listed as candidates for the council elections this year.
"On April 15 the registration for the City and Village Councils will begin, while the presidential elections' registration date has been set for May 7," Najjar added.
He also underscored that Iran created a comprehensive system of holding the registration process, and there are no problems.


text:
Page: OSDB - Chris Flexen - Seattle Mariners
Chris Flexen
July 1, 1994 (27)
Newark, CA, USA
2021-2022 Seattle Mariners $4,750,000 $4,750,000
2020-2020 New York Mets $555,000 $555,000
Seattle Mariners P.O. Box 4100 Seattle, WA 98194-0100 USA
Chris Flexen was born on July 1, 1994, in Newark, California. He is a pitcher in the MLB.
Flexen attended Newark Memorial High School in Newark, California where he was the quarterback of the school's football team and made the varsity baseball team as a freshman. His outstanding ability in two sports led to him earning his nickname Chris "Flex" Flexen. Flexen initially committed to play college ba...
Flexen attended Newark Memorial High School in Newark, California where he was the quarterback of the school's football team and made the varsity baseball team a...
Born: 1994-07-01 (Age: 27) Newark, CA, USA
High School: Memorial (CA)
MLB Debut: July 27, 2017
Flexen attended Newark Memorial High School in Newark, California where he was the quarterback of the school's football team and made the varsity baseball team as a freshman. His outstanding ability in two sports led to him earning his nickname Chris "Flex" Flexen. Flexen initially committed to play college baseball for the Arizona State Sun Devils but was drafted in the 14th round of the 2012 Major League Baseball draft by the New York Mets and was lured away from his commitment by a $375,000 signing bonus.
Flexen made his MLB debut on July 27, 2017, against the San Diego Padres at Petco Park.
On December 9, 2020, Flexen signed a two-year, $4.75MM contract with the Seattle Mariners.


Stream some movies you probably haven't seen yet.
Horror Noire is amazing but also left me wanting a much longer cut or a miniseries. In a world where we have a (great) documentary for the Friday the 13th series that clocks in at almost 7 hours, it would have been nice if the entire history of Black Horror could have been given more than 83 mins. Maybe we'll get a part 2 at some point.


text:
Płastkowo  () is a village in the administrative district of Gmina Kamień Pomorski, within Kamień County, West Pomeranian Voivodeship, in north-western Poland.

For the history of the region, see History of Pomerania.

References

Villages in Kamień County


Students plan for and engage in a 5-10 day wilderness field program each month. Field programs include river running, horse packing, backpacking, sea kayaking, surfing, rock climbing, canyoneering, mountain biking, and foreign travel.
Once a year, Link students embark on a month-long major expedition to a foreign country (Peru 2008/2009 and 2013/20214; Mexico 2009/2010 and 2012/2013; Spain/Turkey 2010/2011; Patagonia, Chile 2011/2012; Guatemala 2014/2015; Ecuador 2015/2016; Baja 2016/2017, Peru 2017/2018, Columbia 2018/2019). These trips include language study, a field laboratory for academics and backcountry adventure components.
The purpose of each field program is to help students learn planning and organizational skills, develop leadership and responsibility, be challenged physically, put their spiritual beliefs into "in the world" practice, provide good fodder for quality writing and photography, and to be immersed in a dynamic natural sciences environment. The adventure component of The Link School is accredited through the Association for Experiential Education (www.aee.org).
Please see News & Photo Gallery for expedition pictures and blogs on recent field programs.


In a world of courts and mercenaries, Andalia has chosen to belong to the latter, placing her trust in her skills and the company she keeps.
But when the line between royals and killers begins to blur, when the carefully crafted veils of the world start to recede, the danger grows beyond what her blades can handle.
Fighting the shackles of this new life, Andalia discovers an unlikely ally.
A young prince, walking on a knife-edge between salvation and talons of darkness, wishing to rip his kingdom apart.
Well written and the characters were good. I enjoyed reading this series.


The performer shows a paper bag to be completely empty. All the sides of the bag are displayed fairly and the audience is convinced that there could not be anything hidden in it. Yet six solid dice are produced from it! If the performer wished, he may show the bag empty at any time during the productions. The performer ends up clean with six solid dice on his table and an empty bag. The stack of dice is much bigger that the bag and it is impossible to put them back in it.


text:
Home / Legal News / Court reverses judgement in breach-of-contract case between construction cos.
Court reverses judgement in breach-of-contract case between construction cos.
The Wisconsin District 3 Court of Appeals on Wednesday reversed a judgment in a breach-of-contract case involving United Concrete and Construction Inc., Appleton, and its concrete subcontractor, Red-D-Mix Concrete Inc., Green Bay.
A Circuit Court in 2009 ruled in favor of Red-D-Mix after United sued it for breach of contract, negligence and unfair trade practices. Red-D-Mix supplied United's concrete in 2002 and 2003. United then switched to a different concrete supplier after complaints of excessive water in Red-D-Mix's concrete.
In early 2007, United wanted to use Red-D-Mix again but not without assurances that the bleed water problem had been remedied. Red-D-Mix said it had addressed the problem and was using the same materials as United's interim supplier at the time.
United resumed purchasing concrete from Red-D-Mix for the 2007 season and experienced the same excessive water issues, according to court documents. After customer complaints, United advised Red-D-Mix that the problems resulted from defective concrete and that it intended to take legal action against subcontractor.
United filed suit against Red-D-Mix, alleging breach of contract, breach of express and implied warranties, negligence, indemnification, contribution and unfair trade practices. The court ruled in Red-D-Mix's favor.
United appealed the ruling and the appeals court on Wednesday ruled in favor of the Appleton-based company.
3:18 pm Wed, June 13, 2012 Wisconsin Law Journal - WI Legal News & Resources
Joe Yovino, [email protected]


text:
function addRastersToFigure(spikeBinary,figID)

    for tt = 1:size(spikeBinary,1) %for trials
        spTimes = find(spikeBinary(tt,:));
        if isempty(spTimes)
        yUp = []; yDown = [];
        else
        yUp = (tt - 0.2) .* ones(size(spTimes)); yDown = (tt - 0.8) .* ones(size(spTimes));
        end
        addLineToAxis(spTimes, yUp,['top',num2str(tt)],figID,'k','none','.')
        addLineToAxis(spTimes, yDown,['bottom',num2str(tt)],figID,'k','none','none')
    end

end