From 55968678d043e9c8f4cf7c3d9e7e45ebd1bc0397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CTezz03=E2=80=9D?= <“mmbradley@gmail.com”> Date: Wed, 12 Mar 2025 16:02:36 +0000 Subject: [PATCH 1/6] fix: questions for pull request and review --- lesson_03/quiz/quiz.yaml | 4 ++ lesson_03/quiz/src/quizzes/montez_quiz.ts | 65 ++++++++++++++++++++ lesson_03/quiz/src/quizzes/quizzes.module.ts | 2 + 3 files changed, 71 insertions(+) create mode 100644 lesson_03/quiz/src/quizzes/montez_quiz.ts diff --git a/lesson_03/quiz/quiz.yaml b/lesson_03/quiz/quiz.yaml index 63da725d2..550c4c6a5 100644 --- a/lesson_03/quiz/quiz.yaml +++ b/lesson_03/quiz/quiz.yaml @@ -26,3 +26,7 @@ quiz: - $2y$10$FquR69q7W4E68TX/SNCB7u8Ri0DOFRDqsUPdGfuyIBjZJRVFkNI.6 - $2y$10$FSWRA7hulVpyVxd8s67Nxuq/1cdmviW24qqoUbqihBf79cR.w9yly - $2y$10$Qy1IsNsfuJvA384ypL/72uWubUuNbMRp4LD6j/LM0RIH66D/HIjF6 + montezbradley: + - $2y$10$W3vj0qJcRoNY9u5GNYLddOMlwMSfHSXrTwfLMVUSDTqgQFeqLLQbG + - $2y$10$Cwm6LN1BoRoAEPiVPl4lLOV3o4GY84GsQEUS3.SwBmyvOHebr2r9e + - $2y$10$DT/fZKklOTHbpUEuzRg8nuNbDjapMm81po74KxIJ4htF3jR9VhmmC \ No newline at end of file diff --git a/lesson_03/quiz/src/quizzes/montez_quiz.ts b/lesson_03/quiz/src/quizzes/montez_quiz.ts new file mode 100644 index 000000000..320341f33 --- /dev/null +++ b/lesson_03/quiz/src/quizzes/montez_quiz.ts @@ -0,0 +1,65 @@ +import { + AnswerChoice, + MultipleChoiceQuizQuestion, + QuizQuestion, + QuizQuestionProvider, +} from 'codedifferently-instructional'; + +export class MontezBradleyQuiz implements QuizQuestionProvider { + getProviderName(): string { + return 'montezbradley'; + } + + makeQuizQuestions(): QuizQuestion[] { + return [ + MontezBradleyQuiz.makeQuestion0(), + MontezBradleyQuiz.makeQuestion1(), + MontezBradleyQuiz.makeQuestion2(), + ]; + } + + private static makeQuestion0(): QuizQuestion { + return new MultipleChoiceQuizQuestion( + 0, + 'What Git command is used to check the current status of a repository?', + new Map([ + [AnswerChoice.A, 'git status'], + [AnswerChoice.B, 'git info'], + [AnswerChoice.C, 'git check-status'], + [AnswerChoice.D, 'git current'], + ]), + AnswerChoice.UNANSWERED, + ); // Replace `UNANSWERED` with the correct answer. + } + + private static makeQuestion1(): QuizQuestion { + return new MultipleChoiceQuizQuestion( + 1, + 'How would you commit your code', + new Map([ + [AnswerChoice.A, 'git commit -m "" '], + [AnswerChoice.B, 'git info'], + [AnswerChoice.C, 'git commit'], + [AnswerChoice.D, 'git add git commit -m "Your commit message'], + ]), + AnswerChoice.UNANSWERED, + ); // Replace `UNANSWERED` with the correct answer. + } + + private static makeQuestion2(): QuizQuestion { + return new MultipleChoiceQuizQuestion( + 2, + 'How would you push your vs code main to replace your main branch in github ', + new Map([ + [ + AnswerChoice.A, + 'pull your commits to vs code, git reset --hard upstream/main, then git push --force', + ], + [AnswerChoice.B, 'git reset, then git push --force'], + [AnswerChoice.C, 'git info, then git pull, final step is git push'], + [AnswerChoice.D, 'git push after that git reset then git pull'], + ]), + AnswerChoice.UNANSWERED, + ); + } +} diff --git a/lesson_03/quiz/src/quizzes/quizzes.module.ts b/lesson_03/quiz/src/quizzes/quizzes.module.ts index 6d64dbe6e..a66777055 100644 --- a/lesson_03/quiz/src/quizzes/quizzes.module.ts +++ b/lesson_03/quiz/src/quizzes/quizzes.module.ts @@ -6,6 +6,7 @@ import { Jbeyquiz } from './jbeyquiz.js'; import { MercedesMathewsQuiz } from './mercedes_mathews_quiz.js'; import { DavidAdenaikeQuiz } from './david_adenaike_quiz.js'; import { RasheedMillerQuiz } from './rasheed_miller_quiz.js'; +import { MontezBradleyQuiz } from './montez_quiz.js'; export const Quizzes = Symbol.for('Quizzes'); @@ -18,6 +19,7 @@ const QUIZ_PROVIDERS = [ Jbeyquiz, DavidAdenaikeQuiz, RasheedMillerQuiz, + MontezBradleyQuiz, ]; @Module({ From df581c92d397272d5f29bd98c526aed1e060409a Mon Sep 17 00:00:00 2001 From: nia-source Date: Thu, 13 Mar 2025 14:23:23 -0400 Subject: [PATCH 2/6] feat: adds Nia's custom quiz (#141) * completed quiz * fix: fix quiz answers * chore: fixes code formatting Signed-off-by: Anthony D. Mays * chore: removes answers Signed-off-by: Anthony D. Mays * chore: fix bad character Signed-off-by: Anthony D. Mays --------- Signed-off-by: Anthony D. Mays Co-authored-by: Anthony D. Mays Co-authored-by: Anthony D. Mays --- lesson_03/quiz/quiz.yaml | 4 ++ lesson_03/quiz/src/quizzes/nia_quiz.ts | 75 ++++++++++++++++++++ lesson_03/quiz/src/quizzes/quizzes.module.ts | 10 +-- 3 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 lesson_03/quiz/src/quizzes/nia_quiz.ts diff --git a/lesson_03/quiz/quiz.yaml b/lesson_03/quiz/quiz.yaml index 9cd2b3594..a307e205b 100644 --- a/lesson_03/quiz/quiz.yaml +++ b/lesson_03/quiz/quiz.yaml @@ -50,6 +50,10 @@ quiz: - $2y$10$FquR69q7W4E68TX/SNCB7u8Ri0DOFRDqsUPdGfuyIBjZJRVFkNI.6 - $2y$10$FSWRA7hulVpyVxd8s67Nxuq/1cdmviW24qqoUbqihBf79cR.w9yly - $2y$10$Qy1IsNsfuJvA384ypL/72uWubUuNbMRp4LD6j/LM0RIH66D/HIjF6 + niapack: + - $2y$10$AHKmPPaTlafHO3T5q..kAuAhAy4n8Kn.wcY7ZAeYgokCjitwyjqE2 + - $2y$10$Z0g.9UO7qwkwoeNe8byn3.MVNIiIKBxa6ztLVHzDz.m5Ao5ozGqh6 + - $2y$10$QjpqUnI.C5UPmDuMPU.Eyu7k.T/qF0oAZDl0.osqlaJW.NC7Lvfya davisdarius: - $2y$10$s9Dh1bJak9WjT3sziuq1KeloNnDCuhgjsT6HA.m/fxjJSrJMK0lOu - $2y$10$Q58g8gsWhL1Zhje9WoLHKuqF44I3NK16i..EQ2SYVAa.PEkowhgOK diff --git a/lesson_03/quiz/src/quizzes/nia_quiz.ts b/lesson_03/quiz/src/quizzes/nia_quiz.ts new file mode 100644 index 000000000..542ef14ef --- /dev/null +++ b/lesson_03/quiz/src/quizzes/nia_quiz.ts @@ -0,0 +1,75 @@ +import { + AnswerChoice, + MultipleChoiceQuizQuestion, + QuizQuestion, + QuizQuestionProvider, +} from 'codedifferently-instructional'; + +export class NiaPackquiz implements QuizQuestionProvider { + getProviderName(): string { + return 'niapack'; + } + + makeQuizQuestions(): QuizQuestion[] { + return [ + NiaPackquiz.makeQuestion0(), + NiaPackquiz.makeQuestion1(), + NiaPackquiz.makeQuestion2(), + ]; + } + + private static makeQuestion0(): QuizQuestion { + return new MultipleChoiceQuizQuestion( + 0, + 'What is branching? Why is it important?', + new Map([ + [ + AnswerChoice.A, + 'It is when a tree grows and is important to make the sky look beautiful', + ], + [ + AnswerChoice.B, + 'It is when you create a seperate copy of a code and is important because it doesnt affect the main version and makes it easier to work with a team', + ], + [ + AnswerChoice.C, + 'It is when you delete all previous versions of your code and is important so you dont have to start from scratch', + ], + [ + AnswerChoice.D, + 'It is merging all changes directly into the main code and is important because it speeds up develpoment by avoiding unnecessary review or debugging steps', + ], + ]), + AnswerChoice.UNANSWERED, + ); // Replace `UNANSWERED` with the correct answer. + } + private static makeQuestion1(): QuizQuestion { + return new MultipleChoiceQuizQuestion( + 1, + 'Which programming languages can you use in VS code?', + new Map([ + [AnswerChoice.A, 'Only Python'], + [AnswerChoice.B, 'Only JavaScript'], + [AnswerChoice.C, 'Multiple languages like Python, JavaScript, and C++'], + [AnswerChoice.D, 'C++'], + ]), + AnswerChoice.UNANSWERED, + ); // Replace `UNANSWERED` with the correct answer. + } + private static makeQuestion2(): QuizQuestion { + return new MultipleChoiceQuizQuestion( + 2, + 'What is a pull request request on GitHub?', + new Map([ + [ + AnswerChoice.A, + 'A way to merge changes from one branch into another after review', + ], + [AnswerChoice.B, 'A command to delete a branch permanently'], + [AnswerChoice.C, 'A method for creating a local copy of a repository'], + [AnswerChoice.D, 'A tool to schedule automatic repository backups'], + ]), + AnswerChoice.UNANSWERED, + ); // Replace `UNANSWERED` with the correct answer. + } +} diff --git a/lesson_03/quiz/src/quizzes/quizzes.module.ts b/lesson_03/quiz/src/quizzes/quizzes.module.ts index 87a4b319a..765caf3ee 100644 --- a/lesson_03/quiz/src/quizzes/quizzes.module.ts +++ b/lesson_03/quiz/src/quizzes/quizzes.module.ts @@ -1,24 +1,25 @@ import { Module } from '@nestjs/common'; import { Bryanasingletonbarnhart } from './ bryana_singleton-barnhart_quiz.js'; +import { AnanatawaQuiz } from './ananatawa_quiz.js'; import { AnotherQuiz } from './another_quiz.js'; import { AnthonyMaysQuiz } from './anthony_mays_quiz.js'; -import { DylanLaffertyQuiz } from './dylan_lafferty_quiz.js'; import { ChanelHuttQuiz } from './Chanel_Huttquiz.js'; import { DavidAdenaikeQuiz } from './david_adenaike_quiz.js'; import { DavisDQuiz } from './davisd_quiz.js'; +import { DylanLaffertyQuiz } from './dylan_lafferty_quiz.js'; import { EvanPhilakhongQuiz } from './evan_philakhong_quiz.js'; import { EzraQuiz } from './ezra_quiz.js'; import { JasonWatsonQuiz } from './jason_watson_quiz.js'; import { Jbeyquiz } from './jbeyquiz.js'; -import { KarensQuiz } from './karen_alabi_quiz.js'; import { JeremiahWingQuiz } from './jeremiah_wing_quiz.js'; +import { KarensQuiz } from './karen_alabi_quiz.js'; import { KhaylaSaundersQuiz } from './khayla_quiz.js'; import { MeikoStephensQuiz } from './meiko_stephens_quiz.js'; import { MercedesMathewsQuiz } from './mercedes_mathews_quiz.js'; +import { MontezBradleyQuiz } from './montez_quiz.js'; +import { NiaPackquiz } from './nia_quiz.js'; import { OliviaJamesQuiz } from './olivia_james_quiz.js'; -import { MontezBradleyQuiz } from './montez_quiz.js'; import { RasheedMillerQuiz } from './rasheed_miller_quiz.js'; -import { AnanatawaQuiz } from './ananatawa_quiz.js'; export const Quizzes = Symbol.for('Quizzes'); @@ -39,6 +40,7 @@ const QUIZ_PROVIDERS = [ KhaylaSaundersQuiz, DylanLaffertyQuiz, RasheedMillerQuiz, + NiaPackquiz, DavisDQuiz, AnanatawaQuiz, OliviaJamesQuiz, From a6e10ff013fdac1260f992a6d299fe72484fcc1d Mon Sep 17 00:00:00 2001 From: Rasheed Miller Date: Thu, 13 Mar 2025 14:33:06 -0400 Subject: [PATCH 3/6] feat: adds Rashaad's code samples (#146) * Create RM_README.md Creates folder for lesson 04 * feat: RM_README.md_lesson_04 Lesson_04 completed using "C#" and "C++". * typo --- lesson_04/rasheedmiller/RM_README.md | 80 ++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 lesson_04/rasheedmiller/RM_README.md diff --git a/lesson_04/rasheedmiller/RM_README.md b/lesson_04/rasheedmiller/RM_README.md new file mode 100644 index 000000000..c2f954317 --- /dev/null +++ b/lesson_04/rasheedmiller/RM_README.md @@ -0,0 +1,80 @@ +## C# Implementation + +```c# +using System; + +class Program +{ + static bool IsPrime(int number) + { + if (number < 2) + return false; + + for (int i = 2; i <= Math.Sqrt(number); i++) + { + if (number % i == 0) + return false; + } + return true; + } + + static void Main() + { + Console.Write("Enter a number: "); + int num = int.Parse(Console.ReadLine()); + + if (IsPrime(num)) + Console.WriteLine($"{num} is a prime number."); + else + Console.WriteLine($"{num} is not a prime number."); + } +} +``` + +## C++ Implementation + +```c++ +#include +#include + +bool isPrime(int number) { + if (number < 2) + return false; + + for (int i = 2; i <= std::sqrt(number); i++) { + if (number % i == 0) + return false; + } + return true; +} + +int main() { + int num; + std::cout << "Enter a number: "; + std::cin >> num; + + if (isPrime(num)) + std::cout << num << " is a prime number." << std::endl; + else + std::cout << num << " is not a prime number." << std::endl; + + return 0; +} +``` + +## Explanation + +The C# "C Sharp" implementation uses a function named `Is_Prime`. This function takes a `number` as input and reads `true` if the number is Prime or `false` if the number is not Prime. + +The C++ "C Plus Plus" implementation uses a function named `is_Prime`. This function also takes a `number` as input and reads `true` if the number is Prime or `false` if the number is not Prime. + +# Similarities and Differences Index Chart + +| Feature | Similarities | Differences | +|-----------------------|-----------------------------------------------|-----------------------------------------------| +| **Syntax** | The names of the functions are similar. | C# uses "IsPrime". C++ uses "isPrime". | +| **Input** | Both take user input. | One coded in C# language. One coded C++ language.| +| **Main Function** | Both have main functions. | C# uses "static void Main()" C++ uses "int main()"| +| **First Line of Code** | Both have a line of code to start. | C# starts with "using System;". C++ starts with "#include "| +| **Printing Output** | Both use printing outputs. | C# uses "Console.WriteLine()". C++ uses "std::cout <<". | + From 3e77e3f16774b42dce0b33472e52be69b087a213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CTezz03=E2=80=9D?= <“mmbradley@gmail.com”> Date: Thu, 13 Mar 2025 18:55:26 +0000 Subject: [PATCH 4/6] edit: push the merge up --- lesson_03/quiz/quiz.yaml | 5 ++++- lesson_03/quiz/src/quizzes/quizzes.module.ts | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lesson_03/quiz/quiz.yaml b/lesson_03/quiz/quiz.yaml index a307e205b..fb4795e77 100644 --- a/lesson_03/quiz/quiz.yaml +++ b/lesson_03/quiz/quiz.yaml @@ -79,7 +79,10 @@ quiz: jasonwatson: - $2y$10$AZtPKyQ.6Bzb.jreO/u.2O3C7XfvYAVpjHzLkuhLVdsX74wc4vXwS - $2y$10$QbKtEXqpeItigRLAHsn8Qe/06ZpXhKEP1bGPJSFXymsoFw9.04NHy - - $2y$10$tJLScW1OZpOLpVllM65EI.W1QjkSIIBtz.KG8z/s.07RNb7ZWC0um + - $2y$10$tJLScW1OZpOLpVllM65EI.W1QjkSIIBtz.KG8z/s.07RNb7ZWC0um montezbradley: + - $2y$10$W3vj0qJcRoNY9u5GNYLddOMlwMSfHSXrTwfLMVUSDTqgQFeqLLQbG + - $2y$10$Cwm6LN1BoRoAEPiVPl4lLOV3o4GY84GsQEUS3.SwBmyvOHebr2r9e + - $2y$10$DT/fZKklOTHbpUEuzRg8nuNbDjapMm81po74KxIJ4htF3jR9VhmmC chanelhutt: - $2y$10$7/GS4n5j/5TXQc5zjDzlc.2xBKwRqrsksWzcl7VKRwa.fDxzdficS - $2y$10$9mfdal67CXoVG2phPKe1s.BpAT6HQeyQIiDtStfFazkPMW2AaW6Zu diff --git a/lesson_03/quiz/src/quizzes/quizzes.module.ts b/lesson_03/quiz/src/quizzes/quizzes.module.ts index 765caf3ee..c8c323dfa 100644 --- a/lesson_03/quiz/src/quizzes/quizzes.module.ts +++ b/lesson_03/quiz/src/quizzes/quizzes.module.ts @@ -20,6 +20,7 @@ import { MontezBradleyQuiz } from './montez_quiz.js'; import { NiaPackquiz } from './nia_quiz.js'; import { OliviaJamesQuiz } from './olivia_james_quiz.js'; import { RasheedMillerQuiz } from './rasheed_miller_quiz.js'; +import { MontezBradleyQuiz } from './montez_quiz.js'; export const Quizzes = Symbol.for('Quizzes'); @@ -47,6 +48,7 @@ const QUIZ_PROVIDERS = [ ChanelHuttQuiz, JeremiahWingQuiz, JasonWatsonQuiz, + MontezBradleyQuiz, ]; @Module({ From f04aa75cd7771a836375fdd7c97ab28a9ca254c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CTezz03=E2=80=9D?= <“mmbradley@gmail.com”> Date: Thu, 13 Mar 2025 19:31:14 +0000 Subject: [PATCH 5/6] chore: added new pr requests --- lesson_03/quiz/quiz.yaml | 3 ++- lesson_03/quiz/src/quizzes/montez_quiz.ts | 2 ++ lesson_03/quiz/src/quizzes/quizzes.module.ts | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lesson_03/quiz/quiz.yaml b/lesson_03/quiz/quiz.yaml index fb4795e77..3eb2368de 100644 --- a/lesson_03/quiz/quiz.yaml +++ b/lesson_03/quiz/quiz.yaml @@ -79,7 +79,8 @@ quiz: jasonwatson: - $2y$10$AZtPKyQ.6Bzb.jreO/u.2O3C7XfvYAVpjHzLkuhLVdsX74wc4vXwS - $2y$10$QbKtEXqpeItigRLAHsn8Qe/06ZpXhKEP1bGPJSFXymsoFw9.04NHy - - $2y$10$tJLScW1OZpOLpVllM65EI.W1QjkSIIBtz.KG8z/s.07RNb7ZWC0um montezbradley: + - $2y$10$tJLScW1OZpOLpVllM65EI.W1QjkSIIBtz.KG8z/s.07RNb7ZWC0um + montezbradley: - $2y$10$W3vj0qJcRoNY9u5GNYLddOMlwMSfHSXrTwfLMVUSDTqgQFeqLLQbG - $2y$10$Cwm6LN1BoRoAEPiVPl4lLOV3o4GY84GsQEUS3.SwBmyvOHebr2r9e - $2y$10$DT/fZKklOTHbpUEuzRg8nuNbDjapMm81po74KxIJ4htF3jR9VhmmC diff --git a/lesson_03/quiz/src/quizzes/montez_quiz.ts b/lesson_03/quiz/src/quizzes/montez_quiz.ts index 320341f33..eb529bf98 100644 --- a/lesson_03/quiz/src/quizzes/montez_quiz.ts +++ b/lesson_03/quiz/src/quizzes/montez_quiz.ts @@ -63,3 +63,5 @@ export class MontezBradleyQuiz implements QuizQuestionProvider { ); } } + +/* End of code */ diff --git a/lesson_03/quiz/src/quizzes/quizzes.module.ts b/lesson_03/quiz/src/quizzes/quizzes.module.ts index c8c323dfa..73520116a 100644 --- a/lesson_03/quiz/src/quizzes/quizzes.module.ts +++ b/lesson_03/quiz/src/quizzes/quizzes.module.ts @@ -62,3 +62,5 @@ const QUIZ_PROVIDERS = [ ], }) export class QuizzesModule {} + +/* End of code */ From 13563f4f10ebf71ba7e4d2b4ad60feb043990a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CTezz03=E2=80=9D?= <“mmbradley@gmail.com”> Date: Thu, 13 Mar 2025 20:24:18 +0000 Subject: [PATCH 6/6] chore: working on merging the branch --- lesson_03/quiz/quiz.yaml | 4 ---- lesson_03/quiz/src/quizzes/quizzes.module.ts | 2 -- 2 files changed, 6 deletions(-) diff --git a/lesson_03/quiz/quiz.yaml b/lesson_03/quiz/quiz.yaml index 3eb2368de..c2e96603d 100644 --- a/lesson_03/quiz/quiz.yaml +++ b/lesson_03/quiz/quiz.yaml @@ -80,10 +80,6 @@ quiz: - $2y$10$AZtPKyQ.6Bzb.jreO/u.2O3C7XfvYAVpjHzLkuhLVdsX74wc4vXwS - $2y$10$QbKtEXqpeItigRLAHsn8Qe/06ZpXhKEP1bGPJSFXymsoFw9.04NHy - $2y$10$tJLScW1OZpOLpVllM65EI.W1QjkSIIBtz.KG8z/s.07RNb7ZWC0um - montezbradley: - - $2y$10$W3vj0qJcRoNY9u5GNYLddOMlwMSfHSXrTwfLMVUSDTqgQFeqLLQbG - - $2y$10$Cwm6LN1BoRoAEPiVPl4lLOV3o4GY84GsQEUS3.SwBmyvOHebr2r9e - - $2y$10$DT/fZKklOTHbpUEuzRg8nuNbDjapMm81po74KxIJ4htF3jR9VhmmC chanelhutt: - $2y$10$7/GS4n5j/5TXQc5zjDzlc.2xBKwRqrsksWzcl7VKRwa.fDxzdficS - $2y$10$9mfdal67CXoVG2phPKe1s.BpAT6HQeyQIiDtStfFazkPMW2AaW6Zu diff --git a/lesson_03/quiz/src/quizzes/quizzes.module.ts b/lesson_03/quiz/src/quizzes/quizzes.module.ts index 73520116a..a07f74e9e 100644 --- a/lesson_03/quiz/src/quizzes/quizzes.module.ts +++ b/lesson_03/quiz/src/quizzes/quizzes.module.ts @@ -20,7 +20,6 @@ import { MontezBradleyQuiz } from './montez_quiz.js'; import { NiaPackquiz } from './nia_quiz.js'; import { OliviaJamesQuiz } from './olivia_james_quiz.js'; import { RasheedMillerQuiz } from './rasheed_miller_quiz.js'; -import { MontezBradleyQuiz } from './montez_quiz.js'; export const Quizzes = Symbol.for('Quizzes'); @@ -48,7 +47,6 @@ const QUIZ_PROVIDERS = [ ChanelHuttQuiz, JeremiahWingQuiz, JasonWatsonQuiz, - MontezBradleyQuiz, ]; @Module({