text:
RD.COM True Stories Nicest Places
Fighting COVID-19 and Racial Injustice, Buchanan, Michigan, Is the Nicest Place in America
Jeremy GreenfieldUpdated: Sep. 10, 2021
In 2020, we received a record number 1,177 story submissions to our annual search for the Nicest Places in America as people struggled against a deadly pandemic and racial injustice. This year's winning place shows that when Americans unite, we can overcome anything.
Live in a place where people are nice and treat each other right? Tell us about it and your town could end up on the cover of Reader's Digest!
Editors' note: In a challenging year for America, when the COVID-19 pandemic and the evil of racial injustice pushed so many places to the brink, what set Buchanan, Michigan, apart? The 2020 Nicest Place in America is a town that would not be defeated by the coronavirus while uniting to say that Black lives do matter. It's a place that has something to teach us all about caring for each other—even the least among us—not when it's easy, but when it's hard.
The Memorial Day parade in Buchanan, Michigan, isn't the biggest in the country, but pound for pound these 4,300 residents might generate more red, white, and true-blue spirit than anywhere. Of course, there's the boom-boom-boom of the high school marching band and the flashing lights of the police cars, fire trucks, and Buchanan's one ambulance. One year, the town hitched its new rescue boat to a trailer to join the procession, where it dodged the usual caravan of red-hatted Shriners on mopeds. There are cheers all along the 1.4-mile route, for the floats and the kids and the candy and especially when the marchers pass under the 11-by-16-foot American flag casting its extra-large shadow over the intersection of Main and Front Streets.
Callie Lipkin for Reader's Digest
Main Street in Buchanan, Michigan
But this is also a day of remembrance, and when the parade reaches Oak Ridge Cemetery, the mood changes. The crowd grows quiet for the laying of wreaths on the graves of Buchanan's war dead. Members of the American Legion fire a full 21-gun salute. Finally, the high school's lead trumpeter plays taps. Buchanan has been celebrating the day since at least 1870, a full century before the nation established Memorial Day. In 2020, their almost 150-year-old tradition ended. "This year," says John D. Van Dyke, a middle school science teacher who nominated Buchanan as the Nicest Place in America, "we weren't able to honor our war dead." The enemy: the COVID-19 pandemic.
At first, people were terribly disappointed. Yet this four-stoplight town has taught itself—and the rest of the country—a big lesson about kindness and patriotism and where the two join. Folks here face challenges head-on, but they've also discovered that being American is not about making a lot of noise and waving flags. It's about honoring the First Amendment and finding new ways to help people make a living. And it means caring for your neighbor not just when it's easy but also when a pandemic makes it very hard.
"I don't want to give you the mistaken idea that this is Mayberry. We argue a lot because we care about everything," says Mayor Patricia Moore. "This is where democracy lives."
Buchanan is a classic Midwest town, a rivet in the buckle of Michigan's rust belt. A huge smokestack, a reminder of the town's industrial past, rises above low-rolling hills covered in forests. Winding country roads connect the small businesses along tree-lined Front Street with surrounding farms. South Bend, Indiana, home to the University of Notre Dame, is 16 miles to the southeast. Folks here root for the Cubs and the Bears, who play about 90 miles west, in Chicago.
So how did this ordinary-seeming hamlet become the Nicest Place in America? There's no better example than what folks did after the parade was canceled—and the event that ended up taking its place.
Residents of Buchanan, from left to right: Buchanan's Nicest Places nominator, John D. Van Dyke; Connie Baber and Larry Money; Kadin Mills in front of the windows he stenciled
Memorial Day was also the day George Floyd was killed in Minneapolis. Although Buchanan has no recent history of police misconduct or racial strife, Deejra Lee, a 33-year-old Buchanan native, was sure that her neighbors would want to join the national call to action. After all, standing up and making noise is something Buchanan does very well.
"We wanted a way to share our voice," says Lee. "It was important to do it here because these are people who care and want to see change in the world."
Even though she was eight months pregnant, Lee organized Buchanan's own march for racial justice. On June 8, about 250 people—Black and White, young and old, residents and visitors—gathered at the high school, most of them wearing masks. They walked under the massive American flag at Front and Main. They walked past the antiques store on whose windows the names of many of the Black citizens killed in police custody around the country had been stenciled by 18-year-old Kadin Mills. (If the Memorial Day parade had been held this year, he would have been one of the drum majors leading it.) They also stopped at the police station, where they knelt for eight minutes and 46 seconds to memorialize Floyd's death. The Buchanan police chief, Tim Ganus, was there, too—not to keep the protestors in line, but to join the walkers, to lend his voice to the calls for change.
"We agreed on the message: justice for all, unity and peace," says Ganus.
The march drew on the strength of everyone in town, not just the 8 percent of Buchanan residents that are Black. And the military veterans still made their mark: The crowd that day marched under a new display of 103 red, white, and blue banners that feature the photos, names, and service branches of Buchanan's vets. The town had ordered them as a way to honor their heroes on Memorial Day and every day. They hang from its lampposts—Marvin Pruett, Army; Arthur E. Reed, Navy; Victoria Curtis, Air Force—testaments to the town's unwillingness to let anything overshadow what matters most.
Left: Mickey Frost (left) and Mayor Patricia Moore holding a banner; Right: the banners and flags wave proudly on the lampposts around town
"When the banners appeared," says city manager Bill Marx, "it provided a little confidence that the whole world isn't going crazy."
Lee, whose father and brother both served in the Army, says there is a natural connection between the march and the honoring of soldiers. "Those vets are important," she says. "They're the reason we're able to protest."
Mickey Frost, 65, had a similar reaction to the marchers walking under the lampposts. Banners for her father, who fought in the Korean War, and her husband, a Vietnam vet who passed five years ago at age 61, hang together on one post.
"What perfect timing, the walk coinciding with this being the first time that these flags have ever hung in the community," Frost says. "It was meant to be."
When you arrive in Buchanan from the east on Front Street, you'll be met by the unofficial town welcome committee: a flock of ducks. A few dozen of them call Buchanan home and are there to greet all those who come. In thanks for their service, the town built a small hut for them to lay their eggs and seek shelter in storms. Another nearby structure houses gumball machines filled with duck food. For 25 cents, you can feed them, a fee the Friends of the Buchanan Ducks club uses to make sure the flock stays fat and happy. Nearby duck-crossing signs on Front Street and Red Bud trail keep the innocent birds safe.
Some of Buchanan's feathered residents
Buchanan's town motto is "Life is better here," but economically it has been a struggle for some in recent years. Clark Equipment and Whirlpool once employed thousands, but both are long gone now. The town's median income is $34,000, compared with $54,000 statewide.
Yet Buchanan's willingness to embrace the greater good also helped it find an unlikely economic lifeline. After Michigan passed a medical marijuana law in 2008, Buchanan residents spent nearly ten years in contentious but polite debate about whether to allow its sale in their city. In 2017, the city commission finally voted yes. Redbud Roots, a company that focuses on cannabis as medicine, has invested $25 million in the area, building facilities and hiring hundreds of people. When a recreational marijuana law was passed in Michigan in 2018, the city said yes again, bringing more jobs to town.
"I was actually the one no vote for the original ordinance," says Mayor Moore. "But I'm happy with how things turned out. We've done a very good job of protecting the public and at the same time letting the public have access to a product that they are wanting."
Redbud co-founder David Murray was a hedge funder in Chicago but has since moved to Buchanan to be closer to his growing operation—and because "life is better here," he says.
Supporting people when they need it most is a time-honored act in Buchanan. It's the idea that gave rise to the Scarecrow Factory, which is exactly what the name suggests: an assembly line for festive scarecrows. They are handmade—by volunteers whose average age is 76—and sponsored by businesses for $55 a straw-filled head. Last year, they raised $20,000 for local charities. The virus slowed production at the Scarecrow Factory for a time in 2020, but Buchanan quickly came up with another irresistible funding source. Says Mary Fisher, who helped launch the scarecrow tradition in 2007, "This year, we're gonna sell garden gnomes!"
From left: Mary Fisher of the Scarecrow Factory; When these girls learned that the food bank needed funds, they got busy making lemonade; Jan Nowak-Walters and her crew made sure the food bank's shelves stayed full.
One of the town's largest benefactors is called Redbud Area Ministries (RAM). (Buchanan is called Redbud City for the vibrant redbud trees that line its streets.) RAM provides food, clothing, employment assistance, and counseling to their "guests" and "friends"—never "the needy" or "clients," says executive director Jan Nowak-Walters.
Stephanie was one of those guests. She arrived a few years ago with her four-year-old son, fleeing a boyfriend she said abused her and left her with a ton of unpaid bills. RAM negotiated a deal with her landlord, found her a job, and helped her quit drinking. The last time she came to RAM, a few months ago, she told Nowak-Walters, "I don't need a thing. I just came back to ask for prayer because everything is going well."
In 2019, Nowak-Walters visited a local Girl Scout troop, showing the girls a picture of empty shelves. Scouts Kate Holloway and Eloise Herrick, both just eight years old at the time, wanted to help, so they organized a food drive. "We restocked those shelves," says Holloway.
This year, the girls did it again. Their second annual food drive collected more than 1,000 items of food and nearly $1,000 in cash for the ministry.
Another $1,500 came one glass of lemonade at a time, thanks to several stands set up around town by more of Buchanan's youngest helpers: Delanie Dutoi, 8, Makayla Mitchell, 7, Ava Sears, 10, and Morgan Weldy, 11. At a dollar a cup, that's a lot of lemonade!
"It just blows my head the support that's present in this town," says Nowak-Walters. "I have people that say, 'Let me know what you need, let me know what you're short on.'"
Volunteers are the backbone of Buchanan Scarecrows and RAM
COVID-19 forced RAM to close this spring—temporarily. But volunteers worked day after day to set up work-arounds, retrofitting the RAM offices so people could come in and get counseling and organizing new ways to collect and distribute food.
"We put the best procedures in place and trusted that if we were on God's errands, we would have God's protections," says Nowak-Walters.
In many rust belt towns, young folks can't wait to grow up and move away. That doesn't happen as much here, thanks in part to the Buchanan Promise. Modeled after similar initiatives in nearby Kalamazoo and elsewhere, the Promise is a college scholarship of up to $10,000 for anyone who attends Buchanan High for four years and graduates.
Walter E. Schirmer Jr., son of the president of Clark Equipment, left more than $8 million to the future of Buchanan when he died in 2016. The first checks were cut in 2017. The Promise currently supports 300 students, with tuition payments of $600,000 so far. Kadin Mills, the drum major who stenciled the downtown windows, is putting the money toward tuition at Northwestern University.
When Deejra Lee was first planning Buchanan's Black Lives Matters march, one of her first calls was to Chief of Police Ganus.
"I was prepared for the worst—we could either do this with his help or without it," Lee says. She was pleased to learn that they had the same goals for the community and the march. "He wanted to make sure he could do everything possible to make it safe for us. He also voiced many times that he thinks there's something that needs to be done across the country."
From left: Deejra Lee and her baby, Dayna Rae; Police chief Tim Ganus
"A lot of people want to know what their police departments think of this event that happened in Minnesota," says Ganus. "That was a terrible, sickening display of law enforcement. We are totally against that. That's not how we do business here in Buchanan. We do not stand behind that kind of behavior."
The call was on June 5. On June 8, the hundreds who gathered at Buchanan High made their way to Front Street, where the banners of their friends and family in uniform smiled down on them. It was nearly 90 degrees outside and as the procession passed Tom Jolly, a local businessman who owns the building where Cannavista Wellness Dispensary is located, he handed out water. The protestors held signs that said "Justice for All" and "Black Lives Matter" and chanted the names of Black people killed unjustly by the police.
When the procession arrived at the police station, the marchers kneeled. Emotions were high.
"You just feel disgust of how long you're kneeling, how long that ex-police officer kneeled on George Floyd. And anger. But this was a peaceful march," says Ganus.
While Black people in town say that they have a good relationship with the Buchanan police, Lee, Ganus and the town's leaders want to make sure that equal justice for all stays the rule. They instituted regular meetings where citizens could air grievances to the police and they remain committed to the community policing model that got them to such a good place to begin with. Each year, the police department hosts a big party for the whole town, with food, entertainment, and the main attraction: a dunk tank where locals can send officers into the drip. They hope to do it again soon, when the pandemic subsides.
"America is made of towns a lot like Buchanan, these tiny little towns just as committed and involved in making America better as people in the big cities," says Van Dyke, who wanted the world to know about Buchanan, which is why he nominated it as a Nicest Place.
"As a young officer, I was always interested in what New York City was doing, the newest techniques," says Chief Ganus. "But I think it's time now that some of these big cities look to smaller cities on how they're doing things, how they're connected to the community."
Courtesy Sarah Culton/Leader Publications
From left: Deejra Lee and her family at the protest; Protestors took a knee for eight min and 46 seconds outside the police station
"We hire people with the right attitude. Someone with a bad attitude but the skill set you need— you can't correct attitudes," says Moore. "We're careful with that and I think that's the key with community policing."
"We have been very responsive to any questions and criticisms that may be directed our way," says Marx, the city manager. "We take it seriously."
After much debate with her husband, Jordan, Lee brought her kids to the march. They helped inspire her to organize it and her oldest, Jordan Jr., 7, was starting to be curious about the world.
"He asked a lot of questions afterwards that made me proud that we included him, like 'why are we doing this?' and 'am I different?' Those questions are hard for a parent," she says, "but he's at the age where I want him to start to be able to understand what's going on in the world."
Jaxen, 4, was also there. Dayna, her newborn, was there in Lee's belly and then born into the Buchanan community a month later.
Buchanan, Michigan, the Nicest Place in America
Megan Goodrich, 27, grew up in Buchanan. Her father is Black and her mother White, she says she always felt comfortable living in town.
Like so many who were raised in this year's Nicest Place in America, she had her own idea of giving back.
"I've always loved helping. When I was younger, it was focused on animals. When I was older, it transitioned to people," she says. Perhaps that's why she became a home healthcare worker with her certified nursing assistant credential. Caring for people all day at work wasn't enough to fill her need to pitch in.
After she saw a video about how women experiencing homelessness often lack sanitary products, she asked local businesses to host donation boxes. Some 2,000 donated items and $500 later, neighbors began asking Goodrich, "Are you going to keep doing this?" They wanted to keep it going, and so did she. She's named her ongoing effort One Month at a Time.
"Buchanan is a very supportive community," says Goodrich, 27. "If you have an idea and you want to do something, there's bound to be people here who will try to help you figure out how to make it happen."
"Make it happen." If Buchanan didn't already have a motto, that would do nicely too.
In neighborhoods across America, people united to overcome the virus and to fight racial injustice. We received nearly 1,200 stories this year from all 50 states. Buchanan was just one of them. You can read 49 more here. We'd like to thank our partner Nextdoor for helping us get the word out and for helping unite American communities.
Courtesy Jeremy Helligar
Small Ways You Can Fight Racism Every Day
lisegagne/Getty Images
Moving Photos of Kindness in the Time of Coronavirus
Shutterstock (2)
Stories of Random Acts of Kindness That Will Inspire You to Pass It On
Originally Published: October 08, 2020
Incredible Generosity Makes Red Handed Tattoo in Shreveport the Nicest Place in Louisiana


text:
Tristaniopsis laurina, también conocido como gomero de agua ("water gum") es un árbol nativo de Australia, donde usualmente crece cerca de la línea costera del este y a lo largo de las orillas de ríos. Es popular en cultivo, siendo fácil de reproducir y un árbol de sombra agradable. Muchos son cultivados como árboles de alineación, especialmente en Sídney.

Las flores son amarillas brillantes y similares a aquellas de los llamados árboles del té del (género Leptospermum).

Sinonimia
 Melaleuca laurina Sm., Trans. Linn. Soc. Londres 3: 275 (1797).
 Tristania laurina (Sm.) R.Br. in W.T.Aiton, Hortus Kew. 4: 417 (1812).
 Tristania bakeriana Gand., Bull. Soc. Bot. France 65: 27 (1918).

Referencias

laurina
Árboles de Australia
Árboles ornamentales

redpajama_set_name: RedPajamaWikipedia


Leo Xalem is a totally Responsive Prestashop themes. It was designed for any e-commerce stores and diversified commodities as hitech store, toys store, mobile store and multistores.
Mega Deals Electronics Mart Responsive Theme is designed for Electronics, Computers, Deals, Appliances, Digital, Camera, Mobiles, Peripherals, Medicine, Furniture, Minimal, Mega and multipurpose store. Unique and Mega Looking Stores and Marketplace.


Complete tips for pet dad and mom of dogs, cats and horses. At PetSmart, we by no means sell dogs or cats. To ensure there's time to finish the entire pre-travel course of, APHIS recommends having the pet's health certificate issued as quickly as allowed per the destination country. Join the hundreds of pet mother and father who've seen their furry pals transform into vibrant, healthy and glad members of their households.
We are a full-service veterinary hospital offering the very best medical care, surgical care and dental look after our extremely valued sufferers. Nevertheless, we believe offering extra full pet health insurance protection and versatile plan options provide pet dad and mom with a greater worth than focusing on worth alone. In case you do contemplate buying pet medical insurance coverage, you will get the bottom worth for those who buy when the animal is young.
We believe the single most essential element in a canines life after us, is their each day food regimen. Within the United States, dog foods labelled as "full and balanced" must meet standards established by the Association of American Feed Management Officers (AAFCO) either by assembly a nutrient profile or by passing a feeding trial. In 1991 these two chemical compounds have been removed from the GRAS record, however some pet meals firms are still utilizing them of their merchandise.
Based mostly on this biological fact, and to provide a nutritional analysis that mirrors the eating regimen Mother Nature would provide for your canine, ACANA Grasslands is rich in nourishing meat proteins and fat, while excluding rice, potato and tapioca and long lists of artificial elements found in some dog meals. Larger low and middle earnings group Indonesian populations are favoring the growth of economic pet meals.
No one wants a food for his or her pet that is just okay or care merchandise that are virtually chemical-free. Although no person needs one more reason to not purchase canine from a pet retailer, a brand new cause has hit the news this week. This release of the Java Pet Store Demo utility is an incremental launch fixing reported bugs. Twenty-nine of the infected individuals had been pet retailer staff. Established in 2008, you will see that that Pet X is not only one other unusual pet supply store, our mission to enlighten and educate pet lovers in every single place.


Ramon Castellanos joins us today to talk about his start in the animal welfare world. In addition to leading the research and development team at Wild Spirit Wolf Sanctuary in New Mexico he also plans and implements habitat modifications. He talks to us about why wolf sanctuaries are necessary and how the wolves end up joining them. They also have a wonderful educational program which allows you to get up close and personal with a few of their star wolves!


After successfully completing four short-course matches in fresh southwesterly winds this morning, the afternoon session was reduced to one match because of damage.
The morning's racing saw victories for Luna Rossa over le Défi, Alinghi over Mascalzone Latino, Orm over Stars & Stripes and OneWorld over Wight Lightning. Orm also won its afternoon match over Mascalzone Latino.
Neither Luna Rossa (ITA-74), nor le Defi (FRA-69) was able to race in the afternoon, which meant their matches against Alinghi and Wight Lightning respectively had to be postponed. Luna Rossa suffered unspecified winch damage, while le Defi broke one of its jumper struts.
Then drama unfolded on the Romeo course when Stars & Stripes forced a halt to racing, claiming that damage incurred to their yacht during the morning meant they were unable to proceed. Just before Stars & Stripes (USA-66) and USA-76 were about to go into a starting sequence, a call went out from the Team Dennis Conner yacht reporting damage.
An umpire and chief measurer Ken McAlpine went aboard USA-66 to inspect the problem, which appeared to be to the port-side genoa car system.
Because the delay meant racing could not resume before the 4pm deadline for starting, the race had to be abandoned. The crew on Stars & Stripes said they were not willing to agree to a start after 4pm, even though their opponents, Oracle BMW Racing, and the Race Committee both said they were prepared to continue. Immediately after Stars & Stripes declined to extend the deadline, Oracle BMW Racing announced they were initiating a red-flag protest.
This was a closer race than the final delta indicates, with the lead changing at the halfway point, and neither boat able to hold more than a three-boatlength advantage until late in the contest. Luc Pillot, skippering Le Défi had a strong pre-start, pressuring Luna Rossa before tacking away for a split tack start. The Italian skipper, Francesco de Angelis, suffered a tough moment on the weather leg, his boat sailing into a hole, while the French streaked ahead of him. When the boats finally crossed, halfway up the leg, Pillot enjoyed a two-length lead. It was a close contest at the top mark, with de Angelis luffing up on starboard tack, trying, but unable, to reach the French boat, which swept ahead of him on port tack, rounding five-seconds ahead. On the downwind leg, the Italians were able to get ahead, and Pillot just missed out on an inside overlap at the bottom mark, Luna Rossa rounding clear ahead. Playing the shifts on the final beat, ITA-74 stretched away, eventually winning by a comfortable margin.
Working the right hand side of the first beat, Russell Coutts and his crew onboard Alinghi sailed a near faultless first leg, to round the first mark 53 seconds ahead of the 'Latin Rascals'. The opening gambit of the pre-start was a 'dial up' that allowed Coutts to sail astern to get into a position to force Paolo Cian at the helm of Mascalzone Latino to tack off. He then jumped onto the stern of the Italian boat to take up a controlling position. Alinghi broke off the control with 50 seconds to go, opting to set up a committee boat end start, leaving the Italians a free run to start at the pin end. The Swiss boat hit the line at speed and quickly took the lead after making the most from the first right hand wind shift. Tactician Brad Butterworth did a splendid job of covering the Italians' every move, as well as calling the shifts and knowing when to separate to make a bigger gain in the shifting wind. Alinghi's superior boatspeed helped the Swiss extend and by a third of the way down the first run, they looked unassailable and slowly extended further to win by a convincing margin.
Sweden's Victory Challenge scored its second triumph over Team Dennis Conner simply by being in better position on the racecourse and using solid match-race tactics. The Swedes, led by Danish helmsman Jesper Bank, started to the left of Ken Read and Stars & Stripes. While Read was forced to tack away shortly after the start, Bank continued on starboard and took up the left side of the beat. At the first cross there was nothing in it, but at the second cross about halfway up the beat Orm had opened a two-boatlength lead. The Swedish boat showed good form upwind. Conversely, Stars & Stripes gained on both runs. But Orm's upwind pace outweighed Stars & Stripes downwind advantage, and the Scandinavian crew held on for their second win in a row while Stars & Stripes dropped its third straight.
A conventional dial up at the start quickly turned into a push and shove pre-start with OneWorld keeping pressure on the British starting helmsman Andy Beadsworth for much of the pre-start. Yet, what might have looked like a clear advantage to the American team at first, quickly turned into an even start with OneWorld tacking off just seconds before the start to take the committee boat side of the line. With the boats starting on split tacks, Wight Lightning had a slight advantage up the first half of the first beat. But as the boats sailed across the course on a long port tack, OneWorld seemed to put more pressure to the pedal and climbed up towards Wight Lightning's line, pulling out a decent lead in the process. From there on OneWorld slowly but surely drew out her lead.
After an aggressive early pre-start by Paolo Cian helming Mascalzone Latino, Orm's Jesper Bank did well to wriggle free from the clutches of the Latin Rascals and got the best start at the pin end with better boat speed. The Swedish boat soon built a commanding lead and took their second gun of the day. Mascalzone Latino's owner, Vincenzo Onorato helmed for the final downwind leg, but was unable to dent the Swedish lead.


I have made changes to my layout file that I don't want, and can't load a new layout.
You may be unable to load a new layout i fyou don't have an Unlimited key and have more than 50 DVDs.
Create a new database file from File->Open Database menu. Open the new database. While the empty database is open, load the layout file you want, then re-open your existing database.


I came into TABR as an owner surrender. I was in a home with quite a few dogs and my former owner wanted me to be able to get more attention. I LOVE attention and just want to be wherever my human is. I like getting up on the couch and helping with chores. I will be a velco dog and your best friend. I like sleeping in bed with my humans too. I've been getting along with all the dogs in my foster home and I also do great with kids.


text:
Launching a competition for innovation and creativity in labor
This November, Nhat Huy Group launched a competition for innovation and creativity in labor and production 2022.
The contest is a great playground to promote the creative spirit of all employees working in the Group. Initiatives can be launched to optimize production norms, improve product quality and labor productivity, reduce waste, and radically save costs in order to increase competitiveness, and at the same time, create a movement of innovation and creativity not only in the production sector but also in all departments and units of NHG. Besides, the contest also gives employees a professional, competitive, and dynamic working environment to enhance work efficiency.
According to the plan of the Organizing Committee, the fields of participation, including all initiatives, creativity, experience, improvement, scientific and technical applications to serve labor and production and business of the Group.
The competition jury council will select the best entries to award prizes based on innovation, creativity, broad applicability, and economic-technical - social efficiency criteria. The prize structure of the contest includes the following:
Factory Level: Rewards for First, Second, Third, and Consolation Prizes.
The total funds spent on prizes at each Factory is 5,000,000 VND.
Group level: 01 First prize worth 50 million VND/prize, 01 Second prize worth 30 million VND/prize, 01 third prize worth 20 million VND/prize, and 01 consolation prize worth 10 million VND/prize. The total funds spent on Group awards is 110,000,000 VND.
Time to launch, send and receive entries
The Organizing Committee at the factory will receive contest entries from November 1, 2022, to the end of November 30, 2022. The winning documents will be announced on December 1st and 5th, 2022. The Organizing Committee of the Group received the application from December 6, 2022, to the end of December 8, 2022. Shortlisted entries will be announced in December 2022. The contest awarding ceremony will be held during the year-end and welcome the new year 2023 party of the Group.
Jan 19, 2023 NHG's Activities
HAPPY LUNAR NEW YEAR 2023 - HOLIDAY NOTICE
Jun 29, 2022 NHG's Activities
Launching emulation program "THE NHAT HUY WARRIORS" for sales staff
To encourage the spirit of business warriors and boost sales towards the completion of the 2022 goal, Nhat Huy Group (NHG) has launched an internal incentive program for the Business department: "THE NHAT HUY WARRIORS" with a total prize value of up to 250 MILLION VND.
Nov 08, 2021 NHG's Activities
Nhat Huy Group continues donate 300 Million VND to the fund for Covid-19 Prevention and Control
The spirit of contribution and responsibility to society has not only been enhanced in NHG offices but also spread to factories in localities.
Nhat Huy Group donated VND250 million for Fund for Vaccination Prevention of Covid-19
In response to the Prime Minister's call to popularize the Covid-19 vaccine to the people, on 17 June 2021, Nhat Huy Group donated VND150 million for Fund for Vaccination Prevention of Covid-19. At the same time, NHG also donated VND100 million to the COVID-19 Vaccine Fund of Hanoi.
Transforming Small Into Opportunity
Over the last 17 years, we created, driven, and led the flexibility for building materials and the plastic support industry.

redpajama_set_name: RedPajamaCommonCrawl


Captain Dana A. Flynn began his career with the Plymouth Police Department as a Patrolman in May of 1997. He was promoted to Sergeant in 2001 and worked as a Patrol Supervisor for four years.
On New Year's Day, 2005 he was promoted to Lieutenant and served as a Shift Commander in the Patrol Division. In the fall of 2015 he was appointed Operations Lieutenant and Accreditation Manager where he served for four years. Captain Flynn was promoted to the rank of Captain in January of 2019.
Captain Flynn is assigned to head the Administrative Division of the Plymouth Police Department. His responsibilities include overseeing the Department Accreditation, supervising the Training Division, Records Division, Fleet Maintenance, Firearms Licensing, Equipment and Auxiliary Services.
He holds a Bachelor of Science Degree in Marine Engineering from Massachusetts Maritime Academy and a Master of Science Degree in Criminal Justice Administration from Western New England College. In 2009 he earned a second Master of Science Degree in Emergency Management from the Massachusetts Maritime Academy.


Hi everyone and happy Thanksgiving!
I hope your hearts and bellies are full after a relaxing day with your families. I woke up early today and went to Starbucks with Vince + Cooper. We have a little holiday tradition where we treat ourselves to our morning coffee and then take our spoiled dog to the dog park for a little swim and exercise before our big day. We went to Vince's parents in the early afternoon to hang out with his parents and mine. I have dinner #1 there and then we head to my grandparent's house to spend time with my dad and his side of the family. Eating on Thanksgiving has become a science for me… I've learned to only eat certain things at each house so that I can make it through the day without being sick. When my husband and I first started dating, we did double dinners and I learned my lesson the hard way. I ate SO much at each house that I ended up having to drive home with the windows down and my head in a bag… I was so sick from my two dinners that I missed my Black Friday shopping the next day!
BLACK FRIDAY SPECIALS! <—- Click there!


text:
CHRIS HARDY
Hardy, Chris
Height: 5-11 Weight: 180
Born: June 6, 1972 Portage la Prairie, MB
1996 Manitoba
Draft: 6th round (47th overall) 1997 Edmonton Eskimos
1997 Edmonton Eskimos (CFL) 8 S 8
1998 Edmonton Eskimos (CFL) 8 S 18
2003 Toronto Argonauts (CFL) 8 DB 14 0
2008 Toronto Argonauts (CFL) 8 S-P 10 0
12 Years (CFL) 187 1
2001 Edmonton Eskimos (CFL) 0 0 0 0 0 0 1 0.0 1 0 1
2004 Toronto Argonauts (CFL) 0 0 0 0 0 3 3 100.0 0 0 9
2005 Toronto Argonauts (CFL) 0 1 1 100.0 0 0 0 1 1 100.0 0 0 4
2006 Toronto Argonauts (CFL) 0 1 1 100.0 0 0 0 0 0 0 1
2007 Toronto Argonauts (CFL) 0 7 7 100.0 0 0 0 1 1 100.0 0 0 10
Career Totals (CFL) 0 9 9 100.0 0 0 0 5 6 83.3 1 0 25
1997 Edmonton Eskimos (CFL) 1 27 27.0 27 0 1 0
2003 Toronto Argonauts (CFL) 1 16 16.0 16 0 0 0
2007 Toronto Argonauts (CFL) 1 1 100.0 11 11.0 11 0 0 0
Career Totals (CFL) 1 3 100.0 54 18.0 27 0 0
1998 Edmonton Eskimos (CFL) 1 23 23.0 23 0
2000 Edmonton Eskimos (CFL) 6 146 24.3 53 0
2001 Edmonton Eskimos (CFL) 1 0 0.0 0 0
Career Totals (CFL) 10 224 22.4 53 0
NYDS
2004 Toronto Argonauts (CFL) 14 488 34.9 45 0 - 60 428 30.6
2005 Toronto Argonauts (CFL) 2 75 37.5 39 0 - 5 70 35.0
Career Totals (CFL) 35 1248 35.7 56 0 - 137 1111 31.7
2002 Edmonton Eskimos (CFL) 1 6 6.0 -
2003 Toronto Argonauts (CFL) 1 43 43.0 -
2006 Toronto Argonauts (CFL) 3 167 55.7 -
Career Totals (CFL) 15 685 45.7 -
1999 Edmonton Eskimos (CFL) 0 0 0 2 2 0 0
2004 Toronto Argonauts (CFL) 0 0 0 1 1 0 0
Career Totals (CFL) 0 0 1 4 5 0 0
1997 Edmonton Eskimos (CFL) 3 2 1 - 0 0
1998 Edmonton Eskimos (CFL) 28 11 17 - 0 0
1999 Edmonton Eskimos (CFL) 55 49 6 - 0 0 0
2002 Edmonton Eskimos (CFL) 2 1 1 - 0 0 0 0
2003 Toronto Argonauts (CFL) 10 0 10 - 0 0 0 0
2004 Toronto Argonauts (CFL) 5 0 5 - 0 0 0 0
Career Totals (CFL) 198 115 83 - 0 0 4 0


iWhat? Check this slate out!
It is faster with a larger screen, plays Flash content and has upgradeable memory to name a few of the advantages over its competition. No this is not a cartoon character it is the Neofonie WePad. Never heard of them, me either but it looks like they could be a contender! Check out the specs at the bottom of the pdf located at the preceding link.
Posted on March 19, 2010 March 19, 2010 Categories Adobe Flash, iPhone, MobileTags flash, ipad, Mobile, slateLeave a comment on iWhat? Check this slate out!
I am very impressed with HP of late. I am currently using an HP laptop (EliteBook 8730) and love it. I recently watched a video preview of the HP Slate and I have to say that it looks impressive. As with any device the proof is in the use but as a preview it looks good. This is the first of many devices that will support the full web (Flash enabled) this year. The result of a very successful venture called the Open Screen Project.


Carrera GT reaches its 10th birthday!
This car will be an eternal classic, IMO. It's not just styled for it: it's engineered for it with one of the best engines ever put in a car and a chassis that simply doesn't tolerate any nonsense.


I am taking the old paint off my huge deck and it is not your REGULAR paint on it! Anti-slip-restore etc that is NOT what it said it was! Soooo, I am having to strip it with the pressure washer, bit-by-bit. This washer is doing a great job!


Scramblet is a totally fun game for color and grayscale Palm OS devices where you try to outsmart Wacky Wally, the dealer, by finding more word combos out of 7 letters than he thinks you can. He will make you a bet and, should you succeed, you will be rewarded with the money. Should you lose, he'll take your money...AND your pride!


Investigating high CPU utilization of JVM processes – Finding the Culprit.
Recently, in one of our client sites, we have observed a crunch in CPU utilization. At some random intervals, CPU went up to 100% and kept utilizing the same until restarting the application. This application is a standalone java application and involves with heavy database operations. It was critical to find the issue and fixing it soon, as this CPU utilization affected other applications on the same server. So I'm going to explain the methodology that we used to find and fix this issue.
We have used "top" command to get the most CPU utilizing applications.
Since the server has 12 cores, it showed total CPU utilization by all cores.
But once disabled the Irix mode (pressing 'I') we got average CPU per process. Then obtain the PID of the most CPU utilizing the process.
Once the PID of the process is obtained, used 'H' key to list the threads of that process. Then obtained the NID or 'Soft process Id' from the first column.
Used the following command to obtain a thread dump of the JVM process identified in step 1.
Inside the thread dump file, it had the stack trace of each thread. But most important thing is identifying the correct stack trace. For each stack trace, there was a nid field in HEX format which is equivalent to the thread id obtained in step 2. Once the thread id is converted to HEX, we have isolated the stack trace.
From the stack trace, we have identified the code block which was executed with 100% CPU. In our case, it was a while loop which entered into an infinite cycle when certain condition met.
Previous Previous post: Will ATMs Disappear from the World?


text:
cheyenne girl names
The origin of the word is uncertain, though it may be derived from the Sioux language, from the word Šahíyena.Alternative spellings include Cheyanne and Shyanne and diminutives include Chey (IPA: /ʃaɪˈ/). Other girl names that feel at home in the West include Abilene, Cheyenne, Mamie, and Wynonna. Interesting Facts about the name Cheyenne. 3. The collection of Native American Lakota Names includes baby names for boys and girls. Cheyenne first appeared on the U.S. popularity charts in 1980, so she actually predates the name Dakota by about 10 years. Some of these country girl names are inspired by famous cowgirls and pioneer women, Western places or nature, while others simply have a cowgirl feel. Baby Name Lists Containing Cheyenne Cowboy and Cowgirl baby name list 4. Now I'm expecting a girl! I think Cheyenne is pretty, but Shianne and all the other spelling variations look downmarket and a bit uneducated to be honest and will cause spelling difficulties later on. Meanings French Baby Names Meaning: In French Baby Names the meaning of the name Cheyenne is: An Algonquian tribe of the Great Plains. The name was adopted into English usage, mostly by Americans. Find inspiration in these baby girl name lists featuring the name Cheyenne. Would you like to Try out Cheyenne? Since 1880, a total of 190 boys have been given the name Cheyenne while 61,340 girls were named Cheyenne.. Cheyenne: Meaning, origin, and popularity of the boy's or girl's name Cheyenne plus advice on Cheyenne and 50000 other baby names from the bestselling nameberry experts. Huge selection of unusual, popular, and unique baby names. Cheyenne is a girl name. Once upon a time…the name Cheyenne came to be. Capital city of Wyoming. Western names for girls … Cheyenne View all girl names. Cheyenne is the correct spelling. COUNTRY WESTERN GIRL NAMES. List of cheyenne baby girl names start with letter A and meaning. Baby Name Cheyenne meaning Tribe of the Great Plains | Find Name for your Baby using SchoolMyKids Baby Name Finder - Largest Baby names Database List. The name Cheyenne ranks 440th in the United States among the most common names for girls. Cheyenne name numerology. Cheyenne quickly ascended the charts and managed to land a spot on the Top 100 list of most commonly used girl names in 1994. Check it out! Name Cheyenne Definition Numerological definition for this name gives a life path number of 7 for Cheyenne. Our personalized art print celebrates the singular story of Cheyenne's name featuring a detailed account of what it means, where it originated and how & why it survived the test of time. The name Cheyenne means Unintelligible Speakers and is of Native American origin. Finally, if you're looking for a specific baby name or nationality, make … Cheyenne is always been one of my favorite girls names, what are some first/middle name combinations that would go well with it? The naming traditions of Native American Indians varied greatly from tribe to tribe but were generally based on gender, nature, totem animals and descriptions of the appearance or features of a baby. Cheyenne is a unisex name. Gender neutral names for girls are trending, ranging from the traditional James to the modern Henley. My name is Cheyenne Summer, named after the summers in Cheyenne, Wyoming because my dad said he had always wanted to live there and how beautiful, serene it was and how I represented all that to him. I just love this name, I think it is a very amazing name and if you are looking for a black baby girl name I would totally go with this one! Abilene: (English) Quite the adorable name, literally meaning "grass".This reminds me of open fields and prairies which is very common the South or western parts of the states. Find out more about the name Cheyenne at BabyNames.com. But Cheyenne seems to look more exquisite than any other version. Native American names are some of the most meaningful names and a lot of consideration and thought goes into choosing one. Explore the meaning, origin, variations, and popularity of the name Cheyenne. For the first time more than ten times newborns were named Cheyenne in 1970.The peak of popularity of the name Cheyenne came in the 1990s and 2000s. Related: Hippie Names (for girls and boys) Ada: (Hebrew) Meaning "adornment" and perfectly fitting for a beautiful baby girl, right? The baby girl name Cheyenne was given to 960 baby girls in 2012, ranking #320 on the national girl baby name top chart. Its an beautiful name. Check out this list of Cheyenne Names for boys and girls with their meanings and origins. Girl Baby Names - Cheyenne - Cheyenne and its popularity over 100 years. And there have been a lot of spelling variations of this name. AIYANA: This name was coined by professor Bryan Sykes, author of The Seven Daughters of Eve, for a particular Native American genetic line, one of four reconstructed mtDNA lines believed to have colonised America. Find cheyenne girl names that start with alphabet A. BabyNamesCube.com is the largest and ultimate collection of cheyenne girl names. Submit your funny nicknames and cool gamertags and copy the best from the list. Unisex Styling: Gender Neutral Names for Your Little Trendsetter // 204 names. Cheyenne is a native American sure name. From the French name "shaiyena". Cheyenne: It's a girl! Note: The data above is from the Social Security Administrator of United States, (more info here) from Social Security card applications for births in US for every name, from 1880 up to the present year. What does Cheyenne mean? This name is on the 319 ranking, and it's now losing its popularity on the list. What a pretty name We have provided a list of some of the most popular Native American girl names along with their meanings. Now I've gotten the comments asking if I'm Cheyenne (Indian tribe) and I am not, I have some Cherokee in me but that's about it. Advertisement. Cheyenne starts with C. Cheyenne is 8 Letters long. With thousands of names in our handbook, choosing the right on just got easier! Cheyenne Origin Native American : A name given to a tribe of the Algonquians by the Sioux, Cheyenne is derived from a word meaning unintelligible speakers, but … Cheyenne Girl Name Popularity Chart. The naming traditions of Native American Indians varied greatly from tribe to tribe but were generally based on gender, nature, totem animals and descriptions of the appearance or features of a baby. Cheyenne is a name that's been used primarily by parents who are considering baby names for girls. Our experts and editorial staff have gathered trends and insights for 30,000+ baby names over the last 100 years -- And on this page you will learn everything you ever wanted to know about the name Cheyenne. A person with the destiny number 7 learns very early on in life that one has to face a world dominated by material things and money head on without any fear that they could not prevail there. The ultimate A-Z list of Italian girl names, complete with name meanings and origins for all Italian baby girl names. C heyenne as a girls' name (also used less regularly as boys' name Cheyenne) is pronounced shy-ENN.It is of Native American Indian origin, and the meaning of Cheyenne is "unintelligible speakers". All my life I wanted to name my first daughter Cheyenne. Well lo and behold, my brothers wife gets pregnant before me and they decided to use Cheyenne for their baby girls name. Cheyenne. I love this name, it just fits beautifully, I may be saying, as it is my own name, even if I am not dark-skinned. Cheyenne Girl Baby Names - Page 2 - Easy to find baby names, meanings, and origins for boys and girls. The collection of Native American Cheyenne Names includes baby names for boys and girls. From our database of first names in the United States over 100 years. Browse below for Native American Baby Names, which includes gender, meaning and origin. Our Name Generator will find middle names that go perfectly with Cheyenne and any last name. Cheyenne (IPA: /ʃaɪˈæn/) is a unisex name of English origin, though it is more commonly used by females than males. Create good names for games, profiles, brands or social networks. Can you please give me some girl names that are similar to "Cheyenne", either in the way they sound or the type of name. The number of U.S. boys and girls named Cheyenne each year Cheyenne name meaning Related similar Names, Popular Names - What is the meaning Cheyenne? View similar names, compare popularity for boys and girls, find origins and meanings. Find a new stylish favorite here. Would you like to Time Warp Cheyenne? You can also find middle names by choosing the initials or generate multiple middle names. They can be *really* similar names I don't care. Over the past 110 years, 66 552 girls and 630 boys have been named Cheyenne. Still, it is a good choice for a gorgeous country girl name. Between 1880 and 2019 there were 76,154 births of Cheyenne in the countries below, which represents an average of 548 births of children bearing the first name Cheyenne per year on average throughout this period. Clementine Meaning of Cheyenne name, its origin, religion. Nicknames, cool fonts, symbols and tags for Cheyenne – Chey, Chey chey, Cherry, Chy Chy, shay, awesome person. On the last available year for each country, we count 657 births. If your going to use the name of an Indian tribe for a girl at least be respectful enough not to butcher the spelling.
Burning Card Png, Ge 30 Inch Gas Range, Similes For Restless, How To Prevent Mold On Clothes In Closet, Smirnoff Watermelon Mimosa Nutrition Facts, Bangkok Hotel Buffet Promotion 2020, Raleigh Park Nottingham Standard Plus, Stone Looking Tile, Color Oops Boots, Eat Clean Chicago Coupon,


What makes a good web design a great web design? We'll tell you, but first – ever wonder how web design came to be?
Not many know about the early days of the web, when there were no images, no colors, and no sound … just plain old line by line text!
One day in 1989, Tim Berners-Lee, an employee at CERN, proposed a global hypertext project that came to be known as the World Wide Web. At first, text-only pages were the norm and could only be viewed with a simple line-by-line browser (interested or nostalgic? try out the Lynx browser).
In 1993, Marc Andreessen and Eric Bina created Mosaic browser, which was revolutionary at the time as most were based on Unix and none were capable of media such as images or sounds.
They could have spent some of that time making a better logo… bleh!
an effort which is still in force today.
With the creation of the W3C, also known as the World Wide Web Consortium, browser makers were forced to build their programs based on a certain specification to ensure the ease of use for both consumers and web site creators. Somehow not discouraged by this fact, in 1994 Andreessen formed Communications Corporation, which later became Netscape Communications. They didn't really care much for unification.
Netscape was a force to be reckoned with as they decided to go out on their own and create custom supported HTML tags and abilities, often forcing web developers to "sniff out" the browser type in order to provide the best possible service. Check out this run-down of user-agent sniffing if you want to laugh a bit in a nerdy way. Netscape basically made life hard for users, designers, and web developers.
The potential for … gosh I can't even say it!
Ugh … the potential for table-based layouts.
This allowed webmasters to create sites with multi-columns, regions, and complex layouts than were ever possible before. But the semantics and compatibility of sites were nowhere on their radar. Needless to say, nothing was done to improve the ease-of-use for site visitors.
For many, the opportunity to make a site look nice and pretty outweighed the chance to make it work for the diversity of visitors or adhere to standards-based coding. They also utilized tricks like empty spacer images, negative space hacks, and table colspan attributes to make pretty unique web pages.
In response to the abundance of actual designers using the web as their medium, W3C ushered in CSS support in 1996. The major advantage that CSS brought was the fact that it allowed HTML code to once more be semantic rather than both semantic and presentational, as well as sometimes purely presentational.
Plus, using CSS helped to improve web accessibility for older browsers!
Another helpful tool that was added in 1996 was Future Splash. Haven't heard of it? If you use the web at all throughout the day then you see it all the time. Most people call it Flash nowadays.
Flash gave designers a powerful method to present equivalent and enhanced experiences in all browsers that supported it. As the plugin grew, designers got more ambitious and began to use it to power entire sites (some still do).
Compliance issues, accessibility woes, and developer push-back egged on the The Web Standards Project, which was started to promote browser compliance with HTML and CSS standards, and also ended becoming a champion and partner for Open Source initiatives and projects.
With the creation of the Acid1, Acid2, and Acid3 tests, browsers were forced to adhere to specifications so that their users would get a beneficial experience.
With a heavier effort on best practices, designers were now responsible for providing a site that looked great, worked great on all major browsers, and one that was built in compliance with modern standards.
Web developers came into play more, as designers could create and prototype code and designs to be handed off to experienced web script experts to polish them for public consumption.
Nowadays, modern browsers have made it much, much easier to make websites quickly without any hacking.
Internet Explorer 9, Chrome, Safari, Firefox, and Opera are all very good at handling and adhering to the specifications setup by the W3C – which means you have zero excuse for bad code!
The visual appearance of your site is the first things visitors see – it's got to be appealing. It also needs to represent your brand and the tone of your site. If it doesn't impress, people can and will leave your website. Site visitors want to be impressed by your design.
That also means any marketing material for your site must be on par with modern standards and design philosophies, otherwise you might have people join your unsubscribe list.
What's the point of a pretty website if users can't easily figure out how to use it, or how to get where they need to be? Things have to be labeled, in the right place, and easy to find!
Usefulness is a key factor, as a user who feels hindered or bothered by using your site will probably leave it sooner. Universal web design guidelines are key, start here.
More than just simply being able to read text clearly, a website with good typography allows users to ready quicker, glean small chunks or ideas, and be comfortable in their efforts (no eye-straining tiny fonts!).
On top of that, aesthetically pleasing font and color usage make sites more appealing. As with other areas of your site, sticking to standards and accessibility are a must – using web-safe fonts are always a good and recommended idea.
Standards, best practices, browsers optimization, browser compatibility, HTML and CSS compliance – all wonderful things that actually (believe it or not!) make building websites faster.
If you write your code with more care to adhere to standards, most browsers will display things very well and will appear similar to other browsers when placed side-by-side. It's a win – win.
Making site pages consistent is key – users will be shocked if they find that the site is drastically different from page to page.
Having the navigation and footer items in the same spot are a good start, and putting the "main content" in the same general area are surefire ways to make your site better.
Grid-based layouts are a good choice for a forward thinking designer, and having a site width less than 1024 pixels wide is also smart planning.
Pages that can be found in less than three clicks (or search) means you have a good site structure, as users don't have to "hunt" for your content.
In terms of mobile, desktop, cell-phones, and all other web-enabled devices out there, the best route to go for new designs is Responsive Web Design.
Responsive Web Design is a methodology utilizing CSS media queries to ensure the best possible appearance in all types of user's browsers. This means making things relative-based using percentages instead of pixel dimensions, and having fluid layouts that adjust to the user's screen size and capabilities.
URL validation: Use PHP to format and validate a URL with these functions!
Valve's game history and success. An infographic.


text:
GETTOCHILD – BIRTHDAY WISH (FEAT. SOUL MECHANIC)
GettoChild released a smashing new hit 'Birthday Wish' with Soul Mechanic. It's a very smooth vibe with a blend of English and Zulu lyrics. The Durban based rapper is not new to the music scene and we could that a lot of work was put into the song.
GettoChild, a young South African hip hop artist from Durban, KwaZulu Natal. Real Name Sibusiso Vilakazi, Born in and raised in KwaZulu Natal. He started writing and composing music back in his high school days, he wasn't too much of sportsperson at school like other pupils at his school but had a lot interest in basketball which wasn't even there so he spent most his time writing rhymes and attending outside basketball games, Slam poetry, and hip hop shows during the weekends.
Sibusiso was influenced by several local artists such as Proverb, Tumi and Many More, as well as international artists such his favorite band Foreign Exchange and Little Brother
'Birthday Wish' will be hoping to claim the top singles charts in South Africa and beyond. The 'Birthday Wish' music video shot in Durban is also out now.
'This is definitely a jam,' said media personnel.
The song was released by Records DK and it's available across all digital stores for download.
Click here to download Birthday Wish on Apple Music
Click here to Listen on Spotify
Tags Birthday WishGETTO CHILDSibusiso VilakaziSoul Mechanic
Category EntertainmentMusicNewsVideo
Al-Noor orphanage: Manager wants seized assets to be returned before matter heads to trial
While the investigation into a Cape Town orphanage manager's fraud and corruption case is complete, the defence has thrown a spanner in the works, asking to bring an application for the return of the manager's seized assets in terms of Section 31 of the Criminal Procedure Act.The 49-year-old Al-Noor children's orphanage manager appeared in the…
Community	0 Comments
INVESTIGATIONS COMPLETE IN PASTOR TIMOTHY OMOTOSO HUMAN TRAFFICKING CASE
Investigations are complete in the human trafficking case against Nigerian televangelist Pastor Timothy Omotoso. The Port Elizabeth Magistrate's Court heard on Wednesday morning that the matter had now been referred
Small cracks have appeared in GOP unity on impeachment trial


text:
#include <stdio.h>
#include <string.h>
#include <sys/errno.h>

#include <gssapi/gssapi.h>
#include <gssapi/gssapi_generic.h>
#ifdef GSSAPI_KRB5
#include <gssapi/gssapi_krb5.h>
#endif

#include <gssrpc/rpc.h>
#include <gssrpc/auth_gssapi.h>

#include "gssrpcint.h"

#ifdef __CODECENTER__
#define DEBUG_GSSAPI 1
#endif

#ifdef DEBUG_GSSAPI
int auth_debug_gssapi = DEBUG_GSSAPI;
extern void gssrpcint_printf(const char *format, ...);
#define L_PRINTF(l,args) if (auth_debug_gssapi >= l) gssrpcint_printf args
#define PRINTF(args) L_PRINTF(99, args)
#define AUTH_GSSAPI_DISPLAY_STATUS(args) \
	if (auth_debug_gssapi) auth_gssapi_display_status args
#else
#define PRINTF(args)
#define L_PRINTF(l, args)
#define AUTH_GSSAPI_DISPLAY_STATUS(args)
#endif

static void 	auth_gssapi_nextverf(AUTH *);
static bool_t 	auth_gssapi_marshall(AUTH *, XDR *);
static bool_t	auth_gssapi_validate(AUTH *, struct opaque_auth *);
static bool_t	auth_gssapi_refresh(AUTH *, struct rpc_msg *);
static bool_t	auth_gssapi_wrap(AUTH *, XDR *, xdrproc_t, caddr_t);
static bool_t	auth_gssapi_unwrap(AUTH *, XDR *, xdrproc_t, caddr_t);
static void	auth_gssapi_destroy(AUTH *);

static bool_t	marshall_new_creds(AUTH *, bool_t, gss_buffer_t);

static struct auth_ops auth_gssapi_ops = {
     auth_gssapi_nextverf,
     auth_gssapi_marshall,
     auth_gssapi_validate,
     auth_gssapi_refresh,
     auth_gssapi_destroy,
     auth_gssapi_wrap,
     auth_gssapi_unwrap,
};

/*
 * the ah_private data structure for an auth_handle
 */
struct auth_gssapi_data {
     bool_t established;
     CLIENT *clnt;
     gss_ctx_id_t context;
     gss_buffer_desc client_handle;
     uint32_t seq_num;
     int def_cred;

     /* pre-serialized ah_cred */
     unsigned char cred_buf[MAX_AUTH_BYTES];
     uint32_t cred_len;
};
#define AUTH_PRIVATE(auth) ((struct auth_gssapi_data *)auth->ah_private)

/*
 * Function: auth_gssapi_create_default
 *
 * Purpose:  Create a GSS-API style authenticator, with default
 * options, and return the handle.
 *
 * Effects: See design document, section XXX.
 */
AUTH *auth_gssapi_create_default(CLIENT *clnt, char *service_name)
{
     AUTH *auth;
     OM_uint32 gssstat, minor_stat;
     gss_buffer_desc input_name;
     gss_name_t target_name;

     input_name.value = service_name;
     input_name.length = strlen(service_name) + 1;

     gssstat = gss_import_name(&minor_stat, &input_name,
			       gss_nt_service_name, &target_name);
     if (gssstat != GSS_S_COMPLETE) {
	  AUTH_GSSAPI_DISPLAY_STATUS(("parsing name", gssstat,
				      minor_stat));
	  rpc_createerr.cf_stat = RPC_SYSTEMERROR;
	  rpc_createerr.cf_error.re_errno = ENOMEM;
	  return NULL;
     }

     auth = auth_gssapi_create(clnt,
			       &gssstat,
			       &minor_stat,
			       GSS_C_NO_CREDENTIAL,
			       target_name,
			       GSS_C_NULL_OID,
			       GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG,
			       0,
			       NULL,
			       NULL,
			       NULL);

     gss_release_name(&minor_stat, &target_name);
     return auth;
}

/*
 * Function: auth_gssapi_create
 *
 * Purpose: Create a GSS-API style authenticator, with all the
 * options, and return the handle.
 *
 * Effects: See design document, section XXX.
 */
AUTH *auth_gssapi_create(
     CLIENT *clnt,
     OM_uint32 *gssstat,
     OM_uint32 *minor_stat,
     gss_cred_id_t claimant_cred_handle,
     gss_name_t target_name,
     gss_OID mech_type,
     OM_uint32 req_flags,
     OM_uint32 time_req,
     gss_OID *actual_mech_type,
     OM_uint32 *ret_flags,
     OM_uint32 *time_rec)
{
     AUTH *auth, *save_auth;
     struct auth_gssapi_data *pdata;
     struct gss_channel_bindings_struct bindings, *bindp;
     struct sockaddr_in laddr, raddr;
     enum clnt_stat callstat;
     struct timeval timeout;
     int bindings_failed;
     rpcproc_t init_func;

     auth_gssapi_init_arg call_arg;
     auth_gssapi_init_res call_res;
     gss_buffer_desc *input_token, isn_buf;

     memset(&rpc_createerr, 0, sizeof(rpc_createerr));

     /* this timeout is only used if clnt_control(clnt, CLSET_TIMEOUT) */
     /* has not already been called.. therefore, we can just pick */
     /* something reasonable-sounding.. */
     timeout.tv_sec = 30;
     timeout.tv_usec = 0;

     auth = NULL;
     pdata = NULL;

     /* don't assume the caller will want to change clnt->cl_auth */
     save_auth = clnt->cl_auth;

     auth = (AUTH *) malloc(sizeof(*auth));
     pdata = (struct auth_gssapi_data *) malloc(sizeof(*pdata));
     if (auth == NULL || pdata == NULL) {
	  /* They needn't both have failed; clean up.  */
	  free(auth);
	  free(pdata);
	  auth = NULL;
	  pdata = NULL;
	  rpc_createerr.cf_stat = RPC_SYSTEMERROR;
	  rpc_createerr.cf_error.re_errno = ENOMEM;
	  goto cleanup;
     }
     memset(auth, 0, sizeof(*auth));
     memset(pdata, 0, sizeof(*pdata));

     auth->ah_ops = &auth_gssapi_ops;
     auth->ah_private = (caddr_t) pdata;

     /* initial creds are auth_msg TRUE and no handle */
     marshall_new_creds(auth, TRUE, NULL);

     /* initial verifier is empty */
     auth->ah_verf.oa_flavor = AUTH_GSSAPI;
     auth->ah_verf.oa_base = NULL;
     auth->ah_verf.oa_length = 0;

     AUTH_PRIVATE(auth)->established = FALSE;
     AUTH_PRIVATE(auth)->clnt = clnt;
     AUTH_PRIVATE(auth)->def_cred = (claimant_cred_handle ==
				     GSS_C_NO_CREDENTIAL);

     clnt->cl_auth = auth;

     /* start by trying latest version */
     call_arg.version = 4;
     bindings_failed = 0;

try_new_version:
     /* set state for initial call to init_sec_context */
     input_token = GSS_C_NO_BUFFER;
     AUTH_PRIVATE(auth)->context = GSS_C_NO_CONTEXT;
     init_func = AUTH_GSSAPI_INIT;

#ifdef GSSAPI_KRB5
     /*
      * OV servers up to version 3 used the old mech id.  Beta 7
      * servers used version 3 with the new mech id; however, the beta
      * 7 gss-api accept_sec_context accepts either mech id.  Thus, if
      * any server rejects version 4, we fall back to version 3 with
      * the old mech id; for the OV server it will be right, and for
      * the beta 7 server it will be accepted.  Not ideal, but it
      * works.
      */
     if (call_arg.version < 4 && (mech_type == gss_mech_krb5 ||
				  mech_type == GSS_C_NULL_OID))
	  mech_type = (gss_OID) gss_mech_krb5_old;
#endif

     if (!bindings_failed && call_arg.version >= 3) {
	  if (clnt_control(clnt, CLGET_LOCAL_ADDR, &laddr) == FALSE) {
	       PRINTF(("gssapi_create: CLGET_LOCAL_ADDR failed"));
	       goto cleanup;
	  }
	  if (clnt_control(clnt, CLGET_SERVER_ADDR, &raddr) == FALSE) {
	       PRINTF(("gssapi_create: CLGET_SERVER_ADDR failed"));
	       goto cleanup;
	  }

	  memset(&bindings, 0, sizeof(bindings));
	  bindings.application_data.length = 0;
	  bindings.initiator_addrtype = GSS_C_AF_INET;
	  bindings.initiator_address.length = 4;
	  bindings.initiator_address.value = &laddr.sin_addr.s_addr;

	  bindings.acceptor_addrtype = GSS_C_AF_INET;
	  bindings.acceptor_address.length = 4;
	  bindings.acceptor_address.value = &raddr.sin_addr.s_addr;
	  bindp = &bindings;
     } else {
	  bindp = NULL;
     }

     memset(&call_res, 0, sizeof(call_res));

next_token:
     *gssstat = gss_init_sec_context(minor_stat,
				     claimant_cred_handle,
				     &AUTH_PRIVATE(auth)->context,
				     target_name,
				     mech_type,
				     req_flags,
				     time_req,
				     bindp,
				     input_token,
				     actual_mech_type,
				     &call_arg.token,
				     ret_flags,
				     time_rec);

     if (*gssstat != GSS_S_COMPLETE && *gssstat != GSS_S_CONTINUE_NEEDED) {
	  AUTH_GSSAPI_DISPLAY_STATUS(("initializing context", *gssstat,
				      *minor_stat));
	  goto cleanup;
     }

     /* if we got a token, pass it on */
     if (call_arg.token.length != 0) {

	  /*
	   * sanity check: if we received a signed isn in the last
	   * response then there *cannot* be another token to send
	   */
	  if (call_res.signed_isn.length != 0) {
	       PRINTF(("gssapi_create: unexpected token from init_sec\n"));
	       goto cleanup;
	  }

	  PRINTF(("gssapi_create: calling GSSAPI_INIT (%d)\n", init_func));

	  memset(&call_res, 0, sizeof(call_res));
	  callstat = clnt_call(clnt, init_func,
			       xdr_authgssapi_init_arg, &call_arg,
			       xdr_authgssapi_init_res, &call_res,
			       timeout);
	  gss_release_buffer(minor_stat, &call_arg.token);

	  if (callstat != RPC_SUCCESS) {
	       struct rpc_err err;

	       clnt_geterr(clnt, &err);
	       if (callstat == RPC_AUTHERROR &&
		   (err.re_why == AUTH_BADCRED || err.re_why == AUTH_FAILED)
		   && call_arg.version >= 1) {
		    L_PRINTF(1,
			     ("call_arg protocol version %d rejected, trying %d.\n",
			    call_arg.version, call_arg.version-1));
		    call_arg.version--;
		    goto try_new_version;
	       } else {
		    PRINTF(("gssapi_create: GSSAPI_INIT (%d) failed, stat %d\n",
			    init_func, callstat));
	       }

	       goto cleanup;
	  } else if (call_res.version != call_arg.version &&
		     !(call_arg.version == 2 && call_res.version == 1)) {
	       /*
		* The Secure 1.1 servers always respond with version
		* 1.  Thus, if we just tried a version >=3, fall all
		* the way back to version 1 since that is all they
		* understand
		*/
	       if (call_arg.version > 2 && call_res.version == 1) {
		    L_PRINTF(1,
			     ("Talking to Secure 1.1 server, using version 1.\n"));
		    call_arg.version = 1;
		    goto try_new_version;
	       }

	       PRINTF(("gssapi_create: invalid call_res vers %d\n",
		       call_res.version));
	       goto cleanup;
	  } else if (call_res.gss_major != GSS_S_COMPLETE) {
	       AUTH_GSSAPI_DISPLAY_STATUS(("in response from server",
					   call_res.gss_major,
					   call_res.gss_minor));
	       goto cleanup;
	  }

	  PRINTF(("gssapi_create: GSSAPI_INIT (%d) succeeded\n", init_func));
	  init_func = AUTH_GSSAPI_CONTINUE_INIT;

	  /* check for client_handle */
	  if (AUTH_PRIVATE(auth)->client_handle.length == 0) {
	       if (call_res.client_handle.length == 0) {
		    PRINTF(("gssapi_create: expected client_handle\n"));
		    goto cleanup;
	       } else {
		    PRINTF(("gssapi_create: got client_handle %d\n",
			    *((uint32_t *)call_res.client_handle.value)));

		    GSS_DUP_BUFFER(AUTH_PRIVATE(auth)->client_handle,
				   call_res.client_handle);

		    /* auth_msg is TRUE; there may be more tokens */
		    marshall_new_creds(auth, TRUE,
				       &AUTH_PRIVATE(auth)->client_handle);
	       }
	  } else if (!GSS_BUFFERS_EQUAL(AUTH_PRIVATE(auth)->client_handle,
					call_res.client_handle)) {
	       PRINTF(("gssapi_create: got different client_handle\n"));
	       goto cleanup;
	  }

	  /* check for token */
	  if (call_res.token.length==0 && *gssstat==GSS_S_CONTINUE_NEEDED) {
	       PRINTF(("gssapi_create: expected token\n"));
	       goto cleanup;
	  } else if (call_res.token.length != 0) {
	       if (*gssstat == GSS_S_COMPLETE) {
		    PRINTF(("gssapi_create: got unexpected token\n"));
		    goto cleanup;
	       } else {
		    /* assumes call_res is safe until init_sec_context */
		    input_token = &call_res.token;
		    PRINTF(("gssapi_create: got new token\n"));
	       }
	  }
     }

     /* check for isn */
     if (*gssstat == GSS_S_COMPLETE) {
	  if (call_res.signed_isn.length == 0) {
	       PRINTF(("gssapi_created: expected signed isn\n"));
	       goto cleanup;
	  } else {
	       PRINTF(("gssapi_create: processing signed isn\n"));

	       /* don't check conf (integ only) or qop (accpet default) */
	       *gssstat = gss_unseal(minor_stat,
				     AUTH_PRIVATE(auth)->context,
				     &call_res.signed_isn,
				     &isn_buf, NULL, NULL);

	       if (*gssstat != GSS_S_COMPLETE) {
		    AUTH_GSSAPI_DISPLAY_STATUS(("unsealing isn",
						*gssstat, *minor_stat));
		    goto cleanup;
	       } else if (isn_buf.length != sizeof(uint32_t)) {
		    PRINTF(("gssapi_create: gss_unseal gave %d bytes\n",
			    (int) isn_buf.length));
		    goto cleanup;
	       }

	       AUTH_PRIVATE(auth)->seq_num = (uint32_t)
		    ntohl(*((uint32_t*)isn_buf.value));
	       *gssstat = gss_release_buffer(minor_stat, &isn_buf);
	       if (*gssstat != GSS_S_COMPLETE) {
		    AUTH_GSSAPI_DISPLAY_STATUS(("releasing unsealed isn",
						*gssstat, *minor_stat));
		    goto cleanup;
	       }

	       PRINTF(("gssapi_create: isn is %d\n",
		       AUTH_PRIVATE(auth)->seq_num));

	       /* we no longer need these results.. */
	       xdr_free(xdr_authgssapi_init_res, &call_res);
	  }
     } else if (call_res.signed_isn.length != 0) {
	  PRINTF(("gssapi_create: got signed isn, can't check yet\n"));
     }

     /* results were okay.. continue if necessary */
     if (*gssstat == GSS_S_CONTINUE_NEEDED) {
	  PRINTF(("gssapi_create: not done, continuing\n"));
	  goto next_token;
     }

     /*
      * Done!  Context is established, we have client_handle and isn.
      */
     AUTH_PRIVATE(auth)->established = TRUE;

     marshall_new_creds(auth, FALSE,
			&AUTH_PRIVATE(auth)->client_handle);

     PRINTF(("gssapi_create: done. client_handle %#x, isn %d\n\n",
	     *((uint32_t *)AUTH_PRIVATE(auth)->client_handle.value),
	     AUTH_PRIVATE(auth)->seq_num));

     /* don't assume the caller will want to change clnt->cl_auth */
     clnt->cl_auth = save_auth;

     return auth;

     /******************************************************************/

cleanup:
     PRINTF(("gssapi_create: bailing\n\n"));

     if (auth) {
	 if (AUTH_PRIVATE(auth))
	     auth_gssapi_destroy(auth);
	 else
	     free(auth);
	 auth = NULL;
     }

     /* don't assume the caller will want to change clnt->cl_auth */
     clnt->cl_auth = save_auth;

     if (rpc_createerr.cf_stat == 0)
	  rpc_createerr.cf_stat = RPC_AUTHERROR;

     return auth;
}

/*
 * Function: marshall_new_creds
 *
 * Purpose: (pre-)serialize auth_msg and client_handle fields of
 * auth_gssapi_creds into auth->cred_buf
 *
 * Arguments:
 *
 * 	auth		(r/w) the AUTH structure to modify
 * 	auth_msg	(r) the auth_msg field to serialize
 * 	client_handle	(r) the client_handle field to serialize, or
 * 			NULL
 *
 * Returns: TRUE if successful, FALSE if not
 *
 * Requires: auth must point to a valid GSS-API auth structure, auth_msg
 * must be TRUE or FALSE, client_handle must be a gss_buffer_t with a valid
 * value and length field or NULL.
 *
 * Effects: auth->ah_cred is set to the serialized auth_gssapi_creds
 * version 2 structure (stored in the cred_buf field of private data)
 * containing version, auth_msg and client_handle.
 * auth->ah_cred.oa_flavor is set to AUTH_GSSAPI.  If cliend_handle is
 * NULL, it is treated as if it had a length of 0 and a value of NULL.
 *
 * Modifies: auth
 */
static bool_t marshall_new_creds(
     AUTH *auth,
     bool_t auth_msg,
     gss_buffer_t client_handle)
{
     auth_gssapi_creds creds;
     XDR xdrs;

     PRINTF(("marshall_new_creds: starting\n"));

     creds.version = 2;

     creds.auth_msg = auth_msg;
     if (client_handle)
	  GSS_COPY_BUFFER(creds.client_handle, *client_handle)
     else {
	  creds.client_handle.length = 0;
	  creds.client_handle.value = NULL;
     }

     xdrmem_create(&xdrs, (caddr_t) AUTH_PRIVATE(auth)->cred_buf,
		   MAX_AUTH_BYTES, XDR_ENCODE);
     if (! xdr_authgssapi_creds(&xdrs, &creds)) {
	  PRINTF(("marshall_new_creds: failed encoding auth_gssapi_creds\n"));
	  XDR_DESTROY(&xdrs);
	  return FALSE;
     }
     AUTH_PRIVATE(auth)->cred_len = xdr_getpos(&xdrs);
     XDR_DESTROY(&xdrs);

     PRINTF(("marshall_new_creds: auth_gssapi_creds is %d bytes\n",
	     AUTH_PRIVATE(auth)->cred_len));

     auth->ah_cred.oa_flavor = AUTH_GSSAPI;
     auth->ah_cred.oa_base = (char *) AUTH_PRIVATE(auth)->cred_buf;
     auth->ah_cred.oa_length = AUTH_PRIVATE(auth)->cred_len;

     PRINTF(("marshall_new_creds: succeeding\n"));

     return TRUE;
}

/*
 * Function: auth_gssapi_nextverf
 *
 * Purpose: None.
 *
 * Effects: None.  Never called.
 */
static void auth_gssapi_nextverf(AUTH *auth)
{
}

/*
 * Function: auth_gssapi_marhsall
 *
 * Purpose: Marshall RPC credentials and verifier onto xdr stream.
 *
 * Arguments:
 *
 * 	auth		(r/w) AUTH structure for client
 * 	xdrs		(r/w) XDR stream to marshall to
 *
 * Returns: boolean indicating success/failure
 *
 * Effects:
 *
 * The pre-serialized credentials in cred_buf are serialized.  If the
 * context is established, the sealed sequence number is serialized as
 * the verifier.  If the context is not established, an empty verifier
 * is serialized.  The sequence number is *not* incremented, because
 * this function is called multiple times if retransmission is required.
 *
 * If this took all the header fields as arguments, it could sign
 * them.
 */
static bool_t auth_gssapi_marshall(
     AUTH *auth,
     XDR *xdrs)
{
     OM_uint32 minor_stat;
     gss_buffer_desc out_buf;
     uint32_t seq_num;

     if (AUTH_PRIVATE(auth)->established == TRUE)  {
	  PRINTF(("gssapi_marshall: starting\n"));

	  seq_num = AUTH_PRIVATE(auth)->seq_num + 1;

	  PRINTF(("gssapi_marshall: sending seq_num %d\n", seq_num));

	  if (auth_gssapi_seal_seq(AUTH_PRIVATE(auth)->context, seq_num,
				   &out_buf) == FALSE) {
	       PRINTF(("gssapi_marhshall: seal failed\n"));
	  }

	  auth->ah_verf.oa_base = out_buf.value;
	  auth->ah_verf.oa_length = out_buf.length;

	  if (! xdr_opaque_auth(xdrs, &auth->ah_cred) ||
	      ! xdr_opaque_auth(xdrs, &auth->ah_verf)) {
	       (void) gss_release_buffer(&minor_stat, &out_buf);
	       return FALSE;
	  }
	  (void) gss_release_buffer(&minor_stat, &out_buf);
     } else {
	  PRINTF(("gssapi_marshall: not established, sending null verf\n"));

	  auth->ah_verf.oa_base = NULL;
	  auth->ah_verf.oa_length = 0;

	  if (! xdr_opaque_auth(xdrs, &auth->ah_cred) ||
	      ! xdr_opaque_auth(xdrs, &auth->ah_verf)) {
	       return FALSE;
	  }
     }

     return TRUE;
}

/*
 * Function: auth_gssapi_validate
 *
 * Purpose: Validate RPC response verifier from server.
 *
 * Effects: See design document, section XXX.
 */
static bool_t auth_gssapi_validate(
     AUTH *auth,
     struct opaque_auth *verf)
{
     gss_buffer_desc in_buf;
     uint32_t seq_num;

     if (AUTH_PRIVATE(auth)->established == FALSE) {
	  PRINTF(("gssapi_validate: not established, noop\n"));
	  return TRUE;
     }

     PRINTF(("gssapi_validate: starting\n"));

     in_buf.length = verf->oa_length;
     in_buf.value = verf->oa_base;
     if (auth_gssapi_unseal_seq(AUTH_PRIVATE(auth)->context, &in_buf,
				&seq_num) == FALSE) {
	  PRINTF(("gssapi_validate: failed unsealing verifier\n"));
	  return FALSE;
     }

     /* we sent seq_num+1, so we should get back seq_num+2 */
     if (AUTH_PRIVATE(auth)->seq_num+2 != seq_num) {
	  PRINTF(("gssapi_validate: expecting seq_num %d, got %d (%#x)\n",
		  AUTH_PRIVATE(auth)->seq_num + 2, seq_num, seq_num));
	  return FALSE;
     }
     PRINTF(("gssapi_validate: seq_num %d okay\n", seq_num));

     /* +1 for successful transmission, +1 for successful validation */
     AUTH_PRIVATE(auth)->seq_num += 2;

     PRINTF(("gssapi_validate: succeeding\n"));

     return TRUE;
}

/*
 * Function: auth_gssapi_refresh
 *
 * Purpose: Attempts to resyncrhonize the sequence number.
 *
 * Effects:
 *
 * When the server receives a properly authenticated RPC call, it
 * increments the sequence number it is expecting from the client.
 * But if the server's response is lost for any reason, the client
 * can't know whether the server ever received it, assumes it didn't,
 * and does *not* increment its sequence number.  Thus, the client's
 * next call will fail with AUTH_REJECTEDCRED because the server will
 * think it is a replay attack.
 *
 * When an AUTH_REJECTEDCRED error arrives, this function attempts to
 * resyncrhonize by incrementing the client's sequence number and
 * returning TRUE.  If any other error arrives, it returns FALSE.
 */
static bool_t auth_gssapi_refresh(
     AUTH *auth,
     struct rpc_msg *msg)
{
     if (msg->rm_reply.rp_rjct.rj_stat == AUTH_ERROR &&
	 msg->rm_reply.rp_rjct.rj_why == AUTH_REJECTEDVERF) {
	  PRINTF(("gssapi_refresh: rejected verifier, incrementing\n"));
	  AUTH_PRIVATE(auth)->seq_num++;
	  return TRUE;
     } else {
	  PRINTF(("gssapi_refresh: failing\n"));
	  return FALSE;
     }
}

/*
 * Function: auth_gssapi_destroy
 *
 * Purpose: Destroy a GSS-API authentication structure.
 *
 * Effects:  This function destroys the GSS-API authentication
 * context, and sends a message to the server instructing it to
 * invokte gss_process_token() and thereby destroy its corresponding
 * context.  Since the client doesn't really care whether the server
 * gets this message, no failures are reported.
 */
static void auth_gssapi_destroy(AUTH *auth)
{
     struct timeval timeout;
     OM_uint32 gssstat, minor_stat;
     gss_cred_id_t cred;
     int callstat;

     if (AUTH_PRIVATE(auth)->client_handle.length == 0) {
	  PRINTF(("gssapi_destroy: no client_handle, not calling destroy\n"));
	  goto skip_call;
     }

     PRINTF(("gssapi_destroy: marshalling new creds\n"));
     if (!marshall_new_creds(auth, TRUE, &AUTH_PRIVATE(auth)->client_handle)) {
	  PRINTF(("gssapi_destroy: marshall_new_creds failed\n"));
	  goto skip_call;
     }

     PRINTF(("gssapi_destroy: calling GSSAPI_DESTROY\n"));
     timeout.tv_sec = 1;
     timeout.tv_usec = 0;
     callstat = clnt_call(AUTH_PRIVATE(auth)->clnt, AUTH_GSSAPI_DESTROY,
			  xdr_void, NULL, xdr_void, NULL, timeout);
     if (callstat != RPC_SUCCESS)
	  clnt_sperror(AUTH_PRIVATE(auth)->clnt,
		       "gssapi_destroy: GSSAPI_DESTROY failed");

skip_call:
     PRINTF(("gssapi_destroy: deleting context\n"));
     gssstat = gss_delete_sec_context(&minor_stat,
				      &AUTH_PRIVATE(auth)->context,
				      NULL);
     if (gssstat != GSS_S_COMPLETE)
	  AUTH_GSSAPI_DISPLAY_STATUS(("deleting context", gssstat,
				      minor_stat));
     if (AUTH_PRIVATE(auth)->def_cred) {
	  cred = GSS_C_NO_CREDENTIAL;
	  gssstat = gss_release_cred(&minor_stat, &cred);
	  if (gssstat != GSS_S_COMPLETE)
	       AUTH_GSSAPI_DISPLAY_STATUS(("deleting default credential",
					   gssstat, minor_stat));
     }

     free(AUTH_PRIVATE(auth)->client_handle.value);

#if 0
     PRINTF(("gssapi_destroy: calling GSSAPI_EXIT\n"));
     AUTH_PRIVATE(auth)->established = FALSE;
     callstat = clnt_call(AUTH_PRIVATE(auth)->clnt, AUTH_GSSAPI_EXIT,
			  xdr_void, NULL, xdr_void, NULL, timeout);
#endif

     free(auth->ah_private);
     free(auth);
     PRINTF(("gssapi_destroy: done\n"));
}

/*
 * Function: auth_gssapi_wrap
 *
 * Purpose: encrypt the serialized arguments from xdr_func applied to
 * xdr_ptr and write the result to xdrs.
 *
 * Effects: See design doc, section XXX.
 */
static bool_t auth_gssapi_wrap(
     AUTH *auth,
     XDR *out_xdrs,
     bool_t (*xdr_func)(),
     caddr_t xdr_ptr)
{
     OM_uint32 gssstat, minor_stat;

     if (! AUTH_PRIVATE(auth)->established) {
	  PRINTF(("gssapi_wrap: context not established, noop\n"));
	  return (*xdr_func)(out_xdrs, xdr_ptr);
     } else if (! auth_gssapi_wrap_data(&gssstat, &minor_stat,
					AUTH_PRIVATE(auth)->context,
					AUTH_PRIVATE(auth)->seq_num+1,
					out_xdrs, xdr_func, xdr_ptr)) {
	  if (gssstat != GSS_S_COMPLETE)
	       AUTH_GSSAPI_DISPLAY_STATUS(("encrypting function arguments",
					   gssstat, minor_stat));
	  return FALSE;
     } else
	  return TRUE;
}

/*
 * Function: auth_gssapi_unwrap
 *
 * Purpose: read encrypted arguments from xdrs, decrypt, and
 * deserialize with xdr_func into xdr_ptr.
 *
 * Effects: See design doc, section XXX.
 */
static bool_t auth_gssapi_unwrap(
     AUTH *auth,
     XDR *in_xdrs,
     bool_t (*xdr_func)(),
     caddr_t xdr_ptr)
{
     OM_uint32 gssstat, minor_stat;

     if (! AUTH_PRIVATE(auth)->established) {
	  PRINTF(("gssapi_unwrap: context not established, noop\n"));
	  return (*xdr_func)(in_xdrs, xdr_ptr);
     } else if (! auth_gssapi_unwrap_data(&gssstat, &minor_stat,
					  AUTH_PRIVATE(auth)->context,
					  AUTH_PRIVATE(auth)->seq_num,
					  in_xdrs, xdr_func, xdr_ptr)) {
	  if (gssstat != GSS_S_COMPLETE)
	       AUTH_GSSAPI_DISPLAY_STATUS(("decrypting function arguments",
					   gssstat, minor_stat));
	  return FALSE;
     } else
	  return TRUE;
}

redpajama_set_name: RedPajamaGithub


2644 N 46th St Milwaukee WI 53210-2404 - A home ready to create an expression of yourself. Located on a generous double lot. Large combo living room and dining room flow together, great for entertaining. Dining room offers beautiful built-ins. Ample closet space throughout the home. Tons of natural light makes the home sparkle. Refinished hardwood floors, updated bathrooms, crown molding and natural fireplace gives home added charm.


What is Apple Store Kit Framework and how to write code for SKStoreReviewController API which will prompt user to write review for you App while using your app & without leaving your app | Mandar Apte - UI, UX, Logo, Symbol, Brand Identity, Graphic, Web & Animation Film Designer from Mumbai, Maharashtra, India.
I will write down few concepts & ideas to help you understand to implement StoreKit app review functionality in your app using Xcode.
You can ask your users to rate your app on a scale of 1 to 5 stars. User can also choose to write review for iOS and macOS apps.
Developer can view, sort and respond to reviews in iTunes Connect.
Every App Store app has one summary rating on product page, specific to each territory on the App Store.
Developer can reset your app's summary rating with release a new version of app.
Developer can ask users to rate and review your app at appropriate times when users are most likely to feel satisfaction with app e.g. when they've completed an action, level or task.
This will give users an easy way to provide feedback on the App Store without leaving your app.
Developer can prompt for ratings maximum by three times in a 365-day period.
Users will submit a rating through the standardised prompt.
Although you should call this method when it makes sense in the user experience flow of your app, the actual display of a rating/review request view is governed by App Store policy. Because this method may or may not present an alert, it's not appropriate to call it in response to a button tap or other user action.
When you call this method in development mode, review request view is always displayed so that you can test it on your device. However, this method will not be called when you distribute your app using TestFlight.
When you call this method in your shipping app and a review request view will be presented and the operating system will handles the entire process of presentation.
As we have learn from above content of the post operating system will only display 3 prompts for review in 365 days period.
That means we have to insatiate prompt at right interval as we have 3 chance to show prompt for 365 days period.
Important Note: Don't add this code to multiple view controllers as it may increment code twice & will display review prompt at quick successions and on wrong intervals.
Here is how to programmatically identify if user is on iPhone or iPad. There is also way to find out if user is on either device and if it is in portrait mode, landscape mode.


An animated progress pic of one of November's upcoming patron wallpapers, featuring my more cartooney pinup-style Ethma.
Naughty November sketch batch #4.
The thumbnails for all of the upcoming Chapter 18!
An inked preview of the Chapter 18 Cover.
A bonus wallpaper with the complete art I used for the new progress meter.
Naughty November sketch batch #5.
So, now that that's out of the way, I have a bit of a conundrum about this next chapter that I wanted to pick your brains on. Even if I finish up this cover tomorrow, which I will, I'm going to have to jump straight into new pages with pretty much no buffer and have completed pages for it ready to go starting on October 27th. Working with no buffer is difficult but doable, but it doesn't leave a lot of room for getting things done that I NEED to get done–case in point, I believe I announced that I was going to be redesigning the website 'soon' in October of last year, and I still haven't had a spare second for it in between pages and Patreon stuff.
I've also had almost no time to rebuild the 2 month buffer I used to have that kept us sane and on time, which is a lot harder now that our kidbeast is 3 and requires constant interaction and supervision. This means that most of my work gets done at night time and on weekends which our parents graciously watch her so we can get things done. I'm losing a lot of sleep, which I can deal with, but all these little things that I have to get done just keep piling up.
Drop down to ONE update every week until the new year and return to our normal schedule on Friday January 1st. We'd still update all throughout November and December with no break, but I'd be far enough ahead that I'd actually have time to get some of this outstanding work on the site and rebuilding the buffer done.
Take the last week of this month off and then, instead of posting updates this November, I'd post each finished, coloured Naughty November pic with some bonus world building and design notes in place of a page. There are 20 pics, which means we'd be adding a new one every single week day of November up until the 27th, at which point we'd resume our regular schedule on December 1st with twice-a-week updates straight through into next year. The naughty November arts could all be done by the end of this weekend if I prioritize them, which means I'd have all of November and a week to work on the new chapter's buffer and the new website.
Both of those sound pretty good to me, but before I decide on either, I'd like to make sure that they sound good to you. Tell me which one you like more, or suggest alternatives in the comments!


text:
Florida Police Benevolent Association Joins Pension Lawsuit; Rick Scott Doesn't Budge
Matthew Hendley | June 20, 2011 | 1:35pm
Apparently everyone wants a chance to sue Rick Scott.
The Florida Police Benevolent Association filed a third-party intervention today to join 11 others in state government to sue Gov. Scott and several other state department heads over the new law mandating that 3 percent of salaries for employees enrolled in the Florida Retirement System count as "contributions" to their retirement benefits.
Originally filed by the Florida Education Association, the lawsuit alleges that the mandatory contributions -- essentially a 3 percent pay cut to state employees -- violates the state constitution, which has mandated that the retirement system remain noncontributory since July 1, 1974.
For those keeping score at home, this is the second time this month a chapter of the Police Benevolent Association has bucked the governor, since the Broward PBA announced its "Party to Leave the Party" a couple of weeks back.
Now with all the buzz surrounding the lawsuit and more hopping onboard, Gov. Scott remains unfazed.
"The participation by people in their pension plan makes all the sense in the world," Scott told TampaBay.com. "It's what's fair to the private sector. Very few private-sector employees have a pension plan that is 100 percent. It's the right thing to do for our state."
In response to a question about the unconstitutionality of the new law, Scott said: "No, no. It's the right thing to do for the state."
If it's the right thing to do for the state, then the FEA lawsuit alleges that Scott advocates lying to state employees -- aside from the possibly unconstitutionality of the law, employees entered into a contract with their pension plan that didn't require mandatory contributions.
"It is essentially an income tax levied only on workers belonging to the Florida Retirement System," Florida Education Association President Andy Ford said this morning. "It's unfair -- and it breaks promises made to these employees when they chose to work to improve our state."


Molly Seidel (South Bend) and Troy Reeder (Fishers) ran to strong finishes at the 2016 USATF National Club Cross Country Championships on December 10. The event was held at Apalachee Regional Park in Tallahassee, Florida. The club championships is one of the most competitive cross country meets in the country.
Over 1000 athletes competed in the four events - Open Women (6 km), Open Men (10 km), Masters Women (6 km), Masters Men (10 km) - making it the largest club championships in history. In addition to the club championships, the meet's main focus, the races also serve as USA national championships for individuals. Both Seidel and Reeder competed as individuals.
Seidel, the 2015 NCAA Cross Country champion while competing for Notre Dame, used the race as a return to competition following a six month battle with injuries. Despite not racing since the spring she ran to a 14th place finish, running 20:13 over the 6 km course. Olympian Colleen Quigley won the race in 19:31.
In the men's race former Hamilton Southeastern star Troy Reeder ran to a 34th place finish. Reeder, the 2013 Indiana high school 1600m champion who now competes for Furman University, ran 30:18 over the 10 km course.
In the masters races, Paul Carlin, 71, of Indianapolis ran to a 9th place finish in the 70-74 division while Andy Schloot, 49, of Indianapolis finished 39th in the 45-49 division.
The 2017 championships are schedule for December 9 in Lexington, Kentucky.


This is my go to app for drawing. So many options to choose from.
Smooth lines, undo buttons, and layers! One of the best drawing apps out there! Going to make the full purchase, totally worth it dudes!
This is one of the best art apps I've used so far.
I love this app. It's great and like a to photoshop. I'm reading some of these bad reviews and looking at their reasons for 1-2 stars and thinking, " you people are idiots. "


An international team of researchers has found that it is possible to use the human bony labyrinth of the ear as an indicator of dispersal from Africa. In their paper published in Proceedings of the National Academy of Sciences, the group describes their study of hundreds of ancient ear bones from around the world and the differences they found among them.
As archaeologists continue to piece together human history, they look for new ways to interpret evidence that may already be in hand—such as ancient human bones or fossils. By studying the way the skeleton has changed from the time when our ancestors were in Africa until today, researchers have created a kind of map of the migration of humans around the world. In this new effort, the researchers focused on the bony labyrinth, the three bones of the inner ear—the cochlea, vestibule and semicircular canals. Together, they appear as a sort of labyrinth for which they were named. The researchers started with the knowledge that as time passes, bone structure tends to change—and the bony labyrinth has proven to be particularly hardy, remaining mostly intact in skeletons when arms, legs and other bones have been broken, crushed or lost completely. They further noted that earliest humans that migrated from Africa would have had the longest amount of time to evolve as they moved to other places. And those that migrated the farthest would likely be among those who migrated the earliest. This, they believed, suggests it should be possible to use evolutionary changes in the bony labyrinth as a means for charting human migration.
To test their theory, the researchers collected and analyzed 221 skulls, which included 22 unique populations from various time periods. They looked at the differences in the bony labyrinths, and once they had been identified, the researchers compared the differences they found with data from other studies attempting to create migration maps.
The team reports that their original idea aligned with their research data—those humans with the greatest amount of change in their inner ear bones were among the group that left Africa the earliest and traveled the farthest, demonstrating that the bony labyrinth could, indeed, be used as a new tool to help in adding pieces to the puzzle of human history.
The dispersal of modern humans from Africa is now well documented with genetic data that track population history, as well as gene flow between populations. Phenetic skeletal data, such as cranial and pelvic morphologies, also exhibit a dispersal-from-Africa signal, which, however, tends to be blurred by the effects of local adaptation and in vivo phenotypic plasticity, and that is often deteriorated by postmortem damage to skeletal remains. These complexities raise the question of which skeletal structures most effectively track neutral population history. The cavity system of the inner ear (the so-called bony labyrinth) is a good candidate structure for such analyses. It is already fully formed by birth, which minimizes postnatal phenotypic plasticity, and it is generally well preserved in archaeological samples. Here we use morphometric data of the bony labyrinth to show that it is a surprisingly good marker of the global dispersal of modern humans from Africa. Labyrinthine morphology tracks genetic distances and geography in accordance with an isolation-by-distance model with dispersal from Africa. Our data further indicate that the neutral-like pattern of variation is compatible with stabilizing selection on labyrinth morphology. Given the increasingly important role of the petrous bone for ancient DNA recovery from archaeological specimens, we encourage researchers to acquire 3D morphological data of the inner ear structures before any invasive sampling. Such data will constitute an important archive of phenotypic variation in present and past populations, and will permit individual-based genotype–phenotype comparisons.
So we have a record of where clumsy people came from?
What will future archaeologist find in about a 100 years, across the globe; these mysterious circular holes? As a team from Andromeda measure some atomic events less than a 100 years or so. These skulls! Peculiar! Self Destruction?
So, he took off on a boat!
Hopefully this skull labyrinth will shed some light on the labyrinth of the concocted social construct of race in which the world is lost. Alleles and ecotypes may differ but the fact remains that a random group of ten bonobo chimpanzees have more genetic diversity than does the entire human population. Even with this new information the question remains the same: How to end human stupidity while avoiding the extinction of the species?
Sir one thing that I want to understand because our Vedas the most ancient scriptures says that first man was originated in ice capped area and called as Hindus as Him termed in English as ice and dau in English call generated. Secondly Vedas says that initially there was six month day and six month night. This also confirms that the residents were from Arctic. Thus neanderthals and their ancestors must be the first human. The Pangaea also reveal that land has shifted from Arctic to Equator with the passage of time.
The problem with religious source texts is that they contain some grains of ancient knowledge and wisdom together with a boatload of misunderstood, falsified or plainly intentionally made-up stuff. Fascinating enough, there seems to be a little sliver of ancient knowledge in your citation from the Vedas. You will have noticed several recent scientific studies that challenge the prevailing assumption that all modern humans right now on Earth would have exclusively evolved from human ancestors in Africa. Extremely old human bones were found in Southern European countries. And a very wise man from the current time whom I respect greatly wrote already many years ago that humanoids had in parallel developed at several places on the planet, with its earliest instance occurring in Scandinavia. So pretty cool that the Vedas got that one right, mentioning an area closer to the poles.