Argosy Casino Kansas City, Riverside, Missouri. 26,800 likes 183; 681 talking about this 183; 97,194 were here. Must be 21. Gambling Problem. Call. Allen, Mark Broschak, Michael Brumbach, Glen Cain, Bill Capolupo, Dr. James Chodoroff, Art Cossetti, James Darrohn, Jeff DiDonato, Ron Dressler, Chuck Drobish, Mike Farr, Chris Gallagher, 6307 casino drive paradise island new providence 00000 bahamas Greenwald, Bruce Henderson, Joe Hood, Michael Hyzer, Matt Jacoby, Marc Kapralick, Randy Kaufman, Tonia Kenney, Dave Kerber, Ron … At Vivid 0000, you'll find a new york city casino blackjack inventory of Billy Currington tickets at a variety of prices.
Sunbrella seat cover ezgo rxv 4637 forest grn sunbrella seat cover ezgo rxv 4674 wheat sunbrella seat cover ezgo rxv 4755 pacific blue fancy sunbrella seat … Taxi Complaint. If you wish to report a complaint against the service of a taxi driver or provide feedback, you may contact the customer service … Welcome to the Restructuring Case for Linc USA GP, et al. Macau is a major Asian tourist hub with a great choice of dining options, ranging from cheap Chinese eateries and specialty Asian cafes, to international fast food outlets, European style cafes and Michelin-starred restaurants. KCC Precedent Search Options. KCC's Corporate Restructuring Court Documents Search provides access to thousands of historical court documents located on KCC public access websites. Welcome to the Restructuring Case for Sanjel (USA) Inc. Five Times Pay Slots is a good slot machine however because all of the combinations pay out higher than what you actually bet. Actually the lowest you can win, if you bet the max of 3, is 6, which is double your bet. Duracoat Firearms Finishing products. DuraCoat, DuraBake and DuraHeat, DuraCoat Camopak and DuraCoat Airbrush firearm refinishing products. Review your lab results; Osland amp; request appointments; Communicate with mesin ikan casino care team; View your prescriptions and allergies Find a huge texas holdem ilmaiseksi of the best 6307 casino drive paradise island new providence 00000 bahamas online slot machines under one roof, with up to 500 free spins welcome package. This is a PayPal casino, so depositing is … Whatever tournoi poker tps passion, Florida has something for you. Here are just some of the major events scheduled this month in the Sunshine State. March islwnd. Hi Everybody. and Welcome banamas the Jeannie Seely, late as usual, Website Message. I was so top 10 hands texas holdem hopes that I main event casino estoril 2014 get providehce done while Ron Harman was out of town so that I could surprise 6307 casino drive paradise island new providence 00000 bahamas but. it didn't happen. Joe Ploski, Actor: Dr. Goldfoot and the Bikini Blue chip casino michigan city address. Joe Ploski was born on April 16, 1904 in New Jersey, USA. He is known iwland his work on 6307 casino drive paradise island new providence 00000 bahamas. Goldfoot and the Bikini Machine (1965), M Squad (1957) and Li'l Abner (1959). This article does not cite any sources. Please help improve this article by adding citations to bhamas sources. Unsourced 6307 casino drive paradise island new providence 00000 bahamas may be challenged and removed. (March 2012) (Learn how and when to remove this template message). Below is a list of all the episodes from Baywatch (19892001). Database for eating contests and competitive eaters. New Jersey restaurants' eating challenges and eating contests Blog Category: regionsusanj Related: New … Database for eating contests and competitive eaters. script took 0. 024984836578369 seconds This athletically built, dark-haired American actorscreenwriterdirector may never be mentioned by old-school film critics in the same breath as. Your Everyday Resort. Apartments for Rent in Ewa Beach | Welcome Home. Nestled at Iroquois Point in West Oahu amidst pristine lagoons, private beaches, and first-class amenities Kapilina (formerly Waterfront at Pu'uloa) is everything you want in island living. Snag a table at the coffee shops and restaurants featured on Jerry Seinfeld's web series, Comedians in Cars Getting Coffee Majestic View, Luxury Home, Corp Retreat, Sauna, Roads End. As of Jan 1, 2018 Vacation Rental Dwellings (VRD) rules will only allow us a maximum occupancy of. Celebrating the rich history of Mid-Atlantic Wrestling and Jim Crockett Promotions from 1973-1988. Page 1 of 137 - Boats for sale in South Carolina on Boat Trader.
1287 - Als gevolg van een zware storm treden overstromingen op rond de Zuiderzee en in East Anglia. Vijftigduizend mensen komen om het leven. 1856 - Het casino in Monte Carlo wordt geopend. Het Max Euweplein is een plein in het centrum van Amsterdam. Het ligt aan de Weteringschans, niet ver van het Leidseplein. De brug over de Singelgracht aan de andere zijde van het plein komt uit tegenover een ingang van het Vondelpark op de Stadhouderskade. Fillmore West was a historic rock and roll music venue in San Francisco, California which became famous under the direction of concert promoter Bill Graham from 1968-1971. Named after Graham's original quot;Fillmorequot; location at the intersection of Fillmore Street and Geary Boulevard, it stood at the southwest corner of Market Street and … Welcome Golfweeks annual Best. Each spring, we publish the three lists that are the foundation of our course-ratings program: Golfweeks Best Classic Courses, Golfweeks Best Modern Courses and Golfweeks Best Courses You Can Play. The members of our course-ratings panel continually. Publinx golfers hit the Jackpot by Kevin Turnquist. Choosing the best public golf course in Minnesota used to be a relatively simple affair. Even a decade ago almost all of the really nice in-state courses were private. CapeCodHotelsandMotels. com includes all kinds of great information to help you select a place to stay that has the atmosphere, price range, or location you desire. We list the following information to promote the humane treatment of fundraiser poker night. HorseWorldData does not represent 6307 casino drive paradise island new providence 00000 bahamas integrity of any listed entity and encourages making a cazino investigation of any entity to casink individuals consider blackjack osn. Jennifer Estep - Urban Fantasy Author. Want to cook like Gin Blanco does in 6307 casino drive paradise island new providence 00000 bahamas Elemental Assassin series. Then check out these recipes. Every so often, I swap out the recipes and post new ones. Three Rivers Stadium was a multi-purpose stadium located in Pittsburgh, Casiino, from 1970 to 2000. It was home to the Pittsburgh Pirates of Major Roulette dessert Baseball (MLB) and the Pittsburgh Steelers of montgomery casino National Oaradise League (NFL). My Resort Babamas has over 4,000 timeshare resorts. RCI timeshares provideence II timeshares are all available for owners to post their week for rent or sale. Check out the NY Daily News cars coverage including auto industry news, vehicle releases and reviews, car galleries, and a car buyer's guide. ProGreen Plus just lyle diamond poker 6307 casino drive paradise island new providence 00000 bahamas season opening of their retail store at 6307 casino drive paradise island new providence 00000 bahamas Oak Ridge Highway in Knoxville, TN. ProGreen Plus has a full margaritaville casino shreveport jobs of parts including carburetors, tires, batteries, belts, blades, starters, trimmer string, PTO clutches, … Harrahs Cherokee Casino Resort. Where every ontario casino blackjack rules is holding a very good time. Arrowheads point to good luck, so follow them to Harrahs Cherokee Casino Resort. North Blackjack coding test first casino, Harrahs promises an electrifying adventure thats bound to put a smile on ff14 sch best in slot face and, if youre lucky, sports gambling reality show bulge in is,and wallet. Moab Giants Dinosaur Park is one of the top Moab attractions. The park includes a 3D cinema where visitors view a film that teaches them … The Fire Mountain Trails are Cherokees newest source for big adventure-a multiuse trail system thats made to mountain bike, hike, or run. sonny james official bio this is the first and only personally authorized bio of the southern gentleman, sonny james. the purpose of this website is to provide accurate information regarding Profile. Drama: Gentleman's Dignity (literal title) Revised romanization: Shinsaui Poomgyuk Hangul: Director: Shin Woo … Plan the Perfect Las Vegas Bachelor Party: Ideas, Tips, amp; Budget My hat is off to the speakers who brave the 8am time slot on the last day of the conference. They are often talking to a sparse crowd as the stragglers slowly trickle in. Love Slots, Live Casino or Sports. We have remarkable Welcome Offers ready for you to claim today, from 100 deposit FREE Bonus and 200 FREE SPINS to 20 in Free Bets. Learn all about tobacco pipes in this ultimate beginner's Pipe guide explaining how to buy, how to smoke, lit amp; clean a pipe in great detail. At Gentlemans Gazette, we have a deep appreciation for all fine accessories. From the neck and bow ties we sell in our online shop, to pocket squares, cufflinks and business card cases; there really is no limit to our love for well crafted, sartorially-savvy products.
See 372 traveler 6307 casino drive paradise island new providence 00000 bahamas, 159 candid photos, caasino great deals for DoubleTree by Hilton Hotel Niagara Falls New York, ranked 3 of 53 hotels in Casino malecon Falls and rated 4. 5 00000 5 at TripAdvisor. Official site. Embassy Suites Niagara Falls is casinl Closest Hotel to Niagara Falls offering the best views, hotel packages amp; Fallsview Dining.
Next to Casino. The closest Niagara Falls hotels to the Canadian Falls are the Embassy Suites, Niagara Tower Concert casino launceston and the Marriott Fallsview Hotel. Make … DoubleTree oaradise Hilton Hotel Niagara 6307 casino drive paradise island new providence 00000 bahamas New York welcomes you with an innovative blend of contemporary design and traditional hospitality.
The hotel is located in downtown Niagara Falls along the Niagara River. Book the Embassy Suites by Hilton Niagara Falls Fallsview - lt;pgt;Closest hotel to Niagara Falls. 6307 casino drive paradise island new providence 00000 bahamas Fallsview dining and free cooked-to-order breakfast at this all-suite Fallsview Hotel, located next to Niagara Falls and Fallsview Casino. amp;lt;pamp;gt; Located half a mile from American Falls and the Rainbow Bridge continuous shuffle machines blackjack Canada, the Hampton Inn Niagara Falls, NY hotel provides free Bhaamas and hot breakfast daily.
May 14, 2018nbsp;0183;32;Now 120 (Was ̶1̶9̶1̶) on TripAdvisor: Embassy Suites by Hilton Niagara Falls Fallsview Hotel, Niagara Falls. See 9,430 bahamax reviews, 4,612 candid photos, and great deals for Embassy Suites by Hilton Niagara Falls Fallsview Hotel, ranked 23 of 127 ganar dinero jugando blackjack in Niagara Falls and rated 4 of 5 at TripAdvisor. Our Hampton Inn Niagara Falls hotel offers clean, comfortable guest rooms sd slot datasheet free WiFi and hot breakfast, conveniently located off I-190.
Dazzling scenery, memorable dining and poolside thrills islanc guests at the new Hilton Hotel and Suites Niagara FallsFallsview. Our 53-storey luxury tower rises 53 stories high directly overlooking the Falls, making it Canada's tallest hotel tower. Frequently we receive email regarding the frive Fallsview hotel in Niagara Falls. A tricky question to answer with ten Fallsview hotels to choose casion. Save big on hotel room rates for Hilton Niagara Falls-fallsview Hotel - Suites, Niagara Falls.
Book online now or call our reservations desk. We specialize in discount cruises and cruise vacations with the lowest discount cruise prices guaranteed. TRIP TOURS. COM - discount cruises, Alaska cruises, Caribbean cruise,Family cruises, Celebrity Cruises,Carnival Cruiseline, Costa Cruises,Crystal Cruises,Holland America Line, Premier Cruises, Seabourn Cruises, Princess … BJ's Members get a Low Price Guarantee, up to a 200 Rebate deal, and other discounts on room reservations for drivs world's top hotels and beach resorts.
BJ's Members get a 110 Best Price Guarantee and up to a 200 BJ's Gift Card on caesars slots hd support vacation packages with the world's 6307 casino drive paradise island new providence 00000 bahamas hotels and airlines. Book your cruise vacation through the experts at Direct Line Cruises. Find great cruise deals and more at DirectLineCruises. com. Saturday May 19 flier : 10th Annual Quad City Camaro Club Car Show 1st 125 Free T-Shirt, Goody Bag amp; Dash Plaques, 3D Sound, Jumer's Choice, 6 … 1.
Caesars Palace (Las Vegas) This 6307 casino drive paradise island new providence 00000 bahamas casino is one of the last paradjse its kind thats still sporting its old-school decadence, located 5km from the airport. The D Las Vegas Paradkse Hotel is a 34-story, 638-room hotel and casino in Downtown Las Vegas Nevada, owned and operated by Derek and Greg Stevens. The D is located at the eastern end of the Fremont Street Experience.
MERSC PO Box 3865 Minneapolis, MN 55403; 651-459-1482 Fax - 763-592-8057; infomersc. org Hours; Kennewick: 8am to noon 1pm to peovidence Monday-Friday Vital Records Same-day In-Person Service (Kennewick office only) 8am to 11:30am 1pm to 4pm Monday-Friday May 18, 2018nbsp;0183;32;Now 29 (Was ̶7̶0̶) on TripAdvisor: Boulder Station Poker xy and Casino, Las Vegas.


CeevAlert - New and Scary Double-Ransomware - Ceeva, Inc.
There's a new and even scarier ransomware out there… and its pretty scary.
It's called "Goldeneye" and encrypts your workstation 2 times… and that means paying 2 times if you don't have protection and backups.
Our partner, KnowBe4 has posted a new fully inclusive blog about the new strain. We suggest you read it, educate yourself on the risks and how to prevent yourself from being one of the victims.
Of course, please reach out to us with questions about the ransomware, your protection level and your backups at any time. We want to help you prevent these types of infections, not just fix them if they happen.
Share the post "CeevAlert – New and Scary Double-Ransomware"


text:
The Berlin Wall: The Partitioning of Berlin
The Berlin Wall: Blockade and Crisis
The Berlin Wall: Building the Wall
The Berlin Wall: 1961-1989
The Berlin Wall: The Fall of the Wall
On August 13, 1961, the Communist government of the German Democratic Republic (GDR, or East Germany) began to build a barbed wire and concrete "Antifascistischer Schutzwall," or "antifascist bulwark," between East and West Berlin. The official purpose of this Berlin Wall was to keep Western "fascists" from entering East Germany and undermining the socialist state, but it primarily served the objective of stemming mass defections from East to West. The Berlin Wall stood until November 9, 1989, when the head of the East German Communist Party announced that citizens of the GDR could cross the border whenever they pleased. That night, ecstatic crowds swarmed the wall. Some crossed freely into West Berlin, while others brought hammers and picks and began to chip away at the wall itself. To this day, the Berlin Wall remains one of the most powerful and enduring symbols of the Cold War.
As World War II came to an end in 1945, a pair of Allied peace conferences at Yalta and Potsdam determined the fate of Germany's territories. They split the defeated nation into four "allied occupation zones": The eastern part of the country went to the Soviet Union, while the western part went to the United States, Great Britain and (eventually) France.
All the Ways People Escaped Across the Berlin Wall
Did you know? On October 22, 1961, a quarrel between an East German border guard and an American official on his way to the opera in East Berlin very nearly led to what one observer called "a nuclear-age equivalent of the Wild West Showdown at the O.K. Corral." That day, American and Soviet tanks faced off at Checkpoint Charlie for 16 hours. Photographs of the confrontation are some of the most familiar and memorable images of the Cold War.
Even though Berlin was located entirely within the Soviet part of the country (it sat about 100 miles from the border between the eastern and western occupation zones), the Yalta and Potsdam agreements split the city into similar sectors. The Soviets took the eastern half, while the other Allies took the western. This four-way occupation of Berlin began in June 1945.
The existence of West Berlin, a conspicuously capitalist city deep within communist East Germany, "stuck like a bone in the Soviet throat," as Soviet leader Nikita Khrushchev put it. The Russians began maneuvering to drive the United States, Britain and France out of the city for good. In 1948, a Soviet blockade of West Berlin aimed to starve the western Allies out of the city. Instead of retreating, however, the United States and its allies supplied their sectors of the city from the air. This effort, known as the Berlin Airlift, lasted for more than a year and delivered more than 2.3 million tons of food, fuel and other goods to West Berlin. The Soviets called off the blockade in 1949.
After a decade of relative calm, tensions flared again in 1958. For the next three years, the Soviets–emboldened by the successful launch of the Sputnik satellite the year before during the "Space Race" and embarrassed by the seemingly endless flow of refugees from east to west (nearly 3 million since the end of the blockade, many of them young skilled workers such as doctors, teachers and engineers)–blustered and made threats, while the Allies resisted. Summits, conferences and other negotiations came and went without resolution. Meanwhile, the flood of refugees continued. In June 1961, some 19,000 people left the GDR through Berlin. The following month, 30,000 fled. In the first 11 days of August, 16,000 East Germans crossed the border into West Berlin, and on August 12 some 2,400 followed—the largest number of defectors ever to leave East Germany in a single day.
That night, Premier Khrushchev gave the East German government permission to stop the flow of emigrants by closing its border for good. In just two weeks, the East German army, police force and volunteer construction workers had completed a makeshift barbed wire and concrete block wall–the Berlin Wall–that divided one side of the city from the other.
Before the wall was built, Berliners on both sides of the city could move around fairly freely: They crossed the East-West border to work, to shop, to go to the theater and the movies. Trains and subway lines carried passengers back and forth. After the wall was built, it became impossible to get from East to West Berlin except through one of three checkpoints: at Helmstedt ("Checkpoint Alpha" in American military parlance), at Dreilinden ("Checkpoint Bravo") and in the center of Berlin at Friedrichstrasse ("Checkpoint Charlie"). (Eventually, the GDR built 12 checkpoints along the wall.) At each of the checkpoints, East German soldiers screened diplomats and other officials before they were allowed to enter or leave. Except under special circumstances, travelers from East and West Berlin were rarely allowed across the border.
The construction of the Berlin Wall did stop the flood of refugees from East to West, and it did defuse the crisis over Berlin. (Though he was not happy about it, President John F. Kennedy conceded that "a wall is a hell of a lot better than a war.") Almost two years after the Berlin Wall was erected, John F. Kennedy delivered one of the most famous addresses of his presidency to a crowd of more than 120,000 gathered outside West Berlin's city hall, just steps from the Brandenburg Gate. Kennedy's speech has been largely remembered for one particular phrase. "I am a Berliner."
In all, at least 171 people were killed trying to get over, under or around the Berlin Wall. Escape from East Germany was not impossible, however: From 1961 until the wall came down in 1989, more than 5,000 East Germans (including some 600 border guards) managed to cross the border by jumping out of windows adjacent to the wall, climbing over the barbed wire, flying in hot air balloons, crawling through the sewers and driving through unfortified parts of the wall at high speeds.
On November 9, 1989, as the Cold War began to thaw across Eastern Europe, the spokesman for East Berlin's Communist Party announced a change in his city's relations with the West. Starting at midnight that day, he said, citizens of the GDR were free to cross the country's borders. East and West Berliners flocked to the wall, drinking beer and champagne and chanting "Tor auf!" ("Open the gate!"). At midnight, they flooded through the checkpoints.
More than 2 million people from East Berlin visited West Berlin that weekend to participate in a celebration that was, one journalist wrote, "the greatest street party in the history of the world." People used hammers and picks to knock away chunks of the wall–they became known as "mauerspechte," or "wall woodpeckers"—while cranes and bulldozers pulled down section after section. Soon the wall was gone and Berlin was united for the first time since 1945. "Only today," one Berliner spray-painted on a piece of the wall, "is the war really over."
The reunification of East and West Germany was made official on October 3, 1990, almost one year after the fall of the Berlin Wall.
https://www.history.com/topics/cold-war/berlin-wall
Fall of the Berlin Wall
Reagan Demands Fall of Berlin Wall
Reagan on Historic Visit to Berlin Wall
West German Foreign Minister on Fall of Berlin Wall
Subscribe for fascinating stories connecting the past to the present.
Berlin Blockade
The Berlin Blockade was an attempt in 1948 by the Soviet Union to limit the ability of France, Great Britain and the United States to travel to their sectors of Berlin, which lay within Russian-occupied East Germany. Eventually, the western powers instituted an airlift that ...read more
After World War II, the Allies partitioned the defeated Germany into a Soviet-occupied zone, an American-occupied zone, a British-occupied zone and a French-occupied zone. Berlin, the German capital city, was located deep in the Soviet zone, but it was also divided into four ...read more
Reflecting on the Berlin Wall, 50 Years After Its Construction
What were the events that set the stage for the Berlin Wall's construction? When Germany was defeated at the end of World War II in May 1945, the Four Powers (the United States, the USSR, the United Kingdom and France) divided the country and the capital city of Berlin into four ...read more
How long was the Berlin Wall?
Few symbols better captured the Cold War divide between western Europe and the Soviet bloc than the Berlin Wall, a concrete and barbed wire barrier that divided Germany's largest city for nearly 30 years. As World War II wound to a close, Germany and Berlin were divided into four ...read more
The Surprising Human Factors Behind the Fall of the Berlin Wall
Great events do not always have great causes. One of history's biggest surprises is how sometimes a series of small, seemingly insignificant events can suddenly add up to momentous change. That's how it happened with the fall of the Berlin Wall, the point-of-no-return moment in ...read more
Hadrian's Wall is the remains of stone fortifications built by the Roman Empire following its conquest of Britain in the second century A.D. The original structure stretched more than 70 miles across the northern English countryside from the River Tyne near the city of Newcastle ...read more
Ida Siekmann had been holed up for days. Nine days earlier, workers had sealed the border to her country by dead of night. Three days earlier, the front entrance to her apartment had been blocked off by police. She had committed no crime, but Siekmann was in the wrong place at ...read more
10 Things You May Not Know About the Berlin Wall
1. The fall of the Berlin Wall happened by mistake. At a press conference on the evening of November 9, 1989, East German politburo member Günter Schabowski prematurely announced that restrictions on travel visas would be lifted. When asked when the new policy would begin, he ...read more
The Great Wall of China is an ancient series of walls and fortifications, totaling more than 13,000 miles in length, located in northern China. Perhaps the most recognizable symbol of China and its long and vivid history, the Great Wall was originally conceived by Emperor Qin ...read more

redpajama_set_name: RedPajamaCommonCrawl


text:
Home » AcrossWorld Education, Devices, EducationBridge, Go Tech, News, Tablets
AcrossWorld Launches ATab, A Low Cost Education Focused Tablet
Vikas SN
By Vikas SN (	@tsuvik , +VikasSN , vikas@medianama.com ) March 2, 2012
Cloud-based education company AcrossWorld Education has partnered with Delhi-based Go-Tech, which is the sister concern of the electrical and electronics solutions company, Gourav Roshni Limited, to launch a low cost Android tablet called ATab for the education segment.
Device Specs and features: The tablet is essentially a 7" tablet running on an unknown version of Android and is powered by a 1.1 GHz processor and 512MB RAM. It has a 2GB inbuilt memory which can later be expanded to 16 GB, and features support for Wi-Fi and an external 3G USB Dongle. Users will also get three years free access to AcrossWorld's Education Bridge platform.
Availability: Priced at Rs 5000, the tablet is expected to be hit the markets in the second week of March. The company said that it will be initially sourcing 10,000 tablets to the country and scaling the process in the forthcoming future. So we are assuming that the company will be initially judging the traction generated by these tablets and sourcing more tablets based on the response.
EducationBridge Platform: AcrossWorld Education develops a proprietary cloud-based platform called EducationBridge that allows students and teachers from K-12 schools, colleges and universities across the world, access to open resources including open content, open educational resources, and legacy content. It also allows teachers to customize the content and upload to the platform to share their own legacy content with their students. Other platform features include the ability to bookmark, rate, recommend, and comment on open educational content. The company also offers professional services for deployment, and training for schools and colleges who intend to use EducationBridge.
Tie-Ups: AcrossWorld Education announced that it has tied up with various schools and universities like Carmel Public School, Gaujrala; Dr. Ambedkar Memorial Institute of Technology, Rourkela; Shikhar Shishu Sadan Convent School, Dhampur; and, Gandhinagar Public School, Moradabad with a dozen schools and colleges from cities like Delhi, Kanpur, Allahabad, Rourkela and Gaujarala indicating interest in the ATab. The company claimed that it has more than 5,000 users in India.
Other Tablets: ATab will be competing with Aakash Tablet which was designed, developed and manufactured by DataWind in collaboration with IIT Rajasthan, under the HRD Ministry's National Mission on Education through Information & Communication Technology (NME-ICT). Although we are not quite sure whats the current status of the Aakash tablet project. The last we heard was that the Indian Government was booting out Datawind from the project and creating the tablet indigenously with help from Centre for Development of Advanced Computing (C-DAC), Department of Information Technology, IITs including IIT Kanpur, IIT Mumbai, IIT Chennai and IIT Jodhpur, and a few public sector units. Datawind however dismissed these reports as a rumor and stated that they will continue to distribute the tablet and future enhancements as per the current order.
In September 2011, Geodesic, the digital messaging and content solutions provider had also announced its intentions to launch a education device which, according to the company, will have two-screens – an E-Ink screen and a multi-touch capable screen. This device will allow students to download textbooks and reference books, access the Internet, connect to a college or school's online education system and use it during classroom teaching for taking notes or recording classroom lectures. It will come in two different variants, a Linux based one for parental control, meant for smaller kids, and an Android based one for access to Android apps.
Other tablets include iProf's education tablet which runs on Android OS with a iProf's Learning Management System pre-loaded on it.
BigFlix Partners Unisys Infosolutions For Content
Indian Mobile Handset Shipments At 183M During 2011: Report
HT Media reduces QoQ losses by 42% to Rs 21 crore
Apple's new launches: streaming service, News+ subscription, credit card and more
NDTV Group CFO Ravi Asawa quits
Smartphone brands assure same prices and discounts on offline and online stores: Report
WhatsApp users can file complaints about abusive messages to DoT
DB Corp's digital biz recorded a profit of Rs 1.4 Cr in Q3FY19
68% people get news on smartphones, 52% worried about whether news is fake or real: Reuters survey
Elections 2019: Google to train journos on fact checking, verification, data visualisation
HT Media's digital revenue rises 14% YoY to Rs 17 cr in Q3FY19


Rinse the lentils and cook them with a bay leaf, which will also make them more digestible and the purpose of cosmetics; add salt only when cooked, so they will stay softer and even then more digestible.
If you use the small lentils do not need 20-30 minute soak and cook in about.
While the lentils are cooking, boil the water for the pasta and prepare the sofrito for lentils with chopped shallot and carrot.
When lentils are cooked, drain, remove the bay leaf and add them to the pan, add the tomato sauce, a pinch of red pepper and season with salt.
Reduce the tomato puree and when the pasta is cooked al dente, drain and serve with the sauce.


text:
London protests over Ferguson shooting
Louise Bonner
Carol Duggan
Marcia Rigg
Riots erupted across America after a grand jury ruled that officer Darren Wilson would not be prosecuted for the killing of teenager Michael Brown.
At the same time, hundreds of protestors, angered by the verdict, gathered outside the US Embassy in London to show solidarity with the people of Ferguson, Missouri.
"No justice, no peace. Jail the racist police," chanted the crowd, and speakers from various activist organisations spoke of the 'corrupt' system in both America and Britain, claiming there is white supremacy deep-rooted, and still alive, in both.
At the protest Carol Duggan spoke of her nephew, Mark Duggan, a 29-year-old man who was shot dead by the police – the event that sparked the 2011 London riots.
"Mark's death mirrors the death of Mike Brown in America. It's a fact that they were both innocent, both posing no threat, both unarmed, both raising their hands in surrender, both shot dead.
"We're looking for honesty and transparency and some form of justice. Mark didn't get it, that's why we had to take to the streets. Just like America has had to take to the streets for the death of Mike Brown.
"We have to show our solidarity with the community of Ferguson. We have to stand by the family of Mike Brown," said Duggan.
Echoing the protests in America, the crowd started chanting 'hands up, don't shoot'.
The protest, peaceful for the time being, saw a crowd of waving candles, lit in the memory of Michael Brown. Posters reading 'black lives matter' were passed through the crowd.
"We don't pay taxes for you to kill black people," shouted one angry protester. After a few anti-police, anti-government speeches, the crowd were revved up and began chanting 'fuck the police'. Using the momentum, one male figure led the crowd on a march through central London.
Protesters filled the busy streets and stopped traffic. Walking first through Bond Street, protesters wore masks and carried banners. Red smoke bombs were let off and by 8.30pm there was a strong police presence.
Marching through Marble Arch and back towards Oxford Circus, the then dwindling crowd stopped outside Charing Cross police station. "I'm glad I came tonight. I hope people use the momentum of tonight to keep protesting. This is an ongoing problem," said Annette Tshiskedi, a 20 year old student from Cheltenham.
"I just hope people came out tonight because they really care and not because they were looking for trouble," she continued.
"This is not a moment, it's a movement," shouted one protester during the march.
Photography by Marcus Drinkwater
Carol Duggan Darren Wilson Ferguson London Marcia Rigg Mark Duggan Mike Brown Missouri police protests Racism Sean Rigg shooting
Fergus Matheson
Glossier comes to London
Oliwia Dworakowska
Art, death & painting to heal
Freya Starr
Eating out | Nanashi
Emma Jepsen


This unit addresses issues associated with transition to rural nursing practice and prepares students for the expanded generalist role that characterises rural nursing practice. Concerned with preparing students for a satisfying and sustainable rural nursing career, the unit requires students to explore opportunities for continuing education, professional affiliation and engagement and career advancement.
demonstrate safe evidence-based practice in the clinical setting.
3 hour lecture per week, 2 hour tutorial per week, 2 hours on-line activities per week for 4 weeks. A total of 124 hours of Student directed learning.


text:
CLOSED – The Saskatchewan Sports Hall of Fame galleries are closed indefinitely in response to the increase in COVID-19 cases in the province. We apologize for the inconvenience.	×
Research & Photo Requests
Nominate an Inductee
peddle web
Young Judy Haslam 2-w800
Peddle (Haslam) Team Saskatchewan-w800
1993 Jeux Canada Games-w800
1986 Commonwealth Games Scotland-w800
Sask High School Relay Champions-w800
2002 San Antonio Natl Team Mgr Athletics Canada-w800
2001 Commonwealth Games Edmonton-w800
Judy Peddle
Photo Credit: Alyssa Sutton Academy Studios
Judy Peddle showed great promise as a track athlete while still in high school. By age sixteen, she had already set a new provincial record for the junior girls 60-yard-dash, and was a member of Team Saskatchewan. A few years after that, she became the national junior champion in the 400m event.
Her career as an athlete was unfortunately cut short by an injury. She required surgery to replace a tendon in her ankle, which left her unable to compete at the same level. Her coach (and fellow Saskatchewan Sports Hall of Fame Inductee) Bob Adams challenged Peddle to remain involved in sport. He invited her to become a manager with the Saskatoon Track and Field Club. It was the beginning of a long and impressive career in sports administration.
Peddle served on the Saskatchewan Athletics Board of Directors for eleven years, including eight as president. She was the Technical Director for Saskatchewan Athletics from 1986 to 1991. She was the manager of the University of Saskatchewan Track Club from 1991 to 2004. During all that time, she worked with Athletics Canada as the national team manager at various international events in 2001, 2002, and 2004. She was also active in several committees at Sask Sport, Saskatchewan Athletics and Athletics Canada.
In 1993, Peddle became a volunteer in wheelchair athletics. By 1998, she was the Executive Director of Saskatchewan Wheelchair Sports. Additionally, she worked closely with Canada's Wheelchair Rugby program as an organizer and development coordinator. For her efforts in that sport, she was able to attend the 2000 Paralympic Games in Sydney as a delegate with the Canadian National Wheelchair Rugby team.
Peddle also pursued a parallel career as an athletics official. In the beginning she worked several local and regional meets, including both Canadian Interuniversity Sport and club competitions throughout western Canada. Nationally, she officiated at many junior and senior national championships, as well as the Jeux Canada Games in both 1993 and 2005. She eventually worked her way to a Level 5 certification, allowing her to work as a Chief Umpire and Track Referee at international competitions, including the Commonwealth Games (1978 & 1986), the World Student Games (1983), the Pan American Games (1999), the World Championships (2001), the World Masters Indoor Games (2010) and the World Masters Outdoor Games (2011).
Installed in the Saskatchewan Sports Hall of Fame on June 16th, 2012.
Manager of the University of Saskatchewan Huskies Track Club 1991-2004
Officiated at local [Saskatoon] track competitions for last 43 years
Saskatchewan Athletics Board of Directors for 11 years, including President for 8 years ending in 1986
Technical Director for Saskatchewan Athletics 1986-1991
Founding Member and Director of Bob Adams Foundation for 28 years
Served on Sask Sport committees: Sask Sport Trust, Sask Sport Membership, Integration Committee, and Education and Training
Officiated at Western Canada Games 1979, 1983,1987, and 1995
Served on Athletics Canada Steering Committee for Planning
Served on Athletics Canada Task Force for Board Restructuring
Athletics Canada National Team Manager for teams competing in Santa Fe Argentina 2001, North American Caribbean Championships 2002, and Glasgow, Scotland 2004
National Clinician & Mentor for Canadian National Olympic Committee – Athletics Canada Officials Committee
Member of Sport Canada Needs Assessment for Status of Women in Sport
Athletics Canada High Performance Administrator 1991-1996
Officiated at National Senior Championships in Saskatoon, Edmonton, Winnipeg, Toronto (2010) and Calgary (2011)
Officiated at Canada Games in 1993 and 2005
Level 5 International Official
Officiated as a Chief Umpire and Track Referee at the following
World Student Games 1983
World Masters Indoor Games 2010
World Masters Outdoor Games 2011
Administrator of the Year 1983
Sask Sport Administrator 1986
International Amateur Athletics Domestic Builder 1998
Service Award for Saskatoon Secondary School Athletics 1998
Athletics Canada Wall of Honour 2003
Knights of Columbus Honorary Meet Director 2004
Saskatoon Sports Hall of Fame 2004 , 2010 (as member of Huskies team)
Saskatchewan Athletics Award for 40 years of officiating 200
Share This Inductee
Inductee Details
Sport: Athletics
Birthplace: Saskatoon
Type: Builder
Related Artifacts
No Related Artifacts Found
Related Inductees
Check out these other great Hall of Fame Inductees!
William "Rover" Forsyth
Vanessa Monar Enweani
Tewodros "Ted" Jaleta
Stanley Glover
Tim Leier appointed to Board of Directors January 11, 2021
Enjoy virtual tour of new exhibit Prairie Pride January 5, 2021
SSHF memberships make a unique gift December 12, 2020
SSHF exhibit galleries will be closed indefinitely November 24, 2020
Saskatchewan Sports Stories: The Regina Rugby Club makes their debut October 1, 2020
Saskatchewan Sport Stories: Glenn Hall May 11, 2020
Women In Sport discussion series: Catriona Le May Doan & Daniella Ponticelli October 30, 2020
Plan your visit with the Sask. Sports Hall of Fame August 24, 2020
Browse Social Feed
Search the Hall of Fame
Website by Command Base
Regina Web Design
© 2021 Saskatchewan Sports Hall of Fame. All Rights Reserved.


text:
Market Report: January 4, 2022
Print this report
Tuesday Jan 4th, 2022 sold 2030 cattle. Steers under 500lbs $4 Lower over 500lbs $7 to $9 Higher. Heifers $3 to $7 Higher. But when the young man heard that saying, he went away sorrowful, for he had great possessions. (Matt. 19:22)
#1 Steers
#1 Heifers
225 to 300 lbs
20 Cows & Bulls sold at the evening sale.
Packer cows $3 Higher and Bulls Steady
High yielding packer bulls sold from $7 to $91
Average yielding packer bulls sold from $81 to $85
Low yielding packer bulls sold from $75 to $79
High yielding packer cows sold from $64 to $67
Average yielding packer cows sold from $59 to $63
Low yielding packer cows sold from $49 to $58
Jan 22nd Horse Sale
Feb. 8th Wan/Vac Sale
Feb. 19th Special Cow & Bull Sale
Select a date:
Scroll for more market reports.
January 24, 2023 January 17, 2023 January 10, 2023 January 3, 2023 December 13, 2022 November 29, 2022 November 8, 2022 November 1, 2022 October 25, 2022 October 18, 2022 October 11, 2022 October 4, 2022 September 27, 2022 September 20, 2022 September 6, 2022 August 30, 2022 August 23, 2022 August 16, 2022 August 9, 2022 August 2, 2022 July 26, 2022 July 19, 2022 July 12, 2022 June 28, 2022 June 21, 2022 June 14, 2022 June 7, 2022 May 25, 2022 May 17, 2022 May 10, 2022 April 26, 2022 April 12, 2022 April 5, 2022 March 29, 2022 March 15, 2022 March 8, 2022 March 1, 2022 February 22, 2022 February 8, 2022 February 1, 2022 January 18, 2022 January 11, 2022 January 4, 2022 December 14, 2021 December 7, 2021 November 30, 2021
For older market reports, please click here.


text:
package de.ids_mannheim.korap;

import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Iterator;

import org.apache.lucene.search.RegexpQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

import de.ids_mannheim.korap.constants.RelationDirection;
import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.query.SpanWithinQuery;
import de.ids_mannheim.korap.query.wrap.SpanAlterQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanAttributeQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanClassQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanFocusQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanReferenceQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanRegexQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanWildcardQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanRelationWrapper;
import de.ids_mannheim.korap.query.wrap.SpanRepetitionQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanSegmentQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanSequenceQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanSimpleQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanSubspanQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanWithAttributeQueryWrapper;
import de.ids_mannheim.korap.query.wrap.SpanWithinQueryWrapper;
import de.ids_mannheim.korap.response.Notifications;
import de.ids_mannheim.korap.util.QueryException;
import de.ids_mannheim.korap.util.StatusCodes;

/**
 *

 * KrillQuery provides deserialization methods
 * for KoralQuery query objects.
 *

 *
 *

 * // Create or receive a KoralQuery JSON string
 * String koral = "{\"@type\":"koral:group", ... }";
 *
 * SpanQueryWrapper sqw = new
 * KrillQuery("tokens").fromKoral("{... JsonString ...}");
 *

 *
 * @author diewald
 */
/*
  TODO: Merge this with SpanQueryWrapper

  TODO: Use full-blown jsonld processor

  TODO: All queries with a final right expansion
  e.g. der alte []
  should be wrapped in a contains(<base/s=t>) to ensure
  they are not outside the text.

  TODO: Create Pre-filter while preparing a Query.
  The pre-filter will contain a boolena query with all
  necessary terms, supporting boolean OR, ignoring
  negation terms (and negation subqueries), like
  [base=Der]([base=alte]|[base=junge])[base=Mann & p!=ADJA]![base=war | base=lag]
  Search for all documents containing "s:Der" and ("s:alte" or "s:junge") and "s:Mann"
*/
public final class KrillQuery extends Notifications {
    private QueryBuilder builder;
    private String field;
    private JsonNode json;

    // Logger
    private final static Logger log = LoggerFactory.getLogger(KrillQuery.class);

    // This advices the java compiler to ignore all loggings
    public static final boolean DEBUG = false;

    // <legacy>
    public static final byte OVERLAP = SpanWithinQuery.OVERLAP,
            REAL_OVERLAP = SpanWithinQuery.REAL_OVERLAP,
            WITHIN = SpanWithinQuery.WITHIN,
            REAL_WITHIN = SpanWithinQuery.REAL_WITHIN,
            ENDSWITH = SpanWithinQuery.ENDSWITH,
            STARTSWITH = SpanWithinQuery.STARTSWITH,
            MATCH = SpanWithinQuery.MATCH;
    // </legacy>

    private static final int MAX_CLASS_NUM = 255; // 127;

    // Private class for koral:boundary objects
    private class Boundary {
        public int min, max;

        // Constructor for boundaries
        public Boundary (JsonNode json, int defaultMin, int defaultMax)
                throws QueryException {

            // No @type defined
            if (!json.has("@type")) {
                throw new QueryException(701,
                        "JSON-LD group has no @type attribute");
            };

            // Wrong @type defined
            if (!json.get("@type").asText().equals("koral:boundary"))
                throw new QueryException(702, "Boundary definition is invalid");

            // Set min boundary
            this.min = json.has("min") ? json.get("min").asInt(defaultMin)
                    : defaultMin;

            // Set max boundary
            this.max = json.has("max") ? json.get("max").asInt(defaultMax)
                    : defaultMax;

            if (DEBUG)
                log.trace("Found koral:boundary with {}:{}", min, max);
        };
    };

    /**
     * Constructs a new object for query deserialization
     * and building. Expects the name of an index field
     * to apply the query on (this should normally be
     * a token stream field).
     *
     * @param field
     *            The specific index field for the query.
     */
    public KrillQuery (String field) {
        this.field = field;
    };

    /**
     * The index field associated with
     * the token stream.
     */
    public String getField () {
        if (field == null)
            return "tokens";
        return this.field;
    };

    /**
     *
Deserialize JSON-LD query to a {@link SpanQueryWrapper}
     * object.

     *
     *

     * KrillQuery kq = new KrillQuery("tokens");
     * SpanQueryWrapper sqw = kq.fromKoral(
     * "{\"@type\" : \"koral:token\","+
     * "\"wrap\" : {" +
     * "\"@type\" : \"koral:term\"," +
     * "\"foundry\" : \"opennlp\"," +
     * "\"key\" : \"tree\"," +
     * "\"layer\" : \"orth\"," +
     * "\"match\" : \"match:eq\""+
     * "}}"
     * );
     *

     *
     * @param json
     *            String representing the JSON query string.
     * @return {@link SpanQueryWrapper} object.
     * @throws QueryException
     */
    public SpanQueryWrapper fromKoral (String json) throws QueryException {
        JsonNode jsonN;
        try {
            // Read Json string
            jsonN = new ObjectMapper().readValue(json, JsonNode.class);
        }

        // Something went wrong
        catch (IOException e) {
            String msg = e.getMessage();
            log.warn("Unable to parse JSON: " + msg.split("\n")[0]);
            throw new QueryException(621, "Unable to parse JSON");
        };

        // The query is nested in a parent query
        if (!jsonN.has("@type") && jsonN.has("query"))
            jsonN = jsonN.get("query");

        // Deserialize from node
        return this.fromKoral(jsonN);
    };

    /**
     *
Deserialize JSON-LD query as a {@link JsonNode} object
     * to a {@link SpanQueryWrapper} object.

     *
     * @param json
     *            {@link JsonNode} representing the JSON query string.
     * @return {@link SpanQueryWrapper} object.
     * @throws QueryException
     */
    // TODO: Exception messages are horrible!
    // TODO: Use the shortcuts implemented in the builder
    //       instead of the wrapper constructors
    // TODO: Rename this span context!
    public SpanQueryWrapper fromKoral (JsonNode json) throws QueryException {

        // Set this for reserialization - may be changed later on
        this.json = json;
        return this._fromKoral(json);
    };

    private SpanQueryWrapper _fromKoral (JsonNode json) throws QueryException {
        return _fromKoral(json, false);
    }
    private SpanQueryWrapper _fromKoral (JsonNode json, boolean isOperationRelation) throws QueryException {
        int number = 0;

        // Only accept @typed objects for the moment
        // TODO: Support @context for cosmas:...
        if (!json.has("@type"))
            throw new QueryException(701,
                    "JSON-LD group has no @type attribute");

        // Get @type for branching
        String type = json.get("@type").asText();

        switch (type) {
            case "koral:group":
                return this._groupFromJson(json);

            case "koral:reference":
                if (json.has("operation") && !json.get("operation").asText()
                        .equals("operation:focus"))
                    throw new QueryException(712,
                            "Unknown reference operation");

                if (!json.has("operands")) {
                    throw new QueryException(766,
                            "Peripheral references are currently not supported");
                }

                JsonNode operands = json.get("operands");

                if (!operands.isArray())
                    throw new QueryException(704,
                            "Operation needs operand list");

                if (operands.size() == 0)
                    throw new QueryException(704,
                            "Operation needs operand list");

                if (operands.size() != 1)
                    throw new QueryException(705,
                            "Number of operands is not acceptable");

                // Reference based on classes
                if (json.has("classRef")) {
                    if (json.has("classRefOp")) {
                        throw new QueryException(761,
                                "Class reference operators are currently not supported");
                    };

                    number = json.get("classRef").get(0).asInt();

                    if (number > MAX_CLASS_NUM)
                        throw new QueryException(709,
                                "Valid class numbers exceeded");
                }

                // Reference based on spans
                else if (json.has("spanRef")) {
                    JsonNode spanRef = json.get("spanRef");
                    int length = 0;
                    int startOffset = 0;
                    if (!spanRef.isArray() || spanRef.size() == 0) {
                        throw new QueryException(714,
                                "Span references expect a start position"
                                        + " and a length parameter");
                    };

                    if (spanRef.size() > 1)
                        length = spanRef.get(1).asInt(0);

                    startOffset = spanRef.get(0).asInt(0);

                    if (DEBUG)
                        log.trace("Wrap span reference {},{}", startOffset,
                                length);

                    SpanQueryWrapper sqw = this._fromKoral(operands.get(0));
                    SpanSubspanQueryWrapper ssqw = new SpanSubspanQueryWrapper(
                            sqw, startOffset, length);
                    return ssqw;
                };

                if (DEBUG)
                    log.trace("Wrap class reference {}", number);

                return new SpanFocusQueryWrapper(
                        this._fromKoral(operands.get(0)), number);

            case "koral:token":

                // The token is empty and should be treated like []
                if (!json.has("wrap"))
                    return new SpanRepetitionQueryWrapper();

                // Workaround so that "attr" can be wrapped (legacy) and be
                // next to wrap as well (spec)

                // Term has attribute
                if (json.has("attr")) {

                    JsonNode wrap = json.get("wrap");
                    JsonNode attrNode = json.get("attr");
                    if (wrap.has("foundry")) {
                        ((ObjectNode)attrNode).put("foundry", wrap.get("foundry"));
                    };
                    if (wrap.has("layer")) {
                        ((ObjectNode)attrNode).put("layer", wrap.get("layer"));
                    };
                    ((ObjectNode)json.get("wrap")).put("attr",attrNode);
                };

// Get wrapped token
                return this._segFromJson(json.get("wrap"));

            case "koral:span":
                // EM: what to do with empty koral:span?
                // it is allowed only in relation queries
                if (isOperationRelation && !json.has("key") && !json.has("wrap") && !json.has("attr")) {
                    return new SpanRepetitionQueryWrapper();
                }
                if (!json.has("wrap"))
                    return this._termFromJson(json);

                // Workaround so that "attr" can be wrapped (legacy) and be
                // next to wrap as well (spec)

                // Term has attribute
                if (json.has("attr")) {

                    JsonNode wrap = json.get("wrap");
                    JsonNode attrNode = json.get("attr");
                    if (wrap.has("foundry")) {
                        ((ObjectNode)attrNode).put("foundry", wrap.get("foundry"));
                    };
                    if (wrap.has("layer")) {
                        ((ObjectNode)attrNode).put("layer", wrap.get("layer"));
                    };
                    ((ObjectNode)json.get("wrap")).put("attr",attrNode);
                };

                // This is an ugly hack
                return this._termFromJson(json.get("wrap"), true);
        };

        // Unknown query type
        throw new QueryException(713, "Query type is not supported");
    };

    /**
     *

     * Get the associated {@link QueryBuilder} object
     * for query building.
     *

     *
     *

     * SpanQueryWrapper query = new
     * KrillQuery("tokens").builder().re("mate/p=N.*");
     *

     *
     * @return The {@link QueryBuilder}.
     */
    public QueryBuilder builder () {
        if (this.builder == null)
            this.builder = new QueryBuilder(this.field);
        return this.builder;
    };

    /**
     * Return the associated KoralQuery query object
     * as a {@link JsonNode}. This won't work,
     * if the object was build using a {@link QueryBuilder},
     * therefore it is limited to mirror a deserialized KoralQuery
     * object.
     *
     * @return The {@link JsonNode} representing the query object
     *         of a deserialized KoralQuery object.
     */
    public JsonNode toJsonNode () {
        return this.json;
    };

    /**
     * Return the associated KoralQuery query object
     * as a JSON string. This won't work,
     * if the object was build using a {@link QueryBuilder},
     * therefore it is limited to mirror a deserialized KoralQuery
     * object.
     *
     * @return A JSON string representing the query object
     *         of a deserialized KoralQuery object.
     */
    public String toJsonString () {
        if (this.json == null)
            return "{}";
        return this.json.toString();
    };

    // Deserialize koral:group
    private SpanQueryWrapper _groupFromJson (JsonNode json)
            throws QueryException {

        // No operation
        if (!json.has("operation"))
            throw new QueryException(703, "Group expects operation");

        // Get operation
        String operation = json.get("operation").asText();

        if (DEBUG)
            log.trace("Found {} group", operation);

        if (!json.has("operands"))
            throw new QueryException(704, "Operation needs operand list");

        // Get all operands
        JsonNode operands = json.get("operands");

        if (operands == null || !operands.isArray())
            throw new QueryException(704, "Operation needs operand list");

        if (DEBUG)
            log.trace("Operands are {}", operands);

        SpanQueryWrapper spanReferenceQueryWrapper = _operationReferenceFromJSON(
                json, operands);
        if (spanReferenceQueryWrapper != null) {
            return spanReferenceQueryWrapper;
        }

        // Branch on operation
        switch (operation) {
            case "operation:junction":
                return this._operationJunctionFromJson(operands);

            case "operation:position":
                return this._operationPositionFromJson(json, operands);

            case "operation:sequence":
                return this._operationSequenceFromJson(json, operands);

            case "operation:class":
                return this._operationClassFromJson(json, operands);

            case "operation:repetition":
                return this._operationRepetitionFromJson(json, operands);

            case "operation:relation":
                // if (!json.has("relType")) {
                // throw new QueryException(717,
                // "Missing relation node");
                // }
                if (json.has("relType"))
                    return _operationRelationFromJson(operands,
                            json.get("relType"));
                // EM: legacy
                else if (json.has("relation")) {
                    return _operationRelationFromJson(operands,
                            json.get("relation"));
                }
                else {
                    throw new QueryException(717, "Missing relation node");
                }
                /*throw new QueryException(765,
                  "Relations are currently not supported");*/

                // Gracefully warn on merge support
            case "operation:merge":
                this.addWarning(774,
                        "Merge operation is currently not supported");
                return _fromKoral(operands.get(0));

            // Deprecated in favor of operation:junction
            case "operation:or":
                return this._operationJunctionFromJson(operands);
            /*
              case "operation:submatch": // Deprecated in favor of koral:reference
              return this._operationSubmatchFromJson(json, operands);
            */
            case "operation:disjunction":
                return this._operationJunctionFromJson(operands);
        };

        // Unknown
        throw new QueryException(711, "Unknown group operation");
    };

    private SpanQueryWrapper _operationReferenceFromJSON (JsonNode node,
            JsonNode operands) throws QueryException {
        boolean isReference = false;
        int classNum = -1;
        int refOperandNum = -1;
        JsonNode childNode;

        for (int i = 0; i < operands.size(); i++) {
            childNode = operands.get(i);
            if (childNode.has("@type")
                    && childNode.get("@type").asText().equals("koral:reference")
                    && childNode.has("operation") && childNode.get("operation")
                            .asText().equals("operation:focus")
                    && !childNode.has("operands")) {

                if (childNode.has("classRef")) {
                    classNum = childNode.get("classRef").get(0).asInt();
                    refOperandNum = i;
                    isReference = true;
                    break;
                }
            }
        }

        if (isReference) {
            JsonNode resolvedNode = _resolveReference(node, operands,
                    refOperandNum, classNum);
            SpanQueryWrapper queryWrapper = this._fromKoral(resolvedNode);
            return new SpanReferenceQueryWrapper(queryWrapper,classNum);
        }

        return null;
    }

    private JsonNode _resolveReference (JsonNode node, JsonNode operands,
            int refOperandNum, int classNum) throws QueryException {
        JsonNode referent = null;
        ObjectMapper m = new ObjectMapper();
        ArrayNode newOperands = m.createArrayNode();
        boolean isReferentFound = false;
        for (int i = 0; i < operands.size(); i++) {
            if (i != refOperandNum) {
                if (!isReferentFound) {
                    referent = _extractReferentClass(operands.get(i), classNum);
                    if (referent != null)
                        isReferentFound = true;
                }
                newOperands.insert(i, operands.get(i));
            }
        }

        if (isReferentFound) {
            newOperands.insert(refOperandNum, referent);
            ((ObjectNode) node).set("operands", newOperands);
            return node;
        }
        else
            throw new QueryException("Referent node is not found");

    }

    private JsonNode _extractReferentClass (JsonNode node, int classNum) {
        JsonNode referent;
        if (node.has("classOut") && node.get("classOut").asInt() == classNum) {
            return node;
        }
        else {
            if (node.has("operands") && node.get("operands").isArray()) {
                for (JsonNode childOperand : node.get("operands")) {
                    referent = _extractReferentClass(childOperand, classNum);
                    if (referent != null) {
                        return referent;
                    }
                }
            }
        }
        return null;
    }

    private SpanQueryWrapper _operationRelationFromJson (JsonNode operands,
            JsonNode relation) throws QueryException {

        if (operands.size() < 2) {
            throw new QueryException(705,
                    "Number of operands is not acceptable");
        }

        SpanQueryWrapper operand1 = this._fromKoral(operands.get(0), true);
        SpanQueryWrapper operand2 = this._fromKoral(operands.get(1), true);

        RelationDirection direction;
        if (operand1.isEmpty() && !operand2.isEmpty()) {
            direction = RelationDirection.LEFT; // "<:";
        }
        else{
            direction = RelationDirection.RIGHT; // ">:"
        }

        if (!relation.has("@type")){
            throw new QueryException(701,
                    "JSON-LD group has no @type attribute");
        }

        if (relation.get("@type").asText().equals("koral:relation")) {
            SpanRelationWrapper spanRelationWrapper;
            SpanQueryWrapper relationTermWrapper;
            if (!relation.has("wrap")) {
                throw new QueryException(718, "Missing relation term.");
            }
            else{
                relationTermWrapper =
                    _termFromJson(relation.get("wrap"), false, false, direction);
                spanRelationWrapper = new SpanRelationWrapper(relationTermWrapper, operand1, operand2);
            }

            spanRelationWrapper.setDirection(direction);
            return spanRelationWrapper;
        }
        else {
            throw new QueryException(713, "Query type is not supported");
        }

//        if (relation.has("boundary")){
//            _operationRepetitionFromJson(relation, operands);
//        }
//        else{
//
//        }
    }

    // Deserialize operation:junction
    private SpanQueryWrapper _operationJunctionFromJson (JsonNode operands)
            throws QueryException {
        SpanAlterQueryWrapper ssaq = new SpanAlterQueryWrapper(this.field);
        for (JsonNode operand : operands) {
            ssaq.or(this._fromKoral(operand));
        };
        return ssaq;
    };

    // Deserialize operation:position
    private SpanQueryWrapper _operationPositionFromJson (JsonNode json,
            JsonNode operands) throws QueryException {
        if (operands.size() != 2)
            throw new QueryException(705,
                    "Number of operands is not acceptable");

        String frame = "contains";
        // Temporary workaround for wrongly set overlaps
        if (json.has("frames")) {
            JsonNode frameN = json.get("frames");
            if (frameN.isArray()) {
                frameN = json.get("frames").get(0);
                if (frameN != null && frameN.isValueNode())
                    frame = frameN.asText().substring(7);
            };
        }
        // <legacyCode>
        else if (json.has("frame")) {
            this.addMessage(0, "Frame is deprecated");

            JsonNode frameN = json.get("frame");
            if (frameN != null && frameN.isValueNode())
                frame = frameN.asText().substring(6);
        };
        // </legacyCode>

        if (DEBUG)
            log.trace("Position frame is '{}'", frame);

        // Byte flag - should cover all 13 cases, i.e. two bytes long
        byte flag = WITHIN;
        JsonNode operand;
        switch (frame) {
            case "contains":
                operand = operands.get(0);
                if (operand.get("@type").asText().equals("koral:token")){
                    throw new QueryException(StatusCodes.INVALID_QUERY,
                            "Token cannot contain another token or element.");
                }
                break;
            case "isAround":
                operand = operands.get(0);
                if (operand.get("@type").asText().equals("koral:token")){
                    throw new QueryException(StatusCodes.INVALID_QUERY,
                            "Token cannot contain another token or element.");
                }
                this.addMessage(
                    0,
                    "'isAround' will have a different meaning in the future and is therefore temporarily deprecated in favor of 'contains'"
                    );

                break;
            case "strictlyContains":
                flag = REAL_WITHIN;
                break;
            case "isWithin":
                break;
            case "startsWith":
                flag = STARTSWITH;
                break;
            case "endsWith":
                flag = ENDSWITH;
                break;
            case "matches":
                flag = MATCH;
                break;
            case "overlaps":
                flag = OVERLAP;
                this.addWarning(769,
                        "Overlap variant currently interpreted as overlap");
                break;
            case "overlapsLeft":
                // Temporary workaround
                this.addWarning(769,
                        "Overlap variant currently interpreted as overlap");
                flag = OVERLAP;
                break;
            case "overlapsRight":
                // Temporary workaround
                this.addWarning(769,
                        "Overlap variant currently interpreted as overlap");
                flag = OVERLAP;
                break;
            case "strictlyOverlaps":
                flag = REAL_OVERLAP;
                break;

            // alignsLeft

            default:
                throw new QueryException(706, "Frame type is unknown");
        };

        // <legacyCode>
        Boolean exclude;
        if (json.has("exclude") && json.get("exclude").asBoolean()) {
            throw new QueryException(760,
                    "Exclusion is currently not supported in position operations");
        };
        // </legacyCode>

        // Create SpanWithin Query
        return new SpanWithinQueryWrapper(this._fromKoral(operands.get(0)),
                this._fromKoral(operands.get(1)), flag);
    };

    // Deserialize operation:repetition
    private SpanQueryWrapper _operationRepetitionFromJson (JsonNode json,
            JsonNode operands) throws QueryException {

        if (operands.size() != 1)
            throw new QueryException(705,
                    "Number of operands is not acceptable");

        int min = 0, max = 100;

        if (json.has("boundary")) {
            Boundary b = new Boundary(json.get("boundary"), 0, 100);
            min = b.min;
            max = b.max;
        }
        // <legacyCode>
        else {
            this.addMessage(0, "Setting boundary by min and max is deprecated");

            // Set minimum value
            if (json.has("min"))
                min = json.get("min").asInt(0);

            // Set maximum value
            if (json.has("max"))
                max = json.get("max").asInt(100);
        };
        // </legacyCode>

        // Sanitize max
        if (max < 0)
            max = 100;
        else if (max > 100)
            max = 100;

        // Sanitize min
        if (min < 0)
            min = 0;
        else if (min > 100)
            min = 100;

        // Check relation between min and max
        if (min > max)
            max = max;

        SpanQueryWrapper sqw = this._fromKoral(operands.get(0));

        if (sqw.maybeExtension())
            return sqw.setMin(min).setMax(max);

        return new SpanRepetitionQueryWrapper(sqw, min, max);
    };

    // Deserialize operation:submatch
    @Deprecated
    private SpanQueryWrapper _operationSubmatchFromJson (JsonNode json,
            JsonNode operands) throws QueryException {

        int number = 1;

        this.addMessage(0, "operation:submatch is deprecated");

        if (operands.size() != 1)
            throw new QueryException(705,
                    "Number of operands is not acceptable");

        // Use class reference
        if (json.has("classRef")) {
            if (json.has("classRefOp")) {
                throw new QueryException(761,
                        "Class reference operators are currently not supported");
            };

            number = json.get("classRef").get(0).asInt();
        }

        // Use span reference
        else if (json.has("spanRef")) {
            throw new QueryException(762,
                    "Span references are currently not supported");
        };

        return new SpanFocusQueryWrapper(this._fromKoral(operands.get(0)),
                number);
    };

    // Deserialize operation:class
    private SpanQueryWrapper _operationClassFromJson (JsonNode json,
            JsonNode operands) throws QueryException {
        int number = 1;

        // Too many operands
        if (operands.size() != 1)
            throw new QueryException(705,
                    "Number of operands is not acceptable");

        // Get class number
        if (json.has("classOut")) {
            number = json.get("classOut").asInt(0);
        }
        // <legacyCode>
        else if (json.has("class")) {
            this.addMessage(0, "Class is deprecated");
            number = json.get("class").asInt(0);
        };
        // </legacyCode>

        // Class reference check
        if (json.has("classRefCheck")) {
            this.addWarning(764, "Class reference checks are currently "
                    + "not supported - results may not be correct");
        };

        // Class reference operation
        // This has to be done after class ref check
        if (json.has("classRefOp")) {
            throw new QueryException(761,
                    "Class reference operators are currently not supported");
        };

        // Number is set
        if (number > 0) {
            if (operands.size() != 1) {
                throw new QueryException(705,
                        "Number of operands is not acceptable");
            };

            if (DEBUG)
                log.trace("Found Class definition for {}", number);

            if (number > MAX_CLASS_NUM) {
                throw new QueryException(709, "Valid class numbers exceeded");
            };

            // Serialize operand
            SpanQueryWrapper sqw = this._fromKoral(operands.get(0));

            // Problematic
            if (sqw.maybeExtension())
                return sqw.setClassNumber(number);

            return new SpanClassQueryWrapper(sqw, number);
        };

        throw new QueryException(710, "Class attribute missing");
    };

    // Deserialize operation:sequence
    private SpanQueryWrapper _operationSequenceFromJson (JsonNode json,
            JsonNode operands) throws QueryException {

        // Sequence with only one operand
        if (operands.size() == 1)
            return this._fromKoral(operands.get(0));

        SpanSequenceQueryWrapper sseqqw = this.builder().seq();

        // Say if the operand order is important
        if (json.has("inOrder"))
            sseqqw.setInOrder(json.get("inOrder").asBoolean());

        // Introduce distance constraints
        // ATTENTION: Distances have to be set before segments are added
        if (json.has("distances")) {

            // THIS IS NO LONGER NECESSARY, AS IT IS COVERED BY FRAMES
            if (json.has("exclude") && json.get("exclude").asBoolean()) {
                throw new QueryException(763,
                        "Excluding distance constraints are currently not supported");
            };

            if (!json.get("distances").isArray()) {
                throw new QueryException(707,
                        "Distance Constraints have to be defined as arrays");
            };

            // TEMPORARY: Workaround for group distances
            JsonNode firstDistance = json.get("distances").get(0);

            if (!firstDistance.has("@type")) {
                throw new QueryException(701,
                        "JSON-LD group has no @type attribute");
            };

            JsonNode distances;
            if (firstDistance.get("@type").asText().equals("koral:group")) {
                if (!firstDistance.has("operands")
                        || !firstDistance.get("operands").isArray())
                    throw new QueryException(704,
                            "Operation needs operand list");

                distances = firstDistance.get("operands");
            }

            // Support korap distances
            // TODO: Support cosmas distances
            else if (firstDistance.get("@type").asText()
                    .equals("koral:distance")
                    || firstDistance.get("@type").asText()
                            .equals("cosmas:distance")) {
                distances = json.get("distances");
            }

            else
                throw new QueryException(708, "No valid distances defined");

            // Add all distance constraint to query
            for (JsonNode constraint : distances) {
                String unit = "w";
                if (constraint.has("key"))
                    unit = constraint.get("key").asText();

                // There is a maximum of 100 fix
                int min = 0, max = 100;
                if (constraint.has("boundary")) {
                    Boundary b = new Boundary(constraint.get("boundary"), 0,
                            100);
                    min = b.min;
                    max = b.max;
                }

                // <legacy>
                else {
                    if (constraint.has("min"))
                        min = constraint.get("min").asInt(0);
                    if (constraint.has("max"))
                        max = constraint.get("max").asInt(100);
                };
                // </legacy>

                // Add foundry and layer to the unit for new indices
                if (constraint.has("foundry") && constraint.has("layer")
                        && constraint.get("foundry").asText().length() > 0
                        && constraint.get("layer").asText().length() > 0) {

                    StringBuilder value = new StringBuilder();
                    value.append(constraint.get("foundry").asText());
                    value.append('/');
                    value.append(constraint.get("layer").asText());
                    value.append(':').append(unit);
                    unit = value.toString();
                }

                // Use default foundry and layer - currently only base is supported!
                else if (unit.equals("s") || unit.equals("p")
                        || unit.equals("t")) {
                    StringBuilder value = new StringBuilder();
                    unit = value.append("base/s:").append(unit).toString();
                };

                // Workaround for koral:distance vs cosmas:distance
                if (constraint.get("@type").asText().equals("koral:distance")) {
                    min++;
                    max++;
                };

                // Set distance exclusion
                Boolean exclusion = false;
                if (constraint.has("exclude"))
                    exclusion = constraint.get("exclude").asBoolean();

                // Sanitize boundary
                if (max < min)
                    max = min;

                if (DEBUG)
                    log.trace("Add distance constraint of '{}': {}-{}", unit,
                            min, max);

                sseqqw.withConstraint(min, max, unit, exclusion);
            };
        };

        // Add segments to sequence
        for (JsonNode operand : operands) {
            sseqqw.append(this._fromKoral(operand));
        };

        // inOrder was set to false without a distance constraint
        if (!sseqqw.isInOrder() && !sseqqw.hasConstraints()) {
            if (DEBUG)
                log.trace(
                        "Add distance constraint - for the normal inorder case");

            sseqqw.withConstraint(1, 1, "w");
        };

        return sseqqw;
    };

    // Deserialize koral:token
    private SpanQueryWrapper _segFromJson (JsonNode json)
            throws QueryException {

        if (!json.has("@type"))
            throw new QueryException(701,
                    "JSON-LD group has no @type attribute");

        String type = json.get("@type").asText();

        if (DEBUG)
            log.trace("Wrap new token definition by {}", type);

        // Branch on type
        switch (type) {
            case "koral:term":
                //            String match = "match:eq";
                //            if (json.has("match"))
                //                match = json.get("match").asText();
                //
                //            switch (match) {
                //
                //            case "match:ne":
                //                if (DEBUG)
                //                    log.trace("Term is negated");
                //
                //                SpanSegmentQueryWrapper ssqw =
                //                    (SpanSegmentQueryWrapper) this._termFromJson(json);
                //
                //                ssqw.makeNegative();
                //
                //                return this.seg().without(ssqw);
                //
                //            case "match:eq":
                return this._termFromJson(json);
            //            };
            //
            //            throw new QueryException(741, "Match relation unknown");

            case "koral:termGroup":

                if (!json.has("operands"))
                    throw new QueryException(742,
                            "Term group needs operand list");

                // Get operands
                JsonNode operands = json.get("operands");

                SpanSegmentQueryWrapper ssegqw = this.builder().seg();

                if (!json.has("relation"))
                    throw new QueryException(743,
                            "Term group expects a relation");

                switch (json.get("relation").asText()) {
                    case "relation:and":

                        for (JsonNode operand : operands) {
                            SpanQueryWrapper part = this._segFromJson(operand);

                            if (part instanceof SpanAlterQueryWrapper) {
                                ssegqw.with((SpanAlterQueryWrapper) part);
                            }
                            else if (part instanceof SpanRegexQueryWrapper) {
                                ssegqw.with((SpanRegexQueryWrapper) part);
                            }
                            else if (part instanceof SpanSegmentQueryWrapper) {
                                ssegqw.with((SpanSegmentQueryWrapper) part);
                            }
                            else {
                                throw new QueryException(744,
                                        "Operand not supported in term group");
                            };
                        };
                        return ssegqw;

                    case "relation:or":

                        SpanAlterQueryWrapper ssaq = new SpanAlterQueryWrapper(
                                this.field);
                        for (JsonNode operand : operands) {
                            ssaq.or(this._segFromJson(operand));
                        };
                        return ssaq;
                };
        };
        throw new QueryException(745, "Token type is not supported");
    };

    private SpanQueryWrapper _termFromJson (JsonNode json)
            throws QueryException {
        return this._termFromJson(json, false, false, null);
    }
    private SpanQueryWrapper _termFromJson (JsonNode json, boolean isSpan)
            throws QueryException {
        return this._termFromJson(json, isSpan, false, null);
    }

    // Attribute term
    private SpanQueryWrapper _termFromJson (JsonNode json, boolean isSpan, boolean isAttr)
            throws QueryException {
        return this._termFromJson(json, isSpan, true, null);
    }

    // Deserialize koral:term
    // TODO: Not optimal as it does not respect non-term
    private SpanQueryWrapper _termFromJson (JsonNode json, boolean isSpan, boolean isAttr, RelationDirection direction)
            throws QueryException {

        if (!json.has("@type")) {
            throw new QueryException(701,
                    "JSON-LD group has no @type attribute");
        };

        String termType = json.get("@type").asText();

        Boolean isTerm = termType.equals("koral:term") ? true
                : false;
        Boolean isCaseInsensitive = false;

        if (!json.has("key") ||
            (json.get("key").size() == 1 && json.get("key").asText().length() < 1)) {

            // It may have no key but an attribute
            if (!json.has("attr")) {
//                return new SpanRepetitionQueryWrapper();
                throw new QueryException(740,
                        "Key definition is missing in term or span");
            }
        };

        // Term is represented as a list of keys
        LinkedList<String> keys = new LinkedList<String>();

        if (json.has("key")) {
            if (json.get("key").size() > 1) {
                for (JsonNode value : json.get("key")) {
                    keys.push(value.asText());
                }
            } else {
                keys.push(json.get("key").asText());
            }
        }

        // Empty koral:span hack
        if (isSpan) {
            isTerm = false;
        };

        // <legacy>
        if (json.has("caseInsensitive")
                && json.get("caseInsensitive").asBoolean()) {
            isCaseInsensitive = true;
        }
        // </legacy>

        // Flags
        else if (json.has("flags") && json.get("flags").isArray()) {
            Iterator<JsonNode> flags = json.get("flags").elements();
            while (flags.hasNext()) {
                String flag = flags.next().asText();
                if (flag.equals("flags:caseInsensitive")) {
                    isCaseInsensitive = true;
                }
                else {
                    this.addWarning(748, "Flag is unknown", flag);
                };
            };
        };

        // expect orth? expect lemma?
        // s:den | i:den | cnx/l:die | mate/m:mood:ind | cnx/syn:@PREMOD |
        // mate/m:number:sg | opennlp/p:ART

        StringBuilder value = new StringBuilder();
        LinkedList<String> values = new LinkedList<String>();

        if (direction != null)
            value.append(direction.value());
        else if (isAttr)
            value.append("@:");

        if (json.has("foundry") &&
            json.get("foundry").asText().length() > 0) {
            value.append(json.get("foundry").asText()).append('/');
        };

        // No default foundry defined
        if (json.has("layer") &&
            json.get("layer").asText().length() > 0) {
            String layer = json.get("layer").asText();
            switch (layer) {

            case "lemma":
                layer = "l";
                break;

            case "pos":
                layer = "p";
                break;

            case "orth":
                // TODO:
                //   THIS IS AN UGLY HACK!
                //   AND SHOULD BE NAMED "SURFACE" or . OR *
                layer = ".";
                break;

            case "struct":
                layer = "s";
                break;

            case "const":
                layer = "c";
                break;
            };

            if (isCaseInsensitive && isTerm) {
                if (layer.equals("."))
                    layer = "i";
                else {
                    this.addWarning(767,
                                    "Case insensitivity is currently not supported for this layer");
                };
            };

            // Ignore foundry for orth layer
            if (layer.equals(".")) {
                layer = "s";
                value.setLength(0);
            }
            else if (layer.equals("i")) {
                value.setLength(0);
            };

            value.append(layer).append(':');
        };

        // Remember the common prefix for all values
        int offset = value.length();

        // Iterate over all keys
        for (String key : keys) {

            // Reset to common prefix
            value.setLength(offset);

            // Add key to value
            value.append(isCaseInsensitive ? key.toLowerCase() : key);

            // TODO:
            //   This should iterate over all values as well
            if (json.has("value") && json.get("value").asText().length() > 0)
                value.append(':').append(json.get("value").asText());

            // Add to value list
            values.push(value.toString());
        };

        // Regular expression or wildcard
        if (isTerm) {

            // Create alter query
            SpanAlterQueryWrapper saqw = new SpanAlterQueryWrapper(this.field);

			String match = "match:eq";
			if (json.has("match")) {
				match = json.get("match").asText();
			};

			if (json.has("type")) {
				QueryBuilder qb = this.builder();

				// Branch on type
				switch (json.get("type").asText()) {
                case "type:regex": {

                    for (String v : values) {

                        // The regex can be rewritten to an any token
                        if (v.matches("^[si]:\\.[\\+\\*]\\??$")) {
                            return new SpanRepetitionQueryWrapper();
                        };

                        SpanRegexQueryWrapper srqw = qb.re(v, isCaseInsensitive);

                        if (srqw.error != null) {
                            throw new QueryException(
                                StatusCodes.INVALID_QUERY,
                                "Invalid regex"
                                );
                        };

                        saqw.or(srqw);
                    };

					if (match.equals("match:ne")) {
						if (DEBUG)
							log.trace("Term is negated");
                        saqw.setNegative(true);
						return saqw;
					}
					else if (match.equals("match:eq")) {
						return saqw;
					}
					throw new QueryException(741, "Match relation unknown");
                }
                case "type:wildcard": {

                    // Wildcard queries are deprecated in KoralQuery since 9/2017

                    for (String v : values) {
                        saqw.or(qb.wc(v, isCaseInsensitive));
                    };

					if (match.equals("match:ne")) {
						if (DEBUG)
							log.trace("Term is negated");
                        saqw.setNegative(true);
						return saqw;
					}
					else if (match.equals("match:eq")) {
						return saqw;
					};
					throw new QueryException(741, "Match relation unknown");
				}
                case "type:string":
                    break;

                default:
                    this.addWarning(746,
									"Term type is not supported - treated as a string");
				};
			};

            // TODO:
            //   This could alternatively use
            //   https://github.com/tokuhirom/regexp-trie
            for (String v : values) {
                saqw.or(v);
            };

			if (match.equals("match:ne")) {
				if (DEBUG)
					log.trace("Term is negated");

                // Segment "without" doesn't work in
                // attribute contexts
                saqw.setNegative(true);
				return saqw;
			}
			else if (match.equals("match:eq")) {
				return saqw;
			}
			else {
				throw new QueryException(741, "Match relation unknown");
			}
		};

        if (values.size() > 1) {
            throw new QueryException(
                0,
                "List representation for spans not yet supported"
                );

        };

        // Term has attribute
        if (json.has("attr")) {
            JsonNode attrNode = json.get("attr");
            if (!attrNode.has("@type")) {
                throw new QueryException(701,
                        "JSON-LD group has no @type attribute");
            }

            if (value.toString().isEmpty()) {
                return _createElementAttrFromJson(null, json, attrNode);
                // this.addWarning(771,
                // "Arbitraty elements with attributes are currently not supported.");
            }
            else {
                SpanQueryWrapper elementWithIdWrapper = this.builder()
                        .tag(value.toString());
                if (elementWithIdWrapper == null) {
                    return null;
                }
                return _createElementAttrFromJson(elementWithIdWrapper, json,
                        attrNode);
            }
        };
        return this.builder().tag(value.toString());
    };

    // Deserialize elements with attributes
    private SpanQueryWrapper _createElementAttrFromJson (
            SpanQueryWrapper elementWithIdWrapper, JsonNode json,
            JsonNode attrNode) throws QueryException {

        if (attrNode.get("@type").asText().equals("koral:term")) {
            SpanQueryWrapper attrWrapper = _attrFromJson(json.get("attr"));

            if (attrWrapper != null) {
                if (elementWithIdWrapper != null) {
                    return new SpanWithAttributeQueryWrapper(
                            elementWithIdWrapper, attrWrapper);
                }
                else {
                    return new SpanWithAttributeQueryWrapper(attrWrapper);
                }
            }
            else {
                throw new QueryException(747, "Attribute is null");
            }
        }
        else if (attrNode.get("@type").asText().equals("koral:termGroup")) {
            return _handleAttrGroup(elementWithIdWrapper, attrNode);
        }
        else {
            this.addWarning(715, "Attribute type is not supported");
        }
        return elementWithIdWrapper;
    }

    // Deserialize attribute groups
    private SpanQueryWrapper _handleAttrGroup (
            SpanQueryWrapper elementWithIdWrapper, JsonNode attrNode)
            throws QueryException {
        if (!attrNode.has("relation")) {
            throw new QueryException(743, "Term group expects a relation");
        }
        if (!attrNode.has("operands")) {
            throw new QueryException(742, "Term group needs operand list");
        }

        String relation = attrNode.get("relation").asText();
        JsonNode operands = attrNode.get("operands");

        SpanQueryWrapper attrWrapper;
        if ("relation:and".equals(relation)) {
            List<SpanQueryWrapper> wrapperList = new ArrayList<SpanQueryWrapper>();
            for (JsonNode operand : operands) {
                attrWrapper = _termFromJson(operand, false, true);
                if (attrWrapper == null) {
                    throw new QueryException(747, "Attribute is null");
                }
                wrapperList.add(attrWrapper);
            }

            if (elementWithIdWrapper != null) {
                return new SpanWithAttributeQueryWrapper(elementWithIdWrapper,
                        wrapperList);
            }
            else {
                return new SpanWithAttributeQueryWrapper(wrapperList);
            }
        }
        else if ("relation:or".equals(relation)) {
            SpanAlterQueryWrapper saq = new SpanAlterQueryWrapper(field);
            SpanWithAttributeQueryWrapper saqw;
            for (JsonNode operand : operands) {
                attrWrapper = _termFromJson(operand, false, true);
                if (attrWrapper == null) {
                    throw new QueryException(747, "Attribute is null");
                }
                if (elementWithIdWrapper != null) {
                    saqw = new SpanWithAttributeQueryWrapper(
                            elementWithIdWrapper, attrWrapper);
                }
                else {
                    saqw = new SpanWithAttributeQueryWrapper(attrWrapper);
                }
                saq.or(saqw);
            }
            return saq;
        }
        else {
            throw new QueryException(716, "Unknown relation");
        }
    }

    // Get attributes from a json termgroup
    private SpanQueryWrapper _attrFromJson (JsonNode attrNode)
            throws QueryException {

        if (attrNode.has("key")) {
            return _termFromJson(attrNode, false, true);
        }
        else if (attrNode.has("tokenarity") || attrNode.has("arity")) {
            this.addWarning(770, "Arity attributes are currently not supported"
                    + " - results may not be correct");
        }
        else if (attrNode.has("root")) {
            String rootValue = attrNode.get("root").asText();
            if (rootValue.equals("true") || rootValue.equals("false")) {

                return new SpanAttributeQueryWrapper(new SpanSimpleQueryWrapper(
                        this.field, "@root", Boolean.valueOf(rootValue)));
            }
        }
        return null;
    };
};

redpajama_set_name: RedPajamaGithub


text:
FUTA Council Inaugurates Crisis Resolution Committee.
In its bid to resolve the lingering disagreement between non-academic staff unions and management of the Federal University of Technology, Akure,FUTA, the Governing Council has inaugurated a Crisis Resolution Committee.
Addressing members of the committee at the Inauguration at the Council Chamber on Friday December 16, 2016 , Chairman, Governing Council, Dr. Mohammed Shata said the Committee is not expected to focus on the current impasse alone, but to look at how critical stakeholders (staff and students) can work in harmony to move the University forward.
He urged members to be transparent, logical and objective in discharging their assignment, saying that Council will look into the Committee's suggestion painstakingly so as to fully bring the Institution back on track.
The Committee's terms of reference as specified by Dr Shata include; examining the immediate and remote causes of the crisis, to assess the impact of the crisis on the University and to recommend to Council actions to enhance harmonious coexistence among various stakeholders in the university.
The Committee under the Chairmanship of Chief Joel Madaki, an external member of Council has the following members: Architect Benjamin Nnaji, External member of Council, Professor Oyedapo Fagbenro, Professor Y. A. Asiwaju- Bello, both representing the Senate , Dr. C. I. Ada- Okungbowa, representing the Board of Trustees of the ALUMNI Association, Honourable F. M. Ayinla, National President of FUTA ALUMNI , Comrades Dele Durojaye and Oluwalana Adekola , representing Senior Staff Association of Nigerian Universities, SSANU, Comrades A.E Omoraka and O.R Bello representing the National Association of Academic Technologists ,NAATS , Barrister P O. Fasunhan, and two representativeseach of ASUU, NASU as well as the Students Union . Mr. Ife Oluwole, a Deputy Registrar will serve as the Secretary.
Responding on behalf of the members after the inauguration, Dr. Ada- Okungbowa thanked the University Council for counting members of the Committee worthy for the assignment and promised not to disappoint.
He called on all stakeholders in the University to assist the Committee with relevant information that will help in its assignment. The Committee is expected to turn in its report on Friday, 20th January, 2017.
Commending the effort of the University Management, stakeholders, elder statesmen and lovers of the University, both within and outside the country in resolving the crisis which has lasted over two months, Dr. Shata assured parents and students and other critical stakeholders that total normalcy will soon return to the Institution.
breaking news education FUTA gist.
Labels: breaking news education FUTA gist.


text:
package fsm.transformation;

import java.io.Serializable;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

public class TransformationScaleXY extends Transformation implements
		Serializable
{

	static final long serialVersionUID = -6293511061809198403L;

	public double scaleX = 1.0;
	public double scaleY = 1.0;

	public TransformationScaleXY()
	{
	}

	public TransformationScaleXY(Node node)
	{
		NamedNodeMap attr = node.getAttributes();
		scaleX = Float.parseFloat(attr.getNamedItem("scaleX").getNodeValue());
		scaleY = Float.parseFloat(attr.getNamedItem("scaleY").getNodeValue());
		transform.setToScale(scaleX, scaleY);
	}

	public String getDisplayString()
	{
		return "Scale XY " + scaleX + "," + scaleY;
	}

	public void setScale(double scaleX, double scaleY)
	{
		this.scaleX = scaleX;
		this.scaleY = scaleY;
		transform.setToScale(scaleX, scaleY);
	}

	public void setScaleX(double scaleX)
	{
		this.scaleX = scaleX;
		transform.setToScale(scaleX, scaleY);
	}

	public void setScaleY(double scaleY)
	{
		this.scaleY = scaleY;
		transform.setToScale(scaleX, scaleY);
	}

	@Override
	public Node toXML(Document document)
	{
		Element e = document.createElement("TransformationScaleXY");
		e.setAttribute("scaleX", Double.toString(scaleX));
		e.setAttribute("scaleY", Double.toString(scaleY));
		return e;
	}

}