text:
package com.github.ambry.frontend;

import com.github.ambry.account.Account;
import com.github.ambry.account.Container;
import com.github.ambry.commons.Callback;
import com.github.ambry.commons.HostLevelThrottler;
import com.github.ambry.config.FrontendConfig;
import com.github.ambry.messageformat.BlobInfo;
import com.github.ambry.messageformat.BlobProperties;
import com.github.ambry.protocol.GetOption;
import com.github.ambry.quota.QuotaException;
import com.github.ambry.quota.QuotaManager;
import com.github.ambry.quota.QuotaMode;
import com.github.ambry.quota.QuotaUtils;
import com.github.ambry.quota.ThrottlingRecommendation;
import com.github.ambry.rest.RequestPath;
import com.github.ambry.rest.ResponseStatus;
import com.github.ambry.rest.RestMethod;
import com.github.ambry.rest.RestRequest;
import com.github.ambry.rest.RestResponseChannel;
import com.github.ambry.rest.RestServiceErrorCode;
import com.github.ambry.rest.RestServiceException;
import com.github.ambry.rest.RestUtils;
import com.github.ambry.router.GetBlobOptions;
import com.github.ambry.utils.Pair;
import com.github.ambry.utils.Time;
import com.github.ambry.utils.Utils;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static com.github.ambry.rest.RestUtils.*;
import static com.github.ambry.router.GetBlobOptions.*;

/**
 * Default implementation of {@link SecurityService} for Ambry that doesn't do any validations, but just
 * sets the respective headers on response.
 */
class AmbrySecurityService implements SecurityService {
  private static final Logger LOGGER = LoggerFactory.getLogger(AmbrySecurityService.class);
  static final Set<String> OPERATIONS = Collections.unmodifiableSet(
      Utils.getStaticFieldValuesAsStrings(Operations.class)
          .collect(Collectors.toCollection(() -> new TreeSet<>(String.CASE_INSENSITIVE_ORDER))));
  private final FrontendConfig frontendConfig;
  private final FrontendMetrics frontendMetrics;
  private final UrlSigningService urlSigningService;
  private final HostLevelThrottler hostLevelThrottler;
  private final QuotaManager quotaManager;
  private final AmbryCostModelPolicy ambryCostModelPolicy;
  private boolean isOpen;

  AmbrySecurityService(FrontendConfig frontendConfig, FrontendMetrics frontendMetrics,
      UrlSigningService urlSigningService, HostLevelThrottler hostLevelThrottler, QuotaManager quotaManager) {
    this.frontendConfig = frontendConfig;
    this.frontendMetrics = frontendMetrics;
    this.urlSigningService = urlSigningService;
    this.hostLevelThrottler = hostLevelThrottler;
    this.quotaManager = quotaManager;
    this.ambryCostModelPolicy = new SimpleAmbryCostModelPolicy();
    isOpen = true;
  }

  @Override
  public void preProcessRequest(RestRequest restRequest, Callback<Void> callback) {
    Exception exception = null;
    frontendMetrics.securityServicePreProcessRequestRate.mark();
    long startTimeMs = System.currentTimeMillis();
    if (!isOpen) {
      exception = new RestServiceException("SecurityService is closed", RestServiceErrorCode.ServiceUnavailable);
    } else if (restRequest == null) {
      throw new IllegalArgumentException("RestRequest is null");
    } else if (restRequest.getArgs().containsKey(InternalKeys.KEEP_ALIVE_ON_ERROR_HINT)) {
      exception = new RestServiceException(InternalKeys.KEEP_ALIVE_ON_ERROR_HINT + " is not allowed in the request",
          RestServiceErrorCode.BadRequest);
    }
    restRequest.setArg(InternalKeys.SEND_TRACKING_INFO, frontendConfig.attachTrackingInfo);
    if (exception == null && urlSigningService.isRequestSigned(restRequest)) {
      urlSigningService.verifySignedRequest(restRequest, (r, e) -> {
        frontendMetrics.securityServicePreProcessRequestTimeInMs.update(System.currentTimeMillis() - startTimeMs);
        callback.onCompletion(r, e);
      });
    } else {
      frontendMetrics.securityServicePreProcessRequestTimeInMs.update(System.currentTimeMillis() - startTimeMs);
      callback.onCompletion(null, exception);
    }
  }

  @Override
  public void processRequest(RestRequest restRequest, Callback<Void> callback) {
    Exception exception = null;
    frontendMetrics.securityServiceProcessRequestRate.mark();
    long startTimeMs = System.currentTimeMillis();
    if (!isOpen) {
      exception = new RestServiceException("SecurityService is closed", RestServiceErrorCode.ServiceUnavailable);
    } else if (restRequest == null) {
      throw new IllegalArgumentException("RestRequest is null");
    }
    frontendMetrics.securityServiceProcessRequestTimeInMs.update(System.currentTimeMillis() - startTimeMs);
    callback.onCompletion(null, exception);
  }

  @Override
  public void postProcessRequest(RestRequest restRequest, Callback<Void> callback) {
    if (restRequest == null || callback == null) {
      throw new IllegalArgumentException("RestRequest or Callback is null");
    }
    Exception exception = null;
    frontendMetrics.securityServicePostProcessRequestRate.mark();
    long startTimeMs = System.currentTimeMillis();
    try {
      if (!isOpen) {
        exception = new RestServiceException("SecurityService is closed", RestServiceErrorCode.ServiceUnavailable);
      } else if (hostLevelThrottler.shouldThrottle(restRequest)) {
        exception = new RestServiceException("Too many requests", RestServiceErrorCode.TooManyRequests);
      } else {
        if (QuotaUtils.isRequestResourceQuotaManaged(restRequest) && quotaManager != null) {
          ThrottlingRecommendation throttlingRecommendation = quotaManager.recommend(restRequest);
          if (throttlingRecommendation != null && throttlingRecommendation.shouldThrottle()
              && quotaManager.getQuotaMode() == QuotaMode.THROTTLING) {
            Map<String, String> quotaHeaderMap = RestUtils.buildUserQuotaHeadersMap(throttlingRecommendation);
            throw new RestServiceException("User Quota Exceeded", RestServiceErrorCode.TooManyRequests, true, true,
                quotaHeaderMap);
          }
        }
        if (restRequest.getRestMethod() == RestMethod.DELETE || restRequest.getRestMethod() == RestMethod.PUT) {
          accountAndContainerNamePreconditionCheck(restRequest);
        } else if (restRequest.getRestMethod() == RestMethod.GET) {
          RequestPath requestPath = getRequestPath(restRequest);
          String operationOrBlobId = requestPath.getOperationOrBlobId(true);
          // ensure that secure path validation is only performed when getting blobs rather than other operations.
          if (!operationOrBlobId.isEmpty() && !OPERATIONS.contains(operationOrBlobId)) {
            validateSecurePathIfRequired(restRequest, requestPath.getPrefix(), frontendConfig.securePathPrefix);
          }
        }
      }
    } catch (Exception e) {
      exception = e;
    } finally {
      frontendMetrics.securityServicePostProcessRequestTimeInMs.update(System.currentTimeMillis() - startTimeMs);
      callback.onCompletion(null, exception);
    }
  }

  @Override
  public void processRequestCharges(RestRequest restRequest, RestResponseChannel responseChannel, BlobInfo blobInfo) {
    Map<String, Double> requestCost = ambryCostModelPolicy.calculateRequestCost(restRequest, responseChannel, blobInfo);
    setRequestCostHeader(requestCost, responseChannel);
    if (QuotaUtils.isRequestResourceQuotaManaged(restRequest) && quotaManager != null) {
      ThrottlingRecommendation throttlingRecommendation = null;
      try {
        throttlingRecommendation = quotaManager.recommend(restRequest);
      } catch (QuotaException quotaException) {
        LOGGER.warn("Exception {} in while processing request charges.", quotaException);
      }
      if (throttlingRecommendation != null) {
        RestUtils.buildUserQuotaHeadersMap(throttlingRecommendation)
            .entrySet()
            .stream()
            .forEach(headerEntry -> responseChannel.setHeader(headerEntry.getKey(), headerEntry.getValue()));
      }
    }
  }

  @Override
  public void processResponse(RestRequest restRequest, RestResponseChannel responseChannel, BlobInfo blobInfo,
      Callback<Void> callback) {
    Exception exception = null;
    frontendMetrics.securityServiceProcessResponseRate.mark();
    long startTimeMs = System.currentTimeMillis();
    if (!isOpen) {
      exception = new RestServiceException("SecurityService is closed", RestServiceErrorCode.ServiceUnavailable);
    } else {
      if (restRequest == null || responseChannel == null) {
        throw new IllegalArgumentException("One of the required params is null");
      }
      RequestPath requestPath = RestUtils.getRequestPath(restRequest);
      RestMethod restMethod = restRequest.getRestMethod();
      if (blobInfo == null && !restMethod.equals(RestMethod.OPTIONS) && !restMethod.equals(RestMethod.PUT)
          && !restMethod.equals(RestMethod.DELETE)) {
        if (!requestPath.matchesOperation(Operations.GET_SIGNED_URL)) {
          throw new IllegalArgumentException("BlobInfo is null");
        }
      }
      try {
        GetBlobOptions options;
        responseChannel.setHeader(RestUtils.Headers.DATE, new GregorianCalendar().getTime());
        switch (restMethod) {
          case HEAD:
            options = RestUtils.buildGetBlobOptions(restRequest.getArgs(), null, GetOption.None, restRequest,
                NO_BLOB_SEGMENT_IDX_SPECIFIED);
            responseChannel.setStatus(options.getRange() == null ? ResponseStatus.Ok : ResponseStatus.PartialContent);
            responseChannel.setHeader(RestUtils.Headers.LAST_MODIFIED,
                new Date(blobInfo.getBlobProperties().getCreationTimeInMs()));
            setHeadResponseHeaders(blobInfo, options, restRequest, responseChannel);
            break;
          case GET:
            if (!requestPath.matchesOperation(Operations.GET_SIGNED_URL)) {
              options = RestUtils.buildGetBlobOptions(restRequest.getArgs(), null, GetOption.None, restRequest,
                  NO_BLOB_SEGMENT_IDX_SPECIFIED);
              responseChannel.setStatus(ResponseStatus.Ok);
              RestUtils.SubResource subResource = RestUtils.getRequestPath(restRequest).getSubResource();
              responseChannel.setHeader(RestUtils.Headers.LAST_MODIFIED,
                  new Date(blobInfo.getBlobProperties().getCreationTimeInMs()));
              Container container = RestUtils.getContainerFromArgs(restRequest.getArgs());
              if (subResource == null) {
                Long ifModifiedSinceMs = getIfModifiedSinceMs(restRequest);
                if (ifModifiedSinceMs != null
                    && RestUtils.toSecondsPrecisionInMs(blobInfo.getBlobProperties().getCreationTimeInMs())
                    <= ifModifiedSinceMs) {
                  responseChannel.setStatus(ResponseStatus.NotModified);
                } else {
                  if (options.getRange() != null) {
                    responseChannel.setStatus(ResponseStatus.PartialContent);
                  }
                  setGetBlobResponseHeaders(blobInfo, options, responseChannel);
                  setBlobPropertiesHeaders(blobInfo.getBlobProperties(), responseChannel);
                  setAccountAndContainerHeaders(restRequest, responseChannel);
                  setUserMetadataHeaders(blobInfo.getUserMetadata(), responseChannel, container.getUserMetadataKeysToNotPrefixInResponse());
                  responseChannel.setHeader(RestUtils.Headers.LIFE_VERSION, blobInfo.getLifeVersion());
                }
                setCacheHeaders(restRequest, responseChannel);
              } else {
                if (subResource.equals(RestUtils.SubResource.BlobInfo)) {
                  setBlobInfoHeaders(blobInfo.getBlobProperties(), responseChannel);
                  setBlobPropertiesHeaders(blobInfo.getBlobProperties(), responseChannel);
                  setAccountAndContainerHeaders(restRequest, responseChannel);
                  responseChannel.setHeader(RestUtils.Headers.LIFE_VERSION, blobInfo.getLifeVersion());
                } else if (subResource.equals(SubResource.Segment)) {
                  setGetBlobResponseHeaders(blobInfo, options, responseChannel);
                  setBlobPropertiesHeaders(blobInfo.getBlobProperties(), responseChannel);
                  setAccountAndContainerHeaders(restRequest, responseChannel);
                }
                if (!setUserMetadataHeaders(blobInfo.getUserMetadata(), responseChannel, container.getUserMetadataKeysToNotPrefixInResponse())) {
                  restRequest.setArg(InternalKeys.SEND_USER_METADATA_AS_RESPONSE_BODY, true);
                }
              }
            }
            break;
          case POST:
            responseChannel.setStatus(ResponseStatus.Created);
            responseChannel.setHeader(RestUtils.Headers.CONTENT_LENGTH, 0);
            responseChannel.setHeader(RestUtils.Headers.CREATION_TIME,
                new Date(blobInfo.getBlobProperties().getCreationTimeInMs()));
            break;
          case OPTIONS:
          case PUT:
            if (requestPath.matchesOperation(Operations.NAMED_BLOB)) {
              responseChannel.setStatus(ResponseStatus.Created);
              responseChannel.setHeader(RestUtils.Headers.CONTENT_LENGTH, 0);
              responseChannel.setHeader(RestUtils.Headers.CREATION_TIME,
                  new Date(blobInfo.getBlobProperties().getCreationTimeInMs()));
            }
            break;
          case DELETE:
            // There is nothing to do with delete
            break;
          default:
            exception = new RestServiceException("Cannot process response for request with method " + restMethod,
                RestServiceErrorCode.InternalServerError);
        }
      } catch (RestServiceException e) {
        exception = e;
      }
    }
    processRequestCharges(restRequest, responseChannel, blobInfo);
    frontendMetrics.securityServiceProcessResponseTimeInMs.update(System.currentTimeMillis() - startTimeMs);
    callback.onCompletion(null, exception);
  }

  @Override
  public void close() {
    isOpen = false;
  }

  /**
   * Fetches the {@link RestUtils.Headers#IF_MODIFIED_SINCE} value in epoch time if present
   * @param restRequest the {@link RestRequest} that needs to be parsed
   * @return the {@link RestUtils.Headers#IF_MODIFIED_SINCE} value in epoch time if present
   */
  private Long getIfModifiedSinceMs(RestRequest restRequest) {
    if (restRequest.getArgs().get(RestUtils.Headers.IF_MODIFIED_SINCE) != null) {
      return RestUtils.getTimeFromDateString((String) restRequest.getArgs().get(RestUtils.Headers.IF_MODIFIED_SINCE));
    }
    return null;
  }

  /**
   * Sets the required headers in the HEAD response.
   * @param blobInfo the {@link BlobInfo} to refer to while setting headers.
   * @param options the {@link GetBlobOptions} associated with the request.
   * @param restRequest the {@link RestRequest} that was received.
   * @param restResponseChannel the {@link RestResponseChannel} to set headers on.
   * @throws RestServiceException if there was any problem setting the headers.
   */
  private void setHeadResponseHeaders(BlobInfo blobInfo, GetBlobOptions options, RestRequest restRequest,
      RestResponseChannel restResponseChannel) throws RestServiceException {
    BlobProperties blobProperties = blobInfo.getBlobProperties();
    if (blobProperties.getContentType() != null) {
      restResponseChannel.setHeader(RestUtils.Headers.CONTENT_TYPE, blobProperties.getContentType());
    }
    if (blobProperties.getContentEncoding() != null) {
      restResponseChannel.setHeader(Headers.CONTENT_ENCODING, blobProperties.getContentEncoding());
    }
    restResponseChannel.setHeader(RestUtils.Headers.ACCEPT_RANGES, RestUtils.BYTE_RANGE_UNITS);
    long contentLength = blobProperties.getBlobSize();
    if (options.getRange() != null) {
      Pair<String, Long> rangeAndLength =
          RestUtils.buildContentRangeAndLength(options.getRange(), contentLength, options.resolveRangeOnEmptyBlob());
      restResponseChannel.setHeader(RestUtils.Headers.CONTENT_RANGE, rangeAndLength.getFirst());
      contentLength = rangeAndLength.getSecond();
    }
    restResponseChannel.setHeader(RestUtils.Headers.CONTENT_LENGTH, contentLength);
    setBlobPropertiesHeaders(blobProperties, restResponseChannel);
    setAccountAndContainerHeaders(restRequest, restResponseChannel);
    restResponseChannel.setHeader(RestUtils.Headers.LIFE_VERSION, blobInfo.getLifeVersion());
  }

  /**
   * Sets the required headers in the response.
   * @param blobInfo the {@link BlobInfo} to refer to while setting headers.
   * @param options the {@link GetBlobOptions} associated with the request.
   * @param restResponseChannel the {@link RestResponseChannel} to set headers on.
   * @throws RestServiceException if there was any problem setting the headers.
   */
  private void setGetBlobResponseHeaders(BlobInfo blobInfo, GetBlobOptions options,
      RestResponseChannel restResponseChannel) throws RestServiceException {
    BlobProperties blobProperties = blobInfo.getBlobProperties();
    restResponseChannel.setHeader(RestUtils.Headers.BLOB_SIZE, blobProperties.getBlobSize());
    restResponseChannel.setHeader(RestUtils.Headers.ACCEPT_RANGES, RestUtils.BYTE_RANGE_UNITS);
    long contentLength = blobProperties.getBlobSize();
    if (options.getRange() != null) {
      Pair<String, Long> rangeAndLength =
          RestUtils.buildContentRangeAndLength(options.getRange(), contentLength, options.resolveRangeOnEmptyBlob());
      restResponseChannel.setHeader(RestUtils.Headers.CONTENT_RANGE, rangeAndLength.getFirst());
      contentLength = rangeAndLength.getSecond();
    }
    if (contentLength < frontendConfig.chunkedGetResponseThresholdInBytes) {
      restResponseChannel.setHeader(RestUtils.Headers.CONTENT_LENGTH, contentLength);
    }
    if (blobProperties.getContentType() != null) {
      restResponseChannel.setHeader(RestUtils.Headers.CONTENT_TYPE, blobProperties.getContentType());
      // Ensure browsers do not execute html with embedded exploits.
      if (blobProperties.getContentType().equals("text/html")) {
        restResponseChannel.setHeader("Content-Disposition", "attachment");
      }
    }
    if (blobProperties.getContentEncoding() != null) {
      restResponseChannel.setHeader(Headers.CONTENT_ENCODING, blobProperties.getContentEncoding());
    }
  }

  /**
   * Sets headers that provide directions to proxies and caches.
   * @param restRequest the {@link RestRequest} that was received.
   * @param restResponseChannel the channel that the response will be sent over
   * @throws RestServiceException if there is any problem setting the headers
   */
  private void setCacheHeaders(RestRequest restRequest, RestResponseChannel restResponseChannel)
      throws RestServiceException {
    Container container = RestUtils.getContainerFromArgs(restRequest.getArgs());
    if (container.isCacheable()) {
      long cacheTtl = container.getCacheTtlInSecond() != null ? container.getCacheTtlInSecond().longValue()
          : frontendConfig.cacheValiditySeconds;
      restResponseChannel.setHeader(RestUtils.Headers.EXPIRES,
          new Date(System.currentTimeMillis() + cacheTtl * Time.MsPerSec));
      restResponseChannel.setHeader(RestUtils.Headers.CACHE_CONTROL, "max-age=" + cacheTtl);
    } else {
      restResponseChannel.setHeader(RestUtils.Headers.EXPIRES, restResponseChannel.getHeader(RestUtils.Headers.DATE));
      restResponseChannel.setHeader(RestUtils.Headers.CACHE_CONTROL, "private, no-cache, no-store, proxy-revalidate");
      restResponseChannel.setHeader(RestUtils.Headers.PRAGMA, "no-cache");
    }
  }

  /**
   * Sets the blob properties in the headers of the response.
   * @param blobProperties the {@link BlobProperties} that need to be set in the headers.
   * @param restResponseChannel the {@link RestResponseChannel} that is used for sending the response.
   * @throws RestServiceException if there are any problems setting the header.
   */
  private void setBlobPropertiesHeaders(BlobProperties blobProperties, RestResponseChannel restResponseChannel)
      throws RestServiceException {
    restResponseChannel.setHeader(RestUtils.Headers.BLOB_SIZE, blobProperties.getBlobSize());
    restResponseChannel.setHeader(RestUtils.Headers.SERVICE_ID, blobProperties.getServiceId());
    restResponseChannel.setHeader(RestUtils.Headers.CREATION_TIME, new Date(blobProperties.getCreationTimeInMs()));
    restResponseChannel.setHeader(RestUtils.Headers.ENCRYPTED_IN_STORAGE, blobProperties.isEncrypted());
    if (blobProperties.getTimeToLiveInSeconds() != Utils.Infinite_Time) {
      restResponseChannel.setHeader(RestUtils.Headers.TTL, Long.toString(blobProperties.getTimeToLiveInSeconds()));
    }
    if (blobProperties.getContentType() != null) {
      restResponseChannel.setHeader(RestUtils.Headers.AMBRY_CONTENT_TYPE, blobProperties.getContentType());
    }
    if (blobProperties.getOwnerId() != null) {
      restResponseChannel.setHeader(RestUtils.Headers.OWNER_ID, blobProperties.getOwnerId());
    }
  }

  /**
   * Set the specific required headers for get blob info in the response.
   * @param blobProperties the {@link BlobProperties} that need to be set in the headers.
   * @param restResponseChannel the {@link RestResponseChannel} that is used for sending the response.
   */
  private void setBlobInfoHeaders(BlobProperties blobProperties, RestResponseChannel restResponseChannel) {
    if (blobProperties.getContentEncoding() != null) {
      restResponseChannel.setHeader(Headers.AMBRY_CONTENT_ENCODING, blobProperties.getContentEncoding());
    }
  }

  /**
   * Adds the account and container details to the response headers if the {@code restRequest} contains the target
   * account and container and they are not generic unknowns.
   * @param restRequest the {@link RestRequest} that contains the {@link Account} and {@link Container} details.
   * @param restResponseChannel the {@link RestResponseChannel} where headers need to be set.
   * @throws RestServiceException if headers cannot be set.
   */
  private void setAccountAndContainerHeaders(RestRequest restRequest, RestResponseChannel restResponseChannel)
      throws RestServiceException {
    Account account = RestUtils.getAccountFromArgs(restRequest.getArgs());
    Container container = RestUtils.getContainerFromArgs(restRequest.getArgs());
    if (account.getId() != Account.UNKNOWN_ACCOUNT_ID) {
      restResponseChannel.setHeader(RestUtils.Headers.TARGET_ACCOUNT_NAME, account.getName());
      restResponseChannel.setHeader(RestUtils.Headers.TARGET_CONTAINER_NAME, container.getName());
    }
    restResponseChannel.setHeader(RestUtils.Headers.PRIVATE, !container.isCacheable());
  }

  /**
   * Validate the secure path in the URI if required for specific {@link Container}.
   * @param restRequest the {@link RestRequest} that contains the {@link Account} and {@link Container} details.
   * @param prefixToCheck the prefix from URI which may contain secure path.
   * @param expectSecurePath the expected secure path specified in {@link com.github.ambry.config.FrontendConfig}.
   * @throws RestServiceException
   */
  private void validateSecurePathIfRequired(RestRequest restRequest, String prefixToCheck, String expectSecurePath)
      throws RestServiceException {
    Container targetContainer = getContainerFromArgs(restRequest.getArgs());
    if (targetContainer.isSecurePathRequired()) {
      String securePath = prefixToCheck.startsWith("/") ? prefixToCheck.substring(1) : prefixToCheck;
      if (!securePath.equals(expectSecurePath)) {
        frontendMetrics.securePathValidationFailedCount.inc();
        throw new RestServiceException("Secure path in restRequest doesn't match the expected one",
            RestServiceErrorCode.AccessDenied);
      }
    }
  }
}

redpajama_set_name: RedPajamaGithub


The most important step in the home buying process, if you aren't paying cash, is securing a loan. You'll need to shop for a lender, compare loan products and get that all-important loan preapproval letter.
Today we'll take a look at how to go about choosing a lender.
The advertised rates may not apply to the loan product you want.
The actual Annual Percentage Rate (APR) may be higher – a lot higher.
Bait & Switch is sadly still alive and well in the mortgage industry.
Jumping online or on the telephone to find lenders with the lowest rates, then, isn't a smart first move. Start with the mortgage department of whichever bank or credit handles your personal banking. Ask about the APR; this figure includes not only the annual percentage rate on the loan, but the points and fees as well.
Then, contact a mortgage broker for the same information and compare the two quotes.
Ask if the rates are the lowest for the day or for the week and if they are for fixed rate or adjustable rate loans.
If you'll be obtaining an adjustable rate mortgage, find out when the rates are expected to increase, how the payments will vary and whether or not you can look forward to a decreased payment if rates go down.
Ask the banker or broker to put the points into a dollar amount. This makes it easier to figure out just how much you'll be paying for the loan and to compare it to other loans.
If the fees are lumped together under one category ask that they be broken down so you can better compare them to other loans.
If you're going after a conventional loan, ask how much you'll be required to pay as a down payment and, if private mortgage insurance is required, how much the monthly premium will be.
The lender is required to supply you with a Loan Estimate form within three days of applying for a mortgage. This form itemizes the loan's terms and fees and, since all lenders use the same form, it is a handy way to compare loans between lenders.


text:
Blackmore Vale
Dorset pubs with beer gardens that offer beautiful views this summer
Stay a while and drink in the views at a few of our favourites
Tracey Ramsbottom
The Smugglers Inn (Image: Photo by Jim Champion)
Never miss Somerset's latest and breaking news again by signing up to our Daily Newsletter
It's fair to say Dorset has plenty of scenic pubs that offer stunning views of the county. You can enjoy a drink while looking over the Jurassic Coast or admire the green and beauty of Dorset's countryside while spending time with loved ones.
And with temperatures set to raise this weekend and beyond, why not push the boat out and try these pubs out? Blackmore Vale Magazine previously rounded up the best pubs which offer a good meal and beer while looking out over our wonderful countryside.
Here are the most scenic pubs in Dorset and the Blackmore Vale area.
The Mitre Inn
The Mitre Inn (Image: The Mitre Inn)
23 High Street, Shaftesbury, SP7 8JE
One of Shaftesbury's oldest pubs, the terraced garden with decking at the back of the building is the most popular spot during sunny weather as it gives spectacular views of the Blackmore Vale.
Open daily for lunch, dinner and afternoon tea.
The Fox & Hounds
The Green, East Knoyle, SP3 6BN
The 15th century thatched Fox and Hounds is surrounded by spectacular walking country and breathtaking views.
The Wiltshire village of East Knoyle was home to a branch of the Seymour family (as in Jane Seymour, Henry VIII's second wife); and also where Sir Christopher Wren was born - his father was the local vicar.
There is a stone alongside the main road which records that Wren was an "Architect, Mathematician and Patriot". There are exceptional views from the patio beer garden, the village green and Windmill Hill nearby across the Wiltshire and Dorset countryside.
Three Horseshoes Inn
View from The Three Horseshoes, Powerstock
Powerstock, DT6 3TF
The pub is in one of the most unspoilt areas of countryside Dorset has to offer, down winding lanes and hiding between rose-clad thatched cottages.
To the east stands Eggardon Hill and Powerstock Common with its ancient hill forts, forests and fallow deer.
The Spyglass Inn
Bowleaze Coveway, Weymouth, DT3 6PN
Popular family-friendly pub on the top of a hill with stunning views from the beer garden towards Portland in one direction and Poole in the other.
The Winyard's Gap Inn
The view at Winyard's Gap Inn (Image: Winyard's Gap Inn)
Chedington, Beaminster, DT8 3HY
On a hill next to what was once a busy highway and one of the main routes in and out of Dorset, with stunning countryside views that go on for miles.
The Anchor Inn
Seatown, Bridport, DT6 6JU
Gorgeous sea views from this pub, which sits right next to the beach. Voted the Best Tourism pub in the UK this year in the VisitEngland Awards, it's popular with walkers who head west towards Golden Cap (30-45 mins) with Charmouth (2-2.5 hrs) and Lyme Regis (3-3.5 hrs) beyond. Or head east to West Bay (1.5hrs) or Burton Bradstock (2.5 hrs) beyond.
Fossil hunters regularly scour the beach here and also head west along the beach towards Golden Cap. Turn south into Duck Street at the Church in Chideock and follow the signs to the sea, approx. three quarters of a mile.
Scott Arms
Kingston, Corfe Castle, BH20 5LH
The Scott Arms, Kingston (Image: N Chadwick)
The views from this pub are so stunning that a mounted telescope has become a permanent fixture in the beer garden.
The pub claims to have the best view over the majestic Purbeck countryside, taking in the stately Corfe Castle ruins and following the route of the steam railway right down to the Swanage beaches.
The building is covered by a dense Virginia Creeper for most of the year. Formal dining area, two roomy bars and during the summer, The Jerk Shak serves up fresh-cooked, barbecued Caribbean cuisine. Open every day for lunch and dinner, the seasonal menus make ample use of great local ingredients from Purbeck suppliers.
The Quay, Wareham, BH20 4LP
The Old Granary sits on the banks of the River Frome, overlooking the Purbeck Hills on the edge of Wareham. It was once a grain house, converted into a Grade II listed building in 1952 and was a tea rooms before being turned into a pub and restaurant.
There are spectacular panoramic views from the open roof terrace that offers al fresco dining.
Dorset's Area of Outstanding Natural Beauty among the UK's most visited
'Picturesque' beach named among the best beaches in Europe
The Pulpit Inn
Portland Bill, Portland, DT5 2JT
55 yards from the famous Portland Bill Lighthouse, enjoy the panoramic views of the English Channel.
The food menu is an eclectic mix of pub favourites, daily specials and of course fresh fish dishes which include the popular Portland Crab, caught directly off the bill and fresh daily. There is a bus service from Weymouth direct to Portland Bill during the tourist season.
Fox Inn
Ansty, Dorchester, DT2 7PN
Quiet rural location, with many country walks on the doorstep, Bulbarrow and the Dorset Gap nearby. The pub has guest rooms, which are popular with wildlife spotters from all over the UK.
Large outside patio area in the landscaped garden.
The Smugglers Inn
Osmington Mills, Weymouth, DT3 6HF
Overlooking the stunning vista of Osmington Bay, mere yards away from the seaOsmington Mills offers breathtaking views of the Isle of Portland.
Dating back to the 13th century, the Smuggler's Inn was the home of Emmanuel Charles, leader of the most notorious gang of smugglers in the area during the 18th and 19th centuries.
The White Post
The White Post at Rimpton, a pub which claims to straddle the Dorset-Somerset border (Image: Google Maps)
Rimpton, Dorset BA22 8AR
Straddling the Dorset-Somerset border, the restaurant has enormous windows overlooking fields that go on for miles, it's rather absorbing watching the farmers ploughing or harvesting.
The White Post is a Taste of the West Gold winner, is listed in the Michelin Guide and in the Top 50 Gastropubs in the UK (Estrella Damm Awards).
Square & Compass
Worth Matravers, Swanage BH19 3LF
Not many pubs run fossil and stonecarving fairs, or indeed have a fossil museum on site, but this remarkable pub in Worth Matravers does.
The tiny village with duckpond has one of the oldest churches in Dorset and in summer it's teeming with walkers going along the footpaths to the popular bathing ledges of Winspit.
An ancient track, The Priests Way, connects the village it to Swanage. Folk relaxing on the wall or grassy slope in front of the pub look out over the village and the coastal setting beyond.
Award winning beers and ciders including home pressed traditional cider made by the landlord. The only food served are home made pasties and pies.
Live music is also served up on a regular basis with bands and artists playing at the pub on evenings and Sunday afternoons all year.
The Bankes Arms
Bankes Arms, Manor Rd, Studland, BH19 3AU
With beautiful views of the sea and Isle of Wight and the building dating back to 1549, the Bankes Arms is situated in the heart of Purbeck and overlooks Studland beach.
The Bankes Arms Hotel
The Bankes Arms Hotel Corfe Castle (Image: Ian Rob)
23 East Street, Corfe Castle, BH20 5ED
A garden setting overlooking Corfe Castle and the steam trains, this 6th century Grade II listed Manor House has a bar and a restaurant. Free parking for customers next to Swanage Railway Station.
Got a story to share or an issue for us to investigate? Email us at news.dorsetlive@reachplc.com
More from Dorset Live:
Dorset's best secret beaches according to local photographers
The beautiful Dorset beach you can drive on with a lovely pub nearby
Blue Flag beaches in Dorset
Dorset has among the country's cleanest beaches perfect for a swim
Sea creatures you need to watch out for in Dorset while enjoying the beach

redpajama_set_name: RedPajamaCommonCrawl


text:
In bringing justice in the past, don't forget the victims of the present
The invasive nature of these court cases can stop young people from reporting horrific abuse, or providing evidence.
By javed Khan
(Photo By Photo: Getty)
It takes tremendous courage for vulnerable young people to disclose allegations of sexual abuse and even more courage to seek justice by reliving it in court.
Our expert workers see first-hand the impact it has, as they carefully guide young people through the justice system. We hope that every successful conviction gives others more confidence to come forward.
It would be a terribly backward step if the current Metropolitan Police historical abuse investigation deters young people from coming forward, for fear they will not be believed.
Victims must have great confidence in the justice system if perpetrators are to be brought to justice.
We believe in children and young people and will always be here to help support them through the darkest times. We are here for them whether or not they choose to go to court, whether their case is dropped due to lack of evidence, or whether the defendant is found not guilty.
All victims must be listened to, and then it is the responsibility of the police to carry out thorough investigations to check and test the necessary evidence needed to secure convictions. But our priority is and always will be for the welfare of the child. That's why Barnardo's continues to campaign to improve the court system for victims of sexual exploitation in order to increase conviction rates.
The invasive nature of these court cases can stop young people from reporting horrific abuse, or providing evidence. Until they are better supported through this daunting and potentially damaging process there will only be marginal increases in the number of prosecutions.
The needs of the children should be taken into account when considering what special measures are used. They should help decide whether they want to give evidence from behind a screen, or from remote locations via video-link, so they don't have to go into the court building. There is also a need for better access to registered intermediaries – communications specialists who support young people to give evidence. I know all of this does happen, but not consistently, so it's not good enough yet.
Barnardo's report of the Parliamentary inquiry into the effectiveness of legislation for tackling child sexual exploitation (CSE) and trafficking within the UK advised that specialist training be given to all judges and lawyers involved in CSE cases.
So far we have seen very good practice by some judges and barristers and things have improved, but it is hugely variable. Judicial management of cases is essential, in order to restrict length of questioning, complex questions and aggressive approaches by defence barristers. Again, it's better than it was, but there should be no exceptions.
Barnardo's has a handful of Independent Sexual Violence Advocates that support CSE victims through the court process, coping with the trial and knowing what to expect. We know this support is hugely valued by the young people they help, but we simply don't have the capacity to help all children who need it.
There's no doubt that high profile child sexual exploitation cases across the UK have raised people's awareness about sexual exploitation and what it is. More children are coming forward to report abuse, and many others are being supported when they are at risk of becoming victims. The Operation Brooke case in Bristol was a good example of where working together brought about convictions. Barnardo's made sure all agencies had a good knowledge of CSE and were able to identify victims and perpetrators.
Progress has been made but we must ensure that it continues. The somber fact is that everywhere we go we find more young people needing our CSE services. That's why we must do everything possible to encourage young people to feel that they will be listened to and believed when they get the courage to speak up. Let's not allow the latest headlines to move us back to the days when abused children didn't feel they would be heard.
Javed Khan is CEO of Barnardo's.
Northern Ireland is showing the UK Government up when it comes to Syrian refugees
The forgotten face of child sexual abuse: disabled - and male
Budget 2016: the chance for George Osborne to put David Cameron's words into action


text:
International student exchange gives the Asian street vendor shelter a design makeover
Xi Jinping's global cyber vision
Home / News & opinion / News / January / International student exchange gives the Asian street vendor shelter a design makeover
International exchange gives the Asian street vendor shelter a design makeover
Architecture students from Australia and Indonesia collaborate as part of a two-week exchange
The humble street vendor cart and shelter that lines the streets of many Asian cities and is a key driver of local economies will get a design makeover by Australian and Indonesian architecture students this month.
Architecture students from the University of Sydney and Bandung Institute of Technology finalise their design concept Bunga Bandung (translation: flower). Photo: Sarah Rhodes.
A group of students from the University of Sydney and Bandung Institute of Technology (Institut Teknologi Bandung - ITB) in Indonesia are taking part in a two-week international exchange to redesign the imposing structures that are widely found on the streets of Indonesia.
Indonesian native Dr Rizal Muslimin, one of the organisers of the exchange who lectures in architecture at the University of Sydney, said: "While street vendors provide goods and services to the local community, their temporary carts and shelters often become permanent fixtures that cause major congestion and cleanliness problems. Yet street vendors are a vibrant part of the local culture and an important driver of local business," said Dr Muslimin.
Eight architecture students from Indonesia are spending one week in Sydney working with six students from the University of Sydney's Faculty of Architecture, Design and Planning. The group are using the university's advanced digital fabrication labs to develop prototype designs for a deployable, lightweight shelter.
"Students are asked to come up with portable, low-cost structure that is quick and simple to erect and dismantle. They must also consider materials that are widely available in Indonesia, which they will use to build their structure," said Dr Muslimin.
After developing the designs in Sydney, the student group will return to Bandung in Indonesia to spend a week building their prototypes and test driving the new shelters on the streets of Indonesia.
"The students will be involved in seeing if their design holds up in the local environment and getting feedback from local vendors on whether it meets their needs.
It is a great opportunity for our architecture students to collaborate on a real-life problem with likeminded students from Australia's closest neighbour.
Dr Rizal Muslimin
"They will also gain a greater understanding of the informal street economy, which is the livelihood of many people in developing countries," he said.
Muslimin believes that the prototype shelters may also have the potential for use in local community markets in Australia. "The needs of stallholders in Australia's own community markets are not dissimilar to the Indonesians. They both need something that is easy to transport and set up and pull down in a short space of time," said Dr Muslimin.
The travelling studio is supported by the Commonwealth through the Australia-Indonesia Institute of the Department of Foreign Affairs and Trade, and the Consulate General of the Republic of Indonesia.
Chemical researchers develop "green" ammonia
Ammonia has sustained humanity since the early 20th century, but its production leaves a huge carbon footprint. Now researchers have found a way to make it 100 per cent renewable.
Migrant teachers offered path to Australian accreditation
Teachers with overseas qualifications and years of experience can now fast-track their accreditation into Australian schools with a bridging course developed by University of Sydney.
Do antidepressants help back pain and osteoarthritis?
Back pain and knee osteoarthritis affect millions of people globally and are leading causes of disability. When first-line pain medications such as paracetamol and ibuprofen fail to improve symptoms, many people are prescribed antidepressants for their pain.


text:
Low interest rate instant Personal Loan in Bharatpur, 15 January 2021 from state Bank of Travancore
Low interest rate instant Personal Loan in Bharatpur,15 January 2021 from state Bank of Travancore
Bharatpur is a city as well as a municipal corporation in the Braj region in the Indian state of Rajasthan. Bharatpur is located 180 kilometers away from Delhi and it is a part of the National Capital Region. The Bharatpur Municipal Corporation is divided into 50 wards for civic governance. Bharatpur also functions as the administrative headquarters of the Bharatpur District and the Bharatpur Division of Rajasthan. The city is also known as the "Eastern Gateway to Rajasthan" and also by the name of "Lohagarh" at times. It is famous for Keoladeo National Park which is UNESCOs World Heritage Site. The Lohagarh Fort in Bharatpur is a major spot of tourist attraction. Bharatpur attracts a large number of national as well as international tourists every year. The region hosts communities like the Jats, Ahirs, Yadavs, Brahmins, Rajputs, Vaishyas and Gujjars. The city is rich in its culture and heritage. It hosts several reputed educational institutions such as the Government Engineering College, Chandravati Group of Institutions, etc. The economy of Bharatpur is largely dependent upon agriculture and agricultural products. The main crops that are grown in Bharatpur are wheat, mustard, cotton, potatoes and red chilies. There are over 60 oil mills in the city mainly because of the mass production of mustard in the surrounding areas. Stone quarrying is also practiced in a few areas.
the State Bank of Travancore (SBT) was a premier Indian bank based in Thiruvananthapuram, Kerala. The SBT was a sister concern of the State Bank Group, but it also had private shareholders. SBT was the leading bank of Kerala. It had a network of 1,157 branches and 1,602 ATMs across India, as of 31 March 2015. The Union Cabinet approved the proposal of combining SBT and four other associate banks with SBI, on 15 February 2017. On 31 March 2017, It finally merged with its parent SBI bank. It was founded on 12 September 1945 as the Travancore Bank Ltd, an initiative by Travancore Diwan C. P. Ramaswami Iyer. Due to widespread resentment against his dictatorial rule, the bank never gave him the credit of his role. Instead, Sri Chithira Thirunal Balarama Varma, the Maharaja of Travancore was considered as the founder of the bank, though the king had little to do with the founding of the SBT bank. Although the contribution of the Travancore government was 25% only in the bank capital, apart from its general banking business, the bank undertook government treasury work and foreign exchange business. Its head office was located at Thiruvananthapuram. It became a subordinate of State Bank of India under the SBI Subsidiary Banks Act, 1959, in 1960, enacted by the Parliament of India, and thus achieved the name state Bank of Travancore.Ms. Arundhatti Bhattacharya is the ex-officio chairman, and Mr. CR Sasikumar is the managing director of the SBT.


text:
@org.osgi.annotation.versioning.ProviderType
@Export(attribute = {
	"fizz=buzz", "foobar:=fizzbuzz"
}, substitution = Substitution.NOIMPORT)
@Version("1.0.0")
package test.export.annotation.testNoimport;

import org.osgi.annotation.bundle.Export;
import org.osgi.annotation.bundle.Export.Substitution;
import org.osgi.annotation.versioning.Version;


This Bulletin discusses the growth and yield of chili pepper in four different kinds of greenhouse. One was a glasshouse, and three were plastic houses. Production of chili pepper in glasshouses was an effective way of increasing the yield per unit area and enhancing the quality. However, producing crops in a highly controlled environment needs a great deal of technical skill. If this is lacking, the productivity of a glasshouse may be lower than that of a simple polycarbonate or vinyl greenhouse.


A 1962 concert performance from Radio Italiana, now on CD, shows how delightful Wagner can sound without barking and slow wobbles.
Beethoven reportedly told Rossini to stick to writing comic operas. But new recordings of two of Rossini's major serious operas bring great pleasure to the listener—and let us hear some splendid young singers.
A list of the most memorable opera and vocal recital recordings of the year.
Classical CD Review: Best Opera Recording of the Year — Or is it Best Musical?
None of the opera recordings I have reviewed this past year beats this Cradle for dramatic vitality, musical imagination, and ongoing political relevance.
This recording challenges our settled sense of what art music, in conjunction with colorful spoken and sung verse, can accomplish.


text:
The Film Academy And Its Oscars Manage To Feed On Their Own Mistakes
'Nightmare Alley': Read The Screenplay For Guillermo Del Toro's Noir Cautionary Tale
By Scott Huver
Scott Huver
More Stories By Scott
'Eami' Creates Unique Entry Into Little-Known Indigenous Region By Blending Factual & Fictional Storytelling – Contenders Documentary
'The Corridors Of Power' Lets Audiences Ask Themselves How They Might Have Acted On Global Atrocities – Contenders Documentary
'Sr.' Director Chris Smith Found Himself Following Robert Downey Sr.'s Lead, For The Film And Beyond – Contenders Documentary
Story Arc
Bradley Cooper in "Nightmare Alley" Everett
Editors note: Deadline's Read the Screenplay series debuts and celebrates the scripts of films that will be factors in this year's movie awards race.
"I wanted to render a classic story in a very alive and contemporary way – I wanted people to feel they are watching a story pertinent to our world," says Nightmare Alley director and co-writer Guillermo del Toro, whose penchant for stylishly crafted horror stories took a turn for the decidedly noir with his latest film.
Del Toro and his writing partner Kim Morgan, an accomplished film journalist and essayist, turned to author William Lindsay Gresham's fatalistic 1946 novel – now widely regarded as a classic of the hard-boiled, doom-suffused noir genre and the basis for the equally admired 1947 film starring Tyrone Power. Gresham's tale follows the ascent of rough-hewn carnival roustabout Stanton Carlisle (Bradley Cooper) into a successful, polished café society mentalist, and his descent into downward spiral when he can't resist turning his audience's belief in his non-existent spiritual abilities into a high-stakes confidence game.
'Nightmare Alley' Review: Bradley Cooper And Cate Blanchett Are So Good Playing Bad In Guillermo Del Toro's Vivid Film Noir Remake
The opening backdrop of the postwar carnival and the infamous geek shows that served as the era's most illicit attraction – and which Gresham had diligently studied since childhood – provided a natural segue from del Toro's horror roots to a story concerned with all-too-human weaknesses, a cautionary fable with an inevitable conclusion.
"The carnival is an incredibly close-knit, hermetic society," he says. "It's a place where people keep their secrets, and many are escaping a life of crime or a past they had to leave behind. And yet, they form a strong society. It's almost like a microcosm of the world. Everybody's there to swindle everybody. But at the same time, they know they need each other, and they protect one another."
In broadening the story and characters, del Toro was intrigued by flipping the traditional noir trope of the femme fatale and instead centered on a man who threatens to bring all of the women around him to dark ends. "Thematically, I'm very interested in exploring the genre from a different point of view, he says. "Instead of a femme fatale, I have three very strong female figures and an homme fatale."
"Stanton is a broken man who has learned to lie to get the reactions he wants from people," says Del Toro. "He is always trying not to show his real self. He is a mercurial character, who transforms according to circumstances." As he shifts guises to serve his increasingly outsized ambitions, Stanton poses different destructive challenges for Zeena (Toni Collette), the adulterous carnival fortune teller whose borrowed tricks fuel his rise; Lilith (Cate Blanchett), the high society psychoanalyst he contends with – and eventually colludes with – while duping wealthy marks; and Molly (Rooney Mara), his carny sweetheart and assistant who sense the impending sense of doom that surrounds them both.
"We went after every detail – I wanted Molly to be symbolized by a deer, so she wears a little deer pendant throughout," says del Toro. "We then have a deer in the room of the hotel, on the headboard of the bed. We referenced everything back to her."
"We were interested in highlighting this idea that people – then and now – have used spirituality to prey on innocent people," says del Toro. "When an audience is invested in the story of a person's rise, their greatest fear is the fall and that fall can be very emotionally strong."
Click below to read the script for the film from Searchlight Pictures, which released it in theaters December 17.
More from this Story Arc
Read The Screenplay Series
'A Man Called Otto': Read The Screenplay For Tom Hanks-Starring Remake Of A Swedish Hit
'Aftersun': Read The Screenplay For Charlotte Wells' Breakout Feature Film Debut
'Living': Read The Screenplay For The Bill Nighy-Led Drama Adapting A Kurosawa Classic
View All Story Arc
Exclusive Scripts
Kim Morgan
Searchlight Pictures
Latest Awardsline News
Academy "Conducting Review Of Campaign Procedures" Days After Oscar Noms Revealed
Sundance Awards: 'The Persian Version', 'Kokomo City' Among Repeat Winners As 'A Thousand And One', 'Going To Mars' Claim U.S. Grand Jury Prizes
Angela Bassett Set For Costume Designers Guild's Spotlight Award


Kaffe Fassett, perhaps the most celebrated textile artist in theworld today, is known above all for his mastery of color. In hisfirst book collaboration with Brandon Mably, his studio designmanager, Kaffe finds exciting inspiration in the textures, shapes,and patterns all around us--in nature and in everyday life--tocreate more than 35 vibrant, gorgeous knitting projects: scarves,sweaters, vests, pillows, afghans, all with the signature colorflair that is the Kaffe Fassett trademark.
If you require further information about"Knitting With The Color Guys - Inspiration, Ideas, And Projects From The Kaffe Fassett Studio" please contact us.


Front-End Design Changes generally focus on making the website more user friendly and interactive. So the addition of the Social Share buttons to the site, the new Checkout are all front-end design changes.
Back-End Administrative changes help us work more efficiently. Example would be integrations with Canada Post, a stock updater and edits to our PDF invoices.
Bug Fixes are more complex. When we can, especially if it's a bad bug; we fix the problem as quickly as possible. However, to fix a bug we need to replicate it. Unfortunately, with some of our more persistent bugs in the system; they are extremely difficult to replicate. Without going through a tens-of-thousand dollar bug-hunt; they're just not feasible.
What to Fix & When?
The obvious constraint is funds. All these changes require funds – whether its purchasing pre-made modules that should work out-of-the-box or having our developers write the code for us specifically.
The Benefit of the change is another major factor – if it's fixing a major bug or adding a new, must-have feature to the site; we'll attempt to get on it immediately. However, some projects are multi-week projects and those then require both the funds and the free time to complete.
Lastly, there's the Complexity of the project. It's why you see a lot of small, simple projects done before the major changes. Since I can hack my way around basic code; I tackle all the small projects when I have time; leaving the complex code problems to the real developers.


Don't settle for less. Master Clean's trained professionals provide carpet, tile and upholstery cleaning in Phillips, WI and will get your carpet, tile and upholstery looking like new again.
For carpet, tile and upholstery cleaning in Phillips, WI, call 715-257-4839.


text:
Eurostopodus mystacalis е вид птица от семейство Caprimulgidae.

Разпространение
Видът е разпространен в Австралия и Папуа Нова Гвинея.

Източници

Ушати козодои
Фауна на Австралазия

redpajama_set_name: RedPajamaWikipedia


text:
using System;
using System.Collections.Generic;
using System.Text;

namespace Amazon.Auth.AccessControlPolicy.ActionIdentifiers
{
    /// <summary>
    /// The available AWS access control policy actions for Amazon Cognito Sync.
    /// </summary>
    /// <see cref="Amazon.Auth.AccessControlPolicy.Statement.Actions"/>
    public static class CognitoSyncActionIdentifiers
    {
        public static readonly ActionIdentifier AllCognitoSyncActions = new ActionIdentifier("cognito-sync:*");

        public static readonly ActionIdentifier DeleteDataset = new ActionIdentifier("cognito-sync:DeleteDataset");
        public static readonly ActionIdentifier DescribeDataset = new ActionIdentifier("cognito-sync:DescribeDataset");
        public static readonly ActionIdentifier DescribeIdentityUsage = new ActionIdentifier("cognito-sync:DescribeIdentityUsage");
        public static readonly ActionIdentifier DescribeIdentityPoolUsage = new ActionIdentifier("cognito-sync:DescribeIdentityPoolUsage");
        public static readonly ActionIdentifier ListDatasets = new ActionIdentifier("cognito-sync:ListDatasets");
        public static readonly ActionIdentifier ListIdentityPoolUsage = new ActionIdentifier("cognito-sync:ListIdentityPoolUsage");
        public static readonly ActionIdentifier ListRecords = new ActionIdentifier("cognito-sync:ListRecords");
        public static readonly ActionIdentifier UpdateRecords = new ActionIdentifier("cognito-sync:UpdateRecords");
    }
}


text:
14.05.2021 Leo Catana
George Grote (1794–1871) published the History of Greece between 1846 and 1856, thereby providing the first positive evaluation of democratic Athens in the early modern period and a novel interpretation of the roles of the sophists and of Socrates, premised on his understanding of democratic Athens. Grote's account offered a sociological explanation of the moral psychology cultivated by the constitution of the Athenian polis through the citizens' active political participation.
This participation cultivated civic virtues, emotional and ethical attachment to the polis, and a sense of obligation towards the polis, even at the expense of self-interest. John Stuart Mill (1806–1873) was familiar with Grote's historical works and emphasized the parallels between the ancient direct democracy and the modern, representative democracy, which he himself promoted in his Considerations on Representative Government (1861). In this article it is argued that J. S. Mill's concept of the 'active character' of the citizen in a modern representative democracy was inspired by Grote's understanding and positive evaluation of ancient democratic Athens and its moral psychology. This is one example of the phenomenon mentioned in the editorial to this special issue, namely that accounts of past philosophy may influence philosophy proper.
Scaliger and the Science of Chronology
Herodotus and the Invention of History
The Search for Cleopatra
The Reception of Josephus in the Early Modern Period
Thucydides on the Plague of Athens: Text & Commentary
The Historian's Silences: What Livy Did Not Know—Or Chose Not to Tell
Oswald Spengler and the Theory of Historical Cycles
What Thucydides Knew About the US Today
Did Francis Drake Really Land in California?
HENRY ADAMS AND THE AGE OF GRANT
Stephen Jay Gould on Marx, Kuhn and Punk Meek
Thomas Babington Macaulay: Extraordinary Eloquence for Liberty
The anatomist Andreas Vesalius at 500 years old
The career rise and fabulous life of Google cofounder Larry Page, who just stepped down CEO of Alphabet
Dante and The Divine Comedy: He took us on a tour of Hell
Stats pioneer Bill James: Don't blame us for boring baseball
Pierre Gassendi's Philosophy and Science: Atomism for Empiricists
Imhotep: A Sage between Fiction and Reality
Daniel O'Connell, the greatest of all politicians
How Was Avogadro's Number Determined?
Sofia Kovalevskaya: the Woman who Covered the Walls of her Room in Theorems
Learning from Bertrand Russell in today's tumultuous world
This 19-Year-Old College Student Built an Artificial Brain That Detects Breast Cancer
Sofya Kovalevskaya – a woman pioneer


Kara Gates is a designer, artist and musician, currently working on Fuchsia at Google. Kara's mission is to be a positive force in the world by empowering individuals and communities to live more meaningful lives. Social impact, environmental justice, and inclusivity are at the heart of her design craft. Before Google, Kara led app strategy at Nest, led and designed the rebrand of Amazon Music, and worked on Intel Media's streaming TV platform. Her work has won Communication Arts, Red Dot, and iF Design awards.


When it is the perfect time to seek out expert services for Blacksmith in Illinois, Blacksmith Local Experts is here to help. You will find an exceptionally qualified team of workers who offer Blacksmith in Illinois at an affordable cost. We fully understand all your wishes and concerns, and we'll be here to deliver the best and least expensive products and services in the market. Call 888-738-7940 when you're ready to get started organizing your project.
Blacksmith Local Experts can help you by providing professional suggestions and higher quality resources at a price that won't hurt your wallet. You'll communicate with our industry professionals via 888-738-7940 to get an estimate of the expense and timeframe of the project, plus knowledgeable advice. We are going to do our best to carry out each process at an easily affordable price with professionalism and speed. We consistently work to exceed the competitors. We pride ourselves in being your first choice resource of Blacksmith in Illinois, and we carry out your job the right way at the first try. You want a service which helps you to save money when offering impressive Blacksmith service. Blacksmith Local Experts is going to be that provider.
We understand ways to save some costs on Blacksmith by simply completing the undertaking promptly with a workforce of professional and proficient professionals who know what they are doing. We realize that wasting hours and materials costs money, so we steer clear of usual mistakes and finish the job with professionalism and efficiency. Our prompt effort won't translate to lowered quality, since we work with organized, properly structured methods which are certain to save you time and resources while still constructing a professional quality final product. The cost savings go on even once we accomplish the job since our top of the line results and supplies will not call for maintenance and replacing for years. The products we work with are made to endure, and we can explain how far they can stand up to time when you call us by dialing 888-738-7940 right now.
Blacksmith are available in Illinois.
We'd like you to get the very best Blacksmith in Illinois. All our client care staff are properly trained to provide you with friendly and professional help and advice and services. We'll answer your questions and concerns. All of our Blacksmith professionals are experienced and dedicated to assuring your ultimate approval. We can show up at the scheduled time, not tardy, and complete the task to your exact specs within the period of time we quote from the outset. Prior to getting started off, our company offers a precise estimate so you aren't surprised by unforeseen expenses. You save funds by believing in us to finish any project correctly to start with. Get a complimentary quote by simply contacting our team right now, and we're going to respond to your concerns.


The work Will you fill my bucket? : daily acts of love around the world represents a distinct intellectual or artistic creation found in Wake County Public Libraries. This resource is a combination of several types including: Work, Language Material, Books.


text:
Call for more health provision in Rainham
With the ongoing cuts to our National Health Service, it is more important now than ever before, to fight for more investment locally. Our services have been cut back to the bare minimum and standards have slipped. This is just unacceptable.For the last four years Jon Cruddas has been pushing for more health provision in Rainham, to meet the needs of local people. Jon Cruddas MP and the Dagenham and Rainham Labour Party have launched a new campaign, fighting for more investment in our local health service. Having already met with senior consultants to discuss the options it is now time to get local people involved. Services such as Queen's Hospital are coming under more and more strain due to cuts and closures across the area, people are not receiving the level of care or quality of service that they need. It's time to fight back and secure investment.Jon has staarted a petition calling on the government and Havering Council to recognise the need for more health provision in the Rainham area.If you are a Rainham resident and would like to collect a petition down your street, please contact Jon's office sending your full name, address and contact number to andrew.achilleos@parliament.uk an information pack and petition will then be sent out for you to fill in and return.You can also add your name to our online petition below.
Would you like Jon to send a campaign pack for you to collect signatures down your street?
Petition to condemn government plans to close tube ticket offices
Secret plans recently leaked to the press have revealed that London Mayor, Boris Johnson intends to close all of the 268 underground and overground ticket offices in London over the next two years. This is bad news for Londoners but could also have a detrimental effect on local commuters.The closures will affect three stations across the area seeing local job losses at Dagenham Heathway, Dagenham East and Elm Park in the Havering side of the constituency. As well as job losses, closures could be detrimental to public safety by putting late night commuters at a higher risk of crime and increased feelings of vulnerability.Jon said: "These proposed closures will seriously impede local commuters, making their journeys more difficult and less safe. Reports suggest that it is not only ticket office staff, but station guards and managers that will lose their jobs as well. "Over the past few years the security has improved and anti-social behaviour has dropped significantly at all of our local stations – however these cuts are set to change that. Older commuters and children will feel vulnerable late at night and there are real concerns about having insufficient staff at the station to deal with emergencies."The Tory-led coalition government are putting public safety at risk in order to save money which is totally unacceptable. I will be doing everything I can, by raising a petition and writing to Boris Johnson and the TFL to condemn these deplorable and economically damaging cuts." Fill out the petition form below to join the fight and make your voice heard!
First line of address *
Do you regularly use the local tube stations? *
Do you support Jon's campaign to stop these plans in their tracks? *
Would you like to join Jon's volunteer network? *
How would you rate Jon's work in the constituency? [1-not very good 5-excellent] *
Elm Park
Joint CCG's Consultation Launches Across Boroughs
A consultation has launched asking residents for their views on proposed changes to community urgent care services.
A 12-week consultation was launched by Redbridge, Barking and Dagenham and Havering's Clinical Commissioning groups which asks questions on the way services are accessed in all three boroughs. The CCG's are asking for opinions to change and improve local community urgent care services.
The consultation includes proposals for changes to local GP hubs, walk-in services, and GP Out of Hours services.
Dementia Action Week 2018
This week is Dementia Action Week 2018 (21st-27th of May). There are currently 850,000 people living with dementia in the UK. Approximately 1 in 14 people over the age of 65 are living with dementia and approximately 40,000 are living with young-onset dementia (onset before the age of 65).
Janis Cottee a star volunteer of Jon Cruddas MP and committed dementia campaigner, recently attended an All-Party Parliamentary Group on Dementia meeting. Attending as a carer, Janis participated in conversations around dementia and disability.
Resident parking issue in Whalebone Ward
Jon Cruddas Member of Parliament for Dagenham and Rainham has been contacted by a number of residents in Whalebone Ward regarding the ongoing parking problems there. Over 150 local residents have presented Jon with a petition highlighting that commuters using Chadwell Heath Station use much of the nearby space to park their cars up before heading to work, and leave them there till late in the evening resulting in residents not be able to park in their own road.
Melville & Cowper Road Parking Update
Jon Cruddas MP recently undertook a survey in Melville Road and Cowper Road in Rainham regarding the problems residents were facing trying to park in their own road. Many residents complained to Jon that commuters using Rainham Rail Station use Melville and Cowper Road to park their cars up before heading to work and leave them there till late in the evening resulting in residents not be able to park in their own road.
Petition against cutting the Fire Rescue Unit at Hornchurch Fire Station
Jon Cruddas MP is fighting cuts to the emergency services in Havering. New plans propose that Hornchurch Fire Station should lose its Fire Rescue Unit (FRU). The Fire Rescue Unit is specialist equipment that deals primarily with road crashes but are instrumental in responding to any terrorist attack within London. The proposals will mean that the London Borough of Havering will be left with no Fire Rescue Units which will leave the whole of East London under-protected. Proposals from the Revised Fifth London Safety Plan (LSP5) will mean FRU's will be reduced across London and crewing levels will be cut from 5 to 4. These plans will see a total of 588 fire fighters lose their jobs and the public will be left at risk from a service they fund. If these plans go ahead it will mean that in times of emergency the Fire Rescue Unit s will have to come from across London with the closest being East Ham. Jon said: The Fire Rescue Unit being cut from Hornchurch Fire Station is a real worry and has consequences across the whole area. I will be fighting these cutbacks every step of the way. I have launched a petition to show the broad public support for keeping the FRU via my website. I have written to the Mayor of London asking to halt this cut. I would appreciate as much support from the public as possible by signing the petition.
Do you back my campaign to fight against the cutting of the Fire Rescue Unit at Hornchurch Police Station? *
How would you rate the work of Jon Cruddas on a scale of 1 to 5 (1 not very good, 5 excellent)
Ask for a campaign pack to help oppose the Beam Park prison proposal
We are pleased to announce that 'Campaign packs' are now available to local residents wishing to do some canvassing and petition collecting down their street. The packs also include window posters and information sheets on the possible disadvantages of having a large scale prison facility in the local area. Please fill in the form below to request one.
First line address *
Please send me a campaign pack
The 'bedroom tax' - have your say!
Jon Cruddas MP: "The changes to the welfare and council tax benefts that were intorduced this month are hitting the local community hard. Many constituents have already raised their concerns through my office. I would be much obliged if you would take a few moments to fill in the survey below. Your views and opinions surrounding the 'bedroom tax' will be invaluable in the coming months when we look at the national impact."National Housing Federation statistics reveal that 1,216 households will be hit by the government's 'Bedroom Tax' locally in Dagenham, Rainham, South Hornchurch and Elm Park. It is predicted that these households will lose an average of £728 a year. The report is broken down by constituency and highlights that the Bedroom Tax will hit 660,000 households nationwide, two thirds of them home to someone with a disability.
1. First name *
2. Surname *
4. Have you received enough information regarding housing and council tax benefit changes? *
5. How concerned are you regarding the changes on a scale of 1-5? [1-Not concerned 5-Very concerned] *
6. Will the canges impact on you or anyone you know in the local area? *
7. Do you have anything you would like to add regarding the introduction of the 'bedroom tax'?


text:
Countries around the world ramp up measures to stop coronavirus spread
Sunday 1 March 2020, 10:31pm
As countries around the world try and contain the outbreak of coronavirus, measures have ranged from the closure of the world's largest art museum to the threat of legal prosecution against travelers from certain countries.
The number of people sickened by the virus has climbed to more than 86,000 globally and there have been more than 2,900 deaths, most of them in China - the epicentre of the virus.
The country has seen the largest outbreak of the Covid-19 virus in Europe.
On Sunday the total number of people infected in Italy had risen to 1,694 - a 50 per cent rise from just 24 hours earlier.
Giovanni Rezza from Italy's National Health Institute said it would be another week or 10 days until the spread of the virus slowed down in the country.
Italy Six Nations rugby game postponed as coronavirus panic spreads across Europe
A paramedic walks out of a tent that was set up in front of the emergency ward of the Cremona hospital, northern Italy. Credit: AP
Many countries have issued travel warnings for the 11 Italian towns that have been on lockdown since the virus broke out there on February 21.
While the US government issued the strongest warning, raising the level of warning for the Lombard and Veneto regions to the highest level.
On Sunday St. Louis of the French became the first church in Rome to close its doors to the public in a bid to stop the spread of the virus.
The UK confirmed 13 more coronavirus cases on Sunday - with the first confirmed case in Scotland - bringing the total number to 36.
Meanwhile the Czech Republic announced its first three infections - all had travel ties to northern Italy.
Elsewhere in Europe, France raised its number of reported cases to 130 on Sunday, including one in the French Caribbean island of Guadeloupe.
Fears of an outbreak shut down France's Louvre Museum over concerns the attraction's flow of tourists from around the world could spread the virus further.
Almost three-quarters of the Louvre's 9.6 million visitors last year came from abroad.
What is the strain of coronavirus known as Covid-19 and what are the symptoms?
Louvre workers who guard its trove of artworks fearful of being contaminated by the museum's flow of visitors from around the world. Credit: AP
The number of confirmed cases in Spain rose to 71 on Sunday, while the Dutch health minister announced three new cases bringing the country's total to 10.
New cases elsewhere brought national totals to Norway 19, Sweden 14 and Finland six.
Iran's health ministry raised the nationwide death toll in the country to at least 54 on Sunday.
The number of confirmed infected cases jumped overnight by more than half to 978 people according to official sources.
On Sunday the British Foreign Office confirmed that non-essential staff, as well as dependants, are to be pulled out of the British Embassy in Tehran.
The husband of a British-Iranian woman jailed in Iran believes his wife has contracted the virus as he expressed concern at the prison's "refusal to test her".
A police vehicle disinfects streets against coronavirus in Tehran, Iran. Credit: AP
The outbreak in Iran has prompted its neighbours to seal their borders to Iranians - while Bahrain threatened legal prosecution against travellers who came from Iran and hadn't been tested for the virus.
South Korea, the second hardest hit country in the world, reported 813 new cases on Saturday - raising its total to 3,150.
On Saturday its daily increase surpassed that of China for the first time.
Much of the public health response in South Korea has focused on a branch of the Shincheonji Church of Jesus in the city of Daegu.
The mayor of the city has now announced they will file a complaint against Shincheonji's Daegu church for supposedly slowing quarantine efforts - officials claim the church initially providing an incomplete list of its members.
Some churches in the country are replacing Sunday services with online ones instead to help prevent the spread of Covid-19.
People wearing face masks attend Mass at the Yoido Full Gospel Church in Seoul. Credit: AP
Washington state declared a state of emergency on Saturday following the death of a middle-aged man who had contracted the virus - it was the first coronavirus-related death in the US.
President Donald Trump said there was "no reason to panic" while Vice President Mike Pence tried to reassure Americans that the government is prepared to handle the outbreak.
It comes after the Trump administration faced criticism over its response.
The US president also urged Americans not to travel to areas in South Korea which have been infected as well as strengthening the warning level for travel to Italy.
In Japan the last group of about 130 crew members left the stranded cruise ship the Diamond Princess.
The country has faced criticised for quarantining the vessel off the coast of Yokohama after more than one fifth of the ship's original population were infected with coronavirus.
Japanese Health Minister Katsunobu Kato said the ship is now empty and ready for sterilisation.
Son of Briton on Diamond Princess says his dad is 'giving up hope'
Passengers are transported off the Diamond Princess cruise ship. Credit: AP
Hundreds of foreign passengers on board were evacuated by their governments and returned home on chartered flights before completing a 14-day quarantine or virus tests.
Elsewhere Japanese sporting events were held at empty stadiums in a move aimed at halting the spread of the virus.
The epicentre of the virus, China has seen the highest number of coronavirus cases and deaths.
Chinese authorities have enforced an unprecedented lockdown of 60 million people in the hardest-hit province of Hubei.
The missing number behind China's coronavirus crisis
Manufacturing fell in China in February by a margin wider than expected after the Covid-19's outbreak shut down more of the world's second largest economy, an official survey showed on Saturday.
More than £200 billion was wiped off the value of shares on the London FTSE 100 since the start of the week, amid fears of a global outbreak of coronavirus.


text:
Unum Group Announces Quarterly Dividend of $0.30 (NYSE:UNM)
Unum Group (NYSE:UNM) declared a quarterly dividend on Friday, January 14th, RTT News reports. Investors of record on Friday, January 28th will be given a dividend of 0.30 per share by the financial services provider on Friday, February 18th. This represents a $1.20 dividend on an annualized basis and a yield of 4.27%.
Unum Group has raised its dividend by 19.4% over the last three years and has raised its dividend annually for the last 13 consecutive years. Unum Group has a dividend payout ratio of 20.7% indicating that its dividend is sufficiently covered by earnings. Equities analysts expect Unum Group to earn $4.93 per share next year, which means the company should continue to be able to cover its $1.20 annual dividend with an expected future payout ratio of 24.3%.
Get Unum Group alerts:
NYSE:UNM traded up $0.35 during mid-day trading on Friday, reaching $28.10. The stock had a trading volume of 1,873,204 shares, compared to its average volume of 2,151,296. The company has a market capitalization of $5.75 billion, a price-to-earnings ratio of 7.11, a price-to-earnings-growth ratio of 0.68 and a beta of 1.67. Unum Group has a 1-year low of $22.25 and a 1-year high of $31.98. The stock's 50 day simple moving average is $25.07 and its two-hundred day simple moving average is $26.14. The company has a debt-to-equity ratio of 0.31, a current ratio of 0.28 and a quick ratio of 0.28.
Unum Group (NYSE:UNM) last posted its quarterly earnings results on Tuesday, November 2nd. The financial services provider reported $1.03 EPS for the quarter, missing the Zacks' consensus estimate of $1.16 by ($0.13). The firm had revenue of $2.97 billion during the quarter, compared to analyst estimates of $2.96 billion. Unum Group had a return on equity of 8.68% and a net margin of 6.01%. During the same quarter last year, the business posted $1.21 earnings per share. Sell-side analysts anticipate that Unum Group will post 4.3 EPS for the current fiscal year.
A number of research firms recently commented on UNM. Barclays decreased their price target on Unum Group from $28.00 to $25.00 and set an "underweight" rating for the company in a research note on Tuesday. The Goldman Sachs Group initiated coverage on shares of Unum Group in a report on Thursday, December 2nd. They issued a "buy" rating and a $32.00 target price on the stock. One research analyst has rated the stock with a sell rating, four have issued a hold rating and one has given a buy rating to the company's stock. According to data from MarketBeat, the company presently has an average rating of "Hold" and an average price target of $29.00.
Unum Group declared that its board has approved a share buyback program on Monday, October 25th that permits the company to repurchase $250.00 million in shares. This repurchase authorization permits the financial services provider to repurchase up to 4.4% of its stock through open market purchases. Stock repurchase programs are typically a sign that the company's board believes its shares are undervalued.
About Unum Group
Unum Group is engaged in providing financial protection benefits. It operates through the following segments: Unum US, Unum International, Colonial Life, Closed Block and Corporate. The Unum US segment comprises of group long-term and short-term disability insurance, group life and accidental death and dismemberment products, and supplemental and voluntary lines of business.
See Also: Beta
Receive News & Ratings for Unum Group Daily - Enter your email address below to receive a concise daily summary of the latest news and analysts' ratings for Unum Group and related companies with MarketBeat.com's FREE daily email newsletter.
Dominion Energy Inc (NYSE:DCUE) Declares $1.81 Quarterly Dividend
Gladstone Investment Co. (NASDAQ:GAIN) Declares $0.08 Monthly Dividend
Kingdom Game 4.0 Price Reaches $0.0083 on Major Exchanges
Counterparty Trading 20.2% Higher Over Last 7 Days
xEURO Hits Market Capitalization of $22,552.30
MAP Protocol Trading 2.7% Higher Over Last 7 Days
Stream Protocol Reaches Market Capitalization of $3.94 Million
Velas 24 Hour Trading Volume Reaches $11.50 Million
Daily Ratings & News for Unum Group
Complete the form below to receive the latest headlines and analysts' recommendations for Unum Group with our free daily email newsletter:
Stream Protocol Reaches Market Capitalization of $3.94 Million (STPL)
Velas (VLX) 24 Hour Trading Volume Reaches $11.50 Million
ICE ROCK MINING (ROCK2) Market Cap Tops $128,339.71
CUTcoin (CUT) Trading Down 8.2% This Week
Waves Enterprise Tops 24-Hour Trading Volume of $346,358.00 (WEST)
NOIA Network Price Hits $0.28 (NOIA)
Lith Token (LITH) Price Down 12.6% Over Last 7 Days
FansTime (FTI) 24 Hour Volume Tops $52,860.00
HaloDAO (RNBW) Trading Down 26.2% This Week
Prometeus Tops 1-Day Volume of $13.66 Million (PROM)
Decentraland Price Down 8.2% Over Last Week (MANA)
Goldcoin Price Reaches $0.33 on Exchanges (GLC)
BSCPAD Price Down 9.6% This Week (BSCPAD)
Kwikswap Protocol Price Down 8.9% Over Last Week (KWIK)
Chainswap (ASAP) Market Cap Hits $1.80 Million
SnowGem (XSG) Price Tops $0.0441


TEKPROS is IT Security Solutions and Services Provider that is specialized in licensing and implementing solutions to a broad range of clients and Fortune 1000 Companies. We are authorized as a Solutions Provider and Implementation Partner for various security vendors.
TEKPROS has a comprehensive, state of art Endpoint Security Lab that offers clients Proof of Concept, custom development and testing. Our Endpoint Security team is staffed by CISSP certified professionals who specialize in all elements of successful endpoint solutions and deployments. Our team has over 15 years of experience and has successfully deployed over 1M endpoints. The technical experts at TEKPROS help with everything from installing and configuring the infrastructure, to helping the client choose and deploy the modules that will make their environment secure, flexible and scalable. TEKPROS can work with various security vendors and the client in every step of the way to ensure that customers can take full advantage of all the potential that Endpoint Security delivers.
We deliver implementation projects on a complete ownership and end-to-end basis starting with assessment through deployment and knowledge transfer, or only phases of projects as needed.


text:
Vera will return for another series - filming due to start on new episodes of North East detective drama
The beloved DCI Vera Stanhope is to return for a 10th series.
By Ross Robertson
Monday, 04 March, 2019, 10:46
Four feature-length episodes of the popular ITV drama will start production in April and will air next year, the broadcaster has confirmed.
Each episode will be self-contained and inspired by the novels and characters created by crime writer Ann Cleeves.
The ninth series of the crime programme, set against the backdrop of the North East, aired from January to February and averaged around eight million viewers per episode.
Some of our best-known and popular spots have featured on the show in previous series.
Brena Blethyn, who has played the title role since 2011, said: "Along with the rest of the cast of Vera, I'm delighted to be embarking on series 10.
"The enthusiasm and warmth shown to Vera has been overwhelming and we can't wait to get started. Newcastle here we come!"
Blethyn will be joined by returning cast members Kenny Doughty as DS Aiden Healy, Jon Morrison as DC Kenny Lockhart, Riley Jones as DC Mark Edwards, Ibinabo Jack as DC Jacqueline Williams and Paul Kaye as pathologist Dr Malcolm Donahue.
Executive producer Phil Hunter said he is "thrilled" the programme is returning.
He added: "Making this show is such a joy and it's clear that Team Vera love it as much as the viewing fans love watching. I'm continually overwhelmed by the enthusiasm and commitment the brilliant cast and crew bring to the show."


Johnny's Fine Foods / Updates / Updates / Calling all Concentrates!
Here you'll learn what tasty flavors to expect when cooking with our concentrates, as well as a dish idea for each concentrate you might not expect!
Au Jus: Bold and beefy. We combine red wine vinegar, tomato paste, onions, roasted garlic and Worcestershire sauce to tenderize and marinate your meat, bringing out it's full beef flavor in every bite.
Holiday Hash: Leftover holiday roast, cooked veggies, chopped spinach, poached egg and Johnny's French Dip Au Jus.
Beef Gravy: Onions, mushrooms, and and delicious beef broth. You'll be asking for some mashed potatoes to go with your gravy, instead of the other way around.
Poutine : French fries, Johnny's Beef Gravy, cheddar cheese curds and bacon bits (optional)!
Sloppy Johnny: Red & green bell peppers, ripe tomatoes, soy sauce, roasted garlic, pineapple juice, chipotle pepper, and a smokey flavor–it can't be topped.
Sloppy Joe Mashed Potato Cups: Mashed potatoes in muffin tin, Sloppy Johnny's leftover meat, topped with cheddar cheese and sour cream.
Skillet Taco: Tomatoes, roasted garlic, onions and bell peppers, with a punch of paprika and chili pepper. It's taco time!
Taco Omelette: Johnny's Skillet Taco meat folded into seasoned egg omelette, topped with sour cream, green onions and tomatoes.


Join your DySPAN colleagues for a reception and a banquet at the conference hotel overlooking Charm City's Inner Harbor and the downtown skyline.
Dr. Stefanie Tompkins is the acting deputy director of the Defense Advanced Research Projects Agency (DARPA). She has previously served in several DARPA roles, including, most recently, as director of the Defense Sciences Office, where she led DARPA's most exploratory office in identifying and accelerating breakthrough technologies for national security.


text:
Like Connections page on Facebook
Find connections on Istagram
Subscribe to Connections RSS
Athena Award
Climate Change and Security
Jürgen Scheffran
Bulletin of the Atomic Scientists, Volume 64, Issue 2, p.19–25, 55–60 (2008)
No files have yet been downloaded.
Nair, Samiksha. "U.S. Climate Change Policy: A New Chance for Leadership." Connections: The Quarterly Journal 8, no. 4 (2009): 11-38.
Causevic, Amar. "Facing an Unpredictable Threat: Is NATO Ideally Placed to Manage Climate Change as a Non-Traditional Threat Multiplier?" Connections: The Quarterly Journal 16, no. 2 (2017): 59-80.
"Лицом к лицу с непредсказуемыми угрозами: является ли позиция НАТО идеальной для менеджмента изменения климата в качестве нетрадиционного мультипликатора угроз?" Connections: The Quarterly Journal 16, no. 2 (2017): 67-92.
APA style: Scheffran, J. (2008). Climate Change and Security. Bulletin of the Atomic Scientists. 64(2), 19–25, 55–60.
Chicago style: Scheffran, Jürgen. "Climate Change and Security." Bulletin of the Atomic Scientists 64, no. 2 (2008): 19-25, 55-60.
IEEE style: Scheffran, J., "Climate Change and Security", Bulletin of the Atomic Scientists, vol. 64, issue 2, pp. 19–25, 55–60, May/June 2008.
Disinformation: Policy Responses to Building Citizen Resiliency (3,016)
Corruption as a Cybersecurity Threat in the New World Order (3,011)
Social Media – Hate Speech – Hate Crime (2,994)
Future Development of Quantum Computing and Its Relevance to NATO (2,921)
Cyber Skills Gaps – A Systematic Review of the Academic Literature (2,821)
Maritime Cyber(in)security: A Growing Threat Imperils EU Countries
Security Aspects of Hybrid War, COVID-19 Pandemic and Cyber-Social Vulnerabilities
Neo-Authoritarianism and Leadership: Outcomes for Modern Ukraine
How Networks of Social Cooperation Scale into Civilizations
Chains, Continuums, and Virtuous Cycles: Parsing Taiwan's Strategic Narratives and Soft Power Leadership in the Indo-Pacific
© Partnership for Peace Consortium of Defense Academies and Security Studies Institutes, 2012-2022
This site was designed and is maintained by Procon Ltd., Publisher of Connections: The Quarterly Journal


What is meant by one WHO GATHERS? – Rab Judah replied: 'One who gathers dogs' excrements'.
End of All Flesh, End of Days.
but joined to the spirit of the male.
– Lilith as the Serpent, by Margi B.
(The) Caduceus is a winged staff with two snakes wrapped around it. It was an ancient astrological symbol of commerce and is associated with the Greek god Hermes, the messenger for the gods.
The caduceus (from Greek κηρύκειον kērukeion "herald's staff") is the staff carried by Hermes in Greek mythology….It is a short staff entwined by two serpents, sometimes surmounted by wings. In Roman iconography it was often depicted being carried in the left hand of Mercury, the messenger of the gods, guide of the dead and protector of merchants, shepherds, gamblers, liars and thieves.
Thus about the origins and meaning of this DNA symbol, the Caduceus, the full answers remain unclear. How do we honor this symbol of the DNA wrapped around a central column with wings as a sign of healing yet have real knowledge of the symbology of it?
Historically, the two astrological symbols had distinct meanings in alchemical and astrological principles. Some medical organizations join the serpents of the caduceus with rungs to suggest a DNA double-helix.
While this assumption may seem fairly impossible, mankind's ancient legends of the Caduceus may well have been some sort of garbled, supernaturally-transmitted message implanted in primitive man concerning the actual structure of microscopic DNA, which can be found in all biological life, and is a primary unit of evolution and reproduction.
In conclusion, these incredible correlations and similarities between the legends of the Greco-Roman Caduceus, the completely separate Hebrew folk-tales of the evil serpent couple Samael and Lilith, and the actual molecular structure of DNA cannot be, and are most probably not, just a coincidence. Instead, they could well represent a miraculous connection between religion and science spanning more than 3,000 – 4,000 years of history which remains completely unexplainable.
The LORD sent fiery serpents among the people and they bit the people, so that many people of Israel died…And Moses interceded for the people. Then the LORD said to Moses, 'Make a fiery serpent, and set it upon a pole; and it shall come about, that everyone who is bitten, when he looks at it, he will live.' And Moses made a bronze serpent and set it upon the pole; and it came about, that if a serpent bit any man, when he looked to the bronze serpent, he lived.
The higher the position, the greater is the fall, and this applies to the serpent who was not only the chief of all animals at first, but walked upright like man, and when it fell it sank into the reptile world.
I. I believe in God, the Father Almighty, creator of heaven and earth.
II. I believe in Jesus Christ, his only son, our Lord. He was conceived by the power of the Holy Ghost and born of the Virgin Mary. He suffered under Pontius Pilate, was crucified, died, and was buried. He descended into hell. On the third day he rose again. He ascended into heaven and is seated at the right hand of the Father. He will come again to judge the living and the dead.
VII. I believe in the resurrection of the body and the life everlasting.


When you take a look at those iconic images of cyclists, do you ever ask yourself 'who took that?' I bet you don't. Well, not normally. We all take the people behind the lens and indeed, the people behind the scenes for granted.
Here at Pedalnorth.com we want to get into the subtext of cycling: to the people who design the gear, the bike designers who work in small artisan workshops, the hard working back-offices, and the brilliant photographers that take the images that stay in our memories for ever.
Karen M Edwards is one such photographer, from Cork in Ireland. Executive Editor, Robert Thorpe interviewed Karen to find out more about this amazingly talented young lady.
I was training few years ago to race and I got sick, and with the doctors request to stop training for a while. So I still wanted to be involved in cycling, and I bought my first camera in 2012. I went to a local race, and wanted to capture real racing.
Not like the usual cycling photography at races, but to bring my interpretation of it.
As a racer yourself then, do you think it helps you to get a deeper perspective?
Definitely it does. I don't want to say that I'm an expert, and I would never claim to be. But I've listened to lads training, to the highs and lows. Through that contact and connection, I think I have an understanding to some degree.
in terms of the cycling theme, where did that arrive from? Is cycling a strand that runs through your wider family? Was it the connection of your Uncle Mick in County Cork, who I know that you followed as a youngster?
Well Mick was the racer. Bikes have always been there. I live in the countryside so bikes are essential. I love getting out here.
I have my Grans bike still. I have some great memories of riding it, getting groceries and having that freedom. I cycled to school few miles away, always my goal to beat the school bus home.
2 gears! No wonder I've got huge calves I so love the mechanical side too. I could watch it all day.
I worked in Micks little bike shop as a kid. It was great, but he tormented me, setting me up with boys coming in ???????? He loved embarrassing me. I was so shy.
The close up shots of specific objects and items from cycling, really focus the eye and the mind. How do you go about developing an idea into an image and picking the right angles etc?
The images are of the moment. Just go with it – there and then.
Right; I tend to walk around with the camera in my hand now. Is that the best tip?
I love it 'cause I can express myself through photography; it's an art. I love detail.
It's essential to show the detail to the normal person who doesn't understand racing – to educate them through the images. I think through images you can draw a person in to ask more.
Racing is such a beautiful art form; the tactics and the array of colour.
Your strongest images of cycling are of static themes or of cyclists not moving. Do you find that these images allow you to more closely examine the subject?
Yes, capturing that instant in time has real power.
Yes, capturing the rider waiting to Time Trial. Even by their hand gesture you can capture the intensity.
Do you draw on your experience as a racer and cyclist?
Yes, 'cause I know what it is to line out. It's always difficult regards crashes though. I have passed some crashes. You have to respect the rider and their family.
Crashes must be tricky. Giving the necessary respect and yet being able to respond as a photographer.
Of all your vast array and catalogue of images, what's your own favourite?
And as a cyclist yourself, what's your favourite ride?
My favourite loop out a back road to my home village, lush and green. Quiet. And I get lost in my thoughts. Love that. The bike is always a way of escaping in your head.
It doesn't happen as much as I'd like.
I know that feeling. We live in North Yorkshire, on the edge of the Yorkshire Dales, and yet I never seem to get out as often I want to.
Eddie Dunbar, Mick Cahill, and Páidí ó Brien.
Karen Seán is from Carrick. He's one of my idols. I still get star struck when I see him; such a joker. A great character too.
I love his comment about his bike, his car and his wife… Important in that order. A tough rider, never willingly beaten.
Never. I look up to that character – never give in.
I never dwell on negatives. I just want to keep pushing as I can go. I was told that I'd never make it as a photographer. Best thing I ever did. Drove more on even more.
Karen and I chatted for some time, discussing our own career paths, life, family, aims, and places we'd been. We laughed and shared a great conversation, allowing me to get into who Karen Edwards is: a talented, artistic and driven, cycling loving woman, with her heart in rural Ireland and her eyes on cycling; capturing the emotions and feelings that flow endlessly out of the images that her detailed eyes capture.
You can see Karen's work on her own website here, and by following her Instagram profile.


text:
package controllers;

import play.mvc.Controller;
import play.mvc.Result;

public class MainController extends Controller {

    public static Result index() {
        return ok(views.html.index.render("Hello from Java"));
    }

}


I own a consumer product manufacturing business and for the past 12 months my team and I have been discussing the feasibility of one of our product lines. Its sales are not as high as we had originally hoped.
We've spent countless hours discussing the issue and my sales and marketing team have produced detailed reports that suggest it may not be worth continuing the product line this year.
I am finding it incredibly difficult to make this decision. What if we have misjudged the market and the products we invest in instead don't perform?
At the same time, I don't want to spend another 12 months going over and over the same issue. How do you make tough decisions?
Regular readers of this column will know I'm not one to shy away from making decisions; deciding what kind of gin I'll have is my favourite part of the day.
But in business, some calls are harder to make then others.
To help with your dilemma, I recommend reading this blog post by Peter Bregman. Writing for the Harvard Business Review, Bregman shares three tips for making decisions.
The first is forming habits, which is great for routine decisions with predictable outcomes (i.e. my choice of gin).
But for the more challenging choices, like yours, Bregman recommends using a timer. That is, set a time by which you have to make the call.
"If the issues on the table have been reasonably vetted, the choices are equally attractive, and there is still no clear answer, then admit that there is no clearly identifiable right way to go and just decide," he says.
Phil, in your case, it seems the evidence is pointing you in the direction of letting go of this product line. Review your team's research once more and set a date by which you will make the decision.