Sad fact: The ingredient list on your customer's frozen lunch is a more interesting read than your email newsletter - if your customer doesn't perceive it as valuable.What's that you say? Your emails are awesome? Of course they are - you wrote them, right?
It's time to get real. If your ezines and email newsletters aren't seen as helpful and insightful, they could be wrecking your reputation and the loyalty of your customers, rather than building them.
The real question is: How do your customers REALLY perceive your email newsletters?
1. Falling open rates. In Ace of Sales, you can track how many people are opening your email. It's not a perfect report of all opens because email opens are impossible to calculate with 100% accuracy. However, if you notice your open rates consistently dropping, chances are your recipients don't like the content you're serving up.
2. If you have to ask. If your emails are perceived as valuable, a few of your customers will occasionally report to you how much they love getting your emails and how great your information and ideas are. If you have to ask, it's because no one is reading. If you have to ask, it's because your content isn't original, helpful, and useful enough.
3. No clicks. You can also track who clicks links in your email newsletters and ezines in Ace of Sales. This is the best data to reveal that recipients like your information. Here's a test: Try including the first half of an article in your next newsletter. Then provide a link to read the "Full Article" on your blog. Whoever clicks this link is smell'n what you're cook'n and it ain't no microwaved meal!
If open rates are dropping, links are unclicked, and customers are not replying with their thank-you's, it may be time to reassess your content and take it up a notch.


Audi S3, solves all problems.
I'm driving a 1.8, I'm 23 and it's costing me a little over a grand a year in insurance. Stay away from these large engines!
It depends how much you earn and how much it will cost, no?
18 years old on a car like that? I'm guessing Daddy's paying!
Well use price comparison sites, phone insurers, and look at your income. That should give you a reasonable idea.
MG never made a 1.4 BGT. They made a 1.8 and a 3.5 version.
The 3.5 is actually the more economical engine as it is far better designed and understressed.
That, and I don't like 4 cylinder powered cars. It's 6 cylinders as a minimum for me, although i'll make the odd exception for a Volvo 5 pot.
Either that was on your parents' insurance, you live in the safest postcode in the UK or you were 18 in about 1990! Am I right?!
Never tried an audi 5 pot. I had a Volvo with a 5 pot a while back and they aint that bad.
Bit like a V8 in terms of power delivery - they dont really like to rev that high and it's all about low down grunt.
You have to love the low end torque-y gurgle. Do you know of any classic car insurance companies that will take a 19-20 year old? They only ones I can find want a 21 or 25 year old.
Adrian Flux, Footman James, Lancaster, Peter Best ?
Been with all these except the last one over the years. Think Lancaster will do you a quick quote with a guarenteed price before you start asking too many questions.
Footman James no longer does under 25, even as a named driver.
PBI, if you are under 25 the car in question needs to be below 2.0l otherwise for a Jag E-Type the insurance for a 21 year old female with a clean driving record goes into the £2000 range.
I ran a 3.5 V8 when I was that age. Nothing's changed, 'cept there's more of 'em sat outside.
Drive what you like - if you want something badly enough you'll work hard until you get it. Besides, 2 litres is tiny in real terms anyway.
Other people like me live in the worst and most deprived London boroughs where I've witness car robberies at first hand and vandalization.
LMAO, do you ever engage your brain before posting this crap?
I have a 2 bedroom semi in Alfreton, Derbyshire. I'm less than a mile from the M1! The middle of nowhere it certainly isn't!
Back under your bridge, please, troll.
Did you read the first message in the thread?
Please keep your lousy opinions to yourself if you don't have anything constructive to say.
Just to make it clear to people with nothing better to do in order to get rid of messages like I just quoted. No - daddy's not paying.
I have to pay for the car and insurance my self, and that's why I want to get something which will satisfy me and won't cost me my summer-working.
I realised 2.0 litres is a lot after failling to find a proper insurance.
Currently looking at Ford Focus. Not too ugly...and it's insurance group is resonably low.
Any one know any sedans with smaller engines in lower insurance groups. I was looking at old civics but they don't seem easy to insure either.
Here comes the trolls... don't argue with idiots.
Well let us asume that there is only one option. 2 more cars in my family. Both parents drive. What are my chances.
PS I am a British national.
Nothing there really applies to my lighthearted comment, so try not to get too touchy, eh? I was just rather incredulous that anyone would want to spend so much on insurance if they were paying it for themselves. Better option is to get a smaller engined car for a year or two and get the no claims.
I just hate when people decide for myself. No worries.
Fair play - sorry for the bother.
Norwegian with a BA-degree in social work/CPS looking for advice/suggestions.


ArtScience Museum opens up All Possible Paths with tons of Instagram-worthy moments!
ArtScience Museum opens up All Possible Paths with tons of photo opportunities!
ArtScience Museum has launched a brand new exhibition, All Possible Paths: Richard Feynman's Curious Life. The exhibition marks the centenary and remarkable achievements of Nobel Laureate, Richard Feynman. All Possible Paths is curated and produced by ArtScience Museum and will run till 3 March 2019.
One of the most influential physicists of the 20th century, Feynman was known for his work in quantum mechanics – the basis of modern physics. His achievements laid the grounds for modern science and many technological advances such as lasers and global positioning systems (GPS). Feynman was also known as the "Great Explainer" with his creative approach to problem solving, unconventional perspective, and his ability to synthesise and explain complex scientific knowledge.
The exhibition underscores Feynman's curious nature and creative thinking which drove him to explore many possibilities in life, including art and music. Visitors will have the opportunity to get to know Feynman through a collection of over 70 personal letters, papers, artefacts, photographs, his famous bongo drums, and his original paintings. It is the first time that this collection is exhibited outside of the United States.
On top of an educational journey, a ton of unique photo-opportunities await you at the exhibition too! Here are the highlights!
::vtol:: aka Dmitry Morozov is a trans-disciplinary artist and researcher based in Moscow. His contribution to the exhibition, wave is my nature, involving the use of sound and robotics, is a manifestation of Feynman's theory, Quantum Electrodynamics. The LED strips in this installation move in wave-like patterns, creating unique 'light paths' in space, demonstrating the movement of particles as they take 'all possible paths' while moving from one point to another.
Once you're done appreciating the installation, play with the low light and silhouettes. You'll be surprised by the interesting and unique photos your create!
Co-commissioned by ArtScience Museum and the Centre for Quantum Technologies, Quantum is a responsive laser light installation inspired by quantum computing. Quantum is set in a pitch black room and was created by Jun Ong, a Kuala Lumpur-based light artist.
Smokey and exciting, we found this installation exceptionally great for Instastories and Boomerangs to pique the curiosity of your social media followers.
Quark IV is an enthralling mixed media installation created by Eiji Sumi, a Japanese artist based in Bangkok. Suspended in air, the light reflecting off particles in Quark IV creates both controlled and unpredictable patterns of movement. It also echoes the scientific exploration that led to the understanding of the proton's structure. Perhaps this is how Feynman first imagined the internal structure of the proton?
Quark IV was our personal favourite Instagram spot of the exhibition. With the endless combination of angles and colours to play with, we were more than satisfied with hundreds of intriguing photos and Boomerangs to choose from.
The first section of the All Possible Paths: Richard Feynman's Curious Life exhibition provides a fascinating insight into Feynman's world and his quirkiness through 72 unique artefacts. This includes personal letters, family photographs, his bongos, his own paintings, and a recreation of the van he used to drive.
Let your imagination run wild and you'll never run out of photo-opportunities here. Be inspired by Feynman's unorthodox research methods and creative thinking – it's time to step out of the box and take some unconventional yet equally aesthetic photos!
For more information on the All Possible Paths: Richard Feynman's Curious Life exhibition, be sure to check out ArtScience Museum's website.
Singapore International Film Festival 2018: 10 Films & Stars You Wouldn't Want to Miss!


Scores 29 Highway MPG and 22 City MPG! This Subaru Forester boasts a Regular Unleaded H-4 2.5 L/152 engine powering this Manual transmission.
According to Carfax's history report: 22 Service Records.
You've earned this- stop by Richard Lucas Chevy Subaru located at 1077 Route 1 South, Avenel, NJ 07001 to make this car yours today!


text:
[jvm]
Content
open override fun [getAnnotations](get-annotations.md)(): [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)<[Annotation](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-annotation/index.html)>

redpajama_set_name: RedPajamaGithub


text:
\echo Use "CREATE EXTENSION cdb_dataservices_client" to load this file. \quit
--
-- Geocoder server connection config
--
-- The purpose of this function is provide to the PL/Proxy functions
-- the connection string needed to connect with the server

CREATE OR REPLACE FUNCTION cdb_dataservices_client._server_conn_str()
RETURNS text AS $$
DECLARE
  db_connection_str text;
BEGIN
  SELECT cartodb.cdb_conf_getconf('geocoder_server_config')->'connection_str' INTO db_connection_str;
  SELECT trim(both '"' FROM db_connection_str) INTO db_connection_str;
  RETURN db_connection_str;
END;
$$ LANGUAGE 'plpgsql';CREATE TYPE cdb_dataservices_client._entity_config AS (
    username text,
    organization_name text
);

--
-- Get entity config function
--
-- The purpose of this function is to retrieve the username and organization name from
-- a) schema where he/her is the owner in case is an organization user
-- b) entity_name from the cdb_conf database in case is a non organization user
CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_entity_config()
RETURNS record AS $$
DECLARE
    result cdb_dataservices_client._entity_config;
    is_organization boolean;
    username text;
    organization_name text;
BEGIN
    SELECT cartodb.cdb_conf_getconf('user_config')->'is_organization' INTO is_organization;
    IF is_organization IS NULL THEN
        RAISE EXCEPTION 'User must have user configuration in the config table';
    ELSIF is_organization = TRUE THEN
        SELECT nspname
        FROM pg_namespace s
        LEFT JOIN pg_roles r ON s.nspowner = r.oid
        WHERE r.rolname = session_user INTO username;
        SELECT cartodb.cdb_conf_getconf('user_config')->>'entity_name' INTO organization_name;
    ELSE
        SELECT cartodb.cdb_conf_getconf('user_config')->>'entity_name' INTO username;
        organization_name = NULL;
    END IF;
    result.username = username;
    result.organization_name = organization_name;
    RETURN result;
END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;CREATE TYPE cdb_dataservices_client.isoline AS (
    center geometry(Geometry,4326),
    data_range integer,
    the_geom geometry(Multipolygon,4326)
);

CREATE TYPE cdb_dataservices_client.simple_route AS (
    shape geometry(LineString,4326),
    length real,
    duration integer
);--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_admin0_polygon (country_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_admin0_polygon(username, orgname, country_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_admin1_polygon (admin1_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_admin1_polygon (admin1_name text, country_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name, country_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_namedplace_point (city_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_namedplace_point(username, orgname, city_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_namedplace_point (city_name text, country_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_namedplace_point(username, orgname, city_name, country_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_namedplace_point (city_name text, admin1_name text, country_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_namedplace_point(username, orgname, city_name, admin1_name, country_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_postalcode_polygon (postal_code text, country_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_postalcode_polygon(username, orgname, postal_code, country_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_postalcode_point (postal_code text, country_name text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_postalcode_point(username, orgname, postal_code, country_name) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_ipaddress_point (ip_address text)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_ipaddress_point(username, orgname, ip_address) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_geocode_street_point (searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_isodistance (source geometry(Geometry, 4326), mode text, range integer[], options text[] DEFAULT ARRAY[]::text[])
RETURNS SETOF cdb_dataservices_client.isoline AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._cdb_isodistance(username, orgname, source, mode, range, options);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_isochrone (source geometry(Geometry, 4326), mode text, range integer[], options text[] DEFAULT ARRAY[]::text[])
RETURNS SETOF cdb_dataservices_client.isoline AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._cdb_isochrone(username, orgname, source, mode, range, options);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.cdb_route_point_to_point (origin geometry(Point, 4326), destination geometry(Point, 4326), mode text, options text[] DEFAULT ARRAY[]::text[], units text DEFAULT 'kilometers')
RETURNS cdb_dataservices_client.simple_route AS $$
DECLARE
  ret cdb_dataservices_client.simple_route;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT * FROM cdb_dataservices_client._cdb_route_point_to_point(username, orgname, origin, destination, mode, options, units) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_get_demographic_snapshot (geom geometry(Geometry, 4326), time_span text DEFAULT NULL, geometry_level text DEFAULT NULL)
RETURNS json AS $$
DECLARE
  ret json;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_get_demographic_snapshot(username, orgname, geom, time_span, geometry_level) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_get_segment_snapshot (geom geometry(Geometry, 4326), geometry_level text DEFAULT NULL)
RETURNS json AS $$
DECLARE
  ret json;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_get_segment_snapshot(username, orgname, geom, geometry_level) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getdemographicsnapshot (geom geometry(Geometry, 4326), time_span text DEFAULT NULL, geometry_level text DEFAULT NULL)
RETURNS SETOF JSON AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_getdemographicsnapshot(username, orgname, geom, time_span, geometry_level);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getsegmentsnapshot (geom geometry(Geometry, 4326), geometry_level text DEFAULT NULL)
RETURNS SETOF JSON AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_getsegmentsnapshot(username, orgname, geom, geometry_level);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getboundary (geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getboundary(username, orgname, geom, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getboundaryid (geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL)
RETURNS text AS $$
DECLARE
  ret text;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getboundaryid(username, orgname, geom, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getboundarybyid (geometry_id text, boundary_id text, time_span text DEFAULT NULL)
RETURNS Geometry AS $$
DECLARE
  ret Geometry;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getboundarybyid(username, orgname, geometry_id, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getboundariesbygeometry (geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_getboundariesbygeometry(username, orgname, geom, boundary_id, time_span, overlap_type);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getboundariesbypointandradius (geom geometry(Geometry, 4326), radius numeric, boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_getboundariesbypointandradius(username, orgname, geom, radius, boundary_id, time_span, overlap_type);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getpointsbygeometry (geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_getpointsbygeometry(username, orgname, geom, boundary_id, time_span, overlap_type);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getpointsbypointandradius (geom geometry(Geometry, 4326), radius numeric, boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_getpointsbypointandradius(username, orgname, geom, radius, boundary_id, time_span, overlap_type);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getmeasure (geom Geometry, measure_id text, normalize text DEFAULT 'area', boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS numeric AS $$
DECLARE
  ret numeric;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getmeasure(username, orgname, geom, measure_id, normalize, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getcategory (geom Geometry, category_id text, boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS text AS $$
DECLARE
  ret text;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getcategory(username, orgname, geom, category_id, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getuscensusmeasure (geom Geometry, name text, normalize text DEFAULT 'area', boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS numeric AS $$
DECLARE
  ret numeric;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getuscensusmeasure(username, orgname, geom, name, normalize, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getuscensuscategory (geom Geometry, name text, boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS text AS $$
DECLARE
  ret text;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getuscensuscategory(username, orgname, geom, name, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getpopulation (geom Geometry, normalize text DEFAULT 'area', boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS numeric AS $$
DECLARE
  ret numeric;
  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    SELECT cdb_dataservices_client._obs_getpopulation(username, orgname, geom, normalize, boundary_id, time_span) INTO ret;
    RETURN ret;

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_search (search_term text, relevant_boundary text DEFAULT NULL)
RETURNS TABLE(id text, description text, name text, aggregate text, source text) AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_search(username, orgname, search_term, relevant_boundary);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

--
-- Public dataservices API function
--
-- These are the only ones with permissions to publicuser role
-- and should also be the only ones with SECURITY DEFINER

CREATE OR REPLACE FUNCTION cdb_dataservices_client.obs_getavailableboundaries (geom Geometry, timespan text DEFAULT NULL)
RETURNS TABLE(boundary_id text, description text, time_span text, tablename text) AS $$
DECLARE

  username text;
  orgname text;
BEGIN
  IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
    RAISE EXCEPTION 'The api_key must be provided';
  END IF;
  SELECT u, o INTO username, orgname FROM cdb_dataservices_client._cdb_entity_config() AS (u text, o text);
  -- JSON value stored "" is taken as literal
  IF username IS NULL OR username = '' OR username = '""' THEN
    RAISE EXCEPTION 'Username is a mandatory argument, check it out';
  END IF;

    RETURN QUERY
    SELECT * FROM cdb_dataservices_client._obs_getavailableboundaries(username, orgname, geom, timespan);

END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_admin0_polygon (username text, organization_name text, country_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_admin0_polygon (username, organization_name, country_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_admin1_polygon (username text, organization_name text, admin1_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_admin1_polygon (username, organization_name, admin1_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_admin1_polygon (username text, organization_name text, admin1_name text, country_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_admin1_polygon (username, organization_name, admin1_name, country_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_namedplace_point (username text, organization_name text, city_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_namedplace_point (username, organization_name, city_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_namedplace_point (username text, organization_name text, city_name text, country_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_namedplace_point (username, organization_name, city_name, country_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_namedplace_point (username text, organization_name text, city_name text, admin1_name text, country_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_namedplace_point (username, organization_name, city_name, admin1_name, country_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_postalcode_polygon (username text, organization_name text, postal_code text, country_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_postalcode_polygon (username, organization_name, postal_code, country_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_postalcode_point (username text, organization_name text, postal_code text, country_name text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_postalcode_point (username, organization_name, postal_code, country_name);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_ipaddress_point (username text, organization_name text, ip_address text)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_ipaddress_point (username, organization_name, ip_address);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_geocode_street_point (username text, organization_name text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.cdb_geocode_street_point (username, organization_name, searchtext, city, state_province, country);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_isodistance (username text, organization_name text, source geometry(Geometry, 4326), mode text, range integer[], options text[] DEFAULT ARRAY[]::text[])
RETURNS SETOF cdb_dataservices_client.isoline AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.cdb_isodistance (username, organization_name, source, mode, range, options);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_isochrone (username text, organization_name text, source geometry(Geometry, 4326), mode text, range integer[], options text[] DEFAULT ARRAY[]::text[])
RETURNS SETOF cdb_dataservices_client.isoline AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.cdb_isochrone (username, organization_name, source, mode, range, options);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._cdb_route_point_to_point (username text, organization_name text, origin geometry(Point, 4326), destination geometry(Point, 4326), mode text, options text[] DEFAULT ARRAY[]::text[], units text DEFAULT 'kilometers')
RETURNS cdb_dataservices_client.simple_route AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.cdb_route_point_to_point (username, organization_name, origin, destination, mode, options, units);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_get_demographic_snapshot (username text, organization_name text, geom geometry(Geometry, 4326), time_span text DEFAULT NULL, geometry_level text DEFAULT NULL)
RETURNS json AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_get_demographic_snapshot (username, organization_name, geom, time_span, geometry_level);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_get_segment_snapshot (username text, organization_name text, geom geometry(Geometry, 4326), geometry_level text DEFAULT NULL)
RETURNS json AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_get_segment_snapshot (username, organization_name, geom, geometry_level);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getdemographicsnapshot (username text, organization_name text, geom geometry(Geometry, 4326), time_span text DEFAULT NULL, geometry_level text DEFAULT NULL)
RETURNS SETOF JSON AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getdemographicsnapshot (username, organization_name, geom, time_span, geometry_level);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getsegmentsnapshot (username text, organization_name text, geom geometry(Geometry, 4326), geometry_level text DEFAULT NULL)
RETURNS SETOF JSON AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getsegmentsnapshot (username, organization_name, geom, geometry_level);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getboundary (username text, organization_name text, geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getboundary (username, organization_name, geom, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getboundaryid (username text, organization_name text, geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL)
RETURNS text AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getboundaryid (username, organization_name, geom, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getboundarybyid (username text, organization_name text, geometry_id text, boundary_id text, time_span text DEFAULT NULL)
RETURNS Geometry AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getboundarybyid (username, organization_name, geometry_id, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getboundariesbygeometry (username text, organization_name text, geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.obs_getboundariesbygeometry (username, organization_name, geom, boundary_id, time_span, overlap_type);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getboundariesbypointandradius (username text, organization_name text, geom geometry(Geometry, 4326), radius numeric, boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.obs_getboundariesbypointandradius (username, organization_name, geom, radius, boundary_id, time_span, overlap_type);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getpointsbygeometry (username text, organization_name text, geom geometry(Geometry, 4326), boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.obs_getpointsbygeometry (username, organization_name, geom, boundary_id, time_span, overlap_type);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getpointsbypointandradius (username text, organization_name text, geom geometry(Geometry, 4326), radius numeric, boundary_id text, time_span text DEFAULT NULL, overlap_type text DEFAULT 'intersects')
RETURNS TABLE(the_geom geometry, geom_refs text) AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.obs_getpointsbypointandradius (username, organization_name, geom, radius, boundary_id, time_span, overlap_type);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getmeasure (username text, organization_name text, geom Geometry, measure_id text, normalize text DEFAULT 'area', boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS numeric AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getmeasure (username, organization_name, geom, measure_id, normalize, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getcategory (username text, organization_name text, geom Geometry, category_id text, boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS text AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getcategory (username, organization_name, geom, category_id, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getuscensusmeasure (username text, organization_name text, geom Geometry, name text, normalize text DEFAULT 'area', boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS numeric AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getuscensusmeasure (username, organization_name, geom, name, normalize, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getuscensuscategory (username text, organization_name text, geom Geometry, name text, boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS text AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getuscensuscategory (username, organization_name, geom, name, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getpopulation (username text, organization_name text, geom Geometry, normalize text DEFAULT 'area', boundary_id text DEFAULT NULL, time_span text DEFAULT NULL)
RETURNS numeric AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT cdb_dataservices_server.obs_getpopulation (username, organization_name, geom, normalize, boundary_id, time_span);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_search (username text, organization_name text, search_term text, relevant_boundary text DEFAULT NULL)
RETURNS TABLE(id text, description text, name text, aggregate text, source text) AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.obs_search (username, organization_name, search_term, relevant_boundary);

$$ LANGUAGE plproxy;

CREATE OR REPLACE FUNCTION cdb_dataservices_client._obs_getavailableboundaries (username text, organization_name text, geom Geometry, timespan text DEFAULT NULL)
RETURNS TABLE(boundary_id text, description text, time_span text, tablename text) AS $$
  CONNECT cdb_dataservices_client._server_conn_str();

  SELECT * FROM cdb_dataservices_server.obs_getavailableboundaries (username, organization_name, geom, timespan);

$$ LANGUAGE plproxy;

-- Make sure by default there are no permissions for publicuser
-- NOTE: this happens at extension creation time, as part of an implicit transaction.
REVOKE ALL PRIVILEGES ON SCHEMA cdb_dataservices_client FROM PUBLIC, publicuser CASCADE;

-- Grant permissions on the schema to publicuser (but just the schema)
GRANT USAGE ON SCHEMA cdb_dataservices_client TO publicuser;

-- Revoke execute permissions on all functions in the schema by default
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_dataservices_client FROM PUBLIC, publicuser;GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_admin0_polygon(country_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_admin1_polygon(admin1_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_admin1_polygon(admin1_name text, country_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_namedplace_point(city_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_namedplace_point(city_name text, country_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_postalcode_polygon(postal_code text, country_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_postalcode_point(postal_code text, country_name text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_ipaddress_point(ip_address text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_geocode_street_point(searchtext text, city text, state_province text, country text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_isodistance(source geometry(Geometry, 4326), mode text, range integer[], options text[]) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_isochrone(source geometry(Geometry, 4326), mode text, range integer[], options text[]) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.cdb_route_point_to_point(origin geometry(Point, 4326), destination geometry(Point, 4326), mode text, options text[], units text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_get_demographic_snapshot(geom geometry(Geometry, 4326), time_span text, geometry_level text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_get_segment_snapshot(geom geometry(Geometry, 4326), geometry_level text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getdemographicsnapshot(geom geometry(Geometry, 4326), time_span text, geometry_level text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getsegmentsnapshot(geom geometry(Geometry, 4326), geometry_level text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getboundary(geom geometry(Geometry, 4326), boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getboundaryid(geom geometry(Geometry, 4326), boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getboundarybyid(geometry_id text, boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getboundariesbygeometry(geom geometry(Geometry, 4326), boundary_id text, time_span text, overlap_type text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getboundariesbypointandradius(geom geometry(Geometry, 4326), radius numeric, boundary_id text, time_span text, overlap_type text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getpointsbygeometry(geom geometry(Geometry, 4326), boundary_id text, time_span text, overlap_type text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getpointsbypointandradius(geom geometry(Geometry, 4326), radius numeric, boundary_id text, time_span text, overlap_type text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getmeasure(geom Geometry, measure_id text, normalize text, boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getcategory(geom Geometry, category_id text, boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getuscensusmeasure(geom Geometry, name text, normalize text, boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getuscensuscategory(geom Geometry, name text, boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getpopulation(geom Geometry, normalize text, boundary_id text, time_span text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_search(search_term text, relevant_boundary text) TO publicuser;
GRANT EXECUTE ON FUNCTION cdb_dataservices_client.obs_getavailableboundaries(geom Geometry, timespan text) TO publicuser;


Motorcycle Fairings USA has a large selection of 2008-2015 Suzk Hayabusa fairings. Reach out to us if you are looking for a fairing kit for your 2008-2015 Suzuki Hayabusa that is not shown on our website. We can paint custom fairings and even offer a wider selection of colors. All Suzuki GSXR fairings come with free heat shield installed and our fitment is guaranteed.


text:
#include <bson.h>

#include <assert.h>
#include <fcntl.h>
#include <stdarg.h>

#if defined(__APPLE__)
#include <mach/mach_time.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if !defined(_WIN32)
#include <sys/types.h>
#include <inttypes.h>
#include <sys/utsname.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/time.h>
#else
#include <windows.h>
#endif

#if defined(BSON_HAVE_CLOCK_GETTIME)
#include <time.h>
#include <sys/time.h>
#endif

#include "TestSuite.h"

static int test_flags;

const int MAX_THREADS = 10;

#define TEST_VERBOSE (1 << 0)
#define TEST_NOFORK (1 << 1)
#define TEST_HELPONLY (1 << 2)
#define TEST_THREADS (1 << 3)
#define TEST_DEBUGOUTPUT (1 << 4)
#define TEST_VALGRIND (1 << 5)

#define NANOSEC_PER_SEC 1000000000UL

#if !defined(_WIN32)
#include <pthread.h>
#define Mutex pthread_mutex_t
#define Mutex_Init(_n) pthread_mutex_init ((_n), NULL)
#define Mutex_Lock pthread_mutex_lock
#define Mutex_Unlock pthread_mutex_unlock
#define Mutex_Destroy pthread_mutex_destroy
#define Thread pthread_t
#define Thread_Create(_t, _f, _d) pthread_create ((_t), NULL, (_f), (_d))
#define Thread_Join(_n) pthread_join ((_n), NULL)
#else
#define Mutex CRITICAL_SECTION
#define Mutex_Init InitializeCriticalSection
#define Mutex_Lock EnterCriticalSection
#define Mutex_Unlock LeaveCriticalSection
#define Mutex_Destroy DeleteCriticalSection
#define Thread HANDLE
#define Thread_Join(_n) WaitForSingleObject ((_n), INFINITE)
#define strdup _strdup
#endif

#if !defined(Memory_Barrier)
#define Memory_Barrier() bson_memory_barrier ()
#endif

#define AtomicInt_DecrementAndTest(p) (bson_atomic_int_add (p, -1) == 0)

#if !defined(BSON_HAVE_TIMESPEC)
struct timespec {
   time_t tv_sec;
   long tv_nsec;
};
#endif

#if defined(_WIN32)
static int
Thread_Create (Thread *thread, void *(*cb) (void *), void *arg)
{
   *thread = CreateThread (NULL, 0, (void *) cb, arg, 0, NULL);
   return 0;
}
#endif

#if defined(_WIN32) && !defined(BSON_HAVE_SNPRINTF)
static int
snprintf (char *str, size_t size, const char *format, ...)
{
   int r = -1;
   va_list ap;

   va_start (ap, format);
   if (size != 0) {
      r = _vsnprintf_s (str, size, _TRUNCATE, format, ap);
   }
   if (r == -1) {
      r = _vscprintf (format, ap);
   }
   va_end (ap);

   return r;
}
#endif

void
_Print_StdOut (const char *format, ...)
{
   va_list ap;

   va_start (ap, format);
   vprintf (format, ap);
   fflush (stdout);
   va_end (ap);
}

void
_Print_StdErr (const char *format, ...)
{
   va_list ap;

   va_start (ap, format);
   vfprintf (stderr, format, ap);
   fflush (stderr);
   va_end (ap);
}

void
_Clock_GetMonotonic (struct timespec *ts) /* OUT */
{
#if defined(BSON_HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC)
   clock_gettime (CLOCK_MONOTONIC, ts);
#elif defined(__APPLE__)
   static mach_timebase_info_data_t info = {0};
   static double ratio;
   uint64_t atime;

   if (!info.denom) {
      mach_timebase_info (&info);
      ratio = info.numer / info.denom;
   }

   atime = mach_absolute_time () * ratio;
   ts->tv_sec = atime * 1e-9;
   ts->tv_nsec = atime - (ts->tv_sec * 1e9);
#elif defined(_WIN32)
   /* GetTickCount64() returns milliseconds */
   ULONGLONG ticks = GetTickCount64 ();
   ts->tv_sec = ticks / 1000;

   /* milliseconds -> microseconds -> nanoseconds*/
   ts->tv_nsec = (ticks % 1000) * 1000 * 1000;
#elif defined(__hpux__)
   uint64_t nsec = gethrtime ();

   ts->tv_sec = (int64_t) (nsec / 1e9);
   ts->tv_nsec = (int32_t) (nsec - (double) ts->tv_sec * 1e9);
#else
#warning "Monotonic clock is not yet supported on your platform."
#endif
}

void
_Clock_Subtract (struct timespec *ts, /* OUT */
                 struct timespec *x,  /* IN */
                 struct timespec *y)  /* IN */
{
   struct timespec r;

   ASSERT (x);
   ASSERT (y);

   r.tv_sec = (x->tv_sec - y->tv_sec);

   if ((r.tv_nsec = (x->tv_nsec - y->tv_nsec)) < 0) {
      r.tv_nsec += NANOSEC_PER_SEC;
      r.tv_sec -= 1;
   }

   *ts = r;
}

static void
TestSuite_SeedRand (TestSuite *suite, /* IN */
                    Test *test)       /* IN */
{
#ifndef BSON_OS_WIN32
   int fd = open ("/dev/urandom", O_RDONLY);
   int n_read;
   unsigned seed;
   if (fd != -1) {
      n_read = read (fd, &seed, 4);
      assert (n_read == 4);
      close (fd);
      test->seed = seed;
      return;
   } else {
      test->seed = (unsigned) time (NULL) * (unsigned) getpid ();
   }
#else
   test->seed = (unsigned) time (NULL);
#endif
}

void
TestSuite_Init (TestSuite *suite, const char *name, int argc, char **argv)
{
   const char *filename;
   int i;

   memset (suite, 0, sizeof *suite);

   suite->name = bson_strdup (name);
   suite->flags = 0;
   suite->prgname = bson_strdup (argv[0]);

   for (i = 0; i < argc; i++) {
      if (0 == strcmp ("-v", argv[i])) {
         suite->flags |= TEST_VERBOSE;
      } else if (0 == strcmp ("-d", argv[i])) {
         suite->flags |= TEST_DEBUGOUTPUT;
      } else if (0 == strcmp ("--no-fork", argv[i])) {
         suite->flags |= TEST_NOFORK;
      } else if (0 == strcmp ("--threads", argv[i])) {
         suite->flags |= TEST_THREADS;
      } else if (0 == strcmp ("-F", argv[i])) {
         if (argc - 1 == i) {
            _Print_StdErr ("-F requires a filename argument.\n");
            exit (EXIT_FAILURE);
         }
         filename = argv[++i];
         if (0 != strcmp ("-", filename)) {
#ifdef _WIN32
            if (0 != fopen_s (&suite->outfile, filename, "w")) {
               suite->outfile = NULL;
            }
#else
            suite->outfile = fopen (filename, "w");
#endif
            if (!suite->outfile) {
               _Print_StdErr ("Failed to open log file: %s\n", filename);
            }
         }
      } else if ((0 == strcmp ("-h", argv[i])) ||
                 (0 == strcmp ("--help", argv[i]))) {
         suite->flags |= TEST_HELPONLY;
      } else if ((0 == strcmp ("-l", argv[i]))) {
         if (argc - 1 == i) {
            _Print_StdErr ("-l requires an argument.\n");
            exit (EXIT_FAILURE);
         }
         suite->testname = bson_strdup (argv[++i]);
      }
   }

   /* HACK: copy flags to global var */
   test_flags = suite->flags;
}

static int
TestSuite_CheckDummy (void)
{
   return 1;
}

static void
TestSuite_AddHelper (void *cb_)
{
   TestFunc cb = (TestFunc) cb_;

   cb ();
}

void
TestSuite_Add (TestSuite *suite, /* IN */
               const char *name, /* IN */
               TestFunc func)    /* IN */
{
   TestSuite_AddFull (suite,
                      name,
                      TestSuite_AddHelper,
                      NULL,
                      (void *) func,
                      TestSuite_CheckDummy);
}

void
TestSuite_AddWC (TestSuite *suite,  /* IN */
                 const char *name,  /* IN */
                 TestFuncWC func,   /* IN */
                 TestFuncDtor dtor, /* IN */
                 void *ctx)         /* IN */
{
   TestSuite_AddFull (suite, name, func, dtor, ctx, TestSuite_CheckDummy);
}

void
TestSuite_AddFull (TestSuite *suite,  /* IN */
                   const char *name,  /* IN */
                   TestFuncWC func,   /* IN */
                   TestFuncDtor dtor, /* IN */
                   void *ctx,
                   int (*check) (void)) /* IN */
{
   Test *test;
   Test *iter;

   test = (Test *) calloc (1, sizeof *test);
   test->name = bson_strdup (name);
   test->func = func;
   test->check = check;
   test->next = NULL;
   test->dtor = dtor;
   test->ctx = ctx;
   TestSuite_SeedRand (suite, test);

   if (!suite->tests) {
      suite->tests = test;
      return;
   }

   for (iter = suite->tests; iter->next; iter = iter->next) {
   }

   iter->next = test;
}

#if !defined(_WIN32)
static int
TestSuite_RunFuncInChild (TestSuite *suite, /* IN */
                          Test *test)       /* IN */
{
   pid_t child;
   int exit_code = -1;
   int fd;

   if (suite->outfile) {
      fflush (suite->outfile);
   }

   if (-1 == (child = fork ())) {
      return -1;
   }

   if (!child) {
      if (suite->outfile) {
         fclose (suite->outfile);
         suite->outfile = NULL;
      }
      fd = open ("/dev/null", O_WRONLY);
      dup2 (fd, STDOUT_FILENO);
      close (fd);
      srand (test->seed);
      test->func (test->ctx);

      TestSuite_Destroy (suite);
      exit (0);
   }

   if (-1 == waitpid (child, &exit_code, 0)) {
      perror ("waitpid()");
   }

   return exit_code;
}
#endif

static int
TestSuite_RunTest (TestSuite *suite, /* IN */
                   Test *test,       /* IN */
                   Mutex *mutex,     /* IN */
                   int *count)       /* INOUT */
{
   struct timespec ts1;
   struct timespec ts2;
   struct timespec ts3;
   char name[MAX_TEST_NAME_LENGTH];
   char buf[MAX_TEST_NAME_LENGTH + 500];
   int status = 0;

   snprintf (name, sizeof name, "%s%s", suite->name, test->name);
   name[sizeof name - 1] = '\0';

   if (!test->check || test->check ()) {
      _Clock_GetMonotonic (&ts1);

/*
 * TODO: If not verbose, close()/dup(/dev/null) for stdout.
 */

/* Tracing is superduper slow */
#if defined(_WIN32)
      srand (test->seed);

      if (suite->flags & TEST_DEBUGOUTPUT) {
         _Print_StdOut ("Begin %s\n", name);
      }

      test->func (test->ctx);
      status = 0;
#else
      if (suite->flags & TEST_DEBUGOUTPUT) {
         _Print_StdOut ("Begin %s\n", name);
      }

      if ((suite->flags & TEST_NOFORK)) {
         srand (test->seed);
         test->func (test->ctx);
         status = 0;
      } else {
         status = TestSuite_RunFuncInChild (suite, test);
      }
#endif

      _Clock_GetMonotonic (&ts2);
      _Clock_Subtract (&ts3, &ts2, &ts1);

      Mutex_Lock (mutex);
      snprintf (buf,
                sizeof buf,
                "    { \"status\": \"%s\", "
                "\"test_file\": \"%s\", "
                "\"seed\": \"%u\", "
                "\"start\": %u.%09u, "
                "\"end\": %u.%09u, "
                "\"elapsed\": %u.%09u }%s\n",
                (status == 0) ? "PASS" : "FAIL",
                name,
                test->seed,
                (unsigned) ts1.tv_sec,
                (unsigned) ts1.tv_nsec,
                (unsigned) ts2.tv_sec,
                (unsigned) ts2.tv_nsec,
                (unsigned) ts3.tv_sec,
                (unsigned) ts3.tv_nsec,
                ((*count) == 1) ? "" : ",");
      buf[sizeof buf - 1] = 0;
      _Print_StdOut ("%s", buf);
      if (suite->outfile) {
         fprintf (suite->outfile, "%s", buf);
         fflush (suite->outfile);
      }
      Mutex_Unlock (mutex);
   } else {
      status = 0;
      Mutex_Lock (mutex);
      snprintf (buf,
                sizeof buf,
                "    { \"status\": \"SKIP\", \"test_file\": \"%s\" },\n",
                test->name);
      buf[sizeof buf - 1] = '\0';
      _Print_StdOut ("%s", buf);
      if (suite->outfile) {
         fprintf (suite->outfile, "%s", buf);
         fflush (suite->outfile);
      }
      Mutex_Unlock (mutex);
   }

   return status ? 1 : 0;
}

static void
TestSuite_PrintHelp (TestSuite *suite, /* IN */
                     FILE *stream)     /* IN */
{
   Test *iter;

   fprintf (stream,
            "usage: %s [OPTIONS]\n"
            "\n"
            "Options:\n"
            "    -h, --help   Show this help menu.\n"
            "    -f           Do not fork() before running tests.\n"
            "    -l NAME      Run test by name, e.g. \"/Client/command\" or "
            "\"/Client/*\".\n"
            "    -p           Do not run tests in parallel.\n"
            "    -v           Be verbose with logs.\n"
            "    -F FILENAME  Write test results (JSON) to FILENAME.\n"
            "    -d           Print debug output (useful if a test hangs).\n"
            "\n"
            "Tests:\n",
            suite->prgname);

   for (iter = suite->tests; iter; iter = iter->next) {
      fprintf (stream, "    %s%s\n", suite->name, iter->name);
   }

   fprintf (stream, "\n");
}

static void
TestSuite_PrintJsonSystemHeader (FILE *stream)
{
#ifdef _WIN32
#define INFO_BUFFER_SIZE 32767

   SYSTEM_INFO si;
   DWORD version = 0;
   DWORD major_version = 0;
   DWORD minor_version = 0;
   DWORD build = 0;

   GetSystemInfo (&si);
   version = GetVersion ();

   major_version = (DWORD) (LOBYTE (LOWORD (version)));
   minor_version = (DWORD) (HIBYTE (LOWORD (version)));

   if (version < 0x80000000) {
      build = (DWORD) (HIWORD (version));
   }

   fprintf (stream,
            "  \"host\": {\n"
            "    \"sysname\": \"Windows\",\n"
            "    \"release\": \"%ld.%ld (%ld)\",\n"
            "    \"machine\": \"%ld\",\n"
            "    \"memory\": {\n"
            "      \"pagesize\": %ld,\n"
            "      \"npages\": %d\n"
            "    }\n"
            "  },\n",
            major_version,
            minor_version,
            build,
            si.dwProcessorType,
            si.dwPageSize,
            0);
#else
   struct utsname u;
   uint64_t pagesize;
   uint64_t npages = 0;

   if (uname (&u) == -1) {
      perror ("uname()");
      return;
   }

   pagesize = sysconf (_SC_PAGE_SIZE);

#if defined(_SC_PHYS_PAGES)
   npages = sysconf (_SC_PHYS_PAGES);
#endif
   fprintf (stream,
            "  \"host\": {\n"
            "    \"sysname\": \"%s\",\n"
            "    \"release\": \"%s\",\n"
            "    \"machine\": \"%s\",\n"
            "    \"memory\": {\n"
            "      \"pagesize\": %" PRIu64 ",\n"
            "      \"npages\": %" PRIu64 "\n"
            "    }\n"
            "  },\n",
            u.sysname,
            u.release,
            u.machine,
            pagesize,
            npages);
#endif
}

static void
TestSuite_PrintJsonHeader (TestSuite *suite, /* IN */
                           FILE *stream)     /* IN */
{
   ASSERT (suite);

   fprintf (stream, "{\n");
   TestSuite_PrintJsonSystemHeader (stream);
   fprintf (stream,
            "  \"options\": {\n"
            "    \"parallel\": %s,\n"
            "    \"fork\": %s\n"
            "  },\n"
            "  \"results\": [\n",
            (suite->flags & TEST_THREADS) ? "true" : "false",
            (suite->flags & TEST_NOFORK) ? "false" : "true");

   fflush (stream);
}

static void
TestSuite_PrintJsonFooter (FILE *stream) /* IN */
{
   fprintf (stream, "  ]\n}\n");
   fflush (stream);
}

typedef struct {
   TestSuite *suite;
   Test *test;
   int n_tests;
   Mutex *mutex;
   int *count;
} ParallelInfo;

static void *
TestSuite_ParallelWorker (void *data) /* IN */
{
   ParallelInfo *info = (ParallelInfo *) data;
   Test *test;
   int i;
   int status;

   ASSERT (info);
   test = info->test;

   /* there's MAX_THREADS threads, each runs n_tests tests */
   for (i = 0; i < info->n_tests; i++) {
      ASSERT (test);
      status = TestSuite_RunTest (info->suite, test, info->mutex, info->count);
      if (AtomicInt_DecrementAndTest (info->count)) {
         TestSuite_PrintJsonFooter (stdout);
         if (info->suite->outfile) {
            TestSuite_PrintJsonFooter (info->suite->outfile);
         }
         exit (status);
      }

      test = test->next;
   }

   /* an info is allocated for each thread in TestSuite_RunParallel */
   bson_free (info);

   return NULL;
}

/* easier than having to link with math library */
#define CEIL(d) ((int) (d) == d ? (int) (d) : (int) (d) + 1)

static void
TestSuite_RunParallel (TestSuite *suite) /* IN */
{
   ParallelInfo *info;
   Thread *threads;
   Mutex mutex;
   Test *test;
   int count = 0;
   int starting_count;
   int tests_per_thread;
   int i;

   ASSERT (suite);

   Mutex_Init (&mutex);

   for (test = suite->tests; test; test = test->next) {
      count++;
   }

   /* threads start decrementing count immediately, save a copy */
   starting_count = count;
   tests_per_thread = CEIL ((double) count / (double) MAX_THREADS);
   threads = (Thread *) calloc (MAX_THREADS, sizeof *threads);

   Memory_Barrier ();

   /* "tests" is a linked list, a->b->c->d->..., iterate it and every
    * tests_per_thread start a new thread, point it at our position in the list,
    * and tell it to run the next tests_per_thread tests. */
   for (test = suite->tests, i = 0; test; test = test->next, i++) {
      if (!(i % tests_per_thread)) {
         info = (ParallelInfo *) calloc (1, sizeof *info);
         info->suite = suite;
         info->test = test;
         info->n_tests = BSON_MIN (tests_per_thread, starting_count - i);
         info->count = &count;
         info->mutex = &mutex;
         Thread_Create (threads, TestSuite_ParallelWorker, info);
         threads++;
      }
   }

/* wait for the thread that runs the last test to call exit (0) */
#ifdef _WIN32
   Sleep (30000);
#else
   sleep (30);
#endif

   _Print_StdErr ("Timed out, aborting!\n");

   abort ();
}

static int
TestSuite_RunSerial (TestSuite *suite) /* IN */
{
   Test *test;
   Mutex mutex;
   int count = 0;
   int status = 0;

   Mutex_Init (&mutex);

   for (test = suite->tests; test; test = test->next) {
      count++;
   }

   for (test = suite->tests; test; test = test->next) {
      status += TestSuite_RunTest (suite, test, &mutex, &count);
      count--;
   }

   TestSuite_PrintJsonFooter (stdout);
   if (suite->outfile) {
      TestSuite_PrintJsonFooter (suite->outfile);
   }

   Mutex_Destroy (&mutex);

   return status;
}

static int
TestSuite_RunNamed (TestSuite *suite,     /* IN */
                    const char *testname) /* IN */
{
   Mutex mutex;
   char name[128];
   Test *test;
   int count = 1;
   bool star = strlen (testname) && testname[strlen (testname) - 1] == '*';
   bool match;
   int status = 0;

   ASSERT (suite);
   ASSERT (testname);

   Mutex_Init (&mutex);

   for (test = suite->tests; test; test = test->next) {
      snprintf (name, sizeof name, "%s%s", suite->name, test->name);
      name[sizeof name - 1] = '\0';
      if (star) {
         /* e.g. testname is "/Client*" and name is "/Client/authenticate" */
         match = (0 == strncmp (name, testname, strlen (testname) - 1));
      } else {
         match = (0 == strcmp (name, testname));
      }

      if (match) {
         status += TestSuite_RunTest (suite, test, &mutex, &count);
      }
   }

   TestSuite_PrintJsonFooter (stdout);
   if (suite->outfile) {
      TestSuite_PrintJsonFooter (suite->outfile);
   }

   Mutex_Destroy (&mutex);
   return status;
}

int
TestSuite_Run (TestSuite *suite) /* IN */
{
   int failures = 0;

   if ((suite->flags & TEST_HELPONLY)) {
      TestSuite_PrintHelp (suite, stderr);
      return 0;
   }

   TestSuite_PrintJsonHeader (suite, stdout);
   if (suite->outfile) {
      TestSuite_PrintJsonHeader (suite, suite->outfile);
   }

   if (suite->tests) {
      if (suite->testname) {
         failures += TestSuite_RunNamed (suite, suite->testname);
      } else if ((suite->flags & TEST_THREADS)) {
         TestSuite_RunParallel (suite);
      } else {
         failures += TestSuite_RunSerial (suite);
      }
   } else {
      TestSuite_PrintJsonFooter (stdout);
      if (suite->outfile) {
         TestSuite_PrintJsonFooter (suite->outfile);
      }
   }

   return failures;
}

void
TestSuite_Destroy (TestSuite *suite)
{
   Test *test;
   Test *tmp;

   for (test = suite->tests; test; test = tmp) {
      tmp = test->next;

      if (test->dtor) {
         test->dtor (test->ctx);
      }
      bson_free (test->name);
      free (test);
   }

   if (suite->outfile) {
      fclose (suite->outfile);
   }

   bson_free (suite->name);
   bson_free (suite->prgname);
   bson_free (suite->testname);
}

int
test_suite_debug_output (void)
{
   return 0 != (test_flags & TEST_DEBUGOUTPUT);
}

int
test_suite_valgrind (void)
{
   return 0 != (test_flags & TEST_VALGRIND);
}


Cedar Rapids Law Firm, Pickens, Barnes & Abernathy | Hello world!
Welcome to the official blog of Pickens, Barnes & Abernathy. We will begin posting on this blog shortly, so please check back regularly for updates about the firm, notable cases and more.


text:
Q: Poner la posición de la primera y última aparición de un número en una lista c++ Buenas soy algo nuevo en programación y me han enviado una tarea en la que me dicen que debo introducir una cantidad indefinida de números acabada en 0(ya que me han dicho que no use arrays) y que detecte cada vez que aparece un 12 y que me diga la posición en la que lo hace.
Yo tengo este código escrito:

using namespace std;

int main () {

    int secuencia , n;

    cout << "Introduzca la secuencia de numeros: ";
    cin >> secuencia;
    n=1;

   while (secuencia != 0) {

    cin >> secuencia;
    n=n+1;

    if (secuencia==12) {
        cout << "La primera aparicion del 12 es en: " << n << endl;
        cout << "La ultima aparicion del 12 es en: " << n << endl;
    }

    return 0;
}

Si alguien me puede decir como completarlo lo agradecería porque el resultado me sale:

Introduzca la secuencia de numeros: 1 12 3 12 0
La primera aparicion del 12 es en: 2
La ultima aparicion del 12 es en: 2
La primera aparicion del 12 es en: 4
La ultima aparicion del 12 es en: 4

Process returned 0 (0x0)   execution time : 3.785 s
Press any key to continue.

A: Tu error es que has puesto al final un if sin sentido, si eliminas ese if ya estaría.
Código final correcto, testeado:
int main()
{

    int secuencia , n;

    cout << "Introduzca la secuencia de numeros: ";
    cin >> secuencia;
    n=1;
    while (secuencia != 0)
    {

        cin >> secuencia;
        n=n+1;

        if (secuencia==12)
        {
                cout << "La primera aparicion del 12 es en: " << n << endl;
        }

    } // END OF WHILE

    return 0;
}

Fue testeado correctamente en MingW g++

A: Por lo que veo, debes introducir números hasta introducir un cero, y cada vez que se introduzca un 12 decir en qué posición se introdujo.
Tan sólo necesitas un índice (para saber en qué posición de la secuencia estás):
for (int indice = 0, numero = 1; numero; ++indice)
{
    cout << "Introduce numero: ";
    cin >> numero;

    if (numero == 12)
        cout << numero << " aparece en la posicion " << (indice + 1) << '\n';
}

Si además necesitas saber la primera y última aparición de 12 (como se deduce de tu salida, pero no de tu enunciado), necesitarás guardar dichos índices:
int primero = numeric_limits<int>::max();
int ultimo = numeric_limits<int>::min();

for (int indice = 1, numero = numeric_limits<int>::max(); numero; ++indice)
{
    cout << "Introduce numero: ";
    cin >> numero;

    if (numero == 12)
    {
        primero = std::min(primero, indice);
        ultimo = std::max(ultimo, indice);
        cout << numero << " aparece en la posicion " << indice << '\n';
    }
}

cout << "Primera aparicion en " << primero << "\nUltima aparicion en " << ultimo;

Puedes ver el código funcionando en Try it online!.

Explicación
Todo número es implícitamente convertible a una expresión booleana, siendo 0 equivalente a false y cualquier otro valor equivalente a true, por ese motivo, el bucle for se interrumpe si el valor entrado es cero.
En el bucle for, puedes declarar tantas variables (del mismo tipo) como necesites, por eso indice y numero son declaradas en la primera parte del bucle for, estas variables vivirán sólo mientras viva el bucle, por eso primero y ultimo se declaran fuera, ya que se necesitan fuera del bucle.

redpajama_set_name: RedPajamaStackExchange


We encountered a drunk human which had this binary file in his possession. We do not really understand the calculation which the algorithm does. And that is the problem. Can you imagine the disgrace we have to suffer, when we robots, based on logic, can not understand an algorithm? Somehow it seems that the algorithm imitates their masters and behaves …. drunk! So let us not suffer this disgrace and reverse the algorithm and get the correct solution.
It seems that there are some problems with some Linux Distributions that lead to a wrong flag. The flag is printable and is written in leet-speak. We are working on a VM that works correctly with this challenge. When the VM is ready, you can download it and try again. Sorry for the inconvenience.


text:
Daily Digest - August 2, 2016
Merged church has passion for social justice
OKLAHOMA CITY (UMNS) — Mosaic United Methodist Church — a new congregation created from two churches that merged to improve their opportunities to serve — this summer celebrated the first anniversary of its ministry. Boyce Bowdon reports on the church, which focuses on inclusivity, diversity and social justice.
Men's group, YWCA work to end violence against women
NASHVILLE, Tenn. (UMNS) — United Methodist Men and MEND, a Nashville YWCA organization, are collaborating to help men change how they view women and understand how men's words and behavior often make violence against women and girls seem acceptable. The men's organization will make "We are the Lions," a video produced by MEND, available to groups of United Methodist men across the country, including pastors, men's ministry leaders and Scout leaders.
House church feeds souls, stomachs
MEMPHIS, Tenn. (UMC.org) — In 2015, the Rev. Kristofer Roof launched Peace Tree United Methodist with no church building. Instead, there are meet-ups in apartments and restaurants almost every night of the week, with community service as a focus of every gathering. "I really just felt that God was calling me to do something that was ancient but modern. I saw that established, traditional churches were not reaching certain people," he said.
Touts for Texas Youth Academy
GEORGETOWN, Texas (UMNS) — The Texas Youth Academy gives selected high school students a chance to live together in intentional Christian community on the campus of United Methodist-related Southwestern University. The Texas Conference Cross Connection newsletter offers participants' testimonies on how small groups, mission work and other experiences at the academy enriched their lives.
5 over-the-top ideas for a back-to-school kickoff
MOBILE, Ala. (UMCom) — For teens, there may be no bigger seasonal transition than starting back to school. Jeremy Steele writes that this is the perfect time for a church to plan a fun outreach event. Writing for United Methodist Communications, he offers five ideas.
Finance agency holds organizing meeting
NASHVILLE, Tenn. (UMNS) — The new board of the General Council on Finance and Administration elected officers, and the 21 members began their work together July 27-29.
Here are some of the activities ahead for United Methodists across the connection. If you have an item to share, email [email protected] and put Digest in the subject line.
Monday-Tuesday, Aug. 15-16
Church security training — Los Altos United Methodist Church, 5950 E. Willow St., Long Beach, California, will host the ALICE Training Institute course that offers survival strategies for violent intruder or active shooter incidents. ALICE stands for Alert, Lockdown, Inform, Counter, and Evacuate. Details
More upcoming United Methodist events
Daily Digest - January 15, 2021
31 United Methodists serve in 117th Congress; Bishops call for action in changing times; Commentary: The content of our character
Africa University vice chancellor Furusa dies at 59; Why do United Methodists observe Human Relations Day?; Annual conference reports
United Methodists killed in Congo massacre; former megachurch pastor, Kirbyjon Caldwell, sentenced; Girl Scout raises funds for water in Africa.

redpajama_set_name: RedPajamaCommonCrawl


U-Can Read: Literacy Intervention Years 3-10 (UCR) is a parent education program that supports adolescent, struggling readers. Results achieved at UCR, highlight the critical role that technology plays in engaging students in literacy learning and supporting their reading success. Too often reluctant, adolescent readers have spent years in classrooms being lost and frustrated; their enjoyment of reading diminished. According to Long, MacBlain, & MacBlain, (2007), it is not uncommon for students to respond to this frustration with inappropriate outbursts or passive disengagement. Whether they actively avoid learning or shut down completely, research shows that the achievement gap continues to widen (Fisher & Frey, 2007). This paper documents case studies of two reluctant and disengaged students and how technology served to motivate their pursuit of literacy learning. The technologies included Kindle e-book readers, iPad devices, iPods and interactive websites. These case studies give best practice examples that can be implemented in all classrooms to motivate students to read.
Lowe, K. & Spencer, R. (2012). Technology: The Bridge to Reading Success. In T. Amiel & B. Wilson (Eds.), Proceedings of EdMedia 2012--World Conference on Educational Media and Technology (pp. 2475-2483). Denver, Colorado, USA: Association for the Advancement of Computing in Education (AACE). Retrieved April 19, 2019 from https://www.learntechlib.org/primary/p/41104/.
Barone, D & Wright, T.E. (2008). Literacy Instruction With Digital and Media Technologies, The Reading Teacher, December 2008.
Biancarosa, G., & Snow, C.E. (2004). Reading next—a vision for action and research in middle and high school literacy: A report to Carnegie Corporation of New York. Washington, DC: Alliance for Excellent Education.
Blum, H.T., Lipsett, L.R., & Yocom, D.J. (2002). Literature circles: A tool for selfdetermination in one middle school inclusive classroom. Remedial and Special Education, 23(2), 99–108.
Casey, H.K. (2007). High stakes teaching in an era of high stakes testing. The Journal of Curriculum and Instruction, 1(1), 14–30.
Dolch, E.W. (1948). Problems in Reading. Champain, IL: The Garrard Press.
Duffy, G.G. (2003). Explaining reading: A resource for teaching concepts, skills, and strategies. New York: Guilford.
Fisher, D., & Frey, N. (2007). A tale of two middle schools: The differences in structure and instruction. Journal of Adolescent& Adult Literacy, 51(3), 204–211.
Gee, J.P. (1992). The social mind. Westport, CT: Bergin & Garvey.
Grylls, B. (2008) Gold of the Gods. Random House Group, London.
Larson, L.C. (2009) e-Reading and e-Responding: New Tools for the Next Generation of Readers, Journal of Adolescent& Adult Literacy, 53 (3), 255–258. November 2009.
Long, L., MacBlain, S., & MacBlain, M. (2007). Supporting students with dyslexia at the secondary level: An emotional model of literacy. Journal of Adolescent& Adult Literacy, 51(2), 124–134.
Nelson Cengate Learning. (2008) PM Benchmark Reading Assessment Resource. Cengate Learning Australia, South Melbourne.
Paris, S.G., Wasik, B.A., & Turner, J.C. (1991). The development of strategic readers. In R. Barr, M.L. Kamil, P. Mosenthal, & P.D.
Perry, N.E., Hutchinson, L.R., & Thauberger, C. (2007). Mentoring student teachers to design and implement literacy tasks that support self-regulated reading and writing. Reading and Writing Quarterly, 23, 27-50.
Purcell-Gates, V. & Waterman, R. (2000). Now we read, we see, we speak: Portrait of literacy development in a Freirean-based adult literacy class. Mahwah, NJ: Erlbaum.
Robert, R.M., & Deci, E.L. (2000). Self-determination theory and the facilitation of intrinsic motivation, social development, and well-being. American Psychologist, 55, 6878.
Wasik, B.H. (2004). Handbook of family literacy. Mahwah, N.J.: Erlbaum.
Westwood, P (2005) Spelling approaches to Teaching and Assessment, Second Edition. ACER Press.
Willems, M. (2003) Don't Let the Pigeon Drive the Bus! Hyperion Books for Children, New York.
Willems, M (2011) Don't Let the Pigeon Run this App!. Disney Publishing Worldwide Applications. Electronic Resource.
Zimmerman, B J. (2000). Attaining self-regulation: A social cognitive perspective in Handbook of self regulation. Boekaerts, Monique (Ed); Pintrich, Paul R. (Ed); Zeidner, Moshe (Ed). Handbook of self-regulation. San Diego, CA, US: Academic Press.


text:
Avalanche Andretti Formula E Announces Partnership with Prysmian Group
Avalanche Andretti Formula E Presents Season 9 Driver Line-Up and Introduces Gen3 Car
ABB FIA Formula E World Championship Season 9 Calendar Updated
Why the first family of auto racing is all in on EVs
ANDRETTI AUTOSPORT CELEBRATES 200 WINS
LONDON (Dec. 8, 2022) - Avalanche Andretti Formula E today unveiled the team's new driver line-up and Gen3 challenger powered by Porsche ahead of Season 9 of the ABB FIA Formula E World Championship.
Twenty-seven-year-old Jake Dennis enters his third season with Avalanche Andretti and in Formula E, following a positive set of seasons with the team including back-to-back wins in 2021 and 2022 at the London E-Prix and being in contention for the 2020 Drivers Championship. In 2023, Dennis will be joined by 2012 World Endurance Champion and Formula E podium sitter, Andre Lotterer.
In 2022, Avalanche Andretti Formula E had a season of mixed fortune with a podium finish at the start of the season at the Diriyah E-Prix, a strong finish with a win and podium in London and another podium in the season finale in Seoul. As the team goes into the Gen3 era for 2023, opportunity arises with all teams on a level playing field for Season 9 as the paddock continues to understand and develop the performance of the new Gen3 car.
The livery is an evolution of the Season 8 design and maintains the iconic red that the team debuted in 2022 upon the signing of title partner, Avalanche, which continues in to Season 9 The 2023 car retains the strong Avalanche banner, while incorporating black and a patterned texture for a dynamic look. The team heads into its ninth year of Formula E competition with a strong portfolio of sponsors and a growing group of fans as the team continues to build interest on and off the track.
Alongside these developments comes the introduction of a new powertrain, supplied by Porsche. Andretti and Porsche have worked together collaboratively ahead of the season in testing and trackside development of the package.
Dennis and Lotterer will first drive the 2023 contender in Valencia from December 12 – 16 as part of Formula E's pre-season testing week. The team makes its first official outing at the Mexico E-Prix at the Autodromo Hermanos Rodríguez on January 14.
Michael Andretti, CEO & Chairman, Andretti Autosport, said:
"We're really excited to see what this next year brings for Avalanche Andretti Formula E. We are entering our ninth season and each year for us in the World Championship gets stronger. We're proud to again showcase the Avalanche colors, and happy to welcome Andre to the team alongside Jake as we enter the Gen3 era."
Roger Griffiths, Team Principal, Avalanche Andretti FE, said:
"A new look, a new line-up, a new car and a new manufacturer partnership, there is a lot to be excited about for Avalanche Andretti Formula E as we embark on our ninth campaign in the ABB FIA Formula E World Championship. We couldn't be more excited about what the future might hold for the team as we kick off our assault on the Season 9 championship starting out with the pre-season test in Valencia."
Jake Dennis, Driver, Avalanche Andretti FE, said:
"I'm looking forward to my third season with Avalanche Andretti Formula E. Season 9 brings a lot of changes and getting up to speed with these changes as quick as possible will allow us to excel in the field. Everyone starts on a level playing field and the new racetracks on the calendar will also be a challenge for everyone. I'm excited to get started and working with my new teammate to get our team to the front of the field."
Andre Lotterer, Driver, Avalanche Andretti FE, said:
"Joining Avalanche Andretti Formula E is an exciting start to an already exciting season of Formula E with the new changes and new racetracks. I'm looking forward to working with the team and Jake to challenge for podiums and wins this season, getting this team back to the front. I've already enjoyed my time working with the team in the off season so I'm excited to get started!"
"We're really excited to see what this next year brings for Avalanche Andretti
Formula E. We are entering our ninth season and each year for us in the World Championship gets stronger. We're proud to again showcase the Avalanche colors, and happy to welcome Andre to the team alongside Jake as we enter the Gen3 era."