text:
Tucson 2015 NYTSJI Menu
Native Tribe Fights Diabetes by Educating Schools on Traditional Foods
By Yessenia Funes May 27, 2015 3:56 PM
yessfunFacebook
Photographs by SAIYNA BASHIR
Santa Rosa Day School in Tohono O'odham Nation introduced traditional healthy foods, such as white tepary beans, into school lunches because the tribe has the highest rate of diabetes in the world. The food in the school cafeteria is delivered by Tohono O'odham Community Action program.SAIYNA BASHIR/NYT INSTITUTE
Dominic and Denevia Francisco, 9-year-old twins at Santa Rosa Day School, scoped the offerings at the special school event this week: traditional Native American tepary beans, corn on the cob and watermelon.
Dominic gave his corn to a cousin. Neither ate the beans. "It tastes nasty," Denevia said.
The siblings are members of the Tohono O'odham Nation, whose people span southwestern Arizona and parts of northern Mexico, a tribe that is believed to have one of the highest rates of Type 2 diabetes in the world. A non-profit organization on the reservation has launched an ambitious plan to reverse the dangerous health trends by getting the Tohono people back to eating traditional diets at a younger age.
Judging by a recent event at the school to celebrate a new garden where traditional foods will be grown, it will be an uphill battle.
"Most of the kids around here, all they eat is chips, soda, candy and junk food," said Brittany Gonzales, an intern at Tohono O'odham Community Action, the non-profit organization that works with the children. "They don't realize in the long run how it's really going to mess them up when they're older."
Brittany Gonzales, right, an intern at Tohono O'odham Community Action, educated parents about a garden at Indian Oasis Elementary School that was planted to teach students about healthier foods. SAIYNA BASHIR/NYT INSTITUTE
Nineteen percent of the tribe has Type 2 diabetes, compared to 9.3 percent of the general population, said Jennie Becenti, executive director of the tribe's Department of Health and Human Services.
In the 1920s, the Tohono O'odham people produced 20,000 acres of food, according to a 2002 study by Tohono O'odham Community Action, also known as TOCA, Tohono O'odham Community College and the University of California-Davis.
Now, they produce fewer than 25 acres. Along with the loss of their crops, which their metabolisms had adapted to, the introduction of Western lifestyles, such as processed foods high in sugar and fat, exacerbated diabetes rates throughout the reservation.
American Indians and Alaska Natives are 2.3 times more likely to be diagnosed with diabetes than non-Hispanic whites, according to the Centers for Disease Control and Prevention. But two research studies showed that consuming traditional foods helped lower diabetes rates in other tribes, according to the American Indian Culture and Research Journal in 2014.
In 2008, the C.D.C. gave 17 tribes, including the Tohono O'odham, $100,000 a year for five years to restore local, traditional foods and encourage physical activity.
Tribes in Arizona and Wisconsin are farming to improve food choices, and an Alaskan tribe is fishing.
TOCA, the Tohono's top civic organization, teaches students at Santa Rosa Day School and others on the reservation how to identify and harvest the wild foods in hopes that connecting them back to their roots will prevent diabetes.
Arnoldine Smith, TOCA's food services development coordinator, has been focused on Santa Rosa's school lunch program. Ms. Smith meets with the cafeteria staff at least twice a week to talk about including healthier and traditional foods and teach recipes. "I love to be in the kitchen," she said.
While a typical school meal last year was pepperoni pizza or chicken nuggets, a traditional lunch could be a prickly pear-glazed chicken wrap with tepary bean hummus and a side of corn chips. Young eaters can be hard to please, she has found, so Ms. Smith has been developing a more kid-friendly menu.
The ultimate goal is for TOCA's farm to become Santa Rosa Day School's only food supplier.
Although they are discouraging the students from eating junk food, it has been hard to break certain habits. SAIYNA BASHIR/NYT INSTITUTE
Traditional naturally grown beans like those TOCA provides from its farm have health benefits. White and brown tepary beans are high in protein and help regulate blood sugar levels, while mesquite beans are insulin stabilizers.
Desert people also benefit from eating two tablespoons of dried cholla buds because they have as much calcium as — but fewer calories than — a glass of milk. As for prickly pear fruit, it helps slow down digestion and keep blood sugar levels stable. These superfoods are harvested only in the desert.
Other nearby schools already have functioning gardens and nutrition classes. On a recent meeting for parents, only two people showed up, a typical low turnout, Ms. Gonzales, the intern at TOCA, said.
She pointed out a Twix wrapper rustling in the wind.
Delvina Pablo, 13, still prefers the foods of her grandfather over chips and popsicles.
"Most people need to listen and try new things," Delvina said as she chewed her healthy traditional lunch. "Try something new, and there will be a change."
Here is information on some traditional foods that the Tohono O'odham are bringing into the schools and how they might be incorporated into the menu.
Tepary Beansa.k.a. Bawĭ
Eaten for lunch and dinner, most popularly in a stew that often includes beef short ribs. They have 23 to 30 percent more protein than many other beans.
Cholla Cactus Budsa.k.a. Hanam
Native in the desert, so they might be in the backyard. Comparable to artichoke and asparagus, so used as a side or in salad. Rich in calcium.
Mesquite Beansa.k.a. Wihog
Twice the protein of common legumes. Mesquite flour is used in baked goods, like Desert Rain Café's mesquite oatmeal cookies and mesquite granola.
Prickly Pear Fruita.k.a. I:bhai
No need to cook. Would make a sweet addition to a salad or salsa. Excellent source of water and calcium. Don't eat the skin.
Produced by Yolanda Martinez
This post has been revised to reflect the following correction:
Correction: May 26, 2015
An earlier version of this article misstated the activity of an Arizona tribe and a Wisconsin tribe to improve food choices. They are farming, not fishing and farming.
The New York Times Student Journalism Institute
During the Institute, students are working journalists supervised by reporters and editors from The New York Times. Institute graduates now work at major news organizations including The New York Times, The Los Angeles Times, The Washington Post and dozens of midsize news organizations.
National Association of Hispanic Journalists
National Association of Black Journalists
Tucson 2015 NYTSJI © copyright 2020


"And old Lady Jackson needs her Glasses" the Questions were good too.
I just watched it!! It was so good! Their relationship is obviously so close that it made the whole talk very intimate and enjoyable.
It was a lovely chat!
Someone out there needs to write a good tv show for Lauren... like ASAP. We need her back on tv.
I re-watched the interview again since I had missed the beginning before, and I loved it even more the second time. So funny, and informative.
Looks like a very nice apartment.
Lauren will be on Jill and Kate's Podcast for their next episode! Their Podcast has a really good name..
I really like the appartment as well.
Love that apartment. Wish I could afford it, it's really nice.
Lauren apparently was at an event last night, "Letters Live". I didn't hear anything about it before hand, but saw some pics on social media.
There's some pics on the Getty site here, with the other attendees.
Molly Ringwald was another guest. Mini Townies reunion!
Cool, thanks! I wonder if Lauren and Molly reminisced over Townies.
It sounds like the letter Lauren read was this: "an airline passenger describes her misery at being seated right across from a lavatory in constant use," which sounds amusing.


text:
Home / About Wheaton / Visit Wheaton / Directions and Transportation
Why Wheaton
Statement of Faith and Educational Purpose
Campus Map and Information
Wheaton College main address and phone
Public transportation from Chicago
Take the Metra Union Pacific West Line train from the Ogilvie Transportation Center, located at Madison St. & Canal St., and get off at the College Avenue stop. Walking one block west will put you at the eastern edge of campus.
Getting to Wheaton from the airport
We do not suggest taking public transportation from either airport, as it takes twice as long and involves multiple steps. If you are not able to drive from the airport, we encourage you to contact a ground transportation company for a more direct route instead.
When contacting the companies below, mention that you are a guest of Wheaton College to qualify for any applicable discounts. Wheaton College does not endorse any specific company.
American Taxi: 630.790.8294
West Suburban: 630.668.9600
Driving From O'Hare Airport (about 29 miles)
Approximate travel time: 45-55 minutes
Cars leaving the airport exit to the east. Keep in the right lane to turn south on I-294. Stay on I-294 south some distance to I-88, also called the East-West Tollway. On I-88 go west toward Aurora several miles to the Naperville Road exit. Proceed north on Naperville Road past the Danada Shopping Center at Butterfield Road, and continue on to Roosevelt Road. Turn right (east) at Roosevelt Road and get into the left lane immediately for a quick left turn at Washington Street. A few blocks north on Washington, you'll cross the Chicago & Northwestern railroad tracks and approach the intersection of Washington and College at the southwest corner of campus.
Driving From Midway Airport (about 35 miles)
Approximate travel time: 50 minutes to 1 hour
Leaving the airport, turn north onto Cicero Avenue and proceed to the I-55 South on-ramp. Take I-55 South to I-355 North. Exit I-355 North at the Roosevelt Road exit and turn left (west). Take Roosevelt Road approximately 3 miles to Washington Street and turn right (north). Continue on Washington Street several blocks, cross the railroad tracks, and approach the stop sign at Washington and College on the southwest corner of campus.
Driving From the South
Approaching Chicago from the southwest on I-55, just beyond Bolingbrook, take I-355 north. Exit at Roosevelt Road to the west. Stay on Roosevelt through Glen Ellyn, past President Street, to Washington Street where you'll turn right. A few blocks north you'll cross the Chicago & Northwestern railroad tracks and approach the corner of Washington and College.
Driving From the North
If you are coming from eastern Wisconsin, take I-94 into Illinois. Proceed south on I-94 and follow the signs for I-294 south, past the O'Hare airport. Continue on I-294 to I-88 west. Take I-88 west to 355 North. Exit 355 at Roosevelt Rd west. Stay on Roosevelt through the town of Glen Ellyn; when you get to Wheaton, go past President Street, to Washington Street where you'll turn right (north) and go approximately 8 blocks to campus.
Driving From the Northwest
Approaching Chicago from the northwest on I-90, turn south on I-355 at Schaumburg. A few miles south, exit west on Roosevelt Road. Stay on Roosevelt through Glen Ellyn, past President Street, to Washington Street where you'll turn right (north) several blocks to campus.
Driving From the West
Approaching Chicago from the west on I-88, exit at Winfield Road and go north for about three miles until you reach Roosevelt Road. Turn right at Roosevelt and travel another three miles into the city of Wheaton. Stay in the left lane and when you pass Naperville Rd. be prepared to turn left (north) at the first street on the left, Washington Street. Campus is a few blocks ahead, just two short blocks across the Chicago & Northwestern railroad tracks.
Driving From the East
East-west I-80/90 becomes I-80/94 as you cross from Indiana into Illinois. Continue on I-80 West to I-355 North. Exit I-355 at Roosevelt Road west (which is a left turn at the bottom of the exit ramp). Stay on Roosevelt through the town of Glen Ellyn; when you get to Wheaton, go past President Street to Washington Street where you'll turn right (north) and go approximately 8 blocks to campus.
Parking is available to visitors in a number of locations, including:
Behind the Armerding Center for Music and the Arts, next to the Tennis Courts, accessible by taking Centennial Drive to Kennelworth Ave.
Behind Edman Memorial Chapel and Buswell Memorial Library, accessible from Washington St. and Kennelworth Ave.
Next to Jenks Hall, accessible by taking Howard Street to University Place.
Outside Bean Stadium, accessible from College Ave.
Around the Billy Graham Center, accessible from College Avenue.
For more information about campus and parking, view this map.
Harbor House Street Address
For guests who are lodging at, or attending an event at Harbor House, the College's private guest house, the street address is:
(On the southwest corner of Lincoln Ave. and Washington St.)
Make the Most of Your Visit
If you (or a high-schooler you know) are planning to visit Wheaton, download this free guide to find out how to make the most of your campus visit.
Maximize Your Visit
Campus Information, Lodging, and Maps
Find helpful information for your visit, including campus maps.
Learn More About Campus
Questions to Ask on Your Campus Visit
Here's a free guide to all the questions you should ask to maximize your campus visit.
Question Guide

redpajama_set_name: RedPajamaCommonCrawl


Was on vacation last week, headed to Bozeman for the Kiss show. On the way there we stopped at Neptune's because it was in my Montana Brewery Passport. Not only was the beer good the food was exceptional.
For a brewery this is not your usual burgers and fries, and not that I don't love that stuff because I do. But pictured above are their Wasbi Balls. Way better than a wonton and with a wasbi flavor. Then you see their Bacon Wrapped Deep-Fried Scallop with Cream Cheese. Yes, that is what that little fired guy is. So good, I will continue to dream about them until I can figure out how to make them. Pulled Pork Sliders, these are done right with coleslaw on them. Lived in the south for awhile and coleslaw does go on BBQ, try it, it's just the crunch it needs.
Don't miss this brewery in your MT brewery passport if your headed that way. Make sure your hungry, the service was excellent too.


Baby's essential 5 pieces gift set garments have been designed from super soft bio-washed 100% cotton interlock fabric, best suited for baby's tender skin. The cutting and stitching of the garments have been done keeping utmost comfort of baby and ease for mothers.
5. White terry washcloth tied with ribbon.


text:
"""Support for ragged tensors."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import numpy as np

from tensorflow.python.framework import dtypes
from tensorflow.python.framework import ops
from tensorflow.python.framework import tensor_util
from tensorflow.python.ops import array_ops
from tensorflow.python.ops import check_ops
from tensorflow.python.ops import gen_ragged_math_ops
from tensorflow.python.ops import math_ops
from tensorflow.python.ops.ragged import ragged_functional_ops
from tensorflow.python.ops.ragged import ragged_tensor
from tensorflow.python.ops.ragged import ragged_util
from tensorflow.python.ops.ragged import segment_id_ops
from tensorflow.python.util.tf_export import tf_export

#===============================================================================
# ragged.range
#===============================================================================
# pylint: disable=redefined-builtin
@tf_export('ragged.range')
def range(starts, limits=None, deltas=1, dtype=None,
          name=None, row_splits_dtype=dtypes.int64):
  """Returns a `RaggedTensor` containing the specified sequences of numbers.

  Each row of the returned `RaggedTensor` contains a single sequence:

  ```python
  ragged.range(starts, limits, deltas)[i] ==
      tf.range(starts[i], limits[i], deltas[i])
  ```

  If `start[i] < limits[i] and deltas[i] > 0`, then `output[i]` will be an
  empty list.  Similarly, if `start[i] > limits[i] and deltas[i] < 0`, then
  `output[i]` will be an empty list.  This behavior is consistent with the
  Python `range` function, but differs from the `tf.range` op, which returns
  an error for these cases.

  Examples:

  >>> tf.ragged.range([3, 5, 2]).to_list()
  [[0, 1, 2], [0, 1, 2, 3, 4], [0, 1]]
  >>> tf.ragged.range([0, 5, 8], [3, 3, 12]).to_list()
  [[0, 1, 2], [], [8, 9, 10, 11]]
  >>> tf.ragged.range([0, 5, 8], [3, 3, 12], 2).to_list()
  [[0, 2], [], [8, 10]]

  The input tensors `starts`, `limits`, and `deltas` may be scalars or vectors.
  The vector inputs must all have the same size.  Scalar inputs are broadcast
  to match the size of the vector inputs.

  Args:
    starts: Vector or scalar `Tensor`.  Specifies the first entry for each range
      if `limits` is not `None`; otherwise, specifies the range limits, and the
      first entries default to `0`.
    limits: Vector or scalar `Tensor`.  Specifies the exclusive upper limits for
      each range.
    deltas: Vector or scalar `Tensor`.  Specifies the increment for each range.
      Defaults to `1`.
    dtype: The type of the elements of the resulting tensor.  If not specified,
      then a value is chosen based on the other args.
    name: A name for the operation.
    row_splits_dtype: `dtype` for the returned `RaggedTensor`'s `row_splits`
      tensor.  One of `tf.int32` or `tf.int64`.

  Returns:
    A `RaggedTensor` of type `dtype` with `ragged_rank=1`.
  """
  row_splits_dtype = dtypes.as_dtype(row_splits_dtype)
  if limits is None:
    starts, limits = 0, starts

  with ops.name_scope(name, 'RaggedRange', [starts, limits, deltas]) as name:
    starts = ops.convert_to_tensor(starts, dtype=dtype, name='starts')
    limits = ops.convert_to_tensor(limits, dtype=dtype, name='limits')
    deltas = ops.convert_to_tensor(deltas, dtype=dtype, name='deltas')

    # infer dtype if not explicitly provided
    if dtype is None:
      starts, limits, deltas = _infer_matching_dtype(
          [starts, limits, deltas],
          [dtypes.int32, dtypes.int64, dtypes.float32, dtypes.float64])

    result = gen_ragged_math_ops.ragged_range(
        starts, limits, deltas, Tsplits=row_splits_dtype, name=name)
    return ragged_tensor.RaggedTensor.from_row_splits(result.rt_dense_values,
                                                      result.rt_nested_splits,
                                                      validate=False)

def _infer_matching_dtype(tensors, dtype_hierarchy):
  """Infers a matching dtype for tensors, and casts them to that dtype."""
  assert all(t.dtype in dtype_hierarchy for t in tensors)
  inferred_dtype = max([t.dtype for t in tensors], key=dtype_hierarchy.index)
  return [math_ops.cast(t, inferred_dtype) for t in tensors]

ops.no_gradient('RaggedRange')

#===============================================================================
# ragged_segment_<AGGREGATE>
#===============================================================================

# Docstring template used for the raggged_segment_<AGGREGATE> ops.
_RAGGED_SEGMENT_DOCSTRING = """\
Computes the %(combination)s along segments of a RaggedTensor.

  Returns a RaggedTensor `output` with `num_segments` rows, where the row
  `output[i]` is formed by taking the %(combination)s of all rows of `data`
  whose corresponding `segment_id` is `i`.

  The length of the row `output[i]` will be the maximum of the lengths of
  all rows of `data` whose corresponding `segment_id` is `i`.  If no `data`
  rows correspond to a given segment ID, then the output row for that segment
  ID will be empty.

  Args:
    data: A `RaggedTensor` containing the values to combine.
    segment_ids: A `Tensor` or `RaggedTensor`.  Must have type `int64` or
      `int32`.  `segment_ids.shape` must be a prefix of `data.shape`.
      Must be greater than or equal to zero, and less than `num_segments`.
      `segment_ids` is not required to be sorted.
    num_segments: An `int32` or `int64` scalar specifying the number of
      distinct segment ids.
    name: A name prefix for the returned tensor (optional).
  Returns:
    A `RaggedTensor` containing the %(combined)s values.  The returned tensor
    has the same dtype as `data`, and its shape is
    `[num_segments] + data.shape[segment_ids.rank:]`.
  Raises:
    ValueError: If `segment_ids.shape` is not a prefix of `data.shape`.
"""

def _ragged_segment_aggregate(unsorted_segment_op,
                              data,
                              segment_ids,
                              num_segments,
                              separator=None,
                              name=None):
  """Aggregates along segments of a RaggedTensor using `unsorted_segment_op`.

  Returns a RaggedTensor `output` with `num_segments` rows, where the row
  `output[i]` is formed by combining all rows of `data` whose corresponding
  `segment_id` is `i`.  The values in each row are combined using
  `unsorted_segment_op`.

  The length of the row `output[i]` will be the maximum of the lengths of
  all rows of `data` whose corresponding `segment_id` is `i`.  If no `data`
  rows correspond to a given segment ID, then the output row for that segment
  ID will be empty.

  Args:
    unsorted_segment_op: The tensorflow `op` that should be used to combine
      values in each row.  Must have the same signature and basic behavior as
      `unsorted_segment_sum`, `unsorted_segment_max`, etc.
    data: A `RaggedTensor` containing the values to be combined.
    segment_ids: A `Tensor` or `RaggedTensor`.  Must have type `int64` or
      `int32`.  `segment_ids.shape` must be a prefix of `data.shape`.
      `segment_ids` is not required to be sorted.
    num_segments: An `int32` or `int64` scalar.
    separator: An optional string. Defaults to None. The separator to
      use when joining. Only used for string types.
    name: A name prefix for the returned tensor (optional).

  Returns:
    A `RaggedTensor` containing the aggregated values.  The returned tensor
    has the same dtype as `data`, and its shape is
    `[num_segments] + data.shape[segment_ids.rank:]`.
  Raises:
    ValueError: If segment_ids.shape is not a prefix of data.shape.
  """
  if not (ragged_tensor.is_ragged(data) or
          ragged_tensor.is_ragged(segment_ids)):
    if separator is not None:
      # It uses unsorted_segment_join.
      return unsorted_segment_op(data, segment_ids, num_segments, separator,
                                 name)
    else:
      return unsorted_segment_op(data, segment_ids, num_segments, name)

  with ops.name_scope(name, 'RaggedSegment',
                      [data, segment_ids, num_segments]) as name:
    data = ragged_tensor.convert_to_tensor_or_ragged_tensor(data, name='data')
    segment_ids = ragged_tensor.convert_to_tensor_or_ragged_tensor(
        segment_ids, name='segment_ids')
    data, segment_ids = ragged_tensor.match_row_splits_dtypes(data, segment_ids)
    if segment_ids.dtype not in (dtypes.int32, dtypes.int64):
      raise ValueError('segment_ids must have dtype int32 or int64.')

    if ragged_tensor.is_ragged(segment_ids):
      if not ragged_tensor.is_ragged(data):
        raise ValueError('segment_ids.shape must be a prefix of data.shape, '
                         'but segment_ids is ragged and data is not.')
      check_splits = check_ops.assert_equal(
          segment_ids.row_splits,
          data.row_splits,
          message='segment_ids.shape must be a prefix of data.shape')
      with ops.control_dependencies([check_splits]):
        return _ragged_segment_aggregate(unsorted_segment_op, data.values,
                                         segment_ids.values, num_segments,
                                         separator)

    # Find the length of each row in data.  (shape=[data_nrows])
    data_row_lengths = data.row_splits[1:] - data.row_splits[:-1]

    # Find the length that each output row will have.  The length of the row
    # corresponding to segment `id` is `max(data_row_lengths[i])` where
    # `segment_ids[i]=id`.  (shape=[output_nrows])
    output_row_lengths = math_ops.maximum(
        math_ops.unsorted_segment_max(data_row_lengths, segment_ids,
                                      num_segments), 0)

    # Build the splits tensor for the output RaggedTensor.
    output_splits = array_ops.concat([
        array_ops.zeros([1], output_row_lengths.dtype),
        math_ops.cumsum(output_row_lengths)
    ],
                                     axis=0)

    # For each row in `data`, find the start & limit position where that row's
    # values will be aggregated in output.values.
    data_row_to_out_row_start = array_ops.gather(output_splits, segment_ids)
    data_row_to_out_row_limit = data_row_to_out_row_start + data_row_lengths

    # For each value in `data.values`, find the position where it will
    # aggregated in `output.values`.
    # Get the target output values index for each data values index.
    data_val_to_out_val_index = range(data_row_to_out_row_start,
                                      data_row_to_out_row_limit).values

    # Recursively aggregate the values.
    output_values = _ragged_segment_aggregate(unsorted_segment_op, data.values,
                                              data_val_to_out_val_index,
                                              output_splits[-1], separator)
    return ragged_tensor.RaggedTensor.from_row_splits(
        output_values, output_splits, validate=False)

def segment_sum(data, segment_ids, num_segments, name=None):
  # For docs, see: _RAGGED_SEGMENT_DOCSTRING
  return _ragged_segment_aggregate(math_ops.unsorted_segment_sum,
                                   data=data,
                                   segment_ids=segment_ids,
                                   num_segments=num_segments,
                                   name=(name or'RaggedSegmentSum'))

def segment_prod(data, segment_ids, num_segments, name=None):
  # For docs, see: _RAGGED_SEGMENT_DOCSTRING
  return _ragged_segment_aggregate(math_ops.unsorted_segment_prod,
                                   data=data,
                                   segment_ids=segment_ids,
                                   num_segments=num_segments,
                                   name=(name or 'RaggedSegmentProd'))

def segment_min(data, segment_ids, num_segments, name=None):
  # For docs, see: _RAGGED_SEGMENT_DOCSTRING
  return _ragged_segment_aggregate(math_ops.unsorted_segment_min,
                                   data=data,
                                   segment_ids=segment_ids,
                                   num_segments=num_segments,
                                   name=(name or 'RaggedSegmentMin'))

def segment_max(data, segment_ids, num_segments, name=None):
  # For docs, see: _RAGGED_SEGMENT_DOCSTRING
  return _ragged_segment_aggregate(math_ops.unsorted_segment_max,
                                   data=data,
                                   segment_ids=segment_ids,
                                   num_segments=num_segments,
                                   name=(name or 'RaggedSegmentMax'))

def segment_mean(data, segment_ids, num_segments, name=None):
  """For docs, see: _RAGGED_SEGMENT_DOCSTRING."""
  with ops.name_scope(name, 'RaggedSegmentMean',
                      [data, segment_ids, num_segments]):
    total = segment_sum(data, segment_ids, num_segments)
    ones = ragged_tensor.RaggedTensor.from_nested_row_splits(
        array_ops.ones_like(data.flat_values), data.nested_row_splits,
        validate=False)
    count = segment_sum(ones, segment_ids, num_segments)
    if ragged_tensor.is_ragged(total):
      return total.with_flat_values(total.flat_values / count.flat_values)
    else:
      return total / count

def segment_sqrt_n(data, segment_ids, num_segments, name=None):
  """For docs, see: _RAGGED_SEGMENT_DOCSTRING."""
  with ops.name_scope(name, 'RaggedSegmentSqrtN',
                      [data, segment_ids, num_segments]):
    total = segment_sum(data, segment_ids, num_segments)
    ones = ragged_tensor.RaggedTensor.from_nested_row_splits(
        array_ops.ones_like(data.flat_values), data.nested_row_splits,
        validate=False)
    count = segment_sum(ones, segment_ids, num_segments)
    if ragged_tensor.is_ragged(total):
      return total.with_flat_values(
          total.flat_values / math_ops.sqrt(count.flat_values))
    else:
      return total / math_ops.sqrt(count)

def _set_ragged_segment_docstring(func, combination, combined):
  func.__doc__ = _RAGGED_SEGMENT_DOCSTRING % dict(
      combination=combination, combined=combined)

_set_ragged_segment_docstring(segment_sum, 'sum', 'summed')
_set_ragged_segment_docstring(segment_prod, 'product', 'multiplied')
_set_ragged_segment_docstring(segment_min, 'minimum', 'minimized')
_set_ragged_segment_docstring(segment_max, 'maximum', 'maximized')
_set_ragged_segment_docstring(segment_mean, 'mean', 'averaged')
_set_ragged_segment_docstring(segment_sqrt_n, 'sum divided by sqrt(N)',
                              'summed')

#===============================================================================
# ragged_reduce_<AGGREGATE>
#===============================================================================

# Docstring template used for ragged_reduce_<AGGREGATE> ops.
_RAGGED_REDUCE_DOCSTRING = """\
Computes the %(combination)s of elements across dimensions of a `RaggedTensor`.

  Reduces `input_tensor` along the dimensions given in `axis` by taking the
  %(combination)s of values.  If a reduced dimension has no elements for
  some index, then the value for that index will be %(default)s.

  The rank of the tensor is reduced by `1` for each entry in `axis`.  If
  `axis` is not specified, then all dimensions are reduced, and a scalar
  value is returned.
  Args:
    input_tensor: A `RaggedTensor` containing the values to be %(combined)s.
    axis: The dimensions to reduce.  May be `None` (to reduce all axes), an
      `int` (to reduce a single axis), a `list` or `tuple` of `int` (to reduce
      a given set of axes), or a `Tensor` with a constant value.  Must be in
      the range `[0, input_tensor.rank]`.
    name: A name prefix for the returned tensor (optional).
  Returns:
    A `RaggedTensor` containing the %(combined)s values.  The returned tensor
    has the same dtype as `data`, and its shape is given by removing the
    dimensions specified in `axis` from `input_tensor.shape`.  The `ragged_rank`
    of the returned tensor is given by substracting any ragged dimensions
    specified in `axis` from `input_tensor.ragged_rank`.
  Raises:
    ValueError: If `axis` contains a `Tensor` whose value is not constant.
  ####Example:
    %(example)s
"""
_RAGGED_REDUCE_SUM_EXAMPLE = """
    >>> rt = tf.ragged.constant([[3, 1, 4], [1, 5], [9], [2, 6]])
    >>> tf.reduce_sum(rt, axis=0).numpy()  # = [3+1+9+2, 1+5+6, 4]
    array([15, 12, 4], dtype=int32)
    >>> tf.reduce_sum(rt, axis=1).numpy()  # = [3+1+4, 1+5, 9, 2+6]
    array([8, 6, 9, 8], dtype=int32)
"""
_RAGGED_REDUCE_PROD_EXAMPLE = """
    >>> rt = tf.ragged.constant([[3, 1, 4], [1, 5], [9], [2, 6]])
    >>> tf.reduce_prod(rt, axis=0).numpy()  # = [3*1*9*2, 1*5*6, 4]
    array([54, 30, 4], dtype=int32)
    >>> tf.reduce_prod(rt, axis=1).numpy()  # = [3*1*4, 1*5, 9, 2*6]
    array([12, 5, 9, 12], dtype=int32)
"""
_RAGGED_REDUCE_MIN_EXAMPLE = """
    >>> rt = tf.ragged.constant([[3, 1, 4], [1, 5], [9], [2, 6]])
    >>> tf.reduce_min(rt, axis=0).numpy()
    array([1, 1, 4], dtype=int32)
    >>> tf.reduce_min(rt, axis=1).numpy()
    array([1, 1, 9, 2], dtype=int32)
"""
_RAGGED_REDUCE_MAX_EXAMPLE = """
    >>> rt = tf.ragged.constant([[3, 1, 4], [1, 5], [9], [2, 6]])
    >>> tf.reduce_max(rt, axis=0).numpy()
    array([9, 6, 4], dtype=int32)
    >>> tf.reduce_max(rt, axis=1).numpy()
    array([4, 5, 9, 6], dtype=int32)
"""
_RAGGED_REDUCE_MEAN_EXAMPLE = """
    >>> rt = tf.ragged.constant([[3, 1, 4], [1, 5], [9], [2, 6]])
    >>> tf.reduce_mean(rt, axis=0).numpy()
    array([3.75, 4.  , 4. ])
    >>> tf.reduce_mean(rt, axis=1).numpy()
    array([2.6666..., 3.  , 9.  , 4.  ])
"""
_RAGGED_REDUCE_ALL_EXAMPLE = """
    >>> rt = tf.ragged.constant([[True, True], [True, True, False, True], [False, True]])
    >>> tf.reduce_all(rt, axis=0).numpy()
    array([False,  True, False,  True])
    >>> tf.reduce_all(rt, axis=1).numpy()
    array([ True, False, False])
"""
_RAGGED_REDUCE_ANY_EXAMPLE = """
    >>> rt = tf.ragged.constant([[True, True], [True, True, False, True], [False, True]])
    >>> tf.reduce_any(rt, axis=0).numpy()
    array([ True,  True, False,  True])
    >>> tf.reduce_any(rt, axis=1).numpy()
    array([ True,  True,  True])
"""

def ragged_reduce_aggregate(reduce_op,
                            unsorted_segment_op,
                            rt_input,
                            axis,
                            keepdims,
                            separator=None,
                            name=None):
  """Aggregates across axes of a RaggedTensor using the given `Tensor` ops.

  Reduces `rt_input` along the dimensions given in `axis`.  The rank of the
  tensor is reduced by 1 for each entry in `axis`.  If `axis` is not specified,
  then all dimensions are reduced, and a scalar value is returned.

  This op assumes that `reduce_op` and `unsorted_segment_op` are associative;
  if not, then reducing multiple axes will return incorrect results.  (In
  particular, reducing multiple axes is currently implemented by reducing the
  axes one at a time.)

  Args:
    reduce_op: The tensorflow `op` that should be used to reduce values in
      uniform dimensions.  Must have the same signature and basic behavior as
      `reduce_sum`, `reduce_max`, etc.
    unsorted_segment_op: The tensorflow `op` that should be used to combine
      values in ragged dimensions.  Must have the same signature and basic
      behavior as `unsorted_segment_sum`, `unsorted_segment_max`, etc.
    rt_input: A `Tensor` or `RaggedTensor` containing the values to be reduced.
    axis: The axis or axes to reduce.  May be `None` (to reduce all axes), an
      `int` (to reduce a single axis), a `list` or `tuple` of `int` (to reduce a
      given set of axes), or a `Tensor` with a constant value.  Must be in the
      range `[0, rt_input.rank)`.
    keepdims: If true, retains reduced dimensions with length 1.
    separator: An optional string. Defaults to None. The separator to use when
      joining. The separator must not be set for non-string data types. (i.e.
      if separator is not None then it uses string ops)
    name: A name prefix for the returned tensor (optional).

  Returns:
    A `RaggedTensor` containing the reduced values.  The returned tensor
    has the same dtype as `data`, and its shape is given by removing the
    dimensions specified in `axis` from `rt_input.shape`.  The `ragged_rank`
    of the returned tensor is given by substracting any ragged dimensions
    specified in `axis` from `rt_input.ragged_rank`.
  Raises:
    ValueError: If `axis` contains a `Tensor` whose value is not constant.
  """
  if not ragged_tensor.is_ragged(rt_input):
    if separator is None:
      return reduce_op(rt_input, axis, name=name)
    else:
      # When separator is not None, We infer that dtype is string and
      # reduce_join will be called.
      return reduce_op(rt_input, axis, name=name, separator=separator)

  if keepdims:
    raise ValueError('keepdims=True is not supported for RaggedTensors.')

  if isinstance(axis, ops.Tensor):
    axis = tensor_util.constant_value(axis)
    if axis is None:
      raise ValueError('axis must be known at graph construction time.')
    if isinstance(axis, np.ndarray):
      axis = axis.tolist()

  # When reducing all axes, just ignore splits & reduce the inner values.
  if axis is None:
    return reduce_op(rt_input.flat_values, None, name=name)

  with ops.name_scope(name, 'RaggedReduce', [rt_input, axis]):
    if isinstance(axis, (tuple, list)):
      if not axis:
        return rt_input
      elif len(axis) == 1:
        axis = axis[0]
      else:
        # When reducing multiple axes, as we reduce one at a time (see below),
        # the negative axis has to be converted to positive at the first run
        # as the sort with negative axis will have different orders.
        # See GitHub issue 27497.
        axis = [
            ragged_util.get_positive_axis(a, rt_input.shape.ndims) for a in axis
        ]
        # When reducing multiple axes, just reduce one at a time.  This is less
        # efficient, and only works for associative ops.  (In particular, it
        # does not work for reduce_mean.)  However, reducing multiple axes at
        # once will probably require a nontrivial c++ op.
        axis = sorted(axis)
        inner_reduced = ragged_reduce_aggregate(reduce_op, unsorted_segment_op,
                                                rt_input, axis[-1], keepdims,
                                                separator)
        return ragged_reduce_aggregate(reduce_op, unsorted_segment_op,
                                       inner_reduced, axis[:-1], keepdims,
                                       separator)

    rt_input = ragged_tensor.convert_to_tensor_or_ragged_tensor(
        rt_input, name='rt_input')

    axis = ragged_util.get_positive_axis(axis, rt_input.shape.ndims)

    if axis == 0:
      # out[i_1, i_2, ..., i_N] = sum_{j} rt_input[j, i_1, i_2, ..., i_N]
      row_lengths = rt_input.row_splits[1:] - rt_input.row_splits[:-1]
      num_segments = math_ops.maximum(math_ops.reduce_max(row_lengths), 0)
      segment_ids = range(row_lengths).values
      return _ragged_segment_aggregate(unsorted_segment_op, rt_input.values,
                                       segment_ids, num_segments, separator)
    elif axis == 1:
      # out[i_0, i_1, i_2, ..., i_N] = sum_{j} rt_input[i_0, j, i_2, ..., i_N]
      num_segments = array_ops.shape(rt_input.row_splits)[0] - 1
      segment_ids = segment_id_ops.row_splits_to_segment_ids(
          rt_input.row_splits)
      return _ragged_segment_aggregate(unsorted_segment_op, rt_input.values,
                                       segment_ids, num_segments, separator)
    else:
      # out[i_0, ..., i_[axis-1], i_axis+1], ..., i_N] =
      #     sum_{j} rt_input [i_0, ..., i_[axis-1], j, i_axis+1], ..., i_N]
      return rt_input.with_values(
          ragged_reduce_aggregate(reduce_op, unsorted_segment_op,
                                  rt_input.values, axis - 1, keepdims,
                                  separator))

def reduce_sum(input_tensor, axis=None, keepdims=None, name=None):
  """For docs, see: _RAGGED_REDUCE_DOCSTRING."""

  return ragged_reduce_aggregate(
      reduce_op=math_ops.reduce_sum,
      unsorted_segment_op=math_ops.unsorted_segment_sum,
      rt_input=input_tensor,
      axis=axis, keepdims=keepdims,
      name=(name or 'RaggedReduceSum'))

def reduce_prod(input_tensor, axis=None, keepdims=None, name=None):
  """For docs, see: _RAGGED_REDUCE_DOCSTRING."""
  return ragged_reduce_aggregate(
      reduce_op=math_ops.reduce_prod,
      unsorted_segment_op=math_ops.unsorted_segment_prod,
      rt_input=input_tensor,
      axis=axis,
      keepdims=keepdims,
      name=(name or 'RaggedReduceProd'))

def reduce_min(input_tensor, axis=None, keepdims=None, name=None):
  """For docs, see: _RAGGED_REDUCE_DOCSTRING."""
  return ragged_reduce_aggregate(
      reduce_op=math_ops.reduce_min,
      unsorted_segment_op=math_ops.unsorted_segment_min,
      rt_input=input_tensor,
      axis=axis,
      keepdims=keepdims,
      name=(name or 'RaggedReduceMin'))

def reduce_max(input_tensor, axis=None, keepdims=None, name=None):
  """For docs, see: _RAGGED_REDUCE_DOCSTRING."""
  return ragged_reduce_aggregate(
      reduce_op=math_ops.reduce_max,
      unsorted_segment_op=math_ops.unsorted_segment_max,
      rt_input=input_tensor,
      axis=axis,
      keepdims=keepdims,
      name=(name or 'RaggedReduceMax'))

def reduce_mean(input_tensor, axis=None, keepdims=None, name=None):
  """For docs, see: _RAGGED_REDUCE_DOCSTRING."""
  with ops.name_scope(name, 'RaggedReduceMean', [input_tensor, axis]):
    total = reduce_sum(input_tensor, axis, keepdims)
    if ragged_tensor.is_ragged(input_tensor):
      ones = ragged_tensor.RaggedTensor.from_nested_row_splits(
          array_ops.ones_like(input_tensor.flat_values),
          input_tensor.nested_row_splits, validate=False)
    else:
      ones = array_ops.ones_like(input_tensor)
    count = reduce_sum(ones, axis, keepdims)
    if ragged_tensor.is_ragged(total):
      return ragged_tensor.RaggedTensor.from_nested_row_splits(
          total.flat_values / count.flat_values, total.nested_row_splits,
          validate=False)
    else:
      return total / count

def _cast(input_tensor, dtype):
  return ragged_functional_ops.map_flat_values(math_ops.cast, input_tensor,
                                               dtype)

def reduce_all(input_tensor, axis=None, keepdims=None, name=None):
  """For docs, see: _RAGGED_REDUCE_DOCSTRING."""
  with ops.name_scope(name, 'RaggedReduceAll', [input_tensor, axis]):
    return _cast(
        reduce_prod(_cast(input_tensor, dtypes.int32), axis, keepdims),
        dtypes.bool)

def reduce_any(input_tensor, axis=None, keepdims=None, name=None):
  """For docs, see: _RAGGED_REDUCE_DOCSTRING."""
  with ops.name_scope(name, 'RaggedReduceAny', [input_tensor, axis]):
    return _cast(
        reduce_sum(_cast(input_tensor, dtypes.int32), axis, keepdims),
        dtypes.bool)

def _set_ragged_reduce_docstring(func, combination, combined, default, example):
  func.__doc__ = _RAGGED_REDUCE_DOCSTRING % dict(
      combination=combination,
      combined=combined,
      default=default,
      example=example)

_set_ragged_reduce_docstring(reduce_sum, 'sum', 'summed', '0',
                             _RAGGED_REDUCE_SUM_EXAMPLE)
_set_ragged_reduce_docstring(reduce_prod, 'product', 'multiplied', '1',
                             _RAGGED_REDUCE_PROD_EXAMPLE)
_set_ragged_reduce_docstring(reduce_min, 'minimum', 'minimized',
                             '`input_tensor.dtype.min`',
                             _RAGGED_REDUCE_MIN_EXAMPLE)
_set_ragged_reduce_docstring(reduce_max, 'maximum', 'maximized',
                             '`input_tensor.dtype.max`',
                             _RAGGED_REDUCE_MAX_EXAMPLE)
_set_ragged_reduce_docstring(reduce_mean, 'mean', 'averaged', 'NaN',
                             _RAGGED_REDUCE_MEAN_EXAMPLE)

_set_ragged_reduce_docstring(reduce_all, 'logical and', 'and-ed', 'True',
                             _RAGGED_REDUCE_ALL_EXAMPLE)
_set_ragged_reduce_docstring(reduce_any, 'logical or', 'or-ed', 'False',
                             _RAGGED_REDUCE_ANY_EXAMPLE)

redpajama_set_name: RedPajamaGithub


C D Spivey Refrigeration is locally owned and operated company that is dedicated to serving the triad and local areas with great service and affordable rates.
Our commitment to excellence and pride in our work is what we are known for. All of our technicians are trained and certified repair specialist6 that can diagnose and solve any problem you may have.


text:
Гренхен () — місто в Швейцарії в кантоні Золотурн, округ Леберн.

Географія
Місто розташоване в підніжжі гірського хребта Юра між Золотурном та Білем на відстані близько 28 км на північ від Берна, 11 км на захід від Золотурна.
Гренхен має площу 26 км², з яких на 20,7 % дозволяється будівництво (житлове та будівництво доріг), 37,8 % використовуються в сільськогосподарських цілях, 39,8 % зайнято лісами, 1,7 % не є продуктивними (річки, льодовики або гори).

Демографія

2019 року в місті мешкало  осіб (+9,7 % порівняно з 2010 роком), іноземців було 36,5 %. Густота населення становила 671 осіб/км².
За віковим діапазоном населення розподілялося таким чином: 17,7 % — особи молодші 20 років, 60,1 % — особи у віці 20—64 років, 22,2 % — особи у віці 65 років та старші. Було 8071 помешкань (у середньому 2,1 особи в помешканні).
Із загальної кількості  працюючих 104 було зайнятих в первинному секторі, 5672 — в обробній промисловості, 5433 — в галузі послуг.

Галерея

Примітки

Міста Швейцарії
Громади Золотурну

redpajama_set_name: RedPajamaWikipedia


text:
Q: Ruby on Rails 4 - how to set background image in CSS from an external image path? I'm using Twilio to accept MMS messages and in my Rails app, when I retrieve the media, it comes in the form of a URL that looks something like this:
https://api.twilio.com/2010-04-01/Accounts/ACe874e4bf40ad/Messages/MM301789b0623c042685/Media/MEf680190bd549cb9abe4adc5bb (note that this isn't an actual url, but is in the same form)
In my rails app, I'm trying to use css to set the background of a page to this url.
I have the following:
  body {
width: 6.25in;
height: 4.25in;
margin: 0;
padding: 0;
/* your background image should have dimensions of 1875x1275 pixels. */
background-image: url('https://api.twilio.com/2010-04-01/Accounts/ACe874e4bf40ad/Messages/MM301789b0623c042685/Media/MEf680190bd549cb9abe4adc5bb');
background-size: 6.25in 4.25in;
background-repeat: no-repeat;

}
But this is not working.
Any thoughts on if I'm doing something wrong?

A: There is no image on specified background-image url.
it is like below :
background-image:url("http://iconshow.me/media/images/Mixed/small-n-flat-icon/png/512/user-group.png");

A: MMS messages may contain multiple images. Is the URL referencing one specific image? From Twilio:

Since there can be up to 10 images in one MMS, the "MediaUrl" parameter is structured as "MediaUrl0", "MediaUrl1" , "MediaUrl2" and etc.

From the API it seems you might be able to append ".jpg" or ".png" to the URL.

redpajama_set_name: RedPajamaStackExchange


text:
'use strict';

const util = {
};

module.exports = util;


text:
Q: How to add wrapper around existing command in bash? Is there any way to add to or wrap an existing command?
For example, if someone runs git pull it really runs git pull --rebase?
Sure, we've written an alias for it, but the issue is that people aren't using the alias.
Is there any way to detect that git pull was run and add to it?
An ideal solution?
$ git pull

echoes out
$ This is not the prefered way of pulling down new code. Did you mean to run ~/my_scripts/git_pull_script.sh?

And then cancels the original git pull.
There's probably a simpler way to do this kind of thing, but searching around hasn't yielded much on adapting existing commands.

A: To concretise the answer by @Barmar you could write a script like this:
echo $1
if [ "$1" == "pull" ] ;then
    echo This is not the prefered way of pulling down new code. Did you mean to run ~/my_scripts/git_pull_script.sh?
else
    git $*
fi

name it git and place it in a directory, that is in the PATH variable of the users before the actual place of the git binary.

A: You can use the command substitution operator $(command) to run a command and capture its output.
For example, if you want to run a command and capture its output, you can use the following:
$(command)

This is useful if you want to run a command and capture its output.


Suburb styling with features to match.
Even as the entry-level member of the new Jazz line-up, the Trend comes standard with colour-coded bumpers, electrically-adjustable mirrors, air-conditioning, remote central locking and a full-size spare wheel. It also boasts Honda's famous Magic Seat system, which allows the rear seats to be tipped up vertically to create a generous loading area. Other features include integrated alarm/immobiliser system and an MP3/WMA-compatible audio system with AUX and USB inputs.


text:
Deep Green Resistance (DGR) is een radicale vleugel van de milieubeweging die het mainstream milieuactivisme niet effectief vindt en die vindt dat er nood is aan meer verregaande oplossingen om de milieucrisis en sociale onrechtvaardigheid te bekampen. Omdat het probleem volgens DGR begint bij de industriële maatschappij, streeft de beweging naar een radicale verandering in de structuur van de samenleving. De beweging verzet zich sociale ongelijkheid en de vernietiging van natuurlijke grondstoffen door wie rijk en machtig is. Het uiteindelijke doel van DGR is om de industrialisatie te stoppen, het milieu te herstellen, inheemse volkeren hun rechten terug te schenken en een egalitaire, rechtvaardige en duurzame samenleving tussen alle mensen op poten te zetten. DGR staat ook voor ecofeminisme.

De beweging werd opgericht door de Amerikaanse schrijver en milieuactivist Derrick Jensen, de Amerikaanse schrijfster, radicaal feministe en voedsel- en milieuactiviste Lierre Keith en hun collega schrijver en activist Aric McBay. Samen schreven zij het boek Deep Green Resistance (2011), nadat ze in april 2007 in Deerfield (Massachusetts) een conferentie gehouden hadden rond hetzelfde onderwerp.

Zie ook
 Anarchoprimitivisme
 Diepe ecologie
 Ecoanarchisme

Externe link
  Website van Deep Green Resistance

Feminisme
Milieubeweging


text:
Sen. Rezin bill to help prevent Sudden Infant Death Syndrome passes Senate
Unsafe sleep environments are often a large contributor to infant deaths labeled as Sudden Infant Death Syndrome (SIDS) said State Senator Sue Rezin (R-Morris), who is chief sponsor of legislation that puts stricter requirements in place following an investigation where a child died suddenly and unexpectedly. Senate Bill 1568 passed the Senate on Wednesday, April 10.
SB 1568 would require coroners to conduct an autopsy following the investigation as well as list any environmental factors that may have contributed to the childs death. The bill would also require the Department of Public Health to publish current data that it receives from coroner reports so that the public has access to reporting concerning SIDS.
Too often, infant deaths are being ruled as SIDS even when there are unsafe factors present at the scene where the infant passed, said Sen. Rezin. By just putting SIDS on the death certificate, potentially valuable information is being left out that could help prevent infant deaths in the future.
The legislation was brought to Sen. Rezin by a constituent, Ashley Lamps, who lost her son in 2013 to SIDS. Lamps now runs a foundation that advocates for SIDS awareness and the use of safe sleep practices.
SB 1568 now heads to the House of Representatives for consideration.


Michael Collyer is Professor of Geography. He was previously lecturer, senior lecturer and reader at Sussex. During the 2012/13 academic year he held a Fulbright scholarship in the Department of Geography at the University of Washington, Seattle. He has held other visiting positions at Universities in Egypt, France, Morocco, New Zealand and Sri Lanka. Before his appointment as lecturer at Sussex he held a three-year Marie Curie Outgoing International Fellowship, based at the University of Colombo, Sri Lanka. He was previously a Nuffield Foundation New Career Development Fellow at Abdelmalek Essaadi University in Tétouan, Morocco. He completed his PhD, on the dynamics of the Euro-Algerian migration system, in 2002.


text:
What do African courts say about banning pregnant girls from school?
Sabrina Mahtani
3min min read
Across many African countries pregnant girls continue to face discrimination and various challenges to access education. This year, Tanzania and Sierra Leone specifically have been making headlines due to their official policies banning pregnant girls from school.
In June 2019, the Center for Reproductive Rights and the Legal and Human Rights Centre filed a Complaint before the African Committee of Experts on the Rights and Welfare of the Child challenging the expulsion and exclusion of pregnant girls from public schools in Tanzania. The Complaint was filed on behalf of female students in Tanzania and alleges violations of the African Charter on the Rights and Welfare of the Child and other international and regional human rights instruments ratified by the country. The decision is still pending.
On 12 December 2019, the Economic Community of West African States (ECOWAS) Community Court of Justice will deliver its judgment in a case brought against Sierra Leone by civil society organisations challenging its ban on visibly pregnant girls from attending school and sitting exams. It is the first time a regional court in Africa will make a ruling on the issue and has the potential to set an important precedent concerning the right to education without discrimination and impact the rights of pregnant girls across the continent.
However, this is not the first time that domestic courts have addressed the issue.
Various African courts have held exclusion from education on the basis of pregnancy to be discriminatory, and in some cases a breach of the right to education.
More than 20 years ago, in 1995, the Botswana Court of Appeal reviewed Regulation 6 of the Teacher's Training College, which demanded that students inform the college authorities as soon as a pregnancy was confirmed. According to the regulation, students who became pregnant between December and April would be forced to leave the college immediately and those whose pregnancy was confirmed between May and November would be required to miss the next academic year. If a student became pregnant for the second time while at college, the institution had the right to expel her. The Court of Appeal held that Regulation 6 was unfairly discriminatory as it involved a "purely punitive" purpose and was not made for the benefit of the affected student, despite claims to the contrary. The Regulation unreasonably and without justification denied pregnant students the opportunity to continue their education, while male students involved were subject to no such exclusion. The Regulation was held unconstitutional and in this specific case the barrier impeding the pregnant students' right to education was lifted.
Four years later, in 1999, the Supreme Court of Zimbabwe held that the expulsion of a female student who became pregnant while attending the teacher training college constituted gender based discrimination and was contrary to public policy in a country where concerted efforts had been made to eliminate discrimination on the grounds of sex and gender. The case related to a clause in a student college contractual agreement requiring women to withdraw from the college if they became pregnant.
More recently, in 2013, the Constitutional Court of South Africa ordered two public high schools to review their policies which provided for the temporary exclusion of students who were found to be pregnant. The Court ruled that the polices were prima facie unconstitutional, violating the rights to freedom from discrimination and to a basic education.
This case law is reflected in Latin America where courts in Peru, Chile and Colombia have similarly held that exclusion from education due to pregnancy constitutes gender discrimination and a violation of the rights to education and equality. The InterAmerican Commission of Human Rights has also held that States which are party to the American Convention of Human Rights have an obligation to ensure that schools (public or private) do not discriminate against students due to pregnancy. If States do not ensure this, they violate the student's right to honour and dignity, and also equality before the law.
Where to from here
At a recent event to mark the 30th Anniversary of the signing of the UN Convention on the Rights of the Child, Sierra Leone's President Bio stated, "My government will not allow pregnant girls to attend schooling for them not to influence other girls, as they are not good examples to be followed by young girls in school. We had little divergence of opinions on whether pregnant school girls should go to school. I have not seen that anywhere in the world."
African jurisprudence contradicts officials who state that the exclusion of pregnant girls from education is accepted across the continent. Policy makers have a duty to familiarise themselves with comparative law and policies across the continent and indeed international and regional standards which uphold the right to education without discrimination instead of reinforcing language and views which blame and stigmatise pregnant girls.
(Main image: Adolescent Girls at Community Center in Uganda - Neil Thomas/Corbis via Getty Images)
The opinions expressed in this article are those of the author(s) and do not necessarily reflect the views of SAIIA or CIGI.
Women in Policy Making: Sabrina Mahtani
The Invisibles: Women on death row in Africa
Why the Gambia's progress should spur abolition of the death penalty in Africa
The Sahel's uphill battle to halt the expansion of Islamist extremism in 2020
Jessica Moody
Digitalising democracy in SADC: Insights from 2019 Elections
Fritz Nganje
Nanjala Nyabola on the "digital colonialism" transforming Kenya's political discourse
Catherine Tsalikis


text:
E Edition
Oct. 24, 2021 00:01 AM EST
Today is Sunday, Oct. 24, the 297th day of 2021. There are 68 days left in the year.
Today's Highlight in History:
On Oct. 24, 1940, the 40-hour work week went into effect under the Fair Labor Standards Act of 1938.
On this date:
In 1648, the Peace of Westphalia (west-FAY'-lee-uh) ended the Thirty Years War and effectively destroyed the Holy Roman Empire.
In 1861, the first transcontinental telegraph message was sent by Chief Justice Stephen J. Field of California from San Francisco to President Abraham Lincoln in Washington, D.C., over a line built by the Western Union Telegraph Co.
In 1931, the George Washington Bridge, connecting New York and New Jersey, was officially dedicated (it opened to traffic the next day).
In 1945, the United Nations officially came into existence as its charter took effect.
In 1962, a naval quarantine of Cuba ordered by President John F. Kennedy went into effect during the missile crisis.
In 1972, Hall of Famer Jackie Robinson, who'd broken Major League Baseball's modern-era color barrier in 1947, died in Stamford, Connecticut, at age 53.
In 1989, former television evangelist Jim Bakker (BAY'-kur) was sentenced by a judge in Charlotte, N.C., to 45 years in prison for fraud and conspiracy. (The sentence was later reduced to eight years; it was further reduced to four for good behavior.)
In 1992, the Toronto Blue Jays became the first non-U.S. team to win the World Series as they defeated the Atlanta Braves, 4-3, in Game 6.
In 1996, TyRon Lewis, 18, a Black motorist, was shot to death by police during a traffic stop in St. Petersburg, Florida; the incident sparked rioting. (Officer James Knight, who said that Lewis had lurched his car at him several times, knocking him onto the hood, was cleared by a grand jury and the Justice Department.)
In 2002, authorities apprehended John Allen Muhammad and teenager Lee Boyd Malvo near Myersville, Maryland, in the Washington-area sniper attacks. (Malvo was later sentenced to life in prison without the possibility of parole, but Maryland's highest court has agreed to reconsider that sentence in 2022; Muhammad was sentenced to death and executed in 2009.)
In 2005, civil rights icon Rosa Parks died in Detroit at age 92.
In 2007, rapidly rising Internet star Facebook Inc. sold a 1.6 percent stake to Microsoft Corp. for $240 million, spurning a competing offer from online search leader Google Inc.
Ten years ago: President Barack Obama offered mortgage relief to hundreds of thousands of Americans during a visit to Las Vegas. Defense Secretary Leon Panetta, visiting Yokota Air Base in Japan, lashed out at North Korea for "reckless and provocative" acts and criticized China for a secretive expansion of its military power.
Five years ago: Campaigning in battleground Florida, a defiant Donald Trump blamed his campaign struggles on "phony polls" from the "disgusting" media. Hillary Clinton and Sen. Elizabeth Warren pounded Trump, accusing him of disrespecting women and denigrating U.S. troops assisting Iraqis in their push to retake the city of Mosul. Pop idol Bobby Vee, 73, died in Rogers, Minnesota.
One year ago: A North Carolina health official ordered a large church to close its doors temporarily because of concerns it was helping spread the coronavirus by disregarding social distancing measures. Despite surging cases around the country and more infections at the White House, President Donald Trump assured supporters packed shoulder to shoulder at a trio of rallies that "we're rounding the turn" on the coronavirus; he mocked challenger Joe Biden for raising alarms about the pandemic. Heavily protected crews in Washington state worked to destroy the first nest of so-called murder hornets discovered in the United States.
Today's Birthdays: Rock musician Bill Wyman is 85. Actor F. Murray Abraham is 82. Movie director-screenwriter David S. Ward is 76. Actor Kevin Kline is 74. Congressman and former NAACP President Kweisi Mfume (kwah-EE'-see oom-FOO'-may) is 73. Actor Doug Davidson is 67. Actor B.D. Wong is 61. Actor Zahn McClarnon is 55. Singer Michael Trent (Americana duo Shovels & Rope) is 44. Rock musician Ben Gillies (Silverchair) is 42. Singer-actor Monica Arnold is 41. Actor-comedian Casey Wilson is 41. R&B singer, actor and "The Real" co-host Adrienne Bailon Houghton is 38. Actor Tim Pocock is 36. R&B singer-rapper-actor Drake is 35. Actor Shenae Grimes is 32. Actor Eliza Taylor is 32. Actor Ashton Sanders (Film: "Moonlight") is 26. Olympic gold medal gymnast Kyla Ross is 25. Actor Hudson Yang is 18.
Kyla Ross
John Allen Muhammad
Companies in the Story
Alphabet Inc
Scranton News


text:
Ваупес (, ) — річка у Південній Америці на південному сході Колумбії, в департаментах Ґуавьяре і Ваупес та північному заході Бразилії в штаті Амазонас; права притока Ріу-Неґру. Належить до водного басейну Амазонки → Атлантичного океану.

Географія
Річка починає свій витік на південному сході Колумбії, в передгір'ях Анд після злиття двох невеликих річок Унілла та Ітілла, поблизу міста Каламар, тече у східному напрямку, через плато Льянос по території департаментів Ґуавьяре та Ваупес Колумбії (845 км). Далі кордоном Колумбії та Бразилії (188 км). На території Бразилії річка відома під назвою Уаупес, тече штатом Амазонас (342 км) і впадає у річку Ріу-Негру, із правого берега.

Довжина річки становить близько , за іншими даними — . Площа басейну — . Середньорічний стік на станції Таракуа — .

Живлення дощове. Період повені триває із січня по червень. Водний максимум у травні-червні.

Притоки
Річка Ваупес на своєму шляху приймає воду значної кількості приток, найбільші із них (від витоку до гирла):
 Унілла (ліва)
 Ітілла (права)

 Куерари (ліва, ~350 км)
 Папурі (права)
 Тікуйє (права, ~255 км)
 Куґуярі

Гідрологія
Спостереження за водним режимом річки проводилось протягом 20 років (1977–1996) на станції в Таракуя, у штаті Амазонас. Середньорічна витрата води яка спостерігалася тут у цей період становила  для водного басейну , що складає 89,5% від загальної площі басейну річки. За період спостереження, абсолютний мінімальний щомісячний стік становив  (у лютому 1992 року), мінімальний середньомісячний —  (у грудні), в той час як абсолютний максимальний щомісячний — склав  (у червні 1977 року), а максимальний середньомісячний —  (у червні).

На графіку приведено показники середньомісячної витрати води річки Ваупес за 20 років (1977–1996) на станції в Таракуя, м³/с:

Населені пункти
 на території Колумбії:
 Мірафлорес, Пуерто-Сільванія, Санта-Роза, Тукуна, Міту
 на території Бразилії:
 Парана-Жука, Тулука, Сан-Жоакім

Див. також
 List of rivers of Colombia — Vaupés River or Uaupés
 List of rivers of Amazonas (Brazilian state) — Uaupés River

Примітки

Посилання

 Sistema del Amazonas  ,

Амазонка
Притоки Ріу-Неґру
Річки Колумбії
Річки Бразилії


Carus Green golf club has welcomed a visit by South Lakes MP, Tim Farron, to see the new and improved facilities, following completion of their flood restoration work.
After the deluge of Storm Desmond on 4th December, the popular golf club saw severe water damage on the ground floor, including thousands of pounds worth of soiled stock in the pro shop, yet despite the crisis, they closed their doors for just one day, with staff members and locals pitching in with the 'clean-up' operation.
Following a four week period of 'drying out', tradesmen – all of whom were local – pulled out all the stops to get the club back up to speed, with new locker rooms, toilets, carpets and a fully re-stocked pro shop now in place.


My survey of the recorded legacy of the d'Arányi sisters continues. It includes two discs by Adila Fachiri, who made far fewer solos than her sister Jelly. As before, we can only enjoy all these goodies thanks to the great generosity of collector Raymond Glaspole, who has kindly provided these transfers from originals in his collection. I have merely called on my trusty amanuensis ClickRepair.
We start with a fascinating rarity, a movement from a work originally for flute with harp, horn and strings by an Australian casualty of World War I. In 1934, Oxford University Press published a version for flute or violin with small orchestra or piano, 'The Violin part ... arranged and edited by J. d'Aranyi', so perhaps she had a hand in the version she plays here too.
Frederick Septimus Kelly arr. d'Arányi?
Download the above 8 mono, fully-tagged FLACs files here.
I wouldn't normally tread on the toes of the British Library's magnificent online Archival Sound Recordings collection, which includes a transfer of the following recording. But some supplicants at the Cave-mouth live in jurisdictions in hock to behemegamoromediamoths©®TM which suffer from chronic dog-in-the-manger complex, and so can't stream the BL's files. To you, I make this offering – but don't say the 'content owners' didn't warn you when they shut up shop and refuse to invest in the next 'great' 'band'. One mono FLAC file (please note: sides have not been joined up).
This simple post has cost me hours. About four days ago, without warning, Blogger stopped formatting text as it has done ever since I first yawned, scratched my breech clout and peeked out of my antre 18 months ago. Line-breaks were ignored, vast spaces yawned between paras. After wasting time trying to correct things by hand, I visited the Blogger 'help' forum, where I read that others have the same problem. But I couldn't post there. Closed to non-members. I'm a Blogger blogger, dammit. I applied to join, three days ago. No response. Maybe they're trying to amend their meddling.
Then I read that Windows Live Writer works well with Blogger. To install that, though, I needed to install Windows Vista Service Pack 2 and Platform Update. (No, if I'd known, I'd never have bought a laptop with Vista. Why do you think I'm Grumpy?) SP2 took 45 minutes to download, on a 1MB(ish) broadband connection, and something approaching 3 hours to install. Various 'vital' updates followed, more hours. Then: create a Windows Live account. Then, more time, choosing not to install various messengers, syncers and swymmers, not uploading all my and my friends' personal details and mugshots, and ticking boxes so as not to receive e-mails, telephone calls and SMSs about Microsoft's 'products' and 'services', thank you.
Live Writer does seem to work quite well, though. So far.
Thanks for the Bach (etc.) from this resident of a country with a perpetual copyright period that equals the age of Mickey Mouse plus 25 years.
I agree that Blogger is becoming increasingly eccentric, but then so am I.
Wonderful recordings. The Bach Double is now my 2nd favorite behind the Kreisler/Zimbalist. Of course Fritz has always been my favorite violinist excluding his dreadful arrangement of Paganini 1st.
Think you're grumpy, not being an elite European, only a lowly, provincial USAite, I get no access the "British Library's magnificent online Archival Sound Recordings collection" even if I tip my cap ever so politely. Would love to see what is hiding behind the titles of chamber groups I've never heard of as a starter.


text:
Add to GoodReads Exam Copies
Normative Theory and Business Ethics
Jeffery D. Smith - Foreword by Norman E. Bowie
Since its inception thirty years ago, business ethics has benefited from the interdisciplinary contributions by management, political theory, sociology, and, of course, philosophy. This volume provides an updated examination of the role that moral and political philosophy can play in addressing problems in business ethics. The essays contained within its pages represent the work of new scholars and address a wide array of foundational issues such as distributive justice within firms, human rights, ethical challenges of international business, the role of virtue in business management, entrepreneurship and the relationship of markets and market actors with democratic institutions. In an important sense, this collection traces where philosophy has been and where it is headed within business ethics. Each of the contributions represent new work that, at once, strengthens the theoretical foundations of normative business ethics and provides practical insight for non-philosophers working in the field.
Rowman & Littlefield Publishers
978-0-7425-4842-8 • Hardback • October 2008 • $113.00 • (£87.00)
978-0-7425-4841-1 • Paperback • October 2008 • $46.00 • (£35.00)
Series: New Perspectives in Business Ethics
Subjects: Business & Economics / Business Ethics, Philosophy / Ethics & Moral Philosophy
Jeffery D. Smith is assistant professor and director of the Banta Center for Business, Ethics and Society at the University of Redlands.
Chapter 1 Introduction: Past and Present: The Role of Normative Theory in Business
Chapter 1: Business-Focused Business Ethics
Chapter 2: Virtue Ethics and Business Organizations
Chapter 3: The Human Rights Obligations of Multinational Corporations
Chapter 4: Contractarian Business Ethics Today
Chapter 5: The Normative Study of Business Organizations: A Rawlsian Approach
Chapter 6: Deserving Jobs, Deserving Wages
Chapter 7: Institutions and Organizations: Communicative Ethics and Business
Chapter 8: On the Need for Theory in Business Ethics
Chapter 9: Values and Capitalism
Jeffery Smith brings together some of the field's rising stars and ably highlights the points they have to make about the importance of normative theory. There are a lot of people in business ethics who really need to read this book.....
— Edwin Hartman
This important collection of original essays by a new generation of business ethics scholars offers a variety of perspectives on the possibilities and the limitations of ethical theory in business ethics teaching and research. As business ethics has become more interdisciplinary and practice-focused, the role of ethical theory in the field has been both challenged and transformed. So the publication of these essays comes at an opportune time for a fresh assessment of old developments and new directions for ethical theory in business ethics...
— John R. Boatright
Jeff Smith has done the field of business ethics a great service by collecting these provocative and foundational essays in one volume. It is a wonderful collection of fresh voices on the normative foundations of business ethics. These are significant contributions to the literature that truly add value....
— Kenneth E. Goodpaster


text:
namespace FacebookSharp.Web.JavascriptSdk
{
    using System.Text;

    public partial class FacebookJavscriptSdk
    {
        public string Logout()
        {
            return "Fb.logout(function(cb){});";
        }

        public string Logout(string callbackFunctionName)
        {
            return string.Format("FB.logout({0});", callbackFunctionName);
        }

        public string Logout(string callBackFunctionVarName, string body)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("Fb.logout(function({0}{", callBackFunctionVarName);
            sb.AppendLine();
            sb.AppendLine(body);
            sb.AppendLine("});");

            return sb.ToString();
        }
    }
}


text:
Grand Avenue Bridge in Des Moines
Replacing a Historic Bridge: Innovative Solutions Add Modern Charm to Grand Avenue Bridge in Des Moines Contemplating the replacement of historic structures is never an...
Maine DOT Uses New GPR Technology to Improve Road Pavement Quality and Service Life
Helps ensure optimum pavement density throughout pavement layer By Rob Sommerfeldt The State of Maine Department of Transportation is at the forefront of research on how...
Bridge Information Modeling (BrIM)
By Alexander Mabrich, PE, MSc, MBA, PMP, Burak Boyaci, and Lee Tanase Bridge information modeling (BrIM), or BIM for bridges, is an advanced methodology for the...
New Members Join the Drone Advisory Committee
WASHINGTON – The U.S. Department of Transportation (DOT) has appointed two new members to the Federal Aviation Administration's (FAA) Drone Advisory Committee (DAC). The new members are Christian Ramsey, President of...
FHWA hosting 3 peer exchanges focusing on Utilities in the Federal-aid Right-of-Way
Utility Summit Dates FHWA is hosting 3 peer exchanges focusing on Utilities in the Federal-aid Right-of-Way. This year, FHWA's Office of Real Estate Services is partnering...
Georgia DOT Awards $26 Million in Construction Contracts for December
ATLANTA, GA – Georgia Department of Transportation (Georgia DOT) awarded 15 construction contracts for statewide transportation projects totaling $26,236,967. The project bids were received...
$164 million contract to build I-69 in Martinsville
MARTINSVILLE, Ind. – The Indiana Department of Transportation has awarded Walsh Construction Company II LLC a $164.8 million contract to transform six miles of...
TRAC approves final list of major new projects
Nearly $400 million coming for construction and development of 20 projects COLUMBUS - The Ohio Department of Transportation will invest an additional $398 million into...


text:
Grünenbach (westallgäuerisch Grienəbach) ist eine Gemeinde im schwäbischen Landkreis Lindau (Bodensee).

Geografie

Lage, Gemarkungen und Erhebungen
Grünenbach liegt in der Region Allgäu, genauer im Westallgäu. Markante Erhebungen in der Gemeinde sind der Laubenberg, die Riedholzer Kugel und der Iberg. Zwischen diesen Erhebungen liegt der Eistobel.

Die Gemeinde besteht aus 2 Gemarkungen und hat 16 Gemeindeteile (in Klammern ist der Siedlungstyp angegeben):
 Gemarkung Ebratshofen mit Bischlecht (Weiler), Ebratshofen (Pfarrdorf), Gerstland (Einöde), Hohenegg (Weiler), Oberried (Einöde), Pferrenberg (Weiler), Schüttentobel (Weiler), Steig (Einöde) und Unterried (Weiler)
 Gemarkung Grünenbach:
 Altgemarkung Grünenbach mit Au (Weiler), Grünenbach (Pfarrdorf) und Heimhofen (Dorf)
 Altgemarkung Schönau mit Laubenberg (Weiler), Motzgatsried (Weiler), Schneit (Einöde) und Schönau (Dorf)

Nachbargemeinden

Geschichte

Bis zur Gemeindegründung
An der Quelle des Grünen Bachs befindet sich ein Kultplatz vor- und frühgeschichtlicher Zeitstellung, ein Findling aus Nagelfluh mit noch deutlich erkennbaren vorgeschichtlichen Einfriedungen.

Durch Grünenbach verlief die Römerstraße Kempten–Bregenz ein Abschnitt der späteren Allgäustraße, die eine wichtige Verbindung für Importe aus dem Mittelmeergebiet ins Voralpenland darstellte (für Olivenöl, Wein, Fischsauce, Oliven).

Bis Anfang des 19. Jahrhunderts gehörte das Gebiet der heutigen Gemeinde Grünenbach zu drei verschiedenen Territorien:
 Grünenbach mit Heimhofen und Au: Gehörte zu Österreich, Herrschaft Bregenz, Gericht Grünenbach.
 Schönau mit Schneit, Motzgatsried und Laubenberg: Bildete die Herrschaft Laubenberg. Die Lehenshoheit über die Herrschaft wechselte zu einem unbekannten Zeitpunkt von der Fürstabtei St. Gallen an Österreich. Die Herrschaft gehörte zum Kanton Hegau-Allgäu-Bodensee des Reichsritterkreises Schwaben. Inhaber der Herrschaft waren bis 1647 die Familie von Laubenberg und dann die Familie Pappus von Tratzberg.
 Ebratshofen mit Schüttentobel, Hohenegg, Oberried, Unterried, Bischlecht, Steig, Gerstland und Pferrenberg: Gehörte zu Österreich, Herrschaft Bregenz, Gericht Hohenegg. Das Gericht Hohenegg bestand aus der ehemaligen Herrschaft Hohenegg, welche Lehen der Abtei Kempten war und 1359 mit der damals montfortischen Grafschaft Bregenz vereinigt wurde. 1451 kam das hoheneggische Gebiet von Montfort an Österreich. Im Gegensatz zu den anderen Gebieten der österreichischen Herrschaft Bregenz (auch "Herrschaft Bregenz-Hohenegg" genannt) behielt das Gericht Hohenegg stets eine gewisse Sonderstellung.

Anfang des 19. Jahrhunderts kamen die Gebiete zum Königreich Bayern. Mit dem Gemeindeedikt von 1818 entstanden die drei modernen Gemeinden Grünenbach, Schönau und Ebratshofen.

Eingemeindungen
1860 wurde Schönau nach Grünenbach eingegliedert, und am 1. April 1972 wurde die Gemeinde Ebratshofen nach Grünenbach eingemeindet.

Einwohnerentwicklung
 1961: 1171 Einwohner
 1970: 1140 Einwohner
 1987: 1124 Einwohner
 1991: 1160 Einwohner
 1995: 1253 Einwohner
 2000: 1285 Einwohner
 2005: 1385 Einwohner
 2010: 1445 Einwohner
 2015: 1503 Einwohner

Zwischen 1988 und 2018 wuchs die Gemeinde von 1116 auf 1460 um 344 Einwohner bzw. um 30,8 %.

Politik
Die Gemeinde ist Mitglied der Verwaltungsgemeinschaft Argental.

Bürgermeister
Erster Bürgermeister ist Markus Eugler (parteilos, Wahl über die Liste Unabhängige Gemeinderäte, seit Mai 2008); dieser wurde am 15. März 2020 mit 91,74 % der Stimmen für weitere sechs Jahre gewählt.

Gemeinderat
Nach den Wahlen 2014 und 2020 hatte der Gemeinderat 12 Mitglieder.

Wappen

Kultur und Sehenswürdigkeiten
 Eistobel im Naturschutzgebiet gleichen Namens

Wirtschaft und Infrastruktur

Wirtschaft einschließlich Land- und Forstwirtschaft

Nach der amtlichen Statistik gab es 1998 im produzierenden Gewerbe 160 und im Bereich Handel und Verkehr keine sozialversicherungspflichtig Beschäftigten am Arbeitsort. In sonstigen Wirtschaftsbereichen waren am Arbeitsort 96 Personen sozialversicherungspflichtig beschäftigt. Sozialversicherungspflichtig Beschäftigte am Wohnort gab es 396. Im verarbeitenden Gewerbe gab es zwei und im Bauhauptgewerbe vier Betriebe. Zudem bestanden im Jahr 1999 67 landwirtschaftliche Betriebe mit einer landwirtschaftlich genutzten Fläche von 1415 ha.

Verkehr
Durch den Süden des Gemeindegebiets verläuft die Bahnstrecke Buchloe–Lindau. Der nächste Bahnhof ist Röthenbach (Allgäu).

Bildung
2010 gab es folgende Einrichtungen:
 Kindergärten: 56 Kindergartenplätze mit 56 Kindern
 Volksschule: eine mit dem Namen Laubenbergschule Grünenbach, erbaut 2003

Persönlichkeiten
 Anton Zumstein (1875–1973), Kartograph und Verleger
 Otto Frommknecht (1881–1969), Bayerischer Staatsminister für Verkehr von 1947 bis 1950
 Katharina Adler (1919–2010), Journalistin und Publizistin
 Horst Stern (1922–2019), deutscher Wissenschaftsjournalist, Filmemacher und Schriftsteller, lebte ab den 1970er-Jahren in Hohenegg und war u. a. Gemeinderat
 Peter Adler (1923–2012), Schriftsteller
 Jörg Baldauf (* 1967), ehemaliger Behindertensportler, lebt in Schönau
 Suzanne Bernert (* 1982), deutsch-indische Schauspielerin

Weblinks

 Gemeinde Grünenbach

Einzelnachweise

Ort im Landkreis Lindau (Bodensee)
Ort in Oberschwaben
Gemeindegründung 1818
Kirchdorf (Siedlungstyp)


text:
GC Club
Home Market watch Red chips are returning to China, are foreign funds prepared?
Red chips are returning to China, are foreign funds prepared?
In recent years, a significant number of growth enterprises opted to erect red chip structures and list on foreign capital markets. During this process, the enterprise would bring in an offshore fund at the proposed listing platform level to take an equity interest prior to or at the same time that the Chinese actual controller would take a roundabout route to indirectly acquire or control a Chinese operating entity through an offshore trust or offshore company.
While this was to take advantage of the market credibility, managerial strengths and listing ability of well-known investment funds, certain enterprises also needed to bring in a genuine foreign investor to convert the Chinese company into a foreign-invested enterprise (FIE) so as to circumvent restrictions on round-trip acquisitions in the Provisions on the Acquisition of Domestic Enterprises by Foreign Investors issued by six ministerial-level authorities in August 2006.
Yang Run
Yet times change and the world with time. The attitude of foreign capital markets toward China concept stocks has undergone several ups and downs. China's foreign investment policies are progressively liberalizing. The emergence of the New Third Board has caused the Chinese capital markets to continuously increase in size and price-earnings ratios to steadily rise. Such advantages as cultural, language, market and technical familiarity that come with local listings have given Chinese entrepreneurs pause to consider returning to their domestic capital markets.
Dealing with the shares held by the foreign fund after dismantling a red chip structure. Generally speaking, these can be broadly handled in two ways.
The first option is via red chip structures, wherein the link to domestic equity is made by way of an equity arrangement; this generally is the option for those in industries where foreign investment is permitted or encouraged. From the perspective of foreign investment access, dismantling a red chip structure does not require the foreign fund to make any changes. Foreign investment falling below 25% after the dismantling can also be acceptable.
From a listing perspective, China's capital markets do not have restrictions against FIEs. Both the A-share markets and the New Third Board contain a large number of FIEs. Of course, where maintaining FIE status would require transforming the shareholding structure or some other change, approval or recordal procedures would need to be carried out with the commerce authority. For a listing, this will increase time costs, but not present substantive obstacles.
The second option is via a company with a variable interest entity (VIE) red chip structure. This generally is the option for those in industries in which foreign investment is prohibited or restricted.
When dismantling this type of red chip structure, consideration should be given to using a Chinese renminbi fund to make parallel investment in the proposed entity to be listed in China, so as to replace the original investment of the foreign fund on the foreign listing platform and seek a domestic listing as a wholly Chinese-owned company. One typical example is Baofeng Technology and IDG, which recently took the A-share market by storm. They substituted a Chinese renminbi fund when dismantling the red chip structure.
If the foreign fund cannot arrange for a parallel domestic fund to replace it, it needs to consider how to divest early in a suitable manner at a suitable price. This allows it to enjoy the increase in the value of its equity in the enterprise (including anticipated increases) without affecting the China listing schedule.
Of course, if the industry is now falls in the permitted or encouraged categories, the red chip can dismantle the original VIE structure without restraint. The foreign fund can hold equity in the Chinese operating entity directly and the enterprise can apply for listing as a Sino-foreign equity joint venture.
Obtain consideration for the equity, method of payment and tax affairs when dismantling. Both the actual controller and the foreign fund need to ensure that their signed legal documents, the dismantling process and the relevant tax filings are approved by the Chinese regulator and capital market.
Looking at recent examples from the second boards and New Third Board, the author has found that equity transfer at par value based on the registered capital is generally acceptable so long as it is demonstrable that the shares transferor and transferee are genuinely under the same control, and that the transfer is solely for the purpose of dismantling the red chip structure and returning listing to China. This eliminates the need to pay tax, and in some cases it renders the actual payment of the transfer fees unnecessary. Examples from the second board are too many to list; those from the New Third Board include CG Mobile, MK Tech and Gokey.
Will dismantling a red chip structure result in change of control? A change in actual control during the reporting period is anathema. If such circumstances arises, an enterprise generally needs to renew the relevant operating term before it can apply to list. However, the securities regulator places greater emphasis on the reality rather than the form when determining a change in control.
Accordingly, while the red chip structure is being dismantled, if the competent tax authority, which attaches weight even to form, recognizes the process as a restructuring under the same control, the securities regulator is unlikely to deem that a change in control has occurred as a result. Therefore, once the red chip structure has been dismantled, in general the enterprise can initiate the listing application directly without having to wait two or three years.
Could the government come after the enterprise? Some foreign funds worry that, after the enterprise comes home, its liability could be pursued by the tax, exchange control or other such authorities due to a missing approval procedure or foreign exchange registration procedure or due to a lack of a reasonable source of funds at the time of the red chip structure was erected.
The author finds that rapidly dismantling a red chip structure can resolve the historical defects mentioned above and reduce the duration of the enterprise's violation of the law. Accordingly, this should be done expeditiously. Furthermore, actual tax revenue for the local government can result from restoring a genuine investment relationship and locking in the tax source in China following a red chip structure's dismantling, and business growth and increase in the value of the equity after a listing. Therefore regulators should be motivated to encourage and protect enterprises which dismantle their red chip structures.
Accordingly, it is the author's view that dismantling a red chip structure will not result in government authorities pursuing past liability. Of course, liaising in advance and seeking the government's understanding is important work that cannot be dispensed with when dismantling a red chip structure.
Yang Run is a senior partner of Guangda Law Firm. She can be contacted on +86 20 8732 2282 or by email at ryang@gdlawyer.com
Previous articleCapital connections
Next articleOffshore bound
AllBright Law Offices
Drawing the line for banks handing over personal information in NPL transfers
By Cedric Ding and Emily Tan, AllBright Law Offices
The A-List: Vietnam's Top 100 Lawyers 2021
Deals of the year 2020
The A-List: Who are the elite lawyers being recognised by clients for China-related business?
Rising Stars 2021
CBLJ presents a list of the country's top up-and-coming legal talent
We reveal our 200 elite lawyers from PRC and foreign law firms
How financial institutions reorganise via creditor committees?
By Wang Zhenxiang, Jingtian & Gongcheng
Skipping bids and listing: how non-compliance affects property service providers
By Li Jing and Li Jumei, Grandway Law Offices
Priced to please
By Luna Jin
Our annual billing rates survey reveals Chinese law firms' fees
An inconvenient moment of truth
By Vandana Chatlani
How accountable should lawyers be for our climate woes?
By Avery chen
Senior lawyers from local and national firms analyse service demand and competition in Guangzhou's legal market
PRACTITIONERS' PERSPECTIVES
Guidelines for national carbon emissions trading
By Zhao Shujie, East & Concord Partners
China's personal information protection regime is complete
By Li Chunyi, Zhongzi Law Office
How courts view responsibility of private fund managers
By Jiang Mingze and Yang Qiuci, Shihui Law Office
Decentralised autonomous organisations
By Andrew Godwin


As a foodie and wine lover by nature and by trade there are few things more inspiring than a room full of people who are equally as passionate in these fields. The Taste of Burlington media launch was a successful event guided by the thoughtful details attended to by their team of experts. The truth of the matter is, I ate my way around a room and stopped in the middle for libations, all the while soaking up the enthusiasm for locally farmed and sustainable food and wine. Awesome.
I first toured the room and was overwhelmed with the smells of gourmet fare, the sound of sizzling oil in pans and the familiar grumble that was my empty stomach. I could not justify attending this event sporting anything less than a hearty appetite. Ready to perform a gastro tour of epic proPORTIONS, I decided my approach would be in the order of set-up. My culinary adventure began. Because my appetite knew no bounds, the amount of food I consumed is shocking, and so my highlights are listed below. The comprehensive list could be considered for publishing as a short novel. What does that really mean, though? That each restaurant is offering exciting and innovative dishes that drew me in for a taste. I couldn't help but want to hear the chefs explain their food and introduce me to their culinary creations.
My highlight list begins with one of the first items I sampled at the event. Brought to the event by Ivy Bar & Kitchen, the shitake leek pot stickers were incredible. They were served on a bed of Asian noodles topped with a sweet soy and black sesame seeds. Decadent. The flavours were very well balanced and with an extra piece of shitake placed on top, the dish over delivered on delicious.
The second dish that I can't help but share with you was prepared and served by La Costa Nuova. Part of a restaurant group represented by three establishments, La Costa Nuova brought their A-game with a 12 hour braised short rib topped with a fresh cucumber slaw on crostini. Decadent. The meat melted in my mouth and the cucumber slaw was a beautiful accompaniment, adding a freshness to the savoury short rib. Costa Nuova's sister restaurants in attendance were Walkers Fish Market who served up fresh pacific oysters from P.E.I., and Pepperwood Bistro who mastered butternut squash perfection with a mulligatawny soup.
The next dish was the standout of the day, in my opinion. When I saw the sign that read Queen's Head Pub I was prepared to dive into some classic pub fare. To my delight, the culinary team behind this establishment is not only creative but incredibly skilled. The dish was a sampling from their new menu which is more focused on creative gastronomy and will debut at the pub this week. I had the pleasure of eating slow braised beef backribs on a bed of chestnut chilled orzo with Moroccan salt spice, pumpkin seed oil and edible flowers. It sounds complicated and it looked beautiful, but what I can tell you is that it was so right as I enjoyed every last bite. I have never been to Queen's Head Pub, but they can consider me their newest regular.
And finally an item that comes from the dessert end of the spectrum. It is on this plate that my farm to table sensibility was best satisfied by local flavours. The Water Street Cooker brought dessert, and not just any dessert. A strawberry rhubarb crumble, an amalgamation of some of my favourite flavours. The perfectly moist cake was topped with locally sourced strawberries and rhubarb and finished with a delicious crumble that added a nice sweetness to the tart rhubarb flavor. With each bite this dessert became all the more tempting, and I must say that sponsor winery Flat Rock Cellars' 2011 Pinot Noir Rose was the perfect pairing.
This event was a delicious success, and with the dishes I enjoyed as an indication of what is to come, it is clear that A Taste of Burlington is a must-add to your social calendar. Affordable price-points for creative gourmet (and in some cases, locally sourced) fare, paired with delicious wines and all in your very own backyard. For a list of participating restaurants, pricing and menus visit the Taste of Burlington website. This is the definition of a fabulous life, and I hope you'll join me in supporting the restaurants that are making it happen.
Allie Hughes, Guest Blogger, Hughes & Co.
Allie Hughes is a Niagara based food and wine writer and Partner at Hughes & Co. Her culinary tourism writing has been featured in local publications and large scale publications including WineAlign and Palate Press and she is the resident wine lover on NaturallyInNiagara.ca. Find Allie tasting at a local winery, "plugged in" for her clients or enjoying the local bounty of Niagara with friends and family.


text:
1941: The term, "psychological warfare" was a Nazi concept adapted and "Americanized"
The phrase "psychological warfare" is reported to have first entered English in 1941 as a translated mutation of the Nazi term Weltanschauungskrieg, (meaning world view warfare). It was first embraced by William "Wild Bill" Donovan, a prominent Wall Street lawyer whom President Franklin Roosevelt appointed as Director of the new U.S. intelligence agency, the Office of Strategic Services (OSS, forerunner of the CIA) who saw "psychological warfare" as a tool for "engineering of consent."
Donovan viewed an understanding of Nazi psychological tactics as a vital source of ideas for "Americanized'' versions of many of the same stratagems. Use of the new term quickly became widespread throughout the U.S. intelligence community. . . Donovan was among the first in the US to articulate a more or less unified theory of psychological warfare. . . As he saw it, the "engineering of consent" techniques used in peacetime propaganda campaigns could be quite effectively adapted to open warfare. Pro-Allied propaganda was essential to reorganizing the U.S. economy for war and for creating public support at home for intervention in Europe, Donovan believed. Fifth-column movements could be employed abroad as sources of intelligence and as morale-builders for populations under Axis control. He saw "special operations" — meaning sabotage, subversion, commando raids, and guerrilla movements — as useful for softening up targets prior to conventional military assaults. (Simpson. Science of Coercion, 1994, p. 24)


text:
Q: Pure CSS carousel behaves incorrectly if there is an overlapping element with pointer-events: none (Chrome and Android) In my testing so far Chrome with mobile inspector or actual Android phone (my Pixel 6) both are experiencing incorrect dragging behavior if there is an overlapping element that has pointer-events: none on it. Amazingly it's working as expected in iOS.
Here's a quick code sandbox I made that shows the issue, you can toggle the overlay on and off and feel how the dragging behavior changes.
https://codesandbox.io/s/brave-violet-bnn8xo
Issue tested on Mac/Chrome and Android Pixel 6 Chrome latest.
Anyone else have this experience?
Edit: to be clear, the issue is that you can't interrupt a throw in progress, like immediately changing your swipe direction after you swipe one way, it gets stuck, doesn't snap, and you need to lift your finger off and reapply to get it working again.

function Main() {
  return (

The blue transparent overlay has pointer-events: none.

Try to interrupt a throw in progress it will bug out

Without overlay.

Try to interrupt a throw in progress it will work as expected

  );
}

class App extends React.Component {
    render() {
        return (

        );
    }
}

// Render it
ReactDOM.render(
    <App />,
    document.getElementById("root")
);
.App {
  font-family: sans-serif;
  text-align: center;
}

.testSection {
  max-width: 100vw;
}

.testSectionInner {
  overflow: scroll hidden;
  padding-left: 1.25rem;
  display: flex;
  flex-flow: row nowrap;
  scroll-snap-type: x mandatory;
}

.testItem {
  scroll-snap-align: center;
  flex: 0 0 calc(81.6591%);
  background-color: red;
  height: 200px;
  margin-right: 4%;
  pointer-events: auto;
}

.testOverlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 300px;
  background-color: blue;
  opacity: 0.2;
  pointer-events: none;
}