text:
#include <aws/core/utils/Outcome.h>
#include <aws/core/auth/AWSAuthSigner.h>
#include <aws/core/client/CoreErrors.h>
#include <aws/core/client/RetryStrategy.h>
#include <aws/core/http/HttpClient.h>
#include <aws/core/http/HttpResponse.h>
#include <aws/core/http/HttpClientFactory.h>
#include <aws/core/auth/AWSCredentialsProviderChain.h>
#include <aws/core/utils/json/JsonSerializer.h>
#include <aws/core/utils/memory/stl/AWSStringStream.h>
#include <aws/core/utils/threading/Executor.h>
#include <aws/snowball/SnowballClient.h>
#include <aws/snowball/SnowballEndpoint.h>
#include <aws/snowball/SnowballErrorMarshaller.h>
#include <aws/snowball/model/CancelClusterRequest.h>
#include <aws/snowball/model/CancelJobRequest.h>
#include <aws/snowball/model/CreateAddressRequest.h>
#include <aws/snowball/model/CreateClusterRequest.h>
#include <aws/snowball/model/CreateJobRequest.h>
#include <aws/snowball/model/DescribeAddressRequest.h>
#include <aws/snowball/model/DescribeAddressesRequest.h>
#include <aws/snowball/model/DescribeClusterRequest.h>
#include <aws/snowball/model/DescribeJobRequest.h>
#include <aws/snowball/model/GetJobManifestRequest.h>
#include <aws/snowball/model/GetJobUnlockCodeRequest.h>
#include <aws/snowball/model/GetSnowballUsageRequest.h>
#include <aws/snowball/model/ListClusterJobsRequest.h>
#include <aws/snowball/model/ListClustersRequest.h>
#include <aws/snowball/model/ListJobsRequest.h>
#include <aws/snowball/model/UpdateClusterRequest.h>
#include <aws/snowball/model/UpdateJobRequest.h>

using namespace Aws;
using namespace Aws::Auth;
using namespace Aws::Client;
using namespace Aws::Snowball;
using namespace Aws::Snowball::Model;
using namespace Aws::Http;
using namespace Aws::Utils::Json;

static const char* SERVICE_NAME = "snowball";
static const char* ALLOCATION_TAG = "SnowballClient";

SnowballClient::SnowballClient(const Client::ClientConfiguration& clientConfiguration) :
  BASECLASS(clientConfiguration,
    Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<DefaultAWSCredentialsProviderChain>(ALLOCATION_TAG),
        SERVICE_NAME, clientConfiguration.region),
    Aws::MakeShared<SnowballErrorMarshaller>(ALLOCATION_TAG)),
    m_executor(clientConfiguration.executor)
{
  init(clientConfiguration);
}

SnowballClient::SnowballClient(const AWSCredentials& credentials, const Client::ClientConfiguration& clientConfiguration) :
  BASECLASS(clientConfiguration,
    Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<SimpleAWSCredentialsProvider>(ALLOCATION_TAG, credentials),
         SERVICE_NAME, clientConfiguration.region),
    Aws::MakeShared<SnowballErrorMarshaller>(ALLOCATION_TAG)),
    m_executor(clientConfiguration.executor)
{
  init(clientConfiguration);
}

SnowballClient::SnowballClient(const std::shared_ptr<AWSCredentialsProvider>& credentialsProvider,
  const Client::ClientConfiguration& clientConfiguration) :
  BASECLASS(clientConfiguration,
    Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, credentialsProvider,
         SERVICE_NAME, clientConfiguration.region),
    Aws::MakeShared<SnowballErrorMarshaller>(ALLOCATION_TAG)),
    m_executor(clientConfiguration.executor)
{
  init(clientConfiguration);
}

SnowballClient::~SnowballClient()
{
}

void SnowballClient::init(const ClientConfiguration& config)
{
  Aws::StringStream ss;
  ss << SchemeMapper::ToString(config.scheme) << "://";

  if(config.endpointOverride.empty())
  {
    ss << SnowballEndpoint::ForRegion(config.region, config.useDualStack);
  }
  else
  {
    ss << config.endpointOverride;
  }

  m_uri = ss.str();
}

CancelClusterOutcome SnowballClient::CancelCluster(const CancelClusterRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return CancelClusterOutcome(CancelClusterResult(outcome.GetResult()));
  }
  else
  {
    return CancelClusterOutcome(outcome.GetError());
  }
}

CancelClusterOutcomeCallable SnowballClient::CancelClusterCallable(const CancelClusterRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< CancelClusterOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CancelCluster(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::CancelClusterAsync(const CancelClusterRequest& request, const CancelClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->CancelClusterAsyncHelper( request, handler, context ); } );
}

void SnowballClient::CancelClusterAsyncHelper(const CancelClusterRequest& request, const CancelClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, CancelCluster(request), context);
}

CancelJobOutcome SnowballClient::CancelJob(const CancelJobRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return CancelJobOutcome(CancelJobResult(outcome.GetResult()));
  }
  else
  {
    return CancelJobOutcome(outcome.GetError());
  }
}

CancelJobOutcomeCallable SnowballClient::CancelJobCallable(const CancelJobRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< CancelJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CancelJob(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::CancelJobAsync(const CancelJobRequest& request, const CancelJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->CancelJobAsyncHelper( request, handler, context ); } );
}

void SnowballClient::CancelJobAsyncHelper(const CancelJobRequest& request, const CancelJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, CancelJob(request), context);
}

CreateAddressOutcome SnowballClient::CreateAddress(const CreateAddressRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return CreateAddressOutcome(CreateAddressResult(outcome.GetResult()));
  }
  else
  {
    return CreateAddressOutcome(outcome.GetError());
  }
}

CreateAddressOutcomeCallable SnowballClient::CreateAddressCallable(const CreateAddressRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< CreateAddressOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CreateAddress(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::CreateAddressAsync(const CreateAddressRequest& request, const CreateAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->CreateAddressAsyncHelper( request, handler, context ); } );
}

void SnowballClient::CreateAddressAsyncHelper(const CreateAddressRequest& request, const CreateAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, CreateAddress(request), context);
}

CreateClusterOutcome SnowballClient::CreateCluster(const CreateClusterRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return CreateClusterOutcome(CreateClusterResult(outcome.GetResult()));
  }
  else
  {
    return CreateClusterOutcome(outcome.GetError());
  }
}

CreateClusterOutcomeCallable SnowballClient::CreateClusterCallable(const CreateClusterRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< CreateClusterOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CreateCluster(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::CreateClusterAsync(const CreateClusterRequest& request, const CreateClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->CreateClusterAsyncHelper( request, handler, context ); } );
}

void SnowballClient::CreateClusterAsyncHelper(const CreateClusterRequest& request, const CreateClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, CreateCluster(request), context);
}

CreateJobOutcome SnowballClient::CreateJob(const CreateJobRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return CreateJobOutcome(CreateJobResult(outcome.GetResult()));
  }
  else
  {
    return CreateJobOutcome(outcome.GetError());
  }
}

CreateJobOutcomeCallable SnowballClient::CreateJobCallable(const CreateJobRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< CreateJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CreateJob(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::CreateJobAsync(const CreateJobRequest& request, const CreateJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->CreateJobAsyncHelper( request, handler, context ); } );
}

void SnowballClient::CreateJobAsyncHelper(const CreateJobRequest& request, const CreateJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, CreateJob(request), context);
}

DescribeAddressOutcome SnowballClient::DescribeAddress(const DescribeAddressRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return DescribeAddressOutcome(DescribeAddressResult(outcome.GetResult()));
  }
  else
  {
    return DescribeAddressOutcome(outcome.GetError());
  }
}

DescribeAddressOutcomeCallable SnowballClient::DescribeAddressCallable(const DescribeAddressRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< DescribeAddressOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DescribeAddress(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::DescribeAddressAsync(const DescribeAddressRequest& request, const DescribeAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->DescribeAddressAsyncHelper( request, handler, context ); } );
}

void SnowballClient::DescribeAddressAsyncHelper(const DescribeAddressRequest& request, const DescribeAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, DescribeAddress(request), context);
}

DescribeAddressesOutcome SnowballClient::DescribeAddresses(const DescribeAddressesRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return DescribeAddressesOutcome(DescribeAddressesResult(outcome.GetResult()));
  }
  else
  {
    return DescribeAddressesOutcome(outcome.GetError());
  }
}

DescribeAddressesOutcomeCallable SnowballClient::DescribeAddressesCallable(const DescribeAddressesRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< DescribeAddressesOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DescribeAddresses(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::DescribeAddressesAsync(const DescribeAddressesRequest& request, const DescribeAddressesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->DescribeAddressesAsyncHelper( request, handler, context ); } );
}

void SnowballClient::DescribeAddressesAsyncHelper(const DescribeAddressesRequest& request, const DescribeAddressesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, DescribeAddresses(request), context);
}

DescribeClusterOutcome SnowballClient::DescribeCluster(const DescribeClusterRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return DescribeClusterOutcome(DescribeClusterResult(outcome.GetResult()));
  }
  else
  {
    return DescribeClusterOutcome(outcome.GetError());
  }
}

DescribeClusterOutcomeCallable SnowballClient::DescribeClusterCallable(const DescribeClusterRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< DescribeClusterOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DescribeCluster(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::DescribeClusterAsync(const DescribeClusterRequest& request, const DescribeClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->DescribeClusterAsyncHelper( request, handler, context ); } );
}

void SnowballClient::DescribeClusterAsyncHelper(const DescribeClusterRequest& request, const DescribeClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, DescribeCluster(request), context);
}

DescribeJobOutcome SnowballClient::DescribeJob(const DescribeJobRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return DescribeJobOutcome(DescribeJobResult(outcome.GetResult()));
  }
  else
  {
    return DescribeJobOutcome(outcome.GetError());
  }
}

DescribeJobOutcomeCallable SnowballClient::DescribeJobCallable(const DescribeJobRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< DescribeJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DescribeJob(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::DescribeJobAsync(const DescribeJobRequest& request, const DescribeJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->DescribeJobAsyncHelper( request, handler, context ); } );
}

void SnowballClient::DescribeJobAsyncHelper(const DescribeJobRequest& request, const DescribeJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, DescribeJob(request), context);
}

GetJobManifestOutcome SnowballClient::GetJobManifest(const GetJobManifestRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return GetJobManifestOutcome(GetJobManifestResult(outcome.GetResult()));
  }
  else
  {
    return GetJobManifestOutcome(outcome.GetError());
  }
}

GetJobManifestOutcomeCallable SnowballClient::GetJobManifestCallable(const GetJobManifestRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< GetJobManifestOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetJobManifest(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::GetJobManifestAsync(const GetJobManifestRequest& request, const GetJobManifestResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->GetJobManifestAsyncHelper( request, handler, context ); } );
}

void SnowballClient::GetJobManifestAsyncHelper(const GetJobManifestRequest& request, const GetJobManifestResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, GetJobManifest(request), context);
}

GetJobUnlockCodeOutcome SnowballClient::GetJobUnlockCode(const GetJobUnlockCodeRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return GetJobUnlockCodeOutcome(GetJobUnlockCodeResult(outcome.GetResult()));
  }
  else
  {
    return GetJobUnlockCodeOutcome(outcome.GetError());
  }
}

GetJobUnlockCodeOutcomeCallable SnowballClient::GetJobUnlockCodeCallable(const GetJobUnlockCodeRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< GetJobUnlockCodeOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetJobUnlockCode(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::GetJobUnlockCodeAsync(const GetJobUnlockCodeRequest& request, const GetJobUnlockCodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->GetJobUnlockCodeAsyncHelper( request, handler, context ); } );
}

void SnowballClient::GetJobUnlockCodeAsyncHelper(const GetJobUnlockCodeRequest& request, const GetJobUnlockCodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, GetJobUnlockCode(request), context);
}

GetSnowballUsageOutcome SnowballClient::GetSnowballUsage(const GetSnowballUsageRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return GetSnowballUsageOutcome(GetSnowballUsageResult(outcome.GetResult()));
  }
  else
  {
    return GetSnowballUsageOutcome(outcome.GetError());
  }
}

GetSnowballUsageOutcomeCallable SnowballClient::GetSnowballUsageCallable(const GetSnowballUsageRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< GetSnowballUsageOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetSnowballUsage(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::GetSnowballUsageAsync(const GetSnowballUsageRequest& request, const GetSnowballUsageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->GetSnowballUsageAsyncHelper( request, handler, context ); } );
}

void SnowballClient::GetSnowballUsageAsyncHelper(const GetSnowballUsageRequest& request, const GetSnowballUsageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, GetSnowballUsage(request), context);
}

ListClusterJobsOutcome SnowballClient::ListClusterJobs(const ListClusterJobsRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return ListClusterJobsOutcome(ListClusterJobsResult(outcome.GetResult()));
  }
  else
  {
    return ListClusterJobsOutcome(outcome.GetError());
  }
}

ListClusterJobsOutcomeCallable SnowballClient::ListClusterJobsCallable(const ListClusterJobsRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< ListClusterJobsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListClusterJobs(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::ListClusterJobsAsync(const ListClusterJobsRequest& request, const ListClusterJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->ListClusterJobsAsyncHelper( request, handler, context ); } );
}

void SnowballClient::ListClusterJobsAsyncHelper(const ListClusterJobsRequest& request, const ListClusterJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, ListClusterJobs(request), context);
}

ListClustersOutcome SnowballClient::ListClusters(const ListClustersRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return ListClustersOutcome(ListClustersResult(outcome.GetResult()));
  }
  else
  {
    return ListClustersOutcome(outcome.GetError());
  }
}

ListClustersOutcomeCallable SnowballClient::ListClustersCallable(const ListClustersRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< ListClustersOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListClusters(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::ListClustersAsync(const ListClustersRequest& request, const ListClustersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->ListClustersAsyncHelper( request, handler, context ); } );
}

void SnowballClient::ListClustersAsyncHelper(const ListClustersRequest& request, const ListClustersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, ListClusters(request), context);
}

ListJobsOutcome SnowballClient::ListJobs(const ListJobsRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return ListJobsOutcome(ListJobsResult(outcome.GetResult()));
  }
  else
  {
    return ListJobsOutcome(outcome.GetError());
  }
}

ListJobsOutcomeCallable SnowballClient::ListJobsCallable(const ListJobsRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< ListJobsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListJobs(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::ListJobsAsync(const ListJobsRequest& request, const ListJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->ListJobsAsyncHelper( request, handler, context ); } );
}

void SnowballClient::ListJobsAsyncHelper(const ListJobsRequest& request, const ListJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, ListJobs(request), context);
}

UpdateClusterOutcome SnowballClient::UpdateCluster(const UpdateClusterRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return UpdateClusterOutcome(UpdateClusterResult(outcome.GetResult()));
  }
  else
  {
    return UpdateClusterOutcome(outcome.GetError());
  }
}

UpdateClusterOutcomeCallable SnowballClient::UpdateClusterCallable(const UpdateClusterRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< UpdateClusterOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->UpdateCluster(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::UpdateClusterAsync(const UpdateClusterRequest& request, const UpdateClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->UpdateClusterAsyncHelper( request, handler, context ); } );
}

void SnowballClient::UpdateClusterAsyncHelper(const UpdateClusterRequest& request, const UpdateClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, UpdateCluster(request), context);
}

UpdateJobOutcome SnowballClient::UpdateJob(const UpdateJobRequest& request) const
{
  Aws::StringStream ss;
  Aws::Http::URI uri = m_uri;
  ss << "/";
 uri.SetPath(uri.GetPath() + ss.str());
  JsonOutcome outcome = MakeRequest(uri, request, HttpMethod::HTTP_POST);
  if(outcome.IsSuccess())
  {
    return UpdateJobOutcome(UpdateJobResult(outcome.GetResult()));
  }
  else
  {
    return UpdateJobOutcome(outcome.GetError());
  }
}

UpdateJobOutcomeCallable SnowballClient::UpdateJobCallable(const UpdateJobRequest& request) const
{
  auto task = Aws::MakeShared< std::packaged_task< UpdateJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->UpdateJob(request); } );
  auto packagedFunction = [task]() { (*task)(); };
  m_executor->Submit(packagedFunction);
  return task->get_future();
}

void SnowballClient::UpdateJobAsync(const UpdateJobRequest& request, const UpdateJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  m_executor->Submit( [this, request, handler, context](){ this->UpdateJobAsyncHelper( request, handler, context ); } );
}

void SnowballClient::UpdateJobAsyncHelper(const UpdateJobRequest& request, const UpdateJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
{
  handler(this, request, UpdateJob(request), context);
}

redpajama_set_name: RedPajamaGithub


Kissing goodbye to ninety-nine tenths of my worldly goods – eek! – The Diesel-Electric Elephant Company.
Kissing goodbye to ninety-nine tenths of my worldly goods – eek!
I'm telling myself that this is a far, far better option than having been bombed out during the Blitz. No Blitz and no bombs, for one thing!
I have this day bade farewell, adieu, so long and thanks for all the fish to much more than nine tenths of my worldly goods. Gone, done with, sold for a purse of farthings to two chaps with a pantechnicon, to two chaps who could barely contain their farts of glee as we played negotiation-tennis over an imaginary net.
I am moving onto a narrowboat. Sometime soonish.
I didn't sell my books. I am sorting through those. A generously slack handful will remain with me.
My CD collection has been decanted into some nifty DJ-style al-yoo-min-ee-um cases, reducing its footprint to a mere shadow of its former shelf-space.
Family photographs have been set aside, as have a few items of memorabilia.
I've kept a smidgen of the household Spode, two of my least-flamboyant candelabra, a soupçon of the itemus generalis domesticus, some tools and – for which you will be grateful – all of my wardrobe, including the underwear.
All I require is my sleeping-box half-full of the fresh, damp soil of my beloved England. Oh, and a cushion for my haemorrhoids.
Oh – and my typewriter, I've kept my typewriter. No sense in being a writer sitting on a canal-boat unless I can bang away at a clapped-out old typewriter each day as I watch the world drift past, or as I drift past the world.
Note to self: do a spot of revision on tying knots, to prevent unwanted drifting.
I won't be just moored up in one place, it is my intention to explore every inch of the network that I can get to. Expect one or two "boatish" posts here.
The task now is to take Occam's Razor once again to the remaining tenth, and to reduce it by another nine-tenths.
My suspicion is that this final reduction will be harder than the initial reduction!
I won't quite walk away with a suitcase in each hand, but it won't be far off that as I dance a jolly jig towards the horizon. One tenth of one tenth of what I previously thought necessary to civilised living will come with me.
Let the boat search begin.
Yep indeedy, I don't yet have a boat. Oops.
Still, a new episode of "Hutson" awaits, as soon as I find one!
Another complete re-write of the series in fact.
You can never have too many pairs of knickers. We weeded out the past the when we moved to Turkey. It was both sad and liberating at the same time. Good luck with the your life on the water. Permission to come aboard, Capt'n!
Have your sea-chest stowed below and I'll see you on the poop-deck. Splice the anchor scrunges and hoist the jellied Roger. Or something. Cheers, Muskie!
I'm envious not just of the lifestyle you're about to take on but of the ability to cut your possessions by so much with nary a twinge of regret. I think I'd need the Queen Mary.
Very best wishes to you, I hope the boat is found sooner rather than later.
Don't forget the Shire Horse (to pull the barge) and the obligatory barking dog (to keep pirates at bay and annoy both you and the horse) Ian.
Although Manchester canals abound, I'd avoid them if I were you (they go through some very insalubrious places) – however, Cheshire canals are very scenic, with closely spaced watering holes for horses and dogs near convenient Pubs (with good food and liquid refreshments aplenty).
Some canals may be taken at water-ski speeds, or in convoy with someone on guard at all times! Others are for lingering on. This "the rudder" thing that you mention – isn't that something to do with steering?
What larks! One man in a boat, to say nothing of the missing dog in the night-time, eh? Well done, that man! Seriously, WHAT FUN!
Well, now that you've left the land of land-lubbers, I'll be waiting breathlessly for rollicking tales of your adventures (and lots of photos)!!
Ooh, what japes! Jolly good luck old bean. You have retained your camera equipment, haven't you?
How marvellous. What an adventure you will have, I hope you'll share it with us?
Sob! Made me cry! There will be some tricity to recharge your batteries won't there?


text:
A rook piercing is a perforation of the antihelix of the ear for the purpose of wearing jewelry. It is located just above the tragus on the ridge between the inner and outer conch with the piercing passing from the underside to the top of this ridge, differing from many ear piercings that essentially span between a "front" and "back" surface. Erik Dakota, a well known professional piercer and the individual responsible for originating and popularizing the rook piercing, is said to have named this modification after a shortened version of his first name. The piercing was first named in issue #4 of the magazine Body Play and Modern Primitives Quarterly (published by Fakir Musafar) around 1992 alongside the first printed reference to the industrial piercing, then termed "industrial ear project".

Procedure
The procedure is done similarly to other piercings of the cartilage of the ear. Clamps may be used but it is usually done freehand. Once the area is cleaned, the piercer and the client will agree on placement, although because of its location it can be difficult to see exactly where the entrance and exit holes will be. Generally, the piercer will advise the client on the best location. The entrance and exit holes are marked, and a hollow needle is pushed through. Many professional piercers will use either a 14g or 16g needle by default, although it is possible to use even larger gauges. The jewelry is then inserted, and the piercing complete.

Pain is very subjective and it is difficult to ascertain how much the initial piercing will hurt to a given person. Some people experience pain comparable to that of an average cartilage piercing to the helix or tragus, and others have described it as one of the most painful piercings they've ever received, either in the ear or their whole body. However, pain thresholds differ between individuals, so what may be painful to one person may be a slight tickle to someone else.

Healing and aftercare

The rook piercing is also cared for much like any other ear cartilage piercing. Salt soaks (warm water (optimally sterilized by boiling) mixed with a small amount of sea salt) are recommended twice a day for the first month or two. These soaks will soften any dried lymph, clean the piercing as well as the jewellery, partially sterilize the area due to the salt, and alleviate swelling and soreness. The warm water also encourages blood flow to the area aiding in the healing process. Washing the area once a day gently with liquid soap and warm water will decrease the chances of infection. Ideally, an antimicrobial soap should be used, but for most people a fragrance-free and dye-free liquid antibacterial soap will suffice. One must be careful not to over-wash the area as this can lead to drying the area out. Alcohol and peroxide should also not be used for the same reason. Antibacterial and antimicrobial ointments (such as Neosporin) should never be used as they seal off the wound from receiving any air. One should avoid touching the area as much as possible, and if necessary, wash their hands beforehand. Care should be taken when changing shirts so that the jewellery isn't tugged as well as when using a telephone as the receiver may spread germs to the wound and the pressure can delay healing. Otherwise, for most people, the area is tucked into the ear more so than most other cartilage piercings and is less susceptible to incidental bumps and knocks.

Soreness is likely to persist for the first couple of months with the worst occurring during the first week or two. Jewellery should not be changed until at least eight weeks after the procedure. Primary healing will usually conclude within six months with full, secondary healing of the fistula complete in 12 to 18 months. Much of the cartilage in the ear receives comparatively little blood flow accounting for the increased healing time and persistent soreness.

Jewelry
Any type of body modification jewelry can be worn in the piercing with the most common being CBRs (captive bead ring) and curved barbells. Many piercers recommend that a curved barbell is worn initially. The curved barbell has less curvature than a CBR, thus reducing strain on the healing fistula and leading to a healthier piercing and shorter healing times. People often choose relatively small diameter rings and shorter barbells owing to the confined space of the piercing. Oftentimes individuals will need assistance in removing and especially inserting jewelry due to the small area and difficulty in seeing and reaching the piercing coupled with the complexity of screwing on small parts without stripping the jewelry and/or securing the ball in a CBR.

Complications
Generally, the rook piercing presents the same set of complications and risks as other cartilage piercings in the ear, although its concealed nature makes it less prone to accidental snags than other piercings. However, not everyone has suitable anatomy for a viable, long-term rook piercing. Someone with a poorly defined ridge in this area is encouraged not to have this procedure done. An experienced piercer will be able to accurately assess whether or not the client's ear is suited for a rook piercing and will likely refuse to perform the modification on someone with an inadequate ridge.

Some individuals have complained about persistent soreness in the area spanning a year or more, migration, and in some cases even rejection. While some of these issues can arise from improper aftercare and careless handling, many times they are the result of improper placement or poorly suited anatomy. Depending on the size and thickness of one's antihelix in this area, the increased curvature of a CBR (as opposed to a curved barbell) can put undue strain on the healing fistula which can prolong soreness and promote migration. Rejection will only occur in the most extreme of circumstances, usually because of poor placement (too shallow or oddly angled hole) or extreme trauma inflicted on the piercing especially during healing. In general, a person with decent health and proper hygiene is unlikely to experience any complications or pain outside of the normal healing process.

It is also important to refrain from attempting to stretch this area, at least without talking to an experienced piercer beforehand and following their advice. Cartilage normally will not stretch significantly although smaller gauge stretchings may be possible for some people.

References

External links
 BME Encyclopedia Entry

Ear piercing

redpajama_set_name: RedPajamaWikipedia


Lenting for the Most Vulnerable: Will You Join Me?
For Lent this year, my wife and I are giving an equal amount of money to World Relief any time we spend money on a non-essential item for ourselves or our kids. Will you join us?
Episode 2 / 64 covers why Lent is awesome, using Lent to help the most vulnerable this year (and if you'd like to get involved). The mailbag brings a question about masturbation, and Noah's Rant targets the Folgers Cafe at the local Marathon gas station.
Ellen Page was in the news recently criticizing Chris Pratt's attendance at a Hillsong affiliated church and their LGBT stance.


Around here, we're big proponents of getting an early start. First thing in the morning is when your brain is the sharpest, your body is the most energized and your slate is blank, open for you to fill as you see fit.
Early morning is the time of day some of the brightest minds, from Benjamin Franklin to Ernest Hemingway, did their best work. Your morning sets the tone for your entire day, and as a busy entrepreneur you can't afford to squander it.
Get things started on the right foot and make massive progress toward your goals by crossing these 8 things off your to-do list before 8 a.m.
Exercise is necessary to be the best version of yourself. Starting your day with a workout gets your endorphins pumping, jump starts your metabolism and best of all, gets it out of the way so you don't have to worry about it the rest of the day.
The Mayo Clinic recommends healthy adults get 150 minutes of moderate exercise per week, which works out perfectly for a half hour of exercise to start each weekday.
If you've never made exercise part of your daily routine before, don't write it off! Getting started is as easy as going for a brisk 30-minute walk as soon as you hop out of bed.
Once you've been doing it for a few weeks it'll become a habit, and you'll start looking forward to the great feeling that comes after finishing your workout.
Making exercise a regular part of your life will make your body feel better and your mind feel sharper, and you'll live longer to accomplish more of your dreams!
No, journaling doesn't mean recording the minutiae of your life and your innermost secrets, diary-style (although if that's your cup of tea, go for it!). Rather, journaling is a way to sort out your thoughts on paper, keep track of new ideas and chart your progress toward your goals.
Each day, spend five minutes journaling about whatever's on your mind, be it a recent victory, a challenge that's been dogging you, or the contents of a crazy dream you had.
I've journaled since I was a kid, and I love looking back at what I've recorded through the years. It's empowering to see how I overcame things that felt overwhelming at the time. It's also gratifying to see which goals I've crossed off my list while getting a reminder of those I haven't been putting enough effort towards.
As we've discussed in the past, setting goals on a regular basis is a surefire way to achieve the things you want to get done.
Keep a running list of two sets of goals: your 3-month goals and your 3-year goals. Each day, take out that slip of paper or open the note on your phone and go over it. What actions will you take today to move each item on the list forward?
Goals only work if you work toward them consistently. Reviewing your goals on a daily basis ensures they're never too far from your mind and you never go too long without taking action on them.
Now that you've given your body a good workout, it's time to provide it with some fuel.
Begin your day by eating something rich in protein, which will help your muscles recover from your workout, and whole grain, which will give you energy and keep you feeling full until lunch. Whenever possible, incorporate fruits or veggies into your breakfast as well.
This is a bit unconventional, but if you want to achieve incredible things, you have to be willing to try things you've never tried before! Shock your system with a quick but effective dose of the unexpected.
An ice cold shower is one way to shock your system. The sudden chill helps your body remove waste built up during your workout and kicks your metabolism into high gear. There's also evidence it can help make you more productive through the day.
Another way to shock your system is to bite into a wedge of raw lemon, which will zap your senses wide awake, or to down a teaspoon or two of apple cider vinegar, which has a similar energizing effect and also helps regulate your blood sugar.
If you want to keep a competitive edge, it's important to stay up to date with current events in the world and in your industry. Just ask Warren Buffet, who devours up to five newspapers every day.
Choose at least two news sources to skim each morning: one that'll get you up to speed on what's going on in the world (like CNN.com or The New York Times) and one that'll give you the rundown on what's happening in your specific field. If you're in retail, for example, you might check out Retail Wire, or peruse Financial Times if you're in the business of finance.
Once you're up to speed on the news, it's time to set yourself up for success for the rest of the day with a to-do list. But not just any to-do list—one that's going to help you power through the most important and impactful things that need to get done.
The most effective to-do list prioritizes items by deadline and order of importance. Don't assign yourself too much; focus first on the things that absolutely must get done today, then on the steps you're taking toward the goals you reviewed earlier.
For more on turning your to-do list into a productivity machine, check out this post.
Finally, it's time to get cracking, starting with the least appealing task on your to-do list.
Maybe it's something that's going to require a lot of mental energy and you'll need several hours of quiet time to zero in on it. Or, maybe it's something tedious you simply don't want to do, like making an important phone call or running an errand.
Whatever it is that you're least inclined to do, do it first and get it over with. By tackling something challenging first thing in the morning, you'll head into the latter portion of your day with a feeling of accomplishment. Plus, you'll be more than ready to handle the comparatively easier tasks that remain on your to-do list.
What does your morning routine for success look like? Leave a comment below and share your favorite thing to get done before 8 a.m.


text:
Rescue Pilot Receives Two Silver Stars
Then-Air Force Secretary Deborah Lee James applauds after presenting Col. Christopher C. Barnett two Silver Star medals at Maxwell AFB, Ala., Jan. 19, 2017. Air Force photo by Melanie Rodgers Cox.
Col. Christopher Barnett received two Silver Stars for gallantry in combat operations in a ceremony at Maxwell AFB, Ala., last month. In 2012, then-Lt. Col. Barnett was awarded two Distinguished Flying Cross with Valor awards for his actions on May 19-20, 2009, and April 4, 2009, in Afghanistan. Those two awards were upgraded to Silver Stars in a recent DOD-wide review of medals given during the wars in Afghanistan and Iraq. On May 19-20, Barnett was mission commander and flight lead of two HH-60G helicopters from the 34th Weapons Squadron, 129th Expeditionary Rescue Squadron in Marjah, Afghanistan. In the midst of a four-day battle, Barnett flew into heavy enemy fire on three separate occasions to rescue wounded soldiers, executing "a perfect zero visibility approach" on one occasion, according to the award citation, and saving three lives over the course of two days. On April 4, near Kajaki, Afghanistan, Barnett led his HH-60G formation into a sandstorm in near zero visibility to rescue critically wounded casualties from a special forces convoy that had come under attack on the ground. Barnett flew into a hail of enemy fire, at one point hovering within 20 meters of an enemy position, in order to locate the stranded soldiers. He then directed his flight in an attack that destroyed the position and remained in the air to secure the area for evacuation despite dangerously low fuel levels. He was credited with saving the lives of one Afghan National Army and 40 US special forces soldiers.

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Duda para escoger framework para desarrollo web en python soy novato en el desarrollo de aplicaciones web, y me gustaría poder diseñar un pequeño proyecto que incluya que el cliente pueda ver un streaming de una cam, chatear con el servidor y subir archivos como principal características, y que depende del tipo de usuario pueda conectarse con X personas o solo con el servidor por ejemplo.
Como conozco algo las bases de python tenia pensado intentar entre flask o django, pero no soy capaz de decidir bien que framework usar, me gustaría saber si podéis ayudarme a decidir o decirme que alternativa usaríais y porque para poder aclararme por que camino tomar.
Gracias por si tiempo

A: Lo comento aqui por que no tengo suficientes puntos para hacer un comentario. Pero pues tu pregunta facilmente se puede resolver escribiendola en google y ver en paginas como esta o en el grupo de Python de reddit o similar.

redpajama_set_name: RedPajamaStackExchange


text:
layout: post
title: Simple .Net Twitter,Google,Facebook Authentication
category: authentication,community,dinnerparty,nancyfx,oss,social,social authentication
---

## Simple .Net Twitter,Google,Facebook Authentication

Logging into websites is no longer a matter of typing in your username and password and clicking the login button. If you already have an account with the main social networks you can log into a site using your credentials from that website saving you having to register your details *again*. This obviously makes things a bit easier as you don't have to remember another password. (Although you should all be using a password manager such as [LastPass][1].)

## Current Social Login Providers

There are currently providers out there that allow you to use their services to integrate into your website to provide authentication via the social networks. The main two that I know of are [Janrain][2] and [DotNetOpenAuth][3]. I've not worked with DotNetOpenAuth but I have with Janrain when building [DinnerParty][4].

The process was reasonably easy but not as simple as it could be.

<!--excerpt-->

### .Net Simple Social Authentication

I was made aware of an OSS project by [@philliphaydon][5] whilst keeping up to speed with the latest [NancyFX ][6]goings on in [Jabbr][7] that aims to provide a simple way of using social networks to log into a site.

It started out aimed at ASP.Net MVC but after a bit of arm bending from [@philliphaydon][5] it was refactored to be web framework agnostic so it could be used with [NancyFX ][6].

Being enthusiastic, I asked if any help was needed and I ended up making a simple demo website using [NancyFX][6]

## Code Examples

Let me see some code I hear you say so here we go:

**Bootstrapper:**

	public class Bootstrapper : DefaultNancyBootstrapper
	{
	    private const string TwitterConsumerKey = "Rb7qNNPUPsRSYkznFTbF6Q";
	    private const string TwitterConsumerSecret = "pP1jBdYOlmCzo08QFJjGIHY4YSyPdGLPO2m1q47hu9c";
	    private const string FacebookAppId = "159181340893340";
	    private const string FacebookAppSecret = "97c4e4d0fa548232cf8f9c68a7adcff9";
	    private const string GoogleConsumerKey = "587140099194.apps.googleusercontent.com";
	    private const string GoogleConsumerSecret = "npk1_gx-gqJmLiJRPFooxCEY";

       protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
       {
           RegisterAuthenticationProviders(container);

           base.ApplicationStartup(container, pipelines);

           CookieBasedSessions.Enable(pipelines);
       }

       private static void RegisterAuthenticationProviders(TinyIoCContainer container)
       {
           Condition.Requires(container).IsNotNull();

           var twitterProvider = new TwitterProvider(TwitterConsumerKey, TwitterConsumerSecret,
                                                     new Uri(
                                                         "http://localhost:6969/AuthenticateCallback?providerKey=Twitter"));

           var facebookProvider = new FacebookProvider(FacebookAppId, FacebookAppSecret,
                                                       new Uri(
                                                           "http://localhost:6969/AuthenticateCallback?providerKey=facebook"));

           var googleProvider = new GoogleProvider(GoogleConsumerKey, GoogleConsumerSecret,
                                                   new Uri(
                                                       "http://localhost:6969/AuthenticateCallback?providerKey=google"));

           var authenticationService = new AuthenticationService();
           authenticationService.AddProvider(twitterProvider);
           authenticationService.AddProvider(facebookProvider);
           authenticationService.AddProvider(googleProvider);

           container.Register(authenticationService);
       }
    }

**HomeModule**

	public class HomeModule : NancyModule
	{
	   private const string SessionGuidKey = "GUIDKey";

       public HomeModule(IAuthenticationService authenticationService)
       {
           Get["/"] = parameters => View["login"];

           Get["/RedirectToAuthenticate/{providerKey}"] = parameters =>
                  {
                      Session[SessionGuidKey] = Guid.NewGuid();
                      Uri uri =
                          authenticationService.
                              RedirectToAuthenticationProvider(
                                  parameters.providerKey,
                                  Session[SessionGuidKey].ToString());

                      return Response.AsRedirect(uri.AbsoluteUri);
                  };

           Get["/AuthenticateCallback"] = parameters =>
                  {
                      if (string.IsNullOrEmpty(Request.Query.providerKey))
                      {
                          throw new ArgumentNullException("providerKey");
                      }

                      // It's possible that a person might hit this resource directly, before any session value
                      // has been set. As such, we should just fake some state up, which will not match the
                      // CSRF check.
                      var existingState = (string)(Session[SessionGuidKey] ?? Guid.NewGuid().ToString());

                      var model = new AuthenticateCallbackViewModel();

                      var querystringParameters = new NameValueCollection();
                      foreach (var item in Request.Query)
                      {
                          querystringParameters.Add(item, Request.Query[item]);
                      }

                      try
                      {
                          model.AuthenticatedClient =
                              authenticationService.CheckCallback(Request.Query.providerKey,
                                                                  querystringParameters,
                                                                  existingState);
                      }
                      catch (Exception exception)
                      {
                          model.Exception = exception;
                      }

                      return View["AuthenticateCallback", model];
                  };
       }
    }

This should hopefully be pretty self explanatory as that is the aim of the game but I will go through it.

Firstly we need to setup our social network key and secret which was provided to us by registering an app at the relevant site. We then setup a IAuthenticationProvider class for Twitter, Google & Facebook with the key, secret and callback URL that the social network will make request to after login. We then register our providers with a IAuthenticationService class.

We then setup our IOC container to use authenticationService so that when our modules like Home take a dependency of IAuthenticationService it will use that.

Our root route provides a login page with hyperlinks to the RedirectToAuthenticate route. For example, using Twitter it will be **_http://mydomain.com/RedirectToAuthenticate/Twitter_**.

We create an item in our session so that it can be retrieved later when [Twitter][9] calls the callback URL. This is so we can validate(if needs be) that its a valid request and not some cheeky hacker. We then use the IAuthenticationService to redirect to the social network login page based on the value of providerKey argument. This could also be Facebook or Google.

The user is redirected to [Twitter][9] and logs in and then gets directed back to our website.

Our AuthenticateCallback route then creates a NameValueCollection from the querystring parameters and passes the providerKey (Twitter,Facebook,Google), NameValueCollection and Session value to the IAuthenticationService to validate all is ok.

If so it creates a view model and passes it to the view and in this example shows us the logged in user's details.

I think that was pretty simple.

## I want to play

The source code is over at [Github][10] and is written by Pure.Krome or [Lara Eagle][11] if you prefer (same person). It's also available on [Nuget][12]. Its name you ask? World-Domination.Web.Authentication

   [1]: http://www.lastpass.com
   [2]: http://janrain.com
   [3]: http://www.dotnetopenauth.net/
   [4]: http://blog.jonathanchannon.com/2012/09/21/nancyfx-ravendb-nerddinner-and-me/
   [5]: http://twitter.com/philliphaydon
   [6]: http://nancyfx.org/
   [7]: http://jabbr.net
   [9]: http://twitter.com
   [10]: https://github.com/PureKrome/World-Domination.Web.Authentication
   [11]: https://twitter.com/lara_eagle
   [12]: http://nuget.org/packages/World-Domination.Web.Authentication


These bees are lovingly cared for by Bee Girl leisa from Peachester. Honey has been used for centuries for its healing properties and sweet flavour. Honey is much sweeter than table sugar and is better for you. When possible, it's best to buy locally grown, organic, raw honey. This will be produced by bees in or near the environment you live. Consuming foods from the area you live is beneficial as they contain the immune stimulating properties needed for your body to adapt to its environment. Fresh, raw honey will also be tastier, and more potent. When you buy from local independent farmers you help your local economy. As a healing remedy, raw honey can address multiple issues. There are far more benefits of honey than I can include here but here are some of the more interesting benefits you may not know about. Honey and cinnamon can help in many areas including relief from bladder infections, arthritis, upset stomach and bad breath. It's even supposed to be able to slow down hair loss. Raw honey can be used as a medication for issues related to male impotence and female infertility. Warm raw goat milk and raw honey is believed to increase sperm count considerably. Honey is a great aid in relieving morning sickness. A salve made of honey for diabetic ulcers, has been proven effective when other topical ointments are not well tolerated. It can be applied to eczema, canker sores or bleeding gums. Honey and apple cider vinegar can be used for many ailments like stomach aches, constipation and even migraines. Honey and lemon goes to work in the body shifting the extra fat stores, thus making it usable energy for regular body functions. Honey is cholesterol-free and can reportedly help keep cholesterol levels in check.


text:
Hanover gets a Hilton hotel
Sugar Mizzy December 2, 2021
At the turn of the year Hanover's hotel industry is getting a prominent addition. For the first time, the US luxury brand Hilton will offer its regular customers an offer in the city. The traditional Edelhotel Schweizerhof at the main train station is moving from Crowne-Plaza to Hilton.
Doubletree by Hilton Bald in Hanover
Managing director Klaus-Peter Röding will only announce the details in January. But he confirms: "It's true, as of January we will be a double tree-by-Hilton hotel." The Hilton subsidiary – it has only been represented in Europe since 2007 – now has more than 600 hotels around the world.
The industry is focusing more and more on big names, because in particular they are brand-loyal. In addition, chains such as Hilton, Mariott or Accor often bring additional events to their locations, such as meetings and congresses.
Accor, Mariott, Interconti, Hilton: Large chains in Hanover
Hanover has so far been regarded as a location reserved by Accor. The French provider includes, for example, Ibis, Mercure and Novotel. The world's largest hotel chain in terms of sales, Marriott from the USA, is represented with the Courtyard on Lake Maschsee. The Intercontinental Hotel Group (IHG) from England, the world's largest chain in terms of rooms, was previously represented up to the Crowne Plaza. Now Hilton enters the game.
Founded in Texas in 1919 and also present in Europe since 1955, the name Hilton stands for upper-class luxury. Legend has it that it was the first chain to offer guests TVs in their rooms and telephones with direct dialing.
That was in 2006: the Swiss national team stayed at the hotel on Hinüberstrasse for the World Cup – no wonder, given the name "Schweizerhof".
Source: Nancy Heusel (archive)
Hilton is currently expanding rapidly in Europe. In Hanover's hotel industry, it is an open secret that the company spent months in 2020 for a contract for the former Maritim Grand Hotel opposite the New Town Hall, which is currently under renovation. The price demands of the owners Intown / Linaeo from Berlin are said to have been so outrageous that they turned away.
A central address has now been found in the Schweizerhof. The hotel will remain independent, but will operate under a new name from January. "We believe that Doubletree by Hilton fits in very well with Hanover and with us," says Schweizerhof director Röding.
Schweizerhof one of the best addresses in town
The four-star Schweizerhof on Hinüberstrasse next to the Specialized Court Center is one of the best-run hotels in Hanover. Founded in 1983 as a private hotel, it is still owned by Hanoverian partner families. In 1995 the hotel was expanded from 115 to 200 rooms. At that time, the hotel joined the Intercontinental Group and first operated as the Forum Hotel, and from 2004 onwards as the Crowne Plaza. From 2022, the Doubletree-by-Hilton logo will adorn the facade.
Overall, there is strong cut-throat competition on the Hanover hotel market. In the coming years, up to 20 additional hotels with more than 2000 beds are to be built. How many of the plans will be implemented after Corona is open. The Motel-One opposite the opera will open shortly. The Me-and-all-Hotel am Aegi and the NH-Hotel am Klagesmarkt have recently been added.
From Conrad von Meding
GREECE /
Hannover 96: For more league goals! Christoph Dabrowski tickles millions-Maxi Beier – 2nd Bundesliga
E-fraud in Greece is three times higher than in the EU
Coronavirus in Greece: 18,869 new cases and 81 deaths in 24 hours – 688 survivors
‹ Mysterious poems appear in Prague. They are picked up by a woman who wants to pull people out of gray	› Athens hosted the Christmas Factory


Video footage related to the infamous Gardner Museum heist may shed light on a case that has remained unsolved for 25 years.
Federal investigators released previously-unseen surveillance footage related to the Isabella Stewart Gardner Museum burglary that resulted in the theft of $500 million in art, the largest heist in art history.
The video captured activity at the museum 24 hours before the theft took place. In it, an unidentified man exits a car matching the general description of the vehicle parked outside of the museum minutes before the theft.
This unidentified man exits the vehicle and is allowed into the museum through a side door by the security guard. The footage's timestamp shows this occurred at 12:49 a.m. on March 17, 1990.
On the morning of March 18, 1990, two white men dressed as Boston Police officers gained entry to the museum by telling the security guard they were responding to reports of a disturbance. Against museum policies, the guard allowed them in. The thieves then subdued the on-duty security guards, handcuffed them and took them to separate areas of the museum's basement.
The FBI says the men did not use weapons, the museum's panic button was not activated and the police were not notified. Along with the stolen artwork, the men stole the surveillance footage from that evening, but not the prior night.
United States Attorney Carmen Ortiz explained that the video was released as part of an exhaustive re-examination of the available evidence.
"Today we are releasing video images from the night before the theft — images which have not previously been seen by the public — with the hope of identifying an unauthorized visitor to the museum," said Ortiz in a written statement.
Among the 13 stolen items were works by Vermeer, Degas, Manet and three works by Rembrandt – including "The Storm on the Sea of Galilee," his only seascape painting. To add insult to injury, the thieves cut the Rembrandt painting out of the frame when stealing it.
Rembrandt Christ in "The Storm on the Lake of Galilee" by Rembrandt – www.gardnermuseum.org. Picture licensed under Public Domain via Wikimedia Commons.
"With the public's help, we may be able to develop new information that could lead to the recovery of these invaluable works of art," said Ortiz.
The focus of the investigation has shifted to recovering the art. Two years ago, the FBI suggested it knew who stole the artwork, but no one was ever charged. In a recent report, as described by The Guardian, the FBI is claiming that the suspects are likely deceased.
Anyone who might have information related to the video is encouraged to call the FBI at 617-742-5533 or the Gardner Museum at 617-278-5114.


The conflict between the PKK and the Turkish military forces has been going on since 1984 with over 40,000 people having lost their lives.
14. juulil 2015 sõlmisid Iraan ja P5+1 riigid koos Euroopa Liiduga lõpliku tuumakokkuleppe ehk ühise tegevuskava. Iraan on potentsiaalselt taasavanemas nii majanduslikult kui ka diplomaatiliselt.
How was the great empire transformed into a nation-state playing by the rules of international relations? Read here!
Taiwani presidendi Ma Yingjiu valitsemise ajal on Hiina-Taiwani suhted soojenenud. Aga miks ja mis saab edasi?
Teise parlamendi üldvalimiste eel on paslik küsida, kellele on birmalastel loota reaalsete elujärge parandavate reformide ellukutsumisel. Vastus võib leiduda Birma kodanikuühiskonna arengutes.
The region of Asia-Pacific is a vast and unimaginably complicated area. At the same time, as suggested, Estonia's prospective benefits from multi-vector enhanced cooperation with Asia-Pacific are enormous. This material is an attempt to respond to a number of strategy-driven challenges in terms of interconnectedness between Europe and the far away. It also reflects on a hope to generate a fruitful discussion on the tactics Estonia should adopt while interacting with existing and prospective partners in Asia-Pacific.


text:
'Cryptocurrency fantasy is over'
Will bitcoin ever bounce back? gettyimagesbank
Atulya Sarin
The price of bitcoin, the world's most popular cryptocurrency, was next to zero in 2009 but soared to near $20,000 at the end of 2017, only to crash back to the mid-$3,000 level this year. What's next?
Three experts contacted by The Korea Times said they believe the future of cryptocurrencies is bleak and the value of most "coins" will most likely go back to where they started ― zero.
"Bitcoin is no longer a new technology ― it has been around for a decade ― and still there is no use case for it," Atulya Sarin, a finance professor at Santa Clara University in the United States, said. "Primarily all we do with bitcoin is that we trade it. That is awfully similar to tulips and Beanie Babies in their heydays ― and we all know what happened to them. So it is a not a question of if, but more a question of when bitcoin will go to zero."
Kevin Dowd, a finance and economics professor in the Business School at Durham University in the United Kingdom, also reckons most cryptocurrencies are in a bubble.
"Many are scams, others are already dead," he said. "I believe bitcoin will eventually go to zero and so too will many bitcoin look-alikes. So the question is, what will survive? Ripple looks dodgy, so I don't think that will last either."
Bitcoin has had a wild ride since its birth on Jan. 3, 2009. It was created as "alternative money" that would avoid government regulations and offer individual liberty in the financial industry.
Warren Buffett: Bitcoin is a 'delusion'
2019-02-26 16:50 | Economy
Many economists warned of the great risks of bitcoin and its copycats, but many welcomed them with open arms. Its value skyrocketed ― sometimes gaining $2,500 in just a single day ― to, at one point, stand at almost $20,000.
But scammers soon poured into the market, regulators started to intervene and a growing number of investors began to lose hope in cryptocurrencies. On Jan. 31, bitcoin was worth $3,497 a coin, according to Coin Market Cap, a popular data source for price changes in crypto assets.
Andrew Sheng
Many people now are wondering whether bitcoin will ever bounce back. But Andrew Sheng, a distinguished fellow at the University of Hong Kong's Asia Global Institute and former chairman of the Hong Kong Securities and Futures Commission, is skeptical about the prospects.
"Cryptocurrencies operate on the belief that the currency can be created through technology, such as blockchain that is uncrackable, and therefore the currency is limited in production, has value and its value is determined by the belief that using the currency would avoid third-party knowledge of the transaction, especially taxation, foreign exchange controls and anti-money laundering," he said.
"In practice, even if it is difficult, there is no system that is not crackable. Second, who is to judge that what is promised (such as undecipherable by another party) is true. In other words, who verifies that the software promised is truly blockchain, other than the claim of the supplier?"
Under such circumstances, he noted, many cyber currencies are scams designed only to fool gullible investors.
Sheng thinks some cryptocurrencies may survive, but inevitably, if there are major scams or investor losses, they will be subject to regulation.
"The world is experiencing a fantasy with cryptocurrencies and very soon reality will set in and the valuation will fall back to a stable level," he said. "Where that level is, no one knows. For ordinary retail investors, I would not recommend investing your pension savings in such cryptocurrencies. The value of the holdings depends on finding the next buyer. In a falling market, there may be fewer and fewer buyers … So, buyers beware. The state cannot protect individuals from their own greed."


text:
WND Birther Hypocrisy Watch
You gotta love the sheer audaciousness of WorldNetDaily's hypocrisy.
After demanding that Hawaii hospitals violate federal privacy laws by opening up so that WND can rifle through them to find out if Barack Obama was born there, WND's Jerome Corsi accuses Hawaii state health director Chiyome Fukino of speaking "in apparent contravention of Hawaiian law" by making a statement about Obama's birth certificate because "Hawaii law prohibited her from commenting on the birth records of any specific person."
So, which is it, WND? Do you want people to violate privacy laws or not? Or is it only acceptable when the violation forwards Joseph Farah's anti-Obama agenda (which Fukino's statement did not)?
Updated: Wednesday, July 29, 2009 12:02 PM EDT
Joseph Farah's Birther Lie of the Day
Joseph Farah writes in his July 29 WorldNetDaily column regarding Barack Obama's birth: "Who are the two U.S. citizen parents to whom he was born – an absolute requirement to be a 'natural born citizen' circa 1961?"
In fact, it's not. As the Farah-founded Western Journalism Center detailed:
Orly Taitz asserts that "to be president there have to be two parents who are citizens." This is false. Here is Blackstone's classic exposition in 1765 of the legal meaning of the term from the Commentaries on the Laws of England.
William Blackstone, Commentaries 1: 354 361–62
Natural-born subjects are such as are born within the dominions of the crown of England, that is, within the ligeance, or as it is generally called, the allegiance of the king; and aliens, such as are born out of it…all children, born out of the king's ligeance [i.e on foreign soil], whose fatherswere natural-born subjects, are now natural-born subjects themselves, to all intents and purposes, without any exception; unless their said fathers were attainted, or banished beyond sea, for high treason; or were then in the service of a prince at enmity with Great Britain." [The italics are Blackstone's]
Blackstone explicitly grounds natural-born status on location (jus soli), not parentage, except when the child is born abroad. The notion that both parents have to be citizens is false. All children born on American soil are natural-born subjects or citizens.
Given that Farah has provided no credible evidence that Obama was not born in the U.S., this is not an issue.
Consider this to be just another birther lie from Farah and Co.
Farah adds: "But clearly, this is not a left-right issue. This is not a conservative-liberal issue. This is not a Democrat-Republican issue. This is not an ideological issue. This is a matter of what's true and what's not." We know how Farah and WND rate on that last statement.
Updated: Wednesday, July 29, 2009 11:45 AM EDT
Brent Baker's Obama Beer Smear
Brent Baker, in a July 28 NewsBusters post, complains about NBC's "cutesy take" on the upcoming mutual beer-drinking session with President Obama, Henry Louis Gates and the policeman who arrested Gates -- but gets too cute himself in baselessly portraying Obama as an effete.
AFter noting the beer preferences of Gates and the policeman, Baker adds: "Or maybe the President prefers wine over beer and is just agreeing to beer in a political effort to re-connect with blue-collar voters he offended."
In fact, Obama is on record as drinking Budweiser. But mentioning that didn't fit in with Baker's need to smear Obama.
Right-Wingers Defend Racial Profiling
Topic: Horowitz
Right-wingers are trying to score political points in the controversy over the arrest of Harvard professor Henry Louis Gates and President Obama's remarks on it: by seeking to justify racial profiling.
In a July 23 Newsmax column, Ronald Kessler wrote:
Then Obama cited the history of blacks and Hispanics "being stopped by law enforcement disproportionately . . . and even when there are honest misunderstandings, the fact that blacks and Hispanics are picked up more frequently, and often time for no cause, casts suspicion even when there is good cause."
In saying that, Obama ignored the unfortunate fact that blacks account for four times more violent crimes than people of other races.
Then, in a July 23 appearance on Glenn Beck's Fox News show, David Horowitz responded to complaints by Beck's black crew members about racial profiling by saying: "If he's on the New Jersey Turnpike or in that area, 70 percent of the drug dealers are black. And who do you think they're dealing the drugs to? Poor blacks in the -- in Newark, in the inner cities there. So the fact that they stopped him -- I mean, it's an inconvenience. I have an inconvenience. I get searched every single time every time I jump a plane -- take a plane because I have an artificial hip, but I put up with it."
David Swindle reiterated and sycophantically defended Horowitz's remarks in a July 25 post at the (Horowitz-operated) NewsReal blog:
In explaining why it might be appropriate to search an African-American man's truck when he gets pulled over Horowitz threw out something Media Matters doesn't want people to think about: a high percentage of drug dealers in the New York-New Jersey area were black and were making money addicting young blacks to drugs.
This isn't a "racist" point. He's not saying that blacks are ethnically inclined to be drug dealers. Horowitz has black family members and has been a civil rights activist for his entire life. He's primarily concerned with seeing that black children grow up in a safe environment so they too can participate in the American Dream. And part of that means confronting the criminals that are standing in the way of that pursuit.
Are Kessler, Horowitz and Swindle really claiming that racial profiling is not racist? And Horowitz having "black family members" somehow give him a free pass to advocate racial profiling? It appears so.
Posted by Terry K. at 1:43 AM EDT
Corsi Still Can't Stop Peddling Bogus Obama Attacks
WorldNetDaily originally reported that the birth certificate released by Barack Obama's campaign is authentic. Even WND editor Joseph Farah, after months of lying about what WND originally reported, has finally conceded that he believes it's authentic.
So why is Jerome Corsi, in a July 28 WND article, referring to "Obama's purported short-form certificate"? He offers no evidence that is anything but authentic -- and any such evidence would contradict what his own news organization has reported.
The only possible conclusion is that Corsi cares nothing about reporting facts. But we already know that.
UPDATE: If WND and Farah (if not Corsi) have concluded that the certificate is authentic, why did it just post a video -- liftclaiming that it isn't? The video itself -- anonymously posted on YouTube-- contains a major factual error, claiming that "there's not even a hint of a [raised] seal" on the certificate released by the Obama campaign. In fact, it contains a raised seal.
Could it be that Farah was lying when he said he believed the certificate is authentic? It appears so -- just another lie he and WND have told.
Updated: Wednesday, July 29, 2009 1:18 AM EDT
Media Matters' Simon Maloy catches Clay Waters making the claim, in a July 27 NewsBusters post and TimesWatch item, that the New York Times had dismissed the birthers as conspiracy theorists, but couldn't bring themselves to do the same for the 9/11 Truthers, to whom the paper showed "respect," citing a 2006 Times article in which the writer "not once ... dismiss the 9-11 Truthers bizarre charge as a "conspiracy theory," as the Times article on the birthers did. Waters somehow overlooked the word "conspiracy" in the headline of that truther article, or that its overall tone was hardly "respectful."
UPDATE: Media Matters' Jamison Foser catches MRC director of communicaions Seton Motley, in a July 28 NewsBusters post, responding to New York Times columnist Paul Krugman's assertion that a new auto plant in Canada won't result in additional costs to the government under its nationalized health care system by asserting, "Really? Adding workers brought in from outside Canada to the government rolls won't increase government spending?" Yes, really, since nobody said anything about bringing in workers "from outside Canada."
Posted by Terry K. at 5:45 PM EDT
WND Letter to Obama Contains Falsehood
WorldNetDaily just can't stop lying about President Obama's birth certificate.
WND is now offering its readers the chance to send "personalized letters to Obama demanding the birth certificate and other pertinent documents" that WND will then send to the White House -- for the low, low price of just $6.95 (you didn't think that WND wouldn't try to shake down its readers again, did you?). But even the text of that letter contains a lie:
The problem with the short-form certification is that it could easily be obtained for a birth that took place out of the state or out of the country. All it would take is the word of one parent.
In fact, as the Joseph Farah-founded Western Journalism Center pointed out, there is no evidence that Hawaii issues birth certificates "for a birth that took place out of the state or out of the country" that claim the person was born in Hawaii.
If WND can't prove that this happens -- and it hasn't so far -- this issue is irrelevant, and the letter is irrelevant ... and this is just another lie from WorldNetDaily.
WJC Peddles More Birther Lies, Distortions
Topic: Western Journalism Center
A July 27 email by the Western Journalism Center, sent to the WorldNetDaily mailing list, contains a whole new crop of distortions and falsehoods.
The email asserts that "no amount of ridicule will change the fact that close a a half-million people have signed petitions calling on Barack Hussein Obama to release his birth certificate." Actually, the WJC has no way of knowing that this is a "fact." As we've detailed, WorldNetDaily -- whose petition the WJC is presumably referring to -- has never released the signatures of the signees, making it impossible to verify the number of valid signatures (WND's count at this writing, by the way, is a lot closer to 400,000 than "a half-million"). Further, WND has no apparent mechanism to prevent multiple signatures by the same person, making that count even more unreliable.
The email also claimed that "no amount of name-calling can change the fact that 58% of respondents to an AOL on-line poll said that Obama should produce his actual birth certificate." True, perhaps, but irrelevant -- online opt-in polls are not a reliable indicator of public opinion. The email adds that "49.3% of the respondents to a scientific Wenzel poll found the question to be legitimate." But as we've noted, WorldNetDaily commissioned that poll -- the questions for which were skewed to get the answers WND wanted -- and Wenzel Strategies, headed by a former conservative newspaper columnist who later worked for a Republican congresswoman, has a clear bias.
The email goes on to assert that "Obama's paternal grandmother said, she was present at Obama's birth, which took place in Mombasa in what is now Kenya." That's false -- WJC is relying on a translation error to make that claim.
The email also asserts, "Obama's mother was only 19-years old when Obama was born... she was much too young to bestow her citizenship on him for the purpose of satisfying Article 2, Section 1 of the Constitution." Also false. As we've detailed, if Obama was born in Hawaii -- WJC offers no credible evidence to the contrary -- that's irrelevant. Further, according to the Chicago Tribune, the timetable at the time Obama was born for a parent to confer U.S. citizenship upon a child born outside of the U.S. (again, which WJC has not proven about Obama) was being a citizen for 10 years including five years past the age of 14; Stanley Ann Dunham was three months short of her 19th birthday when Obama was born (not exactly "much too young"). But federal law shortened that time period to two year after the age of 14 and made it retroactive to 1952. That makes Obama doubly covered.
The WJC also makes a big deal out of how "the State of Hawaii does not accept the Certification of Live Birth as singular proof that an individual was actually born in Hawaii" for the Home Lands program. Again, true but irrelevant. The Home Lands is exclusively for those of "native Hawaiian" ancestry, which Obama has never claimed to be, so it wouldn't matter if he failed to meet the birth requirement for that program.
Updated: Tuesday, July 28, 2009 1:04 PM EDT
Farah: WND The Only 'Free Press' Left In America
Joseph Farah howls in a July 27 WorldNetDaily column about the mainstream media coverage of the Obama birth certificate conspiracy:
We don't have a free press left in America – aside from the one you're reading. What we have is an official press – one that doesn't want any rogue journalists rocking the boat, challenging authority and watchdogging government at all levels.
This story isn't dead at all.
And that's what scares the management of CNN, the New York Times, the Associated Press and other Big Media who only recently were forced to cover this story at all through the sheer tenacity of WND, which has chronicled it tirelessly for 11 months.
So WND is the only "free press" left in America because it's promoting the birthers? Please.
Telling lies about Obama and portraying discredited claims as fact are not the same thing as "watchdogging government." Farah was never as concerned about George W. Bush's National Guard record as it is about the Obama birth certificate -- indeed, WND appears to care about government watchdogging only during Democratic administrations.
Hiding the truth from its readers because it conflicts with your political agenda is not the act of a "free press" -- it's an act of disrespect and dishonor to readers and dishonesty in journalism.
The only reason the story isn't "dead" in Farah's eyes is because he and WND peddle lies to keep it alive.
Farah also asserts of the "Big Media": "They're losing what little credibility they had left." But what credibility does WND have? None that we can tell, given that it's so determined to hound Obama from office that the truth no longer matters, if it ever did.
Farah concludes by whining: "It's not the story that's dead. Instead, what you're hearing is the sound of the Big Media watching their own funeral." Yeah, keep telling yourself that, Joe, as more of the public catches on to the lies you and WND have been spewing. Then we'll see which media outlet will be six feet under.
Hint: It won't be the "Big Media."
New Article: WorldNetDaily's Obama Birth Certificate Lies
Numerous claims have been discredited, but WND pretends they never were, deceiving its readers and making a mockery of journalism. Read more >>
Will WND Treat Coulter Like Gates?
Since the incident involving Harvard professor Henry Louis Gates and local police -- and, specifically, after President Obama commented on it -- WorldNetDaily's Aaron Klein has engaged in a near-constant effort to smear and discredit Gates as an extremist and tie him around Obama's neck.
Klein has written no fewer than five articles on Gates, tying him to "radical black activists" and even denigrating pioneering black scholar W.E.B. Du Bois, whose namesake institute at Harvard Gates heads, as little more than "an avowed communist and also a socialist sympathizer." Klein even dredges up a 1996 speech in which Gates "uses the N-word."
Such smear jobs are what WorldNetDaily does to people who run afoul of its far-right, anti-Obama ideology.
By contrast, right-wing pundit (and WND columnist) Ann Coulter ran afoul of WND's ideology as well by declaring CNN's Lou Dobbs to be "wrong on this issue" on Obama's birth, pointed out "every conservative publication ... dealt with this" a year ago "and said there's nothing to it," and, even more shockingly, that the birth certificate conspiracy is an issue only to "a few cranks out there" -- and is not receiving the same treatment being meted out to Gates.
WND offers only an outside link to Coulter's comments, no transcription of them, and a poll that couches criticism of Coulter in an unsually (for WND) respectful way. The current top answer is "I usually agree with Coulter, but she is dead wrong on this issue."
Therefore, we call on Aaron Klein or anyone else at WND to start smearing Coulter like they are Gates. It's only fair, after all.
Obama Derangement Syndrome Watch
Topic: Newsmax
Even to allow Obama's socialist programs a mere toe in the water could prove to be too late. These programs are like flypaper or unspeakable social disease. The elevator to the hell of a Marxist society goes in only one direction – ever higher into costs taken from appropriations of individuals' earned incomes.
It won't be enough for Republicans just to be "the party of no" and stop there. They will also have to propose national alternatives that begin all over again where Barack Obama first seduced America into his leftward-spiraling, all-consuming maelstrom of latter-day Marxism.
If they fail, this nation will be down on its hands and knees for decades, scouring floors in an Augean stable where no one-time sluice will suffice to eradicate the bacilli of socialism from forever attempting a comeback.
-- John L. Perry, July 27 Newsmax column
Cliff Kincaid's Conspiracy Du Jour
Topic: Accuracy in Media
The headline on Cliff Kincaid's July 23 Accuracy in Media column pretty much says it all: "The Chavez-Obama U.N. Plot Against Honduras."
Yep, Kincaid has found another consipracy to latch onto.
Kincaid claims there is an "Chavez-Obama axis" and suggests that "Obama Administration is, in effect, acting as an agent of Venezuela (and Iran) in Honduras." His main source for this conspiracy? Tom Hayden -- or, as Kincaid describes him, "former Marxist SDS radical Tom Hayden."
Kincaid has suddenly found a left-winger's words to be trustworthy. And we thought commies couldn't be trusted.
Newsmax Deletes Columnist's Criticism of Morris
In the Washington Times version of his column, Arnaud de Borchgrave criticizes wild attacks on President Obama:
President Obama is now a card-carrying socialist or borderline Marxist. He is the Manchurian Candidate. He was not born in the United States. He never produced a birth certificate. And now this closet neo-Marxist is plotting the revenge of those defeated in the Cold War. Therefore, he should be impeached and removed from office because his plan is to place America in a government-owned straitjacket.
It's vicious stuff. One of the vociferous voices is that of Dick Morris, who moved from the liberal camp under President Clinton to the hard right with his new book, "Catastrophe," which is what Mr. Obama has wrought for America.
In the version of de Borchgrave's column that appears at Newsmax -- a huge promoter of Morris that is currently giving away copies of "Catastrophe" with new subscriptions to its magazine -- that entire paragraph on Morris has been removed.
Newsmax did leave in a later statement by de Borchgrave quoting Morris. But it's not as explicitly judgmental as the one Newsmax excised.
WND's Klein Tries to Gin Up Non-Existent Obama Conspiracy
How desperate is Aaron Klein to smear Obama? The latest example: trying to create another bogus conspiracy.
In a July 26 WorldNetDaily article, Klein insists that "speculation abounds over the genesis of the press conference inquiry last week by Lynn Sweet of the Chicago Sun-Times, whose question about Harvard professor Henry Louis Gates Jr. prompted a national race scandal involving President Obama." Despire asserting that "several blogs" Klein names only two -- something called "The Real Barack Obama," whose credibilty Klein does not establish, and right-wing radio host John Batchelor.
But this is an echo chamber: Batchelor cites "The Real Barack Obama." So really, "several" is more like one blog quoted by another blog. Further, Klein fails to disclose his relationship with Batchelor; not only has made numerous appearances on Batchelor's radio show enough so that he considers Batchelor a "friend," he tweeted that he was appearing on the show the very same day this article was published.
The Real Barack Obama has also promoted Klein and prominently touts Batchelor's show, so the echo chamber appears to be even smaller than we thought.
For all this mutual back-scratching, Klein presents no actual evidence that, as he claims, "the White House may have coordinated the question" with Sweet.Here's what he tries to pass off as evidence:
"This was the first time Sweet was granted a question from Obama at any of his presidential press conferences."
"Asking a question about Gates at an event focused on health care seems remote to some. "
"Her question was read from a piece of paper."
Apparently, Klein has never written down questions before asking them in a interview.
Klein couldn't be bothered to note Sweet's denial of the charge until the 16th paragraph, after getting some of that baseless speculation out of the way. But a flat denial was not enough for Klein:
Her explanation, however, has only generated more unanswered questions for the bloggers' speculation. If she had never written about the Gates incident, for example, why did she use her one question to Obama on the matter?
Klein then insisted: "In another twist in the plot, the White House's Gibbs refused an opportunity to deny Sweet's question was not preplanned with the White House." But the excerpt Klein provides shows that Gibbs was not asked whether Sweet's question was "preplanned with the White House"; he was asked whether the Gates matter was discussed in preparation for the press conference, which is not the same thing.
Klein, in trying to smear both Obama and Sweet, demonstrates himself to be as dishonest a reporter as ever. After all, he's still peddling the discredited lie that Obama could not have visited Pakistan on a U.S. passport.


text:
'Peter Pan & Wendy' Star Alexander Molony Signs with Atlas Artists
Taylor Schilling Signs With WME
By Denise Petski
Denise Petski
Senior Managing Editor
More Stories By Denise
February 19, 2019 9:20am
Shutterstock/WME
EXCLUSIVE: Orange is the New Black star Taylor Schilling has signed with WME for representation in all areas.
Schilling has earned both Emmy and Golden Globe nominations for her role as Piper Chapman in Netflix's critically praised series Orange is the New Black. She has starred in the series for six seasons and will reprise her role in the seventh and final season set to be released this year.
On the film side, Schilling can currently be seen in the Orion Pictures horror thriller, The Prodigy. Up next, she executive produces and stars in Family, which initially premiered at SXSW and will release theatrically this spring. In the film, Schilling plays a workaholic hedge fund exec who must save her 12-year-old niece, played by newcomer Bryn Vale, who runs away to become a "juggalo" — a superfan of the group Insane Clown Posse.
She is also set to star opposite Alec Baldwin in The Public, which initially premiered at TIFF and will release theatrically this April.
Schilling continues to be repped by 3 Arts Entertainment and Stone Genow.
Netflix Stock Gets Pummeled, Closing At Lowest Level Since April 2020 After Disappointing Earnings & Wall Street Downgrades - Update
'Peter Pan & Wendy' Star Alexander Molony Signs with Atlas Artists
AFL-CIO's Department For Professional Employees Urges Congress To Approve Increased Funding For The Arts & Public Broadcasting
Sofia Vergara Signs With CAA


Unscrew the two torx #8 screws holding the mouse button in place.
Then slide the button out.
Unscrew the last torx #8 screw holding the trackpad assembly in place.
Now the entire trackpad will lift out of place.
Disconnect all ribbon cables by pulling them up and out of their connectors.