From 6fa003ed6777b127d6cd0d458370147128d40237 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 27 Oct 2022 15:00:55 +0800
Subject: [PATCH 01/54] add random emoji project

---
 projects/random-emoji/index.html | 18 +++++++++++
 projects/random-emoji/index.js   | 27 +++++++++++++++++
 projects/random-emoji/style.css  | 51 ++++++++++++++++++++++++++++++++
 3 files changed, 96 insertions(+)
 create mode 100644 projects/random-emoji/index.html
 create mode 100644 projects/random-emoji/index.js
 create mode 100644 projects/random-emoji/style.css

diff --git a/projects/random-emoji/index.html b/projects/random-emoji/index.html
new file mode 100644
index 0000000..4087387
--- /dev/null
+++ b/projects/random-emoji/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <link rel="stylesheet" href="style.css" />
+    <title>Random Emoji</title>
+  </head>
+  <body>
+    <h2>Random Emoji</h2>
+    <div class="section">
+      <button id="emoji-btn" class="emoji-btn">Click</button>
+      <p id="emoji-name" class="emoji-name">Emoji Name</p>
+    </div>
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/random-emoji/index.js b/projects/random-emoji/index.js
new file mode 100644
index 0000000..161d197
--- /dev/null
+++ b/projects/random-emoji/index.js
@@ -0,0 +1,27 @@
+const btnEl = document.getElementById("emoji-btn");
+const emojiNameEl = document.getElementById("emoji-name");
+
+const emojis = [];
+
+const emojiAddFunction = async () => {
+  let response = await fetch(
+    "https://emoji-api.com/emojis?access_key=c026368c7be293ca27c373a38b0d4361494d257d"
+  );
+  data = await response.json();
+  console.log(data);
+
+  for (let i = 0; i < 1500; i++) {
+    emojis.push({
+      name: data[i].unicodeName,
+      character: data[i].character,
+    });
+  }
+};
+
+emojiAddFunction();
+
+btnEl.addEventListener("click", () => {
+  const randomNum = Math.floor(Math.random() * emojis.length);
+  btnEl.innerText = emojis[randomNum].character;
+  emojiNameEl.innerText = emojis[randomNum].name;
+});
diff --git a/projects/random-emoji/style.css b/projects/random-emoji/style.css
new file mode 100644
index 0000000..fecb8a1
--- /dev/null
+++ b/projects/random-emoji/style.css
@@ -0,0 +1,51 @@
+
+body {
+  font-family:'Courier New', Courier, monospace;
+  padding: 0;
+  margin: 0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100vh;
+  background: salmon;
+}
+
+h2 {
+  position: absolute;
+  top: 0;
+  padding-top: 140px;
+  color: white;
+  font-size: 2rem;
+  text-align: center;
+}
+
+.section{
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+}
+
+
+.emoji-btn {
+  border: none;
+  font-size: 5rem;
+  background: rgba(255, 255, 255, 0.2);
+  border-radius: 10px;
+  filter: grayscale();
+  padding: 15px;
+  transition: filter 0.2s ease-in-out;
+  cursor: pointer;
+}
+
+.emoji-btn:hover {
+  filter: grayscale(0);
+
+}
+
+.emoji-name {
+font-weight: 600;
+  color: darkblue;
+
+}
+

From 17eeae61b33147195d41deb72e9f2271d5b277d6 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 31 Oct 2022 07:04:42 +0800
Subject: [PATCH 02/54] update random emoji project

---
 projects/random-emoji/index.html | 22 +++++------
 projects/random-emoji/index.js   | 26 ++++++------
 projects/random-emoji/style.css  | 68 ++++++++++++++------------------
 3 files changed, 53 insertions(+), 63 deletions(-)

diff --git a/projects/random-emoji/index.html b/projects/random-emoji/index.html
index 4087387..74b24cc 100644
--- a/projects/random-emoji/index.html
+++ b/projects/random-emoji/index.html
@@ -1,18 +1,18 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <link rel="stylesheet" href="style.css" />
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link rel="stylesheet" href="style.css">
     <title>Random Emoji</title>
-  </head>
-  <body>
+</head>
+<body>
     <h2>Random Emoji</h2>
     <div class="section">
-      <button id="emoji-btn" class="emoji-btn">Click</button>
-      <p id="emoji-name" class="emoji-name">Emoji Name</p>
+        <button class="btn" id="btn">Click</button>
+        <p class="emoji-name" id="emoji-name">Emoji Name</p>
     </div>
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/random-emoji/index.js b/projects/random-emoji/index.js
index 161d197..a768eb0 100644
--- a/projects/random-emoji/index.js
+++ b/projects/random-emoji/index.js
@@ -1,27 +1,27 @@
-const btnEl = document.getElementById("emoji-btn");
+const btnEl = document.getElementById("btn");
 const emojiNameEl = document.getElementById("emoji-name");
 
-const emojis = [];
+const emoji = [];
 
-const emojiAddFunction = async () => {
+async function getEmoji() {
   let response = await fetch(
-    "https://emoji-api.com/emojis?access_key=c026368c7be293ca27c373a38b0d4361494d257d"
+    "https://emoji-api.com/emojis?access_key=773b58f681fb786fafdb8392e8b8a75ddc177fd1"
   );
+
   data = await response.json();
-  console.log(data);
 
   for (let i = 0; i < 1500; i++) {
-    emojis.push({
-      name: data[i].unicodeName,
-      character: data[i].character,
+    emoji.push({
+      emojiName: data[i].character,
+      emojiCode: data[i].unicodeName,
     });
   }
-};
+}
 
-emojiAddFunction();
+getEmoji();
 
 btnEl.addEventListener("click", () => {
-  const randomNum = Math.floor(Math.random() * emojis.length);
-  btnEl.innerText = emojis[randomNum].character;
-  emojiNameEl.innerText = emojis[randomNum].name;
+  const randomNum = Math.floor(Math.random() * emoji.length);
+  btnEl.innerText = emoji[randomNum].emojiName;
+  emojiNameEl.innerText = emoji[randomNum].emojiCode;
 });
diff --git a/projects/random-emoji/style.css b/projects/random-emoji/style.css
index fecb8a1..37b110b 100644
--- a/projects/random-emoji/style.css
+++ b/projects/random-emoji/style.css
@@ -1,51 +1,41 @@
-
-body {
-  font-family:'Courier New', Courier, monospace;
-  padding: 0;
-  margin: 0;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  height: 100vh;
-  background: salmon;
+body{
+    padding: 0;
+    margin: 0;
+    background: salmon;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    height: 100vh;
+    align-items: center;
+    font-family: 'Courier New', Courier, monospace;
 }
 
-h2 {
-  position: absolute;
-  top: 0;
-  padding-top: 140px;
-  color: white;
-  font-size: 2rem;
-  text-align: center;
+h2{
+    font-size: 2rem;
+    color: aliceblue;
 }
 
 .section{
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
+    text-align: center;
 }
 
+.btn{
+    font-size: 5rem;
+    border: none;
+    background: rgb(255,255,255,.2);
+    border-radius: 10px;
+    padding: 15px;
+    filter: grayscale();
+    transition: filter .2s ease-in-out;
+    cursor: pointer;
 
-.emoji-btn {
-  border: none;
-  font-size: 5rem;
-  background: rgba(255, 255, 255, 0.2);
-  border-radius: 10px;
-  filter: grayscale();
-  padding: 15px;
-  transition: filter 0.2s ease-in-out;
-  cursor: pointer;
 }
 
-.emoji-btn:hover {
-  filter: grayscale(0);
-
-}
-
-.emoji-name {
-font-weight: 600;
-  color: darkblue;
-
+.btn:hover{
+    filter: grayscale(0);
 }
 
+.emoji-name{
+    font-weight: 600;
+    color: darkblue;
+}
\ No newline at end of file

From 87880851c8047cb23b920e03d52cb6fe366dfe17 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Fri, 11 Nov 2022 12:18:01 +0800
Subject: [PATCH 03/54] add 12 new projects

---
 projects/anime-pics-genrator/index.html       |   35 +
 projects/anime-pics-genrator/script.js        |   14 +
 projects/anime-pics-genrator/style.css        |   88 +
 projects/bmi-calculator/index.html            |   34 +
 projects/bmi-calculator/script.js             |   24 +
 .../cat-api/45_Chatting_app/client/index.html |   91 +
 .../cat-api/45_Chatting_app/client/index.js   |  152 ++
 .../45_Chatting_app/client/message.mp3        |  Bin 0 -> 24794 bytes
 .../45_Chatting_app/client/package-lock.json  |  114 ++
 .../45_Chatting_app/client/package.json       |   14 +
 .../cat-api/45_Chatting_app/client/styles.css |  419 +++++
 .../cat-api/45_Chatting_app/server/Procfile   |    1 +
 .../45_Chatting_app/server/package-lock.json  |  621 +++++++
 .../45_Chatting_app/server/package.json       |   18 +
 .../cat-api/45_Chatting_app/server/server.js  |   62 +
 projects/cat-api/46_image_slider/app.js       |  158 ++
 projects/cat-api/46_image_slider/index.html   |  130 ++
 projects/cat-api/46_image_slider/style.css    |  337 ++++
 projects/cat-api/app.js                       |   30 +
 projects/cat-api/index.html                   |   25 +
 projects/cat-api/styles.css                   |  106 ++
 projects/currency-converter/index.html        |  142 ++
 projects/currency-converter/readme.md         |    5 +
 projects/currency-converter/script.js         |   51 +
 projects/currency-converter/style.css         |   83 +
 projects/english-dictionary/index.html        |   53 +
 projects/english-dictionary/script.js         |   73 +
 projects/english-dictionary/style.css         |  153 ++
 projects/feedback-ui/assets/review.png        |  Bin 0 -> 1800 bytes
 projects/feedback-ui/font/sans.ttf            |  Bin 0 -> 55852 bytes
 projects/feedback-ui/index.html               |   48 +
 projects/feedback-ui/script.js                |   29 +
 projects/feedback-ui/style.css                |  120 ++
 projects/loan-calculator/index.html           |   50 +
 projects/loan-calculator/index.js             |    9 +
 projects/loan-calculator/style.css            |   32 +
 projects/movie-quote-generator/index.html     |   40 +
 projects/movie-quote-generator/script.js      |   17 +
 projects/movie-quote-generator/style.css      |  129 ++
 projects/notes-taking-app/icon.png            |  Bin 0 -> 7224 bytes
 projects/notes-taking-app/index.html          |   19 +
 projects/notes-taking-app/script.js           |   69 +
 projects/notes-taking-app/style.css           |   85 +
 projects/project-idea-generator/index.html    |   43 +
 .../project-idea-generator/src/css/styles.css |  102 ++
 .../project-idea-generator/src/js/main.js     |   15 +
 .../project-idea-generator/src/js/projects.js | 1514 +++++++++++++++++
 projects/temp-converter/icon.png              |  Bin 0 -> 8895 bytes
 projects/temp-converter/index.html            |   52 +
 projects/temp-converter/script.js             |   39 +
 projects/temp-converter/style.css             |  127 ++
 projects/weight-converter/Assets/Assets.png   |  Bin 0 -> 76519 bytes
 projects/weight-converter/app.js              |   34 +
 projects/weight-converter/index.html          |   22 +
 projects/weight-converter/style.css           |   16 +
 55 files changed, 5644 insertions(+)
 create mode 100644 projects/anime-pics-genrator/index.html
 create mode 100644 projects/anime-pics-genrator/script.js
 create mode 100644 projects/anime-pics-genrator/style.css
 create mode 100644 projects/bmi-calculator/index.html
 create mode 100644 projects/bmi-calculator/script.js
 create mode 100644 projects/cat-api/45_Chatting_app/client/index.html
 create mode 100644 projects/cat-api/45_Chatting_app/client/index.js
 create mode 100644 projects/cat-api/45_Chatting_app/client/message.mp3
 create mode 100644 projects/cat-api/45_Chatting_app/client/package-lock.json
 create mode 100644 projects/cat-api/45_Chatting_app/client/package.json
 create mode 100644 projects/cat-api/45_Chatting_app/client/styles.css
 create mode 100644 projects/cat-api/45_Chatting_app/server/Procfile
 create mode 100644 projects/cat-api/45_Chatting_app/server/package-lock.json
 create mode 100644 projects/cat-api/45_Chatting_app/server/package.json
 create mode 100644 projects/cat-api/45_Chatting_app/server/server.js
 create mode 100644 projects/cat-api/46_image_slider/app.js
 create mode 100644 projects/cat-api/46_image_slider/index.html
 create mode 100644 projects/cat-api/46_image_slider/style.css
 create mode 100644 projects/cat-api/app.js
 create mode 100644 projects/cat-api/index.html
 create mode 100644 projects/cat-api/styles.css
 create mode 100644 projects/currency-converter/index.html
 create mode 100644 projects/currency-converter/readme.md
 create mode 100644 projects/currency-converter/script.js
 create mode 100644 projects/currency-converter/style.css
 create mode 100644 projects/english-dictionary/index.html
 create mode 100644 projects/english-dictionary/script.js
 create mode 100644 projects/english-dictionary/style.css
 create mode 100644 projects/feedback-ui/assets/review.png
 create mode 100644 projects/feedback-ui/font/sans.ttf
 create mode 100644 projects/feedback-ui/index.html
 create mode 100644 projects/feedback-ui/script.js
 create mode 100644 projects/feedback-ui/style.css
 create mode 100644 projects/loan-calculator/index.html
 create mode 100644 projects/loan-calculator/index.js
 create mode 100644 projects/loan-calculator/style.css
 create mode 100644 projects/movie-quote-generator/index.html
 create mode 100644 projects/movie-quote-generator/script.js
 create mode 100644 projects/movie-quote-generator/style.css
 create mode 100644 projects/notes-taking-app/icon.png
 create mode 100644 projects/notes-taking-app/index.html
 create mode 100644 projects/notes-taking-app/script.js
 create mode 100644 projects/notes-taking-app/style.css
 create mode 100644 projects/project-idea-generator/index.html
 create mode 100644 projects/project-idea-generator/src/css/styles.css
 create mode 100644 projects/project-idea-generator/src/js/main.js
 create mode 100644 projects/project-idea-generator/src/js/projects.js
 create mode 100644 projects/temp-converter/icon.png
 create mode 100644 projects/temp-converter/index.html
 create mode 100644 projects/temp-converter/script.js
 create mode 100644 projects/temp-converter/style.css
 create mode 100644 projects/weight-converter/Assets/Assets.png
 create mode 100644 projects/weight-converter/app.js
 create mode 100644 projects/weight-converter/index.html
 create mode 100644 projects/weight-converter/style.css

diff --git a/projects/anime-pics-genrator/index.html b/projects/anime-pics-genrator/index.html
new file mode 100644
index 0000000..aeedb6f
--- /dev/null
+++ b/projects/anime-pics-genrator/index.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Random Anime profile</title>
+    <link rel="stylesheet" href="style.css" />
+    <script src="script.js" defer></script>
+  </head>
+  <body>
+    <!-- main container  -->
+    <div class="main-container">
+      <!-- the anime container  -->
+      <div class="anime-container">
+        <h3>Anime Pics Genrator</h3>
+        <h2>genrates Random Animes profile pics</h2>
+        <button id="btn" class="get-anime">Get Anime</button>
+        <!-- the anime box  -->
+        <div class="anime-box">
+          <div class="hero-img">
+            <img
+              src="https://w.wallhaven.cc/full/lq/wallhaven-lqxr3y.jpg"
+              class="anime"
+              alt="hero-img"
+            />
+          </div>
+          <div class="hero-name">
+            <h3></h3>
+          </div>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/projects/anime-pics-genrator/script.js b/projects/anime-pics-genrator/script.js
new file mode 100644
index 0000000..9772363
--- /dev/null
+++ b/projects/anime-pics-genrator/script.js
@@ -0,0 +1,14 @@
+const getBTN = document.getElementById("btn");
+const animeBox = document.querySelector(".anime-box");
+const anime = document.querySelector(".anime");
+const animeName = document.querySelector(".hero-name");
+
+const api_url = `https://api.catboys.com/img`;
+
+getBTN.addEventListener("click", async function () {
+  const response = await fetch(api_url);
+  const data = await response.json();
+  anime.src = data.url;
+  animeBox.style.display = "block";
+  animeName.textContent = data.artist;
+});
diff --git a/projects/anime-pics-genrator/style.css b/projects/anime-pics-genrator/style.css
new file mode 100644
index 0000000..d4471af
--- /dev/null
+++ b/projects/anime-pics-genrator/style.css
@@ -0,0 +1,88 @@
+@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap");
+
+* {
+  box-sizing: border-box;
+}
+
+body {
+  font-family: "Poppins", sans-serif;
+  font-weight: normal;
+  background: linear-gradient(to right, #00afff, #00ff6c);
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  height: 100vh;
+  overflow: hidden;
+  margin: 0;
+}
+
+.main-container {
+  background-color: rgba(255, 255, 255, 0.863);
+  border-radius: 10px;
+  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1), 0 6px 6px rgba(0, 0, 0, 0.1);
+  text-align: center;
+  padding: 10px;
+  max-width: 100%;
+  width: 800px;
+}
+
+.anime-container h3 {
+  font-size: 20px;
+  font-weight: 600;
+  text-transform: capitalize;
+  padding-bottom: 10px;
+  letter-spacing: 0.9px;
+}
+
+.anime-container h2 {
+  line-height: 30px;
+  word-spacing: 1px;
+  margin-bottom: 30px;
+  position: relative;
+}
+
+.get-anime {
+  margin-bottom: 30px;
+  background-color: rgba(0, 0, 0, 0.774);
+  color: #fff;
+  padding: 10px 30px;
+  border: none;
+  border-radius: 6px;
+  outline: none;
+  font-size: 16px;
+  font-weight: 200;
+  cursor: pointer;
+  letter-spacing: 1px;
+}
+
+.anime-box {
+  display: none;
+}
+
+.anime-box img {
+  height: 300px;
+  width: 300px;
+  border-radius: 50%;
+  border: 10px solid #005da3;
+  align-items: center;
+}
+
+.hero-name {
+  margin-bottom: 30px;
+  background-color: rgba(0, 0, 0, 0.774);
+  color: #fff;
+  padding: 10px 30px;
+  border: none;
+  border-radius: 6px;
+  outline: none;
+  font-size: 17px;
+  font-weight: bold;
+}
+
+@media screen and (max-width: 500px) {
+  .main-container {
+    width: 450px;
+    flex-wrap: wrap;
+  }
+}
diff --git a/projects/bmi-calculator/index.html b/projects/bmi-calculator/index.html
new file mode 100644
index 0000000..77c1be9
--- /dev/null
+++ b/projects/bmi-calculator/index.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
+    <title>BMI</title>
+    <style>
+        *{
+            padding: 10px;
+            margin: 10px;
+        }
+        p{
+            font-weight: bold;
+        }
+    </style>
+</head>
+<body>
+    <div class="container d-block text-center">
+        <h2 class="p-2">Body Mass Index Calculator using Metric Units</h2>
+        Your Height: <input class="p-2 m-2" type="number" name="cm" id="cm" placeholder="centimeters">
+        <br/>
+        Your Weight: <input class="p-2 m-2" type="number" name="weight" id="weight" placeholder="kilograms">
+        <br/>
+        <button class="btn btn-primary p-2 m-2" onclick="fun()">Compute BMI</button><br/>
+        Your BMI: <input class="p-2 m-2" type="text" name="bmi" id="bmi" disabled>
+        <h4 class="p-2 m-2"></h4>
+    </div>
+    
+</body>
+</html>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" ></script>
+<script src="./script.js"></script>
\ No newline at end of file
diff --git a/projects/bmi-calculator/script.js b/projects/bmi-calculator/script.js
new file mode 100644
index 0000000..1fdba94
--- /dev/null
+++ b/projects/bmi-calculator/script.js
@@ -0,0 +1,24 @@
+function fun()
+    {
+        var cm = document.getElementById("cm").value ;
+        cm = cm/100;
+        var w = document.getElementById("weight").value;
+        var bmi = w/(cm*cm);
+        document.getElementById("bmi").value = bmi;
+        if(bmi<18.5)
+        {
+            document.querySelector("h4").innerHTML = 'Under weight';
+        }
+        else if(bmi>=18.5 && bmi <=24.9)
+        {
+            document.querySelector("h4").innerHTML = 'Normal weight';
+        }
+        else if(bmi>=25 && bmi <= 29.9)
+        {
+            document.querySelector("h4").innerHTML = 'Overweight';
+        }
+        else if(bmi>=30)
+        {
+            document.querySelector("h4").innerHTML = 'Obesity';
+        }
+    }
\ No newline at end of file
diff --git a/projects/cat-api/45_Chatting_app/client/index.html b/projects/cat-api/45_Chatting_app/client/index.html
new file mode 100644
index 0000000..1b66ec2
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/client/index.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <link rel="stylesheet" href="styles.css"> 
+    <!-- <link rel="stylesheet" href="formStyle.css"> -->
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <script src="https://code.iconify.design/2/2.0.3/iconify.min.js"></script>
+    <title>Warta - Chatting App</title>
+</head>
+<body>
+    <div class="new-room">
+        <h1>Warta App</h1>
+        <form id="createForm" name="roomF" onsubmit="return viewSelection()">
+            <input type="text" id="name" name="nameInput" placeholder="Enter your name" autocomplete="off" autofocus><br>
+            <div class="radio">
+               
+            <input type="radio" id="create-room" class="choose" name="choose" onclick="javascript:checkSelection();" value="create"> <label for="create-room" class="lableCreate">Create room  </label>
+            
+            <!-- </div>
+            <div style="display: flex;"> -->
+               
+            <input type="radio" id="join-room" class="choose" style="margin-left: 3%;" name="choose" onclick="javascript:checkSelection();" value="join">  <label for="join-room" class="lableJoin">Join room  </label><br>
+        
+        </div>
+            <!-- <input type="text" id="roomJ" class="room" name="room" placeholder="Enter room name"><br> -->
+            <input type="text" id="roomC" class="room" name="room" placeholder="Create room name" autocomplete="off" autofocus><br>
+    
+            <input class="button-submit" onclick="javascript:viewSelection();" type="button" value="Next" >
+        </form>
+    </div>
+    <div class="chat">
+        <div class="status-bar">      
+            <h2>Warta App</h2>
+            <h4></h4>
+        </div>
+    
+        <div class="chat-container">
+            <div class="conversation">
+                 <div class="conversation-container">
+
+              
+                </div>  
+                <form id="form-container" onclick="return checkNull();">
+                    <input class="input-msg" name="input" placeholder="Type a message" autocomplete="off" autofocus></input>
+                    <button class="send" type="submit">
+                        <div class="circle">
+                             <span class="iconify" data-icon="zmdi:mail-send"></span>
+                        </div>
+                    </button>
+                </form>
+            </div>        
+        </div>
+    </div>  
+    <!-- <script src="http://localhost:8000/socket.io/socket.io.js"></script> -->
+    <script src='https://guarded-falls-33664.herokuapp.com/socket.io/socket.io.js'></script>
+
+    <!-- <script src="node_modules/socket.io-client/dist/socket.io.js"></script> -->
+    <script src="index.js"></script>
+    <script>
+        function checkNull(){
+            if(document.querySelector(".input-msg").value === ''){
+                return false;
+            }
+        }
+        
+        function checkSelection(){
+        
+        if(document.querySelector(".radio #create-room").checked){
+            document.querySelector("#roomC").style.visibility = 'visible';
+        }
+        if(document.querySelector(".radio #join-room").checked){
+            document.querySelector("#roomC").style.visibility = 'visible';
+           document.querySelector("#roomC").placeholder="Enter room name";
+        }
+    }
+
+    function validateForm() {
+        if(document.forms["roomF"]["nameInput"].value === '') {
+            alert("Name cannot be empty");
+            return false;
+        }
+        if(document.querySelector("#roomC").value === ''){
+            alert("Please provide a room name");
+            return false;
+        }
+    }
+    </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/cat-api/45_Chatting_app/client/index.js b/projects/cat-api/45_Chatting_app/client/index.js
new file mode 100644
index 0000000..1fc3df3
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/client/index.js
@@ -0,0 +1,152 @@
+//  import {io} from "./node_modules/socket.io-client";
+//const io = require('socket.io-client');
+
+var name1, room;
+//var nameArray = [];
+
+
+
+function viewSelection(){
+    
+    name1 =  document.querySelector("#name").value;
+    room =  document.querySelector("#roomC").value;
+    
+    if(name1 === '') { 
+        alert("Name cannot be empty");
+        return false;
+    }
+    else if(room === ''){ 
+         alert("Please provide a room name");
+         return false;
+         }
+    document.body.style.background = "#efe7dd url('https://cloud.githubusercontent.com/assets/398893/15136779/4e765036-1639-11e6-9201-67e728e86f39.jpg') repeat";
+
+
+    const form = document.getElementById("form-container");
+    const messageInput = document.querySelector(".input-msg");
+    const messageContainer = document.querySelector(".conversation-container");
+
+    const appendCopyright = (message) => {
+    
+        const messageElement = document.createElement('div');
+        messageElement.innerText = message;
+        messageElement.classList.add('otherCopyright');
+        messageContainer.append(messageElement);
+        try{
+        new Audio('message.mp3').play();
+        }
+        catch(err){
+            new Audio('message.mp3').play();
+    
+        }
+       
+    }    
+    appendCopyright("Copyright © Akhil Choubey");
+
+    if(document.querySelector("#create-room").checked){
+        alert(`Share following details with your chatmates\r\n ----------------------------------------------- \r\n Website link : https://akhil-warta.netlify.app \r\n Room name : ${room}`);
+        // appendCopyright("You created this room");
+        // nameArray.push(name1);
+    } 
+   
+    //console.log(nameArray);
+    document.querySelector(".chat").style.display = 'block';
+    document.querySelector(".new-room").style.display = 'none';
+
+    document.querySelector(".status-bar h4").innerText = `Room Name : ${room}`;
+    // const socket = io("http://localhost:8000");
+    const socket = io("https://guarded-falls-33664.herokuapp.com/");
+
+
+const append = (message) => {
+    
+    //if(document.querySelector("#join-room").checked){
+   //     appendCopyright(`${cruator} created this room`);
+    //}
+    const messageElement = document.createElement('div');
+    messageElement.innerText = message;
+    messageElement.classList.add('other');
+    messageContainer.append(messageElement);
+    try{
+    new Audio('message.mp3').play();
+    }
+    catch(err){
+        new Audio('message.mp3').play();
+
+    }
+   
+}
+
+const appendSend = (message) => {
+    const messageElement = document.createElement('div');
+    messageElement.innerText = message;
+    messageElement.classList.add('message');
+    messageElement.classList.add('sent');
+    messageContainer.append(messageElement);
+}
+
+const appendRecieved = (message, name) => {
+    
+
+    const messageElement = document.createElement('div');
+    messageElement.classList.add('message');
+    messageElement.classList.add('received');
+
+    const Name = document.createElement('h1');
+    Name.classList.add('person');
+    Name.innerText= name;
+
+    const randomColor =((1<<24)*Math.random() | 0).toString(16)
+    if(randomColor[0] === "0") randomColor = "800080";
+    const color = "#"+randomColor;
+
+    messageElement.innerHTML+=`<h1 class='person' style="color: ${color};" >${name}</h1>
+    ${message}`;
+
+    //messageElement.innerText = message;
+    messageContainer.append(messageElement);
+
+    try{
+    new Audio('message.mp3').play();
+    }
+    catch(err){
+        new Audio('message.mp3').play();
+
+    }
+}
+
+form.addEventListener('submit', (e)=>{
+    e.preventDefault();
+    const message = messageInput.value;
+    appendSend(`${message}`);
+    socket.emit('send', message, room);
+    messageInput.value = '';
+});
+
+socket.emit("new-user-joined" , name1, room);
+socket.emit("room" , room);
+//var curator = 0;
+//if(document.querySelector("#join-room").checked) {
+  //  curator = 1;
+//}
+socket.on('user-joined', (name1) =>{
+    append(`${name1} joined` ); //, data.creator);
+    
+  //  appendCopyright(`${data.creator} created this room`);
+    
+});
+
+
+socket.on('leave', (data) =>{
+    append(`${data.name1} left`);
+});
+
+socket.on('receive', (data) =>{
+    appendRecieved(`${data.message}`,`${data.name1}`);
+});
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/projects/cat-api/45_Chatting_app/client/message.mp3 b/projects/cat-api/45_Chatting_app/client/message.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..049cfa88aea4bbee112318efaae22d0167ddf052
GIT binary patch
literal 24794
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

literal 0
HcmV?d00001

diff --git a/projects/cat-api/45_Chatting_app/client/package-lock.json b/projects/cat-api/45_Chatting_app/client/package-lock.json
new file mode 100644
index 0000000..a219e4d
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/client/package-lock.json
@@ -0,0 +1,114 @@
+{
+  "name": "frontend",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@types/component-emitter": {
+      "version": "1.2.10",
+      "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
+      "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg=="
+    },
+    "backo2": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
+    },
+    "base64-arraybuffer": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
+      "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
+    },
+    "debug": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+      "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "engine.io-client": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz",
+      "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==",
+      "requires": {
+        "base64-arraybuffer": "0.1.4",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1",
+        "engine.io-parser": "~4.0.1",
+        "has-cors": "1.1.0",
+        "parseqs": "0.0.6",
+        "parseuri": "0.0.6",
+        "ws": "~7.4.2",
+        "yeast": "0.1.2"
+      }
+    },
+    "engine.io-parser": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz",
+      "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==",
+      "requires": {
+        "base64-arraybuffer": "0.1.4"
+      }
+    },
+    "has-cors": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+    },
+    "parseqs": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
+      "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
+    },
+    "parseuri": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
+      "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
+    },
+    "socket.io-client": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.3.tgz",
+      "integrity": "sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA==",
+      "requires": {
+        "@types/component-emitter": "^1.2.10",
+        "backo2": "~1.0.2",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1",
+        "engine.io-client": "~5.1.2",
+        "parseuri": "0.0.6",
+        "socket.io-parser": "~4.0.4"
+      }
+    },
+    "socket.io-parser": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
+      "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
+      "requires": {
+        "@types/component-emitter": "^1.2.10",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1"
+      }
+    },
+    "ws": {
+      "version": "7.4.6",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+      "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
+    },
+    "yeast": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
+    }
+  }
+}
diff --git a/projects/cat-api/45_Chatting_app/client/package.json b/projects/cat-api/45_Chatting_app/client/package.json
new file mode 100644
index 0000000..db3506f
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/client/package.json
@@ -0,0 +1,14 @@
+{
+  "name": "frontend",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "socket.io-client": "^4.1.3"
+  }
+}
diff --git a/projects/cat-api/45_Chatting_app/client/styles.css b/projects/cat-api/45_Chatting_app/client/styles.css
new file mode 100644
index 0000000..e0b84a4
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/client/styles.css
@@ -0,0 +1,419 @@
+*, *:before, *:after {
+  box-sizing: inherit;
+}
+
+html {
+  box-sizing: border-box;
+  height: 100%;
+  margin: 0;
+  padding: 0;
+}
+
+body {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-family: "Roboto", sans-serif;
+  margin: 0;
+  padding: 0;
+  height: 100%;
+   background: #50a3a2; /* url("https://cloud.githubusercontent.com/assets/398893/15136779/4e765036-1639-11e6-9201-67e728e86f39.jpg") repeat; */
+
+}  
+
+/* room form styles */
+.new-room h1{
+  margin: 0% auto;
+  padding-top: 80px;
+  text-align: center;
+  top: 27%;
+  font-size: 40px;
+  font-weight: 200;
+  color:white;
+}
+
+#createForm {
+  padding-top: 20px;
+  top: 30%;
+  position: relative;
+  display: block;
+}
+#name, #roomC{
+  border: 1px solid white;/* rgba(0,78,69,0.4); rgba(252, 252, 252, 0.4); */ 
+  background-color: rgba(252, 252, 252, 0.2); 
+  width: 250px;
+  border-radius: 3px;
+  font-family: "Source Sans Pro", sans-serif;
+  padding: 10px 15px;
+  margin: 0 auto 10px auto;
+  display: block;
+  text-align: center;
+  font-size: 18px;
+  color: white;
+  font-weight: 300;
+}
+.radio {
+  display: flex; 
+  margin-bottom: 5px;
+}
+
+
+.button-submit {
+  display: block;
+  appearance: none;
+  outline: 0;
+  background-color: white;
+  border: 0;
+  padding: 10px 15px;
+  margin: 0 auto 10px auto;
+  color: #50a3a2;
+  border-radius: 3px;
+  width: 250px;
+  font-size: 18px;
+}
+
+.choose {
+  margin-left: 40%;
+  display: flex;
+}
+
+#roomC{
+  visibility: hidden;
+}
+
+.lableCreate{
+color: white; padding-top: 4px;
+}
+.lableJoin{
+color: white; padding-top: 4px;
+}
+
+
+/* status bar */
+.status-room {
+width:70%;
+text-align: right;
+}
+
+.status-bar {
+  height: 57px;
+  background: #004e45;
+  color: #fff;
+  font-size: 24px;
+  padding: 0 8px;
+  text-align: center;
+}
+h2{
+    margin: 0;
+}
+h4{
+  margin: 0;
+  font-size: 12px;
+}
+.copyright{
+    color:rgb(158, 157, 152);
+    font-size: 11px;
+    margin: 0;
+}
+
+.status-bar:after {
+  content: "";
+  display: table;
+  clear: both;
+}
+
+/* .status-bar div {
+  float: right;
+  position: fixed;
+  top: 50%;
+  transform: translateY(-50%);
+  margin: 0 0 0 8px;
+  font-weight: 600;
+} */
+.choose{
+width: 2%;
+height: 20px;
+}
+
+/* chat container styling */
+.chat {
+  height: calc(79%);
+  display: none;
+}
+
+.chat-container {
+  height: 100%;
+}
+
+.conversation {
+  height: calc(100%);
+  position: relative;
+  z-index: 0;
+}
+
+.conversation ::-webkit-scrollbar {
+  transition: all .5s;
+  width: 5px;
+  height: 1px;
+  z-index: 10;
+}
+
+.conversation ::-webkit-scrollbar-track {
+  background: transparent;
+}
+
+.conversation ::-webkit-scrollbar-thumb {
+  background: #b3ada7;
+}
+
+.conversation .conversation-container {
+  height: calc(100%);
+  box-shadow: inset 0 10px 10px -10px #000000;
+  overflow-x: hidden;
+  padding: 0 16px;
+  /* margin-bottom: 5px; */
+}
+
+.conversation .conversation-container:after {
+  content: "";
+  display: table;
+  clear: both;
+}
+
+/* Messages */
+
+.message {
+  color: #000;
+  clear: both;
+  line-height: 18px;
+  font-size: 15px;
+  padding: 8px;
+  position: relative;
+  margin: 8px 0;
+  max-width: 85%;
+  word-wrap: break-word;
+  z-index: -1;
+}
+
+.person{
+  background-color: none;
+  color:blue;
+  margin: 0;
+  font-size: 15px;
+  position: relative;
+}
+
+.message:after {
+  position: absolute;
+  content: "";
+  width: 0;
+  height: 0;
+  border-style: solid;
+}
+.message:first-child {
+  margin: 16px 0 8px;
+}
+
+.message.received {
+  background: #fff;
+  border-radius: 0px 5px 5px 5px;
+  float: left;
+}
+.message.received:after {
+  border-width: 0px 10px 10px 0;
+  border-color: transparent #fff transparent transparent;
+  top: 0;
+  left: -10px;
+}
+.message.sent {
+  background: #e1ffc7;
+  border-radius: 5px 0px 5px 5px;
+  float: right;
+}
+
+.message.sent:after {
+  border-width: 0px 0 10px 10px;
+  border-color: transparent transparent transparent #e1ffc7;
+  top: 0;
+  right: -10px;
+}    
+
+.other{
+color: rgb(141, 136, 136);
+clear: both;
+line-height: 18px;
+font-size: 15px;
+padding: 8px;
+position: relative;
+margin: 8px 3px;
+word-wrap: break-word;
+z-index: -1; 
+background-color: rgb(187, 224, 224);
+max-width: 85%;
+/* line-height: 21px; */
+text-align: center;
+width:8rem; 
+display: block;
+margin: auto;
+border-radius: 4rem;
+margin-top: 4px;
+margin-bottom: 4px;
+}
+/* form styling */
+.conversation-compose {
+  display: flex;
+  flex-direction: row;
+  align-items: flex-end;
+  overflow: hidden;
+  height: 50px;
+  width: 100%;
+  z-index: 2;
+  position: sticky;
+  top: 88%;
+
+}
+
+#form-container{
+  display: block;
+  margin: auto;
+  text-align: center;
+  width: 100%;
+}
+
+input {
+  background: #fff;
+  height: 100%;
+  width: 91%;
+  border-radius: 4rem;
+
+}
+
+.input-msg {
+  border: 0;
+  flex: 1 1 auto;
+  font-size: 16px;
+  margin: 0;
+  outline: none;
+  min-width: 50px;
+  padding: 17px;
+  height: 48px;
+  border: #000;
+  border-width: 2px;
+}
+.send {
+  background: transparent;
+  border: 0;
+  cursor: pointer;
+  flex: 0 0 auto;
+  margin-left: 8px;
+  margin-right: 8px;
+  
+  padding: 0;
+  position: relative;
+  outline: none;
+}
+
+.send .circle {
+  background: #008a7c;
+  border-radius: 50%;
+  color: #fff;
+  position: relative;
+  width: 48px;
+  height: 48px;
+  
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.send .circle .iconify {
+  font-size: 44px;
+  height: 20px;
+
+  margin-left: 5px;
+}
+
+.otherCopyright{
+  color: rgb(141, 136, 136);
+  clear: both;
+  line-height: 18px;
+  font-size: 15px;
+  padding: 8px;
+  position: relative;
+  margin: 8px 3px;
+  word-wrap: break-word;
+  z-index: -1; 
+  background-color: rgb(187, 224, 224);
+  max-width: 85%;
+  /* line-height: 21px; */
+  text-align: center;
+  width:13rem; 
+  display: block;
+  margin: auto;
+  border-radius: 9px;
+  margin-top: 4px;
+  margin-bottom: 4px;
+ }
+
+
+
+
+@media (max-width: 768px) {
+  h4{
+    font-size: 11px;
+  }
+
+  .status-bar {
+      height: 47px;
+      font-size: 18px;
+      padding: 0 8px;
+      text-align: center;
+    }
+    .copyright{
+      font-size: 8px;
+  }
+  input {
+      width: 77%;
+  }
+  .chat {
+      height: calc(81%);
+    }
+  .other{ 
+    line-height:8px;
+    font-size: 10px;
+    width:6rem;
+  }  
+  .otherCopyright{
+    line-height:8px;
+    font-size: 10px;
+    width:9rem;
+  }
+  .radio {
+    margin-right: 11%;
+    font-size: 19px;
+  }
+  .choose {
+    width: 25px;
+    height: 46px;
+   
+  }
+  #create-room {
+    margin-left: 17%;
+  }
+  #join-room {
+    margin-left: 3%;
+  }
+  .lableCreate {
+    color: white;
+    padding-top: 14px;
+    margin-left: 0;
+    width: 168px;
+  }
+  .lableJoin {
+    color: white;
+    padding-top: 14px;
+    width: 143px;
+  }
+}
+
+
+
diff --git a/projects/cat-api/45_Chatting_app/server/Procfile b/projects/cat-api/45_Chatting_app/server/Procfile
new file mode 100644
index 0000000..9c4dee9
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/server/Procfile
@@ -0,0 +1 @@
+node server.js
\ No newline at end of file
diff --git a/projects/cat-api/45_Chatting_app/server/package-lock.json b/projects/cat-api/45_Chatting_app/server/package-lock.json
new file mode 100644
index 0000000..e31cdb6
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/server/package-lock.json
@@ -0,0 +1,621 @@
+{
+  "name": "backend",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@types/component-emitter": {
+      "version": "1.2.10",
+      "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
+      "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg=="
+    },
+    "@types/cookie": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+      "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+    },
+    "@types/cors": {
+      "version": "2.8.12",
+      "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
+      "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
+    },
+    "@types/node": {
+      "version": "16.4.13",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.13.tgz",
+      "integrity": "sha512-bLL69sKtd25w7p1nvg9pigE4gtKVpGTPojBFLMkGHXuUgap2sLqQt2qUnqmVCDfzGUL0DRNZP+1prIZJbMeAXg=="
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+    },
+    "backo2": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
+    },
+    "base64-arraybuffer": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
+      "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
+    },
+    "base64id": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+      "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      }
+    },
+    "bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+    },
+    "cors": {
+      "version": "2.8.5",
+      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+      "requires": {
+        "object-assign": "^4",
+        "vary": "^1"
+      }
+    },
+    "debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+    },
+    "engine.io": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz",
+      "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==",
+      "requires": {
+        "accepts": "~1.3.4",
+        "base64id": "2.0.0",
+        "cookie": "~0.4.1",
+        "cors": "~2.8.5",
+        "debug": "~4.3.1",
+        "engine.io-parser": "~4.0.0",
+        "ws": "~7.4.2"
+      },
+      "dependencies": {
+        "cookie": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+          "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
+        },
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "engine.io-client": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz",
+      "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==",
+      "requires": {
+        "base64-arraybuffer": "0.1.4",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1",
+        "engine.io-parser": "~4.0.1",
+        "has-cors": "1.1.0",
+        "parseqs": "0.0.6",
+        "parseuri": "0.0.6",
+        "ws": "~7.4.2",
+        "yeast": "0.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "engine.io-parser": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz",
+      "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==",
+      "requires": {
+        "base64-arraybuffer": "0.1.4"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+    },
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      }
+    },
+    "forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+    },
+    "has-cors": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
+    },
+    "http": {
+      "version": "0.0.1-security",
+      "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz",
+      "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g=="
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+    },
+    "ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+    },
+    "mime-db": {
+      "version": "1.49.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
+      "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
+    },
+    "mime-types": {
+      "version": "2.1.32",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
+      "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
+      "requires": {
+        "mime-db": "1.49.0"
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "parseqs": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
+      "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
+    },
+    "parseuri": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
+      "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+    },
+    "proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "requires": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      }
+    },
+    "qs": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+    },
+    "socket.io": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz",
+      "integrity": "sha512-tLkaY13RcO4nIRh1K2hT5iuotfTaIQw7cVIe0FUykN3SuQi0cm7ALxuyT5/CtDswOMWUzMGTibxYNx/gU7In+Q==",
+      "requires": {
+        "@types/cookie": "^0.4.0",
+        "@types/cors": "^2.8.10",
+        "@types/node": ">=10.0.0",
+        "accepts": "~1.3.4",
+        "base64id": "~2.0.0",
+        "debug": "~4.3.1",
+        "engine.io": "~5.1.1",
+        "socket.io-adapter": "~2.3.1",
+        "socket.io-parser": "~4.0.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "socket.io-adapter": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz",
+      "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw=="
+    },
+    "socket.io-client": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.3.tgz",
+      "integrity": "sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA==",
+      "requires": {
+        "@types/component-emitter": "^1.2.10",
+        "backo2": "~1.0.2",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1",
+        "engine.io-client": "~5.1.2",
+        "parseuri": "0.0.6",
+        "socket.io-parser": "~4.0.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "socket.io-parser": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
+      "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
+      "requires": {
+        "@types/component-emitter": "^1.2.10",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+    },
+    "ws": {
+      "version": "7.4.6",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+      "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
+    },
+    "yeast": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
+    }
+  }
+}
diff --git a/projects/cat-api/45_Chatting_app/server/package.json b/projects/cat-api/45_Chatting_app/server/package.json
new file mode 100644
index 0000000..b7aad51
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/server/package.json
@@ -0,0 +1,18 @@
+{
+  "name": "backend",
+  "version": "1.0.0",
+  "description": "",
+  "main": "server.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "cors": "^2.8.5",
+    "express": "^4.17.1",
+    "http": "0.0.1-security",
+    "socket.io": "^4.1.3",
+    "socket.io-client": "^4.1.3"
+  }
+}
diff --git a/projects/cat-api/45_Chatting_app/server/server.js b/projects/cat-api/45_Chatting_app/server/server.js
new file mode 100644
index 0000000..365fa16
--- /dev/null
+++ b/projects/cat-api/45_Chatting_app/server/server.js
@@ -0,0 +1,62 @@
+
+var express = require('express');
+var http = require('http');
+
+var app = express();
+var server = http.createServer(app).listen(process.env.PORT || 8000);;
+var cors = require('cors');
+app.use(cors({origin: 'https://akhil-warta.netlify.app'}));
+const io = require('socket.io')(server,{
+    cors: {
+        origin: 'https://akhil-warta.netlify.app'
+        // origin: 'http://127.0.0.1:5500' 
+       // header: ('Access-Control-Allow-Origin', "*")
+    }
+}); 
+
+// const users = {};
+
+// io.on("connection", socket =>{
+//    // console.log("New user" ,socket.id);
+//     socket.on('new-user-joined', name1 =>{
+//         console.log('New user', name1);
+//         users[socket.id] = name1;
+//         socket.broadcast.emit('user-joined' , name1);
+//     });
+
+//     socket.on('send', message =>{
+//         socket.broadcast.emit('receive',{message: message, name1: users[socket.id]});
+//     });
+//     socket.on('disconnect', message =>{
+//         socket.broadcast.emit('leave',{message: message, name1: users[socket.id]});
+//         delete users[socket.id];
+//     });
+
+// });
+
+const users = {};
+//const userName = [];
+io.on("connection", socket =>{
+   // console.log("New user" ,socket.id);
+
+    socket.on('new-user-joined', (name1, room) =>{
+        
+        //userName.push(name1);
+        socket.join(room);
+        console.log('New user', name1);
+        users[socket.id] = name1;
+        socket.to(room).emit('user-joined' , name1); // {name1, creator:userName[0]});
+    });
+
+    socket.on('send', (message, room) =>{
+        socket.to(room).emit('receive',{message: message, name1: users[socket.id]});
+    });
+    socket.on("room" , (room) =>{
+        socket.on('disconnect', () =>{
+        socket.to(room).emit('leave',{ name1: users[socket.id]});
+        delete users[socket.id];
+    });
+})
+
+
+});
diff --git a/projects/cat-api/46_image_slider/app.js b/projects/cat-api/46_image_slider/app.js
new file mode 100644
index 0000000..209dc7d
--- /dev/null
+++ b/projects/cat-api/46_image_slider/app.js
@@ -0,0 +1,158 @@
+// Slider(all Slides in a container)
+const slider = document.querySelector('.slider');
+// All trails
+const trail = document.querySelector('.trail').querySelectorAll('div');
+
+// Transform value
+let value = 0;
+// trail index number
+let trailValue = 0;
+// interval (Duration)
+let interval = 4000;
+
+// Function to slide forward
+const slide = (condition) => {
+	// CLear interval
+	clearInterval(start);
+	// update value and trailValue
+	condition === 'increase' ? initiateINC() : initiateDEC();
+	// move slide
+	move(value, trailValue);
+	// Restart Animation
+	animate();
+	// start interal for slides back
+	start = setInterval(() => slide('increase'), interval);
+};
+
+// function for increase(forward, next) configuration
+const initiateINC = () => {
+	// Remove active from all trails
+	trail.forEach((cur) => cur.classList.remove('active'));
+	// increase transform value
+	value === 80 ? (value = 0) : (value += 20);
+	// update trailValue based on value
+	trailUpdate();
+};
+
+// function for decrease(backward, previous) configuration
+const initiateDEC = () => {
+	// Remove active from all trails
+	trail.forEach((cur) => cur.classList.remove('active'));
+	// decrease transform value
+	value === 0 ? (value = 80) : (value -= 20);
+	// update trailValue based on value
+	trailUpdate();
+};
+
+// function to transform slide
+const move = (S, T) => {
+	// transform slider
+	slider.style.transform = `translateX(-${S}%)`;
+	//add active class to the current trail
+	trail[T].classList.add('active');
+};
+
+const tl = gsap.timeline({ defaults: { duration: 0.6, ease: 'power2.inOut' } });
+tl.from('.bg', { x: '-100%', opacity: 0 })
+	.from('p', { opacity: 0 }, '-=0.3')
+	.from('h1', { opacity: 0, y: '30px' }, '-=0.3')
+	.from('button', { opacity: 0, y: '-40px' }, '-=0.8');
+
+// function to restart animation
+const animate = () => tl.restart();
+
+// function to update trailValue based on slide value
+const trailUpdate = () => {
+	if (value === 0) {
+		trailValue = 0;
+	} else if (value === 20) {
+		trailValue = 1;
+	} else if (value === 40) {
+		trailValue = 2;
+	} else if (value === 60) {
+		trailValue = 3;
+	} else {
+		trailValue = 4;
+	}
+};
+
+// Start interval for slides
+let start = setInterval(() => slide('increase'), interval);
+
+// Next  and  Previous button function (SVG icon with different classes)
+document.querySelectorAll('svg').forEach((cur) => {
+	// Assign function based on the class Name("next" and "prev")
+	cur.addEventListener('click', () =>
+		cur.classList.contains('next') ? slide('increase') : slide('decrease')
+	);
+});
+
+// function to slide when trail is clicked
+const clickCheck = (e) => {
+	// CLear interval
+	clearInterval(start);
+	// remove active class from all trails
+	trail.forEach((cur) => cur.classList.remove('active'));
+	// Get selected trail
+	const check = e.target;
+	// add active class
+	check.classList.add('active');
+
+	// Update slide value based on the selected trail
+	if (check.classList.contains('box1')) {
+		value = 0;
+	} else if (check.classList.contains('box2')) {
+		value = 20;
+	} else if (check.classList.contains('box3')) {
+		value = 40;
+	} else if (check.classList.contains('box4')) {
+		value = 60;
+	} else {
+		value = 80;
+	}
+	// update trail based on value
+	trailUpdate();
+	// transfrom slide
+	move(value, trailValue);
+	// start animation
+	animate();
+	// start interval
+	start = setInterval(() => slide('increase'), interval);
+};
+
+// Add function to all trails
+trail.forEach((cur) => cur.addEventListener('click', (ev) => clickCheck(ev)));
+
+// Mobile touch Slide Section
+const touchSlide = (() => {
+	let start, move, change, sliderWidth;
+
+	// Do this on initial touch on screen
+	slider.addEventListener('touchstart', (e) => {
+		// get the touche position of X on the screen
+		start = e.touches[0].clientX;
+		// (each slide with) the width of the slider container divided by the number of slides
+		sliderWidth = slider.clientWidth / trail.length;
+	});
+
+	// Do this on touchDrag on screen
+	slider.addEventListener('touchmove', (e) => {
+		// prevent default function
+		e.preventDefault();
+		// get the touche position of X on the screen when dragging stops
+		move = e.touches[0].clientX;
+		// Subtract initial position from end position and save to change variabla
+		change = start - move;
+	});
+
+	const mobile = (e) => {
+		// if change is greater than a quarter of sliderWidth, next else Do NOTHING
+		change > sliderWidth / 4 ? slide('increase') : null;
+		// if change * -1 is greater than a quarter of sliderWidth, prev else Do NOTHING
+		change * -1 > sliderWidth / 4 ? slide('decrease') : null;
+		// reset all variable to 0
+		[start, move, change, sliderWidth] = [0, 0, 0, 0];
+	};
+	// call mobile on touch end
+	slider.addEventListener('touchend', mobile);
+})();
diff --git a/projects/cat-api/46_image_slider/index.html b/projects/cat-api/46_image_slider/index.html
new file mode 100644
index 0000000..44196e5
--- /dev/null
+++ b/projects/cat-api/46_image_slider/index.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="UTF-8" />
+		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
+		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+        <link rel="stylesheet" href="./style.css">
+		<title>Image Slider</title>
+	</head>
+	<body>
+		<div class="container">
+			<div class="slider">
+				<div class="box1 box">
+					<div class="bg"></div>
+					<div class="details">
+						<h1>I'm the first Box</h1>
+						<p>
+							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
+							pellentesque eget.
+						</p>
+						<button>Check Now</button>
+					</div>
+
+					<div class="illustration"><div class="inner"></div></div>
+				</div>
+
+				<div class="box2 box">
+					<div class="bg"></div>
+					<div class="details">
+						<h1>I'm the second Box</h1>
+						<p>
+							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
+							pellentesque eget.
+						</p>
+						<button>Check Now</button>
+					</div>
+
+					<div class="illustration"><div class="inner"></div></div>
+				</div>
+
+				<div class="box3 box">
+					<div class="bg"></div>
+					<div class="details">
+						<h1>I'm the third Box</h1>
+						<p>
+							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
+							pellentesque eget.
+						</p>
+						<button>Check Now</button>
+					</div>
+
+					<div class="illustration"><div class="inner"></div></div>
+				</div>
+
+				<div class="box4 box">
+					<div class="bg"></div>
+					<div class="details">
+						<h1>I'm the fourth Box</h1>
+						<p>
+							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
+							pellentesque eget.
+						</p>
+						<button>Check Now</button>
+					</div>
+
+					<div class="illustration"><div class="inner"></div></div>
+				</div>
+
+				<div class="box5 box">
+					<div class="bg"></div>
+					<div class="details">
+						<h1>I'm the fifth Box</h1>
+						<p>
+							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
+							pellentesque eget.
+						</p>
+						<button>Check Now</button>
+					</div>
+
+					<div class="illustration"><div class="inner"></div></div>
+				</div>
+			</div>
+
+			<svg
+				xmlns="http://www.w3.org/2000/svg"
+				class="prev"
+				width="56.898"
+				height="91"
+				viewBox="0 0 56.898 91"
+			>
+				<path
+					d="M45.5,0,91,56.9,48.452,24.068,0,56.9Z"
+					transform="translate(0 91) rotate(-90)"
+					fill="#fff"
+				/>
+			</svg>
+			<svg
+				xmlns="http://www.w3.org/2000/svg"
+				class="next"
+				width="56.898"
+				height="91"
+				viewBox="0 0 56.898 91"
+			>
+				<path
+					d="M45.5,0,91,56.9,48.452,24.068,0,56.9Z"
+					transform="translate(56.898) rotate(90)"
+					fill="#fff"
+				/>
+			</svg>
+			<div class="trail">
+				<div class="box1 active">1</div>
+				<div class="box2">2</div>
+				<div class="box3">3</div>
+				<div class="box4">4</div>
+				<div class="box5">5</div>
+			</div>
+		</div>
+		<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/16327/gsap-latest-beta.min.js"></script>
+		<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/16327/CSSRulePlugin3.min.js"></script>
+
+		<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.3.2/gsap.min.js"></script>
+        <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.3.2/CSSRulePlugin.min.js"></script> -->
+		<script src="./app.js"></script>
+	</body>
+</html>
diff --git a/projects/cat-api/46_image_slider/style.css b/projects/cat-api/46_image_slider/style.css
new file mode 100644
index 0000000..dbdcaa4
--- /dev/null
+++ b/projects/cat-api/46_image_slider/style.css
@@ -0,0 +1,337 @@
+*,
+*:before,
+*:after {
+  margin: 0;
+  padding: 0;
+  box-sizing: inherit;
+}
+
+html {
+  box-sizing: border-box;
+  font-family: "Roboto", sans-serif;
+  font-size: 62.5%;
+}
+@media only screen and (max-width: 800px) {
+  html {
+    font-size: 57%;
+  }
+}
+
+body {
+  background-color: #000;
+  color: #fff;
+  padding: 8rem;
+}
+@media only screen and (max-width: 1000px) {
+  body {
+    padding: 0;
+  }
+}
+
+.container {
+  position: relative;
+  overflow: hidden;
+  border-radius: 5rem;
+}
+@media only screen and (max-width: 1000px) {
+  .container {
+    border-radius: 0;
+  }
+}
+
+.slider {
+  display: flex;
+  width: 500%;
+  height: 55rem;
+  transition: all 0.25s ease-in;
+  transform: translateX(0);
+}
+@media only screen and (max-width: 1000px) {
+  .slider {
+    height: 100vh;
+  }
+}
+.slider .box {
+  height: 100%;
+  width: 100%;
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  align-items: center;
+  overflow: hidden;
+  position: relative;
+}
+@media only screen and (max-width: 650px) {
+  .slider .box {
+    grid-template-columns: 1fr;
+    grid-template-rows: repeat(2, 1fr);
+  }
+}
+.slider .box .bg {
+  padding: 2rem;
+  background-color: rgba(0, 0, 0, 0.2);
+  width: 55%;
+  transform: skewX(7deg);
+  position: absolute;
+  height: 100%;
+  left: -10%;
+  padding-left: 20rem;
+  transform-origin: 0 100%;
+}
+@media only screen and (max-width: 800px) {
+  .slider .box .bg {
+    width: 65%;
+  }
+}
+@media only screen and (max-width: 650px) {
+  .slider .box .bg {
+    width: 100%;
+    left: 0;
+    bottom: 0;
+    height: 54%;
+    transform: skewX(0deg);
+  }
+}
+.slider .box .bg::before {
+  content: "";
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  left: 0;
+  top: 0;
+  background-color: inherit;
+  pointer-events: none;
+  transform: skewX(10deg);
+}
+@media only screen and (max-width: 650px) {
+  .slider .box .bg::before {
+    width: 120%;
+    bottom: 0;
+    transform: skewX(0deg);
+  }
+}
+.slider .box .details {
+  padding: 5rem;
+  padding-left: 10rem;
+  z-index: 100;
+  grid-column: 1/span 1;
+  grid-row: 1/-1;
+}
+@media only screen and (max-width: 650px) {
+  .slider .box .details {
+    grid-row: 2/span 1;
+    grid-column: 1/-1;
+    text-align: center;
+    padding: 2rem;
+    transform: translateY(-9rem);
+  }
+}
+.slider .box .details h1 {
+  font-size: 3.5rem;
+  font-weight: 500;
+  margin-bottom: 0.5rem;
+}
+.slider .box .details p {
+  display: inline-block;
+  font-size: 1.3rem;
+  color: #b5b4b4;
+  margin-bottom: 2rem;
+  margin-right: 5rem;
+}
+@media only screen and (max-width: 800px) {
+  .slider .box .details p {
+    margin-right: 0;
+  }
+}
+.slider .box .details button {
+  padding: 1rem 3rem;
+  color: #fff;
+  border-radius: 2rem;
+  outline: none;
+  border: none;
+  cursor: pointer;
+  transition: all 0.3s ease;
+}
+.slider .box .details button:hover {
+  opacity: 0.8;
+}
+.slider .box .details button:focus {
+  outline: none;
+  border: none;
+}
+.slider .box1 {
+  background-color: #500033;
+}
+.slider .box1 .illustration .inner {
+  background-color: #ff0077;
+}
+.slider .box1 .illustration .inner::after, .slider .box1 .illustration .inner::before {
+  background-color: rgba(255, 0, 119, 0.4);
+}
+.slider .box1 button {
+  background-color: #ff0077;
+}
+.slider .box2 {
+  background-color: #000050;
+}
+.slider .box2 .illustration .inner {
+  background-color: #0033ff;
+}
+.slider .box2 .illustration .inner::after, .slider .box2 .illustration .inner::before {
+  background-color: rgba(0, 51, 255, 0.4);
+}
+.slider .box2 button {
+  background-color: #0033ff;
+}
+.slider .box3 {
+  background-color: #00501d;
+}
+.slider .box3 .illustration .inner {
+  background-color: #00ff44;
+}
+.slider .box3 .illustration .inner::after, .slider .box3 .illustration .inner::before {
+  background-color: rgba(0, 255, 68, 0.4);
+}
+.slider .box3 button {
+  background-color: #00ff44;
+}
+.slider .box4 {
+  background-color: #554d00;
+}
+.slider .box4 .illustration .inner {
+  background-color: #ff4e00;
+}
+.slider .box4 .illustration .inner::after, .slider .box4 .illustration .inner::before {
+  background-color: rgba(255, 78, 0, 0.4);
+}
+.slider .box4 button {
+  background-color: #ff4e00;
+}
+.slider .box5 {
+  background-color: #300050;
+}
+.slider .box5 .illustration .inner {
+  background-color: #8000ff;
+}
+.slider .box5 .illustration .inner::after, .slider .box5 .illustration .inner::before {
+  background-color: rgba(128, 0, 255, 0.4);
+}
+.slider .box5 button {
+  background-color: #8000ff;
+}
+.slider .illustration {
+  grid-column: 2/-1;
+  grid-row: 1/-1;
+  justify-self: center;
+}
+@media only screen and (max-width: 650px) {
+  .slider .illustration {
+    grid-row: 1/span 1;
+    grid-column: 1/-1;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+}
+.slider .illustration div {
+  height: 25rem;
+  width: 18rem;
+  border-radius: 3rem;
+  background-color: #ff0077;
+  position: relative;
+  transform: skewX(-10deg);
+}
+@media only screen and (max-width: 800px) {
+  .slider .illustration div {
+    height: 20rem;
+    width: 15rem;
+  }
+}
+.slider .illustration div::after, .slider .illustration div::before {
+  content: "";
+  position: absolute;
+  height: 100%;
+  width: 100%;
+  border-radius: 3rem;
+  top: 0;
+  left: 0;
+}
+.slider .illustration div::after {
+  transform: translate(4rem, -1rem);
+}
+.slider .illustration div::before {
+  transform: translate(2rem, -2rem);
+}
+
+.prev,
+.next,
+.trail {
+  z-index: 10000;
+  position: absolute;
+}
+
+.prev,
+.next {
+  width: 4rem;
+  cursor: pointer;
+  opacity: 0.2;
+  transition: all 0.3s ease;
+}
+@media only screen and (max-width: 650px) {
+  .prev,
+.next {
+    display: none;
+  }
+}
+.prev:hover,
+.next:hover {
+  opacity: 1;
+}
+
+.prev {
+  top: 50%;
+  left: 2%;
+  transform: translateY(-50%);
+}
+
+.next {
+  top: 50%;
+  right: 2%;
+  transform: translateY(-50%);
+}
+
+.trail {
+  bottom: 5%;
+  left: 50%;
+  transform: translateX(-50%);
+  width: 60%;
+  display: grid;
+  grid-template-columns: repeat(5, 1fr);
+  gap: 1rem;
+  text-align: center;
+  font-size: 1.5rem;
+}
+@media only screen and (max-width: 650px) {
+  .trail {
+    width: 90%;
+    bottom: 13%;
+  }
+}
+.trail div {
+  padding: 2rem;
+  border-top: 3px solid #fff;
+  cursor: pointer;
+  opacity: 0.3;
+  transition: all 0.3s ease;
+}
+.trail div:hover {
+  opacity: 0.6;
+}
+@media only screen and (max-width: 650px) {
+  .trail div {
+    padding: 1rem;
+  }
+}
+
+.active {
+  opacity: 1 !important;
+}
\ No newline at end of file
diff --git a/projects/cat-api/app.js b/projects/cat-api/app.js
new file mode 100644
index 0000000..5484703
--- /dev/null
+++ b/projects/cat-api/app.js
@@ -0,0 +1,30 @@
+const cat_result = document.getElementById("gallery");
+const errorData = document.getElementById("errorBox");
+
+
+btn_generate.addEventListener("click", function () {
+  const nums = document.getElementById("inp-box").value;
+
+  errorData.innerHTML = "";
+
+  if(!nums.match(/^[0-9]+$/)){
+    return errorData.innerHTML = "Enter a valid number";
+  }
+  if(parseInt(nums) > 10){
+    return errorData.innerHTML = "Number should be less than or equal to 10";
+  }
+
+  allimages = "";
+  fetch(
+    `https://api.thecatapi.com/v1/images/search?limit=${nums}&page=10&order=Desc`
+  )
+    .then((res) => res.json())
+    .then((res) => {
+      for (let i = 0; i < nums; i++) {
+        allimages += `
+     <img src=${res[i].url} alt="cat" />
+     `;
+      }
+      cat_result.innerHTML = allimages;
+    });
+});
diff --git a/projects/cat-api/index.html b/projects/cat-api/index.html
new file mode 100644
index 0000000..89e0a6a
--- /dev/null
+++ b/projects/cat-api/index.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
+    <title>Getting Started with APIs</title>
+    <link rel="stylesheet" href="styles.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h1>Getting Started with APIs</h1>
+
+      <h2>Enter the number of kitties</h2>
+      <input type="text" class="inp-box" id="inp-box" />
+      <small id="errorBox"></small>
+
+      <button id="btn_generate" class="btn">Display</button>
+
+      <div id="gallery" class="gallery"></div>
+    </div>
+    <script src="app.js"></script>
+  </body>
+</html>
diff --git a/projects/cat-api/styles.css b/projects/cat-api/styles.css
new file mode 100644
index 0000000..1c09be2
--- /dev/null
+++ b/projects/cat-api/styles.css
@@ -0,0 +1,106 @@
+@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');
+
+:root {
+  --error-color: #dc3545;
+  --success-color: #28a745;
+  --warning-color: #ffc107;
+}
+
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+}
+
+body {
+  font-family: 'Open Sans', sans-serif;
+  font-size: 16px;
+  background-color: #19172e;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  min-height: 100vh;
+}
+
+.container {
+  background-color: rgba(255, 255, 255, 0.05);
+  padding: 1em;
+  border-radius: 5px;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
+  width: 90%;
+  text-align: center;
+  display: flex;
+
+  flex-direction: column;
+  align-items: center; 
+  flex-wrap: wrap;
+ 
+}
+
+h1 {
+  color: #fff;
+  margin-bottom: 20px;
+}
+#errorBox{
+  color: crimson;
+}
+  
+.gallery img {
+    width: 18vw;
+    height: 18vh;
+    object-fit: cover;
+  } 
+
+.inp-box{
+  text-transform: uppercase;
+  width: 250px;
+  height: 45px;
+  outline: none;
+  border: none;
+  margin: 20px 0;
+  padding: 10px;
+  font-size: 18px;
+  border-radius: 3px;
+  background-color: white;
+  transition: all 300ms ease;
+}
+.btn {
+  text-transform: uppercase;
+  width: 250px;
+  height: 45px;
+  outline: none;
+  border: none;
+  margin: 20px 0;
+  font-size: 18px;
+  border-radius: 3px;
+  background-color: white;
+  cursor: pointer;
+  transition: all 300ms ease;
+}
+
+.btn:hover {
+  color: #fff;
+  background-color: #5c1ed5;
+  cursor: pointer;
+}
+
+.btn:focus {
+  outline: none;
+}
+
+footer {
+  color: pink;
+  font-size: 1rem;
+  padding: 22px;
+  line-height: 3vh;
+  margin-top: 30px;
+}
+
+footer a {
+  color: inherit;
+}
+
+footer a:visited {
+  color: inherit;
+}
diff --git a/projects/currency-converter/index.html b/projects/currency-converter/index.html
new file mode 100644
index 0000000..f88d169
--- /dev/null
+++ b/projects/currency-converter/index.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Currency_Converter_in_Javascript</title>
+    <link rel="stylesheet" href="style.css" />
+</head>
+<body>
+  <h1>Currency Converter</h1>
+  <div class="main-box">
+  <div class="second-box"> 
+    
+    <p><h3>Welcome! Please Enter the values</h3></p> 
+
+    <div class="container">
+      <div class="currency">
+        <select id="curr-first">
+          <option value="AED">AED</option>
+          <option value="ARS">ARS</option>
+          <option value="AUD">AUD</option>
+          <option value="BGN">BGN</option>
+          <option value="BRL">BRL</option>
+          <option value="BSD">BSD</option>
+          <option value="CAD">CAD</option>
+          <option value="CHF">CHF</option>
+          <option value="CLP">CLP</option>
+          <option value="CNY">CNY</option>
+          <option value="COP">COP</option>
+          <option value="CZK">CZK</option>
+          <option value="DKK">DKK</option>
+          <option value="DOP">DOP</option>
+          <option value="EGP">EGP</option>
+          <option value="EUR">EUR</option>
+          <option value="FJD">FJD</option>
+          <option value="GBP">GBP</option>
+          <option value="GTQ">GTQ</option>
+          <option value="HKD">HKD</option>
+          <option value="HRK">HRK</option>
+          <option value="HUF">HUF</option>
+          <option value="IDR">IDR</option>
+          <option value="ILS">ILS</option>
+          <option value="INR" selected>INR</option>
+          <option value="ISK">ISK</option>
+          <option value="JPY">JPY</option>
+          <option value="KRW">KRW</option>
+          <option value="KZT">KZT</option>
+          <option value="MXN">MXN</option>
+          <option value="MYR">MYR</option>
+          <option value="NOK">NOK</option>
+          <option value="NZD">NZD</option>
+          <option value="PAB">PAB</option>
+          <option value="PEN">PEN</option>
+          <option value="PHP">PHP</option>
+          <option value="PKR">PKR</option>
+          <option value="PLN">PLN</option>
+          <option value="PYG">PYG</option>
+          <option value="RON">RON</option>
+          <option value="RUB">RUB</option>
+          <option value="SAR">SAR</option>
+          <option value="SEK">SEK</option>
+          <option value="SGD">SGD</option>
+          <option value="THB">THB</option>
+          <option value="TRY">TRY</option>
+          <option value="TWD">TWD</option>
+          <option value="UAH">UAH</option>
+          <option value="USD">USD</option>
+          <option value="UYU">UYU</option>
+          <option value="VND">VND</option>
+          <option value="ZAR">ZAR</option>
+        </select>
+        <input type="number" id="worth-first" placeholder="0" value="1" />
+      </div>
+
+      <div class="exchange-rate-container">
+        <div class="exchange-rate" id="exchange-rate"></div> 
+      </div> 
+
+      <div class="currency">
+        <select id="curr-second">
+          <option value="AED">AED</option>
+          <option value="ARS">ARS</option>
+          <option value="AUD">AUD</option>
+          <option value="BGN">BGN</option>
+          <option value="BRL">BRL</option>
+          <option value="BSD">BSD</option>
+          <option value="CAD">CAD</option>
+          <option value="CHF">CHF</option>
+          <option value="CLP">CLP</option>
+          <option value="CNY">CNY</option>
+          <option value="COP">COP</option>
+          <option value="CZK">CZK</option>
+          <option value="DKK">DKK</option>
+          <option value="DOP">DOP</option>
+          <option value="EGP">EGP</option>
+          <option value="EUR">EUR</option>
+          <option value="FJD">FJD</option>
+          <option value="GBP">GBP</option>
+          <option value="GTQ">GTQ</option>
+          <option value="HKD">HKD</option>
+          <option value="HRK">HRK</option>
+          <option value="HUF">HUF</option>
+          <option value="IDR">IDR</option>
+          <option value="ILS">ILS</option>
+          <option value="INR">INR</option>
+          <option value="ISK">ISK</option>
+          <option value="JPY">JPY</option>
+          <option value="KRW" selected>KRW</option>
+          <option value="KZT">KZT</option>
+          <option value="MXN">MXN</option>
+          <option value="MYR">MYR</option>
+          <option value="NOK">NOK</option>
+          <option value="NZD">NZD</option>
+          <option value="PAB">PAB</option>
+          <option value="PEN">PEN</option>
+          <option value="PHP">PHP</option>
+          <option value="PKR">PKR</option>
+          <option value="PLN">PLN</option>
+          <option value="PYG">PYG</option>
+          <option value="RON">RON</option>
+          <option value="RUB">RUB</option>
+          <option value="SAR">SAR</option>
+          <option value="SEK">SEK</option>
+          <option value="SGD">SGD</option>
+          <option value="THB">THB</option>
+          <option value="TRY">TRY</option>
+          <option value="TWD">TWD</option>
+          <option value="UAH">UAH</option>
+          <option value="USD">USD</option>
+          <option value="UYU">UYU</option>
+          <option value="VND">VND</option>
+          <option value="ZAR">ZAR</option>
+        </select>
+        <input type="number" id="worth-second" placeholder="0" />
+      </div>
+    </div>
+</div>
+</div>
+    <script src="script.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/currency-converter/readme.md b/projects/currency-converter/readme.md
new file mode 100644
index 0000000..fc19e5a
--- /dev/null
+++ b/projects/currency-converter/readme.md
@@ -0,0 +1,5 @@
+I have added a Currency Converter.
+It allows user to type digits(amount) and we have real time conversions as they type.
+It fetches recent rates from the exchangerate API.
+The UI is pretty simple and neat.
+
diff --git a/projects/currency-converter/script.js b/projects/currency-converter/script.js
new file mode 100644
index 0000000..1407f01
--- /dev/null
+++ b/projects/currency-converter/script.js
@@ -0,0 +1,51 @@
+const exchange_rate = document.getElementById('exchange-rate');
+const curr_first = document.getElementById('curr-first');
+const curr_second = document.getElementById('curr-second');
+const worth_first = document.getElementById('worth-first');
+const worth_second = document.getElementById('worth-second');
+
+function convert() {
+  const currency_first = curr_first.value;
+  const currency_second = curr_second.value;
+//using API for conversion of currency units
+  fetch(`https://v6.exchangerate-api.com/v6/16947c81da979880bacde4f5/latest/${currency_first}`)
+    .then((res) => res.json())
+    .then((data) => {
+      
+      const rate = data.conversion_rates[currency_second];
+      exchange_rate.innerText = `1 ${currency_first} = ${rate} ${currency_second}`;
+
+      worth_second.value = (worth_first.value * rate).toFixed(5);
+    });
+}
+//some javascript event listeners
+curr_first.addEventListener('change', convert);
+worth_first.addEventListener('input', convert);
+curr_second.addEventListener('change', convert);
+worth_second.addEventListener('input', convert);
+convert();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/currency-converter/style.css b/projects/currency-converter/style.css
new file mode 100644
index 0000000..0ca98bd
--- /dev/null
+++ b/projects/currency-converter/style.css
@@ -0,0 +1,83 @@
+* {
+    box-sizing: border-box;
+  }
+body {
+   
+    font-family: Arial, Helvetica, sans-serif;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    height: 100vh;
+    margin: 0;
+    padding: 20px;
+    background-image: linear-gradient(rgb(42, 105, 177),rgb(67, 207, 67) );
+  }
+  
+  h1 {
+    color:blanchedalmond;
+    text-align: center;
+  }
+  h3{
+    text-align: center;
+  }
+  
+  p {
+    text-align: center;
+  }
+
+  .main-box{
+    border:12px solid rgb(56, 27, 187);
+    background-color: #ff3399; 
+    border-radius: 25px;
+    padding:40px;
+
+  }
+  .second-box{
+    border:2px solid ;
+    background-color:#ff99cc;
+    border-radius:20px;
+    padding:10px;
+  }
+  
+  .currency {
+    padding: 40px 0;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+  }
+  
+  .currency select {
+    padding: 10px 20px 10px 10px;
+    
+    appearance: none;
+    border: 1px solid #dedede;
+    font-size: 16px;
+    background: transparent;
+    background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%20000002%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');
+    background-position: right 10px top 50%, 0, 0;
+    background-size: 12px auto, 100%;
+    background-repeat: no-repeat;
+  }
+  
+  .currency input {
+    border:0px;
+    background: transparent;
+    font-size: 30px;
+    text-align: right;
+  }
+  
+  
+  
+  .exchange-rate {
+    color:aliceblue;
+    font-size: 14px;
+    padding: 0 10px;
+  }
+  
+  select:focus,
+  input:focus,
+  button:focus {
+    outline: 0;
+  }
+  
\ No newline at end of file
diff --git a/projects/english-dictionary/index.html b/projects/english-dictionary/index.html
new file mode 100644
index 0000000..fdbafc8
--- /dev/null
+++ b/projects/english-dictionary/index.html
@@ -0,0 +1,53 @@
+<!Doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>Dictionary App</title>
+    <meta name="viewport" content="width-device=width, initial-scale=1.0">
+    <link rel="stylesheet" href="style.css">
+    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
+</head>
+<body>
+    <div class="wrapper">
+        <header>English Dictionary</header>
+        <div class="search">
+            <input type="text" placeholder="Search a word">
+            <i class="fas fa-search"></i>
+            <span class="material-icons">close</span>
+        </div>
+        <p class="info-text">Type a word and press enter</p>
+        <ul>
+            <li class="word">
+                <div class="details">
+                    <p>_</p>
+                    <span>___</span>
+                </div>
+                <i class="fas fa-volume-up"></i>
+            </li>
+            <div class="content">
+                <li class="meaning">
+                    <div class="details">
+                        <p>Meaning</p>
+                        <span>___</span>
+                    </div>
+                </li>
+                <div class="example">
+                    <li class="meaning">
+                        <div class="details">
+                            <p>Example</p>
+                            <span>___</span>
+                        </div>
+                    </li>
+                    <div class="synonyms">
+                        <div class="details">
+                            <p>Synonyms</p>
+                            <div class="list"></div>
+                    </div>
+            </div>
+        </ul>
+    </div>
+<script src="script.js"></script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/english-dictionary/script.js b/projects/english-dictionary/script.js
new file mode 100644
index 0000000..c092e20
--- /dev/null
+++ b/projects/english-dictionary/script.js
@@ -0,0 +1,73 @@
+const wrapper = document.querySelector(".wrapper"),
+searchInput = wrapper.querySelector("input"),
+synonyms = wrapper.querySelector(".synonyms .list"),
+infoText = wrapper.querySelector(".info-text"),
+volumeIcon = wrapper.querySelector(".word i"),
+removeIcon = wrapper.querySelector(".search span");
+let audio;
+
+
+function data(result, word) {
+    if (result.title){
+        infoText.innerHTML = `Can't find the meaning of <span>"${word}"</span>.Please try to search for another
+        word`;
+    }
+    else {
+        console.log(result);
+        wrapper.classList.add("active");
+        let definitions = result[0].meanings[0].definitions[0],
+        phonetics = `${result[0].meanings[0].partOfSpeech} / ${result[0].phonetics[0].text} / `;
+        
+        document.querySelector('.word p').innerText = result[0].word;
+        document.querySelector('.word span').innerText = phonetics;
+        document.querySelector('.meaning span').innerText = definitions.definition;
+        document.querySelector('.example span').innerText = definitions.example;
+        audio = new Audio('https:' + result[0].phonetics[0].audio);
+        
+        if(definitions.synonyms[0] == undefined){
+            synonyms.parentElement.style.display = 'none';
+        }
+        else {
+            synonyms.parentElement.style.display = 'block';
+            synonyms.innerHTML = "";
+            for( let i =0; i < 5; i++) {
+                let tag = `<span onclick = search('${definitions.synonyms[i]}')>${definitions.synonyms[i]},</span>`;
+                synonyms.insertAdjacentHTML('beforeend', tag);
+            }
+        }
+    }
+}
+
+function search (word){
+    searchInput.value = word;
+    fetchApi(word);
+}
+
+function fetchApi(word) {
+    wrapper.classList.remove('active');
+    infoText.style.color = '#000';
+    infoText.innerHTML = `Searching the meaning of<span>"${word}"</span>`;
+    let url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word}`;
+    // fetching api response and returning it with parsing into js obj
+    //method calling data with passing api response
+    fetch(url).then(res => res.json()).then(result => data(result, word));
+}
+
+
+searchInput.addEventListener('keyup', e => {
+    if(e.key === 'Enter' && e.target.value){
+        fetchApi(e.target.value);
+    }
+});
+
+volumeIcon.addEventListener('click', () => {
+    audio.play();
+});
+
+removeIcon.addEventListener('click', () => {
+    searchInput.value = "";
+    searchInput.focus();
+    wrapper.classList.remove("active");
+    infoText.style.color = '#9a9a9a';
+    infoText.innerHTML= "Type a word and press enter";
+});
\ No newline at end of file
diff --git a/projects/english-dictionary/style.css b/projects/english-dictionary/style.css
new file mode 100644
index 0000000..39c1ecc
--- /dev/null
+++ b/projects/english-dictionary/style.css
@@ -0,0 +1,153 @@
+*{
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+    font-family: sans-serif;
+}
+body {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background-color: rgb(160, 158, 156);
+    min-height: 100vh;
+}
+
+.wrapper {
+    width: 420px;
+    background-color: #fff;
+    border-radius: 7px;
+    padding: 28px 28px;
+}
+.wrapper header {
+    font-size: 28px;
+    font-weight: 500;
+    text-align: center;
+}
+.wrapper .search {
+    margin: 35px 0 18px;
+    position: relative;
+}
+.search input {
+    height: 53px;
+    width: 100%;
+    outline: none;
+    border: 1px solid #999;
+    border-radius: 5px;
+    font-size: 16px;
+    padding: 0 42px;
+}
+.search :where(i, span) {
+    position: absolute;
+    top: 50%;
+    color: #999;
+    transform: translateY(-50%);
+}
+.search input::placeholder{
+    color: #b8b8b8;
+}
+.search input:focus{
+    border: 2px solid #4d59fb;
+    padding: 0 41px;
+}
+.search i {
+    left: 18px;
+    font-size: 16px;
+    pointer-events: none;
+}
+.search  input:focus  ~ i {
+    color: #4d59fb;
+}
+.search span {
+    right: 15px;
+    cursor: pointer;
+    font-size: 18px;
+    display: none;
+}
+.search input:valid ~ span {
+    display: block;
+}
+.wrapper ul li{
+    display: flex;
+    margin-bottom: 14px;
+    padding-bottom: 17px;
+    border-bottom: 1px solid #ccc;
+    justify-content: space-between;
+    align-items: center;
+}
+ul .word p{
+    font-size: 22px;
+    font-weight: 500;
+}
+.wrapper .info-text {
+    font-size: 13px;
+    color: #9a9a9a;
+    margin: -3px 0 -10px;
+}
+.wrapper ul {
+    height: 0;
+    opacity: 0;
+    overflow: hidden;
+    transition: all 0.3s ease;
+}
+ul .word i {
+    cursor: pointer;
+    font-size: 15px;
+    color: #999;
+}
+ul li:last-child{
+    margin-bottom: 0px;
+    padding-bottom: 0px;
+    border-bottom: 0px;
+}
+.content li .details{
+    border-left: 3px solid #4d59fb;
+    border-radius: 4px 0 0 4px;
+    padding-left: 10px;
+}
+.content li .details p {
+    font-size: 17px;
+    color: #7e7e7e;
+}
+.synonyms .details .list {
+    display: flex;
+    flex-wrap: wrap;
+}
+.synonyms .details .list span {
+    margin-right: 5px;
+    text-decoration: underline;
+    cursor: pointer;
+}
+.info-text span{
+    font-weight: 500;
+}
+.wrapper.active ul {
+    height: 303px;
+    opacity: 1;
+}
+.wrapper.active ul{
+    display: block;
+}
+.wrapper.active .info-text {
+    display: none;
+}
+ul .content {
+    max-height: 215px;
+    overflow-y: auto;
+}
+ul .content::-webkit-scrollbar{
+    width: 0px;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/feedback-ui/assets/review.png b/projects/feedback-ui/assets/review.png
new file mode 100644
index 0000000000000000000000000000000000000000..12102214dab13333fcf607fd98027f590c6567b0
GIT binary patch
literal 1800
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

literal 0
HcmV?d00001

diff --git a/projects/feedback-ui/font/sans.ttf b/projects/feedback-ui/font/sans.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..85860e6c086e60a9458ff45af4dfb55471f744cd
GIT binary patch
literal 55852
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

literal 0
HcmV?d00001

diff --git a/projects/feedback-ui/index.html b/projects/feedback-ui/index.html
new file mode 100644
index 0000000..bf8cda1
--- /dev/null
+++ b/projects/feedback-ui/index.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <link rel="stylesheet" href="style.css" />
+    <link rel="icon" href="assets/review.png" />
+    <title>Feedback UI</title>
+  </head>
+
+  <body>
+    <h1>Feedback Design UI</h1>
+    <div id="panel" class="panel-container box">
+      <h3>
+        How satisfied are you with our <br />
+        customer support performance?
+      </h3>
+      <div class="ratings-container">
+        <div class="rating">
+          <img
+            src="https://cdn-icons-png.flaticon.com/512/166/166527.png"
+            alt=""
+          />
+          <small>Unhappy</small>
+        </div>
+
+        <div class="rating">
+          <img
+            src="https://cdn-icons-png.flaticon.com/512/166/166536.png"
+            alt=""
+          />
+          <small>Neutral</small>
+        </div>
+
+        <div class="rating">
+          <img
+            src="https://cdn-icons-png.flaticon.com/512/166/166538.png"
+            alt=""
+          />
+          <small>Satisfied</small>
+        </div>
+      </div>
+      <button class="btn" id="send">Send Review</button>
+    </div>
+
+    <script src="script.js"></script>
+  </body>
+</html>
diff --git a/projects/feedback-ui/script.js b/projects/feedback-ui/script.js
new file mode 100644
index 0000000..60bfd0f
--- /dev/null
+++ b/projects/feedback-ui/script.js
@@ -0,0 +1,29 @@
+const ratings = document.querySelectorAll(".rating");
+const ratingsContainer = document.querySelector(".ratings-container");
+const sendBtn = document.querySelector("#send");
+const panel = document.querySelector("#panel");
+let selectedRating = "Unhappy";
+
+ratingsContainer.addEventListener("click", (e) => {
+  console.log(e.target.parentNode.innerText);
+  removeActive();
+  selectedRating = e.target.innerText || e.target.parentNode.innerText;
+  e.target.parentNode.classList.toggle("active");
+  e.target.classList.toggle("active");
+});
+
+sendBtn.addEventListener("click", (e) => {
+  panel.innerHTML = `
+        <i class="fas fa-heart"></i>
+        <strong>Thank You!</strong>
+        <br>
+        <strong>Feedback : ${selectedRating}</strong>
+        <p>We'll use your feedback to improve our customer support.</p>
+    `;
+});
+
+function removeActive() {
+  for (let i = 0; i < ratings.length; i++) {
+    ratings[i].classList.remove("active");
+  }
+}
diff --git a/projects/feedback-ui/style.css b/projects/feedback-ui/style.css
new file mode 100644
index 0000000..ef76253
--- /dev/null
+++ b/projects/feedback-ui/style.css
@@ -0,0 +1,120 @@
+* {
+  padding: 0;
+  box-sizing: border-box;
+  font-family: "sans";
+}
+
+@font-face {
+  font-family: "sans";
+  src: url(font/sans.ttf);
+}
+
+body {
+  overflow: hidden;
+  background: #19172e;
+  color: #fff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  min-height: 100vh;
+}
+
+footer, a, h3,small {
+  color: #fff;
+}
+
+h1 {
+  color: #fff;
+  text-align: center;
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  padding-top: 10px;
+}
+
+.box {
+  background: rgba(255, 255, 255, 0.05);
+  box-shadow: 0 15px 25px rgba(0, 0, 0, 0.1);
+  border-radius: 10px;
+  backdrop-filter: blur(20px);
+  padding: 1rem;
+  width: 400px;
+  text-align: center;
+}
+
+.panel-container {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  text-align: center;
+  padding: 30px;
+  max-width: 400px;
+}
+
+.panel-container strong {
+  line-height: 20px;
+}
+
+.ratings-container {
+  display: flex;
+  margin: 20px 0;
+}
+
+.rating {
+  flex: 1;
+  cursor: pointer;
+  padding: 20px;
+  margin: 10px 5px;
+}
+
+.rating:hover,
+.rating.active {
+  border-radius: 4px;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
+  background: salmon;
+}
+
+.rating img {
+  width: 40px;
+}
+
+.rating small {
+  display: inline-block;
+  margin: 10px 0 0;
+}
+
+.rating:hover small,
+.rating.active small {
+  color: green;
+}
+
+.btn {
+  background-color: #302d2b;
+  color: #fff;
+  border: 0;
+  border-radius: 4px;
+  padding: 12px 30px;
+  cursor: pointer;
+}
+
+.btn:focus {
+  outline: 0;
+}
+
+.btn:active {
+  transform: scale(0.98);
+}
+
+.fa-heart {
+  color: red;
+  font-size: 30px;
+  margin-bottom: 10px;
+}
+
+footer {
+  text-align: center;
+  position: absolute;
+  bottom: 0;
+}
\ No newline at end of file
diff --git a/projects/loan-calculator/index.html b/projects/loan-calculator/index.html
new file mode 100644
index 0000000..d2722a1
--- /dev/null
+++ b/projects/loan-calculator/index.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+    <link rel="stylesheet" href="style.css" />
+    <title>Loan Calculator</title>
+  </head>
+
+  <body>
+    <div id="loancal">
+      <h1>Loan Calculator</h1>
+      <p>
+        Loan Amount: $<input
+          id="amount"
+          type="number"
+          min="1"
+          max="5000000"
+          onchange="computeLoan()"
+        />
+      </p>
+      <p>
+        Interest Rate: %<input
+          id="interest_rate"
+          min="0"
+          max="100"
+          value="10"
+          step=".1"
+          type="number"
+          onchange="computeLoan()"
+        />
+      </p>
+      <p>
+        Months to Pay:
+        <input
+          id="months"
+          type="number"
+          min="1"
+          max="300"
+          value="1"
+          step="1"
+          onchange="computeLoan()"
+        />
+      </p>
+      <h2 id="payment"></h2>
+    </div>
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/loan-calculator/index.js b/projects/loan-calculator/index.js
new file mode 100644
index 0000000..5f3d29d
--- /dev/null
+++ b/projects/loan-calculator/index.js
@@ -0,0 +1,9 @@
+function computeLoan() {
+  const amount = document.querySelector("#amount").value;
+  const interest_rate = document.querySelector("#interest_rate").value;
+  const months = document.querySelector("#months").value;
+  const interest = (amount * (interest_rate * 0.01)) / months;
+  const payment = (amount / months + interest).toFixed(2);
+
+  document.querySelector("#payment").innerHTML = `Monthly Payment = ${payment}`;
+}
diff --git a/projects/loan-calculator/style.css b/projects/loan-calculator/style.css
new file mode 100644
index 0000000..abdb9fc
--- /dev/null
+++ b/projects/loan-calculator/style.css
@@ -0,0 +1,32 @@
+
+body{
+    padding: 0;
+    margin: 0;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 100vh;
+    font-family: 'Courier New', Courier, monospace;
+}
+
+#loancal {
+   padding: 20px;
+   border-radius: 10px;
+    background-color:darkcyan;
+    color: aliceblue;
+}
+
+#months, #amount, #interest_rate{
+    width: 100%;
+    height: 40px;
+    font-size: 20px;
+
+}
+
+#interest_rate {
+    margin-left: 2px;
+}
+
+h1 {
+    font-size:40px;
+}
\ No newline at end of file
diff --git a/projects/movie-quote-generator/index.html b/projects/movie-quote-generator/index.html
new file mode 100644
index 0000000..eb18ef6
--- /dev/null
+++ b/projects/movie-quote-generator/index.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <meta http-equiv="X-UA-Compatible" content="ie=edge">
+  <title>Random Movie/TV Series Quote Generator</title>
+  <link rel="stylesheet" href="style.css">
+  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+  <link rel="preconnect" href="https://fonts.googleapis.com">
+  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+  <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@700&display=swap" rel="stylesheet">
+</head>
+<body>
+        <p class="heading">Movie Quote Generator<p>
+        </br>
+        <!-- Quote Container -->
+        <div class="container">
+             <!-- Quote to be Displayed Here -->
+            <h1>
+            <i class="fa fa-quote-left" style="color: #19172e"></i>
+            <span id="quote"></span>
+            <i class="fa fa-quote-right" style="color: #19172e"></i>
+            </h1>
+            <!-- Author to be Displayed Here -->
+            <p id="author"></p>
+            <!-- TV Show / Movie Name to be Displayed Here -->
+            <p id="source"></p>
+            <hr/>
+            <div class="buttons">
+              
+
+                <!--Add an onclick event on 'next quote' button. Upon the click of a button, a new random quote is generated-->
+                <button class="next" onclick="getNextQuote()">Next quote</button>
+            </div>
+        </div>
+        
+        <script src="script.js"></script>
+</body>
+</html>
diff --git a/projects/movie-quote-generator/script.js b/projects/movie-quote-generator/script.js
new file mode 100644
index 0000000..2c0f8c4
--- /dev/null
+++ b/projects/movie-quote-generator/script.js
@@ -0,0 +1,17 @@
+const getNextQuote = async() =>
+{
+  var url = "https://raw.githubusercontent.com/msramalho/json-tv-quotes/master/quotes.json";
+  const response = await fetch(url);
+  const totalQuotes = await response.json();
+  const index = Math.floor(Math.random()*totalQuotes.length);
+  const quo=totalQuotes[index].quote;
+  const auth=totalQuotes[index].author;
+  const sour=totalQuotes[index].source;
+  quote.innerHTML=""+quo;
+  author.innerHTML="~ "+auth;
+  source.innerHTML=""+sour;
+  tweet.href="https://twitter.com/intent/tweet?text="+quo+" ~ "+auth+" | "+sour;
+  whatsapp.href="whatsapp://send?text="+quo+" ~ "+auth+" | "+sour;
+}
+
+getNextQuote();
diff --git a/projects/movie-quote-generator/style.css b/projects/movie-quote-generator/style.css
new file mode 100644
index 0000000..b0e3c55
--- /dev/null
+++ b/projects/movie-quote-generator/style.css
@@ -0,0 +1,129 @@
+*{ 
+   margin: 0; 
+   padding: 0; 
+   box-sizing: border-box; 
+  } 
+
+body { 
+   display: flex; 
+   justify-content: center; 
+   align-items: center; 
+   min-height: 100vh; 
+   background-color: #19172e; 
+   font-family: "Garamond", serif;
+   transition-timing-function: ease-in;
+   transition: 0.7s;
+   }
+   
+#quote {
+   text-align: center;
+   font-size: 40px;
+   font-weight: bold;
+   color: white;
+}
+
+#author {
+   margin: 10px;
+   text-align: right;
+   font-size: 25px;
+   font-style: italic;
+   font-family: "Garamond", serif;
+   color: #19172e;
+}
+
+#source {
+   margin: 10px;
+   text-align: right;
+   font-size: 25px;
+   font-weight: 700;
+   font-family: "Garamond", serif;
+   color: #19172e
+}
+
+.container {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    padding: 30px;
+    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.6);
+    border-radius: 15px;
+    width: 600px;
+    background-color: rgba(255, 255, 255, 0.3);
+    margin: 10px;
+}
+
+
+.buttons {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-top: 9px;
+  
+}
+
+#tweet {
+    border: solid rgb(102, 179, 255);
+    border-radius: 4px;
+    background-color: rgb(102, 179, 255);
+    color: white;
+    text-align: center;
+    font-size: 1.8em;
+    width: 60px;
+    height: 35px;
+    line-height: 40px;
+
+}
+
+#whatsapp {
+    border: solid #25D366;
+    border-radius: 4px;
+    background-color: #25D366;
+    color: white;
+    text-align: center;
+    font-size: 1.8em;
+    width: 60px;
+    height: 35px;
+    line-height: 40px;
+
+}
+
+footer {
+
+    text-align: center;
+    color: white;
+    font-size: 1rem;
+    position: absolute;
+    bottom: 0px;
+    padding: 5px;
+    line-height: 3vh;
+    font-family: "Roboto", sans-serif;
+}
+
+.heading{
+    font-family: "Roboto", sans-serif;
+    color: white;
+    font-size: 50px;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    text-align: center;
+    padding: 100px;
+    line-height: 3vh;
+}
+
+.container:hover {
+    box-shadow: 0 10px 10px rgb(0, 0, 0);
+}
+
+.next {
+    font-size: 18px;
+    border-radius: 5px;
+    cursor: pointer;
+    padding: 10px;
+    margin-top: 5px;
+    font-weight: bold;
+    color: white;
+    background-image: linear-gradient(to right bottom, rgb(230, 100, 0), #ffedbca8);
+}
\ No newline at end of file
diff --git a/projects/notes-taking-app/icon.png b/projects/notes-taking-app/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cac03b4f4fbefe58aefa59d447c69c926af06c7
GIT binary patch
literal 7224
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
Pzde0zV^o=@WAuLkbsj-B

literal 0
HcmV?d00001

diff --git a/projects/notes-taking-app/index.html b/projects/notes-taking-app/index.html
new file mode 100644
index 0000000..0921e39
--- /dev/null
+++ b/projects/notes-taking-app/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <link rel="shortcut icon" href="./icon.png" type="image/png" />
+    <title>Notes Taking App</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <h1>Notes Taking App</h1>
+    <div id="app">
+      <button class="add-note" type="button">+</button>
+    </div>
+
+    <script src="script.js"></script>
+  </body>
+</html>
diff --git a/projects/notes-taking-app/script.js b/projects/notes-taking-app/script.js
new file mode 100644
index 0000000..f788999
--- /dev/null
+++ b/projects/notes-taking-app/script.js
@@ -0,0 +1,69 @@
+const notesContainer = document.getElementById("app");
+const addNoteButton = notesContainer.querySelector(".add-note");
+
+getNotes().forEach(note => {
+    const noteElement = createNoteElement(note.id, note.content);
+    notesContainer.insertBefore(noteElement, addNoteButton);
+});
+
+addNoteButton.addEventListener("click", () => addNote());
+
+function getNotes(){
+    return JSON.parse(localStorage.getItem("note-ap") || "[]");
+}
+
+function saveNotes(notes){
+    localStorage.setItem("note-ap", JSON.stringify(notes));
+}
+
+function createNoteElement(id, content){
+    const element = document.createElement("textarea");
+
+    element.classList.add("note");
+    element.value = content;
+    element.placeholder = "Empty Note";
+
+    element.addEventListener("change", () => {
+        updateNote(id, element.value);
+    });
+
+    element.addEventListener("dblclick", () => {
+        const noteDelete = confirm("Want to Delete the note?")
+        if (noteDelete) {
+            deleteNote(id, element);
+        }
+    });
+
+    return element;
+}
+
+function addNote(){
+    const notes = getNotes();
+    const noteObj = {
+        id: Math.floor(Math.random()*100000),
+        content: ""
+    };
+
+    const noteElement = createNoteElement(noteObj.id, noteObj.content);
+    notesContainer.insertBefore(noteElement, addNoteButton);
+
+
+    notes.push(noteObj);
+    saveNotes(notes);
+}
+
+function updateNote(id, newContent) {
+    const notes = getNotes();
+    const target = notes.filter(note=>note.id == id)[0];
+
+    target.content = newContent;
+    saveNotes(notes);
+}
+
+function deleteNote(id, element) {
+    const notes = getNotes().filter(note => note.id != id);
+
+    saveNotes(notes);
+    notesContainer.removeChild(element);
+}
+
diff --git a/projects/notes-taking-app/style.css b/projects/notes-taking-app/style.css
new file mode 100644
index 0000000..58a6b31
--- /dev/null
+++ b/projects/notes-taking-app/style.css
@@ -0,0 +1,85 @@
+:root {
+  --bg: #19172e;
+  --btn: #9c528b;
+  --card: #b9929f;
+}
+* {
+  font-family: sans-serif;
+  transition: 0.5s ease;
+}
+body {
+  margin: 0;
+  background: var(--bg);
+}
+
+h1 {
+  color: #fff;
+  text-align: center;
+  left: 0;
+  right: 0;
+  top: 0;
+  padding-top: 10px;
+  font-size: 2rem !important;
+}
+
+#app {
+  display: grid;
+  grid-template-columns: repeat(auto-fill, 200px);
+  padding: 50px;
+  gap: 40px;
+}
+
+.note {
+  height: 200px;
+  box-sizing: border-box;
+  padding: 17px;
+  border-radius: 15px;
+  resize: none;
+  box-shadow: 0 0 7px rgba(0, 0, 0, 0.3);
+  font-family: monospace;
+  font-size: 18px;
+  color: var(--bg);
+  font-weight: 800;
+  border: none;
+  outline: none;
+  background: var(--card);
+}
+
+.add-note {
+  height: 200px;
+  border: none;
+  outline: none;
+  background: rgba(156, 82, 139, 0.27);
+  border-radius: 15px;
+  font-size: 70px;
+  font-weight: 700;
+  color: rgba(0, 0, 0, 0.5);
+  cursor: pointer;
+}
+
+.add-note:hover {
+  background: rgba(156, 82, 139, 0.5);
+  color: rgba(0, 0, 0, 0.7);
+}
+
+::placeholder {
+  color: rgb(214, 214, 214);
+}
+
+footer,
+a {
+  color: rgb(214, 214, 214);
+  font-size: 20px;
+}
+
+footer {
+    text-align: center;
+    color: white;
+    font-size: 1.25rem;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin-bottom: 0;
+    padding: 10px;
+    line-height: 4vh;
+}
\ No newline at end of file
diff --git a/projects/project-idea-generator/index.html b/projects/project-idea-generator/index.html
new file mode 100644
index 0000000..5262bbf
--- /dev/null
+++ b/projects/project-idea-generator/index.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>Project Idea Generator</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+    <meta
+      name="description"
+      content="A tool to generate your next programming side project"
+    />
+    <meta
+      name="keywords"
+      content="Coding, Side Project, Project, Programming, Learning, Tutorials, Computer Science"
+    />
+    <link
+      rel="stylesheet"
+      href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
+    />
+    <link
+      href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap"
+      rel="stylesheet"
+    />
+    <link href="src/css/styles.css" rel="stylesheet" />
+  </head>
+  <body>
+    <h1><span class="title">Project Idea Generator</span></h1>
+    <h2>
+      Generate your next coding project <i class="fa fa-code"></i><br />
+      <br />
+      <strong>Note:</strong> Some projects may be in a specific language but you
+      can try doing them in a language you like!
+    </h2>
+
+    <div id="project-generation">
+      <button id="generate-project">New Idea!</button>
+      <p id="new-project"></p>
+    </div>
+
+    <script type="text/javascript" src="src/js/main.js"></script>
+    <script type="text/javascript" src="src/js/projects.js"></script>
+  </body>
+</html>
diff --git a/projects/project-idea-generator/src/css/styles.css b/projects/project-idea-generator/src/css/styles.css
new file mode 100644
index 0000000..2e23832
--- /dev/null
+++ b/projects/project-idea-generator/src/css/styles.css
@@ -0,0 +1,102 @@
+* {
+  box-sizing: border-box;
+  padding: 10px
+}
+body {
+  position: relative;
+  margin: 0;
+  padding: 0;
+  font-family: 'Poppins', sans-serif;
+  text-align: center;
+  color: black;
+  background: #3498DB;
+}
+
+h1 {
+  display: block;
+  font-family: 'Poppins', sans-serif;
+  text-align: center;
+}
+
+h2 {
+  font-weight: 500;
+  font-size: 24px;
+}
+
+.fa-code {
+  font-size: 30px;
+  font-weight: bolder;
+  color: white;
+}
+
+h3 {
+  font-weight: 500;
+}
+
+a {
+  color: inherit;
+  text-decoration: underline;
+}
+
+p {
+  color: white;
+}
+
+.title {
+  font-weight: 600;
+  color: white;
+  font-size: 54px;
+  padding: 0 16px;
+}
+
+#generate-project {
+  padding: 15px 40px;
+  background: none;
+  border: 3px solid white;
+  border-radius: 10px;
+  font-family: 'Poppins', sans-serif;
+  font-size: 24px;
+  cursor: pointer;
+  transition: all 0.3s ease;
+}
+
+#generate-project:hover {
+  background: white;
+}
+
+#give-idea {
+  padding: 10px 20px;
+  background: none;
+  border: 3px solid white;
+  border-radius: 10px;
+  font-family: 'Poppins', sans-serif;
+  font-size: 16px;
+  cursor: pointer;
+  transition: all 0.3s ease;
+}
+
+.fa-github {
+  font-size: 20px;
+  font-weight: 600;
+}
+
+#give-idea:hover {
+  background: white;
+}
+
+#new-project {
+  margin-top: 20px;
+  font-size: 44px;
+}
+
+#project-generation {
+  font-size: 50px;
+}
+
+#project-generation span {
+  margin-top: 70px;
+}
+
+ul li {
+  list-style-type: none;
+}
\ No newline at end of file
diff --git a/projects/project-idea-generator/src/js/main.js b/projects/project-idea-generator/src/js/main.js
new file mode 100644
index 0000000..3b8dee5
--- /dev/null
+++ b/projects/project-idea-generator/src/js/main.js
@@ -0,0 +1,15 @@
+document.getElementById("generate-project").addEventListener(
+    "click",
+    function() {
+      let project = projects[Math.floor(Math.random() * projects.length)];
+      let link = document.getElementById('new-project')
+
+      if (project.link !== "") {
+        link.innerHTML = `
+          <a href="${project.link}" target="_blank">${project.title}</a>
+        `;
+      } else {
+        link.innerHTML = `${project.title}`;
+      };
+    }
+  );
\ No newline at end of file
diff --git a/projects/project-idea-generator/src/js/projects.js b/projects/project-idea-generator/src/js/projects.js
new file mode 100644
index 0000000..4637c82
--- /dev/null
+++ b/projects/project-idea-generator/src/js/projects.js
@@ -0,0 +1,1514 @@
+let projects = [
+  {
+    "title": "Build Your Own Text Editor",
+    "link": "https://viewsourcecode.org/snaptoken/kilo/index.html"
+  },
+  {
+    "title": "Let's Build a Simple Database",
+    "link": "https://cstack.github.io/db_tutorial"
+  },
+  {
+    "title": "Build a spell-checker in Clojure",
+    "link": "https://bernhardwenzel.com/articles/clojure-spellchecker/"
+  },
+  {
+    "title": "Build a Twitter Bot in Clojure",
+    "link": "https://howistart.org/posts/clojure/1/index.html"
+  },
+  {
+    "title": "Build an Intrpreter",
+    "link": "https://www.craftinginterpreters.com/"
+  },
+  {
+    "title": "Write a Shell in C",
+    "link": "https://brennan.io/2015/01/16/write-a-shell-in-c/"
+  },
+  {
+    "title": "Build your own Lisp",
+    "link": "http://www.buildyourownlisp.com/"
+  },
+  {
+    "title": "Write an OS from scratch",
+    "link": "https://github.com/tuhdo/os01"
+  },
+  {
+    "title": "How to create an OS from scratch",
+    "link": "https://github.com/cfenollosa/os-tutorial"
+  },
+  {
+    "title": "Building a Simple Chat App With Elixir and Phoenix",
+    "link": "https://sheharyar.me/blog/simple-chat-phoenix-elixir/"
+  },
+  {
+    "title": "Write a super fast link shortener with Elixir, Phoenix, and Mnesia",
+    "link": "https://medium.com/free-code-camp/how-to-write-a-super-fast-link-shortener-with-elixir-phoenix-and-mnesia-70ffa1564b3c"
+  },
+  {
+    "title": "Write your own Excel in 100 lines of F#",
+    "link": "http://tomasp.net/blog/2018/write-your-own-excel/"
+  },
+  {
+    "title": "ChatBus : build your first multi-user chat room app with Erlang/OTP",
+    "link": "https://medium.com/@kansi/chatbus-build-your-first-multi-user-chat-room-app-with-erlang-otp-b55f72064901"
+  },
+  {
+    "title": "How to Write a Jupyter Notebook Extension",
+    "link": "https://towardsdatascience.com/how-to-write-a-jupyter-notebook-extension-a63f9578a38c"
+  },
+  {
+    "title": "Build a React Native Todo Application",
+    "link": "https://egghead.io/courses/build-a-react-native-todo-application"
+  },
+  {
+    "title": "How to build a news app with React Native",
+    "link": "https://www.freecodecamp.org/news/create-a-news-app-using-react-native-ced249263627/"
+  },
+  {
+    "title": "Reverse a String",
+    "link": ""
+  },
+  {
+    "title": "RSS Feed Creator",
+    "link": ""
+  },
+  {
+    "title": "P2P File Sharing App",
+    "link": ""
+  },
+  {
+    "title": "Hotel Reservation System",
+    "link": ""
+  },
+  {
+    "title": "WYSIWG Editor",
+    "link": ""
+  },
+  {
+    "title": "CAPTCHA Maker",
+    "link": ""
+  },
+  {
+    "title": "Build the Hangman game",
+    "link": ""
+  },
+  {
+    "title": "Build a microblog with Flask",
+    "link": "https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world"
+  },
+  {
+    "title": "Mining Twitter Data with Python",
+    "link": "https://marcobonzanini.com/2015/03/02/mining-twitter-data-with-python-part-1/"
+  },
+  {
+    "title": "Build a Job Scrapping Web App",
+    "link": "https://www.freecodecamp.org/news/how-i-built-a-job-scraping-web-app-using-node-js-and-indreed-7fbba124bbdc/"
+  },
+  {
+    "title": "Create a Character voting app",
+    "link": "http://sahatyalkabov.com/create-a-character-voting-app-using-react-nodejs-mongodb-and-socketio/"
+  },
+  {
+    "title": "Build Git from Scratch",
+    "link": "http://gitlet.maryrosecook.com/docs/gitlet.html"
+  },
+  {
+    "title": "Build a TCP/IP stack in C",
+    "link": "https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/"
+  },
+  {
+    "title": "Build a Network Stack in Ruby",
+    "link": "https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b"
+  },
+  {
+    "title": "C++: Introduction to Ray Tracing: a Simple Method for Creating 3D Images",
+    "link": "https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work"
+  },
+  {
+    "title": "C++: How OpenGL works: software rendering in 500 lines of code",
+    "link": "https://github.com/ssloy/tinyrenderer/wiki"
+  },
+  {
+    "title": "C++: Raycasting engine of Wolfenstein 3D",
+    "link": "http://lodev.org/cgtutor/raycasting.html"
+  },
+  {
+    "title": "C++: Physically Based Rendering:From Theory To Implementation",
+    "link": "http://www.pbr-book.org/"
+  },
+  {
+    "title": "C++: Rasterization: a Practical Implementation",
+    "link": "https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/overview-rasterization-algorithm"
+  },
+  {
+    "title": "C# / TypeScript / JavaScript: Learning how to write a 3D soft engine from scratch in C#, TypeScript or JavaScript",
+    "link": "https://www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/"
+  },
+  {
+    "title": "Java / JavaScript: Build your own 3D renderer",
+    "link": "https://avik-das.github.io/build-your-own-raytracer/"
+  },
+  {
+    "title": "Java: How to create your own simple 3D render engine in pure Java",
+    "link": "http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html"
+  },
+  {
+    "title": "JavaScript / Pseudocode: Computer Graphics from scratch",
+    "link": "http://www.gabrielgambetta.com/computer-graphics-from-scratch/introduction.html"
+  },
+  {
+    "title": "Python: A 3D Modeller",
+    "link": "http://aosabook.org/en/500L/a-3d-modeller.html"
+  },
+  {
+    "title": "C#: How To: Augmented Reality App Tutorial for Beginners with Vuforia and Unity 3D",
+    "link": "https://www.youtube.com/watch?v=uXNjNcqW4kY"
+  },
+  {
+    "title": "C#: How To Unity ARCore",
+    "link": "https://www.youtube.com/playlist?list=PLKIKuXdn4ZMjuUAtdQfK1vwTZPQn_rgSv"
+  },
+  {
+    "title": "C#: AR Portal Tutorial with Unity",
+    "link": "https://www.youtube.com/playlist?list=PLPCqNOwwN794Gz5fzUSi1p4OqLU0HTmvn"
+  },
+  {
+    "title": "C#: How to create a Dragon in Augmented Reality in Unity ARCore",
+    "link": "https://fr-film.net/v-how-to-create-a-dragon-in-augmented-reality-in-unity-arcore-tutorial-qTSDPkPyPqs.html"
+  },
+  {
+    "title": "C#: How to Augmented Reality AR Tutorial: ARKit Portal to the Upside Down",
+    "link": "https://www.youtube.com/watch?v=Z5AmqMuNi08"
+  },
+  {
+    "title": "Python: Augmented Reality with Python and OpenCV",
+    "link": "https://bitesofcode.wordpress.com/2017/09/12/augmented-reality-with-python-and-opencv-part-1/"
+  },
+  {
+    "title": "C#: Building a BitTorrent client from scratch in C#",
+    "link": "https://www.seanjoflynn.com/research/bittorrent.html"
+  },
+  {
+    "title": "Go: Building a BitTorrent client from the ground up in Go",
+    "link": "https://blog.jse.li/posts/torrent/"
+  },
+  {
+    "title": "Nim: Writing a Bencode Parser",
+    "link": "https://xmonader.github.io/nimdays/day02_bencode.html"
+  },
+  {
+    "title": "Node.js: Write your own bittorrent client",
+    "link": "https://allenkim67.github.io/programming/2016/05/04/how-to-make-your-own-bittorrent-client.html"
+  },
+  {
+    "title": "Python: A BitTorrent client in Python 3.5",
+    "link": "http://markuseliasson.se/article/bittorrent-in-python/"
+  },
+  {
+    "title": "ATS: Functional Blockchain",
+    "link": "https://beta.observablehq.com/@galletti94/functional-blockchain"
+  },
+  {
+    "title": "C#: Programming The Blockchain in C#",
+    "link": "https://programmingblockchain.gitbooks.io/programmingblockchain/"
+  },
+  {
+    "title": "Crystal: Write your own blockchain and PoW algorithm using Crystal",
+    "link": "https://medium.com/@bradford_hamilton/write-your-own-blockchain-and-pow-algorithm-using-crystal-d53d5d9d0c52"
+  },
+  {
+    "title": "Go: Building Blockchain in Go",
+    "link": "https://jeiwan.cc/posts/building-blockchain-in-go-part-1/"
+  },
+  {
+    "title": "Go: Code your own blockchain in less than 200 lines of Go",
+    "link": "https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc"
+  },
+  {
+    "title": "Java: Creating Your First Blockchain with Java",
+    "link": "https://medium.com/programmers-blockchain/create-simple-blockchain-java-tutorial-from-scratch-6eeed3cb03fa"
+  },
+  {
+    "title": "JavaScript: A cryptocurrency implementation in less than 1500 lines of code",
+    "link": "https://github.com/conradoqg/naivecoin"
+  },
+  {
+    "title": "JavaScript: Build your own Blockchain in JavaScript",
+    "link": "https://github.com/nambrot/blockchain-in-js"
+  },
+  {
+    "title": "JavaScript: Learn & Build a JavaScript Blockchain",
+    "link": "https://medium.com/digital-alchemy-holdings/learn-build-a-javascript-blockchain-part-1-ca61c285821e"
+  },
+  {
+    "title": "JavaScript: Creating a blockchain with JavaScript",
+    "link": "https://github.com/SavjeeTutorials/SavjeeCoin"
+  },
+  {
+    "title": "JavaScript: How To Launch Your Own Production-Ready Cryptocurrency",
+    "link": "https://hackernoon.com/how-to-launch-your-own-production-ready-cryptocurrency-ab97cb773371"
+  },
+  {
+    "title": "JavaScript: Writing a Blockchain in Node.js",
+    "link": "https://www.jsmonday.dev/articles/34/writing-a-blockchain-in-node-js"
+  },
+  {
+    "title": "Kotlin: Let’s implement a cryptocurrency in Kotlin",
+    "link": "https://medium.com/@vasilyf/lets-implement-a-cryptocurrency-in-kotlin-part-1-blockchain-8704069f8580"
+  },
+  {
+    "title": "Python: Learn Blockchains by Building One",
+    "link": "https://hackernoon.com/learn-blockchains-by-building-one-117428612f46"
+  },
+  {
+    "title": "Python: Build your own blockchain: a Python tutorial",
+    "link": "http://ecomunsing.com/build-your-own-blockchain"
+  },
+  {
+    "title": "Python: A Practical Introduction to Blockchain with Python",
+    "link": "http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/"
+  },
+  {
+    "title": "Python: Let’s Build the Tiniest Blockchain",
+    "link": "https://medium.com/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b"
+  },
+  {
+    "title": "Ruby: Programming Blockchains Step-by-Step (Manuscripts Book Edition)",
+    "link": "https://github.com/yukimotopress/programming-blockchains-step-by-step"
+  },
+  {
+    "title": "Scala: How to build a simple actor-based blockchain",
+    "link": "https://medium.freecodecamp.org/how-to-build-a-simple-actor-based-blockchain-aac1e996c177"
+  },
+  {
+    "title": "TypeScript: Naivecoin: a tutorial for building a cryptocurrency",
+    "link": "https://lhartikk.github.io/"
+  },
+  {
+    "title": "TypeScript: NaivecoinStake: a tutorial for building a cryptocurrency with the Proof of Stake consensus",
+    "link": "https://naivecoinstake.learn.uno/"
+  },
+  {
+    "title": "Haskell: Roll your own IRC bot",
+    "link": "https://wiki.haskell.org/Roll_your_own_IRC_bot"
+  },
+  {
+    "title": "Java: How To Make a Scary Russian Twitter Bot With Java",
+    "link": "https://medium.com/@SeloSlav/how-to-make-a-scary-russian-twitter-bot-with-java-b7b62768a3ac"
+  },
+  {
+    "title": "Node.js: Creating a Simple Facebook Messenger AI Bot with API.ai in Node.js",
+    "link": "https://tutorials.botsfloor.com/creating-a-simple-facebook-messenger-ai-bot-with-api-ai-in-node-js-50ae2fa5c80d"
+  },
+  {
+    "title": "Node.js: How to make a responsive telegram bot",
+    "link": "https://www.sohamkamani.com/blog/2016/09/21/making-a-telegram-bot/"
+  },
+  {
+    "title": "Node.js: Create a Discord bot",
+    "link": "https://discordjs.guide/"
+  },
+  {
+    "title": "Node.js: gifbot - Building a GitHub App",
+    "link": "https://blog.scottlogic.com/2017/05/22/gifbot-github-integration.html"
+  },
+  {
+    "title": "Node.js: Building A Simple AI Chatbot With Web Speech API And Node.js",
+    "link": "https://www.smashingmagazine.com/2017/08/ai-chatbot-web-speech-api-node-js/"
+  },
+  {
+    "title": "Python: Chatbot Fundamentals: An interactive guide to writing bots in Python",
+    "link": "https://apps.worldwritable.com/tutorials/chatbot/"
+  },
+  {
+    "title": "Python: How to Build Your First Slack Bot with Python",
+    "link": "https://www.fullstackpython.com/blog/build-first-slack-bot-python.html"
+  },
+  {
+    "title": "Python: How to build a Slack Bot with Python using Slack Events API & Django under 20 minute",
+    "link": "https://medium.com/freehunch/how-to-build-a-slack-bot-with-python-using-slack-events-api-django-under-20-minute-code-included-269c3a9bf64e"
+  },
+  {
+    "title": "Python: Build a Reddit Bot",
+    "link": "http://pythonforengineers.com/build-a-reddit-bot-part-1/"
+  },
+  {
+    "title": "Python: How To Make A Reddit Bot",
+    "link": "https://www.youtube.com/watch?v=krTUf7BpTc0"
+  },
+  {
+    "title": "Python: How To Create a Telegram Bot Using Python",
+    "link": "https://khashtamov.com/en/how-to-create-a-telegram-bot-using-python/"
+  },
+  {
+    "title": "Python: Create a Twitter Bot in Python Using Tweepy",
+    "link": "https://medium.freecodecamp.org/creating-a-twitter-bot-in-python-with-tweepy-ac524157a607"
+  },
+  {
+    "title": "Python: Creating Reddit Bot with Python & PRAW",
+    "link": "https://www.youtube.com/playlist?list=PLIFBTFgFpoJ9vmYYlfxRFV6U_XhG-4fpP"
+  },
+  {
+    "title": "R: Build A Cryptocurrency Trading Bot with R",
+    "link": "https://towardsdatascience.com/build-a-cryptocurrency-trading-bot-with-r-1445c429e1b1"
+  },
+  {
+    "title": "Rust: A bot for Starcraft in Rust, C or any other language",
+    "link": "https://habr.com/en/post/436254/"
+  },
+  {
+    "title": "C: Rewriting the cat command from scratch",
+    "link": "https://learnto.computer/screencasts/bsd-cat"
+  },
+  {
+    "title": "Go: Visualize your local git contributions with Go",
+    "link": "https://flaviocopes.com/go-git-contributions/"
+  },
+  {
+    "title": "Go: Build a command line app with Go: lolcat",
+    "link": "https://flaviocopes.com/go-tutorial-lolcat/"
+  },
+  {
+    "title": "Go: Building a cli command with Go: cowsay",
+    "link": "https://flaviocopes.com/go-tutorial-cowsay/"
+  },
+  {
+    "title": "Go: Go CLI tutorial: fortune clone",
+    "link": "https://flaviocopes.com/go-tutorial-fortune/"
+  },
+  {
+    "title": "Nim: Writing a stow alternative to manage dotfiles",
+    "link": "https://xmonader.github.io/nimdays/day06_nistow.html"
+  },
+  {
+    "title": "C: Let's Build a Simple Database",
+    "link": "https://cstack.github.io/db_tutorial/"
+  },
+  {
+    "title": "C++: Implementing a Key-Value Store",
+    "link": "http://codecapsule.com/2012/11/07/ikvs-implementing-a-key-value-store-table-of-contents/"
+  },
+  {
+    "title": "C#: Build Your Own Database",
+    "link": "https://www.codeproject.com/Articles/1029838/Build-Your-Own-Database"
+  },
+  {
+    "title": "Clojure: An Archaeology-Inspired Database",
+    "link": "http://aosabook.org/en/500L/an-archaeology-inspired-database.html"
+  },
+  {
+    "title": "Crystal: Why you should build your own NoSQL Database",
+    "link": "https://medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5"
+  },
+  {
+    "title": "JavaScript: Dagoba: an in-memory graph database",
+    "link": "http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html"
+  },
+  {
+    "title": "Python: DBDB: Dog Bed Database",
+    "link": "http://aosabook.org/en/500L/dbdb-dog-bed-database.html"
+  },
+  {
+    "title": "Python: Write your own miniature Redis with Python",
+    "link": "http://charlesleifer.com/blog/building-a-simple-redis-server-with-python/"
+  },
+  {
+    "title": "C: Linux containers in 500 lines of code",
+    "link": "https://blog.lizzie.io/linux-containers-in-500-loc.html"
+  },
+  {
+    "title": "Go: Build Your Own Container Using Less than 100 Lines of Go",
+    "link": "https://www.infoq.com/articles/build-a-container-golang"
+  },
+  {
+    "title": "Go: Building a container from scratch in Go",
+    "link": "https://www.youtube.com/watch?v=8fi7uSYlOdc"
+  },
+  {
+    "title": "Python: A workshop on Linux containers: Rebuild Docker from Scratch",
+    "link": "https://github.com/Fewbytes/rubber-docker"
+  },
+  {
+    "title": "Python: A proof-of-concept imitation of Docker, written in 100% Python",
+    "link": "https://github.com/tonybaloney/mocker"
+  },
+  {
+    "title": "Shell: Docker implemented in around 100 lines of bash",
+    "link": "https://github.com/p8952/bocker"
+  },
+  {
+    "title": "C: Virtual machine in C",
+    "link": "https://blog.felixangell.com/virtual-machine-in-c/"
+  },
+  {
+    "title": "C: Write your Own Virtual Machine",
+    "link": "https://justinmeiners.github.io/lc3-vm/"
+  },
+  {
+    "title": "C: Writing a Game Boy emulator, Cinoop",
+    "link": "https://cturt.github.io/cinoop.html"
+  },
+  {
+    "title": "C++: How to write an emulator (CHIP-8 interpreter)",
+    "link": "http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/"
+  },
+  {
+    "title": "C++: Emulation tutorial (CHIP-8 interpreter)",
+    "link": "http://www.codeslinger.co.uk/pages/projects/chip8.html"
+  },
+  {
+    "title": "C++: Emulation tutorial (GameBoy emulator)",
+    "link": "http://www.codeslinger.co.uk/pages/projects/gameboy.html"
+  },
+  {
+    "title": "C++: Emulation tutorial (Master System emulator)",
+    "link": "http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html"
+  },
+  {
+    "title": "Common Lisp: CHIP-8 in Common Lisp",
+    "link": "http://stevelosh.com/blog/2016/12/chip8-cpu/"
+  },
+  {
+    "title": "JavaScript: GameBoy Emulation in JavaScript",
+    "link": "http://imrannazar.com/GameBoy-Emulation-in-JavaScript"
+  },
+  {
+    "title": "Python: Emulation Basics: Write your own Chip 8 Emulator/Interpreter",
+    "link": "http://omokute.blogspot.com.br/2012/06/emulation-basics-write-your-own-chip-8.html"
+  },
+  {
+    "title": "JavaScript: WTF is JSX (Let's Build a JSX Renderer)",
+    "link": "https://jasonformat.com/wtf-is-jsx/"
+  },
+  {
+    "title": "JavaScript: A DIY guide to build your own React",
+    "link": "https://github.com/hexacta/didact"
+  },
+  {
+    "title": "JavaScript: Reverse Engineering React",
+    "link": "https://vimeo.com/album/3930691"
+  },
+  {
+    "title": "JavaScript: Building React From Scratch",
+    "link": "https://www.youtube.com/watch?v=_MAD4Oly9yg"
+  },
+  {
+    "title": "JavaScript: Building Your Own React Clone in Five Easy Steps",
+    "link": "https://blog.javascripting.com/2016/10/05/building-your-own-react-clone-in-five-easy-steps/"
+  },
+  {
+    "title": "JavaScript: Gooact: React in 160 lines of JavaScript",
+    "link": "https://medium.com/@sweetpalma/gooact-react-in-160-lines-of-javascript-44e0742ad60f"
+  },
+  {
+    "title": "JavaScript: React Internals",
+    "link": "http://www.mattgreer.org/articles/react-internals-part-one-basic-rendering/"
+  },
+  {
+    "title": "JavaScript: Learn how React Reconciler package works by building your own lightweight React DOM",
+    "link": "https://hackernoon.com/learn-you-some-custom-react-renderers-aed7164a4199"
+  },
+  {
+    "title": "JavaScript: Build Yourself a Redux",
+    "link": "https://zapier.com/engineering/how-to-build-redux/"
+  },
+  {
+    "title": "JavaScript: Let’s Write Redux!",
+    "link": "https://www.jamasoftware.com/blog/lets-write-redux/"
+  },
+  {
+    "title": "JavaScript: Redux: Implementing Store from Scratch",
+    "link": "https://egghead.io/lessons/react-redux-implementing-store-from-scratch"
+  },
+  {
+    "title": "JavaScript: Build Your own Simplified AngularJS in 200 Lines of JavaScript",
+    "link": "https://blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/"
+  },
+  {
+    "title": "JavaScript: Make Your Own AngularJS",
+    "link": "http://teropa.info/blog/2013/11/03/make-your-own-angular-part-1-scopes-and-digest.html"
+  },
+  {
+    "title": "JavaScript: How to write your own Virtual DOM",
+    "link": "https://medium.com/@deathmood/how-to-write-your-own-virtual-dom-ee74acc13060"
+  },
+  {
+    "title": "JavaScript: Building a frontend framework, from scratch, with components (templating, state, VDOM)",
+    "link": "https://mfrachet.github.io/create-frontend-framework/"
+  },
+  {
+    "title": "JavaScript: Build your own React",
+    "link": "https://pomb.us/build-your-own-react/"
+  },
+  {
+    "title": "C: Handmade Hero",
+    "link": "https://handmadehero.org/"
+  },
+  {
+    "title": "C: How to Program an NES game in C",
+    "link": "https://nesdoug.com/"
+  },
+  {
+    "title": "C: Chess Engine In C",
+    "link": "https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg"
+  },
+  {
+    "title": "C: Let's Make: Dangerous Dave",
+    "link": "https://www.youtube.com/playlist?list=PLSkJey49cOgTSj465v2KbLZ7LMn10bCF9"
+  },
+  {
+    "title": "C: Learn Video Game Programming in C",
+    "link": "https://www.youtube.com/playlist?list=PLT6WFYYZE6uLMcPGS3qfpYm7T_gViYMMt"
+  },
+  {
+    "title": "C: Coding A Sudoku Solver in C",
+    "link": "https://www.youtube.com/playlist?list=PLkTXsX7igf8edTYU92nU-f5Ntzuf-RKvW"
+  },
+  {
+    "title": "C: Coding a Rogue/Nethack RPG in C",
+    "link": "https://www.youtube.com/playlist?list=PLkTXsX7igf8erbWGYT4iSAhpnJLJ0Nk5G"
+  },
+  {
+    "title": "C: On Tetris and Reimplementation",
+    "link": "https://brennan.io/2015/06/12/tetris-reimplementation/"
+  },
+  {
+    "title": "C++: Breakout",
+    "link": "https://learnopengl.com/In-Practice/2D-Game/Breakout"
+  },
+  {
+    "title": "C++: Beginning Game Programming v2.0",
+    "link": "http://lazyfoo.net/tutorials/SDL/"
+  },
+  {
+    "title": "C++: Tetris tutorial in C++ platform independent focused in game logic for beginners",
+    "link": "http://javilop.com/gamedev/tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners/"
+  },
+  {
+    "title": "C++: Remaking Cavestory in C++",
+    "link": "https://www.youtube.com/watch?v=ETvApbD5xRo&list=PLNOBk_id22bw6LXhrGfhVwqQIa-M2MsLa"
+  },
+  {
+    "title": "C++: Reconstructing Cave Story",
+    "link": "https://www.youtube.com/playlist?list=PL006xsVEsbKjSKBmLu1clo85yLrwjY67X"
+  },
+  {
+    "title": "C++: Space Invaders from Scratch",
+    "link": "http://nicktasios.nl/posts/space-invaders-from-scratch-part-1.html"
+  },
+  {
+    "title": "C#: Learn C# by Building a Simple RPG",
+    "link": "http://scottlilly.com/learn-c-by-building-a-simple-rpg-index/"
+  },
+  {
+    "title": "C#: Creating a Roguelike Game in C#",
+    "link": "https://roguesharp.wordpress.com/"
+  },
+  {
+    "title": "C#: Build a C#/WPF RPG",
+    "link": "https://scottlilly.com/build-a-cwpf-rpg/"
+  },
+  {
+    "title": "Go: Games With Go",
+    "link": "https://gameswithgo.org/"
+  },
+  {
+    "title": "Java: 3D Game Development with LWJGL 3",
+    "link": "https://lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/"
+  },
+  {
+    "title": "JavaScript: 2D breakout game using Phaser",
+    "link": "https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser"
+  },
+  {
+    "title": "JavaScript: How to Make Flappy Bird in HTML5 With Phaser",
+    "link": "http://www.lessmilk.com/tutorial/flappy-bird-phaser-1"
+  },
+  {
+    "title": "JavaScript: Developing Games with React, Redux, and SVG",
+    "link": "https://auth0.com/blog/developing-games-with-react-redux-and-svg-part-1/"
+  },
+  {
+    "title": "JavaScript: Build your own 8-Ball Pool game from scratch",
+    "link": "https://www.youtube.com/watch?v=aXwCrtAo4Wc"
+  },
+  {
+    "title": "JavaScript: How to Make Your First Roguelike",
+    "link": "https://gamedevelopment.tutsplus.com/tutorials/how-to-make-your-first-roguelike--gamedev-13677"
+  },
+  {
+    "title": "JavaScript: Think like a programmer: How to build Snake using only JavaScript, HTML & CSS",
+    "link": "https://medium.freecodecamp.org/think-like-a-programmer-how-to-build-snake-using-only-javascript-html-and-css-7b1479c3339e"
+  },
+  {
+    "title": "Lua: BYTEPATH",
+    "link": "https://github.com/SSYGEN/blog/issues/30"
+  },
+  {
+    "title": "Python: Developing Games With PyGame",
+    "link": "https://pythonprogramming.net/pygame-python-3-part-1-intro/"
+  },
+  {
+    "title": "Python: Making Games with Python & Pygame",
+    "link": "https://inventwithpython.com/makinggames.pdf [pdf]"
+  },
+  {
+    "title": "Python: The Complete Roguelike Tutorial",
+    "link": "https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb"
+  },
+  {
+    "title": "Python: Roguelike Tutorial Revised",
+    "link": "http://rogueliketutorials.com/"
+  },
+  {
+    "title": "Ruby: Developing Games With Ruby",
+    "link": "https://leanpub.com/developing-games-with-ruby/read"
+  },
+  {
+    "title": "Ruby: Ruby Snake",
+    "link": "https://www.diatomenterprises.com/gamedev-on-ruby-why-not/"
+  },
+  {
+    "title": "Rust: Adventures in Rust: A Basic 2D Game",
+    "link": "https://a5huynh.github.io/posts/2018/adventures-in-rust/"
+  },
+  {
+    "title": "Rust: Roguelike Tutorial in Rust + tcod",
+    "link": "https://tomassedovic.github.io/roguelike-tutorial/"
+  },
+  {
+    "title": "Haskell: Reimplementing “git clone” in Haskell from the bottom up",
+    "link": "http://stefan.saasen.me/articles/git-clone-in-haskell-from-the-bottom-up/"
+  },
+  {
+    "title": "JavaScript: Gitlet",
+    "link": "http://gitlet.maryrosecook.com/docs/gitlet.html"
+  },
+  {
+    "title": "JavaScript: Build GIT - Learn GIT",
+    "link": "https://kushagragour.in/blog/2014/01/build-git-learn-git/"
+  },
+  {
+    "title": "Python: Just enough of a Git client to create a repo, commit, and push itself to GitHub",
+    "link": "https://benhoyt.com/writings/pygit/"
+  },
+  {
+    "title": "Python: Write yourself a Git!",
+    "link": "https://wyag.thb.lt/"
+  },
+  {
+    "title": "Ruby: Rebuilding Git in Ruby",
+    "link": "https://robots.thoughtbot.com/rebuilding-git-in-ruby"
+  },
+  {
+    "title": "C: Beej's Guide to Network Programming",
+    "link": "http://beej.us/guide/bgnet/"
+  },
+  {
+    "title": "C: Let's code a TCP/IP stack",
+    "link": "http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/"
+  },
+  {
+    "title": "Ruby: How to build a network stack in Ruby",
+    "link": "https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b"
+  },
+  {
+    "title": "C#: Neural Network OCR",
+    "link": "https://www.codeproject.com/Articles/11285/Neural-Network-OCR"
+  },
+  {
+    "title": "F#: Building Neural Networks in F#",
+    "link": "https://towardsdatascience.com/building-neural-networks-in-f-part-1-a2832ae972e6"
+  },
+  {
+    "title": "Go: Build a multilayer perceptron with Golang",
+    "link": "https://made2591.github.io/posts/neuralnetwork"
+  },
+  {
+    "title": "Go: How to build a simple artificial neural network with Go",
+    "link": "https://sausheong.github.io/posts/how-to-build-a-simple-artificial-neural-network-with-go/"
+  },
+  {
+    "title": "Go: Building a Neural Net from Scratch in Go",
+    "link": "https://datadan.io/blog/neural-net-with-go"
+  },
+  {
+    "title": "JavaScript / Java: Neural Networks - The Nature of Code",
+    "link": "https://www.youtube.com/playlist?list=PLRqwX-V7Uu6aCibgK1PTWWu9by6XFdCfh"
+  },
+  {
+    "title": "JavaScript: Neural Network implementation in JavaScript, by an example",
+    "link": "https://franpapers.com/en/machine-learning-ai-en/2017-neural-network-implementation-in-javascript-by-an-example/"
+  },
+  {
+    "title": "JavaScript: Neural networks from scratch for JavaScript linguists (Part1 — The Perceptron)",
+    "link": "https://hackernoon.com/neural-networks-from-scratch-for-javascript-linguists-part1-the-perceptron-632a4d1fbad2"
+  },
+  {
+    "title": "Python: A Neural Network in 11 lines of Python",
+    "link": "https://iamtrask.github.io/2015/07/12/basic-python-network/"
+  },
+  {
+    "title": "Python: Implement a Neural Network from Scratch",
+    "link": "https://victorzhou.com/blog/intro-to-neural-networks/"
+  },
+  {
+    "title": "Python: Optical Character Recognition (OCR)",
+    "link": "http://aosabook.org/en/500L/optical-character-recognition-ocr.html"
+  },
+  {
+    "title": "Python: Traffic signs classification with a convolutional network",
+    "link": "https://navoshta.com/traffic-signs-classification/"
+  },
+  {
+    "title": "Python: Generate Music using LSTM Neural Network in Keras",
+    "link": "https://towardsdatascience.com/how-to-generate-music-using-a-lstm-neural-network-in-keras-68786834d4c5"
+  },
+  {
+    "title": "Python: An Introduction to Convolutional Neural Networks",
+    "link": "https://victorzhou.com/blog/intro-to-cnns-part-1/"
+  },
+  {
+    "title": "Assembly: Writing a Tiny x86 Bootloader",
+    "link": "http://joebergeron.io/posts/post_two.html"
+  },
+  {
+    "title": "Assembly: Baking Pi – Operating Systems Development",
+    "link": "http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html"
+  },
+  {
+    "title": "C: Building a software and hardware stack for a simple computer from scratch",
+    "link": "https://www.youtube.com/watch?v=ZjwvMcP3Nf0&list=PLU94OURih-CiP4WxKSMt3UcwMSDM3aTtX"
+  },
+  {
+    "title": "C: Operating Systems: From 0 to 1",
+    "link": "https://tuhdo.github.io/os01/"
+  },
+  {
+    "title": "C: The little book about OS development",
+    "link": "https://littleosbook.github.io/"
+  },
+  {
+    "title": "C: Roll your own toy UNIX-clone OS",
+    "link": "http://jamesmolloy.co.uk/tutorial_html/"
+  },
+  {
+    "title": "C: Kernel 101 – Let’s write a Kernel",
+    "link": "https://arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel"
+  },
+  {
+    "title": "C: Kernel 201 – Let’s write a Kernel with keyboard and screen support",
+    "link": "https://arjunsreedharan.org/post/99370248137/kernel-201-lets-write-a-kernel-with-keyboard"
+  },
+  {
+    "title": "C: Build a minimal multi-tasking kernel for ARM from scratch",
+    "link": "https://github.com/jserv/mini-arm-os"
+  },
+  {
+    "title": "C: How to create an OS from scratch",
+    "link": "https://github.com/cfenollosa/os-tutorial"
+  },
+  {
+    "title": "C: Malloc tutorial",
+    "link": "https://danluu.com/malloc-tutorial/"
+  },
+  {
+    "title": "C: Hack the virtual memory",
+    "link": "https://blog.holbertonschool.com/hack-the-virtual-memory-c-strings-proc/"
+  },
+  {
+    "title": "C: Learning operating system development using Linux kernel and Raspberry Pi",
+    "link": "https://github.com/s-matyukevich/raspberry-pi-os"
+  },
+  {
+    "title": "C: Operating systems development for Dummies",
+    "link": "https://medium.com/@lduck11007/operating-systems-development-for-dummies-3d4d786e8ac"
+  },
+  {
+    "title": "C++: Write your own Operating System",
+    "link": "https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M"
+  },
+  {
+    "title": "C++: Writing a Bootloader",
+    "link": "http://3zanders.co.uk/2017/10/13/writing-a-bootloader/"
+  },
+  {
+    "title": "Rust: Writing an OS in Rust",
+    "link": "https://os.phil-opp.com/"
+  },
+  {
+    "title": "C: Video Game Physics Tutorial",
+    "link": "https://www.toptal.com/game/video-game-physics-part-i-an-introduction-to-rigid-body-dynamics"
+  },
+  {
+    "title": "C++: Game physics series by Allen Chou",
+    "link": "http://allenchou.net/game-physics-series/"
+  },
+  {
+    "title": "C++: How to Create a Custom Physics Engine",
+    "link": "https://gamedevelopment.tutsplus.com/series/how-to-create-a-custom-physics-engine--gamedev-12715"
+  },
+  {
+    "title": "C++: 3D Physics Engine Tutorial",
+    "link": "https://www.youtube.com/playlist?list=PLEETnX-uPtBXm1KEr_2zQ6K_0hoGH6JJ0"
+  },
+  {
+    "title": "JavaScript: Build your own basic physics engine in JavaScript",
+    "link": "https://www.graphitedigital.com/blog/build-your-own-basic-physics-engine-in-javascript"
+  },
+  {
+    "title": "JavaScript: How Physics Engines Work",
+    "link": "http://buildnewgames.com/gamephysics/"
+  },
+  {
+    "title": "JavaScript: Broad Phase Collision Detection Using Spatial Partitioning",
+    "link": "http://buildnewgames.com/broad-phase-collision-detection/"
+  },
+  {
+    "title": "JavaScript: Build a simple 2D physics engine for JavaScript games",
+    "link": "https://www.ibm.com/developerworks/library/wa-build2dphysicsengine/index.html"
+  },
+  {
+    "title": "(any): mal - Make a Lisp",
+    "link": "https://github.com/kanaka/mal#mal---make-a-lisp"
+  },
+  {
+    "title": "Assembly: Jonesforth",
+    "link": "https://github.com/nornagon/jonesforth/blob/master/jonesforth.S"
+  },
+  {
+    "title": "C: Baby's First Garbage Collector",
+    "link": "http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/"
+  },
+  {
+    "title": "C: Build Your Own Lisp: Learn C and build your own programming language in 1000 lines of code",
+    "link": "http://www.buildyourownlisp.com/"
+  },
+  {
+    "title": "C: Writing a Simple Garbage Collector in C",
+    "link": "http://maplant.com/gc.html"
+  },
+  {
+    "title": "C: C interpreter that interprets itself.",
+    "link": "https://github.com/lotabout/write-a-C-interpreter"
+  },
+  {
+    "title": "C: A C & x86 version of the \"Let's Build a Compiler\" by Jack Crenshaw",
+    "link": "https://github.com/lotabout/Let-s-build-a-compiler"
+  },
+  {
+    "title": "C++: Writing Your Own Toy Compiler Using Flex",
+    "link": "https://gnuu.org/2009/09/18/writing-your-own-toy-compiler/"
+  },
+  {
+    "title": "C++: How to Create a Compiler",
+    "link": "https://www.youtube.com/watch?v=eF9qWbuQLuw"
+  },
+  {
+    "title": "C++: Kaleidoscope: Implementing a Language with LLVM",
+    "link": "https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html"
+  },
+  {
+    "title": "F#: Understanding Parser Combinators",
+    "link": "https://fsharpforfunandprofit.com/posts/understanding-parser-combinators/"
+  },
+  {
+    "title": "Elixir: Demystifying compilers by writing your own",
+    "link": "https://www.youtube.com/watch?v=zMJYoYwOCd4"
+  },
+  {
+    "title": "Go: The Super Tiny Compiler",
+    "link": "https://github.com/hazbo/the-super-tiny-compiler"
+  },
+  {
+    "title": "Go: Lexical Scanning in Go",
+    "link": "https://www.youtube.com/watch?v=HxaD_trXwRE"
+  },
+  {
+    "title": "Haskell: Let's Build a Compiler",
+    "link": "https://g-ford.github.io/cradle/"
+  },
+  {
+    "title": "Haskell: Write You a Haskell",
+    "link": "http://dev.stephendiehl.com/fun/"
+  },
+  {
+    "title": "Haskell: Write Yourself a Scheme in 48 Hours",
+    "link": "https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours"
+  },
+  {
+    "title": "Haskell: Write You A Scheme",
+    "link": "https://www.wespiser.com/writings/wyas/home.html"
+  },
+  {
+    "title": "Java: Crafting interpreters: A handbook for making programming languages",
+    "link": "http://www.craftinginterpreters.com/"
+  },
+  {
+    "title": "Java: Creating JVM Language",
+    "link": "http://jakubdziworski.github.io/categories.html#Enkel-ref"
+  },
+  {
+    "title": "JavaScript: The Super Tiny Compiler",
+    "link": "https://github.com/jamiebuilds/the-super-tiny-compiler"
+  },
+  {
+    "title": "JavaScript: The Super Tiny Interpreter",
+    "link": "https://github.com/keyanzhang/the-super-tiny-interpreter"
+  },
+  {
+    "title": "JavaScript: Little Lisp interpreter",
+    "link": "https://maryrosecook.com/blog/post/little-lisp-interpreter"
+  },
+  {
+    "title": "JavaScript: How to implement a programming language in JavaScript",
+    "link": "http://lisperator.net/pltut/"
+  },
+  {
+    "title": "OCaml: Writing a C Compiler",
+    "link": "https://norasandler.com/2017/11/29/Write-a-Compiler.html"
+  },
+  {
+    "title": "OCaml: Writing a Lisp, the series",
+    "link": "https://bernsteinbear.com/blog/lisp/"
+  },
+  {
+    "title": "Pascal: Let's Build a Compiler",
+    "link": "https://compilers.iecc.com/crenshaw/"
+  },
+  {
+    "title": "Python: A Python Interpreter Written in Python",
+    "link": "http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html"
+  },
+  {
+    "title": "Python: lisp.py: Make your own Lisp interpreter",
+    "link": "http://khamidou.com/compilers/lisp.py/"
+  },
+  {
+    "title": "Python: Simple Iterator-based Parsing",
+    "link": "http://effbot.org/zone/simple-iterator-parser.htm"
+  },
+  {
+    "title": "Python: Simple Top-Down Parsing in Python",
+    "link": "http://effbot.org/zone/simple-top-down-parsing.htm"
+  },
+  {
+    "title": "Python: How to Write a Lisp Interpreter in Python",
+    "link": "http://norvig.com/lispy.html"
+  },
+  {
+    "title": "Python: Let’s Build A Simple Interpreter",
+    "link": "https://ruslanspivak.com/lsbasi-part1/"
+  },
+  {
+    "title": "Python: Make Your Own Simple Interpreted Programming Language",
+    "link": "https://www.youtube.com/watch?v=dj9CBS3ikGA&list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD&index=1"
+  },
+  {
+    "title": "Racket: Beautiful Racket: How to make your own programming languages with Racket",
+    "link": "https://beautifulracket.com/"
+  },
+  {
+    "title": "Ruby: A Compiler From Scratch",
+    "link": "https://www.destroyallsoftware.com/screencasts/catalog/a-compiler-from-scratch"
+  },
+  {
+    "title": "Ruby: Markdown compiler from scratch in Ruby",
+    "link": "https://blog.beezwax.net/2017/07/07/writing-a-markdown-compiler/"
+  },
+  {
+    "title": "Rust: So You Want to Build a Language VM",
+    "link": "https://blog.subnetzero.io/post/building-language-vm-part-00/"
+  },
+  {
+    "title": "Rust: Learning Parser Combinators With Rust",
+    "link": "https://bodil.lol/parser-combinators/"
+  },
+  {
+    "title": "Swift: Building a LISP from scratch with Swift",
+    "link": "https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/"
+  },
+  {
+    "title": "TypeScript: Build your own WebAssembly Compiler",
+    "link": "https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html"
+  },
+  {
+    "title": "C: A Regular Expression Matcher",
+    "link": "https://www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html"
+  },
+  {
+    "title": "C: Regular Expression Matching Can Be Simple And Fast",
+    "link": "https://swtch.com/~rsc/regexp/regexp1.html"
+  },
+  {
+    "title": "JavaScript: Build a Regex Engine in Less than 40 Lines of Code",
+    "link": "https://nickdrane.com/build-your-own-regex/"
+  },
+  {
+    "title": "JavaScript: How to implement regular expressions in functional javascript using derivatives",
+    "link": "http://dpk.io/dregs/toydregs"
+  },
+  {
+    "title": "JavaScript: Implementing a Regular Expression Engine",
+    "link": "https://deniskyashif.com/2019/02/17/implementing-a-regular-expression-engine/"
+  },
+  {
+    "title": "Perl: How Regexes Work",
+    "link": "https://perl.plover.com/Regex/article.html"
+  },
+  {
+    "title": "Scala: No Magic: Regular Expressions",
+    "link": "https://rcoh.svbtle.com/no-magic-regular-expressions"
+  },
+  {
+    "title": "CSS: A search engine in CSS",
+    "link": "https://stories.algolia.com/a-search-engine-in-css-b5ec4e902e97"
+  },
+  {
+    "title": "Python: Building a search engine using Redis and redis-py",
+    "link": "http://www.dr-josiah.com/2010/07/building-search-engine-using-redis-and.html"
+  },
+  {
+    "title": "Python: Building a Vector Space Indexing Engine in Python",
+    "link": "https://boyter.org/2010/08/build-vector-space-search-engine-python/"
+  },
+  {
+    "title": "Python: Building A Python-Based Search Engine",
+    "link": "https://www.youtube.com/watch?v=cY7pE7vX6MU"
+  },
+  {
+    "title": "Python: Making text search learn from feedback",
+    "link": "https://medium.com/filament-ai/making-text-search-learn-from-feedback-4fe210fd87b0"
+  },
+  {
+    "title": "Python: Finding Important Words in Text Using TF-IDF",
+    "link": "https://stevenloria.com/tf-idf/"
+  },
+  {
+    "title": "C: Tutorial - Write a Shell in C",
+    "link": "https://brennan.io/2015/01/16/write-a-shell-in-c/"
+  },
+  {
+    "title": "C: Let's build a shell!",
+    "link": "https://github.com/kamalmarhubi/shell-workshop"
+  },
+  {
+    "title": "C: Writing a UNIX Shell",
+    "link": "https://indradhanush.github.io/blog/writing-a-unix-shell-part-1/"
+  },
+  {
+    "title": "C: Build Your Own Shell",
+    "link": "https://github.com/tokenrove/build-your-own-shell"
+  },
+  {
+    "title": "Go: Writing a simple shell in Go",
+    "link": "https://sj14.gitlab.io/post/2018-07-01-go-unix-shell/"
+  },
+  {
+    "title": "Ruby: A Unix Shell in Ruby",
+    "link": "https://www.jstorimer.com/blogs/workingwithcode/7766107-a-unix-shell-in-ruby"
+  },
+  {
+    "title": "Rust: Build Your Own Shell using Rust",
+    "link": "https://www.joshmcguigan.com/blog/build-your-own-shell-rust/"
+  },
+  {
+    "title": "JavaScript: JavaScript template engine in just 20 lines",
+    "link": "http://krasimirtsonev.com/blog/article/Javascript-template-engine-in-just-20-line"
+  },
+  {
+    "title": "JavaScript: Understanding JavaScript Micro-Templating",
+    "link": "https://medium.com/wdstack/understanding-javascript-micro-templating-f37a37b3b40e"
+  },
+  {
+    "title": "Python: Approach: Building a toy template engine in Python",
+    "link": "http://alexmic.net/building-a-template-engine/"
+  },
+  {
+    "title": "Python: A Template Engine",
+    "link": "http://aosabook.org/en/500L/a-template-engine.html"
+  },
+  {
+    "title": "Ruby: How to write a template engine in less than 30 lines of code",
+    "link": "http://bits.citrusbyte.com/how-to-write-a-template-library/"
+  },
+  {
+    "title": "C: Build Your Own Text Editor",
+    "link": "https://viewsourcecode.org/snaptoken/kilo/"
+  },
+  {
+    "title": "C++: Designing a Simple Text Editor",
+    "link": "http://www.fltk.org/doc-1.1/editor.html"
+  },
+  {
+    "title": "Python: Python Tutorial: Make Your Own Text Editor",
+    "link": "https://www.youtube.com/watch?v=xqDonHEYPgA"
+  },
+  {
+    "title": "Python: Create a Simple Python Text Editor!",
+    "link": "http://www.instructables.com/id/Create-a-Simple-Python-Text-Editor/"
+  },
+  {
+    "title": "Ruby: Build a Collaborative Text Editor Using Rails",
+    "link": "https://blog.aha.io/text-editor/"
+  },
+  {
+    "title": "Python: Developing a License Plate Recognition System with Machine Learning in Python",
+    "link": "https://blog.devcenter.co/developing-a-license-plate-recognition-system-with-machine-learning-in-python-787833569ccd"
+  },
+  {
+    "title": "Python: Building a Facial Recognition Pipeline with Deep Learning in Tensorflow",
+    "link": "https://hackernoon.com/building-a-facial-recognition-pipeline-with-deep-learning-in-tensorflow-66e7645015b8"
+  },
+  {
+    "title": "C++: Let's Make a Voxel Engine",
+    "link": "https://sites.google.com/site/letsmakeavoxelengine/home"
+  },
+  {
+    "title": "Java: Let's make a voxel engine",
+    "link": "https://www.youtube.com/watch?v=C_Fo9PcrVXA&list=PLXa65xzz2vplye7cn1HH4GyE6_FjnDSug&index=1"
+  },
+  {
+    "title": "Java: Java Voxel Engine Tutorial",
+    "link": "https://www.youtube.com/watch?v=QZ4Vk2PkPZk&list=PL80Zqpd23vJfyWQi-8FKDbeO_ZQamLKJL"
+  },
+  {
+    "title": "PHP: Code a Search Engine in PHP",
+    "link": "https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/"
+  },
+  {
+    "title": "Ruby: Write an Internet search engine with 200 lines of Ruby code",
+    "link": "https://blog.saush.com/2009/03/17/write-an-internet-search-engine-with-200-lines-of-ruby-code/"
+  },
+  {
+    "title": "C#: Writing a Web Server from Scratch",
+    "link": "https://www.codeproject.com/Articles/859108/Writing-a-Web-Server-from-Scratch"
+  },
+  {
+    "title": "Node.js: Let's code a web server from scratch with NodeJS Streams",
+    "link": "https://www.codementor.io/ziad-saab/let-s-code-a-web-server-from-scratch-with-nodejs-streams-h4uc9utji"
+  },
+  {
+    "title": "Node.js: lets-build-express",
+    "link": "https://github.com/antoaravinth/lets-build-express"
+  },
+  {
+    "title": "PHP: Writing a webserver in pure PHP",
+    "link": "http://station.clancats.com/writing-a-webserver-in-pure-php/"
+  },
+  {
+    "title": "Python: A Simple Web Server",
+    "link": "http://aosabook.org/en/500L/a-simple-web-server.html"
+  },
+  {
+    "title": "Python: Let’s Build A Web Server.",
+    "link": "https://ruslanspivak.com/lsbaws-part1/"
+  },
+  {
+    "title": "Python: Web application from scratch",
+    "link": "https://defn.io/2018/02/25/web-app-from-scratch-01/"
+  },
+  {
+    "title": "Python: Building a basic HTTP Server from scratch in Python",
+    "link": "http://joaoventura.net/blog/2017/python-webserver/"
+  },
+  {
+    "title": "Python: Implementing a RESTful Web API with Python & Flask",
+    "link": "http://blog.luisrei.com/articles/flaskrest.html"
+  },
+  {
+    "title": "Ruby: Building a simple websockets server from scratch in Ruby",
+    "link": "http://blog.honeybadger.io/building-a-simple-websockets-server-from-scratch-in-ruby/"
+  },
+  {
+    "title": "(any): From NAND to Tetris: Building a Modern Computer From First Principles",
+    "link": "http://nand2tetris.org/"
+  },
+  {
+    "title": "Alloy: The Same-Origin Policy",
+    "link": "http://aosabook.org/en/500L/the-same-origin-policy.html"
+  },
+  {
+    "title": "C: How to Write a Video Player in Less Than 1000 Lines",
+    "link": "http://dranger.com/ffmpeg/ffmpeg.html"
+  },
+  {
+    "title": "C: Learn how to write a hash table in C",
+    "link": "https://github.com/jamesroutley/write-a-hash-table"
+  },
+  {
+    "title": "C: The very basics of a terminal emulator",
+    "link": "https://www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html"
+  },
+  {
+    "title": "C: Write a System Call",
+    "link": "https://brennan.io/2016/11/14/kernel-dev-ep3/"
+  },
+  {
+    "title": "C: Sol - An MQTT broker from scratch",
+    "link": "https://codepr.github.io/posts/sol-mqtt-broker"
+  },
+  {
+    "title": "C++: Build your own VR headset for $100",
+    "link": "https://github.com/relativty/Relativ"
+  },
+  {
+    "title": "C++: How X Window Managers work and how to write one",
+    "link": "https://seasonofcode.com/posts/how-x-window-managers-work-and-how-to-write-one-part-i.html"
+  },
+  {
+    "title": "C++: Writing a Linux Debugger",
+    "link": "https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/"
+  },
+  {
+    "title": "C++: How a 64k intro is made",
+    "link": "http://www.lofibucket.com/articles/64k_intro.html"
+  },
+  {
+    "title": "C#: C# Networking: Create a TCP chater server, TCP games, UDP Pong and more",
+    "link": "https://16bpp.net/tutorials/csharp-networking"
+  },
+  {
+    "title": "C#: Loading and rendering 3D skeletal animations from scratch in C# and GLSL",
+    "link": "https://www.seanjoflynn.com/research/skeletal-animation.html"
+  },
+  {
+    "title": "Clojure: Building a spell-checker",
+    "link": "https://bernhardwenzel.com/articles/clojure-spellchecker/"
+  },
+  {
+    "title": "Go: Let's Create a Simple Load Balancer",
+    "link": "https://kasvith.github.io/posts/lets-create-a-simple-lb-go/"
+  },
+  {
+    "title": "Java: How to Build an Android Reddit App",
+    "link": "https://www.youtube.com/playlist?list=PLgCYzUzKIBE9HUJU-upNvl3TRVAo9W47y"
+  },
+  {
+    "title": "JavaScript: Build Your Own Module Bundler - Minipack",
+    "link": "https://github.com/ronami/minipack"
+  },
+  {
+    "title": "JavaScript: Learn JavaScript Promises by Building a Promise from Scratch",
+    "link": "https://levelup.gitconnected.com/understand-javascript-promises-by-building-a-promise-from-scratch-84c0fd855720"
+  },
+  {
+    "title": "JavaScript: Implementing promises from scratch (TDD way)",
+    "link": "https://www.mauriciopoppe.com/notes/computer-science/computation/promises/"
+  },
+  {
+    "title": "JavaScript: Implement your own — call(), apply() and bind() method in JavaScript",
+    "link": "https://blog.usejournal.com/implement-your-own-call-apply-and-bind-method-in-javascript-42cc85dba1b"
+  },
+  {
+    "title": "JavaScript: JavaScript Algorithms and Data Structures",
+    "link": "https://github.com/trekhleb/javascript-algorithms"
+  },
+  {
+    "title": "JavaScript: How to Make an Evolutionary Tetris AI",
+    "link": "https://www.youtube.com/watch?v=xLHCMMGuN0Q"
+  },
+  {
+    "title": "JavaScript: Build a ride hailing app with React Native",
+    "link": "https://pusher.com/tutorials/ride-hailing-react-native"
+  },
+  {
+    "title": "Kotlin: Build Your Own Cache",
+    "link": "https://github.com/kezhenxu94/cache-lite"
+  },
+  {
+    "title": "Nim: Writing a Redis Protocol Parser",
+    "link": "https://xmonader.github.io/nimdays/day12_resp.html"
+  },
+  {
+    "title": "Nim: Writing a Build system",
+    "link": "https://xmonader.github.io/nimdays/day11_buildsystem.html"
+  },
+  {
+    "title": "Nim: Writing a MiniTest Framework",
+    "link": "https://xmonader.github.io/nimdays/day08_minitest.html"
+  },
+  {
+    "title": "Nim: Writing a DMIDecode Parser",
+    "link": "https://xmonader.github.io/nimdays/day01_dmidecode.html"
+  },
+  {
+    "title": "Nim: Writing a INI Parser",
+    "link": "https://xmonader.github.io/nimdays/day05_iniparser.html"
+  },
+  {
+    "title": "Nim: Writing a Link Checker",
+    "link": "https://xmonader.github.io/nimdays/day04_asynclinkschecker.html"
+  },
+  {
+    "title": "Nim: Writing a URL Shortening Service",
+    "link": "https://xmonader.github.io/nimdays/day07_shorturl.html"
+  },
+  {
+    "title": "Node.js: Build a static site generator in 40 lines with Node.js",
+    "link": "https://www.webdevdrops.com/build-static-site-generator-nodejs-8969ebe34b22/"
+  },
+  {
+    "title": "Node.js: Building A Simple Single Sign On(SSO) Server And Solution From Scratch In Node.js.",
+    "link": "https://codeburst.io/building-a-simple-single-sign-on-sso-server-and-solution-from-scratch-in-node-js-ea6ee5fdf340"
+  },
+  {
+    "title": "Node.js: How to create a real-world Node CLI app with Node",
+    "link": "https://medium.freecodecamp.org/how-to-create-a-real-world-node-cli-app-with-node-391b727bbed3"
+  },
+  {
+    "title": "PHP: Write your own MVC from scratch in PHP",
+    "link": "https://chaitya62.github.io/2018/04/29/Writing-your-own-MVC-from-Scratch-in-PHP.html"
+  },
+  {
+    "title": "PHP: Make your own blog",
+    "link": "https://ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog"
+  },
+  {
+    "title": "PHP: Modern PHP Without a Framework",
+    "link": "https://kevinsmith.io/modern-php-without-a-framework"
+  },
+  {
+    "title": "Python: Build a Deep Learning Library",
+    "link": "https://www.youtube.com/watch?v=o64FV-ez6Gw"
+  },
+  {
+    "title": "Python: How to Build a Kick-Ass Mobile Document Scanner in Just 5 Minutes",
+    "link": "https://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/"
+  },
+  {
+    "title": "Python: Continuous Integration System",
+    "link": "http://aosabook.org/en/500L/a-continuous-integration-system.html"
+  },
+  {
+    "title": "Python: Recommender Systems in Python: Beginner Tutorial",
+    "link": "https://www.datacamp.com/community/tutorials/recommender-systems-python"
+  },
+  {
+    "title": "Python: Write SMS-spam detector with Scikit-learn",
+    "link": "https://medium.com/@kopilov.vlad/detect-sms-spam-in-kaggle-with-scikit-learn-5f6afa7a3ca2"
+  },
+  {
+    "title": "Python: A Simple Content-Based Recommendation Engine in Python",
+    "link": "http://blog.untrod.com/2016/06/simple-similar-products-recommendation-engine-in-python.html"
+  },
+  {
+    "title": "Python: Stock Market Predictions with LSTM in Python",
+    "link": "https://www.datacamp.com/community/tutorials/lstm-python-stock-market"
+  },
+  {
+    "title": "Python: Build your own error-correction fountain code with Luby Transform Codes",
+    "link": "https://franpapers.com/en/algorithmic/2018-introduction-to-fountain-codes-lt-codes-with-python/"
+  },
+  {
+    "title": "Python: Building a simple Generative Adversial Network (GAN) using Tensorflow",
+    "link": "https://blog.paperspace.com/implementing-gans-in-tensorflow/"
+  },
+  {
+    "title": "Python: Learn ML Algorithms by coding: Decision Trees",
+    "link": "https://lethalbrains.com/learn-ml-algorithms-by-coding-decision-trees-439ac503c9a4"
+  },
+  {
+    "title": "Python: JSON Decoding Algorithm",
+    "link": "https://github.com/cheery/json-algorithm"
+  },
+  {
+    "title": "Ruby: A Pedometer in the Real World",
+    "link": "http://aosabook.org/en/500L/a-pedometer-in-the-real-world.html"
+  },
+  {
+    "title": "Ruby: Creating a Linux Desktop application with Ruby",
+    "link": "https://iridakos.com/tutorials/2018/01/25/creating-a-gtk-todo-application-with-ruby"
+  },
+  {
+    "title": "Rust: Let's build a browser engine",
+    "link": "https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html"
+  },
+  {
+    "title": "Rust: Building a DNS server in Rust",
+    "link": "https://github.com/EmilHernvall/dnsguide/blob/master/README.md"
+  },
+  {
+    "title": "Rust: Writing Scalable Chat Service from Scratch",
+    "link": "https://nbaksalyar.github.io/2015/07/10/writing-chat-in-rust.html"
+  },
+  {
+    "title": "TypeScript: Tiny Package Manager: Learns how npm or Yarn works",
+    "link": "https://github.com/g-plane/tiny-package-manager"
+  },
+  {
+    "title": "Write a CSV to HTML program",
+    "link": "https://programmingpraxis.com/2020/03/17/csv-to-html/"
+  },
+  {
+    "title": "Write a Texas Hold 'Em Poker program",
+    "link": "https://programmingpraxis.com/2010/03/23/texas-hold-em/"
+  },
+  {
+    "title": "Write a Turing Machine Simulator",
+    "link": "https://programmingpraxis.com/2009/03/27/a-turing-machine-simulator/"
+  },
+  {
+    "title": "Nim: A two-player game of mathematical logic",
+    "link": "https://programmingpraxis.com/2010/01/08/nim/"
+  },
+  {
+    "title": "Traveling Salesman: Brute Force: Examine all possible permutations to find the least-cost tour",
+    "link": "https://programmingpraxis.com/2010/03/12/traveling-salesman-brute-force/"
+  },
+  {
+    "title": "The Seven Bridges of Königsberg: A classic graph puzzle due to Leonhard Euler",
+    "link": "https://programmingpraxis.com/2013/05/31/the-seven-bridges-of-knigsberg/"
+  },
+  {
+    "title": "Adi Shamir’s Threshold Scheme: Use cryptography to share a secret, by Graham Enos",
+    "link": "https://programmingpraxis.com/2011/06/17/adi-shamirs-threshold-scheme/"
+  },
+  {
+    "title": "Knight Rider: Classic problem of the knight’s tour",
+    "link": "https://programmingpraxis.com/2011/12/02/knight-rider/"
+  },
+  {
+    "title": "Unix Paths: Convert relative Unix path to absolute, by Robert Fisher",
+    "link": "https://programmingpraxis.com/2013/08/13/unix-paths/"
+  },
+  {
+    "title": "The First Computer Program: Ada Lovelace’s program to compute Bernoulli numbers for Charles Babbage’s Analytical Engine",
+    "link": "https://programmingpraxis.com/2011/02/08/the-first-computer-program/"
+  },
+  {
+    "title": "Steve Yegge’s Phone-Screen Coding Exercises",
+    "link": "https://programmingpraxis.com/2009/06/30/steve-yegges-phone-screen-coding-exercises/"
+  },
+  {
+    "title": "Word Count: An implementation of the unix wc program",
+    "link": "https://programmingpraxis.com/2009/12/08/word-count/"
+  },
+  {
+    "title": "Grep: Simple version of the classic unix regular-expression matching utility",
+    "link": "https://programmingpraxis.com/2009/09/25/grep/"
+  },
+  {
+    "title": "Cal: Print a twelve-month calendar",
+    "link": "https://programmingpraxis.com/2010/01/01/cal-2/"
+  },
+  {
+    "title": "Diff: Find the differences between two text files",
+    "link": "https://programmingpraxis.com/2010/06/08/diff/"
+  },
+  {
+    "title": "J K Rowling: Identify an author using forensic linguistics",
+    "link": "https://programmingpraxis.com/2013/07/19/j-k-rowling/"
+  },
+  {
+    "title": "How to write your first Quine program",
+    "link": "https://towardsdatascience.com/how-to-write-your-first-quine-program-947f2b7e4a6f"
+  },
+  {
+    "title": "Code The Game Of Life With React",
+    "link": "https://www.freecodecamp.org/news/create-gameoflife-with-react-in-one-hour-8e686a410174/"
+  },
+  {
+    "title": "Build A Chat App with Sentiment Analysis",
+    "link": "https://codeburst.io/build-a-chat-app-with-sentiment-analysis-using-next-js-c43ebf3ea643"
+  },
+]
diff --git a/projects/temp-converter/icon.png b/projects/temp-converter/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..496496ffd769a1c54c69803d111f89f9d3842bc5
GIT binary patch
literal 8895
zcmbVycQjqy-tN*xjUYrsZ?E2aw-KU8L`3hsm#yz0v2}?Ef)FHH1krns7A=V&+Sa1C
zjp%$+-gDn`&NuEKcU)s^+g$6n=9=YKp68jObhK2731|o)2qIRy3)2JNh^r4iF8JLc
zYtawBuDRcR<OM+_omU@>WG<515QO#CLEq5ZP*X$F%FTt>!rIN!h8OPQ4y++aS`O}R
zVdZ4w&0uL`=in;CzTMEm&fs7z!~Rf2lV8(a$;RH{Zh)uF{Qxa}s{kh}32SyaSpsRe
zB<R4!#@m7c?&9p~B?*^d|I@D|`1|TIA3HGew6>MhgQ@(>1hiz>?Y+I-CHeUL{QP+R
zgm~RN?f3*FBqaFw1^EO8d4L6vm%ppG1)Rs#iy8Dl!0@LJn2nc}r-Qq<gPSYERi74?
zZa&^J?Cb;#|LR)7+uPH@@}J&ay?8DDT=BVjgcnSj&%)Y^Pk@*IYFG>m(tq1aDp-46
zHUECeeH)KIjlWyY4u9U{ZsF-=qwnu-Bg3v|<K^b#X=U@LhpUJF)rpd)jfJ<3wX7gN
zm;t{K55Isk-~YOG^^Si(pbYm`vz8UJ<rlKHln~*uvbGlC5f&2_;*k&&w&W2I6tWN%
z6&JCTu>5yNe?Riy-KbcCUPJ^%1Vu$81cU{|Bt*pd|9SJDoBwUE@8)A=e>D|Z!GFyD
zeeI8}G~d<gIy?NmD1RFNT9tpE_<PCzHvErm`G4Ok_y6#Mt9|<8j8{7ZZh##U`qvJD
zmZXA@x4oOEtd6IHzlE!py#s@Sou`GLg|qaP?f<z8T;$I{|Gx$UeE7ed=AXg9E!_XZ
zU4WV7pKW&Y)OT}pmQ}KF^|g@Z``?%UuS5BJbRY^qJn;P!HK6fN+}XH-VDkh~h4;Lb
z7lP<I)nE$x@Qh89K>hFC2bUY^DcBg4IJ;ybukkU24|MlBI%(rdjI^z2ChhfO*(u{-
zlSk1dKYtf|e;Ad(^2WY0hpmvUM4-?RrtyJBc%IoHp`>~qOBkVkeSCU*>-_wQU+VT2
zdg>|8#E^uSx!<zXY+7AHTHWDbEH2a*X+T&~!-Wd>o3la~#M^d2l9?nlai5pmXyV>~
zo(;Aa7v4eB%IAM;v#p343JD3}r->W37iM5G<i4p7e$r?04pAbw!;V#Dlba9%g))z&
zlcC8~P56w!z`9OD!-<}*^TIO=Js0`CIT_g$csM`P6sR?HilQqhOw!6{hVn-2?SFkq
z^FCO6P(+AEqwRluc$7El_+UwR4BToojg(~BzAnef868h6!Gv_GGU|1#dNE+j+%U}x
zzQ|hy;^}16Go}1ot2Iz}k8B6=HMP&0gHOMfJgz|^do0Vv$);Uv$jKyv?J6cf^E%nc
z=48!kFMHNLCwVOscWC~o<6kT+c{4+Dl|-#^#Ds*omluaEFqpMy`cr+Ok>c<(DWSH}
z;)jL7r@u94(xkC>F9k<1bh2cFS2iXptji7UFE7q1XlROxa#eD5N5}eOhb#G}T0&c*
zkyUC<#oJ5ELPA36l@}V^a&mIfv9T1h>)w)YqrQIq+F7Oo6L$G2oG%S^^8eCgv%evQ
z(8|YxVsDF)FssBOayW+94;YxB<n^F96|D3DTrg!>Ct;fLP2X{6(cN1R5<j4cE;`42
zyv%}HE~IfyCJv{>fRIUXd#1_b_r@dRI!~O?lW$qsW9t?b6P>5wVPOz-GX@75F1*hU
zA==Cl1GY+VxVY@ak=5eT(p>8kEc?l79%PS`Z#>&VwN-aK8QJq34$dmqn#nFd7>tsV
zQeRI`5q!-{DeLMVFL`QZh|f{-*j7v+kt>V6N#Bbf^6j3UZntQ|U^X^3Fj%Gcs^0En
zOUoR?1NZZXAC3PKhTX5m(tL}NTAT%+zqY?UOD~_yQeGa3%>K6OKHqswBU6%6KtN#S
zXBC&FrDfvFmk}8mv@70{&r`C#IdT=#)6*x6j~nXxT7|PtIaakhR^^zrg!Bvybah6N
zV?fb41?UP!r;!}xp20yCZ|_R@P3UK}3n8S)EGj~i+_4`ZgOPnp$QJ3LOE>h0;76&M
znU#d}$4_ji&IM<6_2{+WxaW&%GjX@YV1aO1MObCfvFFcntH@z%80@yFbM`>GSTS4q
z)YkocEnOH48^bgm4_@t6bQ*GuUMlKM|9~lXyhu*jvBUi+cccLSB&Fp{S)}eo|Klo0
zN{qNtl{y(RGBQgJRKU(~r&74I!_xNBZ?~Dow6n7_$BmYoZIIwH4H51G!88qQM77)O
z$FI<oT31(>rKriB-J{d^J5qWU7H?NH9%1F>=Sz*gD}P};)D=V3@Y1>4rX+_W>}Y9e
z>E+9p`o%ky__(OPOB9}5c1I-Xx8uF#)k(LOcYDi2G5eb}vwCW3QAJj%?&+c~OxeDp
z11&9kgHoKm%OtZkZe~fo85)&j%qqiRuF4J8#I0ZY4y3()5p{k394+|zi9nAKj*Xq&
zeV0VL-7k>WuP=pESb2GQ1;W?-HkPwOXBIQ_N9-d+-Dz*oMq(Kpe<1TO*c059sUbk6
zmFI9+R&S-kf0O8!kZjGikU~|1h~vYrU-d@!W)RK^*?6K+VPTlkmuGv1_1=F`D3gg2
zl^DbX9&TBn7kg7BeK^0^3V|Km@NIZFc0p8g3z1^7K31x#tc(LL8P0P=V=C*KR~a=`
zckT*Xv)L+svLJ+BaX$((Y4F8>z_Sno4-fHVwM%%L`E^|GhG~-Ak(GlGk93T2_7<OY
z1DLWhBO@cm?(Qx!AwkvHn09_)VFav*wVhotx(3F-+tJanyPBUhKi?ITD(XUmP#>@p
zOoQYpTQTLa%lLOOP<}0^cP`GiL#;ZV5o?ZP+O5buNL0yH(A6c2j*d3I2szv`fvSp6
zULi!Bewc5JmqQ56bkVuXi|xyuezOZbBD?s{92dr>rtz-R^%l#6nbhL$3=o5a#4Ue+
z|GS!+2kMnc-M=8|H@#}bqtTzmsxzDaYIWHdE2T%MtJO?6r}A514rWM%w}s=y1PL0h
zbtlj#OidXR(TZO;D5eDQ2q98asZ)kTaHJi@d@}ZTVapa6>19;B#`sKOSy@@Bd(tN>
zxkt-#mr;fH^CdOC&(F^V+-9UVepV4CNTZSb7<ky&403Yx{jYeiP%@k2EB9ET{jrvd
z(Ixa|)tD)Bwl5*wrL51Ie))ylilB~Z=vXDiH+x~rrlC-YP(?*dlSa61rCRk)@a6eo
z(K~a0|GFd1YHC|MJ3{8vg+NCklHLOkJBbPB_V#pwMrkVt=H9}^)PyQ(s5~zhFTNN=
z-PH!IuC9W#$WKjFW>f-74n6^a9#5c+rUgHB_K1C%WfuX_9Z3o?*C~)n$z9!#gGUue
zkjW|I#0tfh5Suwj+huOEvKx~%q`JDgVYNhT#*rj<cG~dhQ9E-T)PmOdz?o7DR=p)(
zCMR3WcShaS(t4J|(LT#ZZWiwV-pawr*}gK8TW;QlsmsorfaLexFkD<*H1CS0<h_-Y
zX48|%DDJt4U+p>_4GLaE7j}syJ}Lkk5ARzt*TV>P+0YAV9Bk}bT9QwnKEaw#54Q=k
zT4+bV6dBUppk+>@27}2dDB#e=ZAmD}U{;N1x#jfZgKlA9h}+N`nbnK)Q>NLuj>ze^
z&zJE_#@4SKfhAI2gbH_Mq9PyuX1Z#!#*OL@Ph?Pea8~zD61#R0a>zyq0}B(ALq;YO
zd6#lU9aag}DE~~*BR3}}A~z-~a0jK3e*$Wfq(3^Z$W&QbIV`HF9r8(w*qCXWEGA+Y
zOOi>t8KZo}@?JZO7uf+zlk)pmAf$~Jbsk53YDO<>%bn{hXID9mMISyCtCR9xNh}~g
zB~?kF<LUc_76V55hyHuN3R4SZdtH>SC-{IQm@47L#>B*w@tHY&;C(bMTGVzhBMSI!
zE{JwZwco!d-4@nMTRsCfjEFi+2t8wd6a4#8EVY25#?FhRB#-?ST@XG>HWL*S&hvYq
z&_nVX!V}`}$JV<}5k)Sp{V9Ci!*7+89~qV0bQ=5EWtSC<3koABqRP5E=zczC35iD<
z&_RHVprByl>(>O?a|Q+pcP~GhG!%%|Mq@ay*)XICxufKD`Ce_sQ1KBw=yQ~0VhTg=
z?L9bFzjrV57gi$6umGET?+ex<!KF*pI2zWIh<-WWjnw<ircD954i1GybjQcXOs@;x
z3gEcLFv}RK9BfWfK{^HoxD^u{FX3rQrou$!!nfj7Xyrm^-I|ZtKnzzJmB2U3yLV;+
zw=oJ{vL*FKfPBcp%8G$7T*JY|wFD_aF$|0v*p>Mjh}|Ar^#-sD_@oX64shlpR5&Rl
z|A7gNP{5)c8$$G2hXDw&>OEfP#g2)E)und>dhz0gj*bqLJHqkv$MxEG7^!=&cpm@w
zAR_Ox_mbyvH4+Wi(A3iM?Gv*bq-D~J^l_Q09kEHHt!z)K!y&v``=wie;uD#}(axOK
zv8d}52YUAmvB0tRb8zj&q!&czcazr`S=xL;@cj96#h*{q9YBcQRZ~+43Tj-dd5`Jz
z2Gnki3~@3L##aMRAHXLe!PT*0h7ce&t}1!XN6~a*m0U90id$?+YA?ltPrNIg#z=rq
zw%>6sH{AImGz3AhD$Iz!^Xr+CK8o`4h;j5xt|}=D8yf*JCRF1(-9BD!wfprR-xFju
z2SIy#JHP9cIGG<v4d$ZhWaQ-GhckiN<D_6Kcefh0=YI{PAN;6vbwJd=PmsGvMK;zD
z@TX~bgL+OQLVgc!Qe~()IZ>POx-TiTxbVZ;20{FIgP&W|>b!s-Ka}r*yi5sR(j<QM
z3>4>_$2G2CN|yO#GW_eWHP{#hoNbrPN$O}HogBL<D?e5LiNps0aU<xfV-=IU%GT`?
z11@1~wVNIF&124@F^4}leX((I=Xbm5BS-8hq+YCHCI}*mZIHCGOT;^Yr6vu}Kr&}x
zVX6JnabR6h*3uGMwba|Wv$yA!me5~5xe5Hha{gCpq{;FZ?ybf{unc8}+y^w6(tXeX
zrF4A4Eg@XK<|8IWMMba}z!9IlkqIQA;+;H+iHX?-5r<XqQa`3E3;=jg&|9qqug!Bt
zhxx4kcw1X*7`p&=WZ`q1lA>Z*YPp@A-9ijs^K~tziiuc&<`<G5nvyBzjyme<=pcx1
ziz4?DDU=oL?Kw<C&wVV?QFZr>jA+!=)y?^-<zclU=aRB#I~}+O+PU%P16@=)Ci8Vs
zIUG43JQhAnEG-;`N;I3z?6K#ASCi?Ea-s&rX1&uAN^(EN96hBnb?>VInDTkTdM$j{
zQhTJ}fFC;Lf{P9IC39sW`$(vBNA6x+Two*EwBK;E8D+QuY>utZ8%~UiwR#Xhh8~z~
zr4@@jIXz7>EoBF`h@S$id^mVS)C}l7!AXzDGGrqF$12N;`NFE`a1;AIx-tFsercxM
z6u+2#j$!-=^S0%4>*beRF?nO$PXxzlKC6|EjXB<NQZL(<k(B(|i|MyLBXc%S)dJ~I
zHaYQA8ylhCYovvNIG#(lbANot4lT`<a?a3rAs2Ec4p<LXcAqWNV-|_U#_Vk9{(B7!
zl=Jh&V}*)XJk+9#6e2_R^301-t?}lvhuLr3kA~%ni&k8W2~F__$?r}9T!-mbNx}Di
z4QOqmI%!^rHTNx?<*6lg3Z2moDO-~+t&J8>k6^xGM)y2tULAdC_6{V}=>4_g(yzd3
z<$K|MnEn#`;j6!D!Kia`CrtY9aEvkX^Cw2f#5^d<=ssUtyGcpOI#oZVWm~qt?=6t;
zPD#ozgeU%fr=PFIyGTw)gdP=;{PHD8DLP84zvxEp)P#;j{6Y~6gBSv6UN>JUlB90K
z8mhD#qI=HA$2a6KmBQ-!y+C(=+HW?hzSqT;4eTQmD+>$KZi#^u`rZ;6I$Fr#)^zZy
z|4<nQ(=j!D(^C_8=;~*`(!2<`pQPVb2C6SQnjn9%)@~*pgK_g`Rqpri`X`%ip<FE8
zqlG3<o;(o-pv4GaZs0+h%Gi&hZB$bm^OD4npX#fPN|=sdt|?!zw;T83#SM!jpTxw+
zzX#dpYoq@j2S5KXE0)+btjbC_^e|I@EZ*xS?9ozx@wM*i`V&C^HZ9)|xfHKcZ}skB
zOWR({kO>s!HEWIq!7n***G2TUN-XsgUXyxw*KLk)x>UUhw>I6zkEm2_lIe@xgwR-*
z$!bP!ZjBA(uLtd*Xn_iaXHmz+%?*RYYg3!R>@-sOF|=h4C_V$^_AOtVutH$_JyVWj
zO_YbsIQhyJE^SR+!MjfE`gB9|d(HIsddJ)ov!RzV#PqVpN8A1{ey7i#Ju?kCwn-U!
znUeC2H1tR*;ht~iq&}%i;Z5!bw6{8<HZh=xl1A2W)+^j5g6JD~1K2)pI0nFqSCE&4
zRvfi>{N1q%WDmSIAtw%iLMl6x{KdobG%Jf<PfxFLB%`n1zlb5=daHTOq_SnzaT#KC
zAHWg}{jK8#Xiy;>cMiSO525nn{d=SU4gw&$9PHo9L4ZerimmN?PP6+tOEEU&Vb`R<
zE<vqH+OkoATrX4%$zti;>aY_{&m6qASUxp7OV7&63g7LbdJah7b7s|f0MEuN9g;u?
z?cLA;MCt>0C}-7x5?wl?qrDx{SMvsh2GV~WG4Z9*rvIk%#HV*rk5NS1c&j!1J;nIh
zoL^IN--x=+a9bY1d3QeFb~A4a!zlx3vwCRA|8xqQ9!nT%+@D{1ox_2Qic-+hA_2ux
ze;I2B?LP6z2BiH`Ls3tOndZx$Tq4w3MB*<Ljx$ji`><<G%wDXOl~vauefM-5VB`BM
zBUg+RjQ8nz+oaSx>EFJtWf`^M(6)v<4Phf=r?ueR`QdCgs6BJb%Xr13ob7d~M;g|?
z2fkZVx4@5KBU}JN@(a7QStZFcDS|{Q>AO*2gzF$o14NgIhzR5m&n?>f*FiM{QP~NY
z*%I$#OfF7N)bcWWD&mlQhlC}(4Z(WvmHBYCLaMaCAOQhEV*uf6)elxlY??V}w5MSD
z08@Eazq6<qp<QDB&y)Rc+JszL&ZEplQx7@=u_mT7UcX-Re$U@cW!w^y8F08Y?aA}x
zOI3yKz!g&{i`{*T3<^@emlBj+RN~;^uyc5L#lwVYh>38q0E~KO(ecaz)Qh48J19FZ
z5BpvUZ`aGe?t`ks#^m4M*LVHat*DxrfPN<z^f>L6f&3_C*~c5jov#Q!o`zoR(L>2K
z8EXdtS1=tAvYx&^&tqCrVo+g~gMy@+kAK~!Cc?$W#)cpeZh4$7f6e`-MRb1zOxJ3u
zFBzYZ(2Gf!j8RgO#^q<FKSz9A;Q7HAfSpeOIAatMp#+!^2P)@^wEK-#(2{@0y7Tqj
zJ!)b5>lZtba^_!B1&+GqE}l?w89+NTu!&6%*l%3P8LC#s;n35`S))d=;qnq%(|EiE
zu`vM=kz{LtXml$T=$6wv-lfnz!r9S_Oi=WC8rk(13*R;;Cnv07Nj&mkeQY6${Y~pa
zf?WK@hBFY3@Z^&t_7ZynDe8>fTCMt9fBwd)UM!y_6D(i!^^&?O_qw?%*On8Dm+!Dg
z&nV`;e%m-L?j~>RTQM=Uacg#&&>p)dc6RD%Yd2IvD~oHtv?CzT6`6oxBoRb3-1kSz
zW3xhhHYF81Jn;2W&J~2*%rG-b_4X*>nFBY)WHm-2>)(!0%af#nMJ}y%=>I0*Zfpv2
zfF*EcSsAzPpH&pX>U_Pb`Cl@nsMxjNbmk_=u6c{Zu(uATf-MHrh&)v;R2JI4vV><~
zh?@(Fi&KYQp3Xi8kUFUs8$f%>gt7bP4$FH%DST$}v9Ux~zS{r~DxjmYf!Jj4E$j`+
z@$nj=O1{Kl1h_A9HRMK;(#HeE$9sEbx*NNy)rzRKb9<^zh~$oB1lYSMe8Yz?W_A4R
zeLQeJT!WK_08aEgGcyhh=Oi^77aoCOh*RS-c{4374Jb&(49y#-xEb3E3l$zt>2-VC
z8M6ZTSU@2XBKHP?28@8CkSisU4(=GjpD#GPqQ&H;_ZXZTh9%dyU+Eo*MX&pQ>3jfU
zqMnvkd_S6Yw);Tb9fcTEDt+zYSqjBFJ^o~^7S~xbxfx~%;Qszz*5y=Gtz@Q_k5-mJ
zF>90QHoB-f#WW!5qgl(xXrT{L*FwPZ6tAt{qcext^qrkQI4(qL;9q2giwOw|c6vBz
zB%aX5vyhj8TC?9pWmXUdGige{>{G2236FQXsn%hPx}uF&Fc?`fB>k&@p-C%W34p5^
z_yRGMT#gQk#)kmaT$r%S>H_d!q})n1;@PvD+FEKbyq@0PHo&nw078KtJpLpB`HU7l
zI2tVtVg2lX+!!S5Yf?J4017({=yeSP!7IZIgBEH*b5E)CZ>$uAJ=$zJ-D;SBbR65%
z({tCT!j_nlf<i}=gM%ZxvQpUNpvX!h2qx7sRL*;LJ{0m>=)rk#?*QhNW=q|wd+wRP
zJyFpe<pB-1KP4>8%Y$7{Bh?2yhN*Y?_{Iae7|z*t)|A5$Rr)$>%(@WO1iAy?NU<9I
z%SbrU9YJeke-ssY5^@C)>hB*-q%ezE401=1>yM*~NL+kh8cFo#yWAiPKAMXRJ2G~)
zw=bw&9NAT5JMQ`MRw=UR=SbiEbNcysvj*Q1hHU0G!}%jUtR_=F+g*@ovK~bEy);nm
zY3Yq^O_A-_;0MHsad(s$YyC&b{i@vL{AV)u!ZckX&fHBzY!@KEWDfqw6mfbL?U35)
z^Q747A>d@iob*tpY_QP-(vW9qn;-zP93MaA(mn`8T%)0)TGk7&QM;$6#+dEd!l2{d
zx(g(5>~G&AkK#32hf-d>iVn{>mJzc3!oW248{?t{kf5U9mGk;7c!pmA-`@I^l*SJ<
zKnglKE&1f4<OiWj$n73%W37OI`ZXB~3k!WiLk{XLN-rS%+#h}O<Mo;gZ9d-mIuLqx
zA2qYR3YGI&qaYw8>|*Nyi)VEuIx#ro5XVi;9q#N_SbdIFfWachogeAzM*tG~{__d&
zdrUZ7v_zERz!nmn@?QP=?i1AeP4z|6G62R<(bkZrh6W5&TIrcNz|}y0ZSxwE$q%4!
zF_TqG&%66}WyO9s&`BkH$_gM0zym)L1`W4S@tI=lEOh~<ft5YOv`GSw5g|_$xv>D8
zq3EP%2t(f5dQr&(QPp679jgcLju0d438`dbK>@xzW!q$x6FWMP;8Or8DJh-~>j+ql
zq7(6EDGrXFZpfYi%f9NT5nuQ(4ikfxAPr+HMqyzJc}lGBH=jBSrUmU{0E_FoRqRjr
z;oP=`4FHNLnLe<a0!I?^$(>`Lvqh#UzP=u2zy-{WgPR*0%16?_Y6a;ADyY}c9o+t_
zry_tiYj&(TIPgI*?Yfbnp<$`h4|)S(L#(Oh;K|iMf4v`oem<vyJiWXy^vQZmRLm_u
zbpn;i=z%M!ni%?W{Xks&q2v?fqNMAFiy|2s8p4Af7{Ad-1hI%!P%kRN#YO11HRWL>
zDvFKX1B(V43Mwkk)`FFu5s@AE*x=QAEIcccDWN2`MO4@gVe0r5ot@s-mU#+vB89x1
z9HyZC5mhK#@=ozvb1ZTw2;IvLM5-HamjOd=2Zu1QU}FI=;br{;mw|$;)tx7s#?1%y
z^*emcXNfNRKscB;($_x5?Ca|*0CgH$K0___<x3cBG%||p`9rrgN83URQkpoGdhgX2
zNllqjZ;&gXH!a!IG1I^}WJWOl0b}z9afW~uF2-6v)lh~+ZV{ebhlbZN+QuWHlurcp
zw!Raq>>I0uL>fY!r*#(s&U0g^j-0d%pfpTQEDgi{oy?Fg=AQG*KvF1hR0W|EiX62C
zSx6mA{6;i#Wox>j-K5_LoI#BMsEz&PHVs+l((WwqG>?TEW~*MBs{@cC-%9kNDaORa
z1gFnBC)-YOY4eR^n?olc>ocTsPt#KMT=vhI0HX75qQb6$J7Hb#z6J{5%Esxr0UnVJ
z1%oWP<6dnTUPE-Zou%_+wWhK#9SP8=><`vPt5k4in}gHAkqw8S;0uI$6(4yPpF;sJ
zXX-6fzTA0X(M5?&T@@c91p)NDZX_9V#%~;cXVKe0tp+-N{6kZJ9H_Hdp;>_oR7fBW
zE4752U#FnJ4h;<jKs~pzlA^AzuII}aic`!ZitD1PZqxOY0H_uDn6&~Y*`4wllHf6U
zEJgE0=3wGh=Zmz=OwH*AKPnq)qGyt-O8{F7Okl}R*Zbst_`uD0JPJz2=dP~8wat6U
z?b`+zAJnOMj9@UI$=inD^agm)dr_C41$}}vaf{2#sz8#M5&^(b6$mcLd>kA|fbwBM
z7AC)O0kqP8U}lB}AsO|q{9{A-9ypu>XDi^8r_`u4d(2+=J8=Ei00Wpb1&rGGkCI&i
z%saESXqztmNi1<_H42GrEw}2<7{p6#Be^=S!xa2rz%`gD6$v1aaZ>;#&~<9PmPvpl
zah;AX9=wl1K!B{gynO!Rj<RlNX4A)+w(S<*O&VNcnuyzCuJ8lL>R&_&?l+2m(8&ZK
zrzOz!)1#@*6%+b5jHwJu4D#=q9haWXY&W0ApX{&Z7G?2Cuntjv&YWrr^s9HD3u936
zImKJt1}6*ap=|s@$S%u5-?T@W$ye}if7~j83`KbEDu|ny#vm@93Zy~(7mqWoK0hyu
zFXSESdA$e<>V6M%Lc!X?J<U!iJ`+f}K^76Z6v{Tae)`isPnea!7<8KlY;&IyQq_Nm
z<P%}Ug4U{h0b;eWwJpN`tN3IsuTgRn<+zoYoUD9)dgyl?Vur@Va)0q|M^)~G3|L8$
zrFHus8$;bJvo%}`sJ3un$L|~|+k5Y9TOs*(!hP#!M@R50ZhO9NcIh~L-F>bd2Q-t#
z_wWiT$&d1yFM64M5%po(dwF>4zL{E)wYB0zbkfvUVj18On3$O6pqxDl1qT9$+q0@3
z9s;g2jZxsFZ*G6}TYDr>hB_sl%6_NU?1PAW$7_{@<1hDa`A&sDq?X5hyaz4!zq-Y}
tl+mr~J=C^NbaiGN6Xp5`d3Il7eH@}4g?|l#U;T@Tnz9z`qoR4({{Rki$e#cJ

literal 0
HcmV?d00001

diff --git a/projects/temp-converter/index.html b/projects/temp-converter/index.html
new file mode 100644
index 0000000..b4911a9
--- /dev/null
+++ b/projects/temp-converter/index.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <link rel="shortcut icon" href="icon.png" type="image/png" />
+    <title>Temperature Convertor</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <section>
+      <div class="main">
+        <div class="heading">Temperature Convertor</div>
+        <div class="container">
+          <div class="box">
+            <label for="celsius">Celsius</label>
+            <input
+              type="number"
+              name="celsius"
+              id="celsius"
+              placeholder="Enter Temperature"
+              class="input_box"
+            />
+          </div>
+          <div class="box">
+            <label for="fahrenheit">Fahrenheit</label>
+            <input
+              type="number"
+              name="fahrenheit"
+              id="fahrenheit"
+              placeholder="Enter Temperature"
+              class="input_box"
+            />
+          </div>
+          <div class="box">
+            <label for="kelvin">Kelvin</label>
+            <input
+              type="number"
+              name="kelvin"
+              id="kelvin"
+              placeholder="Enter Temperature"
+              class="input_box"
+            />
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <script src="script.js"></script>
+  </body>
+</html>
diff --git a/projects/temp-converter/script.js b/projects/temp-converter/script.js
new file mode 100644
index 0000000..2876905
--- /dev/null
+++ b/projects/temp-converter/script.js
@@ -0,0 +1,39 @@
+// taking input element
+const celsius =document.getElementById('celsius');
+const fahrenheit =document.getElementById('fahrenheit');
+const kelvin =document.getElementById('kelvin');
+
+const input_box = document.getElementsByClassName('input_box');
+
+for(let i=0; i<input_box.length; i++){
+    let input= input_box[i];
+
+    input.addEventListener("input", function (e){
+        let value = parseFloat(e.target.value);
+        // console.log(e.target.name + " : " + value);
+        let result;
+        switch(e.target.name){
+            case "celsius":
+                 result = value + 273.32;
+                kelvin.value = parseFloat(result.toFixed(3));
+                result = (value *1.8) + 32;
+                fahrenheit.value = parseFloat(result.toFixed(3));
+                // console.log("celsius");
+                break;
+            case "fahrenheit":
+                 result = (value - 32)/1.8;
+                celsius.value = parseFloat(result.toFixed(3));
+                result = ((value - 32)/1.8) + 273.15;
+                kelvin.value = parseFloat(result.toFixed(3));
+                // console.log("fahrenheit");
+                break;
+            case "kelvin":
+                result = value - 273.15;
+                celsius.value = parseFloat(result.toFixed(3));
+                result = ((value - 273.15)*1.8) + 32;
+                fahrenheit.value = parseFloat(result.toFixed(3));
+                // console.log("kelvin");
+                break;
+        }
+    });
+}
\ No newline at end of file
diff --git a/projects/temp-converter/style.css b/projects/temp-converter/style.css
new file mode 100644
index 0000000..2d02ce0
--- /dev/null
+++ b/projects/temp-converter/style.css
@@ -0,0 +1,127 @@
+*{
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+}
+body{
+    background-color: #19172e;
+    height: 100vh;
+    font-family: monospace;
+    font-size: 1.25rem;
+    color: white;
+}
+section{
+    height: 80vh;
+    display: flex;
+    justify-content: center;
+    align-content: center;
+}
+.main{
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    width: 450px;
+}
+.heading{
+    height: 58px;
+    line-height: 58px;
+    width: 100%;
+    font-size: 2rem;
+    font-weight: bolder;
+    text-align: center;
+    border-radius: 10px;
+    padding: 0 15px;
+    background: #f9f8fa75;
+    backdrop-filter: blur(10px);
+    box-shadow: 0 8px 10px rgba(197, 193, 193, 0.185);
+    margin-bottom: 28px;
+}
+.container{
+    /* border: 2px solid red; */
+    width: 100%;
+    height: auto;
+    padding: 20px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    background-color:#f9f8fa75;
+    border-radius: 10px;
+    backdrop-filter: blur(10px);
+    box-shadow: 0 8px 10px rgba(197, 193, 193, 0.185);
+}
+.box{
+    width: 90%;
+    padding: 10px 0;
+    font-weight: bold;
+}
+.input_box{
+    width: 14rem;
+    font-family: monospace;
+    padding: 5px;
+    float: right;
+    outline: none;
+    border: none;
+    background-color: transparent;
+    border-bottom: 1px solid white;
+    color: white;
+    font-size: 1.25rem;
+}
+footer{
+    position: absolute;
+    bottom: 0;
+    background-color: #000002; 
+    text-align: center;
+    color: white;
+    font-size: 1.25rem;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin-bottom: 0;
+    padding: 20px;
+    line-height: 4vh;
+}
+a{
+    color: rgba(255, 255, 255, 0.383);
+}
+::placeholder{
+    color: rgb(173, 169, 169);
+}
+
+
+
+@media screen and (max-width: 500px) {
+    .main{
+        width: 87%;
+    }
+    .heading{
+        font-size: 1.5rem;
+    }
+    .container{
+        padding-bottom: 35px;
+    }
+    .box{
+        display: flex;
+        flex-direction: column;  
+        width: 100%;
+        margin-top: 13px;
+    }
+    .input_box{
+        width: 90%;
+        padding: 3px;
+        font-size: 1.25rem;
+        margin-top: 5px;
+    }
+}
+
+
+@media screen and (max-width: 380px) {
+    .main{
+        width: 92%;
+    }
+    .heading{
+        font-size: 1.22rem;
+        padding: 0 10px;
+    }
+}
diff --git a/projects/weight-converter/Assets/Assets.png b/projects/weight-converter/Assets/Assets.png
new file mode 100644
index 0000000000000000000000000000000000000000..576e299a21a12fc1cd431dc10d3ec7e07343073c
GIT binary patch
literal 76519
zcmeEthgXwX*KZt083)l(lwQV)G?6YXQ4x?PQbKPM>0N4o5X&e^6_6qbs5A*Bw1l3h
z2uPO_N`OQN5Fmt56CfnH;eFrl-tYbi_pXn{f+ukDWSw*N*?a%W^ZLPk1HL~+{saI3
ze1`Y#S^xmYtO0<dfIp6N|1t>F{>J@vB*ent4xnm4Y?=GwchB3Vw*i2f6yAe}#{d9M
zv*F#_R*}xDGbf%nfnlI^qFndo^f%SVj@a>Ck-PXz{?|82`GhB6`=aZwY_068Ey_P%
z!{Lq2A5%AyZL}~SvM-wZcD3FDanbt0qlB~PpV!`f`cFk2o7P0byi*S(^tEakE2YN(
zqq1AtTCiDAq6XuArg+434ag{4D<VM7vGIn-V7@r_YiMlDy6=b@nm`~-R6o>pwyts%
zri>#M7Eg{351*Y1Xz}lRr!1vV=g}{-2oQCMh={0gXt)j^1hRKYLqwOA0=JSQ<0k=6
zO#P{N)X?OlU7~4{fduq&{^r}#a}Y}i#1EpRf*;KEyE8&ODIjnEmPh%^_BNBq0md>~
zi02{C1>|i1GJ~yHLdKmU`gL*JJZHbk_-RVpnqq%1cHQ~PBbi7%SX8g^!6DqP0{~wp
zh9lz1AkN-KQeaGBwvwvz!JJ^Az*P2014&ruG?bjzVS9J#U~h}_QAh$8&_We(@JE3a
zkDC}s-!O$&BKW+}+&N8z4C;`c96j}eT#R3=tgM9k%j%h{nHti*ZjW}gLbu#X^TK<4
z3v7IAeggnhF2Uj^ASpU?o*<^3qPvfrUG1Z~iOxs1t&zdbAt*$dNO@W2irSQ)W#W;M
z8ScPLkn?*VM2R|V|H*G94aLS;owe@0S1T8N_H~W_3>cBLwBXyJ)9Eo$KAJ^Hq(XCZ
z^IW%7L0{Jqz?1G&8I|Jr*SM>@2(yHeQrs|YcA0Ezx~J-^iL+&WmjarfRHfU%cWgQy
zK$KCPE7@Ot_U~j$TsZELNo3O-pr$xaZIW=uIoD=m&MjgD5!NxW+gAVraUfo*_r#6O
z%*@zv*|>5WK}!JONv#F^?(*v)kK7q!l&NJ%tn?#sg|90g@YL}D-=bv_Sku-N1s=&#
zarH1v5iNB^VII1>?nmv;#*qloH2(?fP1|9~J0sZ1WpZSZNQHNcv==w9bJBBm@xfi<
zTLq-l{J)LQ7h3$ZA2acSphWxv5=F{)F04F?Lv))Ph=Z@&nttqy3_RsJVmR9~l22EG
z3q2LSj1w_6{Y`uQ%h8Uvi$z_DXksk0l{)tNUdq+tpfDu~WBhb6$oUAM+TFN6uo%dH
zmBd(&lZg5pTEOeQXDVDVc04O-^kuH-C0kPw>d2!P2t!!4rUw~Zmeg5<9^un7FM%6M
zu4}DUxBmnB^)yMU&1IzU)^h3xk77`4$pcmIZMz30m&;5)TScpeedbO_#hMSCu8(!d
zk~Z|oQUwQH+xp$kKHM_gIpf>Up_r{)qL}Sfz7&sIO(bH*L+RZ|pEQ|jT(~n1zw~S@
z^YRsP{HMN(;o;%5IF+PD>3Ag_<EX)s;UywT{|c(Gd1uT)-EsV`k-g_T*2Gy}0KlPY
z`yVgF^c$H=CLV?qKQ!{6<;yR!Q0^htoVE|{apK`ZJ5#q+VUkF~DzAM+;9VDV#tP$2
zW+vOq-}^Ov>=j)Nwd^WWG~i3e`y$;=W=pSOIqXJqesp}zP_avEj=vbTVzhH45+5~V
z@rTV30NPQD*1FZmR1-3eijqS$;S)#Cec^Rpe|ARlqa?+gg{b-VvnJ=ad&oeKNEPK`
z=_i*`v>)HI1VBo1b`1UMu3Vu~T9|H55qAU8@7P}5MrcfHy}paJ+BSN=x5!<zQrG<L
zMpluzX}yPW)XCY(K$!0V1<Ur0*-S6!GZwi&GTf?<G(YD)S8TUDRJc99s!!u|U-O>v
z7UdrF574beJqL%WH#sHgcEimhYS)lzR+W5~qAx1bi`|Dl=@nWx-Sbz;G~c@;Ff=oM
zwzAH{08YQ6XlguM*lkFSG>)=rYLWFo(LG7edjb6EZ4Hn?9fn+IkH%s)WNwgiFt~Mk
zdpp(%<pX9PDe(DP!tfGdr*L*t8fRaM#@hhW7qYMi?$a>FOvl8J!=!PbgRkhl-XaGF
zVd*HOd`Y5w+jwt1gIfY}TMkp}C~cOM8haYfJs=4+sivhO<tY6eV9x6?TmP$8@^zp~
zhN{+Z?##Ja@vn-j%R`(oyO2+%zOW)GR`eDgQ8_eB%(AhgnmzSV`#Cl&2xC<asg+-f
zY8mfZEm`ZeoU5g^U1BdqxFnQf=bbw0=L_a2#Au(G1&z`U!FcKP*|)tILE3Ji5s!0|
zOA%E+hE)YhCc=Md1mgv3sf3-xM&(@F7WL|~V%M;SnQ+<89L6_6%nj$g9-GA@ed8E9
zYIlDen}3>CHwfGqh``j@A~t!_6kyB7!K|HeK}&tc{uW3uA*<~wVQ<;(ju<~}cemVa
zma00E3^j;30P~XQ<E_fa1<KRMLe_f}Iz@puqCRWIM7vwj{fR4*C*aY>tsXJ5_*c%7
zWcb=I+r19;??R;|C&IcwuBOvkRXe3H2eDrLrmB<sJ4m>WM|F;bmJ#(sW-zxdEPx8w
z+ofbs?hZE*XZYNL8>a$~9sx|$j)seA;Ur+&L#@!Np`w8*eO_y+UfZuL_tZS9n`=gS
z${}jU-dJoZ70WU=aZ?4FeTHo(7zW1hz<PSPo`Z|^eoLWz?J)6t<z&#G_RP983D_z%
z@by}LCq>MDzYbLu51!(9$FN#Ij*QUv<K(n9(lF|k&D4VlZfccX(4+O0V3nQgX&-}E
z$iqq*3fAduPVT*O(nZ?bWA)P1j2qzl%Y_*Sn7)8tO735u9oyK<!fH##c4-k(dCHer
zd+|1{7YDSr`eO3HWs5%cYHcO4I!QgHnJl$%=Y##P-UgClE&U0$jjW;PBjFB0Td^&2
zK(Kh=1K>`wC8=)<8F&+kwo=K@x--7zLX33g4AEYtz^@;}ly;Vt3b;?wH<AlQ<ys7T
zhc=Q^;H@55;Cb53oxYo#eY|_8LsiPwpj<L5leqZx@q%Mw1Pj+Y<V9FC2Oi9x?xMK3
zgun%_m>O@bl%`ncq~gK;+Zf48E7crzdqb=?w=SLuS?u%P)jF_xJ1{WdR&L^1nRMOR
zzs#Re`7UkT#9ub*>;O9p^LAnLFI4ToDhSGd#M{~3-o-hoS;1bUst!|x%wrICpHHxV
zz!NNwmz0(*Fe3WWkm#@5Pc8P&zE3XQh|%-LOh=NEHay{U&kYQtEzs5eUs(h1-X&vL
z$X!|W)>*#2=nX`9RgY-z{Si7hJZ`Qvl0?RmjeASRN0Fru_i#P7bwSLV%|f7kyB0lk
z>Z_T2)f?2EgotD!f%E$7xXFikTHhH$OJRRBOOhrk%OSswWJ>vzz~^8a7>ZA4sa{zO
zJ(0bqa-#Tgt;nEnvmd)4ox^~01mh%QBPEKgON(b!<onB=!Yk4W%IAo^sYWX`*dbp7
zS#Z)~lJziJgxa3z3;;}Q77>$tWiP16&|tJ^k|bwCQgp!hO1~K_OC`s~VHn++mT8Cf
zvr|NG6pNG<X2^dnig3=5pavR(>J%VD4$#o*{RKbQcWyVmmucOB*(y1ACRda$WgWPm
zVPG@^9D}{yhwYUe9oe$OE!=O@j%^I}mh10T4UWwTXRFq1=WHb`m?ibX8&#?_upWC)
zq0ftbmbSM@IV+l5)Dq6QEfIek^Bg(pyR5_1cyr@BKj~m=aPYsfv~byF9K*TJePga;
z&v%557_sPY<dKZIp^zk@8;KvuS9>IWDbp7&bozV1Mg>HM)FPi4`KwdZw?v$OO2Lue
z>;PfQ&JH2*yX@YHxu78UeYqp*KK2)H@Ym%IrBas%eS<y6$em3EyLaC^RA4uuK~au3
zZg94rj&rbim%`cb$$GQ*qFv`Gm2XEN$UL|x2wNX+?^HIkD0sXfix!B+j102A|Acz)
zU6?XtTIu9NYGGAXzUz(2-D4ZCLk25XqcKF)u2iIY+ZwKh)(WkmmHTE1Ynv4_>h_!W
zEi_V}lXR<$`%yw+&I_^A@1Ns(6|mZDGMp{NCUThY;Qi%N@)f>PZ*S+q@kFbfRG-9g
zEV)bOUpvh0q~bmB)~2wx2g?O)?}HH#%Tm$(!M-#6+X<<2kV4<9wx;3(C1_h6cXY5{
z3l-gt$B1vq6#rdpVyN?=82NCy*VZh;1}Kl}&ol~qcY);Ov^*7#sbqTz+j`6oJJ`Vk
zBi_SCGiv63*3E5N4sX{dvzJVJ-#>;P5banSH9CwwE!yN(&ntc;3?52EU9^_RYuxY7
z(omu&foqn&_(iG3_M|fPD;mo^v@+82w_Spkh#iBm^t#pq;zH@85n1L`mV%|S_HelG
zSm`xLMnmg@{00sgt9shX(y-mzzR=x3b`LiBcfD|B(O+Q;JsEqFTHF9|NLfaDmmRFf
zf%?WBG6-E|m0kF-M8~Sv=gs;OW;p9FCf8j$oV7q_WUI<d92%q5I4|HrEnP=9+I@%D
zTjnekk{UP9BY)&xi0tTR1%H15&p=AS0NVyNeP?({`Ge<s4`Lp!X5oLA_X#Rl2nV_$
zccGZ%T#~vL=V2@51uVGR!TF3j=jxogy61=sgV0zKF6q*EO`r;TF&3;<i9W!+2<|w;
z3JwXw0vWefV^>~m*myhdyXG{w96WS<H^`jUIl~lxN8P$YOpdO-#BBGQ$_QIMuf<s;
z2OAQ3NlqEhD=K8Cy4aUwD2NK5hwen;W5d>UC%6zVZO^f0nljfm35}*vfP#z)J4+3=
z-@8@!NlL9vas+6kRsTw*vWvgk`+>c(NiZURE2aRHQ7~>!#;r|xI0D%lDP8^QL@@)g
z;JePlK{;bylS4+z!_oCaOpHB{vp0D9pam=s-Wjo6pYjsN4X*-^0KQ~?urCZP+GI1Z
zpg?Pd7v(5ZR`Cbb7YJ`>`x3fpl96&=OX<2QOsas3@7N&-zeKcIX*3fdZ8hUvnz#9@
z)w-8H6<C1rNcrrSdx{z&IIqJhRWoQA2fc&k-fv^6V}v*HHzo(|CVlaEe4Rp|&QRU;
z=>E^nqAr-Nz)L`SVq}MB-O%ZobEm~Z4OU|xeK(C*JL?kDDLYr^jW3{q?OJ^n7$nJp
zU|liGR{BfGTB40kr0#dcjPccok-VB-!Gy4}NNN@>5u23Kq5QIM_rdh`m)pSx=%I$O
zQz?xzeg*O7UY&8k?T@WC?8`ftf;;`S7N*0sc~eDK0X{^e^aDda4>(zi*v){HSEA#y
zTIa7oTM!Y`!3ONlA$a{ipX5Fs>)0rW=E$*E_r>RU6=GEGcX#rXu>5E}gDdqQLUE+|
z!+xiYca{Y4Xy=218pa@7ZXkXx%zJOT;5*bMQtx|~+3N_na^)x6s%$4MXHeh+^cZJa
zE0*r*O>Jj&LtS180;77~jPq4cvdDVwTeM`qE$`W<8-87L=QkE^UYV+?yUxC|8U(|4
z)mMU&KN>V$UEA-I-gvIdlQrlrYC<M`<sfFrAG;h{Xjn0Ftbl{4jDO2wbIijy3J*gz
zeZUZdOu+=rLurJN(XD0;4N67b++j<)HOtvYa^e#duEW2ZX>WYLWng(pm_l5HbL&t_
z`zfsoA<>!220~6lmUa%xcU(Xh0H|ItnzgS3u0K6J-@ji>n>5_<9vv+(tg|qv?Z3xG
zjrkZ-vX+3QTC)7|iH1YKj(mj<m}z!1>L^k__LDfC%l(;SlTuZIvF9yqHVM=A_V({B
zx3F>6YV7m6Vj~V>@@}y7;1cSv&zc&!na9^SDXj+EPal8jB`LECUQ;Zo6_EQ0EP={b
zS_43>HQO2&u@HRR+y_0z_niXa>CRha6{vtHV9i8a&g^#GY`CvW`L)6<pU+VX88(ZD
zsWvH7ypmgU?CY-J?w4n<_cMUmmVDnwt>;N8Ac+FzG<manDVoT1KIAgE5L%?F{9%)q
zw{~MMVS}Jcf5q;Co4=zcbU}8;66V^XX=hJgZ~LqyPh~$>Ux4?EUX$WD#pvW_N!r0(
zTD^wGYMPsqTdh*sl$@QaG_m2Wu>{vWJ#9=>)&w&tX%P%8SaDIWu3BkA4wMUX_A9Zk
z*gB_P3$`t_1^*bszH-3kXBr}7ZUi87I{EJ>V|y3D$%Ts>%mlV(0XCGz>0@7D$Fwr^
zGRAE(Wiz|Sv%=jEn074(x5`?BTqA$Px);};o~$2Q#H~6|5Be)xx#UKlF7DjtlC+m2
z_4>WZ-2N-GJfEn);I0ro`4gT{YXJu7$RFm0G`9UfP|`rgr)%-t?^<Zqc1v*Ka#D{5
z`F(mE0#|B2@~`xwe?{j4-YcpwP3BIK!6^KIBpEoG7S%<xFw(^CeDqP;^RFlg2U{lL
z{36HRLo*b%UaTmAxe$e(Y*d+>IhMI<9HFf4g^4WDWWS4?G{8zGBx_t1SV*t)jzGT3
zh!*GPu<<KO&li-X?VLi5#LhKzIn-`6Ok*z6qeJNU=&C@WC)TPtK)=YhR2d`X1sxjH
zOrod+|1mIjD|hQ~k}Aj{Uws)vn5(jN8O*Vf0A#KzKbp+KY!^e<_qPf-F+aA4jQ_me
zkgUT<++C=&u_<xlf=MNMqE3Uecnar}?e!OxEn*^^Z7JM1U*^G&edgSX16(-xOHHtK
z7{RWq^T?L$mQPkW+^G=yd|~A#V~huqbqRa((G+~sjFXe%!ur8K*$Nk*UMx7U6l?B%
z9!%`2o$Zkxw07t#7su{TH}1UFAx%ISiBbVN>Qw_-W&bqBu}2C{`jy(tD2R(#lx)^0
zyNDI+dw<W5D;YoO_aWP*RYp{T5vwM%ci`qyOF7Ha`e||c{rN752adgmTRrt9O1*Bg
zdA#j<vi9bW#^sXSxk5>n*I_}(TvUzfzgH~m-K0-r4jF+9p^)<cz~7tkdON0`N!A10
z)oF!dt%idN-SuTn;FU?3Tc$<Z;eq#v_)pO+{1SCJzKIu|U>DM0)V=)cG4z9`f=5I^
zhWe2=X1$op;SrUhjvjB*%Jb;UpcIOYT;hwp`JP?2i`|()cHBZu477N9Cu3Y-t12N{
zfO<Zd=^#T2Y|^RC>eLyBMFqi7#kDof%X{D5Bz;~QOjUhSF?ZhmCV1)}1kM{5r26kp
zc$7yClCk~y4vbn)L1KZ|o95G6+kUJ(E^|svHv?*Lc<rN1shau<E(tWwMYq_4ix>{-
zt9Obv5WZB8Y`f$fOCkk-StkCNvNK#TrbPz>722ekmZIg8N;cC?VPfDuPG?%z+yHL5
z($=o)%i}$@m&x#L%tB4C`J^vq8xt9<2>%eXjhxdfIM7?QtE1Y`UHEDDn3?^|M^rU4
zqH^p;H#R<{WPE|Ft;N9Yj3#m4-37^Vl1O0!?fV9knc@mqMG4Ta?Wa^LM(O78SJ#~m
z8guxIQYmdOp>a;!rPrlkz&$n@$S(2ICfYYI@#6;{{=4XFuQrRF=hoBK#{v4eHZ6g<
z-i9eN#6uX9niBKq|3WZ~P=CW-?zylp^HB+`SIYPIKXDB3MBZ%wlq0hxTKUS(yELOh
zXkkXZd<iy_$|WI219`ZpOZsKbxLR~TU%s-!n9d&4t3XG}-hQeu8kQe9zr}R0{}fVg
z)N*dQ*U%w4+Rt|D(RL^w(t<Z}Q1albWFm!?i+^IMlVdYwZ_4Kf=aR7fah80zQ2~;4
z>HD-n&S)txqv4FQPU{sQlnM+c2E&CVrAxk;)W@>+cbCoJ_KB+2{zaI?!|tEc)O$UQ
zDwy&SKg|OG_$^ylW{Q^cu(#V>n>i9y-){4N^_f%%z@=+?vd1O`vFM5Fa4=9_XVE1i
zlUsv);#6HcSUK9ZrXe}YJ12#v(ykbHvYr;;;ZUltizt;!h4PJ!zPle4Sdxse_>j(i
zOn)~R<00|_aRwgsH6yrFjhF&4;{+)l^C;mHRZA4ExOzxa?*w{89b7Z)k5rLmF{x*Y
zIuFjC;PQn=;(DfG;Tf^xexvzPBZFM#^iS)~OEbTV=Q(t6`?OU2c=YCm!KbLHV!i-W
z|EayC#)mUG6V-IXr!pqBToy?Ev~#EIPI%;66S<Sif9m}8v*e2us(qi^kYSezCrSq#
zNF(ZE{70QOE7*pPkLRY`_V2dc080Px<M#jX`Frj%U`buKn_p$Pt(-K@Uf$tEO~v+T
z_WehmFEjnQgv@B*asCq?X_;ucR{`#f6J_kKs+K8HPjhh~A%Bf8W1#AZVb(L;_S4gS
za?66Bxx8JSkf_r>iEPDssB|n2ANCvI$*jdfVHslnjf`56k!h|)9Z}IrZQ_rwGS%Ki
zu3-q@x+Ccdtcy6m>YUhFVOshXh~Y<s%Ub}zwQ)Oo*9vFPWqZ}>ToS9YVwQP_|0_Zy
z@Wxir2X|x}eUtq{_!`dEsX5ep1f@5ka66r4@b=u={*@B|fWF%K3^A*KZ0PUh)xtR-
zc<gHH)&K!}<7ly~>dr6De0rH>*P@9>ql^_dwEumP_YS`}kjFgT5u{71Jay7f^N^!=
ze)3N0Sds5|mHZ5^*Zvj1PaF@*XD+$cQ^uA65{Mlm6w8J9cS49ipLKn%(M%ORIuS}I
z!r?l9d^?%xlgrsI1<7~z2oGXsmIW_j&t;HejsPCWg5O+Yp0h(te0bd6r{-Y^_|jL)
zWkWlsn?hhW+fQc3UT~=MF#Q+Xe6B>4yET9$D_Kn|SuHELH5^`H?X%9DU;OBv>yP%1
zywW=senhQJhdyyBkf=9>xUp5NmTA$y<-*>~>Nv**fy=r#weM8RSiN|6;l<~&@Rilc
zx~&03b4!cr5kPM0wn3U*okvF?oH=!<vk=yN{&bw&J`Bw-9)U%XKat;#+UIi)$Xenz
zbiuy$-dV@g0;OF|;oDZ1#JO9v?*$#J%fDjFrKACXYabUrJU?}|f=j{x0B?Uj{`HjS
zPwOLxFO0l2emyz*d->rt;7a`}m;QZ*>o*AublIL47uhjbska^M;Qs4N=G8DjE(>Ju
z;P9!fQXY@DPtdrbVb4Vfpt32Czh9I}KcKFx$(J17=7H~61==gnw_n#L`*S9YK50;`
z*$(#kOkY4*HiRypt1sf8J$jZqP(KqEv1X>KnJ^@87=IE!HT9_y9RB5d{c0P7FxMz7
zr?W<!86hjkgYSU3qrC<M4#YKe_O!~|R0FR*>BfznsTnyUUemu;=f*zeuNXl=$Lu#t
zML~87+iKjrZ7O!5HroL|qz1j@;p;r`zisnAT71TjOet{Vin}DzFUqO@^51ZVX}{rS
z*j@pvQ9s^it9owJ{aVHu9h*~QT}XIifId%!d^8o6<r;R}NU*Zh;4r`dH=J=n;8rC?
zX)D;6G%w_9a$UT1zuity#K97;tfyZi9^J1tb)c)*cXD_ti?Ho5(87LelP4Czr6fCq
zxbMHEN1kp{<gU`v+Ol+sih{eWv|}FPl{*o}NTN0nfz}na<|dN|MGtn?>(B`Ul~W1Q
z{giB?K#Q2RR3^vEe>(#klk3>al|bqZD{C~P>8p{mye`?N;UrPw4|sr|LhMGuR>8On
z92OcDw$N_re+Yj@?rX^>1NWCE0<o-3Z^m?p*}*R!(5r;&&DZi{HoIf+#{?b!I*hih
z*$pGp58GW!U<9RqIh!9II#CCq!7{&FhEHo0(0{aJlL}@URAM733<&Gx&R+ep%&~Hp
z-MRDsn%fO=Dw<NYH|V0^lFykI%4fd!B!jTbHX0e!Rd~gMquTM~GIZJ4C5L>=u;&?O
zABS9Qw{)MZb?<nfkszpW{bi5w#}&!E=KeQ1h>Q=KVTqY}IJOb?7HVXFgcHAkunO6U
z%K`yOK2_+Fqwgxx*qT9oie2BiYT8H;yHn0vau`zt^HG5-^}d$M7vgMzIQ)T8Be}=#
z;4br(R;%_K_ZF#JMp>%b8`Kpek;u@``-w*jgadb{)VpQ};kPSd+}x)(^Ed<l=CSHe
za<}Wt-M+jj;lSvr$)iUook8DDC?sdK7Fl!$wC-E}F)@BKK{(J*_yHL4YTWBxw;T!Q
z<<y@!bDHWWgrL)RI$!4RsDAYE4Udh6I5Bdby89G|6@`JvwcafRvKIq4e`>J&RNxog
zho9kmJ~wkqb|($aVK%NcQ$(&eC>r6z@p1JEmf}?<>fJ8{orQP><bH5A*FOoiU87Hj
z47L^>Qi;aBR>TKMV<Ucsa9!z3$4cOvrBa<eQu(jotO<j;9yrHh`tcV0KYWzE2ki>;
z9MWgt2r@eGJv0B~0(h|BW0g(bc*$s$Po8P3oj#=ib9m2eCWH0WKJj8%Te}MiK0OVf
z2YtfbzH`PPwt38Q{i~6xU31ccLgV$=J(9v*^bh^4WOC<rT-6BXFHm<fS<0rhL<y1|
zDmJ+h@QEdcn8=zFnP<9WNOpw<KUB2ec-mMK)n*|a&i8UavKC_+=06<HLoZ`TzLelp
z`>L(@`W7t=H(je@{qmJ@{{a<h2n~>BaJZl0dlu=$X8T9MGJLJp!~(uEqm<vm)l&AL
z+7ipnR%^4b10dhwM~%u_*7(-CW3&qUkQ0B<`b~EOMFG`N`-T92E>`jkcpDVfO)z%j
za%+Q<4QA~mn{EdYcg6n9?Fl%-Dx%}O&HR-l8}X>6k4HyFl(-yTm`RZpIHXL!I8~qG
zQ&NOSNT00C_-*9ehk=5+8{snnG`}VcS5iyLCsZwE<AjaFqpX4X&Mpd-vXynQTKw{5
z7ayg?s^x%EhjV;x-LJ22XgK{30?VAC&2e?Nq#eq*x??!xZ9TRAw6_al)(79E-+RC4
zP=_V#R7ETZl2_{nlMh+8Lv4ev&#c`We~8`{EWs_wwO3j^OpQ}Gl3}aC8$a4lcX$GW
z4J#b??gHCHo?Z2}&&kT%O9!#)4piN>gU3BdEY2?D=t2Uq|0-}@a$^JDdZQ}(Lv3HD
z&7M-UMT{yv1}}N?tt{!?B_5mZW5~qzIYQ%Xty_$y29-CsZ_Yi~0CoN~xcuU&Xm=9H
zu&d^S5aIj%mbt*W>hm38H)%XIOW7-ejPdVTg!;hg5JJrcI;M55UN&D?cA(t34j%6y
z*j9fv(d1*dF=VKcqtb{;S2O?1Hselxx<E%|2N25`(+jpRy%{{)Kva!9Fk|{u++1~f
z{&7+WDgIWRp_l-f6sKM5%<9P4+mBBxh$}ENe*jiReI0lqB`Fd-*Z`>|L}le2R7`BW
zD>cFIujr!t*_eE{KrKzJfx>de)@8)r$%0z{x4~bPFI81Etp$4>_){fqt~Xw1v#ZY^
zrIBTA#6;kr0Y>njX$EYFDB#Pe@zX_LvuIPtgF(rJ1}tlJcZMdB0N=|pRx@hcpC$vf
zGP$WPOGW#Pbcpxc4i$%C%U-FxPz$l}iHA_b^HjueP*{}x)kE;jFU{qD!N!-8GJQ){
zw-b{ewsA@gSmWV3!aS>+t&t-`f_j1WXix^>CRwi_nauubT)S7kB~r07+$=!VX_-Y|
zwE)s<QWhv?AkqGUd+&mha8{x!s4{y|M8HJ#$JtuZx+2(TKAREX{qTO=p+Z*^H2ZD$
zkPvEBv0v1c+<(9>DZ_a+c^JRrdJs%;8X=3F87^!KMfXSE@9O=c`unW;Ek<Ewu~S33
z?a5Js67@GTXKp|r_C3<1F2ODZu!euJO9vOh38W7XRj1<r3V2UNn4nn#@<JznSBSo0
zEjIz&>{PlQ>Ao5<2<noh+^4%sNjfM~LpFLuGdrHKlB@o)E)^GN%G(O4zdvY-32+QI
zny&V{y&ADy!plD#W>>vBb(9%1*-cD#=cOk>HpSVu#Ofo#(@}amz!-y=jWKY|?gyhF
zrG0LGASFwF7c}t6(a<{01EiMM_-za+t0Wqe%NCml0J%(<j-_eK;Ch3kr~zMVAV^Ss
zx=uzwPNbsd4Lt(fPu`!Z+PzJ$0d`6PjsVnZ24nWqJAQuPcix<foS``L8)tE;J`Hl-
zM)Nqw-7#o3Zd1(~yIqVliK+v5I~mgnS_%r#jRaEDAnbk&b4s1dKuLzprykwv4Q$w)
z*pKAuzN;1$o_^kw`jqT@T(pL?7xAulRCaIC(TrC;X{2ghp28{Rpit<Jbc$q(a!Tus
zC}z~0vN{JA+Lx0nKN;zgUpx5z;nX{?y&nd^v)oMOz^)rQc>VUov2y9p+Fapk>z9&F
z6v*ig&Zq2UInLwAFy_8Tqdm2VGE%?}ZQqk*ug8)8rCPiDsM@0^EiT$5wJ|28V#A4T
zM^(Y)2$ZpJvHNgsSxEWoXy;Z$iS(0)`O#6PTSp4z)FpN<=v~?)jkinUOlJpfCH=h0
z=N;gB&%ga+%9B%-dGxKujrh6LwK-K?2_FCTn|q4P;y+=iuKJ4sjSubQBtA>qe0~`e
zagNk<9K{!>O}ASeIfi07w#01g^Txvhs#A0s@OAUWXzP>5UkBr_*LdM*bNTg{^iO4f
zQ|p}s+~f9LCEi*+`yqMyL>DpK!1R`C-@Wm_(}_ou$Y5WoQyL{NQ9p*m%1%r?roGZa
ze4IEonAlPNa_k9ab&4VIwOa^TnHskO8C&#Q$6x5WxxJqfLma#23@3q?o3SbaUC(Z=
z&gf<#v1=sFlx6Mn<0#CS6C00b`34cy92svG(wd{SuvrGtj_~!EV%R>@>R8N%@fLKM
zK&WTze7G=Pvlyx0avc{E^01IH{8{+<g^^Am*+qt4wkiB`SI4$Z{Wzafz!JIFw!jRm
z3u=!GxYQQDJy^ZMa?Xn|QG`AqLCW42;8|sI>htf(z`u~1az5;z7JKczZw7aIG2#rB
zgXeY+iTX?z4Um+4vTe{rOYL$8=48u&>PR_7=rJDv&`Dk@Oip}$D$3)a9rQjcLJSqo
zrDE@Qh=bU{)4^RSr1Qu~sG|D;ni$Zs8^>tXBBW<<b5|wQ(7(Lomb(9?43&c(8%&IA
zELTFl+J?4Es?GK=wo4jQOtrvyIipmDxk<vve+mJ{L2*Glvl-a<EcUEj4ac%TT+neV
zOR?NPydGV@uqE=YCCr^*BF+D&bvf6|5{p>@BYVn~Qmmaf)3Q_?$0LpGZ3_KIGwaPz
z%xrqoP;;jxLL5B9g~xnk>|TH10OvPz7ZLd>KW{5=)Mc~D;L^zXLp#K6l<ARCqh6qU
zS6)JmblM$U;YE!3KU@}k<MqwmB2bEW{3Jh`Mz8t%v__8xHNKGNTV9E~%L6m}?dOq!
z8$#shz{u+CRE#aQe(}uD?LT&jCr|t);Mp+HHQc)0_?X^t5a=txGqcqrDQJ9N-{;dW
zs!NZgJPh2Qwf<V$qHVXxvs1hS=-A|UTZ~?Uca;$Zl}wPg@A=XfI7Lqt7LczY0yA2X
z5*C$x7uVZX=ivjA(F54;*l1!S`IDs^Hn22AIf^<Pf9~#RTuQ$POT;nqfm-<lQ3vTL
zz`K$Qwmlf$o!TYOp>|RN0!=b*czAs#*#5~p?$chpK3{}~I4VZ!7_<iZ&Lfd3mO-Ph
z^^zuR!QSW(k>7#GY)~nRHUq(?mOS0r<PBBb91S6nYu4Y$pUXOOf9nSCvGTqZMRde6
z&ZP_rQY31rM|K$BKn7wVUe3!cWA_;Fs3Pr|k(!FlB{<?~<MJBiwzO5H|Jr<81N(Xb
zVKmGx$V<$!?K-*GKCPq4_pjB30%>Sv&(#4anxGe9h0Yxqc`>OW>^1kd17@hwx()ce
zw-_Q!kn3D3Fzb(bnX)Nt&56~ZMbr@A(5>|Mv<+1|eF-iZtX&^5+uv88&qm-mo_yu~
z)2*p=4!0_JmV}(Gkpac2PJM0~ptY&Wz=brHx-uX?kW7=xg;M|%LFoz;aeb$tuW>Jr
zA;4t~>~pQLd%YZI6Jaco#b)fGhc9uuaW-(shj2f9tc>?fQzqAxlB$rNX^J#N`s*80
zzWY>Q$U3xc*$F2&Yo|lRAXBLr8M7b@tpg;DspkK;a3`x#J4B9yeJarUfp9ZIi4USI
z>Ok2=RC0IG7t;SSL$SQ_QnbGd#_<wwM2?Ohx2=;dFlOA@pY&qi?fD09>tFxP!>BMU
zsZ_;2Lb>=~p)S&&i%^>JV{MO*jRJLaPF*WWnSTNcPm)^O4?n0EN}<JS1#pdmzq%_>
znwbrfxv-iFzFRV?cX)iyW;}rXeluipifDd9Wh*Bhl@d^D@TKl_e-8eic1atjb1hcb
zUmlb)J|6wpR@A1~vTJ{nkyZr>RupAtdhIPJ%|66$(uUr+^JxWWCE=c|*K+QwzFO?|
zFZKdTiO1PtZ`kF;rCNmprgK)@ZG$$QW9M;SK2|N-2Hfxyj(LmzN3rVb8;=VFHp$jH
znw_5GS`^jVKl=CkP^kaF*Tvs*z?@gXSN=hIdwdvzIb`^BEPPz?y70i96n^hb_CRny
zD?2evf|9FoZ`{q5Nbj%eIXyS#&ig4%(1uV7{h?jq5#>Iki*{07b^ejrcC7`QP=gqv
zaiVgUFjX=Hip`ix#N)~C(nn0<d|3BDR~LeOJuvF;w!D$(!Zqb9Q^cqC8U63KE|8nt
z)`u8_9a98nn19mT{>fFd67xEtLYD#$V7mePq$oYMd!W0^BHLMY%rj~y#nI**{Bn8I
zb*KY!54K6Vd96jElf#oU1blArAjElVaG^eVMWaV|dnK9|;2LA`Ip?<#u2bb;gW1rw
zv)Wqr#EQU1H!OZUjEmV9k^{NNvQJ8Dv*O^|3K(uHzkmW;wp8snN8?@QnVFe}y~*eH
z)s%+%mP$b^Z}bf9RA{D3&gkMwT>-a;TrvRVL_ETI!Q73xWIb;9Ug1KHbYahcyU+0t
zg*rNPNkuH=Aw7p6biqvg(-61uv)~vQ{wLCWDq<-P#Ga`ertQn*g)EnRkO0Vj@37QA
zq;R1q#iu?ApGGeWmmC3(BRyNM;H*rCU4%vYk@APMS<IqxLAO?uj|z5gIHoa2vnZ;E
ztLs4^hyIthiuGFvGrr>`eAF{$GtIz6n7^1dynLc+&*Pqc1dZ1D$6b*h?RjVOtk0*c
zFCL+0oRM0%(DSSC!yW{~dnySl`G>7c%Gq&rrTSgOMkt}J#sy*eR$i-qY-Y*y-29Qd
z=9JGvmpVjE5gT9~Ld0n#pKYp-l)i-K$+GUufrr#fWqZxZ16oYslMDLhZ4#=Tt;hFB
zEjZ}1B15r=i4gMZjOQ_!q$&DXjbqeK<8mt|v+*oP)EvQYNi|h6mTeofBSbtO=g#pW
z$AP}V9BTePrM3LiHh95Sl|oO_<F(eqG>K&CG`ek9m#%4_3S9g}ur;q#gnm_qn5)q;
zBF@b^QJE?@lff$c1)=z~{1*Y$RD9Q3Y3C?mTvw8zP&NKab*l^N<YNW2j1LF;K4+aJ
zx5~VTx6wDRYp6Qz113?@*PfsK=rTFDenEzoHAJX`z)Nht?d!!AGw%C;cA|&}k3vC0
zO(S2Av?GZ{_xz7|a-xG)2!8;+2wcP6b*g<tI|yd#C7=_Ka8_=HNReR7&G4D9EW^`a
zUl_d>-Ydz1uZ0wd=7q?9bxM0_sa1X`=GU_~#t9V)?kZ8N$V2JpKhfkXNs}JC@mUF}
zfVcNt$g_oQH>-EzK+Ts4Q3u5vZ(p=@>{p=*)sC%y50t{b9vZds{5M2Z`sk{PdYJR9
zXY}QA_>{k3mn8h4DB>^G)HM1PswKXmKE>Nbs*Z1BG}iYq*XE-B-o=5yBrrO;9$xj?
z62Lw)2Oh#+#W3AyFnZDp-iGTXiE{FX`S_hCHlC<`X5&i|?(gvGn2nZ>i~OqAqG5b0
zQ8BSae_!N0bCN}}_IYYNB@(Ugq#U3+Anm$FPM-F<MM0`AYvpI8_+FMnK!p9|Pm801
zD|p(}D+|}qKH6~!`9VoVc@LbCP8lu2Y$0{dNdQ+bpZyKJ(j;L!zV3<~QtkH5QN4FT
zzwJ1evt!VM+qstVY^KoWgE9j7Q>`%yexY)7y*Hxl_K$)%BJ`C?r*HZvYd1?O`&3z_
zqaCC6X;&ss?=AW6;|%`}MB`4+s4NWj#U=3VFW>sVLViH~M*F_HCUx_kwzqnh<x^Ag
zL7@%ZycQZ@!>8tX<3YT~pD)Yc3hJ%-BxM|9$2F<TDt=tOu|cL2>h$s+b;la08}~cY
zeGvMwnL}&yB<?bg&#v4nK)L_c`C8@a@Gi`8Pgf7DT(ImdX)Wjbb8Y99h+}!Hb@e(w
zAX~%26gPUtWTkq=*oAE*$C@1ON&IH@0s-do;z>jfI|7<CdL>$++gN0v)P1Y7@Zl-T
zPlqHglxGp=ykt<vb;%!cO`G`2h?y{(_MHs*{{vBr{;E%XI#6C)yEPWwIZoSsG#$kW
z+n@`=H0|vj3R@!DzbNfk*gC+dk1}`_T5p7N8_xsJ!ae@OX3)~`_JTUM!Fx(zlo~hM
z^MOZz#V}*$%}H@z*c^Ys58@vR@V#CVSDv<OcegOy8dmDQtKf!Eo2if_?6YjKv9R~s
z@iyly^}~l{o!=?sIxA<yMiDnBSf6WhPYPk@Hb&E5f*wO>8xjmcwsIi2u25OkJ8?R|
z0#I7aA*9#5Z=3=>^)jo}DR{>9?~L)|GV`~8-lOWMy`c{Ns$K34R}|`3HGd<qk=TAp
zd?9tCM{xIR$sfSK)Jt+a(u**ib`lZ-?MH{3rf7t@n$dHQPOc5QPT1BrXjmW#9VGP8
z@yn<ADVp#y5voYhgGw~o1(9KM@|4gp-E|=b%#cOiwjI4|l5*L=bgB~imov3m2L8Pn
zEsy``@0+}jSIPGY83X2Pr-g#B(O#xaqt?rF=^{Gu`DkTs)(Q(m+}5#fwEz8sF53Kk
zDP9C!_`d4`>VoflikyO`W?)0Z<Leeb8?Ggnc_*lHjv7(hZp0gnoJ0Aav01A#tf`?<
z5Ob&Rp;X<>TIP5sQC^$Pi5IZ&Q_TTh{(Ibfbx~_A@bt?>=*`J{&j<16tkwN&nm?Wa
zwj2MLlB%jS%yD_{c2k(7tb_99Iy!>4Yl0Wzze0p})upoXQq;xmx2$gO5D{P9EpBSv
zfd9a99}5^6@dQQNIm_0w&6#18vHQ@^IjiWYstt+@C|jLpo!(H8m!<N)q*$bml&X}a
zZ)Z|>1&lB@vnh=agBU(s@pazH+2y)ir-PhG|BW9xps%SOc4J3J&|~y$EnnyD?XWKE
z5cF#^7<t-uyiJo3HC?>-*!!J6wW1_!ECAA+b%Lk7%%mYG4Dt`6tirKL>EGNLyMVJ-
zu!X%>guQP?E=4O1*Q+S(<zn}8SNYhK3zTaPQBloXVXB8zb}%Vyd|uq5Z4Egf^ts8t
z@=8t-*TA>3w36%6A_MP#yT4XCHxl75t{~y{=ijoPW^QD#p|dD*_+jstOXYSN9(vE;
z$efN4!TkX<5CdbAM-5F)Thg<1Y(tNy4VsDPT9Mt6^3Teij-QI2Z|-cvmfN9+HB6lA
zswcY~64cHboVqWQQr7vUMq7F9o=%=gT2Enn2MJ@hH>D@L!mas#2gqsemPzzXB}-^G
zz_G-(4MI+ii}X2URk;PXLDEY09CJ)>rYMeH8~^Y}?Qsc;&NZ!w3_(8o@WAi62&8DS
zX`j`|%`ivHX`a2B(a~SgQ$rc2Vi6R>JmSd;&(ZO*dMQnl8PbHF|Lg^3RvXXesV6>J
zvOc`YT=4vZQMt(zZ}iHsOgIl))tsMR0B%TXCK>B%q+C)9dBYRQ`*QSFtEb-gXU9;e
z2+G=vPbw!dJ}FmR)&egEcsZ6wT}Cl>f2pZ;z??FiEu#aAsqSRy+>y~RVPlEQ*9WR>
zsGc6LL-Lu9+O|xfah|Sf#f;`b9hwbOL7V}#=c=#1Z<B7(^O>?0r*6$Zqs-BK*}tsY
zc!nkEYj)<*;)L^YmAflHr36>F?WN}<)Ryt*gO6A9+RfROM*!K6h%9GPyq)v|Q@g&~
zTs>IPeY4nr&CPe?ts2jspVGWWtB}dyM(CkluAB3RmvuyhO}kvlq=f?R-ps=|@y)cC
z6jl4KyZ^1WVw-%!LMuh>k5nVE3X6R?f()HdhnW4vh=mkZ1G;|kHpQR{raQe^hwM1e
z;N4nSDGn<RQ^Swl?QtOPk44U>8f+FMEt(b8`*DTbq`{S&efc_C?0GZxqhCYJ@~UP;
zc3p5@<lO6{%r|#%RaI4P1EcpYtYHs&vGaVV)zf@X`O#}ldoCBQ>XKWJ9X^qjm_!xk
z0V*eJ(s#3!J@3o4(Fl>-vvFI?TC0r^xk*oAYl+XFU^qHdCih5owxx5}<Cxh5n{$x#
z1y!iRctXH6VNJiwWghd2vh1=Zy3jinC~_qMqqFt|Vo`+mk-p)t=9u$RUniv$oC^^u
z)9H~$3%_?sTV@HL0#s`liCY$jTXm&L^qS=v7d!8l-ucs?xZ9~d?_XAOsvgnC4#duc
zL#L{w9Zmh)#?;Mj<Ph@nZCmKwZhkQqYTNNSr7z8H&i>P?Tz(nF6TO48A-5a$ydrS#
zAOK0fbPP|bVbP}qbr+}+edrpF;uQBGFje#DsFuP~r0i+Ck@|C0^zEJR`)jI-5%hzY
z)@DE4jQRm^t!cK#&2MuwKkK!a?<INe0~yq!W95dbj;3nv)j58N4^T2M5T5x^4~beJ
zYuRkDebgr~D9iD&ArNSXpYqfrw^qj2EcX2$1&rS9TY9yu5HVWfLwNMXYTPRCgY*e&
z%f_veS1G2wK?_HNAqczXvS+386QO@tTYirHDXy#~CqmUOfx<;Ot*_Z$ZwL+<_&T<i
zV!J72FbMFZ-||oETvX`tV2PY9Y%L^ToLjXMv|<lPZaojABdM$JwcIN4`eRkl+EL4I
zNn$}?js$lKd(NZ0)3MAJY;WDi%l%wO8zJkof(u3)`6Mg<pL~<DXS0z-J+DbPVCfa-
z^_NbN+|mK*l9MmX<>f1(TYq{thTE@9BY;-019b`s3&LnejhXqFywf7T51FF|!lNC7
zz8>57dOEf`TT_Ee8+zn+6Cowjt$VzMZEbBrQwOG|NnoJ>`%&AOlO_dQwkIrnbNd{x
z9BQgQTwSEx#w_4R(-p(nl>}njO^-o;_VS8-*@-8C?;HG#?%>MClzhkJzOI~ni%*@2
z9ZDYJ3dtsiLiC433<hIcGdH`moNw!olb@+*sti7ujP9bh^vjm0kR!0p{NpjZo<nT`
zk-6o{w-5Q%i(EyQYh(FT>2Ixg_!Q->x?$21tZinmaM{EW(X?Mr_B$UfrWV+TKYZQ}
z8Q{c^-6f<e*OvHzjXga}xsonrDVyIxe!{*Vhgj8B^uaH2?*h=TJ_e7wuL`!QjL~jx
zRy${zEmuZg3E;V&=u}Yi_oBa+EP4v1T)<{7a9IJ!OwGXnc!N?<@xBIS<%{aeRX5|R
z-NgeH0&>%ucs%;OnvFqPz@oq`*DC->yv|&kF3{wc(Qmli)}{mH%F!d1CQmoK-+|y5
z*D&QFMbCiH@PQOGdP7y<P<pIxTA@;t!hCJI_ID`p(l-<jAzTJ`q_XeWYPM>0xN|xR
zg^~}v`azHHK6kt;Z)!sUempCK&<a6Rt?_Aob{j^?*;e1GKGdxN5AO7Sd%=6`ztn!e
zww<wOhtfLW$=SoL{+FSFyN)O12cZKY|JxL>T^cZaI0)cn@4LZ&c=6=wiT~IK{>xKv
z`9DSj!~c9xnk(0T#@*J-haL&;Ee-$kIcfiO*Z;Wz;L883!T*<QFgjcy{ql(GaK%dN
zXQAH!6ZHZWFiXYX0qF)w|2}O0a|i%W{vTL_vSN_s$)jJ2>~K(XMHTR=<bk+TDfAZ|
zOMmPKVy@(CuhFw%RAEK(t7Ny8Yu49OcC?(%J9RAGn<}e{XvKqK9{1_M%<JntDa|aY
znl&i#b-o+nZc=Ck{|vdT=5IVPCa5oVD1V5a2pv+wR%YifFDKa&`C-^tx&7E`?I=tb
zJk*JQD41jn8DnL2t|-SZd|3I#f(#HP#p+Hu@{7_dV3H#hsUTVPyMr28o%n==q5jEY
zWb(1n0Efg;+o*^N&81GaNAbn5o3-lApjczS-KEVX*{jO2yknR$q2Hc#7k0`3lt-yG
zbf`_oJ`yR@NvVjrrY06KdF#zY*mQBt3RGQx++TEa<6)+JQrKY2HEX^T;B-GNEhhnA
zPL%g{r5Q=|6Jw6z)_?c6o=Yi78lKj7a77EhjzR{oRD0ofzdLm~o$*z0HcvFQ;dLA1
zF?+RlI!_>vrgZ~fQ1`c%<YW_T-@k@kB)jPvi+cu7LDBXMw}FZZcr&fbi;hsPPP03|
z6nUTjh=xOUD5y;iy+2^C$mF05XvZ4<0C!1qDztw!FE!USWY-?kByH6!w#K=oj{%$3
z(M!$POCD{s@7bIY!H(7E3Cn;l^%rfAxh~qHwVR!T9k#VC633(5Ot%S+g3W~3hzdAc
zJ}GN(J0&}#Dn6h4U~C(<`*<MJutLjo`Mb|)>bS6chby?(QsBI9`h_WCh(unR$o(>|
z%gZ<+b;CZ!wU32OhpgE}-}OaZU9V+ASduWAvDP`}P?)LeIp;GvSuvn7@i4mzcEVI4
zgVFJ*<Q^iAwUX_S*e{mwiG<JcWQ^P&O7nTo8FH_or!BMNUU&yg4%>1_867`L>X+BL
z30t%jf+_URVbz=0Te1}3a?HMI*~RJXyf{(<lsmZ#+{wLc(Heu(Ke{z`u4#3xS|-e1
z(6^1<sJbNQVjB}w4-5luJFc@{^JFqA#I5-eoK)eze$NYY3so6;|IMp*YXVBzf{ewg
zQtY^qqw~vQ2vs2z_<<(d@IB{TJg-e@-)f+klE;Y1$lx<>+#A<1Yn9ztkRg_hO;VJk
zVqITf^y9}n?}NiCuu$Fa@BJZTg8!5QZp{2)eI$Ehf1su1w*2UT7ii~=Tjb}|%s{PR
zj$33SJ%T3e4`RAkU`w)ZoKbfYq$t>(Vd)hj%93z9@S0X7C8y$B+tij*<=zeh5{ir-
z@?EB7{7@0OW+|4E)Q?hVS*6=@QWtXR8`J$(lw7mK<V&8;{Jhkx{2M<dyojm|-<!K5
z;Y#v-qtTByE90xw3F2*K(mCg<V&}eRJH0ysFgeQYOw^7>7}&5NobC(J9q&6j*8hqy
zV5E!*v_H4cuY;?wMX;AWBo!5+useB%(XANrs_b0%F~J4@*FcTe;x?wQJB($XE`@jO
z-bBIok16^Znv$)${f!|rrX4~2`@sG7CG$(c7AVZ>#8M37uI`rUuU!aapj(eeS4Z{}
zSqF<asZ8phh<=QaYq`=4e^7rKGgCFR!N*ti+n3P8ZLRwmLQp7d0Ot9*oTCOhJV-o=
zW2GNYBKH$7;E7Hr$2G$WymA>{=p?ro<J#RXO9%L&_M=0!0w66-XA8J|R3T$=Dt^{O
zez0oh5AjTMd&;sx{D5)RUCMj6Z;9NF_JHL)WFHC;?3KX%{>8&>k&td#PRTLg@u4(`
zy@Or%<ytjMUSzUO6i))uuj0N>PiSJcI+t!1T?aU#RmLQOoSc$=9#bTbSwiR|wO{wb
zdWn1Kwy=qxIc0U2@Tk7!U2|>d^dD^w;@o2bBPxGl{q!#^7CBzwDB4DBmLJ2ir4%O`
z!dG4`tiSX>PAA3~Ki^S^pX5YE_5nTOykJHKcUA9-bPu;caJSV3E*W$jpqQukczxVO
zdm;4Fl;q?rx%kYz$?y4uCF~Y^Vm*iQ@|b0%f|mAT?D{XSa#$$Vc}32vw7hfmY1_`Q
zP1k{C0{+EOiG;O*!LDXEKc)ISs8#5}g7Xk2Ivj%-cVoR=!g@kOVVmfQASlcMeaR`E
zZzyD-xQ3nD4jIs5q|iG$_6Emr5jY0Ki5k|Q?EkeIQf?mYBqFDEfLC~BM;oYOmbG}0
zF%tpJ_j@x97<(LX3f4kUE~T2a5;ZlTt+v?ep5hhlgRb(^f!V|;TNiBD_U*f>vHJ2p
zxxZ!ljI28FtD2>7$H5`pUsyBn{;-XCLu0N;HcNXNAL@@xz>r-2sypR$V>jP)oc?kO
z0$ceDnLYYreg=YL!ndP?s2v?kuevPl%xtJlCf0`;4J$}7p!fxDq%B1f>)hyPCds$M
znApKF2B91>Q+NM!OZX1cGPP=UI)o8FMvWgFUhyRE<tdVx(R##F{g|%0XkTr{{1?SX
z1z6q$*pIbh+a{$bOl(9bY@ROUBF{KJ?*7BmZ?S?OQhxdr(oX9DrkpysiSX=dH8}km
zz1@@-Lu1yge6EFO<7?$@nI&$20IsHplmq<K)EqfpidKc@rB((&DLf-quK9XE^+7B*
zgI(z75j$H~z(2$+-v3$miJB+%-MUP<WV@LCw7BMfvG?B5a7OJHs1y+`B0=<t5TX+;
z>LejVMDM-VQ6hR75`ySK^dNfgMj4$T>KMJ35WNpG%wX=D@7~`nYu&%^z3Z-T{?pF#
zp7)&R?C070+2`O>q{W#jPjp+%h@Irch2UW!e~JF`ezj*Iw}mnEeByU!nA|46YK(Z{
zK7BdoGyMxS_p2Uj;7D7}dP$@rDYuC*Wp-2H1J0{fUW0ok58NuG9Jai!5=^NwvY1)5
zc+Js547X#srzgIQJWTWr1xs&0z43OYW0Y53*KAYLhdFv49Ue#zTdTfCU3VkjkDlfC
zDhGvYASW%QIlJgpzp;<&{et|GME1~I{AuHq<+C39Ej0zwOF|VfuuU;%oCqOLDdbkX
zkc?>)_+;H#_SEE~Wm!3C_{M_o$06vZ2@*Z=H4|0&RXaoXSLh*HZZKZj0^M$nJ8hGW
z2qC>dgB%*K^s@pyJXMm&LY-#MoTV?skryG!I=)B{_ewD=4qcua5m7rbu=J?sL&?Pg
zCIPD^(j=$@KJ49Ub32DQLHDZ#abMHaL=>mdPZ1+atQ-^2J6g&s%zo<iAl6Vn*5zPX
z?U=&N&lc`4{pyT-=0@F8d5rGw+cGh^foB@00vNNPGFOMyiQpQZ_m~}wrSj&R>WwSz
zoc&h**pbD)Ht{+Ba-;64ecznTmVv9PgM?W5!SL<cO7`21U1hEd3B~=NF2Fo7*_O(u
zmy6of5=`CV?NMz$^YS?RFojJD)yR=?g%?B*J&v`j(Rq797h*l<1ARG?^I;;e!)-+z
zPoMx6k_@UYW*{)L1oF_Tix=%pDrF~X8))GC^}#5pLL&)^FFtu48bnzwH7V4U`v}AN
z`FkOGBia(ntqPPQWf2Dr0R7DYHErS(y;Mbp?*7>uJhaU;Mo}C@Y+XnGwXB<j2f7EG
z&B{vn?6m&jPMrJHuuKC1U#JO+Y)7{ZR*pdKQdF)AYYkE=<?M@r!##+MXm%@#NWGHx
z9x@&BgeGveQI~2mRBe(`km2|$>&VlS*&Rv?(oD;n9|gmhO(uUq($&X>{Kpb9)~2Bx
zaLxK^M|%K^>?51u&rAP`6ZI`XYOji;ba)JzcMnV2DJ63DQwWim3kJ*K8;QFHrGHay
zL2h<vBi)v?tFP1U?4w5<K%V8ewwmYIX@%2ecf&Gq+(Ft0agPHJ_n`oJ${6S&TF)<_
z<f`$BXv=Y1PI07T`_g3)yzkRE8pPn4VUQW{b_lu}x`mD8&M6f&a&(Ej*5n(kG+mlM
zzh8`ATRCGY^Jq9mJMDRjB>yVA6$#1M4ZmKd4nA{kmz=ut2G*5vym4~n@&gD8{KX2R
z;AD0-A#E}8h@ukr)F%j|R}X5Xn9ACvCqL}GQ*(BDSrQ;knsXI9pSyWkYH@~Y1GUQP
zjMF&r`@I_C>b=9nn345DV6Frvs0*et?psV+j%-afdQ^(=5uS^o<&Kh)k}%P^?6mru
zJB#MV$YT5|VkQe0n4rbA`48ZOO9_1-k-Yv-*Z6)J27n@W+;3estiImuv0eDFcj<rh
zg>zTA9g`Mzf^jQDpiv%Ku^v4#TJJY(0kO**B>l>85}n*5Kv2~WV3?VxsL}9AA#~C9
z_nnm#4?8);-)+i)`CJ@PcX!p4?LJs-t!ynsQf_&8_G8ca&tOXxC;p2;<_L0;3;_>(
z(FVg2i)ySm$D{7y^OeuCej~BkNKC(lfcRl`8vnr?-gX-YK3+rm-ONBGcYZ_a#mY(w
zui7&yh@zlW_YZ8))-&Hw#FdRT8T1rWzlHM<OtBaL^DV_qNAP)s)cNIZbFNrM!=a4M
zd)_+4;E11~(U#0M$F0@5PqInB7FZ)!U+;!thDOk`$g>6!*xd8|WM-4`r2WvX3!P!h
zw!x$~fiN8-lCcr#7Fy;W&wV8BnCeg2*E3Kh@$d0mT#s38!E_rCMP-*jkQ{uxMU~=}
zSRnsYTh7T>?`2)*aF5vlvg0VIg^H6hh7;b$uHbSC-G=M=nV>V<uIjh0U5y2r7F+fL
z7)q{|YY-`OBU=ahnZ}d!$#^gKMNxV3xmp_X`e68n>8-}I3&B#XxchK)HCppb`N{i&
ziQWSlk^L&0%@qZ&N8QxYU_Ehf{`{rWWnEqF!1%fV0Y4X>k)?;5#!R~voa{QvC$>Jz
zYqFJ2y8%Q%S93?fKhR%0R`sy-Lh=nREOJhFTX18UH?|_@jsr&bj^u4RH76OfV^r=H
z9V7>X8sr{_KtE)$I31pW&$mW@o`h$noq5X7hYyD()n=)iYVt__gwrR;*10e^Dc^3e
z2koj3-$!jw-(u+h5u->fA)!(ZS^IDmYTh^7oFn?}cRdbpL~18T`gM=4xE0lZ1*BwN
zhK`K|d^3m&Wt_gq@SR`Gf}7`Wka)0HUntA8yW&uQxsw|)FwMC=X3jqOI!2R1o=mv7
zi^*adb3y-$z`oEHb~Be#<Kxz6x~U)1_UH9U*=G#>J)J6>pucgj!#z00#TU_LbtEk*
zf|;?>r)v#dToEd9(Boa%^PQTM-}gJ}v?y}Wc5JK+r>_$+$aFOuQjT2=tQrGccf`T=
zN4GoK6o;Fnaz*(@WL&bI-6`eM7dfqk_Gbz<4}lufT#rze2ivo_i!?)veT6W*x=V@7
zV5xzpz7`qKwG?4S{b_ix=1@*GxSnJ_roZiLp@9m=-hHT;zl#7>Q;vEcJLla+u)%Vb
zTiw-OvaCan4mrL{3Z5kGkoIWiPg!`V{p=J|!cpY!PGmiP6zhFOF+IuWWQBPn*i8H5
zeRR-O(&iqBY0|*%P>O9X3;qO-pfhN8_U0WDtmFSWB^0?DcezoWX7Cj_gBz7BwKv;^
zr^P4kkNYgM4_eBCYDemLD%xxdr=>+*$tyN@)PrW@j9M(t*RHp#akVkg7nn?1w-_Lh
z9f&t&jBCT%J{H0eF(OFQ>Efvm8Axp3UzrAlB#Aj+eaEwmTe)YUhriMic9szgihj-f
zZUj}~7Y($ZhDW|;=(RSD*=ry6K_E1|u?HaXO8f6!RZW2{PNz$k8SpemYA4AlDViU^
zCO&HETm7uDta;k90kQR5oc$>ttX>}8c1RsOJ~p-m{n=^RLmCFoF<Poe8q7nyYT2#l
z$$4-p?pM0Ts0S#o2z{UCR?eAaPHelMX;~!&Dr~ZALDXh)NmV~pByY^kug=kwEaqqN
zQ6=5KNl*?x3d9k<5s(-@s18s25WQStXwj`J-x$+uo7G?{1NF8A*zeZ*go+0SnQ&b}
z;edZQTH;XJ<7aMp(k5RFnv!`r>jZJKFUgTV1tt&(_?J9^Sv@SyMq0TtbS6U#SVcgi
z^=r9EHx)sdq<LqCEu(z%S&U&fGZQniO2O`t{BCn(XC5EzcKZbfIb>3WgS`77<q@w7
z-yJd5#YfW(rs-E*9=|#TcPAeGD!bBog9wv{Sp4KNJm?`m$o+i659Ih3$Y^JY!+CFB
zrt4=HFXnO<$4-A7U+fv+OI#JS_cM^_4a;2AaDujyJH7XgiQwTlkpk{OB<{kqx%UUR
zf?c~u33xDTX7q?6kf5WN6^IW)!ml}WP-0ZT1L&hOwpt5mD?Bijp`KeBxh~em<U@;I
zcB3e?_aYO-6nnKrSM+z5#wpOp!kzI4IkW#;_j~SXlj%^(cIhc5vAWjZ_QmEii<C|Z
z6ZK#T=5Elc^T2?}>}>iIF(^NLSMu6t0NC-+S&!!Z1HI{IFPdy+jlVWLHi+T8BL>^9
zcTvWN<V5YwO^A`<ex>D%!|lCem46+E9Rjt7zGY&K!wcQMo!qvEi?h(@MhbQKVN&+v
z+UlH5F;?jF*b2ND=8^1L-3D^zsJA(cs9y;k+ceF*uo5{*6__MuxBG}-rV%K>J0{Uj
zy*3t|vDa=r(*<jhX_q@OcG38Pj5NupGizjrO7`FQ=Qy|XP96C9l;O5y6V)Ki#<^>O
z%T%P-m|3KZi|pxgK%nD!<ltKWnsX|PY1v`S8Qy3d=f~m_SV!wT0u%_g)kU0imzbdx
zRKdA+hFT4YL^^W1f-f#~dO{JRFQ)dV<PZw-jfKv>JXqaF-68d?nPBMv^>k;P&N3%5
zPmikFLr`xEA;ZtbzRA3cyE^acQ1t4_Me2G<8`4DQ>TK(C^j;oHHGc#xTqo#Z!jgN_
zY7aro5;E4EdEkmAjOnbjKAEnSVNoC>ehAA>F=bQ9jk62L;Lx$ghc3`U5Rjv5nLpx4
zAN$|}ih`qBf2>IH4FW@EfUZa{yaQA7gGiQ_cwJZKG>AHSuOqjZS-vRy^7$22*r?mq
zwd1~|EdDG9sLU){RC`j%v&8DhHi6hLDQ;8sNWUd&SrBXqJ?4Glvm8Ngnrim8D((z=
zTB7IWV|-sAurLK`T?^Bxbvubp?)&jDH1y?e`wQW9yV>e`A{?7xz}t;UhF0BW4KmfZ
zLA)d!0Fk8!m;VYRw9Fegq?@g=a+j@?^hQ9VIzyu0uLV3*e@ME9Hsj;C({j=jVFoJ4
zx@@GT_j|deiC~H$L#wH&0h#KE^i(bUdc4rHz1GhU!y+jVLT`k)@{AUjm1$0!&q|Wb
zWOj47{yE{--(YbDT6`eg&d<))o)whVTs+>{Ihe5hHEAufvjj{3dz%8HOV#~w;;5Eq
z?gXv7Id!NYk(_X<zXTs1J!(4~u}P!8K~Mm&Kc9xDz8Msif+8|&6>ulMhVD?8s`2c$
z!zB}`J5oXE6_FL`I}SgkJz`Vb76&a3(!I(rZ}}ZDBagRr`&!z=w<MYu9<892YWe?g
zxG?ZiTyjliwdbV3iOKxPq;P*%x5E_X{{U+eQrL4D$URN>9zmzu2UjhprPpA>2c_V*
zpXTB<J|2A*#Nbt8#1-UD1JLMfm@<Expy+~;8*e7u$(VQMD(p09DG-IRSiI=@{as&M
zm(<tk)W5}5!A_fDq`k7D-qa8%4mb|sPiif7G6(s;qQ^5q8DOyJ+yT7YHQ}a+!N%0&
zPe(Iv-hmJ#w(Skl_g8H$YDu?mAz7=yIReTsd$QHmTpwIjEjdVE!fHTK*1Wvbq**tq
zQ`&-R(=)||CH6P=9hhihOa{<vU+X}THJGtM;1xaD%==+JT?<toYCD-pN$i>o#>9#*
zD;~nISN&*=KF(IRO$S(pmELu&4zv46x9OFp9en4Q2CO^1nIpLm-d+l21J5_eY7)5y
z&t<_rRQ2v)`*LtUcG+Q`fmj|xQ$JNUxB6)PtQW4oK{M=!wNf~*{Q8HmOll;q--4E4
z#_C^`Xmgl5+ruv{veqXXOhPAf-yBtQ`SO>_+>xrOcx3v>*lVi%tXQ(A43j~N(sbFz
z`@ME&Y+`}qu_asdTLKXEA#B4F?{ehHP;1WGR|n;x?p#*flgxQ&;noWeb?ZiZ0QUz=
z3NOi11`WfDIxky2d0*Gii!IW%VkRcVB+pk;Fyjw%*Yvq_cUx+lXeuHO#DHS*^&d3L
z{=NE4f5)MAjI|&JL=lDl4ArCBx0R9HFv0E2>_{SF(e+_DyVO|`B7vAvi-5_JEeXD6
znubTyPbPy}&x!`B*IAICk)rL-OTp4LM$0j)e~c|h#&?^chhOU--Yfp{HZu9wf-J)j
zI7h~+#O>N?R*<G!DNx)(i0YQ}yI5L07dGs63KJ3=FKglK>+Zd8kG!Z<jhzAkHQr3Y
zQ^vYhw|RJ9rVwtQ&aJP}%eMySuV;qcNU*$y%~s>N{1E=FDJ{fkC*j593D5gUi(n!?
z&d~I@MGilv2N}~c?TrdGt73avsfkiGQd8|aN$~srK;rb#wZvNdv~>a-zt?8!_tBkk
zoD!-8>Hd?~DV^k03XR2fxXs&@UYkFWOhOk<BTQ+_K^3^6{>sghtx9G3WGl>t>iFiA
zx}e{&CGzZSH8!=OZLcV$0X-?$K#Ry%n0Fbfz=v_;(j1&dN)EbR0;m~Anwp<4<P{wD
zL%1+j9<x(xvC$)5g=<4H_@&F76gU54A9#TF=?^cDGKT7UZ%ZfJ14^ee7hK`NeYZO@
zg|&WvqA_nwp$6$*HXe@0`VvUQi9xg6pl6TSN5n~5pe|qmod3TuEQ+z>Dn$GEB<O0O
zz8of!pP`n<xP)@T=P(@EcEVAOtwKT`-7~mfy95Plf*#X$e(w}Yq;#u4I-LgWDpapt
z&ga^$3?6nOFGg39CV1;s`Q^WldUl#sqsnFU_9v{Uq+2N=qH@czfpo@!UY73Ei59k|
ze!b6N%gm9P>6>qG&rr>hV9;(vbp(*A!hjMU!uUS#_PMX996qBxg1oZHxyy7<)8(Re
zxkb0`u-&Q7IeA}mf311@T!ZMP7l8067N#0yYb2a(nW>oqQ_Ed2X&&W=(bq%)4ANOG
zPp6DEOf4OwAT{njr+baN&j24NZK6fJD6(nnDzGY2w<%Ww!$pRt;+0`;%a|xTu={-H
zy+jR)v%wnF5%RDHJGdLO3REtGG<QMDpou^f@A0~8?nH{r^^p|SAVNQWxw)YSXjHR0
z_cOBuRIxO2eO@ZjF|rXef<WcGc6Ss=1{^`6|5zgV=@^b*KlY&WaO3J2_l06zwC;ka
z!*K5jMlZTY$zr5ks&J$Ad+R~mp7ceWOCS7JtdoDmorCIJi|e_ou&Y;jCHRfM$iQDm
z;5jW3iD}N;8K{xHIsTEDd^i}~3>IyX@^fkDm2}}Zq`hi4P2FEh+iE_n-nyy`%fYne
zBNKGobkO2w$q>s$NRq<*JO&YCAC|rOyg6*j7NfS9Wu2zEkvTMC--pYju8sYD&>tcq
z=pG<_I3UB&4qCJZ7s|J~lxD?QLNf~uY9Kk#n^}KlfB3$3^w?(ZfltXJ=&~YUmRHrG
zEdM*@T1C?FJ%z7xC(3=jS`g1*DMfF}FTLaY4sG3TRnC)A9V5lHf$zIUriG=K%3rVb
z-|gH1h&1&Su7q=anO#U>--4wCYLzO!(q4-@O&wtDQ%Lf!Gl&R8gVNg`8J{^}qMyR{
zF-fu!lruLM+%3!S8fUI&gvbD$+Kiu_^3V0N{zhgo)n;iDYp-DjExQ>)N(cmufqH`3
zoZ`NC0Qc0gTFo?mzr+dOnUuX*Ss8OCrai~*bg?E&fBO4g`k0k}693m(yhhz>x<l=?
zwp02dkkhj35q{d<n6R|Gw&dvjVM!y0cPeK6F?doyy)&4WP!UP4D<wKJem)@5L*U4%
z^JY2{FFj>iE1CoCtYV%uPe}WMI6*6^7S*L@yq**q@aiHYc+U#}pZ7wwrcDY+=k?I7
zR;(ma`gNgl>oiX^`6dwXbPB6sNYw1%=D7J_4HsMmi_!BsKH17@fDBzM0|%Z^AE3OM
z>t}qQO$<#cj2WqrmX^@ObqpTFo+&_Orl9#&!@2}!1Hk;5rESA)d`>G>WtouIXkCR(
zFf(m!3@tV#aQ;{+XRVv#*Ck&1#oR_&^iphqAqCR0Q|ApvT(>7dVUgAt{B;lN<~^j6
zK(Pegkg08(N5|OtA!~Duhjj{OzQ_zNd%hi7f+)M=fqEkLlgpdw{lvdFK5hRWaYpR<
z4WdI3lZ)PieZ(TmTs<T<Wm#wFS=rM4t9BnAU;OU%7WRA}nL8|9<fb)b+KexP-No{?
zKhw!lkLu7m(wA}K`Jdu7fN?khdWN8Y6qq~BSAY`s-{=1)qK=g8e{}Z}73oxrQ9T^J
zVlkUq@v&?egisd@OkfVQ#-aFm<vHf_D@Q60OD&xRCDs5Y(GiA@+L9`z1+0B+ZUd9@
zk6QLDjI@~i8*AMi`^L*w)W~o|pSgOiKJkrh%Rse^&%%Dsxt&H)6Q2E&D1g-wABC`;
zK1Wqo&}JYtim;u=x%sq!u*~KjFj#tFWMu>g1-zQpzUv?OAI=Hgjjo2H4z{>^<%O;L
z=GW21Z!z2AgSqYh$KPbtszi-w#AbsSGd7(SVRstp)`0O+{CTfZ0hq(C?8_LK`*z<c
zlOAb|v-1{p3h<Zt_og4k7B(#SD>;6ZwHTpfnyvd^`5)08P!C^$DWf26PAI}!h&#Ct
zn^6%_;aK$?s(iX2#XmQGneWwC!UD5|fWlOVsTP=cDVUh|Nm0Z|uZuUcZTX&>+~e5V
zt9P*%v30FG*e8L;GUmS&esk~6c^dT@PJRI2sTb?=m0wuybW@ieY4U2}wBhY%Clhyp
zZI=1QM8rv4TuY;n=F_>&sBF8^3d<RhV)a(r5&ehzla@t>0l&q6Yhi3Z_`)k@rF8>M
z?i{2efiI<JcliQ^=TsJ1d`qXz%`#?1YoLyj*SggbE_ZTXDC9CR5Rm8BPv0=B(Qa=i
z=pd_i8sd^D8yGBxIhEeK<H@VQ$jszw2xwWJ`s#Sf;UKXkQW3^d@XVlg?Tp}6J?q(b
z>E(+QhxBd-FG|?&&x_8Lpu$3owq4KbqU%PQEsc@#JJ@uw^&3{Y%(OP+OYKs=Kpi|o
zVhp`=t1rTFj>s$eH%81*#>KY&!S!T)x50)t#DmGpeo5XbkOW;~ZtuJJ*Gs{x%|E|)
zw*%l8Nxh<H$sxoPF7#%LuV#;VdF4ND(|ScL{h1lZ8mKreq>is#R2H=|*Ou(Q-L&jC
zVQp*s7-%(^#ZYZ-c5y`{fg6}k4Vt$I9P@xk!^Y@zCB!Z~%1Zpcw-;YEoled^=k!+I
zZRh<n$`nDTDAB-arHo>ZsGmEM04LA7X9HTc_oV;fi)AG%=^yw{-u9cMPvD%`3w)6!
z9+V5vYD_)?`s5H4eUg%AMEz&8{pzh^V!^OxY2Sbr7K6+tg(1Fzb((|w`)@i#ap#U%
zC*M5Q_lKP(Y_|1DPw3-Yr>W+_YuWw*g9ozn@13r_85++^w)Ejnb(3H6iyvLTD_=<)
zsngg;u&kQ;)K)HX<3jS-84=UdlumsVF1PAsW*8ay9ljNWdsWg^509}7>dLMO$z&0=
zCPK8EXrQ{fkmZ8ug`}|c^00!Re(sish)$$WS3T0p2Nvq#$ro5vaBxY@;!T-175W$O
zJvsdk`#kP3oGTmr+f^~vlOhzBs4>3q^5Iy(DaGw#g`Pd8!`OrT$<e(PyI5_JUGC~u
zsnfCw4oy&<O1uZyo5w))MfC%+EDwwN=(M!>ZPzoZAZDyueU?Y(p?6;2d>A9Hmz>HE
z#Md=<X*9(hw9WL0jJ&^ZtxP(n-0p!z$G4R;fUWSzzvJ}OD$s-3?iSE(5c@B;MD*zP
z%xOIohQSO<9+ny~A>o07FH9ccxqNkLMELoQ??ba%1u3{uX+^gCl*cdkSr`A-HyqRg
zv4Oq~3e=g~{m)si9ws?-(Zrr3q-An!e-4ko)4Y9^Y%1&%o3AQwCw{|8(o;^Vg$vGS
zk{I@b98y?t(X-M>y<1snEcJ^ntMbdB&%;~A?3Et?onry(f8vu??#aa0rOyH%gk#?<
z4_F+HJ<LUwG34%UOjK-)ddh5?7)~rX8o<OqU0GfqlyY_2Ue8?DBLkdabf5B?_Q^wC
zIcI)6k`{qUD(q|(S7X<BL&G@HyI+KIcmqUuv>0cyl)N0yNqbhVb?T>UERkp@Pp3Il
z!98>=p%)`HK#pV)H71H$lg>WR$PM{Jx@nCQrW6@wT*uY2_{yZe{xcw02xYkYH*6?&
z%hya9z3hY3_|ec*SuSimdfnN(-*wN!^0dH)DCUKg*=%;DYDOCMD+gm-`M-5A_P;6G
z@~T`M$k8R>oEFR}?bwB;gIAqxUpKc?3i}%uv=g~+323Xe?VCi{&RlCfDlg4bSRwxA
zQjVvs$mP&9L${x&OI_=n$yvg?=3>FF>cXqy?Qj{*4R3}4OnX5ew(A?z7^`>6J1e?u
zgCC|)z*9<2?YkgpATZ5pN02Y`lE@qc@ya#x4s$m@x>jb0Y0hWT66uF(u`6w5hDl%9
zmb6|>my`i)BJVJ|=|w2^Z>Tee$hex{rR-sATY9p>AZ4Q4gq#2374k!%d;oMwaE2*N
zZazNdPM_KWsim<HL8zjtH$jKh!?K$KPYY!97UP+yQHNjkq<M@axg;u~JX1S+c3P8W
z9z$x3pN2z$by%!cu6C1P=)T(_ZCRWF<bX-?O}iSfAk1>rECF<o-MgbjKPUB4JGXC%
zuB46g22AHhJ(&YAJT;JCzb6J(&3~|93Q5|3oVf^|{XZ|Cb=XEwbrT5K>v))Gks+hR
zK>+dQ`&R~8Gr4C$GDLQz>iGtfd=PmSh+FQV`m}A^IVVOfOCSK4xBYtn2b4yU1dcz8
z(gnI}xVDVHTDCmfne1UqS=vBkf&SCt_0M$#5L2kEatS#72R;MO`bn7wXiClAv6Vs5
zWpfF=gPV>+(+`&2LAL;-F*!gbS@4CvbXW;y2Q)uUOXb1;SzWFKQ}AtcoO<H+8~WlD
zm{X^XjNAO1Fwz1}#nmJoTKE6GwA(zxN~Y+4qILiC<311~u)ePDOJGi_L#a+VSLlFY
zmD#K7TJ+Lc8&Lr_F!}!hZ9{5A3Y)Sn1MSbqxxE;*d1~#4+R#yYN2B4{3_!g9G@J~)
zXu2J=Ui0{y>YWq7<g+iQS%^X9X*B<AU_wYKr&flWoPyvTq3M5}On|I`z)lWGIyU}B
zArvrUdz<mCIjFLMyy)V8gv8Y_Lxf;TYDsp<zqla}0C}_8aoh(IQOO(+{J@LR7Oa4F
zBOuj|24-qzuWmnuxo7!4)JwNFtf3DJ$i={|b`p<WKqAo;b#Vqf2^*%^ozEUa?ZR35
zMf$2}c)f+gWQRnp2k-=w>3QtD!j^gW|1)0qzwug(fFWRPxTX{2R?`dRx7nMkNc5T^
zms6GJ(gSJkhG>1C#<V$m<u&`Ji0s%CU6c7X0fzVc^+3dKi<y{sxl0_Jp*h^jYPhl5
z%)J{JC^s(@N!PE>A>StiiaxVnqVS9mR~X{9={Q9JwkXcOfHh497|@vseG3}P>D?-x
zmoGD7-t~fW!N<y!02xh4>>Gq@!=}<khDmFn&#7&tJ%h$>U0m9V$M$0N&QAtZabm$8
z659;geI-DxV_{<CuPxeMfhq}U?%k^^7m@*$O7KU+d{%&aP&(fKn@XW0J@-wRdZY%q
zwot8?i<<1|A8lmTmEG*s%E0;UA(?<MJI>J3(A$-dOsS=dLwAec92p9W6O60-t_SA*
z&wpDxb=Hx#*B%WiM1$4Jdn5u9&k&JG>T}A*UTRN|hSO=^DwEvRO)Zf3T{r!Q`2~Lb
zJCHh_b#BmkZN{E7WEue7eje;F-MR`RW@FpD>iJy!>Rw+AX@sa|Y{aaB`+Dplf^MtB
zfy!2j3W}uM-_%Ji_qzfht<IZo5_MNPDVaO6TK}Mi@YMf=UHUZ5(gMrk*ZARvUkSII
zil<5p>+8v<*g~>E3o!3IeDzk7k4atOy+Ti{cHMNFGcbSGtF0C)Br0yj#6f_}iPAL7
zi8Wmezrd8^VZI27sAdzPtO88x*1KcD*WTB)`T0*T9}a670(YAT3LE)e2G*&00Jl$E
zAm;qMc9t;&YYErogrEBVP4c_DdTAVb)|zy@dQ6dK)G3PpA_1ZDf7}EKzW?h3n0cLV
zP`JhmbT8xsp|nF-An^L~a&x~yckb&X8G+ENvw-rYcHpN^k%0VE^R;2*@cd4k(3%t8
z+xcH}I^Z2T^dFa7K7Rymt-sJn<Nb{kle&MK9EhrbSI+_e;v*1tH0<QVyJ4_RynA~A
zPIR$-Tjmbngc=S=iry28=nST!ssRE?_uwI~;V>UC;wT;fpd}Ufc|2bM!F%xkw}SBh
zO&3K+ln7n{(DFi-h1Kfecn{?Dr7_CK4ID7>&BuN=HE(SZ5mU}AE`*<ry7bQSwj3W6
zi=T?C7vEin0%nA}ms8=gBVK0)6Q*HxM%q{CF@$htflCbg#{l5csO`f4i?SJ}@m6Fr
zm;dWE5x_0kLfcXd;$HX82Ku}#18)ZA;39Al#pzj8GsD=(D^|F#Wp`L06~hQFK+txr
z#3XVF@5eUPwpC)`V2z(M1)8_7hw;*XJc`=ttxIQ-S1w+CaIpowp&OsVl>!%Ted;gx
zCpk7C+3{_|qU;vE=7GjmO{aeSO1%fhS(n>3OeO4`U*4Oq>q%7lAAfPE6D`Gm*6vYz
zD&QpPUZ{sTaf$I|8f&3yL4#+t|1}P!ECI`J$eUAduNhNqhwCmRld_S<IR#Qd+YMm-
z4lXKUoN7*z{>c`OYri4cZJ4I&)oyT9<{=M%0kGj6nS}`nI=;{7Dc{i220c|(zM1!!
zpU`&~f8Bfw#)d-6fT8c}_N2fdRS{MceSEvIkbrbZZL#=gEfnmEu-OKs(+8hk{>Gn`
zw7opaz{})xQF9hss%x5XdWkt{nX<X|4k&<U>hl}MtCl)T7Ry{`PE^z)*HEx|S~aQb
zW%zi@C8IlZr%-SgfgZqA!xyQZPq$S_w94$g-*qvp8SZHDzof`|VEkyAvKArnY#Fg5
z?vUq8u0j5%Eo>@kmQ3~v?O<vuO#%2QyJ@u_ata*0!0A)g&Yv8YxRb-%y;ZO0+N@RO
zcK?*4Aju=z^X8J|;voB3hjBtyCKR@|UFbvB#6fq*we_w_-)tHaB8?T#YO33cT`NEE
zgIA6THtY$AO=X@&fA$b{Si1S?7zx;xYQ6%_XHinliFZzZ^?W9J#GB6EW_m?)&8Npw
zN5+1a+LWrE+Bd5+HvhiTB^fNy_?^^MpLf>r=GJF}UCm8}>CJ=wX?2DY_H7YPTIFne
zlGCwE55Vvlq>76VsuM2XOfy}N?cwk_$8F$8rW=6T?#W}35T{#C1yjF+r#26M@Fyp!
znwuJU8En2RUzl|g#GT$cfxaJvIfBI~+)8mtVO6uI92o4-O9B1F*X?sv)e@OOJyZf4
zH(cst+ynX?R31xXvu<`H)69#OO;};CAORz_D7x9}yxlmlvv0#$SG~6K2(Q3&1R_>2
zAwWlVvJTIwHH<(_;ejUJPWv;df?cEXZK*$kg*NPMp05K;N^##tAY-m*&|h2wTD39;
zZRr`CRKB@BzB>tWffYwkofhopK|pS{e^F!NekYvCceQU2n56-sv1)b;eiVkpH+%Rf
zx6iEzQFPX)WrR5?l2B{DO>&^C2fLj1t>FS{EFOFB8`giEC?NE`#&llVUP)+<rsN$}
z1S+fM7p#?{2fOE*vI5LaA`8|s!qz{Vlqjd7Tj?L@!1mf6gX@<Jx#qX7I%O}e8~B#k
zL5N9rlgWm?;}&+ST8HlSJPDI><MggJEmByjM?KGv4F2R8PQr-j375(^_ZSU=rK`mJ
z3-7tG7Mo498_I^fq;JV@SM~zoem#C&;Fg%AjLYcNTrnZ{9&b|2w#JGBL5ul;XN>pI
ztT(jK%$`9TXuH)glh&Y}+wvYiOFt|0`wQH-@;wRIyZ>uhr*-arSqZ(AXquP_=VPVp
zgO}fY|A5wC*$wicxSf75pMKwJ#)tcx#5-gZ7$m@~^FHuWgg_kLO%aukE0$!Z2X(po
zb2h%evEf~J@S>8I{(H~}n+Wt<(1?4R=8II-Qc?qj_^u@?o5BxpnGU{E90arZ%4Jhz
zRwB!LEd}ONs?nG^qFF+oj<zmU7#Rxo0>JwQfF-MDmG(0V=6*&y6i%Vdz;q{RdCfxz
zAVk2g|MvNm4{AMxc_0X7gGRM#g`^)WMN!Qaq$L-Jf1>)8-#4wv0EB^4RgPk`&6zs(
z_;whSqLQvC!+@Lc&*Uc&!t`RFAcyj0tz1~WjeYAx-fIc3?YQeXgW<Kr`ouKa-|5h|
zFn2_N&NyHM89*|QvSE;zJ1HRj0<`T3xc!r&?d2=<kLO+%GYvX?(8i_skZ|C1J;`rp
z*r!spX){lP*<Ea5`jZ<3Hmx7CwyydQPdp0ijmNR^4)+bpKTB+OBM^NFRKJItj=oxy
zofLV)XlzJsYm$#R3{PpX)?vN<gd9L?hb<>PtVHlxnS4)Mj+}a$4>0{;D#t=gS{ez_
z8I!ZKZN_|P=2hC&9kke_%CO`!$wS<Q$2(NX4QsC9FZr-dm_f65%Leo?@j@^kqVD8t
zrqy#?u%;;DGcK5Csi;hzSHK8>>(t!;VSresdxguo3)9f@2~<|vlG*R%ca3F2EPYf@
zB;9*MBM-mEOi214!;!u{mG3_5lh{N20#!43^5;rnFiuEAsuqS*`T+car^l5IHmH+-
zr3kZvB&)KRlEi7Iq~_I2LnPhay|RT8=+8H4NL*hNWkpRv8yIL+MP8xQ;4=YN5<8N%
zCCo}CP6qAE_E|V)6Co=<&J~qD<7Py${+GJpod6ElX8U!TPNK1CiF*2o;j+uL+%9vX
zS_4wBFs5(p7zpgv=`n9JEGJzGO|CBXvA;3|ci*TELguHk#&={22=s|`2ohMOX9)-r
zl>d<uGc%n#8+?R)iqOYt4vpx_9r_0|&YT(q;y4eYUqB$vP0@%eXlVa{(8HubA~^xG
z^#1``9m2^(A^cat7LICZOP)vf46TaN+<#mtAZyNk0N*1q^sB&I|Lceq5SjP~*Z}wI
zrce=&Z;G+s3q7R=>tJy4VwvZrP_p(Cbxk4y$Ju|s#r3aG;{j0HGK2q1rKo{}@!v=7
zzm1&#orC|b10W^;?_T)-{Tvuzg#fwtzmM|2OcVJ0w}1V=bMW7FVD{g=@Lw48Ul;@g
zg8vub@We^6m(h$Vnb@etCF9_;(jrY`%YE*hhOx`Jfz;og2J9C`?>7Xmv8&5evTM^@
zTkP=I;mm3qZH#RLQ<ec);{0K_5q^~&MWUkHjW}?Zw6&gkafx*yp8n7ns<3EhG48T*
zhrc32t0B{7#CLylzo1R!iq)|#e;XyV@OIZRFF=yD&GRNsh;pr6BHBbhb!u#V*?(}6
z;f%xX(oaU6)u|~}X~uMCgEPSSfjyXE?<IaqQlxk9ICV6C$sN-_B#3^4>qi{$g^ETO
zfE76UKl>f(k||gCHz;^RocQPiD=5G#y~~54?Vb_*XP-XK&qnc^v1$TMtwtl3!8p$c
zBl=4FM5an>XCi4v&HHts!lLd?j(N0*<l!))!u(xn0cpH`6h=D~hsBOXeO=nK75%{<
zUtqm<1#L~Vx0mAPo&9)q)p~2Z_VWPZ_r_mv?W4`XQ(Ih0w5{Y18HTa!!ZjCr`{=2u
zsY~1WGX2>PhIRFbh~Mv&AbxdqFzbBjC+V5PLnhx7{VxU}+}vfnvw3+iTGfawd)1QK
z@w%NuA$wnI5bASUNKNtf3{lc=Eucv#eM&vU@IAeQS$?<nrk3gKxscn(=&EEP-TrR-
zrjx5I#=jB5emBzQ9op)5lwXXG;MOxE6we};W$yP~T_{CVvs2;pu2$aT_f<ij9+Kd5
zbN#q>{V}|P@5AZ$m8KTIrmaH#k8DdU#h@tc`5M^ATn6yh6UnoW^jeb6N`kl>%g<@m
zPJc*=!?Z4KoP8c!Am;Y^HOwnbZCib9C%T=OHriYJNUTMeoL#gjLmuO_7WgU5#qWEA
zr|d9~2`)~c@j9L%jm;X+J=6$S*~eHptoM!WeWr+O{Wuf;jD5X*NHlvWyllDed1c18
zRfd5=;h8KOm9-(fn9X`F<MHn?CDB=P#3`y(FbcZ4<T=fB+^K4;6%}2+3N;b3Kk^#b
zvlV<H@N}4aV;X-TKGx2`iZ?O5EW_YuaU=vyC8hY~#xk7E(;8RI%Lg~Vy!_BmKT7j1
z`?Zpi5^hpyzS1;=#3T5%y(`7Rt3L<u^u#jU$X??mqUo?TRjk&<(^f|oe`zza;D_+=
z(H&XvatY!=`J-{B*gHuhCePgDiEn9rj&E(;u78<R7Wif2n}OiH%OSQ%e1(U?gRlJ+
z^5X28b%jQ8(I0}a-xY=1XiLwniX@4~Y7E0=+soAV6saZtDpZpSX36A5c)umDKKf4h
zvnw+s-wJUM{OSu~wXs$Q*Qq(s(77Jw6A%7!tIOo&y#&H)GJr$%rHOg4P5x`T(@s<=
zNIQYf>eEt3kal<%kDfJ4smg<@oiC<}j|a0!^a)8d^E;kW(#5fLn~}fa*N<?SVARf)
zc$%ou#L4!mI{btU`W><IEJw}Jl5#ctCi~aA7=iDNy#$tz+^FCjf!Ky$+vjhq=zET6
zda8m5OCK2r64J*`5B#72pA1GE_oDbMSO2_u&M{E>Oq*Cofv{h9C#+nbf=Hen(H|=D
z{Z)<&WAVE6TjQ>8B+*h3`HIeouL^$W(mg*%B7PX987R_Id*=v`y)CbcS6U0pxflQC
zcmL0l&;AZHw*(WzcV52Dr(FwH>N)&2D)yuk`BwFLPf^C6T&g1bueeX~nG<W%L&QW0
z&mwb!1fwsh6h3+k1x@-fpR?AtU@L}@@_~U}u`e{jC2Nwx&uZ<?KKf%Kz09|NsMD0)
zyZbc5;7sKFIVf)Ko#?1l$nD&Tf_T&C9J@!Xb}VxWcFC5{hb?%T>71e*gRn`8LFZVd
zJJj?<tce+W->CBi6t&Cr9BD1gxll7Eu6?g3?vuWI+7?4t{5*@Wf=AeTwd8($O=d``
z>ua5*!~y4D2U<)016&Fn$BLB1f11Qdb;L#P(4=Xwq^vWQ3Z!NW8GI#s-AEElY|&T3
zqc<6zQA!omGA=UY%O{urnA0fcO(UiH+vB_6p3L@_kijxp;5RHj7WXthynGg`z2Pdz
zsV?_8<@Ljdq4YtOdc8OhG26SZItvEQ2_A)?f8`7Kt^kr!QDRQKz=JEbMv%q_<EOHg
zcdr$;+C!**9rc!7$Yq6pw&%%CWah=*B|Eb${r2UTsDoY8*b}FXw=Y?r1bA^|3cr+g
z&r*H&)x|>YT{37JtC_7yVr0`lrtp^7zyp-ZVVCH_Xb(G-`(9^SqY_bf>7Z8gQ=n(v
zhXDJ5CFGK$D~t~T$_5|(X##5?F61+cn%I?zFTcV@@O?j@(8d(XC_bz18K-?!+C7yM
zd$dZVyLLB0XHX?1lyt|+{`KT0r$kKFEYG*SwFDnIiwqVV^)|H%bwk(VRO^NsouJVo
z#SB}~-PtfJStg-CT9&aet5=Rz(`D~pYYq6q=r5ki2|xH_xgQ)*c1MmaSN*LI<y`DH
zf{#jc6AIs}#(qzHf8wrs?E;q6c_ZgK8uf+2>cKfa`<2=&TJjrINm?wGMGvOxJoU!l
zpC7O6487?-p0#sKm+eVeFO5-r$w>HN@vog!LA9mGnW*c#$L%e&E;4u$8lH&j-O8g-
zNZ-zkXkXk{>9!i!+Kj0im1OC?oWZqEvlgEx9YR91*lTBbzTzi^Xvu=k9q9=#5l^zB
zACldnynA~EgIh&itep9>t{;1^u!{60g}<S$74-V!J}YJ(HJAIms8@F9{ZqyP{_Ysp
zHKZfrQ=c4}@i+gFpX1}*rKD=&x6R1ze52dyIalG((Gqz)uIyRJ^9=F5b)Z0k(YYe@
z(G9(#3MbL@#}!`r2Tg5>63HV^;s-)@(>U8InqpEHoW+dz9!cfRo!SgBiV<r@z_Ji=
zcE{m6B6KO`G~ZRyzs7{pxHou^Fds&M565-84$rb1=0A^YhzjdY=U&^1_%m027za)4
z7lX;3E*8?usoXg;qL8IyBY7etttkIgT!~L;AkyfTIqk>P+wr_#<!HmTxXgPCSzOcp
zXl9FYq$hO#WEO2Pg5MtYm9(4azO1)w{0)6yZyhCfK_*s&S<R5jIkb8AWVnm?ip=8p
z{+o{hiA<&GCccInWUO{ke=^?mPsKlDTDr<ho6jSuK8PVAY_S@C=Z_&Z1%2q-F;g;P
zDt}@6ZAYa9#rE?qDYgt8&)d}Y6;qs&@D90>yAL}4o2{?k9m}TM1u{>0>?y$>LRplo
z#oUzl?Hz+M--(PH)g-8O=YHL0dAy+tc)s_`ulJqbn#%604neGSzHlrIP-&c==C?({
zeu_{xuY!vkLAGKReGXQIC2|h6qk}er8*wIOlP~hE_&xhcgv{>m(hb~dA5-;RDj(Qo
z%$TWm2wnQ!N04&+*jamQG+Dd9m6r8w<)%!+t?xGz!sB0ZK|)>?#V6Gk9I;8is(*B0
zqpflKMNfoy39B@b3iGq+_|(Al4{X5$<?piY-fE_`{_&dlfuj0=r@%LE^mod#2>JXv
zQMw$Kz_%Se@d?W@$K#&a-aAAB=RZCrz(t7ky}yw9eiaWi7Zw}tN(u%AFIidh8QvoX
z0UnioA_enSi(7vb@ypi6V2bXal%})LHNA!l-aW7n&l5FE7KawK#QwLz<PS+_sa~bi
zUN#07epceuv$ildZ26>3*)g0Yz?7U3Q1ShfphIl<yYvLq!1w$YS^~^6!7+FEX)=*7
zqaVM9e;VC&7yk6H`jfV*RPYi-Zl}`UHHDb@5RvA2fr`bxPWvaRohq+RdLHgRS7+SC
zICaJ)(X+f&)>`IK`wLfLd%FqO*+~!I)n_TkW~xgOLpJ!6Wxram8TfNqmp(3i{HRu!
z=k>)9iNm0|l;2_S-Sf*X=i>`ov$^=D*Ol^LPfWdvNQgua<h&qZL;I0dI8<jIPOE3d
zE&ewLDr`pmmtS)3fO|a)Vm6{~$vNc~^OJVFwSZh=nKUcRT+L{vepF_Z|H)V&y-Zn<
zHfV2)Of}bDF-E`;sR+*%*!2zZIsaC~{4g2f&o{Ag4Y52j%ih6bd%KCH-|LWaZ45uU
z{MHvedlu%JXvv?7O*(v=Z(Fs3rcL69uJza?H8XhXK7zScPK<0n{3&{nPng%8L~d&k
z^X_qSQH2Gvfr^c7{E#zfGMc~bsT(#}$D7!qu;rvn_tOSDdW42{F5UdJ(d@|gcSNs8
zB(+QeVcWtJZ&XC?O>NjRRdyo1%2~V{;_bUC39YxU-J9Atm-RE9^VFf~e|F{-&K4gQ
zyF9IId9S-EsXlx!suRaX*6#-XYFgM^&Z|HIED!}|z6?s{V7dSqqJ)x3s(W4ZCtWmu
zE_|Ov8Mm@6pJ>?U_W#}dPE+;~|Avc~>x;gT%~Mic%h;P{8bhzllfIPf=}4GrA9<I{
z->Cki!$|qkS4C_vu5sS7lWX_vPAi*Uep?)W<?|y#9Ui@Wk^83uggX9I1P?<VXEme&
zI7OXqCm^iu3E}HR7Q;yYS}x9;AGhC}QmUm`>?<3DSWy1`b*}X3vvJgOmF(N((wrK1
zuSj%Ycf#8k<v;ev(LdCdw*T@W^zB|K$(<G5YuL|vh;aIf=V=aG``dHL$x)i;t8z0z
z^1<Y2GS-2}g+`D5S9zOl#KtZnuNTWl8@5&thhCobhuH0Ky>_z|wKk5`*DMvV?VX>2
z?S9mf)E#vjHe3r0EeSO+`oK%71F?!BnWOd`U~TtjTr$D{hlbH(x15%U_~YlcM~zdL
z;`(B6?=ifXz8H2!(}Pyk#b4yf3+>wu1I|6(H`1S2X|~T5NHs@%(B}Q1`K8Q3<9zyu
zD+|s0OwO>64l7nRl$jZ>q6_RY;4mzRrl5;M>pJk8_EsKYgbL{A$Dh`vORBdVX=xtv
z&gnIla6CU(-*f--gS@q_Y8%(_RA`3t?X_#PM=^EZDx9mO&J8N(T{7X~f5q)lL6gJ%
zR%>|&Yki~CLT9Tcf75K^oKu7LkC)ZAce5vr&jZiwQ{Z-@lZACfW#Zn93|UawE%8HL
z|G%15GfrJ)gqa;o^FH_emS&?qsY0HB<C~;K1kV{cPWms`v%Y-(S!ml-)=IxN2l?sd
zK4=sq%)*k$vFgZHJ4BLi`?K2YIXwy2{dM9q&R98XI>Q*_Rbsne_BEU|YgL4^aEDo8
z#<yCr;k!EAk4Rk34dkf&;-cHVNki1MJL{~g|2{-F3YM<kub{a(^-TVWbnuM^!+b=&
z4<qfg&x2X%;i_gv0rl<U7^d8}ya-r$5d}&!8}3NAHBiuGe=XNoM%UFY!NbeuY<(+P
z{&lAV`1p+IATqHo%~#@^>!16M(Hv$62VcT7?T7snW|LEIscy@?U`K?2xmC|W&z6hL
zwtY&EG7y1I>$gk4Q_z=vnc~}N=F7)AKRC<aysZ5o>+8q&f8J7+O8J!_bG!0XaMvi(
zaj3)9kFtc<XG@@<vruSsZ{hKto-Hv^9K&7@o2n$2(eSfV%-!Z^GGu4*zyT!+b~R@Q
z$Z$%;rb3vHAd8@;fK`QsqQ4+VA-}@Y_mt)(zaDWN=Uvbg*A<xYVj%IO-)CN>8InpL
z|9Yy;qh_6W^*czXM$;3xektHLFV0+u=vls@D)fdI(fdDRTst6g;4UOdEyYPxg|@2?
zHL2bjVd;ceO)B;+i&g&pH`7mUSC9y%2j-MeNxrI&6nwb8{^sJgx(*lg_FmRtc%1`=
zWWw3<@@Yp0pFCaex1Ux6)-TK(J<pzck!FkuOpLyZOp+9lyY;i@Me%F1ccd=-ymgBv
z6u$OBJ0}k=q=h@Posl-L4NTZi1|kImrl{VVN>HE>M(o$ei`VEoR&)9NOT|G0-w63}
zwXQr3x6#`@DPqH6y9Lv$1KOf9LJa0xizI>8Vn$)4$LFhqN0q_JKdVb`9&M;8j?49?
zgeM&wSLxsUt?2SAyw_eJ<(Fii#_eFa!dy~KTg0c_T%`@NsHi=O^>vV}L9gN~^r`Qw
z`qPA}{K?KV`H~E+Cz0he?5XY&6gS(9#J_*OpH;ce;AP->hl>Iv>*`uP6z8K5!@>aw
zAIX?i=}o?S<VHe*lLz2&-lI4d1=Tjp1K;fnO<DIDIfom?PhKe1u?m`KADUTdbgA8T
zeZOy<p(o19#Rh`3fX!J<(&0A)ZeetI-aZ{WUKvsw8sn2Ec6^lcDmDBLbXAlrcZnha
zNgk^mwnHal)#U$sE8^j=DCaEZPWZ4(PV@9DRBVyjcg12;c8^xBUzHf{UzHbq4^fi`
zi2~oTn;#_o;ME@n_Ev}CIw+OrK|`00Wf$wz&r+o_u~l|2{g#%<6q?x_8N~7#6CRB`
zz{;7m`#cSy1-m^@Q~B{_ni?ndG&1|%>2VMlr2#%Rkm|IBBjj_hFI_NVaCG1?9o4C@
zh0d^w6>Rd=X0lfz_eF%R_BK-8Z)DF=PTfn|U!K%xif2|ndVMTwRNMbJzT4`ZRKA8L
z;TGw<dYGG)rs)gy(Dy%nhLpgU8F;>Hu_xp{!}6AXe=Z{+8s>H+=_2UwYCpuyo#^qv
zn?uQP<V6`G?K5%4+3$Ot2!9732I6Nyg0iDwioAV-uxo<eCdusFCegzh3XRl@B0NTb
z@bwW&?`42@fHTTRZGGppiXRi%4gMc!$1kVyls11_?6qHi{HwM+_Z6mV1YmIvtC1C!
zFC}$blSqGd%!((~fiH#6e)L@o`rSo=uxndu9_C}4PmJuESZoMQ1F1OEaFq^-<{IkL
zbC*H+$&j6?fcJNm%uiyb{?z$|$fn&7EE>x<KwJhyy30);p_1#^q%RMG5tvctK`sB-
zE0pN{P#qe2S~LOJ=!H3N$8J;Yu}QD+#Ln~8qn(xgY;ju!e*cVnx0^HWHecNZECY$t
z)gk>oOGC$YRU2J2CoGaH@v`)?Y{p@%>a!&RYamdf{!^EI(&&qvU)iSF>a&B+J}S@j
zkNGJ}AINTnBn9XvwtO=Yyicso)|}g>c-L$;0%sfaRurROqu-btdx~wh(s|C&#Zq3S
zKI5Cwg8NP;9QxLm=4U+QPq^`wqXOF$Nf#Iwz0;jX68y5Iq%rpL?%M#iyMBoS_g4oP
zMY6JIdQfy4$D<Tsm8&nSCR_*qUf`+a#RuUW0Vleg@0^8?N8d$#P@o=)PT31)NvjZ0
zmwj}Tnts8aHf+gkrJL6bW*C<g7jwGz-fH9TV@dEM{R{EmPoM@iaH@hk2Ui1&&$yq(
zDRaJN<yMqsMYN=^YP*O^{r&sQRG3h6+)$tuXZ%C5o%W6r|FD(G4F}Mjm|N+Ly5^<(
z?-*<O<*f@TD_FIkx!0|}ZYHJkO`}rx7Ps#cti4ojY5MCs^StKq2#WS*$qvL7>5-hv
z;@szuQ*Wi}B0H-^^ic`*jp_2~s4`zO^ls&7<`LW=>&>%KmTR85W><bG=}1blIqUhj
zSF2xKz1J>u1p;4b(ds@%alH#`vpkc~{KHhrQ&;r6qJ!7Xr8A8f^3CR*tcRCKrZ}2x
zipez0*+p!RUDCHj`jYK;TYUFJ85xpKmv+%s#f15vUwk&Xt<kXz$8Y}0lCTzYxIEBe
zx1P?aadW*qKTeVK;v*p;xn0@Z%%Bj<+;e?}>p?NMr>j#g6b}b|#YE1x@s0`VsC`kd
zR5cEVzM<CQ61IC--6728S#VOJebD+=)n*521u`0ZH2^+zAXXD6G=JV`F6v`8fin{n
zHxm)Jcf8l_yxkFh=K1}H0BII$kla37#WD^V7{EcJb$m8tb6n{ZBw<@sLe^o_UN&6<
z3Hh`8BOMd#j7>WNJANI^dienH-o&0|<of*SpZD4#EqoN2SBvfU@4b6i_gD8vWVl-a
z3H14jknS`X`(SQ2-Fjr^6;-g#1sSm-72lh*sQ(3OK$X8MZD{!%d}#5gXgP-BreoBA
zIZSEJA|@?zyB3I;C7$F)=CekqIy8=-jhfQglAVBTuR^RzjRX}F&!zy9slvqZXh0QU
zOL!qVFikdTgO3C#!Y<ha>}ej4<L%Kmho<B;V}6mwkwbl;q%yTenNr?{fK8zs{KcpJ
zM%1*^w0HC}(t0{^=ZST)X{^DerGwqmjX8}6k>~D#)8|K!i=6stUT8)j+O=dBi&gsQ
zX{8q=vw`OC=`1|9W#Mqe5^)@c683On>w#VP)dPRR2QR!Sa|Q=a6{pVJ-Hwu->yg#f
zCh{F33l=U8ly8I1AjU<#obT?OLNqNuAHJM|NZ3Qc>1)r#w?2O-mdzfS9jkUv57qa9
zVX5y!N`13itu<g07+QIy;(KuE8%;>LNhX~`E44AhC?&gBZ^nB$GqK-VLJLq2G2HNX
z_rlxbKn_i<C+1s`X*I&_^`o|}7fp@;Olj$`uuQ>j1=4AKYPVpns~)Sm4#6H8jz0?r
ziKNSHB%TFTm~mdzkGp1QidS{NB13RQA0vzeS)<~`%%y}NRN}K)y7Z6xEViQliOoDu
zBfW4>{kXJyRgy0$dc}?=?d*|w?2p!Itf$C$eIodzm+~YDX<5%}8fl#)t$TQPs?KPF
z-athCq0T@JOWv`{G8vtoc)TVeVqvS;*)Ihogs?GYRvDzH6iN_0wVkA}J!gZ>tgu{c
z?JZY}H|iAZdw)Bs_aDQBw_Jms_Ab19|C8jF%M3z(cK)ZX#J1Pp$B6?pza`$p*;BFd
zvNe=^NtWd7?7@rwd;%VRb{I+;2+F!{s91E?>6m}!QlYOtbR6$I^@`A6`q}G|Kdw;d
z)qFJ)xmkGDX;^UPGNIS<%Xz=_mg`}X%PJTM;)8W>qUylWh+TJkCtkSkabd5<>T51U
z`P4}f_ag$iXbsn#Bkx#E0xpkR>^x<acb~d_(#})8)eL)XrZ@w$eCA}#SUL~$&RBw-
z?{2~8|L>cawQK>V%$rG>nuvnZB4p%b!EEVY@UZcf^~j`-a;#AwGUGXa0W!{9jQOi)
zW2T`JOPudw)so5dFrEOq{tO&`9pOECyll7~yYg>A_k@-3WsieC-G*?%IMjMfINI(+
zxiNrrLl{Pb4;g9AsB4}I10SGF53U4_22U*Js!4iCqE8C%Se-I^x@b`1;TzzSnO%+I
zN%=6DjQCmS`$DLSo-pp7@>MxRpy~K)sNVH38jie-w)#4>H@2azp_Mu$JuJ2+SnRbh
zGg)h4wAMgxuBO&hg^>O@!a}X2iSBU(h=Qo5{*UqruFv?~Xj3}1k;+4~$SdZ>Pb@EX
z$12;!L)DAO;C!p`R6jdbOVdm7(^Wr3bx$>ZyZyKL$KHQnfBSx{8NUXfnDq&4Y}kk^
zr(Fqe(2G`AtL!T|Tob%Vs6wtvq}9jCR?!q|xY2^}BRXsOLxHP5uWoxcB0N(BXi6t5
z+^Xn|GtR*GzV|(R<};tc^5x4hZ{9p1U|qU&DK5C+0$g&*B_b>quqwM$)q*u9MG(it
zyBN=3a;AuD%s^TGV8RmYF5z8?JlOIeDD6&FcAyFYtGKj^_q;Gidfl7LkHN<Pu!+xF
z<s$(2tW|@~C!T4G(J9VfZLR1*euEKKCk@hLh}X8i*QZ{YxIPqB)RRAeFL!2RmdgN>
zFMzg?56(bz=P?u4pO(rLU++x(w!)glE9I1o9WrUKUGvGy`v_GTC-xjh{W0m)XFihU
zv`bghoGQ_u6MeydQt&ygCy$<p>|B*v$H1foEqBRMs-T*KTSwzJPf!UjTHe8%<_*|y
zJcb5+3xeSQGDGR0-h#sK@56{sO|p~-{n^DMK1|8)jJmxjY@@oRcFy4T9)aBVB@ObL
z(cJ>Ow-;@>C1jNH9aW>GpbwvZB6?OelOTntxQh_|sLhOcmzri}kddh!v#8e7NS_!i
zddUh)f3WUtnGhpXWpudH;SU*6nBJudxi3kG%VeYuQY`;r#sk3;JlW4%H+iLHvaT=u
z78}lN+AW(jkVMv^<&zw=f)tBVYR6fQR?M&8gLF?X_1QFLah=m*GvY_x{+044ReA(y
z1f(&54IbiU`rOFrsE5Or39mI>#F6~7GO)Xb)+Tw!YL(1M9m=j!OJgm@Z+#tBn)~)r
zzQupaY$t<L6Q3ew$;-tcgpf3U@sgi3mlO8dWAJ3>BaoRR;!x&CgF)F8-m&@`N>bdh
z%BkaiK}uz8{7PL&^}T!8>N{7iZ;w*neM)U`Q1?as)7U~QMMI(CDnB)bKg7O}>T4(%
zzEn1vGVyHT64WA#2Am#%*0sI$EhyHzamU&UeD|6;xb6JuxN7AjTzAGqT(+bPGYieA
ztvZRi+BR4?D_%eE`a(-u9x5|RP~z!8dNA=l2qTH1m+epxjk`|`v6Vs*+rDXyIHNuz
z)>bl!U->8ECgPCIWS}qiLD7CmcEIk1ABoR;?x)4A{ld&^6;7S-Eb)Xl$-kJL%6j4o
zd*N5kPQ)FXi8vhAi~gO7g{UkvWf=^s!jU9I<-S<*r;Hp?vjpa{Ua^g{5(;TpFPuu2
zB25v8fZ1lnq`A|u^~Lpg@2S_Y@4ao}!d#2sPlw537D89%aX?n$PgyV%^~Y<_+0u?l
zv!~+pi_XTz7vIMEr(VIX_qL*J>O?fv)Qd}nM*_St^0f0;;f4F3z@cq>g+R2I|MV!#
z6PNzJ{>bw}=&SI%RQFPFdbQlJ-vz6dVcmU?$zh%@_?$-tyis$?+!^@b#kcVGlP@E;
zC?Aulj4JmXp*5UQ*zu-Lx3f3KUpB1+`AvAP_nIS>5xe+tKH8RIk?edxYMs(_Bx!W?
zbfIik1?HZ$6lY&|A+GrRCvfBcd>%J__jX+S<xk^+PhN=?7p=z3rSnlzG4x%9l$|7K
zBp`)dAF|-ZP$9-&wi1g^8;@zu-8jSb78Wg>ME2W&`n!Q$yU=pfj(=KzjD01yLO<tp
zm<n=X%P=7)$Bz6wD@x~2LVLwrJld0vrhowkQxIK_QW*Fj6F$GAABY85JP9aIt9C=^
z4+fJ5CbJ~;apZj)j*1_`vEXhvn;sO@bMk()o_G%>(`F<0-yb0DA8*6(`&Y2!(qCce
zWxvL<%YTE@ulOxiTzN0iFEM+`Y--Spk(-x><!4UDiZdr+<yn((#@Q3G>g)+vu%wU{
zbkaWr>QwiedaVW?;SJ<lZQq|eZCo++3RHGg;?KMOjDzh5ao5tj(CBQ$4>tUOieHDT
zr(KOMPZz$w{QIyPt+KCFAf+d@R1JVg+t3JAw&PAiE$n0gSiH*TZvN;;Kf+Ic`cq7u
znt1nKZf-6<_qosEfd?KySy@>`pr#IAO^G_J(L{Yl5w?}jBb`$IEIidAq@y&laFzMO
ziUq5@dzFblyx`#S0|G$<<wp;H&?5AKpa}u$CwS9iFhm0|<yEf_V)w;72#zh{>p-a^
zJtcOc&wxwZ8JO9t$Hh)NR(S0=$DM{7+HELla0-E`(HFo{haMST@~0A_vYKJ@<NRfA
zeCcWzg)Q;p;~Q>p8%l)?G|--T?S+~`RmO?^M<Z^_rcV+BbE@F5IS!7C!;u=$z@)^h
zCi>BIt4;CHa>En{ietC&ApUNDoLYGhkJ{GZHOqTg>pcVI!EtCZv|^9x5T3QYfxp@x
z#dhO<3Z=ig)QCe93DTnpr87&0`l6)qATnB`LRCh>i4nUIcCx)lrgmC$nyWCe{-A8q
zhPF@QDNzs!eacV;z>u{ZR(#kI^PnLG5HD0!(1*|E6-TV}Mc;&x%TfC<{uvmDcl;Sb
zp9pbT=}YV;0gVPkUqR()b#-C-$vrT8J#Z6`g@tUzi$s26g%FZe;aXO8<c8WiZw``#
zby9dNaO))=zb-zjYMZ$9O14abIPiF$2Fc)OaWKSZ<?*7)*wu=nZEwKf>J<V)4qNPY
zB75ZqWd{Go=UWm%a%*5elz$=@IWW6>QL^D>m?><ILpqmla5S9YbW%b^-fZqJ%s9Dw
z*z0>X)pr_&Ep}iDUmqTDKI3U*pcRuA4KId2M5%`3X=oU}R5qHk@l4@Tbb4tn*4zQK
zw4t}I5i83~c>G(daqGo%FmYVAct!=N%@*Zl;Of=0@Wc-<!6%mGqNnx*(B4jdiJIHd
z;WOgt!etb;bguAdgL;LeJ|ltH@cSbL@n#idcGQ-13Hm#An_?GAzZi8cYa~lq!;plS
zihn8HikVDer>I1dTT)4{*h@a7kAi5NQAFn4+-I`N0Wgm>{FQkeK3m12FQ*SniBmN>
z<Nv@Elj1&NmZ46!VpDsl5))=l7J}AzFmK`N({X6)9%=WgjMpE2UTm}*DOAjv2A9(%
z;$UJS?!*~WL>l&Qmfm>sxZHx`k;o1EZ>%|quC`7=te-Grvan+)b*_NTyVh@p$!tbR
zMY+rcd~Q#SKSsrz=|V{B_s0IYqO^lZdq{wIcZo=Wp7qHRLlK_Nl7*-Jz0N;WP*TV2
z(-qR=wLmT^E?I$v)AKN~eH&H;KcEWY-EQv!l|KgdwBvZo1pFuMuV|ls1JWi;rwN$>
zb{Z41%|N<UkBm$+va_wUa36=B$+PgB(~2&?9UUxKHPeEh+KEyr{CZM6sVhzGE}oYx
z3dbEqTAB$BM=DWA4ZL>$QPdDs?>mAMdk>>(&tV~Oux8{S;H`y+8lv0fjczHI(SC9V
zw!iRAY+d&)9Nu*ZHHUVi*XhHattYW-Ydv;uuE+Mx4cJC>XkQD=<^Xky+GoIW>NSb;
zro|h8;>$4A@;YbyIapt}9=-lvTvTxprese+O-~KFyj{3&-+j2a;$p0;T!$ii5tf%o
zx1Wof2V*)#ZA8+b{;1N$L_ZPg<2KPJ&L5N7j!7-_QUqa&u#Jgd5x@7|d$DHC8acIn
zp@gN-#EBE}kAM6F<>lp(aMbZIMclLhF{I~bt)*WcDA~l&i3{{R-5zmnlZVLX;EtCU
z7<zIgEmY#cgDo#u^g0&C^1#eoevku{Px2e`B4qU8_&GJvypI8?>p-cOKp=p--6i;)
zw*sH_72+q}@%W@KU%2PjYxo5VH!WDh^xUuN(&Nir>G)$yHh$%?;|o_faQaLaN^{-#
z`!}7q>jpQjI@^aUR(WFLQsP#pWjH8REI4O5GV`?0W9C<7T4}<rAeAEk;=yrnTntWT
zGNc7&Yq`}T`i&tiH%#;!L!J5_%<xafweAbxg&z)GFM5cm=FkgQj9;hDg*Pl4@UZm-
z(z~S)$YNmPx{oK>F4>P}7+MrfFH^|fg0$L$(%&ND)iFx62v2AvsP#Nqqi`Z_xC@V)
zz^S#xHT#g)&ac9=dnu@XiCvOLiv}8_BBb?+k0$}KKt&;VYT$4*#ZYf=^k033CEQ6Z
zfzm_NA6z~&h0p2W)KFY~sBiw1aMd(gA6M9bKl)3to`tHEmi|dILlIJk8~^E(XASDN
zUgJM1e`?bEy(m4t4F-3w*s;k%Hf6!deXnBXU70L+<8xy9_G8|mqvypbWkqV{6c!Cx
zdV>xI(tC;Q0S~5CZiR`)vBdSOrX)WU79*1X6p8aq6H(aTdkMN;2V9hIMVQE7H%h))
zm?(B3v5-`Gy_52*<eO!PJcbLETB48i7H=;K-+vJXKlg*$X-I}RM4?adBTAF~tNgN_
zb7<iDJ~ndoJzdndXHe<Z{6w=djKtx_k=94cT>_#|2PSqmMx;IFjRf^Ao6)8YgALCX
zETQ=)wfL3}T4Z*>-Q0pjC1(8X>uXR}sCCYH6zOR;{Nj!aaqY4~IO<OV-L&4MFgPri
zH;m^g>@K~PYV;KSXq3s2DcMgSztLt$zk-;rsA{4gm3_puY%f_WdhrL3Y%kmjJE4<g
zkTOJA)M1G~%2W{U6}=$IB=oYK!k27Re4$F?2<w?C+;RI?uUBNA<UqDp>|}c>3?|u5
z=J9UXsCyB6#9n-4y|9sjk3jOH#2K|{uBjL6w$m;;D~8Y7ag)l0V6kfdF<~dHWnz5{
zDOO|{D)Et?yoOTDU2Ppm&&iB&W3}60wwlq=)FyVNUh}0-iH#_U+$bO$@ll|d*?k0@
zAC+0HKfdn>ips}{U8?Mlh0habPQlS#(xwOzw;Y}(X??WZ^+Pno{`Z0MrAevaZGRRD
zRxiN3so5xQ+m17^1*KD_Q$Q~PM}7eu^kH+;bbP1sZanjW3D5s~8(w<g9qfK%H+owf
zFj8ftvvAd7K)T(8tSk$Pr;I~$!2~?hQjBg_sW{hT*r1s|X2z1;?neHkdC0G*K*8jR
zD4a40MMT9@D===_WRy&2nuN@J9fE!b(tmtD3Vw4L%Kv&D8V-D$=v!#m_dlrF{RpNm
znu$La{04Vgev1qJ_hQvGzr&f={T^pu{|Bu8_#d(6<G;nKb7x`Id9yHk!2|^KvA61;
zs+gEHQ3z5QS53VNFIK%si}V0228$4`7N-?sR^BYMx!dqR%l-%Ju3U%u&)4JmE1$>w
z!ujGTf$^E+VdgVi1_5=A4JQ=AmqKbmD68N6<~Ol$VeGkJ>du1Qsr8EA%*;&u<~P3)
zyIteMWL2TD#G6xB!E56BkOs`I#uik+y9t#qtw-a=eQ4Tr6wRBCpk?DxG`zGQ?Hj7$
zZPB{*oxzt@c@PMi5eyk={P$7*Xz`=-l9gK;q(eb8O>dChj}6pi&&2h?19Xqi15eN|
zh|eYxH*1FZyxbscG?Dq3r5JzjEWphkn#dAQM{R$~wH>%@l?Qi!)`k1N<3>&v3z5T=
z|1c)yQTP;=y1v<NERj`^i)o8z%cj1l-XA?<$C_qGvFabs!GPo9I7bUyylP4W#onQF
zp-tC`r>(Ey_i6uvUl$NU)mvTH<0{WuR2k}Eq0hKb0Zj^GC$n{iCOm9?UI<!GWdw9#
zyqw>J?m!S8e}Kj>YNIS%O@v6{NrDiG$0UA)Q6R#T)Jb*wp{HkNtntQ?3Ou=IR?@WT
zuo;z=&4P{}KY{AX_vl%TJ$o)2N9Z>${~EBFsIMDCJYk)Qo3hRobWhq+xOIugT6frp
zUwF&0)o+*TaUeQ{!R?d<Xj?N|&}s0%#b=9B8|S{4Y(?KI^1usHogQJI7eR*u9u`t`
zw8Pug1HaRUpjVHeM-RT+#pkAHht*z5?R12Y+tGufW7J3T;+Df4E)24K#p|7fH+?il
z2YTS9eDiTLBEOVx@%*at4L{|P^6l;Dgr~DZ<U7zyW0Wf2eveL4T{_A;%?T*q>5Xkj
z+p<-D<OiAW*zR*k;Ke!zw>5+7+dZQ7T^y<J!PU`7Lu4_IKEi(o_}#Hr^B2O!!%ABh
zHOel8y1QWWJMrVsuAnt^>{~}3uNPI-4e0K6${Ync{P6SVV|=<7zRq@<`1FXd(AEv7
zUys)d=F>AJJN*d53h~EIBCwT0LXiyO&mopV3BN?LJ^vZR5LKl-?DVCcUhpFhWmUv2
zv!rw=_EH$iup<P!WQY(kBta;z*{ClSW;Mxc8P+SYM}OkL?iCv?`^4Zk-d0|{7B~Fh
zi@5$<w;?M(b}g~txi?WXp%jy5Pg7@2K-%?59XWx|5xw~bU&g1t^F>t5j@vAfT9Ss0
zGp}5WmbxY(bWH@c8>X@;6OluCx7uuxGg$k>qO+INQ13%SRUMh6g5jO1yqlJHsWOz^
ztSxn;w;nfKvpV@RRvj)UmS1?bY#JDwURj@#do|c^W?KKRY^4hEyd{CkpcOR}W?=E^
z=_qp?!g9~sD4H^d8s>Arkv{^5f#;4)$E(eEg2hm)Z7!T{aifd|0Z&sKHg2s1)isJH
z7D8vFi3%-M`DRX<2f}AbM|(pDN_1{y5Ax0`DI5GNQKz#TQ)kbBqeFW~s2aHiZ7>-9
zH0f%Fx2Fd_8hE@t-SCiJsNGCGWOl>r48ThhP7jS;Zf6+oo-j?y!f??<EUTy#`Ni4z
z#-X`5&_;t;?LpkVD)tpYe$_hQq)BQh0Gm~Z6SSbyhhw*BGom?(k~mNG@KKB_F7CsV
z&RA8reZie}{3jky8DElheR1dFJMrND2VpXp@bx8MN2jL~r<a_LPt5!TuAhEA<`vGv
z4Kr^L>Xe)*n4UWw>E?8yUNZR-TrlYZd~((&#je*@ckCIg*90#Xs#cn`ken+8{kwj3
z>w0<6A(wFv0}E8Y``zyfy?S6#%!<H_i6`}nkWNuEGBSjI>(;G8Rl8T{!qZlZ@WukK
z%v=LLfV{WMi4*T_K~G~lwN5j1)=VNhbQU7BjmQd}$%;@w4{sAa6Lmc><z+x`iIx|i
zugb04WN^TwchS@BCB2jK2vS`z=sm>qQ*8v`&u}8QI$!cQOpu570rA?l_henPzPTO>
zDQ|qcf0n_BG`)f9SDIMxj#a+Gs|W^IlnDpr0lFaclRO9<HN!B?O%oxCUrquCJDncs
zvloR>loQ70{n55^{<5<qM`M7+YtKMVapH2{^749dc@?9eycpJWI~<+e;>ZIQv?_4Z
z0Nrq`8r`iOG34mz7XQ8~hp2P;@>xhHk5q{=8HlvN>=-vPsd<8*0EyfMbs;=qeHq1}
z0yG#}V4&w<xo;tk8LLqg&W8<F6o&IKGdLLw0yD8NFpFA%9*yLdTL8nY^P*ngggL?K
zeFU!*o2({*{xUEaaBwnh$Zf}l{9YJ){g~3>fzcqpKFo278LyNV{x!^74D&^o!E*7{
zFkG-2`qQSvJD$e6{00Q4=n)_aO{P+qVSsKX<#@UgrrBl~=bB)f&KKE*(BUZ%;U&ai
zvZ~~#kLSLD?W`Xs>r#hKXM)dj0{Mm0V4*n)qbR%ucC-jRgU?d!boYHDX>x88iqgAf
zQ>xI)S8DX6btYamM=v&Q)myOMT!!f(>TAV~{ZY5n3h)bW8LETY$APGkMkB(l=^dyl
zkS64baAwOM`i)Iflu|&7&bi;`ex}{z!NU{Vg>YehbvKPydU{@^8HI4eI~HlO8Sr_b
zn=}=fYtKjSB^M#{oU^F?PK39h7lE8w7{>cym>7m(LI8$IL6|0oV6O1PJ}n5#v=DO3
zJJE`A_(C)$il-*U1jj)+W3?`+GghN<(P$#x2x<;H@Mr50xH;c7Qoea8;^#X)-<UXs
z@_hkvFTFUDZ%@7x!JN9-d{+cvB(hAVIqLKfEJPUvO>m@7M?lBt5wmbLwS4mh8E>q6
z1*L`jd=9eAC{HX*=5y@ZO<t<+wo$Eb(N}W6c?w}fl9P0pV^tO$@9>h=XJ{Cze;Ug&
zDx{05+G$+r=oA7`S4TV6E-J>&S4bD+D0t!35AcO=`~iP^=nXuv?tO9I|B?mMMBm7;
zTFta>b>Qs{he<EDWlp2PfbNVO*l0dG&O7j0dAPu_Ck0C4y7jN%NcHg;noiHOC}M?D
zfclwv_uwAf_uQj+d*|kq$!t%<`250tld$L5L2TZ)6JEa$MY+;Nfc&E#IfNS5wM72N
zAw^nq3XQ}QzS%74*_)2^!auq31^hVC-c0Lni@5(q#6Wyy?aGj%lE%&`QJ={>`FZ<3
z&uF<1C3<GpMjURe#i5289ICIz!ILL2dps?0$j^HRc3}Il{Ww@xiG#IF$I;r=iHXI0
zCOgF<6320I_>w9?vXgiUq6UlIiivZlVap5e;Qgmw!+{TW2w^Gj=A67>1{#jnpt+_&
ztTotNd$<Zy=Fdb!WsL}icVpHZIxhTFA3TQY1IL6=@g$$Y+8X;t(r{tYEJ<j4g5qP0
zn^-2^+&i*!zt|yq)faA{by6qZe(Ggm-&lPT2e<AK>nlbgH+jVc;*I#(r!9cX;e^-i
ziNryrD$0cKaN=`Sc^7P2Rt8>q=oukQWxJ^hW>LPY(NfolnM>x0V+U4Td=6@9UDnpn
z9I+SW!d0L}TF`RW4;ijreQ`p;D!WmmhdL|Hbg~$#U^T-&HkVhu;>*T_bC+U<sR>Iv
zp2dXOi;4RxaO8KuLEy>b3u#exJ1UHTU0ix2f%T<^0A`r|*nFZB_QHH*6=aA$ArN9Q
z3oTasVYGR|aJIE#o;7wi4NsD^zzwQDbUC}l<yCxp+(5`LXhV9=L=;TD1{vd4AhUQG
zGRK{UtZ~aEDj|KzGGvz$k($F)x)eEOOKIY@1epcX(AiXpg3>&gEk=B4{BC@I`W}35
z@ks<-+Ysm_a&Cd&xk(bLhJ%81L{-N-pbt%vQ=&jS&uKZCs62cOMMY6zt-{Mr@BfvM
zWDqY{<uc}-rYlQV;^w(GV;Pmj7Z!X0GxKI*LD2$nJOJ}1WKDoUZ-B*U5gl|qGA)@X
z%P2!}dNCf@_W&Auqpuq?t_etj)xJ+xwEneAWMHsA4ntDakW8;^c}FwN3>K<ZR8$B(
z3&nU~iWi_Ndi4cHOe~~hyBRZP;NSoLx8NzlHHFxIv;?b4{uMf!UxA~AQ_xZ0ikdCE
z5jL?PH61#08mTrRNY(Kra$KjR*PBQ+ve`s~KH#ZtgE2D=#xz>Uv5-+m3m7U#UDyY`
zAq0cY1+&p3gsXbK{EG6+7hACaHeh$5WKZJDPzFMLUYL~Mf$-YacV%5H4*Gj=u^|`J
z%vn^=A=FvZ@XWaBxVPdo?8q#_>K1;jM84FEg{wq?{bmIA(d1>i2l_&#-;&xIzfzf#
zse{KI#`^66czlv@_59PuMzCt3$@KEe&XFfgebL_7g8lDrmrXQ>@9f42J_?2C==S|o
zrv?;`mjpKlKG=@!uf0!`nM!fikwP^z*dN=mAEi?!z?Lpu2*kHi9^JkV0lzeP=ocDQ
zsMN1Q3KH?-k;q-Q&Viy(K1zc{m=q|(jNoLXhwUf}7Q+<o`_=^WCIm}S5h%xTV-0-N
zrWp=>udpi%X<f?F-x$?js)q-BQPb1KC*h^%vn|tt=||g;MbEC0CeQ|+G_xamW<yyy
zNdMd&$h_)f=**ddL+*Su2MUo<JO$(CoC$l$B$#|VsZJfRX9tm)8$@<N7+HlOWakHw
zL6n{!Kz@ENO{}LT%$b_6RWho1e-z}fzfz1v7zdjN{ztz*<lCE3KntK8V>^n&8)?BA
z6{<1{)4OTj5-VI~q3YZs>B6`EAo7=BtQjg^Hcv#WF7~`J>TU6!sTf8WFf}MGCh9|0
z{M=KH`k?gZM}L@T^x-SkddxAqu|99U%+<!KR_S~&ZH!!7m&z3QAiE7GbG>M^n=r24
ziBgxJ`Z``7vh2VBc)bXwXCUjA&m;fl+t4t68BV0nL{s*3=ql!6;;Qpto>+pAVL!~&
zj%}r8q?PHAK3<QkNd}}(Fv40+`soG)y*e~@&>T#Tdngcs)ypqJ9W87`+vu0bgG^%1
zLf=;c$8g-*g=Wfk@ks|tdU^cSY34gm&UaPX3^Zj;gMRXSOrU&QH1eG>L66LddQy$B
zmm82VmHLT*0Uf?ck+@T#vdI&KU^RMqRkCe@JaZTdWN%V^dq%Ck>-h}jk!!}M43f<v
zyHlRM(Z@imztoX*zEf%ggHNT)V8TlUixF_RrQNDMJwUGmzMd|8>H1}uQ4yVQY~Ohh
zpT7M!=y4fo{h0<At)<^szX#<dIhZqZqU;JVQ@`-c%UfVD(fpnt7JiQPG}p11(VCu*
zS<YG*X^uM@NK}mRCB{Nk#`EvIjE~=RgP_O$^>80SYdlq+tVSV?<5oUeun(fK-}n5Z
z7*}3_44MO_O1t;(#Og(-M}t!}4n?<l{|-F=?yLCgAO4IZHI+n^K2~ch(cHm*40(`d
zqjeOmpB0E;=tq3mAOe&1LQ8sC@X7*JwZPQl_u^PfJx;ssQtaBY4Fzc#!d`3=QBuWb
zgruj4+JIE%G-mLQSZ)(6R24#2i4HfP#53F9#}of}5KnJ?2T$Dh5L&4nZm&FuUP}K{
z8(znCpSe+@n{UK}f4vU}DW9#~?U+y`uk%DCQcR4n&~oC1Q7D`$1(q}$Due*F7F{jv
zvOV*yn7lv|pz>u)oz3l-v230YN@f@23c+bdbE^;*@|s2n3&|t<lLUy8KM_+jIpii9
z_h7*nO%;?C<M57s!puj5`aE9LpQyzpH(iTe>$hOX`c1+v9xO;s<c5W)yWZV`-S2P3
z^u=?8fRqKU3anIC;_|8&-ojf?zJxs=Y!d=y#crA`IIXX&#k7U9k&&H=tlVsI*%e<<
ztk|nBwi*fW*qjhb1uK*))DOXj1q~rHbfqPzpo!~@#;2$fc~9zQpz>be81P!-d>nRu
z5t-_S8i#aU2xnT{sN8l4;XoKx>d(z)9V|vY>~;g}<BHLOG+NO0Tl`6*|5E0JMv429
z%#t&yk=4Vb-wKmqn@rn@b_g;Xc1mR21+$6BxSPzR>UY7G=EKybmr#T6!2Zqqv2W7>
z?Ade(yEh)ft_?@9lW6;fW7xK#5?ekXdjAAb4G!*WhBzZj14{c+6C)9CxG^<nDt3Q*
zHx7R0AfCDW8Dv?quzLJz@mfD$PQ_*xqz*5*YmNPAA=&&U<Bp$4ErBP$!oO<ODq&WH
zrF_%BLS0>5*t~f&-hcmn)YjGtUT<%&5UBRhB*@`#2s5A2x@5_cK5<Bc-AL42a@bim
z7u~I0sM~b}uw@}^P6teBM6@{9n`w2zXOWR=WW5<-qfHjR@@`fl^3$`s2|=fuI!tMY
zsy^HUgT9wkCl#y@2)Pgr`iXon>YOwg@KM<Y;HG|Hte~z-FD<@29*<C6)SiE}@>95H
z$}+r@TZX;qd3c~~9;(b4*qkvAm6T`Y4-w-c2TaR*pfB{pe4axdpt&x?ICw0KSKbNZ
zum29Cz5&><J%qfBpoo(N?@2)lYFLRcqKaH@paJzU0QSsu%wD+|#gn4K?}$CM+3Nk#
z1K~?1kH@?-m%*Mv?T6wC`21+BiVpf5XX(_5@yXGo(E>krdrU|0ws{kFnGRx$WiP09
zWZVA1!q{uw7sd!*H=Fl>T9Irzbx>oWz6d_9GPGuz@z(qzv;{-($bSa0MK~)P`TzTC
zIHxYdPhQaDt|#>P^E(oK{c$~h^t>LOw$qTl>MzJD8i%4H3o`S}uw@u&vTB0CZX_br
zYNmGMM?tnUksYW~IZg4T39?W|f_V4wq=grsTGKDZW6cZ;rdoF*KfHtbtX`QLi#bI#
zxP0c82+b+1)=W=4jU;R#sXn#nDRVjQu`EVqI1T^jDn$#=u{7MN=`2$>zG<mNsa`%u
zUc*fcjS+b6#(#GmO?N=&^20&x@r`-;Xz~X{I~Q%o??Wgf3k7$58=h5H;J0rX@uMgF
z`0=Ao{OAz}e)vcLzk1OGN6xj#Tl&Aq$SFcjwgFjLR-~m_Xf9wDXSNxM!u$tISu1t<
zlxNZJYZpf<G*|>^9<e9f4D|ZYP5FL(ZXV5_g9-C}@7pGk@1H!@EAr0y{`E`dg!wj`
zEn?xNr+kM(1{7viQ<jze`lE%|*jT75)pyV6);CKq<of;yQc(yQ%vgY%M6#sGOqLQs
z<UR=+JPxLpQ+uX<+To^lPUNM2*zbi^AHtLgv2TSuweEcc!#44T9Pd!Hm`$*!rQ?a`
zH_?1My2)vLX+E-TVfcG{5O&ji+)d*ftx<GN4_rDkj--{!E>A76Q1$ZF7e$E83O^D3
z`?*K4VfPl{Zcym2`c+6&%UZ2~1+34%_Zps|^gZ_4bNK3yzlB+=7UO8$3E71T!Xy3g
zL#7BkiM0Pxka*sJAIDl6u<~P<<Hj$29<^O<<VE&D>d}w~2gzOtO<ByvVNyQDo>x|7
zlHN#Q4fUll1C*i<qphbCPi=fd2vy_p<a@6OYVD4H-CZ44EVObZfow$HWupwG9C-KU
zuD3U1%7R(q?KlQs^28TMt+;fJIQLXQD{3i=5=0zvlp?w*-t^22A>d^yo=}SFL&q_D
z*#a@&uH4T@N=32g?9*}G9XAP~Y9cpkuzQQuf&*K3%beuF<)!R&ow;-#x>`Ggc{DLR
zlD+>T)P~F`swlw>#}+JF$XmdvBdEIvI1)gOGZ%kt{yfT!(GENjCYb_gu5A|oikYaC
zEqWRROgfsx7+|p&;IrqT#+Q17?hj(3rT$Py5l<YWPH(0DB=!~cC{#}%`(eQtpHn9b
zTEhNnn2at=TY5R>t-cux&iOPJopU1=uekwB&ixpco_j4$JMU_oe(vR1ao(jw7h>gk
zYcXm1T=CCS-!y5Yn?4G(c*BiMbEbH$pLd(uOg6#eSI^YoGge)GmpB%n(b<Ta?izRk
zqw}yTHPRm?14YQG2s~M+$|~Rf&pRJj=%xtZm{?%?i(mW#=bd*R?)lvh@#hDBj_a<!
z24DX2mr+ww1E<p|1gk7yWw&hRU8_pCYT|gu3Jpld$$cjfwq^h(J7BaTtmjjZ4dQqJ
zzHo}43`v!U2b&^zaZb1mm+IRw(P~1^J|`bJO5o?8&nD$FRiz!Oya-cXmkfp|4000Y
zvp+@z;wc`G6oIOm_%b^4yqnQt%fkx=Q}Dy-XX0m*S0d!6XPYLbAFJJkGFLm51*P2*
zfbFwwuz$WC8TZ!1c5?@ev!yoA)!E|&_8tzS(-Fp&-8yPBKz*w>B9PZgQ(qc>@L5EO
zz;#u<FDh7_vS=0-u30Y5I8wknPZ_Nzo8au~5qid=bI-u^W%J<amCiF_<dw!Ae^NAY
z@Vk?T8{8WCEY(hZH(CtsXwtXfEYDIDh4Lf^144(wP(D`p7RhFs-08eHY~)vYQ>n+1
zsb>jN{6{hz;?-GYtk^O=7st|#=nT*^K>Q#z*o;qq4sGE~eD`Ssjx_a6(~)K!zD0H|
z?o5OxeGxi~5qcsWjoC0#pTMu0sV1T0OL>Q<6n{KPlVOEY09RU4U1f^lYT(hWF6`<(
z2gmiFz;WHj`_O*x)p-8UX|Z(pbV2J+%#}kKeSF4y026|=P*%z+jt&~L@PGEja2fc|
zPz?t%*%8F&tj)N|(j;CF6&S;DDjC#U+-Ns?#HEX-KoEN-XJgy=bhvvxaM9r8_xX{1
z<EPO*c^Q84NDtmVq(`qG$Vf9H-EKrLb?a{(*5N15bfejP8mu#Jh0#t+PaCy!nwN^U
zP7_ugwRe6QD<j>7{G5@yT{tn+&yNn(I!Z5`BHu>J<3Ra->!42LJKb(Tn#~~c{pKO`
zn{SbKe#9x?Hfs+uscpokBN-CAT!#r`QQrmGV^QB99&i_tN;jdnkEeKOyOCBt0~38n
zGn_OU;B+5Or}>)4i!iMr{Ekj|yISGtYJ$(vf;+$SM_h8<UAW-Nui)IvZpTy4y^VmU
z3#|=RM3rc+KZaJKniI#wIzs`kXS!Re&{(+>EmgbFR=FD;mHW_BbsV0S4ji<XP##Ao
zlYM&#iTVQzOw~{eTjR-|mX`cR1~o)I^SWoC)C?Vyr%lCW*I$k5#yae-Jcy1S?qetc
zO4OvPQz5!gL2(uYFXfeYs;<2LGTeCk=VY$zLGF9M{qvt9yJ7+kw>Ap4Qq!yoqPiFL
zFDyt;Z6|7Gdr6fb8LnBmR-!Y`$2F@iz_m<gULfowD4r!H6-Z~So+r*&z3~UP<E(4d
z;YPu)wx2vI38$4|=AEZr!GTS?aOD?o#LYjv16SStNg-^lk~fIRB_n9Kz(UbO+xOz?
zFMd)G>zS8RkSESYz2%2riO`yBmA7;yByz(7+E0D^i^4o-`69gj=(@;pZG!;|W!sxt
z6YiWHDny@~;G=uwM}JPb8PvBn;jTaYNHz_OUw!$9DY;jJ{gy>ur5Q=YHn-<}IXLZ-
zBHUKI54Q2+pzHV+u%{AjwHB<K`~V)>I|;g$MtI#UIN%467jrVigULjp8YtXx<8ke$
zmP2PXpp)Nn=nbN?+l!`V7aI1R!2HHNxH3z9c|_7x5rY%dSzUO|W#TNrzKG4=j9G^;
ze(4>wPTVSUw7^m!Y92y5#2t=WWdW<A(qe=rcgpTINiSa*!aUiI^#)4?UVq_T7y{?X
zaVX%zlC>(7OqqaJpMC-J=FgKkQQo9+(TipVJBj_c^^39&SX{Ii+dmb3HJF8`CmknI
z-Cd1VSF6~$`mY23LXWQpT{Nh(Jzrw=@Wl^fPQe`6S6?i7XbE;S?~qLr9`*c5(n!r@
zn89VC5vp87xBvEgV#2{?#%FhlfB1-2uU;)KpW+>-yxWikqfB4@>Q}M<z&?EYH<w}F
znfW-;eiDa|wBYF<9Ym<tD1@$jaTQN!I9$8kE_Sv4^rt_idY1&a$^gdU{prsCl@c<H
z&@4lK237dq8Q0^)zB=)0Ki`(ClWz#-e@FRzHkP4FWkD+O!tKqtFi?eyt*QkES#H(k
z;MKXs$SCN7LFXgCKA25jm~>sRnLDUV0khEwtI0{_;iqSe+~@;1>%Md3K!yj&wwqi2
z@9QF83`I5NO+)6q8)!k54ud_Po>8hFe$__#(}Ubt0)EWzX~4BBU&EqvYLRaU2vIVJ
zAmWZBAdKhU2%^^$#Os@U$fCvEGw<=)i&9+oedpIg?H|eJCV5=)`Hv%~Nc()%rW18|
z<Dutd6L7_sKMAwdil=^aKXqT6OW^G5FGl%{3T%04y?C{s!QpYZY-T=#ce`Hw)tf}y
zP|(@jh8O?#sBG#7iLxCHDkW$I$Gq1qA7Gw;8a7yV;w<lJ$PeWt9fg=^5`6IEPZ<xx
zFCPgoB`^V3xz-AO1gbJfoEpX;Gnf!kcn_9U;e^>C^a|$HIdSXTwaB5qsp#|-DEiuW
z#ZJ|u&Agb99TB+sGZfzR;xO*MJOs<hpTpwi{#%_N()0L7XzD1yYa3Pwy>JniwTQ2{
z{wOgNcUooCm-qC(#Fw)vJ5(>Z<}IOW!SC6I8M7}zMn>X!)`5eG&%?ZI`T!Hwm^LxI
zaO+I?rF9W%^aC6h#S1uBY`b7gFnDo`r3q!Es=>P!e?0Y*vPm1?IrxCA(?YU!JveO6
zYQyWrE%Z<ZSq2D?QHP1mZhZCCDinMD$elR{lYahd{Ps-~-a4d1mYpvcr1s9l0qDXo
z=)>sh)nU!dFuuOl55tN7p+5gO!c?YwyF9xQHOG3Z9$R+K#=)vd%o!54AKZgq{qv95
z_{uvnr$5BDoi~EV@L2c&bOGtcU5^1HlW%Ubqz{{cqm5_dWOwvWrDU<<g0pegEnmWt
zSqo%N3W$4Tr21|ivHI3?UgPR}v#4+BSg7P6Vj2SCGCfKdYN|&CQY8v){~(7WQj8;8
zH=V{b+@HG~&SN$3RULxAwGKf?8?7&T5c0X<aXJyA`KW|2`0YAzmZnm9lsr#cCqDm`
z8}OHVzauk&%E}rnT=fZf!&Vq=Y0%r!p-<0+KDQLc@~N;*nuy!|yO9@){z*R8;G+PT
zE<5|eJ}Q$I)P54VQSgKN?-fS@aM_6`p4G4pEAQBVw1WQ2;orAR!cT6wL+Giyhz0i>
zgy-LVP3%;??5y*#j`R#(_wgnR<t?_GF1sFIxa%u;_q8{1aL<0>#z^zC356w?Q8t;v
zqPdk=ldwF2!lgB2h{E7F4%8k;H492f|MAb=j2myiP55VAG;0wqn7#lT8Y)p>u;AQt
z*Wlc*e*vF9`#dZwE{BcQe!Ll$K`UQr{Y#{$wxl<ZoxzCb_wN*ILte;<<0IrXGS6e4
z-uyPMUU42~$>*&yu^pea`qcZc;+iur#MNh>FWRH9XGJnl|0<g$MY!Q2lY3psEa?PT
zFRjF6kbV5yzHA@wM<Cvv66XMj4eh@WBaprRg5>R4l8dB>e^NlI?uQAY(P~gK=%xwD
z8Nv5qDV_|S`##`EB|J5Hyi)KZ=;mLHTW&ucH{E?DZvFZ7xb^?8$8A6RI6kM)&p&}%
ze{lmo`|}%c>rX$9&wODe%oci32`qFm(38byLK%4X3w87zgZPsvA(G6XBs|e_OI$rI
zutZt0K#V&xMU@1mV4<lHoboQcM8x)LB3_Ws-1G?HOtMe}L2796MgnI&b{4LDj_UaJ
zTk-YvU&q1rgZRVFKj2^c|Aps|KaclLzK6Z7d*KZY{*_o!T}igd;esOMWKwpLGVy>{
zUtf=^sw#AMcf;*=<B>-m!Hyj}u>AZfn7rHykG=!lfo3%6k7DwrR&;iD;&;FMod}C}
zw<<>i@F1!VTZwNh(caia1B_83?(#&Ms61%k<^e0jDi7ww3pLiE^vK3op{k5!;Z7L4
zXp$%DokG(2Xy(u(`Qu3dJsYeB`SrX25lslfJSi9faET5?T(9cm0K^2x<ASI82s}M4
z(k|5ir;+N3>xu}$FnrWmRaIDUbg=^ucV*)row+#XwTOI*fayn8aQV3gES_b=-s2uT
z{#HB1DZP5lG*(E@&Xje1QMEVv`bmCSF*0(q#d)cUP?ayFDxEq(n3=C&(p>36n-i+t
zu9N2Q4V|%lQh#xe1x^_2;GuTPLe=eNNl2V3%rK!m7!|%X>qqu{qQRg`*Y}_8z2)iH
zIz9ugpbyr?r=h7^Cw8iec1&PZ(W`N|QHMry8%XC%GgJ=5ABt?2>fCM_fj1U7=z-`X
zz!vu7hwd#nlg6Y-MQRaWbeY9}vQWXvyfe)XeA8CnN2n@5_KMd;G?wVqQ@_f8+7oE1
z3KR9=mBlu^KO+x5hYR+li&5>gV^3`uHZu#^IL$0%qlD9nnDx{}!)6L&Z(Rsg9X1%V
zmXMWK`jb%vt)p>KdIy8!vYC^Z=dizIh@r)gA^M5qIrz98N(&1Y`6Ae%<a<wDFq-cW
z|3S(NXbPCaR>o_J%VKc#Nk`H&Oc>7k-d7vMiFPXt*-OZgPY4#mT%g>pc@D&pBwODf
zVRRrrlLM0?#u=DSC7je}psS$+uI5H~9UTaGoCx{6V$Dboqj=TdX0ysf&n$0@;OCWv
zUPK;x29}($2;ckWXXOwj?AUz(j!q|x>`rvt)Vf1K=xAOJFJH{;K|?rtN$F6~($R^d
zHFZKAE(|0j9V|rOKx9tyVbYl=F#GBQXg*kkLoduk<(reK{QI7{KipVz(OUfcFZW{I
z#y181=apwr)pSyBo6!~;S?|kAO<NOQ+OrYMuD&2fs49US>F~Fgo`KV>$Bqq~aOkzS
zvG(%IP}ik?O+OkwBf36i0-oKq5zp@U0MBfH56^5}kEgdJ^Cuuf@;_RTp7tnWO&?)2
zAhkGc;$byuaMQWxOFu}O;@$r$1)|o@-&m5<5JU76Pl>=*F+@K+0a1U7vb!;RMj1WS
z8-VK909uE?lyy7YOK*WGGgA~8%SHJO8om%ZLVS)Y6WLivWg)78CMo=eDfj6Nbw3fN
z0m2jHR15>;U?TZah<?<06CbvS5phO+gu#bD(?pJUn#K?dNEMas)q+zd7M{v_p{fO~
zG6g-Ps^e85nuO#?1*Oi_r0FM~`oX@|eW>iJM00Pm*qJ(<h@??@0yUscW@^NrSe_az
zSmT9*TJXu#(9j_4T3T9g^ypD^bade9r=J#X(~1l@&~yZQkJsSDv2L_EyW!335q5j_
z>_JmglX%6Pg|RGPZES3egsTi%tmp7Y1WJLbDGq@kO(yu&f3~J3D9J~pXF)oiLNbTi
zni1H)1&i{f^J`+k;f7JJ=YP)wv>@vw>Y-;k1Y@`zLGdbmuW09iAm6l4iyZ!^offQ;
z&%qNvHB4$=r2X_mN<A>aXhX)VtLV|@=aVm!qlGg~GCBWz;Z|u$6;>>L2iIS9KgO3I
z$MR)w3!yUyHO}Big(<q&+Uc_5J*N$oK9e{D?%k~+l;oSFGE~PIlj1}){7}vxibv2N
z5EoA=P=uvwVe9x=Q^Z-Rd|-U!H5BT&`PNQ87Jv^^SHQe@B#Jv}XcSL8ON$tN`5~O`
zJq?Y9R=9L-aTyh(uRCp0BR3emFwm`|HXgriL3)T}Vzb1Kf?5)_xtItv-SvZh{Pr5P
z|G;=>egRzM&{SN4D%I&XoJ^rgO2n+7vYDPAW86+oWdN6b*{soB9xTd;4TSZQnJ2-K
z4~3zS2rq_sc0sBpsSsxzGepwOdJP%{+~nOa3s=dIh%7cBkLuEB#tqh1)vNy+iRS!h
zg`uW?5f|Q&DHaYR&A-GsbUY@|*hQ)-5W<`D3sISFKu*y(w0X>EcZO-6DlMYLSVw-v
zqbW!SBh6o1oF=sOT4Asj!|l_-7cw9~_Bt95^aeh!n8!_O=eF2$!j+UMlsdG0#_|-C
zLY-kZbOzoB!oAvH^Ub@X!Ze4mqrKM#y|oDLK#=ksrhM~mRhqX`93hrq8g(?E@4M4k
z4JB=A(u9`7L=*>yk>(IXu5a=~`9A4ML!;LYleq{%549sdg%}J$M{5**t4;(SQ{N(#
zBxvx^3T?D#@ZgGKN*0QHiTD%GOH2$cempU>_(P@PgJ_p=)EKZJMC%6@c<N|ws^fX1
z*vvyUq>u)f?e2Eq>Z{Mi>o5F?=C83AIsWV6bu^sv;+q`Oe3yl^G$E&;sbBNcT$Xs9
zx*^Wh2rNu(>+HcVAGk-TLlv&R{py>MU8qcK9xjO4JQeTc)m2z}^LBW8tmrtF2ZJeu
z{HblQW_$3?&(Fq*_b13c5`$}ndl~5?nU&u}(9>FRa<2og&YX>HXPpJ?+67vC;?0*{
z!^FbUXmb;)yyuTQWo9UIjefvy8}51bRow7}TT$2DfnyuC;fxE<M=QlCo;mK{;*-cc
zX7-<S8Dae7vA^OckNyQedF0Rd@xy;2PMk-PXx2p28qq0E<Kv3>NdVa{8lnWL9~l5j
z*!_jiP`gu8GSKpufH=kRq~-3z4!vk=Od6lQrJ%z%{`ljhiT$X}ccnl>LZ5WYq=mQ&
z{q)kE<d$;Z{7;|;*rK0}lhba4EiX?v=?@WmS;L|QnzM<%ou~2AE4MtEp(uC|5w6sT
zPjIqCzuf6WDpMv6@L)#2l0i|4Cw8fFip8!}9@v7U`VltGCN+VuG(sBoK}BUd9?(3L
zbtPUkIGued+K2Yf(}I%2{%EX__}Nm~4JUEfGI&QRUqr>kXQHy1g`!7}9Es>z0LpeJ
zPo5OQ)5E(OaIB#bPyK#Bp8no(sz)<=s<@qm_=HlNtg96}B3ZB+2n4Wu_wI<GmCsyN
z;^Xj>fimG5PB^+0;ikOkVB#zYJ!gefe*mF_Tc9&pX@KUlSBbAC;UAc!tEW&{xXLC9
zgxa;V%Y_yrAzJ()K<gkc@#uM?_HXJ)FnQy8iK9Mo$`o(UdRd8(fRadsRLEWYS!B+*
z68S6dg1zEASaPP&^CV3?jRrr?J@aMEp1B*D8QnN<^$RE}XdquwSsnM8(HZ2O_hEDf
z^k@$lu#Fbv&vvEbe-CG%sy+-KEz(YP@YzIuuO#5-SAZtYo&qOLhFev_(u#R~g{?&s
zOOckDjuYa{A}Uxa@T|gI<QB(XtPnwbJ!nyq&~h3dltS^~{axKU2i~`A!z<QzF*Pvo
zggFuP^t3CWRzW|>)VF3U)j+&EZHmt?lLE;c`{6TJYjezad0wITlYm&#^Db#6lFe$w
z8D(g21&e<qJ072+sZ^&rib(uXXDTQR#j+oY7i^CSl=O@il=xyP+}#TF_K=p$iHKkE
z%Pj(5UPz3DB*vb;>{yCwG@y1k7#avdye6kpQVlex?8q?VmAM5pGSMi<0ycI^4KkV?
z)>DgQ1|b+SBG=S{z574FU*71%FLrzkKi_mI{=91~)*V}lnyw;x;=NKMrbk_B%Mxiq
ziez9S@XlC?^eR&Gc&-;q46S^(r<+8+ecT_Bvq)6zETU)s++XP_-!>R}pTq-CU4u{m
z^MCQB-9da|YbS1cr3GJE*Nj&W^pL9nxs|+dStcZnbaL7SSW#$55V`J??*Z#uIHxpG
zx$rsiZk-*Aom)`$%y;4Y<vno!u@SD{9)supT6kV+MzE?EFp+=GmjIAJZ@=a|eK1fL
zLVxsOgD7E1+Xu0ElRmLrMm#SOG2|97z(=X`SUT0=2%G3R<GC`gH%aB^nCIgn@e1{Y
z$JvXUZoUGK{p)AQiF-@vktbfjE3a;Z#hxY#A^Pla*hI7@WkGB25CyA>Q1urN+yj3g
zB-Eh@S4~C}?)~|%Bf?Zx+06W50TsjPU)+rHWp&tk|56mqYC(F51D<XRw*F%&y6dxW
z-raBF;Ip$)wO;Ee5UE9q?o<uYShed(f$6EI(0tPh{8HbG3(i@Ic}3aqtzL<@R-TTU
zpZ*`l7qMWK0uo_Mui!_X9=T8LuRV*Qjnsqhe1PQ_o`*J<6Fn_$D4#kRE?S>T?TNwd
zfWwm71#{Ufy=t$xiG}2fHQM$O2x~djaluJBAjI(!5tV=-)-zbondA*I3M9AECt~Ju
z6Xht8<Yr(f?$neDwESz47Pl`);>Lf5guW3ZgqBk+>JR#u1{O!+HCYvjjwuC18*}R5
z6!rOtG{lkCN6VcS#eM9VUM!e<fI8hbfZAqsHkz<G`%AD*m_l<bY4Y-qKX1c7e()@Q
z|Mf@khp#;>(VY+D_h0)D>HmX2e*NG0!(9*IkKgzg{(9Ggxc^%Z;?eIvfLHE*02_bv
zAP)cIF?2ll4D2+aooi(wCdE8d;_^zesM)>bSSB%;NrF_sF7$#}7;2hBBiIh1@4HKt
zC?YgvRTiWsAbx#X#GNEWGG)C2g%^|eK~jJC>f*1)P?5c;509z9mO!x54=8r&qmibO
z_^@z6AqBjfkOinL?BvU*T3cJOe*OB$E8Kkk4D*?`y>=8ko@m3wbF*;Hom1dGV#dCQ
z+tAhBgZ8d&TBwADV3GZKdY#zu-g^<DEyp44T$G@h=QvWJWv5B(b|4Zzyy##*l9~0q
zaEk0$ZLFpra%V8Z!Iw`(+{MztA}<YY9$IudMZ4CAyJ`GlODf|4?@|rH?;|tW1p+$E
z*tm#-)%Z|g@kBpKla~MZkAk!bXTn;tOypH>&L;oFB=>>{KA#0!wy&bep;7MV*@>iz
zWjtwKbEM(X&Me&Dk%he;o{$O`sNB_yF3Rtb+Spx949Ugle-z<qJgW8`iMT1AR1RyJ
zJ%-0;rWTDa5&lmesfzH$EC1|&?_p6EOv-N8c(7l^->`f*zPOL5m?Wt@Sb|CZGR*Z)
zmoA;saKohJD~2dP3bBAzfteOVdU4TP)LxVN2``4?-3@}$gS;bM(o1caLzb{%W<EMv
z8c`9usihCti{foExz+pm@){LH9~uqU?X|__BN55zjCC!26gxqR`{Zb>p_QgsiqGE=
ziQ|l;2V6yX-<uBfbWkI0@9Q9r9yU(K1I9UUL4JcFj-;Rd5pk;#fnqmUqThbQvr``(
z4yxwlw0L4Un91wMrdj#e?(agW!Ht{@9egwv@d{57sPfwtVh0el;}XL*%&@+RlPC9~
zvLyg_Fb&Rt1$B-*yj43Ff8Dbd>#9x%pLXN+@DV!XEdeDD$#uN{WGGW-rSX+VBN~%b
z`8N9kBHud#-6%79M85s}CRiljv?Swvvj7KvgqlBz=`;Qa`-FO=mzZF-8Ho(YC`*HH
zLOPysgz=5n+M)B)94Tn;n-CRoeZ;W@F@znbbBHwP`lj`Y4m2;*n_&$4aqICP;OB>K
zz~m491kdpk(0eF-t{_779t7U+gy+GN@V(Rmorf=J<$jIBQSvcZlJd|W(T^0@NPptu
z{cj{H%s!;$ZmdWPyhTBzmF<NaHEF}$>&AI&m*c)aeIG{NdauG8Z+(C-eEEN2u-NIj
z=jT8PM^Y&zk+cMK(wk+;P&}I3JJH(Njk|vHLsFd)lFZ%0K2=<J#<}7M02Zb)SY<Qw
z)ku^sHD8Mu26GUeZYxZd0E*|eV(%mKFy*{Toc*o!C|y*KliNy>mhVEv*&1i7i*ORf
zBfF7t_cy+aFW&fBT)FxpeBtc#QTx}gVfvrmfa$)6u=V|yux;-~nBUoeHBUT^wbtV(
z5`uLpoJg3F5AirquFeFIYMMT(bnx1f-#+88gjoqULP}gbK1k-r{(2uC``i7({bPTB
z0FVFUL7`6wReThJ2uH-D{)n(8il#w{Tc$X7QDS$pTjdk6ixROl`NS3^pcsfBPl6ps
z0$LXFq|y#V$;Pdf7j1`wCyu$#M<d>Z)X#_CJ^KhUiYA_fKG=<L`<p-=@TB!Nw3M9%
zpHX_{)$a)*)L4rf_09N7W*6?r>Xs<G8(+!pktoN3ujV*$XKpXPMjezyZhWo4jj!i>
z@$~{P?ke)(8%2Jck-;@QTu3e~Y7g|o5+$mB76$1G5i(3Cnn9B`D-o?ISy*aafv|f!
zIgJ;R%EDAZadz>$R8@8%Az0;w>8X#`s$YwtZf|!V9#fAudSm#99S=YJus9e#5a4q{
zLzp;mq7aTcoxOPPA4l<@&u+(qUw#iSeD44{n|p*EzxqFQ>Qv!}FR$9T?m5h}o3Sv>
z3X7Q3j1jnzt4P_Y%8!WDDJoX7o>wYO)zBHt;Ma$C_wXW&crgUjXNJ*hqQN@cix9PS
zJv>qvK{pVTcjWSI)zsGgz94d2vys!5><#QA2OUiyJ&k+d?><S7Hm|6p{6s*;!$;@f
z$!9)|1Bd2|JaLgolK@s}BI!4vfruGw=3CZ-wBU1f2hd^#Jib%s*;e1=ufXf}p#E5m
zY*L?@8r_*XQ9d)Z_HdPG(+q>ri19Ngqoc7E-L3LjP2@%qw#Gv%?y&+@6E>K4U`Ajv
z=J=;!yLms2W0G(pp85m(sWV1*^@<Cy#`5{rK!!gm{9&l`)ML@(xy}P9&I)5%k<@;<
zT{AIa^h7g?!x)zxhS9|r8nUG{UdDpjzQ-)w$5S70QN<OPrn`@jG~8i5e(Wg2`(9~R
zk|4gMs=F;(5eevheIf2KFBa$f#X~rupZ<t`1@&h)Sn3;IEbROT0w1JF;AfEg>L9f(
z-o@xov*01eF-%DFU|zW%Zogg}&#4#NXSg5N)0pMQ1mgybGf5YRm`pZUOuW-FL~cXk
zmGN}5mzt{%Z`I7jQwPp~!!y7IVWWTyokirEbFM6wIp6wVP~`hxJx4Ji-7E6#^66Ch
zCO;wG1=|Z#_vNUVS0nr?Q0p0Hs{zi^G<^1%7PvwKoR=N<Ob->Dl6V?yee(&qK^S2T
zIB@6DJ8}KVKZ+2&_B<FY7IH-4@$OWU0lGA!2tV*{J1u&e(CZxfE7Bj~BP0V8Khe~#
z#brS}r%)*Ja4D*UAhr9nbQ^y2vpc0rtW@~RKOVsq*L@YeG{rTUsf`P8c&u<7+^f-t
z-(DcSNo*z>9NN0N@!9WxMcg$JPt0fg;eh&B0EJ$7_tglc1S*GZ|5%EgNe*O`IB?|E
z3Y_-&E$FGsg3%I0<DPM7JD!KLzq204-kgjV@4OgQ>j!sfq1hG2)WY$&Y}I+Ve9mHI
zXOtrF#>>FMg*fB)595p<{$A*r$96WCQ}QV4iizt@A~s4t{XweRS?8RAjjz0c{Im>Y
zjVnaW;iIsdq<NYIX@i_J2juZq8FRx}Suq{Eo_!@ESbh8-4`9#B$(^yvVMsp`M3}N(
zNxEW=x*80I=KCXz4n7jB%AmO#vP+Kxj#{9@jSa4eI8gc-=rVHQ4}`@5@cgi37G|S4
zaOxGC>Y45rEG*%rve=cXD})zic<M+SzC!)SE7dxDVSN!Cmh16_H$C{m#?$cmjmwEv
z;`S|P;`3Y1#%-I<#x0vx<1?Gq;O0$h@##(H6J3Z;ZMqmYY`PRTY`hF#*nU2qtepxk
zm764BrMQA#id&i>p6WQ%ekg`KK~EnZ(@-w2I@Q1zSH1AU3qq*MJ5@jRsZYr^5`3-z
zTwSp{0WZ1a5?E-G&aeLSS*w42<S~@n%$RMr;^M3f*mz(}5s|@;^+`}Nu#4j@$i4WH
zRLLy!+`W`RH}!^m*q9z|v_R<~ipQ=}&VPv7vqvmY5v0igU#h|9sEV-UUD>p-$!pEQ
zY3r9u9>*NC%yM@k=xRsUAH8r#`Xhv%NlrT{d?dik>3hf+t%J@cAC7Ew3cbWr{p(7f
z#h2$`(KUG}o0%rUJQdK{)F$hqs5y9?+O{;2=9|Cy*8ld#7Ie2o54Km10XVVuuuvJL
zQzpP-v!ZH$Q~+C8J}%)URUH~}4>v?zXpk04gWSja@V;pqmU!nNq)WXIK4PqdOCQ~l
zJi%Wo>r#VOniEl~80X`+E#!776Sq^Pt^Pe!iM{p5@%hyuSmWNTQ@SaRm+ihtZffce
z!Qx@Tsv5EVS!-9etQ#UY*wnkq|86K{q9z$ERK3SB4mEyr--g2rw2mg|Y2HB<pO9+8
zcKpJ)5St7o<S7p1q+c3ClzXV1`vUYFOKn?#RQ}`N4kO<1*W;P`9k_j!1>^IB=<L-Y
zK&wa=wuQq66dQIU&sYV2*h(JBF2HYANc|!Q$9li`PbrKvvlqMCreI5ZDmTQB3?}Py
zDRChLY2M0j$nY~gaK0rWV;E)xn!kvWseEoM@7(2GpFu&2uq8laA<s{R@RB~JvNZhe
z{rCE|K{drg=5rXsg|Z>kH}6*cWc58br}Zgxne%DBuZNDt|FECms*r@VLhq-!4Cgz;
zi10oqGPY~%R{Jo4iz%KGLaEH*qK}XYGD9?fHqgAAFQw8Os2Q@*Q+gGg+hlx^`dl8I
zf9~m+Gi$QUk?^y7{)R7p@h9+wOfXxiZ{uf0R0%!ZLTD=!$3>*01;3r=?t?_S&4&NG
z^GEpBt>465pZQvZ*vx#kR}kM62O>4J1gr7X>+FSz%5NZW&*pQP@xkv-!=g{^ML1wU
z>yZL<RcE7qX9;pEI#9N#0qcK$7LL9$9TQg6qGUnz5A{?~n3IPLdz#2kS=C|a3rev0
zp+5qTJ_@W|3w-?JLeD(5E3b}T3M(MjT||v<2%6Ag!Ic-_k-z=}<=Od|a{5wy@apR*
zOy{|J-_qrNo_baB%k3r4o{njSG#^kon^7_$-djo-f>#M#1WMMqO>=-l4)h~1c-$W;
zoO%+%F+xsm2PTy5gWg4tT7wSHXM7XR>{9rR7I^$&c!~HCoVI8RHoMI<$&o!KKtn)}
zXSz*zsKboEw3+eSW+Q&tV8GAofZx{z@mNa;4gAXRaDX2;NfSpZtxVE{l%>QpHPe^k
zjoN0+p0pU>IC~1to|uDQubqZEUl7-xUXE){pFlJb*RGg^YnM;L$5vF}hE-GW$+M^8
zrn9HvmUE`#wly>Hx$|b>3v1`#%NNeYotMtXS1&ysc~h^)lTFK{cv!d^RE`2jmRL!|
z`|v~R)MG!R37v%&Dsg!5!3S~RzyTpBU9n;XKJkf9$Tod3W5x`8{p(*BLRj9t`jemh
z1YKSqO4Ci4U^inX(RrD%!ZvkHs%c0N?KzI(PzDF_6>BPKl`8nOxKt)|${_yBs_4W>
zLKv4EGNZ`hB3ntg%I^423bx~2*}PNL=rv;Y-sxDm;WYM?66EA0L47}3uFPgL>~=d0
z{x*cY-7whlVX(@V5K-oRtq0+*c^{tUJ@EIO#QfQBQI;rg<h{2ihz(D-W6KMjsNUBL
zM;9+dX+cLFAD@-1l%F^^nTl=g=SxsfoQ;f(3~_ra?|#-uQt~teG@PJLHV*t6zk=~I
zCc|Vl#hjy>Q<#sOqI|fWE;Lr3l(~S7+Hl?BDxBDNG?KK61jhg{8YymdHik+JE@w3*
z0$ZtxF*`67IiV~ZupGk+wzpBMZxk0<#Y3vkSYoi-cP-n5p20@|aF_!@Gd!j~P*NL9
zTK<I)B#soj84j)8hth|^yS%=#|KG4!d-3yYf|y>+{>TjxH(_?gJ5_&4b|$j}xsE>(
zQx?t%uo_Es%^E^E8ETjDi14JYCJM!zER8jWD;?@QB@yNWy@j$+l}b{BW&}I%&A@J2
zIP*M*JR~4j*ns==)A68j7TkQ^G_y6r>qDarRk@V=(van&yz|yXN{jr~w|Ikq)2=7|
zclSMu<KBb#%~dv>J1Y#kIgC!X0hVwR3Jk{)2wTVtxexKJ+h#FN1o%vF@^7`0*<=v?
zJeQF!=s|}m6K-*FlwfI+8p<=-mn3_w=XfBRYRX4GXg)#tX0wuS{+o!yHc-aDyZ0H9
z@84c+m-8J!m)izk$CK1&*GA%I0jkw#hlPmY4Y-kI&nL50*ij6E9~jq(J$0L7(vgsO
z_ou9nfc0wgAW-hJr(EA@rXZU9c1&;Ig!5Y-htrq?13e46Ak9&1>43#fT^s+|Ocjz&
z^8qsRxs!UTb1#kMlbQ}AzqejWz=sxcK}AR#N)-);h7JxyP5=L)P)GA=7OI-9;L8Oi
zp(pjlVppj$A6Fq1!lf6kk_{3zZrXwG{_qblW#q{7&PYc?;ZPV%ia?d(km54ZyePWK
zAXStU=3&vysaUyiF3wuAFhXo*KHCom_$UB{6sUPjpSt2>SUx|w^#&hX=4i;kn?E`W
z>4i=qI1Pq$@H(t$+&d2SyGt<h;={Q3*Dqu4wfn?{R+>n$x%%tmKWp+-<s$2a9fc?Q
zwm49aD#b-KKED_jFIb7K&%TaF{`ODFfg0rIbC+C$G`|iDPG5%E7oLOHpML@6S-jTe
zxgy0Ok5<Z<q#nS8o!}`9MK7ECK{V+q{|vQWfe4b_Nk#z;X9Dajk==(7oRxSwr4X&i
zA%S|FkHE;zZ3EoxFmwUi>PoQNGaF7%818^hyyohqNe5pyHDyjIth1-%U6)x*>a@`0
z*W<Y^6Y^G{fn{I50q1<}lURG_r*O{gpTKE1T@UlT<<y|UC@~LHEi#gP`uMeHexXV_
zN7VtBbsDlvH0aRE(@q1Bm1b&F?Ix_qwBfXL8y2NoF~?@XWU~cjG$`fkOh^xzU<erC
z_Zr}E>(TDip{YlQIx4%$4q$t82$Kpds57pVcNcJ6ULF&ZM$80Nh89m7@sF-d>|LRL
z@ZHnDi<{=$gfq*|#Eje-GIw;q1Bv>R80yRnkRc6NN-m%YM(mC&9%z2~%U|NnH{TTJ
zq<-ydU&Fok-izteqk^P78Vv8a;|@IZ&_hB1TUl9&?|kPwXm4-F+&nufa_ktNZozn)
z87tGJh08!t*OHhFC0)<SVU3|)dOV0El?PQ)=vm-A>m2PAr~EIuT$T=c?*CS+yiOFw
z$984m_IGo!@^~7iH`-9tW<pWB8B^->an6=SxZ=%Kn0jKo>^fD*i5!rU0}EAib90er
zaU#pL6=64(1Mx#%2fR(Y5$LKG=AgR^{?01Y?yAB5_g$zx<V9DrAC3+dERp*_SeT;%
z)i5fz^`dI08y)pN9Np-|?pM1}SelD*<HjL7JDV2hyd!FCP=E9UtrMkPSd94F{3p$u
zMs*)TwYZE*!X#z4D)D&Nwo=lEx9-K;kG}|)LwZ%omS)F<+1i3dj*~CQI+c(SN{2aY
z#B^T;3PX8t={<PG_AY$N1uZfZp@5qB_Wx&XZ@_8jm0baId{dDb9{AN@t?=kawpBxU
z=3+_HzXlY$iN18C1&utiMMweb+0^Ln#1(J<0!Q2jarfmR{PyD^eCeDJzD#uQ$3png
z6(Jnz*@t!8euPp}ljK<-8kU4GdOa4jbmYk9<e;>v(ZD6wyd`K<(6{<V6un{|p_FDU
zU19ISH!_<rHQa;$3G70C*h_4(>xbS)A?`6O#7SLW;k-8b%cQyx`lHk##wz;EaAg8!
zejT3W4AL%3Mu1wn*<eDauLqxc_pf-P?LFLiK@h*Z%7ouvXT`Y{wKN~|i7@mu&vVoG
zJ$v#5+;rJ_;7gaByc_KF#h5c?5?mfyP}6*n1+E6O30>xacSI!xN;AiuDj8{fUSuqR
z&SK;jLPS}J;7H|soAgF>c)LZuUvGUEcb*@>FRwP^ch{OwZhu<1Wl(7J>~`bK8CT=H
zIX9rGy9V>hSK;PWcf(I*qXwV7x~F+#q>qUwC2eY<Dqp@u8aag2pl%&X2z*&dYV|GU
z`w!O|aYyE>FnhWX(ix@W6P(>JEIS|8?>z{xpuD>srcc}j!}5y|>glA4F~CQ|X1XDO
z3GD|(9REFtFI|baOb1K!t3jz?D1QGtP!@K=$bXjD(&*W?L1!}aD@C#(RNlcV>Pjjh
z9rZ;<qaM{YCvl?sq)?xH_H~45zHW@!waL#T`DFpE-UJ;zCpr_&=Q$3Fi~oozMXz|4
z)RZiEhiF!M8uGI<`w;V!*+H5ZN;;zLG|FS>P*FA!m!5T@pbJ)>M{)A5%y{=|KQf4=
z(}&@Ao3Q_x+1UB-g~*@YhMAWh!u*fz!Tjs@qG)d1+43rgP!p9`j8V8`$7q}|8NrTb
zoc^gVNxM~Fe?78um3eH}P&P>lPa!!lQRif4)7<hYxM;x{IA_)py#M$Mc;v6rEBg}o
zuR<MGluX97f^k@U<wf}E?RTQck_M~l@-OMRl|g!G9O3z)Feo~0#CT2s#R<EW^-_qO
zy2KFKR`f(!`8l}u8@FKMoakC3yC4tOfAdyU%;jUqbXc(ZbliOR9fEHB_UFmI?`Emt
z!WFlD9G|`WtAf^Cd$G)=wKeG#{-?kFMP%nEPQ&7}Pwx|k)o#P}U%5HLXE*&JCLPyB
z)3J!kLW`fsy~4ls?mKbrb(c_SDxcxOM}k!uX<4-J<~O??KvnA^xNF+b;|Zh37lO+d
zfX5qxCrFP7b?Rqax(FRpXX3FgD=K{kn&|T}@sdFGy<P(z?KEP>SxZnnrviaY8#<_C
zul0wqzcYyU>pbW<dIa<B!&QY6l!@j*5U&%-yGVV$He}I+jbE9vP;$fqG#rA{AHvo~
z2i|Y!ru24_z8ia5x^c9v2TcwaPIfur^7?2Z%0kmHn!Q1E`h#!=f^ZWN8xCI>HlqP9
z8u0kc){xk-nu26?2#~t5zLYG!zx@07&FbIa-xvQI>#kgfiz+U{`j4&0qnA92d(OHC
zcPzRCS53PL8Kz_xV#!15*rT7s7;Nq&=wX9>{tuwD#{RR)^?CpO_v6kx@5F1by@r)5
zSK_6YUJ^T5ckSARZQHitw%cyQzJ2?I5cXT&`j$9XXy&+de0y~TO7m<e%d(;@-2$5_
zwtGpX#k1RFC>fltZ-yyy9DqdpBlOfHLuoV^h`~G-dmTpHeWb5&l`*eA2WK5F#KpU(
z;DVjAu>9Z@6n17&fMhuoN*Zw`p%Iqf?}yv%76NbqzXP5V@4$8Bc?4Pyh+V93oS+q&
zi`>&>%Ws0m6+}y|4=47z5%7l5-4sGcO&HnZXko@53O7LgL(Lu+I!^kr=d~WxAM(KG
z3d2W}WZuEdadO;a1&`Z<nuEt=6D<^JviqqYd>Nnm;T?iXr%a^Dr5@LQ{gw!C&dSBY
z?TLNSovp<a%dlw8iU=*c;4EBn+sDMw09xQU`7GDrMqEv&jN(uMEMXHS2Fg(w%oUee
z?KJO0rLmUklN$>`JPZ;s@3^rB580nZgE2bEP7m6#%DYT94Hr26zQk!rg=p}?>D|(0
zf)TzPngZrExI1v$#=qiATkgY_?kz~muN1VkYcp<t`!7U)z^z4f<e0~*J|V~|aPY)r
za-w?fRERTbIT>6<o<gvj#_kxL@p?Xfg)}O%Qv>*)tR`G)i(VR17Ixt7;8sis_4aWe
zPc`8*{KBvR8&O2<gjoI1sDtC=xMlrPM;=U0YM-=r*HMD_+(7}-`-1_PbVhXey77gL
z_u=w4?!mKd&!I;D7F@0x@?fGMq(vU*h3A74ONy~-(OmRWziqWxgy4d=4++5`jf(-l
z51t_j3gV&kWXX~A3cL<$ER$j3H_ABQ#8JN*9|#3urg=8!`-_|I$K`L{gJ)XSp~mn!
z{M64W;6*ymLwUEV$JdL(jB<SJ^t<rb=3l|<cfp{O#yJIEYbV8}{ZZ1V{)m(+a|uqL
zlEx&!E@Mfm*Ci>|_fu`_&=`6h1r6^aK>5^z=00+obW~3InM+~1>^6jZ+|b#xgfL6k
z(wN8_W4*M_DRh0<cdYg;&EcnyFjVA(Jt)$9pi4`K&PMAgvz^+x1v;aN=4jO5sZH`+
zjlpfyYPI0Ycin?UD?dT>aV%Q#as1<7FT$1`yGca&VZki#QZ>m!RkICxibH2l!+4z&
zxnjXT^5AqQLrSw!gtCgdZvD%G6tMo@|NJHOGgejLovY%~UBb4%FU6a8uj!X!kWBNB
zWD0O*<-(O=gz=_ZL5oOyaK{b!;74}|J@eR(-LMDYjr%IuFGED7^r-|3^;c7h%JJUg
z>-q>+75d#ze~$L!)tFu|F6x(5(f_j>Rd|v7MDiqQq^>){6uPUIuOT`YSFbn^SFc<v
zSqPA=;#Ae=i&)r5B&AH|$%r>6My#tzbEaa(lDT;HkN?2~cmEz6UU(a2Qzy!{!;6YJ
z(@?qpDDJ!aUOe^3hcJ%TMa*Ml<YZ#k`pv@bUqAaZx>QH2slfu*X^Z9v|LQPUu)61i
zZNmTCPrZzpOXnvP&c>wUPZY)kDGYW$eW5CBnIGdm3I1^6Bf+W+v#AZB`FhZ2g0HOz
z1+7i!sA)%MPXO&i-L3%KzA#NXsL-q?oO9JOOugc4e2_C9_xEPv-gZ0I84J)edjT%~
z+!ZKYHWNOZh5Uuk>F}euJ%IW)H+uK&!}wr3W~Gl!(My6=nrP7kE9k4m!Mb)-w)Eg=
zdoSu7Uer2#sOxrPZ?glt>wB=Xp$FURy0E3T3!7^@@m^&scGq=cV`U4rR5oJoiDm>G
zJ;*{3*+w0B6RwGfCul*Mz>4!#`IS7r#7foSoXW7!z@B5x!T8Man3_8kdA2;PDqDqX
zr(cV&EdC09dDbuSpNsy3$=R{z{Ct?;ZF&us%*9As^B_#Kucu7M3W<*%J&Nys_q#ar
z%rkN0jW^=^-~T>-_OqYiv!DGeR<B--TW+}pZ@u*v%EqPPe?C1M|GZ-frcKC1Nr4UH
za;zAaVZlq?@`2>10M;7#^=@waEOZfyFbh3T;JB?aD-L|#>Ye*7c&Cm3IZqBdJ3{F2
zYK1ns;N2}uylY(Sba9+O$lD_i(KNjXd0}-Qf~8|UtnDA5hn{g)C%X+pPY<x8nHFx{
zRv5xo9D2`%!y8;^IO;{!4j25s5FG7(n!rlCKG;t%5E7R@De;XZ_I<z?@1>T8p7t)Z
zHMGbkVE&oQF!zil5t@10eAqL!cWZK79OtPBn$lvPe+KrL52DG?innZ=@V<3Bp0U4%
z`_rGqTh<NOX5KI8P3uPdlX%bCUq_E2`uv*1CS2iJ3tPDF9}N*f<^V)L>^hEy5370#
zkr{~YPT<#inIdVB<Ks6rUT@fqZ|ryo*S-52T)Y0)xNGBsc&%<X{xHP@n=y7bZ!E%a
zxNJCdLc8xDY>o!wFWWkJA$}k*w97ThvRY-`=;QkI4y?8IP@z$&5zR1q@XMT&m_}+m
zY&6&TMtB#-hoif$6M>Hg_y?v-mC+xK5%kn^^C(piuwij`E<$Fb^hgo7olCQM=~Z_l
zjcFF6iN>NTd}qf~`1o6Y!^utuOnSZaEQkdrV7FSZY0m*n7*~WT<4dV+yD5(}LXaEf
z4F&GY1Juut6?hjYKeMHVY^*j-Mu;z5qQooDbXW)o`sVw4JD<YG-u?@$s&yLs;WHO~
z0XHTV%)(dB|2-bv^h;E?9fZ}KF2azO_Y!RRRH$rBlGN*U#!#Azjw+Oet5SXEBwgR%
zrF?(#%|FB0SO>m*QRJCDGG*kz|MI_}pS}c!d5aM4qUTtYF9#}(mjQB@?i-%VcRs>L
z=npLDS{QB<!cKj9HuSc1=y_ME*(wD7V)rVay~;aJW%oT!FFIQt=<4yHv)zeacR)PT
z66on=x5}&k{HKA5!m`*Up=w4p#bw8Qit|*(^7+ef{RLMEm2uhG7irRvA^NMRfOVwc
zO3%Q-xi{nO#f!0L?OH6#D8lra(}kXS`)7O-z2ruKJ5Z$)RcS>Eg`F_MVlrVW3s)ao
zhe!T$AIftJ*?~;J#Go0oi^_yvg1T3af_dCOMmknjRK+1#NsMPUzm2Ciy+!mUp5FKd
zp5E{}p8nu9VHe-gi<HP=MN`#RO$jPbygSwJ^TFemj`iX<?e=fnDfGjQDhhkw#vMZM
zq4|N^C12D`2>1i&Odw2EWAdD7a65a2;FXDwTbnd<s?Z<aAzh@&_fzoNF%c4_gLm-8
zgk3{n&zhRheSi5GF6hPNBn5i$Ur*tKm)^pGt-Eouss_$(ha6O2u=~M+y~f8qlBCnq
zq=M?SyQdhzkP+ut+%WImho+OALa^G_>qmQU06pFioaD}JG@yL`1f2irb8yX9uEKS9
zT}%24F@5zS1PgQFF`Lol3!}^BM@tV2R=sFBP>sTdL%5hGYg%a-G{ryF{XlyCnFXs7
z)pa=0;ql=>s}uD-UaULX23H`2X}J~@rO^YCZNQWq1Evy95qcvgXBh-lWExPC7N*AO
z!j9t&*m|@PZ4{n?(!|4{xNThsR$0Kq7Y9gbND9=6^vRdZ(<}ouCHkn`sL}3e$4iwj
zVQ<S`oaj1%Hdh<Gf!KdDd2(-{0o!CS3Bjw)WE198!BLMDsS$Lagk#TlX+k~@mPL2M
zcGJIMx%Ms?SFMI&+63rwsq$$t#k&tTZ{Cb&o_PjOKlc=NRc=A?JR`3E>Ky#((ev=k
z(-+~BADf2!vNYt5vm>w2hTL2$?rZG8Yn`!zRdx9fhWJl`c;aj&L)RKBX_4(0dJ2rc
zGEq2Y&MVa=FIFTMG4Rtu^XUd7?%Zd>-%seVqmvh<v7a3sVLV(N#5Z>b@UN;M{&<+<
zO7)|pDH$U7YGS`}qzF|N(m78M(~GdTo%Bax_Z|}q>+Cc;3aqrCYz?CB13wPF?!?Ih
z9{78W)XvTPpNQDK>h1}lxzb1ErN=sq#(e=en?vZV4WQ{@09_}e@kwcl`^2ZYU*bFt
zj`*jmr5%U2?;}I<sN8!<_~rO*>1imMkoXMEcyL^u6sJ}j9d7DdRs&OUumIQeUI<H=
z7AvZ<>d<#%hv^{Rv2GT$(|i!^#8d2<>>)d@abAexK)%RpeAvl?U5X(gj_4ap{4)p`
zLONX7UP56=9|dZ&5(k%~FmoR0!xx)Pu!M1GG4F<q?+1hrSp~Kpn2kVC5==#iegvs`
z5n^#z98nw!v0x->rqm=!tEV2rm2>yWv{#ebo1fDpXV(X`?xeOb2o$HcV_KfH+gT!Y
z`eo9}b0X66KLA~q)`t7?PY_k(uB=8_b#kA>6!)=GzyFQUPAm$wQe{w$3`ms8en=hm
zpg$CkCTV`6(ev_<N&she7o(ty+Mtz%jBFEeAmpM-KVhNyN}eSR1-1;B#TZ9Uc!5eP
zhiuU6;qrL#_SRjv=!|9ZLY8b;75XTov}k;kv@4Y0BSIj1X@Q&?>BVckI$U9!i!z@L
zK?}{tI7ALl&P!~*&B&#3y}+6-?Bl`i4g88Qh0Ow0=4dXxIsAlR_kD?frE-v>PL@Pm
zal}Uf@H3KpeMj@n_02p^4@3OXNaK0f(FOlgzlY`1-=#9uvxVjk8_vOKeAM|J78)fa
z6Sc&rTxwFRUu`%4{WLG!igZ&L`s`fj(sRVlRUP$NIx`;)V4*fE9Sy*{PyPNN@^iEB
zhu?o2AH4n#Jo3=bFmKjGxLs~~mi6LNDj`%gnxH4YA`B~qMPceQazz|Dh5%-V+ceWc
z)u2sUQ?0jx001h>Nkl<ZZik!rLy={sWn#^;vxR!enHTg+>^?DZh@{H2X2ohW)>ZYT
zlN!7@TD$TbDShe>M?$JX6ULR}vNO*Ysybgh$7?GZhsJ9@i;btBjeoW}@c6DeY+QC0
z8m_n*ZH42=9fu%)*q^K_vo4t<>xt-xk3pGQSc*+gzJw_S(p;VU!iXD%_(#zT;xx%b
zeIn1l1d(3MFX(gG!sU{lC@&)mS5kdkdD?1Rb^1BDa`_ruwftOMwc<QnwQ{YXysR84
zB6&h9WFO>L@aQWM>m_1^nNnV3tOPF>>_&1cL5He+N5yW><rl9O9LWW%62%25{6;>C
zSw-}d6!F`7W{U;wjjgbfJ}omH=Uj7<^r}6--ml?@iH|XGbVmOS?`mxqyIs|8BEna)
z(@LZI6G=x?D{?sOuAYdyP7XUeGsdsQ9(CV8pOT^~$9{=^5|QDmvoE@v+^FXTDk2v`
zr62m5sKe@NZbw5^9V!nT!68~q?%lKldpGXD(cK48eWVgC^-Yw?Zuq=D?Ax>xXIy*^
z1&}&6y!;MzECZkAHe4vkt3ggiE!t0(;zUygGSX})qlMOi6WwrTXCZ9ngY5x7P44*B
z`4Bz90V)^2&WM1?h@ja74=q$YMm`z<=yZqB<?y4e%ZH{8HyRHdL(!qlxW3ecVzbsX
zX7K28c4NwnY2qxwfsmfrh=TF6p%2x=9}MHQ`VthSnQ@}ihg_QxdzzeZ`n;HwWyY@h
zZfvRTz_C^*jy5}SxTOb&o4RqJxeEsxyRpBa6Z;#xU<?N_F((~uP9J)lZnSr~P?2Xr
zRl5g^3~$o}k6#N8<5;yGcGFBLAp;;YKL<w-97b_*vCN6`a;T&07u;qw5w&>M6n(X#
z%iD!V4?T*<jy#4Jt6s!gwQpfl!zS!&-G`HolW+&zlx{msT4|u>XCX=aeb3*~*c*GR
z;#K}(_@_}5)Hnygv+G}xbrM3ZTKMW;g&}P+^!ZbvE6jso_C%OgO@sBa>BzWoD)K)u
z5#={e#O&LrV8z#F;H=M1#hF)4#Nw637+;zWJGFNkP0sl`3@f$!WA#pa`IRGhx~A{H
zSXZhJU>^%i(|6&6V2K!frCOv#kX)TQ8dMFgZirWiRCO$gPbBal-{RF_cef6&H0$w7
zlMb&^^}gB!?CA=l-o?8;q_A(DYCsMx{v^|Apl|&@|L$v|z3M4XLggj7tB&fa2N@<k
zY&2mtF`v^+qk%ZfjwYtTke&v(Fs!ujq-m+R)WRS3!)TM%VWA+<(-@*Uw;<@Ievogx
zke6nGKp?Vf^>UhI4H`)oTVjVz)%BP#Yl@hFB!f*aybYiHD*v=4bHtGW$$)pdzWe0M
z2=Tx$TGc%WWQ5a@9<rmy(2I6`^p)vE;H=E_SKtcQxyTDkui6dV%cKs~;}(O#6lIa$
zh9IT#gstyxd7d~i;`{J0J+wM%<4?})MTwdJP*dB-=6KhUX*gWNx1_6k1{DUAXc>~%
zAq1d-u$B7qj0$AuOo*YZ>@rxbnaId2ftg>w)PUFHgvZ$dKfilT;Me~r<}_kn@rUo$
za1-@?OVNV%upM>ie_olB-T&FSXLhB!GbDvN)qEJ@d108tdQ9-7<3L(Byk_dVX)Y&D
zrl4_*+c&p$_C-qtdEppFg})GKkS<;|7<BN^9KE8v1i6_Rc<H^Zm{l<zr_Gy*okxzN
znff#<pS@4u@xvGlA=^juxFK`^4Xw>M|MH8`SW_pm*+22v+?Omg-=1MA!WLf*+(sI+
z`DG~LE6;XJzQu1Cg-uOJ&yses^B?3MpA+*ZoQ0O2TKs3@&+ygr|A4BN{b=g0247$$
z!k{o2&ZZ!ijypFd4Fgfx<Oz87*%wh#Se$&#%jwqy1!4{xQmAjK&M$3fL9xd#)+sR1
z`0R4RFn0xXMP=|k_$wHet%hms4G64%8sXX_(Anv^pzw_3zQ>${WBCiD_&;>ul1PSz
zA6ys7V|ddrGC3M~@Zls@8nus@>3QMKiPoQdd>jj=cwQ=RNEiJU@2-68fuG=p>n_0f
z@?y-LJp~t>yBtqF_a+>k01RfcxS&dJrWJ|RE(uiaS<q({z))BUeNHYepb=m^hW<8P
zvgO^+ldXZ_tVIe-72JgUBAmVObQPTzN6WC9RHk!ebv3zTb$mYW2u%PvgGIRom^NXu
zP-7scAz-08p*k?kSxW27rO*|WAVBpLQ$j*ZKinTGeWK9I!6<wp{upU&%C%>}An#a~
zc8T&lTy`e~D5>;~%-ZNV6?zVo1@debYd<|^j2n;XL^DbzkkNpN1>-QIbP{HjRbXa0
z(_}%j#!taaL6b4Ds5Iu;7kd86s>~Fz%PAnpc0y4cNw&OZnY?f&>W|lmO(JY-A>NdQ
zvjne^);33X9>9XLmf^Gu&!V99Xgm?UbT<MKzdSa{A9V^+#f6`|5}nQMIJj+(*sZ#M
z^DgXMzgg@8UA%fZoIMV7P<rE0F<W}o{=@<4UW<}R<;cp*!QmbIu;#i;#QCRuq40Bm
zdqmg|1d$Gk=it^ok=OXEG{RP(PPZEBaE24ql9Z~}A_bD!X0;+CEnNt<a?`Vsla_^a
zT5an*Avl^kaPmMUcE7zDZ$0)Rp8LzgNY6~i{XhO49{b%t@sil-`nK5VT3=P$?@rf|
z0Z%;QDblXd)mqAqV7B_i1I7)tjAm`urFFo#VKZ6|*P*4`kH$_vTDt>i><yyH8A1!?
zy~PtogDZ?CcL)uRAR0UTXzK8xq0NKZ#$I%7-iz|1TXExfGbUK24q&Vxz24=gzDFW{
z@hL!)G(Jbx>kq+6gOkkw{C!(3?wYv^_b+)G|6KeO9$fk){=M`G{AbzYcx>6Dc>J_S
z@Z{+a<EhjBjf2fS$hR6`p#F?E{`x7bn))tOHuCv=ERJHR+fyvmElwc?nmnqo{)k0L
z@g&u9VsIzj>FLCQwgY(e#H;w*p1<M8n|_Qhzx8EY|HAcH{rGBJ^ZYfqd&AvWcYGby
zeUq5HYN6HDieGL06>1&Pv%R#zX&Q(|7NOo+xZeFD+)vyH|JGL!YW5&Z6Znuf4MDFB
zK0T4i0=L0{o<JBqw7}}2$+wg0wbu}a+pI$?b+FHDtjEXh-G+01zXczh)P9XjU6;c}
zTtr&@cw$V`_uyhfjbI2K56-e>Ag>HzJ@pD)rwVhBIJa1j$r*-7?Qv+y(BPr%TfD*<
z2#E7enONA#hxYSAncJ?9?7XyC_VOzwGWi33evJX?Is=T<S9twC>K_8=t_h;@eHSV>
z^`f)R4}Mcn>Pxr^!Xj*ri%HqB+6U@pJrE^}e*6Y0&+k0`Vp8Xx^5s^JjxM3+ASTaC
z?$SCA`|U?xK)^e8XUZlE&KC>AFLABLP0p*a)HfG-p==n!(J_hjdBJQfA-hkLn~UA&
zz#g^_LmQQ#t|o;dfyYG>&(<O>oZnT7xsEK+2Gyj1+dgr`hlLOv(%Osw=4Ws_QHLBG
z!|{`)*mZPf)P-hdw4miMO3?`~(_j%Brb6YpLD<vsG>L_)X{07XscA3HnY103Oxqxc
z_0#hQ8q?I!PE#z6E^fv_tPIh-gzG&4(Qm&rEYK<nrX;|-7`X+H^V@NCLpkg|J%VPv
z_ydfC2=dWO1fB~??OO+*E`XDU4(i)!awis@Qgm$1XLedGCb4U^%jp!0R2JB=AcOrI
zj3!vAUr#!L!d)U_Xz}AngT-KR=>%gAZnrE)X4p&%b3M&FDc`hkq!d$r*o8#wn%_2Q
z?v*_g*j~5|1(9LRMZ2RB55E6n+_dTkw5BOWfab(vF)YLC&7ru-tV!fRi-s9If8|y=
zE|7++8~d+sp1-g#%4sy<{oHJrXe?&Ivm%@l6;5@jvl-!k{C5bqHBzT<68>1IN=pHl
zX^zlrm)1jCP_o${jSRG6(jtab|NT>6aPer7mUqpVH9huqDcQt-B-d(61zP^K=v2g_
za0@0I9MI<#5RHQ_BTqX2*PcObl`pok!w&;y&6$P^&s#40k}zpv8O|e~KR|6?>`=AK
zyHqo!Ff#K+nEKp&%+PmZF~yY#eQRoz!4K*{G;FmPpG&ow=Y-0-S&PR|)F_m0F#=)W
zAMV3gm5KYLh-2|1L0Ge$B!h{r-DQ>fCbn0Ox97f1?Okyz`Qtd5)NNn#&#uHTcbYPk
z9jek?Q6`~hC{L&aj#dH3CWXi#H<5ah%%UqG9gj(|p|CD$N(3b+5sNBbevSR9-~9{k
zKJ_Z*u3U`8=cu0xc1WZ|p(e#HhWdxNWa_J*5xY*`eBwo!8wJ0D@9gdoui#IfI~||-
z{vEjWM|a}W-??47RI8sT-lFjC`{8d<cdQyWlRx&a4&x>cBR^LJVWV_>OissJw6;?R
ztK>wf3*kOZ<(}eE+(g3ZiiVRaDNlnIMR%-fL8;M5WkgjW0VmSyX#s99z)X`bK2+Fh
zwul4pEk?6=6(!^k!s~DesXOm<t=fM?NR4@yYwS)}TG&!1eO|8!bK6@VATurY+{clD
zlpm)v9aAQ6h7ArJJ~10QQ#$mNrwn}<v&;cB*SDg*xf{I(D?F4xK5y0KrwNQF0H-?y
zhc}4s-hgx_Yqtl@?H;rpuZMN_c1(7h!1cvO6!QV3BLJ~ub!KuqR@2fOP%wTvbioGr
zgCV@pI00puW^}rO$g`W!Kxr?}GUHgg6X)f803&=f$>x6#1JprC#|MbZuXr*i)DRx7
znS*8J`Ka$?p$s>hFiJ8_c$e~jRmpB@2hzmvc#R?H9jkmRUi^+#g_k|hj@2Zf-m#hp
z0m>`yR^=V7&ArVy+IbWk>Nnu&V^8DHyZ?-*jy#23EwmW%bcr)r8=MXJ_4Z%mbFY66
zFIBw+r?2n7qLCe|@}o5{xIks?5b?tMZwR4+7Q&tmgle`Uu=Q00c5X+ovH`*R4g{MW
z2(-HpXm!Ka<bt!xiPpWHIJ&+W?>%0Hhwj~n-`=weufBT{HO-07u`?QsL)*ca6b33(
z9cJr0(LoEcnsBBlSGhN%-cUM|$>3<EevP|E$x@mEM<Kb7BHsSAJmBi_{F35mB0g0T
zUf%e&5OS&^UVUMKEAfNDfVlL7^?duY5RMXsg`L8e?D)av0gE4hcQ*^4b+jN4(qxwG
z#f5c}P?d?p=eHX!U3H!u>&PKdjVmSMrOAh~bJZyCz|z8g8jITMrHh)f3i7ZpW|E=}
z7OKAapXbrh%;(e*L%SMIN!Y_SObnD^p>GzJ_~u}tcNUg<=VFC#5tjJpViMW0n-44I
zx^oev`AfCMNljI|l_+!OFty(oW;&4`Ia@W>Jx{cEADfCT`{xhX!<=eJGkT!UTnc;U
zL}X+X#}Erw6TuwrKz?{jv|Y!v?_?W#vhGF~3w5o?hZnoT($N<2$j;WjJb{t!?!@W6
zhh$T-NTnRK-1g;hU(8Fi{Gb(6dec#7?nO^Jaj360($rpBz|s7i=ji0#L*ss?K7cvl
zaqxunVtuMN=+V{VL~Ub>SYP`60UWHXMMsZAJR4$>z`J<Jkni%qs5~%(1n*c~d-;WE
zscWEcdF{{-ak{mL(!*+rDGT$A#W?1tdAY?e#w-)(oASZQ<PziEZEj+u)AL<yaKj)j
z(+tyG#Ej;iYMf}@PwN&78oR4;v}q^JjRNq}d{5l$Pw=_|Sdo7j3NxkMNXb&^r16m*
zs{<m*GNq73jphfW`mRk--yA>RZ{VbIvePu=`sQ}{c=+Z5p*2~!xfbCge7+oo=W!vp
z<u#zGM!c~@o?#@1KAizO$DIY2d6?H<39`y{77q;;6_plubTD=?|Nj9l-$~(a95xle
zL+y^uV)v?en8~C!2%&#LUM4<w;{~FftMSas?_zIdGprdoLI^8%s-|VZz&lm*OQA0+
zLB1u7PlS&0o_*QZ&@g6gLKIGtlp+)_+}{ic;Uu~KD-ncmxr&vbBEfRq%RB+mS4t#=
zpTaDAWUYYAX91~VmUSG52%Gi%VKe>kJrTl2BtkECsnS40W*Tc`Rk$a;)b7}=#1r5!
zWUXKcy~LvtE6S7o3Tp+zKtFN-iX9s#%$bUong$^|V~m?zj?yU;#9a<v8jlt5j?3KQ
z0_2w#;fQ=*sRAkILjwy{FaFH6*zwLL>?BHrnM>xPxvmihw(Q2P_qK?gtb5+yCIrAa
zMfoVC^eMYYXDwR*pT`^7!OCbnQHO~$CllX?gA~SYRT#XEOO%dW3cDaC?D-<>#_Bp;
zeDk%!E&EXr6VBU-^D`6}t~~3)=urTJ0uASJwZ~0|8z4_mSm?^P+nG&fSj;SVwZdky
zz(kEV><hxfLRUUspt25?`}lZ)y<&T@-{(iVElmzlhTQmKARew{K<?tbs|IR5SJl;-
zhO(kVD9vp}S1(K1O~}q{L2*_+=Gk3H>j|Rq_(^metA)GMg&w{&yVH$szaE`kKD1W1
zqr0vN{=Ela*tZ*HO^0!o&4sl&2H1GEGeYQe@KFF$(c3lfE?{d~6AH&qg2_^dfIc6u
z)MjH+rWLJ@5G}$CXmbXHp!I0G3ztslp?b4XA3_6_!Ah!?IvO)o1K-$aqVnNgd3yZ2
zdL~XQ&Bw_OpJ)p#yDP~uVP``-t}fXl1gktL5=Q};Q#cA>|6vr5i#rN{cmo~<kOZDJ
z4=h-X2TxsDFv$W}U(ko9-X`p5-hpS2J&WJ&_$~gl>rX=P+UxI)>>`NARX*u;_~GdA
z21aZw`zjBky?fwSfZ=u{+}MiX;d=PCorG)sNp!w?5{)m^qx!{q9DA)1M?Yvm^?@#Q
zwtA9!1gDfw#Hxj-$)*uNQvCqC31gwY4gRnm$HUozBc4p^Tf+PgcfbR^yGQh2Y!fdy
zjem;O_G^lOtIMTDSqzeV^b=(vzS~Q-%iB-&-PYAX?j;Y>8A8&n!n`AiFPCHCXn^#7
zA}`so8de0ZY7!Sy@h&E@F9;!8(6K-@O3_QJIF5?42{>c^FxR(6IVySU1685998T07
zsX|G`crmEPgVVg>xi`eCEsR;q7ouoF;vG8-e*ORThn^8<^TZ&@y4FIXtRw^WDu%N`
zghA6sT5OmEv0lL#u49J<lRX(I^jmS#+zYq-=N>~6Ldbe5^#3XH;{06Y0DE--()jMQ
zVZ+`9I8@EA{|_IAP}M2J7Osaw&zEf__lJ)TJ`@LEr<QQ)@4_A|%Hc$Q*n{2ZD_qS^
za1=l|;Ky|>Zz4M+T^KQTh_)WyQJNVtW3Ge7GU|t0Ek5{c(i;hU&Kp0?{1`iFj{5zw
zcFeN?d)rE2(fh^xoR0(W`2FInRbE88$?Wq5Xx=XM0~UK4?A<-cB%Xx9x7<b{SiJ~M
zwL`ygp2whELmHNwCLl!p_Q{|FUJLI;<$SXsQCh&d0y_L;ni0MeE%4C1mY;Xdr-$Zf
zLWoN15EIR1yIpNGr}I)d$d^5_|GIpfH}h%{PAXJN;|vQ{#}&|opkJh3mZH9cX3P=w
z9nh?A4%g!e<BQXPB?ijpQ5P>|gm5bCrZs}A7hzhL>1bW1b9N)-b(6hG?EXqK(mXM9
z9;))@ijamAiE^vS=YovG;9K4ZVF&}H$jjipj}EA<jV3GzViLM=%v=bcHIv#auQ91b
zvk;5gtHESJONRq9CKX}U)bX+}n&%!qjvxN+354vqF!BypdnOF&e4c8Nc>Ui{I1ag1
z9c~OBMmA#a&KMn>@)a$U3K~fkYkQ$n+)51fd`g*w3bV`<{i&phnANIqCu`MyST7X%
z5g~FPC)kpO!V^pu!V^jUSa43Na3RMn%<&)|uM^mTP^qoyso$3ct73zVta7$^OyEl&
zWe>uwfJzauaImb>Z+xu69C0W^_OE8~pPc;Kf9bSIII;JLc;oPlE6;<U#^=57Z^P^r
zi;$L?fzFmTv8GvY_A+#}cHqQ;V{!;GxIFrxFHg&r!kxcrDKc}iu<@mLgjsOqG%J`q
zX9lJ%n1v&|4rm?)U`w-O%G?>KIZ`RoyLj~q?Ay2<h2<q;-NnLJ-jzCc`63+KeGnbZ
zeJ_`bPlp1&4`Z?jyGjmwxwxFFoXSqPe|ddOImCn`>Qe>H@=6`Lhko#TDWtgY6Qi%g
z1RFw9f_MZt9971|zXihv3O7FKs)13&PZQI0Q#IyI+=jHYb_4;<5;E;{R=B)5XlW})
zecNPOX5@$tzS*xsmEVABuMTdL6`j2vdX_`Tp~ahBA4a)3jEOYKE2GYQG;pG!78hK3
zF`BCfp0L_7Dq*(r!QCNvLMGf7`Z(5B<Y8C62c?-7)O5PBwA6;D4>#a5p+{g2d&Ojx
zCv-e<i&3daS^c^927K*|8Q6S+CTuc)>BKbrW$O{#7JP&TOrMC`Xvjof+8Uu(BU<B8
zlue(67aw~T3l>Jtc~W?jN}_{mvY=GSItiaj`?9PXUHrTE_d?am^Y9}!mhFf3;P+4b
zQ#Oq*zI@$huz2Qt*))vc#x_VC4Q1ipzyi3ymsk*kepoSf*2CO*OboC>z$&8PANfxt
z5hoF;I(m+*h7fL@6vpKA1kZbt-9VzOX!iYz+kV2{d1N2{@c8{A4`Qc}Ok&X}=T!nv
z7$lX!m(N9@bndG7<hc{2L+S?<VXAaAfJ9%S`d&1Bm=|Z!1V_MeX+hLm9C*j-;`7eH
zj3slaZlhz%$)hLm<|FH56L8H}Z$^4HP3$$m{XAb(wd0Kq;#ST+&`4vlNRXAJAiT=;
zqG<a=Qc(>dFQ*a$)P~<rZ^8!|O>me3lr5g{N+rOr${wHZK)NATSmtn<aIk7J4%JKn
zUsR=qp%l*$s(MfeAPp^s)$r;1KR=Xrsul#-Q;#_CE&BfrV8QA?!!zLKSL9_(oWw%t
zD8d0BW^^6GHNDbJvZIgqmKNK3xDRGQBD-rgy0AT?1Ba~bXfsj&WYSSh>Tq6W80%(r
z0KNbo-@g)j+ovJqr#dFTV&NzSMS5cKB9;0_tKANLXBUcly<(gbmP2T{I}Yx}ukQZ?
zc7L!<<_rxiOjLH4*81A<rneGXT~%ldQ@)H)<-3zssvg|(bSuo|X=2P!#s_8mkls>}
z#xAz&IRSj`^dG@MPeQ6#dd>=b<&&Ss;#vL8cU0x5F4Fj_)_|yQ*&)~Wwv0|3=K40P
z>N|t-J)7#=>p|#=X6W}jX`T~CkbRO@eyfZTmg`<mWtm2P4_hZ;)A$P!<TrSdNz4!-
zQju&ls`c7PL0uJ5P@52HT>Kj8k(<?k;5yVqvH^?+5~Xp3(GDw~HcZ9IfEA(cE`&N;
z#f58Oj|2YRURqCj@U<Jx#)27TsI70oZytPw)~&Sm&di0*Y?XGa^3K(qeCV^XQL1<0
z+R#zt%Inb4$0<~&n&5hlt!u6MvzB00>OUp3@F6b_1V?rjnWHNzk1vD>Uzmx=%wvy;
zN9bwH;WY)XFIZ1=H6Dh<>-wP}*~$DEy-d6-S-9h)Q6xS6uxAmzlsnQ>x6kW5u`c3E
z&sczOr1c=_bp{jkMkDmh7i%YZCo8)pk3s-T<s|f?Q>7rKfaUUIp2A>~&Gc2WE+Fip
zV=#k@k%fd8-gX_*`I0Asv$F>;{{3-y+-|YS?9yAWhsh#cK-%8Wg6IGCXiON4NEtIY
z9!5;$68iWfQpCb*uD>L5Mydin&vg6S8*#;LpMY6T!;bZvv4ePtu$ach#b=)`^t=<5
z-SR8{XI^oB<ZVL1=iQ|mX-t%kx1M-O2vZlS!=^C!+*U33j6~sR#XA`29{QmySdEl=
z6n!~r^lv*N(8{#ZaQg-OQ~bueSD7jN5Wo6LlaZib{%4EA=i775HoNptoq}M&>iJh(
zjFy_zb^>^5+W2V34BWM{2!~pHuo?Am2SS*ZXTp!(K8eo<E0cO{;(N{_{OO9BINIc;
zB9tD-nZ;&&<;7$8rnLb!ML3fHTDJe~g4JZ7pZIhui1)4SsxSA^*Pp{Hn_~a*8EIUw
zd^J9{_6pfF%t+J`#`g>TxO>t+8E*v3;pc&pN>+@00WZw0)i8E8keQx)_Rf3`N9e<}
z<O<`g{17fJQH8D9A0>!84k=|tajO-b3QxSb4zFx{Tj+VPSCfR;0Q&sL+E4f_NM$I4
zx0nnOUAW>LTzBqef;X(tNK4GbL4|1k`hst$oO{L+Oq@NH`gQ}}d-_#W?K>ju3dfh=
zqR(6_^lAhHK~x_&CSJo)ZmrZrKjk$TB#1>55x1o2HyLD^O1S?Wptec*t~NVxFs&Q)
zMkl&-KKy*V3+Lyy!{fEX<uRkfk%QW%Vl;Q;MhYoWSq-JC`-I7XjY6e3bQS2;Pk~1l
zyPM7$Zbn+@I5NT?zKf}b3ck$hp3njzTs6|7s&u?GzX<z%nAts+0#ya^Els<jaQo)-
zR~bQ?xAE}+4VGRsg?zZKz=f3=z3B0o;dG~Cd*>9i8PZ{~n&9*KBK;Znn?|!)?1oJ5
zbs^X7i;I2mjZ_h=?%A+i<_r&L`5X~62Kf>kZ!0SOt*H09aCJ@(R-`-N3TMC_%)q_x
zu7|Iv9TvN^kc)@c6@;m!7@s`-D->o_*q#cO&>}Bs!D@VQ##gl#WIue)ARoQO2<W)J
zU1%^n(H!#Qx<ab&GzYo@c6fTt$l6hjik3r2H-y9-pYK*+@N(W}pm{%xIG8gByNl1D
zb~Lzr4+bLn$>f<Kx9yQce050pNU%EE@KVcMuP?_Y-8ck2)IT|U1W{v#-_?uW?oQ}K
zUIb|lYE8?6H9ZsH3#)AD(2-uBkpY9rj1_3WnW2-gB(aViIh;austK;=*t*u5KWhqB
zS+9&8g2lhms+CC*l1g9$E0P-F%Vr_`WR=$y#A6|AM5xMo7OV=sN{GsSWWB;;p(_hh
zSpduSidh6s->5i(dqEmI3@licckuI0ew9F#1+1*+-TvYz03l3eRYS1K5F#Sg`bsGD
z!z%LxiR?uo?BWEgvMRvtNm05RE?r@-3M9roK{3ayQ)K_KkxS6>-)Ai-LvWR_7{pK;
zQ-)GjYG|Y}A+-F*BT;zqep89JALt(X;U7{6N!#g=3N<BY#guA6#D}2~CKoOde}qsa
znTi`jq_Sf*9_x+8*n=!F&<mmtj1Tr-h;FRa_r2L&3om&yu)%8+uUD(F!s5b})`8D`
z)vCer>67q6oM2Vq4J=sg8=~A54FQ}tbr{Kq$E|0mu@8*oW8j^uuWnv1+KrzUP$L08
z{)6l3{L{}KnVqWrVUV5UmS7Ry4ws>h7GWNKcaADf9}YtAr)7t$M-03cLs*<uw<c7J
zRT;_MESh|Bl60uG!05w@hPCtXKD@T&T~s&J!RMF$weL^xm<p7En~!>#SW+(Pd(n*H
ze~pk4Gf5Z*SZr46Q!0eOG~kzBdtPzr8cbg@SG;n=XI6JKwTiRB`6z+-OR%^M<I@yV
zHHuZTMLmS<39oT+CyG|9`Ftp#QU9k}UbK>vOtrF`4{NpjH=r(@hS#!|p~aX9BhC5d
zxsKrickFp(9|rIoj{Bu#+LD_VhHje$PJ<o+`L#yAurNIsg3axPjdubO_^}&~;bO>w
z)qWl>78Q!!tIEUHPkMJ$eSqDK@4;p6fGt;Y=<W!^?#spUNf%(&xJ9x4wI1L^;gj2_
zV0E6%>?h%BXvH%CLgb0-MiHp@hy31pRCFIhfwLBAKIx*yUUN2D)5oJKb1K@>rQ>hJ
zx~IPa97c#NCmYo$boSa+kh)-Xps7kq`5r4I-5!&6C>78^g`>hrT{<@DN^nG%17Cnz
zJHI8we*^_+z9#x73Xg?cMw+j)VAX7b$)Lk5bl|j56Uv6+_W#5fs|rk^ypu|!5?(ai
z<b1JvBKop>(QnAl1nWg;%8yzVB)d@bM7(K5%%_DwmF*Ojg`=d>xFm$Fe7B1bs<K;B
z#ZFd9sLFo9$M8|x5Il}Rv=eqO`IiKSQV+*^9gTl1SY-igM373VK?qiP_bLlfna6He
zh{{4%gJ^dm96mlkJor-HBWJequh3E~vMMu(C=IL#u)Sp9lqrbnDbE~+qUYa;Ujmnt
ztW_Y)8hi<Tx$#{YyGXPjPO#(RkMsWjEtDclQLxHL(fJ@T+!dvr>LJ8J0c!e|ACM6R
zcPJ{HXspErS6qVT6nCtiD$uH%M1s|Ik3BOe!D`Y-<W<z`5W<Z>31f6xc+wc8clMU3
z`~EQELy?n2iR{y)lFyBnOD*ARBH?B-g4$I4CUQGw(99k)W7DZlw(?vgQ#Jxa$g=Pn
z9}O|JV%As>4nGprU$SMP1&uIAB`+yJv%F>XR7SFCJjIIpBYcRU2v+xP+9`8J5Xm&u
zWEwq(li~xs=&aM?1glA63_FTsqfRA>$@Ue=hdFk=k7mpogO4)24K#fb)?=5Q<dAg5
zq|hq3fCe$Q>(p6LiEJFxXQ2h@aOzBAw<;H+K@X&deJBd|VrsYxlZZy=wg0iIz*NdF
znKUZlMZ@jSmsIMkvQG9RloSN3^dsi@!Yt{9@RS&0murv(p)xNV5*xk{ka>b1`}#j$
zz9)pP;&N@~$@Z*gL90-uxP*w3^%Rjfi<<@Wq)LKS1NhSN=x$Zkvk+C@vC4c|Pd`MG
zP&G2gCtj?XNiGvb;3`{1R01E#B2@7kg=D6D@h`cL*t1{RAlXV#bV8-PM)Wbz;Hc6P
zL0@MAf~|H>3@z_{ks!eTA}Bf3{YyDxHE9gBaFVNn<Xk0>k*HFwG}0p_>qZXh2Z>SL
zSSJLlEp?4DXD~>%ghoDpjIwDHvF_1luxRljnFEvx-qV;ku3YAf1QL})qI{>)vIg4<
z<KrG|IKvN-68bsS1RP009(dFcoUzJFO4T~dZQ{dNf1`v{N;al%R<xs3wu#a?%q`_Z
ziWG94Y<&%(AWyYANVfk@w2R>*qz+~6r9fjik}*mh$OvP{!9DoR1AoGSZF^+S$RU{$
zOH|xiep6}o^H(g!9XEb%fTIAkFm?}D;<l%Op%ktbl5O6n+$6JadKAv^*5q&(cybtt
z*2p=DgsU{V_>OS2kW!=9!WgAnAlbAh*>>WbY5L+Q$wG>m1)!``rGvE0V!x7&Y$p`9
zWJSdzz4)-61*EKzt)<<mEEpwwAzURjzyeZsPi7%Rm3F1-gb<a@>?bIMtfZ0bWg#o8
zoL-SH_AlZIi%qA}j#EAKMm`cC`ue|6Wj*g!l?1A?fR%Twa=TRvQu!+cq-^H!1w$zO
zBMDYn%PJ*6<};#Qo4hksHgi(hEi3Fs7#R`w1Y#<FMA^uQ>SFm?leoSdg2GhCB_rOw
zhLit4A(!(2f>kcAcx$y;(Wg?Z$+;cwis~nmgGRDx9Ez}2dZhXX3s%p)^n#&hGC?w#
z9r*`_O%Zo;hazbsV6EtExYtSq#akrYzIgG8=Wxk&v1fBK@53ip9qx)5YIws3krMj(
zuNJH(D(+<StmR+JZ=!fKktp(%0*T_oSbw90R7y1Jb`bTD$V(D+(_d`y^QaHyvpQs?
zP#?*b&mgK;!4SNT2$F3R9|=~65AjnUjp0bff5!vMg4JLA?cUf$9wTwawV^R*ROXRd
z^T{YHYNs`CWw24$#f8(~JXH&K-t@%}m0-0`K_oybDNH8B)N-6!9SjO7wZ*>aQ8+Q7
zXa$*4R))VMlYs~^nP5}M3p<Sjsg!k!&(^RZ)qbZB#wgta$)-KYwiD+}(-%ic7E;WT
zU{#S%2=}BFCW#fXi!fPL%AActPp(+yu!wXaX30DjsD`AAvxT0If)I8rEG3l%s6wd9
zsw{{l5`tD)uqxDuUJ|TE?#ZAZmURljs$MVeQZ)#Q>{yj|uqu4z7=Xx*RTi>R`;Ckb
zZ03(J$~-pESL{j^YLqR3j{=ajte15RiO+eK^+alW0VO+Z#|~wv-KqH_B3RW7Km!_K
z{Z~OQ=OhHH47C$2eJZ7uoLendTD*P|pCnRAdn~lm(>F!@pbZvU;W5-<)-;`zbwhzh
zJkcjVilG;H3`B78(IkpPb~mA@OwuGo-vEZ1Y^l7Xp=jv@G>S}l*anYe3uyFl>ZBx!
zq|>BPFM^X|dmIp2{x#c)tR{v2A|EKAzV@0))Oh}5251$MU3hBwPd1)p;}{AO<xjIO
z)IhB71YspYBIij&-Cs=VNsrKud@-JaNTDv0EuR#EjK>hXjtD*ytd2h7yOcy-&wtAU
zyZgxKomrbqi6zsNIh?^Z`32MG2vsXB+F_36!<AecOC^QFRR>Wdm&PF>@k6MAzUfgo
zF`;M$nNn7Uza*1^R1`_Xox-5Np+#IPWjzY>I!&Zh*IM9ok4@bqA7+y2i*u&wi=!k9
zDdv6zs|=x+O+ryDWtA0C{^W{PLG)z-s$v#`RlfU05~LzXZdrKBX0n$At3)wptg@XX
zY!$*(4qxyTlF}{GKtB<|D(^gH!6^$^jnWYSLa?fr1*=9ypgMqH_5Teh20C5<B~3&5
z;B!=g2y8Wy5(pp40ZM@RFaT8#3rko#4Mh!*1LlL&g8T*r$ZAmfHKPNov;*L9W?%pS
XKVh(9{621T00000NkvXXu0mjfBF0x3

literal 0
HcmV?d00001

diff --git a/projects/weight-converter/app.js b/projects/weight-converter/app.js
new file mode 100644
index 0000000..b992071
--- /dev/null
+++ b/projects/weight-converter/app.js
@@ -0,0 +1,34 @@
+const form = document.querySelector('form');
+
+
+//add an event listener to the form
+
+form.addEventListener('submit', function(e){
+    e.preventDefault();
+    const input = document.querySelector('input');
+    let results = document.querySelector('span');
+    let poundsToKG;
+
+    if ((input.value <= 0) || (isNaN(input.value))){
+        results.classList.add('error');
+        results.innerHTML = "<p>Please enter a value number!</p>"
+        setTimeout(function(){
+            results.innerHTML = '';
+            
+            results.classList.remove('error');
+        }, 2000)
+        input.value = '';
+    } else {
+        poundsToKG = Number(input.value) / 2.2;
+        results.classList.add('no-error');
+        results.innerHTML = `${poundsToKG.toFixed(2)}`;
+        setTimeout(function(){
+            results.innerHTML = '';
+            input.value = '';
+            results.classList.remove('no-error');
+        }, 10000)
+        
+    }
+    
+    
+})
diff --git a/projects/weight-converter/index.html b/projects/weight-converter/index.html
new file mode 100644
index 0000000..39e26e1
--- /dev/null
+++ b/projects/weight-converter/index.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <link rel="stylesheet" href="style.css">
+    <title>Weight Converstion Tool</title>
+</head>
+<body>
+    <div>
+        <form>
+            <h1>Weight Converter (pounds to kg)</h1>
+            <p>Enter weight value in pounds:</p>
+            <label>Pounds</label>
+            <input type="number" step=".1">
+            <p>Your weight in Kilograms is: <span id="result"></span></p>
+        </form>
+    </div>
+    <script src="app.js"></script>
+</body>
+</html>
diff --git a/projects/weight-converter/style.css b/projects/weight-converter/style.css
new file mode 100644
index 0000000..67bd921
--- /dev/null
+++ b/projects/weight-converter/style.css
@@ -0,0 +1,16 @@
+form {
+    background-color: rgb(241, 9, 144);
+    color: white;
+    width: 500px;
+    height: 300px;
+    margin: 100px auto 100px;
+    padding: 25px;
+}
+
+.error{
+    color: red;
+}
+
+.no-error{
+    color: rgb(6, 48, 2);
+}

From ea47391de1827c15fe68c82750895090889846a7 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 20 Nov 2022 12:42:27 +0800
Subject: [PATCH 04/54] edit loan calculator project

---
 projects/loan-calculator/index.html | 67 +++++++++--------------------
 projects/loan-calculator/index.js   | 21 +++++----
 projects/loan-calculator/style.css  | 25 ++++-------
 3 files changed, 41 insertions(+), 72 deletions(-)

diff --git a/projects/loan-calculator/index.html b/projects/loan-calculator/index.html
index d2722a1..5762407 100644
--- a/projects/loan-calculator/index.html
+++ b/projects/loan-calculator/index.html
@@ -1,50 +1,25 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
-    <link rel="stylesheet" href="style.css" />
-    <title>Loan Calculator</title>
-  </head>
-
-  <body>
-    <div id="loancal">
-      <h1>Loan Calculator</h1>
-      <p>
-        Loan Amount: $<input
-          id="amount"
-          type="number"
-          min="1"
-          max="5000000"
-          onchange="computeLoan()"
-        />
-      </p>
-      <p>
-        Interest Rate: %<input
-          id="interest_rate"
-          min="0"
-          max="100"
-          value="10"
-          step=".1"
-          type="number"
-          onchange="computeLoan()"
-        />
-      </p>
-      <p>
-        Months to Pay:
-        <input
-          id="months"
-          type="number"
-          min="1"
-          max="300"
-          value="1"
-          step="1"
-          onchange="computeLoan()"
-        />
-      </p>
-      <h2 id="payment"></h2>
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>loan calculator</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
+    <div class="container">
+        <h1>loan calculator</h1>
+        <p>loan amount $
+            <input onchange="calculateLoan()" class="input"  type="number" id="amount" min="1" max="500000">
+        </p>
+        <p>interest rate % <input onchange="calculateLoan()" class="input" type="number" id="interest_rate" min="0" max="100"  step=".1">
+        </p>
+        <p>month to pay
+            <input onchange="calculateLoan()" class="input" type="number" id="months" min="1" max="500000">
+        </p>
+        <p id="payment">monthly payment: </p>
     </div>
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/loan-calculator/index.js b/projects/loan-calculator/index.js
index 5f3d29d..260f27d 100644
--- a/projects/loan-calculator/index.js
+++ b/projects/loan-calculator/index.js
@@ -1,9 +1,12 @@
-function computeLoan() {
-  const amount = document.querySelector("#amount").value;
-  const interest_rate = document.querySelector("#interest_rate").value;
-  const months = document.querySelector("#months").value;
-  const interest = (amount * (interest_rate * 0.01)) / months;
-  const payment = (amount / months + interest).toFixed(2);
-
-  document.querySelector("#payment").innerHTML = `Monthly Payment = ${payment}`;
-}
+function calculateLoan() {
+    const amount = document.getElementById("amount").value
+    const interest_rate = document.getElementById("interest_rate").value
+    const months = document.getElementById("months").value
+    const interest = (amount * (interest_rate * .01)) / months
+
+    const payment = (amount / months + interest).toFixed(2)
+
+    document.getElementById("payment").innerHTML = `monthly payment: ${payment}`
+
+
+}
\ No newline at end of file
diff --git a/projects/loan-calculator/style.css b/projects/loan-calculator/style.css
index abdb9fc..321fc2b 100644
--- a/projects/loan-calculator/style.css
+++ b/projects/loan-calculator/style.css
@@ -1,32 +1,23 @@
-
 body{
     padding: 0;
     margin: 0;
     display: flex;
+    height: 100vh;
     justify-content: center;
     align-items: center;
-    height: 100vh;
     font-family: 'Courier New', Courier, monospace;
 }
 
-#loancal {
-   padding: 20px;
-   border-radius: 10px;
-    background-color:darkcyan;
+.container{
+    background-color: darkcyan;
     color: aliceblue;
+    padding: 20px;
+    border-radius: 10px;
+
 }
 
-#months, #amount, #interest_rate{
+.input{
     width: 100%;
-    height: 40px;
+    height: 100%;
     font-size: 20px;
-
-}
-
-#interest_rate {
-    margin-left: 2px;
-}
-
-h1 {
-    font-size:40px;
 }
\ No newline at end of file

From c6c243a0f28e4ae0fa22ce7bb214abeb7a998274 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 28 Nov 2022 12:02:14 +0800
Subject: [PATCH 05/54] update currency converter project

---
 projects/currency-converter/index.html        | 119 ++----------------
 .../{script.js => index.js}                   |   0
 projects/currency-converter/readme.md         |   5 -
 projects/currency-converter/style.css         |  69 ++++------
 4 files changed, 35 insertions(+), 158 deletions(-)
 rename projects/currency-converter/{script.js => index.js} (100%)
 delete mode 100644 projects/currency-converter/readme.md

diff --git a/projects/currency-converter/index.html b/projects/currency-converter/index.html
index f88d169..88358ff 100644
--- a/projects/currency-converter/index.html
+++ b/projects/currency-converter/index.html
@@ -4,139 +4,44 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Currency_Converter_in_Javascript</title>
+    <title>Currency Converter</title>
     <link rel="stylesheet" href="style.css" />
 </head>
 <body>
-  <h1>Currency Converter</h1>
   <div class="main-box">
-  <div class="second-box"> 
+    <h1>Currency Converter</h1>
     
-    <p><h3>Welcome! Please Enter the values</h3></p> 
-
-    <div class="container">
-      <div class="currency">
+       <div class="currency">
         <select id="curr-first">
-          <option value="AED">AED</option>
-          <option value="ARS">ARS</option>
           <option value="AUD">AUD</option>
-          <option value="BGN">BGN</option>
-          <option value="BRL">BRL</option>
-          <option value="BSD">BSD</option>
           <option value="CAD">CAD</option>
-          <option value="CHF">CHF</option>
-          <option value="CLP">CLP</option>
-          <option value="CNY">CNY</option>
-          <option value="COP">COP</option>
-          <option value="CZK">CZK</option>
-          <option value="DKK">DKK</option>
-          <option value="DOP">DOP</option>
-          <option value="EGP">EGP</option>
           <option value="EUR">EUR</option>
-          <option value="FJD">FJD</option>
           <option value="GBP">GBP</option>
-          <option value="GTQ">GTQ</option>
-          <option value="HKD">HKD</option>
-          <option value="HRK">HRK</option>
-          <option value="HUF">HUF</option>
-          <option value="IDR">IDR</option>
-          <option value="ILS">ILS</option>
-          <option value="INR" selected>INR</option>
-          <option value="ISK">ISK</option>
+          <option value="INR">INR</option>
           <option value="JPY">JPY</option>
-          <option value="KRW">KRW</option>
-          <option value="KZT">KZT</option>
-          <option value="MXN">MXN</option>
-          <option value="MYR">MYR</option>
-          <option value="NOK">NOK</option>
-          <option value="NZD">NZD</option>
-          <option value="PAB">PAB</option>
-          <option value="PEN">PEN</option>
-          <option value="PHP">PHP</option>
-          <option value="PKR">PKR</option>
-          <option value="PLN">PLN</option>
-          <option value="PYG">PYG</option>
-          <option value="RON">RON</option>
-          <option value="RUB">RUB</option>
-          <option value="SAR">SAR</option>
-          <option value="SEK">SEK</option>
-          <option value="SGD">SGD</option>
-          <option value="THB">THB</option>
-          <option value="TRY">TRY</option>
-          <option value="TWD">TWD</option>
-          <option value="UAH">UAH</option>
-          <option value="USD">USD</option>
-          <option value="UYU">UYU</option>
-          <option value="VND">VND</option>
-          <option value="ZAR">ZAR</option>
+          <option value="USD" selected>USD</option>
         </select>
-        <input type="number" id="worth-first" placeholder="0" value="1" />
+        <input type="number" id="worth-first" value="1" min="0" />
       </div>
 
-      <div class="exchange-rate-container">
-        <div class="exchange-rate" id="exchange-rate"></div> 
-      </div> 
+      
 
       <div class="currency">
         <select id="curr-second">
-          <option value="AED">AED</option>
-          <option value="ARS">ARS</option>
           <option value="AUD">AUD</option>
-          <option value="BGN">BGN</option>
-          <option value="BRL">BRL</option>
-          <option value="BSD">BSD</option>
           <option value="CAD">CAD</option>
-          <option value="CHF">CHF</option>
-          <option value="CLP">CLP</option>
-          <option value="CNY">CNY</option>
-          <option value="COP">COP</option>
-          <option value="CZK">CZK</option>
-          <option value="DKK">DKK</option>
-          <option value="DOP">DOP</option>
-          <option value="EGP">EGP</option>
           <option value="EUR">EUR</option>
-          <option value="FJD">FJD</option>
           <option value="GBP">GBP</option>
-          <option value="GTQ">GTQ</option>
-          <option value="HKD">HKD</option>
-          <option value="HRK">HRK</option>
-          <option value="HUF">HUF</option>
-          <option value="IDR">IDR</option>
-          <option value="ILS">ILS</option>
-          <option value="INR">INR</option>
-          <option value="ISK">ISK</option>
+          <option value="INR" selected>INR</option>
           <option value="JPY">JPY</option>
-          <option value="KRW" selected>KRW</option>
-          <option value="KZT">KZT</option>
-          <option value="MXN">MXN</option>
-          <option value="MYR">MYR</option>
-          <option value="NOK">NOK</option>
-          <option value="NZD">NZD</option>
-          <option value="PAB">PAB</option>
-          <option value="PEN">PEN</option>
-          <option value="PHP">PHP</option>
-          <option value="PKR">PKR</option>
-          <option value="PLN">PLN</option>
-          <option value="PYG">PYG</option>
-          <option value="RON">RON</option>
-          <option value="RUB">RUB</option>
-          <option value="SAR">SAR</option>
-          <option value="SEK">SEK</option>
-          <option value="SGD">SGD</option>
-          <option value="THB">THB</option>
-          <option value="TRY">TRY</option>
-          <option value="TWD">TWD</option>
-          <option value="UAH">UAH</option>
           <option value="USD">USD</option>
-          <option value="UYU">UYU</option>
-          <option value="VND">VND</option>
-          <option value="ZAR">ZAR</option>
         </select>
-        <input type="number" id="worth-second" placeholder="0" />
-      </div>
+        <input type="number" id="worth-second" disabled />
     </div>
+
+      <p class="exchange-rate" id="exchange-rate"></p> 
 </div>
 </div>
-    <script src="script.js"></script>
+    <script src="index.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/projects/currency-converter/script.js b/projects/currency-converter/index.js
similarity index 100%
rename from projects/currency-converter/script.js
rename to projects/currency-converter/index.js
diff --git a/projects/currency-converter/readme.md b/projects/currency-converter/readme.md
deleted file mode 100644
index fc19e5a..0000000
--- a/projects/currency-converter/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-I have added a Currency Converter.
-It allows user to type digits(amount) and we have real time conversions as they type.
-It fetches recent rates from the exchangerate API.
-The UI is pretty simple and neat.
-
diff --git a/projects/currency-converter/style.css b/projects/currency-converter/style.css
index 0ca98bd..b533d4e 100644
--- a/projects/currency-converter/style.css
+++ b/projects/currency-converter/style.css
@@ -1,83 +1,60 @@
-* {
-    box-sizing: border-box;
-  }
+
 body {
    
-    font-family: Arial, Helvetica, sans-serif;
+    font-family:'Courier New', Courier, monospace;
     display: flex;
     flex-direction: column;
-    align-items: center;
     justify-content: center;
     height: 100vh;
     margin: 0;
-    padding: 20px;
-    background-image: linear-gradient(rgb(42, 105, 177),rgb(67, 207, 67) );
-  }
-  
-  h1 {
-    color:blanchedalmond;
-    text-align: center;
-  }
-  h3{
-    text-align: center;
-  }
-  
-  p {
-    text-align: center;
+    padding: 0;
+    background: yellow;
+    align-items: center;
+
   }
 
-  .main-box{
-    border:12px solid rgb(56, 27, 187);
-    background-color: #ff3399; 
-    border-radius: 25px;
-    padding:40px;
 
-  }
-  .second-box{
-    border:2px solid ;
-    background-color:#ff99cc;
-    border-radius:20px;
+  .main-box{
+    background-color: darkcyan; 
+    color: aliceblue;
+    border-radius: 5px;
     padding:10px;
+    max-width: 600px;
+    text-align: center;
+
+
   }
   
   .currency {
-    padding: 40px 0;
+    padding: 20px;
     display: flex;
     align-items: center;
     justify-content: space-between;
   }
   
   .currency select {
-    padding: 10px 20px 10px 10px;
-    
-    appearance: none;
-    border: 1px solid #dedede;
-    font-size: 16px;
-    background: transparent;
-    background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%20000002%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');
-    background-position: right 10px top 50%, 0, 0;
-    background-size: 12px auto, 100%;
-    background-repeat: no-repeat;
+    padding: 10px;
+
   }
   
   .currency input {
     border:0px;
     background: transparent;
-    font-size: 30px;
+    font-size: 25px;
     text-align: right;
+    color: aliceblue;
   }
   
   
   
   .exchange-rate {
-    color:aliceblue;
-    font-size: 14px;
-    padding: 0 10px;
+    font-size: 16px;
+    padding: 10px;
+    font-weight: 600;
   }
   
   select:focus,
-  input:focus,
-  button:focus {
+  input:focus {
     outline: 0;
   }
   
\ No newline at end of file

From 266dca8e5261901995b29ae3e0a17ee454596b4a Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 28 Nov 2022 15:17:23 +0800
Subject: [PATCH 06/54] update currency converter project

---
 projects/currency-converter/index.html |  4 +-
 projects/currency-converter/index.js   | 60 ++++++++------------------
 2 files changed, 20 insertions(+), 44 deletions(-)

diff --git a/projects/currency-converter/index.html b/projects/currency-converter/index.html
index 88358ff..45f40ae 100644
--- a/projects/currency-converter/index.html
+++ b/projects/currency-converter/index.html
@@ -12,7 +12,7 @@
     <h1>Currency Converter</h1>
     
        <div class="currency">
-        <select id="curr-first">
+        <select id="currency-first">
           <option value="AUD">AUD</option>
           <option value="CAD">CAD</option>
           <option value="EUR">EUR</option>
@@ -27,7 +27,7 @@ <h1>Currency Converter</h1>
       
 
       <div class="currency">
-        <select id="curr-second">
+        <select id="currency-second">
           <option value="AUD">AUD</option>
           <option value="CAD">CAD</option>
           <option value="EUR">EUR</option>
diff --git a/projects/currency-converter/index.js b/projects/currency-converter/index.js
index 1407f01..585c669 100644
--- a/projects/currency-converter/index.js
+++ b/projects/currency-converter/index.js
@@ -1,51 +1,27 @@
-const exchange_rate = document.getElementById('exchange-rate');
-const curr_first = document.getElementById('curr-first');
-const curr_second = document.getElementById('curr-second');
-const worth_first = document.getElementById('worth-first');
-const worth_second = document.getElementById('worth-second');
+const exchangeRateEl = document.getElementById("exchange-rate");
+const currencyFirstEl = document.getElementById("currency-first");
+const currencySecondEl = document.getElementById("currency-second");
+const worthFirstEl = document.getElementById("worth-first");
+const worthSecondEl = document.getElementById("worth-second");
 
 function convert() {
-  const currency_first = curr_first.value;
-  const currency_second = curr_second.value;
-//using API for conversion of currency units
-  fetch(`https://v6.exchangerate-api.com/v6/16947c81da979880bacde4f5/latest/${currency_first}`)
+  const currencyFirstValue = currencyFirstEl.value;
+  const currencySecondValue = currencySecondEl.value;
+  //using API for conversion of currency units
+  fetch(
+    `https://v6.exchangerate-api.com/v6/5f9d1c87f7250159c9c9b17d/latest/${currencyFirstValue}`
+  )
     .then((res) => res.json())
     .then((data) => {
-      
-      const rate = data.conversion_rates[currency_second];
-      exchange_rate.innerText = `1 ${currency_first} = ${rate} ${currency_second}`;
+      const rate = data.conversion_rates[currencySecondValue];
+      exchangeRateEl.innerText = `1 ${currencyFirstValue} = ${rate} ${currencySecondValue}`;
 
-      worth_second.value = (worth_first.value * rate).toFixed(5);
+      worthSecondEl.value = (worthFirstEl.value * rate).toFixed(2);
     });
 }
 //some javascript event listeners
-curr_first.addEventListener('change', convert);
-worth_first.addEventListener('input', convert);
-curr_second.addEventListener('change', convert);
-worth_second.addEventListener('input', convert);
+currencyFirstEl.addEventListener("change", convert);
+worthFirstEl.addEventListener("input", convert);
+currencySecondEl.addEventListener("change", convert);
+worthSecondEl.addEventListener("input", convert);
 convert();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

From 8f870b71eef21c8d810ef6a81132da394d8ca0d0 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Tue, 29 Nov 2022 09:01:08 +0800
Subject: [PATCH 07/54] update the loan calculator project

---
 projects/loan-calculator/index.html | 20 +++++++++++---------
 projects/loan-calculator/index.js   | 17 ++++++++++-------
 projects/loan-calculator/style.css  | 10 +++++++---
 3 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/projects/loan-calculator/index.html b/projects/loan-calculator/index.html
index 5762407..8285844 100644
--- a/projects/loan-calculator/index.html
+++ b/projects/loan-calculator/index.html
@@ -4,22 +4,24 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>loan calculator</title>
+    <title>Loan Calculator</title>
     <link rel="stylesheet" href="style.css">
 </head>
 <body>
     <div class="container">
-        <h1>loan calculator</h1>
-        <p>loan amount $
-            <input onchange="calculateLoan()" class="input"  type="number" id="amount" min="1" max="500000">
+        <h1>Loan Calculator</h1>
+        <p>Loan Amount $
+            <input onchange="calculateLoan()" class="input" type="number" id="loan-amount" min="1" max="500000" value="10000">
         </p>
-        <p>interest rate % <input onchange="calculateLoan()" class="input" type="number" id="interest_rate" min="0" max="100"  step=".1">
+        <p>Interest Rate %
+            <input onchange="calculateLoan()" class="input" type="number" id="interest-rate" min="0" max="100" value="10" step=".1">
         </p>
-        <p>month to pay
-            <input onchange="calculateLoan()" class="input" type="number" id="months" min="1" max="500000">
+        <p>Months to pay
+            <input onchange="calculateLoan()" class="input" type="number" id="months-to-pay" min="6" max="48" value="12">
         </p>
-        <p id="payment">monthly payment: </p>
+        <p class="payment" id="payment">Monthly Payment:</p>
     </div>
+
     <script src="index.js"></script>
 </body>
-</html>
\ No newline at end of file
+</html> 
\ No newline at end of file
diff --git a/projects/loan-calculator/index.js b/projects/loan-calculator/index.js
index 260f27d..fb038fe 100644
--- a/projects/loan-calculator/index.js
+++ b/projects/loan-calculator/index.js
@@ -1,12 +1,15 @@
 function calculateLoan() {
-    const amount = document.getElementById("amount").value
-    const interest_rate = document.getElementById("interest_rate").value
-    const months = document.getElementById("months").value
-    const interest = (amount * (interest_rate * .01)) / months
+  loanAmountValue = document.getElementById("loan-amount").value;
 
-    const payment = (amount / months + interest).toFixed(2)
+  interestRateValue = document.getElementById("interest-rate").value;
 
-    document.getElementById("payment").innerHTML = `monthly payment: ${payment}`
+  MonthsToPayValue = document.getElementById("months-to-pay").value;
 
+  interest = (loanAmountValue * (interestRateValue * 0.01)) / MonthsToPayValue;
 
-}
\ No newline at end of file
+  monthlyPayment = (loanAmountValue / MonthsToPayValue + interest).toFixed(2);
+
+  document.getElementById(
+    "payment"
+  ).innerHTML = `Monthly Payment: ${monthlyPayment}`;
+}
diff --git a/projects/loan-calculator/style.css b/projects/loan-calculator/style.css
index 321fc2b..6ca571b 100644
--- a/projects/loan-calculator/style.css
+++ b/projects/loan-calculator/style.css
@@ -9,15 +9,19 @@ body{
 }
 
 .container{
-    background-color: darkcyan;
+    background: darkcyan;
     color: aliceblue;
     padding: 20px;
     border-radius: 10px;
-
 }
 
 .input{
     width: 100%;
-    height: 100%;
+    font-size: 20px;
+    height: 30px;
+}
+
+.payment{
+    font-weight: 600;
     font-size: 20px;
 }
\ No newline at end of file

From 55ae0294a4b059bacdce4a9b8e22235785c7df34 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Wed, 30 Nov 2022 20:18:34 +0800
Subject: [PATCH 08/54] update anime pics generator project

---
 .../anime-pics-genrator/.vscode/settings.json |  3 +
 projects/anime-pics-genrator/index.html       | 32 +++----
 projects/anime-pics-genrator/index.js         | 26 ++++++
 projects/anime-pics-genrator/script.js        | 14 ----
 projects/anime-pics-genrator/spinner.svg      |  6 ++
 projects/anime-pics-genrator/style.css        | 83 ++++++-------------
 6 files changed, 74 insertions(+), 90 deletions(-)
 create mode 100644 projects/anime-pics-genrator/.vscode/settings.json
 create mode 100644 projects/anime-pics-genrator/index.js
 delete mode 100644 projects/anime-pics-genrator/script.js
 create mode 100644 projects/anime-pics-genrator/spinner.svg

diff --git a/projects/anime-pics-genrator/.vscode/settings.json b/projects/anime-pics-genrator/.vscode/settings.json
new file mode 100644
index 0000000..6b665aa
--- /dev/null
+++ b/projects/anime-pics-genrator/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+  "liveServer.settings.port": 5501
+}
diff --git a/projects/anime-pics-genrator/index.html b/projects/anime-pics-genrator/index.html
index aeedb6f..424dfd4 100644
--- a/projects/anime-pics-genrator/index.html
+++ b/projects/anime-pics-genrator/index.html
@@ -4,32 +4,26 @@
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Random Anime profile</title>
+    <title>Anime Pics Generator</title>
     <link rel="stylesheet" href="style.css" />
-    <script src="script.js" defer></script>
   </head>
   <body>
     <!-- main container  -->
-    <div class="main-container">
+    <div class="container">
       <!-- the anime container  -->
+      <h3>Anime Pics Generator</h3>
+
+      <button id="btn" class="get-anime">Get Anime</button>
+      <!-- the anime box  -->
       <div class="anime-container">
-        <h3>Anime Pics Genrator</h3>
-        <h2>genrates Random Animes profile pics</h2>
-        <button id="btn" class="get-anime">Get Anime</button>
-        <!-- the anime box  -->
-        <div class="anime-box">
-          <div class="hero-img">
-            <img
-              src="https://w.wallhaven.cc/full/lq/wallhaven-lqxr3y.jpg"
-              class="anime"
-              alt="hero-img"
-            />
-          </div>
-          <div class="hero-name">
-            <h3></h3>
-          </div>
-        </div>
+        <!-- <img
+          src="example-for-styling.jpg"
+          class="anime-img"
+        /> -->
+        <img src="spinner.svg" class="anime-img" />
+        <h3 class="anime-name">Anime Name</h3>
       </div>
     </div>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/anime-pics-genrator/index.js b/projects/anime-pics-genrator/index.js
new file mode 100644
index 0000000..55a158c
--- /dev/null
+++ b/projects/anime-pics-genrator/index.js
@@ -0,0 +1,26 @@
+const btnEl = document.getElementById("btn");
+const animeBoxEl = document.querySelector(".anime-container");
+const animeImgEl = document.querySelector(".anime-img");
+const animeNameEl = document.querySelector(".anime-name");
+
+btnEl.addEventListener("click", async function () {
+  try {
+    btnEl.disabled = true;
+    btnEl.innerText = "Loading...";
+    animeNameEl.innerText = "Updating...";
+    animeImgEl.src = "spinner.svg";
+    const response = await fetch("https://api.catboys.com/img");
+    const data = await response.json();
+    animeImgEl.src = data.url;
+
+    animeBoxEl.style.display = "block";
+    animeNameEl.innerText = data.artist;
+    btnEl.disabled = false;
+    btnEl.innerText = "Get Anime";
+  } catch (error) {
+    console.log(error);
+    btnEl.disabled = false;
+    btnEl.innerText = "Get Anime";
+    animeNameEl.innerText = "An error happened, try again";
+  }
+});
diff --git a/projects/anime-pics-genrator/script.js b/projects/anime-pics-genrator/script.js
deleted file mode 100644
index 9772363..0000000
--- a/projects/anime-pics-genrator/script.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const getBTN = document.getElementById("btn");
-const animeBox = document.querySelector(".anime-box");
-const anime = document.querySelector(".anime");
-const animeName = document.querySelector(".hero-name");
-
-const api_url = `https://api.catboys.com/img`;
-
-getBTN.addEventListener("click", async function () {
-  const response = await fetch(api_url);
-  const data = await response.json();
-  anime.src = data.url;
-  animeBox.style.display = "block";
-  animeName.textContent = data.artist;
-});
diff --git a/projects/anime-pics-genrator/spinner.svg b/projects/anime-pics-genrator/spinner.svg
new file mode 100644
index 0000000..0476499
--- /dev/null
+++ b/projects/anime-pics-genrator/spinner.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: none; display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
+<circle cx="50" cy="50" fill="none" stroke="#93dbe9" stroke-width="1" r="6" stroke-dasharray="28.274333882308138 11.42477796076938">
+  <animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
+</circle>
+<!-- [ldio] generated by https://loading.io/ --></svg>
\ No newline at end of file
diff --git a/projects/anime-pics-genrator/style.css b/projects/anime-pics-genrator/style.css
index d4471af..ee907a8 100644
--- a/projects/anime-pics-genrator/style.css
+++ b/projects/anime-pics-genrator/style.css
@@ -1,88 +1,57 @@
-@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap");
-
-* {
-  box-sizing: border-box;
-}
 
 body {
-  font-family: "Poppins", sans-serif;
-  font-weight: normal;
-  background: linear-gradient(to right, #00afff, #00ff6c);
+  margin: 0;
+  background: linear-gradient(to right, lightblue, yellow);
   display: flex;
-  flex-direction: column;
+  height: 100vh;
   justify-content: center;
   align-items: center;
-  height: 100vh;
-  overflow: hidden;
-  margin: 0;
+  font-family:'Courier New', Courier, monospace;
 }
 
-.main-container {
-  background-color: rgba(255, 255, 255, 0.863);
+.container {
+  background-color: aliceblue;
   border-radius: 10px;
-  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1), 0 6px 6px rgba(0, 0, 0, 0.1);
+  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);
   text-align: center;
   padding: 10px;
-  max-width: 100%;
-  width: 800px;
-}
-
-.anime-container h3 {
-  font-size: 20px;
-  font-weight: 600;
-  text-transform: capitalize;
-  padding-bottom: 10px;
-  letter-spacing: 0.9px;
-}
-
-.anime-container h2 {
-  line-height: 30px;
-  word-spacing: 1px;
-  margin-bottom: 30px;
-  position: relative;
+  width: 450px;
+  margin: 5px;
 }
 
 .get-anime {
   margin-bottom: 30px;
-  background-color: rgba(0, 0, 0, 0.774);
-  color: #fff;
+  background-color: green;
+  color: aliceblue;
   padding: 10px 30px;
-  border: none;
   border-radius: 6px;
-  outline: none;
   font-size: 16px;
-  font-weight: 200;
   cursor: pointer;
-  letter-spacing: 1px;
 }
 
-.anime-box {
+.get-anime:disabled{
+  background-color: gray;
+  cursor: not-allowed;
+}
+
+.anime-container {
+  /* display: none; */
   display: none;
 }
 
-.anime-box img {
+.anime-container img {
   height: 300px;
   width: 300px;
   border-radius: 50%;
-  border: 10px solid #005da3;
-  align-items: center;
+  border: 3px solid green;
 }
 
-.hero-name {
-  margin-bottom: 30px;
-  background-color: rgba(0, 0, 0, 0.774);
-  color: #fff;
-  padding: 10px 30px;
-  border: none;
+.anime-name{
+  margin: 20px;
+  background-color: green;
+  color: aliceblue;
+  padding: 10px;
   border-radius: 6px;
-  outline: none;
   font-size: 17px;
-  font-weight: bold;
-}
-
-@media screen and (max-width: 500px) {
-  .main-container {
-    width: 450px;
-    flex-wrap: wrap;
-  }
+  font-weight: 600;
 }

From 8a5ba99f6afc434532c833ccba589f0849d14ab7 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 4 Dec 2022 09:52:06 +0700
Subject: [PATCH 09/54] Update anime pics generator

---
 projects/amine-pics-generator/index.html      | 21 +++++++
 .../index.js                                  | 15 +++--
 .../spinner.svg                               |  2 +-
 projects/amine-pics-generator/style.css       | 56 +++++++++++++++++
 .../anime-pics-genrator/.vscode/settings.json |  3 -
 projects/anime-pics-genrator/index.html       | 29 ---------
 projects/anime-pics-genrator/style.css        | 57 -----------------
 projects/currency-converter/index.html        | 62 +++++++++---------
 projects/currency-converter/index.js          | 38 ++++++-----
 projects/currency-converter/style.css         | 63 ++++++++-----------
 10 files changed, 160 insertions(+), 186 deletions(-)
 create mode 100644 projects/amine-pics-generator/index.html
 rename projects/{anime-pics-genrator => amine-pics-generator}/index.js (63%)
 rename projects/{anime-pics-genrator => amine-pics-generator}/spinner.svg (89%)
 create mode 100644 projects/amine-pics-generator/style.css
 delete mode 100644 projects/anime-pics-genrator/.vscode/settings.json
 delete mode 100644 projects/anime-pics-genrator/index.html
 delete mode 100644 projects/anime-pics-genrator/style.css

diff --git a/projects/amine-pics-generator/index.html b/projects/amine-pics-generator/index.html
new file mode 100644
index 0000000..0cb6e43
--- /dev/null
+++ b/projects/amine-pics-generator/index.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Anime Pics Generator</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
+    <div class="container">
+        <h3>Anime Pics Generator</h1>
+        <button class="btn" id="btn">Get Anime</button>
+        <div class="anime-container">
+            <img class="anime-img" src="https://c.files.bbci.co.uk/F382/production/_123883326_852a3a31-69d7-4849-81c7-8087bf630251.jpg">
+            <h3 class="anime-name">Anime Name</h3>
+        </div>
+    </div>
+    <script src="index.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/anime-pics-genrator/index.js b/projects/amine-pics-generator/index.js
similarity index 63%
rename from projects/anime-pics-genrator/index.js
rename to projects/amine-pics-generator/index.js
index 55a158c..ab0dfe5 100644
--- a/projects/anime-pics-genrator/index.js
+++ b/projects/amine-pics-generator/index.js
@@ -1,26 +1,25 @@
 const btnEl = document.getElementById("btn");
-const animeBoxEl = document.querySelector(".anime-container");
+const animeContainerEl = document.querySelector(".anime-container");
 const animeImgEl = document.querySelector(".anime-img");
-const animeNameEl = document.querySelector(".anime-name");
+const amineNameEl = document.querySelector(".anime-name");
 
 btnEl.addEventListener("click", async function () {
   try {
     btnEl.disabled = true;
     btnEl.innerText = "Loading...";
-    animeNameEl.innerText = "Updating...";
+    amineNameEl.innerText = "Updating...";
     animeImgEl.src = "spinner.svg";
     const response = await fetch("https://api.catboys.com/img");
     const data = await response.json();
-    animeImgEl.src = data.url;
-
-    animeBoxEl.style.display = "block";
-    animeNameEl.innerText = data.artist;
     btnEl.disabled = false;
     btnEl.innerText = "Get Anime";
+    animeContainerEl.style.display = "block";
+    animeImgEl.src = data.url;
+    amineNameEl.innerText = data.artist;
   } catch (error) {
     console.log(error);
     btnEl.disabled = false;
     btnEl.innerText = "Get Anime";
-    animeNameEl.innerText = "An error happened, try again";
+    amineNameEl.innerText = "An error happened, please try again";
   }
 });
diff --git a/projects/anime-pics-genrator/spinner.svg b/projects/amine-pics-generator/spinner.svg
similarity index 89%
rename from projects/anime-pics-genrator/spinner.svg
rename to projects/amine-pics-generator/spinner.svg
index 0476499..fd9b80a 100644
--- a/projects/anime-pics-genrator/spinner.svg
+++ b/projects/amine-pics-generator/spinner.svg
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: none; display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
-<circle cx="50" cy="50" fill="none" stroke="#93dbe9" stroke-width="1" r="6" stroke-dasharray="28.274333882308138 11.42477796076938">
+<circle cx="50" cy="50" fill="none" stroke="#93dbe9" stroke-width="1" r="8" stroke-dasharray="37.69911184307752 14.566370614359172">
   <animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
 </circle>
 <!-- [ldio] generated by https://loading.io/ --></svg>
\ No newline at end of file
diff --git a/projects/amine-pics-generator/style.css b/projects/amine-pics-generator/style.css
new file mode 100644
index 0000000..077c804
--- /dev/null
+++ b/projects/amine-pics-generator/style.css
@@ -0,0 +1,56 @@
+body{
+    margin: 0;
+    background: linear-gradient(to right, lightblue, yellow);
+    display: flex;
+    height: 100vh;
+    justify-content: center;
+    align-items: center;
+    font-family: 'Courier New', Courier, monospace;
+}
+
+.container{
+    background: aliceblue;
+    border-radius: 10px;
+    box-shadow: 0 10px 20px rgba(0,0,0,0.3);
+    text-align: center;
+    padding: 10px;
+    width: 450px;
+    margin: 5px;
+}
+
+.btn{
+    background-color: green;
+    color: aliceblue;
+    padding: 10px 30px;
+    font-size: 16px;
+    margin-bottom: 30px;
+    border-radius: 6px;
+    cursor: pointer;
+
+}
+
+.btn:disabled{
+    background-color: gray;
+    cursor: not-allowed;
+}
+
+.anime-img{
+    height: 300px;
+    width: 300px;
+    border-radius: 50%;
+    border: 3px solid green;
+}
+
+.anime-name{
+    margin: 20px;
+    background-color: green;
+    color: aliceblue;
+    padding: 10px;
+    border-radius: 6px;
+    font-size: 17px;
+    font-weight: 600;
+}
+
+.anime-container{
+    display: none;
+}
\ No newline at end of file
diff --git a/projects/anime-pics-genrator/.vscode/settings.json b/projects/anime-pics-genrator/.vscode/settings.json
deleted file mode 100644
index 6b665aa..0000000
--- a/projects/anime-pics-genrator/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "liveServer.settings.port": 5501
-}
diff --git a/projects/anime-pics-genrator/index.html b/projects/anime-pics-genrator/index.html
deleted file mode 100644
index 424dfd4..0000000
--- a/projects/anime-pics-genrator/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Anime Pics Generator</title>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-  <body>
-    <!-- main container  -->
-    <div class="container">
-      <!-- the anime container  -->
-      <h3>Anime Pics Generator</h3>
-
-      <button id="btn" class="get-anime">Get Anime</button>
-      <!-- the anime box  -->
-      <div class="anime-container">
-        <!-- <img
-          src="example-for-styling.jpg"
-          class="anime-img"
-        /> -->
-        <img src="spinner.svg" class="anime-img" />
-        <h3 class="anime-name">Anime Name</h3>
-      </div>
-    </div>
-    <script src="index.js"></script>
-  </body>
-</html>
diff --git a/projects/anime-pics-genrator/style.css b/projects/anime-pics-genrator/style.css
deleted file mode 100644
index ee907a8..0000000
--- a/projects/anime-pics-genrator/style.css
+++ /dev/null
@@ -1,57 +0,0 @@
-
-body {
-  margin: 0;
-  background: linear-gradient(to right, lightblue, yellow);
-  display: flex;
-  height: 100vh;
-  justify-content: center;
-  align-items: center;
-  font-family:'Courier New', Courier, monospace;
-}
-
-.container {
-  background-color: aliceblue;
-  border-radius: 10px;
-  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);
-  text-align: center;
-  padding: 10px;
-  width: 450px;
-  margin: 5px;
-}
-
-.get-anime {
-  margin-bottom: 30px;
-  background-color: green;
-  color: aliceblue;
-  padding: 10px 30px;
-  border-radius: 6px;
-  font-size: 16px;
-  cursor: pointer;
-}
-
-.get-anime:disabled{
-  background-color: gray;
-  cursor: not-allowed;
-}
-
-.anime-container {
-  /* display: none; */
-  display: none;
-}
-
-.anime-container img {
-  height: 300px;
-  width: 300px;
-  border-radius: 50%;
-  border: 3px solid green;
-}
-
-.anime-name{
-  margin: 20px;
-  background-color: green;
-  color: aliceblue;
-  padding: 10px;
-  border-radius: 6px;
-  font-size: 17px;
-  font-weight: 600;
-}
diff --git a/projects/currency-converter/index.html b/projects/currency-converter/index.html
index 45f40ae..c3bc553 100644
--- a/projects/currency-converter/index.html
+++ b/projects/currency-converter/index.html
@@ -5,43 +5,37 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Currency Converter</title>
-    <link rel="stylesheet" href="style.css" />
+    <link rel="stylesheet" href="style.css">
 </head>
 <body>
-  <div class="main-box">
-    <h1>Currency Converter</h1>
-    
-       <div class="currency">
-        <select id="currency-first">
-          <option value="AUD">AUD</option>
-          <option value="CAD">CAD</option>
-          <option value="EUR">EUR</option>
-          <option value="GBP">GBP</option>
-          <option value="INR">INR</option>
-          <option value="JPY">JPY</option>
-          <option value="USD" selected>USD</option>
-        </select>
-        <input type="number" id="worth-first" value="1" min="0" />
-      </div>
-
-      
-
-      <div class="currency">
-        <select id="currency-second">
-          <option value="AUD">AUD</option>
-          <option value="CAD">CAD</option>
-          <option value="EUR">EUR</option>
-          <option value="GBP">GBP</option>
-          <option value="INR" selected>INR</option>
-          <option value="JPY">JPY</option>
-          <option value="USD">USD</option>
-        </select>
-        <input type="number" id="worth-second" disabled />
+    <div class="container">
+        <h1>Currency Converter</h1>
+        <div class="currency-container">
+            <select id="currency-first">
+                <option value="AUD">AUD</option>
+                <option value="CAD">CAD</option>
+                <option value="EUR">EUR</option>
+                <option value="GBP">GBP</option>
+                <option value="INR">INR</option>
+                <option value="JPY">JPY</option>
+                <option value="USD" selected>USD</option>
+            </select>
+            <input type="number" id="worth-first" value="1" min="0">
+        </div>
+        <div class="currency-container">
+            <select id="currency-second">
+                <option value="AUD">AUD</option>
+                <option value="CAD">CAD</option>
+                <option value="EUR">EUR</option>
+                <option value="GBP">GBP</option>
+                <option value="INR" selected>INR</option>
+                <option value="JPY">JPY</option>
+                <option value="USD">USD</option>
+            </select>
+            <input type="number" id="worth-second"  disabled>
+        </div>
+        <p class="exchange-rate" id="exchange-rate">1 USD = 138.5802 JPY</p>
     </div>
-
-      <p class="exchange-rate" id="exchange-rate"></p> 
-</div>
-</div>
     <script src="index.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/projects/currency-converter/index.js b/projects/currency-converter/index.js
index 585c669..7514ce1 100644
--- a/projects/currency-converter/index.js
+++ b/projects/currency-converter/index.js
@@ -1,27 +1,33 @@
-const exchangeRateEl = document.getElementById("exchange-rate");
 const currencyFirstEl = document.getElementById("currency-first");
-const currencySecondEl = document.getElementById("currency-second");
+
 const worthFirstEl = document.getElementById("worth-first");
+
+const currencySecondEl = document.getElementById("currency-second");
+
 const worthSecondEl = document.getElementById("worth-second");
 
-function convert() {
-  const currencyFirstValue = currencyFirstEl.value;
-  const currencySecondValue = currencySecondEl.value;
-  //using API for conversion of currency units
+const exchangeRateEl = document.getElementById("exchange-rate");
+
+updateRate()
+
+function updateRate() {
   fetch(
-    `https://v6.exchangerate-api.com/v6/5f9d1c87f7250159c9c9b17d/latest/${currencyFirstValue}`
+    `https://v6.exchangerate-api.com/v6/5f9d1c87f7250159c9c9b17d/latest/${currencyFirstEl.value}`
   )
     .then((res) => res.json())
     .then((data) => {
-      const rate = data.conversion_rates[currencySecondValue];
-      exchangeRateEl.innerText = `1 ${currencyFirstValue} = ${rate} ${currencySecondValue}`;
+      const rate = data.conversion_rates[currencySecondEl.value];
+      console.log(rate);
+      exchangeRateEl.innerText = `1 ${currencyFirstEl.value} = ${
+        rate + " " + currencySecondEl.value
+      }`;
 
-      worthSecondEl.value = (worthFirstEl.value * rate).toFixed(2);
+      worthSecondEl.value = (worthFirstEl.value * rate).toFixed(2)
     });
 }
-//some javascript event listeners
-currencyFirstEl.addEventListener("change", convert);
-worthFirstEl.addEventListener("input", convert);
-currencySecondEl.addEventListener("change", convert);
-worthSecondEl.addEventListener("input", convert);
-convert();
+
+currencyFirstEl.addEventListener("change", updateRate);
+
+currencySecondEl.addEventListener("change", updateRate);
+
+worthFirstEl.addEventListener("input", updateRate);
diff --git a/projects/currency-converter/style.css b/projects/currency-converter/style.css
index b533d4e..eb02a2b 100644
--- a/projects/currency-converter/style.css
+++ b/projects/currency-converter/style.css
@@ -1,60 +1,47 @@
-
-body {
-   
-    font-family:'Courier New', Courier, monospace;
+body{
+    background-color: yellow;
     display: flex;
-    flex-direction: column;
-    justify-content: center;
     height: 100vh;
+    justify-content: center;
+    align-items: center;
+    font-family: 'Courier New', Courier, monospace;
     margin: 0;
     padding: 0;
-    background: yellow;
-    align-items: center;
-
-  }
-
+}
 
-  .main-box{
-    background-color: darkcyan; 
+.container{
+    background-color: darkcyan;
     color: aliceblue;
+    padding: 10px;
     border-radius: 5px;
-    padding:10px;
-    max-width: 600px;
     text-align: center;
+}
 
 
-  }
-  
-  .currency {
+.currency-container{
     padding: 20px;
     display: flex;
-    align-items: center;
     justify-content: space-between;
-  }
-  
-  .currency select {
+}
+
+.currency-container select{
     padding: 10px;
+}
 
-  }
-  
-  .currency input {
-    border:0px;
+.currency-container input{
+    border: 0;
     background: transparent;
     font-size: 25px;
     text-align: right;
     color: aliceblue;
-  }
-  
-  
-  
-  .exchange-rate {
+}
+
+.exchange-rate{
     font-size: 16px;
-    padding: 10px;
     font-weight: 600;
-  }
-  
-  select:focus,
-  input:focus {
+}
+
+select:focus,
+input:focus{
     outline: 0;
-  }
-  
\ No newline at end of file
+}
\ No newline at end of file

From 47a76ff4a5ec12e920717dc3afb4191ddbae8e6b Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 11 Dec 2022 07:51:36 +0700
Subject: [PATCH 10/54] update the photo api project

---
 .../cat-api/45_Chatting_app/client/index.html |  91 ---
 .../cat-api/45_Chatting_app/client/index.js   | 152 -----
 .../45_Chatting_app/client/message.mp3        | Bin 24794 -> 0 bytes
 .../45_Chatting_app/client/package-lock.json  | 114 ----
 .../45_Chatting_app/client/package.json       |  14 -
 .../cat-api/45_Chatting_app/client/styles.css | 419 ------------
 .../cat-api/45_Chatting_app/server/Procfile   |   1 -
 .../45_Chatting_app/server/package-lock.json  | 621 ------------------
 .../45_Chatting_app/server/package.json       |  18 -
 .../cat-api/45_Chatting_app/server/server.js  |  62 --
 projects/cat-api/46_image_slider/app.js       | 158 -----
 projects/cat-api/46_image_slider/index.html   | 130 ----
 projects/cat-api/46_image_slider/style.css    | 337 ----------
 projects/cat-api/app.js                       |  30 -
 projects/cat-api/index.html                   |  40 +-
 projects/cat-api/index.js                     |  53 ++
 projects/cat-api/spinner.svg                  |   6 +
 projects/cat-api/styles.css                   |  95 +--
 18 files changed, 123 insertions(+), 2218 deletions(-)
 delete mode 100644 projects/cat-api/45_Chatting_app/client/index.html
 delete mode 100644 projects/cat-api/45_Chatting_app/client/index.js
 delete mode 100644 projects/cat-api/45_Chatting_app/client/message.mp3
 delete mode 100644 projects/cat-api/45_Chatting_app/client/package-lock.json
 delete mode 100644 projects/cat-api/45_Chatting_app/client/package.json
 delete mode 100644 projects/cat-api/45_Chatting_app/client/styles.css
 delete mode 100644 projects/cat-api/45_Chatting_app/server/Procfile
 delete mode 100644 projects/cat-api/45_Chatting_app/server/package-lock.json
 delete mode 100644 projects/cat-api/45_Chatting_app/server/package.json
 delete mode 100644 projects/cat-api/45_Chatting_app/server/server.js
 delete mode 100644 projects/cat-api/46_image_slider/app.js
 delete mode 100644 projects/cat-api/46_image_slider/index.html
 delete mode 100644 projects/cat-api/46_image_slider/style.css
 delete mode 100644 projects/cat-api/app.js
 create mode 100644 projects/cat-api/index.js
 create mode 100644 projects/cat-api/spinner.svg

diff --git a/projects/cat-api/45_Chatting_app/client/index.html b/projects/cat-api/45_Chatting_app/client/index.html
deleted file mode 100644
index 1b66ec2..0000000
--- a/projects/cat-api/45_Chatting_app/client/index.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <link rel="stylesheet" href="styles.css"> 
-    <!-- <link rel="stylesheet" href="formStyle.css"> -->
-    <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <script src="https://code.iconify.design/2/2.0.3/iconify.min.js"></script>
-    <title>Warta - Chatting App</title>
-</head>
-<body>
-    <div class="new-room">
-        <h1>Warta App</h1>
-        <form id="createForm" name="roomF" onsubmit="return viewSelection()">
-            <input type="text" id="name" name="nameInput" placeholder="Enter your name" autocomplete="off" autofocus><br>
-            <div class="radio">
-               
-            <input type="radio" id="create-room" class="choose" name="choose" onclick="javascript:checkSelection();" value="create"> <label for="create-room" class="lableCreate">Create room  </label>
-            
-            <!-- </div>
-            <div style="display: flex;"> -->
-               
-            <input type="radio" id="join-room" class="choose" style="margin-left: 3%;" name="choose" onclick="javascript:checkSelection();" value="join">  <label for="join-room" class="lableJoin">Join room  </label><br>
-        
-        </div>
-            <!-- <input type="text" id="roomJ" class="room" name="room" placeholder="Enter room name"><br> -->
-            <input type="text" id="roomC" class="room" name="room" placeholder="Create room name" autocomplete="off" autofocus><br>
-    
-            <input class="button-submit" onclick="javascript:viewSelection();" type="button" value="Next" >
-        </form>
-    </div>
-    <div class="chat">
-        <div class="status-bar">      
-            <h2>Warta App</h2>
-            <h4></h4>
-        </div>
-    
-        <div class="chat-container">
-            <div class="conversation">
-                 <div class="conversation-container">
-
-              
-                </div>  
-                <form id="form-container" onclick="return checkNull();">
-                    <input class="input-msg" name="input" placeholder="Type a message" autocomplete="off" autofocus></input>
-                    <button class="send" type="submit">
-                        <div class="circle">
-                             <span class="iconify" data-icon="zmdi:mail-send"></span>
-                        </div>
-                    </button>
-                </form>
-            </div>        
-        </div>
-    </div>  
-    <!-- <script src="http://localhost:8000/socket.io/socket.io.js"></script> -->
-    <script src='https://guarded-falls-33664.herokuapp.com/socket.io/socket.io.js'></script>
-
-    <!-- <script src="node_modules/socket.io-client/dist/socket.io.js"></script> -->
-    <script src="index.js"></script>
-    <script>
-        function checkNull(){
-            if(document.querySelector(".input-msg").value === ''){
-                return false;
-            }
-        }
-        
-        function checkSelection(){
-        
-        if(document.querySelector(".radio #create-room").checked){
-            document.querySelector("#roomC").style.visibility = 'visible';
-        }
-        if(document.querySelector(".radio #join-room").checked){
-            document.querySelector("#roomC").style.visibility = 'visible';
-           document.querySelector("#roomC").placeholder="Enter room name";
-        }
-    }
-
-    function validateForm() {
-        if(document.forms["roomF"]["nameInput"].value === '') {
-            alert("Name cannot be empty");
-            return false;
-        }
-        if(document.querySelector("#roomC").value === ''){
-            alert("Please provide a room name");
-            return false;
-        }
-    }
-    </script>
-</body>
-</html>
\ No newline at end of file
diff --git a/projects/cat-api/45_Chatting_app/client/index.js b/projects/cat-api/45_Chatting_app/client/index.js
deleted file mode 100644
index 1fc3df3..0000000
--- a/projects/cat-api/45_Chatting_app/client/index.js
+++ /dev/null
@@ -1,152 +0,0 @@
-//  import {io} from "./node_modules/socket.io-client";
-//const io = require('socket.io-client');
-
-var name1, room;
-//var nameArray = [];
-
-
-
-function viewSelection(){
-    
-    name1 =  document.querySelector("#name").value;
-    room =  document.querySelector("#roomC").value;
-    
-    if(name1 === '') { 
-        alert("Name cannot be empty");
-        return false;
-    }
-    else if(room === ''){ 
-         alert("Please provide a room name");
-         return false;
-         }
-    document.body.style.background = "#efe7dd url('https://cloud.githubusercontent.com/assets/398893/15136779/4e765036-1639-11e6-9201-67e728e86f39.jpg') repeat";
-
-
-    const form = document.getElementById("form-container");
-    const messageInput = document.querySelector(".input-msg");
-    const messageContainer = document.querySelector(".conversation-container");
-
-    const appendCopyright = (message) => {
-    
-        const messageElement = document.createElement('div');
-        messageElement.innerText = message;
-        messageElement.classList.add('otherCopyright');
-        messageContainer.append(messageElement);
-        try{
-        new Audio('message.mp3').play();
-        }
-        catch(err){
-            new Audio('message.mp3').play();
-    
-        }
-       
-    }    
-    appendCopyright("Copyright © Akhil Choubey");
-
-    if(document.querySelector("#create-room").checked){
-        alert(`Share following details with your chatmates\r\n ----------------------------------------------- \r\n Website link : https://akhil-warta.netlify.app \r\n Room name : ${room}`);
-        // appendCopyright("You created this room");
-        // nameArray.push(name1);
-    } 
-   
-    //console.log(nameArray);
-    document.querySelector(".chat").style.display = 'block';
-    document.querySelector(".new-room").style.display = 'none';
-
-    document.querySelector(".status-bar h4").innerText = `Room Name : ${room}`;
-    // const socket = io("http://localhost:8000");
-    const socket = io("https://guarded-falls-33664.herokuapp.com/");
-
-
-const append = (message) => {
-    
-    //if(document.querySelector("#join-room").checked){
-   //     appendCopyright(`${cruator} created this room`);
-    //}
-    const messageElement = document.createElement('div');
-    messageElement.innerText = message;
-    messageElement.classList.add('other');
-    messageContainer.append(messageElement);
-    try{
-    new Audio('message.mp3').play();
-    }
-    catch(err){
-        new Audio('message.mp3').play();
-
-    }
-   
-}
-
-const appendSend = (message) => {
-    const messageElement = document.createElement('div');
-    messageElement.innerText = message;
-    messageElement.classList.add('message');
-    messageElement.classList.add('sent');
-    messageContainer.append(messageElement);
-}
-
-const appendRecieved = (message, name) => {
-    
-
-    const messageElement = document.createElement('div');
-    messageElement.classList.add('message');
-    messageElement.classList.add('received');
-
-    const Name = document.createElement('h1');
-    Name.classList.add('person');
-    Name.innerText= name;
-
-    const randomColor =((1<<24)*Math.random() | 0).toString(16)
-    if(randomColor[0] === "0") randomColor = "800080";
-    const color = "#"+randomColor;
-
-    messageElement.innerHTML+=`<h1 class='person' style="color: ${color};" >${name}</h1>
-    ${message}`;
-
-    //messageElement.innerText = message;
-    messageContainer.append(messageElement);
-
-    try{
-    new Audio('message.mp3').play();
-    }
-    catch(err){
-        new Audio('message.mp3').play();
-
-    }
-}
-
-form.addEventListener('submit', (e)=>{
-    e.preventDefault();
-    const message = messageInput.value;
-    appendSend(`${message}`);
-    socket.emit('send', message, room);
-    messageInput.value = '';
-});
-
-socket.emit("new-user-joined" , name1, room);
-socket.emit("room" , room);
-//var curator = 0;
-//if(document.querySelector("#join-room").checked) {
-  //  curator = 1;
-//}
-socket.on('user-joined', (name1) =>{
-    append(`${name1} joined` ); //, data.creator);
-    
-  //  appendCopyright(`${data.creator} created this room`);
-    
-});
-
-
-socket.on('leave', (data) =>{
-    append(`${data.name1} left`);
-});
-
-socket.on('receive', (data) =>{
-    appendRecieved(`${data.message}`,`${data.name1}`);
-});
-
-
-
-
-
-}
\ No newline at end of file
diff --git a/projects/cat-api/45_Chatting_app/client/message.mp3 b/projects/cat-api/45_Chatting_app/client/message.mp3
deleted file mode 100644
index 049cfa88aea4bbee112318efaae22d0167ddf052..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 24794
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

diff --git a/projects/cat-api/45_Chatting_app/client/package-lock.json b/projects/cat-api/45_Chatting_app/client/package-lock.json
deleted file mode 100644
index a219e4d..0000000
--- a/projects/cat-api/45_Chatting_app/client/package-lock.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
-  "name": "frontend",
-  "version": "1.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@types/component-emitter": {
-      "version": "1.2.10",
-      "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
-      "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg=="
-    },
-    "backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
-    },
-    "base64-arraybuffer": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
-      "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
-    },
-    "component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
-    },
-    "debug": {
-      "version": "4.3.2",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-      "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-      "requires": {
-        "ms": "2.1.2"
-      }
-    },
-    "engine.io-client": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz",
-      "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==",
-      "requires": {
-        "base64-arraybuffer": "0.1.4",
-        "component-emitter": "~1.3.0",
-        "debug": "~4.3.1",
-        "engine.io-parser": "~4.0.1",
-        "has-cors": "1.1.0",
-        "parseqs": "0.0.6",
-        "parseuri": "0.0.6",
-        "ws": "~7.4.2",
-        "yeast": "0.1.2"
-      }
-    },
-    "engine.io-parser": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz",
-      "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==",
-      "requires": {
-        "base64-arraybuffer": "0.1.4"
-      }
-    },
-    "has-cors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
-    },
-    "ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-    },
-    "parseqs": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
-      "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
-    },
-    "parseuri": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
-      "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
-    },
-    "socket.io-client": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.3.tgz",
-      "integrity": "sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA==",
-      "requires": {
-        "@types/component-emitter": "^1.2.10",
-        "backo2": "~1.0.2",
-        "component-emitter": "~1.3.0",
-        "debug": "~4.3.1",
-        "engine.io-client": "~5.1.2",
-        "parseuri": "0.0.6",
-        "socket.io-parser": "~4.0.4"
-      }
-    },
-    "socket.io-parser": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
-      "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
-      "requires": {
-        "@types/component-emitter": "^1.2.10",
-        "component-emitter": "~1.3.0",
-        "debug": "~4.3.1"
-      }
-    },
-    "ws": {
-      "version": "7.4.6",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-      "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
-    },
-    "yeast": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
-    }
-  }
-}
diff --git a/projects/cat-api/45_Chatting_app/client/package.json b/projects/cat-api/45_Chatting_app/client/package.json
deleted file mode 100644
index db3506f..0000000
--- a/projects/cat-api/45_Chatting_app/client/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "name": "frontend",
-  "version": "1.0.0",
-  "description": "",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {
-    "socket.io-client": "^4.1.3"
-  }
-}
diff --git a/projects/cat-api/45_Chatting_app/client/styles.css b/projects/cat-api/45_Chatting_app/client/styles.css
deleted file mode 100644
index e0b84a4..0000000
--- a/projects/cat-api/45_Chatting_app/client/styles.css
+++ /dev/null
@@ -1,419 +0,0 @@
-*, *:before, *:after {
-  box-sizing: inherit;
-}
-
-html {
-  box-sizing: border-box;
-  height: 100%;
-  margin: 0;
-  padding: 0;
-}
-
-body {
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  font-family: "Roboto", sans-serif;
-  margin: 0;
-  padding: 0;
-  height: 100%;
-   background: #50a3a2; /* url("https://cloud.githubusercontent.com/assets/398893/15136779/4e765036-1639-11e6-9201-67e728e86f39.jpg") repeat; */
-
-}  
-
-/* room form styles */
-.new-room h1{
-  margin: 0% auto;
-  padding-top: 80px;
-  text-align: center;
-  top: 27%;
-  font-size: 40px;
-  font-weight: 200;
-  color:white;
-}
-
-#createForm {
-  padding-top: 20px;
-  top: 30%;
-  position: relative;
-  display: block;
-}
-#name, #roomC{
-  border: 1px solid white;/* rgba(0,78,69,0.4); rgba(252, 252, 252, 0.4); */ 
-  background-color: rgba(252, 252, 252, 0.2); 
-  width: 250px;
-  border-radius: 3px;
-  font-family: "Source Sans Pro", sans-serif;
-  padding: 10px 15px;
-  margin: 0 auto 10px auto;
-  display: block;
-  text-align: center;
-  font-size: 18px;
-  color: white;
-  font-weight: 300;
-}
-.radio {
-  display: flex; 
-  margin-bottom: 5px;
-}
-
-
-.button-submit {
-  display: block;
-  appearance: none;
-  outline: 0;
-  background-color: white;
-  border: 0;
-  padding: 10px 15px;
-  margin: 0 auto 10px auto;
-  color: #50a3a2;
-  border-radius: 3px;
-  width: 250px;
-  font-size: 18px;
-}
-
-.choose {
-  margin-left: 40%;
-  display: flex;
-}
-
-#roomC{
-  visibility: hidden;
-}
-
-.lableCreate{
-color: white; padding-top: 4px;
-}
-.lableJoin{
-color: white; padding-top: 4px;
-}
-
-
-/* status bar */
-.status-room {
-width:70%;
-text-align: right;
-}
-
-.status-bar {
-  height: 57px;
-  background: #004e45;
-  color: #fff;
-  font-size: 24px;
-  padding: 0 8px;
-  text-align: center;
-}
-h2{
-    margin: 0;
-}
-h4{
-  margin: 0;
-  font-size: 12px;
-}
-.copyright{
-    color:rgb(158, 157, 152);
-    font-size: 11px;
-    margin: 0;
-}
-
-.status-bar:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-
-/* .status-bar div {
-  float: right;
-  position: fixed;
-  top: 50%;
-  transform: translateY(-50%);
-  margin: 0 0 0 8px;
-  font-weight: 600;
-} */
-.choose{
-width: 2%;
-height: 20px;
-}
-
-/* chat container styling */
-.chat {
-  height: calc(79%);
-  display: none;
-}
-
-.chat-container {
-  height: 100%;
-}
-
-.conversation {
-  height: calc(100%);
-  position: relative;
-  z-index: 0;
-}
-
-.conversation ::-webkit-scrollbar {
-  transition: all .5s;
-  width: 5px;
-  height: 1px;
-  z-index: 10;
-}
-
-.conversation ::-webkit-scrollbar-track {
-  background: transparent;
-}
-
-.conversation ::-webkit-scrollbar-thumb {
-  background: #b3ada7;
-}
-
-.conversation .conversation-container {
-  height: calc(100%);
-  box-shadow: inset 0 10px 10px -10px #000000;
-  overflow-x: hidden;
-  padding: 0 16px;
-  /* margin-bottom: 5px; */
-}
-
-.conversation .conversation-container:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-
-/* Messages */
-
-.message {
-  color: #000;
-  clear: both;
-  line-height: 18px;
-  font-size: 15px;
-  padding: 8px;
-  position: relative;
-  margin: 8px 0;
-  max-width: 85%;
-  word-wrap: break-word;
-  z-index: -1;
-}
-
-.person{
-  background-color: none;
-  color:blue;
-  margin: 0;
-  font-size: 15px;
-  position: relative;
-}
-
-.message:after {
-  position: absolute;
-  content: "";
-  width: 0;
-  height: 0;
-  border-style: solid;
-}
-.message:first-child {
-  margin: 16px 0 8px;
-}
-
-.message.received {
-  background: #fff;
-  border-radius: 0px 5px 5px 5px;
-  float: left;
-}
-.message.received:after {
-  border-width: 0px 10px 10px 0;
-  border-color: transparent #fff transparent transparent;
-  top: 0;
-  left: -10px;
-}
-.message.sent {
-  background: #e1ffc7;
-  border-radius: 5px 0px 5px 5px;
-  float: right;
-}
-
-.message.sent:after {
-  border-width: 0px 0 10px 10px;
-  border-color: transparent transparent transparent #e1ffc7;
-  top: 0;
-  right: -10px;
-}    
-
-.other{
-color: rgb(141, 136, 136);
-clear: both;
-line-height: 18px;
-font-size: 15px;
-padding: 8px;
-position: relative;
-margin: 8px 3px;
-word-wrap: break-word;
-z-index: -1; 
-background-color: rgb(187, 224, 224);
-max-width: 85%;
-/* line-height: 21px; */
-text-align: center;
-width:8rem; 
-display: block;
-margin: auto;
-border-radius: 4rem;
-margin-top: 4px;
-margin-bottom: 4px;
-}
-/* form styling */
-.conversation-compose {
-  display: flex;
-  flex-direction: row;
-  align-items: flex-end;
-  overflow: hidden;
-  height: 50px;
-  width: 100%;
-  z-index: 2;
-  position: sticky;
-  top: 88%;
-
-}
-
-#form-container{
-  display: block;
-  margin: auto;
-  text-align: center;
-  width: 100%;
-}
-
-input {
-  background: #fff;
-  height: 100%;
-  width: 91%;
-  border-radius: 4rem;
-
-}
-
-.input-msg {
-  border: 0;
-  flex: 1 1 auto;
-  font-size: 16px;
-  margin: 0;
-  outline: none;
-  min-width: 50px;
-  padding: 17px;
-  height: 48px;
-  border: #000;
-  border-width: 2px;
-}
-.send {
-  background: transparent;
-  border: 0;
-  cursor: pointer;
-  flex: 0 0 auto;
-  margin-left: 8px;
-  margin-right: 8px;
-  
-  padding: 0;
-  position: relative;
-  outline: none;
-}
-
-.send .circle {
-  background: #008a7c;
-  border-radius: 50%;
-  color: #fff;
-  position: relative;
-  width: 48px;
-  height: 48px;
-  
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.send .circle .iconify {
-  font-size: 44px;
-  height: 20px;
-
-  margin-left: 5px;
-}
-
-.otherCopyright{
-  color: rgb(141, 136, 136);
-  clear: both;
-  line-height: 18px;
-  font-size: 15px;
-  padding: 8px;
-  position: relative;
-  margin: 8px 3px;
-  word-wrap: break-word;
-  z-index: -1; 
-  background-color: rgb(187, 224, 224);
-  max-width: 85%;
-  /* line-height: 21px; */
-  text-align: center;
-  width:13rem; 
-  display: block;
-  margin: auto;
-  border-radius: 9px;
-  margin-top: 4px;
-  margin-bottom: 4px;
- }
-
-
-
-
-@media (max-width: 768px) {
-  h4{
-    font-size: 11px;
-  }
-
-  .status-bar {
-      height: 47px;
-      font-size: 18px;
-      padding: 0 8px;
-      text-align: center;
-    }
-    .copyright{
-      font-size: 8px;
-  }
-  input {
-      width: 77%;
-  }
-  .chat {
-      height: calc(81%);
-    }
-  .other{ 
-    line-height:8px;
-    font-size: 10px;
-    width:6rem;
-  }  
-  .otherCopyright{
-    line-height:8px;
-    font-size: 10px;
-    width:9rem;
-  }
-  .radio {
-    margin-right: 11%;
-    font-size: 19px;
-  }
-  .choose {
-    width: 25px;
-    height: 46px;
-   
-  }
-  #create-room {
-    margin-left: 17%;
-  }
-  #join-room {
-    margin-left: 3%;
-  }
-  .lableCreate {
-    color: white;
-    padding-top: 14px;
-    margin-left: 0;
-    width: 168px;
-  }
-  .lableJoin {
-    color: white;
-    padding-top: 14px;
-    width: 143px;
-  }
-}
-
-
-
diff --git a/projects/cat-api/45_Chatting_app/server/Procfile b/projects/cat-api/45_Chatting_app/server/Procfile
deleted file mode 100644
index 9c4dee9..0000000
--- a/projects/cat-api/45_Chatting_app/server/Procfile
+++ /dev/null
@@ -1 +0,0 @@
-node server.js
\ No newline at end of file
diff --git a/projects/cat-api/45_Chatting_app/server/package-lock.json b/projects/cat-api/45_Chatting_app/server/package-lock.json
deleted file mode 100644
index e31cdb6..0000000
--- a/projects/cat-api/45_Chatting_app/server/package-lock.json
+++ /dev/null
@@ -1,621 +0,0 @@
-{
-  "name": "backend",
-  "version": "1.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@types/component-emitter": {
-      "version": "1.2.10",
-      "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
-      "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg=="
-    },
-    "@types/cookie": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
-      "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
-    },
-    "@types/cors": {
-      "version": "2.8.12",
-      "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
-      "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
-    },
-    "@types/node": {
-      "version": "16.4.13",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.13.tgz",
-      "integrity": "sha512-bLL69sKtd25w7p1nvg9pigE4gtKVpGTPojBFLMkGHXuUgap2sLqQt2qUnqmVCDfzGUL0DRNZP+1prIZJbMeAXg=="
-    },
-    "accepts": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
-      "requires": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
-      }
-    },
-    "array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
-    },
-    "backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
-    },
-    "base64-arraybuffer": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
-      "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
-    },
-    "base64id": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
-      "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
-    },
-    "body-parser": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
-      "requires": {
-        "bytes": "3.1.0",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "on-finished": "~2.3.0",
-        "qs": "6.7.0",
-        "raw-body": "2.4.0",
-        "type-is": "~1.6.17"
-      }
-    },
-    "bytes": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
-    },
-    "component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
-    },
-    "content-disposition": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
-      "requires": {
-        "safe-buffer": "5.1.2"
-      }
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-    },
-    "cookie": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
-    },
-    "cors": {
-      "version": "2.8.5",
-      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
-      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
-      "requires": {
-        "object-assign": "^4",
-        "vary": "^1"
-      }
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "requires": {
-        "ms": "2.0.0"
-      }
-    },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
-    },
-    "engine.io": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz",
-      "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==",
-      "requires": {
-        "accepts": "~1.3.4",
-        "base64id": "2.0.0",
-        "cookie": "~0.4.1",
-        "cors": "~2.8.5",
-        "debug": "~4.3.1",
-        "engine.io-parser": "~4.0.0",
-        "ws": "~7.4.2"
-      },
-      "dependencies": {
-        "cookie": {
-          "version": "0.4.1",
-          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
-          "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
-        },
-        "debug": {
-          "version": "4.3.2",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "engine.io-client": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz",
-      "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==",
-      "requires": {
-        "base64-arraybuffer": "0.1.4",
-        "component-emitter": "~1.3.0",
-        "debug": "~4.3.1",
-        "engine.io-parser": "~4.0.1",
-        "has-cors": "1.1.0",
-        "parseqs": "0.0.6",
-        "parseuri": "0.0.6",
-        "ws": "~7.4.2",
-        "yeast": "0.1.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.2",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "engine.io-parser": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz",
-      "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==",
-      "requires": {
-        "base64-arraybuffer": "0.1.4"
-      }
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
-    },
-    "express": {
-      "version": "4.17.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
-      "requires": {
-        "accepts": "~1.3.7",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.19.0",
-        "content-disposition": "0.5.3",
-        "content-type": "~1.0.4",
-        "cookie": "0.4.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "~1.1.2",
-        "fresh": "0.5.2",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.5",
-        "qs": "6.7.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.1.2",
-        "send": "0.17.1",
-        "serve-static": "1.14.1",
-        "setprototypeof": "1.1.1",
-        "statuses": "~1.5.0",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      }
-    },
-    "finalhandler": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.3",
-        "statuses": "~1.5.0",
-        "unpipe": "~1.0.0"
-      }
-    },
-    "forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
-    },
-    "has-cors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
-    },
-    "http": {
-      "version": "0.0.1-security",
-      "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz",
-      "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g=="
-    },
-    "http-errors": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
-      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
-      "requires": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.1",
-        "statuses": ">= 1.5.0 < 2",
-        "toidentifier": "1.0.0"
-      }
-    },
-    "iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-    },
-    "ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
-    },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
-    },
-    "mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
-    },
-    "mime-db": {
-      "version": "1.49.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
-      "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
-    },
-    "mime-types": {
-      "version": "2.1.32",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
-      "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
-      "requires": {
-        "mime-db": "1.49.0"
-      }
-    },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-    },
-    "negotiator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
-    },
-    "on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "parseqs": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
-      "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
-    },
-    "parseuri": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
-      "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
-    },
-    "parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
-    },
-    "path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
-    },
-    "proxy-addr": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-      "requires": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      }
-    },
-    "qs": {
-      "version": "6.7.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
-    },
-    "range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
-    },
-    "raw-body": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
-      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
-      "requires": {
-        "bytes": "3.1.0",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "send": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-      "requires": {
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "destroy": "~1.0.4",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "~1.7.2",
-        "mime": "1.6.0",
-        "ms": "2.1.1",
-        "on-finished": "~2.3.0",
-        "range-parser": "~1.2.1",
-        "statuses": "~1.5.0"
-      },
-      "dependencies": {
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.17.1"
-      }
-    },
-    "setprototypeof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
-    },
-    "socket.io": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz",
-      "integrity": "sha512-tLkaY13RcO4nIRh1K2hT5iuotfTaIQw7cVIe0FUykN3SuQi0cm7ALxuyT5/CtDswOMWUzMGTibxYNx/gU7In+Q==",
-      "requires": {
-        "@types/cookie": "^0.4.0",
-        "@types/cors": "^2.8.10",
-        "@types/node": ">=10.0.0",
-        "accepts": "~1.3.4",
-        "base64id": "~2.0.0",
-        "debug": "~4.3.1",
-        "engine.io": "~5.1.1",
-        "socket.io-adapter": "~2.3.1",
-        "socket.io-parser": "~4.0.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.2",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "socket.io-adapter": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz",
-      "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw=="
-    },
-    "socket.io-client": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.3.tgz",
-      "integrity": "sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA==",
-      "requires": {
-        "@types/component-emitter": "^1.2.10",
-        "backo2": "~1.0.2",
-        "component-emitter": "~1.3.0",
-        "debug": "~4.3.1",
-        "engine.io-client": "~5.1.2",
-        "parseuri": "0.0.6",
-        "socket.io-parser": "~4.0.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.2",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "socket.io-parser": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
-      "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
-      "requires": {
-        "@types/component-emitter": "^1.2.10",
-        "component-emitter": "~1.3.0",
-        "debug": "~4.3.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.2",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-    },
-    "toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
-    },
-    "type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      }
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
-    },
-    "ws": {
-      "version": "7.4.6",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-      "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
-    },
-    "yeast": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
-    }
-  }
-}
diff --git a/projects/cat-api/45_Chatting_app/server/package.json b/projects/cat-api/45_Chatting_app/server/package.json
deleted file mode 100644
index b7aad51..0000000
--- a/projects/cat-api/45_Chatting_app/server/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "name": "backend",
-  "version": "1.0.0",
-  "description": "",
-  "main": "server.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {
-    "cors": "^2.8.5",
-    "express": "^4.17.1",
-    "http": "0.0.1-security",
-    "socket.io": "^4.1.3",
-    "socket.io-client": "^4.1.3"
-  }
-}
diff --git a/projects/cat-api/45_Chatting_app/server/server.js b/projects/cat-api/45_Chatting_app/server/server.js
deleted file mode 100644
index 365fa16..0000000
--- a/projects/cat-api/45_Chatting_app/server/server.js
+++ /dev/null
@@ -1,62 +0,0 @@
-
-var express = require('express');
-var http = require('http');
-
-var app = express();
-var server = http.createServer(app).listen(process.env.PORT || 8000);;
-var cors = require('cors');
-app.use(cors({origin: 'https://akhil-warta.netlify.app'}));
-const io = require('socket.io')(server,{
-    cors: {
-        origin: 'https://akhil-warta.netlify.app'
-        // origin: 'http://127.0.0.1:5500' 
-       // header: ('Access-Control-Allow-Origin', "*")
-    }
-}); 
-
-// const users = {};
-
-// io.on("connection", socket =>{
-//    // console.log("New user" ,socket.id);
-//     socket.on('new-user-joined', name1 =>{
-//         console.log('New user', name1);
-//         users[socket.id] = name1;
-//         socket.broadcast.emit('user-joined' , name1);
-//     });
-
-//     socket.on('send', message =>{
-//         socket.broadcast.emit('receive',{message: message, name1: users[socket.id]});
-//     });
-//     socket.on('disconnect', message =>{
-//         socket.broadcast.emit('leave',{message: message, name1: users[socket.id]});
-//         delete users[socket.id];
-//     });
-
-// });
-
-const users = {};
-//const userName = [];
-io.on("connection", socket =>{
-   // console.log("New user" ,socket.id);
-
-    socket.on('new-user-joined', (name1, room) =>{
-        
-        //userName.push(name1);
-        socket.join(room);
-        console.log('New user', name1);
-        users[socket.id] = name1;
-        socket.to(room).emit('user-joined' , name1); // {name1, creator:userName[0]});
-    });
-
-    socket.on('send', (message, room) =>{
-        socket.to(room).emit('receive',{message: message, name1: users[socket.id]});
-    });
-    socket.on("room" , (room) =>{
-        socket.on('disconnect', () =>{
-        socket.to(room).emit('leave',{ name1: users[socket.id]});
-        delete users[socket.id];
-    });
-})
-
-
-});
diff --git a/projects/cat-api/46_image_slider/app.js b/projects/cat-api/46_image_slider/app.js
deleted file mode 100644
index 209dc7d..0000000
--- a/projects/cat-api/46_image_slider/app.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Slider(all Slides in a container)
-const slider = document.querySelector('.slider');
-// All trails
-const trail = document.querySelector('.trail').querySelectorAll('div');
-
-// Transform value
-let value = 0;
-// trail index number
-let trailValue = 0;
-// interval (Duration)
-let interval = 4000;
-
-// Function to slide forward
-const slide = (condition) => {
-	// CLear interval
-	clearInterval(start);
-	// update value and trailValue
-	condition === 'increase' ? initiateINC() : initiateDEC();
-	// move slide
-	move(value, trailValue);
-	// Restart Animation
-	animate();
-	// start interal for slides back
-	start = setInterval(() => slide('increase'), interval);
-};
-
-// function for increase(forward, next) configuration
-const initiateINC = () => {
-	// Remove active from all trails
-	trail.forEach((cur) => cur.classList.remove('active'));
-	// increase transform value
-	value === 80 ? (value = 0) : (value += 20);
-	// update trailValue based on value
-	trailUpdate();
-};
-
-// function for decrease(backward, previous) configuration
-const initiateDEC = () => {
-	// Remove active from all trails
-	trail.forEach((cur) => cur.classList.remove('active'));
-	// decrease transform value
-	value === 0 ? (value = 80) : (value -= 20);
-	// update trailValue based on value
-	trailUpdate();
-};
-
-// function to transform slide
-const move = (S, T) => {
-	// transform slider
-	slider.style.transform = `translateX(-${S}%)`;
-	//add active class to the current trail
-	trail[T].classList.add('active');
-};
-
-const tl = gsap.timeline({ defaults: { duration: 0.6, ease: 'power2.inOut' } });
-tl.from('.bg', { x: '-100%', opacity: 0 })
-	.from('p', { opacity: 0 }, '-=0.3')
-	.from('h1', { opacity: 0, y: '30px' }, '-=0.3')
-	.from('button', { opacity: 0, y: '-40px' }, '-=0.8');
-
-// function to restart animation
-const animate = () => tl.restart();
-
-// function to update trailValue based on slide value
-const trailUpdate = () => {
-	if (value === 0) {
-		trailValue = 0;
-	} else if (value === 20) {
-		trailValue = 1;
-	} else if (value === 40) {
-		trailValue = 2;
-	} else if (value === 60) {
-		trailValue = 3;
-	} else {
-		trailValue = 4;
-	}
-};
-
-// Start interval for slides
-let start = setInterval(() => slide('increase'), interval);
-
-// Next  and  Previous button function (SVG icon with different classes)
-document.querySelectorAll('svg').forEach((cur) => {
-	// Assign function based on the class Name("next" and "prev")
-	cur.addEventListener('click', () =>
-		cur.classList.contains('next') ? slide('increase') : slide('decrease')
-	);
-});
-
-// function to slide when trail is clicked
-const clickCheck = (e) => {
-	// CLear interval
-	clearInterval(start);
-	// remove active class from all trails
-	trail.forEach((cur) => cur.classList.remove('active'));
-	// Get selected trail
-	const check = e.target;
-	// add active class
-	check.classList.add('active');
-
-	// Update slide value based on the selected trail
-	if (check.classList.contains('box1')) {
-		value = 0;
-	} else if (check.classList.contains('box2')) {
-		value = 20;
-	} else if (check.classList.contains('box3')) {
-		value = 40;
-	} else if (check.classList.contains('box4')) {
-		value = 60;
-	} else {
-		value = 80;
-	}
-	// update trail based on value
-	trailUpdate();
-	// transfrom slide
-	move(value, trailValue);
-	// start animation
-	animate();
-	// start interval
-	start = setInterval(() => slide('increase'), interval);
-};
-
-// Add function to all trails
-trail.forEach((cur) => cur.addEventListener('click', (ev) => clickCheck(ev)));
-
-// Mobile touch Slide Section
-const touchSlide = (() => {
-	let start, move, change, sliderWidth;
-
-	// Do this on initial touch on screen
-	slider.addEventListener('touchstart', (e) => {
-		// get the touche position of X on the screen
-		start = e.touches[0].clientX;
-		// (each slide with) the width of the slider container divided by the number of slides
-		sliderWidth = slider.clientWidth / trail.length;
-	});
-
-	// Do this on touchDrag on screen
-	slider.addEventListener('touchmove', (e) => {
-		// prevent default function
-		e.preventDefault();
-		// get the touche position of X on the screen when dragging stops
-		move = e.touches[0].clientX;
-		// Subtract initial position from end position and save to change variabla
-		change = start - move;
-	});
-
-	const mobile = (e) => {
-		// if change is greater than a quarter of sliderWidth, next else Do NOTHING
-		change > sliderWidth / 4 ? slide('increase') : null;
-		// if change * -1 is greater than a quarter of sliderWidth, prev else Do NOTHING
-		change * -1 > sliderWidth / 4 ? slide('decrease') : null;
-		// reset all variable to 0
-		[start, move, change, sliderWidth] = [0, 0, 0, 0];
-	};
-	// call mobile on touch end
-	slider.addEventListener('touchend', mobile);
-})();
diff --git a/projects/cat-api/46_image_slider/index.html b/projects/cat-api/46_image_slider/index.html
deleted file mode 100644
index 44196e5..0000000
--- a/projects/cat-api/46_image_slider/index.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="UTF-8" />
-		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
-		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
-        <link rel="stylesheet" href="./style.css">
-		<title>Image Slider</title>
-	</head>
-	<body>
-		<div class="container">
-			<div class="slider">
-				<div class="box1 box">
-					<div class="bg"></div>
-					<div class="details">
-						<h1>I'm the first Box</h1>
-						<p>
-							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
-							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
-							pellentesque eget.
-						</p>
-						<button>Check Now</button>
-					</div>
-
-					<div class="illustration"><div class="inner"></div></div>
-				</div>
-
-				<div class="box2 box">
-					<div class="bg"></div>
-					<div class="details">
-						<h1>I'm the second Box</h1>
-						<p>
-							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
-							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
-							pellentesque eget.
-						</p>
-						<button>Check Now</button>
-					</div>
-
-					<div class="illustration"><div class="inner"></div></div>
-				</div>
-
-				<div class="box3 box">
-					<div class="bg"></div>
-					<div class="details">
-						<h1>I'm the third Box</h1>
-						<p>
-							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
-							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
-							pellentesque eget.
-						</p>
-						<button>Check Now</button>
-					</div>
-
-					<div class="illustration"><div class="inner"></div></div>
-				</div>
-
-				<div class="box4 box">
-					<div class="bg"></div>
-					<div class="details">
-						<h1>I'm the fourth Box</h1>
-						<p>
-							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
-							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
-							pellentesque eget.
-						</p>
-						<button>Check Now</button>
-					</div>
-
-					<div class="illustration"><div class="inner"></div></div>
-				</div>
-
-				<div class="box5 box">
-					<div class="bg"></div>
-					<div class="details">
-						<h1>I'm the fifth Box</h1>
-						<p>
-							Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
-							lacinia dui lectus. Donec scelerisque ipsum diam, ac mattis orci
-							pellentesque eget.
-						</p>
-						<button>Check Now</button>
-					</div>
-
-					<div class="illustration"><div class="inner"></div></div>
-				</div>
-			</div>
-
-			<svg
-				xmlns="http://www.w3.org/2000/svg"
-				class="prev"
-				width="56.898"
-				height="91"
-				viewBox="0 0 56.898 91"
-			>
-				<path
-					d="M45.5,0,91,56.9,48.452,24.068,0,56.9Z"
-					transform="translate(0 91) rotate(-90)"
-					fill="#fff"
-				/>
-			</svg>
-			<svg
-				xmlns="http://www.w3.org/2000/svg"
-				class="next"
-				width="56.898"
-				height="91"
-				viewBox="0 0 56.898 91"
-			>
-				<path
-					d="M45.5,0,91,56.9,48.452,24.068,0,56.9Z"
-					transform="translate(56.898) rotate(90)"
-					fill="#fff"
-				/>
-			</svg>
-			<div class="trail">
-				<div class="box1 active">1</div>
-				<div class="box2">2</div>
-				<div class="box3">3</div>
-				<div class="box4">4</div>
-				<div class="box5">5</div>
-			</div>
-		</div>
-		<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/16327/gsap-latest-beta.min.js"></script>
-		<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/16327/CSSRulePlugin3.min.js"></script>
-
-		<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.3.2/gsap.min.js"></script>
-        <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.3.2/CSSRulePlugin.min.js"></script> -->
-		<script src="./app.js"></script>
-	</body>
-</html>
diff --git a/projects/cat-api/46_image_slider/style.css b/projects/cat-api/46_image_slider/style.css
deleted file mode 100644
index dbdcaa4..0000000
--- a/projects/cat-api/46_image_slider/style.css
+++ /dev/null
@@ -1,337 +0,0 @@
-*,
-*:before,
-*:after {
-  margin: 0;
-  padding: 0;
-  box-sizing: inherit;
-}
-
-html {
-  box-sizing: border-box;
-  font-family: "Roboto", sans-serif;
-  font-size: 62.5%;
-}
-@media only screen and (max-width: 800px) {
-  html {
-    font-size: 57%;
-  }
-}
-
-body {
-  background-color: #000;
-  color: #fff;
-  padding: 8rem;
-}
-@media only screen and (max-width: 1000px) {
-  body {
-    padding: 0;
-  }
-}
-
-.container {
-  position: relative;
-  overflow: hidden;
-  border-radius: 5rem;
-}
-@media only screen and (max-width: 1000px) {
-  .container {
-    border-radius: 0;
-  }
-}
-
-.slider {
-  display: flex;
-  width: 500%;
-  height: 55rem;
-  transition: all 0.25s ease-in;
-  transform: translateX(0);
-}
-@media only screen and (max-width: 1000px) {
-  .slider {
-    height: 100vh;
-  }
-}
-.slider .box {
-  height: 100%;
-  width: 100%;
-  display: grid;
-  grid-template-columns: repeat(2, 1fr);
-  align-items: center;
-  overflow: hidden;
-  position: relative;
-}
-@media only screen and (max-width: 650px) {
-  .slider .box {
-    grid-template-columns: 1fr;
-    grid-template-rows: repeat(2, 1fr);
-  }
-}
-.slider .box .bg {
-  padding: 2rem;
-  background-color: rgba(0, 0, 0, 0.2);
-  width: 55%;
-  transform: skewX(7deg);
-  position: absolute;
-  height: 100%;
-  left: -10%;
-  padding-left: 20rem;
-  transform-origin: 0 100%;
-}
-@media only screen and (max-width: 800px) {
-  .slider .box .bg {
-    width: 65%;
-  }
-}
-@media only screen and (max-width: 650px) {
-  .slider .box .bg {
-    width: 100%;
-    left: 0;
-    bottom: 0;
-    height: 54%;
-    transform: skewX(0deg);
-  }
-}
-.slider .box .bg::before {
-  content: "";
-  width: 100%;
-  height: 100%;
-  position: absolute;
-  left: 0;
-  top: 0;
-  background-color: inherit;
-  pointer-events: none;
-  transform: skewX(10deg);
-}
-@media only screen and (max-width: 650px) {
-  .slider .box .bg::before {
-    width: 120%;
-    bottom: 0;
-    transform: skewX(0deg);
-  }
-}
-.slider .box .details {
-  padding: 5rem;
-  padding-left: 10rem;
-  z-index: 100;
-  grid-column: 1/span 1;
-  grid-row: 1/-1;
-}
-@media only screen and (max-width: 650px) {
-  .slider .box .details {
-    grid-row: 2/span 1;
-    grid-column: 1/-1;
-    text-align: center;
-    padding: 2rem;
-    transform: translateY(-9rem);
-  }
-}
-.slider .box .details h1 {
-  font-size: 3.5rem;
-  font-weight: 500;
-  margin-bottom: 0.5rem;
-}
-.slider .box .details p {
-  display: inline-block;
-  font-size: 1.3rem;
-  color: #b5b4b4;
-  margin-bottom: 2rem;
-  margin-right: 5rem;
-}
-@media only screen and (max-width: 800px) {
-  .slider .box .details p {
-    margin-right: 0;
-  }
-}
-.slider .box .details button {
-  padding: 1rem 3rem;
-  color: #fff;
-  border-radius: 2rem;
-  outline: none;
-  border: none;
-  cursor: pointer;
-  transition: all 0.3s ease;
-}
-.slider .box .details button:hover {
-  opacity: 0.8;
-}
-.slider .box .details button:focus {
-  outline: none;
-  border: none;
-}
-.slider .box1 {
-  background-color: #500033;
-}
-.slider .box1 .illustration .inner {
-  background-color: #ff0077;
-}
-.slider .box1 .illustration .inner::after, .slider .box1 .illustration .inner::before {
-  background-color: rgba(255, 0, 119, 0.4);
-}
-.slider .box1 button {
-  background-color: #ff0077;
-}
-.slider .box2 {
-  background-color: #000050;
-}
-.slider .box2 .illustration .inner {
-  background-color: #0033ff;
-}
-.slider .box2 .illustration .inner::after, .slider .box2 .illustration .inner::before {
-  background-color: rgba(0, 51, 255, 0.4);
-}
-.slider .box2 button {
-  background-color: #0033ff;
-}
-.slider .box3 {
-  background-color: #00501d;
-}
-.slider .box3 .illustration .inner {
-  background-color: #00ff44;
-}
-.slider .box3 .illustration .inner::after, .slider .box3 .illustration .inner::before {
-  background-color: rgba(0, 255, 68, 0.4);
-}
-.slider .box3 button {
-  background-color: #00ff44;
-}
-.slider .box4 {
-  background-color: #554d00;
-}
-.slider .box4 .illustration .inner {
-  background-color: #ff4e00;
-}
-.slider .box4 .illustration .inner::after, .slider .box4 .illustration .inner::before {
-  background-color: rgba(255, 78, 0, 0.4);
-}
-.slider .box4 button {
-  background-color: #ff4e00;
-}
-.slider .box5 {
-  background-color: #300050;
-}
-.slider .box5 .illustration .inner {
-  background-color: #8000ff;
-}
-.slider .box5 .illustration .inner::after, .slider .box5 .illustration .inner::before {
-  background-color: rgba(128, 0, 255, 0.4);
-}
-.slider .box5 button {
-  background-color: #8000ff;
-}
-.slider .illustration {
-  grid-column: 2/-1;
-  grid-row: 1/-1;
-  justify-self: center;
-}
-@media only screen and (max-width: 650px) {
-  .slider .illustration {
-    grid-row: 1/span 1;
-    grid-column: 1/-1;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-  }
-}
-.slider .illustration div {
-  height: 25rem;
-  width: 18rem;
-  border-radius: 3rem;
-  background-color: #ff0077;
-  position: relative;
-  transform: skewX(-10deg);
-}
-@media only screen and (max-width: 800px) {
-  .slider .illustration div {
-    height: 20rem;
-    width: 15rem;
-  }
-}
-.slider .illustration div::after, .slider .illustration div::before {
-  content: "";
-  position: absolute;
-  height: 100%;
-  width: 100%;
-  border-radius: 3rem;
-  top: 0;
-  left: 0;
-}
-.slider .illustration div::after {
-  transform: translate(4rem, -1rem);
-}
-.slider .illustration div::before {
-  transform: translate(2rem, -2rem);
-}
-
-.prev,
-.next,
-.trail {
-  z-index: 10000;
-  position: absolute;
-}
-
-.prev,
-.next {
-  width: 4rem;
-  cursor: pointer;
-  opacity: 0.2;
-  transition: all 0.3s ease;
-}
-@media only screen and (max-width: 650px) {
-  .prev,
-.next {
-    display: none;
-  }
-}
-.prev:hover,
-.next:hover {
-  opacity: 1;
-}
-
-.prev {
-  top: 50%;
-  left: 2%;
-  transform: translateY(-50%);
-}
-
-.next {
-  top: 50%;
-  right: 2%;
-  transform: translateY(-50%);
-}
-
-.trail {
-  bottom: 5%;
-  left: 50%;
-  transform: translateX(-50%);
-  width: 60%;
-  display: grid;
-  grid-template-columns: repeat(5, 1fr);
-  gap: 1rem;
-  text-align: center;
-  font-size: 1.5rem;
-}
-@media only screen and (max-width: 650px) {
-  .trail {
-    width: 90%;
-    bottom: 13%;
-  }
-}
-.trail div {
-  padding: 2rem;
-  border-top: 3px solid #fff;
-  cursor: pointer;
-  opacity: 0.3;
-  transition: all 0.3s ease;
-}
-.trail div:hover {
-  opacity: 0.6;
-}
-@media only screen and (max-width: 650px) {
-  .trail div {
-    padding: 1rem;
-  }
-}
-
-.active {
-  opacity: 1 !important;
-}
\ No newline at end of file
diff --git a/projects/cat-api/app.js b/projects/cat-api/app.js
deleted file mode 100644
index 5484703..0000000
--- a/projects/cat-api/app.js
+++ /dev/null
@@ -1,30 +0,0 @@
-const cat_result = document.getElementById("gallery");
-const errorData = document.getElementById("errorBox");
-
-
-btn_generate.addEventListener("click", function () {
-  const nums = document.getElementById("inp-box").value;
-
-  errorData.innerHTML = "";
-
-  if(!nums.match(/^[0-9]+$/)){
-    return errorData.innerHTML = "Enter a valid number";
-  }
-  if(parseInt(nums) > 10){
-    return errorData.innerHTML = "Number should be less than or equal to 10";
-  }
-
-  allimages = "";
-  fetch(
-    `https://api.thecatapi.com/v1/images/search?limit=${nums}&page=10&order=Desc`
-  )
-    .then((res) => res.json())
-    .then((res) => {
-      for (let i = 0; i < nums; i++) {
-        allimages += `
-     <img src=${res[i].url} alt="cat" />
-     `;
-      }
-      cat_result.innerHTML = allimages;
-    });
-});
diff --git a/projects/cat-api/index.html b/projects/cat-api/index.html
index 89e0a6a..d31671e 100644
--- a/projects/cat-api/index.html
+++ b/projects/cat-api/index.html
@@ -5,21 +5,45 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 
-    <title>Getting Started with APIs</title>
+    <title>Get Random Photos</title>
     <link rel="stylesheet" href="styles.css" />
   </head>
   <body>
     <div class="container">
-      <h1>Getting Started with APIs</h1>
+      <h1>Get Random Photos</h1>
 
-      <h2>Enter the number of kitties</h2>
-      <input type="text" class="inp-box" id="inp-box" />
-      <small id="errorBox"></small>
+      <h2>Enter the number of photos</h2>
+      <input
+        type="number"
+        class="input"
+        value="2"
+        min="1"
+        max="10"
+        id="input"
+      />
+      <small class="errorMessage" id="errorMessage">Error message</small>
 
-      <button id="btn_generate" class="btn">Display</button>
+      <button id="btn" class="btn">Get photos</button>
 
-      <div id="gallery" class="gallery"></div>
+      <div id="gallery" class="gallery">
+        <img
+          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
+          alt="image"
+        />
+        <img
+          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
+          alt="image"
+        />
+        <img
+          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
+          alt="image"
+        />
+        <img
+          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
+          alt="image"
+        />
+      </div>
     </div>
-    <script src="app.js"></script>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/cat-api/index.js b/projects/cat-api/index.js
new file mode 100644
index 0000000..191bb57
--- /dev/null
+++ b/projects/cat-api/index.js
@@ -0,0 +1,53 @@
+const galleryEl = document.getElementById("gallery");
+const errorMessageEl = document.getElementById("errorMessage");
+const btnEl = document.getElementById("btn");
+
+async function loadImage() {
+  const inputValue = document.getElementById("input").value;
+  if (inputValue > 10 || inputValue < 1) {
+    errorMessageEl.style.display = "block";
+    errorMessageEl.innerHTML = "Number should be between 1 and 10";
+
+    return;
+  }
+
+  let images = "";
+
+  try {
+    btnEl.style.display = "none";
+    loading = `<img
+    src="spinner.svg"
+    alt="image"
+  />`;
+
+    galleryEl.innerHTML = loading;
+
+    await fetch(
+      `https://api.unsplash.com/photos?per_page=${inputValue}&query=office&page=${Math.round(
+        Math.random() * 1000
+      )}&client_id=2zo4prpSQRMCG-gokmZT4sGe9hIAkcbdiTct1dnRzAY`
+    )
+      .then((res) => res.json())
+      .then((data) => {
+        if (data) {
+          errorMessageEl.style.display = "none";
+          data.forEach((pic) => {
+            images += `
+         <img src=${pic.urls.small} alt="cat" />
+         `;
+          });
+          galleryEl.style.display = "block";
+          galleryEl.innerHTML = images;
+        }
+      });
+
+    btnEl.style.display = "block";
+  } catch (error) {
+    console.log(error);
+    errorMessageEl.style.display = "block";
+    errorMessageEl.innerHTML = "An error happened, please try again later";
+    btnEl.style.display = "block";
+  }
+}
+
+btnEl.addEventListener("click", loadImage);
diff --git a/projects/cat-api/spinner.svg b/projects/cat-api/spinner.svg
new file mode 100644
index 0000000..fd9b80a
--- /dev/null
+++ b/projects/cat-api/spinner.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: none; display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
+<circle cx="50" cy="50" fill="none" stroke="#93dbe9" stroke-width="1" r="8" stroke-dasharray="37.69911184307752 14.566370614359172">
+  <animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
+</circle>
+<!-- [ldio] generated by https://loading.io/ --></svg>
\ No newline at end of file
diff --git a/projects/cat-api/styles.css b/projects/cat-api/styles.css
index 1c09be2..92bfaf9 100644
--- a/projects/cat-api/styles.css
+++ b/projects/cat-api/styles.css
@@ -1,106 +1,75 @@
-@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');
-
-:root {
-  --error-color: #dc3545;
-  --success-color: #28a745;
-  --warning-color: #ffc107;
-}
-
-* {
+body {
   margin: 0;
   padding: 0;
-  box-sizing: border-box;
-}
-
-body {
-  font-family: 'Open Sans', sans-serif;
-  font-size: 16px;
-  background-color: #19172e;
+  font-family:'Courier New', Courier, monospace;
+  background: linear-gradient(to bottom, lightgreen, lightblue);
   display: flex;
-  flex-direction: column;
   justify-content: center;
   align-items: center;
   min-height: 100vh;
+
 }
 
 .container {
-  background-color: rgba(255, 255, 255, 0.05);
-  padding: 1em;
+  background: aliceblue;
+  padding: 20px;
   border-radius: 5px;
-  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 10px 20px rgba(0,0,0,0.3);
   width: 90%;
   text-align: center;
   display: flex;
-
   flex-direction: column;
   align-items: center; 
-  flex-wrap: wrap;
+  margin: 10px;
  
 }
 
-h1 {
-  color: #fff;
-  margin-bottom: 20px;
+h2{
+  font-weight: 400;
 }
-#errorBox{
-  color: crimson;
+
+.errorMessage{
+  display: none;
+  color: red;
+  font-weight: 600;
+  margin: 10px;
+}
+
+.gallery{
+  display: none;
 }
   
 .gallery img {
-    width: 18vw;
-    height: 18vh;
+    width: 400px;
+    height: 250px;
     object-fit: cover;
+    border-radius: 10px;
+    margin: 5px;
   } 
 
-.inp-box{
-  text-transform: uppercase;
-  width: 250px;
-  height: 45px;
-  outline: none;
-  border: none;
-  margin: 20px 0;
-  padding: 10px;
+.input{
+  padding: 20px 10px;
   font-size: 18px;
   border-radius: 3px;
   background-color: white;
-  transition: all 300ms ease;
+  text-align: center;
 }
 .btn {
   text-transform: uppercase;
   width: 250px;
   height: 45px;
-  outline: none;
-  border: none;
   margin: 20px 0;
   font-size: 18px;
-  border-radius: 3px;
-  background-color: white;
+  border-radius: 5px;
+  background-color: black;
+  color: aliceblue;
   cursor: pointer;
   transition: all 300ms ease;
 }
 
 .btn:hover {
-  color: #fff;
-  background-color: #5c1ed5;
+  color: white;
+  background-color: green;
   cursor: pointer;
 }
 
-.btn:focus {
-  outline: none;
-}
-
-footer {
-  color: pink;
-  font-size: 1rem;
-  padding: 22px;
-  line-height: 3vh;
-  margin-top: 30px;
-}
-
-footer a {
-  color: inherit;
-}
-
-footer a:visited {
-  color: inherit;
-}

From d543507cf56df6c4d013e6d218c20f19b0d6eca2 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 11 Dec 2022 09:33:12 +0700
Subject: [PATCH 11/54] update the title of photo api

---
 projects/{cat-api => photo-gallery}/index.html  | 4 ++--
 projects/{cat-api => photo-gallery}/index.js    | 0
 projects/{cat-api => photo-gallery}/spinner.svg | 0
 projects/{cat-api => photo-gallery}/styles.css  | 0
 4 files changed, 2 insertions(+), 2 deletions(-)
 rename projects/{cat-api => photo-gallery}/index.html (95%)
 rename projects/{cat-api => photo-gallery}/index.js (100%)
 rename projects/{cat-api => photo-gallery}/spinner.svg (100%)
 rename projects/{cat-api => photo-gallery}/styles.css (100%)

diff --git a/projects/cat-api/index.html b/projects/photo-gallery/index.html
similarity index 95%
rename from projects/cat-api/index.html
rename to projects/photo-gallery/index.html
index d31671e..0845696 100644
--- a/projects/cat-api/index.html
+++ b/projects/photo-gallery/index.html
@@ -5,12 +5,12 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 
-    <title>Get Random Photos</title>
+    <title>Photos Gallery</title>
     <link rel="stylesheet" href="styles.css" />
   </head>
   <body>
     <div class="container">
-      <h1>Get Random Photos</h1>
+      <h1>Photos Gallery</h1>
 
       <h2>Enter the number of photos</h2>
       <input
diff --git a/projects/cat-api/index.js b/projects/photo-gallery/index.js
similarity index 100%
rename from projects/cat-api/index.js
rename to projects/photo-gallery/index.js
diff --git a/projects/cat-api/spinner.svg b/projects/photo-gallery/spinner.svg
similarity index 100%
rename from projects/cat-api/spinner.svg
rename to projects/photo-gallery/spinner.svg
diff --git a/projects/cat-api/styles.css b/projects/photo-gallery/styles.css
similarity index 100%
rename from projects/cat-api/styles.css
rename to projects/photo-gallery/styles.css

From 18185982e3032b3b07c84da75b4ce1e5c7a9ed2c Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 11 Dec 2022 19:27:09 +0700
Subject: [PATCH 12/54] update the photo gallery project

---
 projects/photo-gallery/index.html  |  38 +++-------
 projects/photo-gallery/index.js    |  51 ++++++-------
 projects/photo-gallery/spinner.svg |   2 +-
 projects/photo-gallery/styles.css  | 114 ++++++++++++++---------------
 4 files changed, 92 insertions(+), 113 deletions(-)

diff --git a/projects/photo-gallery/index.html b/projects/photo-gallery/index.html
index 0845696..f0a8e39 100644
--- a/projects/photo-gallery/index.html
+++ b/projects/photo-gallery/index.html
@@ -4,44 +4,28 @@
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-
-    <title>Photos Gallery</title>
-    <link rel="stylesheet" href="styles.css" />
+    <title>Photo Gallery</title>
+    <link rel="stylesheet" href="styles.css">
   </head>
   <body>
     <div class="container">
-      <h1>Photos Gallery</h1>
-
+      <h1>Photo Gallery</h1>
       <h2>Enter the number of photos</h2>
       <input
         type="number"
+        id="input"
         class="input"
         value="2"
         min="1"
         max="10"
-        id="input"
       />
-      <small class="errorMessage" id="errorMessage">Error message</small>
-
-      <button id="btn" class="btn">Get photos</button>
-
-      <div id="gallery" class="gallery">
-        <img
-          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
-          alt="image"
-        />
-        <img
-          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
-          alt="image"
-        />
-        <img
-          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
-          alt="image"
-        />
-        <img
-          src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80"
-          alt="image"
-        />
+      <small class="errorMessage" id="errorMessage">Error Message</small>
+      <button class="btn" id="btn">Get Photos</button>
+      <div class="gallery" id="gallery">
+        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
+        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
+        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
+        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
       </div>
     </div>
     <script src="index.js"></script>
diff --git a/projects/photo-gallery/index.js b/projects/photo-gallery/index.js
index 191bb57..024848b 100644
--- a/projects/photo-gallery/index.js
+++ b/projects/photo-gallery/index.js
@@ -1,53 +1,48 @@
-const galleryEl = document.getElementById("gallery");
-const errorMessageEl = document.getElementById("errorMessage");
 const btnEl = document.getElementById("btn");
+const errorMessageEl = document.getElementById("errorMessage");
+const galleryEl = document.getElementById("gallery");
 
-async function loadImage() {
+async function fetchImage() {
   const inputValue = document.getElementById("input").value;
+
   if (inputValue > 10 || inputValue < 1) {
     errorMessageEl.style.display = "block";
-    errorMessageEl.innerHTML = "Number should be between 1 and 10";
-
+    errorMessageEl.innerText = "Number should be between 0 and 11";
     return;
   }
 
-  let images = "";
+  imgs = "";
 
   try {
     btnEl.style.display = "none";
-    loading = `<img
-    src="spinner.svg"
-    alt="image"
-  />`;
-
+    const loading = `<img src="spinner.svg" />`;
     galleryEl.innerHTML = loading;
-
     await fetch(
-      `https://api.unsplash.com/photos?per_page=${inputValue}&query=office&page=${Math.round(
+      `https://api.unsplash.com/photos?per_page=${inputValue}&page=${Math.round(
         Math.random() * 1000
-      )}&client_id=2zo4prpSQRMCG-gokmZT4sGe9hIAkcbdiTct1dnRzAY`
-    )
-      .then((res) => res.json())
-      .then((data) => {
+      )}&client_id=B8S3zB8gCPVCvzpAhCRdfXg_aki8PZM_q5pAyzDUvlc`
+    ).then((res) =>
+      res.json().then((data) => {
         if (data) {
-          errorMessageEl.style.display = "none";
           data.forEach((pic) => {
-            images += `
-         <img src=${pic.urls.small} alt="cat" />
-         `;
+            imgs += `
+            <img src=${pic.urls.small} alt="image"/>
+            `;
+            galleryEl.style.display = "block";
+            galleryEl.innerHTML = imgs;
+            btnEl.style.display = "block";
+            errorMessageEl.style.display = "none";
           });
-          galleryEl.style.display = "block";
-          galleryEl.innerHTML = images;
         }
-      });
-
-    btnEl.style.display = "block";
+      })
+    );
   } catch (error) {
     console.log(error);
     errorMessageEl.style.display = "block";
-    errorMessageEl.innerHTML = "An error happened, please try again later";
+    errorMessageEl.innerHTML = "An error happened, try again later";
     btnEl.style.display = "block";
+    galleryEl.style.display = "none";
   }
 }
 
-btnEl.addEventListener("click", loadImage);
+btnEl.addEventListener("click", fetchImage);
diff --git a/projects/photo-gallery/spinner.svg b/projects/photo-gallery/spinner.svg
index fd9b80a..c59456b 100644
--- a/projects/photo-gallery/spinner.svg
+++ b/projects/photo-gallery/spinner.svg
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: none; display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
-<circle cx="50" cy="50" fill="none" stroke="#93dbe9" stroke-width="1" r="8" stroke-dasharray="37.69911184307752 14.566370614359172">
+<circle cx="50" cy="50" fill="none" stroke="#93dbe9" stroke-width="1" r="4" stroke-dasharray="18.84955592153876 8.283185307179586">
   <animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
 </circle>
 <!-- [ldio] generated by https://loading.io/ --></svg>
\ No newline at end of file
diff --git a/projects/photo-gallery/styles.css b/projects/photo-gallery/styles.css
index 92bfaf9..c4270f4 100644
--- a/projects/photo-gallery/styles.css
+++ b/projects/photo-gallery/styles.css
@@ -1,75 +1,75 @@
-body {
-  margin: 0;
-  padding: 0;
-  font-family:'Courier New', Courier, monospace;
-  background: linear-gradient(to bottom, lightgreen, lightblue);
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  min-height: 100vh;
 
+body{
+    margin: 0;
+    font-family: 'Courier New', Courier, monospace;
+    background: linear-gradient(to bottom, lightgreen, lightblue);
+    display: flex;
+    min-height: 100vh;
+    justify-content: center;
+    align-items: center;
+    text-align: center;
 }
 
-.container {
-  background: aliceblue;
-  padding: 20px;
-  border-radius: 5px;
-  box-shadow: 0 10px 20px rgba(0,0,0,0.3);
-  width: 90%;
-  text-align: center;
-  display: flex;
-  flex-direction: column;
-  align-items: center; 
-  margin: 10px;
- 
+.container{
+    background-color: aliceblue;
+    padding: 20px;
+    border-radius: 5px;
+    box-shadow: 0 10px 20px rgba(0,0,0,0.3);
+    width: 90%;
+    margin: 10px;
+    display: flex;
+    flex-direction: column;
+    text-align: center;
+    justify-content: center;
+    align-items: center;
 }
 
 h2{
-  font-weight: 400;
+    font-weight: 400;
+}
+
+.input{
+    padding: 20px 10px;
+    font-size: 18px;
+    background-color: white;
+    border-radius: 5px;
+    text-align: center;
+    width: 100px;
 }
 
 .errorMessage{
-  display: none;
-  color: red;
-  font-weight: 600;
-  margin: 10px;
+    color: red;
+    font-weight: 600;
+    margin: 10px;
+    display: none;
 }
 
-.gallery{
-  display: none;
+.btn{
+    text-transform: uppercase;
+    width: 250px;
+    height: 45px;
+    margin: 20px 0;
+    font-size: 18px;
+    border-radius: 5px;
+    background-color: black;
+    color: aliceblue;
+
+}
+
+.btn:hover{
+    color: aliceblue;
+    background-color: green;
+    cursor: pointer;
+    transition: background-color 300ms ease-in-out;
 }
-  
-.gallery img {
+.gallery img{
     width: 400px;
     height: 250px;
     object-fit: cover;
-    border-radius: 10px;
+    border-radius: 5px;
     margin: 5px;
-  } 
-
-.input{
-  padding: 20px 10px;
-  font-size: 18px;
-  border-radius: 3px;
-  background-color: white;
-  text-align: center;
-}
-.btn {
-  text-transform: uppercase;
-  width: 250px;
-  height: 45px;
-  margin: 20px 0;
-  font-size: 18px;
-  border-radius: 5px;
-  background-color: black;
-  color: aliceblue;
-  cursor: pointer;
-  transition: all 300ms ease;
-}
-
-.btn:hover {
-  color: white;
-  background-color: green;
-  cursor: pointer;
 }
 
+.gallery{
+    display: none;
+}
\ No newline at end of file

From 4502cce775deb9760af0f10f76902beb0de62895 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 12 Dec 2022 11:58:12 +0700
Subject: [PATCH 13/54] update random quote generator

---
 projects/english-dictionary/index.html        |   2 +-
 .../{script.js => index.js}                   |   0
 projects/movie-quote-generator/index.html     |  69 ++++---
 projects/movie-quote-generator/index.js       |  32 +++
 projects/movie-quote-generator/script.js      |  17 --
 projects/movie-quote-generator/style.css      | 182 ++++++------------
 6 files changed, 123 insertions(+), 179 deletions(-)
 rename projects/english-dictionary/{script.js => index.js} (100%)
 create mode 100644 projects/movie-quote-generator/index.js
 delete mode 100644 projects/movie-quote-generator/script.js

diff --git a/projects/english-dictionary/index.html b/projects/english-dictionary/index.html
index fdbafc8..d74bf9a 100644
--- a/projects/english-dictionary/index.html
+++ b/projects/english-dictionary/index.html
@@ -47,7 +47,7 @@
             </div>
         </ul>
     </div>
-<script src="script.js"></script>
+<script src="index.js"></script>
 
 </body>
 </html>
\ No newline at end of file
diff --git a/projects/english-dictionary/script.js b/projects/english-dictionary/index.js
similarity index 100%
rename from projects/english-dictionary/script.js
rename to projects/english-dictionary/index.js
diff --git a/projects/movie-quote-generator/index.html b/projects/movie-quote-generator/index.html
index eb18ef6..87e9108 100644
--- a/projects/movie-quote-generator/index.html
+++ b/projects/movie-quote-generator/index.html
@@ -1,40 +1,37 @@
 <!DOCTYPE html>
 <html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <meta http-equiv="X-UA-Compatible" content="ie=edge">
-  <title>Random Movie/TV Series Quote Generator</title>
-  <link rel="stylesheet" href="style.css">
-  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
-  <link rel="preconnect" href="https://fonts.googleapis.com">
-  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
-  <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@700&display=swap" rel="stylesheet">
-</head>
-<body>
-        <p class="heading">Movie Quote Generator<p>
-        </br>
-        <!-- Quote Container -->
-        <div class="container">
-             <!-- Quote to be Displayed Here -->
-            <h1>
-            <i class="fa fa-quote-left" style="color: #19172e"></i>
-            <span id="quote"></span>
-            <i class="fa fa-quote-right" style="color: #19172e"></i>
-            </h1>
-            <!-- Author to be Displayed Here -->
-            <p id="author"></p>
-            <!-- TV Show / Movie Name to be Displayed Here -->
-            <p id="source"></p>
-            <hr/>
-            <div class="buttons">
-              
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+    <title>Random Quote Generator</title>
+    <link rel="stylesheet" href="style.css" />
+    <link
+      rel="stylesheet"
+      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css"
+      integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w=="
+      crossorigin="anonymous"
+      referrerpolicy="no-referrer"
+    />
+  </head>
+  <body>
+    <!-- Quote Container -->
+    <div class="container">
+      <!-- Quote to be Displayed Here -->
+      <h1 class="heading">Random Quote Generator</h1>
 
-                <!--Add an onclick event on 'next quote' button. Upon the click of a button, a new random quote is generated-->
-                <button class="next" onclick="getNextQuote()">Next quote</button>
-            </div>
-        </div>
-        
-        <script src="script.js"></script>
-</body>
+      <h2 class="quote">
+        <i class="fa fa-quote-left" ></i>
+        <span id="quote" >Quote</span>
+        <i class="fa fa-quote-right"></i>
+      </h1>
+
+      <p id="author" class="author">~ Author</p>
+
+        <button class="btn" id="btn">Get a quote</button>
+      </div>
+    </div>
+
+    <script src="index.js"></script>
+  </body>
 </html>
diff --git a/projects/movie-quote-generator/index.js b/projects/movie-quote-generator/index.js
new file mode 100644
index 0000000..90b0fc9
--- /dev/null
+++ b/projects/movie-quote-generator/index.js
@@ -0,0 +1,32 @@
+btnEl = document.getElementById("btn");
+quoteEl = document.getElementById("quote");
+authorEl = document.getElementById("author");
+
+async function getNextQuote() {
+  try {
+    btnEl.innerText = "Loading...";
+    btnEl.disabled = true;
+    quoteEl.innerText = "Updating...";
+    authorEl.innerText = "~ " + "Updating...";
+    let url = "https://api.quotable.io/random";
+    const response = await fetch(url);
+    const data = await response.json();
+    const quoteContent = data.content;
+    const quoteAuthor = data.author;
+    quoteEl.innerText = quoteContent;
+    authorEl.innerText = "~ " + quoteAuthor;
+    btnEl.innerText = "Get quote";
+    btnEl.disabled = false;
+  } catch (error) {
+    console.log(error);
+    // test the error by setting up the network to offline
+    quoteEl.innerText = "An error happened, try again later";
+    authorEl.innerText = "~ " + "An error happened";
+    btnEl.disabled = false;
+    btnEl.innerText = "Get quote";
+  }
+}
+
+btnEl.addEventListener("click", getNextQuote);
+
+getNextQuote();
diff --git a/projects/movie-quote-generator/script.js b/projects/movie-quote-generator/script.js
deleted file mode 100644
index 2c0f8c4..0000000
--- a/projects/movie-quote-generator/script.js
+++ /dev/null
@@ -1,17 +0,0 @@
-const getNextQuote = async() =>
-{
-  var url = "https://raw.githubusercontent.com/msramalho/json-tv-quotes/master/quotes.json";
-  const response = await fetch(url);
-  const totalQuotes = await response.json();
-  const index = Math.floor(Math.random()*totalQuotes.length);
-  const quo=totalQuotes[index].quote;
-  const auth=totalQuotes[index].author;
-  const sour=totalQuotes[index].source;
-  quote.innerHTML=""+quo;
-  author.innerHTML="~ "+auth;
-  source.innerHTML=""+sour;
-  tweet.href="https://twitter.com/intent/tweet?text="+quo+" ~ "+auth+" | "+sour;
-  whatsapp.href="whatsapp://send?text="+quo+" ~ "+auth+" | "+sour;
-}
-
-getNextQuote();
diff --git a/projects/movie-quote-generator/style.css b/projects/movie-quote-generator/style.css
index b0e3c55..3314276 100644
--- a/projects/movie-quote-generator/style.css
+++ b/projects/movie-quote-generator/style.css
@@ -1,129 +1,61 @@
-*{ 
-   margin: 0; 
-   padding: 0; 
-   box-sizing: border-box; 
-  } 
-
-body { 
-   display: flex; 
-   justify-content: center; 
-   align-items: center; 
-   min-height: 100vh; 
-   background-color: #19172e; 
-   font-family: "Garamond", serif;
-   transition-timing-function: ease-in;
-   transition: 0.7s;
-   }
-   
-#quote {
-   text-align: center;
-   font-size: 40px;
-   font-weight: bold;
-   color: white;
-}
-
-#author {
-   margin: 10px;
-   text-align: right;
-   font-size: 25px;
-   font-style: italic;
-   font-family: "Garamond", serif;
-   color: #19172e;
-}
-
-#source {
-   margin: 10px;
-   text-align: right;
-   font-size: 25px;
-   font-weight: 700;
-   font-family: "Garamond", serif;
-   color: #19172e
+body {
+  margin: 0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  min-height: 100vh;
+  background: linear-gradient(to left bottom, lightgreen, lightblue);
+  color: black;
+  font-family: "Courier New", Courier, monospace;
 }
 
 .container {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    padding: 30px;
-    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.6);
-    border-radius: 15px;
-    width: 600px;
-    background-color: rgba(255, 255, 255, 0.3);
-    margin: 10px;
-}
-
-
-.buttons {
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-top: 9px;
-  
-}
-
-#tweet {
-    border: solid rgb(102, 179, 255);
-    border-radius: 4px;
-    background-color: rgb(102, 179, 255);
-    color: white;
-    text-align: center;
-    font-size: 1.8em;
-    width: 60px;
-    height: 35px;
-    line-height: 40px;
-
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  padding: 30px;
+  box-shadow: 0 6px 10px rgba(0, 0, 0, 0.3);
+  border-radius: 15px;
+  width: 90%;
+  background-color: rgba(255, 255, 255, 0.1);
+  margin: 10px;
+  text-align: center;
+}
+
+.heading {
+  font-size: 35px;
+  text-align: center;
+  font-weight: 700;
+}
+
+.quote {
+  font-size: 30px;
+  font-weight: bold;
+}
+
+.author {
+  margin: 10px;
+  text-align: right;
+  font-size: 25px;
+  font-style: italic;
+}
+
+.btn {
+  font-size: 18px;
+  border-radius: 5px;
+  cursor: pointer;
+  padding: 10px;
+  margin-top: 15px;
+  background-color: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.6);
+  width: 300px;
+  color: black;
+  text-transform: uppercase;
+}
+
+.btn:hover {
+  background-color: rgba(255, 255, 255, 0.6);
+  color: green;
+  transition: all 300ms ease-in-out;
+  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3);
 }
-
-#whatsapp {
-    border: solid #25D366;
-    border-radius: 4px;
-    background-color: #25D366;
-    color: white;
-    text-align: center;
-    font-size: 1.8em;
-    width: 60px;
-    height: 35px;
-    line-height: 40px;
-
-}
-
-footer {
-
-    text-align: center;
-    color: white;
-    font-size: 1rem;
-    position: absolute;
-    bottom: 0px;
-    padding: 5px;
-    line-height: 3vh;
-    font-family: "Roboto", sans-serif;
-}
-
-.heading{
-    font-family: "Roboto", sans-serif;
-    color: white;
-    font-size: 50px;
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    text-align: center;
-    padding: 100px;
-    line-height: 3vh;
-}
-
-.container:hover {
-    box-shadow: 0 10px 10px rgb(0, 0, 0);
-}
-
-.next {
-    font-size: 18px;
-    border-radius: 5px;
-    cursor: pointer;
-    padding: 10px;
-    margin-top: 5px;
-    font-weight: bold;
-    color: white;
-    background-image: linear-gradient(to right bottom, rgb(230, 100, 0), #ffedbca8);
-}
\ No newline at end of file

From 63e176d8211672308da5d1cb01a1d988b5533960 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 12 Dec 2022 13:44:05 +0700
Subject: [PATCH 14/54] update the movie quote generator name

---
 .../{movie-quote-generator => random-quote-generator}/index.html  | 0
 .../{movie-quote-generator => random-quote-generator}/index.js    | 0
 .../{movie-quote-generator => random-quote-generator}/style.css   | 0
 3 files changed, 0 insertions(+), 0 deletions(-)
 rename projects/{movie-quote-generator => random-quote-generator}/index.html (100%)
 rename projects/{movie-quote-generator => random-quote-generator}/index.js (100%)
 rename projects/{movie-quote-generator => random-quote-generator}/style.css (100%)

diff --git a/projects/movie-quote-generator/index.html b/projects/random-quote-generator/index.html
similarity index 100%
rename from projects/movie-quote-generator/index.html
rename to projects/random-quote-generator/index.html
diff --git a/projects/movie-quote-generator/index.js b/projects/random-quote-generator/index.js
similarity index 100%
rename from projects/movie-quote-generator/index.js
rename to projects/random-quote-generator/index.js
diff --git a/projects/movie-quote-generator/style.css b/projects/random-quote-generator/style.css
similarity index 100%
rename from projects/movie-quote-generator/style.css
rename to projects/random-quote-generator/style.css

From 7c5b97301be35c223d9972e2ad9e18f70c8630b4 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Tue, 13 Dec 2022 18:06:36 +0700
Subject: [PATCH 15/54] update random quote generator project

---
 projects/random-quote-generator/index.html | 46 ++++++++--------------
 projects/random-quote-generator/index.js   | 27 +++++++------
 projects/random-quote-generator/style.css  | 31 ++++++---------
 3 files changed, 43 insertions(+), 61 deletions(-)

diff --git a/projects/random-quote-generator/index.html b/projects/random-quote-generator/index.html
index 87e9108..04cd199 100644
--- a/projects/random-quote-generator/index.html
+++ b/projects/random-quote-generator/index.html
@@ -1,37 +1,25 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Random Quote Generator</title>
-    <link rel="stylesheet" href="style.css" />
-    <link
-      rel="stylesheet"
-      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css"
-      integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w=="
-      crossorigin="anonymous"
-      referrerpolicy="no-referrer"
-    />
-  </head>
-  <body>
-    <!-- Quote Container -->
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css" integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="container">
-      <!-- Quote to be Displayed Here -->
-      <h1 class="heading">Random Quote Generator</h1>
-
-      <h2 class="quote">
-        <i class="fa fa-quote-left" ></i>
-        <span id="quote" >Quote</span>
-        <i class="fa fa-quote-right"></i>
-      </h1>
-
-      <p id="author" class="author">~ Author</p>
+        <h1 class="heading">Random Quote Generator</h1>
+        <h2 class="quote">
+            <i class="fa-solid fa-quote-left"></i>
+            <span id="quote">Quote</span>
+            <i class="fa-solid fa-quote-right"></i>
 
+        </h2>
+        <p class="author" id="author">~ Author</p>
         <button class="btn" id="btn">Get a quote</button>
-      </div>
     </div>
-
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/random-quote-generator/index.js b/projects/random-quote-generator/index.js
index 90b0fc9..801cc29 100644
--- a/projects/random-quote-generator/index.js
+++ b/projects/random-quote-generator/index.js
@@ -1,32 +1,33 @@
-btnEl = document.getElementById("btn");
-quoteEl = document.getElementById("quote");
-authorEl = document.getElementById("author");
+const btnEl = document.getElementById("btn");
+const quoteEl = document.getElementById("quote");
+const authorEl = document.getElementById("author");
 
-async function getNextQuote() {
+const apiURL = "https://api.quotable.io/random";
+
+async function getQuote() {
   try {
     btnEl.innerText = "Loading...";
     btnEl.disabled = true;
     quoteEl.innerText = "Updating...";
-    authorEl.innerText = "~ " + "Updating...";
-    let url = "https://api.quotable.io/random";
-    const response = await fetch(url);
+    authorEl.innerText = "Updating...";
+    const response = await fetch(apiURL);
     const data = await response.json();
     const quoteContent = data.content;
     const quoteAuthor = data.author;
     quoteEl.innerText = quoteContent;
     authorEl.innerText = "~ " + quoteAuthor;
-    btnEl.innerText = "Get quote";
+    btnEl.innerText = "Get a quote";
     btnEl.disabled = false;
+    console.log(data);
   } catch (error) {
     console.log(error);
-    // test the error by setting up the network to offline
     quoteEl.innerText = "An error happened, try again later";
-    authorEl.innerText = "~ " + "An error happened";
+    authorEl.innerText = "An error happened";
+    btnEl.innerText = "Get a quote";
     btnEl.disabled = false;
-    btnEl.innerText = "Get quote";
   }
 }
 
-btnEl.addEventListener("click", getNextQuote);
+getQuote()
 
-getNextQuote();
+btnEl.addEventListener("click", getQuote);
diff --git a/projects/random-quote-generator/style.css b/projects/random-quote-generator/style.css
index 3314276..e67e3f5 100644
--- a/projects/random-quote-generator/style.css
+++ b/projects/random-quote-generator/style.css
@@ -1,42 +1,36 @@
 body {
   margin: 0;
   display: flex;
+  min-height: 100vh;
   justify-content: center;
   align-items: center;
-  min-height: 100vh;
-  background: linear-gradient(to left bottom, lightgreen, lightblue);
-  color: black;
   font-family: "Courier New", Courier, monospace;
+  background: linear-gradient(to left bottom, lightgreen, lightblue);
 }
 
 .container {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  padding: 30px;
+  background-color: rgba(255, 255, 255, 0.1);
   box-shadow: 0 6px 10px rgba(0, 0, 0, 0.3);
+  padding: 30px;
   border-radius: 15px;
   width: 90%;
-  background-color: rgba(255, 255, 255, 0.1);
   margin: 10px;
   text-align: center;
 }
 
 .heading {
   font-size: 35px;
-  text-align: center;
   font-weight: 700;
 }
 
 .quote {
   font-size: 30px;
-  font-weight: bold;
+  font-weight: 600;
 }
 
 .author {
-  margin: 10px;
-  text-align: right;
   font-size: 25px;
+  margin: 10px;
   font-style: italic;
 }
 
@@ -48,14 +42,13 @@ body {
   margin-top: 15px;
   background-color: rgba(255, 255, 255, 0.3);
   border-color: rgba(255, 255, 255, 0.6);
-  width: 300px;
-  color: black;
   text-transform: uppercase;
+  width: 300px;
 }
 
-.btn:hover {
-  background-color: rgba(255, 255, 255, 0.6);
-  color: green;
-  transition: all 300ms ease-in-out;
-  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3);
+.btn:hover{
+    background-color: rgba(255,255,255,.6);
+    box-shadow: 0 4px 4px rgba(0,0,0,.3);
+    transition: all 300ms ease-in-out;
+    color: green;
 }

From 0ffab49484dc2824ed5ca48191105e300a88faca Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 15 Dec 2022 07:53:09 +0700
Subject: [PATCH 16/54] update english dic project

---
 projects/english-dictionary/index.html |  82 +++++------
 projects/english-dictionary/index.js   | 110 ++++++---------
 projects/english-dictionary/style.css  | 188 +++++--------------------
 3 files changed, 114 insertions(+), 266 deletions(-)

diff --git a/projects/english-dictionary/index.html b/projects/english-dictionary/index.html
index d74bf9a..a1800e9 100644
--- a/projects/english-dictionary/index.html
+++ b/projects/english-dictionary/index.html
@@ -1,53 +1,35 @@
-<!Doctype html>
+<!DOCTYPE html>
 <html lang="en">
-<head>
-    <meta charset="utf-8">
+  <head>
+    <meta charset="utf-8" />
     <title>Dictionary App</title>
-    <meta name="viewport" content="width-device=width, initial-scale=1.0">
-    <link rel="stylesheet" href="style.css">
-    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body>
-    <div class="wrapper">
-        <header>English Dictionary</header>
-        <div class="search">
-            <input type="text" placeholder="Search a word">
-            <i class="fas fa-search"></i>
-            <span class="material-icons">close</span>
-        </div>
-        <p class="info-text">Type a word and press enter</p>
-        <ul>
-            <li class="word">
-                <div class="details">
-                    <p>_</p>
-                    <span>___</span>
-                </div>
-                <i class="fas fa-volume-up"></i>
-            </li>
-            <div class="content">
-                <li class="meaning">
-                    <div class="details">
-                        <p>Meaning</p>
-                        <span>___</span>
-                    </div>
-                </li>
-                <div class="example">
-                    <li class="meaning">
-                        <div class="details">
-                            <p>Example</p>
-                            <span>___</span>
-                        </div>
-                    </li>
-                    <div class="synonyms">
-                        <div class="details">
-                            <p>Synonyms</p>
-                            <div class="list"></div>
-                    </div>
-            </div>
-        </ul>
-    </div>
-<script src="index.js"></script>
 
-</body>
-</html>
\ No newline at end of file
+    <link rel="stylesheet" href="style.css" />
+    <link
+      href="https://fonts.googleapis.com/icon?family=Material+Icons"
+      rel="stylesheet"
+    />
+    <link
+      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
+      rel="stylesheet"
+    />
+  </head>
+  <body>
+    <div class="container" id="container">
+      <h1 class="heading">English Dictionary</h1>
+      <input type="text" class="input" id="input" placeholder="Search a word" />
+      <p class="info-text" id="info-text">Type a word and press enter</p>
+      <div class="meaning-container" id="meaning-container">
+        <p>Word Title: <span class="title" id="title">___</span></p>
+        <p>Meaning: <span class="meaning" id="meaning">___</span></p>
+
+        <audio
+          id="audio"
+          controls
+          src="https://api.dictionaryapi.dev/media/pronunciations/en/hello-au.mp3"
+        ></audio>
+      </div>
+    </div>
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/english-dictionary/index.js b/projects/english-dictionary/index.js
index c092e20..171ff75 100644
--- a/projects/english-dictionary/index.js
+++ b/projects/english-dictionary/index.js
@@ -1,73 +1,53 @@
-const wrapper = document.querySelector(".wrapper"),
-searchInput = wrapper.querySelector("input"),
-synonyms = wrapper.querySelector(".synonyms .list"),
-infoText = wrapper.querySelector(".info-text"),
-volumeIcon = wrapper.querySelector(".word i"),
-removeIcon = wrapper.querySelector(".search span");
-let audio;
-
-
-function data(result, word) {
-    if (result.title){
-        infoText.innerHTML = `Can't find the meaning of <span>"${word}"</span>.Please try to search for another
-        word`;
-    }
-    else {
-        console.log(result);
-        wrapper.classList.add("active");
-        let definitions = result[0].meanings[0].definitions[0],
-        phonetics = `${result[0].meanings[0].partOfSpeech} / ${result[0].phonetics[0].text} / `;
-        
-        document.querySelector('.word p').innerText = result[0].word;
-        document.querySelector('.word span').innerText = phonetics;
-        document.querySelector('.meaning span').innerText = definitions.definition;
-        document.querySelector('.example span').innerText = definitions.example;
-        audio = new Audio('https:' + result[0].phonetics[0].audio);
-        
-        if(definitions.synonyms[0] == undefined){
-            synonyms.parentElement.style.display = 'none';
-        }
-        else {
-            synonyms.parentElement.style.display = 'block';
-            synonyms.innerHTML = "";
-            for( let i =0; i < 5; i++) {
-                let tag = `<span onclick = search('${definitions.synonyms[i]}')>${definitions.synonyms[i]},</span>`;
-                synonyms.insertAdjacentHTML('beforeend', tag);
-            }
-        }
+const containerEl = document.getElementById("container"),
+  searchInput = document.getElementById("input");
+infoTextEl = document.getElementById("info-text");
+const audioEl = document.getElementById("audio");
+
+const meaningContainerEl = document.getElementById("meaning-container");
+
+const titleEl = document.getElementById("title");
+const meaningEl = document.getElementById("meaning");
+
+async function fetchApi(word) {
+  try {
+    infoTextEl.style.display = "block";
+    infoTextEl.innerText = `Searching the meaning of "${word}"`;
+    meaningContainerEl.style.display = "none";
+    const url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word}`;
+    const result = await fetch(url).then((res) => res.json());
+
+    if (result.title) {
+      titleEl.innerText = word;
+      meaningEl.innerText = "N/A";
+      audioEl.style.display = "none";
     }
-}
 
-function search (word){
-    searchInput.value = word;
-    fetchApi(word);
-}
+    const definitions = result[0].meanings[0].definitions[0];
 
-function fetchApi(word) {
-    wrapper.classList.remove('active');
-    infoText.style.color = '#000';
-    infoText.innerHTML = `Searching the meaning of<span>"${word}"</span>`;
-    let url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word}`;
-    // fetching api response and returning it with parsing into js obj
-    //method calling data with passing api response
-    fetch(url).then(res => res.json()).then(result => data(result, word));
-}
+    titleEl.innerText = result[0].word;
 
+    meaningEl.innerText = definitions.definition;
 
-searchInput.addEventListener('keyup', e => {
-    if(e.key === 'Enter' && e.target.value){
-        fetchApi(e.target.value);
+    if (result[0].phonetics[0].audio) {
+      audioEl.style.display = "inline-flex";
+
+      audioEl.src = result[0].phonetics[0].audio;
+    } else {
+      audioEl.style.display = "none";
     }
-});
 
-volumeIcon.addEventListener('click', () => {
-    audio.play();
-});
+    infoTextEl.style.display = "none";
+    meaningContainerEl.style.display = "block";
+  } catch (error) {
+    console.log(error);
+    infoTextEl.style.display = "none";
+    meaningContainerEl.style.display = "block";
+    audioEl.style.display = "none";
+  }
+}
 
-removeIcon.addEventListener('click', () => {
-    searchInput.value = "";
-    searchInput.focus();
-    wrapper.classList.remove("active");
-    infoText.style.color = '#9a9a9a';
-    infoText.innerHTML= "Type a word and press enter";
-});
\ No newline at end of file
+searchInput.addEventListener("keyup", (e) => {
+  if (e.key === "Enter" && e.target.value) {
+    fetchApi(e.target.value);
+  }
+});
diff --git a/projects/english-dictionary/style.css b/projects/english-dictionary/style.css
index 39c1ecc..aa22bfb 100644
--- a/projects/english-dictionary/style.css
+++ b/projects/english-dictionary/style.css
@@ -1,153 +1,39 @@
-*{
-    margin: 0;
-    padding: 0;
-    box-sizing: border-box;
-    font-family: sans-serif;
-}
 body {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    background-color: rgb(160, 158, 156);
-    min-height: 100vh;
-}
-
-.wrapper {
-    width: 420px;
-    background-color: #fff;
-    border-radius: 7px;
-    padding: 28px 28px;
-}
-.wrapper header {
-    font-size: 28px;
-    font-weight: 500;
-    text-align: center;
-}
-.wrapper .search {
-    margin: 35px 0 18px;
-    position: relative;
-}
-.search input {
-    height: 53px;
-    width: 100%;
-    outline: none;
-    border: 1px solid #999;
-    border-radius: 5px;
-    font-size: 16px;
-    padding: 0 42px;
-}
-.search :where(i, span) {
-    position: absolute;
-    top: 50%;
-    color: #999;
-    transform: translateY(-50%);
-}
-.search input::placeholder{
-    color: #b8b8b8;
-}
-.search input:focus{
-    border: 2px solid #4d59fb;
-    padding: 0 41px;
-}
-.search i {
-    left: 18px;
-    font-size: 16px;
-    pointer-events: none;
-}
-.search  input:focus  ~ i {
-    color: #4d59fb;
-}
-.search span {
-    right: 15px;
-    cursor: pointer;
-    font-size: 18px;
-    display: none;
-}
-.search input:valid ~ span {
-    display: block;
-}
-.wrapper ul li{
-    display: flex;
-    margin-bottom: 14px;
-    padding-bottom: 17px;
-    border-bottom: 1px solid #ccc;
-    justify-content: space-between;
-    align-items: center;
-}
-ul .word p{
-    font-size: 22px;
-    font-weight: 500;
-}
-.wrapper .info-text {
-    font-size: 13px;
-    color: #9a9a9a;
-    margin: -3px 0 -10px;
-}
-.wrapper ul {
-    height: 0;
-    opacity: 0;
-    overflow: hidden;
-    transition: all 0.3s ease;
-}
-ul .word i {
-    cursor: pointer;
-    font-size: 15px;
-    color: #999;
-}
-ul li:last-child{
-    margin-bottom: 0px;
-    padding-bottom: 0px;
-    border-bottom: 0px;
-}
-.content li .details{
-    border-left: 3px solid #4d59fb;
-    border-radius: 4px 0 0 4px;
-    padding-left: 10px;
-}
-.content li .details p {
-    font-size: 17px;
-    color: #7e7e7e;
-}
-.synonyms .details .list {
-    display: flex;
-    flex-wrap: wrap;
+  margin: 0;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background-color: salmon;
+  min-height: 100vh;
+  font-family: "Courier New", Courier, monospace;
+}
+
+.container {
+  width: 90%;
+  background-color: rgba(255, 255, 255, 0.3);
+  box-shadow: 0 10px 10px rgba(0, 0, 0, 0.3);
+  border-radius: 7px;
+  padding: 28px;
+  margin: 10px;
+  text-align: center;
+  max-width: 450px;
+  font-weight: 500;
+  font-size: 18px;
+}
+.heading {
+  font-size: 28px;
+}
+
+.input {
+  height: 53px;
+  width: 300px;
+  border-color: rgba(255, 255, 255, 0.4);
+  background-color: rgba(255, 255, 255, 0.6);
+  border-radius: 5px;
+  font-size: 16px;
+  padding: 0 42px;
+}
+
+.meaning-container {
+  display: none;
 }
-.synonyms .details .list span {
-    margin-right: 5px;
-    text-decoration: underline;
-    cursor: pointer;
-}
-.info-text span{
-    font-weight: 500;
-}
-.wrapper.active ul {
-    height: 303px;
-    opacity: 1;
-}
-.wrapper.active ul{
-    display: block;
-}
-.wrapper.active .info-text {
-    display: none;
-}
-ul .content {
-    max-height: 215px;
-    overflow-y: auto;
-}
-ul .content::-webkit-scrollbar{
-    width: 0px;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-

From 3a4a17e4382e25eafb79adb11979dc8a249baa27 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Fri, 16 Dec 2022 16:40:50 +0700
Subject: [PATCH 17/54] update 2 projects

---
 projects/english-dictionary/index.html |  28 +++------
 projects/english-dictionary/index.js   |  45 +++++---------
 projects/english-dictionary/style.css  |  65 ++++++++++----------
 projects/notes-taking-app/icon.png     | Bin 7224 -> 0 bytes
 projects/notes-taking-app/index.html   |  19 +++---
 projects/notes-taking-app/index.js     |  67 ++++++++++++++++++++
 projects/notes-taking-app/script.js    |  69 ---------------------
 projects/notes-taking-app/style.css    |  82 ++++++++++---------------
 8 files changed, 169 insertions(+), 206 deletions(-)
 delete mode 100644 projects/notes-taking-app/icon.png
 create mode 100644 projects/notes-taking-app/index.js
 delete mode 100644 projects/notes-taking-app/script.js

diff --git a/projects/english-dictionary/index.html b/projects/english-dictionary/index.html
index a1800e9..47f6806 100644
--- a/projects/english-dictionary/index.html
+++ b/projects/english-dictionary/index.html
@@ -1,33 +1,21 @@
 <!DOCTYPE html>
 <html lang="en">
   <head>
-    <meta charset="utf-8" />
-    <title>Dictionary App</title>
-
-    <link rel="stylesheet" href="style.css" />
-    <link
-      href="https://fonts.googleapis.com/icon?family=Material+Icons"
-      rel="stylesheet"
-    />
-    <link
-      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
-      rel="stylesheet"
-    />
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>English Dictionary</title>
+    <link rel="stylesheet" href="style.css">
   </head>
   <body>
-    <div class="container" id="container">
+    <div class="container">
       <h1 class="heading">English Dictionary</h1>
-      <input type="text" class="input" id="input" placeholder="Search a word" />
+      <input placeholder="Search a word" type="text" class="input" id="input" />
       <p class="info-text" id="info-text">Type a word and press enter</p>
       <div class="meaning-container" id="meaning-container">
         <p>Word Title: <span class="title" id="title">___</span></p>
         <p>Meaning: <span class="meaning" id="meaning">___</span></p>
-
-        <audio
-          id="audio"
-          controls
-          src="https://api.dictionaryapi.dev/media/pronunciations/en/hello-au.mp3"
-        ></audio>
+        <audio src="" controls id="audio"></audio>
       </div>
     </div>
     <script src="index.js"></script>
diff --git a/projects/english-dictionary/index.js b/projects/english-dictionary/index.js
index 171ff75..8a93219 100644
--- a/projects/english-dictionary/index.js
+++ b/projects/english-dictionary/index.js
@@ -1,53 +1,40 @@
-const containerEl = document.getElementById("container"),
-  searchInput = document.getElementById("input");
-infoTextEl = document.getElementById("info-text");
-const audioEl = document.getElementById("audio");
-
+const inputEl = document.getElementById("input");
+const infoTextEl = document.getElementById("info-text");
 const meaningContainerEl = document.getElementById("meaning-container");
-
 const titleEl = document.getElementById("title");
 const meaningEl = document.getElementById("meaning");
+const audioEl = document.getElementById("audio");
 
-async function fetchApi(word) {
+async function fetchAPI(word) {
   try {
     infoTextEl.style.display = "block";
-    infoTextEl.innerText = `Searching the meaning of "${word}"`;
     meaningContainerEl.style.display = "none";
+    infoTextEl.innerText = `Searching the meaning of "${word}"`;
     const url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word}`;
     const result = await fetch(url).then((res) => res.json());
 
     if (result.title) {
+      meaningContainerEl.style.display = "block";
+      infoTextEl.style.display = "none";
       titleEl.innerText = word;
       meaningEl.innerText = "N/A";
       audioEl.style.display = "none";
-    }
-
-    const definitions = result[0].meanings[0].definitions[0];
-
-    titleEl.innerText = result[0].word;
-
-    meaningEl.innerText = definitions.definition;
-
-    if (result[0].phonetics[0].audio) {
+    } else {
+      infoTextEl.style.display = "none";
+      meaningContainerEl.style.display = "block";
       audioEl.style.display = "inline-flex";
-
+      titleEl.innerText = result[0].word;
+      meaningEl.innerText = result[0].meanings[0].definitions[0].definition;
       audioEl.src = result[0].phonetics[0].audio;
-    } else {
-      audioEl.style.display = "none";
     }
-
-    infoTextEl.style.display = "none";
-    meaningContainerEl.style.display = "block";
   } catch (error) {
     console.log(error);
-    infoTextEl.style.display = "none";
-    meaningContainerEl.style.display = "block";
-    audioEl.style.display = "none";
+    infoTextEl.innerText = `an error happened, try again later`;
   }
 }
 
-searchInput.addEventListener("keyup", (e) => {
-  if (e.key === "Enter" && e.target.value) {
-    fetchApi(e.target.value);
+inputEl.addEventListener("keyup", (e) => {
+  if (e.target.value && e.key === "Enter") {
+    fetchAPI(e.target.value);
   }
 });
diff --git a/projects/english-dictionary/style.css b/projects/english-dictionary/style.css
index aa22bfb..59fa822 100644
--- a/projects/english-dictionary/style.css
+++ b/projects/english-dictionary/style.css
@@ -1,39 +1,40 @@
-body {
-  margin: 0;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  background-color: salmon;
-  min-height: 100vh;
-  font-family: "Courier New", Courier, monospace;
+body{
+    margin: 0;
+    display: flex;
+    min-height: 100vh;
+    justify-content: center;
+    align-items: center;
+    background-color: salmon;
+    font-family: 'Courier New', Courier, monospace;
 }
 
-.container {
-  width: 90%;
-  background-color: rgba(255, 255, 255, 0.3);
-  box-shadow: 0 10px 10px rgba(0, 0, 0, 0.3);
-  border-radius: 7px;
-  padding: 28px;
-  margin: 10px;
-  text-align: center;
-  max-width: 450px;
-  font-weight: 500;
-  font-size: 18px;
-}
-.heading {
-  font-size: 28px;
+.container{
+    background-color: rgba(255,255,255, .3);
+    padding: 28px;
+    border-radius: 7px;
+    box-shadow: 0 10px 10px rgba(0,0,0,.3);
+    width: 90%;
+    margin: 10px;
+    max-width: 450px;
+    text-align: center;
+    font-size: 18px;
+    font-weight: 500;
 }
 
-.input {
-  height: 53px;
-  width: 300px;
-  border-color: rgba(255, 255, 255, 0.4);
-  background-color: rgba(255, 255, 255, 0.6);
-  border-radius: 5px;
-  font-size: 16px;
-  padding: 0 42px;
+.heading{
+    font-size: 28px;
 }
 
-.meaning-container {
-  display: none;
+.input{
+    height: 53px;
+    width: 300px;
+    background-color: rgba(255,255,255, .6);
+    border-color: rgba(255,255,255, .4);
+    font-size: 16px;
+    padding: 0 42px;
+    border-radius: 5px;
 }
+
+.meaning-container{
+    display: none;
+}
\ No newline at end of file
diff --git a/projects/notes-taking-app/icon.png b/projects/notes-taking-app/icon.png
deleted file mode 100644
index 9cac03b4f4fbefe58aefa59d447c69c926af06c7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7224
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
Pzde0zV^o=@WAuLkbsj-B

diff --git a/projects/notes-taking-app/index.html b/projects/notes-taking-app/index.html
index 0921e39..a06cdb0 100644
--- a/projects/notes-taking-app/index.html
+++ b/projects/notes-taking-app/index.html
@@ -4,16 +4,21 @@
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <link rel="shortcut icon" href="./icon.png" type="image/png" />
-    <title>Notes Taking App</title>
+    <title>Note App</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
-    <h1>Notes Taking App</h1>
-    <div id="app">
-      <button class="add-note" type="button">+</button>
+    <h1 class="heading">Note App</h1>
+    <p class="info-text">Double click on a note to remove it</p>
+    <div id="app" class="app">
+      <!-- <textarea
+        class="note"
+        cols="30"
+        rows="10"
+        placeholder="Empty Note"
+      ></textarea> -->
+      <button class="btn" id="btn" type="button">+</button>
     </div>
-
-    <script src="script.js"></script>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/notes-taking-app/index.js b/projects/notes-taking-app/index.js
new file mode 100644
index 0000000..178aa19
--- /dev/null
+++ b/projects/notes-taking-app/index.js
@@ -0,0 +1,67 @@
+const notesContainerEl = document.getElementById("app");
+const btnEl = document.getElementById("btn");
+
+getNotes().forEach((note) => {
+  const noteEl = createNoteEl(note.id, note.content);
+  notesContainerEl.insertBefore(noteEl, btnEl);
+});
+
+btnEl.addEventListener("click", () => addNote());
+
+function getNotes() {
+  return JSON.parse(localStorage.getItem("note-ap") || "[]");
+}
+
+function saveNotes(notes) {
+  localStorage.setItem("note-ap", JSON.stringify(notes));
+}
+
+function createNoteEl(id, content) {
+  const element = document.createElement("textarea");
+
+  element.classList.add("note");
+  element.value = content;
+  element.placeholder = "Empty Note";
+
+  element.addEventListener("input", () => {
+    updateNote(id, element.value);
+  });
+
+  element.addEventListener("dblclick", () => {
+    const noteDelete = confirm("Want to Delete the note?");
+    if (noteDelete) {
+      deleteNote(id, element);
+    }
+  });
+
+  return element;
+}
+
+function addNote() {
+  const notes = getNotes();
+  const noteObj = {
+    id: Math.floor(Math.random() * 100000),
+    content: "",
+  };
+
+  const noteEl = createNoteEl(noteObj.id, noteObj.content);
+  notesContainerEl.insertBefore(noteEl, btnEl);
+
+  notes.push(noteObj);
+  saveNotes(notes);
+}
+
+function updateNote(id, newContent) {
+  const notes = getNotes();
+  const target = notes.filter((note) => note.id == id)[0];
+
+  target.content = newContent;
+  saveNotes(notes);
+}
+
+function deleteNote(id, element) {
+  const notes = getNotes().filter((note) => note.id != id);
+
+  saveNotes(notes);
+  notesContainerEl.removeChild(element);
+}
diff --git a/projects/notes-taking-app/script.js b/projects/notes-taking-app/script.js
deleted file mode 100644
index f788999..0000000
--- a/projects/notes-taking-app/script.js
+++ /dev/null
@@ -1,69 +0,0 @@
-const notesContainer = document.getElementById("app");
-const addNoteButton = notesContainer.querySelector(".add-note");
-
-getNotes().forEach(note => {
-    const noteElement = createNoteElement(note.id, note.content);
-    notesContainer.insertBefore(noteElement, addNoteButton);
-});
-
-addNoteButton.addEventListener("click", () => addNote());
-
-function getNotes(){
-    return JSON.parse(localStorage.getItem("note-ap") || "[]");
-}
-
-function saveNotes(notes){
-    localStorage.setItem("note-ap", JSON.stringify(notes));
-}
-
-function createNoteElement(id, content){
-    const element = document.createElement("textarea");
-
-    element.classList.add("note");
-    element.value = content;
-    element.placeholder = "Empty Note";
-
-    element.addEventListener("change", () => {
-        updateNote(id, element.value);
-    });
-
-    element.addEventListener("dblclick", () => {
-        const noteDelete = confirm("Want to Delete the note?")
-        if (noteDelete) {
-            deleteNote(id, element);
-        }
-    });
-
-    return element;
-}
-
-function addNote(){
-    const notes = getNotes();
-    const noteObj = {
-        id: Math.floor(Math.random()*100000),
-        content: ""
-    };
-
-    const noteElement = createNoteElement(noteObj.id, noteObj.content);
-    notesContainer.insertBefore(noteElement, addNoteButton);
-
-
-    notes.push(noteObj);
-    saveNotes(notes);
-}
-
-function updateNote(id, newContent) {
-    const notes = getNotes();
-    const target = notes.filter(note=>note.id == id)[0];
-
-    target.content = newContent;
-    saveNotes(notes);
-}
-
-function deleteNote(id, element) {
-    const notes = getNotes().filter(note => note.id != id);
-
-    saveNotes(notes);
-    notesContainer.removeChild(element);
-}
-
diff --git a/projects/notes-taking-app/style.css b/projects/notes-taking-app/style.css
index 58a6b31..ba2c848 100644
--- a/projects/notes-taking-app/style.css
+++ b/projects/notes-taking-app/style.css
@@ -1,30 +1,25 @@
-:root {
-  --bg: #19172e;
-  --btn: #9c528b;
-  --card: #b9929f;
-}
-* {
-  font-family: sans-serif;
-  transition: 0.5s ease;
-}
 body {
+  font-family: "Courier New", Courier, monospace;
   margin: 0;
-  background: var(--bg);
+  background: linear-gradient(to left, lightblue, lightgreen);
 }
 
-h1 {
-  color: #fff;
+.heading {
+  color: aliceblue;
   text-align: center;
-  left: 0;
-  right: 0;
-  top: 0;
   padding-top: 10px;
-  font-size: 2rem !important;
+  font-size: 35px;
+}
+.info-text {
+  text-align: center;
+  color: aliceblue;
+  font-size: 18px;
 }
 
-#app {
+.app {
   display: grid;
-  grid-template-columns: repeat(auto-fill, 200px);
+  grid-template-columns: repeat(auto-fill, 300px);
+  justify-content: center;
   padding: 50px;
   gap: 40px;
 }
@@ -35,51 +30,40 @@ h1 {
   padding: 17px;
   border-radius: 15px;
   resize: none;
-  box-shadow: 0 0 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
   font-family: monospace;
   font-size: 18px;
-  color: var(--bg);
+  color: gray;
   font-weight: 800;
   border: none;
   outline: none;
-  background: var(--card);
+  background: rgba(255, 255, 255, 0.1);
+}
+.note::placeholder {
+  color: gray;
+  opacity: 30%;
 }
 
-.add-note {
+.note:hover,
+.note:focus {
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
+  transition: all 300ms ease;
+}
+
+.btn {
   height: 200px;
   border: none;
   outline: none;
-  background: rgba(156, 82, 139, 0.27);
+  background: rgba(255, 255, 255, 0.27);
   border-radius: 15px;
   font-size: 70px;
   font-weight: 700;
-  color: rgba(0, 0, 0, 0.5);
+  color: rgba(0, 0, 0, 0.3);
   cursor: pointer;
 }
 
-.add-note:hover {
-  background: rgba(156, 82, 139, 0.5);
-  color: rgba(0, 0, 0, 0.7);
-}
-
-::placeholder {
-  color: rgb(214, 214, 214);
+.btn:hover {
+  background: rgba(255, 255, 255, 0.55);
+  color: rgba(0, 0, 0, 0.6);
+  transition: all 300ms ease;
 }
-
-footer,
-a {
-  color: rgb(214, 214, 214);
-  font-size: 20px;
-}
-
-footer {
-    text-align: center;
-    color: white;
-    font-size: 1.25rem;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    margin-bottom: 0;
-    padding: 10px;
-    line-height: 4vh;
-}
\ No newline at end of file

From e7e3b9a9230a0a2fada76f0636d1af7691e3d07c Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sat, 17 Dec 2022 07:47:50 +0700
Subject: [PATCH 18/54] update note app project

---
 projects/{notes-taking-app => note-app}/index.html |  0
 projects/{notes-taking-app => note-app}/index.js   |  0
 projects/{notes-taking-app => note-app}/style.css  | 11 +++++------
 3 files changed, 5 insertions(+), 6 deletions(-)
 rename projects/{notes-taking-app => note-app}/index.html (100%)
 rename projects/{notes-taking-app => note-app}/index.js (100%)
 rename projects/{notes-taking-app => note-app}/style.css (91%)

diff --git a/projects/notes-taking-app/index.html b/projects/note-app/index.html
similarity index 100%
rename from projects/notes-taking-app/index.html
rename to projects/note-app/index.html
diff --git a/projects/notes-taking-app/index.js b/projects/note-app/index.js
similarity index 100%
rename from projects/notes-taking-app/index.js
rename to projects/note-app/index.js
diff --git a/projects/notes-taking-app/style.css b/projects/note-app/style.css
similarity index 91%
rename from projects/notes-taking-app/style.css
rename to projects/note-app/style.css
index ba2c848..e220361 100644
--- a/projects/notes-taking-app/style.css
+++ b/projects/note-app/style.css
@@ -5,14 +5,14 @@ body {
 }
 
 .heading {
-  color: aliceblue;
+  color: darkblue;
   text-align: center;
   padding-top: 10px;
   font-size: 35px;
 }
 .info-text {
   text-align: center;
-  color: aliceblue;
+  color: darkblue;
   font-size: 18px;
 }
 
@@ -26,18 +26,18 @@ body {
 
 .note {
   height: 200px;
-  box-sizing: border-box;
   padding: 17px;
   border-radius: 15px;
   resize: none;
   box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
   font-family: monospace;
   font-size: 18px;
-  color: gray;
+  color: darkblue;
   font-weight: 800;
   border: none;
   outline: none;
   background: rgba(255, 255, 255, 0.1);
+  box-sizing: border-box;
 }
 .note::placeholder {
   color: gray;
@@ -52,8 +52,7 @@ body {
 
 .btn {
   height: 200px;
-  border: none;
-  outline: none;
+  border-color: rgba(255, 255, 255, 0.37);
   background: rgba(255, 255, 255, 0.27);
   border-radius: 15px;
   font-size: 70px;

From ea83e76d551b58d057e653078534720f4e568862 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 18 Dec 2022 07:28:24 +0700
Subject: [PATCH 19/54] update note app project

---
 projects/note-app/index.html |  9 ++---
 projects/note-app/index.js   | 65 +++++++++++++++++-------------------
 projects/note-app/style.css  | 36 ++++++++++----------
 3 files changed, 54 insertions(+), 56 deletions(-)

diff --git a/projects/note-app/index.html b/projects/note-app/index.html
index a06cdb0..f61a1bd 100644
--- a/projects/note-app/index.html
+++ b/projects/note-app/index.html
@@ -4,20 +4,21 @@
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Note App</title>
+    <title>Document</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
     <h1 class="heading">Note App</h1>
     <p class="info-text">Double click on a note to remove it</p>
-    <div id="app" class="app">
+    <div class="app" id="app">
       <!-- <textarea
-        class="note"
         cols="30"
         rows="10"
+        class="note"
         placeholder="Empty Note"
       ></textarea> -->
-      <button class="btn" id="btn" type="button">+</button>
+
+      <button class="btn" id="btn">+</button>
     </div>
     <script src="index.js"></script>
   </body>
diff --git a/projects/note-app/index.js b/projects/note-app/index.js
index 178aa19..c3b33e9 100644
--- a/projects/note-app/index.js
+++ b/projects/note-app/index.js
@@ -1,67 +1,64 @@
-const notesContainerEl = document.getElementById("app");
 const btnEl = document.getElementById("btn");
+const appEl = document.getElementById("app");
 
 getNotes().forEach((note) => {
   const noteEl = createNoteEl(note.id, note.content);
-  notesContainerEl.insertBefore(noteEl, btnEl);
+  appEl.insertBefore(noteEl, btnEl);
 });
 
-btnEl.addEventListener("click", () => addNote());
-
-function getNotes() {
-  return JSON.parse(localStorage.getItem("note-ap") || "[]");
-}
-
-function saveNotes(notes) {
-  localStorage.setItem("note-ap", JSON.stringify(notes));
-}
-
 function createNoteEl(id, content) {
   const element = document.createElement("textarea");
-
   element.classList.add("note");
-  element.value = content;
   element.placeholder = "Empty Note";
-
-  element.addEventListener("input", () => {
-    updateNote(id, element.value);
-  });
+  element.value = content;
 
   element.addEventListener("dblclick", () => {
-    const noteDelete = confirm("Want to Delete the note?");
-    if (noteDelete) {
+    const warning = confirm("Do you want to delete this note?");
+    if (warning) {
       deleteNote(id, element);
     }
   });
 
+  element.addEventListener("input", () => {
+    updateNote(id, element.value);
+  });
+
   return element;
 }
 
+function deleteNote(id, element) {
+    const notes = getNotes().filter((note)=>note.id != id)
+    saveNote(notes)
+    appEl.removeChild(element)
+}
+
+function updateNote(id, content) {
+  const notes = getNotes();
+  const target = notes.filter((note) => note.id == id)[0];
+  target.content = content;
+  saveNote(notes);
+}
+
 function addNote() {
   const notes = getNotes();
   const noteObj = {
     id: Math.floor(Math.random() * 100000),
     content: "",
   };
-
   const noteEl = createNoteEl(noteObj.id, noteObj.content);
-  notesContainerEl.insertBefore(noteEl, btnEl);
+  appEl.insertBefore(noteEl, btnEl);
 
   notes.push(noteObj);
-  saveNotes(notes);
-}
-
-function updateNote(id, newContent) {
-  const notes = getNotes();
-  const target = notes.filter((note) => note.id == id)[0];
 
-  target.content = newContent;
-  saveNotes(notes);
+  saveNote(notes);
 }
 
-function deleteNote(id, element) {
-  const notes = getNotes().filter((note) => note.id != id);
+function saveNote(notes) {
+  localStorage.setItem("note-app", JSON.stringify(notes));
+}
 
-  saveNotes(notes);
-  notesContainerEl.removeChild(element);
+function getNotes() {
+  return JSON.parse(localStorage.getItem("note-app") || "[]");
 }
+
+btnEl.addEventListener("click", addNote);
diff --git a/projects/note-app/style.css b/projects/note-app/style.css
index e220361..47154de 100644
--- a/projects/note-app/style.css
+++ b/projects/note-app/style.css
@@ -1,7 +1,7 @@
 body {
-  font-family: "Courier New", Courier, monospace;
   margin: 0;
   background: linear-gradient(to left, lightblue, lightgreen);
+  font-family: "Courier New", Courier, monospace;
 }
 
 .heading {
@@ -10,6 +10,7 @@ body {
   padding-top: 10px;
   font-size: 35px;
 }
+
 .info-text {
   text-align: center;
   color: darkblue;
@@ -19,26 +20,25 @@ body {
 .app {
   display: grid;
   grid-template-columns: repeat(auto-fill, 300px);
+  gap: 40px;
   justify-content: center;
   padding: 50px;
-  gap: 40px;
 }
 
 .note {
-  height: 200px;
   padding: 17px;
   border-radius: 15px;
   resize: none;
   box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
-  font-family: monospace;
   font-size: 18px;
+  height: 200px;
   color: darkblue;
-  font-weight: 800;
   border: none;
   outline: none;
   background: rgba(255, 255, 255, 0.1);
   box-sizing: border-box;
 }
+
 .note::placeholder {
   color: gray;
   opacity: 30%;
@@ -50,19 +50,19 @@ body {
   transition: all 300ms ease;
 }
 
-.btn {
-  height: 200px;
-  border-color: rgba(255, 255, 255, 0.37);
-  background: rgba(255, 255, 255, 0.27);
-  border-radius: 15px;
-  font-size: 70px;
-  font-weight: 700;
-  color: rgba(0, 0, 0, 0.3);
-  cursor: pointer;
+.btn{
+    height: 200px;
+    border-color: rgba(255, 255, 255, 0.37);
+    background: rgba(255, 255, 255, 0.27);
+    border-radius: 15px;
+    font-size: 70px;
+    font-weight: 700;
+    color: rgba(0, 0, 0, 0.3);
+    cursor: pointer;
 }
 
-.btn:hover {
-  background: rgba(255, 255, 255, 0.55);
-  color: rgba(0, 0, 0, 0.6);
-  transition: all 300ms ease;
+.btn:hover{
+    background: rgba(255, 255, 255, 0.55);
+    color: rgba(0, 0, 0, 0.6);
+    transition: all 300ms ease;
 }

From 43898730a9d27213b92d701a662c559bf98c1ac0 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 18 Dec 2022 10:50:37 +0700
Subject: [PATCH 20/54] update bmi calculator project

---
 projects/bmi-calculator/index.html | 64 ++++++++++++++++--------------
 projects/bmi-calculator/index.js   | 23 +++++++++++
 projects/bmi-calculator/script.js  | 24 -----------
 projects/bmi-calculator/style.css  | 53 +++++++++++++++++++++++++
 4 files changed, 111 insertions(+), 53 deletions(-)
 create mode 100644 projects/bmi-calculator/index.js
 delete mode 100644 projects/bmi-calculator/script.js
 create mode 100644 projects/bmi-calculator/style.css

diff --git a/projects/bmi-calculator/index.html b/projects/bmi-calculator/index.html
index 77c1be9..45359e9 100644
--- a/projects/bmi-calculator/index.html
+++ b/projects/bmi-calculator/index.html
@@ -1,34 +1,40 @@
 <!DOCTYPE html>
 <html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>BMI</title>
-    <style>
-        *{
-            padding: 10px;
-            margin: 10px;
-        }
-        p{
-            font-weight: bold;
-        }
-    </style>
-</head>
-<body>
-    <div class="container d-block text-center">
-        <h2 class="p-2">Body Mass Index Calculator using Metric Units</h2>
-        Your Height: <input class="p-2 m-2" type="number" name="cm" id="cm" placeholder="centimeters">
-        <br/>
-        Your Weight: <input class="p-2 m-2" type="number" name="weight" id="weight" placeholder="kilograms">
-        <br/>
-        <button class="btn btn-primary p-2 m-2" onclick="fun()">Compute BMI</button><br/>
-        Your BMI: <input class="p-2 m-2" type="text" name="bmi" id="bmi" disabled>
-        <h4 class="p-2 m-2"></h4>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h2 class="heading">Body Mass Index (BMI) Calculator</h2>
+      Your Height (cm):
+      <input
+        class="input"
+        type="number"
+        name="cm"
+        id="height"
+        value="180"
+        placeholder="Enter your height in cm"
+      />
+      Your Weight (kg):
+      <input
+        class="input"
+        type="number"
+        name="weight"
+        id="weight"
+        value="80"
+        placeholder="Enter your weight in kg"
+      />
+      <button class="btn" id="btn">Compute BMI</button>
+      Your BMI:
+      <input class="input" type="text" id="bmi" disabled />
+      <h4 class="info-text">
+        Weight Condition: <span id="weight-condition"></span>
+      </h4>
     </div>
-    
-</body>
+    <script src="index.js"></script>
+  </body>
 </html>
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" ></script>
-<script src="./script.js"></script>
\ No newline at end of file
diff --git a/projects/bmi-calculator/index.js b/projects/bmi-calculator/index.js
new file mode 100644
index 0000000..f1e90ff
--- /dev/null
+++ b/projects/bmi-calculator/index.js
@@ -0,0 +1,23 @@
+const btnEl = document.getElementById("btn");
+const BMIInputEl = document.getElementById("bmi");
+const weightConditionEl = document.getElementById("weight-condition");
+
+function calculateBMI() {
+  const HeightValue = document.getElementById("height").value / 100;
+
+  const weightValue = document.getElementById("weight").value;
+  const bmiValue = weightValue / (HeightValue * HeightValue);
+  BMIInputEl.value = bmiValue;
+
+  if (bmiValue < 18.5) {
+    weightConditionEl.innerText = "Under weight";
+  } else if (bmiValue >= 18.5 && bmiValue <= 24.9) {
+    weightConditionEl.innerText = "Normal weight";
+  } else if (bmiValue >= 25 && bmiValue <= 29.9) {
+    weightConditionEl.innerText = "Overweight";
+  } else if (bmiValue >= 30) {
+    weightConditionEl.innerText = "Obesity";
+  }
+}
+
+btnEl.addEventListener("click", calculateBMI);
diff --git a/projects/bmi-calculator/script.js b/projects/bmi-calculator/script.js
deleted file mode 100644
index 1fdba94..0000000
--- a/projects/bmi-calculator/script.js
+++ /dev/null
@@ -1,24 +0,0 @@
-function fun()
-    {
-        var cm = document.getElementById("cm").value ;
-        cm = cm/100;
-        var w = document.getElementById("weight").value;
-        var bmi = w/(cm*cm);
-        document.getElementById("bmi").value = bmi;
-        if(bmi<18.5)
-        {
-            document.querySelector("h4").innerHTML = 'Under weight';
-        }
-        else if(bmi>=18.5 && bmi <=24.9)
-        {
-            document.querySelector("h4").innerHTML = 'Normal weight';
-        }
-        else if(bmi>=25 && bmi <= 29.9)
-        {
-            document.querySelector("h4").innerHTML = 'Overweight';
-        }
-        else if(bmi>=30)
-        {
-            document.querySelector("h4").innerHTML = 'Obesity';
-        }
-    }
\ No newline at end of file
diff --git a/projects/bmi-calculator/style.css b/projects/bmi-calculator/style.css
new file mode 100644
index 0000000..6c2c61b
--- /dev/null
+++ b/projects/bmi-calculator/style.css
@@ -0,0 +1,53 @@
+body {
+  margin: 0;
+  display: flex;
+  min-height: 100vh;
+  justify-content: center;
+  align-items: center;
+  background: linear-gradient(to left bottom, lightgreen, lightblue);
+  font-family: "Courier New", Courier, monospace;
+}
+
+.container {
+  background: rgba(255, 255, 255, 0.3);
+  padding: 20px;
+  display: flex;
+  flex-direction: column;
+  border-radius: 5px;
+  box-shadow: 0 10px 10px rgba(0, 0, 0, 0.3);
+  text-align: start;
+  margin: 5px;
+}
+
+.heading {
+  font-size: 30px;
+}
+
+.input {
+  padding: 10px 20px;
+  font-size: 18px;
+  background: rgba(255, 255, 255, 0.4);
+  border-color: rgba(255, 255, 255, 0.5);
+  margin: 10px;
+}
+
+.btn {
+  background-color: lightgreen;
+  border: none;
+  padding: 10px 20px;
+  border-radius: 5px;
+  margin: 10px;
+  font-size: 20px;
+  cursor: pointer;
+  box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
+}
+
+.btn:hover {
+  box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
+  transition: all 300ms ease;
+}
+
+.info-text {
+  font-size: 20px;
+  font-weight: 500;
+}

From 772b5408cc6041c6c98716860c504c3a8714a97f Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 19 Dec 2022 17:19:50 +0700
Subject: [PATCH 21/54] update bmi project

---
 projects/bmi-calculator/index.html | 53 +++++++------------
 projects/bmi-calculator/index.js   | 11 ++--
 projects/bmi-calculator/style.css  | 81 +++++++++++++++---------------
 3 files changed, 64 insertions(+), 81 deletions(-)

diff --git a/projects/bmi-calculator/index.html b/projects/bmi-calculator/index.html
index 45359e9..fd167fe 100644
--- a/projects/bmi-calculator/index.html
+++ b/projects/bmi-calculator/index.html
@@ -1,40 +1,23 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>BMI</title>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-  <body>
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>BMI Calculator</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="container">
-      <h2 class="heading">Body Mass Index (BMI) Calculator</h2>
-      Your Height (cm):
-      <input
-        class="input"
-        type="number"
-        name="cm"
-        id="height"
-        value="180"
-        placeholder="Enter your height in cm"
-      />
-      Your Weight (kg):
-      <input
-        class="input"
-        type="number"
-        name="weight"
-        id="weight"
-        value="80"
-        placeholder="Enter your weight in kg"
-      />
-      <button class="btn" id="btn">Compute BMI</button>
-      Your BMI:
-      <input class="input" type="text" id="bmi" disabled />
-      <h4 class="info-text">
-        Weight Condition: <span id="weight-condition"></span>
-      </h4>
+        <h1 class="heading">Body Mass Index (BMI) Calculator</h1>
+        Your Height (cm):
+        <input type="number" class="input" id="height" value="180" placeholder="Enter your height in cm">
+        Your Weight (kg):
+        <input type="number" class="input" id="weight" value="80" placeholder="Enter your weight in kg">
+        <button class="btn" id="btn">Compute BMI</button>
+        <input disabled type="text" class="input" id="bmi-result">
+        <h4 class="info-text">Weight Condition: <span id="weight-condition"></span></h4>
     </div>
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/bmi-calculator/index.js b/projects/bmi-calculator/index.js
index f1e90ff..b798ee0 100644
--- a/projects/bmi-calculator/index.js
+++ b/projects/bmi-calculator/index.js
@@ -1,13 +1,14 @@
 const btnEl = document.getElementById("btn");
-const BMIInputEl = document.getElementById("bmi");
+const bmiInputEl = document.getElementById("bmi-result");
 const weightConditionEl = document.getElementById("weight-condition");
 
 function calculateBMI() {
-  const HeightValue = document.getElementById("height").value / 100;
-
+  const heightValue = document.getElementById("height").value / 100;
   const weightValue = document.getElementById("weight").value;
-  const bmiValue = weightValue / (HeightValue * HeightValue);
-  BMIInputEl.value = bmiValue;
+
+  const bmiValue = weightValue / (heightValue * heightValue);
+
+  bmiInputEl.value = bmiValue;
 
   if (bmiValue < 18.5) {
     weightConditionEl.innerText = "Under weight";
diff --git a/projects/bmi-calculator/style.css b/projects/bmi-calculator/style.css
index 6c2c61b..7d94328 100644
--- a/projects/bmi-calculator/style.css
+++ b/projects/bmi-calculator/style.css
@@ -1,53 +1,52 @@
-body {
-  margin: 0;
-  display: flex;
-  min-height: 100vh;
-  justify-content: center;
-  align-items: center;
-  background: linear-gradient(to left bottom, lightgreen, lightblue);
-  font-family: "Courier New", Courier, monospace;
+body{
+    margin: 0;
+    background: linear-gradient(to left bottom, lightgreen, lightblue);
+    display: flex;
+    min-height: 100vh;
+    justify-content: center;
+    align-items: center;
+    font-family: 'Courier New', Courier, monospace;
 }
 
-.container {
-  background: rgba(255, 255, 255, 0.3);
-  padding: 20px;
-  display: flex;
-  flex-direction: column;
-  border-radius: 5px;
-  box-shadow: 0 10px 10px rgba(0, 0, 0, 0.3);
-  text-align: start;
-  margin: 5px;
+.container{
+    background: rgba(255,255,255, .3);
+    padding: 20px;
+    display: flex;
+    flex-direction: column;
+    border-radius: 5px;
+    box-shadow: 0 10px 10px rgba(0,0,0,.3);
+    margin: 5px;
 }
 
-.heading {
-  font-size: 30px;
+.heading{
+    font-size: 30px;
 }
 
-.input {
-  padding: 10px 20px;
-  font-size: 18px;
-  background: rgba(255, 255, 255, 0.4);
-  border-color: rgba(255, 255, 255, 0.5);
-  margin: 10px;
+.input{
+    padding: 10px 20px;
+    font-size: 18px;
+    background: rgba(255,255,255, .4);
+    border-color: rgba(255,255,255, .5);
+    margin: 10px;
 }
 
-.btn {
-  background-color: lightgreen;
-  border: none;
-  padding: 10px 20px;
-  border-radius: 5px;
-  margin: 10px;
-  font-size: 20px;
-  cursor: pointer;
-  box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
+.btn{
+    background-color: lightgreen;
+    border: none;
+    padding: 10px 20px;
+    border-radius: 5px;
+    margin: 10px;
+    font-size: 20px;
+    box-shadow: 0 0 4px rgba(0,0,0,.3);
+    cursor: pointer;
 }
 
-.btn:hover {
-  box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
-  transition: all 300ms ease;
+.btn:hover{
+    box-shadow: 0 0 8px rgba(0,0,0,.3);
+    transition: all 300ms ease;
 }
 
-.info-text {
-  font-size: 20px;
-  font-weight: 500;
-}
+.info-text{
+    font-size: 20px;
+    font-weight: 500;
+}
\ No newline at end of file

From f7ab3df2388b41ed857abfd00940d48e8a40e2dc Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Wed, 21 Dec 2022 08:58:11 +0700
Subject: [PATCH 22/54] update 2  projects

---
 projects/temp-converter/icon.png              | Bin 8895 -> 0 bytes
 projects/temp-converter/index.html            |  74 ++++----
 projects/temp-converter/index.js              |  21 +++
 projects/temp-converter/script.js             |  39 ----
 projects/temp-converter/style.css             | 172 +++++-------------
 projects/weight-converter/Assets/Assets.png   | Bin 76519 -> 0 bytes
 projects/weight-converter/index.html          |   4 +-
 .../weight-converter/{app.js => index.js}     |   0
 8 files changed, 109 insertions(+), 201 deletions(-)
 delete mode 100644 projects/temp-converter/icon.png
 create mode 100644 projects/temp-converter/index.js
 delete mode 100644 projects/temp-converter/script.js
 delete mode 100644 projects/weight-converter/Assets/Assets.png
 rename projects/weight-converter/{app.js => index.js} (100%)

diff --git a/projects/temp-converter/icon.png b/projects/temp-converter/icon.png
deleted file mode 100644
index 496496ffd769a1c54c69803d111f89f9d3842bc5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8895
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

diff --git a/projects/temp-converter/index.html b/projects/temp-converter/index.html
index b4911a9..b7efe8c 100644
--- a/projects/temp-converter/index.html
+++ b/projects/temp-converter/index.html
@@ -4,49 +4,47 @@
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <link rel="shortcut icon" href="icon.png" type="image/png" />
     <title>Temperature Convertor</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
-    <section>
-      <div class="main">
-        <div class="heading">Temperature Convertor</div>
-        <div class="container">
-          <div class="box">
-            <label for="celsius">Celsius</label>
-            <input
-              type="number"
-              name="celsius"
-              id="celsius"
-              placeholder="Enter Temperature"
-              class="input_box"
-            />
-          </div>
-          <div class="box">
-            <label for="fahrenheit">Fahrenheit</label>
-            <input
-              type="number"
-              name="fahrenheit"
-              id="fahrenheit"
-              placeholder="Enter Temperature"
-              class="input_box"
-            />
-          </div>
-          <div class="box">
-            <label for="kelvin">Kelvin</label>
-            <input
-              type="number"
-              name="kelvin"
-              id="kelvin"
-              placeholder="Enter Temperature"
-              class="input_box"
-            />
-          </div>
-        </div>
+    <div class="container">
+      <div class="heading">Temperature Convertor</div>
+      <div class="box">
+        <label for="celsius">Celsius:</label>
+        <input
+          type="number"
+          name="celsius"
+          id="celsius"
+          placeholder="Enter Temperature"
+          class="input_box"
+          onchange="computeTemp(event)"
+        />
       </div>
-    </section>
+      <div class="box">
+        <label for="fahrenheit">Fahrenheit:</label>
+        <input
+          type="number"
+          name="fahrenheit"
+          id="fahrenheit"
+          placeholder="Enter Temperature"
+          class="input_box"
+          onchange="computeTemp(event)"
+        />
+      </div>
+      <div class="box">
+        <label for="kelvin">Kelvin:</label>
+        <input
+          type="number"
+          name="kelvin"
+          id="kelvin"
+          placeholder="Enter Temperature"
+          class="input_box"
+          onchange="computeTemp(event)"
+        />
+      </div>
+    </div>
 
-    <script src="script.js"></script>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/temp-converter/index.js b/projects/temp-converter/index.js
new file mode 100644
index 0000000..f4c1cda
--- /dev/null
+++ b/projects/temp-converter/index.js
@@ -0,0 +1,21 @@
+const celsiusEl = document.getElementById("celsius");
+const fahrenheitEl = document.getElementById("fahrenheit");
+const kelvinEl = document.getElementById("kelvin");
+
+function computeTemp(e) {
+  const value = +e.target.value;
+  switch (e.target.name) {
+    case "celsius":
+      kelvinEl.value = (value + 273.32).toFixed(2);
+      fahrenheitEl.value = (value * 1.8 + 32).toFixed(2);
+      break;
+    case "fahrenheit":
+      celsiusEl.value = ((value - 32) / 1.8).toFixed(2);
+      result = kelvinEl.value = ((value - 32) / 1.8 + 273.15).toFixed(2);
+      break;
+    case "kelvin":
+      celsiusEl.value = (value - 273.15).toFixed(2);
+      fahrenheitEl.value = ((value - 273.15) * 1.8 + 32).toFixed(2);
+      break;
+  }
+}
diff --git a/projects/temp-converter/script.js b/projects/temp-converter/script.js
deleted file mode 100644
index 2876905..0000000
--- a/projects/temp-converter/script.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// taking input element
-const celsius =document.getElementById('celsius');
-const fahrenheit =document.getElementById('fahrenheit');
-const kelvin =document.getElementById('kelvin');
-
-const input_box = document.getElementsByClassName('input_box');
-
-for(let i=0; i<input_box.length; i++){
-    let input= input_box[i];
-
-    input.addEventListener("input", function (e){
-        let value = parseFloat(e.target.value);
-        // console.log(e.target.name + " : " + value);
-        let result;
-        switch(e.target.name){
-            case "celsius":
-                 result = value + 273.32;
-                kelvin.value = parseFloat(result.toFixed(3));
-                result = (value *1.8) + 32;
-                fahrenheit.value = parseFloat(result.toFixed(3));
-                // console.log("celsius");
-                break;
-            case "fahrenheit":
-                 result = (value - 32)/1.8;
-                celsius.value = parseFloat(result.toFixed(3));
-                result = ((value - 32)/1.8) + 273.15;
-                kelvin.value = parseFloat(result.toFixed(3));
-                // console.log("fahrenheit");
-                break;
-            case "kelvin":
-                result = value - 273.15;
-                celsius.value = parseFloat(result.toFixed(3));
-                result = ((value - 273.15)*1.8) + 32;
-                fahrenheit.value = parseFloat(result.toFixed(3));
-                // console.log("kelvin");
-                break;
-        }
-    });
-}
\ No newline at end of file
diff --git a/projects/temp-converter/style.css b/projects/temp-converter/style.css
index 2d02ce0..efb8122 100644
--- a/projects/temp-converter/style.css
+++ b/projects/temp-converter/style.css
@@ -1,127 +1,55 @@
-*{
-    margin: 0;
-    padding: 0;
-    box-sizing: border-box;
-}
-body{
-    background-color: #19172e;
-    height: 100vh;
-    font-family: monospace;
-    font-size: 1.25rem;
-    color: white;
-}
-section{
-    height: 80vh;
-    display: flex;
-    justify-content: center;
-    align-content: center;
-}
-.main{
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    width: 450px;
-}
-.heading{
-    height: 58px;
-    line-height: 58px;
-    width: 100%;
-    font-size: 2rem;
-    font-weight: bolder;
-    text-align: center;
-    border-radius: 10px;
-    padding: 0 15px;
-    background: #f9f8fa75;
-    backdrop-filter: blur(10px);
-    box-shadow: 0 8px 10px rgba(197, 193, 193, 0.185);
-    margin-bottom: 28px;
-}
-.container{
-    /* border: 2px solid red; */
-    width: 100%;
-    height: auto;
-    padding: 20px;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    background-color:#f9f8fa75;
-    border-radius: 10px;
-    backdrop-filter: blur(10px);
-    box-shadow: 0 8px 10px rgba(197, 193, 193, 0.185);
-}
-.box{
-    width: 90%;
-    padding: 10px 0;
-    font-weight: bold;
-}
-.input_box{
-    width: 14rem;
-    font-family: monospace;
-    padding: 5px;
-    float: right;
-    outline: none;
-    border: none;
-    background-color: transparent;
-    border-bottom: 1px solid white;
-    color: white;
-    font-size: 1.25rem;
-}
-footer{
-    position: absolute;
-    bottom: 0;
-    background-color: #000002; 
-    text-align: center;
-    color: white;
-    font-size: 1.25rem;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    margin-bottom: 0;
-    padding: 20px;
-    line-height: 4vh;
-}
-a{
-    color: rgba(255, 255, 255, 0.383);
-}
-::placeholder{
-    color: rgb(173, 169, 169);
+body {
+  margin: 0;
+  background: linear-gradient(to left bottom, lightgreen, lightblue);
+  min-height: 100vh;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-family: monospace;
+  font-size: 1.25rem;
+  color: darkcyan;
 }
 
-
-
-@media screen and (max-width: 500px) {
-    .main{
-        width: 87%;
-    }
-    .heading{
-        font-size: 1.5rem;
-    }
-    .container{
-        padding-bottom: 35px;
-    }
-    .box{
-        display: flex;
-        flex-direction: column;  
-        width: 100%;
-        margin-top: 13px;
-    }
-    .input_box{
-        width: 90%;
-        padding: 3px;
-        font-size: 1.25rem;
-        margin-top: 5px;
-    }
+.heading {
+  height: 58px;
+  line-height: 58px;
+  width: 100%;
+  font-size: 2rem;
+  font-weight: bolder;
+  text-align: center;
+  border-radius: 10px;
+  padding: 0 15px;
+  margin-bottom: 28px;
+}
+.container {
+  width: 85%;
+  max-width: 450px;
+  min-width: 350px;
+  padding: 20px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  border-radius: 10px;
+  background: rgba(255, 255, 255, 0.3);
+  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
+}
+.box {
+  width: 100%;
+  padding: 15px;
+  font-weight: bold;
+}
+.input_box {
+  width: 14rem;
+  font-family: monospace;
+  padding: 5px;
+  float: right;
+  outline: none;
+  background: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.5);
+  color: darkgreen;
+  font-size: 1.25rem;
 }
 
-
-@media screen and (max-width: 380px) {
-    .main{
-        width: 92%;
-    }
-    .heading{
-        font-size: 1.22rem;
-        padding: 0 10px;
-    }
+.input_box::placeholder {
+  color: darkgray;
 }
diff --git a/projects/weight-converter/Assets/Assets.png b/projects/weight-converter/Assets/Assets.png
deleted file mode 100644
index 576e299a21a12fc1cd431dc10d3ec7e07343073c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 76519
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
XKVh(9{621T00000NkvXXu0mjfBF0x3

diff --git a/projects/weight-converter/index.html b/projects/weight-converter/index.html
index 39e26e1..0dba6e8 100644
--- a/projects/weight-converter/index.html
+++ b/projects/weight-converter/index.html
@@ -5,7 +5,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <link rel="stylesheet" href="style.css">
-    <title>Weight Converstion Tool</title>
+    <title>Weight Conversion</title>
 </head>
 <body>
     <div>
@@ -17,6 +17,6 @@ <h1>Weight Converter (pounds to kg)</h1>
             <p>Your weight in Kilograms is: <span id="result"></span></p>
         </form>
     </div>
-    <script src="app.js"></script>
+    <script src="index.js"></script>
 </body>
 </html>
diff --git a/projects/weight-converter/app.js b/projects/weight-converter/index.js
similarity index 100%
rename from projects/weight-converter/app.js
rename to projects/weight-converter/index.js

From 255472a73ec5c9e8a663ac6fec1002628a0cb8fa Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Wed, 21 Dec 2022 18:13:46 +0700
Subject: [PATCH 23/54] update temperature convertor project

---
 projects/temp-converter/index.js              | 21 ----------
 .../index.html                                | 21 +++++-----
 projects/temperature-convertor/index.js       | 24 +++++++++++
 .../style.css                                 | 40 +++++++++----------
 4 files changed, 52 insertions(+), 54 deletions(-)
 delete mode 100644 projects/temp-converter/index.js
 rename projects/{temp-converter => temperature-convertor}/index.html (83%)
 create mode 100644 projects/temperature-convertor/index.js
 rename projects/{temp-converter => temperature-convertor}/style.css (70%)

diff --git a/projects/temp-converter/index.js b/projects/temp-converter/index.js
deleted file mode 100644
index f4c1cda..0000000
--- a/projects/temp-converter/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-const celsiusEl = document.getElementById("celsius");
-const fahrenheitEl = document.getElementById("fahrenheit");
-const kelvinEl = document.getElementById("kelvin");
-
-function computeTemp(e) {
-  const value = +e.target.value;
-  switch (e.target.name) {
-    case "celsius":
-      kelvinEl.value = (value + 273.32).toFixed(2);
-      fahrenheitEl.value = (value * 1.8 + 32).toFixed(2);
-      break;
-    case "fahrenheit":
-      celsiusEl.value = ((value - 32) / 1.8).toFixed(2);
-      result = kelvinEl.value = ((value - 32) / 1.8 + 273.15).toFixed(2);
-      break;
-    case "kelvin":
-      celsiusEl.value = (value - 273.15).toFixed(2);
-      fahrenheitEl.value = ((value - 273.15) * 1.8 + 32).toFixed(2);
-      break;
-  }
-}
diff --git a/projects/temp-converter/index.html b/projects/temperature-convertor/index.html
similarity index 83%
rename from projects/temp-converter/index.html
rename to projects/temperature-convertor/index.html
index b7efe8c..20ae02d 100644
--- a/projects/temp-converter/index.html
+++ b/projects/temperature-convertor/index.html
@@ -9,42 +9,41 @@
   </head>
   <body>
     <div class="container">
-      <div class="heading">Temperature Convertor</div>
-      <div class="box">
+      <h1 class="heading">Temperature Convertor</h1>
+      <div class="temp-container">
         <label for="celsius">Celsius:</label>
         <input
+          onchange="computeTemp(event)"
           type="number"
           name="celsius"
           id="celsius"
           placeholder="Enter Temperature"
-          class="input_box"
-          onchange="computeTemp(event)"
+          class="input"
         />
       </div>
-      <div class="box">
+      <div class="temp-container">
         <label for="fahrenheit">Fahrenheit:</label>
         <input
+          onchange="computeTemp(event)"
           type="number"
           name="fahrenheit"
           id="fahrenheit"
           placeholder="Enter Temperature"
-          class="input_box"
-          onchange="computeTemp(event)"
+          class="input"
         />
       </div>
-      <div class="box">
+      <div class="temp-container">
         <label for="kelvin">Kelvin:</label>
         <input
+          onchange="computeTemp(event)"
           type="number"
           name="kelvin"
           id="kelvin"
           placeholder="Enter Temperature"
-          class="input_box"
-          onchange="computeTemp(event)"
+          class="input"
         />
       </div>
     </div>
-
     <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/temperature-convertor/index.js b/projects/temperature-convertor/index.js
new file mode 100644
index 0000000..e2dfcf3
--- /dev/null
+++ b/projects/temperature-convertor/index.js
@@ -0,0 +1,24 @@
+const celsiusEl = document.getElementById("celsius");
+const fahrenheitEl = document.getElementById("fahrenheit");
+const kelvinEl = document.getElementById("kelvin");
+
+function computeTemp(event) {
+  const currentValue = +event.target.value;
+
+  switch (event.target.name) {
+    case "celsius":
+      kelvinEl.value = (currentValue + 273.32).toFixed(2);
+      fahrenheitEl.value = (currentValue * 1.8 + 32).toFixed(2);
+      break;
+    case "fahrenheit":
+      celsiusEl.value = ((currentValue - 32) / 1.8).toFixed(2);
+      kelvinEl.value = ((currentValue - 32) / 1.8 + 273.32).toFixed(2);
+      break;
+    case "kelvin":
+      celsiusEl.value = (currentValue - 273.32).toFixed(2);
+      fahrenheitEl.value = ((currentValue - 273.32) * 1.8 + 32).toFixed(2);
+      break;
+    default:
+      break;
+  }
+}
diff --git a/projects/temp-converter/style.css b/projects/temperature-convertor/style.css
similarity index 70%
rename from projects/temp-converter/style.css
rename to projects/temperature-convertor/style.css
index efb8122..ea02485 100644
--- a/projects/temp-converter/style.css
+++ b/projects/temperature-convertor/style.css
@@ -6,40 +6,35 @@ body {
   justify-content: center;
   align-items: center;
   font-family: monospace;
-  font-size: 1.25rem;
   color: darkcyan;
 }
 
-.heading {
-  height: 58px;
-  line-height: 58px;
-  width: 100%;
-  font-size: 2rem;
-  font-weight: bolder;
-  text-align: center;
-  border-radius: 10px;
-  padding: 0 15px;
-  margin-bottom: 28px;
-}
 .container {
+  background: rgba(255, 255, 255, 0.3);
+  padding: 20px;
+  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
+  border-radius: 10px;
   width: 85%;
   max-width: 450px;
   min-width: 350px;
-  padding: 20px;
   display: flex;
   flex-direction: column;
   align-items: center;
-  border-radius: 10px;
-  background: rgba(255, 255, 255, 0.3);
-  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
 }
-.box {
+
+.heading {
+  font-size: 32px;
+}
+
+.temp-container {
   width: 100%;
   padding: 15px;
   font-weight: bold;
+  font-size: 18px;
 }
-.input_box {
-  width: 14rem;
+
+.input {
+  width: 220px;
   font-family: monospace;
   padding: 5px;
   float: right;
@@ -47,9 +42,10 @@ body {
   background: rgba(255, 255, 255, 0.3);
   border-color: rgba(255, 255, 255, 0.5);
   color: darkgreen;
-  font-size: 1.25rem;
+  font-size: 18px;
 }
 
-.input_box::placeholder {
-  color: darkgray;
+
+.input::placeholder{
+    color: darkgray;
 }

From 8017149cdc11738528606ab6cbd8da32ad366d05 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Wed, 21 Dec 2022 21:33:16 +0700
Subject: [PATCH 24/54] update weight converter project

---
 projects/weight-converter/index.html | 40 ++++++++++++---------
 projects/weight-converter/index.js   | 54 +++++++++++++---------------
 projects/weight-converter/style.css  | 48 +++++++++++++++++++------
 3 files changed, 84 insertions(+), 58 deletions(-)

diff --git a/projects/weight-converter/index.html b/projects/weight-converter/index.html
index 0dba6e8..6e551de 100644
--- a/projects/weight-converter/index.html
+++ b/projects/weight-converter/index.html
@@ -1,22 +1,28 @@
 <!DOCTYPE html>
 <html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <link rel="stylesheet" href="style.css">
-    <title>Weight Conversion</title>
-</head>
-<body>
-    <div>
-        <form>
-            <h1>Weight Converter (pounds to kg)</h1>
-            <p>Enter weight value in pounds:</p>
-            <label>Pounds</label>
-            <input type="number" step=".1">
-            <p>Your weight in Kilograms is: <span id="result"></span></p>
-        </form>
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+    <link rel="stylesheet" href="style.css" />
+    <title>Weight Converter</title>
+  </head>
+  <body>
+    <div class="container">
+      <h1 class="heading">Weight Converter</h1>
+      <div class="input-container">
+        <label>Pounds:</label>
+        <input
+          placeholder="Enter number"
+          class="input"
+          type="number"
+          step=".1"
+          id="input"
+        />
+      </div>
+      <p>Your weight in kg is: <span id="result"></span></p>
+      <span id="error" class="error"></span>
     </div>
     <script src="index.js"></script>
-</body>
+  </body>
 </html>
diff --git a/projects/weight-converter/index.js b/projects/weight-converter/index.js
index b992071..9ce859a 100644
--- a/projects/weight-converter/index.js
+++ b/projects/weight-converter/index.js
@@ -1,34 +1,28 @@
-const form = document.querySelector('form');
-
+const inputEl = document.getElementById("input");
+const errorEl = document.getElementById("error");
+const resultsEl = document.getElementById("result");
 
 //add an event listener to the form
+let time;
+let errorTime;
+
+function updateResults() {
+  if (inputEl.value <= 0 || isNaN(inputEl.value)) {
+    clearTimeout(errorTime);
+    errorEl.innerText = "Please enter a valid number!";
+    errorTime = setTimeout(function () {
+      errorEl.innerText = "";
+    }, 2000);
+    inputEl.value = "";
+  } else {
+    clearTimeout(time);
 
-form.addEventListener('submit', function(e){
-    e.preventDefault();
-    const input = document.querySelector('input');
-    let results = document.querySelector('span');
-    let poundsToKG;
+    resultsEl.innerText = (+inputEl.value / 2.2).toFixed(2);
+    time = setTimeout(function () {
+      resultsEl.innerText = "";
+      inputEl.value = "";
+    }, 10000);
+  }
+}
 
-    if ((input.value <= 0) || (isNaN(input.value))){
-        results.classList.add('error');
-        results.innerHTML = "<p>Please enter a value number!</p>"
-        setTimeout(function(){
-            results.innerHTML = '';
-            
-            results.classList.remove('error');
-        }, 2000)
-        input.value = '';
-    } else {
-        poundsToKG = Number(input.value) / 2.2;
-        results.classList.add('no-error');
-        results.innerHTML = `${poundsToKG.toFixed(2)}`;
-        setTimeout(function(){
-            results.innerHTML = '';
-            input.value = '';
-            results.classList.remove('no-error');
-        }, 10000)
-        
-    }
-    
-    
-})
+inputEl.addEventListener("input", updateResults);
diff --git a/projects/weight-converter/style.css b/projects/weight-converter/style.css
index 67bd921..2d971a2 100644
--- a/projects/weight-converter/style.css
+++ b/projects/weight-converter/style.css
@@ -1,16 +1,42 @@
-form {
-    background-color: rgb(241, 9, 144);
-    color: white;
-    width: 500px;
-    height: 300px;
-    margin: 100px auto 100px;
-    padding: 25px;
+body {
+  background: linear-gradient(to left top, yellow, lightblue, yellow);
+  min-height: 100vh;
+  margin: 0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-family: "Courier New", Courier, monospace;
+  color: darkcyan;
 }
 
-.error{
-    color: red;
+.container {
+  background: rgba(255, 255, 255, 0.3);
+  padding: 20px;
+  width: 85%;
+  max-width: 450px;
+  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
+  border-radius: 10px;
 }
 
-.no-error{
-    color: rgb(6, 48, 2);
+.input-container {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-size: 18px;
+  font-weight: 700;
+}
+
+.input {
+  padding: 10px;
+  width: 70%;
+  background: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.5);
+  font-size: 18px;
+  border-radius: 10px;
+  color: darkgreen;
+  outline: none;
+}
+
+.error {
+  color: red;
 }

From 45ef139e6d8e0afac7808cc43d1a22c71a07e38b Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Wed, 21 Dec 2022 21:35:34 +0700
Subject: [PATCH 25/54] fix the typo in temperature converter project

---
 .../index.html                                                | 4 ++--
 .../{temperature-convertor => temperature-converter}/index.js | 0
 .../style.css                                                 | 0
 3 files changed, 2 insertions(+), 2 deletions(-)
 rename projects/{temperature-convertor => temperature-converter}/index.html (93%)
 rename projects/{temperature-convertor => temperature-converter}/index.js (100%)
 rename projects/{temperature-convertor => temperature-converter}/style.css (100%)

diff --git a/projects/temperature-convertor/index.html b/projects/temperature-converter/index.html
similarity index 93%
rename from projects/temperature-convertor/index.html
rename to projects/temperature-converter/index.html
index 20ae02d..dd23f99 100644
--- a/projects/temperature-convertor/index.html
+++ b/projects/temperature-converter/index.html
@@ -4,12 +4,12 @@
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Temperature Convertor</title>
+    <title>Temperature Converter</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
     <div class="container">
-      <h1 class="heading">Temperature Convertor</h1>
+      <h1 class="heading">Temperature Converter</h1>
       <div class="temp-container">
         <label for="celsius">Celsius:</label>
         <input
diff --git a/projects/temperature-convertor/index.js b/projects/temperature-converter/index.js
similarity index 100%
rename from projects/temperature-convertor/index.js
rename to projects/temperature-converter/index.js
diff --git a/projects/temperature-convertor/style.css b/projects/temperature-converter/style.css
similarity index 100%
rename from projects/temperature-convertor/style.css
rename to projects/temperature-converter/style.css

From 84612942edce37e6c1cf0409e12f202c0c1ff001 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 22 Dec 2022 17:12:13 +0700
Subject: [PATCH 26/54] update weight converter project

---
 projects/weight-converter/index.html | 38 +++++++---------
 projects/weight-converter/index.js   | 22 ++++-----
 projects/weight-converter/style.css  | 68 ++++++++++++++--------------
 3 files changed, 59 insertions(+), 69 deletions(-)

diff --git a/projects/weight-converter/index.html b/projects/weight-converter/index.html
index 6e551de..d441ffd 100644
--- a/projects/weight-converter/index.html
+++ b/projects/weight-converter/index.html
@@ -1,28 +1,22 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
-    <link rel="stylesheet" href="style.css" />
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Weight Converter</title>
-  </head>
-  <body>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="container">
-      <h1 class="heading">Weight Converter</h1>
-      <div class="input-container">
-        <label>Pounds:</label>
-        <input
-          placeholder="Enter number"
-          class="input"
-          type="number"
-          step=".1"
-          id="input"
-        />
-      </div>
-      <p>Your weight in kg is: <span id="result"></span></p>
-      <span id="error" class="error"></span>
+        <h1 class="heading">Weight Converter</h1>
+        <div class="input-container">
+            <label for="pounds">Pounds:</label>
+            <input type="number" id="input" class="input" step=".1" placeholder="Enter number">
+        </div>
+        <p>Your weight in kg is: <span id="result"></span></p>
+        <p class="error" id="error"></p>
     </div>
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/weight-converter/index.js b/projects/weight-converter/index.js
index 9ce859a..faf2a44 100644
--- a/projects/weight-converter/index.js
+++ b/projects/weight-converter/index.js
@@ -1,25 +1,21 @@
 const inputEl = document.getElementById("input");
 const errorEl = document.getElementById("error");
-const resultsEl = document.getElementById("result");
-
-//add an event listener to the form
-let time;
+const resultEl = document.getElementById("result");
 let errorTime;
-
+let resultTime;
 function updateResults() {
   if (inputEl.value <= 0 || isNaN(inputEl.value)) {
-    clearTimeout(errorTime);
     errorEl.innerText = "Please enter a valid number!";
-    errorTime = setTimeout(function () {
+    clearTimeout(errorTime);
+    errorTime = setTimeout(() => {
       errorEl.innerText = "";
+      inputEl.value = "";
     }, 2000);
-    inputEl.value = "";
   } else {
-    clearTimeout(time);
-
-    resultsEl.innerText = (+inputEl.value / 2.2).toFixed(2);
-    time = setTimeout(function () {
-      resultsEl.innerText = "";
+    resultEl.innerText = (+inputEl.value / 2.2).toFixed(2);
+    clearTimeout(resultTime);
+    resultTime = setTimeout(() => {
+      resultEl.innerText = "";
       inputEl.value = "";
     }, 10000);
   }
diff --git a/projects/weight-converter/style.css b/projects/weight-converter/style.css
index 2d971a2..e69936b 100644
--- a/projects/weight-converter/style.css
+++ b/projects/weight-converter/style.css
@@ -1,42 +1,42 @@
-body {
-  background: linear-gradient(to left top, yellow, lightblue, yellow);
-  min-height: 100vh;
-  margin: 0;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  font-family: "Courier New", Courier, monospace;
-  color: darkcyan;
+body{
+    margin: 0;
+    background: linear-gradient(to left top, yellow, lightblue, yellow);
+    min-height: 100vh;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-family: 'Courier New', Courier, monospace;
+    color: darkcyan;
 }
 
-.container {
-  background: rgba(255, 255, 255, 0.3);
-  padding: 20px;
-  width: 85%;
-  max-width: 450px;
-  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
-  border-radius: 10px;
+.container{
+    background: rgba(255,255,255,0.3);
+    padding: 20px;
+    box-shadow: 0 4px 10px rgba(0,0,0,.3);
+    border-radius: 10px;
+    width: 85%;
+    max-width: 450px;
 }
 
-.input-container {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  font-size: 18px;
-  font-weight: 700;
+.input-container{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    font-size: 18px;
+    font-weight: 700;
 }
 
-.input {
-  padding: 10px;
-  width: 70%;
-  background: rgba(255, 255, 255, 0.3);
-  border-color: rgba(255, 255, 255, 0.5);
-  font-size: 18px;
-  border-radius: 10px;
-  color: darkgreen;
-  outline: none;
+.input{
+    padding: 10px;
+    width: 70%;
+    background: rgba(255,255,255,0.3);
+    border-color: rgba(255,255,255,0.5);
+    font-size: 18px;
+    border-radius: 10px;
+    color: darkgreen;
+    outline: none;
 }
 
-.error {
-  color: red;
-}
+.error{
+    color: red;
+}
\ No newline at end of file

From 8811dbcbaa8d8b39d528d7056e5acbbecb23be7c Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Fri, 23 Dec 2022 18:55:10 +0700
Subject: [PATCH 27/54] update feedback UI project

---
 projects/feedback-ui/assets/review.png | Bin 1800 -> 0 bytes
 projects/feedback-ui/font/sans.ttf     | Bin 55852 -> 0 bytes
 projects/feedback-ui/index.html        |  31 +++-----
 projects/feedback-ui/index.js          |  32 ++++++++
 projects/feedback-ui/script.js         |  29 --------
 projects/feedback-ui/style.css         |  97 +++++++------------------
 6 files changed, 69 insertions(+), 120 deletions(-)
 delete mode 100644 projects/feedback-ui/assets/review.png
 delete mode 100644 projects/feedback-ui/font/sans.ttf
 create mode 100644 projects/feedback-ui/index.js
 delete mode 100644 projects/feedback-ui/script.js

diff --git a/projects/feedback-ui/assets/review.png b/projects/feedback-ui/assets/review.png
deleted file mode 100644
index 12102214dab13333fcf607fd98027f590c6567b0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1800
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

diff --git a/projects/feedback-ui/font/sans.ttf b/projects/feedback-ui/font/sans.ttf
deleted file mode 100644
index 85860e6c086e60a9458ff45af4dfb55471f744cd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 55852
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

diff --git a/projects/feedback-ui/index.html b/projects/feedback-ui/index.html
index bf8cda1..da15c92 100644
--- a/projects/feedback-ui/index.html
+++ b/projects/feedback-ui/index.html
@@ -4,45 +4,32 @@
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <link rel="stylesheet" href="style.css" />
-    <link rel="icon" href="assets/review.png" />
     <title>Feedback UI</title>
   </head>
 
   <body>
-    <h1>Feedback Design UI</h1>
-    <div id="panel" class="panel-container box">
-      <h3>
-        How satisfied are you with our <br />
-        customer support performance?
-      </h3>
-      <div class="ratings-container">
+    <div id="container" class="container">
+      <h1 class="heading">Feedback UI</h1>
+
+      <div class="ratings-container" id="ratings-container">
         <div class="rating">
-          <img
-            src="https://cdn-icons-png.flaticon.com/512/166/166527.png"
-            alt=""
-          />
+          <img src="https://cdn-icons-png.flaticon.com/512/166/166527.png" />
           <small>Unhappy</small>
         </div>
 
         <div class="rating">
-          <img
-            src="https://cdn-icons-png.flaticon.com/512/166/166536.png"
-            alt=""
-          />
+          <img src="https://cdn-icons-png.flaticon.com/512/166/166536.png" />
           <small>Neutral</small>
         </div>
 
         <div class="rating">
-          <img
-            src="https://cdn-icons-png.flaticon.com/512/166/166538.png"
-            alt=""
-          />
+          <img src="https://cdn-icons-png.flaticon.com/512/166/166538.png" />
           <small>Satisfied</small>
         </div>
       </div>
-      <button class="btn" id="send">Send Review</button>
+      <button class="btn" id="btn">Send Review</button>
     </div>
 
-    <script src="script.js"></script>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/feedback-ui/index.js b/projects/feedback-ui/index.js
new file mode 100644
index 0000000..015bb66
--- /dev/null
+++ b/projects/feedback-ui/index.js
@@ -0,0 +1,32 @@
+const ratingEls = document.querySelectorAll(".rating");
+const ratingsContainerEl = document.getElementById("ratings-container");
+const btnEl = document.getElementById("btn");
+const containerEl = document.getElementById("container");
+let selectedRating = "";
+
+ratingEls.forEach((ratingEl) => {
+  ratingEl.addEventListener("click", (e) => {
+    removeActive();
+    selectedRating = e.target.innerText || e.target.parentNode.innerText;
+    e.target.parentNode.classList.add("active");
+    e.target.classList.add("active");
+  });
+});
+
+btnEl.addEventListener("click", () => {
+  if (selectedRating !== "") {
+    containerEl.innerHTML = `
+        <strong>Thank You!</strong>
+        <br>
+        <br>
+        <strong>Feedback : ${selectedRating}</strong>
+        <p>We'll use your feedback to improve our customer support.</p>
+    `;
+  }
+});
+
+function removeActive() {
+  ratingEls.forEach((ratingEl) => {
+    ratingEl.classList.remove("active");
+  });
+}
diff --git a/projects/feedback-ui/script.js b/projects/feedback-ui/script.js
deleted file mode 100644
index 60bfd0f..0000000
--- a/projects/feedback-ui/script.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const ratings = document.querySelectorAll(".rating");
-const ratingsContainer = document.querySelector(".ratings-container");
-const sendBtn = document.querySelector("#send");
-const panel = document.querySelector("#panel");
-let selectedRating = "Unhappy";
-
-ratingsContainer.addEventListener("click", (e) => {
-  console.log(e.target.parentNode.innerText);
-  removeActive();
-  selectedRating = e.target.innerText || e.target.parentNode.innerText;
-  e.target.parentNode.classList.toggle("active");
-  e.target.classList.toggle("active");
-});
-
-sendBtn.addEventListener("click", (e) => {
-  panel.innerHTML = `
-        <i class="fas fa-heart"></i>
-        <strong>Thank You!</strong>
-        <br>
-        <strong>Feedback : ${selectedRating}</strong>
-        <p>We'll use your feedback to improve our customer support.</p>
-    `;
-});
-
-function removeActive() {
-  for (let i = 0; i < ratings.length; i++) {
-    ratings[i].classList.remove("active");
-  }
-}
diff --git a/projects/feedback-ui/style.css b/projects/feedback-ui/style.css
index ef76253..9682dce 100644
--- a/projects/feedback-ui/style.css
+++ b/projects/feedback-ui/style.css
@@ -1,79 +1,48 @@
-* {
-  padding: 0;
-  box-sizing: border-box;
-  font-family: "sans";
-}
-
-@font-face {
-  font-family: "sans";
-  src: url(font/sans.ttf);
-}
-
 body {
-  overflow: hidden;
-  background: #19172e;
-  color: #fff;
+  margin: 0;
+  background: lightcyan;
+  color: darkgreen;
   display: flex;
   align-items: center;
   justify-content: center;
   min-height: 100vh;
+  font-family: monospace;
 }
 
-footer, a, h3,small {
-  color: #fff;
-}
-
-h1 {
-  color: #fff;
+.heading {
   text-align: center;
-  position: absolute;
-  left: 0;
-  right: 0;
-  top: 0;
-  padding-top: 10px;
+  margin: 5px;
+  font-size: 30px;
 }
 
-.box {
-  background: rgba(255, 255, 255, 0.05);
-  box-shadow: 0 15px 25px rgba(0, 0, 0, 0.1);
+.container {
+  background: rgba(255, 255, 255, 0.3);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
   border-radius: 10px;
-  backdrop-filter: blur(20px);
-  padding: 1rem;
-  width: 400px;
-  text-align: center;
-}
-
-.panel-container {
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  text-align: center;
-  padding: 30px;
+  padding: 20px;
   max-width: 400px;
-}
-
-.panel-container strong {
-  line-height: 20px;
+  width: 85%;
+  text-align: center;
+  font-size: 20px;
 }
 
 .ratings-container {
   display: flex;
-  margin: 20px 0;
+  padding: 20px 0;
 }
 
 .rating {
-  flex: 1;
   cursor: pointer;
-  padding: 20px;
+  padding: 10px;
   margin: 10px 5px;
 }
 
 .rating:hover,
 .rating.active {
-  border-radius: 4px;
+  border-radius: 10px;
   box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
-  background: salmon;
+  background: darkseagreen;
+  transition: all 300ms ease;
 }
 
 .rating img {
@@ -81,40 +50,30 @@ h1 {
 }
 
 .rating small {
-  display: inline-block;
-  margin: 10px 0 0;
+  margin: 5px 0;
+  font-size: 18px;
 }
 
 .rating:hover small,
 .rating.active small {
-  color: green;
+  color: aliceblue;
 }
 
 .btn {
-  background-color: #302d2b;
+  background-color: darkcyan;
   color: #fff;
   border: 0;
+  margin: 10px;
   border-radius: 4px;
   padding: 12px 30px;
   cursor: pointer;
 }
 
-.btn:focus {
-  outline: 0;
+.btn:hover {
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
+  transition: all 300ms ease;
 }
 
 .btn:active {
-  transform: scale(0.98);
+  transform: scale(0.96);
 }
-
-.fa-heart {
-  color: red;
-  font-size: 30px;
-  margin-bottom: 10px;
-}
-
-footer {
-  text-align: center;
-  position: absolute;
-  bottom: 0;
-}
\ No newline at end of file

From 420c6ab233216d2a429716d6e46abef08fb7df8a Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sat, 24 Dec 2022 16:12:39 +0700
Subject: [PATCH 28/54] update the feedback ui project

---
 projects/feedback-ui/index.html | 12 +++------
 projects/feedback-ui/index.js   | 18 +++++++------
 projects/feedback-ui/style.css  | 45 +++++++++++++--------------------
 3 files changed, 32 insertions(+), 43 deletions(-)

diff --git a/projects/feedback-ui/index.html b/projects/feedback-ui/index.html
index da15c92..3101d24 100644
--- a/projects/feedback-ui/index.html
+++ b/projects/feedback-ui/index.html
@@ -2,26 +2,23 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <link rel="stylesheet" href="style.css" />
     <title>Feedback UI</title>
+    <link rel="stylesheet" href="style.css">
   </head>
-
   <body>
-    <div id="container" class="container">
+    <div class="container" id="container">
       <h1 class="heading">Feedback UI</h1>
-
       <div class="ratings-container" id="ratings-container">
         <div class="rating">
           <img src="https://cdn-icons-png.flaticon.com/512/166/166527.png" />
           <small>Unhappy</small>
         </div>
-
         <div class="rating">
-          <img src="https://cdn-icons-png.flaticon.com/512/166/166536.png" />
+          <img src="https://cdn-icons-png.flaticon.com/512/1791/1791385.png" />
           <small>Neutral</small>
         </div>
-
         <div class="rating">
           <img src="https://cdn-icons-png.flaticon.com/512/166/166538.png" />
           <small>Satisfied</small>
@@ -29,7 +26,6 @@ <h1 class="heading">Feedback UI</h1>
       </div>
       <button class="btn" id="btn">Send Review</button>
     </div>
-
     <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/feedback-ui/index.js b/projects/feedback-ui/index.js
index 015bb66..5bf81a0 100644
--- a/projects/feedback-ui/index.js
+++ b/projects/feedback-ui/index.js
@@ -1,27 +1,29 @@
 const ratingEls = document.querySelectorAll(".rating");
-const ratingsContainerEl = document.getElementById("ratings-container");
 const btnEl = document.getElementById("btn");
+
 const containerEl = document.getElementById("container");
+
 let selectedRating = "";
 
 ratingEls.forEach((ratingEl) => {
-  ratingEl.addEventListener("click", (e) => {
+  ratingEl.addEventListener("click", (event) => {
     removeActive();
-    selectedRating = e.target.innerText || e.target.parentNode.innerText;
-    e.target.parentNode.classList.add("active");
-    e.target.classList.add("active");
+    selectedRating =
+      event.target.innerText || event.target.parentNode.innerText;
+    event.target.classList.add("active");
+    event.target.parentNode.classList.add("active");
   });
 });
 
 btnEl.addEventListener("click", () => {
   if (selectedRating !== "") {
     containerEl.innerHTML = `
-        <strong>Thank You!</strong>
+        <strong>Thank you!</strong>
         <br>
         <br>
-        <strong>Feedback : ${selectedRating}</strong>
+        <strong>Feedback: ${selectedRating}</strong>
         <p>We'll use your feedback to improve our customer support.</p>
-    `;
+        `;
   }
 });
 
diff --git a/projects/feedback-ui/style.css b/projects/feedback-ui/style.css
index 9682dce..7e1c812 100644
--- a/projects/feedback-ui/style.css
+++ b/projects/feedback-ui/style.css
@@ -1,31 +1,30 @@
 body {
   margin: 0;
-  background: lightcyan;
+  background-color: lightcyan;
   color: darkgreen;
   display: flex;
-  align-items: center;
-  justify-content: center;
   min-height: 100vh;
+  justify-content: center;
+  align-items: center;
   font-family: monospace;
 }
 
-.heading {
-  text-align: center;
-  margin: 5px;
-  font-size: 30px;
-}
-
 .container {
   background: rgba(255, 255, 255, 0.3);
   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
   border-radius: 10px;
   padding: 20px;
-  max-width: 400px;
   width: 85%;
+  max-width: 400px;
   text-align: center;
   font-size: 20px;
 }
 
+.heading {
+  margin: 5px;
+  font-size: 30px;
+}
+
 .ratings-container {
   display: flex;
   padding: 20px 0;
@@ -38,30 +37,18 @@ body {
 }
 
 .rating:hover,
-.rating.active {
+.rating.active
+{
+  background: darkseagreen;
   border-radius: 10px;
   box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
-  background: darkseagreen;
-  transition: all 300ms ease;
-}
-
-.rating img {
-  width: 40px;
-}
-
-.rating small {
-  margin: 5px 0;
-  font-size: 18px;
-}
-
-.rating:hover small,
-.rating.active small {
   color: aliceblue;
+  transition: all 300ms ease;
 }
 
 .btn {
   background-color: darkcyan;
-  color: #fff;
+  color: aliceblue;
   border: 0;
   margin: 10px;
   border-radius: 4px;
@@ -77,3 +64,7 @@ body {
 .btn:active {
   transform: scale(0.96);
 }
+
+.rating img {
+  width: 40px;
+}

From b3160367ea386e734c7cfbf4199787485ac4bd7e Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 26 Dec 2022 09:06:03 +0700
Subject: [PATCH 29/54] update Dad Joke Generator project

---
 projects/dad-jokes-generator/index.html       |   18 +
 projects/dad-jokes-generator/index.js         |   37 +
 projects/dad-jokes-generator/style.css        |   54 +
 projects/project-idea-generator/index.html    |   43 -
 .../project-idea-generator/src/css/styles.css |  102 --
 .../project-idea-generator/src/js/main.js     |   15 -
 .../project-idea-generator/src/js/projects.js | 1514 -----------------
 7 files changed, 109 insertions(+), 1674 deletions(-)
 create mode 100644 projects/dad-jokes-generator/index.html
 create mode 100644 projects/dad-jokes-generator/index.js
 create mode 100644 projects/dad-jokes-generator/style.css
 delete mode 100644 projects/project-idea-generator/index.html
 delete mode 100644 projects/project-idea-generator/src/css/styles.css
 delete mode 100644 projects/project-idea-generator/src/js/main.js
 delete mode 100644 projects/project-idea-generator/src/js/projects.js

diff --git a/projects/dad-jokes-generator/index.html b/projects/dad-jokes-generator/index.html
new file mode 100644
index 0000000..36c32fb
--- /dev/null
+++ b/projects/dad-jokes-generator/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Dad Joke Generator</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h1 class="heading">Dad Joke Generator</h1>
+      <h2 class="joke" id="joke">Dad Joke</h2>
+      <button class="btn" id="btn">Tell me a joke</button>
+    </div>
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/dad-jokes-generator/index.js b/projects/dad-jokes-generator/index.js
new file mode 100644
index 0000000..6bbe74d
--- /dev/null
+++ b/projects/dad-jokes-generator/index.js
@@ -0,0 +1,37 @@
+const btnEl = document.getElementById("btn");
+const jokeEl = document.getElementById("joke");
+
+const apiKey = "SAXb3lrT9IIorMjQkAFWBg==KCDQCZgWgcoAU4ai";
+
+const options = {
+  method: "GET",
+  headers: {
+    "X-Api-Key": apiKey,
+  },
+};
+
+const apiURL = `https://api.api-ninjas.com/v1/dadjokes?limit=1`;
+
+async function getJoke() {
+  try {
+    btnEl.innerText = "Loading...";
+    btnEl.disabled = true;
+    jokeEl.innerText = "Updating...";
+    const response = await fetch(apiURL, options);
+    const data = await response.json();
+    const jokeContent = data[0].joke;
+    jokeEl.innerText = jokeContent;
+    btnEl.innerText = "Tell me a joke";
+    btnEl.disabled = false;
+    console.log(data);
+  } catch (error) {
+    console.log(error);
+    jokeEl.innerText = "An error happened, try again later";
+    btnEl.innerText = "Tell me a joke";
+    btnEl.disabled = false;
+  }
+}
+
+getJoke();
+
+btnEl.addEventListener("click", getJoke);
diff --git a/projects/dad-jokes-generator/style.css b/projects/dad-jokes-generator/style.css
new file mode 100644
index 0000000..5e7e85a
--- /dev/null
+++ b/projects/dad-jokes-generator/style.css
@@ -0,0 +1,54 @@
+body {
+  margin: 0;
+  display: flex;
+  min-height: 100vh;
+  justify-content: center;
+  align-items: center;
+  font-family: monospace;
+  background: linear-gradient(to left bottom, lightblue, lightpink, lightblue);
+}
+
+.container {
+  background-color: rgba(255, 255, 255, 0.3);
+  box-shadow: 0 6px 10px rgba(0, 0, 0, 0.3);
+  padding: 20px;
+  border-radius: 15px;
+  width: 85%;
+  text-align: center;
+  color: darkgreen;
+}
+
+.heading {
+  font-size: 35px;
+  font-weight: 200;
+  font-family: Impact;
+  letter-spacing: 2px;
+
+  text-shadow: 5px 5px 2px rgba(0, 0, 0, 0.3);
+}
+
+.joke {
+  font-size: 25px;
+  font-weight: 500;
+  margin: 40px;
+}
+
+.btn {
+  font-size: 18px;
+  font-weight: 700;
+  border-radius: 5px;
+  cursor: pointer;
+  padding: 10px;
+  margin-top: 15px;
+  background-color: rgba(255, 255, 255, 0.3);
+  border-color: rgba(255, 255, 255, 0.6);
+  text-transform: uppercase;
+  width: 300px;
+  color: darkgreen;
+}
+
+.btn:hover {
+  background-color: rgba(255, 255, 255, 0.5);
+  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3);
+  transition: all 300ms ease;
+}
diff --git a/projects/project-idea-generator/index.html b/projects/project-idea-generator/index.html
deleted file mode 100644
index 5262bbf..0000000
--- a/projects/project-idea-generator/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <title>Project Idea Generator</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
-    <meta
-      name="description"
-      content="A tool to generate your next programming side project"
-    />
-    <meta
-      name="keywords"
-      content="Coding, Side Project, Project, Programming, Learning, Tutorials, Computer Science"
-    />
-    <link
-      rel="stylesheet"
-      href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
-    />
-    <link
-      href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap"
-      rel="stylesheet"
-    />
-    <link href="src/css/styles.css" rel="stylesheet" />
-  </head>
-  <body>
-    <h1><span class="title">Project Idea Generator</span></h1>
-    <h2>
-      Generate your next coding project <i class="fa fa-code"></i><br />
-      <br />
-      <strong>Note:</strong> Some projects may be in a specific language but you
-      can try doing them in a language you like!
-    </h2>
-
-    <div id="project-generation">
-      <button id="generate-project">New Idea!</button>
-      <p id="new-project"></p>
-    </div>
-
-    <script type="text/javascript" src="src/js/main.js"></script>
-    <script type="text/javascript" src="src/js/projects.js"></script>
-  </body>
-</html>
diff --git a/projects/project-idea-generator/src/css/styles.css b/projects/project-idea-generator/src/css/styles.css
deleted file mode 100644
index 2e23832..0000000
--- a/projects/project-idea-generator/src/css/styles.css
+++ /dev/null
@@ -1,102 +0,0 @@
-* {
-  box-sizing: border-box;
-  padding: 10px
-}
-body {
-  position: relative;
-  margin: 0;
-  padding: 0;
-  font-family: 'Poppins', sans-serif;
-  text-align: center;
-  color: black;
-  background: #3498DB;
-}
-
-h1 {
-  display: block;
-  font-family: 'Poppins', sans-serif;
-  text-align: center;
-}
-
-h2 {
-  font-weight: 500;
-  font-size: 24px;
-}
-
-.fa-code {
-  font-size: 30px;
-  font-weight: bolder;
-  color: white;
-}
-
-h3 {
-  font-weight: 500;
-}
-
-a {
-  color: inherit;
-  text-decoration: underline;
-}
-
-p {
-  color: white;
-}
-
-.title {
-  font-weight: 600;
-  color: white;
-  font-size: 54px;
-  padding: 0 16px;
-}
-
-#generate-project {
-  padding: 15px 40px;
-  background: none;
-  border: 3px solid white;
-  border-radius: 10px;
-  font-family: 'Poppins', sans-serif;
-  font-size: 24px;
-  cursor: pointer;
-  transition: all 0.3s ease;
-}
-
-#generate-project:hover {
-  background: white;
-}
-
-#give-idea {
-  padding: 10px 20px;
-  background: none;
-  border: 3px solid white;
-  border-radius: 10px;
-  font-family: 'Poppins', sans-serif;
-  font-size: 16px;
-  cursor: pointer;
-  transition: all 0.3s ease;
-}
-
-.fa-github {
-  font-size: 20px;
-  font-weight: 600;
-}
-
-#give-idea:hover {
-  background: white;
-}
-
-#new-project {
-  margin-top: 20px;
-  font-size: 44px;
-}
-
-#project-generation {
-  font-size: 50px;
-}
-
-#project-generation span {
-  margin-top: 70px;
-}
-
-ul li {
-  list-style-type: none;
-}
\ No newline at end of file
diff --git a/projects/project-idea-generator/src/js/main.js b/projects/project-idea-generator/src/js/main.js
deleted file mode 100644
index 3b8dee5..0000000
--- a/projects/project-idea-generator/src/js/main.js
+++ /dev/null
@@ -1,15 +0,0 @@
-document.getElementById("generate-project").addEventListener(
-    "click",
-    function() {
-      let project = projects[Math.floor(Math.random() * projects.length)];
-      let link = document.getElementById('new-project')
-
-      if (project.link !== "") {
-        link.innerHTML = `
-          <a href="${project.link}" target="_blank">${project.title}</a>
-        `;
-      } else {
-        link.innerHTML = `${project.title}`;
-      };
-    }
-  );
\ No newline at end of file
diff --git a/projects/project-idea-generator/src/js/projects.js b/projects/project-idea-generator/src/js/projects.js
deleted file mode 100644
index 4637c82..0000000
--- a/projects/project-idea-generator/src/js/projects.js
+++ /dev/null
@@ -1,1514 +0,0 @@
-let projects = [
-  {
-    "title": "Build Your Own Text Editor",
-    "link": "https://viewsourcecode.org/snaptoken/kilo/index.html"
-  },
-  {
-    "title": "Let's Build a Simple Database",
-    "link": "https://cstack.github.io/db_tutorial"
-  },
-  {
-    "title": "Build a spell-checker in Clojure",
-    "link": "https://bernhardwenzel.com/articles/clojure-spellchecker/"
-  },
-  {
-    "title": "Build a Twitter Bot in Clojure",
-    "link": "https://howistart.org/posts/clojure/1/index.html"
-  },
-  {
-    "title": "Build an Intrpreter",
-    "link": "https://www.craftinginterpreters.com/"
-  },
-  {
-    "title": "Write a Shell in C",
-    "link": "https://brennan.io/2015/01/16/write-a-shell-in-c/"
-  },
-  {
-    "title": "Build your own Lisp",
-    "link": "http://www.buildyourownlisp.com/"
-  },
-  {
-    "title": "Write an OS from scratch",
-    "link": "https://github.com/tuhdo/os01"
-  },
-  {
-    "title": "How to create an OS from scratch",
-    "link": "https://github.com/cfenollosa/os-tutorial"
-  },
-  {
-    "title": "Building a Simple Chat App With Elixir and Phoenix",
-    "link": "https://sheharyar.me/blog/simple-chat-phoenix-elixir/"
-  },
-  {
-    "title": "Write a super fast link shortener with Elixir, Phoenix, and Mnesia",
-    "link": "https://medium.com/free-code-camp/how-to-write-a-super-fast-link-shortener-with-elixir-phoenix-and-mnesia-70ffa1564b3c"
-  },
-  {
-    "title": "Write your own Excel in 100 lines of F#",
-    "link": "http://tomasp.net/blog/2018/write-your-own-excel/"
-  },
-  {
-    "title": "ChatBus : build your first multi-user chat room app with Erlang/OTP",
-    "link": "https://medium.com/@kansi/chatbus-build-your-first-multi-user-chat-room-app-with-erlang-otp-b55f72064901"
-  },
-  {
-    "title": "How to Write a Jupyter Notebook Extension",
-    "link": "https://towardsdatascience.com/how-to-write-a-jupyter-notebook-extension-a63f9578a38c"
-  },
-  {
-    "title": "Build a React Native Todo Application",
-    "link": "https://egghead.io/courses/build-a-react-native-todo-application"
-  },
-  {
-    "title": "How to build a news app with React Native",
-    "link": "https://www.freecodecamp.org/news/create-a-news-app-using-react-native-ced249263627/"
-  },
-  {
-    "title": "Reverse a String",
-    "link": ""
-  },
-  {
-    "title": "RSS Feed Creator",
-    "link": ""
-  },
-  {
-    "title": "P2P File Sharing App",
-    "link": ""
-  },
-  {
-    "title": "Hotel Reservation System",
-    "link": ""
-  },
-  {
-    "title": "WYSIWG Editor",
-    "link": ""
-  },
-  {
-    "title": "CAPTCHA Maker",
-    "link": ""
-  },
-  {
-    "title": "Build the Hangman game",
-    "link": ""
-  },
-  {
-    "title": "Build a microblog with Flask",
-    "link": "https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world"
-  },
-  {
-    "title": "Mining Twitter Data with Python",
-    "link": "https://marcobonzanini.com/2015/03/02/mining-twitter-data-with-python-part-1/"
-  },
-  {
-    "title": "Build a Job Scrapping Web App",
-    "link": "https://www.freecodecamp.org/news/how-i-built-a-job-scraping-web-app-using-node-js-and-indreed-7fbba124bbdc/"
-  },
-  {
-    "title": "Create a Character voting app",
-    "link": "http://sahatyalkabov.com/create-a-character-voting-app-using-react-nodejs-mongodb-and-socketio/"
-  },
-  {
-    "title": "Build Git from Scratch",
-    "link": "http://gitlet.maryrosecook.com/docs/gitlet.html"
-  },
-  {
-    "title": "Build a TCP/IP stack in C",
-    "link": "https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/"
-  },
-  {
-    "title": "Build a Network Stack in Ruby",
-    "link": "https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b"
-  },
-  {
-    "title": "C++: Introduction to Ray Tracing: a Simple Method for Creating 3D Images",
-    "link": "https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work"
-  },
-  {
-    "title": "C++: How OpenGL works: software rendering in 500 lines of code",
-    "link": "https://github.com/ssloy/tinyrenderer/wiki"
-  },
-  {
-    "title": "C++: Raycasting engine of Wolfenstein 3D",
-    "link": "http://lodev.org/cgtutor/raycasting.html"
-  },
-  {
-    "title": "C++: Physically Based Rendering:From Theory To Implementation",
-    "link": "http://www.pbr-book.org/"
-  },
-  {
-    "title": "C++: Rasterization: a Practical Implementation",
-    "link": "https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/overview-rasterization-algorithm"
-  },
-  {
-    "title": "C# / TypeScript / JavaScript: Learning how to write a 3D soft engine from scratch in C#, TypeScript or JavaScript",
-    "link": "https://www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/"
-  },
-  {
-    "title": "Java / JavaScript: Build your own 3D renderer",
-    "link": "https://avik-das.github.io/build-your-own-raytracer/"
-  },
-  {
-    "title": "Java: How to create your own simple 3D render engine in pure Java",
-    "link": "http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html"
-  },
-  {
-    "title": "JavaScript / Pseudocode: Computer Graphics from scratch",
-    "link": "http://www.gabrielgambetta.com/computer-graphics-from-scratch/introduction.html"
-  },
-  {
-    "title": "Python: A 3D Modeller",
-    "link": "http://aosabook.org/en/500L/a-3d-modeller.html"
-  },
-  {
-    "title": "C#: How To: Augmented Reality App Tutorial for Beginners with Vuforia and Unity 3D",
-    "link": "https://www.youtube.com/watch?v=uXNjNcqW4kY"
-  },
-  {
-    "title": "C#: How To Unity ARCore",
-    "link": "https://www.youtube.com/playlist?list=PLKIKuXdn4ZMjuUAtdQfK1vwTZPQn_rgSv"
-  },
-  {
-    "title": "C#: AR Portal Tutorial with Unity",
-    "link": "https://www.youtube.com/playlist?list=PLPCqNOwwN794Gz5fzUSi1p4OqLU0HTmvn"
-  },
-  {
-    "title": "C#: How to create a Dragon in Augmented Reality in Unity ARCore",
-    "link": "https://fr-film.net/v-how-to-create-a-dragon-in-augmented-reality-in-unity-arcore-tutorial-qTSDPkPyPqs.html"
-  },
-  {
-    "title": "C#: How to Augmented Reality AR Tutorial: ARKit Portal to the Upside Down",
-    "link": "https://www.youtube.com/watch?v=Z5AmqMuNi08"
-  },
-  {
-    "title": "Python: Augmented Reality with Python and OpenCV",
-    "link": "https://bitesofcode.wordpress.com/2017/09/12/augmented-reality-with-python-and-opencv-part-1/"
-  },
-  {
-    "title": "C#: Building a BitTorrent client from scratch in C#",
-    "link": "https://www.seanjoflynn.com/research/bittorrent.html"
-  },
-  {
-    "title": "Go: Building a BitTorrent client from the ground up in Go",
-    "link": "https://blog.jse.li/posts/torrent/"
-  },
-  {
-    "title": "Nim: Writing a Bencode Parser",
-    "link": "https://xmonader.github.io/nimdays/day02_bencode.html"
-  },
-  {
-    "title": "Node.js: Write your own bittorrent client",
-    "link": "https://allenkim67.github.io/programming/2016/05/04/how-to-make-your-own-bittorrent-client.html"
-  },
-  {
-    "title": "Python: A BitTorrent client in Python 3.5",
-    "link": "http://markuseliasson.se/article/bittorrent-in-python/"
-  },
-  {
-    "title": "ATS: Functional Blockchain",
-    "link": "https://beta.observablehq.com/@galletti94/functional-blockchain"
-  },
-  {
-    "title": "C#: Programming The Blockchain in C#",
-    "link": "https://programmingblockchain.gitbooks.io/programmingblockchain/"
-  },
-  {
-    "title": "Crystal: Write your own blockchain and PoW algorithm using Crystal",
-    "link": "https://medium.com/@bradford_hamilton/write-your-own-blockchain-and-pow-algorithm-using-crystal-d53d5d9d0c52"
-  },
-  {
-    "title": "Go: Building Blockchain in Go",
-    "link": "https://jeiwan.cc/posts/building-blockchain-in-go-part-1/"
-  },
-  {
-    "title": "Go: Code your own blockchain in less than 200 lines of Go",
-    "link": "https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc"
-  },
-  {
-    "title": "Java: Creating Your First Blockchain with Java",
-    "link": "https://medium.com/programmers-blockchain/create-simple-blockchain-java-tutorial-from-scratch-6eeed3cb03fa"
-  },
-  {
-    "title": "JavaScript: A cryptocurrency implementation in less than 1500 lines of code",
-    "link": "https://github.com/conradoqg/naivecoin"
-  },
-  {
-    "title": "JavaScript: Build your own Blockchain in JavaScript",
-    "link": "https://github.com/nambrot/blockchain-in-js"
-  },
-  {
-    "title": "JavaScript: Learn & Build a JavaScript Blockchain",
-    "link": "https://medium.com/digital-alchemy-holdings/learn-build-a-javascript-blockchain-part-1-ca61c285821e"
-  },
-  {
-    "title": "JavaScript: Creating a blockchain with JavaScript",
-    "link": "https://github.com/SavjeeTutorials/SavjeeCoin"
-  },
-  {
-    "title": "JavaScript: How To Launch Your Own Production-Ready Cryptocurrency",
-    "link": "https://hackernoon.com/how-to-launch-your-own-production-ready-cryptocurrency-ab97cb773371"
-  },
-  {
-    "title": "JavaScript: Writing a Blockchain in Node.js",
-    "link": "https://www.jsmonday.dev/articles/34/writing-a-blockchain-in-node-js"
-  },
-  {
-    "title": "Kotlin: Let’s implement a cryptocurrency in Kotlin",
-    "link": "https://medium.com/@vasilyf/lets-implement-a-cryptocurrency-in-kotlin-part-1-blockchain-8704069f8580"
-  },
-  {
-    "title": "Python: Learn Blockchains by Building One",
-    "link": "https://hackernoon.com/learn-blockchains-by-building-one-117428612f46"
-  },
-  {
-    "title": "Python: Build your own blockchain: a Python tutorial",
-    "link": "http://ecomunsing.com/build-your-own-blockchain"
-  },
-  {
-    "title": "Python: A Practical Introduction to Blockchain with Python",
-    "link": "http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/"
-  },
-  {
-    "title": "Python: Let’s Build the Tiniest Blockchain",
-    "link": "https://medium.com/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b"
-  },
-  {
-    "title": "Ruby: Programming Blockchains Step-by-Step (Manuscripts Book Edition)",
-    "link": "https://github.com/yukimotopress/programming-blockchains-step-by-step"
-  },
-  {
-    "title": "Scala: How to build a simple actor-based blockchain",
-    "link": "https://medium.freecodecamp.org/how-to-build-a-simple-actor-based-blockchain-aac1e996c177"
-  },
-  {
-    "title": "TypeScript: Naivecoin: a tutorial for building a cryptocurrency",
-    "link": "https://lhartikk.github.io/"
-  },
-  {
-    "title": "TypeScript: NaivecoinStake: a tutorial for building a cryptocurrency with the Proof of Stake consensus",
-    "link": "https://naivecoinstake.learn.uno/"
-  },
-  {
-    "title": "Haskell: Roll your own IRC bot",
-    "link": "https://wiki.haskell.org/Roll_your_own_IRC_bot"
-  },
-  {
-    "title": "Java: How To Make a Scary Russian Twitter Bot With Java",
-    "link": "https://medium.com/@SeloSlav/how-to-make-a-scary-russian-twitter-bot-with-java-b7b62768a3ac"
-  },
-  {
-    "title": "Node.js: Creating a Simple Facebook Messenger AI Bot with API.ai in Node.js",
-    "link": "https://tutorials.botsfloor.com/creating-a-simple-facebook-messenger-ai-bot-with-api-ai-in-node-js-50ae2fa5c80d"
-  },
-  {
-    "title": "Node.js: How to make a responsive telegram bot",
-    "link": "https://www.sohamkamani.com/blog/2016/09/21/making-a-telegram-bot/"
-  },
-  {
-    "title": "Node.js: Create a Discord bot",
-    "link": "https://discordjs.guide/"
-  },
-  {
-    "title": "Node.js: gifbot - Building a GitHub App",
-    "link": "https://blog.scottlogic.com/2017/05/22/gifbot-github-integration.html"
-  },
-  {
-    "title": "Node.js: Building A Simple AI Chatbot With Web Speech API And Node.js",
-    "link": "https://www.smashingmagazine.com/2017/08/ai-chatbot-web-speech-api-node-js/"
-  },
-  {
-    "title": "Python: Chatbot Fundamentals: An interactive guide to writing bots in Python",
-    "link": "https://apps.worldwritable.com/tutorials/chatbot/"
-  },
-  {
-    "title": "Python: How to Build Your First Slack Bot with Python",
-    "link": "https://www.fullstackpython.com/blog/build-first-slack-bot-python.html"
-  },
-  {
-    "title": "Python: How to build a Slack Bot with Python using Slack Events API & Django under 20 minute",
-    "link": "https://medium.com/freehunch/how-to-build-a-slack-bot-with-python-using-slack-events-api-django-under-20-minute-code-included-269c3a9bf64e"
-  },
-  {
-    "title": "Python: Build a Reddit Bot",
-    "link": "http://pythonforengineers.com/build-a-reddit-bot-part-1/"
-  },
-  {
-    "title": "Python: How To Make A Reddit Bot",
-    "link": "https://www.youtube.com/watch?v=krTUf7BpTc0"
-  },
-  {
-    "title": "Python: How To Create a Telegram Bot Using Python",
-    "link": "https://khashtamov.com/en/how-to-create-a-telegram-bot-using-python/"
-  },
-  {
-    "title": "Python: Create a Twitter Bot in Python Using Tweepy",
-    "link": "https://medium.freecodecamp.org/creating-a-twitter-bot-in-python-with-tweepy-ac524157a607"
-  },
-  {
-    "title": "Python: Creating Reddit Bot with Python & PRAW",
-    "link": "https://www.youtube.com/playlist?list=PLIFBTFgFpoJ9vmYYlfxRFV6U_XhG-4fpP"
-  },
-  {
-    "title": "R: Build A Cryptocurrency Trading Bot with R",
-    "link": "https://towardsdatascience.com/build-a-cryptocurrency-trading-bot-with-r-1445c429e1b1"
-  },
-  {
-    "title": "Rust: A bot for Starcraft in Rust, C or any other language",
-    "link": "https://habr.com/en/post/436254/"
-  },
-  {
-    "title": "C: Rewriting the cat command from scratch",
-    "link": "https://learnto.computer/screencasts/bsd-cat"
-  },
-  {
-    "title": "Go: Visualize your local git contributions with Go",
-    "link": "https://flaviocopes.com/go-git-contributions/"
-  },
-  {
-    "title": "Go: Build a command line app with Go: lolcat",
-    "link": "https://flaviocopes.com/go-tutorial-lolcat/"
-  },
-  {
-    "title": "Go: Building a cli command with Go: cowsay",
-    "link": "https://flaviocopes.com/go-tutorial-cowsay/"
-  },
-  {
-    "title": "Go: Go CLI tutorial: fortune clone",
-    "link": "https://flaviocopes.com/go-tutorial-fortune/"
-  },
-  {
-    "title": "Nim: Writing a stow alternative to manage dotfiles",
-    "link": "https://xmonader.github.io/nimdays/day06_nistow.html"
-  },
-  {
-    "title": "C: Let's Build a Simple Database",
-    "link": "https://cstack.github.io/db_tutorial/"
-  },
-  {
-    "title": "C++: Implementing a Key-Value Store",
-    "link": "http://codecapsule.com/2012/11/07/ikvs-implementing-a-key-value-store-table-of-contents/"
-  },
-  {
-    "title": "C#: Build Your Own Database",
-    "link": "https://www.codeproject.com/Articles/1029838/Build-Your-Own-Database"
-  },
-  {
-    "title": "Clojure: An Archaeology-Inspired Database",
-    "link": "http://aosabook.org/en/500L/an-archaeology-inspired-database.html"
-  },
-  {
-    "title": "Crystal: Why you should build your own NoSQL Database",
-    "link": "https://medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5"
-  },
-  {
-    "title": "JavaScript: Dagoba: an in-memory graph database",
-    "link": "http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html"
-  },
-  {
-    "title": "Python: DBDB: Dog Bed Database",
-    "link": "http://aosabook.org/en/500L/dbdb-dog-bed-database.html"
-  },
-  {
-    "title": "Python: Write your own miniature Redis with Python",
-    "link": "http://charlesleifer.com/blog/building-a-simple-redis-server-with-python/"
-  },
-  {
-    "title": "C: Linux containers in 500 lines of code",
-    "link": "https://blog.lizzie.io/linux-containers-in-500-loc.html"
-  },
-  {
-    "title": "Go: Build Your Own Container Using Less than 100 Lines of Go",
-    "link": "https://www.infoq.com/articles/build-a-container-golang"
-  },
-  {
-    "title": "Go: Building a container from scratch in Go",
-    "link": "https://www.youtube.com/watch?v=8fi7uSYlOdc"
-  },
-  {
-    "title": "Python: A workshop on Linux containers: Rebuild Docker from Scratch",
-    "link": "https://github.com/Fewbytes/rubber-docker"
-  },
-  {
-    "title": "Python: A proof-of-concept imitation of Docker, written in 100% Python",
-    "link": "https://github.com/tonybaloney/mocker"
-  },
-  {
-    "title": "Shell: Docker implemented in around 100 lines of bash",
-    "link": "https://github.com/p8952/bocker"
-  },
-  {
-    "title": "C: Virtual machine in C",
-    "link": "https://blog.felixangell.com/virtual-machine-in-c/"
-  },
-  {
-    "title": "C: Write your Own Virtual Machine",
-    "link": "https://justinmeiners.github.io/lc3-vm/"
-  },
-  {
-    "title": "C: Writing a Game Boy emulator, Cinoop",
-    "link": "https://cturt.github.io/cinoop.html"
-  },
-  {
-    "title": "C++: How to write an emulator (CHIP-8 interpreter)",
-    "link": "http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/"
-  },
-  {
-    "title": "C++: Emulation tutorial (CHIP-8 interpreter)",
-    "link": "http://www.codeslinger.co.uk/pages/projects/chip8.html"
-  },
-  {
-    "title": "C++: Emulation tutorial (GameBoy emulator)",
-    "link": "http://www.codeslinger.co.uk/pages/projects/gameboy.html"
-  },
-  {
-    "title": "C++: Emulation tutorial (Master System emulator)",
-    "link": "http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html"
-  },
-  {
-    "title": "Common Lisp: CHIP-8 in Common Lisp",
-    "link": "http://stevelosh.com/blog/2016/12/chip8-cpu/"
-  },
-  {
-    "title": "JavaScript: GameBoy Emulation in JavaScript",
-    "link": "http://imrannazar.com/GameBoy-Emulation-in-JavaScript"
-  },
-  {
-    "title": "Python: Emulation Basics: Write your own Chip 8 Emulator/Interpreter",
-    "link": "http://omokute.blogspot.com.br/2012/06/emulation-basics-write-your-own-chip-8.html"
-  },
-  {
-    "title": "JavaScript: WTF is JSX (Let's Build a JSX Renderer)",
-    "link": "https://jasonformat.com/wtf-is-jsx/"
-  },
-  {
-    "title": "JavaScript: A DIY guide to build your own React",
-    "link": "https://github.com/hexacta/didact"
-  },
-  {
-    "title": "JavaScript: Reverse Engineering React",
-    "link": "https://vimeo.com/album/3930691"
-  },
-  {
-    "title": "JavaScript: Building React From Scratch",
-    "link": "https://www.youtube.com/watch?v=_MAD4Oly9yg"
-  },
-  {
-    "title": "JavaScript: Building Your Own React Clone in Five Easy Steps",
-    "link": "https://blog.javascripting.com/2016/10/05/building-your-own-react-clone-in-five-easy-steps/"
-  },
-  {
-    "title": "JavaScript: Gooact: React in 160 lines of JavaScript",
-    "link": "https://medium.com/@sweetpalma/gooact-react-in-160-lines-of-javascript-44e0742ad60f"
-  },
-  {
-    "title": "JavaScript: React Internals",
-    "link": "http://www.mattgreer.org/articles/react-internals-part-one-basic-rendering/"
-  },
-  {
-    "title": "JavaScript: Learn how React Reconciler package works by building your own lightweight React DOM",
-    "link": "https://hackernoon.com/learn-you-some-custom-react-renderers-aed7164a4199"
-  },
-  {
-    "title": "JavaScript: Build Yourself a Redux",
-    "link": "https://zapier.com/engineering/how-to-build-redux/"
-  },
-  {
-    "title": "JavaScript: Let’s Write Redux!",
-    "link": "https://www.jamasoftware.com/blog/lets-write-redux/"
-  },
-  {
-    "title": "JavaScript: Redux: Implementing Store from Scratch",
-    "link": "https://egghead.io/lessons/react-redux-implementing-store-from-scratch"
-  },
-  {
-    "title": "JavaScript: Build Your own Simplified AngularJS in 200 Lines of JavaScript",
-    "link": "https://blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/"
-  },
-  {
-    "title": "JavaScript: Make Your Own AngularJS",
-    "link": "http://teropa.info/blog/2013/11/03/make-your-own-angular-part-1-scopes-and-digest.html"
-  },
-  {
-    "title": "JavaScript: How to write your own Virtual DOM",
-    "link": "https://medium.com/@deathmood/how-to-write-your-own-virtual-dom-ee74acc13060"
-  },
-  {
-    "title": "JavaScript: Building a frontend framework, from scratch, with components (templating, state, VDOM)",
-    "link": "https://mfrachet.github.io/create-frontend-framework/"
-  },
-  {
-    "title": "JavaScript: Build your own React",
-    "link": "https://pomb.us/build-your-own-react/"
-  },
-  {
-    "title": "C: Handmade Hero",
-    "link": "https://handmadehero.org/"
-  },
-  {
-    "title": "C: How to Program an NES game in C",
-    "link": "https://nesdoug.com/"
-  },
-  {
-    "title": "C: Chess Engine In C",
-    "link": "https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg"
-  },
-  {
-    "title": "C: Let's Make: Dangerous Dave",
-    "link": "https://www.youtube.com/playlist?list=PLSkJey49cOgTSj465v2KbLZ7LMn10bCF9"
-  },
-  {
-    "title": "C: Learn Video Game Programming in C",
-    "link": "https://www.youtube.com/playlist?list=PLT6WFYYZE6uLMcPGS3qfpYm7T_gViYMMt"
-  },
-  {
-    "title": "C: Coding A Sudoku Solver in C",
-    "link": "https://www.youtube.com/playlist?list=PLkTXsX7igf8edTYU92nU-f5Ntzuf-RKvW"
-  },
-  {
-    "title": "C: Coding a Rogue/Nethack RPG in C",
-    "link": "https://www.youtube.com/playlist?list=PLkTXsX7igf8erbWGYT4iSAhpnJLJ0Nk5G"
-  },
-  {
-    "title": "C: On Tetris and Reimplementation",
-    "link": "https://brennan.io/2015/06/12/tetris-reimplementation/"
-  },
-  {
-    "title": "C++: Breakout",
-    "link": "https://learnopengl.com/In-Practice/2D-Game/Breakout"
-  },
-  {
-    "title": "C++: Beginning Game Programming v2.0",
-    "link": "http://lazyfoo.net/tutorials/SDL/"
-  },
-  {
-    "title": "C++: Tetris tutorial in C++ platform independent focused in game logic for beginners",
-    "link": "http://javilop.com/gamedev/tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners/"
-  },
-  {
-    "title": "C++: Remaking Cavestory in C++",
-    "link": "https://www.youtube.com/watch?v=ETvApbD5xRo&list=PLNOBk_id22bw6LXhrGfhVwqQIa-M2MsLa"
-  },
-  {
-    "title": "C++: Reconstructing Cave Story",
-    "link": "https://www.youtube.com/playlist?list=PL006xsVEsbKjSKBmLu1clo85yLrwjY67X"
-  },
-  {
-    "title": "C++: Space Invaders from Scratch",
-    "link": "http://nicktasios.nl/posts/space-invaders-from-scratch-part-1.html"
-  },
-  {
-    "title": "C#: Learn C# by Building a Simple RPG",
-    "link": "http://scottlilly.com/learn-c-by-building-a-simple-rpg-index/"
-  },
-  {
-    "title": "C#: Creating a Roguelike Game in C#",
-    "link": "https://roguesharp.wordpress.com/"
-  },
-  {
-    "title": "C#: Build a C#/WPF RPG",
-    "link": "https://scottlilly.com/build-a-cwpf-rpg/"
-  },
-  {
-    "title": "Go: Games With Go",
-    "link": "https://gameswithgo.org/"
-  },
-  {
-    "title": "Java: 3D Game Development with LWJGL 3",
-    "link": "https://lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/"
-  },
-  {
-    "title": "JavaScript: 2D breakout game using Phaser",
-    "link": "https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser"
-  },
-  {
-    "title": "JavaScript: How to Make Flappy Bird in HTML5 With Phaser",
-    "link": "http://www.lessmilk.com/tutorial/flappy-bird-phaser-1"
-  },
-  {
-    "title": "JavaScript: Developing Games with React, Redux, and SVG",
-    "link": "https://auth0.com/blog/developing-games-with-react-redux-and-svg-part-1/"
-  },
-  {
-    "title": "JavaScript: Build your own 8-Ball Pool game from scratch",
-    "link": "https://www.youtube.com/watch?v=aXwCrtAo4Wc"
-  },
-  {
-    "title": "JavaScript: How to Make Your First Roguelike",
-    "link": "https://gamedevelopment.tutsplus.com/tutorials/how-to-make-your-first-roguelike--gamedev-13677"
-  },
-  {
-    "title": "JavaScript: Think like a programmer: How to build Snake using only JavaScript, HTML & CSS",
-    "link": "https://medium.freecodecamp.org/think-like-a-programmer-how-to-build-snake-using-only-javascript-html-and-css-7b1479c3339e"
-  },
-  {
-    "title": "Lua: BYTEPATH",
-    "link": "https://github.com/SSYGEN/blog/issues/30"
-  },
-  {
-    "title": "Python: Developing Games With PyGame",
-    "link": "https://pythonprogramming.net/pygame-python-3-part-1-intro/"
-  },
-  {
-    "title": "Python: Making Games with Python & Pygame",
-    "link": "https://inventwithpython.com/makinggames.pdf [pdf]"
-  },
-  {
-    "title": "Python: The Complete Roguelike Tutorial",
-    "link": "https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb"
-  },
-  {
-    "title": "Python: Roguelike Tutorial Revised",
-    "link": "http://rogueliketutorials.com/"
-  },
-  {
-    "title": "Ruby: Developing Games With Ruby",
-    "link": "https://leanpub.com/developing-games-with-ruby/read"
-  },
-  {
-    "title": "Ruby: Ruby Snake",
-    "link": "https://www.diatomenterprises.com/gamedev-on-ruby-why-not/"
-  },
-  {
-    "title": "Rust: Adventures in Rust: A Basic 2D Game",
-    "link": "https://a5huynh.github.io/posts/2018/adventures-in-rust/"
-  },
-  {
-    "title": "Rust: Roguelike Tutorial in Rust + tcod",
-    "link": "https://tomassedovic.github.io/roguelike-tutorial/"
-  },
-  {
-    "title": "Haskell: Reimplementing “git clone” in Haskell from the bottom up",
-    "link": "http://stefan.saasen.me/articles/git-clone-in-haskell-from-the-bottom-up/"
-  },
-  {
-    "title": "JavaScript: Gitlet",
-    "link": "http://gitlet.maryrosecook.com/docs/gitlet.html"
-  },
-  {
-    "title": "JavaScript: Build GIT - Learn GIT",
-    "link": "https://kushagragour.in/blog/2014/01/build-git-learn-git/"
-  },
-  {
-    "title": "Python: Just enough of a Git client to create a repo, commit, and push itself to GitHub",
-    "link": "https://benhoyt.com/writings/pygit/"
-  },
-  {
-    "title": "Python: Write yourself a Git!",
-    "link": "https://wyag.thb.lt/"
-  },
-  {
-    "title": "Ruby: Rebuilding Git in Ruby",
-    "link": "https://robots.thoughtbot.com/rebuilding-git-in-ruby"
-  },
-  {
-    "title": "C: Beej's Guide to Network Programming",
-    "link": "http://beej.us/guide/bgnet/"
-  },
-  {
-    "title": "C: Let's code a TCP/IP stack",
-    "link": "http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/"
-  },
-  {
-    "title": "Ruby: How to build a network stack in Ruby",
-    "link": "https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b"
-  },
-  {
-    "title": "C#: Neural Network OCR",
-    "link": "https://www.codeproject.com/Articles/11285/Neural-Network-OCR"
-  },
-  {
-    "title": "F#: Building Neural Networks in F#",
-    "link": "https://towardsdatascience.com/building-neural-networks-in-f-part-1-a2832ae972e6"
-  },
-  {
-    "title": "Go: Build a multilayer perceptron with Golang",
-    "link": "https://made2591.github.io/posts/neuralnetwork"
-  },
-  {
-    "title": "Go: How to build a simple artificial neural network with Go",
-    "link": "https://sausheong.github.io/posts/how-to-build-a-simple-artificial-neural-network-with-go/"
-  },
-  {
-    "title": "Go: Building a Neural Net from Scratch in Go",
-    "link": "https://datadan.io/blog/neural-net-with-go"
-  },
-  {
-    "title": "JavaScript / Java: Neural Networks - The Nature of Code",
-    "link": "https://www.youtube.com/playlist?list=PLRqwX-V7Uu6aCibgK1PTWWu9by6XFdCfh"
-  },
-  {
-    "title": "JavaScript: Neural Network implementation in JavaScript, by an example",
-    "link": "https://franpapers.com/en/machine-learning-ai-en/2017-neural-network-implementation-in-javascript-by-an-example/"
-  },
-  {
-    "title": "JavaScript: Neural networks from scratch for JavaScript linguists (Part1 — The Perceptron)",
-    "link": "https://hackernoon.com/neural-networks-from-scratch-for-javascript-linguists-part1-the-perceptron-632a4d1fbad2"
-  },
-  {
-    "title": "Python: A Neural Network in 11 lines of Python",
-    "link": "https://iamtrask.github.io/2015/07/12/basic-python-network/"
-  },
-  {
-    "title": "Python: Implement a Neural Network from Scratch",
-    "link": "https://victorzhou.com/blog/intro-to-neural-networks/"
-  },
-  {
-    "title": "Python: Optical Character Recognition (OCR)",
-    "link": "http://aosabook.org/en/500L/optical-character-recognition-ocr.html"
-  },
-  {
-    "title": "Python: Traffic signs classification with a convolutional network",
-    "link": "https://navoshta.com/traffic-signs-classification/"
-  },
-  {
-    "title": "Python: Generate Music using LSTM Neural Network in Keras",
-    "link": "https://towardsdatascience.com/how-to-generate-music-using-a-lstm-neural-network-in-keras-68786834d4c5"
-  },
-  {
-    "title": "Python: An Introduction to Convolutional Neural Networks",
-    "link": "https://victorzhou.com/blog/intro-to-cnns-part-1/"
-  },
-  {
-    "title": "Assembly: Writing a Tiny x86 Bootloader",
-    "link": "http://joebergeron.io/posts/post_two.html"
-  },
-  {
-    "title": "Assembly: Baking Pi – Operating Systems Development",
-    "link": "http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html"
-  },
-  {
-    "title": "C: Building a software and hardware stack for a simple computer from scratch",
-    "link": "https://www.youtube.com/watch?v=ZjwvMcP3Nf0&list=PLU94OURih-CiP4WxKSMt3UcwMSDM3aTtX"
-  },
-  {
-    "title": "C: Operating Systems: From 0 to 1",
-    "link": "https://tuhdo.github.io/os01/"
-  },
-  {
-    "title": "C: The little book about OS development",
-    "link": "https://littleosbook.github.io/"
-  },
-  {
-    "title": "C: Roll your own toy UNIX-clone OS",
-    "link": "http://jamesmolloy.co.uk/tutorial_html/"
-  },
-  {
-    "title": "C: Kernel 101 – Let’s write a Kernel",
-    "link": "https://arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel"
-  },
-  {
-    "title": "C: Kernel 201 – Let’s write a Kernel with keyboard and screen support",
-    "link": "https://arjunsreedharan.org/post/99370248137/kernel-201-lets-write-a-kernel-with-keyboard"
-  },
-  {
-    "title": "C: Build a minimal multi-tasking kernel for ARM from scratch",
-    "link": "https://github.com/jserv/mini-arm-os"
-  },
-  {
-    "title": "C: How to create an OS from scratch",
-    "link": "https://github.com/cfenollosa/os-tutorial"
-  },
-  {
-    "title": "C: Malloc tutorial",
-    "link": "https://danluu.com/malloc-tutorial/"
-  },
-  {
-    "title": "C: Hack the virtual memory",
-    "link": "https://blog.holbertonschool.com/hack-the-virtual-memory-c-strings-proc/"
-  },
-  {
-    "title": "C: Learning operating system development using Linux kernel and Raspberry Pi",
-    "link": "https://github.com/s-matyukevich/raspberry-pi-os"
-  },
-  {
-    "title": "C: Operating systems development for Dummies",
-    "link": "https://medium.com/@lduck11007/operating-systems-development-for-dummies-3d4d786e8ac"
-  },
-  {
-    "title": "C++: Write your own Operating System",
-    "link": "https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M"
-  },
-  {
-    "title": "C++: Writing a Bootloader",
-    "link": "http://3zanders.co.uk/2017/10/13/writing-a-bootloader/"
-  },
-  {
-    "title": "Rust: Writing an OS in Rust",
-    "link": "https://os.phil-opp.com/"
-  },
-  {
-    "title": "C: Video Game Physics Tutorial",
-    "link": "https://www.toptal.com/game/video-game-physics-part-i-an-introduction-to-rigid-body-dynamics"
-  },
-  {
-    "title": "C++: Game physics series by Allen Chou",
-    "link": "http://allenchou.net/game-physics-series/"
-  },
-  {
-    "title": "C++: How to Create a Custom Physics Engine",
-    "link": "https://gamedevelopment.tutsplus.com/series/how-to-create-a-custom-physics-engine--gamedev-12715"
-  },
-  {
-    "title": "C++: 3D Physics Engine Tutorial",
-    "link": "https://www.youtube.com/playlist?list=PLEETnX-uPtBXm1KEr_2zQ6K_0hoGH6JJ0"
-  },
-  {
-    "title": "JavaScript: Build your own basic physics engine in JavaScript",
-    "link": "https://www.graphitedigital.com/blog/build-your-own-basic-physics-engine-in-javascript"
-  },
-  {
-    "title": "JavaScript: How Physics Engines Work",
-    "link": "http://buildnewgames.com/gamephysics/"
-  },
-  {
-    "title": "JavaScript: Broad Phase Collision Detection Using Spatial Partitioning",
-    "link": "http://buildnewgames.com/broad-phase-collision-detection/"
-  },
-  {
-    "title": "JavaScript: Build a simple 2D physics engine for JavaScript games",
-    "link": "https://www.ibm.com/developerworks/library/wa-build2dphysicsengine/index.html"
-  },
-  {
-    "title": "(any): mal - Make a Lisp",
-    "link": "https://github.com/kanaka/mal#mal---make-a-lisp"
-  },
-  {
-    "title": "Assembly: Jonesforth",
-    "link": "https://github.com/nornagon/jonesforth/blob/master/jonesforth.S"
-  },
-  {
-    "title": "C: Baby's First Garbage Collector",
-    "link": "http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/"
-  },
-  {
-    "title": "C: Build Your Own Lisp: Learn C and build your own programming language in 1000 lines of code",
-    "link": "http://www.buildyourownlisp.com/"
-  },
-  {
-    "title": "C: Writing a Simple Garbage Collector in C",
-    "link": "http://maplant.com/gc.html"
-  },
-  {
-    "title": "C: C interpreter that interprets itself.",
-    "link": "https://github.com/lotabout/write-a-C-interpreter"
-  },
-  {
-    "title": "C: A C & x86 version of the \"Let's Build a Compiler\" by Jack Crenshaw",
-    "link": "https://github.com/lotabout/Let-s-build-a-compiler"
-  },
-  {
-    "title": "C++: Writing Your Own Toy Compiler Using Flex",
-    "link": "https://gnuu.org/2009/09/18/writing-your-own-toy-compiler/"
-  },
-  {
-    "title": "C++: How to Create a Compiler",
-    "link": "https://www.youtube.com/watch?v=eF9qWbuQLuw"
-  },
-  {
-    "title": "C++: Kaleidoscope: Implementing a Language with LLVM",
-    "link": "https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html"
-  },
-  {
-    "title": "F#: Understanding Parser Combinators",
-    "link": "https://fsharpforfunandprofit.com/posts/understanding-parser-combinators/"
-  },
-  {
-    "title": "Elixir: Demystifying compilers by writing your own",
-    "link": "https://www.youtube.com/watch?v=zMJYoYwOCd4"
-  },
-  {
-    "title": "Go: The Super Tiny Compiler",
-    "link": "https://github.com/hazbo/the-super-tiny-compiler"
-  },
-  {
-    "title": "Go: Lexical Scanning in Go",
-    "link": "https://www.youtube.com/watch?v=HxaD_trXwRE"
-  },
-  {
-    "title": "Haskell: Let's Build a Compiler",
-    "link": "https://g-ford.github.io/cradle/"
-  },
-  {
-    "title": "Haskell: Write You a Haskell",
-    "link": "http://dev.stephendiehl.com/fun/"
-  },
-  {
-    "title": "Haskell: Write Yourself a Scheme in 48 Hours",
-    "link": "https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours"
-  },
-  {
-    "title": "Haskell: Write You A Scheme",
-    "link": "https://www.wespiser.com/writings/wyas/home.html"
-  },
-  {
-    "title": "Java: Crafting interpreters: A handbook for making programming languages",
-    "link": "http://www.craftinginterpreters.com/"
-  },
-  {
-    "title": "Java: Creating JVM Language",
-    "link": "http://jakubdziworski.github.io/categories.html#Enkel-ref"
-  },
-  {
-    "title": "JavaScript: The Super Tiny Compiler",
-    "link": "https://github.com/jamiebuilds/the-super-tiny-compiler"
-  },
-  {
-    "title": "JavaScript: The Super Tiny Interpreter",
-    "link": "https://github.com/keyanzhang/the-super-tiny-interpreter"
-  },
-  {
-    "title": "JavaScript: Little Lisp interpreter",
-    "link": "https://maryrosecook.com/blog/post/little-lisp-interpreter"
-  },
-  {
-    "title": "JavaScript: How to implement a programming language in JavaScript",
-    "link": "http://lisperator.net/pltut/"
-  },
-  {
-    "title": "OCaml: Writing a C Compiler",
-    "link": "https://norasandler.com/2017/11/29/Write-a-Compiler.html"
-  },
-  {
-    "title": "OCaml: Writing a Lisp, the series",
-    "link": "https://bernsteinbear.com/blog/lisp/"
-  },
-  {
-    "title": "Pascal: Let's Build a Compiler",
-    "link": "https://compilers.iecc.com/crenshaw/"
-  },
-  {
-    "title": "Python: A Python Interpreter Written in Python",
-    "link": "http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html"
-  },
-  {
-    "title": "Python: lisp.py: Make your own Lisp interpreter",
-    "link": "http://khamidou.com/compilers/lisp.py/"
-  },
-  {
-    "title": "Python: Simple Iterator-based Parsing",
-    "link": "http://effbot.org/zone/simple-iterator-parser.htm"
-  },
-  {
-    "title": "Python: Simple Top-Down Parsing in Python",
-    "link": "http://effbot.org/zone/simple-top-down-parsing.htm"
-  },
-  {
-    "title": "Python: How to Write a Lisp Interpreter in Python",
-    "link": "http://norvig.com/lispy.html"
-  },
-  {
-    "title": "Python: Let’s Build A Simple Interpreter",
-    "link": "https://ruslanspivak.com/lsbasi-part1/"
-  },
-  {
-    "title": "Python: Make Your Own Simple Interpreted Programming Language",
-    "link": "https://www.youtube.com/watch?v=dj9CBS3ikGA&list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD&index=1"
-  },
-  {
-    "title": "Racket: Beautiful Racket: How to make your own programming languages with Racket",
-    "link": "https://beautifulracket.com/"
-  },
-  {
-    "title": "Ruby: A Compiler From Scratch",
-    "link": "https://www.destroyallsoftware.com/screencasts/catalog/a-compiler-from-scratch"
-  },
-  {
-    "title": "Ruby: Markdown compiler from scratch in Ruby",
-    "link": "https://blog.beezwax.net/2017/07/07/writing-a-markdown-compiler/"
-  },
-  {
-    "title": "Rust: So You Want to Build a Language VM",
-    "link": "https://blog.subnetzero.io/post/building-language-vm-part-00/"
-  },
-  {
-    "title": "Rust: Learning Parser Combinators With Rust",
-    "link": "https://bodil.lol/parser-combinators/"
-  },
-  {
-    "title": "Swift: Building a LISP from scratch with Swift",
-    "link": "https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/"
-  },
-  {
-    "title": "TypeScript: Build your own WebAssembly Compiler",
-    "link": "https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html"
-  },
-  {
-    "title": "C: A Regular Expression Matcher",
-    "link": "https://www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html"
-  },
-  {
-    "title": "C: Regular Expression Matching Can Be Simple And Fast",
-    "link": "https://swtch.com/~rsc/regexp/regexp1.html"
-  },
-  {
-    "title": "JavaScript: Build a Regex Engine in Less than 40 Lines of Code",
-    "link": "https://nickdrane.com/build-your-own-regex/"
-  },
-  {
-    "title": "JavaScript: How to implement regular expressions in functional javascript using derivatives",
-    "link": "http://dpk.io/dregs/toydregs"
-  },
-  {
-    "title": "JavaScript: Implementing a Regular Expression Engine",
-    "link": "https://deniskyashif.com/2019/02/17/implementing-a-regular-expression-engine/"
-  },
-  {
-    "title": "Perl: How Regexes Work",
-    "link": "https://perl.plover.com/Regex/article.html"
-  },
-  {
-    "title": "Scala: No Magic: Regular Expressions",
-    "link": "https://rcoh.svbtle.com/no-magic-regular-expressions"
-  },
-  {
-    "title": "CSS: A search engine in CSS",
-    "link": "https://stories.algolia.com/a-search-engine-in-css-b5ec4e902e97"
-  },
-  {
-    "title": "Python: Building a search engine using Redis and redis-py",
-    "link": "http://www.dr-josiah.com/2010/07/building-search-engine-using-redis-and.html"
-  },
-  {
-    "title": "Python: Building a Vector Space Indexing Engine in Python",
-    "link": "https://boyter.org/2010/08/build-vector-space-search-engine-python/"
-  },
-  {
-    "title": "Python: Building A Python-Based Search Engine",
-    "link": "https://www.youtube.com/watch?v=cY7pE7vX6MU"
-  },
-  {
-    "title": "Python: Making text search learn from feedback",
-    "link": "https://medium.com/filament-ai/making-text-search-learn-from-feedback-4fe210fd87b0"
-  },
-  {
-    "title": "Python: Finding Important Words in Text Using TF-IDF",
-    "link": "https://stevenloria.com/tf-idf/"
-  },
-  {
-    "title": "C: Tutorial - Write a Shell in C",
-    "link": "https://brennan.io/2015/01/16/write-a-shell-in-c/"
-  },
-  {
-    "title": "C: Let's build a shell!",
-    "link": "https://github.com/kamalmarhubi/shell-workshop"
-  },
-  {
-    "title": "C: Writing a UNIX Shell",
-    "link": "https://indradhanush.github.io/blog/writing-a-unix-shell-part-1/"
-  },
-  {
-    "title": "C: Build Your Own Shell",
-    "link": "https://github.com/tokenrove/build-your-own-shell"
-  },
-  {
-    "title": "Go: Writing a simple shell in Go",
-    "link": "https://sj14.gitlab.io/post/2018-07-01-go-unix-shell/"
-  },
-  {
-    "title": "Ruby: A Unix Shell in Ruby",
-    "link": "https://www.jstorimer.com/blogs/workingwithcode/7766107-a-unix-shell-in-ruby"
-  },
-  {
-    "title": "Rust: Build Your Own Shell using Rust",
-    "link": "https://www.joshmcguigan.com/blog/build-your-own-shell-rust/"
-  },
-  {
-    "title": "JavaScript: JavaScript template engine in just 20 lines",
-    "link": "http://krasimirtsonev.com/blog/article/Javascript-template-engine-in-just-20-line"
-  },
-  {
-    "title": "JavaScript: Understanding JavaScript Micro-Templating",
-    "link": "https://medium.com/wdstack/understanding-javascript-micro-templating-f37a37b3b40e"
-  },
-  {
-    "title": "Python: Approach: Building a toy template engine in Python",
-    "link": "http://alexmic.net/building-a-template-engine/"
-  },
-  {
-    "title": "Python: A Template Engine",
-    "link": "http://aosabook.org/en/500L/a-template-engine.html"
-  },
-  {
-    "title": "Ruby: How to write a template engine in less than 30 lines of code",
-    "link": "http://bits.citrusbyte.com/how-to-write-a-template-library/"
-  },
-  {
-    "title": "C: Build Your Own Text Editor",
-    "link": "https://viewsourcecode.org/snaptoken/kilo/"
-  },
-  {
-    "title": "C++: Designing a Simple Text Editor",
-    "link": "http://www.fltk.org/doc-1.1/editor.html"
-  },
-  {
-    "title": "Python: Python Tutorial: Make Your Own Text Editor",
-    "link": "https://www.youtube.com/watch?v=xqDonHEYPgA"
-  },
-  {
-    "title": "Python: Create a Simple Python Text Editor!",
-    "link": "http://www.instructables.com/id/Create-a-Simple-Python-Text-Editor/"
-  },
-  {
-    "title": "Ruby: Build a Collaborative Text Editor Using Rails",
-    "link": "https://blog.aha.io/text-editor/"
-  },
-  {
-    "title": "Python: Developing a License Plate Recognition System with Machine Learning in Python",
-    "link": "https://blog.devcenter.co/developing-a-license-plate-recognition-system-with-machine-learning-in-python-787833569ccd"
-  },
-  {
-    "title": "Python: Building a Facial Recognition Pipeline with Deep Learning in Tensorflow",
-    "link": "https://hackernoon.com/building-a-facial-recognition-pipeline-with-deep-learning-in-tensorflow-66e7645015b8"
-  },
-  {
-    "title": "C++: Let's Make a Voxel Engine",
-    "link": "https://sites.google.com/site/letsmakeavoxelengine/home"
-  },
-  {
-    "title": "Java: Let's make a voxel engine",
-    "link": "https://www.youtube.com/watch?v=C_Fo9PcrVXA&list=PLXa65xzz2vplye7cn1HH4GyE6_FjnDSug&index=1"
-  },
-  {
-    "title": "Java: Java Voxel Engine Tutorial",
-    "link": "https://www.youtube.com/watch?v=QZ4Vk2PkPZk&list=PL80Zqpd23vJfyWQi-8FKDbeO_ZQamLKJL"
-  },
-  {
-    "title": "PHP: Code a Search Engine in PHP",
-    "link": "https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/"
-  },
-  {
-    "title": "Ruby: Write an Internet search engine with 200 lines of Ruby code",
-    "link": "https://blog.saush.com/2009/03/17/write-an-internet-search-engine-with-200-lines-of-ruby-code/"
-  },
-  {
-    "title": "C#: Writing a Web Server from Scratch",
-    "link": "https://www.codeproject.com/Articles/859108/Writing-a-Web-Server-from-Scratch"
-  },
-  {
-    "title": "Node.js: Let's code a web server from scratch with NodeJS Streams",
-    "link": "https://www.codementor.io/ziad-saab/let-s-code-a-web-server-from-scratch-with-nodejs-streams-h4uc9utji"
-  },
-  {
-    "title": "Node.js: lets-build-express",
-    "link": "https://github.com/antoaravinth/lets-build-express"
-  },
-  {
-    "title": "PHP: Writing a webserver in pure PHP",
-    "link": "http://station.clancats.com/writing-a-webserver-in-pure-php/"
-  },
-  {
-    "title": "Python: A Simple Web Server",
-    "link": "http://aosabook.org/en/500L/a-simple-web-server.html"
-  },
-  {
-    "title": "Python: Let’s Build A Web Server.",
-    "link": "https://ruslanspivak.com/lsbaws-part1/"
-  },
-  {
-    "title": "Python: Web application from scratch",
-    "link": "https://defn.io/2018/02/25/web-app-from-scratch-01/"
-  },
-  {
-    "title": "Python: Building a basic HTTP Server from scratch in Python",
-    "link": "http://joaoventura.net/blog/2017/python-webserver/"
-  },
-  {
-    "title": "Python: Implementing a RESTful Web API with Python & Flask",
-    "link": "http://blog.luisrei.com/articles/flaskrest.html"
-  },
-  {
-    "title": "Ruby: Building a simple websockets server from scratch in Ruby",
-    "link": "http://blog.honeybadger.io/building-a-simple-websockets-server-from-scratch-in-ruby/"
-  },
-  {
-    "title": "(any): From NAND to Tetris: Building a Modern Computer From First Principles",
-    "link": "http://nand2tetris.org/"
-  },
-  {
-    "title": "Alloy: The Same-Origin Policy",
-    "link": "http://aosabook.org/en/500L/the-same-origin-policy.html"
-  },
-  {
-    "title": "C: How to Write a Video Player in Less Than 1000 Lines",
-    "link": "http://dranger.com/ffmpeg/ffmpeg.html"
-  },
-  {
-    "title": "C: Learn how to write a hash table in C",
-    "link": "https://github.com/jamesroutley/write-a-hash-table"
-  },
-  {
-    "title": "C: The very basics of a terminal emulator",
-    "link": "https://www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html"
-  },
-  {
-    "title": "C: Write a System Call",
-    "link": "https://brennan.io/2016/11/14/kernel-dev-ep3/"
-  },
-  {
-    "title": "C: Sol - An MQTT broker from scratch",
-    "link": "https://codepr.github.io/posts/sol-mqtt-broker"
-  },
-  {
-    "title": "C++: Build your own VR headset for $100",
-    "link": "https://github.com/relativty/Relativ"
-  },
-  {
-    "title": "C++: How X Window Managers work and how to write one",
-    "link": "https://seasonofcode.com/posts/how-x-window-managers-work-and-how-to-write-one-part-i.html"
-  },
-  {
-    "title": "C++: Writing a Linux Debugger",
-    "link": "https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/"
-  },
-  {
-    "title": "C++: How a 64k intro is made",
-    "link": "http://www.lofibucket.com/articles/64k_intro.html"
-  },
-  {
-    "title": "C#: C# Networking: Create a TCP chater server, TCP games, UDP Pong and more",
-    "link": "https://16bpp.net/tutorials/csharp-networking"
-  },
-  {
-    "title": "C#: Loading and rendering 3D skeletal animations from scratch in C# and GLSL",
-    "link": "https://www.seanjoflynn.com/research/skeletal-animation.html"
-  },
-  {
-    "title": "Clojure: Building a spell-checker",
-    "link": "https://bernhardwenzel.com/articles/clojure-spellchecker/"
-  },
-  {
-    "title": "Go: Let's Create a Simple Load Balancer",
-    "link": "https://kasvith.github.io/posts/lets-create-a-simple-lb-go/"
-  },
-  {
-    "title": "Java: How to Build an Android Reddit App",
-    "link": "https://www.youtube.com/playlist?list=PLgCYzUzKIBE9HUJU-upNvl3TRVAo9W47y"
-  },
-  {
-    "title": "JavaScript: Build Your Own Module Bundler - Minipack",
-    "link": "https://github.com/ronami/minipack"
-  },
-  {
-    "title": "JavaScript: Learn JavaScript Promises by Building a Promise from Scratch",
-    "link": "https://levelup.gitconnected.com/understand-javascript-promises-by-building-a-promise-from-scratch-84c0fd855720"
-  },
-  {
-    "title": "JavaScript: Implementing promises from scratch (TDD way)",
-    "link": "https://www.mauriciopoppe.com/notes/computer-science/computation/promises/"
-  },
-  {
-    "title": "JavaScript: Implement your own — call(), apply() and bind() method in JavaScript",
-    "link": "https://blog.usejournal.com/implement-your-own-call-apply-and-bind-method-in-javascript-42cc85dba1b"
-  },
-  {
-    "title": "JavaScript: JavaScript Algorithms and Data Structures",
-    "link": "https://github.com/trekhleb/javascript-algorithms"
-  },
-  {
-    "title": "JavaScript: How to Make an Evolutionary Tetris AI",
-    "link": "https://www.youtube.com/watch?v=xLHCMMGuN0Q"
-  },
-  {
-    "title": "JavaScript: Build a ride hailing app with React Native",
-    "link": "https://pusher.com/tutorials/ride-hailing-react-native"
-  },
-  {
-    "title": "Kotlin: Build Your Own Cache",
-    "link": "https://github.com/kezhenxu94/cache-lite"
-  },
-  {
-    "title": "Nim: Writing a Redis Protocol Parser",
-    "link": "https://xmonader.github.io/nimdays/day12_resp.html"
-  },
-  {
-    "title": "Nim: Writing a Build system",
-    "link": "https://xmonader.github.io/nimdays/day11_buildsystem.html"
-  },
-  {
-    "title": "Nim: Writing a MiniTest Framework",
-    "link": "https://xmonader.github.io/nimdays/day08_minitest.html"
-  },
-  {
-    "title": "Nim: Writing a DMIDecode Parser",
-    "link": "https://xmonader.github.io/nimdays/day01_dmidecode.html"
-  },
-  {
-    "title": "Nim: Writing a INI Parser",
-    "link": "https://xmonader.github.io/nimdays/day05_iniparser.html"
-  },
-  {
-    "title": "Nim: Writing a Link Checker",
-    "link": "https://xmonader.github.io/nimdays/day04_asynclinkschecker.html"
-  },
-  {
-    "title": "Nim: Writing a URL Shortening Service",
-    "link": "https://xmonader.github.io/nimdays/day07_shorturl.html"
-  },
-  {
-    "title": "Node.js: Build a static site generator in 40 lines with Node.js",
-    "link": "https://www.webdevdrops.com/build-static-site-generator-nodejs-8969ebe34b22/"
-  },
-  {
-    "title": "Node.js: Building A Simple Single Sign On(SSO) Server And Solution From Scratch In Node.js.",
-    "link": "https://codeburst.io/building-a-simple-single-sign-on-sso-server-and-solution-from-scratch-in-node-js-ea6ee5fdf340"
-  },
-  {
-    "title": "Node.js: How to create a real-world Node CLI app with Node",
-    "link": "https://medium.freecodecamp.org/how-to-create-a-real-world-node-cli-app-with-node-391b727bbed3"
-  },
-  {
-    "title": "PHP: Write your own MVC from scratch in PHP",
-    "link": "https://chaitya62.github.io/2018/04/29/Writing-your-own-MVC-from-Scratch-in-PHP.html"
-  },
-  {
-    "title": "PHP: Make your own blog",
-    "link": "https://ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog"
-  },
-  {
-    "title": "PHP: Modern PHP Without a Framework",
-    "link": "https://kevinsmith.io/modern-php-without-a-framework"
-  },
-  {
-    "title": "Python: Build a Deep Learning Library",
-    "link": "https://www.youtube.com/watch?v=o64FV-ez6Gw"
-  },
-  {
-    "title": "Python: How to Build a Kick-Ass Mobile Document Scanner in Just 5 Minutes",
-    "link": "https://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/"
-  },
-  {
-    "title": "Python: Continuous Integration System",
-    "link": "http://aosabook.org/en/500L/a-continuous-integration-system.html"
-  },
-  {
-    "title": "Python: Recommender Systems in Python: Beginner Tutorial",
-    "link": "https://www.datacamp.com/community/tutorials/recommender-systems-python"
-  },
-  {
-    "title": "Python: Write SMS-spam detector with Scikit-learn",
-    "link": "https://medium.com/@kopilov.vlad/detect-sms-spam-in-kaggle-with-scikit-learn-5f6afa7a3ca2"
-  },
-  {
-    "title": "Python: A Simple Content-Based Recommendation Engine in Python",
-    "link": "http://blog.untrod.com/2016/06/simple-similar-products-recommendation-engine-in-python.html"
-  },
-  {
-    "title": "Python: Stock Market Predictions with LSTM in Python",
-    "link": "https://www.datacamp.com/community/tutorials/lstm-python-stock-market"
-  },
-  {
-    "title": "Python: Build your own error-correction fountain code with Luby Transform Codes",
-    "link": "https://franpapers.com/en/algorithmic/2018-introduction-to-fountain-codes-lt-codes-with-python/"
-  },
-  {
-    "title": "Python: Building a simple Generative Adversial Network (GAN) using Tensorflow",
-    "link": "https://blog.paperspace.com/implementing-gans-in-tensorflow/"
-  },
-  {
-    "title": "Python: Learn ML Algorithms by coding: Decision Trees",
-    "link": "https://lethalbrains.com/learn-ml-algorithms-by-coding-decision-trees-439ac503c9a4"
-  },
-  {
-    "title": "Python: JSON Decoding Algorithm",
-    "link": "https://github.com/cheery/json-algorithm"
-  },
-  {
-    "title": "Ruby: A Pedometer in the Real World",
-    "link": "http://aosabook.org/en/500L/a-pedometer-in-the-real-world.html"
-  },
-  {
-    "title": "Ruby: Creating a Linux Desktop application with Ruby",
-    "link": "https://iridakos.com/tutorials/2018/01/25/creating-a-gtk-todo-application-with-ruby"
-  },
-  {
-    "title": "Rust: Let's build a browser engine",
-    "link": "https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html"
-  },
-  {
-    "title": "Rust: Building a DNS server in Rust",
-    "link": "https://github.com/EmilHernvall/dnsguide/blob/master/README.md"
-  },
-  {
-    "title": "Rust: Writing Scalable Chat Service from Scratch",
-    "link": "https://nbaksalyar.github.io/2015/07/10/writing-chat-in-rust.html"
-  },
-  {
-    "title": "TypeScript: Tiny Package Manager: Learns how npm or Yarn works",
-    "link": "https://github.com/g-plane/tiny-package-manager"
-  },
-  {
-    "title": "Write a CSV to HTML program",
-    "link": "https://programmingpraxis.com/2020/03/17/csv-to-html/"
-  },
-  {
-    "title": "Write a Texas Hold 'Em Poker program",
-    "link": "https://programmingpraxis.com/2010/03/23/texas-hold-em/"
-  },
-  {
-    "title": "Write a Turing Machine Simulator",
-    "link": "https://programmingpraxis.com/2009/03/27/a-turing-machine-simulator/"
-  },
-  {
-    "title": "Nim: A two-player game of mathematical logic",
-    "link": "https://programmingpraxis.com/2010/01/08/nim/"
-  },
-  {
-    "title": "Traveling Salesman: Brute Force: Examine all possible permutations to find the least-cost tour",
-    "link": "https://programmingpraxis.com/2010/03/12/traveling-salesman-brute-force/"
-  },
-  {
-    "title": "The Seven Bridges of Königsberg: A classic graph puzzle due to Leonhard Euler",
-    "link": "https://programmingpraxis.com/2013/05/31/the-seven-bridges-of-knigsberg/"
-  },
-  {
-    "title": "Adi Shamir’s Threshold Scheme: Use cryptography to share a secret, by Graham Enos",
-    "link": "https://programmingpraxis.com/2011/06/17/adi-shamirs-threshold-scheme/"
-  },
-  {
-    "title": "Knight Rider: Classic problem of the knight’s tour",
-    "link": "https://programmingpraxis.com/2011/12/02/knight-rider/"
-  },
-  {
-    "title": "Unix Paths: Convert relative Unix path to absolute, by Robert Fisher",
-    "link": "https://programmingpraxis.com/2013/08/13/unix-paths/"
-  },
-  {
-    "title": "The First Computer Program: Ada Lovelace’s program to compute Bernoulli numbers for Charles Babbage’s Analytical Engine",
-    "link": "https://programmingpraxis.com/2011/02/08/the-first-computer-program/"
-  },
-  {
-    "title": "Steve Yegge’s Phone-Screen Coding Exercises",
-    "link": "https://programmingpraxis.com/2009/06/30/steve-yegges-phone-screen-coding-exercises/"
-  },
-  {
-    "title": "Word Count: An implementation of the unix wc program",
-    "link": "https://programmingpraxis.com/2009/12/08/word-count/"
-  },
-  {
-    "title": "Grep: Simple version of the classic unix regular-expression matching utility",
-    "link": "https://programmingpraxis.com/2009/09/25/grep/"
-  },
-  {
-    "title": "Cal: Print a twelve-month calendar",
-    "link": "https://programmingpraxis.com/2010/01/01/cal-2/"
-  },
-  {
-    "title": "Diff: Find the differences between two text files",
-    "link": "https://programmingpraxis.com/2010/06/08/diff/"
-  },
-  {
-    "title": "J K Rowling: Identify an author using forensic linguistics",
-    "link": "https://programmingpraxis.com/2013/07/19/j-k-rowling/"
-  },
-  {
-    "title": "How to write your first Quine program",
-    "link": "https://towardsdatascience.com/how-to-write-your-first-quine-program-947f2b7e4a6f"
-  },
-  {
-    "title": "Code The Game Of Life With React",
-    "link": "https://www.freecodecamp.org/news/create-gameoflife-with-react-in-one-hour-8e686a410174/"
-  },
-  {
-    "title": "Build A Chat App with Sentiment Analysis",
-    "link": "https://codeburst.io/build-a-chat-app-with-sentiment-analysis-using-next-js-c43ebf3ea643"
-  },
-]

From 8371c437b4d4d964afd3e2d3635a13da56b4ee73 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 26 Dec 2022 09:07:19 +0700
Subject: [PATCH 30/54] update and fix minor styling

---
 projects/dad-jokes-generator/index.html | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/projects/dad-jokes-generator/index.html b/projects/dad-jokes-generator/index.html
index 36c32fb..f27e4e4 100644
--- a/projects/dad-jokes-generator/index.html
+++ b/projects/dad-jokes-generator/index.html
@@ -4,13 +4,13 @@
     <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Dad Joke Generator</title>
+    <title>Dad Jokes Generator</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
     <div class="container">
-      <h1 class="heading">Dad Joke Generator</h1>
-      <h2 class="joke" id="joke">Dad Joke</h2>
+      <h1 class="heading">Dad Jokes Generator</h1>
+      <h2 class="joke" id="joke">Dad Jokes</h2>
       <button class="btn" id="btn">Tell me a joke</button>
     </div>
     <script src="index.js"></script>

From 65b18899a223412dd37514ba145657f54d88bd02 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 26 Dec 2022 19:30:53 +0700
Subject: [PATCH 31/54] update the dad jokes generator project part2

---
 projects/dad-jokes-generator/index.html | 24 +++----
 projects/dad-jokes-generator/index.js   | 22 +++----
 projects/dad-jokes-generator/style.css  | 86 ++++++++++++-------------
 3 files changed, 64 insertions(+), 68 deletions(-)

diff --git a/projects/dad-jokes-generator/index.html b/projects/dad-jokes-generator/index.html
index f27e4e4..8693912 100644
--- a/projects/dad-jokes-generator/index.html
+++ b/projects/dad-jokes-generator/index.html
@@ -1,18 +1,18 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Dad Jokes Generator</title>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-  <body>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="container">
-      <h1 class="heading">Dad Jokes Generator</h1>
-      <h2 class="joke" id="joke">Dad Jokes</h2>
-      <button class="btn" id="btn">Tell me a joke</button>
+        <h1 class="heading">Dad Joke Generator</h1>
+        <p class="joke" id="joke">Dad Joke</p>
+        <button class="btn" id="btn">Tell me a joke</button>
     </div>
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/dad-jokes-generator/index.js b/projects/dad-jokes-generator/index.js
index 6bbe74d..7a1e90d 100644
--- a/projects/dad-jokes-generator/index.js
+++ b/projects/dad-jokes-generator/index.js
@@ -1,7 +1,7 @@
 const btnEl = document.getElementById("btn");
 const jokeEl = document.getElementById("joke");
 
-const apiKey = "SAXb3lrT9IIorMjQkAFWBg==KCDQCZgWgcoAU4ai";
+const apiKey = "4kqGcJx8uDXo3XIskcbzokAz7rN8nWJs3PL9Mcll";
 
 const options = {
   method: "GET",
@@ -10,28 +10,26 @@ const options = {
   },
 };
 
-const apiURL = `https://api.api-ninjas.com/v1/dadjokes?limit=1`;
+const apiURL = "https://api.api-ninjas.com/v1/dadjokes?limit=1";
 
 async function getJoke() {
   try {
-    btnEl.innerText = "Loading...";
-    btnEl.disabled = true;
     jokeEl.innerText = "Updating...";
+    btnEl.disabled = true;
+    btnEl.innerText = "Loading...";
     const response = await fetch(apiURL, options);
     const data = await response.json();
-    const jokeContent = data[0].joke;
-    jokeEl.innerText = jokeContent;
-    btnEl.innerText = "Tell me a joke";
+
     btnEl.disabled = false;
-    console.log(data);
+    btnEl.innerText = "Tell me a joke";
+
+    jokeEl.innerText = data[0].joke;
   } catch (error) {
-    console.log(error);
     jokeEl.innerText = "An error happened, try again later";
-    btnEl.innerText = "Tell me a joke";
     btnEl.disabled = false;
+    btnEl.innerText = "Tell me a joke";
+    console.log(error);
   }
 }
 
-getJoke();
-
 btnEl.addEventListener("click", getJoke);
diff --git a/projects/dad-jokes-generator/style.css b/projects/dad-jokes-generator/style.css
index 5e7e85a..1b55a53 100644
--- a/projects/dad-jokes-generator/style.css
+++ b/projects/dad-jokes-generator/style.css
@@ -1,54 +1,52 @@
-body {
-  margin: 0;
-  display: flex;
-  min-height: 100vh;
-  justify-content: center;
-  align-items: center;
-  font-family: monospace;
-  background: linear-gradient(to left bottom, lightblue, lightpink, lightblue);
+body{
+    margin: 0;
+    background: linear-gradient(to left bottom, lightblue, lightpink, lightblue);
+    min-height: 100vh;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-family: monospace;
 }
 
-.container {
-  background-color: rgba(255, 255, 255, 0.3);
-  box-shadow: 0 6px 10px rgba(0, 0, 0, 0.3);
-  padding: 20px;
-  border-radius: 15px;
-  width: 85%;
-  text-align: center;
-  color: darkgreen;
+.container{
+    background-color: rgba(255,255,255,.3);
+    padding: 20px;
+    box-shadow: 0 6px 10px rgba(0,0,0,.3);
+    border-radius: 15px;
+    width: 85%;
+    text-align: center;
+    color: darkgreen;
 }
 
-.heading {
-  font-size: 35px;
-  font-weight: 200;
-  font-family: Impact;
-  letter-spacing: 2px;
-
-  text-shadow: 5px 5px 2px rgba(0, 0, 0, 0.3);
+.heading{
+    font-size: 35px;
+    font-weight: 200;
+    font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
+    text-shadow: 5px 5px 2px rgba(0,0,0,.3);
+    letter-spacing: 2px;
 }
 
-.joke {
-  font-size: 25px;
-  font-weight: 500;
-  margin: 40px;
+.joke{
+    font-size: 25px;
+    font-weight: 500;
+    margin: 40px
 }
 
-.btn {
-  font-size: 18px;
-  font-weight: 700;
-  border-radius: 5px;
-  cursor: pointer;
-  padding: 10px;
-  margin-top: 15px;
-  background-color: rgba(255, 255, 255, 0.3);
-  border-color: rgba(255, 255, 255, 0.6);
-  text-transform: uppercase;
-  width: 300px;
-  color: darkgreen;
+.btn{
+    font-size: 18px;
+    font-weight: 700;
+    border-radius: 5px;
+    cursor: pointer;
+    padding: 10px;
+    background-color: rgba(255,255,255,.3);
+    border-color: rgba(255,255,255,.6);
+    text-transform: uppercase;
+    width: 300px;
+    color: darkgreen;
 }
 
-.btn:hover {
-  background-color: rgba(255, 255, 255, 0.5);
-  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3);
-  transition: all 300ms ease;
-}
+.btn:hover{
+    background-color: rgba(255,255,255,.5);
+    box-shadow: 0 4px 4px rgba(0,0,0,.3);
+    transition: all 300ms ease;
+}
\ No newline at end of file

From 6064fbc2fe1b9248689490da718b7bb00edd5e41 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 2 Mar 2023 19:45:51 +0700
Subject: [PATCH 32/54] add weather app

---
 projects/dad-jokes-generator/index.js |   1 +
 projects/weather-app/index.html       |  38 +++++++++
 projects/weather-app/script.js        |  71 ++++++++++++++++
 projects/weather-app/style.css        | 117 ++++++++++++++++++++++++++
 4 files changed, 227 insertions(+)
 create mode 100644 projects/weather-app/index.html
 create mode 100644 projects/weather-app/script.js
 create mode 100644 projects/weather-app/style.css

diff --git a/projects/dad-jokes-generator/index.js b/projects/dad-jokes-generator/index.js
index 7a1e90d..12d9337 100644
--- a/projects/dad-jokes-generator/index.js
+++ b/projects/dad-jokes-generator/index.js
@@ -33,3 +33,4 @@ async function getJoke() {
 }
 
 btnEl.addEventListener("click", getJoke);
+
diff --git a/projects/weather-app/index.html b/projects/weather-app/index.html
new file mode 100644
index 0000000..de6cdb0
--- /dev/null
+++ b/projects/weather-app/index.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8" />
+    <title>Weather App</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h1>Weather App</h1>
+      <form>
+        <input type="text" id="city-input" placeholder="Enter city" />
+        <input type="submit" value="Get Weather" />
+      </form>
+      <div id="weather-data">
+        <div class="icon"></div>
+        <div class="temperature"></div>
+        <div class="description"></div>
+        <div class="details"></div>
+      </div>
+
+      <!-- <div id="weather-data">
+                <div class="icon">
+                    <img src="http://openweathermap.org/img/wn/01d.png" alt="Weather Icon">
+                </div>
+                <div class="temperature">22°C</div>
+                <div class="description">Sunny</div>
+                <div class="details">
+                    <div>Feels like: 23°C</div>
+                    <div>Humidity: 40%</div>
+                    <div>Wind speed: 5 m/s</div>
+                </div>
+            </div>
+        -->
+    </div>
+    <script src="script.js"></script>
+  </body>
+</html>
diff --git a/projects/weather-app/script.js b/projects/weather-app/script.js
new file mode 100644
index 0000000..ada1704
--- /dev/null
+++ b/projects/weather-app/script.js
@@ -0,0 +1,71 @@
+// Set the API key to be used for making requests to the OpenWeatherMap API
+const apiKey = "ec24604fb141c0188e07713025f2b7b8";
+
+// Get the element that will display the weather data on the page
+const weatherData = document.getElementById("weather-data");
+
+// Get the input element for the city from the HTML form
+const cityInput = document.getElementById("city-input");
+
+// Get the HTML form element
+const form = document.querySelector("form");
+
+// Add a submit event listener to the form, which will get the value from the city input field and use it to get weather data
+form.addEventListener("submit", (event) => {
+  event.preventDefault(); // Prevent the default form submission behavior
+  const city = cityInput.value; // Get the value from the city input field
+  getWeatherData(city); // Call the function to get weather data for the specified city
+});
+
+// Define an async function to get weather data for a given city
+async function getWeatherData(city) {
+  try {
+    // Make a request to the OpenWeatherMap API to get weather data for the specified city
+    const response = await fetch(`
+https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`);
+
+    // Check if the response from the API is not ok (e.g. 404 error)
+    if (!response.ok) {
+      throw new Error("Network response was not ok");
+    }
+
+    // Parse the response from the API as JSON
+    const data = await response.json();
+
+    // Check if the API returned an error message
+    if (data.cod === "404") {
+      throw new Error(data.message);
+    }
+
+    // Extract the temperature, description, icon, and other weather details from the API response
+    const temperature = Math.round(data.main.temp);
+    const description = data.weather[0].description;
+    const icon = data.weather[0].icon;
+    const details = [
+      `Feels like: ${Math.round(data.main.feels_like)}°C`,
+      `Humidity: ${data.main.humidity}%`,
+      `Wind speed: ${data.wind.speed} m/s`,
+    ];
+
+    // Set the HTML content of the weather data display elements to the retrieved weather data
+    weatherData.querySelector(
+      ".icon"
+    ).innerHTML = `<img src="http://openweathermap.org/img/wn/${icon}.png" alt="Weather Icon">`;
+    weatherData.querySelector(".temperature").textContent = `${temperature}°C`;
+    weatherData.querySelector(".description").textContent = description;
+    weatherData.querySelector(".details").innerHTML = details
+      .map((detail) => `<div>${detail}</div>`)
+      .join("");
+  } catch (error) {
+    console.log(error);
+
+    // If there was an error fetching weather data, clear the HTML content of the weather data display elements and display an error message
+    weatherData.querySelector(".icon").innerHTML = "";
+    weatherData.querySelector(".temperature").textContent = "";
+    weatherData.querySelector(".description").textContent =
+      "Error fetching weather data. Please try again.";
+    weatherData.querySelector(".details").innerHTML = "";
+  }
+}
+
+// The above code uses the Fetch API to retrieve weather data from the OpenWeatherMap API, and the async/await syntax to handle the asynchronous nature of the API call. The code also dynamically updates the HTML content of the weather data display elements with the retrieved weather data.
diff --git a/projects/weather-app/style.css b/projects/weather-app/style.css
new file mode 100644
index 0000000..bed3d24
--- /dev/null
+++ b/projects/weather-app/style.css
@@ -0,0 +1,117 @@
+body {
+  margin: 0; /* Reset default margin */
+  font-family: "Montserrat", sans-serif; /* Use Montserrat font for all text */
+  background-color: #f7f7f7; /* Set light gray background color */
+}
+
+.container {
+  max-width: 600px; /* Set maximum width of container */
+  margin: 0 auto; /* Center container horizontally */
+  padding: 20px; /* Add padding inside container */
+  border-radius: 5px; /* Add rounded corners to container */
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); /* Add shadow effect to container */
+  background-color: #fff; /* Set white background color for container */
+  margin-top: 50px; /* Add margin to the top of the container */
+  text-align: center; /* Center align the content inside container */
+}
+
+form {
+  display: flex; /* Use flexbox for layout */
+  justify-content: center; /* Center children horizontally */
+  align-items: center; /* Center children vertically */
+  margin-bottom: 20px; /* Add margin to bottom */
+}
+
+form input[type="text"] {
+  padding: 10px; /* Add padding to all sides */
+  border: none; /* Remove border */
+  border-radius: 5px; /* Add rounded corners */
+  font-size: 18px; /* Set font size */
+  width: 60%; /* Set width */
+  outline: none; /* Remove outline */
+}
+
+form input[type="submit"] {
+  background-color: #007bff; /* set background color for the submit button */
+  color: #fff; /* set text color for the submit button */
+  border: none; /* remove border from the submit button */
+  padding: 10px 20px; /* set padding for the submit button */
+  border-radius: 5px; /* set border radius for the submit button */
+  font-size: 18px; /* set font size for the submit button text */
+  cursor: pointer; /* change cursor to pointer on hover */
+  outline: none; /* remove outline on focus */
+  transition: background-color 0.3s ease; /* add transition effect for background color change */
+}
+
+form input[type="submit"]:hover {
+  background-color: #0062cc; /* set background color on hover */
+}
+
+.icon {
+  width: 100px; /* set width of the icon */
+  height: 100px; /* set height of the icon */
+  margin: 0 auto; /* center the icon horizontally */
+  background-size: contain; /* scale the background image to fit within the container */
+  background-repeat: no-repeat; /* prevent the background image from repeating */
+  background-position: center center; /* center the background image within the container */
+}
+
+.temperature {
+  font-size: 48px; /* set font size for the temperature display */
+  font-weight: bold; /* set font weight for the temperature display */
+  margin: 20px 0; /* add margin to the top and bottom of the temperature display */
+}
+
+.description {
+  font-size: 24px; /* set font size for the weather description */
+  margin-bottom: 20px; /* add margin to the bottom of the weather description */
+}
+
+.details {
+  display: flex; /* set display property to flex */
+  justify-content: center; /* center the child elements horizontally */
+  align-items: center; /* center the child elements vertically */
+  flex-wrap: wrap; /* allow the child elements to wrap onto a new line if needed */
+}
+
+.details > div {
+  flex: 1; /* Use the remaining available space for each div */
+  margin: 10px; /* Add margin around each div */
+  padding: 20px; /* Add padding inside each div */
+  background-color: #f1f1f1; /* Set background color for each div */
+  border-radius: 5px; /* Round the corners of each div */
+  text-align: center; /* Center the content horizontally */
+  min-height: 45px; /* Set a minimum height for each div */
+  align-items: center; /* Center the content vertically */
+  justify-content: center; /* Center the content horizontally */
+}
+
+.details > div > h3 {
+  margin-top: 0; /* Remove the top margin of the heading */
+  font-size: 18px; /* Set the font size for the heading */
+  font-weight: bold; /* Set the font weight for the heading */
+}
+
+.details > div > p {
+  margin-bottom: 0; /* Remove the bottom margin of the paragraph */
+  font-size: 16px; /* Set the font size for the paragraph */
+}
+
+.details > div > p:first-child {
+  font-weight: bold; /* Set the font weight for the first paragraph */
+}
+
+.details > div > p:last-child {
+  margin-top: 10px; /* Add margin to the top of the last paragraph */
+}
+
+@media (max-width: 768px) {
+  form {
+    flex-direction: column; /* Change the direction of the flex items to column */
+  }
+
+  form input[type="text"] {
+    width: 100%; /* Set the width of the input field to 100% */
+    margin-bottom: 10px; /* Add margin to the bottom of the input field */
+  }
+}

From d51b3e3eecdc0bede933c34898b4bd1645439a9d Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sat, 4 Mar 2023 07:30:52 +0700
Subject: [PATCH 33/54] update weather app

---
 projects/weather-app/index.html |  32 +++----
 projects/weather-app/index.js   |  58 +++++++++++++
 projects/weather-app/script.js  |  71 ---------------
 projects/weather-app/style.css  | 149 ++++++++++++++------------------
 4 files changed, 134 insertions(+), 176 deletions(-)
 create mode 100644 projects/weather-app/index.js
 delete mode 100644 projects/weather-app/script.js

diff --git a/projects/weather-app/index.html b/projects/weather-app/index.html
index de6cdb0..7fe9e3a 100644
--- a/projects/weather-app/index.html
+++ b/projects/weather-app/index.html
@@ -1,7 +1,9 @@
 <!DOCTYPE html>
-<html>
+<html lang="en">
   <head>
     <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>Weather App</title>
     <link rel="stylesheet" href="style.css" />
   </head>
@@ -9,30 +11,22 @@
     <div class="container">
       <h1>Weather App</h1>
       <form>
-        <input type="text" id="city-input" placeholder="Enter city" />
+        <input type="text" id="city-input" placeholder="Enter City" />
         <input type="submit" value="Get Weather" />
       </form>
       <div id="weather-data">
-        <div class="icon"></div>
+        <div class="icon">
+          <!-- <img src="http://openweathermap.org/img/wn/01d.png" alt="Weather Icon"> -->
+        </div>
         <div class="temperature"></div>
         <div class="description"></div>
-        <div class="details"></div>
+        <div class="details">
+          <!-- <div>Feels like: 23°C</div>
+                <div>Humidity: 40%</div>
+                <div>Wind speed: 5 m/s</div> -->
+        </div>
       </div>
-
-      <!-- <div id="weather-data">
-                <div class="icon">
-                    <img src="http://openweathermap.org/img/wn/01d.png" alt="Weather Icon">
-                </div>
-                <div class="temperature">22°C</div>
-                <div class="description">Sunny</div>
-                <div class="details">
-                    <div>Feels like: 23°C</div>
-                    <div>Humidity: 40%</div>
-                    <div>Wind speed: 5 m/s</div>
-                </div>
-            </div>
-        -->
     </div>
-    <script src="script.js"></script>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/weather-app/index.js b/projects/weather-app/index.js
new file mode 100644
index 0000000..f773a49
--- /dev/null
+++ b/projects/weather-app/index.js
@@ -0,0 +1,58 @@
+const apikey = "46f80a02ecae410460d59960ded6e1c6";
+
+const weatherDataEl = document.getElementById("weather-data");
+
+const cityInputEl = document.getElementById("city-input");
+
+const formEl = document.querySelector("form");
+
+formEl.addEventListener("submit", (event) => {
+  event.preventDefault();
+  const cityValue = cityInputEl.value;
+  getWeatherData(cityValue);
+});
+
+async function getWeatherData(cityValue) {
+  try {
+    const response = await fetch(
+      `https://api.openweathermap.org/data/2.5/weather?q=${cityValue}&appid=${apikey}&units=metric`
+    );
+
+    if (!response.ok) {
+      throw new Error("Network response was not ok");
+    }
+
+    const data = await response.json();
+
+    const temperature = Math.round(data.main.temp);
+
+    const description = data.weather[0].description;
+
+    const icon = data.weather[0].icon;
+
+    const details = [
+      `Feels like: ${Math.round(data.main.feels_like)}`,
+      `Humidity: ${data.main.humidity}%`,
+      `Wind speed: ${data.wind.speed} m/s`,
+    ];
+
+    weatherDataEl.querySelector(
+      ".icon"
+    ).innerHTML = `<img src="http://openweathermap.org/img/wn/${icon}.png" alt="Weather Icon">`;
+    weatherDataEl.querySelector(
+      ".temperature"
+    ).textContent = `${temperature}°C`;
+    weatherDataEl.querySelector(".description").textContent = description;
+
+    weatherDataEl.querySelector(".details").innerHTML = details
+      .map((detail) => `<div>${detail}</div>`)
+      .join("");
+  } catch (error) {
+    weatherDataEl.querySelector(".icon").innerHTML = "";
+    weatherDataEl.querySelector(".temperature").textContent = "";
+    weatherDataEl.querySelector(".description").textContent =
+      "An error happened, please try again later";
+
+    weatherDataEl.querySelector(".details").innerHTML = "";
+  }
+}
diff --git a/projects/weather-app/script.js b/projects/weather-app/script.js
deleted file mode 100644
index ada1704..0000000
--- a/projects/weather-app/script.js
+++ /dev/null
@@ -1,71 +0,0 @@
-// Set the API key to be used for making requests to the OpenWeatherMap API
-const apiKey = "ec24604fb141c0188e07713025f2b7b8";
-
-// Get the element that will display the weather data on the page
-const weatherData = document.getElementById("weather-data");
-
-// Get the input element for the city from the HTML form
-const cityInput = document.getElementById("city-input");
-
-// Get the HTML form element
-const form = document.querySelector("form");
-
-// Add a submit event listener to the form, which will get the value from the city input field and use it to get weather data
-form.addEventListener("submit", (event) => {
-  event.preventDefault(); // Prevent the default form submission behavior
-  const city = cityInput.value; // Get the value from the city input field
-  getWeatherData(city); // Call the function to get weather data for the specified city
-});
-
-// Define an async function to get weather data for a given city
-async function getWeatherData(city) {
-  try {
-    // Make a request to the OpenWeatherMap API to get weather data for the specified city
-    const response = await fetch(`
-https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`);
-
-    // Check if the response from the API is not ok (e.g. 404 error)
-    if (!response.ok) {
-      throw new Error("Network response was not ok");
-    }
-
-    // Parse the response from the API as JSON
-    const data = await response.json();
-
-    // Check if the API returned an error message
-    if (data.cod === "404") {
-      throw new Error(data.message);
-    }
-
-    // Extract the temperature, description, icon, and other weather details from the API response
-    const temperature = Math.round(data.main.temp);
-    const description = data.weather[0].description;
-    const icon = data.weather[0].icon;
-    const details = [
-      `Feels like: ${Math.round(data.main.feels_like)}°C`,
-      `Humidity: ${data.main.humidity}%`,
-      `Wind speed: ${data.wind.speed} m/s`,
-    ];
-
-    // Set the HTML content of the weather data display elements to the retrieved weather data
-    weatherData.querySelector(
-      ".icon"
-    ).innerHTML = `<img src="http://openweathermap.org/img/wn/${icon}.png" alt="Weather Icon">`;
-    weatherData.querySelector(".temperature").textContent = `${temperature}°C`;
-    weatherData.querySelector(".description").textContent = description;
-    weatherData.querySelector(".details").innerHTML = details
-      .map((detail) => `<div>${detail}</div>`)
-      .join("");
-  } catch (error) {
-    console.log(error);
-
-    // If there was an error fetching weather data, clear the HTML content of the weather data display elements and display an error message
-    weatherData.querySelector(".icon").innerHTML = "";
-    weatherData.querySelector(".temperature").textContent = "";
-    weatherData.querySelector(".description").textContent =
-      "Error fetching weather data. Please try again.";
-    weatherData.querySelector(".details").innerHTML = "";
-  }
-}
-
-// The above code uses the Fetch API to retrieve weather data from the OpenWeatherMap API, and the async/await syntax to handle the asynchronous nature of the API call. The code also dynamically updates the HTML content of the weather data display elements with the retrieved weather data.
diff --git a/projects/weather-app/style.css b/projects/weather-app/style.css
index bed3d24..2030f24 100644
--- a/projects/weather-app/style.css
+++ b/projects/weather-app/style.css
@@ -1,117 +1,94 @@
 body {
-  margin: 0; /* Reset default margin */
-  font-family: "Montserrat", sans-serif; /* Use Montserrat font for all text */
-  background-color: #f7f7f7; /* Set light gray background color */
+  margin: 0;
+  font-family: "Montserrat", sans-serif;
+  background-color: #f7f7f7;
 }
 
 .container {
-  max-width: 600px; /* Set maximum width of container */
-  margin: 0 auto; /* Center container horizontally */
-  padding: 20px; /* Add padding inside container */
-  border-radius: 5px; /* Add rounded corners to container */
-  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); /* Add shadow effect to container */
-  background-color: #fff; /* Set white background color for container */
-  margin-top: 50px; /* Add margin to the top of the container */
-  text-align: center; /* Center align the content inside container */
+  background-color: #fff;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
+  margin: 0 auto;
+  margin-top: 50px;
+  text-align: center;
+  max-width: 600px;
+  border-radius: 5px;
+  padding: 20px;
 }
 
 form {
-  display: flex; /* Use flexbox for layout */
-  justify-content: center; /* Center children horizontally */
-  align-items: center; /* Center children vertically */
-  margin-bottom: 20px; /* Add margin to bottom */
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-bottom: 20px;
 }
 
 form input[type="text"] {
-  padding: 10px; /* Add padding to all sides */
-  border: none; /* Remove border */
-  border-radius: 5px; /* Add rounded corners */
-  font-size: 18px; /* Set font size */
-  width: 60%; /* Set width */
-  outline: none; /* Remove outline */
+  padding: 10px;
+  border: none;
+  outline: none;
+  font-size: 18px;
+  width: 60%;
 }
 
 form input[type="submit"] {
-  background-color: #007bff; /* set background color for the submit button */
-  color: #fff; /* set text color for the submit button */
-  border: none; /* remove border from the submit button */
-  padding: 10px 20px; /* set padding for the submit button */
-  border-radius: 5px; /* set border radius for the submit button */
-  font-size: 18px; /* set font size for the submit button text */
-  cursor: pointer; /* change cursor to pointer on hover */
-  outline: none; /* remove outline on focus */
-  transition: background-color 0.3s ease; /* add transition effect for background color change */
+  background-color: #007bff;
+  color: #fff;
+  border: none;
+  padding: 10px 20px;
+  border-radius: 5px;
+  font-size: 18px;
+  cursor: pointer;
+  outline: none;
+  transition: background-color 0.3s ease;
 }
 
 form input[type="submit"]:hover {
-  background-color: #0062cc; /* set background color on hover */
+  background-color: #0062cc;
 }
 
-.icon {
-  width: 100px; /* set width of the icon */
-  height: 100px; /* set height of the icon */
-  margin: 0 auto; /* center the icon horizontally */
-  background-size: contain; /* scale the background image to fit within the container */
-  background-repeat: no-repeat; /* prevent the background image from repeating */
-  background-position: center center; /* center the background image within the container */
+.icon img {
+  width: 100px;
+  height: 100px;
+  background-size: contain;
+  background-repeat: no-repeat;
+  background-position: center center;
 }
 
 .temperature {
-  font-size: 48px; /* set font size for the temperature display */
-  font-weight: bold; /* set font weight for the temperature display */
-  margin: 20px 0; /* add margin to the top and bottom of the temperature display */
+  font-size: 48px;
+  font-weight: bold;
+  margin: 20px 0;
 }
 
-.description {
-  font-size: 24px; /* set font size for the weather description */
-  margin-bottom: 20px; /* add margin to the bottom of the weather description */
+.description{
+    font-size: 24px;
+    margin-bottom: 20px;
 }
 
-.details {
-  display: flex; /* set display property to flex */
-  justify-content: center; /* center the child elements horizontally */
-  align-items: center; /* center the child elements vertically */
-  flex-wrap: wrap; /* allow the child elements to wrap onto a new line if needed */
+.details{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    flex-wrap: wrap;
 }
 
-.details > div {
-  flex: 1; /* Use the remaining available space for each div */
-  margin: 10px; /* Add margin around each div */
-  padding: 20px; /* Add padding inside each div */
-  background-color: #f1f1f1; /* Set background color for each div */
-  border-radius: 5px; /* Round the corners of each div */
-  text-align: center; /* Center the content horizontally */
-  min-height: 45px; /* Set a minimum height for each div */
-  align-items: center; /* Center the content vertically */
-  justify-content: center; /* Center the content horizontally */
+.details > div{
+    padding: 20px;
+    background-color: #f1f1f1;
+    margin: 10px;
+    flex: 1;
+    border-radius: 5px;
+    text-align: center;
+    min-height: 45px;
 }
 
-.details > div > h3 {
-  margin-top: 0; /* Remove the top margin of the heading */
-  font-size: 18px; /* Set the font size for the heading */
-  font-weight: bold; /* Set the font weight for the heading */
-}
-
-.details > div > p {
-  margin-bottom: 0; /* Remove the bottom margin of the paragraph */
-  font-size: 16px; /* Set the font size for the paragraph */
-}
-
-.details > div > p:first-child {
-  font-weight: bold; /* Set the font weight for the first paragraph */
-}
-
-.details > div > p:last-child {
-  margin-top: 10px; /* Add margin to the top of the last paragraph */
-}
-
-@media (max-width: 768px) {
-  form {
-    flex-direction: column; /* Change the direction of the flex items to column */
-  }
+@media (max-width: 768px){
+    form {
+        flex-direction: column;
+    }
 
-  form input[type="text"] {
-    width: 100%; /* Set the width of the input field to 100% */
-    margin-bottom: 10px; /* Add margin to the bottom of the input field */
-  }
+    form input[type="text"]{
+        width: 100%;
+        margin-bottom: 10px;
+    }
 }

From 99e37f27712cbb61c16566c92672dbc8037ff4bc Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sat, 4 Mar 2023 21:36:03 +0700
Subject: [PATCH 34/54] add new projects

---
 projects/basic-calculator/index.html   |  32 +++++
 projects/basic-calculator/script.js    |  35 +++++
 projects/basic-calculator/style.css    |  82 ++++++++++++
 projects/image-search-app/app.js       |  70 ++++++++++
 projects/image-search-app/index.html   |  28 ++++
 projects/image-search-app/style.css    | 170 +++++++++++++++++++++++++
 projects/music-player/index.html       |  34 +++++
 projects/music-player/pause.png        | Bin 0 -> 10406 bytes
 projects/music-player/play.png         | Bin 0 -> 4747 bytes
 projects/music-player/script.js        |  90 +++++++++++++
 projects/music-player/songs/song1.m4a  | Bin 0 -> 401133 bytes
 projects/music-player/songs/song2.m4a  | Bin 0 -> 401133 bytes
 projects/music-player/songs/song3.m4a  | Bin 0 -> 377289 bytes
 projects/music-player/style.css        |  90 +++++++++++++
 projects/simple-stopwatch/index.html   |  16 +++
 projects/simple-stopwatch/stopwatch.js |  78 ++++++++++++
 projects/simple-stopwatch/style.css    |  56 ++++++++
 17 files changed, 781 insertions(+)
 create mode 100644 projects/basic-calculator/index.html
 create mode 100644 projects/basic-calculator/script.js
 create mode 100644 projects/basic-calculator/style.css
 create mode 100644 projects/image-search-app/app.js
 create mode 100644 projects/image-search-app/index.html
 create mode 100644 projects/image-search-app/style.css
 create mode 100644 projects/music-player/index.html
 create mode 100644 projects/music-player/pause.png
 create mode 100644 projects/music-player/play.png
 create mode 100644 projects/music-player/script.js
 create mode 100644 projects/music-player/songs/song1.m4a
 create mode 100644 projects/music-player/songs/song2.m4a
 create mode 100644 projects/music-player/songs/song3.m4a
 create mode 100644 projects/music-player/style.css
 create mode 100644 projects/simple-stopwatch/index.html
 create mode 100644 projects/simple-stopwatch/stopwatch.js
 create mode 100644 projects/simple-stopwatch/style.css

diff --git a/projects/basic-calculator/index.html b/projects/basic-calculator/index.html
new file mode 100644
index 0000000..f9cf785
--- /dev/null
+++ b/projects/basic-calculator/index.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Simple Calculator</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <div class="calculator">
+      <input type="text" id="result" readonly /><br /><br />
+      <div class="buttons">
+        <button class="clear">C</button>
+        <button class="operator">/</button>
+        <button class="operator">*</button>
+        <button class="operator">-</button>
+        <button class="number">7</button>
+        <button class="number">8</button>
+        <button class="number">9</button>
+        <button class="operator">+</button>
+        <button class="number">4</button>
+        <button class="number">5</button>
+        <button class="number">6</button>
+        <button class="equals">=</button>
+        <button class="number">1</button>
+        <button class="number">2</button>
+        <button class="number">3</button>
+        <button class="number">0</button>
+        <button class="decimal">.</button>
+      </div>
+    </div>
+    <script src="script.js"></script>
+  </body>
+</html>
diff --git a/projects/basic-calculator/script.js b/projects/basic-calculator/script.js
new file mode 100644
index 0000000..c898ec4
--- /dev/null
+++ b/projects/basic-calculator/script.js
@@ -0,0 +1,35 @@
+const resultField = document.getElementById("result");
+const buttons = document.querySelectorAll("button");
+
+for (let i = 0; i < buttons.length; i++) {
+  const button = buttons[i];
+  button.addEventListener("click", function () {
+    const buttonValue = button.textContent;
+    if (buttonValue === "C") {
+      clearResult();
+    } else if (buttonValue === "=") {
+      calculate();
+    } else {
+      appendValue(buttonValue);
+    }
+  });
+}
+
+function appendValue(val) {
+  resultField.value += val;
+}
+
+function clearResult() {
+  resultField.value = "";
+}
+
+function calculate() {
+  const expression = resultField.value;
+  const result = eval(expression);
+  //   In JavaScript, eval() is a built-in function that evaluates a string as if it were a JavaScript code and returns the result. It can be used to dynamically evaluate expressions or code that is generated at runtime.
+
+  // In the context of a calculator, eval() can be used to evaluate the arithmetic expression entered by the user and return the result.
+
+  // For example, if the user enters the expression "2 + 3 * 4", eval("2 + 3 * 4") will return 14, which is the result of evaluating the expression.
+  resultField.value = result;
+}
diff --git a/projects/basic-calculator/style.css b/projects/basic-calculator/style.css
new file mode 100644
index 0000000..dbf9d16
--- /dev/null
+++ b/projects/basic-calculator/style.css
@@ -0,0 +1,82 @@
+* {
+  box-sizing: border-box;
+}
+
+/* By setting box-sizing: border-box on all elements, we are ensuring that any padding or border we add to an element will be included in its total size. */
+
+.calculator {
+  max-width: 400px;
+  margin: 0 auto;
+  margin-top: 30px;
+  padding: 20px;
+  background-color: #f2f2f2;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
+}
+
+#result {
+  width: 100%;
+  padding: 10px;
+  font-size: 24px;
+  border: none;
+  border-radius: 5px;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) inset;
+
+  /* In this case, the box-shadow property is set to 0 2px 5px rgba(0, 0, 0, 0.3) inset. This means that the shadow will have no horizontal offset (0), a vertical offset of 2px, a blur radius of 5px, and a color of rgba(0, 0, 0, 0.3). The inset keyword is used to specify that the shadow should be an inset shadow, rather than an outset shadow. */
+}
+
+.buttons {
+  display: grid;
+  grid-template-columns: repeat(4, 1fr);
+  /* grid-template-columns: repeat(4, 1fr) is a CSS property that sets the size of each column in a grid container. In this case, the repeat(4, 1fr) value creates a grid with four equal-sized columns.
+
+The fr unit stands for "fractional unit" and is used to divide the available space in a grid container. In this case, each column takes up an equal fraction of the available space, regardless of the size of the container.
+
+So, with grid-template-columns: repeat(4, 1fr), the grid container will be divided into four equal-sized columns, which is what we want for our calculator layout. */
+  grid-gap: 10px;
+  margin-top: 20px;
+}
+
+button {
+  padding: 10px;
+  font-size: 24px;
+  border: none;
+  border-radius: 5px;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
+  cursor: pointer;
+  transition: background-color 0.3s ease;
+}
+
+button:hover {
+  background-color: #ddd;
+}
+
+.clear {
+  background-color: #ff4136;
+  color: #fff;
+}
+
+.operator {
+  background-color: #0074d9;
+  color: #fff;
+}
+
+.number {
+  background-color: #fff;
+  color: #333;
+}
+
+.equals {
+  grid-row: span 3;
+  /* grid-row: span 3; is a CSS property that sets the number of rows an element spans in a CSS grid container.
+
+In this case, span 3 is used to make the element span three rows in the grid container.  */
+  background-color: #01ff70;
+  color: #fff;
+}
+
+.decimal {
+  background-color: #fff;
+  color: #333;
+}
diff --git a/projects/image-search-app/app.js b/projects/image-search-app/app.js
new file mode 100644
index 0000000..e342813
--- /dev/null
+++ b/projects/image-search-app/app.js
@@ -0,0 +1,70 @@
+// Set the access key for the Unsplash API
+const accessKey = "3I7M0FgMDBz0BC9OMC4e4wi9ByTMXZYt0Rk4fQ15TKs";
+
+// Get elements from the HTML document using their IDs
+const searchForm = document.getElementById("search-form");
+const searchInput = document.getElementById("search-input");
+const searchResults = document.getElementById("search-results");
+const showMoreButton = document.getElementById("show-more-button");
+
+// Initialize variables
+let page = 1;
+let query = "";
+
+// Create an asynchronous function to search for images
+async function searchImages() {
+  // Set the query value to the input value from the search form
+  query = searchInput.value;
+  // Create the URL for the Unsplash API with the page number, query, and access key
+  const url = `https://api.unsplash.com/search/photos?page=${page}&query=${query}&client_id=${accessKey}`;
+  // Send a request to the API and wait for the response
+  const response = await fetch(url);
+  // Parse the response data as JSON
+  const data = await response.json();
+  // Get the results array from the response data
+  const results = data.results;
+
+  // If this is the first page of results, clear the search results div
+  if (page === 1) {
+    searchResults.innerHTML = "";
+  }
+
+  // Loop through each result and create a div with an image and link for each one
+  results.forEach((result) => {
+    const imageWrapper = document.createElement("div");
+    imageWrapper.classList.add("search-result");
+
+    const image = document.createElement("img");
+    image.src = result.urls.small;
+    image.alt = result.alt_description;
+
+    const imageLink = document.createElement("a");
+    imageLink.href = result.links.html;
+    imageLink.target = "_blank";
+    imageLink.textContent = result.alt_description;
+
+    imageWrapper.appendChild(image);
+    imageWrapper.appendChild(imageLink);
+    searchResults.appendChild(imageWrapper);
+  });
+
+  // Increment the page number for the next search
+  page++;
+
+  // Show the "show more" button if there are more than one page of results
+  if (page > 1) {
+    showMoreButton.style.display = "block";
+  }
+}
+
+// Listen for a submit event on the search form, prevent the default action, and search for images
+searchForm.addEventListener("submit", (event) => {
+  event.preventDefault();
+  page = 1;
+  searchImages();
+});
+
+// Listen for a click event on the "show more" button and search for more images
+showMoreButton.addEventListener("click", () => {
+  searchImages();
+});
diff --git a/projects/image-search-app/index.html b/projects/image-search-app/index.html
new file mode 100644
index 0000000..92e769d
--- /dev/null
+++ b/projects/image-search-app/index.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>Unsplash Image Search App</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <h1>Image Search App</h1>
+    <form id="search-form">
+      <input type="text" id="search-input" placeholder="Search for images..." />
+      <button type="submit" id="search-button">Search</button>
+    </form>
+    <div id="search-results">
+      <!-- <div class="search-result">
+        <img
+          src="https://images.unsplash.com/photo-1503696967350-ad1874122058?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=Mnw0MTc4MDN8MHwxfHNlYXJjaHwxfHxuaWNlfGVufDB8fHx8MTY3NzgxOTYwMg&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=400"
+          alt="beach near road at daytime"
+        /><a href="https://unsplash.com/photos/mpVZVCClgac" target="_blank"
+          >beach near road at daytime</a
+        >
+      </div> -->
+    </div>
+    <button id="show-more-button">Show More</button>
+
+    <script src="app.js"></script>
+  </body>
+</html>
diff --git a/projects/image-search-app/style.css b/projects/image-search-app/style.css
new file mode 100644
index 0000000..07fc2e5
--- /dev/null
+++ b/projects/image-search-app/style.css
@@ -0,0 +1,170 @@
+body {
+  background-color: #f9f9f9; /* Sets the background color of the body element to a light gray */
+  font-family: Arial, sans-serif; /* Sets the font family of the text inside the body to Arial or a generic sans-serif font */
+  font-size: 16px; /* Sets the font size of the text inside the body to 16 pixels */
+  line-height: 1.6; /* Sets the line height of the text inside the body to 1.6 times the font size */
+  color: #333; /* Sets the color of the text inside the body to a dark gray */
+}
+
+h1 {
+  font-size: 36px; /* Sets the font size of the h1 heading to 36 pixels */
+  font-weight: bold; /* Makes the h1 heading bold */
+  text-align: center; /* Centers the h1 heading horizontally within its container */
+  margin-top: 40px; /* Adds a top margin of 40 pixels to the h1 heading */
+  margin-bottom: 60px; /* Adds a bottom margin of 60 pixels to the h1 heading */
+}
+
+#search-form {
+  display: flex; /* Set the display property of the element to flex */
+  justify-content: center; /* Center the child elements horizontally */
+  align-items: center; /* Center the child elements vertically */
+  margin-bottom: 60px; /* Add a bottom margin of 60 pixels to the element */
+}
+
+#search-input {
+  width: 60%; /* Set the width of the element to 60% of its container */
+  max-width: 400px; /* Set the maximum width of the element to 400 pixels */
+  padding: 10px 20px; /* Add 10 pixels of padding to the top and bottom and 20 pixels of padding to the left and right of the element */
+  border: none; /* Remove the border from the element */
+  border-radius: 5px; /* Add a 5-pixel radius to the element's border corners */
+  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Add a 5-pixel box shadow to the element */
+  font-size: 18px; /* Set the font size of the element to 18 pixels */
+  color: #333; /* Set the text color of the element to #333 */
+}
+
+#search-button {
+  padding: 10px 20px; /* Sets the padding of the button */
+  background-color: #4caf50; /* Sets the background color of the button */
+  color: white; /* Sets the text color of the button */
+  font-size: 18px; /* Sets the font size of the button text */
+  border: none; /* Removes the border of the button */
+  border-radius: 5px; /* Sets the border radius of the button */
+  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Sets the box shadow of the button */
+  cursor: pointer; /* Changes the cursor to pointer when hovering over the button */
+  transition: background-color 0.3s ease-in-out; /* Sets the transition effect when the background color changes */
+}
+
+#search-button:hover {
+  background-color: #3e8e41; /* Changes the background color when hovering over the button */
+}
+
+#search-results {
+  display: flex; /* sets the display type of the element to flex*/
+  flex-wrap: wrap; /* allows the flex items to wrap to multiple lines*/
+  justify-content: space-between; /* aligns the flex items along the main axis with equal spacing between them*/
+  margin: 0 auto; /* sets the top and bottom margins to 0 and the left and right margins to auto*/
+  max-width: 1200px; /* sets the maximum width of the element to 1200 pixels*/
+}
+
+/* Sets the styles for an individual search result element */
+.search-result {
+  /* Adds 60px margin to the bottom of each search result element */
+  margin-bottom: 60px;
+
+  /* Sets the width of the search result element to 30% of the parent container */
+  width: 30%;
+
+  /* Adds rounded corners to the search result element */
+  border-radius: 5px;
+
+  /* Adds a box shadow to the search result element */
+  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
+
+  /* Hides any content that overflows the search result element */
+  overflow: hidden;
+}
+
+.search-result img {
+  /* Sets the width of the image to 100% of its container element */
+  width: 100%;
+
+  /* Sets the height of the image to 200 pixels */
+  height: 200px;
+
+  /* Determines how the image should be resized to cover its container without distorting its aspect ratio */
+  object-fit: cover;
+
+  /* Specifies that any changes to the transform property of the image should be transitioned over a duration of 0.3 seconds with an easing function */
+  transition: transform 0.3s ease-in-out;
+}
+
+.search-result:hover img {
+  transform: scale(1.05);
+  /* The transform property scales the image by 1.05, making it 5% larger than its original size. This creates a zoom effect when the user hovers over the image. */
+}
+
+.search-result a {
+  display: block; /* sets the display type to block */
+  padding: 10px; /* adds padding to the top and bottom of the element */
+  color: #333; /* sets the text color to dark gray */
+  text-decoration: none; /* removes any text decoration */
+  transition: background-color 0.3s ease-in-out; /* sets a transition effect when the background color changes */
+}
+
+.search-result a:hover {
+  background-color: rgba(
+    0,
+    0,
+    0,
+    0.1
+  ); /* changes the background color to a light gray when the element is hovered over */
+}
+
+#show-more-button {
+  background-color: #008cba; /* Sets the background color of the button to a shade of blue */
+  border: none; /* Removes the border around the button */
+  color: white; /* Sets the font color of the button text to white */
+  padding: 10px 20px; /* Sets the padding of the button to 10px on the top and bottom, and 20px on the left and right */
+  text-align: center; /* Centers the button text horizontally */
+  text-decoration: none; /* Removes any text decoration such as underlining */
+  display: inline-block; /* Displays the button as an inline-level block container */
+  font-size: 16px; /* Sets the font size of the button text to 16px */
+  border-radius: 5px; /* Rounds the corners of the button to 5px */
+  margin-top: 20px; /* Adds a 20px margin on the top of the button */
+  transition: background-color 0.3s ease; /* Specifies a transition effect for the background color when hovering over the button */
+  display: none; /* Hides the button */
+  margin: 0 auto; /* Centers the button horizontally */
+  margin-bottom: 40px; /* Adds a 40px margin on the bottom of the button */
+  cursor: pointer; /* Sets the cursor to a pointer when hovering over the button */
+}
+
+#show-more-button:hover {
+  background-color: #0077b5; /* Changes the background color of the button to a darker shade of blue when hovering over it */
+}
+
+/* This is a CSS media query, which applies different styles based on the size of the screen.
+
+The first media query applies when the screen width is a maximum of 768px. In this case, it changes the justify-content property of #search-results to center the search results horizontally. It also changes the width of .search-result to 45%.
+
+The second media query applies when the screen width is a maximum of 480px. In this case, it changes the flex-direction property of #search-form to column, which stacks the search input and button vertically. It also adds a margin bottom to #search-input and changes the width of .search-result to 100%, making each search result take up the full width of the screen. */
+
+/* The following styles will apply when the screen size is 768px or smaller */
+@media screen and (max-width: 768px) {
+  /* Centers the search result items */
+  #search-results {
+    justify-content: center;
+  }
+
+  /* Decreases the width of each search result item */
+  .search-result {
+    width: 45%;
+  }
+}
+
+/* The following styles will apply when the screen size is 480px or smaller */
+@media screen and (max-width: 480px) {
+  /* Changes the direction of the search form to be vertical */
+  #search-form {
+    flex-direction: column;
+  }
+
+  /* Adds margin to the bottom of the search input */
+  #search-input {
+    margin-bottom: 20px;
+  }
+
+  /* Makes each search result item full width */
+  .search-result {
+    width: 100%;
+  }
+}
diff --git a/projects/music-player/index.html b/projects/music-player/index.html
new file mode 100644
index 0000000..20b6976
--- /dev/null
+++ b/projects/music-player/index.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Music Player</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h1 class="title">Music Player</h1>
+      <div class="player">
+        <audio id="player" src="" controls></audio>
+        <div class="player__controls">
+          <button class="player__button player__button--play"></button>
+          <button class="player__button player__button--pause"></button>
+        </div>
+        <div class="player__progress">
+          <div class="player__progress-bar"></div>
+        </div>
+      </div>
+      <ul class="playlist">
+        <li class="playlist__item">
+          <a href="#" data-src="songs/song1.m4a">Song 1</a>
+        </li>
+        <li class="playlist__item">
+          <a href="#" data-src="songs/song2.m4a">Song 2</a>
+        </li>
+        <li class="playlist__item">
+          <a href="#" data-src="songs/song3.m4a">Song 3</a>
+        </li>
+      </ul>
+    </div>
+    <script src="script.js"></script>
+  </body>
+</html>
diff --git a/projects/music-player/pause.png b/projects/music-player/pause.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c877cc4ee6711d85c7b3ce802c4f80a5c79dc9a
GIT binary patch
literal 10406
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

literal 0
HcmV?d00001

diff --git a/projects/music-player/play.png b/projects/music-player/play.png
new file mode 100644
index 0000000000000000000000000000000000000000..7019bf19e9654098f39159fc1192d9c76101ef10
GIT binary patch
literal 4747
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
PUjTaN47G~R+J^rNu=Y9e

literal 0
HcmV?d00001

diff --git a/projects/music-player/script.js b/projects/music-player/script.js
new file mode 100644
index 0000000..c037a17
--- /dev/null
+++ b/projects/music-player/script.js
@@ -0,0 +1,90 @@
+const playlist = [
+  { title: "Song 1", src: "songs/song1.m4a" },
+  { title: "Song 2", src: "songs/song2.m4a" },
+  { title: "Song 3", src: "songs/song3.m4a" },
+];
+
+const links = document.querySelectorAll(".playlist__item a");
+
+links.forEach((link) => {
+  link.addEventListener("click", function (e) {
+    e.preventDefault();
+    const source = this.getAttribute("data-src");
+    document.querySelector("#player").setAttribute("src", source);
+    playSong();
+
+    // Remove active class from all links
+    links.forEach((link) => {
+      link.classList.remove("active-song");
+    });
+
+    // Add active class to clicked link
+    this.classList.add("active-song");
+  });
+});
+
+function playSong() {
+  const player = document.querySelector("#player");
+  const playButton = document.querySelector(".player__button--play");
+  const pauseButton = document.querySelector(".player__button--pause");
+  const progressBar = document.querySelector(".player__progress-bar");
+
+  if (player.paused) {
+    player.play();
+    playButton.classList.remove("active");
+    pauseButton.classList.add("active");
+  } else {
+    player.pause();
+    playButton.classList.add("active");
+    pauseButton.classList.remove("active");
+  }
+
+  player.addEventListener("timeupdate", function () {
+    const progress = (player.currentTime / player.duration) * 100;
+    progressBar.style.width = `${progress}%`;
+  });
+
+  progressBar.addEventListener("click", function (e) {
+    const progressWidth = this.offsetWidth;
+    const clickedWidth = e.offsetX;
+    const percent = (clickedWidth / progressWidth) * 100;
+    player.currentTime = (player.duration / 100) * percent;
+    progressBar.style.width = `${percent}%`;
+  });
+}
+
+function playFirstSong() {
+  const firstSong = playlist[0].src;
+  document.querySelector("#player").setAttribute("src", firstSong);
+  playSong();
+}
+
+const playButton = document.querySelector(".player__button--play");
+const pauseButton = document.querySelector(".player__button--pause");
+
+playButton.addEventListener("click", function () {
+  const player = document.querySelector("#player");
+  player.play();
+  playButton.classList.remove("active");
+  pauseButton.classList.add("active");
+});
+
+pauseButton.addEventListener("click", function () {
+  const player = document.querySelector("#player");
+  player.pause();
+  playButton.classList.add("active");
+  pauseButton.classList.remove("active");
+});
+
+const player = document.querySelector("#player");
+player.addEventListener("play", function () {
+  playButton.classList.remove("active");
+  pauseButton.classList.add("active");
+});
+
+player.addEventListener("pause", function () {
+  playButton.classList.add("active");
+  pauseButton.classList.remove("active");
+});
+
+playFirstSong();
diff --git a/projects/music-player/songs/song1.m4a b/projects/music-player/songs/song1.m4a
new file mode 100644
index 0000000000000000000000000000000000000000..90842b1d0445c791b491934f29af5010008bebd4
GIT binary patch
literal 401133
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

literal 0
HcmV?d00001

diff --git a/projects/music-player/songs/song2.m4a b/projects/music-player/songs/song2.m4a
new file mode 100644
index 0000000000000000000000000000000000000000..13c7c3d87b95ff23367ce6aabbd6f36b705afcab
GIT binary patch
literal 401133
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
YOl0ez8!#azc$tt2Hb4m};dajd0W&qUWdHyG

literal 0
HcmV?d00001

diff --git a/projects/music-player/songs/song3.m4a b/projects/music-player/songs/song3.m4a
new file mode 100644
index 0000000000000000000000000000000000000000..02ba7a4b6dded7f0f208b3f26240cc6c4ff4467c
GIT binary patch
literal 377289
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
R;%<NmFu^gPhyTr-{{v`r^R@s0

literal 0
HcmV?d00001

diff --git a/projects/music-player/style.css b/projects/music-player/style.css
new file mode 100644
index 0000000..038d0b1
--- /dev/null
+++ b/projects/music-player/style.css
@@ -0,0 +1,90 @@
+* {
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+}
+
+body {
+  font-family: Arial, sans-serif;
+  background-color: #f2f2f2;
+}
+
+.container {
+  max-width: 600px;
+  margin: 0 auto;
+  padding: 0 20px;
+}
+
+.title {
+  text-align: center;
+  margin-top: 50px;
+  margin-bottom: 50px;
+}
+
+.player {
+  margin-bottom: 50px;
+}
+
+.player__controls {
+  display: flex;
+  justify-content: center;
+  margin-bottom: 20px;
+}
+
+.player__button {
+  width: 50px;
+  height: 50px;
+  background-color: #fff;
+  border: none;
+  cursor: pointer;
+  margin-right: 10px;
+  background-image: url("play.png");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 60%;
+}
+
+.player__button--pause {
+  background-image: url("pause.png");
+}
+
+.player__button.active {
+  background-color: #0074d9;
+  color: #fff;
+}
+
+.player__progress {
+  height: 5px;
+  background-color: #f5f5f5;
+  position: relative;
+}
+
+.player__progress-bar {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+  background-color: #0074d9;
+  width: 0%;
+}
+
+.playlist__item {
+  margin-bottom: 10px;
+}
+
+.playlist__item a {
+  display: block;
+  padding: 10px;
+  background-color: #fff;
+  color: #333;
+  text-decoration: none;
+}
+
+.playlist__item a:hover {
+  background-color: #f5f5f5;
+}
+
+.playlist__item a.active-song {
+  background-color: #0074d9;
+  color: #fff;
+}
diff --git a/projects/simple-stopwatch/index.html b/projects/simple-stopwatch/index.html
new file mode 100644
index 0000000..d61ac22
--- /dev/null
+++ b/projects/simple-stopwatch/index.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Stopwatch</title>
+    <link rel="stylesheet" type="text/css" href="style.css" />
+  </head>
+  <body>
+    <div id="timer">00:00:00</div>
+    <div id="buttons">
+      <button id="start">Start</button>
+      <button id="stop">Stop</button>
+      <button id="reset">Reset</button>
+    </div>
+    <script src="stopwatch.js"></script>
+  </body>
+</html>
diff --git a/projects/simple-stopwatch/stopwatch.js b/projects/simple-stopwatch/stopwatch.js
new file mode 100644
index 0000000..df0d14a
--- /dev/null
+++ b/projects/simple-stopwatch/stopwatch.js
@@ -0,0 +1,78 @@
+// Get references to the timer and button elements
+var timer = document.getElementById("timer");
+var startButton = document.getElementById("start");
+var stopButton = document.getElementById("stop");
+var resetButton = document.getElementById("reset");
+
+// Initialize variables for tracking the start time, elapsed time, and timer interval
+var startTime,
+  elapsedTime = 0,
+  timerInterval;
+
+// Function to start the timer
+function startTimer() {
+  // Calculate the start time by subtracting the elapsed time from the current time
+  startTime = Date.now() - elapsedTime;
+
+  // Start an interval that updates the timer display every 10 milliseconds
+  timerInterval = setInterval(function printTime() {
+    // Calculate the elapsed time by subtracting the start time from the current time
+    elapsedTime = Date.now() - startTime;
+
+    // Update the timer display with the formatted elapsed time
+    timer.textContent = formatTime(elapsedTime);
+  }, 10);
+
+  // Disable the start button and enable the stop button
+  startButton.disabled = true;
+  stopButton.disabled = false;
+}
+
+// Function to stop the timer
+function stopTimer() {
+  // Clear the interval that updates the timer display
+  clearInterval(timerInterval);
+
+  // Enable the start button and disable the stop button
+  startButton.disabled = false;
+  stopButton.disabled = true;
+}
+
+// Function to reset the timer
+function resetTimer() {
+  // Clear the interval that updates the timer display
+  clearInterval(timerInterval);
+
+  // Reset the elapsed time to 0 and update the timer display
+  elapsedTime = 0;
+  timer.textContent = "00:00:00";
+
+  // Enable the start button and disable the stop button
+  startButton.disabled = false;
+  stopButton.disabled = true;
+}
+
+// Function to format the elapsed time as a string
+function formatTime(time) {
+  var hours = Math.floor(time / (1000 * 60 * 60));
+  var minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60));
+  var seconds = Math.floor((time % (1000 * 60)) / 1000);
+  var milliseconds = Math.floor((time % 1000) / 10);
+  //   The ternary operator hours ? (hours > 9 ? hours : "0" + hours) : "00" checks if the hours variable has a value greater than zero. If it does, it checks if it is greater than 9. If it is, it returns the value of hours. If it is less than or equal to 9, it adds a leading zero to the hours value and returns it. If hours is zero, it returns the string "00".
+
+  // The same logic is applied to format the minutes and seconds values.
+  return (
+    (hours ? (hours > 9 ? hours : "0" + hours) : "00") +
+    ":" +
+    (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") +
+    ":" +
+    (seconds ? (seconds > 9 ? seconds : "0" + seconds) : "00") +
+    "." +
+    (milliseconds > 9 ? milliseconds : "0" + milliseconds)
+  );
+}
+
+// Add event listeners to the button elements to trigger the timer functions
+startButton.addEventListener("click", startTimer);
+stopButton.addEventListener("click", stopTimer);
+resetButton.addEventListener("click", resetTimer);
diff --git a/projects/simple-stopwatch/style.css b/projects/simple-stopwatch/style.css
new file mode 100644
index 0000000..f1a4e31
--- /dev/null
+++ b/projects/simple-stopwatch/style.css
@@ -0,0 +1,56 @@
+body {
+  background-color: #f0f0f0;
+  font-family: "Poppins", sans-serif;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  height: 100vh;
+  overflow: hidden;
+}
+
+#timer {
+  font-size: 7rem;
+  font-weight: 700;
+  color: #f92672;
+  text-shadow: 2px 2px #f8a5c2;
+  /* In the current code, the value 2px 2px #f8a5c2 sets a shadow that is 2 pixels to the right and 2 pixels down of the text, with a blur radius of 0 (no blur), and a color of #f8a5c2. */
+  width: 600px;
+  text-align: center;
+  margin: 40px auto;
+}
+
+#buttons {
+  display: flex;
+  justify-content: center;
+}
+
+button {
+  background-color: #f92672;
+  color: white;
+  border: none;
+  border-radius: 30px;
+  font-size: 2rem;
+  font-weight: bold;
+  padding: 1.5rem 4rem;
+  /* In the current code, the value 1.5rem 4rem sets a padding of 1.5rem (24px) for the top and bottom sides of the buttons, and 4rem (64px) for the left and right sides of the buttons. */
+  margin: 1rem;
+  cursor: pointer;
+  transition: background-color 0.2s;
+  box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.3);
+}
+
+button:hover {
+  background-color: #f44583;
+  box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
+}
+
+button:active {
+  background-color: #f34282;
+  box-shadow: none;
+}
+
+button[disabled] {
+  opacity: 0.5;
+  cursor: default;
+}

From d464c78ce257eefe24f2746dd6ead420107a0baa Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 6 Mar 2023 08:16:47 +0700
Subject: [PATCH 35/54] update image search app project

---
 projects/image-search-app/index.html |  51 ++++++--
 projects/image-search-app/index.js   |  54 ++++++++
 projects/image-search-app/style.css  | 183 ++++++++++-----------------
 3 files changed, 163 insertions(+), 125 deletions(-)
 create mode 100644 projects/image-search-app/index.js

diff --git a/projects/image-search-app/index.html b/projects/image-search-app/index.html
index 92e769d..47214ed 100644
--- a/projects/image-search-app/index.html
+++ b/projects/image-search-app/index.html
@@ -2,27 +2,56 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8" />
-    <title>Unsplash Image Search App</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Image Search App</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
     <h1>Image Search App</h1>
-    <form id="search-form">
+    <form>
       <input type="text" id="search-input" placeholder="Search for images..." />
-      <button type="submit" id="search-button">Search</button>
+      <button id="search-button">Search</button>
     </form>
-    <div id="search-results">
+    <div class="search-results">
       <!-- <div class="search-result">
         <img
-          src="https://images.unsplash.com/photo-1503696967350-ad1874122058?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=Mnw0MTc4MDN8MHwxfHNlYXJjaHwxfHxuaWNlfGVufDB8fHx8MTY3NzgxOTYwMg&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=400"
-          alt="beach near road at daytime"
-        /><a href="https://unsplash.com/photos/mpVZVCClgac" target="_blank"
-          >beach near road at daytime</a
+          src="https://plus.unsplash.com/premium_photo-1664361480561-3bdcd6eb3b6f?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8bmF0dXJlfGVufDB8fDB8fA%3D%3D&auto=format&fit=crop&w=1000&q=60"
+          alt="image"
+        />
+        <a
+          href="https://unsplash.com/photos/g-7X6T7vAI4"
+          target="_blank"
+          rel="noopener noreferrer"
+          >an image of a beach</a
+        >
+      </div>
+      <div class="search-result">
+        <img
+          src="https://plus.unsplash.com/premium_photo-1664361480561-3bdcd6eb3b6f?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8bmF0dXJlfGVufDB8fDB8fA%3D%3D&auto=format&fit=crop&w=1000&q=60"
+          alt="image"
+        />
+        <a
+          href="https://unsplash.com/photos/g-7X6T7vAI4"
+          target="_blank"
+          rel="noopener noreferrer"
+          >an image of a beach</a
+        >
+      </div>
+      <div class="search-result">
+        <img
+          src="https://plus.unsplash.com/premium_photo-1664361480561-3bdcd6eb3b6f?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8bmF0dXJlfGVufDB8fDB8fA%3D%3D&auto=format&fit=crop&w=1000&q=60"
+          alt="image"
+        />
+        <a
+          href="https://unsplash.com/photos/g-7X6T7vAI4"
+          target="_blank"
+          rel="noopener noreferrer"
+          >an image of a beach</a
         >
       </div> -->
     </div>
-    <button id="show-more-button">Show More</button>
-
-    <script src="app.js"></script>
+    <button id="show-more-button">Show more</button>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/image-search-app/index.js b/projects/image-search-app/index.js
new file mode 100644
index 0000000..87a94e1
--- /dev/null
+++ b/projects/image-search-app/index.js
@@ -0,0 +1,54 @@
+const accessKey = "RZEIOVfPhS7vMLkFdd2TSKGFBS4o9_FmcV1Nje3FSjw";
+
+const formEl = document.querySelector("form");
+const searchInputEl = document.getElementById("search-input");
+const searchResultsEl = document.querySelector(".search-results");
+const showMoreButtonEl = document.getElementById("show-more-button");
+
+let inputData = "";
+let page = 1;
+
+async function searchImages() {
+  inputData = searchInputEl.value;
+  const url = `https://api.unsplash.com/search/photos?page=${page}&query=${inputData}&client_id=${accessKey}`;
+
+  const response = await fetch(url);
+  const data = await response.json();
+  if (page === 1) {
+    searchResultsEl.innerHTML = "";
+  }
+
+  const results = data.results;
+
+  results.map((result) => {
+    const imageWrapper = document.createElement("div");
+    imageWrapper.classList.add("search-result");
+    const image = document.createElement("img");
+    image.src = result.urls.small;
+    image.alt = result.alt_description;
+    const imageLink = document.createElement("a");
+    imageLink.href = result.links.html;
+    imageLink.target = "_blank";
+    imageLink.textContent = result.alt_description;
+
+    imageWrapper.appendChild(image);
+    imageWrapper.appendChild(imageLink);
+    searchResultsEl.appendChild(imageWrapper);
+  });
+
+  page++;
+
+  if (page > 1) {
+    showMoreButtonEl.style.display = "block";
+  }
+}
+
+formEl.addEventListener("submit", (event) => {
+  event.preventDefault();
+  page = 1;
+  searchImages();
+});
+
+showMoreButtonEl.addEventListener("click", () => {
+  searchImages();
+});
diff --git a/projects/image-search-app/style.css b/projects/image-search-app/style.css
index 07fc2e5..875a68a 100644
--- a/projects/image-search-app/style.css
+++ b/projects/image-search-app/style.css
@@ -1,170 +1,125 @@
 body {
-  background-color: #f9f9f9; /* Sets the background color of the body element to a light gray */
-  font-family: Arial, sans-serif; /* Sets the font family of the text inside the body to Arial or a generic sans-serif font */
-  font-size: 16px; /* Sets the font size of the text inside the body to 16 pixels */
-  line-height: 1.6; /* Sets the line height of the text inside the body to 1.6 times the font size */
-  color: #333; /* Sets the color of the text inside the body to a dark gray */
+  background-color: #f9f9f9;
+  font-family: Arial, Helvetica, sans-serif;
+  line-height: 1.6;
+  margin: 0;
 }
 
 h1 {
-  font-size: 36px; /* Sets the font size of the h1 heading to 36 pixels */
-  font-weight: bold; /* Makes the h1 heading bold */
-  text-align: center; /* Centers the h1 heading horizontally within its container */
-  margin-top: 40px; /* Adds a top margin of 40 pixels to the h1 heading */
-  margin-bottom: 60px; /* Adds a bottom margin of 60 pixels to the h1 heading */
+  font-size: 36px;
+  font-weight: bold;
+  text-align: center;
+  margin-top: 40px;
+  margin-bottom: 60px;
 }
 
-#search-form {
-  display: flex; /* Set the display property of the element to flex */
-  justify-content: center; /* Center the child elements horizontally */
-  align-items: center; /* Center the child elements vertically */
-  margin-bottom: 60px; /* Add a bottom margin of 60 pixels to the element */
+form {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-bottom: 60px;
 }
 
 #search-input {
-  width: 60%; /* Set the width of the element to 60% of its container */
-  max-width: 400px; /* Set the maximum width of the element to 400 pixels */
-  padding: 10px 20px; /* Add 10 pixels of padding to the top and bottom and 20 pixels of padding to the left and right of the element */
-  border: none; /* Remove the border from the element */
-  border-radius: 5px; /* Add a 5-pixel radius to the element's border corners */
-  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Add a 5-pixel box shadow to the element */
-  font-size: 18px; /* Set the font size of the element to 18 pixels */
-  color: #333; /* Set the text color of the element to #333 */
+  width: 60%;
+  max-width: 400px;
+  padding: 10px 20px;
+  border: none;
+  box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
+  border-radius: 5px;
+  font-size: 18px;
+  color: #333;
 }
 
 #search-button {
-  padding: 10px 20px; /* Sets the padding of the button */
-  background-color: #4caf50; /* Sets the background color of the button */
-  color: white; /* Sets the text color of the button */
-  font-size: 18px; /* Sets the font size of the button text */
-  border: none; /* Removes the border of the button */
-  border-radius: 5px; /* Sets the border radius of the button */
-  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Sets the box shadow of the button */
-  cursor: pointer; /* Changes the cursor to pointer when hovering over the button */
-  transition: background-color 0.3s ease-in-out; /* Sets the transition effect when the background color changes */
+  padding: 10px 20px;
+  background-color: #4caf50;
+  color: white;
+  border: none;
+  font-size: 18px;
+  box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
+  cursor: pointer;
+  border-radius: 5px;
+  transition: background-color 0.3s ease-in-out;
 }
 
 #search-button:hover {
-  background-color: #3e8e41; /* Changes the background color when hovering over the button */
+  background-color: #3e8e41;
 }
 
-#search-results {
-  display: flex; /* sets the display type of the element to flex*/
-  flex-wrap: wrap; /* allows the flex items to wrap to multiple lines*/
-  justify-content: space-between; /* aligns the flex items along the main axis with equal spacing between them*/
-  margin: 0 auto; /* sets the top and bottom margins to 0 and the left and right margins to auto*/
-  max-width: 1200px; /* sets the maximum width of the element to 1200 pixels*/
+.search-results {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  max-width: 1200px;
+  margin: 0 auto;
+  padding: 20px;
 }
 
-/* Sets the styles for an individual search result element */
 .search-result {
-  /* Adds 60px margin to the bottom of each search result element */
   margin-bottom: 60px;
-
-  /* Sets the width of the search result element to 30% of the parent container */
   width: 30%;
-
-  /* Adds rounded corners to the search result element */
   border-radius: 5px;
-
-  /* Adds a box shadow to the search result element */
-  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
-
-  /* Hides any content that overflows the search result element */
+  box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
   overflow: hidden;
 }
 
+.search-result:hover img {
+  transform: scale(1.05);
+}
+
 .search-result img {
-  /* Sets the width of the image to 100% of its container element */
   width: 100%;
-
-  /* Sets the height of the image to 200 pixels */
   height: 200px;
-
-  /* Determines how the image should be resized to cover its container without distorting its aspect ratio */
   object-fit: cover;
-
-  /* Specifies that any changes to the transform property of the image should be transitioned over a duration of 0.3 seconds with an easing function */
   transition: transform 0.3s ease-in-out;
 }
-
-.search-result:hover img {
-  transform: scale(1.05);
-  /* The transform property scales the image by 1.05, making it 5% larger than its original size. This creates a zoom effect when the user hovers over the image. */
-}
-
 .search-result a {
-  display: block; /* sets the display type to block */
-  padding: 10px; /* adds padding to the top and bottom of the element */
-  color: #333; /* sets the text color to dark gray */
-  text-decoration: none; /* removes any text decoration */
-  transition: background-color 0.3s ease-in-out; /* sets a transition effect when the background color changes */
+  padding: 10px;
+  display: block;
+  color: #333;
+  text-decoration: none;
+  transition: background-color 0.3s ease-in-out;
 }
 
-.search-result a:hover {
-  background-color: rgba(
-    0,
-    0,
-    0,
-    0.1
-  ); /* changes the background color to a light gray when the element is hovered over */
+.search-result:hover a {
+  background-color: rgba(0, 0, 0, 0.1);
 }
 
 #show-more-button {
-  background-color: #008cba; /* Sets the background color of the button to a shade of blue */
-  border: none; /* Removes the border around the button */
-  color: white; /* Sets the font color of the button text to white */
-  padding: 10px 20px; /* Sets the padding of the button to 10px on the top and bottom, and 20px on the left and right */
-  text-align: center; /* Centers the button text horizontally */
-  text-decoration: none; /* Removes any text decoration such as underlining */
-  display: inline-block; /* Displays the button as an inline-level block container */
-  font-size: 16px; /* Sets the font size of the button text to 16px */
-  border-radius: 5px; /* Rounds the corners of the button to 5px */
-  margin-top: 20px; /* Adds a 20px margin on the top of the button */
-  transition: background-color 0.3s ease; /* Specifies a transition effect for the background color when hovering over the button */
-  display: none; /* Hides the button */
-  margin: 0 auto; /* Centers the button horizontally */
-  margin-bottom: 40px; /* Adds a 40px margin on the bottom of the button */
-  cursor: pointer; /* Sets the cursor to a pointer when hovering over the button */
+  background-color: #008cba;
+  border: none;
+  color: white;
+  padding: 10px 20px;
+  display: block;
+  margin: 20px auto;
+  text-align: center;
+  border-radius: 5px;
+  cursor: pointer;
+  transition: background-color 0.3s ease-in-out;
+  display: none;
 }
 
 #show-more-button:hover {
-  background-color: #0077b5; /* Changes the background color of the button to a darker shade of blue when hovering over it */
+  background-color: #0077b5;
 }
 
-/* This is a CSS media query, which applies different styles based on the size of the screen.
-
-The first media query applies when the screen width is a maximum of 768px. In this case, it changes the justify-content property of #search-results to center the search results horizontally. It also changes the width of .search-result to 45%.
-
-The second media query applies when the screen width is a maximum of 480px. In this case, it changes the flex-direction property of #search-form to column, which stacks the search input and button vertically. It also adds a margin bottom to #search-input and changes the width of .search-result to 100%, making each search result take up the full width of the screen. */
-
-/* The following styles will apply when the screen size is 768px or smaller */
 @media screen and (max-width: 768px) {
-  /* Centers the search result items */
-  #search-results {
-    justify-content: center;
-  }
-
-  /* Decreases the width of each search result item */
   .search-result {
     width: 45%;
   }
 }
-
-/* The following styles will apply when the screen size is 480px or smaller */
 @media screen and (max-width: 480px) {
-  /* Changes the direction of the search form to be vertical */
-  #search-form {
+  .search-result {
+    width: 100%;
+  }
+
+  form {
     flex-direction: column;
   }
 
-  /* Adds margin to the bottom of the search input */
   #search-input {
     margin-bottom: 20px;
-  }
-
-  /* Makes each search result item full width */
-  .search-result {
-    width: 100%;
+    width: 85%;
   }
 }

From 55fd9ba11128e1f1b19ba2eb4acdf882e5100572 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Wed, 8 Mar 2023 06:22:15 +0700
Subject: [PATCH 36/54] update basic calculator project

---
 projects/basic-calculator/index.html | 61 +++++++++--------
 projects/basic-calculator/index.js   | 29 ++++++++
 projects/basic-calculator/style.css  | 98 ++++++++++++----------------
 3 files changed, 103 insertions(+), 85 deletions(-)
 create mode 100644 projects/basic-calculator/index.js

diff --git a/projects/basic-calculator/index.html b/projects/basic-calculator/index.html
index f9cf785..432ea60 100644
--- a/projects/basic-calculator/index.html
+++ b/projects/basic-calculator/index.html
@@ -1,32 +1,35 @@
 <!DOCTYPE html>
-<html>
-  <head>
-    <title>Simple Calculator</title>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-  <body>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Basic Calculator</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="calculator">
-      <input type="text" id="result" readonly /><br /><br />
-      <div class="buttons">
-        <button class="clear">C</button>
-        <button class="operator">/</button>
-        <button class="operator">*</button>
-        <button class="operator">-</button>
-        <button class="number">7</button>
-        <button class="number">8</button>
-        <button class="number">9</button>
-        <button class="operator">+</button>
-        <button class="number">4</button>
-        <button class="number">5</button>
-        <button class="number">6</button>
-        <button class="equals">=</button>
-        <button class="number">1</button>
-        <button class="number">2</button>
-        <button class="number">3</button>
-        <button class="number">0</button>
-        <button class="decimal">.</button>
-      </div>
+        <input type="text" id="result" readonly>
+        <div class="buttons">
+            <button class="clear">C</button>
+            <button class="operator">/</button>
+            <button class="operator">*</button>
+            <button class="operator">-</button>
+            <button class="number">7</button>
+            <button class="number">8</button>
+            <button class="number">9</button>
+            <button class="operator">+</button>
+            <button class="number">4</button>
+            <button class="number">5</button>
+            <button class="number">6</button>
+            <button class="equals">=</button>
+            <button class="number">1</button>
+            <button class="number">2</button>
+            <button class="number">3</button>
+            <button class="number">0</button>
+            <button class="decimal">.</button>
+        </div>
     </div>
-    <script src="script.js"></script>
-  </body>
-</html>
+    <script src="index.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/basic-calculator/index.js b/projects/basic-calculator/index.js
new file mode 100644
index 0000000..40fa6e8
--- /dev/null
+++ b/projects/basic-calculator/index.js
@@ -0,0 +1,29 @@
+const buttonsEl = document.querySelectorAll("button");
+
+const inputFieldEl = document.getElementById("result");
+
+for (let i = 0; i < buttonsEl.length; i++) {
+  buttonsEl[i].addEventListener("click", () => {
+    const buttonValue = buttonsEl[i].textContent;
+    if (buttonValue === "C") {
+      clearResult();
+    } else if (buttonValue === "=") {
+      calculateResult();
+    } else {
+      appendValue(buttonValue);
+    }
+  });
+}
+
+function clearResult() {
+  inputFieldEl.value = "";
+}
+
+function calculateResult() {
+  inputFieldEl.value = eval(inputFieldEl.value);
+}
+
+function appendValue(buttonValue) {
+  inputFieldEl.value += buttonValue;
+  //   inputFieldEl.value = inputFieldEl.value + buttonValue;
+}
diff --git a/projects/basic-calculator/style.css b/projects/basic-calculator/style.css
index dbf9d16..baf4abd 100644
--- a/projects/basic-calculator/style.css
+++ b/projects/basic-calculator/style.css
@@ -1,82 +1,68 @@
 * {
   box-sizing: border-box;
+  margin: 0;
 }
 
-/* By setting box-sizing: border-box on all elements, we are ensuring that any padding or border we add to an element will be included in its total size. */
-
 .calculator {
+  background-color: #f2f2f2;
+  padding: 20px;
   max-width: 400px;
   margin: 0 auto;
-  margin-top: 30px;
-  padding: 20px;
-  background-color: #f2f2f2;
-  border: 1px solid #ccc;
-  border-radius: 5px;
+  border: solid 1px #ccc;
   box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
-}
-
-#result {
-  width: 100%;
-  padding: 10px;
-  font-size: 24px;
-  border: none;
   border-radius: 5px;
-  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) inset;
-
-  /* In this case, the box-shadow property is set to 0 2px 5px rgba(0, 0, 0, 0.3) inset. This means that the shadow will have no horizontal offset (0), a vertical offset of 2px, a blur radius of 5px, and a color of rgba(0, 0, 0, 0.3). The inset keyword is used to specify that the shadow should be an inset shadow, rather than an outset shadow. */
+  margin-top: 40px;
 }
 
-.buttons {
-  display: grid;
-  grid-template-columns: repeat(4, 1fr);
-  /* grid-template-columns: repeat(4, 1fr) is a CSS property that sets the size of each column in a grid container. In this case, the repeat(4, 1fr) value creates a grid with four equal-sized columns.
-
-The fr unit stands for "fractional unit" and is used to divide the available space in a grid container. In this case, each column takes up an equal fraction of the available space, regardless of the size of the container.
-
-So, with grid-template-columns: repeat(4, 1fr), the grid container will be divided into four equal-sized columns, which is what we want for our calculator layout. */
-  grid-gap: 10px;
-  margin-top: 20px;
+#result{
+    width: 100%;
+    padding: 10px;
+    font-size: 24px;
+    border: none;
+    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) inset;
+    border-radius: 5px;
 }
 
-button {
-  padding: 10px;
-  font-size: 24px;
-  border: none;
-  border-radius: 5px;
-  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
-  cursor: pointer;
-  transition: background-color 0.3s ease;
+.buttons{
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
+    grid-gap: 10px;
+    margin-top: 20px;
 }
 
-button:hover {
-  background-color: #ddd;
-}
+button{
+    padding: 10px;
+    font-size: 24px;
+    border: none;
+    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
+    border-radius: 5px;
+    cursor: pointer;
+    transition: background-color 0.3s ease;
 
-.clear {
-  background-color: #ff4136;
-  color: #fff;
 }
 
-.operator {
-  background-color: #0074d9;
-  color: #fff;
+button:hover{
+    background-color: #ddd;
 }
 
-.number {
-  background-color: #fff;
-  color: #333;
+.clear{
+    background-color: #ff4136;
+    color: #fff;
 }
 
-.equals {
-  grid-row: span 3;
-  /* grid-row: span 3; is a CSS property that sets the number of rows an element spans in a CSS grid container.
+.number, .decimal{
+    background-color: #fff;
+    color: #333;
 
-In this case, span 3 is used to make the element span three rows in the grid container.  */
-  background-color: #01ff70;
-  color: #fff;
 }
 
-.decimal {
-  background-color: #fff;
-  color: #333;
+.operator{
+    background-color: #0074d9;
+    color: #fff;
 }
+
+.equals{
+    background-color: #01ff70;
+    grid-row: span 3;
+    color: #fff;
+}
\ No newline at end of file

From d3c6e3cd7298a19708f63513d404b20e4bd4df6b Mon Sep 17 00:00:00 2001
From: Sahand Ghavidel <sahand.gha@gmail.com>
Date: Fri, 10 Mar 2023 14:12:23 +0700
Subject: [PATCH 37/54] Update README.md

---
 README.md | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md
index 0f57702..e54352e 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,15 @@
-# HTML-CSS-JavaScript-projects-for-beginners
-
-This is the source code of the YouTube video (10 projects) https://www.youtube.com/watch?v=ePzOFu2xXUQ.
-
-Part 2 (16 projects) : https://youtu.be/EWv2jnhZErc
-
-NEW HTML CSS JavaScript Projects    Interesting HTML CSS JavaScript projects    Learn HTML, CSS, and JavaScript 2021 to create modern websites.    Fun learning HTML, CSS, and JavaScript!    
-
-I'm Sahand, a web developer in computer science.   I've been doing this for over a decade.    This course was created to share my knowledge and experience with you.    Build simple websites using HTML, CSS, and JavaScript.    Responsive web design employs HTML, CSS, and JavaScript.   This is a skill you'll learn in this course.    This new course teaches students how to install Visual Studio Code and its extensions.    Then we start from scratch with each project.    After finishing HTML, it's on to CSS and JavaScript.    Building in HTML, CSS, or JavaScript is fine.    This guide explains HTML, CSS, and JavaScript syntax.    
-
-Every project is started from scratch and finished without using copied code.    Then they are used on the project to ensure everyone understands.    This program's exciting project-based curriculum includes building modern, super cool, and responsive websites!    Let's get started learning HTML, CSS, and JavaScript.    
-
-Contact me if you have any questions through my twitter: @codewithsahand. 
+# <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">50 HTML CSS JavaScript Projects</a>
+
+This is the source code of the Udemy course: <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">50 HTML CSS JavaScript Projects</a>
+<div>
+  Visit <a href="https://100jsprojects.com">100jsprojects.com</a> to preview the projects.
+
+  </div>
+<div style="max-width: 600px; margin: 0 auto; padding: 20px;">
+  <h1 style="font-size: 2rem; font-weight: bold; margin-bottom: 10px;">About</h1>
+  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "<a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">50 HTML CSS JavaScript Projects</a>," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.</p>
+  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">In this course, you'll learn how to install Visual Studio Code and its extensions, and then we'll start from scratch with each project. After finishing HTML, we'll move on to CSS and JavaScript. Building in HTML, CSS, or JavaScript is fine, and this guide will explain HTML, CSS, and JavaScript syntax.</p>
+  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Each project in this course is started from scratch and finished without using copied code. Then, we'll go over the code together to ensure that everyone understands. This program's exciting project-based curriculum includes building modern, super cool, and responsive websites!</p>
+  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">If you have any questions, please feel free to contact me through my Twitter: <a href="https://twitter.com/codewithsahand" style="color: #1a73e8; text-decoration: none; font-weight: bold;" target="_blank">@codewithsahand</a>.</p>
+  <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">Visit my website</a>
+</div>

From ce561ee048ed7f436a0cd0110fdae0e4ab708232 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 16 Mar 2023 10:53:15 +0700
Subject: [PATCH 38/54] update and clean files

---
 projects/basic-calculator/script.js           | 35 ----------
 projects/image-search-app/app.js              | 70 -------------------
 projects/new-year-countdown/index.html        |  2 +-
 projects/new-year-countdown/index.js          |  2 +-
 .../{Q&A-section => q-and-a-section}/app.js   |  0
 .../index.html                                |  0
 .../styles.css                                |  0
 7 files changed, 2 insertions(+), 107 deletions(-)
 delete mode 100644 projects/basic-calculator/script.js
 delete mode 100644 projects/image-search-app/app.js
 rename projects/{Q&A-section => q-and-a-section}/app.js (100%)
 rename projects/{Q&A-section => q-and-a-section}/index.html (100%)
 rename projects/{Q&A-section => q-and-a-section}/styles.css (100%)

diff --git a/projects/basic-calculator/script.js b/projects/basic-calculator/script.js
deleted file mode 100644
index c898ec4..0000000
--- a/projects/basic-calculator/script.js
+++ /dev/null
@@ -1,35 +0,0 @@
-const resultField = document.getElementById("result");
-const buttons = document.querySelectorAll("button");
-
-for (let i = 0; i < buttons.length; i++) {
-  const button = buttons[i];
-  button.addEventListener("click", function () {
-    const buttonValue = button.textContent;
-    if (buttonValue === "C") {
-      clearResult();
-    } else if (buttonValue === "=") {
-      calculate();
-    } else {
-      appendValue(buttonValue);
-    }
-  });
-}
-
-function appendValue(val) {
-  resultField.value += val;
-}
-
-function clearResult() {
-  resultField.value = "";
-}
-
-function calculate() {
-  const expression = resultField.value;
-  const result = eval(expression);
-  //   In JavaScript, eval() is a built-in function that evaluates a string as if it were a JavaScript code and returns the result. It can be used to dynamically evaluate expressions or code that is generated at runtime.
-
-  // In the context of a calculator, eval() can be used to evaluate the arithmetic expression entered by the user and return the result.
-
-  // For example, if the user enters the expression "2 + 3 * 4", eval("2 + 3 * 4") will return 14, which is the result of evaluating the expression.
-  resultField.value = result;
-}
diff --git a/projects/image-search-app/app.js b/projects/image-search-app/app.js
deleted file mode 100644
index e342813..0000000
--- a/projects/image-search-app/app.js
+++ /dev/null
@@ -1,70 +0,0 @@
-// Set the access key for the Unsplash API
-const accessKey = "3I7M0FgMDBz0BC9OMC4e4wi9ByTMXZYt0Rk4fQ15TKs";
-
-// Get elements from the HTML document using their IDs
-const searchForm = document.getElementById("search-form");
-const searchInput = document.getElementById("search-input");
-const searchResults = document.getElementById("search-results");
-const showMoreButton = document.getElementById("show-more-button");
-
-// Initialize variables
-let page = 1;
-let query = "";
-
-// Create an asynchronous function to search for images
-async function searchImages() {
-  // Set the query value to the input value from the search form
-  query = searchInput.value;
-  // Create the URL for the Unsplash API with the page number, query, and access key
-  const url = `https://api.unsplash.com/search/photos?page=${page}&query=${query}&client_id=${accessKey}`;
-  // Send a request to the API and wait for the response
-  const response = await fetch(url);
-  // Parse the response data as JSON
-  const data = await response.json();
-  // Get the results array from the response data
-  const results = data.results;
-
-  // If this is the first page of results, clear the search results div
-  if (page === 1) {
-    searchResults.innerHTML = "";
-  }
-
-  // Loop through each result and create a div with an image and link for each one
-  results.forEach((result) => {
-    const imageWrapper = document.createElement("div");
-    imageWrapper.classList.add("search-result");
-
-    const image = document.createElement("img");
-    image.src = result.urls.small;
-    image.alt = result.alt_description;
-
-    const imageLink = document.createElement("a");
-    imageLink.href = result.links.html;
-    imageLink.target = "_blank";
-    imageLink.textContent = result.alt_description;
-
-    imageWrapper.appendChild(image);
-    imageWrapper.appendChild(imageLink);
-    searchResults.appendChild(imageWrapper);
-  });
-
-  // Increment the page number for the next search
-  page++;
-
-  // Show the "show more" button if there are more than one page of results
-  if (page > 1) {
-    showMoreButton.style.display = "block";
-  }
-}
-
-// Listen for a submit event on the search form, prevent the default action, and search for images
-searchForm.addEventListener("submit", (event) => {
-  event.preventDefault();
-  page = 1;
-  searchImages();
-});
-
-// Listen for a click event on the "show more" button and search for more images
-showMoreButton.addEventListener("click", () => {
-  searchImages();
-});
diff --git a/projects/new-year-countdown/index.html b/projects/new-year-countdown/index.html
index c4c0578..3638291 100644
--- a/projects/new-year-countdown/index.html
+++ b/projects/new-year-countdown/index.html
@@ -9,7 +9,7 @@
   </head>
   <body>
     <h2>Countdown to New Year</h2>
-    <div class="year">2022</div>
+    <div class="year">2024</div>
     <div class="countdown">
       <div id="day">00</div>
       <div id="hour">00</div>
diff --git a/projects/new-year-countdown/index.js b/projects/new-year-countdown/index.js
index 1a89f36..3ee8cd0 100644
--- a/projects/new-year-countdown/index.js
+++ b/projects/new-year-countdown/index.js
@@ -3,7 +3,7 @@ const hourEl = document.getElementById("hour");
 const minuteEl = document.getElementById("minute");
 const secondEl = document.getElementById("second");
 
-const newYearTime = new Date("Jan 1, 2022 00:00:00").getTime();
+const newYearTime = new Date("Jan 1, 2024 00:00:00").getTime();
 
 updateCountdown();
 
diff --git a/projects/Q&A-section/app.js b/projects/q-and-a-section/app.js
similarity index 100%
rename from projects/Q&A-section/app.js
rename to projects/q-and-a-section/app.js
diff --git a/projects/Q&A-section/index.html b/projects/q-and-a-section/index.html
similarity index 100%
rename from projects/Q&A-section/index.html
rename to projects/q-and-a-section/index.html
diff --git a/projects/Q&A-section/styles.css b/projects/q-and-a-section/styles.css
similarity index 100%
rename from projects/Q&A-section/styles.css
rename to projects/q-and-a-section/styles.css

From e62d1612cced50fd90ddb8083119370e5aa72a54 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 16 Mar 2023 10:56:48 +0700
Subject: [PATCH 39/54] clean files 2

---
 projects/Navbar-project/index.html            | 34 -----------------
 projects/navbar/index.html                    | 38 +++++++++++++++++++
 projects/{Navbar-project => navbar}/index.js  |  0
 projects/{Navbar-project => navbar}/logo.svg  |  0
 .../{Navbar-project => navbar}/styles.css     |  0
 .../{Sidebar-project => sidebar}/index.html   |  0
 .../{Sidebar-project => sidebar}/index.js     |  0
 .../{Sidebar-project => sidebar}/logo.svg     |  0
 .../{Sidebar-project => sidebar}/styles.css   |  0
 9 files changed, 38 insertions(+), 34 deletions(-)
 delete mode 100644 projects/Navbar-project/index.html
 create mode 100644 projects/navbar/index.html
 rename projects/{Navbar-project => navbar}/index.js (100%)
 rename projects/{Navbar-project => navbar}/logo.svg (100%)
 rename projects/{Navbar-project => navbar}/styles.css (100%)
 rename projects/{Sidebar-project => sidebar}/index.html (100%)
 rename projects/{Sidebar-project => sidebar}/index.js (100%)
 rename projects/{Sidebar-project => sidebar}/logo.svg (100%)
 rename projects/{Sidebar-project => sidebar}/styles.css (100%)

diff --git a/projects/Navbar-project/index.html b/projects/Navbar-project/index.html
deleted file mode 100644
index 4975da5..0000000
--- a/projects/Navbar-project/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Sahand Ghavidel</title>
-    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />
-    <link rel="stylesheet" href="styles.css">
-</head>
-<body>
-    <nav>
-        <div class="nav-main">
-            <div class="nav-header">
-                <img src="./logo.svg" alt="logo">
-                <i class="fa fa-bars" aria-hidden="true"></i>
-            </div>
-            <ul class="menu">
-                <li>
-                    <a href="#">Home</a>
-                </li>
-                <li>
-                    <a href="#">About</a>
-                </li>
-                <li>
-                    <a href="#">Contact</a>
-                </li>
-            </ul>
-        </div>
-       
-    </nav>
-    <script src="index.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/projects/navbar/index.html b/projects/navbar/index.html
new file mode 100644
index 0000000..78fd71b
--- /dev/null
+++ b/projects/navbar/index.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Navbar project</title>
+    <link
+      rel="stylesheet"
+      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
+      integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
+      crossorigin="anonymous"
+    />
+    <link rel="stylesheet" href="styles.css" />
+  </head>
+  <body>
+    <nav>
+      <div class="nav-main">
+        <div class="nav-header">
+          <img src="./logo.svg" alt="logo" />
+          <i class="fa fa-bars" aria-hidden="true"></i>
+        </div>
+        <ul class="menu">
+          <li>
+            <a href="#">Home</a>
+          </li>
+          <li>
+            <a href="#">About</a>
+          </li>
+          <li>
+            <a href="#">Contact</a>
+          </li>
+        </ul>
+      </div>
+    </nav>
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/Navbar-project/index.js b/projects/navbar/index.js
similarity index 100%
rename from projects/Navbar-project/index.js
rename to projects/navbar/index.js
diff --git a/projects/Navbar-project/logo.svg b/projects/navbar/logo.svg
similarity index 100%
rename from projects/Navbar-project/logo.svg
rename to projects/navbar/logo.svg
diff --git a/projects/Navbar-project/styles.css b/projects/navbar/styles.css
similarity index 100%
rename from projects/Navbar-project/styles.css
rename to projects/navbar/styles.css
diff --git a/projects/Sidebar-project/index.html b/projects/sidebar/index.html
similarity index 100%
rename from projects/Sidebar-project/index.html
rename to projects/sidebar/index.html
diff --git a/projects/Sidebar-project/index.js b/projects/sidebar/index.js
similarity index 100%
rename from projects/Sidebar-project/index.js
rename to projects/sidebar/index.js
diff --git a/projects/Sidebar-project/logo.svg b/projects/sidebar/logo.svg
similarity index 100%
rename from projects/Sidebar-project/logo.svg
rename to projects/sidebar/logo.svg
diff --git a/projects/Sidebar-project/styles.css b/projects/sidebar/styles.css
similarity index 100%
rename from projects/Sidebar-project/styles.css
rename to projects/sidebar/styles.css

From f04e0e3acfb7b2ecf5a58c4f7445432e0d0e3814 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 16 Mar 2023 10:58:02 +0700
Subject: [PATCH 40/54] update folder name

---
 .../background-video.mp4                            | Bin
 .../index.html                                      |   0
 .../index.js                                        |   0
 .../preloader.gif                                   | Bin
 .../styles.css                                      |   0
 5 files changed, 0 insertions(+), 0 deletions(-)
 rename projects/{background-video-project => background-video}/background-video.mp4 (100%)
 rename projects/{background-video-project => background-video}/index.html (100%)
 rename projects/{background-video-project => background-video}/index.js (100%)
 rename projects/{background-video-project => background-video}/preloader.gif (100%)
 rename projects/{background-video-project => background-video}/styles.css (100%)

diff --git a/projects/background-video-project/background-video.mp4 b/projects/background-video/background-video.mp4
similarity index 100%
rename from projects/background-video-project/background-video.mp4
rename to projects/background-video/background-video.mp4
diff --git a/projects/background-video-project/index.html b/projects/background-video/index.html
similarity index 100%
rename from projects/background-video-project/index.html
rename to projects/background-video/index.html
diff --git a/projects/background-video-project/index.js b/projects/background-video/index.js
similarity index 100%
rename from projects/background-video-project/index.js
rename to projects/background-video/index.js
diff --git a/projects/background-video-project/preloader.gif b/projects/background-video/preloader.gif
similarity index 100%
rename from projects/background-video-project/preloader.gif
rename to projects/background-video/preloader.gif
diff --git a/projects/background-video-project/styles.css b/projects/background-video/styles.css
similarity index 100%
rename from projects/background-video-project/styles.css
rename to projects/background-video/styles.css

From 61d4cf2ce5b5525a4cb3dea0ed6b9f8be7079d84 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 23 Mar 2023 06:20:56 +0700
Subject: [PATCH 41/54] update stopwatch project

---
 projects/simple-stopwatch/style.css | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/projects/simple-stopwatch/style.css b/projects/simple-stopwatch/style.css
index f1a4e31..bea5522 100644
--- a/projects/simple-stopwatch/style.css
+++ b/projects/simple-stopwatch/style.css
@@ -54,3 +54,24 @@ button[disabled] {
   opacity: 0.5;
   cursor: default;
 }
+
+/* add media query */
+
+@media (max-width: 800px) {
+  #timer {
+    font-size: 4rem;
+    width: 350px;
+  }
+
+  button {
+    font-size: 1.5rem;
+    padding: 1rem 2rem;
+  }
+
+}
+
+
+
+
+/* add media query for tablet size */
+

From 3ff1ee95a8894bdef8f6526ee485f8812474e85e Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Fri, 24 Mar 2023 06:24:51 +0700
Subject: [PATCH 42/54] update stopwatch project

---
 projects/simple-stopwatch/index.html          | 16 ----
 projects/simple-stopwatch/stopwatch.js        | 78 -------------------
 projects/stopwatch/index.html                 | 20 +++++
 projects/stopwatch/index.js                   | 54 +++++++++++++
 .../{simple-stopwatch => stopwatch}/style.css | 26 ++-----
 5 files changed, 79 insertions(+), 115 deletions(-)
 delete mode 100644 projects/simple-stopwatch/index.html
 delete mode 100644 projects/simple-stopwatch/stopwatch.js
 create mode 100644 projects/stopwatch/index.html
 create mode 100644 projects/stopwatch/index.js
 rename projects/{simple-stopwatch => stopwatch}/style.css (62%)

diff --git a/projects/simple-stopwatch/index.html b/projects/simple-stopwatch/index.html
deleted file mode 100644
index d61ac22..0000000
--- a/projects/simple-stopwatch/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>Stopwatch</title>
-    <link rel="stylesheet" type="text/css" href="style.css" />
-  </head>
-  <body>
-    <div id="timer">00:00:00</div>
-    <div id="buttons">
-      <button id="start">Start</button>
-      <button id="stop">Stop</button>
-      <button id="reset">Reset</button>
-    </div>
-    <script src="stopwatch.js"></script>
-  </body>
-</html>
diff --git a/projects/simple-stopwatch/stopwatch.js b/projects/simple-stopwatch/stopwatch.js
deleted file mode 100644
index df0d14a..0000000
--- a/projects/simple-stopwatch/stopwatch.js
+++ /dev/null
@@ -1,78 +0,0 @@
-// Get references to the timer and button elements
-var timer = document.getElementById("timer");
-var startButton = document.getElementById("start");
-var stopButton = document.getElementById("stop");
-var resetButton = document.getElementById("reset");
-
-// Initialize variables for tracking the start time, elapsed time, and timer interval
-var startTime,
-  elapsedTime = 0,
-  timerInterval;
-
-// Function to start the timer
-function startTimer() {
-  // Calculate the start time by subtracting the elapsed time from the current time
-  startTime = Date.now() - elapsedTime;
-
-  // Start an interval that updates the timer display every 10 milliseconds
-  timerInterval = setInterval(function printTime() {
-    // Calculate the elapsed time by subtracting the start time from the current time
-    elapsedTime = Date.now() - startTime;
-
-    // Update the timer display with the formatted elapsed time
-    timer.textContent = formatTime(elapsedTime);
-  }, 10);
-
-  // Disable the start button and enable the stop button
-  startButton.disabled = true;
-  stopButton.disabled = false;
-}
-
-// Function to stop the timer
-function stopTimer() {
-  // Clear the interval that updates the timer display
-  clearInterval(timerInterval);
-
-  // Enable the start button and disable the stop button
-  startButton.disabled = false;
-  stopButton.disabled = true;
-}
-
-// Function to reset the timer
-function resetTimer() {
-  // Clear the interval that updates the timer display
-  clearInterval(timerInterval);
-
-  // Reset the elapsed time to 0 and update the timer display
-  elapsedTime = 0;
-  timer.textContent = "00:00:00";
-
-  // Enable the start button and disable the stop button
-  startButton.disabled = false;
-  stopButton.disabled = true;
-}
-
-// Function to format the elapsed time as a string
-function formatTime(time) {
-  var hours = Math.floor(time / (1000 * 60 * 60));
-  var minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60));
-  var seconds = Math.floor((time % (1000 * 60)) / 1000);
-  var milliseconds = Math.floor((time % 1000) / 10);
-  //   The ternary operator hours ? (hours > 9 ? hours : "0" + hours) : "00" checks if the hours variable has a value greater than zero. If it does, it checks if it is greater than 9. If it is, it returns the value of hours. If it is less than or equal to 9, it adds a leading zero to the hours value and returns it. If hours is zero, it returns the string "00".
-
-  // The same logic is applied to format the minutes and seconds values.
-  return (
-    (hours ? (hours > 9 ? hours : "0" + hours) : "00") +
-    ":" +
-    (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") +
-    ":" +
-    (seconds ? (seconds > 9 ? seconds : "0" + seconds) : "00") +
-    "." +
-    (milliseconds > 9 ? milliseconds : "0" + milliseconds)
-  );
-}
-
-// Add event listeners to the button elements to trigger the timer functions
-startButton.addEventListener("click", startTimer);
-stopButton.addEventListener("click", stopTimer);
-resetButton.addEventListener("click", resetTimer);
diff --git a/projects/stopwatch/index.html b/projects/stopwatch/index.html
new file mode 100644
index 0000000..05d8b2b
--- /dev/null
+++ b/projects/stopwatch/index.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Stopwatch</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
+
+    <div id="timer">00:00:00</div>
+    <div id="buttons">
+        <button id="start">Start</button>
+        <button id="stop">Stop</button>
+        <button id="reset">Reset</button>
+    </div>
+    <script src="index.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/stopwatch/index.js b/projects/stopwatch/index.js
new file mode 100644
index 0000000..0cbd647
--- /dev/null
+++ b/projects/stopwatch/index.js
@@ -0,0 +1,54 @@
+const timerEl = document.getElementById("timer");
+const startButtonEl = document.getElementById("start");
+const stopButtonEl = document.getElementById("stop");
+const resetButtonEl = document.getElementById("reset");
+
+let startTime = 0;
+let elapsedTime = 0;
+let timerInterval;
+
+function startTimer() {
+  startTime = Date.now() - elapsedTime;
+
+  timerInterval = setInterval(() => {
+    elapsedTime = Date.now() - startTime;
+    timerEl.textContent = formatTime(elapsedTime);
+  }, 10);
+
+  startButtonEl.disabled = true;
+  stopButtonEl.disabled = false;
+}
+
+function formatTime(elapsedTime) {
+  const milliseconds = Math.floor((elapsedTime % 1000) / 10);
+  const seconds = Math.floor((elapsedTime % (1000 * 60)) / 1000);
+  const minutes = Math.floor((elapsedTime % (1000 * 60 * 60)) / (1000 * 60));
+  const hours = Math.floor(elapsedTime / (1000 * 60 * 60));
+  return (
+    (hours ? (hours > 9 ? hours : "0" + hours) : "00") +
+    ":" +
+    (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") +
+    ":" +
+    (seconds ? (seconds > 9 ? seconds : "0" + seconds) : "00") +
+    "." +
+    (milliseconds > 9 ? milliseconds : "0" + milliseconds)
+  );
+}
+function stopTimer() {
+  clearInterval(timerInterval);
+  startButtonEl.disabled = false;
+  stopButtonEl.disabled = true;
+}
+function resetTimer() {
+  clearInterval(timerInterval);
+
+  elapsedTime = 0;
+  timerEl.textContent = "00:00:00";
+
+  startButtonEl.disabled = false;
+  stopButtonEl.disabled = true;
+}
+
+startButtonEl.addEventListener("click", startTimer);
+stopButtonEl.addEventListener("click", stopTimer);
+resetButtonEl.addEventListener("click", resetTimer);
diff --git a/projects/simple-stopwatch/style.css b/projects/stopwatch/style.css
similarity index 62%
rename from projects/simple-stopwatch/style.css
rename to projects/stopwatch/style.css
index bea5522..cf0859d 100644
--- a/projects/simple-stopwatch/style.css
+++ b/projects/stopwatch/style.css
@@ -4,17 +4,16 @@ body {
   display: flex;
   flex-direction: column;
   justify-content: center;
-  align-items: center;
-  height: 100vh;
+  min-height: 100vh;
   overflow: hidden;
+  align-items: center;
 }
 
 #timer {
   font-size: 7rem;
   font-weight: 700;
-  color: #f92672;
   text-shadow: 2px 2px #f8a5c2;
-  /* In the current code, the value 2px 2px #f8a5c2 sets a shadow that is 2 pixels to the right and 2 pixels down of the text, with a blur radius of 0 (no blur), and a color of #f8a5c2. */
+  color: #f92672;
   width: 600px;
   text-align: center;
   margin: 40px auto;
@@ -29,15 +28,14 @@ button {
   background-color: #f92672;
   color: white;
   border: none;
-  border-radius: 30px;
   font-size: 2rem;
   font-weight: bold;
   padding: 1.5rem 4rem;
-  /* In the current code, the value 1.5rem 4rem sets a padding of 1.5rem (24px) for the top and bottom sides of the buttons, and 4rem (64px) for the left and right sides of the buttons. */
   margin: 1rem;
+  border-radius: 30px;
   cursor: pointer;
-  transition: background-color 0.2s;
   box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.3);
+  transition: all 0.2s;
 }
 
 button:hover {
@@ -45,18 +43,11 @@ button:hover {
   box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
 }
 
-button:active {
-  background-color: #f34282;
-  box-shadow: none;
-}
-
 button[disabled] {
   opacity: 0.5;
   cursor: default;
 }
 
-/* add media query */
-
 @media (max-width: 800px) {
   #timer {
     font-size: 4rem;
@@ -67,11 +58,4 @@ button[disabled] {
     font-size: 1.5rem;
     padding: 1rem 2rem;
   }
-
 }
-
-
-
-
-/* add media query for tablet size */
-

From 051f5a567b3b1f15b9bdcf63064391fcd96e438a Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Fri, 24 Mar 2023 06:42:33 +0700
Subject: [PATCH 43/54] update double landing page projects

---
 projects/double-landing-page/style.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/projects/double-landing-page/style.css b/projects/double-landing-page/style.css
index 5a62c04..0d37d66 100644
--- a/projects/double-landing-page/style.css
+++ b/projects/double-landing-page/style.css
@@ -11,7 +11,7 @@ body {
 h1 {
   font-size: 100px;
   color: aliceblue;
-  backdrop-filter: brightness(0.5);
+  background-color: rgba(0, 0, 0, 0.3);
   letter-spacing: 4px;
 }
 

From 0c0e315a232d39f5c68ae549c22090148c135f62 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sat, 25 Mar 2023 05:33:17 +0700
Subject: [PATCH 44/54] add rock paper scissors game and pomodoro timer
 projects

---
 projects/pomodoro-timer/index.html           | 19 +++++
 projects/pomodoro-timer/index.js             | 47 ++++++++++++
 projects/pomodoro-timer/style.css            | 62 ++++++++++++++++
 projects/rock-paper-scissors-game/index.html | 27 +++++++
 projects/rock-paper-scissors-game/index.js   | 44 ++++++++++++
 projects/rock-paper-scissors-game/style.css  | 75 ++++++++++++++++++++
 6 files changed, 274 insertions(+)
 create mode 100644 projects/pomodoro-timer/index.html
 create mode 100644 projects/pomodoro-timer/index.js
 create mode 100644 projects/pomodoro-timer/style.css
 create mode 100644 projects/rock-paper-scissors-game/index.html
 create mode 100644 projects/rock-paper-scissors-game/index.js
 create mode 100644 projects/rock-paper-scissors-game/style.css

diff --git a/projects/pomodoro-timer/index.html b/projects/pomodoro-timer/index.html
new file mode 100644
index 0000000..39dfbb7
--- /dev/null
+++ b/projects/pomodoro-timer/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Pomodoro Timer</title>
+    <link rel="stylesheet" type="text/css" href="style.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h1 class="title">Pomodoro Timer</h1>
+      <p id="timer" class="timer">25:00</p>
+      <div class="button-wrapper">
+        <button id="start" class="button button--start">Start</button>
+        <button id="stop" class="button button--stop">Stop</button>
+        <button id="reset" class="button button--reset">Reset</button>
+      </div>
+    </div>
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/pomodoro-timer/index.js b/projects/pomodoro-timer/index.js
new file mode 100644
index 0000000..af8598e
--- /dev/null
+++ b/projects/pomodoro-timer/index.js
@@ -0,0 +1,47 @@
+const startEl = document.getElementById("start");
+const stopEl = document.getElementById("stop");
+const resetEl = document.getElementById("reset");
+const timerEl = document.getElementById("timer");
+
+let intervalId;
+let timeLeft = 1500; // 25 minutes in seconds
+
+function updateTimer() {
+  let minutes = Math.floor(timeLeft / 60);
+  let seconds = timeLeft % 60;
+  let formattedTime = `${minutes.toString().padStart(2, "0")}:${seconds
+    .toString()
+    .padStart(2, "0")}`;
+  // padStart() is a built-in method in JavaScript that allows you to pad a string with another string until it reaches a specified length. It's often used to format strings to a specific length, such as adding leading zeros to a number.
+  //   const str = '7';
+  // const paddedStr = str.padStart(2, '0');
+
+  // console.log(paddedStr); // Output: '07'
+
+  timerEl.innerHTML = formattedTime;
+}
+
+function startTimer() {
+  intervalId = setInterval(() => {
+    timeLeft--;
+    updateTimer();
+    if (timeLeft === 0) {
+      clearInterval(intervalId);
+      alert("Time's up!");
+    }
+  }, 1000);
+}
+
+function stopTimer() {
+  clearInterval(intervalId);
+}
+
+function resetTimer() {
+  clearInterval(intervalId);
+  timeLeft = 1500;
+  updateTimer();
+}
+
+startEl.addEventListener("click", startTimer);
+stopEl.addEventListener("click", stopTimer);
+resetEl.addEventListener("click", resetTimer);
diff --git a/projects/pomodoro-timer/style.css b/projects/pomodoro-timer/style.css
new file mode 100644
index 0000000..8583f8f
--- /dev/null
+++ b/projects/pomodoro-timer/style.css
@@ -0,0 +1,62 @@
+/* Pomodoro Timer styles */
+
+.container {
+  font-family: "Roboto", Arial, Helvetica, sans-serif;
+  margin: 0 auto;
+  max-width: 400px;
+  padding: 20px;
+  text-align: center;
+}
+
+.title {
+  font-size: 36px;
+  margin-bottom: 10px;
+  color: #2c3e50;
+}
+
+.timer {
+  font-size: 72px;
+  color: #2c3e50;
+}
+
+.button-wrapper {
+  display: flex;
+  justify-content: center;
+}
+
+.button {
+  border: none;
+  border-radius: 4px;
+  color: #fff;
+  font-size: 18px;
+  font-weight: bold;
+  margin-right: 10px;
+  padding: 10px 20px;
+  text-transform: uppercase;
+  transition: all 0.2s;
+  cursor: pointer;
+}
+
+.button--start {
+  background-color: #27ae60;
+}
+
+.button--start:hover {
+  background-color: #229954;
+}
+
+.button--stop {
+  background-color: #c0392b;
+}
+
+.button--stop:hover {
+  background-color: #a93226;
+}
+
+.button--reset {
+  background-color: #7f8c8d;
+}
+
+.button--reset:hover {
+  background-color: #6c7a7d;
+}
diff --git a/projects/rock-paper-scissors-game/index.html b/projects/rock-paper-scissors-game/index.html
new file mode 100644
index 0000000..d736e45
--- /dev/null
+++ b/projects/rock-paper-scissors-game/index.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Rock Paper Scissors</title>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <link rel="stylesheet" type="text/css" href="style.css" />
+  </head>
+  <body>
+    <h1>Rock Paper Scissors Game</h1>
+    <p>Choose your move:</p>
+    <div class="buttons">
+      <button id="rock">&#x1F44A;</button>
+      <button id="paper">&#x1F590;</button>
+      <button id="scissors">&#x270C;</button>
+
+      <!--  HTML entities are used to display the icons. -->
+    </div>
+    <p id="result"></p>
+    <p id="scores">
+      Your score: <span id="player-score">0</span> Computer's score:
+      <span id="computer-score">0</span>
+    </p>
+
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/rock-paper-scissors-game/index.js b/projects/rock-paper-scissors-game/index.js
new file mode 100644
index 0000000..e003110
--- /dev/null
+++ b/projects/rock-paper-scissors-game/index.js
@@ -0,0 +1,44 @@
+const buttons = document.querySelectorAll("button");
+let playerScore = 0;
+let computerScore = 0;
+
+buttons.forEach((button) => {
+  button.addEventListener("click", () => {
+    playRound(button.id, computerPlay());
+  });
+});
+
+function computerPlay() {
+  const choices = ["rock", "paper", "scissors"];
+  return choices[Math.floor(Math.random() * choices.length)];
+}
+
+function playRound(playerSelection, computerSelection) {
+  if (playerSelection === computerSelection) {
+    document.getElementById("result").textContent = "Tie game!";
+  } else if (
+    (playerSelection === "rock" && computerSelection === "scissors") ||
+    (playerSelection === "paper" && computerSelection === "rock") ||
+    (playerSelection === "scissors" && computerSelection === "paper")
+  ) {
+    playerScore++;
+    document.getElementById(
+      "result"
+    ).textContent = `You win! ${playerSelection} beats ${computerSelection}`;
+  } else {
+    computerScore++;
+    document.getElementById(
+      "result"
+    ).textContent = `You lose! ${computerSelection} beats ${playerSelection}`;
+  }
+  updateScore();
+}
+
+function updateScore() {
+  document.getElementById(
+    "player-score"
+  ).textContent = `Your score: ${playerScore}`;
+  document.getElementById(
+    "computer-score"
+  ).textContent = `Computer's score: ${computerScore}`;
+}
diff --git a/projects/rock-paper-scissors-game/style.css b/projects/rock-paper-scissors-game/style.css
new file mode 100644
index 0000000..8962ff0
--- /dev/null
+++ b/projects/rock-paper-scissors-game/style.css
@@ -0,0 +1,75 @@
+* {
+  box-sizing: border-box;
+}
+
+body {
+  background-color: #f1f1f1;
+  font-family: Arial, sans-serif;
+  margin: 0;
+  padding: 0;
+}
+
+h1 {
+  font-size: 2rem;
+  text-align: center;
+  padding-top: 100px;
+}
+
+p {
+  font-size: 1.2rem;
+  margin-bottom: 0.5rem;
+  text-align: center;
+}
+
+.buttons {
+  display: flex;
+  justify-content: center;
+}
+
+button {
+  border: none;
+  border-radius: 5px;
+  color: white;
+  cursor: pointer;
+  font-size: 3rem;
+  margin: 0 0.5rem;
+  padding: 0.5rem;
+  transition: all 0.3s ease-in-out;
+}
+
+button:hover {
+  opacity: 0.7;
+}
+
+#rock {
+  background-color: #f44336; /* Red */
+}
+
+#paper {
+  background-color: #2196f3; /* Blue */
+}
+
+#scissors {
+  background-color: #4caf50; /* Green */
+}
+
+#result {
+  font-size: 1.5rem;
+  font-weight: bold;
+  margin: 1rem 0;
+}
+
+#scores {
+  font-size: 1.2rem;
+  font-weight: bold;
+  text-align: center;
+}
+
+#player-score {
+  color: #4caf50;
+  margin-right: 0.5rem;
+}
+
+#computer-score {
+  color: #f44336;
+}

From 07a16873b84779a27b0dad8d78148b1aded64f18 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sat, 25 Mar 2023 13:44:14 +0700
Subject: [PATCH 45/54] update Rock Paper Scissors Game project

---
 projects/rock-paper-scissors-game/index.html | 34 ++++++++--------
 projects/rock-paper-scissors-game/index.js   | 36 ++++++++---------
 projects/rock-paper-scissors-game/style.css  | 41 ++++++--------------
 3 files changed, 45 insertions(+), 66 deletions(-)

diff --git a/projects/rock-paper-scissors-game/index.html b/projects/rock-paper-scissors-game/index.html
index d736e45..c458606 100644
--- a/projects/rock-paper-scissors-game/index.html
+++ b/projects/rock-paper-scissors-game/index.html
@@ -1,27 +1,25 @@
 <!DOCTYPE html>
-<html>
-  <head>
-    <title>Rock Paper Scissors</title>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <link rel="stylesheet" type="text/css" href="style.css" />
-  </head>
-  <body>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Rock Paper Scissors Game</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <h1>Rock Paper Scissors Game</h1>
     <p>Choose your move:</p>
     <div class="buttons">
-      <button id="rock">&#x1F44A;</button>
-      <button id="paper">&#x1F590;</button>
-      <button id="scissors">&#x270C;</button>
-
-      <!--  HTML entities are used to display the icons. -->
+        <button id="rock">&#x1F44A;</button>
+        <button id="paper">&#x1f590;</button>
+        <button id="scissors">&#x270c;</button>
     </div>
     <p id="result"></p>
     <p id="scores">
-      Your score: <span id="player-score">0</span> Computer's score:
-      <span id="computer-score">0</span>
+        Your score: <span id="user-score">0</span>
+        Computer score: <span id="computer-score">0</span>
     </p>
-
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/rock-paper-scissors-game/index.js b/projects/rock-paper-scissors-game/index.js
index e003110..4944f3e 100644
--- a/projects/rock-paper-scissors-game/index.js
+++ b/projects/rock-paper-scissors-game/index.js
@@ -1,44 +1,42 @@
 const buttons = document.querySelectorAll("button");
+
+const resultEl = document.getElementById("result");
+
+const playerScoreEl = document.getElementById("user-score");
+
+const computerScoreEl = document.getElementById("computer-score");
+
 let playerScore = 0;
 let computerScore = 0;
 
 buttons.forEach((button) => {
   button.addEventListener("click", () => {
-    playRound(button.id, computerPlay());
+    const result = playRound(button.id, computerPlay());
+    resultEl.textContent = result;
+    
   });
 });
 
 function computerPlay() {
   const choices = ["rock", "paper", "scissors"];
-  return choices[Math.floor(Math.random() * choices.length)];
+  const randomChoice = Math.floor(Math.random() * choices.length);
+  return choices[randomChoice];
 }
 
 function playRound(playerSelection, computerSelection) {
   if (playerSelection === computerSelection) {
-    document.getElementById("result").textContent = "Tie game!";
+    return "It's a tie!";
   } else if (
     (playerSelection === "rock" && computerSelection === "scissors") ||
     (playerSelection === "paper" && computerSelection === "rock") ||
     (playerSelection === "scissors" && computerSelection === "paper")
   ) {
     playerScore++;
-    document.getElementById(
-      "result"
-    ).textContent = `You win! ${playerSelection} beats ${computerSelection}`;
+    playerScoreEl.textContent = playerScore;
+    return "You win! " + playerSelection + " beats " + computerSelection;
   } else {
     computerScore++;
-    document.getElementById(
-      "result"
-    ).textContent = `You lose! ${computerSelection} beats ${playerSelection}`;
+    computerScoreEl.textContent = computerScore;
+    return "You lose! " + computerSelection + " beats " + playerSelection;
   }
-  updateScore();
-}
-
-function updateScore() {
-  document.getElementById(
-    "player-score"
-  ).textContent = `Your score: ${playerScore}`;
-  document.getElementById(
-    "computer-score"
-  ).textContent = `Computer's score: ${computerScore}`;
 }
diff --git a/projects/rock-paper-scissors-game/style.css b/projects/rock-paper-scissors-game/style.css
index 8962ff0..940eff4 100644
--- a/projects/rock-paper-scissors-game/style.css
+++ b/projects/rock-paper-scissors-game/style.css
@@ -1,10 +1,6 @@
-* {
-  box-sizing: border-box;
-}
-
 body {
   background-color: #f1f1f1;
-  font-family: Arial, sans-serif;
+  font-family: "Arial", sans-serif;
   margin: 0;
   padding: 0;
 }
@@ -16,9 +12,10 @@ h1 {
 }
 
 p {
-  font-size: 1.2rem;
-  margin-bottom: 0.5rem;
+  font-size: 1.5rem;
+  font-weight: 600;
   text-align: center;
+  margin-bottom: 0.5rem;
 }
 
 .buttons {
@@ -28,12 +25,11 @@ p {
 
 button {
   border: none;
-  border-radius: 5px;
-  color: white;
-  cursor: pointer;
   font-size: 3rem;
   margin: 0 0.5rem;
   padding: 0.5rem;
+  cursor: pointer;
+  border-radius: 5px;
   transition: all 0.3s ease-in-out;
 }
 
@@ -42,34 +38,21 @@ button:hover {
 }
 
 #rock {
-  background-color: #f44336; /* Red */
+  background-color: #ff0000;
 }
 
 #paper {
-  background-color: #2196f3; /* Blue */
+  background-color: #2196f3;
 }
 
 #scissors {
-  background-color: #4caf50; /* Green */
-}
-
-#result {
-  font-size: 1.5rem;
-  font-weight: bold;
-  margin: 1rem 0;
-}
-
-#scores {
-  font-size: 1.2rem;
-  font-weight: bold;
-  text-align: center;
+  background-color: #4caf50;
 }
 
-#player-score {
-  color: #4caf50;
-  margin-right: 0.5rem;
+#user-score {
+  color: #2196f3;
 }
 
 #computer-score {
-  color: #f44336;
+  color: #ff0000;
 }

From dfb834e9d2d33469623af5e9b860685d0fc7fa53 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Sun, 26 Mar 2023 14:44:28 +0700
Subject: [PATCH 46/54] update pomodoro timer project

---
 projects/pomodoro-timer/index.html | 31 ++++++++++----------
 projects/pomodoro-timer/index.js   | 21 ++++++--------
 projects/pomodoro-timer/style.css  | 45 ++++++++++--------------------
 3 files changed, 40 insertions(+), 57 deletions(-)

diff --git a/projects/pomodoro-timer/index.html b/projects/pomodoro-timer/index.html
index 39dfbb7..7cfe584 100644
--- a/projects/pomodoro-timer/index.html
+++ b/projects/pomodoro-timer/index.html
@@ -1,19 +1,22 @@
 <!DOCTYPE html>
-<html>
-  <head>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Pomodoro Timer</title>
-    <link rel="stylesheet" type="text/css" href="style.css" />
-  </head>
-  <body>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="container">
-      <h1 class="title">Pomodoro Timer</h1>
-      <p id="timer" class="timer">25:00</p>
-      <div class="button-wrapper">
-        <button id="start" class="button button--start">Start</button>
-        <button id="stop" class="button button--stop">Stop</button>
-        <button id="reset" class="button button--reset">Reset</button>
-      </div>
+        <h1 class="title">Pomodoro Timer</h1>
+        <p class="timer" id="timer">25:00</p>
+        <div class="button-wrapper">
+            <button id="start">Start</button>
+            <button id="stop">Stop</button>
+            <button id="reset">Reset</button>
+        </div>
     </div>
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/pomodoro-timer/index.js b/projects/pomodoro-timer/index.js
index af8598e..22b4ede 100644
--- a/projects/pomodoro-timer/index.js
+++ b/projects/pomodoro-timer/index.js
@@ -3,8 +3,8 @@ const stopEl = document.getElementById("stop");
 const resetEl = document.getElementById("reset");
 const timerEl = document.getElementById("timer");
 
-let intervalId;
-let timeLeft = 1500; // 25 minutes in seconds
+let interval;
+let timeLeft = 1500;
 
 function updateTimer() {
   let minutes = Math.floor(timeLeft / 60);
@@ -12,32 +12,27 @@ function updateTimer() {
   let formattedTime = `${minutes.toString().padStart(2, "0")}:${seconds
     .toString()
     .padStart(2, "0")}`;
-  // padStart() is a built-in method in JavaScript that allows you to pad a string with another string until it reaches a specified length. It's often used to format strings to a specific length, such as adding leading zeros to a number.
-  //   const str = '7';
-  // const paddedStr = str.padStart(2, '0');
-
-  // console.log(paddedStr); // Output: '07'
 
   timerEl.innerHTML = formattedTime;
 }
 
 function startTimer() {
-  intervalId = setInterval(() => {
+  interval = setInterval(() => {
     timeLeft--;
     updateTimer();
     if (timeLeft === 0) {
-      clearInterval(intervalId);
+      clearInterval(interval);
       alert("Time's up!");
+      timeLeft = 1500;
+      updateTimer();
     }
   }, 1000);
 }
-
 function stopTimer() {
-  clearInterval(intervalId);
+  clearInterval(interval);
 }
-
 function resetTimer() {
-  clearInterval(intervalId);
+  clearInterval(interval);
   timeLeft = 1500;
   updateTimer();
 }
diff --git a/projects/pomodoro-timer/style.css b/projects/pomodoro-timer/style.css
index 8583f8f..0e6970b 100644
--- a/projects/pomodoro-timer/style.css
+++ b/projects/pomodoro-timer/style.css
@@ -1,11 +1,9 @@
-/* Pomodoro Timer styles */
-
 .container {
-  font-family: "Roboto", Arial, Helvetica, sans-serif;
   margin: 0 auto;
   max-width: 400px;
-  padding: 20px;
   text-align: center;
+  padding: 20px;
+  font-family: "Roboto", sans-serif;
 }
 
 .title {
@@ -19,44 +17,31 @@
   color: #2c3e50;
 }
 
-.button-wrapper {
-  display: flex;
-  justify-content: center;
-}
+button {
+  font-size: 18px;
+  padding: 10px 20px;
+  margin: 10px;
+  color: white;
 
-.button {
   border: none;
   border-radius: 4px;
-  color: #fff;
-  font-size: 18px;
-  font-weight: bold;
-  margin-right: 10px;
-  padding: 10px 20px;
-  text-transform: uppercase;
-  transition: all 0.2s;
   cursor: pointer;
+  text-transform: uppercase;
+  transition: opacity 0.3s ease-in-out;
 }
 
-.button--start {
-  background-color: #27ae60;
+button:hover {
+  opacity: 0.7;
 }
 
-.button--start:hover {
-  background-color: #229954;
+#start {
+  background-color: #27ae60;
 }
 
-.button--stop {
+#stop {
   background-color: #c0392b;
 }
 
-.button--stop:hover {
-  background-color: #a93226;
-}
-
-.button--reset {
+#reset {
   background-color: #7f8c8d;
 }
-
-.button--reset:hover {
-  background-color: #6c7a7d;
-}

From 26176999fd74b2b2ed11231ccf9f4991c7374655 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Mon, 27 Mar 2023 21:21:39 +0700
Subject: [PATCH 47/54] add 2 new projects

---
 projects/dice-roll-simulator/dice-roll.js |  50 +++++++++++
 projects/dice-roll-simulator/index.html   |  18 ++++
 projects/dice-roll-simulator/style.css    |  71 +++++++++++++++
 projects/recipe-book-app/index.html       |  23 +++++
 projects/recipe-book-app/index.js         |  48 ++++++++++
 projects/recipe-book-app/style.css        | 101 ++++++++++++++++++++++
 6 files changed, 311 insertions(+)
 create mode 100644 projects/dice-roll-simulator/dice-roll.js
 create mode 100644 projects/dice-roll-simulator/index.html
 create mode 100644 projects/dice-roll-simulator/style.css
 create mode 100644 projects/recipe-book-app/index.html
 create mode 100644 projects/recipe-book-app/index.js
 create mode 100644 projects/recipe-book-app/style.css

diff --git a/projects/dice-roll-simulator/dice-roll.js b/projects/dice-roll-simulator/dice-roll.js
new file mode 100644
index 0000000..6e161a8
--- /dev/null
+++ b/projects/dice-roll-simulator/dice-roll.js
@@ -0,0 +1,50 @@
+const diceElement = document.getElementById("dice");
+const rollButton = document.getElementById("roll-button");
+const rollHistory = document.getElementById("roll-history");
+let historyList = [];
+
+function rollDice() {
+  const rollResult = Math.floor(Math.random() * 6) + 1;
+  const diceFace = getDiceFace(rollResult);
+  diceElement.textContent = diceFace;
+  historyList.push(rollResult);
+  updateRollHistory();
+}
+
+function getDiceFace(rollResult) {
+  switch (rollResult) {
+    case 1:
+      return "⚀";
+    case 2:
+      return "⚁";
+    case 3:
+      return "⚂";
+    case 4:
+      return "⚃";
+    case 5:
+      return "⚄";
+    case 6:
+      return "⚅";
+    default:
+      return "";
+  }
+}
+
+function updateRollHistory() {
+  rollHistory.innerHTML = "";
+  for (let i = 0; i < historyList.length; i++) {
+    const listItem = document.createElement("li");
+    listItem.innerHTML = `Roll ${i + 1}: <span>${getDiceFace(
+      historyList[i]
+    )}</span>`;
+    rollHistory.appendChild(listItem);
+  }
+}
+
+rollButton.addEventListener("click", () => {
+  diceElement.classList.add("roll-animation");
+  setTimeout(() => {
+    diceElement.classList.remove("roll-animation");
+    rollDice();
+  }, 1000);
+});
diff --git a/projects/dice-roll-simulator/index.html b/projects/dice-roll-simulator/index.html
new file mode 100644
index 0000000..d88b92d
--- /dev/null
+++ b/projects/dice-roll-simulator/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Dice Roll Simulator</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <h1>Dice Roll Simulator</h1>
+    <div id="dice" class="dice">⚀</div>
+    <button id="roll-button">Roll Dice</button>
+    <ul id="roll-history">
+      <li>Roll 1: <span>&#9856;</span></li>
+      <li>Roll 2: <span>&#9856;</span></li>
+    </ul>
+
+    <script src="dice-roll.js"></script>
+  </body>
+</html>
diff --git a/projects/dice-roll-simulator/style.css b/projects/dice-roll-simulator/style.css
new file mode 100644
index 0000000..841de74
--- /dev/null
+++ b/projects/dice-roll-simulator/style.css
@@ -0,0 +1,71 @@
+body {
+  font-family: "Open Sans", sans-serif;
+  text-align: center;
+  margin: 0;
+}
+
+h1 {
+  font-size: 3rem;
+  margin-top: 2rem;
+}
+
+.dice {
+  font-size: 7rem;
+  margin: 5px;
+  animation-duration: 1s;
+  animation-fill-mode: forwards;
+}
+
+.roll-animation {
+  animation-name: roll;
+}
+
+@keyframes roll {
+  0% {
+    transform: rotateY(0deg) rotateX(0deg);
+  }
+  100% {
+    transform: rotateY(720deg) rotateX(720deg);
+  }
+}
+
+button {
+  background-color: #47a5c4;
+  color: white;
+  font-size: 1.5rem;
+  border: none;
+  padding: 1rem 2rem;
+  margin: 5px;
+  border-radius: 1rem;
+  cursor: pointer;
+  transition: background-color 0.3s ease;
+}
+
+button:hover {
+  background-color: #2e8baf;
+}
+
+ul {
+  list-style: none;
+  padding: 0;
+  margin: 2rem;
+  max-width: 600px;
+  margin: 0 auto;
+}
+
+li {
+  font-size: 1.5rem;
+  padding: 0.5rem;
+  margin: 0.5rem;
+  background-color: #f2f2f2;
+  border-radius: 0.5rem;
+  box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+li span {
+  font-size: 3rem;
+  margin-right: 1rem;
+}
diff --git a/projects/recipe-book-app/index.html b/projects/recipe-book-app/index.html
new file mode 100644
index 0000000..6cc0f1d
--- /dev/null
+++ b/projects/recipe-book-app/index.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>Recipe Book</title>
+    <link
+      href="https://fonts.googleapis.com/css?family=Montserrat:700|Open+Sans:400,600,700&display=swap"
+      rel="stylesheet"
+    />
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <header>
+      <h1>Recipe Book</h1>
+    </header>
+
+    <div class="container">
+      <ul id="recipe-list"></ul>
+    </div>
+
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/recipe-book-app/index.js b/projects/recipe-book-app/index.js
new file mode 100644
index 0000000..7fcf11a
--- /dev/null
+++ b/projects/recipe-book-app/index.js
@@ -0,0 +1,48 @@
+const API_KEY = "275d58779ccf4e22af03e792e8819fff";
+
+// Call the API and retrieve a list of recipes
+const recipeList = document.getElementById("recipe-list");
+
+async function getRecipes() {
+  const response = await fetch(
+    `https://api.spoonacular.com/recipes/random?number=10&apiKey=${API_KEY}`
+  );
+  const data = await response.json();
+  return data.recipes;
+}
+
+function displayRecipes(recipes) {
+  recipeList.innerHTML = "";
+  recipes.forEach((recipe) => {
+    const recipeItem = document.createElement("li");
+    recipeItem.classList.add("recipe-item");
+    const recipeImage = document.createElement("img");
+    recipeImage.src = recipe.image;
+
+    const recipeTitle = document.createElement("h2");
+    recipeTitle.innerText = recipe.title;
+
+    const recipeIngredients = document.createElement("p");
+    recipeIngredients.innerHTML = `<strong>Ingredients:</strong> ${recipe.extendedIngredients
+      .map((ingredient) => ingredient.original)
+      .join(", ")}`;
+
+    const recipeLink = document.createElement("a");
+    recipeLink.href = recipe.sourceUrl;
+    recipeLink.innerText = "View Recipe";
+
+    recipeItem.appendChild(recipeImage);
+    recipeItem.appendChild(recipeTitle);
+    recipeItem.appendChild(recipeIngredients);
+    recipeItem.appendChild(recipeLink);
+
+    recipeList.appendChild(recipeItem);
+  });
+}
+
+async function init() {
+  const recipes = await getRecipes();
+  displayRecipes(recipes);
+}
+
+init();
diff --git a/projects/recipe-book-app/style.css b/projects/recipe-book-app/style.css
new file mode 100644
index 0000000..d1405d5
--- /dev/null
+++ b/projects/recipe-book-app/style.css
@@ -0,0 +1,101 @@
+body {
+  margin: 0;
+  padding: 0;
+  font-family: Arial, sans-serif;
+}
+
+header {
+  background-color: #0c2461;
+  color: #fff;
+  padding: 20px;
+  text-align: center;
+}
+
+h1 {
+  margin: 0;
+  font-size: 36px;
+}
+
+.container {
+  max-width: 1200px;
+  margin: 0 auto;
+  padding: 20px;
+}
+
+.recipe-list {
+  list-style: none;
+  margin: 0;
+  padding: 0;
+}
+
+.recipe-item {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 20px;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+  border-radius: 5px;
+  overflow: hidden;
+}
+
+.recipe-item img {
+  width: 150px;
+  height: 150px;
+  object-fit: cover;
+}
+
+.recipe-item h2 {
+  margin: 0;
+  font-size: 20px;
+  min-width: 200px;
+  padding: 10px;
+}
+
+.recipe-item p {
+  margin: 0;
+  padding: 10px;
+}
+
+.recipe-item a {
+  padding: 10px;
+  background-color: #0c2461;
+  color: #fff;
+  text-align: center;
+  text-decoration: none;
+  transition: background-color 0.2s ease-in-out;
+  min-width: 150px;
+}
+
+.recipe-item a:hover {
+  background-color: #1e3799;
+}
+
+@media only screen and (max-width: 800px) {
+  .container {
+    max-width: 90%;
+  }
+
+  .recipe-item {
+    flex-wrap: wrap;
+  }
+
+  .recipe-item img {
+    width: 100%;
+    height: auto;
+    margin-bottom: 10px;
+  }
+
+  .recipe-item h2 {
+    font-size: 20px;
+    padding: 0;
+    margin-bottom: 10px;
+  }
+
+  .recipe-item p {
+    font-size: 14px;
+    margin-bottom: 10px;
+  }
+  .recipe-item a {
+    width: 100%;
+  }
+}

From 0643a11eb20d0b10e850047edd364cad54b089a4 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Tue, 28 Mar 2023 13:04:04 +0700
Subject: [PATCH 48/54] add 2 more projects

---
 projects/age-calculator/index.html | 21 ++++++++++
 projects/age-calculator/index.js   | 51 +++++++++++++++++++++++
 projects/age-calculator/style.css  | 67 ++++++++++++++++++++++++++++++
 projects/tip-calculator/index.html | 24 +++++++++++
 projects/tip-calculator/index.js   | 11 +++++
 projects/tip-calculator/style.css  | 57 +++++++++++++++++++++++++
 6 files changed, 231 insertions(+)
 create mode 100644 projects/age-calculator/index.html
 create mode 100644 projects/age-calculator/index.js
 create mode 100644 projects/age-calculator/style.css
 create mode 100644 projects/tip-calculator/index.html
 create mode 100644 projects/tip-calculator/index.js
 create mode 100644 projects/tip-calculator/style.css

diff --git a/projects/age-calculator/index.html b/projects/age-calculator/index.html
new file mode 100644
index 0000000..dd793a3
--- /dev/null
+++ b/projects/age-calculator/index.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8" />
+    <title>Age Calculator</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h1>Age Calculator</h1>
+      <div class="form">
+        <label for="birthday">Enter your date of birth:</label>
+        <input type="date" id="birthday" name="birthday" />
+        <button id="calculate">Calculate Age</button>
+        <p id="result"></p>
+      </div>
+    </div>
+
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/age-calculator/index.js b/projects/age-calculator/index.js
new file mode 100644
index 0000000..2d829c4
--- /dev/null
+++ b/projects/age-calculator/index.js
@@ -0,0 +1,51 @@
+// Get the elements from the DOM
+const birthdayInput = document.getElementById("birthday");
+const calculateButton = document.getElementById("calculate");
+const resultElement = document.getElementById("result");
+
+// Add click event listener to the calculate button
+calculateButton.addEventListener("click", calculateAge);
+
+// Function to calculate the age
+
+function calculateAge() {
+  // Get the value from the input
+  const birthday = birthdayInput.value;
+
+  // Check if the value is empty
+  if (birthday === "") {
+    // If the value is empty, show an alert
+    alert("Please enter your birthday");
+  } else {
+    // If the value is not empty, calculate the age
+    const age = getAge(birthday);
+
+    // Show the result
+    resultElement.innerHTML = `Your age is ${age} ${
+      age > 1 ? "years" : "year" // Check if the age is more than 1
+    } old`;
+  }
+}
+
+// Function to calculate the age
+function getAge(birthDay) {
+  // Get the current date
+  const currentDate = new Date();
+
+  // Get the birthday date
+  const birthdayDate = new Date(birthDay);
+
+  // Calculate the age
+  const age = currentDate.getFullYear() - birthdayDate.getFullYear();
+
+  const month = currentDate.getMonth() - birthdayDate.getMonth();
+  if (
+    month < 0 ||
+    (month === 0 && currentDate.getDate() < birthdayDate.getDate())
+  ) {
+    age--;
+  }
+
+  // Return the age
+  return age;
+}
diff --git a/projects/age-calculator/style.css b/projects/age-calculator/style.css
new file mode 100644
index 0000000..88f0382
--- /dev/null
+++ b/projects/age-calculator/style.css
@@ -0,0 +1,67 @@
+/* General styles */
+body {
+  margin: 0;
+  padding: 20px;
+  font-family: "Montserrat", sans-serif;
+  font-size: 16px;
+  line-height: 1.5;
+  background-color: #f7f7f7;
+}
+
+.container {
+  max-width: 600px;
+  margin: 0 auto;
+  padding: 20px;
+  background-color: #fff;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
+  border-radius: 5px;
+}
+
+h1 {
+  font-size: 36px;
+  text-align: center;
+  margin-top: 0;
+  margin-bottom: 20px;
+}
+
+.form {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+label {
+  font-weight: bold;
+  margin-bottom: 10px;
+}
+
+input[type="date"] {
+  padding: 8px;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  width: 100%;
+  max-width: 300px;
+  box-sizing: border-box;
+}
+
+button {
+  background-color: #007bff;
+  color: #fff;
+  border: none;
+  padding: 10px 20px;
+  border-radius: 4px;
+  margin-top: 10px;
+  cursor: pointer;
+  transition: background-color 0.2s ease;
+}
+
+button:hover {
+  background-color: #0062cc;
+}
+
+#result {
+  margin-top: 20px;
+  font-size: 24px;
+  font-weight: bold;
+  text-align: center;
+}
diff --git a/projects/tip-calculator/index.html b/projects/tip-calculator/index.html
new file mode 100644
index 0000000..aa0dc58
--- /dev/null
+++ b/projects/tip-calculator/index.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Tip Calculator</title>
+    <link rel="stylesheet" href="style.css" />
+  </head>
+  <body>
+    <div class="container">
+      <h1>Tip Calculator</h1>
+      <p>Enter the bill amount and tip percentage to calculate the total.</p>
+      <label for="bill">Bill amount:</label>
+      <input type="number" id="bill" />
+      <br />
+      <label for="tip">Tip percentage:</label>
+      <input type="number" id="tip" />
+      <br />
+      <button id="calculate">Calculate</button>
+      <br />
+      <label for="total">Total:</label>
+      <span id="total"></span>
+    </div>
+    <script src="index.js"></script>
+  </body>
+</html>
diff --git a/projects/tip-calculator/index.js b/projects/tip-calculator/index.js
new file mode 100644
index 0000000..515b4de
--- /dev/null
+++ b/projects/tip-calculator/index.js
@@ -0,0 +1,11 @@
+const calculateBtn = document.getElementById("calculate");
+const billInput = document.getElementById("bill");
+const tipInput = document.getElementById("tip");
+const totalSpan = document.getElementById("total");
+
+calculateBtn.addEventListener("click", function () {
+  const bill = billInput.value;
+  const tip = tipInput.value;
+  const total = bill * (1 + tip / 100);
+  totalSpan.innerText = `$${total.toFixed(2)}`;
+});
diff --git a/projects/tip-calculator/style.css b/projects/tip-calculator/style.css
new file mode 100644
index 0000000..9db5f26
--- /dev/null
+++ b/projects/tip-calculator/style.css
@@ -0,0 +1,57 @@
+/* Set body styles */
+* {
+  box-sizing: border-box;
+}
+
+body {
+  background-color: #f2f2f2;
+  font-family: "Helvetica Neue", sans-serif;
+}
+
+/* Set container styles */
+.container {
+  margin: 100px auto;
+  max-width: 600px;
+  padding: 20px;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+  background-color: #fff;
+  border-radius: 10px;
+}
+
+/* Set heading styles */
+h1 {
+  margin-top: 0;
+  text-align: center;
+}
+
+/* Set input styles */
+input[type="number"] {
+  padding: 10px;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  margin: 10px 0;
+  width: 100%;
+}
+
+/* Set button styles */
+button {
+  background-color: #4caf50;
+  color: white;
+  padding: 10px;
+  border: none;
+  border-radius: 4px;
+  cursor: pointer;
+  margin: 10px 0;
+  width: 100%;
+}
+
+button:hover {
+  background-color: #45a049;
+}
+
+/* Set result styles */
+#total {
+  font-size: 24px;
+  font-weight: bold;
+  margin-top: 10px;
+}

From 6d61e9ce23b3ee95d4cc2b9d3233836d786fc558 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Wed, 29 Mar 2023 13:19:23 +0700
Subject: [PATCH 49/54] update roll dice simulator

---
 projects/dice-roll-simulator/index.html       | 14 ++---
 .../{dice-roll.js => index.js}                | 51 ++++++++++---------
 projects/dice-roll-simulator/style.css        |  7 ++-
 3 files changed, 38 insertions(+), 34 deletions(-)
 rename projects/dice-roll-simulator/{dice-roll.js => index.js} (54%)

diff --git a/projects/dice-roll-simulator/index.html b/projects/dice-roll-simulator/index.html
index d88b92d..edf81b5 100644
--- a/projects/dice-roll-simulator/index.html
+++ b/projects/dice-roll-simulator/index.html
@@ -1,18 +1,20 @@
 <!DOCTYPE html>
-<html>
+<html lang="en">
   <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>Dice Roll Simulator</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
     <h1>Dice Roll Simulator</h1>
-    <div id="dice" class="dice">⚀</div>
+    <div class="dice" id="dice">&#9860;</div>
     <button id="roll-button">Roll Dice</button>
     <ul id="roll-history">
-      <li>Roll 1: <span>&#9856;</span></li>
-      <li>Roll 2: <span>&#9856;</span></li>
+      <!-- <li>Roll 1: <span>&#9856;</span></li>
+      <li>Roll 2: <span>&#9860;</span></li> -->
     </ul>
-
-    <script src="dice-roll.js"></script>
+    <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/dice-roll-simulator/dice-roll.js b/projects/dice-roll-simulator/index.js
similarity index 54%
rename from projects/dice-roll-simulator/dice-roll.js
rename to projects/dice-roll-simulator/index.js
index 6e161a8..8deecde 100644
--- a/projects/dice-roll-simulator/dice-roll.js
+++ b/projects/dice-roll-simulator/index.js
@@ -1,50 +1,53 @@
-const diceElement = document.getElementById("dice");
-const rollButton = document.getElementById("roll-button");
-const rollHistory = document.getElementById("roll-history");
+const buttonEl = document.getElementById("roll-button");
+
+const diceEl = document.getElementById("dice");
+
+const rollHistoryEl = document.getElementById("roll-history");
+
 let historyList = [];
 
 function rollDice() {
   const rollResult = Math.floor(Math.random() * 6) + 1;
   const diceFace = getDiceFace(rollResult);
-  diceElement.textContent = diceFace;
+  diceEl.innerHTML = diceFace;
   historyList.push(rollResult);
   updateRollHistory();
 }
 
+function updateRollHistory() {
+  rollHistoryEl.innerHTML = "";
+  for (let i = 0; i < historyList.length; i++) {
+    const listItem = document.createElement("li");
+    listItem.innerHTML = `Roll ${i + 1}: <span>${getDiceFace(
+      historyList[i]
+    )}</span>`;
+    rollHistoryEl.appendChild(listItem);
+  }
+}
+
 function getDiceFace(rollResult) {
   switch (rollResult) {
     case 1:
-      return "⚀";
+      return "&#9856;";
     case 2:
-      return "⚁";
+      return "&#9857;";
     case 3:
-      return "⚂";
+      return "&#9858;";
     case 4:
-      return "⚃";
+      return "&#9859;";
     case 5:
-      return "⚄";
+      return "&#9860;";
     case 6:
-      return "⚅";
+      return "&#9861;";
     default:
       return "";
   }
 }
 
-function updateRollHistory() {
-  rollHistory.innerHTML = "";
-  for (let i = 0; i < historyList.length; i++) {
-    const listItem = document.createElement("li");
-    listItem.innerHTML = `Roll ${i + 1}: <span>${getDiceFace(
-      historyList[i]
-    )}</span>`;
-    rollHistory.appendChild(listItem);
-  }
-}
-
-rollButton.addEventListener("click", () => {
-  diceElement.classList.add("roll-animation");
+buttonEl.addEventListener("click", () => {
+  diceEl.classList.add("roll-animation");
   setTimeout(() => {
-    diceElement.classList.remove("roll-animation");
+    diceEl.classList.remove("roll-animation");
     rollDice();
   }, 1000);
 });
diff --git a/projects/dice-roll-simulator/style.css b/projects/dice-roll-simulator/style.css
index 841de74..439ab24 100644
--- a/projects/dice-roll-simulator/style.css
+++ b/projects/dice-roll-simulator/style.css
@@ -24,6 +24,7 @@ h1 {
   0% {
     transform: rotateY(0deg) rotateX(0deg);
   }
+
   100% {
     transform: rotateY(720deg) rotateX(720deg);
   }
@@ -33,9 +34,8 @@ button {
   background-color: #47a5c4;
   color: white;
   font-size: 1.5rem;
-  border: none;
   padding: 1rem 2rem;
-  margin: 5px;
+  border: none;
   border-radius: 1rem;
   cursor: pointer;
   transition: background-color 0.3s ease;
@@ -48,9 +48,8 @@ button:hover {
 ul {
   list-style: none;
   padding: 0;
-  margin: 2rem;
   max-width: 600px;
-  margin: 0 auto;
+  margin: 2rem auto;
 }
 
 li {

From 0894ef2fb7758346a77213cb3033e65f80347b76 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Thu, 30 Mar 2023 11:04:46 +0700
Subject: [PATCH 50/54] update recipe book app

---
 projects/recipe-book-app/index.html | 43 +++++++++++++++++++++++++----
 1 file changed, 38 insertions(+), 5 deletions(-)

diff --git a/projects/recipe-book-app/index.html b/projects/recipe-book-app/index.html
index 6cc0f1d..81489f7 100644
--- a/projects/recipe-book-app/index.html
+++ b/projects/recipe-book-app/index.html
@@ -3,10 +3,6 @@
   <head>
     <meta charset="UTF-8" />
     <title>Recipe Book</title>
-    <link
-      href="https://fonts.googleapis.com/css?family=Montserrat:700|Open+Sans:400,600,700&display=swap"
-      rel="stylesheet"
-    />
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
@@ -15,7 +11,44 @@ <h1>Recipe Book</h1>
     </header>
 
     <div class="container">
-      <ul id="recipe-list"></ul>
+      <ul id="recipe-list">
+        <li class="recipe-item">
+          <img
+            src="https://spoonacular.com/recipeImages/12345-312x231.jpg"
+            alt="Recipe 1"
+          />
+          <h2>Recipe 1</h2>
+          <p>
+            <strong>Ingredients:</strong> Ingredient 1, Ingredient 2, Ingredient
+            3
+          </p>
+          <a href="#">View Recipe</a>
+        </li>
+        <li class="recipe-item">
+          <img
+            src="https://spoonacular.com/recipeImages/67890-312x231.jpg"
+            alt="Recipe 2"
+          />
+          <h2>Recipe 2</h2>
+          <p>
+            <strong>Ingredients:</strong> Ingredient 4, Ingredient 5, Ingredient
+            6
+          </p>
+          <a href="#">View Recipe</a>
+        </li>
+        <li class="recipe-item">
+          <img
+            src="https://spoonacular.com/recipeImages/54321-312x231.jpg"
+            alt="Recipe 3"
+          />
+          <h2>Recipe 3</h2>
+          <p>
+            <strong>Ingredients:</strong> Ingredient 7, Ingredient 8, Ingredient
+            9
+          </p>
+          <a href="#">View Recipe</a>
+        </li>
+      </ul>
     </div>
 
     <script src="index.js"></script>

From cde2cb9634615d9cce876a6733a7038b72888913 Mon Sep 17 00:00:00 2001
From: Sahandgha <sahand.gha@gmail.com>
Date: Tue, 11 Apr 2023 21:30:22 +0700
Subject: [PATCH 51/54] update last 4 projects

---
 projects/age-calculator/index.html  | 32 ++++++++-------
 projects/age-calculator/index.js    | 46 ++++++---------------
 projects/age-calculator/style.css   | 22 ++++------
 projects/recipe-book-app/index.html | 25 +++++------
 projects/recipe-book-app/index.js   | 64 +++++++++++++++--------------
 projects/recipe-book-app/style.css  | 29 +++++++------
 projects/tip-calculator/index.html  | 42 ++++++++++---------
 projects/tip-calculator/index.js    | 16 ++++----
 projects/tip-calculator/style.css   | 18 ++++----
 9 files changed, 140 insertions(+), 154 deletions(-)

diff --git a/projects/age-calculator/index.html b/projects/age-calculator/index.html
index dd793a3..7ef5c27 100644
--- a/projects/age-calculator/index.html
+++ b/projects/age-calculator/index.html
@@ -1,21 +1,23 @@
 <!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="UTF-8" />
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Age Calculator</title>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-  <body>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="container">
-      <h1>Age Calculator</h1>
-      <div class="form">
-        <label for="birthday">Enter your date of birth:</label>
-        <input type="date" id="birthday" name="birthday" />
-        <button id="calculate">Calculate Age</button>
-        <p id="result"></p>
-      </div>
+        <h1>Age Calculator</h1>
+        <div class="form">
+            <label for="birthday">Enter you date of birth</label>
+            <input type="date" id="birthday" name="birthday">
+            <button id="btn">Calculate Age</button>
+            <p id="result">Your age is 21 years old</p>
+        </div>
     </div>
 
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/age-calculator/index.js b/projects/age-calculator/index.js
index 2d829c4..b2888ee 100644
--- a/projects/age-calculator/index.js
+++ b/projects/age-calculator/index.js
@@ -1,44 +1,23 @@
-// Get the elements from the DOM
-const birthdayInput = document.getElementById("birthday");
-const calculateButton = document.getElementById("calculate");
-const resultElement = document.getElementById("result");
-
-// Add click event listener to the calculate button
-calculateButton.addEventListener("click", calculateAge);
-
-// Function to calculate the age
+const btnEl = document.getElementById("btn");
+const birthdayEl = document.getElementById("birthday");
+const resultEl = document.getElementById("result");
 
 function calculateAge() {
-  // Get the value from the input
-  const birthday = birthdayInput.value;
-
-  // Check if the value is empty
-  if (birthday === "") {
-    // If the value is empty, show an alert
+  const birthdayValue = birthdayEl.value;
+  if (birthdayValue === "") {
     alert("Please enter your birthday");
   } else {
-    // If the value is not empty, calculate the age
-    const age = getAge(birthday);
-
-    // Show the result
-    resultElement.innerHTML = `Your age is ${age} ${
-      age > 1 ? "years" : "year" // Check if the age is more than 1
-    } old`;
+    const age = getAge(birthdayValue);
+    resultEl.innerText = `Your age is ${age} ${age > 1 ? "years" : "year"} old`;
   }
 }
 
-// Function to calculate the age
-function getAge(birthDay) {
-  // Get the current date
+function getAge(birthdayValue) {
   const currentDate = new Date();
-
-  // Get the birthday date
-  const birthdayDate = new Date(birthDay);
-
-  // Calculate the age
-  const age = currentDate.getFullYear() - birthdayDate.getFullYear();
-
+  const birthdayDate = new Date(birthdayValue);
+  let age = currentDate.getFullYear() - birthdayDate.getFullYear();
   const month = currentDate.getMonth() - birthdayDate.getMonth();
+
   if (
     month < 0 ||
     (month === 0 && currentDate.getDate() < birthdayDate.getDate())
@@ -46,6 +25,7 @@ function getAge(birthDay) {
     age--;
   }
 
-  // Return the age
   return age;
 }
+
+btnEl.addEventListener("click", calculateAge);
diff --git a/projects/age-calculator/style.css b/projects/age-calculator/style.css
index 88f0382..0229675 100644
--- a/projects/age-calculator/style.css
+++ b/projects/age-calculator/style.css
@@ -1,20 +1,18 @@
-/* General styles */
 body {
   margin: 0;
   padding: 20px;
   font-family: "Montserrat", sans-serif;
-  font-size: 16px;
-  line-height: 1.5;
   background-color: #f7f7f7;
 }
 
 .container {
+  background-color: white;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+  padding: 20px;
   max-width: 600px;
   margin: 0 auto;
-  padding: 20px;
-  background-color: #fff;
-  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
   border-radius: 5px;
+  margin-top: 50px;
 }
 
 h1 {
@@ -35,24 +33,23 @@ label {
   margin-bottom: 10px;
 }
 
-input[type="date"] {
+input {
   padding: 8px;
   border: 1px solid #ccc;
-  border-radius: 4px;
+  border-radius: 5px;
   width: 100%;
   max-width: 300px;
-  box-sizing: border-box;
 }
 
 button {
   background-color: #007bff;
-  color: #fff;
+  color: white;
   border: none;
   padding: 10px 20px;
-  border-radius: 4px;
+  border-radius: 5px;
   margin-top: 10px;
   cursor: pointer;
-  transition: background-color 0.2s ease;
+  transition: background-color 0.3s ease;
 }
 
 button:hover {
@@ -63,5 +60,4 @@ button:hover {
   margin-top: 20px;
   font-size: 24px;
   font-weight: bold;
-  text-align: center;
 }
diff --git a/projects/recipe-book-app/index.html b/projects/recipe-book-app/index.html
index 81489f7..b93360d 100644
--- a/projects/recipe-book-app/index.html
+++ b/projects/recipe-book-app/index.html
@@ -2,17 +2,19 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8" />
-    <title>Recipe Book</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Document</title>
     <link rel="stylesheet" href="style.css" />
   </head>
   <body>
     <header>
-      <h1>Recipe Book</h1>
+      <h1>Recipe Book App</h1>
     </header>
 
     <div class="container">
-      <ul id="recipe-list">
-        <li class="recipe-item">
+      <ul id="recipe-list" class="recipe-list">
+        <!-- <li class="recipe-item">
           <img
             src="https://spoonacular.com/recipeImages/12345-312x231.jpg"
             alt="Recipe 1"
@@ -26,31 +28,30 @@ <h2>Recipe 1</h2>
         </li>
         <li class="recipe-item">
           <img
-            src="https://spoonacular.com/recipeImages/67890-312x231.jpg"
+            src="https://spoonacular.com/recipeImages/12545-312x231.jpg"
             alt="Recipe 2"
           />
           <h2>Recipe 2</h2>
           <p>
-            <strong>Ingredients:</strong> Ingredient 4, Ingredient 5, Ingredient
-            6
+            <strong>Ingredients:</strong> Ingredient 1, Ingredient 2, Ingredient
+            3
           </p>
           <a href="#">View Recipe</a>
         </li>
         <li class="recipe-item">
           <img
-            src="https://spoonacular.com/recipeImages/54321-312x231.jpg"
+            src="https://spoonacular.com/recipeImages/12445-312x231.jpg"
             alt="Recipe 3"
           />
           <h2>Recipe 3</h2>
           <p>
-            <strong>Ingredients:</strong> Ingredient 7, Ingredient 8, Ingredient
-            9
+            <strong>Ingredients:</strong> Ingredient 1, Ingredient 2, Ingredient
+            3
           </p>
           <a href="#">View Recipe</a>
-        </li>
+        </li> -->
       </ul>
     </div>
-
     <script src="index.js"></script>
   </body>
 </html>
diff --git a/projects/recipe-book-app/index.js b/projects/recipe-book-app/index.js
index 7fcf11a..d35b3b8 100644
--- a/projects/recipe-book-app/index.js
+++ b/projects/recipe-book-app/index.js
@@ -1,43 +1,45 @@
 const API_KEY = "275d58779ccf4e22af03e792e8819fff";
+const recipeListEl = document.getElementById("recipe-list");
 
-// Call the API and retrieve a list of recipes
-const recipeList = document.getElementById("recipe-list");
+function displayRecipes(recipes) {
+  recipeListEl.innerHTML = "";
+  recipes.forEach((recipe) => {
+    const recipeItemEl = document.createElement("li");
+    recipeItemEl.classList.add("recipe-item");
+    recipeImageEl = document.createElement("img");
+    recipeImageEl.src = recipe.image;
+    recipeImageEl.alt = "recipe image";
+
+    recipeTitleEl = document.createElement("h2");
+    recipeTitleEl.innerText = recipe.title;
+
+    recipeIngredientsEl = document.createElement("p");
+    recipeIngredientsEl.innerHTML = `
+        <strong>Ingredients:</strong> ${recipe.extendedIngredients
+          .map((ingredient) => ingredient.original)
+          .join(", ")}
+    `;
+
+    recipeLinkEl = document.createElement("a");
+    recipeLinkEl.href = recipe.sourceUrl;
+    recipeLinkEl.innerText = "View Recipe";
+
+    recipeItemEl.appendChild(recipeImageEl);
+    recipeItemEl.appendChild(recipeTitleEl);
+    recipeItemEl.appendChild(recipeIngredientsEl);
+    recipeItemEl.appendChild(recipeLinkEl);
+    recipeListEl.appendChild(recipeItemEl);
+  });
+}
 
 async function getRecipes() {
   const response = await fetch(
     `https://api.spoonacular.com/recipes/random?number=10&apiKey=${API_KEY}`
   );
-  const data = await response.json();
-  return data.recipes;
-}
-
-function displayRecipes(recipes) {
-  recipeList.innerHTML = "";
-  recipes.forEach((recipe) => {
-    const recipeItem = document.createElement("li");
-    recipeItem.classList.add("recipe-item");
-    const recipeImage = document.createElement("img");
-    recipeImage.src = recipe.image;
-
-    const recipeTitle = document.createElement("h2");
-    recipeTitle.innerText = recipe.title;
-
-    const recipeIngredients = document.createElement("p");
-    recipeIngredients.innerHTML = `<strong>Ingredients:</strong> ${recipe.extendedIngredients
-      .map((ingredient) => ingredient.original)
-      .join(", ")}`;
 
-    const recipeLink = document.createElement("a");
-    recipeLink.href = recipe.sourceUrl;
-    recipeLink.innerText = "View Recipe";
-
-    recipeItem.appendChild(recipeImage);
-    recipeItem.appendChild(recipeTitle);
-    recipeItem.appendChild(recipeIngredients);
-    recipeItem.appendChild(recipeLink);
+  const data = await response.json();
 
-    recipeList.appendChild(recipeItem);
-  });
+  return data.recipes;
 }
 
 async function init() {
diff --git a/projects/recipe-book-app/style.css b/projects/recipe-book-app/style.css
index d1405d5..9e56d02 100644
--- a/projects/recipe-book-app/style.css
+++ b/projects/recipe-book-app/style.css
@@ -5,7 +5,7 @@ body {
 }
 
 header {
-  background-color: #0c2461;
+  background: #0c2461;
   color: #fff;
   padding: 20px;
   text-align: center;
@@ -17,8 +17,8 @@ h1 {
 }
 
 .container {
-  max-width: 1200px;
   margin: 0 auto;
+  max-width: 1200px;
   padding: 20px;
 }
 
@@ -33,7 +33,7 @@ h1 {
   align-items: center;
   justify-content: space-between;
   margin-bottom: 20px;
-  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
   border-radius: 5px;
   overflow: hidden;
 }
@@ -47,36 +47,37 @@ h1 {
 .recipe-item h2 {
   margin: 0;
   font-size: 20px;
-  min-width: 200px;
   padding: 10px;
+  min-width: 200px;
 }
 
 .recipe-item p {
   margin: 0;
   padding: 10px;
+  color: #777;
 }
 
 .recipe-item a {
-  padding: 10px;
-  background-color: #0c2461;
+  background: #0c2461;
   color: #fff;
-  text-align: center;
-  text-decoration: none;
-  transition: background-color 0.2s ease-in-out;
   min-width: 150px;
+  padding: 10px;
+  text-decoration: none;
+  text-transform: uppercase;
+  font-size: 14px;
+  transition: background 0.3s ease;
 }
 
 .recipe-item a:hover {
-  background-color: #1e3799;
+  background: #1e3799;
 }
 
-@media only screen and (max-width: 800px) {
+@media screen and (max-width: 768px) {
   .container {
     max-width: 90%;
   }
-
   .recipe-item {
-    flex-wrap: wrap;
+    flex-direction: column;
   }
 
   .recipe-item img {
@@ -95,7 +96,9 @@ h1 {
     font-size: 14px;
     margin-bottom: 10px;
   }
+
   .recipe-item a {
     width: 100%;
+    text-align: center;
   }
 }
diff --git a/projects/tip-calculator/index.html b/projects/tip-calculator/index.html
index aa0dc58..029457b 100644
--- a/projects/tip-calculator/index.html
+++ b/projects/tip-calculator/index.html
@@ -1,24 +1,28 @@
 <!DOCTYPE html>
-<html>
-  <head>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Tip Calculator</title>
-    <link rel="stylesheet" href="style.css" />
-  </head>
-  <body>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body>
     <div class="container">
-      <h1>Tip Calculator</h1>
-      <p>Enter the bill amount and tip percentage to calculate the total.</p>
-      <label for="bill">Bill amount:</label>
-      <input type="number" id="bill" />
-      <br />
-      <label for="tip">Tip percentage:</label>
-      <input type="number" id="tip" />
-      <br />
-      <button id="calculate">Calculate</button>
-      <br />
-      <label for="total">Total:</label>
-      <span id="total"></span>
+        <h1>Tip Calculator</h1>
+        <p>Enter the bill amount and tip percentage to calculate the total.</p>
+        <label for="bill">Bill amount:</label>
+        <input type="number" id="bill">
+        <br/>
+        <label for="tip">Tip percentage:</label>
+        <input type="number" id="tip">
+        <br/>
+        <button id="calculate">Calculate</button>
+        <br/>
+        <label for="total">Total:</label>
+        <span id="total"></span>
+
     </div>
     <script src="index.js"></script>
-  </body>
-</html>
+</body>
+</html>
\ No newline at end of file
diff --git a/projects/tip-calculator/index.js b/projects/tip-calculator/index.js
index 515b4de..98cb079 100644
--- a/projects/tip-calculator/index.js
+++ b/projects/tip-calculator/index.js
@@ -1,11 +1,13 @@
-const calculateBtn = document.getElementById("calculate");
+const btnEl = document.getElementById("calculate");
 const billInput = document.getElementById("bill");
 const tipInput = document.getElementById("tip");
 const totalSpan = document.getElementById("total");
 
-calculateBtn.addEventListener("click", function () {
-  const bill = billInput.value;
-  const tip = tipInput.value;
-  const total = bill * (1 + tip / 100);
-  totalSpan.innerText = `$${total.toFixed(2)}`;
-});
+function calculateTotal() {
+  const billValue = billInput.value;
+  const tipValue = tipInput.value;
+  const totalValue = billValue * (1 + tipValue / 100);
+  totalSpan.innerText = totalValue.toFixed(2);
+}
+
+btnEl.addEventListener("click", calculateTotal);
diff --git a/projects/tip-calculator/style.css b/projects/tip-calculator/style.css
index 9db5f26..786e129 100644
--- a/projects/tip-calculator/style.css
+++ b/projects/tip-calculator/style.css
@@ -1,31 +1,27 @@
-/* Set body styles */
 * {
   box-sizing: border-box;
 }
 
 body {
   background-color: #f2f2f2;
-  font-family: "Helvetica Neue", sans-serif;
+  font-family: "Helvetica", sans-serif;
 }
 
-/* Set container styles */
 .container {
-  margin: 100px auto;
+  background-color: white;
   max-width: 600px;
+  margin: 100px auto;
   padding: 20px;
   box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
-  background-color: #fff;
   border-radius: 10px;
 }
 
-/* Set heading styles */
 h1 {
   margin-top: 0;
   text-align: center;
 }
 
-/* Set input styles */
-input[type="number"] {
+input {
   padding: 10px;
   border: 1px solid #ccc;
   border-radius: 4px;
@@ -33,23 +29,23 @@ input[type="number"] {
   width: 100%;
 }
 
-/* Set button styles */
 button {
   background-color: #4caf50;
   color: white;
   padding: 10px;
   border: none;
-  border-radius: 4px;
   cursor: pointer;
   margin: 10px 0;
   width: 100%;
+  font-size: 18px;
+  text-transform: uppercase;
+  transition: background-color 0.2s ease;
 }
 
 button:hover {
   background-color: #45a049;
 }
 
-/* Set result styles */
 #total {
   font-size: 24px;
   font-weight: bold;

From b395884f4fb3fdd42fae861b2f661180ae0e8469 Mon Sep 17 00:00:00 2001
From: Sahand Ghavidel <sahand.gha@gmail.com>
Date: Sun, 4 Jun 2023 08:54:31 +0700
Subject: [PATCH 52/54] Update README.md

---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index e54352e..408019f 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
 # <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">50 HTML CSS JavaScript Projects</a>
 
-This is the source code of the Udemy course: <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">50 HTML CSS JavaScript Projects</a>
+This is the source code of the Udemy course: <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">60 HTML CSS JavaScript Projects</a>
 <div>
   Visit <a href="https://100jsprojects.com">100jsprojects.com</a> to preview the projects.
 
   </div>
 <div style="max-width: 600px; margin: 0 auto; padding: 20px;">
   <h1 style="font-size: 2rem; font-weight: bold; margin-bottom: 10px;">About</h1>
-  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "<a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">50 HTML CSS JavaScript Projects</a>," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.</p>
+  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "<a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">60 HTML CSS JavaScript Projects</a>," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.</p>
   <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">In this course, you'll learn how to install Visual Studio Code and its extensions, and then we'll start from scratch with each project. After finishing HTML, we'll move on to CSS and JavaScript. Building in HTML, CSS, or JavaScript is fine, and this guide will explain HTML, CSS, and JavaScript syntax.</p>
   <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Each project in this course is started from scratch and finished without using copied code. Then, we'll go over the code together to ensure that everyone understands. This program's exciting project-based curriculum includes building modern, super cool, and responsive websites!</p>
   <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">If you have any questions, please feel free to contact me through my Twitter: <a href="https://twitter.com/codewithsahand" style="color: #1a73e8; text-decoration: none; font-weight: bold;" target="_blank">@codewithsahand</a>.</p>

From 383128a15d7c87ac7dae37a60049efa976823a39 Mon Sep 17 00:00:00 2001
From: Sahand Ghavidel <sahand.gha@gmail.com>
Date: Sun, 4 Jun 2023 08:54:49 +0700
Subject: [PATCH 53/54] Update README.md

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 408019f..55d6ee3 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">50 HTML CSS JavaScript Projects</a>
+# <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">60 HTML CSS JavaScript Projects</a>
 
 This is the source code of the Udemy course: <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">60 HTML CSS JavaScript Projects</a>
 <div>

From 9178903cb14285736df153332c97209e8eab3ab1 Mon Sep 17 00:00:00 2001
From: Sahand Ghavidel <sahand.gha@gmail.com>
Date: Tue, 3 Oct 2023 09:08:20 +0800
Subject: [PATCH 54/54] Update README.md

---
 README.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 55d6ee3..af383c5 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,15 @@
-# <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">60 HTML CSS JavaScript Projects</a>
+# <a href="https://100jsprojects.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">HTML CSS JavaScript Projects</a>
 
-This is the source code of the Udemy course: <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">60 HTML CSS JavaScript Projects</a>
+This is the source code of the website: <a href="https://100jsprojects.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">100 HTML CSS JavaScript Projects</a>
 <div>
   Visit <a href="https://100jsprojects.com">100jsprojects.com</a> to preview the projects.
 
   </div>
 <div style="max-width: 600px; margin: 0 auto; padding: 20px;">
   <h1 style="font-size: 2rem; font-weight: bold; margin-bottom: 10px;">About</h1>
-  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "<a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">60 HTML CSS JavaScript Projects</a>," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.</p>
+  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "<a href="https://100jsprojects.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">HTML CSS JavaScript Projects</a>," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.</p>
   <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">In this course, you'll learn how to install Visual Studio Code and its extensions, and then we'll start from scratch with each project. After finishing HTML, we'll move on to CSS and JavaScript. Building in HTML, CSS, or JavaScript is fine, and this guide will explain HTML, CSS, and JavaScript syntax.</p>
   <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">Each project in this course is started from scratch and finished without using copied code. Then, we'll go over the code together to ensure that everyone understands. This program's exciting project-based curriculum includes building modern, super cool, and responsive websites!</p>
-  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">If you have any questions, please feel free to contact me through my Twitter: <a href="https://twitter.com/codewithsahand" style="color: #1a73e8; text-decoration: none; font-weight: bold;" target="_blank">@codewithsahand</a>.</p>
-  <a href="https://sahandghavidel.com" style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">Visit my website</a>
+  <p style="font-size: 1.1rem; line-height: 1.5; margin-bottom: 20px;">If you have any questions, please feel free to contact me through my email: codewithsahand@gmail.com </p>
+  <a href="https://100jsprojects.com"  style="background-color: #1a73e8; color: white; font-weight: bold; padding: 10px 20px; border-radius: 5px; text-decoration: none;">Visit my website</a>
 </div>