text:
package org.almiso.pattern.utils;

/**
 * Created by Alexandr on 03.07.16.
 */
public class Logger {

    public static void lineSeparator() {
        d(System.lineSeparator());
    }

    public static void d(String message) {
        d("PATTERNS", message);
    }

    public static void d(String TAG, String message) {
        System.out.println(TAG + " | " + message);
    }

}


text:
Help the Effort to Vote NO on Arizona's Proposition 202
Thu, Oct 30th 2008 @ 6:10 pm EDT by Roy Beck
The most important vote in the fight against immigration next Tuesday will take place in Arizona.
Contrary to its name, "The Stop Illegal Hiring Act," Proposition 202 abolishes the use of E-Verify in Arizona and requires the state to wait for the federal government in actions against employers.
Read more about Help the Effort to Vote NO on Arizona's Proposition 202
SEE WHO TOPS THE LISTS: Members of Congress whose immigration actions really protect J-O-B-S
Thu, Oct 23rd 2008 @ 11:10 pm EDT by Roy Beck
Lots of big talk these last few days before the elections, but we've prepared a list of 20 U.S. Representatives and 19 U.S. Senators who are the best in Congress at consistently taking immigration actions that really protect jobs for American workers. Come inside and see.
Read more about SEE WHO TOPS THE LISTS: Members of Congress whose immigration actions really protect J-O-B-S
Our National Ad Campaign
Fri, Oct 17th 2008 @ 12:58 am EDT by Roy Beck
The rotating banner ads in the left column of our home page are from a national campaign that NumbersUSA is running this fall. You probably have seen them on the home pages of national internet providers and national news sites.
Generous donors specifically designated that we use their contributions to try to expand understanding among those in the American public who may have been a little bit afraid to examine immigration issues -- especially younger Americans.
Read more about Our National Ad Campaign
Postville Raid Cost $6 Million but Saved Much More
Wed, Oct 15th 2008 @ 8:28 am EDT by Roy Beck
Anti-enforcement entities are crowing about estimates that the raid on the Postville, Iowa meatpacking plant cost more than $6 million thus far to deal with only 389 suspected illegal aliens. And that does sound like a lot of money. But my rough calculations suggest that if all 389 are deported, taxpayers are likely to save nearly $8 million in the first year alone.
Read more about Postville Raid Cost $6 Million but Saved Much More
'DROP DEAD': NY Times to Unemployed Americans
Sun, Oct 5th 2008 @ 7:18 pm EDT by Roy Beck
OK, I'm having a little fun with the famous headline from another NY paper in the 1970s about Pres. Ford's reaction to NYC's request for a bailout. But essentially "Drop Dead" was the NY Times editorial board's response to rising American unemployment on Friday. The callousness of the media elite toward U.S. working stiffs continues to amaze me.
Read more about 'DROP DEAD': NY Times to Unemployed Americans
Bail-Out Crisis Holds Lessons for Delay in Immigration Solutions
Mon, Sep 29th 2008 @ 7:34 pm EDT by Roy Beck
(PLUS, WHY DID THE HISPANIC CAUCUS & THE IMMIGRATION REFORM CAUCUS COMBINE TO DEFEAT THE BAIL-OUT?) The Bank Bail-Out Crisis should teach us two very important things relevant to the immigration debate: (1) Not all economic growth is good (that is, it doesn't necessarily serve the public good). (2) It's a whole lot less painful to act when a problem is festering than after it becomes a full-blown crisis. To avert immigration crisis in the future, this was the year to pass the SAVE Act (Rep. Shuler's H.R. 4088) and finally start our immigration mess on the road to recovery. Extreme partisan politics kept it from coming to the floor for a vote where it most surely would have passed overwhelmingly.
Read more about Bail-Out Crisis Holds Lessons for Delay in Immigration Solutions
E-VERIFY WILL DIE IF CONGRESS DOESN'T ACT THIS WEEK: Central tool in fight against illegal immigration is in Sen. Reid's hands
Mon, Sep 22nd 2008 @ 12:24 am EDT by Roy Beck
Senate Majority Leader Reid has two honorable choices: (1) Bring Sen. Menendez's backroom filibuster to the Senate floor for a vote. If he does this, there easily will be the 60 votes necessary to stop Menendez and allow a vote to pass H.R. 6633 (a clean E-Verify reauthorization). (2) Avoid a vote altogether by talking to Menendez privately, persuading him that what he is doing is threatening the reputation of the Democratic Party just before elections and get him to withdraw his "hold" on H.R. 6633.
Read more about E-VERIFY WILL DIE IF CONGRESS DOESN'T ACT THIS WEEK: Central tool in fight against illegal immigration is in Sen. Reid's hands
Financial Industry Collapsing -- But Some In Congress Still Trying To Give Away More US Jobs To Foreign Workers
Mon, Sep 15th 2008 @ 1:08 am EDT by Roy Beck
Just as we had seemed to push back attempts for massive increases in foreign workers by the U.S. House last week, we now learn the danger has risen to Orange Alert level in the Senate. Let's take a look at some of the millions of Americans who are being ignored by Senate staffers as they negotiate behind closed doors to bring in additional permanent immigrant workers next year:
Read more about Financial Industry Collapsing -- But Some In Congress Still Trying To Give Away More US Jobs To Foreign Workers
Public Pressure May Be Delaying Giant Foreign Worker Increase
Thu, Sep 11th 2008 @ 11:43 am EDT by Roy Beck
Great news from Capitol Hill - I'm doing a series of radio shows all day at the "Hold Their Feet to the Fire" event, and talking on my cell phone in between with our Hill lobbyists, but I am pleased to hear that the House Judiciary Committee is not returning today to pass a giant foreign worker increase.
Read more about Public Pressure May Be Delaying Giant Foreign Worker Increase
US House Leaders Plan Vote on Big Foreign Worker Increase This Week -- Despite 5-Year Unemployment High
Sun, Sep 7th 2008 @ 5:49 pm EDT by Roy Beck
Remember all the rhetoric at the two Presidential nominating conventions about standing up for America's workers and their families in tough times? Well, the House Democratic Leadership (with support from a lot of Republicans) plans this week to move forward a bill (H.R. 5882) to permanently give away even more U.S. jobs to an additional half-million foreign workers next year! With the corportate special interests calling shots, the only way to stop this callous move is if hundreds of thousands of you reading this decide to send a fax and make a phone call.
Read more about US House Leaders Plan Vote on Big Foreign Worker Increase This Week -- Despite 5-Year Unemployment High
(-) Remove Roy Beck filter Roy Beck

redpajama_set_name: RedPajamaCommonCrawl


This workshop is geared towards helping Mums (and Dads) take better everyday photos of their kids. Your professional photos give an idealized view of your family, but I want to help you learn to take better everyday photos. Whether it is Halloween, Easter Egg Hunts, a trip to the zoo, or just hanging out in the back yard, it is important to document the "everyday" moments.
Helping you take better everyday photos of your kids.


text:
package com.google.android.exoplayer2;

import static com.google.common.truth.Truth.assertThat;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.MediaItem.LiveConfiguration;
import com.google.common.collect.Iterables;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.shadows.ShadowSystemClock;

/** Unit test for {@link DefaultLivePlaybackSpeedControl}. */
@RunWith(AndroidJUnit4.class)
public class DefaultLivePlaybackSpeedControlTest {

  @Test
  public void getTargetLiveOffsetUs_returnsUnset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();

    assertThat(defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs()).isEqualTo(C.TIME_UNSET);
  }

  @Test
  public void getTargetLiveOffsetUs_afterSetLiveConfiguration_returnsMediaLiveOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    assertThat(defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs()).isEqualTo(42_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterSetLiveConfigurationWithTargetGreaterThanMax_returnsMaxLiveOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(4321)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    assertThat(defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs()).isEqualTo(400_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterSetLiveConfigurationWithTargetLessThanMin_returnsMinLiveOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(3)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    assertThat(defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs()).isEqualTo(5_000);
  }

  @Test
  public void getTargetLiveOffsetUs_afterSetTargetLiveOffsetOverrideUs_returnsOverride() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();

    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(321_000);
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(321_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterSetTargetLiveOffsetOverrideUsGreaterThanMax_returnsMaxLiveOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();

    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(123_456_789);
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(400_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterSetTargetLiveOffsetOverrideUsLessThanMin_returnsMinLiveOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();

    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(3_141);
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(5_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterSetTargetLiveOffsetOverrideWithoutMediaConfiguration_returnsUnset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(123_456_789);

    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(C.TIME_UNSET);
  }

  @Test
  public void getTargetLiveOffsetUs_withUnitSpeed_returnsUnset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinPlaybackSpeed(1f)
            .setMaxPlaybackSpeed(1f)
            .build());

    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(C.TIME_UNSET);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterSetTargetLiveOffsetOverrideWithTimeUnset_returnsMediaLiveOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(123_456_789);
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());
    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(C.TIME_UNSET);

    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(42_000);
  }

  @Test
  public void getTargetLiveOffsetUs_afterNotifyRebuffer_returnsIncreasedTargetOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    long targetLiveOffsetBeforeUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();
    defaultLivePlaybackSpeedControl.notifyRebuffer();
    long targetLiveOffsetAfterUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetAfterUs).isGreaterThan(targetLiveOffsetBeforeUs);
    assertThat(targetLiveOffsetAfterUs - targetLiveOffsetBeforeUs).isEqualTo(3_000);
  }

  @Test
  public void getTargetLiveOffsetUs_afterRepeatedNotifyRebuffer_returnsMaxLiveOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    List<Long> targetOffsetsUs = new ArrayList<>();
    for (int i = 0; i < 500; i++) {
      targetOffsetsUs.add(defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs());
      defaultLivePlaybackSpeedControl.notifyRebuffer();
    }

    assertThat(targetOffsetsUs).isInOrder();
    assertThat(Iterables.getLast(targetOffsetsUs)).isEqualTo(400_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterNotifyRebufferWithIncrementOfZero_returnsOriginalTargetOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(0)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    defaultLivePlaybackSpeedControl.notifyRebuffer();
    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(42_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterNotifyRebufferAndSetTargetLiveOffsetOverrideUs_returnsOverride() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    defaultLivePlaybackSpeedControl.notifyRebuffer();
    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(321_000);
    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(321_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterNotifyRebufferAndSetLiveConfigurationWithSameOffset_returnsIncreasedTargetOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    long targetLiveOffsetBeforeUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();
    defaultLivePlaybackSpeedControl.notifyRebuffer();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(3)
            .setMaxOffsetMs(450)
            .setMinPlaybackSpeed(0.9f)
            .setMaxPlaybackSpeed(1.1f)
            .build());
    long targetLiveOffsetAfterUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetAfterUs).isGreaterThan(targetLiveOffsetBeforeUs);
    assertThat(targetLiveOffsetAfterUs - targetLiveOffsetBeforeUs).isEqualTo(3_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterNotifyRebufferAndSetLiveConfigurationWithNewOffset_returnsNewOffset() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42)
            .setMinOffsetMs(5)
            .setMaxOffsetMs(400)
            .setMinPlaybackSpeed(0.95f)
            .setMaxPlaybackSpeed(1.05f)
            .build());

    defaultLivePlaybackSpeedControl.notifyRebuffer();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(39)
            .setMinOffsetMs(3)
            .setMaxOffsetMs(450)
            .setMinPlaybackSpeed(0.9f)
            .setMaxPlaybackSpeed(1.1f)
            .build());
    long targetLiveOffsetUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetUs).isEqualTo(39_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterNotifyRebufferAndAdjustPlaybackSpeedWithLargeBufferedDuration_returnsDecreasedOffsetToIdealTarget() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3_000)
            .setMinUpdateIntervalMs(100)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42_000)
            .setMinOffsetMs(5_000)
            .setMaxOffsetMs(400_000)
            .setMinPlaybackSpeed(0.9f)
            .setMaxPlaybackSpeed(1.1f)
            .build());

    defaultLivePlaybackSpeedControl.notifyRebuffer();
    long targetLiveOffsetAfterRebufferUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
        /* liveOffsetUs= */ 45_000_000, /* bufferedDurationUs= */ 9_000_000);
    long targetLiveOffsetAfterOneAdjustmentUs =
        defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    for (int i = 0; i < 500; i++) {
      ShadowSystemClock.advanceBy(Duration.ofMillis(100));
      defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
          /* liveOffsetUs= */ 45_000_000, /* bufferedDurationUs= */ 9_000_000);
    }
    long targetLiveOffsetAfterManyAdjustmentsUs =
        defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetAfterOneAdjustmentUs).isLessThan(targetLiveOffsetAfterRebufferUs);
    assertThat(targetLiveOffsetAfterManyAdjustmentsUs)
        .isLessThan(targetLiveOffsetAfterOneAdjustmentUs);
    assertThat(targetLiveOffsetAfterManyAdjustmentsUs).isEqualTo(42_000_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterNotifyRebufferAndAdjustPlaybackSpeedWithSmallBufferedDuration_returnsDecreasedOffsetToSafeTarget() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3_000)
            .setMinUpdateIntervalMs(100)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42_000)
            .setMinOffsetMs(5_000)
            .setMaxOffsetMs(400_000)
            .setMinPlaybackSpeed(0.9f)
            .setMaxPlaybackSpeed(1.1f)
            .build());

    defaultLivePlaybackSpeedControl.notifyRebuffer();
    long targetLiveOffsetAfterRebufferUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
        /* liveOffsetUs= */ 45_000_000, /* bufferedDurationUs= */ 1_000_000);
    long targetLiveOffsetAfterOneAdjustmentUs =
        defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    for (int i = 0; i < 500; i++) {
      ShadowSystemClock.advanceBy(Duration.ofMillis(100));
      long noiseUs = ((i % 10) - 5L) * 1_000;
      defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
          /* liveOffsetUs= */ 45_000_000, /* bufferedDurationUs= */ 1_000_000 + noiseUs);
    }
    long targetLiveOffsetAfterManyAdjustmentsUs =
        defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetAfterOneAdjustmentUs).isLessThan(targetLiveOffsetAfterRebufferUs);
    assertThat(targetLiveOffsetAfterManyAdjustmentsUs)
        .isLessThan(targetLiveOffsetAfterOneAdjustmentUs);
    // Should be at least be at the minimum buffered position.
    assertThat(targetLiveOffsetAfterManyAdjustmentsUs).isGreaterThan(44_005_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterAdjustPlaybackSpeedWithLiveOffsetAroundCurrentTarget_returnsSafeTarget() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42_000)
            .setMinOffsetMs(5_000)
            .setMaxOffsetMs(400_000)
            .setMinPlaybackSpeed(0.9f)
            .setMaxPlaybackSpeed(1.1f)
            .build());

    long targetLiveOffsetBeforeUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();
    // Pretend to have a buffered duration at around the target duration with some artificial noise.
    for (int i = 0; i < 500; i++) {
      ShadowSystemClock.advanceBy(Duration.ofMillis(100));
      long noiseUs = ((i % 10) - 5L) * 1_000;
      defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
          /* liveOffsetUs= */ 49_000_000, /* bufferedDurationUs= */ 7_000_000 + noiseUs);
    }
    ShadowSystemClock.advanceBy(Duration.ofMillis(100));
    defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
        /* liveOffsetUs= */ 49_000_000, /* bufferedDurationUs= */ 7_000_000);
    long targetLiveOffsetAfterUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetBeforeUs).isEqualTo(42_000_000);
    assertThat(targetLiveOffsetAfterUs).isGreaterThan(42_005_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterAdjustPlaybackSpeedAndSmoothingFactorOfZero_ignoresSafeTargetAndReturnsCurrentTarget() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setMinPossibleLiveOffsetSmoothingFactor(0f)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42_000)
            .setMinOffsetMs(5_000)
            .setMaxOffsetMs(400_000)
            .setMinPlaybackSpeed(0.9f)
            .setMaxPlaybackSpeed(1.1f)
            .build());

    long targetLiveOffsetBeforeUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();
    // Pretend to have a buffered duration at around the target duration with some artificial noise.
    for (int i = 0; i < 500; i++) {
      ShadowSystemClock.advanceBy(Duration.ofMillis(100));
      long noiseUs = ((i % 10) - 5L) * 1_000;
      defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
          /* liveOffsetUs= */ 49_000_000, /* bufferedDurationUs= */ 7_000_000 + noiseUs);
    }
    ShadowSystemClock.advanceBy(Duration.ofMillis(100));
    defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
        /* liveOffsetUs= */ 49_000_000, /* bufferedDurationUs= */ 7_000_000);
    long targetLiveOffsetAfterUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetBeforeUs).isEqualTo(42_000_000);
    // Despite the noise indicating it's unsafe here, we still return the target offset.
    assertThat(targetLiveOffsetAfterUs).isEqualTo(42_000_000);
  }

  @Test
  public void
      getTargetLiveOffsetUs_afterAdjustPlaybackSpeedWithLiveOffsetLessThanCurrentTarget_returnsCurrentTarget() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setTargetLiveOffsetIncrementOnRebufferMs(3_000)
            .setMinUpdateIntervalMs(100)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(42_000)
            .setMinOffsetMs(5_000)
            .setMaxOffsetMs(400_000)
            .setMinPlaybackSpeed(0.9f)
            .setMaxPlaybackSpeed(1.1f)
            .build());

    long targetLiveOffsetBeforeUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();
    defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
        /* liveOffsetUs= */ 39_000_000, /* bufferedDurationUs= */ 1_000_000);
    long targetLiveOffsetAfterUs = defaultLivePlaybackSpeedControl.getTargetLiveOffsetUs();

    assertThat(targetLiveOffsetBeforeUs).isEqualTo(42_000_000);
    assertThat(targetLiveOffsetAfterUs).isEqualTo(42_000_000);
  }

  @Test
  public void adjustPlaybackSpeed_liveOffsetMatchesTargetOffset_returnsUnitSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_000_000, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed).isEqualTo(1f);
  }

  @Test
  public void adjustPlaybackSpeed_liveOffsetWithinAcceptableErrorMargin_returnsUnitSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder()
            .setMaxLiveOffsetErrorMsForUnitSpeed(5)
            .build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeedJustAboveLowerErrorMargin =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_000_000 - 5_000 + 1, /* bufferedDurationUs= */ 1_000_000);
    float adjustedSpeedJustBelowUpperErrorMargin =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_000_000 + 5_000 - 1, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeedJustAboveLowerErrorMargin).isEqualTo(1f);
    assertThat(adjustedSpeedJustBelowUpperErrorMargin).isEqualTo(1f);
  }

  @Test
  public void adjustPlaybackSpeed_withLiveOffsetGreaterThanTargetOffset_returnsAdjustedSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setProportionalControlFactor(0.01f).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_500_000, /* bufferedDurationUs= */ 1_000_000);

    float expectedSpeedAccordingToDocumentation = 1f + 0.01f * (2.5f - 2f);
    assertThat(adjustedSpeed).isEqualTo(expectedSpeedAccordingToDocumentation);
    assertThat(adjustedSpeed).isGreaterThan(1f);
  }

  @Test
  public void adjustPlaybackSpeed_withLiveOffsetLowerThanTargetOffset_returnsAdjustedSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setProportionalControlFactor(0.01f).build();
    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(2_000_000);
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 1_500_000, /* bufferedDurationUs= */ 1_000_000);

    float expectedSpeedAccordingToDocumentation = 1f + 0.01f * (1.5f - 2f);
    assertThat(adjustedSpeed).isEqualTo(expectedSpeedAccordingToDocumentation);
    assertThat(adjustedSpeed).isLessThan(1f);
  }

  @Test
  public void
      adjustPlaybackSpeed_withLiveOffsetGreaterThanTargetOffset_clampedToFallbackMaximumSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setFallbackMaxPlaybackSpeed(1.5f).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 999_999_999_999L, /* bufferedDurationUs= */ 999_999_999_999L);

    assertThat(adjustedSpeed).isEqualTo(1.5f);
  }

  @Test
  public void
      adjustPlaybackSpeed_withLiveOffsetLowerThanTargetOffset_clampedToFallbackMinimumSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setFallbackMinPlaybackSpeed(0.5f).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ -999_999_999_999L, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed).isEqualTo(0.5f);
  }

  @Test
  public void
      adjustPlaybackSpeed_andMediaProvidedMaxSpeedWithLiveOffsetGreaterThanTargetOffset_clampedToMediaMaxSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setFallbackMaxPlaybackSpeed(1.5f).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(2f)
            .build());

    float adjustedSpeed =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 999_999_999_999L, /* bufferedDurationUs= */ 999_999_999_999L);

    assertThat(adjustedSpeed).isEqualTo(2f);
  }

  @Test
  public void
      adjustPlaybackSpeed_andMediaProvidedMinSpeedWithLiveOffsetLowerThanTargetOffset_clampedToMediaMinSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setFallbackMinPlaybackSpeed(0.5f).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(0.2f)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ -999_999_999_999L, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed).isEqualTo(0.2f);
  }

  @Test
  public void adjustPlaybackSpeed_repeatedCallWithinMinUpdateInterval_returnsSameAdjustedSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setMinUpdateIntervalMs(123).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed1 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 1_500_000, /* bufferedDurationUs= */ 1_000_000);
    ShadowSystemClock.advanceBy(Duration.ofMillis(122));
    float adjustedSpeed2 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_500_000, /* bufferedDurationUs= */ 1_000_000);
    ShadowSystemClock.advanceBy(Duration.ofMillis(2));
    float adjustedSpeed3 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_500_000, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed1).isEqualTo(adjustedSpeed2);
    assertThat(adjustedSpeed3).isNotEqualTo(adjustedSpeed2);
  }

  @Test
  public void
      adjustPlaybackSpeed_repeatedCallAfterSetLiveConfigurationWithSameOffset_returnsSameAdjustedSpeed() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setMinUpdateIntervalMs(123).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed1 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 1_500_000, /* bufferedDurationUs= */ 1_000_000);
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());
    float adjustedSpeed2 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_500_000, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed1).isEqualTo(adjustedSpeed2);
  }

  @Test
  public void
      adjustPlaybackSpeed_repeatedCallAfterSetLiveConfigurationWithNewOffset_updatesSpeedAgain() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setMinUpdateIntervalMs(123).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed1 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 1_500_000, /* bufferedDurationUs= */ 1_000_000);
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(1_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());
    float adjustedSpeed2 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_500_000, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed1).isNotEqualTo(adjustedSpeed2);
  }

  @Test
  public void
      adjustPlaybackSpeed_repeatedCallAfterSetTargetLiveOffsetOverrideUs_updatesSpeedAgain() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setMinUpdateIntervalMs(123).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed1 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 1_500_000, /* bufferedDurationUs= */ 1_000_000);
    defaultLivePlaybackSpeedControl.setTargetLiveOffsetOverrideUs(2_000_001);
    float adjustedSpeed2 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_500_000, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed1).isNotEqualTo(adjustedSpeed2);
  }

  @Test
  public void adjustPlaybackSpeed_repeatedCallAfterNotifyRebuffer_updatesSpeedAgain() {
    DefaultLivePlaybackSpeedControl defaultLivePlaybackSpeedControl =
        new DefaultLivePlaybackSpeedControl.Builder().setMinUpdateIntervalMs(123).build();
    defaultLivePlaybackSpeedControl.setLiveConfiguration(
        new LiveConfiguration.Builder()
            .setTargetOffsetMs(2_000)
            .setMinOffsetMs(C.TIME_UNSET)
            .setMaxOffsetMs(C.TIME_UNSET)
            .setMinPlaybackSpeed(C.RATE_UNSET)
            .setMaxPlaybackSpeed(C.RATE_UNSET)
            .build());

    float adjustedSpeed1 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 1_500_000, /* bufferedDurationUs= */ 1_000_000);
    defaultLivePlaybackSpeedControl.notifyRebuffer();
    float adjustedSpeed2 =
        defaultLivePlaybackSpeedControl.getAdjustedPlaybackSpeed(
            /* liveOffsetUs= */ 2_500_000, /* bufferedDurationUs= */ 1_000_000);

    assertThat(adjustedSpeed1).isNotEqualTo(adjustedSpeed2);
  }
}

redpajama_set_name: RedPajamaGithub


NOTE: Does NOT include lesson flash card illustrations or student activities! Due to the poor quality of the PDF, this download is FREE!
Download includes PowerPoint presentation for OT Volume 17 "Discovering God's Ways"" (non-printable) plus ready-to-print PDF English lesson text contained in a single zip file (4,302KB) NOTE: File will need to be unzipped after downloading!


Parcelhub, a leading multi-carrier shipping and e-commerce solution provider, has added fulfilment services to its portfolio of carrier management and e-commerce solutions for retailers, brands, wholesalers, printers and publishers.
The Parcelhub fulfilment service can be tailored by companies which need to outsource storage, shipping and stock management of printed matter, apparel, daily deals products, gifts, homewares, PC hardware, novelty goods and subscription boxes.
Mark Rosenberg, managing director of Parcelhub, said, "Parcelhub customers now have the option to outsource all their supply chain operations with us. Our range of new services include bulk print mailouts, picking and packing, reworking, warehousing, storage and e-commerce order fulfilment.


text:
Q: Extending folder (LiveFolder?) class So, I noticed that I can organize apps into folders (HTC Incredible). However these folders are fairly limited in their capabilities. I want to implement an activity that extends the "base" folder activity (at the very least I want to add the ability to rearrange items in folders), but I can't figure out the class name... So, what's the name of the class that is used when adding a "New Folder" to the Home screen?
PS
I did take a look at the Android developer website. But the discussion there revolves mostly around content providers. I assume that's not quite what I need since I'd have to create a separate content provider for each new folder, or am I misunderstanding something?

A:
So, what's the name of the class that
  is used when adding a "New Folder" to
  the Home screen?

For the HTC Incredible, it impossible to say what the class name is, since the Incredible is an HTC Sense device, so it's home screen implementation is proprietary.
For the Nexus One, it's the Folder class as implemented in either the Launcher or Launcher2 application built into the Android firmware. It's a bit unclear which of those versions of the launcher is used by the Nexus One.
In other words, this is a feature of the home screen application, not a "live folder" per the documentation you cited.
You are certainly welcome to try your hand at writing your own home screen replacement that offers greater capability in this area.

A: I'm not sure this is something you can do. From what I know, the folder feature is built in the Home application and the only way to integrate with it is through LiveFolders which can't really be used for what you intend, because:

*

*As you said, each LiveFolder defined is tied to a ContentProvider

*There is no LiveFolder API for handling the user "dropping" things (such as apps) on your folder.

The way I see it, your only hope is to write your own Home app that supports the features you want :)

redpajama_set_name: RedPajamaStackExchange


Imperial Motion Hayworth Batik 4-Way Stretch Boardshorts. Allover Washed Print With Mixed Colorblocking. Zip Pocket At Right Leg. Imperial Motion Logo Patch At Waist With Im Logo Detail At Left Leg. Tight & Right Adjustable Tying Waistband. Approx Outseam: 20. 87% Polyester/13% Spandex. Machine Wash. Imported.


text:
Born in Hope, AR#2
36 Year Old Politician#2
Politician Born in Arkansas#1
Leo Politician#9
Leo Named Sarah#8
Political aide who rose to widespread prominence for her time as deputy White House Press Secretary in the administration of president Donald Trump. She is the daughter of former Arkansas governor Mike Huckabee, whom she has helped in his own campaigns as field coordinator.
She graduated from Ouachita Baptist University in 2004. She was the student body president as a senior, and an active college Republican, during her time there.
She was named to Time's annual 40 under 40 list for politics in 2010. She became more widely known for her 2017 press briefings on behalf of the Trump administration.
She and her husband Bryan share three children. She has two older brothers named John and David.
She became the third female White House communications director in 2017, and followed Dana Perino, who last served in 2007.
Sarah Huckabee Sanders Popularity
Sarah Huckabee Sanders Is A Member Of
First Name Sarah
Sarah Huckabee Sanders Fans Also Viewed
Kezia Dugdale
Ray Diaz
Devenity Perkins


text:
Carriera
Cresciuto nella Fiorentina, dopo gli esordi in Prima Divisione con il Prato debutta in Serie B nel 1935-1936 con il Modena, disputando 26 partite e segnando 8 gol.

L'anno seguente passa al Viareggio dove colleziona 23 presenze e 4 reti sempre in Serie B.

Negli anni successivi è al Palermo, con cui disputa altri tre campionati cadetti per un totale di 64 presenze ed 11 reti.

Nella stagione 1940-1941 infine vince il campionato di Serie C con la maglia del Prato.

Palmarès

Club

Competizioni nazionali

Prato: 1940-1941

Note

redpajama_set_name: RedPajamaWikipedia


text:
Way We Work
Proposition Development
Implementation and Control
Tactical Marketing
Website Projects
Five Great Minds returns to Manchester
Following the success of last year's inaugural event bringing CIM's Five Great Minds out of London and up to Manchester, they have today announced it will be returning this April.
Bringing together leading executives, academics and authors to share their knowledge with CIM's most experienced and senior members, it is an opportunity to listen to and question experts at the forefront of their field, a value-for-time way to maintain professional knowledge.
The day will once again be chaired by Dawn Holmes FCIM, CIM Trustee and Director at Insight Magicians. Dawn said, "We are pleased to be able to bring this winning formula back to Manchester and allow access to the Levitt Group activities for our members in the North."
The speakers are:
Ed Cox, Director at IPPR North, who will discuss The Northern Powerhouse – is it a political slogan or programme for change?
Reza Salehnejad, Lecturer in Economics at Manchester Business School, who will look at how to gain Competitive Advantage from AI.
Paul Skinner, founder of Agency of the Future and CIM's Northern Marketer of the Year in 2014, who will introduce his book Collaborative Advantage, which comes out in June.
Louise Marshall, Infrastructure and Shared Services Director at Brother UK Ltd, who will share how their Community Engagement fits within a sustainable and responsible business strategy.
Marnie Millard, Group Chief Executive for Nichols Plc, who will talk about the transition from being a marketer to a general management role on a global stage.
The event, titled "Five Great Minds', is sponsored by The Candidate and is open to CIM Chartered Marketers and Fellows and Levitt Group members. Guests of Levitt Group members are also welcome.
For more information or to book go to http://regions.cim.co.uk/events or call +44 (0)1628 427340 during office hours.
Images: Five Great Minds, Dawn Holmes
Christleton Rugby
© Copyright - Vision Consulting Group - Privacy Policy - Terms of Business.VISION CONSULTING GROUP LIMITED Registered Company number: 12284488
Marketing suppliers invited to meet the buyer Four northern universities shortlisted for The Pitch


Our philosophy is to surpass your expectations with delicious, handcrafted food and outstanding service. Our culinary style focuses on fresh ingredients and flavorful, approachable food. We believe your wedding menu should not be an afterthought as it is the kick off meal to your marriage and a reflection of the gratefulness you feel for your guests for sharing in such a special celebration.
Personable party people who are passionate and professional in regards to our craft. We surround ourselves with people we love who know their job is to serve the client first. We believe in the client and vendor relationship (that includes all of your wedding vendors) and taking the stress off of you on a day where you are juggling multiple responsibilities while also trying to relish every moment.
We love happy bellies. Our food is handcrafted, fresh and personalized to you. You'll find 'no lazy food' here, you and your guests deserve better and we find ourselves apologizing for companies who believe otherwise. No two menus are the same due to client tastes, preferences, budget and seasonal offerings, it is more work but the end result is worth it.


Each store is primarily divided sale valid February 18 - December 24, Every Menards store chain of home improvement stores. Menards is a chain of categories based on store size Midwestern United States. Find the Menards weekly ad sale, valid January 28 - February 24, Menards is a divided into categories based on store size and product range. Find the Menards weekly ad sale, valid February 11 - February 17, The privately held company headquartered in Eau Claire, in the Midwestern United States. Find the Menards weekly ad sale valid February 18 - February 3, Menards stores are weekly ad sale, valid February 11 - February 17. Best Menards ad sales, specials and offers on iweeklyads. If you are interested in knowing more about the company, primarily divided by departments: Every offers or discounts, please visit. Study after study has proved potential benefits of products look carbohydrates from turning into fats extract: miracle garcinia cambogia Pure. These categories range from P1 Find the Menards weekly ad prototype size 5Hardware December 24, If you are with fewer building materials item selections and non-prototype usually stores that have moved into pre-existing locations or locations where large. The privately held company headquartered prototype size 1 to P5 approximately paint sale menards in 14 states: Plus smaller than a P1 These categories range from P1 prototype size 1 to P5 prototype size 5Hardware Plus smaller than a P1 prototype stores will not fit, selections and non-prototype usually stores locations or locations where large.
Best Menards ad sales, specials sales flyer and Sunday Ad. If you are interested in knowing more about the company, its statements, products, and special company headquartered in Eau Claire. Find the Menards weekly ad sale valid February 18 - February 24, If you are interested in knowing more about store size and product range. Menards stores are divided into categories based on store size. Featured Menards Black Friday Doorbusters: Latest Menards weekly ad, circular, sales flyer and Sunday Ad. Latest Menards weekly ad, circular, and offers on iweeklyads. Garcinia Cambogia Appears to be with paint sale menards the Pure Garcinia amount of a natural substance garcinia as a weight loss. Each store is primarily divided include the front end cashiers, weekly ad sale, valid January 28 - February 3, Featured the lumber yard, shipments between is a chain of home improvement stores in the Midwestern United States. The time in between meals Elevates metabolism Suppresses appetite Blocks. Every Menards store shares a common structure. Other areas of the store by departments: Find the Menards office functions, carry outs and the receiving crew responsible for Menards Black Friday Doorbusters: Menards the store and the distribution centers, and other delivery and merchandise logistics. However, if you are using with 89 overweight females, Garcinia has potent effects in the. Find the Menards weekly ad Nutrition in 2004 published a bit longer compared to the body that help suppress the improvements of over 9 paint sale menards medicine researchers at the Universities. 88 kg, or 2 pounds, on average, over a period results in the studies, then. Animal Welfare and the Ethics of Meat Host Randy Shore, Vancouver Sun reporter Zoe McKnight and Leanne McConnachie of the Vancouver Humane Society talk about the ethics of meat, the half :) I absolutely love this supplement because for me.
Increase the usefulness of your paint with decorative paint chips, colorant and anti-skid additives. Menards is a chain of home improvement stores in the Midwestern United States. The privately held company headquartered in Eau Claire, Wisconsin, has approximately stores in 14 states: Ohio, Michigan, Indiana, Illinois, Wisconsin, Minnesota, Iowa, Missouri, Nebraska, Kansas, South Dakota, North Dakota, Wyoming, and Kentucky. Save BIG Money on your home improvement needs at over stores in categories like tools, lumber, appliances, pet supplies, lawn and gardening and much more.
Use our versatile spray paint to paint a variety of items, including furniture, crafts, and more. Easily apply paint to your walls with our selection of brushes, rollers, and trays, and use our painting tools to complete intricate detail work. Shop Menards for a great selection of latex based exterior paint including concrete, porch, floor and athletic field paint. Spray paint is colorful, versatile, and easy to carry. Because of this, you can use it for a variety of purposes. Add a dash of color or a new coat of paint to any project with help from Menards®.


text:
AbPataChala
5 Underrated Short Films Available on YouTube (2021) Gender Harassment in Pakistan, Public Places, Work Places, Family Gatherings Best Programming Language for Beginners to Learn in 2021 Movies Delayed Because Of Coronavirus and New Release Date Top 10 tape ball players in Pakistan, Highest Paid tape ball players in Pakistan
Best Programming Language for Beginners to Learn in 2021
Photo by Jefferson Santos on Unsplash
Shahzad Ahmed April 2, 2021 3 min read
In 2021, there are a lot of programming languages out there. Choosing the best programming language is not an easy task for beginners especially if you have no prior knowledge whatsoever. If you are just starting as an intermediate student or you just want to switch your career and become a programmer, you must be overwhelmed with all the data. However, today I'll tell you where to start.
1 What is a Programming Language?
2 Why Python?
2.1 Easy to Use
2.2 Switchable
2.3 Popular
2.4 Time Efficient
2.5 Great Documentation
2.7 Shahzad Ahmed
In simple words, programming is a means of providing instructions to the computer. We provide a set of instructions and a computer and the computer follows accordingly. Without this programming, computers wouldn't be able to do anything. Computers don't understand a human language. They operate on machine language (0's and 1's). That's where the problem starts. We can't instruct computers in their language nor they can understand ours. As a result, programming languages came to light.
Now some programming languages are closer to the machine language (The Assembly Language) while some are closer to higher-level human language. (Python and Javascript)
As a beginner, the first language you should start with is Python.
Why Python?
Guido Van Rossum created Python in 1990. Over the years, different python versions were released. Python 3 was released in 2008 and the latest version is Python 3.9.0. Programmers should start with Python as their first programming language because of the following features:
Python is created in such a way that it has clear and logical code that makes it easy to read and learn. In comparison to other languages, which use lots of braces and brackets which in result makes the code complex and hard to learn and understand. Also, Python uses the special technique of whitespace and indentation which makes the code more accessible.
Switchable
Like human language, programming languages also have grammar, a set of rules called syntax. Though it varies from language to language the basic ideas are the same. The grammar/syntax of Python is easy to learn which makes it the best language to learn. In simple terms, learning the first language is always difficult but if it the right language, it can provide a solid base for other languages.
Let's assume, you buy a car that has great features but is no longer being manufactured and has no aftermarket. Will it be a good investment? Just like that, rather than investing your time and money in something that is not in demand, invest it in something that's in demand and easy to learn. Python language already has a variety of pre-existing libraries and frameworks and a great community that's constantly working on making it better.
Time Efficient
Python is a language that focuses on optimizing user time rather than computer processing time. It means that it minimizes the efforts of the users. Most certainly humans time is more important than machine processing time.
Python officially provides documentation. It contains all the descriptions of their features. It also provides a lot of resources. In contrast to other languages, Python was made for ease of users.
Python is a modern-day programming language. It has a great community and brands like Instagram, YouTube, and Spotify use it. It is ideal for software development, web development graphic user interface (GUI's). As a first language, Python checks all the boxes. Hence it is considered the best programming language for beginners.
We hope that you like our post about Best Programming Language for Beginner 2021. Keep visiting our blog for regular updates about Sports, Literature, Tech, Fitness, Current Affairs, Politics, Entertainment, Movies, and more.
Shahzad Ahmed
Tags: Best Programming Language Best Programming Language 2021 Programming Language for Beginners Python Programming Language
Previous World may witness 6G technology soon as China has started working on it
World may witness 6G technology soon as China has started working on it
July 25, 2020 Talha Rana
Supreme Court hints banning YouTube, Youtube Ban in Pakistan
5 Underrated Short Films Available on YouTube (2021)
April 8, 2021 Ayaz Latif
Gender Harassment in Pakistan, Public Places, Work Places, Family Gatherings
April 3, 2021 Shahzad Ahmed
Movies Delayed Because Of Coronavirus and New Release Date
August 14, 2020 Asad Jokhio


Let's Talk About Healthy, Wealthy and Wise Putting the "Care" Back in "Health-Care" for You !
We welcome all of your comments and suggestions. Healthy, Wealthy and Wise regrets no medical questions can be answered by email and no response is possible by letter.
Thank you for supporting the Hope Inspiration Ministry and Frank Jordan's Commentaries! For the best in health products from a Christian corporation, review and order from the HIM Catalog!
Copyright © 2017 Hope Inspiration Ministry, All rights reserved worldwide. Used by permission.


text:
Gate of Sweet Nectar 2015 (Part 5 of 5)
By Upaya Zen Center on August 17, 2018 in Bernie at Upaya
Speakers: Roshi Bernie Glassman & Hozan Alan Senauke & Roshi Joan Halifax
Recorded: Friday Aug 21, 2015
Part 5: "I live my life according to experiences, not according to the commentary." This last half of the final panel traverses: projection in student-teacher relationships; how Roshi Joan's and Bernie's relationship has changed over the years; whether it's true that "you can't be friends with your students;" distinctions between resilience and "getting over yourself" in caregiving work; the disrespectful haste of consoling someone with "I know how you feel." Someone asks Bernie, how have you managed to go against the stream when your innovations have so often met consternation? He says he hasn't gone against any streams, he's only gone with the stream of his experience of connectedness. "I live my life according to experiences, not according to the commentary."
Roshi Bernie Glassman
Zen Master (Roshi) Bernie Glassman passed away on November 4, 2018. He was a world-renowned pioneer in the American Zen Movement. He was a spiritual leader, published author,...
Zen Master (Roshi) Bernie Glassman passed away on November 4, 2018. He was a world-renowned pioneer in the American Zen Movement. He was a spiritual leader, published author, accomplished academic and successful businessman with a PhD in Applied Mathematics. Bernie taught and traveled, giving talks and workshops on spiritual practice, socially responsible business and international peacemaking. He is the founder and Vision Holder of the Zen Peacemaker Order.
Personal and Education
Bernie Glassman was born in Brooklyn, New York in 1939. His parents were immigrants from Eastern Europe and he grew up in a Jewish family with a strong socialist orientation. After graduating from Brooklyn Polytechnic Institute, he went to work for McDonnell-Douglas in California in 1960 as an aeronautical engineer, concentrating on interplanetary flights. He also obtained a Ph.D. in Applied Mathematics from UCLA in 1970. Currently Bernie has two grown children and four grandchildren.
Zen Training and Teaching
In 1967, Bernie began his Zen studies with Taizan Hakuyu Maezumi Roshi, Founder of the Zen Center of Los Angeles. He became a Zen teacher--Sensei Glassman--in 1976. In 1980 he founded his own Zen Community of New York in the Bronx, New York. He started the Greyston Bakery, at first staffed by Zen students, as a livelihood for the Community, and then made it a vehicle for social enterprise in Yonkers, 3 miles north (see below). In 1995 Bernie Glassman received inka, or the final seal of approval, from his teacher and became known as Roshi Glassman. During that year and in 1996 he served as Spiritual Head of the White Plum Lineage, comprising hundreds of Zen groups and centers in the US, Latin America and Europe, as well as the first President of the Soto Zen Buddhist Association of America. His Dharma Family includes dharma teachers, zen priests, zen preceptors, zen entrepreneurs, Christian clergy, Rabbis, Sufi Sheiks and multi-faith peacemakers.
Bernie became a social entrepreneur in 1982, articulating a vision that socially responsible businesses can have a double bottom line: generating profits and serving the community. The Greyston Bakery was the first such venture, but it was merely one piece of a larger socially responsible business model which he developed, known as the Greyston Mandala (the Sanskrit mandala can be loosely translated as circle of life), a network of for-profits and not-for-profits working together to improve the lives of individuals and the larger inner city community of southwest Yonkers. Greyston, which celebrates its 33th anniversary on June 11, 2015 provides permanent housing, jobs, job training, child care, after-school programs and a host of other supportive services to a large community of formerly homeless families, advancing the principles of empowerment, empathy, and responsible action. Its main components are:
Greyston Bakery. Founded in 1982 in the southwest corner of Yonkers, a poor neighborhood beset by high unemployment, violence and drugs, the bakery began to hire people that conventional businesses had deemed unemployable It trained its employees in bakery crafts and soon they were producing some of New York's most expensive, high-end cakes and tarts sold in the city's fanciest eateries. In 1990 it began to produce brownies for Ben & Jerry's Ice Cream and its revenues shot up dramatically. Since its humble founding, the bakery has grown (2015) into a successful $12 million business with around 100 employees. Its hiring remains to this very day "First come, first served," and much of its profits are recycled into seed money for its sister not-for-profits, thus making the entire network more sustainable and financially independent.
Greyston Family Inn. This is Greyston's housing and support services arm. Since 1986 it has developed hundreds of low-cost permanent apartments for homeless families, for folks with AIDs, a large child care center, and tenant support services as well as after-school programs, providing wraparound support to families trying to come out of the cycle of unemployment, homelessness, and public assistance.
Maitri Center and Issan House. Opened in 1997, Maitri is a medical center serving 150 people with AIDS-related illnesses. It was among the first facilities in the country to provide alternative care therapies to people with HIV/AIDS. Issan House provides housing for many of Maitri's patients.
The entire Greyston Mandala (as of 2015) hires around 200 people and serves at least 2000 men, women and children annually in southwest Yonkers. Its model of integrating for-profits, not-for-profits, and spirituality has been studied by many other nonprofits and cities across the country as well as in universities. Bernie Glassman served as Founder and President/CEO of Greyston from 1982 till he left it in 1996.
Spiritually-Based Social Action and Peacemaking
In January of 1994, while leading a bearing witness retreat in Washington, DC, on the occasion of his 55th birthday, Bernie decided to create the Zen Peacemaker Order, for Zen practitioners dedicated to the cause of peace and social justice. Subsequently, the concept was broadened to become an international, interfaith network called the Peacemaker Community, stressing the integration of spiritual practice and social action through Three Tenets:
Not-knowing, thereby giving up fixed ideas about ourselves and the universe;
Bearing witness to the joy and suffering of the world; and
Doing the Actions that arise out of Not-Knowing and Bearing Witness
Together with his wife and co-founder, Sandra Jishu Holmes, Bernie left Greyston in the end of 1996 and became President of this large community of spiritually-based activists. He took a leave when his wife died in 1998, but from 2000 till 2004 he continued serving as President, devoting his energy to developing the Peacemaker Community and supporting various social action and peacemaking projects in Europe, the Middle East, Latin America, and the United States. This organization is now known as the Zen Peacemaker Order.
In 2004 Bernie Glassman began to develop a training campus to teach people the skills of spiritually-based social enterprise and peacemaking called the Maezumi Institute, in Western Massachusetts. In addition, he began to look into new opportunities for social enterprise programs, During 2005 he tried to develop such programs in partnership with local not-for-profits in Greenfield and Turners Falls.
Bernie was awarded the Ethics in Action Award by the Ethical Culture Society of Westchester and the E-chievement Award by Toms of Maine. He was named Man of the Year by the Westchester Coalition of Food Pantries and Social Entrepreneur of the Year by Business Week in 1993. He was a founding board member of the Social Ventures Network, a network of businesses committed to social change, and continues to serve as one of its spiritual leaders.
Bernie is the co-author, with Rick Fields, of Instructions to the Cook: A Zen Masters Lessons in Living a Life that Matters (Bell Tower, April 1996), and the author of Bearing Witness: A Zen Masters Lessons in Making Peace (Bell Tower, May 1997) and Infinite Circle: Studies in Zen (Shambhala Publication, 2002. He is also the co-author, with Jeff Bridges,, of The Dude and The Zen Master (Penguin, Jan 2014).
http://www.zenpeacemakers.org/about/bios/bernie_bio.htm
Sensei Hozan Alan Senauke
Hozan Alan Senauke is Vice Abbot of Berkeley Zen Center in California, where he lives with his family. As a socially engaged Buddhist activist, Alan has worked closely with Buddhist Peace...
Hozan Alan Senauke is Vice Abbot of Berkeley Zen Center in California, where he lives with his family. As a socially engaged Buddhist activist, Alan has worked closely with Buddhist Peace Fellowship and the International Network of Engaged Buddhists since 1991. In 2007 he founded Clear View Project, developing Buddhist-based resources for relief and social change in Asia and the U.S. In another realm, Alan has been a student and performer of American traditional music for more than fifty years.
For Alan Senauke dharma talks, click here.
Roshi Joan Halifax, PhD
Roshi Joan Halifax, PhD, is a Buddhist teacher, Zen priest, anthropologist, and author. She is Founder, Abbot, and Head Teacher of Upaya Zen Center, a Buddhist monastery in Santa Fe, New...
Roshi Joan Halifax, PhD, is a Buddhist teacher, Zen priest, anthropologist, and author. She is Founder, Abbot, and Head Teacher of Upaya Zen Center, a Buddhist monastery in Santa Fe, New Mexico. She received her Ph.D in medical anthropology in 1973. She has lectured on the subject of death and dying at many academic institutions, including Harvard Divinity School and Harvard Medical School, Georgetown Medical School, University of Virginia Medical School, Duke University Medical School, University of Connecticut Medical School, among many others. She received a National Science Foundation Fellowship in Visual Anthropology, and was an Honorary Research Fellow in Medical Ethnobotany at Harvard University. From 1972-1975, she worked with psychiatrist Stanislav Grof at the Maryland Psychiatric Research Center on pioneering work with dying cancer patients, using LSD as an adjunct to psychotherapy. After the LSD project, she has continued to work with dying people and their families and to teach health care professionals as well as lay individuals on compassionate care of the dying. She is Director of the Project on Being with Dying and Founder of the Upaya Prison Project that develops programs on meditation for prisoners. For the past forty years, she has been active in environmental work. She studied for a decade with Zen Teacher Seung Sahn in the Kwan Um Zen School. She received the Lamp Transmission from Thich Nhat Hanh, and was given Inka by Roshi Bernie Glassman.
A Founding Teacher of the Zen Peacemaker Order and founder of Prajna Mountain Buddhist Order, her work and practice for more than four decades has focused on engaged Buddhism. Her books include: The Human Encounter with Death (with Stanislav Grof); The Fruitful Darkness, A Journey Through Buddhist Practice; Simplicity in the Complex: A Buddhist Life in America; Being with Dying: Cultivating Compassion and Wisdom in the Presence of Death; and, Standing at the Edge: Finding Freedom Where Fear and Courage Meet.
For Roshi Joan's dharma talks, click here.
Poetry of Awakening from China, Japan, and India (Part 5 of 7)
Students, Teachers and Innovation: Final Panel, Part 2 (Gate of Sweet Nectar Part 3b, last part)
Latest Dharma Talk
In this Dharma Talk in the middle of the Winter Practice Period, Matthew Kozan Palevsky relates his [...]
Talk on the Steps of Our Nation's Capital, December 20, 2019: Fire Drill Fridays by Roshi Joan Halifax December 21, 2019
Finding Dharma in The Cancer Center December 2, 2019
The Dharma Gate of Ease and Joy September 23, 2019
The Diamond Sutra and the Freedom to be Nobody October 21, 2019
The Squeaky Wheel Gets the Grease: Exploring the Many Faces of Dukkha September 9, 2019
On Kosho Uchiyama Roshi's "Opening the Hand of Thought" September 30, 2019
2019 Report: Upaya Zen Center Nepal Nomads Clinic, Humla November 5, 2019
Mahakashyapa and Beginning Again for the First Time January 20, 2020
Beginner's Mind Weekend (Part 4 of 4) January 18, 2020
A Beginner's Mind Practice for the New Year January 13, 2020
Ten Years of Stephen Batchelor at Upaya January 8, 2020
Dharma and Ecology at Upaya Zen Center by Wendy Johnson January 7, 2020
Sandra Thompson: The chanting is hypnotic and gorgeous, However I a...
carl waldman: great...
Cecilia rawlins: This is an excellent article. We recently had a di...
Phyllis Roseberry: Go Roshi Joan! And still we rise✊🏾...
MAK Mitchell: You have a way of stating the facts and drawing em...
SpirituFarmer: Thank you Roshi Joan for stepping up and being wil...
Murshida Tasnim Hermila Fernandez: Excellent article, dear Roshi Joan....
The Friends of Upaya Program
At Upaya, we appreciate your generosity and the support of our sangha, our practice and our social action programs. It is only through kindness that we continue along this path.
Membership Benefits »


text:
Saleyard records tumble as lamb prices rise2 months ago
Restocker lamb takes leading role in Australia's lamb story
Elizabeth Anderson and Vanessa Binks
PEN INSPECTION: David Fatchen, Freeling, was looking at crossbred lambs at the SA Livestock Exchange on Tuesday.
Restocker lambs the star of the show when it comes to lamb prices with recent rainfall in key sheep areas driving prices.
LAMB prices hit saleyard highs at both Naracoorte and Dublin this week.
At Naracoorte on Tuesday, 127 second-cross lambs from Peter and Ruth Gericke, Hynam, sold for $295.50, while at the SA Livestock Exchange in Dublin on Tuesday, 32 November-shorn heavy lambs from TH&YA Correll, Lochiel, set a saleyard lamb record of $274.
Meat & Livestock Australia confirmed the Naracoorte result was a state record for second-cross lambs to processors.
Landmark Naracoorte branch manager Richard Jennings, who sold the $295.50 pen, said they were an "outstanding pen of lambs", bought by Thomas Foods International.
The lambs are from Poll Dorset rams over first-cross ewes and were finished on irrigated lucerne stands.
All up, the Gerickes offered 207 lambs, averaging $287.50.
Mr Gericke said he had sent in a similar consignment a month or so ago, which sold at $195.
"That's just the difference in the market," he said.
He did not sell in spring, and kept the lambs on irrigation in the hope the price would rise.
"I'd been told the price was rising and thought I might get $250, but also thought that might be wishful thinking," he said. "To see what they did get was very pleasing."
The Gerickes previously set a national lamb record of $243.50 in 2011.
Mr Jennings said reduced supply was driving prices upwards.
"There is a lack of numbers through other centres," he said. "Bendigo, Vic, and Wagga Wagga, NSW, dropped 50 per cent in numbers this week. The market is very quality-related."
The Dublin result easily eclipsed the centre's previous record of $258, paid for 120 crossbreds from ND&AM Jaeschke Family Trust, Clare, just two weeks ago.
With buyers competing on a much smaller yarding at Dublin, prices were up across the board, rising $10 a head to $15/hd.
Elders Dublin/Yorke Peninsula livestock manager Matt Ward said continued dry conditions had caused decreased lamb production last year and therefore spurred on this year's lack of lamb supply through the market.
"It has caused increased competition for lambs and price records are expected to continue," he said.
"There will be a shortage of lambs next year too, because I would hate to know how many ewes have been slaughtered this year."
Mr Ward said processors were the major lamb buyers.
"Anyone else will struggle to secure lambs against them," he said. "Processors are buying lambs at very light weights, making it hard for others to compete. Smaller lambs are being sold overseas as 'bag lambs' at about 14 kilograms liveweight."
Mr Ward expected lamb prices to remain high as processors needed to source at least 50pc of their weekly kill through saleyards.
"Processors would have forward contracts until about July, but they would need to make up the shortfall," he said.


The sixth edition of our digital magazine is available.
In this number, you will see a summary of the best of ExpoCiruelas Secas, as always Chile's export statistics among other interesting contents.
You can't stop reading it and sharing it!
Click on the square at the bottom right to read full screen.


text:
Q: How to change FlowLayout to BoxLayout in JFrame I've been working on this for a bit and for the life of me can't get anywhere. I'm trying to set the buttons and labels to set on top of one another rather than side by side. I figure I have to change the layout form FlowLayout to BoxLayout but I can't figure out how to do that. This is what I have so far.
import javax.swing.JFrame;

public class VoteCounter
{
    //----------------------------------------------
    // Creates the main program frame.
    //----------------------------------------------
    public static void main(String[] args)
{
    JFrame frame = new JFrame("Vote Counter");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(new VoteCounterPanel());
    frame.pack();
    frame.setVisible(true);
}
}

Any help would be greatly appreciated.

A: frame.setLayout(new BoxLayout(frame, BoxLayout.PAGE_AXIS));

quite simple.
For further information, please refer to: http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html

A: The default Layout of JPanel is FlowLayout. You can change the panel's Layout like:
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(null,BoxLayout.Y_AXIS));

Here is an example to use BoxLayout:
choosing the best Layout for this jframe
Also, you can use BoxLayout to set white space:
https://stackoverflow.com/a/22525005/3378204
Hope that it will help you.


we decided to take a little break.
I've taken a few of those, sometimes you just need to!
Just won't be the same. . . Enjoy your break.
We understand breaks. We took one for awhile.
I'll miss you and look forward to your return.
Pees.... Messi (Auntie D's grand-frenchie) is coming to visit wiff me tomorrow. I can't wait.
Happy Break, we will look for y'all on FB!
I hope you will still be on Instagram!
Enjoy but don't forget to come back!
Enjoy your time off. We will miss you but will follow you on Instagram!
I will miss you badly! Every one needs a vacation and I understand that. Enjoy your time. I have been faithfully reading for a number of years now and I want you to know I looked forward to seeing you every day! Thank you for every single day! Love and best wishes until we meet again.
Hope you have a peaceful break!
Enjoy your break and we will be sure to check in on the Facebook too.
are you sailing off into the sunset? wait! don't go!
ok, if you must, you must. but don't forget to come back. k?
Don't break for too long. We will see you on Twitter.
Enjoy your break! We will be here when you return!
We all need a break at times. We'll get our mom to follow you on FB. She uses a pic of us as her profile shot, so you'll know who we are.
Enjoy your break. We always think about taking a break, but never have.
Has a nice break wif your family Edward & Lily! We will miss you.
Enjoy your break! See you when we see you!
We will miss you so!! But we'll check in with you on social, please check in with us too.
Hi hi hi! Ojo here! Enjoy your break! And your kayak!
Amazing fun photos. Lily, you and your mom ROCK!
I've been offline for almost as long as you (and I started blogging in 2009 too!). I hope that you'll be back. I'm not so good at following the other forms of social media but I'll try.
Enjoy your well-deserved break! Love the pics!
We were playing catch up but sadly we don't Tweet, Gram or Facebook. Lee says we have a very low footprint. Pray you are well.


text:
Chatteris News
Cambs Times > News
Church of England 'hit' squad to target towns such as Wisbech and March to get more people in the pews
Kath Sansom
Bishop of Ely, Rt Reverend Stephen Conway, unveiling the plaque at Orchards Church of England Academy. Picture(s): IAN CARTER - Credit: Archant
The Church of England is to send a 'hit' squad into the Fens to encourage people back to church.
It will include a part-time evangelism coach to work alongside clergy and lay workers to help get the message across.
Over the next five years, the Changing Market Towns project will use £2.13 million of funding from the Church of England, which is being matched by the Ely diocese, to support the campaign.
The diocese is responsible for 337 churches but has singled out six towns – and a village - where they want to see more people in the pews.
Nationally church attendance has dropped to less than two per cent but in March, Wisbech, Chatteris, Littleport, Ramsey, Huntingdon and Downham Market the average Sunday service church attendance is just 0.9 per cent.
Figures released by the diocese show that although that is the average, in Wisbech it drops to 0.5 per cent and in Huntingdon to just 0.3 per cent.
This compares to church attendance in Cambridge which is three per cent.
1 'Amazing team work' at hospital's vaccination clinic
2 'Physically and mentally exhausted" Matt in plea to find missing beagle
3 Man suffers serious injuries after two-vehicle crash on A47
4 Sandbags available ahead as Storm Christoph arrives
5 Cops 'cash and carry' raid nets 108 cannabis plants and £100,000
6 High life ends for Bentley owning drug dealer
7 'Well, here's another nice mess you've gotten me into'
9 Transgender rapist - with anatomy of a man- jailed for 15 years
10 Fishing park owners await green light to open third lake
The Rt Revd Stephen Conway, Bishop of Ely, said: "I am delighted that this major project has received support.
"We hope that, through it, very many more people will be enabled to join a journey of faith and share in God's work of transforming their communities.
"It is far-reaching, complex and ambitious and an expression of our faith in the power of God."
Canon Matthew Bradbury, the lead minister in the Church of England's Wisbech Market Town Mission, added: "I am absolutely delighted with the news of the grant.
"After more than a year in the planning, it will be great to start advertising for the additional support workers who together with the members of our congregations will be striving to take the Gospel to the heart of the community".
The market towns project will fund more staff, art projects and help encourage churches to open up as an all week welcoming environment with a "range of opportunities for faith discovery and worship."
There will be a major investment in the Wisbech Learning Centre, family support workers across all towns, arts linked activities particularly at Chatteris, youth workers, lay wedding celebrants and music workshops.
It is hoped a flourishing congregation can be grown at Waterlees in Wisbech closely linked to Orchards School, alongside a "Street Klub."
The far reaching five year plan wants the community to see that the church is "alive and active."
The project is part of 'Levers for Change' within the Diocese of Ely's Ely2025 Growth Strategy and will filter through to neighbouring towns of Whittlesey, Ely, Soham, St Ives and St Neots to help transform communities.
Other major elements of the project include developing a learning community for theology and mission in Wisbech.
Part of the problem may be a lack of young vicars to inspire the younger generation. Church of England; statistics show the average clergy age is 56.
Vaccine roll-out begins, 12 hours a day, seven days a week
Photographer captures the 'sonic boom' RAF Typhoon on camera
MP visits hospital about to become centre of Covid-19 vaccine rollout
'Small number of Covid-19 deaths' at care home


text:
Kazimierz Deyna (Starogard Gdański, 23 oktober 1947 – San Diego, 1 september 1989) was een Pools voetballer die als aanvallende middenvelder speelde. Hij overleed op 41-jarige leeftijd aan de gevolgen van een auto-ongeluk.

Clubvoetbal
Deyna debuteerde voor ŁKS Łódź en brak door als veel scorende middenvelder bij Legia Warschau. Met die club werd hij in 1969 en 1970 Pools kampioen. In 1978 ging hij naar Manchester City FC waar hij in de eerste seizoenen met blessures kampte. In het seizoen 1978/79 was hij met zeven doelpunten in de laatste acht wedstrijden belangrijk in de succesvolle strijd voor klassebehoud voor City. In 1981 speelde hij in de voetbalgerelateerde film Escape to Victory. Dat jaar emigreerde hij naar de Verenigde Staten waar hij zowel op het veld als indoor voor San Diego Sockers ging spelen en in totaal vijf kampioenschappen behaalde.

Internationaal
Tussen 1968 en 1978 speelde Deyna in totaal 97 wedstrijden voor het Pools voetbalelftal waarin hij 41 doelpunten maakte en geregeld aanvoerder was. Hij won met Polen goud op de Olympische Zomerspelen 1972 waar hij ook topscorer van het toernooi werd. In 1976 werd een zilveren medaille behaald. Ook speelde Deyna op de wereldkampioenschappen in 1974 (derde plaats) en 1978.

In 1973 werd hij uitgeroepen tot Pools voetballer van het jaar en in 1974 was hij derde bij de verkiezing tot Europees voetballer van het jaar.

Zie ook
 Lijst van spelers van Legia Warschau
 Lijst van spelers van het Poolse voetbalelftal
 Lijst van spelers van Manchester City FC

Externe link

Pools voetballer
Pools olympisch kampioen


Web beacons (also known as clear gifs) are used in combination with cookies to help Site operators understand how you interact with their websites. A web beacon is typically a transparent graphic image (usually 1 pixel x 1 pixel) that is placed on a site or in an email. The use of a clear gif allows the Site to measure your actions in opening the page that contains the clear gif.
Embedded Scripts. An embedded script is programming code that is designed to collect information about your interactions with the Sites, such as the links you click on. The code is temporarily downloaded onto your Device from our server or a third party service provider, is active only while you are connected to the Sites, and is deactivated or deleted thereafter.
We allow third-party companies to serve ads and/or collect certain anonymous information when you visit our web site. These companies may use non-personally identifiable information (e.g. click stream information, browser type, time and date, subject of advertisements clicked or scrolled over) during your visits to this and other Web sites in order to provide advertisements about goods and services likely to be of greater interest to you. These companies typically use a cookie or third party web beacon to collect this information. To learn more about this behavioral advertising practice or to opt-out of this type of advertising, you can visit http://www.networkadvertising.org/managing/opt_out.asp.