text:
LEGO Juris A/S v. Artur Dobek
The Complainant is LEGO Juris A/S of Billund, Denmark, represented by Melbourne IT Digital Brand Services, Sweden.
The Respondent is Artur Dobek of Niebylec, Poland.
The disputed domain name <klocki-lego.info> is registered with Tucows Inc. (the "Registrar").
The Complaint was filed with the WIPO Arbitration and Mediation Center (the "Center") on August 28, 2013. On August 28, 2013, the Center transmitted by email to the Registrar a request for registrar verification in connection with the disputed domain name. On August 28, 2013, the Registrar transmitted by email to the Center its verification response confirming that the Respondent is listed as the registrant and providing the contact details.
In accordance with the Rules, paragraphs 2(a) and 4(a), the Center formally notified the Respondent of the Complaint, and the proceedings commenced on September 2, 2013. In accordance with the Rules, paragraph 5(a), the due date for Response was September 22, 2013. The Respondent did not submit any response. Accordingly, the Center notified the Respondent's default on September 23, 2013.
The Center appointed Keith Gymer as the sole panelist in this matter on October 2, 2013. The Panel finds that it was properly constituted. The Panel has submitted the Statement of Acceptance and Declaration of Impartiality and Independence, as required by the Center to ensure compliance with the Rules, paragraph 7.
The Complainant LEGO Juris A/S, based in Denmark, is the owner of LEGO, and all other trademarks used in connection with the famous LEGO brands of construction toys and other LEGO branded products. The Complainant's licensees are authorized to exploit the Complainant's intellectual property rights, including its trademark rights. The Complainant has subsidiaries and branches throughout the world, and LEGO products are sold in more than 130 countries, including in Poland.
The Complainant is the registered proprietor of numerous registrations for the LEGO trademark around the world, including, for example, Community Trade Mark registration 39800 dating from 1 April, 1996 (and with earlier seniorities), which applies throughout the EU, including in Poland.
The Respondent, Artur Dobek, is a private individual with an address in Poland. According to the WhoIs record, the disputed domain name was registered in the Respondent's name on April 4, 2013. A website, in Polish, was operated at the address "www.klocki-lego.info".
The Complainant asserts that the trademark LEGO is among the best-known trademarks in the world. A list of the top 500 Superbrands for 2012, provided by Superbrands UK, had LEGO as number 31 of the most famous brands.
The LEGO Group has expanded its use of the LEGO trademark to, inter alia, computer hardware and software, books, videos and computer controlled robotic construction sets. The LEGO Group also maintains an extensive web site under the domain name <lego.com>. The Complainant is also the owner of more than 1000 domain names containing the term "lego". It is the strict policy of the Complainant that all domain names containing the word "lego" should be owned by the Complainant.
The mark LEGO has substantial inherent and acquired distinctiveness. The awareness of the trademark LEGO is considered in the whole community to be significant.
The Domain Name is identical or confusingly similar to a trademark or service mark in which the Complainant has rights.
The dominant part of the disputed domain name <klocki-lego.info> comprises the word "lego", which is identical to the registered trademark LEGO. The disputed domain name is confusingly similar to the Complainant's world famous trademark LEGO. The addition of the prefix "klocki" ("klocki" is the polish word for "block") in combination with a hyphen is not relevant and will not have any impact on the overall impression of the dominant part of the name, "lego", which is instantly recognizable as a world famous trademark.
The fame of the trademark has been recognised in numerous previous UDRP decisions. See, e.g., LEGO Juris A/S v. Level 5 Corp, WIPO Case No. D2008-1692 ("The Panel finds that the Complainant has established that LEGO and LEGOLAND are well-recognized and world famous trademarks and that the trademarks are distinctive"); LEGO Juris A/S v. Michael Longo, WIPO Case No. D2008-1715 ("The Panel finds, as numerous panels have found before, that the Complainant has established that LEGO is a well-known trademark and that the trademark is distinctive and famous"); LEGO Juris A/S v. Reginald Hastings Jr, WIPO Case No. D2009-0680 ("LEGO is a mark enjoying high reputation as construction toys popular with children.")
In LEGO Juris A/S v. Andika Jaya Kusuma, WIPO Case No. D2013-0113, the Panel concluded that the addition of the suffix "store" to the LEGO trademark did not prevent a finding of confusingly similarity between the disputed domain name and the LEGO trademark. Similarly, considering that the term "block" is a term closely associated with the Complainant's business (i.e., LEGO blocks), the addition of the term "klocki" strengthens the impression of an association with the Complainant.
The addition of the top-level domain (TLD) "info" does not have any impact on the overall impression of the dominant portion of the domain name and is therefore irrelevant to determining confusing similarity between the trademark and the domain name.
Anyone who sees the domain name is bound to mistake it for a name related to the Complainant. The likelihood of confusion includes an obvious association with the trademark of the Complainant. With reference to the reputation of the trademark LEGO there is a considerable risk that the trade public will perceive the Respondent's domain name either as a domain name owned by the Complainant or that there is some kind of commercial relation with the Complainant. By using the trademark as a dominant part of the domain name, the Respondent exploits the goodwill and the image of the trademark, which may result in dilution and other damage to the Complainant's trademark. Persons seeing the domain name at issue, even without being aware of the content, are likely to think that the domain name is in some way connected to the Complainant ( i.e, they are likely to experience "initial interest confusion").
Summarizing, the Complainant is the owner of the well-known trademark LEGO. The domain name in question is clearly confusingly similar to the Complainant's registered trademark LEGO. The suffix "klocki" does not detract from the overall impression and the domain name must therefore be considered to be confusingly similar to the Complainant's trademark.
The Respondent has no rights or legitimate interests in respect of the domain name
The Respondent does not have any registered trademarks or trade names corresponding to the domain name. The Complainant has also not found anything that would suggest that the Respondent has been using LEGO in any other way that would give them any legitimate rights in the name. Consequently the Respondent may not claim any rights established by common usage.
It is also clear that no license or authorization of any other kind has been given by the Complainant to the Respondent, to use the trademark LEGO. In Guerlain S.A. v. Peikang, WIPO Case No. D2000-0055, the panel stated that, "in the absence of any license or permission from the Complainant to use any of its trademarks or to apply for or use any domain name incorporating those trademarks, it is clear that no actual or contemplated bona fide or legitimate use of the domain name could be claimed by Respondent." The Respondent is not an authorized dealer of the Complainant's products and has never had a business relationship with the Complainant.
The Respondent registered the domain name on April 4, 2013. The mere registration of a domain name does not give the owner a right or a legitimate interest in respect of the domain name. It is highly unlikely that the Respondent would not have known of the Complainant's legal rights in the name LEGO at the time of the registration. It is rather obvious that it is the fame of the trademark that has motivated the Respondent to register the domain name. That is, the Respondent cannot claim to have been using LEGO, without being aware of the Complainant's rights to it, especially when the website using the domain name contains the LEGO logo and products sold by the Complainant. This, among other facts, proves that the Respondent's interests cannot have been legitimate.
The Respondent is today not using the domain name in connection with a bona fide offering of goods or services. Instead the Respondent has intentionally chosen a domain name based on a registered trademark in order to generate traffic and income through an online shop of products produced by the Complainant as well as other unrelated products, produced by some of the Complainant's competitors. The Respondent is trying to sponge off the Complainant's world famous trademark. It is important to point out that in the current case, the Respondent is not an authorized reseller. In the present case, the Respondent conveys the false impression that the Respondent is an authorized reseller of the Complainant's products. There is a "copyright" text displayed at the bottom of the website saying (in Polish) that they are an authorized Lego dealer, when in fact they are not.
In addition to above, the current website connected to the domain name offers several unrelated products for sale. Respondent could be using the trademark to bait Internet users and then switch them to other goods. Further, when entering the homepage, the Complainant's trademark protected logotype for LEGO is displayed on the website. The fact that the LEGO logotype is displayed on the website connected to the domain name has earlier been stated not be bona fide use. In LEGO Juris A/S v. Probuilders, WIPO Case No. D2011-0226, the Panel stated: "The prominent use by the Respondent of the Complainant's own logo is clearly designed to imply a connection between the Respondent and the Complainant. Accordingly, such use of the disputed domain name could not be said to be bona fide."
From the above it is clear that the Respondent has no rights or legitimate interest in respect of the domain name.
The domain name was registered and is being used in bad faith
The trademark LEGO in respect to toys belonging to the Complainant has the status of well-known and reputed trademark with a substantial and widespread reputation throughout the whole Community and throughout the world.
The number of third party domain name registrations comprising the trademark LEGO in combination with other words has skyrocketed recent years. The considerable value and goodwill of the mark LEGO is, most likely, a large contribution to this and also what made the Respondent choose to register the domain name at issue here.
The Complainant first tried to contact the Respondent on April 22, 2013 through a cease and desist letter. The Complainant advised the Respondent that the unauthorized use of the LEGO trademark within the domain name violated the Complainant's rights in said trademark. The Complainant requested a voluntary transfer of the domain name and offered compensation for the expenses of registration and transfer fees (not exceeding out of pocket expenses). However, no reply was received. Since the efforts of trying to solve the matter amicably were unsuccessful, the Complainant chose to file a complaint according to the UDRP process. It has been mentioned in earlier disputes that the failure of a respondent to respond to a cease and desist letter, or a similar attempt at contact, has been considered relevant in a finding of bad faith, e.g., News Group Newspapers Limited and News Network Limited v. Momm Amed Ia, WIPO Case No. D2000-1623; Nike, Inc. v. Azumano Travel, WIPO Case No. D2000-1598; and America Online, Inc. v. Antonio R. Diaz, WIPO Case No. D2000-1460
Further, the Respondent has never been granted permission to register the domain name. The Respondent tries to take advantage of the well-known status of the LEGO trademark by intentionally attempting to attract, for commercial gain, Internet users to the registrant's website or other online location, by creating a likelihood of confusion with the Complainant's mark as to the source, sponsorship, affiliation, or endorsement of the registrant's website or location or a product or service on the registrant's website or location.
In a similar case, LEGO Juris A/S v. Dugilcommerce, WIPO Case No. D2012-1971, the Panel stated:
"The Complainant provided evidence showing that the Respondent's website did not merely contain products of the Complainant but also items that resemble products sold by the Complainant. In the Panel's opinion, this constitutes an improper use of the Complainant's mark by the Respondent who appears to have registered the confusingly similar domain name with the intention of taking advantage of the well-known status of the goodwill and fame established by the Complainant in the trademark for commercial gain. See Nikon Inc. v. Technilab, WIPO Case No. D2000-1774. The Panel finds that such use of the disputed domain name constitutes bad faith within the meaning of paragraph 4(b)(iv) of the policy."
The same reasoning should apply here.
To summarize, LEGO is a famous trademark worldwide. It is highly unlikely that the Respondent was not aware of the rights the Complainant has in the trademark and the value of said trademark, at the point of the registration. There is no connection between the Respondent and the Complainant. By using the domain name the Respondent is not making a legitimate non-commercial or fair use without intent for commercial gain but is misleadingly diverting consumers for his own commercial gain.
Consequently, the Respondent should be considered to have registered and to be using the domain name in bad faith.
Remedies Requested
The Complainant requests that the disputed domain name be transferred to the Complainant.
The Respondent made no reply to the Complainant's contentions.
In order for a panel to decide to grant the remedy of transfer or cancellation of a domain name to a complainant under the Policy it is necessary that the complainant must prove, as required by paragraph 4(a) of the Policy, that
(i) the domain name is identical or confusingly similar to a trademark or service mark in which the complainant has rights; and
(ii) the respondent has no rights or legitimate interests in respect of the domain name; and
The fact that the Respondent has not provided a formal Response to the Complaint in this case does not relieve the Complainant of the burden of proving its case. In the absence of a Response, paragraph 5(e) of the Rules expressly requires the Panel to "decide the dispute based upon the complaint". Under paragraph 14(a) of the Rules, in the event of such a "default", the Panel is still required "to proceed to a decision on the complaint", whilst under paragraph 14(b) of the Rules it "shall draw such inferences therefrom as it considers appropriate".
Consequently, the Panel must proceed with an assessment of the Complaint on its merits.
The Complainant has demonstrated relevant registered trademark rights and evidence of fame in the LEGO name and mark, and the Panel is in no doubt that the LEGO mark is indeed internationally well-known.
The disputed domain name is <klocki-lego.info>, which reportedly may be simply translated as "lego block(s)" in Polish.
This amounts to nothing more than a directly descriptive reference to the fundamental elements of the LEGO system – toy construction blocks. The TLD suffix, .info, in this case serves to imply that the domain would be used in relation to provision of information about LEGO blocks. The disputed domain name plainly incorporates the instantly recognisable LEGO name and mark for that purpose.
The Panel therefore finds that the disputed domain name is confusingly similar to a trademark in which the Complainant has rights, and that the requirements of paragraph 4(a)(i) of the Policy are met.
Under paragraph 4(c) of the Policy, any of the following circumstances, (by way of example) might serve to demonstrate a respondent's rights or legitimate interests to a domain name for the purposes of paragraph 4(a)(ii) of the Policy:
(i) before any notice to the respondent of the dispute, use of, or demonstrable preparations to use, the domain name or a name corresponding to the domain name in connection with a bona fide offering of goods or services; or
(ii) the respondent (as an individual, business, or other organization) has been commonly known by the domain name, even if the respondent has acquired no trademark or service mark rights; or
(iii) the respondent is making a legitimate non-commercial or fair use of the domain name, without intent for commercial gain to misleadingly divert consumers or to tarnish the trade mark or service mark at issue.
The Respondent has made no claims to any relevant prior rights of its own. Clearly, the Respondent is not himself known by the disputed domain name, nor does the Respondent himself claim to have made legitimate, non-commercial use of the domain name. The disputed domain name has been used for a website apparently representing the site as that of a "LEGO authorized distributor" for the sale or resale of Lego products and with links to another site or sites also offering competing companies' products. The Complainant has confirmed that the website owner is not a "LEGO authorized distributor" and has not been authorised to register or use any domain name incorporating the LEGO mark. Consequently, in the Expert's view, such use cannot be considered as "bona fide" or to qualify as a "legitimate non-commercial or fair use".
In these circumstances, the Panel accepts the Complainant's submissions that the Respondent has no rights or legitimate interests in respect to the disputed domain name and the requirements of paragraph 4(a)(ii) of the Policy are met.
Under paragraph 4(b) of the Policy, the following are examples of the sort of conduct (without limitation) which, if found, shall be considered as evidence of registration and use in bad faith:
"(i) circumstances indicating that [the Respondent has] registered or [has] acquired the domain name primarily for the purpose of selling, renting, or otherwise transferring the domain name registration to the complainant who is the owner of the trademark or service mark or to a competitor of that complainant, for valuable consideration in excess of [the Respondent's] documented out-of-pocket costs directly related to the domain name; or
(ii) [the Respondent has] registered the domain name in order to prevent the owner of the trademark or service mark from reflecting the mark in a corresponding domain name, provided that [the Respondent has] engaged in a pattern of such conduct; or
(iii) [the Respondent has] registered the domain name primarily for the purpose of disrupting the business of a competitor; or
(iv) by using the domain name, [the Respondent has] intentionally attempted to attract, for commercial gain, Internet users to [the Respondent's] website or other on-line location, by creating a likelihood of confusion with the complainant's mark as to the source, sponsorship, affiliation, or endorsement of [the Respondent's] website or location or of a product or service on [the Respondent's] website or location."
In the present case, the Panel considers that the example of paragraph 4(b)(iv) is unambiguously applicable to the Respondent's use of the disputed domain name. It has been used specifically to attract internet users for commercial gain with deliberate misrepresentation as to the Respondent's business relationship with the Complainant, as also noted in section 6B above. The evidence is sufficient to persuade the Panel that the disputed domain name was indeed registered in bad faith, and that there could be no good faith use without the Complainant's authorisation.
For the purposes of the Policy, therefore, the Panel holds that the Domain Name has been registered and is being used in bad faith, and that paragraph 4(a)(iii) of the Policy is met.
For the foregoing reasons, in accordance with paragraphs 4(i) of the Policy and 15 of the Rules, the Panel orders that the disputed domain name <klocki-lego.info> be transferred to the Complainant.
Keith Gymer


As activists, we are often presented with the challenge of taking an exceptionally complex subject, reducing it to language that the general public can easily understand, and presenting it in the quickest way possible, in order to meet the time constraints of most Americans. An example is creating a thirty second video used to educate the public about a plume of toxic waste in a ground water aquifer, like the one we released last year in Burbank, California.
For this video I was forced to cram over a million pages of EPA documentation into six sentences, because after thirty seconds of video the average American will stop paying attention. Obviously, I was required to leave out a lot of information and constrain myself to bullet points. However, the video quickly stated my case, achieved 44,000 views in less than twenty-four hours, and was very effective. In the post I used to promote the video I included several links to media sourcing, and EPA records, for those that wished to conduct their own research. In a sense, the video was a commercial directing people to the rest of the information I had gathered.
During the release, a former EPA official, now a contractor, came to the page to scientifically nitpick the video, even though the information he was citing was in the links at the bottom of the post. His statements had the effect of appearing to discredit our film piece. In activism this matters, because when one is dealing with a large percentage of everyday Americans, those who do not have PhD's, when someone who has a PhD comes along, the lesser educated people will defer to the expert in the group, because after all, "The person is a doctor!" Yet, later in private e-mails, this very same man stated that my information was accurate, so he ended up misleading a lot of people, with his criticisms.
Another example is my recent article explaining what parts per trillion (ppt) means, meant to help people who are not water experts visualize what ppt is in real world terms. In this article, I used about six sentences, the same that I would use in a video, which basically worked as an analogy. Yet, right in the middle of running a campaign a woman named Madi, who has a Masters degree in who cares, approached me to tell me that I had no idea what I was talking about because I stated that the GenX levels in the Cape Fear river equaled about a teaspoon in 21,500,000 gallons of water.
Of course, she's also nitpicking because what I did was use a conversion of micrograms to one drop unit, so the levels in the river aren't literally a teaspoon, but scaling the ppt calculation using a drop unit provides people who are not water experts a way to quickly understand the scale of the mg/L calculation. The results of her criticisms was to make it appear as if I don't know what I am talking about, when I do, and it equally fooled average people into thinking my calculations weren't correct, or that I was somehow being disingenuous.
These scientists who walk into groups of layman and start dissecting every point seem to have almost no experience communicating with large cross sections of the population, or what it's like running a campaign to citizens with education levels ranging from the guy who dropped out of school in eighth grade to sell weed, to the woman who has ten PhD's from three Ivy League schools. Activists are presented with the option to either go hyper-technical and risk losing the ability communicate with average people, or we can communicate in a simple manner and risk having our words minced by Bill Nye The Science Guy. There is no in between.
For an activist, this phenomenon can be maddening, because no matter what one does, they're screwed. More often than not, a campaign will be chugging along just fine until Mr. Big Brain shows up to point out, in an irritating nasally voice, "to fully understand this concept we have to be extra careful to pay attention to the molecular weight of a carbon molecule in a vacuum fluctuation," and then all bets are off. If I could part the clouds and speak to every egghead scientist on the planet I would remind them that not everyone in this country is operating on their level, that scientists propensity to split hairs — and atoms — has no effect but disrupt important public information campaigns.
To put it into layman's terms, scientists and the general public are like oil and water, or a terrible terrible salad dressing, in that they do not mix, or at least should not mix in an audience for an activism campaign. For five years I have wrestled with this concept, desperately searching for ways to get around it, even including those aforementioned advanced scientific links in the bottoms of the posts, but it turns out that even scientists only have about a thirty second attention span and make no effort to read the fine print, either.
Someday I'll find the answer, a perfect mix of simple and complex but until that day happens, us activists, or anyone else who deals with the public and complex subject matter, will struggle endlessly to get their messages out.


text:
Oleg Golovnev/Shutterstock
After shocking medical scandals, new patient safety champion can restore trust
Published: September 16, 2020 10.14am EDT
Alison Britton, Glasgow Caledonian University
Alison Britton
Professor of Healthcare and Medical Law, Glasgow Caledonian University
Alison Britton does not work for, consult, own shares in or receive funding from any company or organization that would benefit from this article, and has disclosed no relevant affiliations beyond their academic appointment.
Glasgow Caledonian University provides funding as a founding partner of The Conversation UK.
A recent, much-anticipated report called First, Do No Harm has described in detail the suffering undergone by thousands of women over the last 50 years due to the devastating effects of three medical products.
Two of these are pharmaceutical products. Primodos was a hormone-based pregnancy test used in the 1960s and 1970s that was shown to cause miscarriages and birth defects. It was withdrawn from the market in 1978 but not before it had been prescribed to more than 1 million women in the UK.
The second, sodium valproate, is a treatment for epilepsy that causes physical defects, autism and developmental delay in many children when taken by their mothers during pregnancy. It's still prescribed to 17,000 women in the UK every year.
The third product is a pelvic mesh implant, a device used in the surgical repair of pelvic organ prolapse and stress urinary incontinence as an alternative to more invasive surgery. Many women implanted with the mesh have experienced a range of symptoms from recurring infections to mobility issues that caused excruciating and unrelenting pain, profoundly affecting their lives both physically and emotionally. In 2017, one woman died after contracting sepsis from her own implant while others have killed themselves due to unbearable pain.
All three products have now been shown to have caused life-changing injury, chronic pain and even death. Yet despite women voicing their concerns, they were not told of the inherent risks with the treatment, or were simply ignored or not believed.
Taking the lead
In her 194-page report, Baroness Julia Cumberlege identified 12 overarching problems which could all be applied to the three products. These centred around patients not being listened to and their feelings of guilt and abandonment. The review contains a list of actions for improvement, which stress the urgent need for a full and transparent disclosure of information, to allow patients to make informed choices about treatment.
The first of nine recommendations was for the UK government to apologise to all those harmed by these products. But it is the second recommendation which is the foundation for resolving the concerns outlined in the review: the creation of a patient safety commissioner.
The appointment would be an independent public leader with a statutory responsibility, championing the value of listening to patients and promoting NHS users' perspectives in seeking improvements to patient safety around the use of medicines and medical devices.
The Scottish government has taken the lead in announcing that such a role will be created in Scotland and has included it in its programme for government 2020/2021. The new role will not be without its challenges, not least determining what it will look like and what it needs to achieve to ensure that patients' wishes are at the heart of all healthcare decision-making.
To have value, the disclosure of information about the risks and benefits of medical treatment should be an integral part of dialogue and discussion between the patient and their healthcare provider. It is well settled in law that the final decision over treatment – including the option of no treatment – is the right and the choice of all competent, adult patients.
The failure of the UK's healthcare systems to respond to patient concerns is a recurring theme, as the 2020 Patterson Inquiry demonstrates. Following years of complaints, the inquiry investigated a consultant who was ultimately convicted of 17 counts of wounding with intent and three counts of unlawful wounding. He was imprisoned in 2017.
The recommendations from this report spoke of a culture of avoidance and denial to acknowledge that something was seriously wrong. As a result, the UK government committed to ensuring lessons are learned in the interests of enhancing patient protection and safety.
Similar findings can be found in the evidence presented following the Bristol Inquiry, which found that between 30 and 35 children undergoing heart surgery at Bristol Royal Infirmary who died between 1991 and 1995 would probably have survived if treated elsewhere. The failings were found not to be the result of flawed surgery alone, but inadequacies at every point, from referral to diagnosis, surgery and intensive care.
Patients need to be informed about inherent risks so that they can make the right decisions about treatment and surgery. Shutterstock
Changing the culture
Over the years, as more scandals come to light, the public continues to be shocked at the harrowing evidence of patient harm and suffering, and determines, once again, that something needs to be done.
Often, established organisations are tasked with ensuring that such harms will never happen again. These retrospective gestures fail to address the underlying changes in the NHS culture that need to occur, and this should be one of the first tasks of the patient safety commissioner.
Establishing such a role will not be without cost or effort. The Cumberlege review has provided guidance and the patient safety commissioner could be modelled on the Scottish Office of the Public Guardian or the well-regarded Children's Commissioner for England. It also has to be independent to maximise impact and confidence.
The creation of a patient safety commissioner is an excellent opportunity for Scotland to lead the way in patient treatment and care. Ensuring that patients are heard and believed should be a fundamental aim – but it needs more.
Restoring patient trust should be at the heart of this role. Its success will lie in effective and rigourous groundwork. Patient groups, public representatives and healthcare organisations all have to be engaged and willing to effect real and lasting change.
Primodos

redpajama_set_name: RedPajamaCommonCrawl


text:
#include "FontManager.h"

#include "chronotext/InputSource.h"

#include "cinder/Xml.h"
#include "cinder/Utilities.h"

using namespace std;
using namespace ci;
using namespace chr;

FontManager::FontManager()
{
    ftHelper = make_shared<FreetypeHelper>();
}

ActualFont* FontManager::getActualFont(const string &uri, float baseSize, bool useMipmap, int padding)
{
    FontKey key(uri, baseSize, useMipmap);
    auto it = actualFonts.find(key);

    if (it != actualFonts.end())
    {
        return it->second.get();
    }
    else
    {
        try
        {
            auto font = new ActualFont(ftHelper, InputSource::get(uri), baseSize, useMipmap, padding);
            actualFonts[key] = unique_ptr<ActualFont>(font);

            return font;
        }
        catch (exception &e)
        {}

        return NULL;
    }
}

VirtualFont* FontManager::getVirtualFont(const string &uri, float baseSize, bool useMipmap, int padding)
{
    FontKey key(uri, baseSize, useMipmap);
    auto it = virtualFonts.find(key);

    if (it != virtualFonts.end())
    {
        return it->second.get();
    }
    else
    {
        auto font = new VirtualFont(itemizer, baseSize);
        virtualFonts[key] = unique_ptr<VirtualFont>(font);

        XmlTree doc(InputSource::load(uri));
        auto rootElement = doc.getChild("VirtualFont");

        for (auto &fontElement : rootElement.getChildren())
        {
            auto langList = getLanguageList(fontElement->getAttributeValue<string>("lang", ""));

            for (auto &lang : langList)
            {
                for (auto &variantElement : fontElement->getChildren())
                {
                    if (variantElement->getTag() == "Group")
                    {
                        for (auto &refElement : variantElement->getChildren())
                        {
                            string uri = refElement->getValue();

                            if (font->add(lang, getActualFont(uri, baseSize, useMipmap, padding)))
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        string uri = variantElement->getValue();
                        font->add(lang, getActualFont(uri, baseSize, useMipmap, padding));
                    }
                }
            }
        }

        return font;
    }
}

void FontManager::unloadTextures()
{
    for (auto &it : actualFonts)
    {
        it.second->unloadTextures();
    }
}

vector<string> FontManager::getLanguageList(const string &languages)
{
	return split(languages, ":");
}

redpajama_set_name: RedPajamaGithub


text:
Election Drama!
Olivia Fair, Staff Reporter|November 8, 2016
Jack Bendik, '17, comments on Donald Trump.
Republican and Democratic candidates are famous for their flawed personalities. People will tell you that Hillary Clinton is a liar and Donald Trump is an idiot. However, ask the average American to name three policies specific to Hillary Clinton and you will be met with a blank stare. Ask the average American to name everything they hate about Clinton and a variety of insults will roll out of their mouths, discrediting her likability. Why is this? Barack Obama has been a very likable president; even if you don't support his policies, most people can agree that he'd be a good friend to have. Even John McCain, Obama's opponent in the 2008 election, defended Obama's character, calling him a "family man" at a press conference shown by ABC News.
It's important to understand the policies of each candidate and how they will consequently affect the daily lives of the students of Bronx Science. The president of the United States greatly affects all our generation. Trump's educational policies would reduce federal regulations. He's promised to eliminate of the Common Core, a standardized education system put in place for all students who have graduated or are graduating prior to 2017. Trump has continually promised that, as president, he will rid the schools of the United States of the Common Core. According to The Washington Post, Trump claimed, "I'm a tremendous believer in education. But education has to be at a local level. We cannot have the bureaucrats in Washington telling you how to manage your child's education. So Common Core is a total disaster. We can't let it continue."
The New York Times cites Donald Trump speaking about the right of any child, regardless of socioeconomic background, to choose their school. "As president, I will establish the national goal of providing school choice to every American child living in poverty," Trump said. Although Trump has not been more specific than this in his plan to reform education, many people feel overjoyed at the thought of his proposed solutions.
Others have some problems with Trump's words. Jack Bendik '17, responded by saying this proposal seemed "unfeasible, especially coming from someone with no political experience or regard for lower-income families or minorities."
Meanwhile, Clinton's educational platform promises a "debt-free college" and increased taxes to reform education. Clinton has promised to modernize and elevate the status of a teacher, provide every student with education regarding computer science, as well as provide over two billion dollars to fund education systems to reform their overly harsh rules and punishments for breaking said rules. While Clinton has claimed to support unions and wants to protect teachers, she also admits the importance of investigating the tenure granted to teachers who aren't fit for their jobs.
Rabbi Rahman, '17, comments on Hillary Clinton.
Bronx Science has many tenured teachers, some of whom are loved by students, and some of whom are respected, but not as outstandingly well-liked by students or fellow faculty. This issue is near and dear to everyone at Bronx Science, as the rules and regulations on education will directly affect all of us. Rabbi Rahman '17 said, "Throughout my years at Bronx Science, I've had a few teachers who would benefit from Clinton's educational proposals. Even though Hillary would be the oldest president ever elected, her educational ideas are modern." Supporters of Clinton value her experience in Washington D.C. over all else, as revealed by a student who wished to remain anonymous, who said, "In my opinion, though she does vacillate between opinions, she has hopefully learned from her mistakes, and I think the scrutiny she has been put under, especially by former Sanders supporters like myself, will lead her to only strengthen her own opinions in favor of a strong, steady stance." Soon, Bronx Science students will learn what's in store for their educational future.
High Incarceration Rates and COVID-19: A Perfect Storm
A Winter Like No Other
The Future of Freedom is in the Supreme Court's Hands
The Arctic: The New Cold War?
The "Mask Slackers" of the 1918 Pandemic — Different Time, Same Complaint
A Paradigm Shift: the SAT Exam is Now Optional at Many Colleges and Universities
An Analysis of Merck's New COVID-19 Treatment Pill and the State of the Pharmaceutical Industry
The Invasion Happening Under Our Noses: Invasive Species
Hope For the Holidays: New York City is Poised For a Successful Travel Reopening


We have compiled these resources to help you in your time of need. If you have further questions, you can visit our Frequently Asked Questions page, call us at (320) 632-5242, or contact us here.
Shelley Funeral Chapels is presenting a life saving initiative to the area. Vital ICE provides a platform on which to list your vital medicinal information, making it readily available to EMS and other First Responders.


Topic: HELP - what can I plant now?
Re: HELP - what can I plant now?
Ow! not a nice thought! Mine are so nosey-they'd be sure to be caught!
That's what I call positive - send this model to G8!
Lady's mantle - tough with a soft side - prefers the shade - and manages to thrive in many different places.
Topic: ... cut my own hair?
Re: ... cut my own hair?
I have short hair - and I really object to paying a minimum of £25!
HELP - what can I plant now?
I'm with Graye - its not the housewife - its the 'little' - defo condescending - but she's probably envious.
Doesn't matter what anyone else thinks - are you happy? you always sound it in your postings.
Took me years to stop trying to be what other folk wanted - you be who you want.
Topic: Update-LOL what a week!
Re: LOL what a week!
hey Yugogypsy - hope things are looking up by now - and Wolfsong - the philosophy may not be so bad as you think!
makes you pig sick really!
Oh - and try some oinkment for your rashers Big Al!


Oooh. . . . that sux. . ... thankfully the failure didn't cause you to lose control.
Thats no good! Hopefully you be up and running again soon!
There are some custom make upper control arms with screw adjust, just have to search hard for them on here.
You should try the rear arms that Matt had fabricated by Jay's Hotrods. They are adjustable for more rear camber. I put a set on my car last winter and they have served me well. I have only had two track days this year, but both had lots of high speed with the Continental slicks mounted. I have -1.5 degrees rear camber and can get more if I want.
Jay has been very good to work with. PM me if you need more details.


Data Protection Legislation means the EU General Data Protection Regulation 2016/679 ("GDPR"); together with all other applicable and national implementing legislation relating to privacy or data protection; and where we use the terms "personal data", "data subject", "controller", "processor" and "process" (and its derivatives), such terms shall have the meanings given to them in the Data Protection Legislation.
ICICI Bank Limited is committed to keeping your personal data private. We shall process any personal data we collect from you in accordance with Data Protection Legislation and the provisions of this Privacy Notice. Please read the following carefully to understand our views and practices regarding your personal data and how we will treat it.
For the purpose of the GDPR, ICICI Bank is the data controller of your information. This means that we are responsible for deciding how we hold and use your personal data. We are required to notify you of the information contained in this Privacy Notice, under Data Protection Legislation.
ICICI Bank will collect and process your personal data that you provide us through application forms, our website, face-to-face and electronic communication (including telephone conversations) in order to provide our services to you.
There are links in our website leading to other sites. This guidance does not extend to those sites. We therefore, would recommend the reading of the data safeguarding policies of these sites.
All proper and expected technical and organizational security procedures have been taken to shield your personal data and to prevent that no unauthorised persons gain access to the same. These precautions include, for example, the transfer of all data entered into our internet presence using SSL encryption (128 bit) or the use of a mandatory authentication mechanism to access your account.
You have explicitly agreed to us, processing such information for a specific reason.
to keep our customers informed about relevant services, unless you have indicated at any time that you do not wish us to do so.
For assessment, testing (including systems tests) and analysis (including credit and/ or behaviour scoring), statistical, market and product analysis and market research.
to keep you informed about products and services you hold with us and to send you information about products or services (including those of other companies) which may be of interest to you.
Where it's in our legitimate interests to share information with our customers about products / services that may be relevant and beneficial to them.
Where we send you marketing messages, you can always tell us when you no longer wish to receive them.
To assess any application you make, including carrying out fraud, money laundering, identity, sanctions screening and any other regulatory checks.
If you apply to us for a product, your application may be processed by an automated decision-making process which may carry out credit and affordability assessment checks to determine whether your application will be accepted. Where these automated processes suggest that your application should be rejected, we may manually review your application before making a final decision. We may also use automated processes to decide credit limits.
We may also carry out automated anti-money laundering and sanction checks. This means that we may automatically decide that you pose a fraud or money laundering risk, if the processing reveals your behaviour to be consistent with that of known fraudsters or money launderers, your behaviour is inconsistent with your previous submissions, or you appear to have deliberately hidden your true identity.
a record of any fraud or money laundering risk will be retained by the fraud prevention agency and may result in others refusing to provide services or employment to you.
We keep all your personal data confidential. However, in order to be able to service your needs to the best of our ability, we may share any information you provide to us with our group companies and their agents, counterparties and support services or data providers, wherever located. If you have provided information to other members of our group, those entities may also share that information with us.
To help us provide services, your data will be processed internally and externally by other third parties. We use third parties for administrative, servicing, monitoring of your data. We will outsource some services to third parties whom we consider capable of performing the required processing activities, so that there is no reduction in the service standard provided to you by us.
Any revenue service or tax authority including Income Tax Department, if obliged to do so under applicable regulations.
Overseas regulators and authorities in connection with their duties (such as crime prevention).
Credit reference, identity and address verification organizations who may record and use your information and disclose it to other lenders, financial services organizations and insurers. Your information may be used by those third parties to make assessments in relation to your creditworthiness for debt tracing.
For further information, please refer to our product specific terms and conditions and application form.
As we are a branch of a Bank established in Bahrain, if you are an EU resident or national, information about you will be transferred to us and to other parties in countries outside the European Economic Area (particularly India and Bahrain) for any of the purposes described in this Privacy Notice.
If we transfer your information outside the European Economic Area (for example because we have to provide such information by law), we will use best endeavours to put in place appropriate safeguards to ensure that your information remains adequately protected.
We will keep the information we collect about you on our systems or with third parties for as long as required for the purposes set out above or as required to comply with any legal obligations to which we are subjected to.
All information you provide to us is stored in our secure servers. Where we have given you (or where you have chosen) a password which enables you to access certain parts of our website, you are responsible for keeping this password confidential. We ask you not to share your password with anyone.
We have put in place appropriate security measures to prevent your personal data from being accidentally lost, used or accessed in an unauthorised way, altered or disclosed. In addition, we limit access to your personal data to those employees, agents, contractors and other third parties who have a business need to know basis. They will only process your personal data on our instructions and they are subject to a duty of confidentiality. We have put in place procedures to deal with any suspected data security breach and will notify you and any applicable regulator of a suspected breach where we are legally required to do so.
We may communicate with you via electronic mail (e-mail). We will never ask you for your password.
When you contact us through any of our communication channels including visiting a local branch or calling the telephone banking service, we will verify your identity by asking you a number of questions based on information known to us about you and the transactions on your account. We may record your calls for training, quality and security purposes.
We and other members of our group may use your information from time to time to inform you by letter, telephone, text (or similar) messages, e-mail or other electronic means, about similar services which may be of interest to you or them.
Any request for access to a copy of your personal data must be in writing and we will endeavour to respond within a reasonable period and in any event within one month in compliance with Data Protection Legislation. We will provide this information free of charge unless the request is manifestly unfounded or excessive. We will comply with our legal obligations as regards any individual's rights as a data subject.
To protect your privacy and security, we may take reasonable steps to verify your identity before providing you with the details.
You have the right to lodge a complaint with the supervisory authority of state of habitual residence.
The content or services mentioned on our website may be changed in future and consequently this Privacy Notice may also change. Any changes we may make to this Privacy Notice in future will be posted on this page and wherever appropriate, will be notified to you by e-mail. We recommend that you re-visit this page regularly and inform us if you do not agree to any term mentioned here.
Safeguarding your right to privacy is imperative to us. Hence, we request you to peruse through our Cookie Guidance.
These cookies work toward establishing a visitor session. utmb takes a timestamp of the precise moment when someone visits the site, while utmc takes a timestamp of the precise moment a visitor leaves the site.
This cookie keeps tabs on the number of times a visitor has viewed the website, when was their first visit and when did their last visit happen.
To identify the traffic sources as well as to determine the visitor navigation to the website. For example, this cookie defines which search engine was used, which link was clicked on, what keyword was used and where in the world the user accessed our website from.


text:
@import QuartzCore;

@interface SSPullToRefreshView ()
@property (nonatomic, readwrite) SSPullToRefreshViewState state;
@property (nonatomic, readwrite) UIScrollView *scrollView;
@property (nonatomic, readwrite, getter = isExpanded) BOOL expanded;
@property (nonatomic) CGFloat topInset;
@property (nonatomic) dispatch_semaphore_t animationSemaphore;
@end

@implementation SSPullToRefreshView

@synthesize delegate = _delegate;
@synthesize scrollView = _scrollView;
@synthesize expandedHeight = _expandedHeight;
@synthesize contentView = _contentView;
@synthesize state = _state;
@synthesize expanded = _expanded;
@synthesize defaultContentInset = _defaultContentInset;
@synthesize topInset = _topInset;
@synthesize animationSemaphore = _animationSemaphore;
@synthesize style = _style;

#pragma mark - Accessors

- (void)setState:(SSPullToRefreshViewState)state {
	BOOL wasLoading = _state == SSPullToRefreshViewStateLoading;
    _state = state;

	// Forward to content view
	[self.contentView setState:_state withPullToRefreshView:self];

	// Update delegate
	id<SSPullToRefreshViewDelegate> delegate = self.delegate;
	if (wasLoading && _state != SSPullToRefreshViewStateLoading) {
		if ([delegate respondsToSelector:@selector(pullToRefreshViewDidFinishLoading:)]) {
			[delegate pullToRefreshViewDidFinishLoading:self];
		}
	} else if (!wasLoading && _state == SSPullToRefreshViewStateLoading) {
		[self _setPullProgress:1.0f];
		if ([delegate respondsToSelector:@selector(pullToRefreshViewDidStartLoading:)]) {
			[delegate pullToRefreshViewDidStartLoading:self];
		}
	}
}

- (void)setExpanded:(BOOL)expanded {
	_expanded = expanded;
	[self _setContentInsetTop:expanded ? self.expandedHeight : 0.0f];
}

- (void)setScrollView:(UIScrollView *)scrollView {
	void *context = (__bridge void *)self;
	if ([_scrollView respondsToSelector:@selector(removeObserver:forKeyPath:context:)]) {
		[_scrollView removeObserver:self forKeyPath:@"contentOffset" context:context];
	} else if (_scrollView) {
		[_scrollView removeObserver:self forKeyPath:@"contentOffset"];
	}

	_scrollView = scrollView;
	self.defaultContentInset = _scrollView.contentInset;
	[_scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:context];
}

- (UIView<SSPullToRefreshContentView> *)contentView {
	// Use the simple content view as the default
	if (!_contentView) {
		self.contentView = [[SSPullToRefreshSimpleContentView alloc] initWithFrame:CGRectZero];
	}
	return _contentView;
}

- (void)setContentView:(UIView<SSPullToRefreshContentView> *)contentView {
	[_contentView removeFromSuperview];
	_contentView = contentView;

	[_contentView setState:self.state withPullToRefreshView:self];
	[self refreshLastUpdatedAt];
	[self addSubview:_contentView];
}

- (void)setDefaultContentInset:(UIEdgeInsets)defaultContentInset {
	_defaultContentInset = defaultContentInset;
	[self _setContentInsetTop:self.topInset];
}

- (void)setStyle:(SSPullToRefreshViewStyle)style {
	_style = style;
	[self setNeedsLayout];
}

#pragma mark - NSObject

- (void)dealloc {
	self.scrollView = nil;
	self.delegate = nil;
#if !OS_OBJECT_USE_OBJC
	dispatch_release(_animationSemaphore);
#endif
}

#pragma mark - UIView

- (void)removeFromSuperview {
	self.scrollView = nil;
	[super removeFromSuperview];
}

- (void)layoutSubviews {
	CGSize size = self.bounds.size;
	CGSize contentSize = [self.contentView sizeThatFits:size];

	if (contentSize.width < size.width) {
		contentSize.width = size.width;
	}

	if (contentSize.height < self.expandedHeight) {
		contentSize.height = self.expandedHeight;
	}

	CGRect contentFrame;
	contentFrame.origin.x = roundf((size.width - contentSize.width) / 2.0f);
	contentFrame.size = contentSize;
	switch (self.style) {
		case SSPullToRefreshViewStyleScrolling:
			contentFrame.origin.y = size.height - contentSize.height - self.defaultContentInset.top;
			break;
		case SSPullToRefreshViewStyleStatic:
			contentFrame.origin.y = size.height + self.defaultContentInset.top + self.scrollView.contentOffset.y;
			break;
	}

	self.contentView.frame = contentFrame;
}

#pragma mark - Initializer

- (instancetype)initWithFrame:(CGRect)frame {
    return [self initWithFrame:frame scrollView:nil delegate:nil];
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder {
    return [self initWithFrame:CGRectZero scrollView:nil delegate:nil];
}

- (instancetype)initWithFrame:(CGRect)frame scrollView:(UIScrollView *)scrollView delegate:(id<SSPullToRefreshViewDelegate>)delegate {
    if ((self = [super initWithFrame:frame])) {
        for (UIView *view in self.scrollView.subviews) {
            if ([view isKindOfClass:[SSPullToRefreshView class]]) {
                [[NSException exceptionWithName:@"SSPullToRefreshViewAlreadyAdded" reason:@"There is already a SSPullToRefreshView added to this scroll view. Unexpected things will happen. Don't do this." userInfo:nil] raise];
            }
        }

        self.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        self.scrollView = scrollView;
        self.delegate = delegate;
        self.state = SSPullToRefreshViewStateNormal;
        self.expandedHeight = 70.0f;
        self.defaultContentInset = scrollView.contentInset;

        // Add to scroll view
        [self.scrollView addSubview:self];

        // Semaphore is used to ensure only one animation plays at a time
        _animationSemaphore = dispatch_semaphore_create(0);
        dispatch_semaphore_signal(_animationSemaphore);
    }
    return self;
}

- (instancetype)initWithScrollView:(UIScrollView *)scrollView delegate:(id<SSPullToRefreshViewDelegate>)delegate {
	CGRect frame = CGRectMake(0.0f, 0.0f - scrollView.bounds.size.height, scrollView.bounds.size.width,
							  scrollView.bounds.size.height);
    return [self initWithFrame:frame scrollView:scrollView delegate:delegate];
}

#pragma mark - Loading

- (void)startLoading {
	[self startLoadingAndExpand:NO animated:NO];
}

- (void)startLoadingAndExpand:(BOOL)shouldExpand animated:(BOOL)animated {
	[self startLoadingAndExpand:shouldExpand animated:animated completion:nil];
}

- (void)startLoadingAndExpand:(BOOL)shouldExpand animated:(BOOL)animated completion:(void(^)())block {
	// If we're not loading, this method has no effect
    if (self.state == SSPullToRefreshViewStateLoading) {
		return;
	}

	// Animate back to the loading state
	[self _setState:SSPullToRefreshViewStateLoading animated:animated expanded:shouldExpand completion:block];
}

- (void)finishLoading {
	[self finishLoadingAnimated:YES completion:nil];
}

- (void)finishLoadingAnimated:(BOOL)animated completion:(void(^)())block {
	// If we're not loading, this method has no effect
    if (self.state != SSPullToRefreshViewStateLoading) {
		return;
	}

	// Animate back to the normal state
	__weak SSPullToRefreshView *blockSelf = self;
	[self _setState:SSPullToRefreshViewStateClosing animated:animated expanded:NO completion:^{
		blockSelf.state = SSPullToRefreshViewStateNormal;

		if (block) {
			block();
		}
	}];
	[self refreshLastUpdatedAt];
}

- (void)refreshLastUpdatedAt {
	NSDate *date = nil;
	id<SSPullToRefreshViewDelegate> delegate = self.delegate;
	if ([delegate respondsToSelector:@selector(pullToRefreshViewLastUpdatedAt:)]) {
		date = [delegate pullToRefreshViewLastUpdatedAt:self];
	} else {
		date = [NSDate date];
	}

	// Forward to content view
	if ([self.contentView respondsToSelector:@selector(setLastUpdatedAt:withPullToRefreshView:)]) {
		[self.contentView setLastUpdatedAt:date withPullToRefreshView:self];
	}
}

#pragma mark - Private

- (void)_setContentInsetTop:(CGFloat)topInset {
	self.topInset = topInset;

	// Default to the scroll view's initial content inset
	UIEdgeInsets inset = self.defaultContentInset;

	// Add the top inset
	inset.top += self.topInset;

	// Don't set it if that is already the current inset
	if (UIEdgeInsetsEqualToEdgeInsets(self.scrollView.contentInset, inset)) {
		return;
	}

	// Update the content inset
	self.scrollView.contentInset = inset;

	// For static style, trigger layout subviews immediately to prevent jumping
	if (self.style == SSPullToRefreshViewStyleStatic) {
		[self setNeedsLayout];
		[self layoutIfNeeded];
	}

	// If scrollView is on top, scroll again to the top (needed for scrollViews with content > scrollView).
	if (self.scrollView.contentOffset.y <= 0.0f) {
		[self.scrollView scrollRectToVisible:CGRectMake(0.0f, 0.0f, 1.0f, 1.0f) animated:NO];
	}

	// Tell the delegate
	id<SSPullToRefreshViewDelegate> delegate = self.delegate;
	if ([delegate respondsToSelector:@selector(pullToRefreshView:didUpdateContentInset:)]) {
		[delegate pullToRefreshView:self didUpdateContentInset:self.scrollView.contentInset];
	}
}

- (void)_setState:(SSPullToRefreshViewState)state animated:(BOOL)animated expanded:(BOOL)expanded completion:(void (^)(void))completion {
	SSPullToRefreshViewState fromState = self.state;

	id delegate = self.delegate;
	if ([delegate respondsToSelector:@selector(pullToRefreshView:willTransitionToState:fromState:animated:)]) {
		[delegate pullToRefreshView:self willTransitionToState:state fromState:fromState animated:animated];
	}

	if (!animated) {
		self.state = state;
		self.expanded = expanded;

		if (completion) {
			completion();
		}

		if ([delegate respondsToSelector:@selector(pullToRefreshView:didTransitionToState:fromState:animated:)]) {
			[delegate pullToRefreshView:self didTransitionToState:state fromState:fromState animated:animated];
		}

		return;
	}

	__weak SSPullToRefreshView *weakSelf = self;
	dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        SSPullToRefreshView *strongSelf = weakSelf;
        if (strongSelf == nil) {
            return;
        }

		dispatch_semaphore_wait(strongSelf.animationSemaphore, DISPATCH_TIME_FOREVER);
		dispatch_async(dispatch_get_main_queue(), ^{
            SSPullToRefreshView *strongSelf = weakSelf;
            if (strongSelf == nil) {
                return;
            }

			[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
				strongSelf.state = state;
				strongSelf.expanded = expanded;
			} completion:^(BOOL finished) {
				dispatch_semaphore_signal(strongSelf.animationSemaphore);
				if (completion) {
					completion();
				}

				if ([delegate respondsToSelector:@selector(pullToRefreshView:didTransitionToState:fromState:animated:)]) {
					[delegate pullToRefreshView:strongSelf didTransitionToState:state fromState:fromState animated:animated];
				}
			}];
		});
	});
}

- (void)_setPullProgress:(CGFloat)pullProgress {
	// Don't do anything if the content view doesn't implement the method
	if (![self.contentView respondsToSelector:@selector(setPullProgress:)]) {
		return;
	}

	// Ensure the value is between 0 and 1 (or higher if they keep pulling)
	pullProgress = fmaxf(0.0f, pullProgress);

	// Notify the content view
	[self.contentView setPullProgress:pullProgress];
}

#pragma mark - NSKeyValueObserving

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
	// Call super if we didn't register for this notification
	if (context != (__bridge void *)self) {
		[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
		return;
	}

	// We don't care about this notificaiton
	if (object != self.scrollView || ![keyPath isEqualToString:@"contentOffset"]) {
		return;
	}

	// Need to layout subviews for static style
	if (self.style == SSPullToRefreshViewStyleStatic) {
		[self setNeedsLayout];
	}

	// Get the offset out of the change notification
	CGFloat y = [[change objectForKey:NSKeyValueChangeNewKey] CGPointValue].y + self.defaultContentInset.top;

	// Scroll view is dragging
	if (self.scrollView.isDragging) {
		// Scroll view is ready
		if (self.state == SSPullToRefreshViewStateReady) {
			// Update the content view's pulling progressing
			[self _setPullProgress:-y / self.expandedHeight];

			// Dragged enough to refresh
			if (y > -self.expandedHeight && y < 0.0f) {
				self.state = SSPullToRefreshViewStateNormal;
			}
		// Scroll view is normal
		} else if (self.state == SSPullToRefreshViewStateNormal) {
			// Update the content view's pulling progressing
			[self _setPullProgress:-y / self.expandedHeight];

			// Dragged enough to be ready
			if (y < -self.expandedHeight) {
				self.state = SSPullToRefreshViewStateReady;
			}
		// Scroll view is loading
		} else if (self.state == SSPullToRefreshViewStateLoading) {
            CGFloat insetAdjustment = y < 0 ? fmaxf(0, self.expandedHeight + y) : self.expandedHeight;
			[self _setContentInsetTop:self.expandedHeight - insetAdjustment];
		}
		return;
	} else if (self.scrollView.isDecelerating) {
		[self _setPullProgress:-y / self.expandedHeight];
	}

	// If the scroll view isn't ready, we're not interested
	if (self.state != SSPullToRefreshViewStateReady) {
		return;
	}

	// We're ready, prepare to switch to loading. Be default, we should refresh.
	SSPullToRefreshViewState newState = SSPullToRefreshViewStateLoading;

	// Ask the delegate if it's cool to start loading
	BOOL expand = YES;
	id<SSPullToRefreshViewDelegate> delegate = self.delegate;
	if ([delegate respondsToSelector:@selector(pullToRefreshViewShouldStartLoading:)]) {
		if (![delegate pullToRefreshViewShouldStartLoading:self]) {
			// Animate back to normal since the delegate said no
			newState = SSPullToRefreshViewStateNormal;
			expand = NO;
		}
	}

	// Animate to the new state
	[self _setState:newState animated:YES expanded:expand completion:nil];
}

@end


Producing a work of art often involves using photographic reference. The artist may prefer to produce photos rather than source from other image banks, but soon discovers that poor photos could have an impact upon the painting. Blurred images or elements too small could force the artist to fill in the gaps, resulting in an unsatisfactory piece of art. How does the artist create photographs that will support the artwork?
The artist may feel disappointed with photos meant to support an oil painting or similar work of art. The photos might be blurred or contain insufficient visual information to be of any use. The following comprise common reason why photos are immediately deleted from the pictures file on the computer.
The subject matter appears too small in the photo.
The subject exhibits little detail due to poor lighting.
Vital elements are either obscured or cut off on the photo.
Before improvements can be made, the photographer needs to identify the causes at fault. The following are common causes for poor photography.
Simply pointing and shooting without any further thought for how the photo is composed.
Using a camera phone for vital pictures.
Using the digital zoom for zooming into objects far away.
Photographing the subject into the light, causing a silhouetted effect.
Not getting sufficiently close to the subject.
Low visual awareness of what lies within the LCD screen, causing important elements to be cropped.
Using a wide angle lens for close ups, causing distortion.
Great photos are vital if used for creating artwork. Really, a good photo depends upon three factors: good lighting, good focusing and good composition. Firstly, good lighting is vital. Don't shoot indoors and avoid using a flash. Look for interesting light and shadow over the subject matter, such as a landscape. Bright light will enable your camera to use a high ISO and a short shutter speed, which together retains good pixellation and reduces camera shake.
Good light can be found outdoors on a bright cloudy day or in sun. Don't shoot into the light, or the subject matter will appear as a silhouette. To illuminate deep shadows, shoot near a reflective surface, such as a white wall, or use a fill-in flash. If shooting indoors, do so near a large window or in a conservatory. Ensure the camera is able to employ a shutter speed in excess of 125th of a second. Failing that, a tripod would be vital for shutter speeds slower than 60th of a second.
Squeeze the shutter release gently, not abruptly. This will reduce camera shake. If wanting to get the background in focus, set the aperture to a smaller size. This might be F8 or smaller. A small aperture will create a deep focal length, so that objects of various distances will be in focus. Note that the closer the object is, the shallow the depth of field will be. Zooming in will also create a shallower depth of field. Diligent use of the aperture setting will ensure more objects will be in focus.
Avoid using the digital zoom. This function simply crops the view through the LCD screen rather than actually zooming in optically. If the zoom function is important, invest in a digital camera with a powerful zoom (say x 5 or more) and with good resolution. Don't go for a super megapixel camera boasting more than 15 megapixels in resolution, for this will detrimentally affect the quality of the image. A digital SLR offers the photographer full control over the photographs. Cameras with a fixed lens may rely solely on the digital zoom for close-ups. Avoid if possible. Detachable lenses can now be purchased, where an additional lens can be screwed onto the digital camera's existing lens to attain a more powerful zoom or a wider viewpoint.
When it comes to taking shots of people, exercise all of the above, but avoid using the wide angle lens in close-ups. This will have an unflattering effect upon the subject, creating oversized noses or mouths. I would zoom in optically in order to flatten out the planes of the face. Describe form by trying out sidelight rather than shooting the subject fully lit. This will create interesting shadows over the face, ideal for oil painting art techniques.
Always take more photos than you think you will need. Try out different vantage points, lighting and proximities from the subject. Unsuccessful photos can always be deleted once uploaded onto the computer. Make sure nothing essential has been cropped from the viewfinder and watch out for the subject appearing too small on the LCD screen. Bear in mind that a combination of photos can be used for the painting rather than just one.
Producing photos for artwork can be frustrating if the images turn out poor. Raising visual awareness of what lies within the LCD screen is the key. Look out for poor lighting and beware of using the digital zoom or of cropping off vital elements. Good lighting is vital for high detail in a photo. This means a small aperture can be used for deep focal field. If high quality images are imperative, consider investing in a digital camera with high zoom capacity, resolution, or a digital SLR.
I copied this advice to a word document for future reference! Thank you SO much!
Glad my advice has been of help. I have since done a light edit on this article. You might like to copy it again, as I have made minor adjustments to the info.
Hi thanks for sharing the Photography Tips for Artists. this nice post.


text:
Heißer Schnee ist der zweite Film aus der Krimireihe Kommissar Beck – Die neuen Fälle, der 1998 mit Peter Haber und Mikael Persbrandt in den Hauptrollen produziert wurde.

Handlung

John Banck und Yvonne Jäder haben Hinweise auf eine Amphetamin-Lieferung aus Polen bekommen. Sie stoppen den Lastwagen und zwingen den Fahrer, Mikael Sjögren, die Übergabe für seinen Abnehmer sofort durchzuführen. Am vereinbarten Treffpunkt erfolgt der Zugriff durch die Polizei, aus einem plötzlich auftauchenden BMW wird jedoch auf Sjögren geschossen, der daraufhin an seinen Verletzungen stirbt. Am nächsten Morgen erkennt Beck im Bericht der Drogenfahndung Sjögren als seinen Sohn, der vor Jahren den Kontakt zu ihm abgebrochen hat. Beck ist schockiert und schottet sich ab, denkt sogar an Kündigung.

Gunvald und Lena werden unterdessen zu einem Todesfall im Restaurant "Eule" gerufen. Dort wurden menschliche Leichenteile in einem Grill gefunden, eine Identifizierung ist jedoch nicht möglich, da der Kopf fehlt. Gunvald vermutet, dass der Stockholmer Verbrecherkönig Gavling seine Finger im Spiel hat und mit dem Mord ein Exempel statuieren wollte.

Da Beck nichts über seinen Sohn weiß, beschließt er, sich zumindest nach seinem Tod noch ein Bild von ihm zu machen. In einer Diskothek trifft er einen Sozialarbeiter, der Micke zwar nicht kennen will, ihm aber den Umgang der Jugendlichen mit Drogen erklärt. Mit der Ärztin Jeanette Bolin, die Micke nach der Schießerei noch erfolglos operiert hat, beginnt Beck kurz darauf eine Affäre, kommt mit den Nachforschungen über seinen Sohn jedoch nicht weiter. Er begegnet Mickes Freundin Nina, die ihm erzählt, dass Micke wütend, wohl aber auch ein wenig stolz auf seinen Vater war.

Beck und Lena stellen durch den BMW eine Verbindung zwischen dem Mord an Micke und den in der "Eule" fest und vermuten, dass der Tote der Besitzer Bengt Hakdahl ist. Über den Leiter der Zentralen Einkaufstelle erfahren sie, dass von ihnen gebrauchte Fixierflüssigkeit aus Krankenhäusern nach Polen transportiert wird. Beck vermutet, dass dort aus der Fixierflüssigkeit Amphetamine hergestellt werden und anschließend mit Krankenhausartikeln wieder nach Schweden zurückkommen. Und derjenige, der die Amphetamine dann in Empfang nehmen sollte, hat bei der missglückten Übergabe seinen Sohn erschossen. Unter Gewaltanwendung erfährt er vom Leiter der zentralen Einkaufstelle, dass die nächste Übergabe in einem Restaurant stattfindet.

Bei der Übergabe kommt es jedoch zu einer Eskalation, Gunvald erschießt den Überbringer, der Verteiler kann zunächst fliehen, entkommt aber nicht. Er entpuppt sich als der Sozialarbeiter, den Beck in der Diskothek getroffen hat. Gavling konnte man jedoch auch dieses Mal nichts nachweisen.

Kritiken
Die Kritiker bei Kino.de kommen zu dem Urteil: "Sehr emotionale Folge der 'Neuen Fälle', in der es auch viel um das Privatleben des eigenbrötlerischen Kommissars, dargestellt von Peter Haber, geht."

Die Fernsehzeitschrift TV Spielfilm findet: "Längst nicht mehr 'neu', aber immer noch spannend und realistisch."

Heimvideoversionen
Die Folge Heißer Schnee erschien, wie alle anderen Filme der Reihe auf DVD und VHS. Deutsch synchronisierte Filme der ersten Staffel auf DVD gibt es seit Juni 2010.

Weblinks

  Webseite der ARD

Einzelnachweise

Filmtitel 1998
Schwedischer Film
Dänischer Film
Norwegischer Film
Deutscher Film
Kriminalfilm
Thriller
Maj-Sjöwall-und-Per-Wahlöö-Verfilmung

redpajama_set_name: RedPajamaWikipedia


text:
St. John's Survives Push by Niagara, 78-70
Red Storm win their seventh straight in ugly fashion
By David Combs@DavidGCombs Nov 26, 2022, 4:21pm EST
Share All sharing options for: St. John's Survives Push by Niagara, 78-70
Despite backcourt injuries and foul trouble, St. John's held off a strong push by Niagara winning 78-70.
After the Empire Championship, the Red Storm returned to campus for the first of a pair of tune-up games. This first one was against the Niagara Purple Eagles.
The Johnnies' backcourt came into this one a little short handed with Rafael Pinzon continuing to be out with an ankle injury and Posh Alexander out in concussion protocol. To make matter worse, Andre Curbelo only played eight minutes in the first half due to foul trouble.
Even without its backcourt depth, the Red Storm were still successful forcing turnovers. Niagara had 10 turnovers, which St. John's converted into 16 points. However, with half of these turnovers occurring in the first four minutes of the game, Niagara was able to cut the Johnnies' lead to single digits going into the half. Conversely, the Red Storm only turned the ball over twice before the break.
In the halfcourt, the offense was pretty simple: get the ball to Joel Soriano. Soriano is usually the biggest guy on the floor against these tune-up schools (or as Jon Rothstein calls them, "buy games"). However, Niagara had a slightly bigger freshman in Harlan Obioha. Soriano was able to put the freshman on skates and nearly had another first half double-double with 13 points (5-9 FG) and 8 rebounds.
Defensively, the Red Storm struggled with the threes. The Purple Eagles were 6 of 11 from deep, and Noah Thomasson was particularly effective going 3 of 4 from beyond the arc. Thomasson finished the half with 11 points (4-9 FG, 3-4 3PT), 4 rebounds, and 2 assists.
With Curbelo on the bench, the Red Storm struggled to force turnovers late in the half, the Johnnies' 14-point lead was cut to single digits by the half with St. John's up 37-28.
In the second half, the Purple Eagles zeroed in on shutting down Joel Soriano. Niagara coach Greg Paulus pointed out at halftime that Soriano was not kicking the ball back out anytime he touched the ball on the block. Niagara took advantage of that regularly doubling Soriano in the post. Soriano didn't score a field goal in the second half until there was just over six minutes left in the game.
With Soriano being the main source of offense in the first half, the Red Storm struggled to score with Niagara's adjustments. As a result, the Johnnies were held without a field goal for nearly five minutes, allowing Niagara to go on a 12-0 run and closing St. John's once 19-point lead to a five-point lead.
Mathis knocked down an open three to end the field goal-less skid, which seemed to jumpstart some semblance of a St. John's offense. Dylan Addae-Wusu picked off a wayward pass for a layup, and just like that, the Red Storm were back up by double-digits.
The Johnnies struggled heavily at the free throw line in this contest, going 15 of 27 from the charity stripe in the second half. As a result, Niagara tried the fouling game.
However, Niagara didn't have enough left to make another run at St. John's, , and the Johnnies pick up their seventh straight win, 78-70.
Next, the Red Storm take on LIU Sharks on Tuesday at 6:30 PM at Carnesecca Arena.
Joel Soriano: 21 points (7-14 FG) (Career High), 19 rebounds (Ties Career High)
O'Mar Stanley: 10 points (4-6 FG), 6 rebounds, 1 assist
Dylan Addae-Wusu: 10 points (4-7 FG, 1-2 3PT), 4 rebounds, 2 assists
Noah Thomasson: 24 points (10-21 FG, 4-6 3PT), 6 rebounds, 6 assists
Sam Iorio: 12 points (4-6 FG, 2-4 3PT), 7 rebounds, 1 assist
St. John's vs Georgetown: Preview, Prediction, Keys to the Game The Red Storm look to beat a struggling Georgetown team at the Garden.


text:
Top 11 Android Apps of 2017 That You Shouldn't Miss
Namrata Gogoi
Undoubtedly, the Google Play Store serves you a plethora of apps. If we go by the numbers alone, it has about 3.5 million apps and counting as we speak. So, how do you choose the essential ones from this huge list? Well, this is where we step in!
We, at Guiding Tech, have gone through the apps launched in 2017 and curated a list of 11 best of the best apps that must be on your Android phone.
Note: We have made sure that all the following apps were released in the year 2017 and we won't be talking about the obvious like Google Photos, Snapseed, and Evernote, that we have known about through the years.
1. Be a File Management Pro With Files Go
Google's file management app, Files Go, is the jack of all trades. Not only can it free up your phone's internal storage, it can also find files quickly. and at the same time notify you about dormant apps or double up as a file transfer app.
The app which made its debut in the Play Store in November 2017, released globally in December and since then has already crossed the 1 million downloads mark.
This nifty app has a number of additional features such as removing duplicate images and files, notifying, clearing app caches and deleting the annoying Whatsapp images.
In a nutshell, this app makes managing the internal storage of your Android and its files uncomplicated and straightforward.
See More: Top 3 Zip File Management Apps for iPhone
2. Organize Your Text Messages with SMS Organizer
Truth is, the default messenger app in your Android is boring and when it comes to organizing, it doesn't even get close. This is wherer Microsoft's SMS Organizer app comes to the rescue.
It can even backup and restore your text messages so that so that you don't lose out on the important texts when you switch phones.
It's a simple app that focuses on the important messages and in the process, filters out the spam. It can even backup and restore your text messages so that so that you don't lose out on the important texts when you switch phones.
3. Upload Stunning Panoramas With InSwipe
Lately, Instagram has been creating quite a buzz with the inclusion of new features such as Story Highlight and Archive, Poll Stickers, multiple photo uploads, etc.
However, one place where the app still needs to better its game is when it comes to uploading panoramic images. Well, we are talking about the Android world, and almost everything can be made possible here.
In this case, there's a smart workaround in the form of InSwipe Panorama for Instagram.
This app beautifully divides your panoramic images into segments to create a seamless landscape. Once done, you can either choose to save the images to upload them to Instagram separately or upload it as a whole.
Find out How to Instagram Like a Pro in 6 Easy Steps
4. Save Your Phone's Data With Datally
Another Google app that made to our list is Datally. Launched in November 2017, this app aims to show your phone's data usage and effective ways to cut down on the same.
A brilliant app, especially if one is struggling with spotty Internet connections, Datally also lets you turn the Data Saver option to on, which will limit the background data usage. Also, you can connect to any of the nearby public Wi-Fi connections through the Find Wi-Fi option.
While you are at it, don't forget to rate the Wi-Fi connection based on your experience.
5. Create Beautiful Artworks With Portra
If you're looking for a photo editing app for Android with a difference, trust Portra to take care of it. This Prisma-lookalike app gives a dramatic lift to your pictures by transforming them into works of art.
What's interesting about this app is that it comprises of a number of watercolor shades in various unique blends. So, whether it's an oil artwork or a detailed watercolor painting in a shade of rich raspberry — this Android photo editing app has all the answers for you.
Portra doesn't always need an active internet connection and the image processing is done locally, provided that you have the template downloaded. Apart from that, you can share the images directly on Facebook and Instagram.
6. Bring a New Zing to Your Music With Beatbox Music Player
Not all of us are fans of online music streaming and if you're one who still relies on the good 'ol offline music player, here's one to enhance your experience — Beatbox Music Player.
Developed by AppBott.com, this is a free and light mp3 music player. The main USP of this app is its fluid interface and beautiful themes. All you need to do is swipe right/left to navigate around the app.
An interesting feature of the Beatbox Music Player is the ability to transfer music files through the app's built-in Cloud Share feature.
Speaking of Cloud, Here's How to Transfer Files Between Cloud Backup Services on Android
7. Scan Smartly With Adobe Scan
One of the latest apps from Adobe to make its debut in 2017, Adobe Scan does what its name suggests — scan pictures and images and transform them into a digital format.
Similar to other Adobe apps, it needs an Adobe ID to log in. Once the setup is complete, the app automatically takes stock of the situation. All you have to do is point the camera at the document and it will be scanned automatically.
Once the scan is complete, you can either chose to save it as a PDF or enhance the scan further.
8. Search Like The Flash With Fast Finder
Searching for Spotlight-lookalike for your Android? Well, your search ends with Fast Finder. It's a light Android app which gathers all the search results under a single roof.
So, whether it's a contact name or a file name, you wouldn't need to open the respective apps to search for these.
All you need to do is type a few keywords and it would be presented to you in a jiffy. Fast Finder performs partial search too, which means whichever apps or contacts contain that particular string will turn up in the result.
9. Personalize Your Home Screen With Another Widget
Another Widget (yes, that's the name of the app) is a cool app aims to bring the Google Pixel 2's home screen to your Android smartphone. This app neatly summarizes the calendar events, time, and weather information, and displays the same on your home screen.
When it comes to customization, you can choose the font size, the dimensions of the widget in general or the format. All you have to do is add the widget to your home screen, make the necessary changes to the default settings and you are good.
Note: Another Widget doesn't display reminders
10. Browse High-Resolution Wallpapers From myWalls
Looking for a cool wallpaper app? The myWalls app should serve your purpose just fine. It contains a number of high-resolution wallpapers that are sourced from Unsplash.
The great thing about this Android wallpaper app is that almost none of the images are abstract or some artist's figment of the imagination.
The wallpaper collection is refreshed on a regular basis and I bet, you'd love the fresh look that these bring to your home screen.
11. Receive and Send Money Easily With Google Tez
The last app on our list is an India-centric app. Launched in September 2017, Tez marked Google's official entry into the world of mobile payments. Launched on both iOS and Android, this app allows linking your bank accounts and phone numbers.
Moreover, it allows you to scan BHIM QR code, or send money to your friends nearby through the Cash Mode feature. It identifies the nearby devices by means of ultrasonic sound, which is a really cool feature, if you ask me.
Also See: Tez vs PhonePe vs BHIM: Which is the Best UPI App?
Say Hi to an Even More Awesome 2018!
These were some of the notable apps that were released in 2017. It's worth to be noted that 2017 also saw a few device-specific apps like Xiaomi's Mi Drop or Samsung Health being released in the Google Play Store.
So, which one of these have you used? Do let us know if we have missed to include a favorite one of yours.
See Next: 4 Android Apps to Clone Other Apps and Run Multiple Accounts
Last updated on 5 Jul, 2019
Top 20 New Android Apps of 2016 That You Shouldn't Miss
Searching for the best new #Android apps that were launched in 2016? We have done the hard work for you. Check it out!
2 Instagram Android Apps that Have Much Better Design than the Official (Updated) App
The #Instagram app refresh has got a lot of stick so here are 2 great alternatives for #Android users. Use 'em and let us know your thoughts on these.
Top 7 Free Android Apps for May 2018 That You Must Get
Looking for new and free #Android apps? Look no further. We're bringing you a fresh list of apps that are sure to rock May 2018. Check them out!
6 Best Offline Music Apps for Android
Searching for #offline #music player apps for your #Android device that supports a variety of file formats? Check out our curated list of best #offline #music apps.
8 Ways to Fix Instagram Not Working, Loading, or Crashing Issue
Here are 8 ways to solve #Instagram not working, loading, or even crashing error. These steps are simple to follow and won't take too longer to implement.
Best Paid Apps For Free This Week
Google Play has many paid #Android apps for free, and here is our pick of top paid #Android apps that are available absolutely free of cost, this week.
Best Paid Apps For Free - December Week 2
7 Best Manual Camera Apps for Android
Looking for #Android apps that offer DSLR like functions? We have made your work easy. These 7 apps are the best manual #camera apps for Android.
Shazam identifies songs based on spectrogram.
Namrata loves writing about products and gadgets. She has been working for Guiding Tech since 2017 and has around three years of experience writing features, how-tos, buying guides, and explainers. Previously she worked as an IT Analyst at TCS, but she found her calling elsewhere.


text:
Victor Moses return'll boost Kelechi Iheanacho, Iwobi – Isaac Semitoje
Isaac Semitoje believes Nigeria can run riot against Algeria in their Russia 2018 World Cup Group B qualifier in Uyo on November 12 with in-form Chelsea winger Victor Moses called up for the encounter.
Moses pulled out of the Super Eagles' opening World Cup qualifier against Zambia on Sunday after picking up a hamstring injury while playing for Chelsea against Hull City in their Premier League fixture.
However, the 25-year-old's absence didn't affect the Eagles, who defeated Chipolopolo 2-1 at Levy Mwanawasa Stadium in Ndola, Zambia.
Arsenal's rising star Alex Iwobi opened the scoring for the Eagles in the 33rd minute – and Manchester City forward Kelechi Iheanacho doubled the three-time African champions' lead 10 minutes later as he pounced on a pass from Greece-based Brown Ideye before rounding Zambia goalkeeper Kennedy Mweene and hitting home.
Denrele and Olajumoke to host gathering for celebs and media ahead of Lagos concert
Over one million asset declaration forms filled by public officers-CCB
The Code of Conduct Bureau, (CCB), says over one and a half Million Asset Declaration Forms have been filled completely...


KB Construction Company has been providing full construction and general contracting services since 1975. We use only licensed subcontractors and your entire project will be under the guidance of our experienced and certified experts. We work directly with all of our clients through every step of the construction project, ensuring that you receive only the highest-quality service en route to a superior product.
Whether residential or commercial, we use only the best equipment and employ the highest standards for all our jobs.
If you have moisture, you may have mold.With the health issues and long-term property damage that come with it, it is critical to address water damage as quickly as possible.
Please call KB Construction Company to receive a quote and we will guarantee to rebuild your site like-new. We've got you covered with an emphasis on detail and perfection. Commitment to quality assurance is what makes KB stand above the rest.


text:
Conor Gillaspie's three-run homer in the ninth inning sends Giants to the NLDS
By Bill BaerOct 5, 2016, 11:27 PM EDT
Even year — ahem — magic is alive and well as Giants third baseman Conor Gillaspie's three-run home run in the top of the ninth inning off of Mets closer Jeurys Familia broke a scoreless tie and helped send his team to the NLDS against the Cubs.
Starters Madison Bumgarner and Noah Syndergaard traded zeroes for seven innings as the pitcher's duel unfolded exactly as expected. Syndergaard brought a no-hitter nearly through the sixth inning, but Denard Span broke it up with a well-struck single to center field. It was one of only two hits Syndergaard would allow on the evening along with three walks and 10 strikeouts on 108 pitches over seven innings. Addison Reed worked a scoreless eighth before giving way to Familia in the ninth.
Bumgarner, meanwhile, skated through the first three innings on a total of 21 pitches. While the Mets would become more selective at the dish, it didn't amount to much. Through eight innings, Bumgarner limited them to four hits and a pair of walks with six strikeouts on 106 pitches.
In the top of the ninth against Familia, Brandon Crawford led off with a double to left-center. Joe Panik walked to bring Gillaspie to the plate. Gillaspie took a 96 MPH sinker for a strike and a 96 MPH sinker for a ball, then blasted a 96 MPH sinker to right-center, clearing the fence by plenty to give the Giants a 3-0 lead.
There was no chance Bumgarner was coming out once the Giants took the lead in the ninth, unless manager Bruce Bochy wanted to get punched to the moon. Bumgarner got Yoenis Cespedes to fly out to right field, Curtis Granderson to fly out to left field, and T.J. Rivera to fly out to right-center to end the game.
Bumgarner's postseason brilliance continues. He now has a 1.94 ERA with an 83/17 K/BB ratio in 97 1/3 career postseason innings.
If there was one person without a particular allegiance to the Giants happy about Gillaspie's home run, it's probably Orioles manager Buck Showalter. Showalter was criticized heavily for refusing to bring closer Zach Britton into Tuesday night's American League Wild Card game, a game which the Orioles lost on a walk-off three-run home run by Edwin Encarnacion. Well, Mets manager Terry Collins used his closer and he ended losing on a walk-off three-run homer anyway.
The Giants will head to Wrigley Field to face the Cubs in the NLDS which begins on Friday at 9:00 PM EDT.


Timberland PRO Men's Boondock Waterproof Composite Safety Toe Work Boots is rated 4.2 out of 5 by 145.
Comfort and performance collide on the jobsite in the Timberland PRO® Men's Boondock WP Composite Toe work boots. Ultimate protection keeps you moving throughout the day with a waterproof leather upper and waterproof membrane for durability and dryness. An antimicrobial treated mesh lining keep your feet breathing, while the boot's Anti-Fatigue technology and durable outsole keep you protected on any surface.
Rated 4 out of 5 by aaron from comfortable but also painfull the boondock 6 inch is a comfortable boot. don't get me wrong. the bottom of your feet will thank you after a long day standing on concrete. i have had 2 problems with this boot though. they are wide. i mean very wide. if you tie the laces tight though you should of no problem, and that leads to my second problem. with both hooks looped tight, the top of the boot dug into my leg and would hurt to walk. the solution was only tie the bottom hook and they are as comfortable as any shoe you will ever wear. i do like that they put the hooks on this boot and that is why i will not get the 8" boondocks. it is a nice feature. all in all, a great boot if you have it tied properly.
Rated 5 out of 5 by Tower Man from Best Boots Bar None This is my 3rd set of Timberline Pro boots; first pair of Boondockers. I wanted durability and comfort and these exceed expectations, above even the other Timberline models I've had. At my job I am outdoors in all types of weather walking over all types of terrain. I can cover up to several miles in a day constantly in motion. In other boots walking over rocky ground you can feel the rocks poking the bottom of your foot, but not in the Boondockers. Foot comfort and support is paramount in keeping leg and back strain to a minimum and these have made my job easier. Sure, they are heavy but it's a small price to pay for a product of this quality and performance. (Builds up the leg muscle tone) Well done!
Rated 5 out of 5 by Pandy from I will be buying again. I have struggled the last month and a half to find a pair of steel toes that don't leave me almost broken at the end of a long shift in an industrial setting. After purchasing 8 other pairs, I finally went to a 'real' shoe store (old fashioned, they do the sizing and fitting), and tried these on. I didn't even look at another pair. It was amazing. I now make it full shifts in minimal pain (no small feat considering my age and condition!) and even volunteer for overtime. I STRONGLY recommend these boots if you have tender feet like I do, if you are not used to working on your feet, they are worth every penny.
Rated 5 out of 5 by Mike from Will buy again The boots are a bit in the heavy side, but buck up sally, these are men's work boots. I work on cell towers and range from sopping wet Juneau, to 90+degree Fairbanks, to blistering cold -40 Fairbanks, and everywhere in between. I've had my current pair for over a year and a half now and they are holding up strong. For uninsulated, with a thick whool sock, I can wear these comfortably until about 0 degrees. My feet stay dry in the wet, and in the heat with a good whicking sock. They are the most comfortable boot I've worn and I've ranged from Georgia's, danner and wolverines.
Rated 4 out of 5 by Dano from Needs one improvement. Very good work boot. The large mouth opening to put your foot in and only five eyes of lace , allows this boot to go on and off very smooth. I can't stand fighting to take boots off after a long day.. One thing that can make the boot better. It needs a pull tab on top in the back so you can pull them on easy. This should be a loop you can put your index finger in. loops on most shoes are to small and I can't get my finger in it. The loop needs to be about the diameter of a quarter in size or bigger. Easy on / off is important to me.
Rated 4 out of 5 by Roughneck J from Amazing overall, however... I work in the oilfield, so these boots are really put to the test. They are by far the most comfortable, best fitting, and most durable boots that I have ever owned. As mentioned in the title, only one issue, they leak at the seam where the boot meets the sole. I would recommend these boots to anyone because of the comfort and protection they offer, just make sure you purchase seam sealer along with the boot. My feet have never felt so good after a 12.5 hour shift. Great work Timberland!!
Rated 2 out of 5 by Robin the buyer from Terrible quality! Boots are falling apart at heel and soles! They are NOT worth the money because they did not last! Husband works in high voltage job and I thought these boots would be perfect for the job but not if they are going to fall apart so quickly! sad part is I bought 2 pairs because he did like the feel and fit of them. $350.00 down the drain! vERY DISAPPOINTED IN TIMBERLAND!!!!
Rated 4 out of 5 by Mother Trucker from Wear and tear?? I drive truck and am on various surfaces through out the day.. These are by far the most comfortable boots I have ever owned, and also the most expensive. I tend to crush the soles and padding in my boots within 3 months, with insiles buying another 3-6 months. For the $150+ I paid for them, I would have hoped they would hold up better. The sole at the edge of the heel has a small tear, creating a flap. This is my ONLY complaint in the 7 months I've had them. I'm hoping that Timberland will stand behind these and in return, they'll havea customer for life.