text:
Q: Migrating a Quart project with websockets from asyncio to trio I'm trying to convert my asyncio project to trio.
I understand that I have to use memory channels instead of Queues but for some reason I don't have the result I'm expecting.
My main problem is that when I run two clients, the first one does not get notified if the second one leaves (broadcasting the 'part' message from the server raises an error).
Another problem is that sometimes the client exits immediately when opening the websocket.
When I use asyncio, everything works fine.
Here is the stack trace I get when the second client is disconnecting:
[2021-07-30 18:39:51,899] ERROR in app: Exception on websocket /ws
Traceback (most recent call last):
  File "/tmp/debug/venv/lib/python3.9/site-packages/quart_trio/app.py", line 175, in handle_websocket
    return await self.full_dispatch_websocket(websocket_context)
  File "/tmp/debug/venv/lib/python3.9/site-packages/quart_trio/app.py", line 197, in full_dispatch_websocket
    result = await self.handle_user_exception(error)
  File "/tmp/debug/venv/lib/python3.9/site-packages/quart_trio/app.py", line 166, in handle_user_exception
    raise error
  File "/tmp/debug/venv/lib/python3.9/site-packages/quart_trio/app.py", line 195, in full_dispatch_websocket
    result = await self.dispatch_websocket(websocket_context)
  File "/tmp/debug/venv/lib/python3.9/site-packages/quart/app.py", line 1651, in dispatch_websocket
    return await self.ensure_async(handler)(**websocket_.view_args)
  File "/tmp/debug/server.py", line 103, in wsocket
    nursery.start_soon(receiving, u)
  File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 815, in __aexit__
    raise combined_error_from_nursery
trio.MultiError: Cancelled(), Cancelled(), Cancelled()

Details of embedded exception 1:

  Traceback (most recent call last):
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 1172, in raise_cancel
      raise Cancelled._create()
  trio.Cancelled: Cancelled

Details of embedded exception 2:

  Traceback (most recent call last):
    File "/tmp/debug/server.py", line 68, in receiving
      data = await websocket.receive_json()
    File "/tmp/debug/venv/lib/python3.9/site-packages/quart/wrappers/websocket.py", line 68, in receive_json
      data = await self.receive()
    File "/tmp/debug/venv/lib/python3.9/site-packages/quart/wrappers/websocket.py", line 57, in receive
      return await self._receive()
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_channel.py", line 314, in receive
      return await trio.lowlevel.wait_task_rescheduled(abort_fn)
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_traps.py", line 166, in wait_task_rescheduled
      return (await _async_yield(WaitTaskRescheduled(abort_func))).unwrap()
    File "/tmp/debug/venv/lib/python3.9/site-packages/outcome/_impl.py", line 138, in unwrap
      raise captured_error
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 1172, in raise_cancel
      raise Cancelled._create()
  trio.Cancelled: Cancelled

Details of embedded exception 3:

  Traceback (most recent call last):
    File "/tmp/debug/server.py", line 54, in sending
      data = await u.queue_recv.receive()
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_channel.py", line 314, in receive
      return await trio.lowlevel.wait_task_rescheduled(abort_fn)
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_traps.py", line 166, in wait_task_rescheduled
      return (await _async_yield(WaitTaskRescheduled(abort_func))).unwrap()
    File "/tmp/debug/venv/lib/python3.9/site-packages/outcome/_impl.py", line 138, in unwrap
      raise captured_error
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 1172, in raise_cancel
      raise Cancelled._create()
  trio.Cancelled: Cancelled

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "/tmp/debug/server.py", line 63, in sending
      await broadcast({'type': 'part', 'data': u.name})
    File "/tmp/debug/server.py", line 75, in broadcast
      await user.queue_send.send(message)
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_channel.py", line 159, in send
      await trio.lowlevel.checkpoint_if_cancelled()
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 2361, in checkpoint_if_cancelled
      await _core.checkpoint()
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 2339, in checkpoint
      await _core.wait_task_rescheduled(lambda _: _core.Abort.SUCCEEDED)
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_traps.py", line 166, in wait_task_rescheduled
      return (await _async_yield(WaitTaskRescheduled(abort_func))).unwrap()
    File "/tmp/debug/venv/lib/python3.9/site-packages/outcome/_impl.py", line 138, in unwrap
      raise captured_error
    File "/tmp/debug/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 1172, in raise_cancel
      raise Cancelled._create()
  trio.Cancelled: Cancelled

Here is the code (set TRIO to False to use asyncio):
server.py
#!/usr/bin/env python
from quart import Quart, websocket, request, jsonify, json
from quart_trio import QuartTrio
from functools import wraps
import uuid
import trio
import asyncio
from quart_auth import AuthUser, AuthManager, login_user, _AuthSerializer

TRIO = True

if TRIO:
    app = QuartTrio(__name__)
else:
    app = Quart(__name__)
app.secret_key = '**changeme**'

authorized_users = set()

class User(AuthUser):
    @staticmethod
    def current():
        token = websocket.cookies['QUART_AUTH']
        serializer = _AuthSerializer('**changeme**', 'quart auth salt')
        user_id = serializer.loads(token)
        for u in authorized_users:
            if u.auth_id == user_id:
                return u
        return None

    def __init__(self, auth_id):
        super().__init__(auth_id)
        self.name = None
        self.queue = None # asyncio
        self.queue_send = None #trio
        self.queue_recv = None #trio
        self.connected = False
        self.websockets = set()

    def to_dict(self):
        return {
            'id': self.auth_id,
            'name': self.name
        }

auth_manager = AuthManager()
auth_manager.user_class = User

async def sending(u: User):
    await broadcast({'type': 'join', 'data': u.name})
    try:
        while True:
            if TRIO:
                data = await u.queue_recv.receive()
            else:
                data = await u.queue.get()
            for s in u.websockets:
                await s.send_json(data)
    finally:
        u.websockets.remove(websocket._get_current_object())
        if len(u.websockets) == 0:
            u.connected = False
            await broadcast({'type': 'part', 'data': u.name})

async def receiving(u: User):
    while True:
        data = await websocket.receive_json()
        if data['type'] == 'msg':
            await broadcast({'type': 'msg', 'user': u.name, 'data': data['data']})

async def broadcast(message):
    for user in [u for u in authorized_users if u.connected]:
        if TRIO:
            await user.queue_send.send(message)
        else:
            await user.queue.put(message)

@app.route('/api/v1/auth', methods=['POST'])
async def auth_login():
    data = await request.json
    user_id = str(uuid.uuid4())[:8]
    u = User(user_id)
    u.name = data['login'] or 'Anonymous'+user_id
    if TRIO:
        u.queue_send, u.queue_recv = trio.open_memory_channel(float('inf'))
    else:
        u.queue = asyncio.Queue()
    login_user(u, True)
    authorized_users.add(u)
    return jsonify({'id': user_id, 'name': u.name}), 200

@app.websocket('/ws')
async def wsocket():
    u = User.current()
    if u is None:
        return
    u.websockets.add(websocket._get_current_object())
    u.connected = True
    if TRIO:
        async with trio.open_nursery() as nursery:
            nursery.start_soon(sending, u)
            nursery.start_soon(receiving, u)
    else:
        producer = asyncio.create_task(sending(u))
        consumer = asyncio.create_task(receiving(u))
        await asyncio.gather(producer, consumer)

auth_manager.init_app(app)

if __name__ == "__main__":
    app.run(host='localhost', port=8080)

client.py
#!/usr/bin/env python

import asks
import trio
import trio_websocket
import json

asks.init(trio)

class User:
    def __init__(self, name: str="") -> None:
        self.name = name

class Client(User):
    def __init__(self) -> None:
        super(Client, self).__init__()
        self.web_url = 'http://localhost:8080/api/v1'
        self.ws_url = 'ws://localhost:8080/ws'
        self.ws = None
        self.nursery = None
        self.cookiejar = {}

    async def send(self, msg: dict) -> None:
        if self.ws is not None:
            await self.ws.send_message(json.dumps(msg))

    async def reader(self, websocket) -> None:
        while True:
            try:
                message_raw = await websocket.get_message()
                msg = json.loads(message_raw)
                if msg['type'] == 'msg':
                    print(f"<{msg['user']}> {msg['data']}")
                elif msg['type'] == 'join':
                    print(f"* {msg['data']} joined")
                elif msg['type'] == 'part':
                    print(f"* {msg['data']} left")
            except trio_websocket.ConnectionClosed:
                break

    async def login(self) -> None:
        rlogin = await asks.post(self.web_url + '/auth', json={'login': self.name, 'password': 'password'})
        for c in rlogin.cookies:
            if c.name == 'QUART_AUTH':
                self.cookiejar = {'QUART_AUTH': c.value}

    async def connect(self) -> None:
        await self.login()
        async with trio_websocket.open_websocket_url(self.ws_url, extra_headers=[('Cookie', 'QUART_AUTH'+'='+self.cookiejar['QUART_AUTH'])]) as websocket:
            self.ws = websocket
            await self.send({'type': 'msg', 'data': 'hello'})
            async with trio.open_nursery() as nursery:
                self.nursery = nursery
                nursery.start_soon(self.reader, websocket)

    def run(self) -> None:
        trio.run(self.connect)

c = Client()
c.name = 'clientA'
c.run()

Edit: I tested using anyio and while anyio+trio acts the same, anyio+asyncio reproduces the problem (without any exception). So I guess it comes from the Queue replacement.

A: Ok, @tibs, I think I've found the issue. The problem is with the way that Trio handles cancellation. For full docs, have a read of this doc:
https://trio.readthedocs.io/en/stable/reference-core.html#cancellation-and-timeouts
However, to explain what's going on here, when a user disconnects, what Quart-Trio does is raises a Cancelled exception in every coroutine that's running/waiting under that that websocket. For a websocket-user, there are two spots that will currently be waiting:
In async def sending(u: User):
async def sending(u: User):
    await broadcast({'type': 'join', 'data': u.name})
    try:
        while True:
            if TRIO:
                data = await u.queue_recv.receive()  <--- Code is waiting here, Cancelled is raised here
            else:
                data = await u.queue.get()
            for s in u.websockets:
                await s.send_json(data)
    finally:
        u.websockets.remove(websocket._get_current_object())
        if len(u.websockets) == 0:
            u.connected = False
            await broadcast({'type': 'part', 'data': u.name})

In async def receiving(u: User):
async def receiving(u: User):
    while True:
        data = await websocket.receive_json()   <--- Code is waiting here, Cancelled is raised here
        if data['type'] == 'msg':
            await broadcast({'type': 'msg', 'user': u.name, 'data': data['data']})

Okay, so what happens from here? Well, in the sending() function we move down to the finally block, which begins executing, but then we call another awaitable function:
    finally:
        u.websockets.remove(websocket._get_current_object())
        if len(u.websockets) == 0:
            u.connected = False
            await broadcast({'type': 'part', 'data': u.name})  <--- we call an awaitable here

From the Trio docs:

Cancellations in Trio are "level triggered", meaning that once a block has been cancelled, all cancellable operations in that block will keep raising Cancelled.

So when await broadcast(...) is called, it is immediately Cancelled, unlike asyncio which behaves differently. This explains why your "part" message is never sent. So when trio, if you want to do some cleanup work while you are being cancelled, you should open a new cancel scope, and shield it from being cancelled, like this:
async def sending(u: User):
    await broadcast({'type': 'join', 'data': u.name})
    try:
        while True:
            if TRIO:
                data = await u.queue_recv.receive()  <--- Code is waiting here, Cancelled is raised here
            else:
                data = await u.queue.get()
            for s in u.websockets:
                await s.send_json(data)
    finally:
        u.websockets.remove(websocket._get_current_object())
        if len(u.websockets) == 0:
            u.connected = False
            with trio.move_on_after(5) as leaving_cancel_scope:
                # Shield from the cancellation for 5s to run the broadcast of leaving
                leaving_cancel_scope.shield = True
                await broadcast({'type': 'part', 'data': u.name})

Or alternatively you could start the broadcast coroutine on the app nursery. Be aware that if the broadcast(...) crashes you will the crash the whole running app, unless you put a try/except in the broadcast(...) function:
async def sending(u: User):
    await broadcast({'type': 'join', 'data': u.name})
    try:
        while True:
            if TRIO:
                data = await u.queue_recv.receive()
            else:
                data = await u.queue.get()
            for s in u.websockets:
                await s.send_json(data)
    finally:
        u.websockets.remove(websocket._get_current_object())
        if len(u.websockets) == 0:
            u.connected = False
            app.nursery.start_soon(broadcast, {'type': 'part', 'data': u.name})

After this you still get the Cancelled exceptions flowing through to your websocket function, so you may want to catch them there. Be aware you will need to catch BaseException to catch errors, some thing like:
@app.websocket('/ws')
async def wsocket():
    u = User.current()
    if u is None:
        return
    u.websockets.add(websocket._get_current_object())
    u.connected = True
    if TRIO:
        try:
            async with trio.open_nursery() as nursery:
                nursery.start_soon(sending, u)
                nursery.start_soon(receiving, u)
        except BaseException as e:
            print(f'websocket funcs crashed with exception: {e}')

In particular this is because trio doesn't allow you to silently drop exceptions, you need to either catch them or crash. I hope this is enough to get you started on fixing the issues you are seeing.


text:
Books About Domestic Adoptions in Australia
Adoption Deception: A Personal and Professional Journey
by Penny Mackieson
Have you ever wondered how it might feel to have been adopted in Australia during the pre-1980s era in which vulnerable young mothers were coerced into relinquishing their babies? How
An Australian Son
by Gordon Matthews
Autobiography of Gordon Matthews. Adopted at birth, he grew up in the 1950s in middle class Kew. Through a series of circumstances Matthews came to believe he was of Aboriginal
Heartlines: The Year I Met My Other Mother
by Susannah McFarlane and Robin Leuba
In 1965, Robin, unmarried and pregnant, comes to Melbourne to give birth and give her baby up for adoption, then returns to Perth to resume her life having never seen
Surviving Secrets
by Margaret Watson
A true story that reveals the strength and resilience of the human spirit in the face of betrayal, grief and loss. At age forty, Margaret Watson learned she was adopted.
The Mothers
by Rod Jones
In 1917, while the world is at war, Alma and her children are living in a sleep-out at the back of Mrs Lovett's house in working-class Footscray. When Alma falls
Too Afraid To Cry
by Ali Cobby Eckermann
In Too Afraid to Cry, Ali Cobby Eckermann―who was recently awarded the Windham-Campbell Prize, one of the most prestigious literary awards in the world―describes with searing detail the devastating effects of

redpajama_set_name: RedPajamaCommonCrawl


https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png 0 0 AskTheLawyers™ https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png AskTheLawyers™2014-07-23 12:09:072017-09-14 19:24:01How is a Plane Crash Investigated?
Are Concussions The Only Way Football Players Can Damage Their Brains?
https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png 0 0 AskTheLawyers™ https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png AskTheLawyers™2014-05-23 16:50:522017-09-14 19:24:03Are Concussions The Only Way Football Players Can Damage Their Brains?
Is Distracted Driving A Serious Issue?
https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png 0 0 AskTheLawyers™ https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png AskTheLawyers™2014-05-05 08:38:462017-09-14 19:24:22Is Distracted Driving A Serious Issue?
Will Cell Phone Bans While Driving Be Effective At Making Our Roads Safer?
https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png 0 0 AskTheLawyers™ https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png AskTheLawyers™2014-04-10 13:10:142017-09-14 19:24:22Will Cell Phone Bans While Driving Be Effective At Making Our Roads Safer?
Can real estate or business brokers be legally denied fees?
https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png 0 0 AskTheLawyers™ https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png AskTheLawyers™2013-09-20 09:44:562017-09-14 19:24:25Can real estate or business brokers be legally denied fees?
https://cdn.askthelawyers.com/wp-content/uploads/2013/09/27111254/girl-at-group-therapy-836507932_5764x3786-e1538145329955.jpeg 591 900 AskTheLawyers™ https://www.askthelawyers.com/wp-content/uploads/2018/05/Asset-2-300x40.png AskTheLawyers™2013-09-19 16:37:422018-09-27 11:36:27Are There Laws Against Sexual Harassment in Schools?


All the great taste of Wolferman's® signature English muffins in a smaller size. These fun treats, the smallest of our three sizes, are great for a light breakfast, a quick snack or making hors d'oeuvres. Discover all the ways to make the day a little more toasty. A bevy of muffins—72 in all! Kosher.


text:
Subpart 24.2 - Freedom of Information Act
FAC Number: 2023-01
PartPart 1Part 2Part 3Part 4Part 5Part 6Part 7Part 8Part 9Part 10Part 11Part 12Part 13Part 14Part 15Part 16Part 17Part 18Part 19Part 20Part 21Part 22Part 23Part 24Part 25Part 26Part 27Part 28Part 29Part 30Part 31Part 32Part 33Part 34Part 35Part 36Part 37Part 38Part 39Part 40Part 41Part 42Part 43Part 44Part 45Part 46Part 47Part 48Part 49Part 50Part 51Part 52Part 53
Subpart24.024.124.224.3
Section24.20124.20224.203
Parent topic: Part 24 - Protection of Privacy and Freedom of Information
24.201 Authority.
The Freedom of Information Act ( 5 U.S.C.552, as amended) provides that information is to be made available to the public either by-
(a) Publication in the Federal Register;
(b) Providing an opportunity to read and copy records at convenient locations; or
(c) Upon request, providing a copy of a reasonably described record.
24.202 Prohibitions.
(a) A proposal in the possession or control of the Government, submitted in response to a competitive solicitation, shall not be made available to any person under the Freedom of Information Act. This prohibition does not apply to a proposal, or any part of a proposal, that is set forth or incorporated by reference in a contract between the Government and the contractor that submitted the proposal. (See 10 U.S.C. 3309 and 41 U.S.C.4702.)
(b) No agency shall disclose any information obtained pursuant to 15.403-3(b) that is exempt from disclosure under the Freedom of Information Act. (See 10 U.S.C. 3705(c)(3) and 41 U.S.C.3505(b)(3).)
(c) A dispute resolution communication that is between a neutral person and a party to alternative dispute resolution proceedings, and that may not be disclosed under 5 U.S.C.574, is exempt from disclosure under the Freedom of Information Act ( 5 U.S.C.552(b)(3)).
24.203 Policy.
(a) The Act specifies, among other things, how agencies shall make their records available upon public request, imposes strict time standards for agency responses, and exempts certain records from public disclosure. Each agency's implementation of these requirements is located in its respective title of the Code of Federal Regulations and referenced in subpart 24.2 of its implementing acquisition regulations.
(b) Contracting officers may receive requests for records that may be exempted from mandatory public disclosure. The exemptions most often applicable are those relating to classified information, to trade secrets and confidential commercial or financial information, to interagency or intra-agency memoranda, or to personal and medical information pertaining to an individual. Other exemptions include agency personnel practices, and law enforcement. Since these requests often involve complex issues requiring an in-depth knowledge of a large and increasing body of court rulings and policy guidance, contracting officers are cautioned to comply with the implementing regulations of their agency and to obtain necessary guidance from the agency officials having Freedom of Information Act responsibility. If additional assistance is needed, authorized agency officials may contact the Department of Justice, Office of Information and Privacy. A Freedom of Information Act guide and other resources are available at the Department of Justice website under FOIA reference materials: http://www.usdoj.gov/oip.
Far Parts
Regulations FAR Menu
List of Sections Affected
DOD Deviations
CAAC Deviations
FAC Changes


Family Care International is dedicated to improving women's reproductive health around the world. Campaign Consultation united this organization's international offices in Africa and Latin America through communication and sustainability training. These trainings highlighted ways to build stronger on-the-ground partnerships and enhance their positions in the international arena, thereby increasing their visibility to potential funders and supporters of their cause.
This entry was posted in Fund Raising, International Development.


Influenza is often called "the flu" and is a virus that can affect millions of people each year. Recent news has reported multiple flu related deaths in Texas. The medical doctors at Questcare Medical Clinic recommend individuals always take influenza symptoms seriously and consult a doctor.
Symptoms often associated with influenza include fever, chills, nausea, fatigue, and body aches. The virus can persist in an individual for ten days or more. Pregnant women, children and the elderly are at a higher risk of experiencing complications from the virus.
Each year the Center for Disease Control (CDC) identifies the strain of influenza that they believe will be most common during the next flu season. Once identified the weakened strain of influenza is manufactured into a vaccine that becomes highly effective in preventing individuals from contracting the flu virus. The CDC recommends all adults and children over the age of six months be vaccinated at the beginning of the flu season for maximum protection against the virus. Influenza season begins in early November and lasts until March with peak infections occurring in January and February.
Questcare Urgent Care wants your family to be healthy this flu season. We offer a range of quick, low-cost vaccinations for the entire family. The medical team at Questcare Medical Clinic recommends those at risk see us. If you think you are at risk, or would like to be checked, come to our urgent care for an appointment at one of our convenient locations.


One of our major focuses for 2012 has been giving back in the communities where we live and work. In keeping with that theme, our team members are volunteering their time this holiday season to give back to the less fortunate.
Just before Thanksgiving, more than 40 Tampa-based employees volunteered for half-day shifts in the Metropolitan Ministries Holiday Tent. Teams stocked shelves with canned food and dry goods, and helped local needy families choose which items they'd like for their Thanksgiving meal. Celebrating its 40th year, Metropolitan Ministries provided holiday meals for more than 2,200 families in November alone.
Our Houston team will be volunteering at the Houston Food Bank phone center in early December. Phone volunteers register clients by phone to receive holiday food boxes from the food bank. According to the website, tens of thousands of people in the greater Houston area receive access the food they need over the holidays through these volunteer efforts.
Employees across the country are also hosting food, clothing and toy drives for their local charities. Stay tuned to read more about these drives.
A few members of the Tampa Systems Integration group met on the paintball battlefield with some of our customers. The event was nicknamed Paint Brawl 2011 and was designed to build even deeper relationship with these clients, while thanking them for their loyalty. By all measures, the event was a huge success and it is bound to be an annual tradition in Tampa.


The two correctional facilities had become for many juvenile justice advocates thesymbol of everything that could go wrong in a state system, with allegations of overcrowding, systemic abuse and near-Victorian squalor over almost a decade.
Walker's plan calls for seeking the $80 million in funding in 2019.
Multiple sources said it's possible that three of the new juvenile facilities will be located in southeastern Wisconsin, however it is unknown if any facility will be located in Racine County. An additional mental health facility would be built on the campus of the Mendota Juvenile Treatment Center in Madison for female inmates.
Scott Walker's plan to move juvenile inmates out of a facility under federal investigation wouldn't be implemented until after voters decide whether to re-elect him this fall.
166 inmates remain at Lincoln Hills and Copper Lake - down about 40 percent from two years ago. Investigations showed the facilities improperly trained staff, did not preserve video evidence, failed to document serious incidents and often failed to report incidents to parents and police, according to reports by the Milwaukee Journal Sentinel.
"Republicans and Democrats alike agree this is the way forward to reform juvenile corrections", Walker said.
Each new facility will consist of 32-to-36 beds - with the money coming from new budgetary allotments by the DOC and the Department of Health Services. He says nothing in Walker's plan ensures Wisconsin will have an effective approach. "After years of neglect, and ignoring the many legislative proposals that I introduced to bring relief to juveniles and correctional officers, Governor Walker is just now getting to do his job right in time for another election bid", Taylor said in a statement.
Many key details are yet to be determined, however, including how education programs would be provided to the inmates and whether converting the Irma campus into an adult facility would require the approval of Lincoln County officials. How many lives have been ruined?
State Superintendent Tony Evers, who is running against Walker for governor and has made the troubles at Lincoln Hills central to his argument to unseat Walker, said Walker's plan doesn't wash away the years of problems at the facility.
"It's going to leave us with the same problem", he said. "That's what we need, not a career politician who operates out of fear".
"We'll see how those five work out", Wanggaard said.
"Part of the reason why this is workable to make this change is right now we have a question of do we build a new facility to deal with the adult population", said Gov.
But Doug Curtis - a former Lincoln Hills staff member - disagrees.
"If the Legislature wants to advance the plan sooner we would be supportive of those efforts", he said.
Children at Lincoln Hills and Copper Lake were routinely placed in solitary confinement, put in mechanical restraints, pepper-sprayed, and strip-searched.
ValuEngine raised shares of Omega Healthcare Investors from a "hold" rating to a "buy" rating in a report on Monday, October 2nd. Ownership at Omega Healthcare Investors, Inc . (NYSE:OHI) has risen 8.55% since January 12, 2017 and is uptrending.
Pacifica Capital Investments Llc holds 13.24% of its portfolio in The Goldman Sachs Group, Inc . for 107,086 shares. Barclays started coverage on Take-Two Interactive Software in a research report on Wednesday, October 4th.
Leucadia National Corporation ( Leucadia ) is a diversified holding company focused on return on investment and long-term value. Several other institutional investors have also sold shares of the company. 51 funds opened positions while 95 raised stakes.
In response to the reports , Trump tweeted that his language was " tough , but this was not the language used". Around 10:15 a.m., Trump returned Durbin's call and was told about the main elements of the deal.
The newest site, the Wenchang Satellite Launch Centre on Hainan island, is a coastal site, bringing launches into a more open age. The clip below shows just that happening, with an explosion occurring on impact behind buildings.
The average Wall Street analyst rating for Hi-Crush Partners LP is Strong Buy, according to the average of 10 analyst scores. Ninepoint Partners LP bought a new position in shares of Hi-Crush Partners in the third quarter valued at about $15,200,000.


text:
<?php

/**
 * Abstract base class for child drivers to hydrate the object graph in to
 * various data types. For example Doctrine_Record instances or PHP arrays
 *
 * @package     Doctrine
 * @subpackage  Hydrate
 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
 * @link        www.doctrine-project.org
 * @since       1.0
 * @version     $Revision$
 * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
 * @author      Roman Borschel <roman@code-factory.org>
 * @author      Jonathan H. Wage <jonwage@gmail.com>
 */
abstract class Doctrine_Hydrator_Graph extends Doctrine_Hydrator_Abstract
{
    protected $_tables = array();

    /**
     * Gets the custom field used for indexing for the specified component alias.
     *
     * @return string  The field name of the field used for indexing or NULL
     *                 if the component does not use any custom field indices.
     */
    protected function _getCustomIndexField($alias)
    {
        return isset($this->_queryComponents[$alias]['map']) ? $this->_queryComponents[$alias]['map'] : null;
    }

    public function hydrateResultSet($stmt)
    {
        // Used variables during hydration
        reset($this->_queryComponents);
        $rootAlias = key($this->_queryComponents);
        $this->_rootAlias = $rootAlias;
        $rootComponentName = $this->_queryComponents[$rootAlias]['table']->getComponentName();
        // if only one component is involved we can make our lives easier
        $isSimpleQuery = count($this->_queryComponents) <= 1;
        // Holds the resulting hydrated data structure
        $result = array();
        // Holds array of record instances so we can call hooks on it
        $instances = array();
        // Holds hydration listeners that get called during hydration
        $listeners = array();
        // Lookup map to quickly discover/lookup existing records in the result
        $identifierMap = array();
        // Holds for each component the last previously seen element in the result set
        $prev = array();
        // holds the values of the identifier/primary key fields of components,
        // separated by a pipe '|' and grouped by component alias (r, u, i, ... whatever)
        // the $idTemplate is a prepared template. $id is set to a fresh template when
        // starting to process a row.
        $id = array();
        $idTemplate = array();

        // Initialize
        foreach ($this->_queryComponents as $dqlAlias => $data) {
            $componentName = $data['table']->getComponentName();
            $instances[$componentName] = $data['table']->getRecordInstance();
            $listeners[$componentName] = $data['table']->getRecordListener();
            $identifierMap[$dqlAlias] = array();
            $prev[$dqlAlias] = null;
            $idTemplate[$dqlAlias] = '';
        }
        $cache = array();

        $result = $this->getElementCollection($rootComponentName);
        if ($result instanceof Doctrine_Collection && $indexField = $this->_getCustomIndexField($rootAlias)) {
            $result->setKeyColumn($indexField);
        }
        if ($stmt === false || $stmt === 0) {
            return $result;
        }

        // Process result set
        $cache = array();

        $event = new Doctrine_Event(null, Doctrine_Event::HYDRATE, null);

        if ($this->_hydrationMode == Doctrine_Core::HYDRATE_ON_DEMAND) {
            if ( ! is_null($this->_priorRow)) {
                $data = $this->_priorRow;
                $this->_priorRow = null;
            } else {
                $data = $stmt->fetch(Doctrine_Core::FETCH_ASSOC);
                if ( ! $data) {
                    return $result;
                }
            }
            $activeRootIdentifier = null;
        } else {
            $data = $stmt->fetch(Doctrine_Core::FETCH_ASSOC);
            if ( ! $data) {
                return $result;
            }
        }

        do {
            $table = $this->_queryComponents[$rootAlias]['table'];

            if ($table->getConnection()->getAttribute(Doctrine_Core::ATTR_PORTABILITY) & Doctrine_Core::PORTABILITY_RTRIM) {
                array_map('rtrim', $data);
            }

            $id = $idTemplate; // initialize the id-memory
            $nonemptyComponents = array();
            $rowData = $this->_gatherRowData($data, $cache, $id, $nonemptyComponents);

            if ($this->_hydrationMode == Doctrine_Core::HYDRATE_ON_DEMAND)  {
                if (is_null($activeRootIdentifier)) {
                    // first row for this record
                    $activeRootIdentifier = $id[$rootAlias];
                } else if ($activeRootIdentifier != $id[$rootAlias]) {
                    // first row for the next record
                    $this->_priorRow = $data;
                    return $result;
                }
            }

            //
            // hydrate the data of the root component from the current row
            //
            $componentName = $table->getComponentName();
            // Ticket #1115 (getInvoker() should return the component that has addEventListener)
            $event->setInvoker($table);
            $event->set('data', $rowData[$rootAlias]);
            $listeners[$componentName]->preHydrate($event);
            $instances[$componentName]->preHydrate($event);

            $index = false;

            // Check for an existing element
            if ($isSimpleQuery || ! isset($identifierMap[$rootAlias][$id[$rootAlias]])) {
                $element = $this->getElement($rowData[$rootAlias], $componentName);
                $event->set('data', $element);
                $listeners[$componentName]->postHydrate($event);
                $instances[$componentName]->postHydrate($event);

                // do we need to index by a custom field?
                if ($field = $this->_getCustomIndexField($rootAlias)) {
                    if ( ! isset($element[$field])) {
                        throw new Doctrine_Hydrator_Exception("Couldn't hydrate. Found a non-existent key named '$field'.");
                    } else if (isset($result[$element[$field]])) {
                        throw new Doctrine_Hydrator_Exception("Couldn't hydrate. Found non-unique key mapping named '{$element[$field]}' for the field named '$field'.");
                    }
                    $result[$element[$field]] = $element;
                } else {
                    $result[] = $element;
                }

                $identifierMap[$rootAlias][$id[$rootAlias]] = $this->getLastKey($result);
            } else {
                $index = $identifierMap[$rootAlias][$id[$rootAlias]];
            }

            $this->setLastElement($prev, $result, $index, $rootAlias, false);
            unset($rowData[$rootAlias]);

            // end hydrate data of the root component for the current row

            // $prev[$rootAlias] now points to the last element in $result.
            // now hydrate the rest of the data found in the current row, that belongs to other
            // (related) components.
            foreach ($rowData as $dqlAlias => $data) {
                $index = false;
                $map = $this->_queryComponents[$dqlAlias];
                $table = $map['table'];
                $componentName = $table->getComponentName();
                $event->set('data', $data);
                $event->setInvoker($table);
                $listeners[$componentName]->preHydrate($event);
                $instances[$componentName]->preHydrate($event);

                // It would be nice if this could be moved to the query parser but I could not find a good place to implement it
                if ( ! isset($map['parent'])) {
                    throw new Doctrine_Hydrator_Exception(
                        '"' . $componentName . '" with an alias of "' . $dqlAlias . '"' .
                        ' in your query does not reference the parent component it is related to.'
                    );
                }

                $parent = $map['parent'];
                $relation = $map['relation'];
                $relationAlias = $map['relation']->getAlias();

                $path = $parent . '.' . $dqlAlias;

                if ( ! isset($prev[$parent])) {
                    unset($prev[$dqlAlias]); // Ticket #1228
                    continue;
                }

                $indexField = $this->_getCustomIndexField($dqlAlias);

                // check the type of the relation
                if ( ! $relation->isOneToOne() && $this->initRelated($prev[$parent], $relationAlias, $indexField)) {
                    $oneToOne = false;
                    // append element
                    if (isset($nonemptyComponents[$dqlAlias])) {
                        $indexExists = isset($identifierMap[$path][$id[$parent]][$id[$dqlAlias]]);
                        $index = $indexExists ? $identifierMap[$path][$id[$parent]][$id[$dqlAlias]] : false;
                        $indexIsValid = $index !== false ? isset($prev[$parent][$relationAlias][$index]) : false;
                        if ( ! $indexExists || ! $indexIsValid) {
                            $element = $this->getElement($data, $componentName);
                            $event->set('data', $element);
                            $listeners[$componentName]->postHydrate($event);
                            $instances[$componentName]->postHydrate($event);

                            if ($field = $this->_getCustomIndexField($dqlAlias)) {
                                if ( ! isset($element[$field])) {
                                    throw new Doctrine_Hydrator_Exception("Couldn't hydrate. Found a non-existent key named '$field'.");
                                } else if (isset($prev[$parent][$relationAlias][$element[$field]])) {
                                    throw new Doctrine_Hydrator_Exception("Couldn't hydrate. Found non-unique key mapping named '$field'.");
                                }
                                $prev[$parent][$relationAlias][$element[$field]] = $element;
                            } else {
                                $prev[$parent][$relationAlias][] = $element;
                            }
                            $identifierMap[$path][$id[$parent]][$id[$dqlAlias]] = $this->getLastKey($prev[$parent][$relationAlias]);
                        }
                        $collection = $prev[$parent][$relationAlias];
                        if ($collection instanceof Doctrine_Collection && $indexField) {
                            $collection->setKeyColumn($indexField);
                        }

                        // register collection for later snapshots
                        $this->registerCollection($collection);
                    }
                } else {
                    // 1-1 relation
                    $oneToOne = true;
                    if ( ! isset($nonemptyComponents[$dqlAlias]) && ! isset($prev[$parent][$relationAlias])) {
                        $prev[$parent][$relationAlias] = $this->getNullPointer();
                    } else if ( ! isset($prev[$parent][$relationAlias])) {
                        $element = $this->getElement($data, $componentName);

						// [FIX] Tickets #1205 and #1237
                        $event->set('data', $element);
                        $listeners[$componentName]->postHydrate($event);
                        $instances[$componentName]->postHydrate($event);

                        $prev[$parent][$relationAlias] = $element;
                    }
                }
                if ($prev[$parent][$relationAlias] !== null) {
                    $coll =& $prev[$parent][$relationAlias];
                    $this->setLastElement($prev, $coll, $index, $dqlAlias, $oneToOne);
                }
            }
        } while ($data = $stmt->fetch(Doctrine_Core::FETCH_ASSOC));

        $stmt->closeCursor();
        $this->flush();

        return $result;
    }

    /**
     * Puts the fields of a data row into a new array, grouped by the component
     * they belong to. The column names in the result set are mapped to their
     * field names during this procedure.
     *
     * @return array  An array with all the fields (name => value) of the data row,
     *                grouped by their component (alias).
     */
    protected function _gatherRowData(&$data, &$cache, &$id, &$nonemptyComponents)
    {
        $rowData = array();

        foreach ($data as $key => $value) {
            // Parse each column name only once. Cache the results.
            if ( ! isset($cache[$key])) {
                // check ignored names. fastest solution for now. if we get more we'll start
                // to introduce a list.
                if ($this->_isIgnoredName($key)) {
                    continue;
                }

                $e = explode('__', $key);
                $last = strtolower(array_pop($e));
                $cache[$key]['dqlAlias'] = $this->_tableAliases[strtolower(implode('__', $e))];
                $table = $this->_queryComponents[$cache[$key]['dqlAlias']]['table'];
                $fieldName = $table->getFieldName($last);
                $cache[$key]['fieldName'] = $fieldName;
                if ($table->isIdentifier($fieldName)) {
                    $cache[$key]['isIdentifier'] = true;
                } else {
                  $cache[$key]['isIdentifier'] = false;
                }
                $type = $table->getTypeOfColumn($last);
                if ($type == 'integer' || $type == 'string') {
                    $cache[$key]['isSimpleType'] = true;
                } else {
                    $cache[$key]['type'] = $type;
                    $cache[$key]['isSimpleType'] = false;
                }
            }

            $map = $this->_queryComponents[$cache[$key]['dqlAlias']];
            $table = $map['table'];
            $dqlAlias = $cache[$key]['dqlAlias'];
            $fieldName = $cache[$key]['fieldName'];
            $agg = false;
            if (isset($this->_queryComponents[$dqlAlias]['agg'][$fieldName])) {
                $fieldName = $this->_queryComponents[$dqlAlias]['agg'][$fieldName];
                $agg = true;
            }

            if ($cache[$key]['isIdentifier']) {
                $id[$dqlAlias] .= '|' . $value;
            }

            if ($cache[$key]['isSimpleType']) {
                $preparedValue = $value;
            } else {
                $preparedValue = $table->prepareValue($fieldName, $value, $cache[$key]['type']);
            }

            // Ticket #1380
            // Hydrate aggregates in to the root component as well.
            // So we know that all aggregate values will always be available in the root component
            if ($agg) {
                $rowData[$this->_rootAlias][$fieldName] = $preparedValue;
                if (isset($rowData[$dqlAlias])) {
                    $rowData[$dqlAlias][$fieldName] = $preparedValue;
                }
            } else {
                $rowData[$dqlAlias][$fieldName] = $preparedValue;
            }

            if ( ! isset($nonemptyComponents[$dqlAlias]) && $value !== null) {
                $nonemptyComponents[$dqlAlias] = true;
            }
        }

        return $rowData;
    }

    abstract public function getElementCollection($component);

    abstract public function registerCollection($coll);

    abstract public function initRelated(&$record, $name, $keyColumn = null);

    abstract public function getNullPointer();

    abstract public function getElement(array $data, $component);

    abstract public function getLastKey(&$coll);

    abstract public function setLastElement(&$prev, &$coll, $index, $dqlAlias, $oneToOne);

    public function flush()
    {

    }

    /**
     * Get the classname to return. Most often this is just the options['name']
     *
     * Check the subclasses option and the inheritanceMap for each subclass to see
     * if all the maps in a subclass is met. If this is the case return that
     * subclass name. If no subclasses match or if there are no subclasses defined
     * return the name of the class for this tables record.
     *
     * @todo this function could use reflection to check the first time it runs
     * if the subclassing option is not set.
     *
     * @return string The name of the class to create
     *
     */
    protected function _getClassnameToReturn(array &$data, $component)
    {
        if ( ! isset($this->_tables[$component])) {
            $this->_tables[$component] = Doctrine_Core::getTable($component);
        }

        if ( ! ($subclasses = $this->_tables[$component]->getOption('subclasses'))) {
            return $component;
        }

        $matchedComponents = array($component);
        foreach ($subclasses as $subclass) {
            $table = Doctrine_Core::getTable($subclass);
            $inheritanceMap = $table->getOption('inheritanceMap');
            if (count($inheritanceMap) > 1) {
                $needMatches = count($inheritanceMap);
                foreach ($inheritanceMap as $key => $value) {
                    $key = $this->_tables[$component]->getFieldName($key);
                    if ( isset($data[$key]) && $data[$key] == $value) {
                        --$needMatches;
                    }
                }
                if ($needMatches == 0) {
                    $matchedComponents[] = $table->getComponentName();
                }
            } else {
                list($key, $value) = each($inheritanceMap);
                $key = $this->_tables[$component]->getFieldName($key);
                if ( ! isset($data[$key]) || $data[$key] != $value) {
                    continue;
                } else {
                    $matchedComponents[] = $table->getComponentName();
                }
            }
        }

        $matchedComponent = $matchedComponents[count($matchedComponents)-1];

        if ( ! isset($this->_tables[$matchedComponent])) {
            $this->_tables[$matchedComponent] = Doctrine_Core::getTable($matchedComponent);
        }

        return $matchedComponent;
    }
}

redpajama_set_name: RedPajamaGithub


text:
Fight Utility Rate Increases
Pipeline Resistance
Building a Movement
Be the Spark
Climate Justice Congregations
Workshops & Custom Programs
Youth N' Power
Climate Justice Households
Sacred Action Blog
Firelight: Wisdom & Inspiration
MNIPL In the News
Our Interns & Fellows
Northern Minnesota
Whitney Terrill
whitney@mnipl.org
2021-04-24 Sat, April 24, 2021 - 2023-01-28 Now
Sat, April 24, 2021, 7:00 pm - 8:10 pm CDT
Interfaith Unity Iftaar 2021
Minnesota Interfaith Power & Light, Gandhi Mahal, and our interfaith partners welcome your partnership at our 7th annual Interfaith Unity Iftaar. This event is held each year during Ramadan, a season of fasting and reflection for Muslims all over the world. People of all faiths and spiritual practices are invited to join the Unity Iftaar…
Sun, August 22, 2021, 4:00 pm - 5:00 pm CDT
Muslim Climate Action Circle with Imam Saffet Catovic
This month's Muslim Climate Action Circle features special guest speaker Imam Saffet Catovic. Join us as Imam Catovic shares about his leadership, activism, and a recent trip to Minnesota at the 2021 Treaty People Gathering. The Muslim Climate Action Circle meets on the 4th Sunday of each month at 4:00 pm. This online community conversation…
Sun, September 12, 2021, 4:00 pm - 5:00 pm CDT
It Takes All of Us to Stop Line 3: Muslim Community Call
Indigenous people and allies are rising up to stop Line 3 and build back a fossil free world. In this call, members of the Muslim community will share how their practice of Islam informs intentionality and sacred activism to protect water and our planet. This talk will center on concepts of mercy and eco-spirituality from…
Mon, September 20, 2021, 10:00 am - 11:00 am CDT
Faith & Climate Summit: The Final Sprint to COP26
Join an interfaith discussion with the global interfaith community about our role heading into the UN Climate Change Conference (COP26) and beyond. The UK COP26 President will give an update on the status of negotiations. We will also announce new faith-based climate commitments. MNIPL is proud to co-sponsor this Faith & Climate Summit. CLICK HERE…
Tue, September 28, 2021, 5:00 pm - 6:00 pm CDT
It Takes All of Us to Stop Line 3: Catholic Community Call
Indigenous people and allies are rising up to stop Line 3 and build back a fossil free world. Join leaders from the Catholic community for a call to prayer, movement, and action. As they've shared, this gathering is a great way to prepare for the coming "Season of Creation" with time for prayer, song, and…
Mon, December 6, 2021, 7:00 pm - 8:30 pm CST
It Takes All of Us: UU Community Call to End Fossil Fuels
Join this rich conversation with a group of Unitarian Universalist lay leaders, ministers, and community organizers from across Minnesota and our national body. In this community call, we will share the current priorities of the Line 3 movement and developments in how we can stop all fossil fuel projects, including through divestments. We will deepen…
Sun, February 20, 2022, 2:00 pm - 5:30 pm CST
People's Movement Assembly 2022
Liberty's Northside Healing Space 2100 Emerson Avenue N, Minneapolis, MN
Join this 4th annual event as we rethink, regenerate community visions for a just climate future. We will gather online (via Zoom) or in-person at the Northside Healing Space in Minneapolis. All are welcome! Come to be energized, connected, and invigorated!
Featured Featured Sun, April 3, 2022, 6:00 pm - 9:00 pm CDT
Minnesota Interfaith Power & Light, Gandhi Mahal, and our interfaith partners welcome your presence at our 8th annual Interfaith Unity Iftaar. This event is held each year during Ramadan, a season of fasting and reflection for Muslims all over the world. People of all faiths and spiritual practices are invited to join the Unity Iftaar…
Wed, April 27, 2022, 5:00 pm - 6:00 pm CDT Recurring Event Hennepin County Zero Waste – Community Webinar
Hennepin County Zero Waste – Community Webinar
Do you live in Hennepin County? Are you curious about what happens to trash or interested in contributing feedback about the solid waste system? Join us for this community webinar to learn more and engage with experts and fellow residents. We especially welcome people who have traditionally been left out of planning processes and who…
Sun, November 27, 2022, 4:00 pm - 5:00 pm CST Recurring Event Muslim Climate Action Circle
Muslim Climate Action Circle
Join this online community conversation that reflects on climate justice topics through the lens of Islam. MCAC meets on the 4th Sundays at 4:00 pm and is open to people from all religious traditions and spiritual practices. To register or if you have any questions, please contact Whitney Terrill, [email protected]
4407 E Lake St
Copyright © 2023 All Rights Reserved – Minnesota Interfaith Power & Light. MNIPL is a state affiliate of Interfaith Power & Light.


McDonald's is offering New Yorkers (and tri-state area residents) any size — small, medium or large — of its best-selling Premium Roast Blend coffee for only $1, for a limited time.
Made with 100% Arabica beans and freshly brewed every 30 minutes, McDonald's Premium Roast Blend is sourced from the rich-coffee bearing soils of Central and South America.
Expertly made by a master-blender trained in the fine art of creating gourmet coffee, customers enjoy over 400 million cups of McDonald's Premium Roast Blend a year.
To help promote its $1 Any Size Premium Roast Blend Coffee offer to the local Asian-American community, McDonald's will distribute specially-produced coupon books in Chinese, Hindi, Korean and Tagalog to Asian households throughout the New York tri-state area at the end of the month.
Featured coupon deals include Free and Buy One, Get One Free offers on a variety of classic and new McDonald's menu items including Big Mac®, McMuffin®, Real Fruit Smoothie, Cherry Berry Chiller and Spicy Chicken McBites®.
"Our $1 Any Size Premium Roast Blend Coffee offer is just the latest example of McDonald's ongoing dedication to providing high quality food at an incredible value," said Tony Scari, McDonald's New York Metro Co-op President.
McDonald's Premium Roast Blend is supplied by Gaviña Gourmet Coffee, a family-owned company that has been in the coffee business for over 130 years as growers, importers and roasters of gourmet coffee.
Twenty-five years ago, Gaviña was asked to create the perfect coffee blend for McDonald's, and they traveled the globe in search of exactly the right combination of coffee beans.
They found it in the rich coffee-bearing soils of Central and South America, and McDonald's Premium Roast Blend was born.
Coffee has always been the Gaviña family's guiding passion, and when Don Francisco Gaviña left Cuba and established a coffee roasting plant in Southern California, he fulfilled a life-long dream.
His children grew up on the plantation and learned to live and love the coffee business at first hand, and Gaviña remains a family company rooted in traditional values.
Today, Gaviña's state of the art facility is located in Southern California.
It's dedicated to creating gourmet coffee, innovative new coffee concepts and, through their training program, teaching McDonald's employees the art of brewing great coffee.
Gaviña prides itself on maintaining a green coffee department that's dedicated to sustainability.
McDonald's customers enjoy over 400 million cups of Gaviña coffee a year.


text:
Two more Bridgewater inmates, correction officer test positive for coronavirus
WCVB
Mar 22, 2020 at 8:13 PM Mar 22, 2020 at 8:15 PM
BRIDGEWATER — Two additional inmates and a correction officer at a Bridgewater prison have tested positive for COVID-19, the disease caused by the novel coronavirus, according to the state's Department of Correction.
The Department of Correction provided the update Sunday afternoon, less than 36 hours after announcing the first confirmed case of COVID-19 inside a state correctional facility.
The Massachusetts Department of Correction said the latest positive cases involved inmates at the Massachusetts Treatment Center, a medium security facility separately housing criminally sentenced male inmates identified as sex offenders and those who have been civilly committed as sexually dangerous.
We can deliver news just like this directly to your inbox. You can sign up for This Just In (a daily 7:30 p.m. newsletter with items we've posted that day), News Alerts (so you don't miss anything important) and more. It's customized to your preferences -- and it'll only take a few seconds.
As of Sunday, three inmates at the facility have tested positive for the coronavirus and have been quarantined from the general population. One officer who tested positive has been instructed to stay home and follow their physician's instructions, the department said.
"The Department and our contracted medical provider have been actively preparing for this virus and we continue to closely monitor developments associated with its spread," the statement said. "Health and safety precautions to minimize the risk of introduction and transmission have been and remain in place to protect inmates and staff. The entire Department is focused on utilizing CDC and DPH guidance to reduce, to the greatest degree possible, the potential impact of this virus on our correctional system while maintaining core services."
The Department of Correction said it was following DPH recommendations and staff members were utilizing personal protective equipment in high risk areas and while interacting with quarantined inmates.
(Editor's note: This content is being provided for free as a public service to our readers during the coronavirus outbreak. Please support local journalism by subscribing to The Enterprise.)
It says the National Guard has erected screening tents that will be used to take body temperatures and survey individuals attempting to enter a facility.
Correction officers who work at the MTC do not report to work at any other facility, according to the DOC.
All DOC facilities, including the Bridgewater prison, have been following the DPH's guidance to minimize the risk of introduction or transmission of the virus.
On March 12, the DOC temporarily suspended visits from family and friends at each of its 16 correctional facilities in Massachusetts.
The DOC said it closely monitor developments associated with the spread of this virus, along with its contracted inmate medical provider, Wellpath, and that staff are working with the DPH to prevent further introduction into state facilities, and to quickly engage, contain, and treat any outbreak.
The MTC is a separate facility from the Bridgewater State Hospital.


text:
using System;
using System.Collections.Generic;
using Microsoft.Azure.Commands.Reservations.Common;
using Microsoft.Azure.Management.Reservations.Models;
using Microsoft.Azure.Commands.Reservations.Models;
using System.Management.Automation;
using Newtonsoft.Json;
using Microsoft.Azure.Management.Reservations;

namespace Microsoft.Azure.Commands.Reservations.Cmdlets
{
    [Cmdlet(VerbsData.Update, "AzureRmReservation", DefaultParameterSetName = Constants.ParameterSetNames.CommandParameterSet, SupportsShouldProcess = true), OutputType(typeof(PSReservation))]
    public class PatchReservation : AzureReservationsCmdletBase
    {
        [Parameter(ParameterSetName = Constants.ParameterSetNames.CommandParameterSet,
            Mandatory = true)]
        [ValidateNotNull]
        public string ReservationOrderId { get; set; }

        [Parameter(ParameterSetName = Constants.ParameterSetNames.CommandParameterSet,
            Mandatory = true)]
        [ValidateNotNull]
        public string ReservationId { get; set; }

        [Parameter(Mandatory = true)]
        [ValidateNotNull]
        [ValidateSet ("Single", "Shared")]
        public string AppliedScopeType { get; set; }

        [Parameter(Mandatory = false)]
        [ValidateNotNull]
        public string AppliedScope { get; set; }

        [Parameter(ParameterSetName = Constants.ParameterSetNames.ObjectParameterSet,
            Mandatory = true,
            ValueFromPipeline = true)]
        [ValidateNotNull]
        public PSReservation Reservation { get; set; }

        public override void ExecuteCmdlet()
        {
            if (ParameterSetName.Equals(Constants.ParameterSetNames.ObjectParameterSet))
            {
                string[] name = Reservation.Name.Split('/');
                ReservationOrderId = name[0];
                ReservationId = name[1];
            }

            var resourceInfo = $"Reservation {ReservationId} in order {ReservationOrderId}";
            if (ShouldProcess(resourceInfo, "Update"))
            {

                Patch Patch;
                if (AppliedScope != null)
                {
                    Patch = new Patch(AppliedScopeType, new List<string>() { AppliedScope });
                }
                else
                {
                    Patch = new Patch(AppliedScopeType);
                }
                var response = new PSReservation(AzureReservationAPIClient.Reservation.Update(ReservationOrderId, ReservationId, Patch));
                WriteObject(response);
            }
        }
    }
}


One of the greatest freedoms we get from RVing is the ability go anywhere, any time, completely self-contained. Our Onan 7.5 kW QuietDiesel RV generator is a key part of that freedom. Proper care and maintenance of the "genny" will lead to a long life of trouble-free operation.
Each spring, we service our genset as part of routine spring cleaning. The oil and oil filter get changed every year, along with cleaning the spark arrestor. Some years also call for air & fuel filter replacement and coolant system service too. Generator service intervals are based on time or hours they've run, but we generally don't use our generator enough to need service more than once a year.
We take care of all of these items ourselves, and in nine years of RVing, we've never had anyone else work on our Onan. We have never had a day of trouble with it, and the routine service is so easy that we've never needed any outside help. We'll cover the three most basic service items here.
We just changed the fuel filter last year, so we won't be demonstrating that today. And the cooling system service is involved enough to require its own video, so we'll be covering that within the next few weeks. In this video, we'll show how to change the oil & filter, replace the air filter and clean the spark arrestor.
From everything we've heard and read, the single biggest cause of generator trouble is lack of regular use. There are times when we're hooked up for fairly extended periods and don't need the genset, but we make sure to exercise it regularly anyway. The generator should be run at least once a month for about 2 hours under about half load. This means firing it up even if it's not needed for power, and turning on both air conditioners (or heat pumps) and heating a tank of hot water, or plugging in our portable space heater.
Whenever staring the generator, be sure to let it idle for a short time to warm up before putting a load on it (turning anything on that draws power). Also, before shutting the genny down, be sure to turn off all loads first, then let it idle for about two minutes to cool down before shutting it off.
Our generator will likely see more use this coming year than ever before. After being hooked up all winter, we're about to spend our first year out on the road with a new residential refrigerator that recently replaced our dead Norcold.
Our Onan (an extremely popular brand) is a diesel model, and runs off the same fuel tank as our engine. We have no experience with gas generators or other brands, so many things about them may be different than ours. Be sure to follow your manufacturer's instructions for operating and maintaining your generator.
I'm so glad I found your site explaining generators. I'm a 71 year old newbie to everything RV and am desperate to learn how my (new to me) 2001 Pleasure Way (56,000 miles) works. A DIY-er who can fix anything on my house, except electrical. So I've become familiar with most of the workings EXCEPT the Onan MicroLite 2800 series generator which runs on gas.
My problem is that the generator will start, but will not stay running. Of course I'm to leave on a 5,000 mile trip next week and don't want to do so without a working generator. Can you suggest a cause and/or solution?
We're not mechanics, but we know that the two primary things that make a gas engine start and run are spark and fuel. Since the engine is actually starting, it means that you have spark. That leaves fuel as the most likely problem. Based on what you're describing, we think that (assuming you're sure there is gas in it, and that the gas isn't several years old) a very likely culprit is either a clogged fuel filter, or a fuel pump problem.
Our friend Brian, of http://RVwithTito.com has an Onan Microquiet 4000 generator (also gas powered) in his RV, which he maintains himself. We're assuming that his is similar enough to yours that he would know more about it than we do. So we're sending Brian an e-mail right now, asking him to view this thread and see if he has any suggestions for you. We're not sure where he and his wife Melissa are this holiday weekend, so hang in there while we reach out to him. He's a great guy and we're sure he'll be happy to try to help if he can.
Your 2800 is a little different from my Onan 4000 but I found a photo to help. Based on your description, I would agree that your problem is fuel related. Your carburetor is probably being starved of fuel. To troubleshoot this problem, I recommend first verifying that you have sufficient fuel in your tank. Most RV generators don't run if the gas tank is below a quarter tank.
Before troubleshooting, I recommend draining any remaining gas from your carburetor. You can do this by slowly unscrewing the screw just below the altitude adjustment on your carburetor. Place a small container below the carburetor to catch any fuel that comes out. Then tighten the screw.
Now start the generator to see if it starts. If it starts, runs for a bit, then shuts down, then immediately proceed with the fuel pump test outlined in my video (mentioned above) and replace the fuel pump if necessary. If it doesn't start at all, then it's probably your carburetor which may need to be serviced or replaced.
To locate your fuel pump, follow the black fuel line down from your carb. It leads to your fuel filter, then to your fuel pump (probably below under other stuff). Your fuel pump is connected to your gas tank.
Those are the steps I would take to troubleshoot your generator. I hope it is helpful. Take care and good luck!
I knew we put this in good hands! Thanks so much for jumping in Brian! Please let us know how you make out, Kay.
I only have about 30 hours of use on my generator.I have a 2014 coach.Do i have to change oil and filter now or can i wait until i add more hours of use?
That's a great trick with the smaller socket inside the larger one.
I really appreciate your noticing and commenting on that, Nick. My very favorite tricks are the really simple ones that solve frustrating challenges.


who can help me fix the problem!
Dude from the future, send us the 1.7.4 CEGUI, we can save multiple years of development!
Sub-forums exist for a reason. The "General" forum is a "forum for general chit-chat or off-topic discussion". Please post in the proper sub-forum next time. Thanks.


On the run up to Christmas 2009, I started seeing lots of chat and murmurings about something called Project52. I seem to remember seeing mentions of it the year before but this time there were a fair few people chatting about it, so I went and had a gander at the site.
The idea is to write and publish a blog post every week for a year. When I looked at it back in December I really wanted to participate but I had been suffering with a spot of writers block since my Halloween post so I didn't really think I was up to the challenge. Those who visit my site regularly will notice I've been a lot more active over the last few months and I seemed to start writing at just the right time.
The guys over at project52.info recently decided to reset the counters and begin the project again for 2010 starting this week, so I've decided to take up the challenge.
I don't consider myself a great writer but I love to write and I think this is the perfect opportunity to practice and improve. It will also get me into the habit of thinking of new ideas for writing and design and I hope that I'll quickly get into a routine of setting time aside each week to plan out ideas and publish posts consistently.
To keep up with progress you can follow me on Twitter or check out my Project52 page which I'll keep updated with links to new posts and whatever I've got lined up.


text:
California using San Diego hotel for temporary shelter for migrants
By: KGTV Staff
SAN DIEGO — The California Department of Social Services (DSS) is now using a San Diego hotel as a temporary shelter for migrants who have arrived in the U.S. from Mexico.
The DSS says its use of the Wyndham Garden hotel in San Diego's Midway District is part of the state's effort to help border communities. However, it has some people in the area a little concerned.
"This a large property in the middle of a very busy community," said Cathy Kenton said, the Chair of the Midway Pacific Highway Community Planning Group.
She said several people in the community started noticing changes at the Wyndham Garden hotel a few weeks ago.
"They're limiting access to the location. There are buses coming and going," Kenton said.
A green fence currently surrounds the property on Sports Arena Boulevard, closing it off to the public. White tents are set up inside, and security guards are posted at the entrance.
A spokesperson with DSS said the site serves as an intake hub for migrants released from federal custody, providing them with COVID-19 testing, medical screenings and travel.
The Wyndham became operational to serve migrants last month.
"There's certainly, in my personal opinion, nothing wrong with what they're doing, but it seems to make more sense to be a little more open and forthcoming to the community in particular," Kenton said.
Kenton said that's because the community feels like they're being left in the dark about what's going on.
It wasn't until Scripps station KGTV in San Diego interviewed Kenton that she knew about the operations, despite reaching out to the shelter.
She said it's one of two reasons the community group is concerned.
"Two, It's not a very inviting use in the community as a closed-off, walled-off property," Kenton said.
See a full statement from the DSS below.
"While the federal government is the lead on all matters related to immigration, California is undertaking humanitarian and public health efforts in border communities to support the temporary sheltering and health and safety of arriving migrants. This work includes establishing arriving migrant intake hubs – such as the Wyndham site you reference – that provide basic wraparound services including COVID-19 testing, medical screenings, and the coordination of onward travel for migrant adults and families after they are released from federal custody. Since April 2021, local, county, and state agencies began supporting these non-governmental organization-led sites in Southern California."
The state Department of Social Services said Catholic Charities of San Diego runs the site. They did not immediately respond to a request for comment.
This story was originally published by Nia Watson on Scripps station KGTV in San Diego.


text:
Buhari backs CBN over old naira deadline amid outcry for extension
Location, non-availability of crude fuelling wastage at Kaduna Refinery
By Kingsley Jeremiah, Abuja
18 February 2018 | 4:25 am
In March 1988 when the Kaduna Refining and Petrochemical Company (KRPC) Limited came into being, expectations were sky-high. Since the country's economy is largely oil-dependent...
Kaduna refinery
In March 1988 when the Kaduna Refining and Petrochemical Company (KRPC) Limited came into being, expectations were sky-high. Since the country's economy is largely oil-dependent, refining crude for local consumption and for export were topmost on the agenda.
Expectedly, Nigerians were highly optimistic that the development would ultimately boost the country's Gross Domestic Product, especially if local demands were met and refined products exported instead of exporting crude oil alone.
Indeed, it was not out of place to conclude that the refinery (which was built with the capacity of turning 110, 000 Barrel Per Stream Day (BPSD)) even if not growing rapidly, would have cat-walked to a conglomerate capable of competing internationally. But those prospects have remained distant till date, and the firm managed by the Nigerian National Petroleum Corporation (NNPC), has witnessed more setbacks than successes in its entire 30-year journey.
On January 15 this year, its Executive Director, Services, Abdullahi Idris, announced that the plant has shutdown operations due to avoidable reasons, principally the non-availability of crude oil. The shutdown brought an end to the four million litres of petrol, 2.5 million litres of automotive gas oil and 1.6 million litres of kerosene that the plant has been producing daily, in recent times.
Kaduna Refinery, A Historical Perspective
KRPC Limited was designed to process both imported paraffinic and Nigerian crude oils into fuels and lube products, and was constructed by Chiyoda Chemical Engineering and Construction Company (now Chiyoda Corporation) of Japan.
According to the NNPC, in December 1986, the design capacity of the fuels plants of the refinery was successfully increased from 50, 000 BPSD to 60, 000 BPSD, bringing the total refinery installed capacity to 110, 000 BPSD.
In March 1988, the 30, 000 metric tonnes/year Linear Alkyl Benzene Plant under the then Petrochemical Sector of the NNPC was commissioned. The plant was designed to derive its entire raw materials including utility supplies from the refinery. Same year, it was decided that the two plants (that is the Fuels Plant of the refinery and Linear Alkyl Benzene Plant) should merge into a single subsidiary company of NNPC in view of their interdependence, common goal and proximity. That was how the KRPC came into being.
"The decision to construct the third NNPC refinery in Kaduna was taken in 1974 along with that of the second NNPC refinery located at Warri. However, it was decided that work would commence on the construction of the third refinery whenever the projection of the consumption of petroleum products justified it.
By early 1975, in view of the fuel shortages experienced then, the Federal Government decided that work on the third refinery should be advanced. It was envisaged that the refinery was to be a simple hydro skimming type refinery in order to meet up with the fuel demand then," the NNPC said on its website.
It continued: "Based on the feasibility studies carried out, which took into consideration, the consumption of the various petroleum products within the northern zone, and adequate means of disposal for the surplus products, a refinery with crude oil capacity of 42, 000 BPSD could be easily justified. Hence, the refinery was designed for a capacity of 60, 000 BPSD. It was much later that the Federal Government decided that the capacity for any refinery in Nigeria should not be below 100, 000 BPSD. However, this would have led to the production of large quantity of heavy ends. And one practical and viable solution is reprocessing the heavy fuel oils.
"In order to do this, the whole project plans had to be modified so that what initially was planned to be simply a hydro skimming type refinery, developed into an integrated refinery. The refinery would now be able to produce a wider variety of petroleum products, some of which should be lubricating base oils. Hence, it became necessary to import suitable paraffinic-based crude oil from Venezuela, Kuwait or Saudi Arabia.
"Products from the refinery include; fuels for use as Liquefied Petroleum Gas (LPG), Premium Motor Spirit (PMS), Automotive Gas Oil (AGO) or diesel oil, kerosene, fuel oil, Sulphur and those from the lubricating oils complex are base oils, asphalt (bitumen) and waxes," the NNPC stated.
The lubricating oil complex of Kaduna Refinery is the first of its kind in West Africa and one of the largest in Africa. The consulting firm, King Wilkinson of Hague, Holland, in conjunction with NNPC engineers, developed the plan for the refinery. The contract for construction was awarded to Chiyoda Chemical Engineering and Construction Company of Japan in 1977.
The refinery project was completed and the Fuels Plant was commissioned in 1980. However the Lubes Plant was commissioned in 1983 and Petrochemical Plant much later in 1988. The initial operation and maintenance were carried out by Nigerian staff and expatriate personnel as technical backup, and by 1985, Nigerian staff had virtually taken over all the maintenance and operations.
Epileptic Operations, Perennial Losses
Even though the Kaduna Refinery is the newest refinery in the country, it has not only remained largely under-utilised and performed far below capacity, it has also continued to run at a loss perpetually, adding up to the burden of the state-owned oil corporation.
Not long ago, the NNPC said that the KRPC lost about N2.2b annually to illegal tapping on its raw water pipeline alone. In July last year, the group announced an N11.87b loss, which it attributed to the downtime and "unimpressive performance of the refineries."
Between January and November last year, an analysis of the group's finances also has revealed that the refineries and other units collectively led the company to a shortfall amounting to N270.386b. Kaduna Refinery, reportedly recorded losses totalling about N27.36b.
In most cases, the recurring shutdown of the refinery is blamed on the non-availability of crude oil, even as most stakeholders say that the location of the refinery and the dependency on heavy crude were bad business decisions.
"That refinery will constantly have problems because of it distance from any crude oil field. The refinery depends on pipeline from the Niger Delta to the North. The refinery is also equipped with only one-month storage capacity. The implication is that even if crude oil flow stops for only three weeks the refinery is out of supply. Those are the disadvantages we have to battle with," Head, Energy Research, Ecobank, Dolapo Oni said.
Sourcing Crude From Niger Republic
The Group Managing Director of NNPC, Maikanti Baru had said: "Due to challenges with the aged refinery and crude oil pipelines that had been breached severally, the operations of the refinery have been epileptic. This we are determined to resolve through various intervention methods, including evaluation of alternative crude oil supply from Niger Republic through building of pipelines of over 1, 000 kilometers from Agades to Kaduna. That effort is being championed by Mr. President himself."
Just recently, the Minister of State for Petroleum Resources, Dr. Ibe Kachikwu led a delegation to Niger Republic. The outcome of that engagement is expected to deliver another refinery at the border of Niger and Nigeria (Katsina State precisely). That meeting also raised hopes regarding the construction of pipelines from the Niger Republic to Nigeria.
While prioritising alternative sources of crude for refineries in the North, the pipeline may become useless should current exploration drive in the northern part of the country yield result, as the Federal Government, through the NNPC, restates its determination to continue pursuing oil exploration in the North.
President of the Nigerian Association of Petroleum Explorationists (NAPE), Abiodun Adesanya, is one of those bothered by the sustainability of the alternative plans to source crude from Niger Republic, considering the fact that investment in pipeline infrastructure is usually a very heavy investment.
"If we invest in pipeline to take crude to the refinery, how much can we realistically make? What is the plan for the pipelines to be sustainably maintained? This is an international agreement, which is a third option, so, we need to explore options within Nigeria, and it is only when we know that those things are not possible that we should talk about going outside the country because that could be very expensive. Just like we are supplying gas to some Africa countries today, Ghana has found gas and may not need us any more. What if we discover oil in the North? What happens if the pipelines are not needed anymore? These are serious economic or business plans that we really need to consider," Adesanya said.
$20b For TAM Down The Drain
So far, the country has spent the sum of $20b on the Turn Around Maintenance (TAM) of the country's refineries. But the question on the lips of many is, why is the NNPC always eager to embark on Turn Around Maintenance (TAM) than regular maintenance? A further request to spend another $1.8b on TAM has drawn the ire of stakeholders, some of whom have insisted that the process is nothing but outright fraud.
They maintain that the money if properly used, would have been enough to construct two new refineries with a combined capacity of 1.3 million barrels per day, as a similar refinery being built by the Dangote Group is estimated to cost about $12 billion and turn out 650, 000 barrels of oil daily.
President, Nigerian Association for Energy Economics (NAEE), Prof. Wunmi Iledare, who expressed sadness at how office holders make a fortune from managing public assets, said the Petroleum Industry Governance Bill (PIGB) would eventually change the narrative and turn the corporation to a commercial entity.
"I think the way the government spends money to maintain the refinery leaves a lot to be desired. It gives the impression that it is not really particular about getting optimum value from the investment it is making. That has been the hallmark from one government to the other, and I don't think this current government is doing any better because it does not have the opportunity cost mentality in the way it thinks about solving some of the problems.
"So, in essence, I don't think we are incapable of solving the problems of the Kaduna Refinery, I just think we are not employing the recourses that we have for optimal value creation. If we do, the refinery will be up and running because it is not any big deal to run a refinery.
"It is painful when people want to convert the peoples' commonwealth to their personal wealth. We need a reorientation whereby we have high regards for our commonwealth and make the process of converting it into personal wealth by some more difficult, this is what the PIGB will address," Iledare said.
However, some analysts at the FBN Quest Capital Limited, recently warned the Federal Government against carrying out a fresh TAM on any of the refineries, maintaining that the NNPC should consider allowing its refineries to "wither away" because new refineries like the 650, 000 barrels per day (bpd)-capacity Dangote Refinery and others scheduled to come on stream soon would be the game-changers.
Member representing Ifo/Ewekoro Federal Constituency at the House of Representatives, Ibrahim Isiaka, also queried the viability of further expenditure on the country's four refineries, and the daily allocation of 445, 000 barrels of crude to the facilities, which have continued to perform poorly. He objected any further injection of funds to the facilities for the purposes of TAM.
"The House is cognizant of the fact that the sums of $308m, $57m, $200m, and lately, more than N264b were spent on refineries, yet it was reported that the NNPC is seeking another $1.8b to carry out another TAM to make the refineries attractive to investors," Isiaka, said.
On the flipside, Oni says government needs to spend more money to fix the Kaduna Refinery and others before selling them off eventually.
"We must put them in good shape and let them work before putting them up for sale, but the problem is that government has found it difficult consistently to fix those refineries. The other side is to get people that would own the refineries to get involved in the financing at this stage. That I think will be a better option," Oni said.
Scrapping Or Privatising Kaduna Refinery
Former Special Adviser to President Olusegun Obasanjo on Petroleum Matters, Dr. Emmanuel Egbogah, had told The Guardian that the Kaduna Refinery was as good as scrap.
According to him, the refinery has bad features, which are never discussed, especially the fact that Nigeria would have to import heavy crude from Venezuela to refine at the facility, since the country's light crude is incompatible with the refinery's technology.
"We would be better off building a new refinery that is functional," said Egbogah, who is also the Chairman of Emerald Energy Resources.
Iledare, Oni and Adesanya, do not totally agree with Egbogah on the scrapping of the refinery, but are cynical about spending more money on the asset.
Both Oni and Adesanya are of the view that the best option for the country was for the Kaduna Refinery to be privatised. "Let the likes of Dangote, Tony Elumelu and Femi Otedola buy it," Adesanya said.
But for Iledare, scrapping or selling off the facility was not it because the NNPC would not have an asset to fall back to.
Meanwhile, the NNPC recently said the corporation was inching closer to arriving at the choice of financiers for the Port Harcourt Refining Company Limited (PHRC), Warri Refining and Petrochemical Company Limited (WRPC), KRPC Limited.
Considering that fact that the refinery happens to be one of the youngest, some experts are of the view that it could be retained so that the new NNPC expected to be born from the PIBG would manage it since the corporation will ordinarily run as commercial entity.
Since the major challenge is in getting crude oil supply to the plant, alternative sources of crude oil supply and expansion of storage capacity up to about three months, they say, could keep the refinery running for long. Before that happens, the KRPC is bound to remain an economic liability.
Wunmi Iledare
Sanwo-Olu harps on training as NUJ opens remodelled secretariat
Lagos State Governor, Mr Babajide Sanwo-Olu, on Saturday urged the Nigeria Union of Journalists (NUJ) to ensure training and re-training of reporters to curb quackery and fake news.
FG's autogas plan stalls amid costly diesel, poor planning
Almost two years after the Federal Government launched the Autogas Initiative on the back of National Gas Expansion Programme, prevailing circumstances, especially with rising cost of diesel, is forcing motorists,...
Subsidy fraudulent, insist economists
With President Muhammadu Buhari's administration inching to its twilight, a major assessment of its economic performance came last week in the form of the World Bank Nigeria Development Update...
Society promotes reading culture in school, donates educational materials
AIFA Reading Society, a non-profit organisation focused on fostering a reading culture and promoting quality education for sustainable development, has donated textbooks, notebooks
IMF and N6tr fuel subsidy warning
The vexatious issue of the lingering fuel subsidy on petroleum products was raised at the recent presentation of the International Monetary Fund (IMF) Sub-Saharan Africa Regional Economic Outlook in Abuja recently.
UTM Offshore, Afreximbank sign project preparation facility financing deal
African Export-Import Bank (Afreximbank) has executed a project preparation facility financing head of terms with UTM Offshore Limited (UTM), the bank said in a statement at the weekend.
Maiduguri gas plant gets November completion date
The Nigerian National Petroleum Corporation (NNPC) independent gas-powered plant in Maiduguri, Borno State, will be completed by November 2022.


text:
La Neuville-sur-Oudeuil este o comună în departamentul Oise, Franța. În 2009 avea o populație de 327 de locuitori.

Note

Vezi și
 Lista comunelor din Oise

Comune din Oise

redpajama_set_name: RedPajamaWikipedia


text:
It's Official: Honda Will Leave F1 At The End Of The 2021 Season
Honda has dropped a bombshell statement about its future in Formula 1 as a power unit supplier
Image via Red Bull Content Pool
Honda's rollercoaster ride in F1's hybrid era will come to an end next year. The Japanese manufacturer announced the shock move this morning, explaining that its departure from the sport is all about a journey to carbon neutrality by 2050.
In a statement, it said:
"Honda needs to funnel its corporate resources in research and development into the areas of future power unit and energy technologies, including fuel cell vehicle (FCV) and battery EV (BEV) technologies, which will be the core of carbon-free technologies. As a part of this move, in April of this year, Honda created a new center called Innovative Research Excellence, Power Unit & Energy.
"Honda will allocate its energy management and fuel technologies as well as knowledge amassed through F1 activities to this area of power unit and energy technologies and take initiatives while focusing on the future realization of carbon neutrality."
Image via Honda
Honda currently supplies hybrid V6 turbo power units to Red Bull and AlphaTauri, both of which it has won races with. It has vowed to "work together with Red Bull Racing and Scuderia AlphaTauri to continue competing with its utmost effort and strive for more victories all the way to the end of the 2021 season."
Responding to the news, Red Bull said it, "acknowledges the decision by the Honda Motor Company to withdraw from Formula One at the end of the 2021 season and would like to thank the company for its exceptional efforts as power unit supplier to both Red Bull Racing and Scuderia AlphaTauri."
Honda re-entered the sport in 2015 with McLaren, but initial results were poor, and the relationship between the two soon soured. Who can forget Fernando Alonso barking "GP2 engine! Arrghh!" over the team radio?
Honda and McLaren parted ways at the end of 2017, leading to a new supply deal with Scuderia Toro Rosso (now AlphaTauri) starting in 2018, which expanded to include Red Bull in 2019. The partnership has yielded many podium finishes and four victories, but Honda hasn't ever found itself in a championship-contending position, as the company targeted when it rejoined the F1 circus.
Recommended car throttle shop Worldwide Shipping In The CT Shop Car Throttle Submit Your Videos To Get Featured On Our Social Channels News The Toyota GR Super Sport Hypercar Looks Impossibly Tiny Inside Motorsport This Off-Road Challenge Is A Must-Watch For Flex Lovers Motorsport The Other Thing Missing From Le Mans This Year - V8 Filth Motorsport Lewis Hamilton Hit 143mph While Running On Three Tyres At The British GP Motorsport Another Member Of The Public Has Accidentally Driven Onto Interlagos Circuit Motorsport Surprise: Porsche Is Coming Back To Le Mans And Entering IMSA Motorsport MotoGP Rider Bails At 140mph Following Brake Failure Motorsport Roborace Autonomous Car Crashes Into Wall Immediately After Setting Off


text:
Burros (×)
Top reasons to adopt a pet
Getting a new pet? Find out why you should adopt from a shelter or rescue
Because beauty should be kind.
You can help us keep wild animals where they belong—in the wild.
Named for their stubby tails, bobcats are so elusive that you'd be lucky to catch a glimpse of one in your lifetime.
We're standing against the most egregious abuses of wildlife.
How to remove pet stains and odors
Follow these steps to clean up stains and get rid of odors when your dog or cat pees or poops on floors or furniture in your house.
Big changes at SeaWorld
Twenty-three years ago, as the Humane Society of the United States launched a campaign to protect captive marine mammals, SeaWorld invited the organization to visit its Orlando theme park. Dr. Naomi Rose, the newly appointed head of the HSUS campaign, and her colleagues went to the park for a behind...
Karen E. Lange
Travel safely with your pet by car, airplane, ship or train
Use The HSUS's travel tips to keep your pet safe while traveling by car, airplane, ship or train.
Together, we can learn how to peacefully coexist with wild animals and support their natural habitats.
Together, we can protect horses and burros from cruelty.
Adopting from an animal shelter or rescue group
Animal shelters are your best source when looking for a pet. Not only do they have a great selection of adult animals for adoption, but many of them also have kittens, puppies and purebred pets.
What to do about wild mice
House mice, like all animals, like to stay warm and fed, and often spend their lives comfortably inside buildings without causing any problems. If they must go however, these humane tips will help you find them a new home.
Adapted from the book Wild Neighbors
Cosmetics testing FAQ
Contents What products are considered cosmetics? Is animal testing legally required for cosmetics sold in the United States? Where is animal testing mandatory? Where is animal testing banned? Can legislation help end animal testing for cosmetics? Why do some companies still use animal testing? What...
The problem with plastics
You don't forget the images: the olive ridley sea turtle, a plastic straw lodged in his nose. The Rubenesque sea lion, neck cinched tight by a thick plastic packing strap. The Cuvier's beaked whale, stomach split open to reveal more than 80 pounds of plastic waste—snack bags, rope, rice sacks...
By Kelly L. Williams
To save wildlife from being killed just for a trophy.
Glue boards (also known as glue traps) might seem like a safe solution to ridding your home of uninvited guests of the crawling, flying or scurrying sort, but they are one of the cruelest.