text:
Pigs, Plebs and Tory scum
If you are a Tory government facing talk from trade union leaders of mass co-ordinated strike action - possibly even a general strike - in the coming months, then it might be a good idea to at least try and make sure you have the police on your side - they after all are going to be the people you might be using to help break strikes, maintain 'law and order' etc in the near future. Unfortunately for Cameron, the unconditional support of the police has been rather difficult to rely on recently amidst his plans to cut their numbers and raid their pensions - and the police have even organised marches in protest. Given this context, the words of Tory chief whip Andrew Mitchell to the police guarding Downing Street - 'Best you learn your fucking place ... You don't run this fucking government ... You're fucking plebs' - not only epitomised the disgusting ingrained ruling class elitism of Cameron's government - and was not only particularly insulting to the police in question given the recent deaths of two cops in Manchester - but critically also appallingly bad strategy and tactics in the wider class war the Tories are currently waging on behalf of the rich against, er, us plebs. The fact that Mitchell's rant was leaked to the Sun tells you much about the bad tensions between the rank and file of the police and the Tories currently (though the current corruption exposed by the phone-hacking scandal reminds us of the pre-existing close connections between News International and the London Met Police...)
Yet the fact that Mitchell was not immediately arrested by the police officers in question for using 'foul and abusive language' also highlights the class nature of the law and the role of the police in society. The whole incident reminded me of a time I was arrested almost a decade ago 'for using foul and abusive language' during the Iraq war while taking part in an anti-war protest. A group of anti-war activists had got up early and were now lying down in a 'die in' outside the local BBC (in protest at their craven pro-war stance) in a fairly main road, blocking rush hour traffic. I was not actually involved in the 'die in' but was handing out leaflets nearby and joining in the chants of 'BBC - Propaganda TV'. Eventually a series of police riot vans showed up and about forty or so police leapt out of them. No doubt annoyed at having had their leisurely morning cooked breakfasts rudely interupted by reports of this protest, the police were not in a particularly good mood and started indiscriminately arresting protesters lying down in the road, with all the characteristic politeness and gentility one has come to associate with the British police (1429 deaths in police custody from 1990-2011). Together with another anti-war activist I began remonstrating with the police from the sidelines along the lines of 'Well done', 'What heroes you guys are', 'What a great democracy we are living in' etc.
This line of sarcastic commentary did not earn me the warmth of the police as they were going about arresting those involved in the 'die-in' and dragging them into police vans, and one massive police officer came up to me and told me to leave the area. I say told me to leave the area, essentially he started pushing me back - indeed nearly pushing me over. Though I did not argue at all and was slowly moving back, I was clearly not going back fast enough for the cop who then nearly shoved me over backwards. I remember saying something like 'What the f**k are you doing - I am moving back okay?' at which point he said 'If you swear at me again I will arrest you under Section 5 of the Public Order Act [or something along those lines]'. I was sceptical that nearly pushing someone over backwards and then threatening to arrest them for accidentally swearing was really fair - and so said 'What the f**k?' again - at which point I was promptly arrested by the cop for using 'foul and abusive language in a public area'. I was not ultimately charged - the police statement about what I allegedly had said was so manifestly self-evidently bullshit that I think they realised it was best not to pursue it in a court of law - but the point remains - the police are there to protect the interests of the rich and powerful - which is why even when a rich millionaire Tory like Mitchell openly acts like the absolute arrogant tosser he is there is no talk of him facing any kind of criminal charge. It seems a timely moment nonetheless to plug the following event:
Defend the Right to Protest 2012 National Conference
AUSTERITY, INJUSTICE & THE POWER OF PROTEST
Sunday 14th October, 2012, 11:30am – 5:30pm, University of London Union, Malet Street.
Across the world people are resisting austerity. They also have to confront violent tactics by the police and the draconian use of the law.
In Britain students demonstrating against fees were subject to kettling and mounted horse charges. In Quebec the authorities responded to an all out strike with emergency laws.
Governments are attempting to undermine effective protest at a time of unprecedented cuts. Faced with public sector strikes, Coalition ministers threatened to introduce more hard line anti-trade union laws. Such attacks also take place against a wider context of injustice and clampdown involving stop and search, police racism and deaths in custody. They include the use of protester "ASBOs", pre-crime arrests and other infringements of civil liberties as seen around the Royal Wedding and the Olympics.
This conference will take place as people prepare for an autumn of struggle: the TUC march against austerity, the NUS education demonstration and strikes in the private and public sector. It will examine the nature of the current attacks on protest, what laws and tactics are being employed and why. It will look at how protest movements have confronted these challenges in the past and discuss the future of resistance here and internationally. Practical workshops will also inform people of their rights and how to run a defence campaign.
Who's Speaking?
DARCUS HOWE, OWEN JONES, NINA POWER, MARCIA AND SAM RIGG [SEAN RIGG JUSTICE & CHANGE CAMPAIGN], JANET ALDER [JUSTICE FOR CHRISTOPHER ALDER], JOHN MCDONNELL, TONY BENN, ALFIE MEADOWS [INJURED STUDENT PROTESTER], MATT FOOT [CAMPAIGNING LAWYER] KEN FERO [FILM MAKER/DIRECTOR OF 'INJUSTICE'], NICK WRACK [SOCIALIST LAWYER]. UNJUM MIRZA [RMT]. DANNIE GRUFFERTY [NUS VP], DEBORAH COLES [INQUEST], FAHIM ALAM [ACQUITTED AFTER POST-RIOT ARREST], SUSAN MATTHEWS [MOTHER OF DEFENDANT], ESTELLE DU BOULAY [NEWHAM MONITORING PROJECT], JOHN TIPPLE [POLL TAX DEFENDANT], JELENA TIMOTIJEVIC [UCU NEC], MAGGIE MITCHELL [MOTHER OF IMPRISONED STUDENT PROTESTER], NADINE EL-ENANY [EGYPTIAN ACTIVIST], JENNIFER HILLIARD [MOTHER OF ACQUITTED STUDENT], SARA TOMLINSON [NUT], HANNAH DEE [CHAIR OF DEFEND THE RIGHT TO PROTEST], JUSTICE FOR BOLTON, OCCUPY, UKUNCUT, A MINER ACQUITTED FROM ORGREAVES… JULES CAREY [SOLICITOR TO IAN TOMLINSON'S FAMILY], MARK SERWOTKA [PCS GENERAL SECRETARY], GARETH PEIRCE, plus many more...
Labels: class struggle, David Cameron, police brutality
The Strange Case of George Galloway
Firstly, I am not sure how many readers I still have left as I have so neglected this blog of late, but for those who still remain apologies - I feel I owe you something. Obviously, there is much one could talk about - the world crisis - the ongoing processes of revolution and counter-revolution in the Middle East and North Africa, and the current anger of millions of people against the Tories means it looks as though we are in for a distinctly hot autumn" in Britain, and there are many upcoming conferences and demonstrations in Britain I really should remind people about - not least the demonstration on October 20 in London that could just possibly turn out to be the biggest demonstration in British trade union history and if so could then give enough confidence to people to lead to, just possibly, the first General Strike in British history since 1926. But I am instead sadly going to briefly blog about George Galloway, the MP of the small left-wing party - Respect - that seems to be in the process of imploding so soon after its recent dramatic success in Bradford West earlier this year - and for reasons oddly directly related to Galloway himself. I say sadly, as what looks like it could be the beginning of the end for Respect is not something to be welcomed by anyone who wants to see a credible democratic socialist alternative to the austerity politics of cuts and privatisation of the mainstream political parties in Britain.
It is too soon to really pass any kind of judgment on Galloway himself - the future is unknown and perhaps in the future this current moment will come to be seen as one of the many downs in a careers that has been full of ups and downs - or perhaps when political historians of the British left come to look back at this particular moment, it will register merely a footnote. Lets hope so. But at the moment, it seems to me that Galloway is currently bearing some eerily strange resemblances to another independent socialist MP 100 years ago - Victor Grayson, who was elected against all the odds to parliament to represent a seat in Yorkshire - Colne Valley in 1907.
Lenin described Grayson as 'a very fiery socialist but one not strong in principles [esp on imperialism] and given to phrasemongering,' but as Brian Pearce noted, Grayson's 'name became for a few years an inspiring symbol to advanced workers... His election threw the official leaders of Labour into consternation. But in a comparatively short time, he eliminated himself from the political scene owing to personal weaknesses.' His biography - entitled The Strange Case of Victor Grayson - was written by Reg Groves, a pioneering British Trotskyist.
There are important differences between Grayson and Galloway (Grayson was politically weak on imperialism and his personal weaknesses included alcoholism -whereas Galloway is generally strong on imperialism and famously a teetotaler), but it seems here that a personal weakness of Galloway - in this case his sexism which recently manifested itself with respect to the Assange case (forcing Respect leader Salma Yaqoob to resign from the organisation and Respect's parliamentary candidate in Manchester, Kate Hudson, to resign as candidate for Respect) looks like it has been the undoing of his party and may well ultimately come to cost him his own political career - particularly because he seems so unapologetic and unrepentant about what he has said on the matter of Assange. Of course sexism is not just a 'personal weakness' as such but rather also reflective of the limitations of Galloway's political make up (famously an odd, heady mix whose main ingredients include Third Worldism with a strong strain of Pan-Arabism combined with Old Labourism with a dash of Stalinism, where 'working class' tends to be identified with masculine, 'macho' connotations). Anyway, the apparent current implosion of Respect is a sad moment for socialists in Britain - but the coming looming struggles ahead mean that the potentialities and possibilities for forging a new left and a genuine socialist alternative from below remain. Hopefully the great majority of Respect members and former Respect members will still feel able to be part of that broader political project - a project which has to be against not only racism and imperialism, but also sexism and other forms of oppression.
Labels: George Galloway, history, Old Labour, Respect, socialism, women


The Pharmaceutical Research and Manufacturers of America has released a new survey that outlines pharmaceutical company research on new and existing medications to treat HIV infection and AIDS-related conditions. The National Institutes of Health and 73 pharmaceutical companies are conducting the research, and all of the experimental drugs are "either in clinical trials or awaiting approval by the FDA." The survey found that 103 new drugs are under development, including HIV medicines classified as "next generation," which may be active against strains of drug-resistant HIV. The report is available from the PhRMA Web site at http://www.phrma.org/policy/policypapers/2000-11-30.187.pdf. Note: You must have Adobe Acrobat Reader to view this document (PhRMA release, 11/29).


I am many miles south of Nogales, in the desert. Far from the Gulf or any known road. Blistering sun. The hills are full of smoke and all I can remember is the sound of crackling flames. I walk dry canyon floors through creosote and sage and ancient bones that hum with ghosts. I must be looking for something. Why else would I be here?
Though it is in my blood, I know little of the language. Cerveza. Comida. Por favor. Lugar para descansar. Agua. Enough to find my way. My pronunciation always draws paused stares, whispers, but my money is green. Gracias.
Before dusk I find myself in a rented room above a small restaurant in a nameless place. Air thick with spices and meat and something else. Something sour. A rat in the plaster. Spirits in the fibers of the braided rug. The room is aglow with shafts of harsh late-day light, and I hope this is what I've been searching for. Below in the dusty street, junk peddlers and squeaking wheels. Dogs barking. Foreign voices. Even the flies are listless in the heavy heat.
With night comes wind, dry and unmerciful. I lie on the bed and sleep, sweating and dreaming of fires, until awakened by something circling my navel. Brushing it off in the dark, I pull the chain on the small lamp. A cockroach flees into the folds of the dirty sheets. Others into cracks and shadows.
There is no clock here, so there is no time, but I need to be in the wind.
The door has no lock, so I stash the last of my American dollars in my shoe, pull on my shirt, and follow the narrow stairs into the alley.
The gray-haired woman who rented me the room holds a wooden bowl at the kitchen door, a mangy huddle of dogs and cats at her feet, dimmed by a seething cloud of gnats. Scraps of chicken guts smack wetly on the dirt as she feeds them. Snuffling. Gnashing jaws.
She has deep-set eyes, a toothless grin. She squints, then nods. "Sí," she says, and scrapes the remaining entrails from the bowl with her slick fingers.
I have walked so long already, yet wander more through serpentine streets, past adobe brick and stucco walls. On the dim road, I witness several young boys beat an elderly man, and I hurry on so as not to been seen.
Though I feel I must have come here to get lost, to be forgotten, I soon feel a horrible need to find my way back. The traffic has ceased. The night air still smells of smoke, and new sounds split the hush. Coyotes. Breaking glass. Sandaled feet whisper warnings. I have gotten turned around. Panicked, I run. Hide in doorways and under awnings until at last I come to the place I know, to where I started. Brief relief…brief relief fills me. The boys, five of them I see now, gathered at the mouth of the alley beside the restaurant. One is crouched down, digging in the dirt with a knife.
When they see me, one steps forward. "Yo vato, how much money you got?" he says in my own language. I share their skin, but they know me to be a stranger.
A fly buzzes, lands on his cheek.
"Then give us a smoke," another says, and they all crowd around.
Just then their faces look older than their bodies, as though they are not boys but tiny men. Another with a short metal pipe at his side.
I think to duck into the restaurant, but it is much too late — no lights, no sign of the old woman — so I offer a flattened pack of Camels. A hand snatches it, and it disappears into a pocket.
"Take off those shoes," says the one with the knife.
My money. It is all I have and not enough. I bend down as if to slip them off then break through their tight circle toward the entrance of the stairs. There is a wisp and breeze as the blade clips my ear, and I fear they will chase me. But they only remain pacing at the mouth of the alley, shouting words I cannot comprehend.
Inside, the air of the room is still ripe with death and ghosts, and when I turn on the lamp the roaches scatter.
I place the rickety bedside chair under the knob, thinking I am somewhere between nowheres and forget what I am searching for. (Was I ever searching at all?) Several flies rise from my pillow, and I turn out the light but do not sleep. I listen to the dark and wait for them to swarm.
William R. Soldan received his BA in English Literature from Youngstown State University, where he was formerly the head fiction-editor of the student-run online literary magazine Jenny. He currently studies fiction and poetry in the Northeast Ohio MFA program and teaches English Composition at YSU. His work has appeared or is forthcoming in a number of publications such as The Fictioneer, New World Writing, The Vignette Review, Thuglit, Elm Leaves Journal and others. He lives in Youngstown, Ohio, with his wife and son.


Please be advised that temporary visitor restrictions are in place at Corner Brook Long Term Care Home. The visitor restrictions are in place due to a number of residents on 2 South (Gooseberry Lane) with influenza like illness.
Visitor restrictions are a series of infection control measures put in place to reduce the risk of spreading infectious diseases which are common in health care facilities. They are designed to help keep clients, families, staff and visitors healthy and safe.
• Cleaning your hands before entering the unit and after visiting your loved ones.
• Visiting only one resident.
• Not visiting if you are experiencing flu-like or gastrointestinal symptoms.
Immediate family members should call 709-637-3922 for further direction about visitation.
Western Health would like to thank the public for their co-operation during this precautionary measure.


A bicyclist is dead after colliding with a SEPTA bus in the city's Frankford section. It happened around 11:45 a.m. on Orthodox Street near Aramingo Avenue. The 44-year-old bicyclist was struck by the Route J bus and was killed. There were no passengers on the bus at the time and the driver was not hurt. Accident investigators are piecing together the cause of the accident and examining video from the bus.


A thigh contusion is an injury to the quadriceps at the front of the thigh, usually as a result of a blow in sport.
What Causes A Thigh Contusion?
A direct blow to the thigh muscles from a hard object or a person's head or knee typically causes a thigh contusion, almost always during sporting activity. This injury can be very painful and functionally disabling; with severe cases potentially leading to acute compartment syndrome.
The quadriceps muscle is in front of the thigh bone along its length so is at risk of being squeezed against the bone in a direct blow. The rectus femoris, the muscle most at the front, is the most commonly injured.
What Happens in a Thigh Contusion?
Acute contusions are compression strapped and bandaged in a knee bend of 120 degree for 24 hours to limit the bleeding and swelling by putting pressure on the area. This speeds up the recovery process and reduces the risk of complications.
Physiotherapy involves providing crutches to avoid weight bearing until pain has reduced. Icing regularly during the day may be useful. Active quadriceps contractions, strengthening and stretches can be progressed as the pain allows. Weight bearing should be resumed as soon as possible, again as pain allows.
Around 9% of people with a thigh contusion develop myositis ossificans within the muscle. In this condition calcium gets laid down in the damaged area and causes pain and restriction of movement. Aggressive physiotherapy or surgery may be required to treat this condition.


The Times Higher Education World Reputation Rankings 2015 show that the UK now boasts 12 of the top 100 institutions (up from 10 last year), with both Cambridge and Oxford both improving their positions. London has particular cause for celebration, tied alongside Paris with five universities in one capital judged to have the best reputations.
While London and Paris are in joint top place, London's universities are rated higher. Imperial College, University College London, London School of Economics, King's College London and the London Business School all made it into the top 100.
If you are an international student interested in learning more about any of the above universities, or studying in the UK, then do not hesitate to get in touch to arrange your free consultation!


George Washington Carver was born a slave in war-torn Missouri and died an honored scientist. Soon after he received his master's degree from Iowa State University in 1896, he accepted an offer from the famous black educator Booker T. Washington of a post at Tuskegee Institute in Alabama, which Washington had founded in 1881. Carver spent nearly forty years at Tuskegee conducting research and teaching scientific agricultural methods. He became known for extracting new products from previously untapped sources. From the humble peanut and the sweet potato, he found more than four hundred synthetic products, ranging from margarine to library paste.
Find famous quotes by George Washington Carver here.
dramatizes the life of American Adventure George Washington Carver.
You probably remember that George Washington Carver invented over 300 uses for peanut butter. Did you know that while at Tuskegee Institute he became one of the world's foremost experts in horticulture?
In fact, George Washington Carver almost single-handedly reinvented land management in the South following the ravages of too much cotton and tobacco farming. He was so brilliant that Henry Ford and Thomas Edison tried to hire him, but he said no. Do you know why? Because he wasn't after fame or fortune. The most important thing in George Washington Carver's life was that he was a Christian. He simply marveled at God's creation and wanted to help all mankind.
When you see this 2-part series—hosted by Wintley Phipps—you'll discover someone who grew up in segregated America with poverty, frailty, sickness, and the KKK, but who saw each and every obstacle as a blessing and an opportunity to learn. Get to know the man who discovered uses for the peanut, the sweet potato, and the soybean and helped shape twentieth-century America through his profound spiritual conviction, a passion for exploration, and a deep wonder about the world around him. You'll find that one person can make a difference, no matter what stands in the way.
Hero Tales Vol. III by Dave and Neta Jackson (Bethany House Pub., a division of Baker Pub. Group, 1998).


In this series we are examining five principles for effective ministry to children. In the first article, I summarized all five using the acronym B.R.I.N.G. to remind us that our purpose is to bring children to Jesus. Each principle adds to our effectiveness in living out this responsibility. We turn now to examining each principle individually—starting with principle number one: Bless children with Jesus' love.
In the Gospel accounts, Jesus acknowledged the great value of children. In a culture that tended to ignore and otherwise devalue children, Jesus made it clear that he viewed children as people with great value in God's sight. Jesus reached out to children, welcoming them into his presence and blessing them (Matthew 19:14-15). On several occasions Jesus went out of his way to heal children (Luke 8:49-56). He was willing to be "bothered" in order to minister to children.
How can we reach out with Jesus' love to bless the children in our homes, neighborhoods, churches and communities? Love is like a language—it must be spoken (expressed) and understood (received). Learning how a child perceives and receives love is essential for those who seek to bless children with Jesus' love.
Not every child speaks the same love language. In The Five Love Languages of Children, Gary Chapman and Ross Campbell identify five love languages for children: appropriate physical touch, words of affirmation, gifts, acts of service and quality time. The book explains how an adult (such as a parent) may liberally extend love to a child using one love language, only to find that the child does not feel loved because he or she does not "speak" that particular language.
Perhaps a child's dominant, or preferred love language is appropriate physical touch, but the parents, though liberal in gift giving, are physically distant with the child, and as a result he or she feels unloved. We have to figure out how a child receives love and then reach out using that love language. One of the ways the authors give to discern a child's dominant love language is to observe how the child expresses love to others.
When working with a group of children, we will need to speak love in multiple love languages. While spending extended, quality time with them we'll offer words and actions that convey this vital message: "we care about you—you are accepted and loved by us." We can provide the children with snacks (the love language of gift giving). At times we can involve them in service projects (the love language of acts of service). We also can extend careful and appropriate physical affection (the language of physical touch), such as a pat on the back or shoulder or an appropriate, non-sexual hug. In various ways, using multiple love languages, each child can receive the blessing of Christ's love extended from a safe, caring and supportive adult.
Of course, such Christian love has to be given unconditionally. If the only time children receive attention and affirmation is when they have done something to please us, they quickly learn that our love is conditional, based on their performance. In The Gift of the Blessing, Gary Smalley and John Trent point out that affirmations should be given to a child based on who the child is (a valuable and worthwhile person whom Jesus accepts and loves) rather than on what they have done, or not done. It is particularly important not to withhold our blessing when a child's performance is disappointing. In this way we model God's unconditional grace and love that is in Christ.


text:
Deep Cut Metal News Rock
The 36th Anniversary Of Rock's Biggest Censorship Battle And Dee Snider's Defence
Su YeniocakSeptember 17, 20213 mins read
Rock and Roll and the artistic freedom in music was heavily threatened 36 years ago when The Parents Music Resource Center, also known as PMRC, wanted to ban songs and censor rock musicians. They claimed that mainstream rock and metal music shouldn't be out there because it negatively influences kids and teenagers. Many people from the rock industry, such as Frank Zappa, John Denver, and Dee Snider, fought against censorship.
Dee Snider may have saved rock and roll during this dispute in 1985. He attended the hearing and successfully refuted the allegations against him and their industry. Snider entered the court in his classic look, with big hair and rock and roll outfit, which led many to think he wouldn't be able to make a sensible argument. However, the rockstar surprised the courtroom when he answered every question sensibly, clearly, and refuted every accusation thrown at him.
What Was The PMRC Complaining About?
According to Mrs. Gore, the founder of PMRC, most rock, metal, and mainstream pop songs' lyrics were not appropriate for children. They wanted to ban 15 songs created by Twisted Sister, Black Sabbath, Judas Priest, AC/DC, Def Leppard, Mötley Crüe, and Venom. Their problem was not only with rock and roll, as they also wanted to censor artists such as Madonna, Prince, Cyndi Lauper, and Sheena Easton.
They claimed that the lyrics, music videos, and marketed t-shirts of rock bands, specifically Twisted Sister, encourage children to familiarise themselves with Satanism, and therefore should be banned. The PMRC associated the band's songs with sex, bondage, violence and claimed they are sexist and pornographic.
How Did Dee Snider Refute Each Claim?
Snider refuted every claim that targeted his or Twisted Sister's work. He stated that they didn't encourage violence with their song 'We're Not Gonna Take It' while adding that the video was simply a remake of the Road Runner and Coyote cartoon played by human characters. The main character in the video would endure all pain and get up and be fine, just like the cartoon.
Another argument Snider refuted was the claim that the song 'Under The Blade' has sexual connotations and refers to bondage, and children shouldn't be exposed to that. Dee explained why and how he composed the song stating that it was written for his guitar player Eddie Ojeda before he went to surgery. The lyrics were entirely about his experience of getting an operation and staying at the hospital.
Snider also outbursted and called PMRC a liar for claiming that they sold t-shirts with pornographic imagery like women in handcuffs of spread-eagled. The singer stated that they never sold such t-shirts and emphasized that they are against sexism in every area of their lives.
Snider wasn't responsible for speaking about other bands or musicians, but he didn't forget to say that music is objective, and its meaning is mainly about what lies in the listener's head. Thus, he implicitly blamed the PMRC for having a dirty mind.
The final result of the hearing was that parents should be aware of what is in the album, and thus, the artists have to label their products with a 'Parental Advisory' tag if there's any explicit lyric or content. Snider was also against this limitation because he believed that if a parent was concerned enough, they would be involved in the songs their children listen to and decide whether or not they should allow them.
Dee SniderTwisted Sister
Su Yeniocak
Hi I'm Su! I am interested in everything about music, fashion and photography. Feel free to email me if you have any suggestions. su@metalheadzone.com

redpajama_set_name: RedPajamaCommonCrawl


text:
Kurt Meyer apelidado de Panzermeyer (23 de dezembro de 1910 - 23 de dezembro de 1961) foi um oficial alemão da Waffen-SS que serviu durante a Segunda Guerra Mundial, condecorado com a Cruz de Cavaleiro da Cruz de Ferro. Atou em diversas batalhas como a Invasão da França, Operação Barbarossa e Batalha da Normandia. Após as hostilidades, foi julgado por crimes de guerra.

Carreira na SS

Antes da guerra

Meyer juntou-se ao NSDAP em 1 de setembro de 1930, três anos antes de Adolf Hitler se tornar Chanceler da Alemanha. Ele então se candidatou sua adesão à Schutzstaffel, comandada por Heinrich Himmler. Ele foi aceito em 15 de outubro de 1931, seu primeiro cargo a ser na 22. SS-Standarte baseada na cidade de Schwerin. Meyer foi promovido como um SS-Untersturmführer (2 º Tenente), em 1932. Em maio de 1934, ele foi transferido para a unidade de maior prestígio da SS, a Leibstandarte SS Adolf Hitler (LSSAH). Em setembro de 1936, Meyer foi novamente promovido, desta vez para SS-Obersturmführer (1 º Tenente), e também assumiu o comando da unidade LSSAH antitanque 14. Panzerabwehrkompanie. Meyer e a LSSAH participaram pacificamente na anexação da Áustria como parte do XVI. Armeekorps e, mais tarde, sob o general Heinz Guderian, na ocupação da Tchecoslováquia.

Campanhas na Polônia, França e Países Baixos

Embora o comando de uma companhia estática antitanque não era o ideal de Meyer, seu desempenho chamou a atenção positiva durante a Fall Weiß, a invasão da Polônia. O LSSAH foi relacionado ao Heeresgruppe Süd comandado pelo general Gerd von Rundstedt durante a campanha. Ele foi baleado no ombro em 7 de setembro de 1939. Apesar disso, Meyer continuou a comandar a companhia antitanque e recebeu a Cruz de Ferro, de segunda classe, em 25 de setembro de 1939.

Depois da campanha na Polônia, Meyer solicitou um comando mais móvel. Ele recebeu a Companhia de Motocicletas de Reconhecimento da LSSAH (15 Kradschützenkompanie). Ele levou as motociclistas da LSSAH na invasão da França e dos Países Baixos. A comandar os pelotões 1 º e 2 eram seus futuros camaradas Hugo Kraas e Max Wünsche. A LSSAH era comandada pela XVI. Armeekorps do general Gustav Anton von Wietersheim. Durante esta campanha, Meyer foi premiado com a Cruz de Ferro, primeira classe.

Os Balcãs e a Grécia

Após a Campanha Ocidental, a 15 Kradschützenkompanie foi reorganizada no Batalhão de Reconhecimento Aufklärungsabteilung da LSSAH e Meyer foi promovido a SS-Sturmbannführer (Major).

A invasão malsucedida de Benito Mussolini da Grécia resultou na Operação Barbarossa sendo adiada, e as forças alemãs foram levadas a atacar as forças iugoslavas as forças gregas. Meyer foi encarregado de atacar os Corpos Gregos III, que estavam se retirando da Albânia. O batalhão de Meyer teve que entrar no formidável Passo Kleisoura, ir ao Lago Orestiada e venceu as forças gregas baseadas na cidade de Castória.

O ataque começou em 13 de abril, mas no dia seguinte, o ataque tinha parado diante da forte resistência no Passo Kleisoura, perto da cidade de Werjes. A divisão grega 20 ficou bem entrincheirada em ambos os lados da cidade e as alturas que fazem fronteira com o passe em si. Meyer organizou seu batalhão em três grupos de assalto, liderada por ele mesmo, Kraas e Wünsche. Por meio da tarde, a cidade e alturas tinham sido apanhadas e o caminho para Castória estava aberto. A batalha para as alturas rendeu 600 presos - todos para a perda de apenas um oficial e seis homens mortos, um oficial e 17 feridos. No dia 16, o batalhão de Meyer penetrou por trás das linhas gregas e assaltaram Castória a partir do sul, com a captura de mais 1 100 prisioneiros. Para essas ações, Meyer foi premiado com a Cruz de Cavaleiro da Cruz de Ferro em 18 de maio de 1941.

Operação Barbarossa

Meyer e seu batalhão participou da Operação Barbarossa em junho de 1941 como parte do Heeresgruppe Süd. Por causa de suas rápidas ações relâmpago durante esta campanha ganhou o apelido de "Der schnelle Meyer" (Rápido Meyer). Meyer ordenou literalmente à seus homens para "carregar as armas", o que resultou não só na captação de Mariupol, no Mar Negro, mas também praticamente uma inteira divisão soviética. Este foi um exemplo típico do estilo Meyer de comandar: ousado e corajoso (Meyer estava sempre na frente de seus assaltos), embora também talvez imprudente.

Em outubro, Meyer ficou doente e repassou o comando para Hugo Kraas. Depois de convalescente com sua esposa em Berlim, ele voltou à ativa em janeiro de 1942. Logo após o retorno, ele foi condecorado com a Cruz Germânica em ouro por bravura em combate.

Carcóvia e a Divisão Hitlerjugend

No retorno de Meyer, a LSSAH tinha sido transformada em SS-Panzergrenadier Division-SS Leibstandarte Adolf Hitler. Após a II Corpo Panzer SS se retirar de Carcóvia, o general Paul Hausser ordenou a sua recaptura. Ansioso para recuperar seu prestígio danificado, a SS lançou o assalto. O novo SS-Batalhão de Reconhecimento I de Meyer estava constantemente na linha de frente dos combates. Durante a Terceira batalha de Carcóvia, o batalhão de Meyer freqüentemente co-operou a SS-Panzer-Regimento 1 de Max Wünsche, SS-Regimento Panzergrenadier II de Theodor Wisch e com o SS-Terceiro Batalhão Regimento Panzergrenadier II de Joachim Peiper. Estes ad hoc Kampfgruppe foram bastante úteis, correndo de um ponto de crise para outro, resgatando tropas capturadas alemãs e capturando oficiais soviéticos. O batalhão de Meyer capturou o pessoal de comando inteiro de uma divisão soviética perto Jeremejewka e Aleksandrowka.

Na fase final da captura de Carcóvia, o objetivo do Leibstandarte era capturar a enorme praça central, chamada Praça Vermelha. Meyer, Wünsche e Peiper comandavam o Kampfgruppen que tinha a responsabilidade de capturar a cidade. Meyer levou rapidamente seu batalhão à praça, capturando parte dela, antes de serem bloqueados pelos soviéticos. Meyer e seus granadeiros prepararam o terreno contra as forças soviéticas superiores, até que foram aliviados pelo Kampfgruppe de Peiper, em 13 de março. Juntamente com o Kampfgruppe de Peiper e o resto do regimento de Teddy Wisch, o batalhão Meyer finalmente capturaram o centro da cidade depois de uma luta desesperada e sangrenta. Em homenagem a esta ação, a Praça Vermelha foi renomeada Platz der Leibstandarte.

Normandia e as batalhas em torno de Caen

Em 6 de junho de 1944 os aliados lançaram a Operação Overlord a invasão anfíbia da França, que abriu o tão esperado Fronte Ocidental.

Resumo da carreira na SS

Datas de classificação

 SS-Sturmführer: 10 de julho de 1932
 SS-Obersturmführer: 10 de março de 1935
 SS-Hauptsturmführer: 12 de setembro de 1937
 SS-Sturmbannführer: 01 de setembro de 1940
 SS-Obersturmbannführer: 09 de novembro de 1942
 SS-Standartenführer: 21 de junho de 1943
 SS-Oberführer: 01 de agosto de 1944
 SS-Brigadeführer und Generalmajor der Waffen-SS: 01 de setembro de 1944

Bibliografia

Carrel, Paul. Invasão 44- Editora Flamboyant, 1965

Nazistas condenados por crimes de guerra
Pessoas da Segunda Guerra Mundial (Alemanha)
Recebedores da Cruz de Cavaleiro da Cruz de Ferro
Oficiais da SS
Nascidos em 1910

redpajama_set_name: RedPajamaWikipedia


text:
Q: Auto Define a sheet name I am trying to auto-define a sheet name in VBA.
This is the code I've created:
Range("F7:F11").Select
Selection.Copy
Sheets("janeiro").Select
Range("F7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Basically, I need the contents in cell b2 to define the name of the sheet. On this example, the actual name of of the sheet is "janeiro", but I need the name to be defined by the contents of cell b2.
For example, February, March... done in an automatic way.
Is this possible?

A: Replace "janeiro" with Range("B2").Value.
Then, tighten up your code a bit to avoid using Select methods:
Range("F7:F11").Copy
Sheets(Range("B2").Value).Range("F7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Note: this will raise an error if the specified sheetname doesn't exist.
OR... this would be a great opportunity to show you how to use variables, rather than explicit references:
Dim shName as String 'Defines a STRING variable which we will use to hold a sheet name

shName = Range("B2").Value

'## Now, we can simply refer to shName any time we need to refer to the value in "B2"

Range("F7:F11").Copy
Sheets(shName).Value).Range("F7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

redpajama_set_name: RedPajamaStackExchange


Great tool for clinicians working with children!
Features forms for: Behavioral contracts, Values profile, Assertiveness training chart, and more!
This book features a variety of reproducible forms such as: Behavioral Contracts, Values Profile, Assertiveness Training Chart, The Parent Cooperativeness Rating Scale, Joint Custody Checklist, The Children's Stress Scale, Blank Treatment Plans, a Form for Techniques in a Multi-Modal Therapy Plan, and a Play Observation Checklist. 158 page softcover book with reproducible forms.


Over consumption of sugar can cause weight issues & diabetes, but what's too much?
Doctor surgery New Year 2019 opening times - when will your GP be open?
How long can you safely keep cooked turkey in the fridge or freezer for?
Is salt bad for you and how much should adults and children have daily?
What's cannabis oil used for and is it available on prescription?
What is Norovirus, what are the symptoms & how long does it last?


in the Good Funeral Awards 2016.
Oooh – very excited with the news that I have been selected from hundreds of nominees to go through to the final stages of this year's glittering Good Funeral Awards ceremony.
Copyright Rosemarie Teece Celebrant 2015. All rights reserved.


text:
Q: setup xen on two phisical interfaces does anybody know how to setup XEN to use 2 interfaces? I have a subnet of local IPs on eth0 and subnet of external IPs on eth1. I want containers to be as on a dom0: eth0 and eth1 routed respectivly.
Thanks in advance

A: I'm currently using two NIC interfaces with Xenserver 6.2. I created them using XenCenter, I'm doing exactly what you're asking, using eth0 on all VMS for local connections and eth1 for internet.
How to do it.
If you have the pool created you need to go to the Networking tab, there you can add a network using the "Add Network" button and then follow the wizard.
If you have any more questions, there is a guide from Citrix. http://support.citrix.com/servlet/KbServlet/download/34969-102-704897/reference.pdf
Good luck.

A: I found solution by myself. I'll discribe it in case of someone need it
So far I had eth0 interface and br0 configured.
On dom0 I add additinal bridge. I call it br1
addbr addbr br1

Then I bind it to physical interface eth1
addif br1 eth1

Next, I am on Debaian, I configure /etc/network as follows
# The loopback network interface
auto lo
iface lo inet loopback

The primary network interface
auto br0
iface br0 inet static
        address 172.16.15.240
        netmask 255.255.255.0
        network 172.16.15.0
        gateway 172.16.15.1
        broadcast 172.16.15.255
        bridge_ports eth0
        bridge_stp on
        bridge_maxwait 0
        bridge_fd 0

auto br1
iface br1 inet static
        address 91.135.xxx.xxx
        netmask 255.255.255.240
        network 91.135.xxx.xxx
        broadcast 91.135.xxx.xxx
        gateway 91.135.xxx.xxx
        bridge_ports eth1
        bridge_stp on
        bridge_maxwait 0
        bridge_fd 0
        dns-nameservers 8.8.8.8

Then in config file for container add virtual interface as follows
vif         = [ 'ip=172.16.15.243 ,mac=00:16:3E:18:AF:C3,bridge=br0',
                'ip=91.135.xxx.xxx ,mac=00:16:3E:DD:2D:00,bridge=br1'
             ]

That's it. After reboot both dom0 and domN, you will have container connected to phisical interfaces


My Watermelon Moon: Happy Halloween/Fall Blog Hop!
If you came from Faith Abigail Designs then you are in the right place!
Your next stop on the hop is Dana at Paper Memories 4u!
I made this sweet little box from the Cricut Artiste Cartridge, I love this box and Artiste is a MUST have cartridge if you have a Cricut or are thinking of getting one. All of the papers and stamps are from the Spellbound workshops on the go kit. The kit is adorable and if you want to make it like it comes...or you can be like me and steal all the parts and do what you want, cause the paper is awesome. The stamp set that comes with the kit also coordinates with the Artiste cartridge, it tells you right on the package what page and what size to make your cuts, so it's perfect every time! The set also comes with the pretty twine you see tied here. You know what, you NEED this kit. Just go get it now!
I cut this box as big as I could, then cut two different sized strips from coordinating papers. I cut the orange medallion at 1 3/4" per the reference on the stamp set for Artiste. then before removing it from the mat, I stamped the Happy Halloween image with archival black ink. Lastly, I stamped the two sweet little spiders to attach like pom poms to the end of my twine and hand cut those. This box would be great for a little teacher gift or other service provider for your family. It's sturdy, just the right size and SUPER easy and fast to make! I hope you enjoyed and now go visit Dana at the last stop on the hop!
Love the box, such a great design.
Great box! I just love Halloween projects!
Fantastic box, love the Dotty paper! Isn't Artiate wonderful???
totally cute for halloween !
Too cute. Love the spiders hanging on the twine.


TIP! Stained wood baseboards are more appealing than painted ones. Furthermore, the look and feel of wood is perfectly suited to all types of decor and style.
A well planned home improvement project helps improve your home and your spirits. Not only does it improve the way your house looks but it can also boost the resale price of the home. Participating in home renovation can be very fun and profitable. Using the ideas below you can you can ensure success with your home improvement project.
TIP! Try using something unusual as a coffee table in your living room. One alternative is to use vintage luggage in lieu of a coffee table.
Before making a home purchase, get a professional to inspect it. This avoids you having to hear from a potential buyer what needs repairing or replacing, or needing to depend on your own evaluations. This professional will give an unbiased opinion to aid you in your home buying.
Sometimes a small room can seem very gloomy, but it doesn't need to be that way. Get more light into the room! This can be resolved through cleaning the windows and opening blinds. Rooms appear much larger and more open with good natural lighting. Choose pale colors for the walls, and keep the room clutter-free. You will not feel as stuffy in the room.
TIP! Any time you hire an outside company to do home improvement jobs for you, it is imperative that you check the legitimacy of the company first. If it does all it's business by phone, it probably isn't a very reputable company.
If you are working in the kitchen and bathroom during your home improvement project, make sure to turn off the water. You'll need to find the main shut-off in your home before you start any work that involves your plumbing. This step will enable you to prevent a flood.
TIP! If you are considering the use of a conventional wood fireplace for heating your home, understand that this may not be the best route. Besides any consideration of the looks (and smells) of such a fireplace, you need to know that it is never that efficient.
Check out any company you plan to hire. If you're unable to obtain a physical address from a company and they'll only deal with you over the phone, the company may be small and unreliable. Select companies that have great reputations.
One simple home improvement that is often neglected is gutter and chimney maintenance. However, without regular inspections, you may not discover if there is an issue with how these items function. If you do not clean out your chimney regularly, it can cause a fire; if you do not clean your gutters, it may cause water to overflow and flood your home.
TIP! Consider installing peepholes in the outside doors of your home. This will increase your home's safety, as you will be able to see who is at your door before you open it.
Homes that have a nice view tend to sell for a lot more than similar houses without a view. You may have to invest some additional money, but you should look at it as an investment that you can reap the benefits of while you live there. Those looking to buy your home may not see this as a nice view.
TIP! The bristles could bend, thus, ruining the broom. The best thing to do is to hang it up.
Creatively display your bracelets and necklaces using a mounted coat racks. You should only display costume jewelry, not anything valuable. Displaying your jewelry can make a nice statement in a room and keep it all tangle free. To make jewelry selection easy in the morning it's best to put your favorite items in an easily accessible spot.
TIP! Safety should be your top priority whenever you are doing a home improvement project. These precautions will help insure that neither you nor your home are harmed.
If you are planning to make bathroom renovations, try to make them handicap-accessible. If you are planning to remain in your home until old age, attending to this change within the bathroom earlier rather than later can save hassles in the long run. If you are planning to sell in the future, all these items will increase the sale price.
TIP! If you need to replace your roof tiles, get rid of those black tiles and use light-colored or white tiles instead. Lighter tiles absorb heat much better allowing your home to remain cooler.
Are you looking at replacing your kitchen cabinets? Have you considered wood? They are very durable and stand up very well under heavy use. Maple, oak and cherry are common cabinet woods. To add a personal touch, you can stain any of these woods in one of dozens of gorgeous colors.
TIP! If you want to paint your walls, make sure the trim is taped off properly. It doesn't matter how much care you put into your painting.
By starting with various small do-it-yourself projects, the homeowner can build up their confidence to the point they will be ready to tackle the more challenging project. This is a good thing. Learning a little about home improvement goes a long way. It helps a person build the confidence to take on even more complex projects and increases the resale value of the home.


Interoperability testing events are a forum for implementers to gather and validate that their implementations are compatible with each other. This means that each implementer will test out their implementation with those of other implementers. For example, a FIDO UAF Client will test with all UAF Servers and all UAF Authenticators present at a UAF interoperability event; likewise, a FIDO U2F Server would need to test with all U2F Authenticators at a U2F interoperability event. For each combination of participants, the corresponding UAF, U2F, and FIDO2 testing procedures listed below will be performed. Implementations showing that they can pass the testing procedures with all the other implementations at the event, or that can show that any failed testing procedures are not due to their implementations being non-conformant with the FIDO specifications, will pass the interoperability event and be eligible for certification. Interoperability Events are held at least once every 90 days, the schedule of which can be found here. Prior to registering for an interoperability event, an implementation must pass conformance self‐validation and the implementation must not be changed before the interoperability event. Participants must register at least 14 days prior to the event. A non-disclosure agreement is required to protect all test participants' confidential information. The non-disclosure agreement is available here. In the event that there are not enough implementations to hold an interoperability testing event, the event will be cancelled and potential participants will be notified 12 days before the event. As one of the options during interoperability event registration, implementers will be presented with the choice of whether or not to participate in pre-testing. The intent of pre-testing is to give the companies that will be participating in the interoperability event the ability to exchange software, metadata, and test with each other ahead of the event. For those implementers that opt-in to pre-testing, their contact information will be shared with other implementers ahead of the event so that they may communicate with each other to share the appropriate information and perform pre-testing. Implementers are encouraged to attend interoperability events in person to help facilitate interaction and problem resolution. For participants unable to travel to interoperability events, remote access will be provided; however, remote participation is not preferred since it makes communication and participation during the interoperability event much more difficult. Remote participants should be prepared to set up both a web camera and screen sharing capability so that the interoperability steps can be visually verified as they are performed. Interoperability events will be held for active versions of the specifications, this includes all versions that have not yet reached a sunset date. Please refer to the currently supported certification versions table.


text:
Conflicts and Wars
Amreen Khan
China Rubbishes Reports of Laser Attacks from its Djibouti Base
12:40 PM, May 3, 2018
China has rubbished reports of laser attacks originating from its African military base of Djibouti which were reportedly detected by US and other Western military aircraft and ships operating in the Indian Ocean region.
Earlier this week, the U.S. Military warned pilots to exercise "extreme caution" in Djibouti after an unauthorized laser activity was detected in the area, various local media reported. Jane's Defense Weekly reported that the laser coordinates matched with Djibouti in the Gulf of Aden, about 750 meters from China's base.
However, a Chinese military expert was quoted as saying by Global Times: "China's Djibouti base is quite small and serves as logistical support. The US should treat the base with a fair attitude and stop making up rumors about it".
The US aircraft threatened our base, another source said.
The accusation that China used a laser weapon in Djibouti is groundless as it was based on false accusations that China has a history of making laser weaponry and the location is near China's base, the military expert told the Global Times.
The Chinese People's Liberation Army support base in Djibouti was established on August 1, 2017. It is China's first overseas base.
China Becomes World's Second Biggest Military Spender: SIPRI
May 2, 2018 @ 12:34 PM
China has become the world's second biggest military spender behind the United States relegating Saudi Arabia and India to third and fourth place respectively according to a new report by the Swedish International Peace Research Institute (SIPRI) which compiles global arms procurement data. China increased its military spending by 5
China Offers 4038 Military Patents for Civilian Use
Chinas National Defense Intellectual Property Office under the Equipment Development Department of Chinas CMC has declassified over 4038 military patents for civilian use. The move is another step to deepen the development of military-civilian integration in the area of national defense intellectual property after the launch of the national defense intellectual property information platform on the PLA Weaponry & Equipment Acquisition Information Network in 2017, a unnamed National Defense Intellectual Property Official was quoted as saying by
China Deploys Hi-tech Surveillance Squipment Along Border with India
China's People's Liberation Army (PLA) has deployed several types of high tech equipment along parts of its border with India including a surveillance camera network and a proposed satellite early-warning monitoring system. The equipment can be used in all environments, including those with extremes of temperature and topography such as the Himalayan region, some parts of which are in dispute with India
Check Point Researchers Rectify Vulnerability in DJI's User Identification Process
DJI and Check Point Researchers shared details of a potential vulnerability in the user identification process within DJIs online Forum that could have enabled an attacker to gain access to user's account. In a report submitted in accordance with DJI's Bug Bounty Program, Researchers discovered that DJI's platforms used a token to identify registered users across different aspects of the customer experience, making it a target for hackers looking for ways to access accounts
Chinese Satellite Navigation System To Get New Homemade Missile-borne Anti-jamming Antenna
China's domestic Beidou Navigation Satellite System will equipped with the new missile-borne anti-interference antenna developed by a Chinese defense technology firm, this year, local media reports. "The domestically-built missile-borne anti-interference antenna is based on array signal processing technology, and will greatly help the country's People's Liberation Army (PLA) units counter the enemy's jamming efforts against the BeiDou system in battle," Jin Zhongshu, deputy general manager of the Beijing Li Gong Navigation Technology Co, told Global Times on Thursday on the sidelines of the China Satellite Navigation Exhibition at the ongoing 9th China Satellite Navigation Conference (CSNC) in Harbin of Northeast...
China's Su-35 Jets Participate in Bashi Channel Patrol to Deter 'Taiwan Independence'
Chinas Su-35 fighter jets along with H-6K bombers participated in Bashi Channel patrol in combat training and testing toprovide a deterrence to 'Taiwan independence forces, a Chinese military expert said. "The island patrol revealed that China's Su-35 fighter jets are combat-ready
China Deploys J-20 Stealth Fighter Jet for Combat Training
The Chinese Peoples Liberation Army (PLA) Air Force has deployed its stealth fighter jet, J-20, to sea areas for combat training. "The J-20 has conducted a combat training mission in sea areas for the first time, and this has further strengthened the comprehensive combat capability of the PLA Air Force," PLA air force spokesperson Shen Jinke was quoted as saying by


text:
using System;
using System.IO;
using System.Net.Sockets;
using IEC60870.Enum;
using IEC60870.IE;
using IEC60870.IE.Base;
using IEC60870.Object;
using IEC60870.Utils;

namespace IEC60870.Connections
{
    public class Connection
    {
        private static readonly byte[] TestfrActBuffer = {0x68, 0x04, 0x43, 0x00, 0x00, 0x00};
        private static readonly byte[] TestfrConBuffer = {0x68, 0x04, 0x83, 0x00, 0x00, 0x00};
        private static readonly byte[] StartdtActBuffer = {0x68, 0x04, 0x07, 0x00, 0x00, 0x00};
        private static readonly byte[] StartdtConBuffer = {0x68, 0x04, 0x0b, 0x00, 0x00, 0x00};

        private readonly byte[] buffer = new byte[255];
        private readonly BinaryReader reader;

        private readonly ConnectionSettings settings;

        private readonly BinaryWriter writer;

        private bool closed;
        private IOException closedIoException;
        public ConnectionEventListener.ConnectionClosed ConnectionClosed = null;

        private RunTask maxIdleTimeTimerFuture;

        private RunTask maxTimeNoAckReceivedFuture;

        private RunTask maxTimeNoAckSentFuture;

        private RunTask maxTimeNoTestConReceivedFuture;

        public ConnectionEventListener.NewASdu NewASdu = null;

        private int originatorAddress;

        private int receiveSequenceNumber;
        private int sendSequenceNumber;

        private int acknowledgedReceiveSequenceNumber;
        private int acknowledgedSendSequenceNumber;

        private readonly CountDownLatch startdtactSignal;
        private CountDownLatch startdtConSignal;

        public Connection(Socket socket, ConnectionSettings settings)
        {
            this.settings = settings;

            var ns = new NetworkStream(socket);

            writer = new BinaryWriter(ns);
            reader = new BinaryReader(ns);

            startdtactSignal = new CountDownLatch(1);

            var connectionReader = new ConnectionReader(this);
            connectionReader.Start();
        }

        public void Close()
        {
            if (!closed)
            {
                closed = true;

                try
                {
                    writer.Close();
                }
                catch (Exception e)
                {
                    throw new IOException(e.Message);
                }

                try
                {
                    reader.Close();
                }
                catch (Exception e)
                {
                    throw new IOException(e.Message);
                }
            }
        }

        public void StartDataTransfer(int timeout = 0)
        {
            if (timeout < 0)
            {
                throw new ArgumentException("timeout may not be negative");
            }

            startdtConSignal = new CountDownLatch(1);

            try
            {
                writer.Write(StartdtActBuffer, 0, StartdtActBuffer.Length);
                writer.Flush();
            }
            catch (Exception e)
            {
                throw new IOException(e.Message);
            }

            if (timeout == 0)
            {
                startdtConSignal.Wait();
            }
            else
            {
                startdtConSignal.Wait(timeout);
            }
        }

        public void WaitForStartDT(int timeout = 0)
        {
            if (timeout < 0)
            {
                throw new ArgumentException("timeout may not be negative");
            }

            if (timeout == 0)
            {
                startdtactSignal.Wait();
            }
            else
            {
                startdtactSignal.Wait(timeout);
            }

            try
            {
                writer.Write(StartdtConBuffer, 0, StartdtConBuffer.Length);
                writer.Flush();
            }
            catch (Exception e)
            {
                throw new IOException(e.Message);
            }

            ResetMaxIdleTimeTimer();
        }

        public void Send(ASdu aSdu)
        {
            acknowledgedReceiveSequenceNumber = receiveSequenceNumber;
            var requestAPdu = new APdu(sendSequenceNumber, receiveSequenceNumber, APdu.ApciType.I_FORMAT, aSdu);
            sendSequenceNumber = (sendSequenceNumber + 1) % 32768;

            if (maxTimeNoAckSentFuture != null)
            {
                maxTimeNoAckSentFuture.Cancel();
                maxTimeNoAckSentFuture = null;
            }

            if (maxTimeNoAckReceivedFuture == null)
            {
                ScheduleMaxTimeNoAckReceivedFuture();
            }

            var length = requestAPdu.Encode(buffer, settings);
            writer.Write(buffer, 0, length);
            writer.Flush();

            ResetMaxIdleTimeTimer();
        }

        private void SendSFormatPdu()
        {
            var requestAPdu = new APdu(0, receiveSequenceNumber, APdu.ApciType.S_FORMAT, null);
            requestAPdu.Encode(buffer, settings);

            writer.Write(buffer, 0, 6);
            writer.Flush();

            acknowledgedReceiveSequenceNumber = receiveSequenceNumber;

            ResetMaxIdleTimeTimer();
        }

        #region COMMANDS

        public void SendConfirmation(ASdu aSdu)
        {
            var cot = aSdu.GetCauseOfTransmission();

            if (cot == CauseOfTransmission.ACTIVATION)
            {
                cot = CauseOfTransmission.ACTIVATION_CON;
            }
            else if (cot == CauseOfTransmission.DEACTIVATION)
            {
                cot = CauseOfTransmission.DEACTIVATION_CON;
            }

            Send(new ASdu(aSdu.GetTypeIdentification(), aSdu.IsSequenceOfElements, cot, aSdu.IsTestFrame(),
                aSdu.IsNegativeConfirm(), aSdu.GetOriginatorAddress(), aSdu.GetCommonAddress(),
                aSdu.GetInformationObjects()));
        }

        public void SingleCommand(int commonAddress, int informationObjectAddress, IeSingleCommand singleCommand)
        {
            var cot = singleCommand.IsCommandStateOn()
                ? CauseOfTransmission.ACTIVATION
                : CauseOfTransmission.DEACTIVATION;

            var aSdu = new ASdu(TypeId.C_SC_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {singleCommand}})
                });

            Send(aSdu);
        }

        public void SingleCommandWithTimeTag(int commonAddress, int informationObjectAddress,
            IeSingleCommand singleCommand, IeTime56 timeTag)
        {
            var cot = singleCommand.IsCommandStateOn()
                ? CauseOfTransmission.ACTIVATION
                : CauseOfTransmission.DEACTIVATION;

            var aSdu = new ASdu(TypeId.C_SC_TA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {singleCommand, timeTag}})
                });

            Send(aSdu);
        }

        public void DoubleCommand(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeDoubleCommand doubleCommand)
        {
            var aSdu = new ASdu(TypeId.C_DC_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {doubleCommand}})
                });

            Send(aSdu);
        }

        public void DoubleCommandWithTimeTag(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeDoubleCommand doubleCommand, IeTime56 timeTag)
        {
            var aSdu = new ASdu(TypeId.C_DC_TA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {doubleCommand, timeTag}})
                });

            Send(aSdu);
        }

        public void RegulatingStepCommand(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeRegulatingStepCommand regulatingStepCommand)
        {
            var aSdu = new ASdu(TypeId.C_RC_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {regulatingStepCommand}})
                });

            Send(aSdu);
        }

        public void RegulatingStepCommandWithTimeTag(int commonAddress, CauseOfTransmission cot,
            int informationObjectAddress, IeRegulatingStepCommand regulatingStepCommand, IeTime56 timeTag)
        {
            var aSdu = new ASdu(TypeId.C_RC_TA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {regulatingStepCommand, timeTag}})
                });

            Send(aSdu);
        }

        public void SetNormalizedValueCommand(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeNormalizedValue normalizedValue, IeQualifierOfSetPointCommand qualifier)
        {
            var aSdu = new ASdu(TypeId.C_SE_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {normalizedValue, qualifier}})
                });

            Send(aSdu);
        }

        public void SetNormalizedValueCommandWithTimeTag(int commonAddress, CauseOfTransmission cot,
            int informationObjectAddress, IeNormalizedValue normalizedValue, IeQualifierOfSetPointCommand qualifier,
            IeTime56 timeTag)
        {
            var aSdu = new ASdu(TypeId.C_SE_TA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {normalizedValue, qualifier, timeTag}})
                });

            Send(aSdu);
        }

        public void SetScaledValueCommand(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeScaledValue scaledValue, IeQualifierOfSetPointCommand qualifier)
        {
            var aSdu = new ASdu(TypeId.C_SE_NB_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {scaledValue, qualifier}})
                });

            Send(aSdu);
        }

        public void SetScaledValueCommandWithTimeTag(int commonAddress, CauseOfTransmission cot,
            int informationObjectAddress, IeScaledValue scaledValue, IeQualifierOfSetPointCommand qualifier,
            IeTime56 timeTag)
        {
            var aSdu = new ASdu(TypeId.C_SE_TB_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {scaledValue, qualifier, timeTag}})
                });

            Send(aSdu);
        }

        public void SetShortFloatCommand(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeShortFloat shortFloat, IeQualifierOfSetPointCommand qualifier)
        {
            var aSdu = new ASdu(TypeId.C_SE_NC_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {shortFloat, qualifier}})
                });

            Send(aSdu);
        }

        public void SetShortFloatCommandWithTimeTag(int commonAddress, CauseOfTransmission cot,
            int informationObjectAddress, IeShortFloat shortFloat, IeQualifierOfSetPointCommand qualifier,
            IeTime56 timeTag)
        {
            var aSdu = new ASdu(TypeId.C_SE_TC_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {shortFloat, qualifier, timeTag}})
                });

            Send(aSdu);
        }

        public void BitStringCommand(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeBinaryStateInformation binaryStateInformation)
        {
            var aSdu = new ASdu(TypeId.C_BO_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {binaryStateInformation}})
                });

            Send(aSdu);
        }

        public void BitStringCommandWithTimeTag(int commonAddress, CauseOfTransmission cot,
            int informationObjectAddress,
            IeBinaryStateInformation binaryStateInformation, IeTime56 timeTag)
        {
            var aSdu = new ASdu(TypeId.C_BO_TA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {binaryStateInformation, timeTag}})
                });

            Send(aSdu);
        }

        public void Interrogation(int commonAddress, CauseOfTransmission cot, IeQualifierOfInterrogation qualifier)
        {
            var aSdu = new ASdu(TypeId.C_IC_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[] {new InformationObject(0, new[] {new InformationElement[] {qualifier}})});

            Send(aSdu);
        }

        public void CounterInterrogation(int commonAddress, CauseOfTransmission cot,
            IeQualifierOfCounterInterrogation qualifier)
        {
            var aSdu = new ASdu(TypeId.C_CI_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[] {new InformationObject(0, new[] {new InformationElement[] {qualifier}})});

            Send(aSdu);
        }

        public void ReadCommand(int commonAddress, int informationObjectAddress)
        {
            var aSdu = new ASdu(TypeId.C_RD_NA_1, false, CauseOfTransmission.REQUEST, false, false, originatorAddress,
                commonAddress, new[]
                {
                    new InformationObject(informationObjectAddress,
                        new InformationElement[][] { })
                });

            Send(aSdu);
        }

        public void SynchronizeClocks(int commonAddress, IeTime56 time)
        {
            var io = new InformationObject(0, new[] {new InformationElement[] {time}});

            InformationObject[] ios = {io};

            var aSdu = new ASdu(TypeId.C_CS_NA_1, false, CauseOfTransmission.ACTIVATION, false, false,
                originatorAddress,
                commonAddress, ios);

            Send(aSdu);
        }

        public void TestCommand(int commonAddress)
        {
            var aSdu = new ASdu(TypeId.C_TS_NA_1, false, CauseOfTransmission.ACTIVATION, false, false,
                originatorAddress,
                commonAddress, new[]
                {
                    new InformationObject(0,
                        new[] {new InformationElement[] {new IeFixedTestBitPattern()}})
                });

            Send(aSdu);
        }

        public void TestCommandWithTimeTag(int commonAddress, IeTestSequenceCounter testSequenceCounter, IeTime56 time)
        {
            var aSdu = new ASdu(TypeId.C_TS_TA_1, false, CauseOfTransmission.ACTIVATION, false, false,
                originatorAddress,
                commonAddress, new[]
                {
                    new InformationObject(0, new[] {new InformationElement[] {testSequenceCounter, time}})
                });

            Send(aSdu);
        }

        public void ResetProcessCommand(int commonAddress, IeQualifierOfResetProcessCommand qualifier)
        {
            var aSdu = new ASdu(TypeId.C_RP_NA_1, false, CauseOfTransmission.ACTIVATION, false, false,
                originatorAddress,
                commonAddress, new[]
                {
                    new InformationObject(0,
                        new[] {new InformationElement[] {qualifier}})
                });

            Send(aSdu);
        }

        public void DelayAcquisitionCommand(int commonAddress, CauseOfTransmission cot, IeTime16 time)
        {
            var aSdu = new ASdu(TypeId.C_CD_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[] {new InformationObject(0, new[] {new InformationElement[] {time}})});

            Send(aSdu);
        }

        public void ParameterNormalizedValueCommand(int commonAddress, int informationObjectAddress,
            IeNormalizedValue normalizedValue, IeQualifierOfParameterOfMeasuredValues qualifier)
        {
            var aSdu = new ASdu(TypeId.P_ME_NA_1, false, CauseOfTransmission.ACTIVATION, false, false,
                originatorAddress,
                commonAddress, new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {normalizedValue, qualifier}})
                });

            Send(aSdu);
        }

        public void ParameterScaledValueCommand(int commonAddress, int informationObjectAddress,
            IeScaledValue scaledValue,
            IeQualifierOfParameterOfMeasuredValues qualifier)
        {
            var aSdu = new ASdu(TypeId.P_ME_NB_1, false, CauseOfTransmission.ACTIVATION, false, false,
                originatorAddress,
                commonAddress, new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {scaledValue, qualifier}})
                });

            Send(aSdu);
        }

        public void ParameterShortFloatCommand(int commonAddress, int informationObjectAddress, IeShortFloat shortFloat,
            IeQualifierOfParameterOfMeasuredValues qualifier)
        {
            var aSdu = new ASdu(TypeId.P_ME_NC_1, false, CauseOfTransmission.ACTIVATION, false, false,
                originatorAddress,
                commonAddress, new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {shortFloat, qualifier}})
                });

            Send(aSdu);
        }

        public void ParameterActivation(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeQualifierOfParameterActivation qualifier)
        {
            var aSdu = new ASdu(TypeId.P_AC_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {qualifier}})
                });

            Send(aSdu);
        }

        public void FileReady(int commonAddress, int informationObjectAddress, IeNameOfFile nameOfFile,
            IeLengthOfFileOrSection lengthOfFile, IeFileReadyQualifier qualifier)
        {
            var aSdu = new ASdu(TypeId.F_FR_NA_1, false, CauseOfTransmission.FILE_TRANSFER, false, false,
                originatorAddress, commonAddress, new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {nameOfFile, lengthOfFile, qualifier}})
                });

            Send(aSdu);
        }

        public void SectionReady(int commonAddress, int informationObjectAddress, IeNameOfFile nameOfFile,
            IeNameOfSection nameOfSection, IeLengthOfFileOrSection lengthOfSection, IeSectionReadyQualifier qualifier)
        {
            var aSdu = new ASdu(TypeId.F_SR_NA_1, false, CauseOfTransmission.FILE_TRANSFER, false, false,
                originatorAddress, commonAddress, new[]
                {
                    new InformationObject(
                        informationObjectAddress,
                        new[] {new InformationElement[] {nameOfFile, nameOfSection, lengthOfSection, qualifier}})
                });

            Send(aSdu);
        }

        public void CallOrSelectFiles(int commonAddress, CauseOfTransmission cot, int informationObjectAddress,
            IeNameOfFile nameOfFile, IeNameOfSection nameOfSection, IeSelectAndCallQualifier qualifier)
        {
            var aSdu = new ASdu(TypeId.F_SC_NA_1, false, cot, false, false, originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {nameOfFile, nameOfSection, qualifier}})
                });

            Send(aSdu);
        }

        public void LastSectionOrSegment(int commonAddress, int informationObjectAddress, IeNameOfFile nameOfFile,
            IeNameOfSection nameOfSection, IeLastSectionOrSegmentQualifier qualifier, IeChecksum checksum)
        {
            var aSdu = new ASdu(TypeId.F_LS_NA_1, false, CauseOfTransmission.FILE_TRANSFER, false, false,
                originatorAddress, commonAddress, new[]
                {
                    new InformationObject(
                        informationObjectAddress,
                        new[] {new InformationElement[] {nameOfFile, nameOfSection, qualifier, checksum}})
                });

            Send(aSdu);
        }

        public void AckFileOrSection(int commonAddress, int informationObjectAddress, IeNameOfFile nameOfFile,
            IeNameOfSection nameOfSection, IeAckFileOrSectionQualifier qualifier)
        {
            var aSdu = new ASdu(TypeId.F_AF_NA_1, false, CauseOfTransmission.FILE_TRANSFER, false, false,
                originatorAddress, commonAddress, new[]
                {
                    new InformationObject(
                        informationObjectAddress,
                        new[] {new InformationElement[] {nameOfFile, nameOfSection, qualifier}})
                });

            Send(aSdu);
        }

        public void SendSegment(int commonAddress, int informationObjectAddress, IeNameOfFile nameOfFile,
            IeNameOfSection nameOfSection, IeFileSegment segment)
        {
            var aSdu = new ASdu(TypeId.F_SG_NA_1, false, CauseOfTransmission.FILE_TRANSFER, false, false,
                originatorAddress, commonAddress,
                new[]
                {
                    new InformationObject(informationObjectAddress,
                        new[] {new InformationElement[] {nameOfFile, nameOfSection, segment}})
                });
            Send(aSdu);
        }

        public void SendDirectory(int commonAddress, int informationObjectAddress, InformationElement[][] directory)
        {
            var aSdu = new ASdu(TypeId.F_DR_TA_1, false, CauseOfTransmission.FILE_TRANSFER, false, false,
                originatorAddress, commonAddress, new[]
                {
                    new InformationObject(
                        informationObjectAddress, directory)
                });

            Send(aSdu);
        }

        public void QueryLog(int commonAddress, int informationObjectAddress, IeNameOfFile nameOfFile,
            IeTime56 rangeStartTime, IeTime56 rangeEndTime)
        {
            var aSdu = new ASdu(TypeId.F_SC_NB_1, false, CauseOfTransmission.FILE_TRANSFER, false, false,
                originatorAddress, commonAddress, new[]
                {
                    new InformationObject(
                        informationObjectAddress,
                        new[] {new InformationElement[] {nameOfFile, rangeStartTime, rangeEndTime}})
                });

            Send(aSdu);
        }

        #endregion

        #region HELPER

        public void SetOriginatorAddress(int address)
        {
            if (address < 0 || address > 255)
            {
                throw new ArgumentException("Originator Address must be between 0 and 255.");
            }

            originatorAddress = address;
        }

        private int GetSequenceNumberDifference(int x, int y)
        {
            var difference = x - y;
            if (difference < 0)
            {
                difference += 32768;
            }

            return difference;
        }

        public int GetNumUnconfirmedIPdusSent()
        {
            lock (this)
            {
                return GetSequenceNumberDifference(sendSequenceNumber, acknowledgedSendSequenceNumber);
            }
        }

        public int GetOriginatorAddress()
        {
            return originatorAddress;
        }

        #endregion

        private void HandleReceiveSequenceNumber(APdu aPdu)
        {
            if (acknowledgedSendSequenceNumber != aPdu.GetReceiveSeqNumber())
            {
                if (GetSequenceNumberDifference(aPdu.GetReceiveSeqNumber(), acknowledgedSendSequenceNumber) >
                    GetNumUnconfirmedIPdusSent())
                {
                    throw new IOException("Got unexpected receive sequence number: " + aPdu.GetReceiveSeqNumber()
                                          + ", expected a number between: " + acknowledgedSendSequenceNumber + " and "
                                          + sendSequenceNumber);
                }

                if (maxTimeNoAckReceivedFuture != null)
                {
                    maxTimeNoAckReceivedFuture.Cancel();
                    maxTimeNoAckReceivedFuture = null;
                }

                acknowledgedSendSequenceNumber = aPdu.GetReceiveSeqNumber();

                if (sendSequenceNumber != acknowledgedSendSequenceNumber)
                {
                    ScheduleMaxTimeNoAckReceivedFuture();
                }
            }
        }

        private void ResetMaxIdleTimeTimer()
        {
            if (maxIdleTimeTimerFuture != null)
            {
                maxIdleTimeTimerFuture.Cancel();
                maxIdleTimeTimerFuture = null;
            }

            maxIdleTimeTimerFuture = PeriodicTaskFactory.Start(() =>
            {
                try
                {
                    writer.Write(TestfrActBuffer, 0, TestfrActBuffer.Length);
                    writer.Flush();
                }
                catch (Exception e)
                {
                    throw new IOException(e.Message);
                }

                ScheduleMaxTimeNoTestConReceivedFuture();
            }, settings.MaxIdleTime);
        }

        private void ScheduleMaxTimeNoTestConReceivedFuture()
        {
            if (maxTimeNoTestConReceivedFuture != null)
            {
                maxTimeNoTestConReceivedFuture.Cancel();
                maxTimeNoTestConReceivedFuture = null;
            }

            maxTimeNoTestConReceivedFuture = PeriodicTaskFactory.Start(() =>
            {
                Close();
                ConnectionClosed?.Invoke(new IOException(
                    "The maximum time that no test frame confirmation was received (t1) has been exceeded. t1 = "
                    + settings.MaxTimeNoAckReceived + "ms"));
            }, settings.MaxTimeNoAckReceived);
        }

        private void ScheduleMaxTimeNoAckReceivedFuture()
        {
            if (maxTimeNoAckReceivedFuture != null)
            {
                maxTimeNoAckReceivedFuture.Cancel();
                maxTimeNoAckReceivedFuture = null;
            }

            maxTimeNoAckReceivedFuture = PeriodicTaskFactory.Start(() =>
            {
                Close();
                maxTimeNoTestConReceivedFuture = null;
                ConnectionClosed?.Invoke(new IOException(
                    "The maximum time that no test frame confirmation was received (t1) has been exceeded. t1 = "
                    + settings.MaxTimeNoAckReceived + "ms"));
            }, settings.MaxTimeNoAckReceived);
        }

        private class ConnectionReader : ThreadBase
        {
            private readonly Connection innerConnection;

            public ConnectionReader(Connection connection)
            {
                innerConnection = connection;
            }

            public override void Run()
            {
                try
                {
                    var reader = innerConnection.reader;
                    while (true)
                    {
                        if (reader.ReadByte() != 0x68)
                        {
                            throw new IOException("Message does not start with 0x68");
                        }

                        var aPdu = new APdu(reader, innerConnection.settings);
                        switch (aPdu.GetApciType())
                        {
                            case APdu.ApciType.I_FORMAT:
                                if (innerConnection.receiveSequenceNumber != aPdu.GetSendSeqNumber())
                                {
                                    throw new IOException("Got unexpected send sequence number: " +
                                                          aPdu.GetSendSeqNumber()
                                                          + ", expected: " + innerConnection.receiveSequenceNumber);
                                }

                                innerConnection.receiveSequenceNumber = (aPdu.GetSendSeqNumber() + 1) % 32768;
                                innerConnection.HandleReceiveSequenceNumber(aPdu);

                                innerConnection.NewASdu?.Invoke(aPdu.GetASdu());

                                var numUnconfirmedIPdusReceived = innerConnection.GetSequenceNumberDifference(
                                    innerConnection.receiveSequenceNumber,
                                    innerConnection.acknowledgedReceiveSequenceNumber);
                                if (numUnconfirmedIPdusReceived > innerConnection.settings.MaxUnconfirmedIPdusReceived)
                                {
                                    innerConnection.SendSFormatPdu();
                                    if (innerConnection.maxTimeNoAckSentFuture != null)
                                    {
                                        innerConnection.maxTimeNoAckSentFuture.Cancel();
                                        innerConnection.maxTimeNoAckSentFuture = null;
                                    }
                                }
                                else
                                {
                                    if (innerConnection.maxTimeNoAckSentFuture == null)
                                    {
                                        innerConnection.maxTimeNoAckSentFuture =
                                            PeriodicTaskFactory.Start(() =>
                                            {
                                                innerConnection.SendSFormatPdu();
                                                innerConnection.maxTimeNoAckSentFuture = null;
                                            }, innerConnection.settings.MaxTimeNoAckSent);
                                    }
                                }

                                innerConnection.ResetMaxIdleTimeTimer();
                                break;
                            case APdu.ApciType.STARTDT_CON:
                                innerConnection.startdtConSignal?.CountDown();
                                innerConnection.ResetMaxIdleTimeTimer();
                                break;
                            case APdu.ApciType.STARTDT_ACT:
                                innerConnection.startdtactSignal?.CountDown();
                                break;
                            case APdu.ApciType.S_FORMAT:
                                innerConnection.HandleReceiveSequenceNumber(aPdu);
                                innerConnection.ResetMaxIdleTimeTimer();
                                break;
                            case APdu.ApciType.TESTFR_ACT:
                                try
                                {
                                    innerConnection.writer.Write(TestfrConBuffer, 0, TestfrConBuffer.Length);
                                    innerConnection.writer.Flush();
                                }
                                catch (Exception e)
                                {
                                    throw new IOException(e.Message);
                                }

                                innerConnection.ResetMaxIdleTimeTimer();
                                break;
                            case APdu.ApciType.TESTFR_CON:
                                if (innerConnection.maxTimeNoTestConReceivedFuture != null)
                                {
                                    innerConnection.maxTimeNoTestConReceivedFuture.Cancel();
                                    innerConnection.maxTimeNoTestConReceivedFuture = null;
                                }
                                innerConnection.ResetMaxIdleTimeTimer();
                                break;
                            default:
                                throw new IOException("Got unexpected message with APCI Type: " + aPdu.GetApciType());
                        }
                    }
                }
                catch (IOException e)
                {
                    innerConnection.closedIoException = e;
                }
                catch (Exception e)
                {
                    innerConnection.closedIoException = new IOException(e.Message);
                }
                finally
                {
                    innerConnection.ConnectionClosed?.Invoke(innerConnection.closedIoException);
                    innerConnection.Close();
                }
            }
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
News Jobs
The deadline for this call has passed.
See the news page for more open calls.
The Northern Dimension Partnership on Culture: Cultural and Creative Industry Project Advisor (Latvia)
The Northern Dimension Partnership on Culture (NDPC) is an initiative focusing on the improvement of operating conditions for cultural and creative industries. Since 2010, the NDPC has served as a regional focal point regarding information on policy developments in culture and creative industries (CCI), regional collaboration and access to financing for CCIs, as well as facilitated networking activities.
The activity area covers 11 countries: Russia, Finland, Sweden, Norway, Denmark, Iceland, Estonia, Latvia, Lithuania, Poland and Germany. The NDPC Secretariat's office is situated in Riga, Latvia.
They are offering a full-time position of a Cultural and Creative Industry Project Advisor at the NDPC Secretariat in Riga, with an attractive salary and working conditions (considering the COVID-19 restrictions, first months of the employment are possible as a remote work). You will be welcomed by a small, friendly, open-minded and supportive team who believe in work-life balance, empowering the employees and encouraging initiative at the workplace. Contract-based employment for a period of up to two years. The contract includes an initial three-month probation period.
The main responsibilities of the Advisor are:
Identify new co-operation partners and opportunities with a broad scope in the fields of cultural affairs and creative industries.
Draft, plan and carry out projects in cooperation with different cooperation partners.
Monitor suitable Funding schemes within cultural and creative industries sector and participate in writing of project proposals.
Participate actively in the annual NDPC activity planning processes, developing aims and goals for the sector, participate actively in the work of the Secretariat's team.
Follow-up on cultural and creative industries sectors, write reports about significant trends, analyse the opportunities for NDPC in the field of culture and creative industries.
More info & apply
Mobility Funding Guide to Latvia (2017)
Open for:
Producers & Managers
Organisations:
NDPC - Northern Dimension Partnership on Culture
Member of On the Move's network
Get more opportunities in your inbox
Our newsletter is sent out once a month, in your choice of five languages.
Language Select language English Français Español Italiano Deutsch
KORDON: Food and Energy Lab for Artists from the Nordic and Baltic Region (Estonia)
Performing Arts Centre Finland / New Performance Turku Biennale: Emerging Curators Residency in Turku (Finland)
Moving Cities Residency and Performance Project for Choreographic Interventions in Public Space (Estonia / Norway)
CEC ArtsLink: Art Prospect Network Residencies for Artists and Curators
Last chances to apply! See the deadlines page for more.
Künstlerhaus Büchsenhausen: Fellowship Programme for Art and Theory 2022–23 (Austria). Deadline: 29 Jan 2023
Rejmyre Art Lab: Production Residency on the Theme of 'Refuging' (Sweden). Deadline: 31 Jan 2023
PROGENY: Mural Art Open Call (Bulgaria). Deadline: 31 Jan 2023
Colección SOLO: SOLO AI '23 Awards (Spain). Deadline: 31 Jan 2023
Youth Peace Ambassadors Network: We Make Culture Training Programme (France, Spain). Deadline: 31 Jan 2023
Institute for the Cooperative Digital Economy: Fellowship Programme (India). Deadline: 31 Jan 2023