text:
Q: Stuck after "sigin in with google" button is clicked SO I have been trying to make Signin with google as a signin option for my app. As i click the sigin button, the app shows the list of availabe emails but as soon as i click any of the emails, the app doesnt log me in. I have done trying almost everything including, adding SHA-1 key to firebase, replacing the new google-services.json file. I have rechecked my code but i must be missing out on something here. Please help me find my mistakes
EDIT: I have enabled Sigin wit google in firebase too
Here is the code i used for the signin:
public class User_login extends AppCompatActivity {

    private static final int RC_SIGN_IN = 123;
    private FirebaseAuth mAuth;
    private GoogleSignInClient mGoogleSignInClient;

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseUser user = mAuth.getCurrentUser();
        if(user != null){
            Intent intent = new Intent(getApplicationContext(), home_user.class);
            startActivity(intent);
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_login);

        mAuth = FirebaseAuth.getInstance();

    // ________________SIGN IN WITH GOOGLE _____________//

        createRequest();

        findViewById(R.id.google_signIn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                signIn();
            }
        });
    }

    private void createRequest() {
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
    }

    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
            // Google Sign In was successful, authenticate with Firebase
                GoogleSignInAccount account = task.getResult(ApiException.class);
                //Log.d(TAG, "firebaseAuthWithGoogle:" + account.getId());
                firebaseAuthWithGoogle(account.getIdToken());
            } catch (ApiException e) {
                // Google Sign In failed, update UI appropriately
                Log.w("DEBUG", "Google sign in failed", e);
                Toast.makeText(User_login.this,"Google signin failed",Toast.LENGTH_LONG).show();
            }
        }
    }

    private void firebaseAuthWithGoogle(String idToken) {
        AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            Log.d("DEBUG", "signInWithCredential:success");

                            FirebaseUser user = mAuth.getCurrentUser();
                            Intent intent = new Intent(getApplicationContext(), home_user.class);
                            startActivity(intent);

                        } else {
                            Toast.makeText(User_login.this, "sorry something went wrong, please retry",Toast.LENGTH_LONG).show();
                            // If sign in fails, display a message to the user.
                            //Log.w(TAG, "signInWithCredential:failure", task.getException());

                        }
                    }
                });
    }

}

EDIT: Here's my logcat error:

2021-05-09 15:14:57.861 1997-1997/com.covoid.app W/DEBUG: Google sign in failed
com.google.android.gms.common.api.ApiException: 10:
at
com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(com.google.android.gms:play-services-base@@17.1.0:4)
at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(com.google.android.gms:play-services-auth@@18.1.0:9)
at com.covoid.app.User_login.onActivityResult(User_login.java:137)
at android.app.Activity.dispatchActivityResult(Activity.java:8304)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5136)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5184)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:100)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2222)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:228)
at android.app.ActivityThread.main(ActivityThread.java:7782)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:981)

A: in Firebase check that you have to enabled google sign in ?
Go to firebase Authentication and  inside sigin methods enable google sign in


As a follow up of Reprint, this publication by renowned Dutch graphic designer Karel Martens contains a sequence of unique letterpress monoprints made between 2014 and 2016. The book comes in two different covers which is the result of a printing experiment by printing all the content of the book in 3 layers on top of each other. This particular print sheet was cut and folded into two different covers.


text:
Finn and Twin (6309 words) by cheeky_blinders
Chapters: 7/?
Fandom: Peaky Blinders (TV)
Rating: General Audiences
Warnings: No Archive Warnings Apply
Characters: Finn Shelby, Female OC, twin to Finn, Thomas Shelby, Tommy Shelby, John Shelby, Esme Shelby, Arthur Shelby, Linda Shelby, Charlie Shelby
Summary:
A collection of one-shots I have had sitting in my head forever about Finn having a twin

Peaky Blinders (TV)
Finn Shelby
Female OC
twin to Finn
Thomas Shelby
Tommy Shelby
John Shelby
Esme Shelby
Arthur Shelby
Linda Shelby
Charlie Shelby
Finn and Twin
cheeky_blinders
A collection of one-shots I have had sitting in my head forever about Finn having a twin
Chapter 1: Revenge Is Sweeter than Cream
"Oi, Finn and Aideen, get your arse over here!" Aideen and her 5-year-old twin brother popped their heads out of the wagon cover to spot their aunt Polly standing over the fire, plates in hand. The two scrambled out of the van and race each other to Polly's side.
"I got there first!" Finn declared as he took a plate from Polly.
"No, I did!" Aideen was quick to reply as she took a plate as well, thanking Polly as she did so. Aideen was fed first, much to Finn's dismay though Polly ignored him. Once the two had their chicken, they sat down by the fire to continue their bickering.
"What are they scramblin' 'bout now, Pol?" Arthur asked as the rest of the family made their way to the center of wagons for dinner.
"Somethin' about who got to me first," Polly answered as she handed Arthur food and then his brothers.
"Alright so, who won?" John asked as he plopped down next to Finn.
"Me!" The twins answered in unison which started up another round of bickering.
"Fucking hell you two," Tommy grumbled. "All I want is to eat a meal in fucking peace."
"Stop being so grumpy." Arthur sat down next to Aideen, stealing a piece of her chicken when the girl wasn't looking.
"Alright, how about this then, yeah?" Tommy suggested, lighting a cigarette. "The first one to run around the edge of the wagons and come back is the winner?" The twins were up in an instant and when Tommy said "go" the two took off. The Shelbys and the others they were traveling with watched Aideen and Finn take off. Aideen was quick to pull ahead, something that Finn did not like. When he saw his chance, Finn launched himself forward, landing on Aideen's legs and sending the two of them flying to the ground in a pile of dust.
"Finn!" Polly yelled while the Shelby brothers roared with laughter. "Don't encourage him!" Polly scolded as Finn jumped up and ran. Aideen was determined and was on her feet, chasing after her brother. Ultimately, Finn did win but Tommy's idea had backfired for Aideen had gotten herself a nice, large gash under his chin and had blood running down her neck from it. "Alright, Tommy, go clean her up," Polly instructed.
"Why me!?"
"You're the one who suggested this whole fucking ordeal!" There was a tone in Polly's voice that told Tommy it was best not to argue with her. So, Tommy stood with a huff and took Aideen to one of the wagons. He helped her in before climbing up after her, grabbing the medical supplies.
"What's that face for?" Tommy asked his sister, noticing her scowl as he began to clean her chin.
"Finn fucking cheated!" She exclaimed.
"Oi, don't use that language." Tommy scolded and she gave him a look that could only be described as sassy.
"You all say it."
"We're older than you." Aideen stuck out her tongue before Tommy jerked her head back so he could look at her chin. "You got a nice scrape here," Tommy commented but Aideen ignored him. She stayed silent as Tommy cleaned the wound and threw a bandage on it. When Tommy was finished, Aideen jumped out of the wagon and went back out to join the group.
By that point, Johnny Dogs and his family had joined them for dinner and everybody was sitting around the fire, chatting. Aideen took a seat next to Finn but stayed quiet during dinner. Nobody paid her much attention except for Finn who knew that look in his sister's eye. She was planning something and it was not going to be good.
As dinner finished up, Finn watched his sister get up and go over to the fire, standing by it quietly, arms outstretched as if she was warming her hands. Curiously, Finn got up and wandered over to her. "Whatcha doing?" He asked his twin. Aideen didn't answer and instead pointed into the fire. Frowning, Finn leaned forward a tad to try and see what she was pointing at. "I don't see it."
"Look closer," Aideen told him. As Finn leaned even closer, Aideen moved like a flash of light and grabbed Finn's trousers, pulling them and his underwear down. Finn yelled, stumbling back and tripping as Aideen giggled. The other people around the area tried their best to hide their grins and laughter but it was clear all were amused except for Finn.
"Arthur!" Finn yelled as he scrambled up, pulling up his pants quickly. "Polly! Did you see what she did!?"
"Next time don't cheat," Polly answered with a shrug. "Now you two go wash up and start getting ready for bed." The twins stuck their tongues out at each other but knew better than to argue. Once they left, Polly shook her head with a sigh. "God, grant me the patience to deal with those two," Polly muttered as the two hurried off.
Chapter 2: Going Off To War
"Please don't leave! Please!" Aideen begged for probably the thousandth time that morning.
"Deen bean, you know we have to." Arthur murmured, kneeling down in front of his younger sister, resting his hand on her shoulder. "We'll be back before ye know it."
"You don't hafta do anything you don't wanna!" Aideen said, stomping her foot as tears began to fill her eyes. Arthur gave a sad smile. If only that was the truth.
"Keep your chin up, alright?" Arthur stood but Aideen reached her arms up so her brother obliged, picking up his little sister.
"I hate war." The girl mumbled as she wrapped her arms tightly around Arthur in a final hug. "But I love you so much, Arthur." Arthur pressed a kiss to his sister's head before gently passing her over to Thomas.
"Be a good girl, alright?" Tommy told his sister as he hugged her close. "Write to us all, alright? You can do it to practice your letters, how's that?" He didn't receive an answer but Aideen tightened her arms around him to the point where John had to pry his sister off of Tommy.
"I'll miss you, John," Aideen mumbled into John's ear as she gave him a tight hug.
"We'll miss you too, Deen." John kissed her head before setting her down. Aideen stood there as Polly, Ada, and Finn said goodbye to the boys as well. Finn had been determined not to cry, he had told Aideen last night when they were talking. As the train whistle blew, the boys got their bags and Aideen rushed forward, handing them each a drawing she had colored.
It was all of them as a family with each person drawn to the best ability of a six-year-old. "You have to promise to bring them back!" Aideen declared and they all promised before saying their final goodbyes and climbing onto the train. The small family stood on the tracks and waved as the train pulled out of the station.
Nobody said anything on the car ride home but Finn held Aideen's hand the entire way. That night, after they had been put together, Aideen had crawled into Finn's bed and he had held her as she wept. Even Finn shed tears but he managed to keep them quiet, trying his best to focus on his twin.
Finn was going to keep everyone safe, just like his brothers wanted him to do.
Chapter 3: Haircut time
Finn gets the Peaky hair cut and Aideen wants one too
"Why can't I get my hair cut like that!?" Aideen complained as she sat on the chair in the kitchen, watching as her twin got his first-ever "Peaky" haircut.
"Because girls don't get that hair cut!" Finn told her as Polly guided the razor on Finn's head. "Besides, you'd look even more stupid than you already do." John managed to grab Aideen before she could beat Finn but the boy did receive a smack on the back of the head from Polly.
"Be nice or else I will fuck up this hair cut for you," Polly warned which got Finn's lips to seal.
"I still don't see why I can't get the haircut," Aideen muttered, crossing her arms. "Besides, my hair is already real long and needs a cut!"
"Your hair is just fine," Polly assured the girl. "You just don't take care of it which is why is always looks like a bird's nest."
"It doesn't!" Aideen huffed and opened her mouth to complain again but Polly's gaze shut her up. Fine then. Aideen already had a plan forming…
That night, after everyone was asleep, Aideen slipped downstairs and found the drawer with the razors. Grabbing one, she hurried to the bathroom and flicked the light on, closing the door behind her. That night, Aideen proceeded to give herself a Peaky Blinder hair cut.
The result, as expected, was disastrous. Her beautiful brown hair now stuck up in odd places since Aideen had not been able to keep the razor straight and she had parts sticking down the back that she had been unable to reach with the razor.
The next morning, Aideen was the last one downstairs for breakfast and she was wearing a Peaky cap, her hair shoved inside of it. "Oi, that's my cap!" Finn complained, reaching over and snatching the hat before Aideen could stop him. The table fell silent as Aideen's mess of hair was exposed. She lifted her head for a moment to stare at her family before promptly exploding into tears and race from the room.
"Fucking hell," Polly muttered after Aideen left. "That girl has gone and fucked up big time."
"Think you can save it somehow, Pol?" Arthur asked and Polly shook her head no.
"We'll have to just cut it all off." She murmured, sighing wearily over her cup of coffee. Breakfast resumed as did the talking but Finn stayed silent. As people were cleaning up, Finn grabbed a few slices of bread and some cheese off the table before racing out of the kitchen. Nobody stopped him.
Finn knew where his sister would be hiding. It was their ideal hiding spot for it was a "secret", least that was what they believed when they were younger. Finn went up to their bedroom and opened up the small door in the wall, crawling in. To anyone else, it would appear to be a dead-end but Finn knew better. Pushing against the wall, Finn pushed open another door and wiggled in.
The secret room was not very big but it was theirs. Finn and Aideen had decorated it over the years. Trinkets scattered about as well as some old candy wrappers and a few blankets and such. As predicted, Aideen was there, curled up and crying. "Hey, Bean," Finn said as he scooted over to her.
"Go away!" She yelled at him, covering her head with her hands.
"Nah," Finn said with a shrug as he sat next to her. "You know, we can fix that." He commented which got Aideen to stop crying for a moment.
"Well, if we cut off the back end, yeah, and then trim it down...it'll be like a...I dunno what it would be called but it'll just be like you've got really short hair on your head and that's it. Kinda like a boy's hair so maybe you'll be mistaken for a boy..." Finn told her but Aideen didn't look convinced.
"How do you know you won't fuck it up?" She challenged, taking some of the bread that Finn offered.
"Simple, we'll try it on me." Aideen watched as Finn removed some razors he had snatched earlier. Together the twins worked at cutting away at Finn's peaky cut, replacing it with this new hairstyle. Aideen did the same and afterward, the twins had the same hairstyle.
Yeah, it might look a bit ridiculous and yeah, some people might laugh but at least they were together.
Chapter 4: S5 ep 4
Reaction piece for s5 ep4 of Peaky! Meaning spoilers!!
When Aideen heard about what had happened that day with her twin brother and the prostitute, her first reaction was one of horror. She was waiting for Finn when he came home that night, standing in the front entranceway, arms crossed. "Hullo," Finn said as he came inside, tossing his Peaky hat on the hook. "What's that look for?" He asked, sidestepping Aideen as he headed into the kitchen.
"I got a call today, y'know...from Tommy." Aideen followed her brother into the kitchen, watching him rummage in the fridge. "He told me about the whore. He told me how the whore held a gun to your fucking head. To your fucking head, Finn!" Finn grabbed some leftover pasta from the fridge, slamming the fridge door shut.
"Of course he fucking did," Finn muttered as he went over to the table and sat down.
"With reason! Finn, you could have been shot and killed!" Aideen was growing angry as her brother sat there calmly, twirling the pasta with his fork. "Do you even care about your fucking life!?"
"Will you just shut up!?" Finn snapped, slamming his hand down on the table. "I already fucking got it from Tommy and Arthur. I don't need it from you!"
"Then use your fucking head and search your whores before you fuck them!"
"Then why didn't you do it!?" Aideen received no answer and she just groaned, throwing her hands up in the air. "I'm done wasting breath on you. If you want to get yourself killed, go for it." With that, she stalked out of the kitchen and went to her room.
The twins avoided each other for most of that night which was not hard to do. The two were living together and while their house was small, it was still easy to avoid people. It was around midnight that Aideen wandered into the kitchen for a glass of water. As she was filling the glass, she heard footsteps and glanced behind her to see Finn standing before her.
"What do you want?" She muttered, turning back to look at the glass.
"Bean…" Finn said, making his way to her side. "I am sorry. I thought that she had been searched and well…"
"You and your cock are going to get you fucking killed, Finn." She muttered, turning the water off. Finn gave a helpless shrug.
"Forgive me?" He asked her.
"Only if you promise that you'll have all your whores searched before you fuck them."
"I promise." Aideen set her water down and spat in her hand. Finn did the same and they shook hands, solidifying the deal.
"Good cause if I ever hear about some whore getting past you like that again, I'll blow your balls off," Aiden promised and Finn believed her.
Chapter 5: The Fight
Aideen knew how to hold her own when it came to fights. How could she not when she had grown up with four brothers, one of those being a twin who would take any chance he could to tackle her to the ground. The two ended up in a scrap almost every day when they were younger, much to the amusement (and annoyance) of their family members. While they had not had a proper fight for some years now, Aideen could still fight back.
It had started that day at school during a break when the school children were out in the yard, milling about. There was a group of boys, between the ages of 11 through 14. People stayed clear of them and normally Aideen did too. Except for today.
She was not paying much attention to her surroundings, instead of thinking about how she might her brother John to teach her how to fight with a knife. After all, Finn was ten and he was learning so why couldn't she? This was why Aideen proceeded to walk straight into the leader of the gang, a boy named Thomas. "Oi, watch it!" Thomas snapped.
"Why don't you watch it!?" Aideen snapped back. Her mouth had a habit of running ahead of her brain and her aunt was always telling her "think before you speak!". Well, that was hard when you were faced with bullies.
"What did you say?" Thomas asked, looking down at the girl before him. While he was only three years older than her, he was much taller and seemed to tower over her.
"I said, why don't you watch it," Aideen answered, prepared to stand her ground. She received a punch in the face that sent her to the ground. Her nose began to bleed heavily and the gang laughed.
"Are you going to go running home and cry to your mummy?" Thomas asked as the others laughed. "Oh that's right, you don't have a mummy! She died. Didn't she die when she was givin' birth to you? Boys, what do you think that means?"
"That it's her fault her's mum's dead!" One of the boys called back which led to another round of laughter.
"Take that back!" Aideen yelled at him.
"Or what? Are you going to go call your little brother to come and save you?" Thomas spat at her feet. "I don't have time for this bullshit." He announced before turning. Aideen took her chance and rushed forward, tackling Thomas to the ground. She was quickly pulled off of him by other members of the group and received a few swift punches to the stomach that left the girl doubled over in pain. With that, Thomas and his gang left her sitting in the dust.
Finn, who had been gone the entire time due to being forced to clean the chalkboard for talking back in class, came racing out. "Deen!" He yelled as he raced over to his sister, feet slowing to a stop when he saw the state of her. "What happened?"
"Thomas and his fucking gang," Aideen answered as she stood, wiping her nose on the sleeve of her dress. "Is my nose still bleeding?" She groaned as her brother nodded and pressed her sleeve against her nose. The two went to sit underneath a tree and as they waited for Aiden's nose to stop bleeding, she informed Finn as to what had happened.
"We've gotta tell someone! Arthur and Tommy! They'll beat him up good and proper!" Finn said but Aideen shook her head.
"No, I'm going to take care of them on my own!" She declared and there were no words that could shake her. On the way home, the twins swung by the Cut where Aideen hid in the shadows. She scrubbed herself the best she could as well as her dress in hopes that it would remove some of the bloodstains.
Alas, it proved to be useless for Polly was quick to pick up on Aideen's swollen nose and her filthy dress. "What the hell happened to you?" Polly asked as the twins walked into the family meeting. Everyone turned to stare at Aideen who looked like a deer caught in headlights.
"I...I-I was, well…" She stumbled over her words but Finn was quick to speak.
"We had a fight in the schoolyard today. Me and her." Polly rolled her eyes.
"You two are ten but you still behave like children." She muttered before turning back to the business at hand. The twins left and by dinner, there was no more mention of Aideen's bloody dress and nose.
"Aideen!" Tommy called after dinner. "Come run an errand with me."
"Do I have to?" She whined and groaned when she received a look from Tommy. She hopped off her chair and followed her brother out into the streets.
"So, what happened today?" Tommy asked as he lit a cigarette, tossing the match to the side.
"What do you mean?" Aideen asked. "Nothing happened."
"Who did you fight?"
"Finn told you what happened."
"Finn told a lie for you. Why wasn't he covered in dirt and blood as well, eh? I know you two and there has never been a fight where one of you doesn't land a blow on the other." Aideen kicked at a pebble beneath her shoe.
"There's this gang at school…" She mumbled before explaining to Thomas what had happened.
"Hmm, well, I think you did make the right choice, y'know. Standing your ground to fight. Think we just need to get you a bit better trained, that's all." Tommy said. "And I know just the people to teach you."
After that night, Aideen and Finn's brothers (and Ada) taught them how to fight. How to really fight. John taught Aideen where to kick, especially for a male while Arthur showed them where to punch in the throat. Tommy taught them how to kick at the knees and Ada taught them how to head butt.
These lessons took a few weeks to achieve and every day Aideen went to school, she was picked on by Thomas and his gang. They would follow her around, taunting her and calling her names. Once they called her a monkey. Another time they said that she was fat and looked like a cow. There was nothing Aideen or Finn could do other than continue to train.
Aideen did her best to not let it get to her but the seeds of thought had been planted. "Finn?" Aideen whispered one night as she lay there, staring at the black ceiling.
"Hmm?" Came Finn's half-asleep response.
"Do I really look like a cow?" It took Finn a few moments to comprehend what she had said.
"Of course not. Even if you did look like a cow, you'd be the best-looking cow out there."
"Do you mean it, Finn?"
"Aye, cross my heart. It's the truth, Bean. Don't let his words get to you though. Otherwise, he'll have won and this will all be for nothin'." Aideen thanked Finn for his words but the thoughts were still crawling in the back of her mind.
Finally, the day arrived that Aideen and Finn planned to fight Thomas. They challenged the boys to a fight after school which they readily accepted. It seemed that the entire school showed up to the fight. "One vs. one." Thomas declared as people formed a circle around them. "I want to fight the princess here."
"Fine by me." Aideen declared. Finn hesitated but after seeing a small nod from his twin, he joined the crowd. Someone counted down to one and the two went after each other. Limbs were bruised, blood was spilled and egos were wounded that day. But Aideen had won.
It had been a nasty fight but Aideen left with a massive smile on her lips and blood on her face. The twins raced home and thankfully everyone was home except for Polly and Ada. "Well done!" Arthur boomed as Tommy picked Aideen up, spinning her around before John engulfed the girl into a massive hug.
When Polly came home, they told the woman what had happened. Polly knew about this the whole time but had pretended to place innocent. The kids needed to learn how to defend themselves at some point. While she scolded Aideen for fighting and ruining yet another dress, Polly did give the girl a little extra chocolate that night for dessert.
Chapter 6: The Bomb
Set during season one
"What do you want to do?" Finn asked his twin sister, Aideen, for probably the 100th time that day.
"I dunno, what do you want to do?" had been her response each time. The children wandered around Small Heath, searching for anything that would give them some sort of entertainment.
"We could walk by the Cut?" Finn suggested, kicking the rock in front of him with the toe of his shoe.
"We went there yesterday."
"What about Uncle Charlie's yard?"
"We were there the other day and besides, Uncle Charlie will make us do work and it's too hot." Finn had to agree with his sister. The two wandered for a bit more before they came upon Tommy's car. The twins glanced at each other before racing to the car. Finn climbed in through the front window with Aideen scurrying after him.
"Where are we going, Mr. Shelby?" Aideen asked, doing her best to put on a posh accent.
"I don't know, m'lady. Perhaps we should go to the countryside?"
"That sounds like a wonderful plan!" As Finn pretended to drive, Aideen pointed out things that she would see, using only her imagination. "And look, there it is! A blue squirrel sitting up in the tree!" She exclaimed.
"There's no such thing as blue squirrels." Finn pointed out.
"Says me."
"You ain't everyone. And besides, how do you know it isn't true?"
"Have you ever seen a blue squirrel?"
"No...but neither have you!" As the twins began to squabble, their brother, Tommy came rushing out.
"Finn, Aideen!" Tommy called and the kids grinned.
"Tommy, we're in the countryside!" Finn yelled.
"And I just saw a blue squirrel!" Aideen added in.
"But I was telling her there ain't such a thing as-"
"Both of you, shut up." Tommy snapped and the twins fell silent. "Good...how did you get into the car, eh?"
"Through the window," Finn answered, pointing. Tommy nodded, slowly approaching.
"Okay, I want you to leave the exact same way you came in, alright?"
"I'll explain afterwards." Finn glanced at his sister before shrugging and crawling out. As he reached the body of the car, Aideen moved and opened the door while Tommy screamed "no!".
The hand grenade exploded, causing Finn to fly off the hood of the car and hit the ground with a painful thud. Aideen had been blown backward by the blow, hitting the wall hard with her head before crumpling to the ground. Tommy rushed to Finn as his brother slowly pushed himself up. "Finn, Finn, you alright?" Tommy asked, kneeling next to his brother, eyes scanning over Finn, trying to assess any damage that might have been done.
"'M arm hurts," Finn mumbled. Tommy glanced down and knew instantly that the bone had been broken but it seemed besides that and a few cuts, the boy was alright. Tommy stood up, looking around for the other twin. He spotted her hidden to the side of the car, still. "Call an ambulance!" Tommy screamed as he raced over to Aideen.
The girl's head was lying in a pool of blood and as Tommy dropped to his knees, his trousers getting soaked in blood. "Bean? Bean?" Tommy asked, tapping the girl's cheek gently, giving a sigh of relief when her eyes flickered open.
"Tom…" She mumbled, eyes struggling to stay open.
"Hush now, we've got an ambulance comin'." Thankfully one did arrive shortly thereafter and the twins were loaded into the ambulance with Tommy. When they arrived, the twins were rushed off to different parts of the hospital, leaving Tommy to wait for the rest of the family. As members of the Shelby clan arrived, they were updated on what had happened and once everyone was together, Tommy spoke.
"It's the Lee's who did this," Tommy announced. "They're the ones who ransacked the office earlier and left the fucking wire cutters. Polly, I want you to go meet with the Lees. Figure out a way for this to fucking end. Arthur and John, you two are going to go with Polly. Your job is to shut up and just be there, yeah?" Tommy grabbed a cigarette from his pocket, sticking one in his mouth before lighting it. Nobody commented on how his hands shook.
"Ada, I want you to go home and get fresh clothes for the twins, alright? Go." Everyone left, glancing back to watch Tommy pace, cigarette hanging from his lips. By the time Ada returned, Finn was at Tommy's side.
"How are you doing, Finn?" Ada asked gently, sitting down next to her little brother.
"Everything hurts." The boy whimpered, leaning against Ada as she wrapped an arm around him. "And I wanna see Aideen but Tommy says no cause she's in surgery. When's she gonna be out?"
"I'm not sure, Finn," Ada answered truthfully. "Hopefully soon though. Why don't you close your eyes for a bit, yeah? It makes time go by faster." Using his sister's lap as a pillow, Finn was out in a matter of minutes. Once Finn was asleep, Tommy sat next to his sister. "How is Aideen?"
"Doctor's said she'll be okay but they are doing surgery on her head...just stitching it up, I think. She's going to have to be here for at least a week and will need to take it easy afterward for a while."
"You blame yourself, don't you?" Tommy's eyes met his sister's gaze and she could tell he had been crying. His eyes were puffy and red, the gaze that Ada was faced with was one of pure sorrow.
"How is it not my fault, Ada? That was my car that the fucking bomb was placed in. If I had connected the dots sooner, we wouldn't be in this mess."
"Tell me what happened." Tommy obeyed, telling Ada everything up until the twins were brought to the hospital. "From the sounds of it, Aideen got ahead of herself and opened the door...I'm not saying it's her fault...it's the Lees to blame, Tommy. Not you, not Finn or Aideen, it's the Lees." Ada said, voice firm, gaze daring her brother to argue.
"They were pretending to be me."
"Aye cause that's what kids do when they admire someone in their life." Tommy looked down at the sleeping boy in Ada's lap.
"I failed to protect them, Ada," Tommy said, brushing back some of Finn's hair from the boy's face. Ada gave Tommy's hand a squeeze and the two fell silent. Sometime later the doctor came out, telling them Aideen was out of surgery and that she indeed would be just fine.
"I'll stay with Finn," Ada told Tommy. "Go sit with that little bean head. I think she'll like that, even though she's out." Tommy followed the doctor into Aideen's little room before being left alone. The girl's head was wrapped in bandages but her chest was rising steadily. Pulling up a chair, Tommy sat next to her bed, taking her little hand in his.
"I'm sorry this happened, Bean," Tommy whispered. "I'm sorry I didn't protect you and Finn well enough and now, look at this. Look where you are." The door opened and Finn walked in, holding Ada's hand with his good hand.
"Is she okay, Tommy?" Finn asked as he went over to his sister's side. "She looks real pale."
"She'll be just fine, Finn." Tommy murmured as he saw a tear slide down Finn's cheek before the boy brushed it aside quickly. "Do you want to sit with her?" When Finn nodded, Tommy lifted his brother up, placing him next to Aideen.
That was how they spent the rest of the day and night. Gradually family members came in, updating Tommy on the business with the Lees. It was the next day when Aideen woke to find Finn there. "Finn?" She whispered and the boy whipped his head around to look at his sister.
"Bean!" The boy exclaimed, throwing himself on top of his sister, causing her to scream in pain. The door opened and Tommy rushed in, gun drawn. When he realized what happened, he stored the gun and went over. "Sorry." Finn was saying as he got off of Aideen quickly.
"Easy there, Finn." Tommy murmured, sitting on the opposite side of Finn on the bed. "You doin' alright there?" Tommy asked, receiving a faint shrug in response. "I'm sorry that this happened to you."
"It's okay, Tommy. I probably should've listened to you." Aideen gave Tommy one of her smiles that never failed to make the gangster smile back. Tommy didn't reply but gave the girl's hand a tight squeeze instead.
Chapter 7: Boom Boom
i'm horrid with chapter titles
"Finn, Finn," Aideen whispered, shaking her twin's shoulder until he woke.
"What is it?" He mumbled, moving to pull the blanket over his head but Aideen stopped him.
"Listen!" She hissed and Finn grew quiet. They could hear the sound of adults talking downstairs and then a loud yell that sounded in pain. "What do you think happened?" She whispered and Finn shrugged. The two slipped out of their room and went down the stairs, stopping until they reached the small kitchen.
"Let me look." Aideen moved forward but Finn stopped her, pointing to himself. She scowled but allowed Finn to stick his head around to look. If he got them caught, she would kill him. "What is it?" Aideen whispered when Finn turned back to face her, his face white.
"There's blood...lots of blood." He breathed. "All on Arthur but on the others too." Aideen pushed past her brother and glanced into the kitchen. Finn was right. John, Tommy, Polly, and Ada were all gathered around the table as Polly worked on Arthur's shoulder. Blood was all over him and some was on Aideen's other brothers as well.
"Almost done there, Arthur." Polly was saying as she dug around in his shoulder while Arthur howled in pain. "Give him more whiskey!" Polly ordered and Aideen watched John pour a glass of whiskey down Arthur's throat. Arthur's screams didn't subside though and Aideen gasped, covering her ears to try and stop the noise. Finn grabbed her arm and pulled her away until they were back in their room.
"What do you think happened?" Aideen asked as she sat on Finn's bed, sitting cross-legged in her nightgown.
"Well, I think he was shot…"
"Well, yeah." Aideen rolled her eyes. "But why? By who?" Finn was unable to say anything else and just shrugged. The two sat in silence for a bit until they heard the sound of chairs scraping and voices, a signal that they needed to go back to bed. Aideen and Finn could hear everyone going to bed but it was Polly who came into their room.
"I know you two are awake." She announced as she turned on a lamp. The twins glanced at each other before sitting up.
"What happened to Arthur, Aunt Pol?" Finn asked.
"He was shot by somebody who wasn't very nice."
"Will he'll be alright?" Aideen asked and Polly nodded.
"He will be, I promise. And you two are safe and always will be, alright? I don't want you to ever forget that." The twins glanced at each other for a moment before Aideen spoke up again.
"But Aunt Pol...why was he shot?"
"Because some people don't like us, sweetling. But don't worry about it, alright? Arthur will be fine. Go get some sleep." She pressed a kiss to each twin's head before leaving them. Aideen climbed into her brother's bed then, staring up at the ceiling.
"Hey, Bean?" Finn whispered.
"I promise that I'll always protect you so you won't get shot."
"Thanks, Finn."
"Love you too."
That had been ten years ago but the memory was still fresh in Finn's mind as he stared down at the bleeding body of his sister. He had promised her all those years ago but had failed to keep his word. Originally Aideen hadn't been allowed to be a Blinder. When Finn became one, Aideen put up such a fight, Polly was convinced she would rouse the dead. She had gone on a whole rant about how it wasn't fair. She even tried to punch Finn though Arthur's fist caught her before she could succeed.
After that, Aideen had stormed out of the house and refused to talk to anyone, including Finn. Her brothers talked among themselves, trying to decide what to do. They knew Aideen could handle herself well enough but could she handle the threat that came with being a Blinder? People knew not to mess with Aideen because of who she was but it meant she would be in more danger than before.
His brothers had come to him, asking Finn what to do since they were twins. Finn had hesitated but ultimately said they should give Aideen the position. She had wanted to be a Blinder ever since she was little and now that was almost in her grasp...She can handle herself and I'll always be with her too, Finn had said.
And that was true. The two were Blinders together, always having each other's backs.
Except for today, it seemed. Aideen had said she had forgotten something at the house and had rushed back before Finn could speak. He didn't think anything of it, just stuck his hands in his pockets and waited. Until he heard the gunshots. Three of them.
His heart dropped and his feet took off, racing around the corner to find Aideen on the ground, three bullets in her body, blood pooling around her. There was noise all around him but Finn didn't hear it. He dropped next to Aideen's body and saw the faint rise and fall of her chest. He tried to tell someone but his voice wasn't working. Where was Tommy or Arthur or anyone?
Polly's face appeared in his vision as she attempted to pull Finn away but he screamed at her, clutching his sister's hand even more firmly. People had begun to surround them and Finn watched as bandages were tied around the bullet wounds in an attempt to stop the bleeding.
It was Aideen's voice that brought Finn back to the present. "Oi, Finn...think this will leave a scar?" She asked with a weak chuckle. "It'll make for a good story, that's for sure." Finn pressed her hand to his lips, tears trickling down his chin.
"I'm so sorry 'bout this. If I had stayed with-"
"Finn shut the fuck up or else I will smash your head into your bowl of porridge, again." Finn gave a weary smile and the conversation ceased as the ambulance arrived.
Hide Comments (14)
ChaoticChocolate, Inablue, Molliver, shekiguess, Lppl, pennypitstop04, VballRocks9, Sevleshi, krystalmoonstar, Jubilee44, Fireheart147, ReadAloudToMe, Higgles123, hipolit0, Kelmeckis, cyncialmoi, samjustsayshi, lover_of_books, punky_brewster_too, MintJam, RoweenaJAugustine, Squadz, Spectergurl, and missmeowface as well as 18 guests left kudos on this work! (collapse)
Higgles123 on Chapter 1 Mon 16 Sep 2019 07:25AM EDT
Aw this was so so sweet
cheeky_blinders on Chapter 1 Tue 24 Sep 2019 06:16PM EDT
Glad you think so!
Parent Thread
Molliver on Chapter 1 Sat 23 Nov 2019 07:35PM EST
cheeky_blinders on Chapter 1 Tue 26 Nov 2019 09:12AM EST
Oh my days, Arthur calling her Deen Bean was adorable!!!
I'm glad you liked the nickname!
Aw for all her and Finn fight, it's so sweet that he was right there to help fix her hair and make her feel better
Finn has her back!
I just love these two! The bond between them is such a joy to read
Thanks!! I love them!

redpajama_set_name: RedPajamaCommonCrawl


text:
Musculium lacustre is a species of small freshwater clam, an aquatic bivalve mollusc in the family Sphaeriidae, the fingernail clams and pea clams.

Description
The 8–11 mm. shell is oval to quadrangular in shape. The umbos which are capped by the juvenile shell are slightly in front of middle directed forwards. The posterior end is broad and truncated. The shell is fragile, fairly glossy and pearl grey to white in colour. The periostracum (surface) is ornamented with fine, even, concentric striation.

Distribution
The native distribution of this species is Holarctic and occurs in islands and countries including:
 Algeria
 Belgium
 Czech Republic – in Bohemia, in Moravia, near threatened (NT)
 Slovakia
 Germany – (Arten der Vorwarnliste)
 Great Britain
 Ireland
 Nordic countries: Denmark, Finland, Sweden (but not in Faroes nor in Iceland)

References

External links
Musculium lacustre at Animalbase taxonomy,short description, biology,status (threats), images

Sphaeriidae
Molluscs described in 1774
Taxa named by Otto Friedrich Müller

redpajama_set_name: RedPajamaWikipedia


text:
{-# LANGUAGE ExistentialQuantification #-}
module Database.TxtSushi.SQLExecution (
    select,
    databaseTableToTextTable,
    textTableToDatabaseTable,
    SortConfiguration(..)) where

import Control.Applicative
import Data.Binary
import Data.Function
import Data.List
import qualified Data.Map as M

import Database.TxtSushi.SQLExpression
import Database.TxtSushi.EvaluatedExpression
import Database.TxtSushi.ExternalSort
import Database.TxtSushi.Relational

-- | We will use the sort configuration to determine whether tables should
--   be sorted external or in memory
data SortConfiguration =
    UseInMemorySort |
    UseExternalSort deriving Show

sortByCfg :: (Binary b) => SortConfiguration -> (b -> b -> Ordering) -> [b] -> [b]
sortByCfg UseInMemorySort = sortBy
sortByCfg UseExternalSort = externalSortBy

-- convert a text table to a database table by using the 1st row as column IDs
textTableToDatabaseTable :: String -> [[String]] -> BoxedTable
textTableToDatabaseTable tblName [] = noTableHeaderError tblName
textTableToDatabaseTable tblName (headerNames:tblRows) =
    renameDbTable tblName $ BoxedTable DatabaseTable {
        columnsWithContext = zip (map makeColExpr headerNames) (repeat evalCtxt),
        qualifiedColumnsWithContext = M.empty,
        evaluationContext = evalCtxt,
        tableData = tblRows,
        isInScope = idInHeader,
        nullRow = replicate (length headerNames) ""}
    where
        makeColExpr colName = ColumnExpression (ColumnIdentifier Nothing colName) colName

        idInHeader (ColumnIdentifier (Just _) _)        = False
        idInHeader (ColumnIdentifier Nothing colName)   = colName `elem` headerNames

        evalCtxt (ColumnExpression (ColumnIdentifier (Just _) _) colStr) _ =
            columnNotInScopeError colStr
        evalCtxt (ColumnExpression (ColumnIdentifier Nothing colName) _) row =
            case elemIndices colName headerNames of
                [colIndex]  -> SingleElement $ StringExpression (row !! colIndex)
                []          -> columnNotInScopeError colName
                _           -> ambiguousColumnError colName
        evalCtxt expr row = evalWithContext evalCtxt expr row

databaseTableToTextTable :: BoxedTable -> [[String]]
databaseTableToTextTable (BoxedTable dbTable) = headerRow : tailRows
    where
        headerRow = map (expressionToString . fst) colsWCtxt
        tailRows = map evalRow (tableData dbTable)

        colsWCtxt = columnsWithContext dbTable

        evalRowExpr ctxt colExpr row =
            coerceString . collapseGroups colExpr $ ctxt colExpr row
        evalRow row =
            [evalRowExpr ctxt colExpr row | (colExpr, ctxt) <- colsWCtxt]

emptyTable :: BoxedTable
emptyTable =
    BoxedTable $ DatabaseTable {
        columnsWithContext = [],
        qualifiedColumnsWithContext = M.empty,
        evaluationContext = eval,
        tableData = [shouldNeverOccurError] :: [String],
        isInScope = const False,
        nullRow = []}
    where
        eval (ColumnExpression _ colStr)    = columnNotInScopeError colStr
        eval expr                           = evalWithContext eval expr

-- | perform a SQL select with the given select statement on the
--   given table map
select :: SortConfiguration -> SelectStatement -> (M.Map String BoxedTable) -> BoxedTable
select sortCfg selectStmt tableMap =
    let
        fromTbl = case maybeFromTable selectStmt of
            Nothing -> emptyTable
            Just fromTblExpr -> evalTableExpression sortCfg fromTblExpr tableMap
        fromTblWithAliases =
            addAliases fromTbl (extractColumnAliases $ columnSelections selectStmt)
        filteredTbl = maybeFilterTable (maybeWhereFilter selectStmt) fromTblWithAliases
        groupedTbl = maybeGroupTable sortCfg selectStmt filteredTbl
    in
        selectColumns $ sortDbTable (orderByItems selectStmt) groupedTbl
    where
        selectColumns (BoxedTable unboxedOrderedTbl) =
            BoxedTable unboxedOrderedTbl {columnsWithContext =
                concatMap (selectionToExpressions unboxedOrderedTbl) (columnSelections selectStmt)}

        sortDbTable [] boxedTbl = boxedTbl
        sortDbTable orderBys (BoxedTable table) =
            BoxedTable table {tableData = sortOnOrderBys (tableData table)}
            where
                ordAscs = map orderAscending orderBys
                ordExprs = map orderExpression orderBys

                evalCtxt = evaluationContext table
                rowOrd row = [evalCtxt expr row | expr <- ordExprs]
                sortOnOrderBys = sortByCfg sortCfg (compareWithDirection ordAscs `on` rowOrd)

maybeGroupTable :: SortConfiguration -> SelectStatement -> BoxedTable -> BoxedTable
maybeGroupTable sortCfg selectStmt table =
    case maybeGroupByHaving selectStmt of
        Nothing ->
            if selectStatementContainsAggregates selectStmt
                -- for the case where we find aggregate functions but
                -- no "GROUP BY" part, that means we should apply the
                -- aggregate to the table as a single group
                then singleGroupDbTable table
                else table
        Just (groupByPart, maybeHaving) ->
            let groupedTable = groupDbTable sortCfg groupByPart table
                groupedTableWithAliases =
                    addAliases groupedTable (extractColumnAliases $ columnSelections selectStmt)
            in  maybeFilterTable maybeHaving groupedTableWithAliases

maybeFilterTable :: Maybe Expression -> BoxedTable -> BoxedTable
maybeFilterTable Nothing table = table
maybeFilterTable (Just expr) table = filterRowsBy expr table

extractColumnAliases :: [ColumnSelection] -> [(String, Expression)]
extractColumnAliases [] = []
extractColumnAliases ((ExpressionColumn expr (Just alias)) : colsTail) =
    (alias, expr) : extractColumnAliases colsTail
extractColumnAliases (_:xt) = extractColumnAliases xt

-- | Evaluate the FROM table part, and returns the FROM table. Also returns
--   a mapping of new table names from aliases etc.
evalTableExpression :: SortConfiguration -> TableExpression -> (M.Map String BoxedTable) -> BoxedTable
evalTableExpression sortCfg tblExpr tableMap =
    case tblExpr of
        TableIdentifier tblName maybeTblAlias ->
            let table = M.findWithDefault (tableNotInScopeError tblName) tblName tableMap
            in  maybeRename maybeTblAlias table

        InnerJoin leftJoinTblExpr rightJoinTblExpr onConditionExpr maybeTblAlias ->
            let
                leftJoinTbl = evalTableExpression sortCfg leftJoinTblExpr tableMap
                rightJoinTbl = evalTableExpression sortCfg rightJoinTblExpr tableMap
                joinExprs = extractJoinExprs leftJoinTbl rightJoinTbl onConditionExpr
                joinedTbl = sortAndJoinDbTables False sortCfg joinExprs leftJoinTbl rightJoinTbl
            in
                maybeRename maybeTblAlias joinedTbl

        OuterJoin leftJoinTblExpr rightJoinTblExpr onConditionExpr maybeTblAlias ->
            let
                leftJoinTbl = evalTableExpression sortCfg leftJoinTblExpr tableMap
                rightJoinTbl = evalTableExpression sortCfg rightJoinTblExpr tableMap
                joinExprs = extractJoinExprs leftJoinTbl rightJoinTbl onConditionExpr
                joinedTbl = sortAndJoinDbTables True sortCfg joinExprs leftJoinTbl rightJoinTbl
            in
                maybeRename maybeTblAlias joinedTbl

        SelectExpression selectStmt maybeTblAlias ->
            maybeRename maybeTblAlias (select sortCfg selectStmt tableMap)

        -- TODO implement me
        CrossJoin leftJoinTblExpr rightJoinTblExpr maybeTblAlias ->
            let
                leftJoinTbl = evalTableExpression sortCfg leftJoinTblExpr tableMap
                rightJoinTbl = evalTableExpression sortCfg rightJoinTblExpr tableMap
                joinedTbl = crossJoinDbTables leftJoinTbl rightJoinTbl
            in
                maybeRename maybeTblAlias joinedTbl

selectionToExpressions :: DatabaseTable a -> ColumnSelection -> [(Expression, EvaluationContext a)]
selectionToExpressions dbTable AllColumns = columnsWithContext dbTable
selectionToExpressions dbTable (AllColumnsFrom srcTblName) =
    M.findWithDefault errMsg srcTblName (qualifiedColumnsWithContext dbTable)
    where errMsg = tableNotInScopeError srcTblName

selectionToExpressions dbTable (ExpressionColumnRange bindId (ColumnRange maybeStartId maybeEndId) expr) =
    rangeColsWCtxt
    where
        colsWCtxt = columnsWithContext dbTable

        rangeColsWCtxt = map updateColWCtxt (take rangeLen . drop startIndex $ colsWCtxt)
            where
                rangeLen = 1 + endIndex - startIndex
                endIndex = maybe (length colsWCtxt - 1) indexOfId maybeEndId
                startIndex = maybe 0 indexOfId maybeStartId

        exprMatchesId matcherId (ColumnExpression matcheeId _) =
            case matcherId of
                ColumnIdentifier (Just _) _      -> matcheeId == matcherId
                ColumnIdentifier Nothing colName -> columnId matcheeId == colName
        exprMatchesId _ _ = False

        indexOfId theId = case findIndices (exprMatchesId theId) colExprs of
            [index] -> index
            []      -> columnNotInScopeError $ columnToString theId
            _       -> ambiguousColumnError $ columnToString theId
            where colExprs = map fst colsWCtxt

        updateColWCtxt (colExpr, colCtxt) =
            (updateCol colExpr, updateContext colExpr colCtxt)

        updateContext colExpr colCtxt exprToEval@(ColumnExpression _ _) =
            if exprMatchesId bindId exprToEval
                then colCtxt colExpr
                else evaluationContext dbTable exprToEval
        updateContext colExpr colCtxt exprToEval@(FunctionExpression _ _ _) =
            evalWithContext (updateContext colExpr colCtxt) exprToEval
        updateContext _ _ exprToEval = evaluationContext dbTable exprToEval

        updateCol colExpr =
            if exprMatchesId bindId expr
                then expr {stringRepresentation = stringRepresentation colExpr}
                else expr {
                        stringRepresentation =
                            columnToString bindId ++ " = " ++
                            stringRepresentation colExpr ++ " in " ++
                            stringRepresentation expr}

selectionToExpressions dbTable (ExpressionColumn expr Nothing) =
    [(expr, evaluationContext dbTable)]
selectionToExpressions dbTable (ExpressionColumn _ (Just exprAlias)) =
    [(ColumnExpression (ColumnIdentifier Nothing exprAlias) exprAlias, evaluationContext dbTable)]

extractJoinExprs :: BoxedTable -> BoxedTable -> Expression -> [(Expression, Expression)]
extractJoinExprs bTbl1@(BoxedTable tbl1) bTbl2@(BoxedTable tbl2) (FunctionExpression sqlFunc [arg1, arg2] _) =
    case sqlFunc of
        SQLFunction "=" _ _ _ _ _   -> extractJoinExprPair
        SQLFunction "AND" _ _ _ _ _ ->
            extractJoinExprs bTbl1 bTbl2 arg1 ++ extractJoinExprs bTbl1 bTbl2 arg2

        -- Only expecting "AND" or "="
        _ -> onPartFormattingError
    where
        fromScope tbl expr = anyInScope tbl expr && allInScope tbl expr

        extractJoinExprPair =
            if fromScope tbl1 arg1 && fromScope tbl2 arg2
                then [(arg1, arg2)]
                else
                    if fromScope tbl2 arg1 && fromScope tbl1 arg2
                        then [(arg2, arg1)]
                        else joinOnRequiresBothTablesError

-- Only expecting "AND" or "="
extractJoinExprs _ _ _ = onPartFormattingError

data NestedDataGroups e =
    SingleElement e |
    GroupedData [NestedDataGroups e] deriving (Ord, Eq, Show)

instance Functor NestedDataGroups where
    fmap f (SingleElement e) = SingleElement (f e)
    fmap f (GroupedData grps) = GroupedData $ map (fmap f) grps

instance Applicative NestedDataGroups where
    pure = SingleElement

    (SingleElement f)  <*> (SingleElement x)  = SingleElement (f x)
    (SingleElement f)  <*> gd@(GroupedData _) = fmap f gd
    gd@(GroupedData _) <*> (SingleElement x)  = fmap ($ x) gd
    (GroupedData fs)   <*> (GroupedData xs)   = GroupedData $ zipWith (<*>) fs xs

flattenGroups :: NestedDataGroups e -> [e]
flattenGroups (SingleElement myElem) = [myElem]
flattenGroups (GroupedData grps) = concatMap flattenGroups grps

collapseGroups ::
    Expression
    -> NestedDataGroups EvaluatedExpression
    -> EvaluatedExpression
collapseGroups expr grps = case group (flattenGroups grps) of
    [singleGroup] -> head singleGroup

    -- it's an error if there is more than one grouping
    manyGroups ->
        let
            (elemsToShow, remaining) = splitAt 5 (map head manyGroups)
            commaSepElems = intercalate ", " (map coerceString elemsToShow)
            exprStr = expressionToString expr
            errorMsg =
                "Error: error evaluating \"" ++ exprStr ++
                "\". Cannot evaluate a grouped expression unless all " ++
                "of the grouped values match. Found multiple different " ++
                "values including: " ++ commaSepElems
        in case remaining of
            []  -> error errorMsg
            _   -> error $ errorMsg ++ " etc..."

-- | takes a list of data groups which can have different shapes and returns
--   a single group of lists which obviously must have the same shape
normalizeGroups :: [NestedDataGroups a] -> NestedDataGroups [a]
normalizeGroups grps =
    foldl
        -- this function will reshape and concatinate as it's folded
        (liftA2 (++))

        -- an empty single element is the starting point for the fold
        (SingleElement [])

        -- fmap is from NestedDataGroups and return from the list monad
        (map (fmap return) grps)

type EvaluationContext a = Expression -> a -> NestedDataGroups EvaluatedExpression

-- | a data type for representing a database table
data DatabaseTable a = DatabaseTable {

    -- | column expressions with their evaluation contexts
    columnsWithContext :: [(Expression, EvaluationContext a)],

    -- | columns with context qualified by table name (the map key)
    qualifiedColumnsWithContext :: M.Map String [(Expression, EvaluationContext a)],

    -- | the evaluation context for this table
    evaluationContext :: EvaluationContext a,

    -- | the data in this table
    tableData :: [a],

    -- | is the given identifier in scope for this table
    isInScope :: ColumnIdentifier -> Bool,

    -- | we can only do an outer join if the concept of a NULL row exists
    nullRow :: a}

allIdentifiers :: Expression -> [ColumnIdentifier]
allIdentifiers (FunctionExpression _ args _) = concatMap allIdentifiers args
allIdentifiers (ColumnExpression col _) = [col]
allIdentifiers _ = []

allInScope :: DatabaseTable a -> Expression -> Bool
allInScope tbl expr = all (isInScope tbl) (allIdentifiers expr)

anyInScope :: DatabaseTable a -> Expression -> Bool
anyInScope tbl expr = any (isInScope tbl) (allIdentifiers expr)

data BoxedTable = forall a. (Binary a) =>
    BoxedTable (DatabaseTable a)

-- | filters the database's table rows on the given expression
filterRowsBy :: Expression -> BoxedTable -> BoxedTable
filterRowsBy filterExpr (BoxedTable table) =
    BoxedTable table {tableData = filter myBoolEvalExpr (tableData table)}
    where
        evalFilterExpr = (evaluationContext table) filterExpr
        myBoolEvalExpr = coerceBool . collapseGroups filterExpr . evalFilterExpr

addAliases :: BoxedTable -> [(String, Expression)] -> BoxedTable
addAliases boxedTbl [] = boxedTbl
addAliases (BoxedTable tbl) aliases =
    BoxedTable tbl {
        evaluationContext = aliasedContext,
        isInScope = aliasedScope}
    where
        aliasMap = M.fromList aliases

        aliasedScope colId@(ColumnIdentifier (Just _) _) = isInScope tbl colId
        aliasedScope colId@(ColumnIdentifier Nothing colName) =
            M.member colName aliasMap || isInScope tbl colId

        aliasedContext colExpr@(ColumnExpression (ColumnIdentifier (Just _) _) _) =
            evaluationContext tbl colExpr
        aliasedContext colExpr@(ColumnExpression (ColumnIdentifier Nothing colName) _) =
            case M.lookup colName aliasMap of
                Nothing     -> evaluationContext tbl colExpr
                Just expr   -> aliasedContext expr
        aliasedContext expr = evalWithContext aliasedContext expr

maybeRename :: (Maybe String) -> BoxedTable -> BoxedTable
maybeRename Nothing boxedTable = boxedTable
maybeRename (Just newName) boxedTable = renameDbTable newName boxedTable

renameDbTable :: String -> BoxedTable -> BoxedTable
renameDbTable name (BoxedTable tbl) =
    BoxedTable tbl {
        qualifiedColumnsWithContext = M.insert name (columnsWithContext tbl) (qualifiedColumnsWithContext tbl),
        evaluationContext = renameContext (evaluationContext tbl),
        isInScope = isInRenamedScope}
    where
        isInRenamedScope colId@(ColumnIdentifier Nothing _) = isInScope tbl colId
        isInRenamedScope (ColumnIdentifier (Just tblName) colName)
            | tblName == name   = isInScope tbl (ColumnIdentifier Nothing colName)
            | otherwise         = False

        renameContext ctxt colExpr@(ColumnExpression (ColumnIdentifier Nothing _) _) = ctxt colExpr
        renameContext ctxt (ColumnExpression (ColumnIdentifier (Just tblName) colName) colStr)
            | tblName == name   = ctxt (ColumnExpression (ColumnIdentifier Nothing colName) colStr)
            | otherwise         = columnNotInScopeError colStr
        renameContext ctxt expr = evalWithContext (renameContext ctxt) expr

evalWithContext :: EvaluationContext a -> Expression -> a -> NestedDataGroups EvaluatedExpression
evalWithContext ctxt (FunctionExpression sqlFun args _) row =
    case (isAggregate sqlFun, args) of
        -- if its an aggregate function with a single arg use aggregate evaluation
        (True, [_]) -> aggregateEval

        -- otherwise just evaluate it as a single function
        _           -> standardEval
    where
        normEvaldArgs = normalizeGroups [ctxt arg row | arg <- args]
        evalGivenFun = applyFunction sqlFun
        aggregateEval =
            SingleElement $ applyFunction sqlFun (concat (flattenGroups normEvaldArgs))
        standardEval = fmap evalGivenFun normEvaldArgs
evalWithContext _ (StringConstantExpression s _) _  = SingleElement (StringExpression s)
evalWithContext _ (RealConstantExpression r _)   _  = SingleElement (RealExpression r)
evalWithContext _ (IntConstantExpression i _)    _  = SingleElement (IntExpression i)
evalWithContext _ (BoolConstantExpression b _)   _  = SingleElement (BoolExpression b)
evalWithContext _ (ColumnExpression _ _)         _  = shouldNeverOccurError

toGroupContext :: EvaluationContext a -> EvaluationContext [a]
toGroupContext ctxt = grpCtxt
    where
        grpCtxt funExpr@(FunctionExpression _ _ _) rowGrp = evalWithContext grpCtxt funExpr rowGrp
        grpCtxt expr rowGrp = GroupedData $ map (ctxt expr) rowGrp

groupDbTable ::
    SortConfiguration
    -> [Expression]
    -> BoxedTable
    -> BoxedTable
groupDbTable sortCfg grpExprs (BoxedTable tbl) =
    BoxedTable tbl {
        columnsWithContext = mapSnd toGroupContext (columnsWithContext tbl),
        qualifiedColumnsWithContext = M.map (mapSnd toGroupContext) (qualifiedColumnsWithContext tbl),
        evaluationContext = toGroupContext $ evaluationContext tbl,
        tableData = groupedData,
        nullRow = [nullRow tbl]}
    where
        eval = evaluationContext tbl
        rowOrd row = [eval expr row | expr <- grpExprs]
        sortedData = sortByCfg sortCfg (compare `on` rowOrd) (tableData tbl)
        groupedData = groupBy ((==) `on` rowOrd) sortedData

singleGroupDbTable ::
    BoxedTable
    -> BoxedTable
singleGroupDbTable (BoxedTable tbl) =
    BoxedTable tbl {
        columnsWithContext = mapSnd toGroupContext (columnsWithContext tbl),
        qualifiedColumnsWithContext = M.map (mapSnd toGroupContext) (qualifiedColumnsWithContext tbl),
        evaluationContext = toGroupContext $ evaluationContext tbl,
        tableData = [tableData tbl],
        nullRow = [nullRow tbl]}

compareWithDirection :: (Ord a) => [Bool] -> [a] -> [a] -> Ordering
compareWithDirection (asc:ascTail) (x:xt) (y:yt) = case x `compare` y of
    LT -> if asc then LT else GT
    GT -> if asc then GT else LT
    EQ -> compareWithDirection ascTail xt yt
compareWithDirection [] [] [] = EQ
compareWithDirection _ _ _ = error "Internal Error: List sizes should match"

sortAndJoinDbTables ::
    Bool
    -> SortConfiguration
    -> [(Expression, Expression)]
    -> BoxedTable
    -> BoxedTable
    -> BoxedTable
sortAndJoinDbTables outerJoin sortCfg joinExprs (BoxedTable fstTable) (BoxedTable sndTable) =
    BoxedTable $ zipDbTables joinedData fstTable sndTable
    where
        fstEval = evaluationContext fstTable
        fstRowOrd row = [fstEval expr row | expr <- map fst joinExprs]

        sndEval = evaluationContext sndTable
        sndRowOrd row = [sndEval expr row | expr <- map snd joinExprs]

        sortedFstData = sortByCfg sortCfg (compare `on` fstRowOrd) (tableData fstTable)
        sortedSndData = sortByCfg sortCfg (compare `on` sndRowOrd) (tableData sndTable)

        fstNull = if outerJoin then Just (nullRow fstTable) else Nothing
        sndNull = if outerJoin then Just (nullRow sndTable) else Nothing

        joinedData = joinPresortedTables fstRowOrd sortedFstData fstNull sndRowOrd sortedSndData sndNull

crossJoinDbTables ::
    BoxedTable
    -> BoxedTable
    -> BoxedTable
crossJoinDbTables (BoxedTable fstTable) (BoxedTable sndTable) =
    BoxedTable $ zipDbTables joinedData fstTable sndTable
    where
        joinedData = [(x, y) | x <- tableData fstTable, y <- tableData sndTable]

zipDbTables :: [(a, b)] -> DatabaseTable a -> DatabaseTable b -> DatabaseTable (a, b)
zipDbTables zippedData fstTable sndTable = DatabaseTable {
    columnsWithContext = fstCols ++ sndCols,
    qualifiedColumnsWithContext = M.unionWithKey ambiguousTableError fstQualCols sndQualCols,
    evaluationContext = evalCtxt,
    tableData = zippedData,
    isInScope = isInFstOrSndScope,
    nullRow = (nullRow fstTable, nullRow sndTable)}

    where
        isInFstScope = isInScope fstTable
        isInSndScope = isInScope sndTable
        isInFstOrSndScope iden = isInFstScope iden || isInSndScope iden

        toFstCtxt ctxt colId row = ctxt colId (fst row)
        toSndCtxt ctxt colId row = ctxt colId (snd row)

        fstCols = mapSnd toFstCtxt (columnsWithContext fstTable)
        sndCols = mapSnd toSndCtxt (columnsWithContext sndTable)

        fstQualCols = M.map (mapSnd toFstCtxt) (qualifiedColumnsWithContext fstTable)
        sndQualCols = M.map (mapSnd toSndCtxt) (qualifiedColumnsWithContext sndTable)

        evalCtxt colExpr@(ColumnExpression colId colStr) row =
            case (isInFstScope colId, isInSndScope colId) of
                (True, False)   -> evaluationContext fstTable colExpr (fst row)
                (False, True)   -> evaluationContext sndTable colExpr (snd row)
                (True, True)    -> ambiguousColumnError colStr
                (False, False)  -> columnNotInScopeError colStr
        evalCtxt expr row = evalWithContext evalCtxt expr row

mapSnd :: (a -> b) -> [(c, a)] -> [(c, b)]
mapSnd f xs = [(x, f y) | (x, y) <- xs]

ambiguousTableError, noTableHeaderError, tableNotInScopeError, columnNotInScopeError, ambiguousColumnError :: String -> a
ambiguousTableError tblName = error $ "Error: The table name \"" ++ tblName ++ "\" is ambiguous"
noTableHeaderError tblName = error $ "Error: invalid table \"" ++ tblName ++ "\". There is no header row"
tableNotInScopeError tblName = error $ "Error: failed to find a table named \"" ++ tblName ++ "\" in the current scope"
columnNotInScopeError colName = error $ "Error: failed to find a column named \"" ++ colName ++ "\" in the current scope"
ambiguousColumnError colName = error $ "Error: ambiguous column name (found multiple matches in the current scope): " ++ colName

onPartFormattingError, joinOnRequiresBothTablesError, shouldNeverOccurError :: a
onPartFormattingError = error $
    "Error: The \"ON\" part of a join must only contain " ++
    "expression equalities joined together by \"AND\" like: " ++
    "\"tbl1.id1 = table2.id1 AND tbl1.firstname = tbl2.name\""

joinOnRequiresBothTablesError = error $
    "Error: the expressions used in the \"ON\" part of a table join must use " ++
    "identifiers from each of the two join tables like: " ++
    "\"tbl1.id1 = table2.id1 AND tbl1.firstname = tbl2.name\""

shouldNeverOccurError =
    error $
        "Internal Error: This should never occur. " ++
        "A table failed to evaluate its own column ID"

redpajama_set_name: RedPajamaGithub


The Daily Enlightenment » Should 'Buddha Candles' Be Designed Or Used?
Home » Features » Should 'Buddha Candles' Be Designed Or Used?
Should 'Buddha Candles' Be Designed Or Used?
and cannot to be calculated.
Below are some interesting rephrased comments… Friend 1: What karma will one create by using these candles? Reply: It would depend on the intention, e.g. whether there is gleefulness or respectfulness. Often, the burning of images expresses condemnation or hatred of that represented. Friend 2: Does using such candles count as 'causing a Buddha to bleed' (which is sacrilegious and can lead to rebirth in the deepest hell)? Reply: If the designer and user have no intention to harm, it would not count as so. However, the design is clearly unskilful. Even if a user is not disrespectful, others might see it as so. Unfortunately, there are bizarre products made for profiteering by non-Buddhists lacking basic understanding of Buddhism.
Friend 3: It's only wax. Surely you decide what it is in your head. Isn't what your thoughts are more important? Reply: Even non-Buddhists would not create any image of anyone's loved one for burning. It's truly just an issue of 'basic respect' missing. Once wax takes form, its implied conventional meaning cannot be denied. If a candle-shaped image of a departed loved one is made for burning, will most be upset, or just laugh it off as it is only wax? As most if not all of us are unenlightened beings attached to some forms which represent subjects of refuge, and for use as educational aids, we should respect forms shaped to represent the cherished. To pretend we are beyond all forms is bad faith to ourselves, others and the Buddha.
Friend 4: Respect comes from understanding and following the Buddha's teachings. A figurine is just an object like a cabbage or any other material object. You could have the same thoughts about any object. I thought 'anything goes' for Buddhists. Your choice, your karma. Reply: If this happens in some other religions, it might lead to riots and even war, but this doesn't mean 'anything goes' for Buddhists. Basic respect is needed as Buddha images are focal points of reverence for many. Seeing a cabbage to represent the Buddha personally is harmless though no one really does that. Just as there are great merits for creating Buddha images respectfully, there are great demerits for creating or destroying them disrespectfully.
Friend 5: If 'respect comes from understanding', does this mean there will be no respect due to no understanding, which makes it okay to burn Buddha images? Basic respect should be there exactly due to knowing one lacks understanding. It can be demonstrated, e.g. by not creating images that millions consider sacred for desecration. If a figurine is just an object, is it okay to go temples to burn their Buddha images? Which Buddhist does this today? If 'anything goes', the above should be okay? If so, why are no renown Buddhists doing it? If the Buddha thought 'anything goes', he would not give a single teaching. But because he cares, he teaches about moral precepts, and such, urging all to uphold them best they can.
Friend 6: One might burn something that potentially causes offence to others, but it is others' choice to be offended by being attached to the image, while the burner might not be burning to cause offence. So who's wrong? The offended or the potential offender unintentionally offending? Reply: Mere sight of the distasteful candle's design can offend, what more sight of its actual burning? Yes, we choose to be offended or not, but at the same time, the designer can choose not to be offensive with common sense, by thinking along this line – 'If I'm going to design a candle, I probably should not design it in the image of anyone that millions revere, especially since it's going to be burnt.' Thus, both the insensitive designer and the attached offended are at fault. Those against it should have good intention to prevent others from creating negative karma too.
Friend 7: Once, two Americans were visiting a Zen temple. They had heard tales of ancient masters who tore up sutras and burnt Buddha images to express non-attachment to formal words and forms. Thus, they were shocked and disturbed to be led by the Japanese Abbot to a hall where they were invited to prostrate to a statue of the temple's founder. Seeing the Abbot himself bow, one asked, 'if the old masters spat on statues or burnt them, why do you bow before them?' The Abbot replied, 'If you want to spit, you spit. I prefer to bow.' Spitting and burning masters are rare after all, and rather enlightened, out to educate with special qualified actions. To mimic them is hypocritical pretension, while creating negative karma!
able to enable these people to swiftly have the cause to accomplish Buddhahood.
Although the above does not clearly say that is is not right to wear Buddha pendants, the gise of it is that there should be great reverence to images of any kind that represent the Buddha (or any other enlightened being). If not, the use of Buddha images could end up as abuse with backfiring instead of blessing effects. There is also no clear teaching by the Buddha encouraging the wearing of Buddha images.


Big Brother. . HD Wallpaper and background images in the hetalia - axis powers club tagged: hetalia aph prussia germany.
This hetalia - axis powers wallpaper contains boina verde, forças especiais, soldado de elite, soldado de elite de boina verde, forças especiais, selo da marinha, selo, marinha, and atirador. There might also be fadigas, fadiga, farda, regimentais, and uniforme.


Sometimes you need to make small modifications to a client's assigned workout or program without it affecting the template in your library. Here we will demonstrate by modifying an assigned workout. The steps for modifying an assigned program are the same.
When you log into your account, you will be directed to your Dashboard page. Click the Clients button, which can be found on the left side of the page.
After clicking the name of the client, you will be redirected to the Client Overview page, where you can see all the workouts assigned to your client. Click the Workouts button beside Programs.
You will then be redirected to the Personal Workout Overview page that contains all the information about this workout. On the top-right corner of the page, below your avatar, click the Edit button.
A dialog box will pop up, reminding you that you are editing ONLY the client's copy of this program, NOT the copy in YOUR library. To proceed, hit Update.
You will be able to add and edit exercises from the workout. After making all the necessary changes you need to make, click Save.
You will be redirected back to the Personal Workout Overview page where you can see the changes you made.
When your client logs in, they will have the updated workout in their library.


For previous research activities see short CV.
Presently focussing on properties of wide bandgap semiconductors, like III-nitrides, including low dimensonal structures based on these. Mainly optical techniques.


"...The necessity for sweeping immigration reform is illustrated in Lynn E. Letterman's A Two-sided Border Story (2008). Here illegal and legal immigration are shown as branches growing on separate sides of the same tree. The family in Poli Marichal's Vigilia (2008) could well represent the risks of illegal immigration, or the left side of the tree, while Carol Nye's portrait of a successful middleclass woman in From the series "Chinese American Women of Los Angeles": Lilly L. Chen (1996) personifies the positive aspects of immigration."
"Where Lippenberger addresses men's relationship to society in general, on the other side of the Artworks in the "short hall," Lynn Elliott Letterman's Tree of Art examines women's place in the world of postmodern art. Letterman started on the 6-foot-by-7-foot piece in the mid-1990s after working as a docent in the Walker Art Center in Minneapolis and studying contemporary art in depth. Through her studies she came to notice that women didn't gain serious recognition as artists until the later part of the 20th century. The Tree of Art, which lists the names of major artists on leaves hanging off branches labeled after artistic movements such as "post-animation" and "pluralism," shows the increased recognition of female artists through the years. A similar piece, as yet uncompleted, explores various cultural representations of Eve, with apples and branches of a tree featuring Biblical and literary quotes about her role in history and in shaping humankind. Letterman, who has had a studio at the Artworks for six years, explains that despite the variety of artists currently working there, the sense of community is significant. "We're all very together here," she says. "And we all respect each other's work. If we're working on a piece of artwork and we're stuck, we can't seem to get through to the middle of it, we'll ask another artist, 'What do you think? Does this look right? Does it need something?' All of us are so creative that we can give advice on what might look good or how to handle something."


text:
Hong Kong tourist's Uber driver turns out to be Cecilia Cheung's mother
Candice Cai
AsiaOne
PHOTO: Weibo
A tourist in Hong Kong hailed an Uber recently, only to discover a familiar face in the driver's seat.
The driver was none other than Hong Kong actress Cecilia Cheung's mother, Davies Shally, 57.
According to reports, the passenger expressed surprise that Shally was easygoing, without any airs.
Photos from the encounter subsequently went viral on Chinese microblogging site Weibo.
In screenshots taken from the app, Cecilia's mum appears to drive a Toyota Vellfire MPV, having accumulated more than 2,000 rides under her belt in the past 1.5 years.
Shally's level of service appears to be stellar as well, currently holding a 4.89 passenger rating out of 5 on the app.
News of Cecilia's mother taking on a job as an Uber driver first surfaced in 2017, with reports alleging that she was "forced" into it so as to ease her daughter's financial burden.
But the recent first-hand account got commenters on Weibo all excited, with many praising Shally's independence.
"Well done, she can still discover her self-worth at her age" and "I admire those (at her age) who don't have to depend on anyone else" were some of the comments.
"Her daughter may be a big star but the fact that she still works to earn her keep is a positive thing," wrote another.
candicecai@asiaone.com
#Cecilia Cheung #Uber #celebrities #In Case You Missed It


text:
A bit more on emoluments: Fun with old dictionaries
CREW, dictionary definition, emoluments, foreign emoluments, Mikhail
Some readers may be aware that an organization called Citizens for Responsibility and Ethics in Washington (CREW) has filed a lawsuit claiming that Mr. Trump has violated the foreign emoluments clause of the constitution by accepting, through his various businesses, payments from foreign governments. The Justice Department has sought to have the CREW suit dismissed.
One of DOJ's arguments is that, at the time the Constitution was written and ratified, the word "emoluments" would have been understood as a term of art meaning "profit arising from office or employ." The implication of this definition is that the foreign emoluments prohibited by the Constitution would not include payments made to a president or other office holder as part of private business transactions formally separate from the conduct of the recipient's government office.
DOJ's endorsement of this narrow definition of emolument rests heavily on two particular dictionaries in circulation during the founding period – A Complete and Universal English Dictionary on a New Plan by James Barclay and The Difference between Words, Esteemed Synonymous, in the English Language by John Trusler.
In a new article, The Definition of 'Emolument' in English Language and Legal Dictionaries, 1523-1806, Professor John Mikhail of Georgetown Law School, pretty thoroughly shreds DOJ's dictionary-based argument. He shows that almost every dictionary extant in the founding era contained far broader definitions of "emolument," definitions that easily embrace payments to an office-holder's private businesses. Not only does it appear that DOJ cherry-picked its dictionaries, but Professor Mikhail makes a convincing case that the two dictionaries in question were probably not either possessed or relied upon by the founders. (The best part of the Mikhail article for true legal history nerds is that it includes pdf images of the relevant pages from all the old dictionaries.}
Professor Mikhail's work by no means proves that the Foreign Emoluments Clause does cover Mr. Trump's business transactions, but it does cut away one prop of the DOJ argument to the contrary.


White OG is an indica-dominant strain that was first bred by Karma Genetics by crossing The White with SFV OG Kush. This indica inherits the telltale kush aroma of earthy pine and lemon as well as The White's heavy trichome coverage. This 2010 and 2014 Cannabis Cup champ is popularly cultivated indoors with a 65 to 75 day flowering time.


text:
Investor Life
Mexico's López Obrador declares victory in recall referendum
Mexico's president claimed victory on Monday in a polarising recall referendum with low turnout that was boycotted by much of the opposition.
President Andrés Manuel López Obrador won almost 92 per cent of the vote, according to electoral body INE, with 99 per cent of votes counted. Voter turnout for the ballot, which asked whether López Obrador should see out the remainder of his six-year term, reached just 18 per cent.
That is well short of the 40 per cent needed for the result to be binding, but López Obrador said Monday he was happy with the result and would seek to lower the minimum turnout in the future.
"It was a complete success," he said in his morning news conference. "For a long time, centuries, it was thought that politics was for politicians and that the people didn't exist. Now we're in a new era."
The nationalist leader, who enjoys approval ratings of about 60 per cent and won a landslide election in 2018, introduced the recall vote against himself.
In the first half of his term, López Obrador implemented sharp budget cuts and expanded social programmes for the elderly and young jobseekers. He also focused public investment on a handful of emblematic projects, including an oil refinery, a 1,400km tourist train ride and a new airport for the capital.
Mexico's economic recovery has been sluggish, with investment held back by policy uncertainty and a near-record homicide rate. López Obrador has also clashed with the US over energy reform designed to favour the state electricity company, with a vote set for this week.
But critics and the opposition said the ballot was an $80mn farce designed to boost the president's popularity. They fear that López Obrador wants to remain in power beyond Mexico's one-term limit and that he is trying to undermine INE.
López Obrador — who has denied that he is seeking re-election — has called INE, a cornerstone of Mexico's relatively young democracy, antidemocratic and accused it of acting illegally. He recently said he would push a reform to have INE's board members directly elected.
On Monday he said Sunday's result came despite "cheating and boycotts" from INE.
Many voters, however, remain loyal to the president, whom they see as a rare, incorruptible politician who spends time in small towns meeting regular people.
Mercedes Santamaría, from the president's home state of Tabasco, said three years was not long enough to end corruption and impunity and that conditions were improving under López Obrador.
"I'm very happy that he redirected money that was previously for bureaucrats to line their pockets . . . while the people were dying of hunger," the 65-year-old said outside a polling station.
This article was originally published by Www.ft.com. Read the original article here.
Austin-Adjacent Home Reflects A Love Of Light, Geometry And Horizon-Busting Views
Biden administration rolls out a blueprint for a 'renters bill of rights' – Here's what it includes
EY Germany to axe hundreds of jobs in post-Wirecard cost-cutting push
South Carolina county bonds to fund private water utility buyout
Stocks making the biggest moves premarket: Intel, Chevron, American Express, Silvergate and more
Stocks making the biggest moves premarket: Boeing, News Corp, AT&T, Microsoft and more
Stocks making the biggest moves premarket: Wayfair, Salesforce, Paypal and more
Stocks making the biggest moves midday: Netflix, Coinbase, Alphabet, SVB Financial & more
Stocks making the biggest moves before the bell: Roblox, Discover, Chegg and more
"We're on the Right Highway" How Metaspins Crypto Casino Is Growing Rapidly Weeks After Its Launch
Bitcoin can still crack $50K if gold correlation continues — Chart
Biggest Movers: DOGE Drops to 5-Day Low on Wednesday
Quicknode Raises $60 Million in Series B to 'Fuel Blockchain Adoption' and Expand Globally
Bitcoin miner Argo regains compliance with Nasdaq minimum bid price rule
Copyright © 2023 by Investor Life. All rights reserved. All articles, images, product names, logos, and brands are property of their respective owners. All company, product and service names used in this website are for identification purposes only. Use of these names, logos, and brands does not imply endorsement unless specified.


text:
2023 Ram 2500 HD Redesign Will Bring More Equipment
February 1, 2022 January 31, 2022 by Teddy
2023 Ram 2500 HD – The 2023 Ram 2500 Heavy-Duty truck and the 3500 Heavy-Duty truck are both showing off their massive upgrades. A few trailering and towing upgrades are included in the updated Ram 2500.
2023 Ram 2500 HD
2023 Ram 2500 HD Review
New high-tech towing mirrors are planned for the 2023 Ram 2500 Heavy-Duty and 3500 Heavy-Duty models. Two prototypes of the new mirrors were already spotted. These mirrors pack a lot of features in a small package. Manual- and power-extending options will be available. These include spotter and power-adjustable heated glasses, integrated turn signals, blind-spot indicators as well as an LED puddle, and blind lights. They also have 360-degree cameras and new tow cameras.
Towing has been a competitive field for big trucks such as the Ford F-250 or the Chevy Silverado 2500. This is due to their increased visibility. This is essential for improving the towing experience and avoiding accidents. Chevy offers up to 8 cameras with 15 views. The trial hitch offers four angles. Ford offers a 360-degree camera as well as a bed camera. It's now that the Ram 2500 is up to speed.
Yes, mid-cycle upgrades are being made to the 2023 Ram 2500 or 3500 trucks. You might see a slightly new look, such as a new bumper, bumper, LED headlights, and tail lights. New colors in limited editions are also possible. If you're not willing to wait, the 2022 Ram 2500/3500 models got some notable upgrades. It also received Uconnect 5 infotainment technology. The system is faster and offers more content, as we have personally tested it.
2023 Ram 2500 HD Price
Silver Edition trims are available for Lone Star and Big Horn. The Silver Edition features a lot of chrome exterior accents and black interior accents. Both trim levels received new grille designs. The Power Wagon will come with a unique grille featuring black headlight surrounds, and premium interior materials. The Power Wagon also includes an electronic transfer box, a 12.0-inch touchscreen, and a Harmon Kardon stereo with 750 watts.
2023 Ram 2500 HD Interior
2023 Ram 2500 HD Price & Release Date
The pricing for the 2023 Ram 2500 truck and the 3500 truck has not yet been announced. The price of the 2022 Ram 2500 starts at around $37,750. The 3500 raises the price to $39.325. Prices could rise by a few hundred dollars by 2023. Standard 6.4-liter V8 engines produce 410 horsepower and 429 lbft of torque. The 6.7-liter six-cylinder diesel engine is available for 370 horsepower and 850 lbft of torque. This engine is more powerful and can tow heavier loads. The Ram 2500 can haul up to 20,000 lbs and the Ram 3500 up to 37.090 lbs when properly equipped. The Ram 3500 can tow up to 7,680 pounds, while the Ram 3500 can tow up to 3,240lbs. The 2023 models won't feature payload or towing increases at this time. We will keep you informed if this changes. There is plenty of technology in the 2022 and 2023 model year models to make it easier.
Categories Ram Tags 2023 ram 2500 allison, 2023 ram 2500 allison transmission, 2023 ram 2500 laramie, 2023 ram 2500 new body style, 2023 ram 2500 power wagon, 2023 ram 2500 rebel, 2023 ram 2500 redesign, 2023 ram 2500 specs, 2023 ram 2500 spy photos, 2023 ram 2500 transmission, 2023 ram 2500 updates, 2023 ram 2500hd


text:
Reports: Celtics' Irving changes agents, fueling Durant rumors
FILE PHOTO: May 6, 2019; Boston, MA, USA; Boston Celtics guard Kyrie Irving (11) reacts during the second half in game four of the second round of the 2019 NBA Playoffs against the Milwaukee Bucks at TD Garden. Mandatory Credit: Greg M. Cooper-USA TODAY Sports
Boston Celtics guard Kyrie Irving parted ways with his longtime agent Jeff Wechsler is expected to sign with Jay-Z's Roc Nation, according to multiple reports on Wednesday.
Irving is set to opt out of the final year of his five-year contract to become an unrestricted free agent as of June 30, multiple media outlets reported Wednesday.
Roc Nation also represents Golden State Warriors star Kevin Durant, fueling rumors that Irving and Durant hope to play with the same team.
Irving, the first overall pick in the 2011 draft by the Cavaliers, was scheduled to make $21.3 million for the final year of the $94.3 million pact he originally signed with Cleveland. Irving, who won the 2016 championship with the Cavs, is a six-time All-Star who joined the Celtics for the 2017-2018 season.
Durant, whose Golden State Warriors trails the Toronto Raptors 3-2 in the NBA Finals, ruptured his right Achilles tendon in the second quarter of a Game 5 victory on Monday night in Toronto after returning for the first time since injuring his right calf in early May.
Durant, 30, tweeted out a photo of himself recovering in a hospital bed after surgery Wednesday in New York. He will be sidelined for up to 12 months.
Durant has to choose between taking his $31.5 million player option for the 2019-20 season and recovering with Golden State or going ahead and testing free agency this offseason. He also could wait and try free agency next summer.
The Knicks and Nets have both created enough space to pursue Irving, according to reports.


text:
'Real Time With Bill Maher': Meet The New Mooch, Same As The Old Mooch
Associate Editor/Broadway Critic
@GregEvans5
More Stories By Greg
Gregg Smith Dies: 'Hair' Actor, Dance Collaborator On 'Dirty Dancing', 'Newsies' Was 73
Dwayne Johnson Pays Tribute To Wrestling Champ Dad Rocky: "Rest Your Trailblazing Soul, Soulman"
Meryl Streep To Narrate Animated Earth Day Short Film 'Here We Are' For AppleTV+
HBO/Twitter
Anthony Scaramucci, the former White House communication director whose hot head and foul mouth got him ousted from the Trump Administration – ponder that for a moment – presented a whole new persona on HBO's Real Time With Bill Maher tonight, calmer, nicer and imperturbable.
Until he wasn't.
An increasingly personal face-off with anti-Trump neo-con David Frum brought out the old, if slightly modified, Mooch, a return Maher likened to "quiet killer" Michael Corleone.
By the heated episode's YouTube-0nly Overtime segment (watch it below), Scaramucci, in cool, even tones that didn't match his eyes, was snarling at Frum, calling him mean and angry and suggesting a suppository.
So how did they get there?
Scaramucci, the episode's mid-show guest, joined the already-in-progress panel of Frum and former DNC chairwoman Donna Brazile, initially presenting a relaxed demeanor, waving off audience boos, even joking about his brief White House tenure ("11 days, or 954,000 seconds").
There was some even-keeled, partisan-line chatting about the Nunes Memo, tax cuts, how his working class background was "aspirational" (he went on to attend Harvard – with embattled Deputy Attorney General Rod Rosenstein, no less) not to be confused with today's "desperational" working class. He complimented Maher's orangutan Trump jokes, and at one point even agreed with the MeToo movement, hoping for a "safe space" for his daughter and wife.
"You're being so cool, baby," Brazile marveled at one point.
But then about five minutes into Scaramucci's segment (watch it above) things got weird when Frum, out of nowhere, said, "I have a question for you. Before you went into government, you received an enormous offer from a Chinese group, for the purchase of your company, $90 million, and after you came out the purchasers lost interest. How am I to understand that?"
As Scaramucci protested that the question was "factually inaccurate" and started to explain something about Treasury Department approval, Maher tossed him a lifeline and said, "Okay, this is a different show…nobody knows what you're talking about and nobody cares."
The Mooch would not let go of the bone. "It's a set-up question," he continued, despite Maher's attempts to steer the course. "He's trying to suggest that they were buying into the lobbying…I curse a lot but I don't curse on TV but that's b.s."
"You don't curse?" said Maher. "You're the one who said Steve Bannon sucks his own c*ck."
"I don't think he's anatomically capable of it," Scaramucci joked, but then went right back to Frum. "What David is trying to say is that the Chinese company bought my business as a favor to Trump."
"Why are we going back to this?," asked Maher. "I see why you and Trump get along."
Later during the conversation, when an exasperated Frum asked Scaramucci that, as a fellow Republican ("I've spent more time in the Republican adminstration than you"), does "it not stick in your craw that Vladimir Putin wanted to help your guy so much?"
"Your level of anger and sanctimony is not coming across very well," said the Mooch, only to be told by Frum that this was "not a show or a performance," to which Scaramucci charged "cultural elitism," and Frum retorted, "You're going to play that card or you're going to name-drop Harvard, one or the other."
Much cross-talk ensued, broken by Brazile's "I went to LSU, all right?"
Maher's New Rules segment – usually the show's place for amped-up rants – got things back on a steadier course.
But then came Overtime, when further discussion about Trump prompted the Mooch to turn back to Frum.
"Your anger toward Trump is clouding your judgment, by the way," he said. "A good anger management class would help you think a little more clearly."
Responded Frum, "Don't let anger cloud your judgment – but don't let your ambitions cloud your judgment."
"What does that even mean?" said Scaramucci. "You talking about my ambition? I'd already lived a great life. I went in there to try to serve the country and help the middle- and lower-class people that are struggling in this country.
"You gotta wake up, brother," he continued at Frum. "You're living in an ivory tower. Snap out of it. Drop the anger." Then, after suggesting a suppository, he said, "You're, like, a mean guy."
"I'm not a weak guy," said Frum.
"You're mean, and you're angry," said the Mooch.
Eventually Maher could abstain. "I want to know what drug you're on," he asked Scaramucci. "He is very Michael Corleone, he doesn't raise his voice, he's a quiet killer."
"I'm a little bit too honest, though," the Mooch said calmly, then shooting his eyes at Frum, added, "I'm not the typical backstabbing Washingtonian."
At which point, Bazile, who maybe thought she'd been lumped in with the backstabbing Washingtonian crowd, offered – and let's give her the last word – "I'm like Tina Turner. I'm a Private Dancer, baby, but I don't dance for that kinda money."
Watch the Overtime segment here:
This article was printed from	https://deadline.com/2018/02/anthony-scaramucci-real-time-with-bill-maher-meet-the-new-mooch-same-as-the-old-mooch-1202277433/