From 2a58d5cb2c0be99bc83a9bd9a0d96d885a13de62 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Thu, 5 Oct 2023 18:02:59 +0100 Subject: [PATCH 01/34] =?UTF-8?q?=D0=9E=D1=81=D0=BD=D0=BE=D0=B2=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B2=D1=91=D1=80=D1=81=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BA=D1=80=D0=BE=D1=81=D1=81=D0=B2=D0=BE=D1=80=D0=B4?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README | 1 - README.md | 5 + about.html | 119 ++++++++++++++++++ images/2-years.svg | 13 ++ images/blob.svg | 5 + images/doggo.svg | 4 + images/hmm-2.svg | 31 +++++ images/hmm.svg | 31 +++++ images/ufo.svg | 25 ++++ index.html | 218 +++++++++++++++++--------------- js/color-picking.js | 27 ++++ js/jquery.crossword.js | 2 +- js/script.js | 148 +++++++--------------- styles/pallete.css | 8 ++ styles/style.css | 277 +++++++++++++++++++++++++++++++++++++++++ 15 files changed, 706 insertions(+), 208 deletions(-) delete mode 100644 README create mode 100644 README.md create mode 100644 about.html create mode 100644 images/2-years.svg create mode 100644 images/blob.svg create mode 100644 images/doggo.svg create mode 100644 images/hmm-2.svg create mode 100644 images/hmm.svg create mode 100644 images/ufo.svg create mode 100644 js/color-picking.js create mode 100644 styles/pallete.css create mode 100644 styles/style.css diff --git a/README b/README deleted file mode 100644 index 4cce899..0000000 --- a/README +++ /dev/null @@ -1 +0,0 @@ -I built this crossword puzzle to provide an enhanced, more intuitive user experience with javascript. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e742622 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Лендинг с квизом на др Доки (2023) + +Никакая сборка не нужна. Просто открывайте _index.html_ в браузере =) + +Выбранный цвет сохраняется в localStorage. \ No newline at end of file diff --git a/about.html b/about.html new file mode 100644 index 0000000..afeef3a --- /dev/null +++ b/about.html @@ -0,0 +1,119 @@ + + + + + + + + + Что за квиз? — День рождения Доки + + + + + + + + + + + + +
+ + +
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+
+
+

привет? Здесь кто-нибудь есть?

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Neque hic eaque perspiciatis magnam id ipsam atque rem ab consectetur itaque, blanditiis, accusantium asperiores sunt laborum labore numquam dolorem eius ipsa!

+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/2-years.svg b/images/2-years.svg new file mode 100644 index 0000000..fc0b833 --- /dev/null +++ b/images/2-years.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/blob.svg b/images/blob.svg new file mode 100644 index 0000000..c3bc93c --- /dev/null +++ b/images/blob.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/images/doggo.svg b/images/doggo.svg new file mode 100644 index 0000000..d884721 --- /dev/null +++ b/images/doggo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/images/hmm-2.svg b/images/hmm-2.svg new file mode 100644 index 0000000..29d1bec --- /dev/null +++ b/images/hmm-2.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/hmm.svg b/images/hmm.svg new file mode 100644 index 0000000..cb9acaf --- /dev/null +++ b/images/hmm.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/ufo.svg b/images/ufo.svg new file mode 100644 index 0000000..df8b89b --- /dev/null +++ b/images/ufo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html index f941425..f073bde 100644 --- a/index.html +++ b/index.html @@ -1,104 +1,122 @@ - + - - - - - Qurossword - A javascript crossword puzzle plugin - - - - + + + + + + + Квиз — День рождения Доки + + + + + + + + - - - - - - -
- - - \ No newline at end of file + +
+ + +
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+
+
+
+ + + + + + + + + + + + + + + diff --git a/js/color-picking.js b/js/color-picking.js new file mode 100644 index 0000000..a811e13 --- /dev/null +++ b/js/color-picking.js @@ -0,0 +1,27 @@ +const body = document.body +const colors = Array.from(document.querySelectorAll('input[type="radio"]')) +const actualColor = document.querySelector('input[type="radio"]:checked') + +if (localStorage.getItem("color") === null) { + localStorage.setItem("color", actualColor.value); + body.style.setProperty("--main-color", actualColor.value) + console.log(localStorage.getItem("color")) +} else { + body.style.setProperty("--main-color", localStorage.getItem("color")) + colors.forEach(color => { + color.checked = false + + if (color.value === localStorage.getItem("color")) { + color.checked = true + } + }) +} + + +colors.forEach(color => { + color.parentNode.style.setProperty("--bg-color", color.value) + color.addEventListener('change', (e) => { + body.style.setProperty("--main-color", e.target.value) + localStorage.setItem("color", e.target.value); + }) +}) \ No newline at end of file diff --git a/js/jquery.crossword.js b/js/jquery.crossword.js index 343a06e..1a42225 100644 --- a/js/jquery.crossword.js +++ b/js/jquery.crossword.js @@ -25,7 +25,7 @@ // append clues markup after puzzle wrapper div // This should be moved into a configuration object - this.after('

Across

    Down

      '); + this.after('

      По горизонтали

        По вертикали

          '); // initialize some variables var tbl = [''], diff --git a/js/script.js b/js/script.js index d6c6b48..5824292 100644 --- a/js/script.js +++ b/js/script.js @@ -6,149 +6,85 @@ // two entries: an across entry and a down entry var puzzleData = [ { - clue: "First letter of greek alphabet", - answer: "alpha", + clue: "Особенность стиля программирования, когда не знаем выполнится ли то или иное событие.", + answer: "Асинхронность", position: 1, orientation: "across", startx: 1, starty: 1 }, { - clue: "Not a one ___ motor, but a three ___ motor", - answer: "phase", - position: 3, - orientation: "across", - startx: 7, - starty: 1 - }, - { - clue: "Created from a separation of charge", - answer: "capacitance", - position: 5, - orientation: "across", - startx: 1, - starty: 3 - }, - { - clue: "The speeds of engines without and accelaration", - answer: "idlespeeds", - position: 8, - orientation: "across", - startx: 1, - starty: 5 - }, - { - clue: "Complex resistances", - answer: "impedances", - position: 10, - orientation: "across", - startx: 2, - starty: 7 - }, - { - clue: "This device is used to step-up, step-down, and/or isolate", - answer: "transformer", - position: 13, - orientation: "across", - startx: 1, - starty: 9 - }, - { - clue: "Type of ray emitted frm the sun", - answer: "gamma", - position: 16, - orientation: "across", - startx: 1, - starty: 11 - }, - { - clue: "C programming language operator", - answer: "cysan", - position: 17, - orientation: "across", - startx: 7, - starty: 11 - }, - { - clue: "Defines the alpha-numeric characters that are typically associated with text used in programming", - answer: "ascii", + clue: "Музыкальный инструмент и разворачивающийся блок.", + answer: "Аккордеон", position: 1, orientation: "down", startx: 1, starty: 1 }, { - clue: "Generally, if you go over 1kV per cm this happens", - answer: "arc", + clue: "Таким может быть тортик, лук и архитектура приложения.", + answer: "Трёхслойная", position: 2, orientation: "down", - startx: 5, + startx: 12, starty: 1 }, { - clue: "Control system strategy that tries to replicate the human through process (abbr.)", - answer: "ann", - position: 4, - orientation: "down", - startx: 9, - starty: 1 - }, - { - clue: "Greek variable that usually describes rotor positon", - answer: "theta", - position: 6, - orientation: "down", - startx: 7, + clue: "Что хорошо делать в свою ветку и плохо в чужую?", + answer: "Форспуш", + position: 3, + orientation: "across", + startx: 4, starty: 3 }, { - clue: "Electromagnetic (abbr.)", - answer: "em", - position: 7, - orientation: "down", - startx: 11, + clue: "Особая область на странице, которую используют пользователи скринридеров как дополнительный способ навигации. Например, футер и хедер.", + answer: "Ориентир", + position: 4, + orientation: "down", + startx: 5, starty: 3 }, { - clue: "No. 13 across does this to a voltage", - answer: "steps", - position: 9, + clue: "Ячейка на матрице, единица разрешения дисплея устройства.", + answer: "Пиксель", + position: 5, orientation: "down", - startx: 5, - starty: 5 + startx: 14, + starty: 4 }, { - clue: "Emits a lout wailing sound", - answer: "siren", - position: 11, + clue: "HTML — это язык чего?", + answer: "Разметки", + position: 6, orientation: "down", - startx: 11, + startx: 7, starty: 7 }, { - clue: "Information technology (abbr.)", - answer: "it", - position: 12, - orientation: "down", - startx: 1, + clue: "Тип компилятора, любимый всеми фронтами.", + answer: "Транспайлер", + position: 7, + orientation: "across", + startx: 5, starty: 8 }, { - clue: "Asynchronous transfer mode (abbr.)", - answer: "atm", - position: 14, + clue: "Элемент, который нельзя вкладывать в самого себя.", + answer: "Ссылка", + position: 8, orientation: "down", - startx: 3, - starty: 9 + startx: 9, + starty: 8 }, { - clue: "Offset current control (abbr.)", - answer: "occ", - position: 15, - orientation: "down", + clue: "Выдуманное заболевание, для которого характерно чрезмерное использование множественных классов для оформления и для хранения информации.", + answer: "Классянка", + position: 9, + orientation: "across", startx: 7, - starty: 9 - } + starty: 13 + }, ] $('#puzzle-wrapper').crossword(puzzleData); diff --git a/styles/pallete.css b/styles/pallete.css new file mode 100644 index 0000000..4156d2b --- /dev/null +++ b/styles/pallete.css @@ -0,0 +1,8 @@ +:root { + --purple: #C56FFF; + --orange: #FF8630; + --blue: #2E9AFF; + --green: #41E847; + --yellow: #FFD829; + --pink: #F498AD; +} \ No newline at end of file diff --git a/styles/style.css b/styles/style.css new file mode 100644 index 0000000..7f7c691 --- /dev/null +++ b/styles/style.css @@ -0,0 +1,277 @@ +*, +*::before, +*::after { + box-sizing: border-box; + transition: color, border 0.1s; +} + +html { + color-scheme: dark; +} + +body { + position: relative; + min-height: 100dvb; + margin: 10px auto; + font-family: 'Spot Mono', sans-serif; + font-weight: 300; + font-size: 20px; + background-color: #000; + color: var(--main-color); +} + +a { + color: currentColor; + text-decoration: none; +} + +a:focus { + outline: none; +} + +a:hover, +a:focus-visible { + text-decoration: underline; +} + +h2 { + font-size: 22px; + line-height: 1.6em; + text-transform: uppercase; + font-weight: 300; +} + +p { + margin: 0; +} + +.header { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + max-width: 1280px; + margin: auto; + padding: 40px; +} + +.logo { + display: flex; + align-items: center; + gap: 15px; + font-size: 35px; +} + +.logo__icon { + display: block; + width: 112px; + height: 40px; + color: var(--main-color) +} + +.nav__item { + font-size: 22px; + text-transform: uppercase; + mix-blend-mode: difference; +} + +.colorpicker { + position: absolute; + inset: 50%; +} + +.colors { + position: relative; + list-style: none; + padding: 0; + margin: 0; + display: flex; + align-items: center; + gap: 10px; +} + +.color input { + display: none; +} + +.color-label { + width: 15px; + color: var(--bg-color); + display: block; + aspect-ratio: 1 / 1; + border-radius: 50%; + background-color: currentColor; + transition: scale 0.2s; + transform-origin: center; + cursor: pointer; +} + +.color-label:has(:checked) { + scale: 1.8; +} + +main { + display: flex; + align-items: center; + max-width: 1280px; + margin: auto; + padding: 250px 50px; +} + +.about { + height: 60dvb; + padding-block: 0; +} + +table { + max-width: 100%; + border-collapse: collapse; + border-spacing: 0; +} + +table tr { + width: 100%; +} + +table td { + position: relative; + margin: 0; + padding: 0; +} + +td input { + width: 100%; + aspect-ratio: 1 / 1; + border: none; + padding: 0em; + color: #fff; + font-size: 30px; + border: 1px solid var(--main-color); + text-align: center; + text-transform: uppercase; + background-color: transparent; +} + +td input:focus { + +} + +td span { + position: absolute; + top: 1px; + left: 3px; + font-size: 15px; +} + +input.done { + color: green; +} + +.active, +.clues-active { +} +.clue-done { + text-decoration: line-through; +} + +#puzzle-wrapper { + flex-basis: 50%; + margin-right: 3%; + padding: 20px; + background-color: #000; +} + +#puzzle { + min-width: 600px; +} + +#puzzle-clues { + flex-basis: 50%; + padding-left: 40px; +} + +#puzzle-clues ol li { + font-size: 20px; + cursor: pointer; +} + +.clues-active { + text-decoration: underline; +} + +#puzzle-clues h2 { + margin: 0.3em; +} + +.icon { + animation: flow 3s ease-in-out alternate-reverse infinite; +} + +@media (prefers-reduced-motion) { + .icon { + animation: none; + } +} + +.years { + position: absolute; + inset-block-start: 230px; + inset-inline-start: 20px; + width: clamp(150px, 15%, 250px); + z-index: -1; +} + +.hmm { + position: absolute; + inset-block-end: -15px; + inset-inline-start: 0; + width: clamp(300px, 23%, 400px); + animation: none; + z-index: -1; +} + +.hmm-2 { + width: clamp(300px, 90%, 90vw); +} + +.blob { + position: absolute; + inset-block-start: 0; + inset-inline-end: 35px; + width: clamp(155px, 15%, 255px); + z-index: -1; + animation-delay: 0.2s; +} + +.ufo { + position: absolute; + inset-block-end: 15px; + inset-inline-end: 15%; + width: clamp(300px, 25%, 420px); + z-index: -1; + animation-delay: 0.3s; +} + +.content { + max-width: 400px; + margin: auto; + mix-blend-mode: difference; +} + +@media (width < 1200px) { + main { + flex-direction: column; + } +} + +@media (width < 600px) { + #puzzle-wrapper { + overflow-x: scroll; + } +} + +@keyframes flow { + to { + translate: 0 15px; + } +} \ No newline at end of file From 446065b25fae72fd7d23f9e979274087ea227ee2 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Thu, 5 Oct 2023 18:17:10 +0100 Subject: [PATCH 02/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D1=84=D0=B0=D0=B2=D0=B8=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD=D1=83=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.html b/index.html index f073bde..fb9bee1 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,8 @@ Квиз — День рождения Доки + + From 19d3878767a416102028a084d5407760014f6d10 Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Fri, 6 Oct 2023 10:25:49 +0300 Subject: [PATCH 03/34] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D1=8F=D0=B5=D1=82=20=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB?= =?UTF-8?q?=D1=8B=20=D0=BD=D0=B0=20=D1=82=D0=B0=D0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/jquery.crossword.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/jquery.crossword.js b/js/jquery.crossword.js index 1a42225..9a307d9 100644 --- a/js/jquery.crossword.js +++ b/js/jquery.crossword.js @@ -29,7 +29,7 @@ // initialize some variables var tbl = ['
          '], - puzzEl = this, + puzzEl = this, clues = $('#puzzle-clues'), clueLiEls, coords, From e780634f27c2e1eb365b41e39ba9119fa0e8d4e8 Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Fri, 6 Oct 2023 10:28:23 +0300 Subject: [PATCH 04/34] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/script.js b/js/script.js index 5824292..948bf51 100644 --- a/js/script.js +++ b/js/script.js @@ -5,7 +5,7 @@ // Position refers to the numerical order of an entry. Each position can have // two entries: an across entry and a down entry var puzzleData = [ - { + { clue: "Особенность стиля программирования, когда не знаем выполнится ли то или иное событие.", answer: "Асинхронность", position: 1, @@ -13,7 +13,7 @@ startx: 1, starty: 1 }, - { + { clue: "Музыкальный инструмент и разворачивающийся блок.", answer: "Аккордеон", position: 1, From ac0b2644fda3516fb6283609185ecc8dc3fb9966 Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Fri, 6 Oct 2023 10:30:28 +0300 Subject: [PATCH 05/34] =?UTF-8?q?=D0=A1=D0=BD=D0=BE=D0=B2=D0=B0=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D1=8F=D0=B5=D1=82=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/jquery.crossword.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/jquery.crossword.js b/js/jquery.crossword.js index 9a307d9..2d5f4b7 100644 --- a/js/jquery.crossword.js +++ b/js/jquery.crossword.js @@ -291,7 +291,7 @@ currVal = $('.position-' + activePosition + ' input') .map(function() { - return $(this) + return $(this) .val() .toLowerCase(); }) From f51c5d267ca1263f7885a0c43cb3e40b7d6b1139 Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Fri, 6 Oct 2023 17:18:46 +0300 Subject: [PATCH 06/34] =?UTF-8?q?=D0=94=D0=B5=D0=BB=D0=B0=D0=B5=D1=82=20?= =?UTF-8?q?=D0=BD=D1=83=D0=BC=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D1=8E=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B8=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/jquery.crossword.js | 4 ++-- styles/style.css | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/js/jquery.crossword.js b/js/jquery.crossword.js index 2d5f4b7..434ba2b 100644 --- a/js/jquery.crossword.js +++ b/js/jquery.crossword.js @@ -191,7 +191,7 @@ } // while we're in here, add clues to DOM! - $('#' + puzz.data[i].orientation).append('
        1. ' + puzz.data[i].clue + '
        2. '); + $('#' + puzz.data[i].orientation).append('
        3. ' + puzz.data[i].clue + '
        4. '); } // Calculate rows/cols by finding max coords of each entry, then picking the highest @@ -258,7 +258,7 @@ } }; - }; + }; // Put entry number in first 'light' of each entry, skipping it if already present for (var i=1, p = entryCount; i < p; ++i) { diff --git a/styles/style.css b/styles/style.css index 7f7c691..793309d 100644 --- a/styles/style.css +++ b/styles/style.css @@ -193,6 +193,11 @@ input.done { #puzzle-clues ol li { font-size: 20px; cursor: pointer; + +} + +#puzzle-clues ol li::marker { + content: attr(data-order); } .clues-active { From 765b34621ee5e8ed34cc6a8320bced82c918eaaa Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Sat, 7 Oct 2023 13:35:20 +0300 Subject: [PATCH 07/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B1=D1=83=D0=BA=D0=B2=20=D1=83=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=BB-=D1=81=D1=82=D0=BE=D1=80=D0=BE=D0=B6?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/jquery.crossword.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/jquery.crossword.js b/js/jquery.crossword.js index 434ba2b..f2edaef 100644 --- a/js/jquery.crossword.js +++ b/js/jquery.crossword.js @@ -100,6 +100,8 @@ } else { console.log('input keyup: '+solvedToggle); + + localStorage.setItem(e.target.parentElement.getAttribute('data-coords'), e.originalEvent.key); puzInit.checkAnswer(e); @@ -251,10 +253,12 @@ }; } + var letter = localStorage.getItem(entries[x-1][i]) + if($(light).empty()){ $(light) .addClass('entry-' + (hasOffset ? x - positionOffset : x) + ' position-' + (x-1) ) - .append(''); + .append(''); } }; From 0394213d513846b50c1e19436abce32aec211c25 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 11:55:17 +0100 Subject: [PATCH 08/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D0=BA=D1=80=D0=B0=D1=81=D0=BE=D1=82=D0=B8?= =?UTF-8?q?=D1=89=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixing svgs * layout tweaks * some adaptiveness * adds gifts page placeholder * добавляет ссылки на поделиться по-простому * Разделяет пункты меню --------- Co-authored-by: Svetlana Korobtseva --- about.html | 218 ++++++++++++++++++++++++----------------------- gifts.html | 158 ++++++++++++++++++++++++++++++++++ images/hmm.svg | 68 ++++++++------- images/ufo.svg | 52 ++++++----- index.html | 52 +++++------ styles/style.css | 134 +++++++++++++++++++++++------ 6 files changed, 471 insertions(+), 211 deletions(-) create mode 100644 gifts.html diff --git a/about.html b/about.html index afeef3a..255982e 100644 --- a/about.html +++ b/about.html @@ -4,116 +4,118 @@ - - - Что за квиз? — День рождения Доки - - - - - - - - - + + + Что за квиз? — День рождения Доки + + + + + + + + + -
          - - -
          -
            -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          -
          -
          -
          -
          -

          привет? Здесь кто-нибудь есть?

          -

          Lorem ipsum dolor sit, amet consectetur adipisicing elit. Neque hic eaque perspiciatis magnam id ipsam atque rem ab consectetur itaque, blanditiis, accusantium asperiores sunt laborum labore numquam dolorem eius ipsa!

          -
          -
          - - - - - - - - - - - - - +
          + + +
          +
            +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          +
          +
          +
          + + + +
          +
          +

          привет? Здесь кто-нибудь есть?

          +

          Дока отмечает своё двухлетие в этом году! Как ни крути, а это было настоящее приключение. Нам захотелось это отметить :)

          +
          +
          +
          + + + + + + + + + + \ No newline at end of file diff --git a/gifts.html b/gifts.html new file mode 100644 index 0000000..c9ca0c1 --- /dev/null +++ b/gifts.html @@ -0,0 +1,158 @@ + + + + + + + + + Подарки — День рождения Доки + + + + + + + + + + + + +
          + + +
          +
            +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          +
          +
          +
          + + + +
          +
          +

          Бинго!

          +

          Вы знаете ответы на все вопросы! Спасибо, что уделили время и повайбили вместе с нами U^ᴥ^U

          + +
          +
          +
          + + + + + + + + + + + + \ No newline at end of file diff --git a/images/hmm.svg b/images/hmm.svg index cb9acaf..b33c0f7 100644 --- a/images/hmm.svg +++ b/images/hmm.svg @@ -1,31 +1,39 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/ufo.svg b/images/ufo.svg index df8b89b..eea2edf 100644 --- a/images/ufo.svg +++ b/images/ufo.svg @@ -1,25 +1,31 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - \ No newline at end of file + + + + + + + diff --git a/index.html b/index.html index fb9bee1..cadf634 100644 --- a/index.html +++ b/index.html @@ -10,8 +10,8 @@ Квиз — День рождения Доки - - + + @@ -29,15 +29,15 @@
          - + + + + + Дока + +
          • @@ -104,21 +104,23 @@
          -
          -
          -
          - - - - - - - - - - - - +
          + + + +
          +
          +
          +
          + + + + + + + + + diff --git a/styles/style.css b/styles/style.css index 793309d..d3becc9 100644 --- a/styles/style.css +++ b/styles/style.css @@ -12,7 +12,7 @@ html { body { position: relative; min-height: 100dvb; - margin: 10px auto; + margin: 0; font-family: 'Spot Mono', sans-serif; font-weight: 300; font-size: 20px; @@ -36,7 +36,6 @@ a:focus-visible { h2 { font-size: 22px; - line-height: 1.6em; text-transform: uppercase; font-weight: 300; } @@ -50,7 +49,7 @@ p { display: flex; justify-content: space-between; align-items: center; - max-width: 1280px; + max-width: 1680px; margin: auto; padding: 40px; } @@ -69,12 +68,22 @@ p { color: var(--main-color) } +nav { + display: flex; + gap: 20px; +} + .nav__item { font-size: 22px; text-transform: uppercase; mix-blend-mode: difference; } +.nav__item:not(:last-child)::after { + content: "◦"; + margin-left: 20px; +} + .colorpicker { position: absolute; inset: 50%; @@ -110,12 +119,21 @@ p { scale: 1.8; } -main { +.main-wrapper { display: flex; - align-items: center; - max-width: 1280px; + align-items: flex-start; + justify-content: center; + gap: 20px; + max-width: 1680px; margin: auto; - padding: 250px 50px; + padding: 50px 50px 150px; +} + +main { + display: flex; + align-items: flex-start; + flex-basis: 85%; + gap: 50px; } .about { @@ -152,10 +170,6 @@ td input { background-color: transparent; } -td input:focus { - -} - td span { position: absolute; top: 1px; @@ -176,24 +190,31 @@ input.done { #puzzle-wrapper { flex-basis: 50%; - margin-right: 3%; padding: 20px; background-color: #000; } #puzzle { - min-width: 600px; + min-width: 550px; } #puzzle-clues { flex-basis: 50%; - padding-left: 40px; +} + +#puzzle-clues ol { + margin-block-start: 0; + margin-block-end: 40px; } #puzzle-clues ol li { - font-size: 20px; + font-size: 18px; + line-height: 17px; cursor: pointer; +} +#puzzle-clues ol li + li { + margin-block-start: 5px; } #puzzle-clues ol li::marker { @@ -209,6 +230,8 @@ input.done { } .icon { + position: relative; + z-index: -1; animation: flow 3s ease-in-out alternate-reverse infinite; } @@ -219,11 +242,8 @@ input.done { } .years { - position: absolute; - inset-block-start: 230px; - inset-inline-start: 20px; - width: clamp(150px, 15%, 250px); - z-index: -1; + flex-basis: 12%; + max-width: 200px; } .hmm { @@ -232,7 +252,6 @@ input.done { inset-inline-start: 0; width: clamp(300px, 23%, 400px); animation: none; - z-index: -1; } .hmm-2 { @@ -244,16 +263,14 @@ input.done { inset-block-start: 0; inset-inline-end: 35px; width: clamp(155px, 15%, 255px); - z-index: -1; animation-delay: 0.2s; } .ufo { position: absolute; - inset-block-end: 15px; + inset-block-end: 0; inset-inline-end: 15%; width: clamp(300px, 25%, 420px); - z-index: -1; animation-delay: 0.3s; } @@ -263,14 +280,81 @@ input.done { mix-blend-mode: difference; } +.content h2 { + margin-block-end: 40px; +} + +.content p { + padding-inline-start: 40px; +} + +.share { + margin-block-start: 40px; +} + +.socials { + display: inline-flex; + gap: 10px; + margin: 0; + padding: 0; + list-style-type: none; +} + +.socials li { + padding: 5px; +} + +.visually-hidden { + position: absolute; + margin: -1px; + clip-path: inset(50%); + clip: rect(0 0 0 0); + overflow: hidden; + width: 1px; + height: 1px; + border: 0; + padding: 0; + white-space: nowrap; +} + @media (width < 1200px) { - main { + .colorpicker { + inset: initial; + inset-block-start: 120px; + inset-inline-start: 47px; + } + + .colors { flex-direction: column; } + + .main-wrapper, main { + flex-direction: column; + align-items: center; + } + + .main-wrapper { + padding-block-end: 250px; + } + + .years { + max-width: 150px; + } } @media (width < 600px) { + .main-wrapper { + padding-block-start: 10px; + padding-inline-start: 10px; + padding-inline-end: 10px; + } + + main { + width: 100%; + } + #puzzle-wrapper { + width: 100%; overflow-x: scroll; } } From 4667e68aa8059159c71734c0ba16b5921f24ec18 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 11:59:05 +0100 Subject: [PATCH 09/34] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D1=87=D0=B8=D1=89?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=82=D0=BA?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.html | 86 ++++++++-------------- gifts.html | 163 ++++++++++++++++++------------------------ index.html | 206 ++++++++++++++++++++++------------------------------- 3 files changed, 184 insertions(+), 271 deletions(-) diff --git a/about.html b/about.html index 255982e..30bdc0d 100644 --- a/about.html +++ b/about.html @@ -1,11 +1,8 @@ - - - - + + - Что за квиз? — День рождения Доки @@ -13,7 +10,8 @@ - + @@ -23,89 +21,62 @@ - +
          - - - -
          -
          -

          привет? Здесь кто-нибудь есть?

          -

          Дока отмечает своё двухлетие в этом году! Как ни крути, а это было настоящее приключение. Нам захотелось это отметить :)

          -
          -
          + + + +
          +
          +

          привет? Здесь кто-нибудь есть?

          +

          Дока отмечает своё двухлетие в этом году! Как ни крути, а это было настоящее приключение. Нам захотелось это + отметить :)

          +
          +
          @@ -118,4 +89,5 @@

          привет? Здесь кто-нибудь есть?

          - \ No newline at end of file + + \ No newline at end of file diff --git a/gifts.html b/gifts.html index c9ca0c1..e4ea1dc 100644 --- a/gifts.html +++ b/gifts.html @@ -1,11 +1,8 @@ - - - - + + - Подарки — День рождения Доки @@ -13,7 +10,8 @@ - + @@ -23,9 +21,11 @@ @@ -34,115 +34,93 @@
          - - - -
          -
          -

          Бинго!

          -

          Вы знаете ответы на все вопросы! Спасибо, что уделили время и повайбили вместе с нами U^ᴥ^U

          - -
          +
          @@ -155,4 +133,5 @@

          Бинго!

          - \ No newline at end of file + + \ No newline at end of file diff --git a/index.html b/index.html index cadf634..acf3d5c 100644 --- a/index.html +++ b/index.html @@ -1,126 +1,88 @@ - - - - - - - - - - - Квиз — День рождения Доки - - + + + + + + Квиз — День рождения Доки + + - - - - - - - + + + + + + + - -
          - - -
          -
            -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          -
          -
          -
          - - - -
          -
          -
          + +
          + + +
          +
            +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          • + +
          • +
          - - - - - +
          +
          + + - - - - - - +
          +
          +
          +
          + + + + + + + + + + + + + \ No newline at end of file From 2155eb61d8691d502631040422d742a6c17036ac Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Wed, 11 Oct 2023 18:15:13 +0300 Subject: [PATCH 10/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D0=B4=D0=B5=D0=BF=D0=BB=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/product-deploy.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/product-deploy.yml diff --git a/.github/workflows/product-deploy.yml b/.github/workflows/product-deploy.yml new file mode 100644 index 0000000..093ecd9 --- /dev/null +++ b/.github/workflows/product-deploy.yml @@ -0,0 +1,25 @@ +name: Развёртывание кроссворда + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + product-deploy: + runs-on: ubuntu-latest + steps: + - name: Загрузка репозитория + uses: actions/checkout@v4 + - name: Установка ключа для пользователя + run: | + set -eu + mkdir "$HOME/.ssh" + chmod 700 "$HOME/.ssh" + echo "${{ secrets.DEPLOY_KEY }}" > "$HOME/.ssh/id_rsa" + chmod 600 "$HOME/.ssh/id_rsa" + - name: Развёртывание приложения + run: | + ssh-keyscan -H birthday.doka.guide >> ~/.ssh/known_hosts + rsync --archive --progress --compress --delete . birthday.doka.guide:/web/sites/birthday.doka.guide/www/2023 \ No newline at end of file From a448e188b31b4f061ecb7c3c2477622ba840a57f Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Wed, 11 Oct 2023 18:20:29 +0300 Subject: [PATCH 11/34] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D1=83=D0=B5=D1=82=20=D0=BA=D0=BE=D0=BD=D1=84?= =?UTF-8?q?=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=BF=D0=BB=D0=BE=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/product-deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/product-deploy.yml b/.github/workflows/product-deploy.yml index 093ecd9..37496fd 100644 --- a/.github/workflows/product-deploy.yml +++ b/.github/workflows/product-deploy.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - main + - master jobs: product-deploy: @@ -22,4 +22,4 @@ jobs: - name: Развёртывание приложения run: | ssh-keyscan -H birthday.doka.guide >> ~/.ssh/known_hosts - rsync --archive --progress --compress --delete . birthday.doka.guide:/web/sites/birthday.doka.guide/www/2023 \ No newline at end of file + rsync --archive --progress --compress --delete . deploy@birthday.doka.guide:/web/sites/birthday.doka.guide/www/2023 \ No newline at end of file From ae716ad13aaf11074c5484479c1cf8a23600b8dc Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 16:57:48 +0100 Subject: [PATCH 12/34] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20=D0=BA=D0=BE=D0=BB=D0=BE?= =?UTF-8?q?=D1=80=D0=BF=D0=B8=D0=BA=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.html | 33 +----------------------- gifts.html | 33 +----------------------- index.html | 33 +----------------------- js/color-picking.js | 63 ++++++++++++++++++++++++++++++++------------- styles/style.css | 52 ++++++++++++++++++++----------------- 5 files changed, 76 insertions(+), 138 deletions(-) diff --git a/about.html b/about.html index 30bdc0d..92b7ed2 100644 --- a/about.html +++ b/about.html @@ -32,38 +32,7 @@
          -
            -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          +
          diff --git a/gifts.html b/gifts.html index e4ea1dc..c5fc532 100644 --- a/gifts.html +++ b/gifts.html @@ -31,38 +31,7 @@
          -
            -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          +
          diff --git a/index.html b/index.html index acf3d5c..792d7c9 100644 --- a/index.html +++ b/index.html @@ -31,38 +31,7 @@
          -
            -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          • - -
          • -
          +
          diff --git a/js/color-picking.js b/js/color-picking.js index a811e13..6ddf7de 100644 --- a/js/color-picking.js +++ b/js/color-picking.js @@ -1,27 +1,54 @@ const body = document.body -const colors = Array.from(document.querySelectorAll('input[type="radio"]')) -const actualColor = document.querySelector('input[type="radio"]:checked') +const colorsContainer = document.querySelector('.colorpicker') +const colors = ['#C56FFF', '#FF8630', '#2E9AFF', '#41E847', '#FFD829', '#F498AD'] +const colorButton = document.querySelector('.color__button') -if (localStorage.getItem("color") === null) { - localStorage.setItem("color", actualColor.value); - body.style.setProperty("--main-color", actualColor.value) - console.log(localStorage.getItem("color")) +if (localStorage.getItem('color') === null) { + localStorage.setItem('color', colorButton.value) + body.style.setProperty('--main-color', colorButton.value) } else { - body.style.setProperty("--main-color", localStorage.getItem("color")) + body.style.setProperty('--main-color', localStorage.getItem('color')) + colorButton.value = localStorage.getItem('color') + colorButton.style.setProperty('--bg-color', localStorage.getItem('color')) +} + +generateOtherColors() + +function removeOtherColors() { + let allOtherColors = colorsContainer.querySelectorAll('.color__other') + allOtherColors.forEach(color => { + colorsContainer.removeChild(color) + }) +} + +function generateOtherColors () { + let index = 0 colors.forEach(color => { - color.checked = false - - if (color.value === localStorage.getItem("color")) { - color.checked = true + if (colorButton.value !== color) { + let otherColor = document.createElement('span') + let x = 30 + 28 * Math.cos(2 * Math.PI * index / 7) + let y = 30 + 28 * Math.sin(2 * Math.PI * index / 7) + otherColor.classList.add('color__other') + otherColor.style.setProperty('--bg-color', color) + otherColor.style.width = (20 - 3 * index) + 'px' + otherColor.style.left = x + 'px' + otherColor.style.bottom = y + 'px' + otherColor.setAttribute('data-color', color) + colorsContainer.append(otherColor) + index++ } }) } - -colors.forEach(color => { - color.parentNode.style.setProperty("--bg-color", color.value) - color.addEventListener('change', (e) => { - body.style.setProperty("--main-color", e.target.value) - localStorage.setItem("color", e.target.value); - }) +colorButton.addEventListener('click', event => { + let nextColor = colors[colors.indexOf(event.target.value) + 1] + if (colors.indexOf(event.target.value) + 1 === colors.length) { + nextColor = colors[0] + } + colorButton.value = nextColor + colorButton.style.setProperty('--bg-color', nextColor) + removeOtherColors() + generateOtherColors() + body.style.setProperty('--main-color', colorButton.value) + localStorage.setItem('color', colorButton.value) }) \ No newline at end of file diff --git a/styles/style.css b/styles/style.css index d3becc9..9c9e1c9 100644 --- a/styles/style.css +++ b/styles/style.css @@ -86,37 +86,35 @@ nav { .colorpicker { position: absolute; - inset: 50%; -} - -.colors { - position: relative; - list-style: none; - padding: 0; - margin: 0; - display: flex; - align-items: center; - gap: 10px; -} - -.color input { - display: none; + left: 50%; + width: 75px; + height: 75px; + cursor: pointer; + animation: rotation 8s linear infinite; } -.color-label { - width: 15px; - color: var(--bg-color); - display: block; +.color__button { + position: absolute; + top: calc(50% - 17px); + left: calc(50% - 17px); + z-index: 10; + width: 35px; aspect-ratio: 1 / 1; border-radius: 50%; - background-color: currentColor; - transition: scale 0.2s; - transform-origin: center; + border: none; + background-color: var(--bg-color); cursor: pointer; + transition: 0.2s; } -.color-label:has(:checked) { - scale: 1.8; +.color__other { + position: absolute; + z-index: -1; + width: 20px; + aspect-ratio: 1 / 1; + border-radius: 50%; + background-color: var(--bg-color); + transition: 0.2s; } .main-wrapper { @@ -363,4 +361,10 @@ input.done { to { translate: 0 15px; } +} + +@keyframes rotation { + to { + rotate: 360deg; + } } \ No newline at end of file From 5f07abc985296b76bab44abaa66208a095be6e95 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 17:33:48 +0100 Subject: [PATCH 13/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D0=BA=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA?= =?UTF-8?q?=D1=83=20=D0=B8=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20=D1=88?= =?UTF-8?q?=D1=8D=D1=80=D0=B0,=20OG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.html | 5 +++++ gifts.html | 13 +++++++++---- images/share-img.png | Bin 0 -> 18148 bytes index.html | 5 +++++ 4 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 images/share-img.png diff --git a/about.html b/about.html index 92b7ed2..682080d 100644 --- a/about.html +++ b/about.html @@ -5,6 +5,11 @@ Что за квиз? — День рождения Доки + + + + + diff --git a/gifts.html b/gifts.html index c5fc532..c600126 100644 --- a/gifts.html +++ b/gifts.html @@ -5,6 +5,11 @@ Подарки — День рождения Доки + + + + + @@ -46,7 +51,7 @@

          Бинго!

          Поделиться:
          + diff --git a/index.html b/index.html index 19aa7b9..e3398de 100644 --- a/index.html +++ b/index.html @@ -47,6 +47,42 @@
          + @@ -58,5 +94,4 @@ - \ No newline at end of file diff --git a/styles/style.css b/styles/style.css index 946e257..b126902 100644 --- a/styles/style.css +++ b/styles/style.css @@ -296,6 +296,15 @@ input.done { margin-block-start: 40px; } +.footer { + display: flex; + justify-content: center; + align-items: center; + max-width: 1680px; + margin: auto; + padding: 40px 40px 25px; +} + .socials { display: inline-flex; gap: 10px; @@ -344,6 +353,10 @@ input.done { .years { max-width: 150px; } + + .ufo { + inset-inline-end: 0; + } } @media (width < 600px) { @@ -361,6 +374,15 @@ input.done { width: 100%; overflow-x: scroll; } + + .footer { + justify-content: flex-end; + padding: 10px 10px 0; + } + + .ufo { + display: none; + } } @keyframes flow { From ee8243b8ea311c6c2e6df3d9ed2ef1b1b5f10d31 Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Wed, 11 Oct 2023 20:53:40 +0300 Subject: [PATCH 20/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D1=83=20=D0=BA=D0=BB=D0=B0=D0=B2=D0=B8=D1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/jquery.crossword.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/js/jquery.crossword.js b/js/jquery.crossword.js index f2edaef..4f11ad7 100644 --- a/js/jquery.crossword.js +++ b/js/jquery.crossword.js @@ -101,7 +101,22 @@ console.log('input keyup: '+solvedToggle); - localStorage.setItem(e.target.parentElement.getAttribute('data-coords'), e.originalEvent.key); + if ( + (e.keyCode >= 65 && e.keyCode <= 90) // Regular cyrillic characters keys + // Extended cyrillic characters keys + // ------------------------------------ + || e.keyCode === 186 + || e.keyCode === 188 + || e.keyCode === 190 + || e.keyCode === 192 + || e.keyCode === 219 + || e.keyCode === 220 + || e.keyCode === 221 + || e.keyCode === 222 + // ------------------------------------ + ) { + localStorage.setItem(e.target.parentElement.getAttribute('data-coords'), e.originalEvent.key); + } puzInit.checkAnswer(e); From f810ebae684b50b79c29840543e6faaffe90c342 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 19:11:42 +0100 Subject: [PATCH 21/34] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B1=D1=83=D0=B5?= =?UTF-8?q?=D1=82=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20?= =?UTF-8?q?=D1=86=D0=B2=D0=B5=D1=82=20=D1=82=D0=B5=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.html | 169 ++++++++++++++---------- gifts.html | 305 ++++++++++++++++++++++++++++---------------- index.html | 169 ++++++++++++++---------- js/color-picking.js | 5 + 4 files changed, 407 insertions(+), 241 deletions(-) diff --git a/about.html b/about.html index e9dbfc3..3dbe5d7 100644 --- a/about.html +++ b/about.html @@ -1,69 +1,108 @@ - + + + + Что за квиз? — День рождения Доки + + + + + + + + + + + + + + + + + + - - - Что за квиз? — День рождения Доки - - - - - - - - - - - - - - - - - - - -
          - - -
          - + +
          + + +
          + +
          +
          +
          + + + +
          +
          +

          привет? Здесь кто-нибудь есть?

          +

          + Дока отмечает своё двухлетие в этом году! Как ни крути, а это было + настоящее приключение. Нам захотелось это отметить :) +

          +
          +
          -
          -
          - - + + -
          -
          -

          привет? Здесь кто-нибудь есть?

          -

          Дока отмечает своё двухлетие в этом году! Как ни крути, а это было настоящее приключение. Нам захотелось это - отметить :)

          -
          - -
          - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/gifts.html b/gifts.html index e21e7a0..e020b00 100644 --- a/gifts.html +++ b/gifts.html @@ -1,113 +1,200 @@ - + + + + Подарки — День рождения Доки + + + + + + + + + + + + + + + + + + - - - Подарки — День рождения Доки - - - - - - - - - - - - - - - - - - - -
          - - -
          - + +
          + + +
          + +
          +
          +
          + + + +
          +
          +

          Бинго!

          +

          + Вы знаете ответы на все вопросы! Спасибо, что уделили время и + повайбили вместе с нами U^ᴥ^U +

          + +
          +
          -
          -
          - - + + -
          -
          -

          Бинго!

          -

          Вы знаете ответы на все вопросы! Спасибо, что уделили время и повайбили вместе с нами U^ᴥ^U

          - -
          - -
          - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/index.html b/index.html index c331d1e..ae8ee32 100644 --- a/index.html +++ b/index.html @@ -1,71 +1,106 @@ - + + + + Квиз — День рождения Доки + + + + + + + + + + + + + + + + + + - - - Квиз — День рождения Доки - - - - - - - - - - - - - - - - - - - -
          - - -
          - -
          - - - -
          + +
          + + +
          + +
          + + +
          +
          +
          +
          + + + +
          +
          +
          -
          -
          - - + + -
          -
          - -
          - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/js/color-picking.js b/js/color-picking.js index 8c4ae7d..a124edd 100644 --- a/js/color-picking.js +++ b/js/color-picking.js @@ -13,11 +13,15 @@ const colorNames = { '#F498AD': 'Розовый' }; +document.querySelector('meta[name="theme-color"]').setAttribute('content', colorButton.value) + if (localStorage.getItem('color') !== null) { colorButton.value = localStorage.getItem('color') + document.querySelector('meta[name="theme-color"]').setAttribute('content', localStorage.getItem('color')) } else { localStorage.setItem('color', colorButton.value) } + body.style.setProperty('--main-color', colorButton.value) colorButton.style.setProperty('--bg-color', colorButton.value) currentColorOutput.textContent = colorNames[colorButton.value] @@ -62,4 +66,5 @@ colorButton.addEventListener('click', event => { body.style.setProperty('--main-color', colorButton.value) currentColorOutput.textContent = colorNames[colorButton.value] localStorage.setItem('color', colorButton.value) + document.querySelector('meta[name="theme-color"]').setAttribute('content', colorButton.value) }) \ No newline at end of file From d29f3422bd81ae972db5286737846b1a4f617cf1 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 19:16:36 +0100 Subject: [PATCH 22/34] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=B8=D1=82=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=82=D0=BA=D1=83=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BB=D0=BE=D1=80=D0=BF=D0=B8=D0=BA=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.html | 6 +++++- gifts.html | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/about.html b/about.html index 39cdb04..452972a 100644 --- a/about.html +++ b/about.html @@ -76,8 +76,12 @@ class="color__button" value="#C56FFF" > -
          Сменить цвет
          + Сменить цвет +
          + + +
          diff --git a/gifts.html b/gifts.html index e020b00..191622f 100644 --- a/gifts.html +++ b/gifts.html @@ -73,8 +73,12 @@ class="color__button" value="#C56FFF" > -
          Сменить цвет
          + Сменить цвет +
          + + +
          From 8ef3b4072bcad461d61e03e89eb8066df85cde84 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 19:20:57 +0100 Subject: [PATCH 23/34] =?UTF-8?q?=D0=A7=D0=B8=D0=BD=D0=B8=D1=82=20=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=8E=20=D0=B2=20=D1=81=D0=B0=D1=84=D0=B0=D1=80?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styles/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/styles/style.css b/styles/style.css index bdef9a8..6769497 100644 --- a/styles/style.css +++ b/styles/style.css @@ -77,6 +77,7 @@ nav { font-size: 22px; text-transform: uppercase; mix-blend-mode: difference; + transform: translate3d(0,0,0); /* Хак для починки Safari */ } .nav__item:not(:last-child)::after { From 48573fa7db1a8dc0e67f94f30a71115519e1629d Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 19:37:44 +0100 Subject: [PATCH 24/34] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D0=B8=D1=82=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.html | 88 +++++++++++++++++++++++------------------------------- gifts.html | 36 ++++++++++++++++++++++ index.html | 6 ---- 3 files changed, 73 insertions(+), 57 deletions(-) diff --git a/about.html b/about.html index 452972a..e8eb8bc 100644 --- a/about.html +++ b/about.html @@ -98,6 +98,42 @@

          привет? Здесь кто-нибудь есть?

          + @@ -109,54 +145,4 @@

          привет? Здесь кто-нибудь есть?

          - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/gifts.html b/gifts.html index 191622f..2adbd48 100644 --- a/gifts.html +++ b/gifts.html @@ -190,6 +190,42 @@

          Бинго!

          + diff --git a/index.html b/index.html index 77cea9a..baeabab 100644 --- a/index.html +++ b/index.html @@ -92,12 +92,6 @@
          - - - -
          -
          -
            From b7fed0cac4d6c645c1ac2119be2a6d92cda044a7 Mon Sep 17 00:00:00 2001 From: Svetlana Korobtseva Date: Thu, 12 Oct 2023 01:21:07 +0600 Subject: [PATCH 25/34] =?UTF-8?q?=D0=A7=D0=B8=D0=BD=D0=B8=D1=82=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B1=D0=B8=D0=BB=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styles/style.css | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/styles/style.css b/styles/style.css index 6769497..9b52c81 100644 --- a/styles/style.css +++ b/styles/style.css @@ -335,21 +335,17 @@ input.done { @media (width < 1200px) { .colorpicker { - inset: initial; - inset-block-start: 120px; - inset-inline-start: 47px; - } - - .colors { - flex-direction: column; + top: 150px; + left: auto; + right: 40px; } .main-wrapper, main { flex-direction: column; - align-items: center; } .main-wrapper { + padding-block-start: 0; padding-block-end: 250px; } @@ -363,6 +359,25 @@ input.done { } @media (width < 600px) { + .header { + flex-wrap: wrap; + gap: 20px; + padding: 10px; + } + + .logo { + font-size: 30px; + } + + .logo__icon { + width: 84px; + height: 30px; + } + + .colorpicker { + right: 10px; + } + .main-wrapper { padding-block-start: 10px; padding-inline-start: 10px; From defefb26204e2920a2b9d2d554e525a8ed93781e Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 20:21:09 +0100 Subject: [PATCH 26/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D1=88=D1=80=D0=B8=D1=84=D1=82=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.html | 2 +- fonts/spot-mono-light.woff2 | Bin 0 -> 47444 bytes gifts.html | 2 +- index.html | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 fonts/spot-mono-light.woff2 diff --git a/about.html b/about.html index e8eb8bc..dfda6b9 100644 --- a/about.html +++ b/about.html @@ -32,7 +32,7 @@ nv24Db>W&t(=Bm7;bmPb1?DM&? zgC1khBXY<;Kg% zs)}zq9bZmIH{~Nxz&Wy;s zS?4vIMA1_2!4it^szNKJYLl zdJ6t$C-S~zL0cAGJ835g@qKXd@0@eaIp>^n&N+49P!JI%F%b<`m1^x7NI!h?EO|kB z>p;p_Le@DNSyD7s)`8+IG!#d}2CAp4feQ-1|96%ho!9m1FW}@l$pXR`Fnu9tX#m*^ zfNhj4joJa?A-biMd~I4bLc}ot5r=?@4;^Nx+j_kYo}|;27aF30wp&PeKL(E}~kd+i}4ichXht1VIWC zc485GVv%a6l4;FtJmgm=zx1*l`A;KRP3fyFXLdicn%T~*X4jURS^hJt*=%PwJoLY> zriH1?+6}uDJywF`EMB-xMuOjaEkl@nzXhc%J8QngA!>WnebUi2nOD4uaH z{|^#&&j1iWN?MWUM4gp6V=O>`819h^$WWwogn%_%^6ur%X!XXqDEayzb1r)yV11ota1cq4PfCsf`NE^cFLO1#`lre-egZadgLN>*$ zU_IN|!(mQxo~u0I6(9JrcJcH*HAal)~KUZ6Hqav`sYEO2#~e%U2C;qn+TmlI4 z_UObTr7;Szz{n*at*DN+=?F#PO4KH&7nZ^nDGhf2E>$o=JWxHsL@65yX)#^aJcUbD ztP$BxNOV$WL3v$k|D?=<^19X@Vw1b~tZQI`$v3pg&2Me41(#cOTcc(y-?;0jDT`Na z+>bpt8u$1Zmr5H;&&Devt)z*v3n0RTGA^Xj#yT&!-w4LP6UL!HogPy*oLR+$lK^pY zRKeKf00JHjmxP*$lNT%sHW4KQJ0IK!i^ikU0}@dhfmozt+}J<6efc^uzqWhwT6%r`q*kfz)PCyb>dxxn>L_*6 z7VgU3zQ^|RKHRta`zwo2=4NZo=4t+eiF^&;^4lUCuI*mFwI8W#?z(YD{@(-Jy4TnG zT>ISmw%(EHrOnjc5K}I-^)c5z_x;J`cOue%iJl78>oslDxz$WL3luL`HLT4JBI46> zORAeXd&QZqueW;*G|C!vI}10#v`t^|qBOn1KgI^(ii9(v)uZ*{Fb!&A#^@mrx}q28Nr&M)7& zYG=GU{xPbE1jcZZq8V0i^M>M?Vh!Cqq$3=!3=1JPc`v}1*3}uy5xv8{L<#9v7poP^KIxf%y#fitM?ZK3c-8Y^?OqVE{GH)37os|s6pwBnaV#Y;*+~;QcP)eUD?Q-|TJ;@h*wE-^lM}MBYz)pNTEr(~=%UX`8dBYDYW~L3a6+mU)R1 zdC{JnzRJFo*Rgm9vCIr5zbeY{ni$fUS^n|ODWW|+`wX6&PlJ}2;j?s|t}nitVE45_ zMW1Qjp&iOPHW+GX*bjzC-VLo=ewF{bU*-O0G*Fx^$U$vu3j_ z$BLpHl_;^>*`43TZs!n(I9@pZ6McgiWyiS5zlRdoqqy%m{vOyY-iUNsSk8nzst*)o zld1qE{8BJ3WJ>5HU`R+QrHuT*CZLQ9Ia6!LxM%kx2@xC89}TW?rdH@_UE? z9rAARdV`R3gWk;3lSr{G08dKjR;kuk3O)w3`C)xoYz;DXUjk4*iWKzWC3hxmVta`$ zKy7@Rlj$=yo6$}r(LTts`U;p(bx?}z+3v?zNwkUGJXC>BhtxAuDR{$?%Tug>4Tdi~?SvZq5zm+sJyVD@c+5z1z~kV-qowed6)Fc8YPkV-qowOJMb00000 z0000Xgb+dqA%qY@2&I%#N-3q3Qc5Xfj4{R-V~jDzSO<{Oy9gL2p9`t9W3sGnA~>PD z8;;Fd^&wy&Tu7x;UJoPl_Dy7_UVzBSw{q=0%^imkmYCrd<{2D!&E-iS60!I{qGWy8 zukk0~d&%$!A;1&NYYWfirTj*(Gnv{;d83a}KFQ7S1!X8U`fa4{rF}~zPSajO8Q7ZV z(kwD^++aueNM~Tgn<5x5mV4RxvL{iajiW?pI-SY_IkJEN40NmSlNlYf=z%O=QZpz? zZR$RWC#G$5L6`aymyMg^QC`AsNZ8!=uK)|W`B@^0iym1vNXf0lC^ z!Q$5%4t8RniYI+$sZXF|HO%QcRedMt!E8QL+f9n$AKPbE7Q4_N81<2309 zw8v&Ak!`70r(Iu+uK(MsYnTJZ1l}%yGcRA2$1<-=VE7pVPxb1gZPsPIW^{9RyZy!vF3Qng|vSFTQ1%}TzO#GWTQC8Fg{*3=r3A$q}I$n%o$FQb!iI9G9X z)nDJ4zrI(xs!!CX8OcoQOK6&4p;~5@%qF$dsWEN^)9P9qt!~W}B?T%+ty|L>;-q9# z)W_hV!JR0x^Mo}4h3mJr}iCOO*cu`VjRn_X+o^pL{ zAm0BilK{oA5>g=>4#7P*4v(P>mOvFeg-Tcft3c{87L1xO8vL$d&OhU9bT*!9hreT$ln$Fb-nC9}J-a zkq=Mc1dPxfsQ@M@OcO*2X2Lqy3Tt7T9(#o-gadF`a163wu8LTdC>q8f%04B?HiB|k ziuBhNHGkJ@gE>IJYB@jnV?DwWQHeAd8;=rF zaTO*Ls`LeQh$EO97TEZb9K%f8Y|k;D=r9)kZSW1t2v4xmG}&IPMO~c0W|*DWdbUs% zcG_n6jD4H(T*aY5ihWgnwu(N`OP28l>*nLamX*AInPg4)sG*cDt2hGFxD=nte z(xPQv(aK9PtsS~gN1Ji`p0*489jkPc082T6&b9@)6zem=L%b!Vv(2Fn^;RAx%G>v} zn?QT5Jss*c-=>a2dZ&73&{?k>59l)1f4VO4n{KhKb&>8ZTHzr*G);7go>6|&YnV^; zZYi;kMrB`BJ`LH^^xNLQ`~G0SJO3?ASGLxy?7(4p=ytfvp) z_Qo5Mrv{^ed0=kqAK%@ zs|NYE&_37P8s{9>jS4QR0++a!zw{-g9e^%iIoff;(aMx?9&y_nJDw{h`NY z9*pv^36J!2KjiTyPbPcXf@do29iDIZBHR;Rj`xvQ-5ln1%i|_*qP-3B&Q8a7-k;|~ zo{!z-9iMvbD?TTF(a88}(qOmv*4Xy%4OH=?p3;+O_-vR9h%uE2DumSrLpcjZ(dko|RPpZW*=NN5(yv1ln(!$~3bO zbIlXf`}mHx!lEwAIC9OZmn+s~kFRXz*;ZudDbwvuFZ_tT>d=)S(sIXKjtXlZe>lzI zTwb_DXS8XFu^C&L`X=z7_oA*V$G7bS4V$uY*T{ z6m+5sL zb@Wz!3wJbBu(>g+;l5}pW?Hj%U47Nk)h(?>Y;Q|ZzrCn^L&rqlb=Gu7SD~iwUES?_ zJgU`EfAkh%bSB$ps=8u!fZyhN>|gUs z76R+Ff9+kduSP?U2M)D5(dBv$S>#4U3-_j*9oa+hMF2nr)99cfO=U($5UG}xYB-092x>KV{B6FCv#73pM z`0Io=>gga>TB3@OAOKJMpmvc`f(DGEZO3==%kbdg>V(VZe6tKRwvaB%2PYzot}1SH zp#P9eTexO<=5b2t-oCYFO4{qQ(tU0VHkcG$VqVh#vReX&H#?oR^`+97%@?#`j@6vU zZMlc&K{+NDfHE;R5y4IP1c%%Gz`+`}F9S<%PaaU6*HrSE9crR+Tw3ek!+LS7{3q=< z7^06We#P=!kF)R{Vy=iN7n6B~UeAf9SD5tsM0 zJ!U~feNHu2#wOn3wlforR~izrZN3t zX4jlyX^bG&qLZBdCNCZ5!`|{&cr}&|ys7r$KE;rDWoq=GOG zB#W7jx9mBnf6Y=qq&mlIInZp`lGgPl?G89mYkG=m|9jN{HI`y&%f9-5^0I{tu;#+f z_K!~Kq$4m|YR;Vn`!5VWRFq{box)`a=}9Q3q9n0dEe1{IhHMiWJYxOGv5$TLcp1E1 zULf``%QGjQPEN~}UdAFPr+B0@5`j-DJp<<-{^-|woBBoZT8#P-Li@sl4{0r2Td1PQ zbxrk-+&z!+eMk1IK1P5dj@P7~Qx)&{y&x^fTBxdE3iJ~m#1rB%ZK@%if$&m{L{*G9 zza|u*g=td6{5!9j$4p5}Fw&+R0oM=v4^|1_6LTz;L#mA;36R#>o^1h+5;OiHZKy`@ zo(H{tfTD}~?kna3fUg{CrVclwO1wq9dnb`n+s-PNM1?MCq?!A#y5TR_QQMSNq~6_9 zY1Cg}(g5y_{k+wdR*QS5pmM4XWU3yV)u6^S+6EN#ly_^vVfnVM_CX_-SV7jlP?uEf zh&hl{0j!Cs$-Go85ALa}_5=_G*!w4`4$Vi7=vbX0E%F>3rcC$9mF_4zGVCBs>8@Gu z!qBKy&xUgp@Pl%=*)afP;NWccc;7@wO!AxTfPvZMgJ&rT;%`S)l_I5r6>bwjsu_o` zFY()eYrPJdgBadNIGs6EfOi+J?&>l=d}2`i>=#DHU%xZK4IkuA*ZK9+xR?9*f5;u< zvHy`E(e^|zsF#BOF#p?v#M29y8tN~iWjIX#%1abk5K{8O*TCO?;G;VI-2{mch-f;a zb4ex4_Z7v4v@g5zE^cPE8t|5L>9eaoo|&=lD1YVjQ(W-@E=hAgN;BXm86T!c7DcdK zM1f1{1HPmamt6RLS>PG1BramSwo`Cy7aLu(J5_@NbK`xonUr867x9#jfivne;}WMx z9Huj>NlL|{h;x*rw8CSNVp}+r?#_iDr$~8V4szr zaH`xOd%$x*#;#v9inbNABN#ucVAl@IuHC6ZUl4q$od3=hZ>_IGWZtz znCQ2#_Xn_TajTbsE^dM)k0-#6@iT#g683&EpzvVaOd#;^L)ex==9m)~$^s8~AE8Y8 z_nn8c0pIa5%O{d#^BRr^w4#z_EK1v`t;~}Ck$sWKGOdqW8WY%A@T5NiAJZlUwiJN0 zHEhxl$ciZQnk-D=JW`g(AlhtjF^#P7d}g3pdMa9;rEr};?M1ko*UL8n=~Sw(5fC7H-F3e(3SZafBx^zGppQZ{IN5p zLVL9Gn{q5!mU&7Saf9Lm*St2+IHG#)0W(1s&LuQa$d`lot(xdD54yy)8X z-s5d;0aLdraN(M^D{jYPXW2ypuBGO1> zVvyL8n)nbabNakhcQZq8PV1)=6k6xSC}&ZynJ47poik5Li4rb>M-`QDsNvLb zL<-?ajcPuwDe`4nN}10h=o5XzOkvkD zfZ$M4LYp*3UrrMbbx2Hbj)&U6PHMZQ&;b|fij^vjTGGYu#3vLYp|@b(h{A^rO=N+# z03v+sEYqddRxR&Gg@WLj0k^J3M5m$J^_m`3>4l(}l1mW`+IJ)V6=1b}%K}cdBA#*;l#5BmeeMW6>j@yE?Rk$GNCl_uVq8i}&fHKs!42CyqC&Fm&QBEf7s zTnwzgrZJ^pdR)rAW!C|MNQx=JriCA@pgt}&VT(}UQB;X4_HA37{wB5@MaWpV8v^8B zsE~HKoM(jo70}=S{@YI~={xmpB9>1MS6o70Cu_(6MzDY02*GC%gBTP46&V@#QLbx% zB+O_IY;5#zF)V9-vV}rp9QU zq>z*WjS&o5B_&p?o`0lf2o;(RBjAePg@VKJet`u}M8J3jtXlnGLPOK|!0X09Ckji3 z_iZ)7Iq$tw+x+>l;p9k~l8#I&22gpF6fvDjv^lC*t(^W_0KP{8xTCl3+MG3D9U`Tt zJ0_b)Pc1@d;XaeuVYLbb?gwW)lnNg`ccuT9P3;Xwz8O{BVt>;N>Ixwg6n!UBdx*c$ zvAJgP2qtQ3-%D}v^B11NZdr|KNNbctIi^S*GWUG*>pmOk9Zfy;lU?s8fbXq3l6~u; z_125VGfzY>GY{fowW`@#iDqc8@#a_eaO0$ZXXuc~hUtQ_3@4we#d)HIHHzt8LzapS z*VY)FB$Y7EKUXeD%f(U@4bkg1rCG}KV8)Z8pMXJL61t=Ve|eJ`*a3lMOhi^>JJ25? z209(p3aw1RYATnC+J4mmYL6PnlBy1B-M*3EwVm#~t(-BeQRkpXdU&^OFu?nMcNtxs z00Z*sTf$EW3%GjW9Ja{j0DM=TfNuTSviUrpyM#Frx0W+PcXy>77&_z?LBxLkuli6Dw@ajmF2`dIk#kmzYgQr*G^JR7;$@+;wy+oeP4{PYZ-W^W}lUN z8iW;1uo|D<2STl2j>r0LbPH)|$B*V(qwSjZ+uQcFpQGKo z|FpH^9VT@vOD`+DU&Ql|E1!Qzte0%yc`@mms=Yy?74ZMGDg*);4r#*){{` z$1A)~-g1=4B&-SEMFc*BkX(cd3A|cboD457yNK4DAqH2o2GFElOB{s2RjeRnIfR}_ zrP2~w6ga5l(AcLQvWNN&)D*v^p;!j0!-90{2Kq(;?Q#Tt>Lk6Z&DkJyE|NP$S}lUG zMuvDOVG(fIT#Hr^2C}PNx8-SoDOC=E#?9E}a|o^D(a6#M2y9Du7LoLwertLdja)Dm47=%Ezx!K8X1qSYhM=?iJH;t!D$}l%XU0UOC zC4#;@*q2s)3|9`j>s%Pknq44#R;Z2dC7OF+{Ag0s=(84PND*%r-(o9%F5!{G#A2#}luRQWnz^ifTV^_g(Dp%Lzf1q>YAS>`qE_s{-6 zvG)Wvig7Q7o~%qGpE?X*m^N~GHzNJPgd{JA>LEfwzpDDQ>DG700~!IZloBOvQdjWe zl|6wLG$5)M=6XA-%%j0fZjUJZ8f>NBZ^l#3p&EdmRfl>|S6`r{Xnzvk zTcu#EQ|&_pjQYF$QC}D4EudWItLAfHNia`9IV(G{A+$8K*=mly)sIYG=?(0V(opZl zW$eu{m{xpT<5(p^EpF2SS~=#eS4TD-Jze7xA7hC|agbNU-&$ZJdo*GLP~x@f<@aXn z9?nR-=!HJo-=CU(30S<^wm!7+0;la>v@hes+qZ6toAJT4;z0<9%G~3{c}A$zwu7$Y zLu0n%gAN=N{nX%v7l1xt=ktDr_vl8KheKI|@^H9V$+}zSca%tFh`B1+05 z;B$`qUR1Q2jA^$o3dS>HK<|p5K5IvcFNii1b7B~e)}i@v3_dO(mf{9{n*0^8`qD^> zygoK@yAmJsV^F5XHZlWghzU5%GGWKionX1ZAfZ7N!5i9~(pEjiaf-;Pn2hLf zF9V0gXPHR}X^hkh#e)xELdWVmv+ou(>uFlnzM$HrJuP!aFxGfZ zor;?o^rYob>2>$Qcu3sI{>>ueKgxA5jOlWO0Va(XPK9j5gu39#Hm*2y22?0b=f(0x zjG26Xt`%-gohDTOANGGc)nVK$JAE9QYu1P>7?J@w(SP~CbR1Qd#t*G)W+ws5=sw) z*h0*6H%K;P0TjLu!!>LUrtaCaOZ23oIIoJ5P;B3r7+e#VYcUNOEa7VC5%AOs7c&nC zlAKS8P|PRdh+hcTd0hCrf)B~^%prSIYZ>?o%cv^zLXOlI%cOJ_1hAbT#y;&-++!{) zCv^rz!6o;Y!*C=4lEcPLvD!=&5wiHwDP~eZ6!N#hTU%rk_Bm#~1FM7DpKZ#tpn+o+ zj2``b`dtPQpvk(gWp#CV=FRGE8+~D9%C3uO=~%jcQ)VGsmsxU3tFOnllrv0OZwe;& z=k6Wp8#k8vZN$Oi4PG!M=zV{|L@GW!y|S~UWNG{)Ho6l|0^J$&@4?~KH0LtF zOb_;@Q*XV%hrGJ{eAZ>`NmHHxx15$lHKa>;?Q#=qLZilC?O*c-cU1>VR<(4-ccNs9 zSFJRevvuW|p_X_;vsW6>Bd@hCHY36fuL86#5Kd>UtBHvl%3fhT^cU6B$l3Ed*qf#- z0UnYTL``)Jl(WLj)}!xcUFlw@;~)7Hk2(eJna_kL@{>bIl~no$LtQ66hVbxkg{#rl zSUdeK`?3)Wk7B2(DMglS09*9&O@fSv-tYa_2aX-~-2tkIM=9-9rz>ZOQWWfdYt(}J zC(PH?^|gdl)|2`$eXxD&DyD~8bz<*~Z|VD3eCB%}2mePsbO+S;CvmqiM~QEHGRc~ZwV?+>@`wYAm8?| zf6sx#?TFeD|4I6kVKKuOwGEzjK@mpZmPDtE$qC7KQ{Fid^Gx~)uWQuAjQw>Q=%9DH z+uB}r6MaEeBzzLTH!e*mdB*57ehWVjFK{fpL zW{n#2X8-I-jm<-^m&n`18@&(R*4<*_15E)2M1G^e_v!3ep58f=T~qFw`*0NJi|acD zNfpA3x%gyX3EywW)FsqJ9|>*(432aMceK}bqidzNxp``SY|I_7SXKg?KxIu0*!&0t zIp6g@IH~wB6BywikNoUA5tkqR$dffL2G)+{qg8 zm^#x*ql>YXu76CAjlx6#yt+VGW|eXjN*UnP>E4rbT5ye|5b0UOLSrXOz!GEM zeiES+ByJM(M{LYVhiu{g8L{Vi>K~%+t67##_9)m)BVA-KD7D+I+vbGw_{=F=qDA4^ z!aU~kdruax;axXG7aiE+uJ7knK}TP2S!hP2RWhzZY5`?z>`qa}<`HCL;|YMf{!vs` zd+wyI&tYp?xo%+VWEQzXOF*M@Fg}46B>1~L&@L9ys{GaK%wzJ+wI`c@8{O z)FgG%Uce=yGvq>1>reh;T9{$GRN!ae(hlan%Qch!9dKhuX%85x1NG7#6DBh8w%2+5 z+!SRWMJOFno(}4EGr%$Z_pSGy@vZHU((qy8# zgjy3xKbK290<^lrg)B;Q{;*@2-k;}~TTIWWFpg8-P`)XC-&SEkd=p{S8N2<9qL+Ta zexM1v1HGIL1^ycq4^xGBMZ!*@pR+N=z4!s!9<><CERj&yFc249Ik*`e#A!H0SGHLsax|_@ZvLT!wB!IF^b<}tS&X2x$t(_nCbrlJ z!|qk(H&-T_SRK6k1~M59{>nABdF5>@8R_}s_5&?fmLr~JT7rjJfsYMY@Mt)5HSRT! zIgAU+2;~@!M29}w@2;J0V4iN_hx`BYXD$03#!-Rw3)^>ex7Ogw!Xi@~3#K%4cYHlA z65#OdxO@Q#7H}I12mirY&dg|&Z&@h$nn@!1U^;i7(d&)e+1pdk*4#g>4D zKw#v~Ar^_)yE58}aIFkt2_#$86wR-Nah_2T+=w5!?v=BXZ7cFT<1&;PevLB51|=3O zhza74tSFJLY<_lfz!pt*Q3jADxb{OBS7gy99jFed{87ON`s!G$ZD%(&Ry$i;$4hp* zgB{1bv%8VRo0q{Wj!E7rrNwZjpa2yF{y!pq?I^&Gag=+TsM?|sb7bsRpg8kk=+n%m zrk=4neC(GxhJ&>}YR+c!inl4^$h!YC3PjzIaPASm>Rv%0a0_vl8J}@6MMlnw3&om3 zz4Lye>fI7f-^jXnZK5xG3lPf8?PX_6?+t{q$v89}3E4D&S(}7aG`hj8O`W}Z5Egh3 z-0Iuuv)F5Eu(aktRluMzgyLO{$>j6;jW`YC5S`p7R604BP=xMWxPC#|LQ_LtZ4#oZ z6-ntl6##ado+OM$F~eA_~b15?b;6ec1O{5muK7?m~( zHW>n)g@4ykFSrnt*Y zfd}qEWKC$&-PkrB$RLSKmz&F!0%S)V3zLx4QxyU!hDk;XvHZO1Fj}i2K!z4Z!b#Rr z4Jg$4HC^9sHTvSNlqFc8+}T_qz-qZRkyzfPPIV_nN0iNr`emWe9dTV&C(k>n!}3F! zEpbV%y}8W2tXP`Y09@X|y+?lX$i}w{e$*c<-{*BRvn|*$)9R{!=RDixJ!9WE8VMs% z6{>$4Qs>1LWYr)p;?9e{DdF=zcs9?;W=FgLN}yWqd*ciFbQ+!dMy3wTN`j=(nYYY~ zOSs^8NuZ%de!U{n|2gyx)!?}q^SJMwGX%EqXJwL`mjh>ifd=I<@>K*&k!6t*q^UoW z7YfM1t6u(4YUFMHy9x5(61h;|*C{TR6he{OcoQ54w;MYX#tmu&U*N5hK_XTjDTv2?OFACFzI#p;Gs;8i7*YSc1@vXTi%&2}DIknaSONJL0DfJ;1 zHG+QED8<-q|8?wgUP-hz}7; z8TaCOWvDy)VQA>ESuxKHyD`2^e-?)9qCNkfKj+K3`r(1*mZ8&kwZ9Uf6n$^qTz_`d zDNxarlXkxTs+`;9J)5(RLrQVhLBbg;J6l&8`|iXD#Kp)U0#>{{g0R+Px4#5ng;<#@ zgk{Li1qec7$8mslAHwXuJRwCE;BShIRZHfX2_$lG3NSPFir@(Xf&a`MNmZp;Dv5DF zNY(ieAX)e8oN06Y+t?_k0u-Pp%W~;4m*aD@rmVk@2r=~qA~Rv#jbnVjr7isLFy?>z zKtQeIZ49v|o`0OH>;4J-a`Zn+*TiqOWnqi;loxp4>;=|=HfGGjuc7^N82{$RQr|CU zuS!WDdO0oQ$d^d*OIN#xjPsA(xpL%Zjy48(9hAtw3m}&iOx)6wz z!n_B8&-3c)`pivDXU+FyDO3+k1hb4x1CGAFQ#{Q+L}5pqATv!>PTVQ_%!$Xt3H8_z z1%ovEqlnVk3SKZOvs<+zv?KAM;T`t6D&`417?I>w46|=Z6SmT}{D2~1N9vZQa`ia6mT6J%;xCDaM)B^f@+6M$3@(~t% zbf?n_pHs>|7dVt85h6pEGn4~=ZlHuZ3c9&abUE}GUVBFBilWsq=ze~!6~_g#rdopT z-wDpLE87xdj-!GFxKqW!5*W_D0nBa<^Ke4FitSI9UvMFq${>P)33C25M!Zk0%&T9F8tYzYDdk_7RxrJ(Az|1pRn zS}P!##EHP$Zp{#NZyx`-`0J7tl|)r3DR|+Cg}+Na(-KvrDVDvGFTARSn6nmCYMjcC z;tJ{*kkIsNJ+k<-7|M-j0no)4lR8ks-sQZ?* zbnD8guh@9C*F)8c@Q)5SS0mNYR>**d$_foRo`=#C4F_K6SgAp5+$|U-?OW-BxEY30 zXW6sC-rsN2H*hn){Ln*j_jW{Xc$8QxY$`6eB(UqGbHWDNWxyR)Ui%4qX$aSS%mx3N&Dd~FQyPT=zamc zpbWOu`^{qI;T-G~ve5L!xA_E9cg-wb)7|66<|f&?u2hmdn!>*DuQL-b?#m@kJVqTx z47may3&zO676#{=&@HK(>4u>z|967|%MhSXkZ}nC^+}{J3Rx_{qJ?{2IOi}ahj&v6 znzMMZb{h3u9&N8+k`sT@2E{2g^Ko&2l*I!CMJhvyx3v)7aAUxTekB;z-N7Gy2;vzd zP7zQAq%boCqF6?V?UV3c2@^U4^eX0ya)3=Jof06~qr6_@Ma`+o5>w=nmxW1(Pv+eN zlq{jM!(g7a$Z9#()b7fMxCDrn?-{a30Np@bDYCeZ5$i?jk9eMI2^JI!SuLv^mr>Qy zIIPRG`#kIT+9jsUDJhG!W&+0TfX6KcO1ci5l({R&&qn8PwWiG~P$!`I0YOU1U2I+0 za5v%S^Or+iXXz^S761p3CyPNY{*_CBvJdG);-|M2VE-B3-N5BLbZI3`xkwSj`p@Lj z&n?UlX#fir#nu_ElO{rjp+MgCX)uAevlli&UQp93{RuM~H#4((_cy+3)rmbMcVHUm z*p9Eq+|Z%;``-St7!)ypZzE)AKZZg+=J_e~-Y zhhW*i_hgJ-CGCzn`fY@kD>uce+o@)QMVNnfab2Gkc<=QGKfNy^{L|B>*EV65MwD1a zs{t?izkK?BWS`bF1_K#^k)6# zjgMo;whzMD3pzVT#`o1*R_{yrCuk>$J=}fq)*H6+)6?Iq1%ay_FO|-CjziDcnFbnA z2|Qv-4u_Uq7o{#X?0B|)uCZ9(2(#S%OJlHTslnp-jsXM@jR$a~f-m&o( zx}BR-^{iv+^jy)csB2r`EKwOcnJu2vNt=a10Rd#L$}Jzq9PxbI5Gq1%xUX+wQ2U+{ zJUXrOrmOTqfjf+wX9(|r#{Ij?5t8@E<5y**H>>4oC~Gwkap{z_Q6YmLPXqG7?f(?q zM6MK55%4K;k*cm?qNLOs@B3&C>t#2V$0^MnB0tN^SO|kvEAIybHHuA}_OQ%y2e-Dy z^Yfj?s1YFp8bw}qn1-UDF2i$4E-=wZWQhxnzIfHzdYLvEY97-avdQF>$45;=*%drl07;>)ifRCgV=Xg;#cY*07X$~_hxlzTbSY}>?Nn)k4 z)v(nPQd@|Nz5|WxQf(LB%ZvCC;Y}vrYvT3r&1CoxFq{JmpF58H`y9&1c1@ zSWVBefx)3F#dxHM0o*xNC=`%9VJI|w_kpQP*AhB17OR?e06##$zsRB{reHsee^_eE z&zTC0aG;=Eaed`4_MlC7cIV0E(NULYe0B=#fn<)_1y}q2 zu^XbR?S^W%NnW2M5Oj#af8hx?9;$yJ9ZQ!EC61h!*SM6Vwd~4y+Dk zN0@y_#84Xg1E;ZqM^^?AlWP=G2uH$*tweq}z=kQn8#g}*l&qUQm79*?Z08|Zy?^?@ zfFdY4FxH0aYZyzmWZgzMxIUQ_`ISSXlUNKQx$nshH65*FIPJTf)O=|W4tsfsr*(E+ zXsmh*uzmH7vbVV*@h9__T0#a zE6y0ZiE`qvHP8-w#oA{i7Xr}u4*~-ugH9?B5j~0CV({|H&}Ao){G^)if)Ow;5FV;m z(gPwYYX<9|*8El*KPe=mdFwCfY;NxJ&66u*V=lJ^GxGtD zVe!xTiB;0SpXAaGYF<1sI?OOaIg6Gx0*J6$iRgi*wH)f4m}L!};Q^J;!bOb<%!pEn zuy$Ech&c%)AHD)E*+7Lp;0lqRMcjM1RW*p4Kk2GDfZn2bRT}GUdBUafpcq;n0bHQA z9qeFFg+Z6S3W+O=W`o_QqL^$HC+{{M5t-PoVR)(O7=~)m(3fUaRTYG>scc?<@5Zz6nj!T9i~Gu@Ov4&b9#ft|>rL`f3>^OcY#Sod4HLB{fze}I zT47V8b$Dv%T6A4>9jn4^us7)B>GnT9`G>v#{D5}uklP`PV{H25TEZXnN&!$}Pp=DZ z(-$yEh^W72kK7REtoeN4PBBEY7+qYO;T6|f%%e3P+R&i^4I3rSG+0d6Hh@8t z^BE=uM+@;3PjBnK;k!`!oxa5-EiHD_qhZHBeLW?8G?Xt_SJQE?haP{QrjqQG!kf4w^=sOCrj{s9I4KJ-5L8oq8@r)*Ilwgp#E@%z-2V%M}FIR#3_Nnbli7j%=0~ zj&Th-x2tx>S#DWG({EzllVI0cgC$j7mJ4Derm@DIV@@DchGVzqmBhIESYk%0jhpQW zlFQg6YB2B}pzaL`4#a{D)pD5chwixNS$u3nXAD)oeGzzKK|d^pvy~--l}2WPK{H6z zR!#KRxcbsG1q?JZHcS{{5xsrQ?Yul2!&vxLAgQkst%dtVnaWqA>8NO ze;*AZOAb^N$*np2*>$z>U#0j#oqG+RVTtp`tt0lsci|#fI73)Gg6HLZ{r*_sZ6fY( z!Ts;t(;bZ?+>r+P6n4M!Om6DhX+B6dO1+A8;wK(M->bqvaoe!8xBx zhAdr#v!g|U&Cd>Waw#o|RL~7FT_`#gk9erWYsypLURA#iNKiT5aSOn~N;a zXSV+XA~{&Vr^~S|vst1cbIxk*Wzu)qZscdB!^C7YENF=ztv43u z*ZZT*VVzhSbTbQ*Dd%=s-(wxsf z#vqa$Eb>FA9c@?}uye|@5hf9>@hm6rt~cka`ubsWYwPf-yOSGLS3rL9x6h~T2aJ6e zqOado$DlzbKx9LOK6P#VP3Y`J5^;>fSPV zfp(`^V^VLHuN#S47Xsel#&Xac$b1xIpOB;v;5MZuS!h59vsP#nxyCn#sd{y@(4Ihz z4K7`okDmkyJia%LSne6T5tA)>EHZpK4Cs`GKZl-`C+P6-ko)0FJjTbj^Sl!OA^^!_ zH?}1YrOZVpNCWQk_q>R~*1AhKy(+cwKU>fpibI|CQ-u}#E%WI6ESv|uxu)5)Uj1{tOr zhr9^ex7e_+YA9rYSUL8a2CdK@rpQT0RrH}R!a2cuI;S%;#sPo96;Rac<(?dUo!8%l z5o}hGV*=8T^BViP1RH@TFwV1Ub>EB=9|TZ)2YXxq_&E0Y&ZKZUG1{vd^H_`Wvx4b; z(b$MQ2Q*mK1Jyivt6RJ69rrAwiVE~`M@?UP-3qkM9dt9Hdsa91I0z&D&YZ+phoMJXN1bihsRQ?(Z74@``Pru}4@QxN_W&eP63j3F=W`ju&lMa6l zz*szV&E~l{o~5*p2p{R)NPqIOjkTz@4~_65(tcC(C!(%TgDs0Yp?bbpYGu;DvC0a{ zJKlsKmai~uEutwy!`9AVvN_#&S+1plyu zK_6lb1eJ0t8t7jWAm=aVikI8TU|@nX@BxRh)^qKhz`_aNzVOr$DaPV+l)|I+D(u9A zndC5x{8a)ehjXa%+6!___**oAnXbUb;JLVbxLj`0`xaNOoy z@`RNovAyia2oyv!;Sj9p59cpQD3rcEZW$^ti4{>XBG}7_+2> zO!IzY*M2-Fe|zP?jCK5!pP5q?T%r4sR*k`#IVkG8Y}~X`stc=H>$vBz(Ue>yfdN0I zRqp$?b{H!@(Vke|?J5$nV_ss1E>@(dh?f~uac08%2`f#har31DjwK_&UbTTa_35); zN=rk8%7_t`h~Cz6dYUJ|QXtVMM5ctnD*|hj@o6+3uuvJ%Z^p#K_^Emp2Q*SLS1S0% zX5i-e+@_v%;iEweg&QVi@ayovgU9fI3r-1rj@=-n0unPF+RQkZ^xq9!b}>W^n9Yb$ zFr;I?=u0CN4(M5)S11-C{L~OVuMu*M<|!B44#fj3;=gbh;=rh<60~%^>^YaujMC;o z87CPWlZ3j-Pj-bICQ%fy1jIn5%ssW9exZVd31c5b= zv{7ZAOf6(ctW(BD!6o^EwFHYVnMnp%vE>nK!M<@!YZ!4{I)jiLVuLBxgd51rY?lM8 zqiVv^&yzDSLq58)+#JB7f(nGb9@3tv5yjUC_wjwLnu|k1R174y?Iaec6h+oH3m|yK zDeIt=zVCj3ObpS;)h1HK^LaBOUTZqwXc_Z6zl0pnS&`vH(pYRnHsmYt`4=+ua;7@~ z8NFtg*SP8~^{UQOy|N?j0u4RjHkx+KRxE7n(xFkWGF1J=uMNCpBm{Q9@DA16tlVCV zugr8{VWH1E)T963HdOgaj1Q+!+68EEGT?{eRi>YFhfG*ObktN6VLwjg&nG*vQe@>M ze?ENfqMZ;S&_(#e-D=4Bts(?vPdipVj+|_I$Bg z_vN3ZFA4Ma_HJaX309?ND1Wtkr5VZvQG?rsmpd6zGB-C_wAXh@S>`epb=fVAV5H~ZQ9Z~-@oj%hhLmXYiyDWzEj~K6x`}h!j z?U1OWu|zO}iLfC6Ts4kpV%+9n$j)J!Kphn)crw%<{tXMu`58ORv#o^M+kp=AKs9of z^~iw^^DO9*)2NYyl#n2CLjLSM#lr>)FVg_-ED5yP0h#!`Dv4P7_2f&aJP^U&65p9* z%PVe1X4eL9p~2iCNAB7@Ir19HjyHj>iYv3=)=jpTY%f`?3^?#|Bbm|%x4mTe7o=QK zO5|bA2zW1?q|Ejwloc6iDW|CHlpHz5M!L&teZ{08CfEw3 z@0QSPRpK)yx$evHl1Mpfh;uuR`e#QzuG9-sN*Oy>SyeK1r(O+4S7kLwp!;D8rEso| zDK1buE$WdqRO?l37{nWnts12vLl$-Af(&F%r+JGunoLK0OSL21o0#;nP%&gl@QMte z*^6}Wr4m-Mwwjo%?Q)Lo*1*PuP_s0V6eTLF3Be=M?o8D#rBS9g6^6a4r9@s(p|*YN zxr7>!(6Jknx+>;I3XxhLDH%=UKP zC;8#3UBx7Hno%6)!fwGr;EP40;7L8Nkk29BoQQ zUF7Na`b9!1)=R`B#4M21i*+@Uu&Ml!dcWH zA5U@Cg2U&0?RCMU_1yH~!RIT=7Kgv9L7v5l)ov0q2>20G>D*X8QR>G*i&-kJ;6gEb zeuoQ5=(1(y^sPc9vVR-E;xG#BZN|)#UHz!3FtwPYML`hMPfPIxxgM$1K>P$k9zF6e z7{CF5cQ1F6Z|Ndp4InjA6xtep1{`2pqgo5~l%{GS5eynQ>SXa~8!+rATpIbQxv^wv z^6ljV^H%rgY`b&(R7|xMR}t*4s={U~Aj!DFwF!+7GY+)t$A z6U%51at7~8<+Db1-_@`l)a?ou=Wc^}OCwuk_%}{KqN^``*Z3G-iiKqg3wd<6hBWxz z^3mopgkf2Q`Z0plgHtOFY~>CG`c_i#U~rNu4_TbE2EkblxAPzm)wbM#+r#AGz%f5z zIWZI#*&$;GFjF;>ULKeJz36e23mXh9EcEZ~^01*yx)IKf#jP>mh=w(F;-yhpxN(Gq z;NU@+9^3awTQ(E~UdZGv3lED_lpnAeR-a)ra;q6#Muoy0Ew9iX% zPKu8Z1un0Pv){P~1_Jcb(t#7<8uutin&QxaxU~#XqIU@5fD}4BE@IF`Cix<*XiKDuY<4`Zg>u68=)f4g(!BZ-x;i zhTycA#+rkO9D@#WG9RldDhG7luFb_XCF(2A1k_2D3JRw-(^^U{KpdeU@vQF zo?Z5OwT3wy z`~MN_=P=LU9>6{}iXUzcQ!Huj>FF9ERdc4OsEY3yXzFSM@j{jf45AWq8L}Ad9n6qO zt6K(DG+T|@#bmv%5dWtF-%kf-&D+>(@{;_5t#Jx(?aZ9Zb!P{x3C|s_=^bN(EVkNp z*8zG-Rg#8WAWza21GueMbvfLgo^hC#YLHA#omWAmIf5t_B})bHRz&=#3O`SO&aGze zZ{MTrtg9QRS0ST>zV!F9lET;nFOR53%F9mXW!XqN`8R{uHOd^=# zlDqFOb*~;_V7G|V`#pBMC}%%7>wK%nAE682d>gpUGd{tSM2~Yo?5K5BZ9nKDml@co zUI&6x^KPIZkf!Y=l@ ztA+MAJfB}|9drmpgj3rutzUpG$}tmM!iguLTW}>^UQL2j@+HU6#DU4rkH7WzKhfL3 zm>uYiZuZO`frtwNy1CO_j3plik;xL1(+BlviA7AFkvG(; z*drr9bk_X>L4FdBSwkBnf+l+Y=a;ft@+=SyzwiK>*CYMF&R?Gcv7Kw4+n0|<;J^!8 z@4YuVI^ZdK))d6s=}Ud?2_|Fj=nu6{z3kK|JAZyucFn8J4-dHutBCjS1CE^-BpZk~ z(@s`BUO#WK_zO#=n0i0wPMJn|h2;);)b63vlA(sSv$pH@^QlU4a@oYhAlhV%C96u$AD>1Rrw`gv|M^5h_Enk)oFVXY+;0uG^_Rjcte++9?9_m6_xrGgtSW+&} zwq=l93A4SuZ(j+_FJKX3BCXngr95tvrGyf=mo0AEtH%4Y!3cPcqg9e=fENUQP=YM(V4W7{KWSV%WSfd&pEyST7a(;tD~en1 zHUwbDm0Y;)QSV2r=}JO;#xEBBL+T~Ub{G+>Vp7+8l0n04!Djt9Kj^%1ZHegHeO}%o zX~qIRTO@2zE|TJgL0mG?R{Y(l{1o~ek#Wt>|3GO+F8RnH{;pm@KGi=j#QbutuD{sK94io-s#pTnM)XuEmC=8X6hQ?qS zIY?uO@Edf2;o!U6PBKh5R!6Lm7YJcj|knr8v5I|xxBFmXnBD82qT*@OH zuS1+-X~xB23%yf`Su&6EIHXFh0| z6IUFJ;9)@q*SJM~%kwKY3Sw9Qw%wO*1oT<+KG;YDD2QDwVjD2}Uq{k6k3F z=CHA(oi--r@=PTs7`{63Z(>qU@-C>oN&1#>^xMR9;$`BQen~ju70OMY?#o2dmxQB+ zpfCp?ydwe$>A<~|hCl{BNO2q~{e1+Q;K4fsl7J+s@;I=hL%@NRfeh9Ik{N=`fH(k3 zYr|k+BvQhcqcr>^czaEt+R4+e*u$&|n?R(aKqb(eCKKKZr6}vp6w*M~TK(#Iu2Y^P zpS8=w`K*5$T$~hdKNjZ~00%qZ?RW$(#*{p({C3xX;P@>Uro4t%6TF+ zzm%{xn%Bp~pIh1i7o$cSjE1Y;hD0;g;e?sj4W=ay^T?+Wg-7Zn^<0(lFd3KB6FJty z3v6pOLU^ID1nDne}o97c;pJRP<{^X@n)kZi64>yaz8HrENV zR=3OGXl}Hqxv!KXd3WqY_Ln z=WzmMR~@Q37*t)NH@on|uDa-%pu zQ1%sj{^-=`y@drII=ANH%aWp0n&`k1EX!x)lDQ)|q%Mlj!eLT0OWBcS2h7SP))yPP zPSaW*PeOuOttsFiU;)@(WKh{+Z1O7T2_~EGt>QIxIFu+7Wpr7XV4B!T$HMuwUvRsJqLhp31@*aUql2IH@mhW?9X0o>g$yU>3+W=mJqP4(W+Fyx&C#&|^Hxqt73p{xpKTnqr;)VuF{a zq*5>w+fi?2n`xK>@9Ec;0}$%-(y1xtqYmq&{AGr4w#H&HeCKz-LUiXIY!?r>0^U+u zAc|&sDCLx^%&I#M2+{j**o5@PT5#u4mn9S!9t2UePJND3ybq#0lj%sOAp)6IiG_24 zlc?8xPy4mo*)8WgdQas17>Eh=S%$lTRfTwjkdY$^ol=VCTZ9?i(BtG)mhv|D(uE`k zYM(B5Y+eOk!y&wdVM83N=-ev`QIE`i)qT|w#HW6Vwn;@g$SOr8kv&4NQjr)O2ZmAD z@VXvFsl|U&!?Gcc4bF{yWv#0qD?)?@IK_{73od1j9=juz#UL#3&@>(wQ`|Uay*qGR zN)U+IedNWa%pw0;pGJ^KN*?3;Vo;m3d$ki-aM@blu^yH<>=+C7IcVdBj#b-uyJC~* z0=4$Xho8{N+g)e(k7^LAKeC|?TN(`#GCU$RJo@DR0lv@fEp&nHVdGh=HB}NH?MW;a z5C6*uo)`|vHLBY8!NgG-8*Tl| zQd8R{Rqzob49^y+nd&FLDqfiwre{vXpiagPY;D~ElbUbO zUafYsbMBZR=I7a>9yMY-Fp%JsA2Qv#{?8ZD-HTVxCl1#%)jt5wT`?---FIi%hGp~& z!bWn*gcor8PgmwR-}kO_qJ4TAR)LIOb+mI;8p)s}3@+eaUh|9-v;VSK}?ST{M} zgaJZ3!^fEF0nU1}vTFu>4?F3}2gsN<>qQHZ5!T7GH19 zFmBQW&@`pB^x_@D(!0k8V;9=~LkNL(yqy^z{Px_}Y+3e`ADESNqrqwE#e}7M{y#?m zNC^GaqNvA=6S4j>GdD^!F}j2!&}eT*`$u=ATn&cApOHl@rP5dLYWYf;2B!wAop>`1 zfo9}|rwPHI>m^|4iD4~(%TV7!lZZwIX5aZWJHbxVL4Rgy8u9##qMg*9ITurfp@uzG?#7WfjEee7|^%TQf70A8Gcq3 ztSmzMk+vCxx##_h*x+zmN)~mdN9o=}raeK~Y$Frpgk`g^cy7Pd_(Ha>?BNl-;F3in zbQ@GfvMONmOCJ(N$)5DRX+zd!?k-X$*6Y+x0@E+~?G}tWGtQbkau1P_QzHrFy*u-o z1)9`K&E>r?E|JzbtT5;$p$6!|o1{1rRF!gJ&_$mW1gUx9JbO5+fkf2q4*fYmd(O}* z+rF#E=Dk2N=b5g+$J=OmD>1JfjJ6pi)6be&3qn1sX)DO}zY@J0l<0?0HM|xJ8@oka zYE0ZFL5z=Xpwi>TL+b`C>ih%7f5 zQ{AR%-}Qsgd%EC|me7!6X<(^da66lh>2}S0==pok`tNzmHY}6d|Ab1^B6~$46;K#x zGFnhj-u3X0HaL2#RE1>8HeyA!e5}(5Jalb`Ym;a<*=+WL&}+_IU1a{yL;rbucLD5k z*)Y?-o}lM8;ruJDq~!w*e;6C8t^7D&ulL-2f6TdXa^p=oWR-nYfD)rsrn$1}kol8i z-2fkR`;N@>w)S{^;pnMtzgZcj9=7+dqI-}hdPSJZZd1DwoB(A1;&^3`GaZT}4KJDysBkNFy3hofdyAXvwn zC-}YYC80RkgfV^l(&0D97LLrubnKcROO7C8gS)JN(;4)OEQ^S*0j98L zEBSjdkk2nH`W*&E;%a*fkXlhO37WkiQCsig-y?O(o>jnUQ~|#Ma2(66hm_C~Yp{oN z(DHYoi-e;%3?ULXtX|WC`BjM(F%iT8+RC^}N26uikJ!I@?UHmQk)S*)0(lly6Wq(Z zw={1@WtsY$342a7d|OoU@KfPim3 z?WodHT7lb49|$*?yWSfi?QjiviOw`YXeM*%|J&Jn)L(>ln+zE(v$yhCMfAlP)fhn%E|_K8s$E;nY!AR8sh>EWwab(CgC{kj4_+Zwdx^1!gZ~3 z7hZ&$cAJTLi7FZa8Q0h9`hHI$?gcnOl@9m=9Tm0>tO|UW~$-u5x0X$@@vqY)rh}P&NdVLt$q{n{^En zf-$DXwil$*I^(ELnC{_XhJBnoX*0qAds{-h7e=p3s>vq6&xCinU0xM1A@Z;ocg#li zVCLb;PWaB4g5puj#eKyT%PDf+U2zEuBd2)xl7~b^ro43#uYV4{od51iEoY_~nrY2} z128&lMtn^4{W0&9ru@7QwBh1o-2C)Oo&o>8h3WxDH0lYWodLIVDiD z&F`IC1wsugxm$|^`n~Ua%1iv*4%bHKV6G@E2JdcbAG%Ga5F{h&J!r6+K|qbJ|ae5{R=sLqZhSYAVb8WT!`{n^uru<6y8!VX;YJFwKc7B@`v05F{e)c3)6OCYli~2!DT!=RYRc zi2SIrJuANvk;m`><8}DbD$40@HxIu4wJ^%fQ{N6N*7%ObEF7Ro%t9s5-JGkvdp0BR z8e{h9e18g~2QpFDPkORaWToEkKwWpr$51Jg4V$M51z9`gd{7g*!+B8=+ zT^|@Y=BjjWo&pgm)u#?gb8hMHWo#g^%dzGcMBSA}A_ zYxkE6x}StINHu}P9RP;%L)$*X;w+{HA>B$t7!=y7;f<*}>jrEZycG^f%czul-vJu* zfejCyY`z{IlVYi_Be-Q_{Ljb=%m0bKd?J}UwQZ%HQXlFl2ogT^l^whWYCQD1{C^!yKfId@dG%q_Otq0y-!H!cFF;mVPSJ zvY%@GY}R?p4H3uognBjSm=VL(V*|REfExO<1PY^0y}dpPRl`TIvIMYjseZdJjWLwt zefCU)x)=cyE)BB?&nA5JxO6URZlj4^pLU~nKI%g|S8oQ2LXlI6@_D9Q`)5upO5Z^p z!SDYlzl_~&3`t?OKa?&YK3~J;hmx&6<@-gx+Abl!VB{|-O(eIxvmCvbEdF_Lq9BM$ z(cc~;i!E1$^m32rrti00p~qFostC>IhkEuZqqo8g9m93o{GDkU2!Ou)ey7<@FG~;k!lsH3tit@k=_*Xy)t;;4U0LW1LcarfE_i0jb@KHeA~f0!zrUt(7C-euWq>=+BxbSNVkTA2lKdM4 z`P<-cbAwN{Hv0G=gE2Sp$HLPYVxaxsTGA%;#H1{*e=>n2r{x5|DBG5I;e8vlMl_Mm z^D#?--L(NIQqxnF8WD+k{XwC4Du0V!G%i&Sn2_(9=)8eT z$6nPcYWb?gM?E+5(Uvc6S9rPzvF_oM8R{Os>lSV>eKRr0w0;_`tmw5A!=S{miFSc_ z0T7RTe$wz7hh#Ov-6Rp`Rt(F^0t_n#a5ZB}uhWd8wTMkt z6jJemH>=lU_Opk++{cJLZK7n8Xhq&zEFP|x%NHd6p#xH|-Eq)DC9&F4I51v=J-jm> zv?&j%jxPK~sRSE~6o&*oL0Y35byaCi6wks2AXw|e1mP+vt?4jUUjsNO_3#iH@6?57 zb468Fdxdzkg`&7Zi+PE22Qrb{q4>oduA2Dy97rTc_zKic!w5y*d1{QtW9R}La^AlJ zU&yH(3<0hSw)#-x6FSN7osn-Zr~!9+aL_qj#|K5&Byb4}w_!LuX4C+yu>p|Sa=R7! zvbU6=9w~`mqG3sE?~!*h|J>t8oV=JnPhwsjL<3Ym)rr2$;1w(JM-cpQ!YbPLP$f9` z-(dFP-$t|^dQ}b-3r4ccX(>J*oE7_0-SrVaZvprLpZ0dsz6Ow7Py>V@09C7YUi`ii z37%x-8GWk*!1J9Wek3EVQ=u{2|D#m;L_W(`*><}X`>jRMS;jDblibdSO;s`rSMwQM z(*^%tdd6qIRAY19<3#}YtK82g9oSr1C;;MB>DeDyO#M@N1zwNcjJ6GvtAWpnY7u)S zj6ltoLqgWjP*j1M;(K`zQ2d+Ih1E%h0K~HE)rUUQtV-4O4`qCD`>N3$5GAnG0qP>B zIWl!MC{BMv5v5q_1`PyFP;V%T* zu#flBe%>LF)d9^|zZmcL6~KH?QiLA=%$nk_u$4N4#Y%>W(E_rQ&^7OuUk9X{;O5(P zvH8vMAc7JsdlLS(_+m}*k_n;;g_t6s!%q^9v~XDYiDpp3Tam$(n>GL0l-($giC1_S z5^;o-`e7V5H`g%=I%7zyGJ-_%ImW3(ZQB<*2e#XlV_vEU`XT?U%B+s-9SS_ix357J zDo_7K>N*+H5O60>S}>>Mt$q_{9RI;uon!y2)X|M)eIoyRy8vFp;ef0CBl}FbhHum~ zQf`CpZ_W_tI+M`}ESM#ajD#B#tsOEok6~7uhIr2_ z5lzjFY`=6AY6_|{RE>XLkC6xTy}#irXe#Wwuf?_@gKLU`Pi(w;vNWx4JLFa0V%d>o zS|9N&6VG6JIC0ys)fkAqSDuCzy!5^jl}*|Lp5sJr+8fKpQ2>o-t!a z+MW&b>FLlkfP3@>ek2ijUQKckL0AQ?u&}$Fj!VZbOeWpe_w5VXozCFKN7`ST7RnPj zd<%vjq6)+oCD$_mw6s189NAp$bLq^Q}a{)I@n4OZYf8;k9+sSGv@lV4-#S4j`>ymm~(QLDz zT)NUPK*VW# zfNB&ZfWe;gd6#3)jzaU>w?TQ?WmN+tTAwhb zy08^Hx@Z3MEfWP2O)@5Oi7;lKqBu{L6Hnwdr9@j8Yed3aLXgerZ}3BNQ!{SiZt;#FAk)UTP$jnt$k{Z26yUVa8KWOgpNj7aq<_)vQ95f8ipUytY z|E}nl*O3jKoaVLOVYR!G>6;wzkB*Zardp9X~QOGbfd7Jk#R`Q_PO5< zr(3SVfGL5Hug>Xb1V-Cuz}Q$i$yckD!^V7-q)`(I%}o|g6^D+Fc~CAiAK+DW@O@X= z#>c2Bdh+-je^`Xam%>6;*zxZydp7;JG33!$W{AhjGhV_{W3!(2V@i+M#gFY%kWO!8 zs8>B)jWh=0H(Vt?n%XTpUW!Z;Cjm7&90SqQl&hduiG(zGonkWNEt2RZhiJe#khK&~ z)JelZo`V zB!t7^!7lRCrG2sVcLVvUIZ8Q;T&DY{Mw>%Z3IxJkf);Hr0h`&N7IDtRyk@-LA}mGN z)Dj(50X_%5*@obRsTnK>YD#?2?-Mvr$^EK1NXg-un;uq{KN7MmqX(1*eIah69X&t|5e7+VuqbP$VhfZ0(8y zZYB6DdBoYKC1;h+_5g^x`IVXsx27h1c2@$sP2)9%p3YADTDz61+?dgt0`w-&s9_Ne z`g!QMjW?8EJ`IRFdNixi(T}Q-}>mJWCoE5wcLc;*wDy7ju0= z6s=hcP&Wc^_m;dBuIO_D(>bMuV{dKUx{Z`#-%B`1Qe_HAj%Z+Y)^dSL1fX;1XD**Z zovE&10|#bNm<1AF2a5X+Bj0maZe2)sAzllxxbzJX0{)Ivu7M3EhglMf_tp^6xGrTUq1+;F4wAbx^b5OsejQMlVfuz`Bt%0vof;=0dHjX_}{Zo|<`ca_Z<$AmX$l+w; z^;N!4^u10s8)h_atJU9}5C1Pcc5E?BjtQyDn9A~C;ESO$_UStTp5U`|C~?=p_b7>_ zpi%2l#apu20Y@`{ww0WW$Z)>@QR9WnG!1bKSgh5o*>uiAZOw(QFosN#XPpiS6u)s< z?ypRc$A%F0nT(ljzw4w3r3W0-M0hCf>3Fn3$8j0O8?cLgQ{|py7 zR36fO@3&2T2_(9|O`O|M*TKqq5Sd6y-nJ19FOG`6dFxiBx<{ux=P+W{KMFMvZnT3b zqnDl&Fs8vQ`GI2TABXbR6L2W{fA6f636M!j)FQ^E_C>-^8HhG-i4Lad$8nXC&zo?A z;;{f{ps=E_HX=_?6ohJ{rIuKg1Tlpwc`{K% zyQwiwTPzXHDD*J!bby^jsZ!?FZ5!wvB%kI~QUp4pFCQ%tPDx6T66Q?zpdC{UpM^V` zQz|EODdFsv=htyK**ffIA~fb@+&;fU^e|8MTZ(kWQj;5;6A6Ve^Sw>2>(9 z@cWUTHs4cfK???Rp-uzyeRofMqtD#!e0gC?e)(BwAaYzpdLtFYgwoX^=jffpIva3x zuDW zULS9ci*thi;URB`B}_$8 zt&!jqY@`Ai7`u))A(c_#*|ggI>1+nb;b2~JuYt>@*voa9f>(0an&7GeM=`aAR2+Ue z(A75>7+yJ5S;rF9E4o#ud{;-lv{p%C#nS{K)Py=jEV9^@zl0-{HFqB-}qd;+jBH%(Imc9q4>~|nBi8)Axvj#B3R!gH~xY_Yw znuPZwHC-S_HT@wsoB0`Fspe_QW`2KJAcu`{CGj}c_sgH1gCb>J48pUB>>!lPPgEAS zg{esA?>up48~NRBVA*)u^XJCId&drK--$3?cPf`x3@r_zs{L)4H8$lQ=C|hzwV zq1Kuf78&71j%48ZAt@k$wvoKXi}DzCf!m1CBYyC%YywKk&-@jwt%I@#(%OK=+Zw)oX~Gbdg=HxAl1}ZRUh9#Br&EYajOsA|E^j^ zJqF{za{{2gWu9ZS4+LXKtulHS$>yf?@C)rcf30&3KB%AesvB3mpnI)*9eK(utRj4{ zGDUAms!BJoxu#CvprF8S~B_4Q-OUvEz=OXBOjL;xv_HbVpn=UBJd;qNcgDlvu1c?1Fa5d{EO>T(mv@puJ z)KtT+oyO{Pg!zaEHZf5Rdb&N3rQ*$8xW;Zu%wavZKKfjxQUR!b;f}Jv8miVNmNeR4c#3eu;%r;63iEe4QI9@fgRBryN z{Ke!-+f$PkPok^z3((tik*^n%BnO6F*V?rC1^9ZP-hIVpBD?}{gTqu4r-y;|UL{&M z6j<^RtTK+Ay(;95S-WQAc#cO62QXFpEgNWoPi5%C#)Pm0+~a))y zQFWGa$ZW8od4Q428 zNIE*0SOC{ht1nFRU6b7`wP2NEIhhn(C-=jaba4XV3ogCxM7_xT}U# zNaQkvvb&%^1D|S(3GdAEyc|!;)DM#xo`ur{71%rOO;ROJ>YMz??CC8{qymo4c6iQ+ zwA=in#}>Ruogd&4J#N7Qe0S@c7e?E%3S>@%nx}&KC&g#dO?0YpLWS+(Qj{l{NNek# z`?+6495ldD^=PPfm-ku`k8qnu)O35Aj}G*v)){TKy86#YWFfE4Z5uT`d0~oeO`*g| zV1GS$0mwKv$MfW9edpRYCircc3qI}XXv6fTSNlzyapqgg+W4KYSZSm_FKblW9h5CU zOt&O=S~76b+AxT&s_OPsPzJQIg5>x)pz=z%TLiV#l8U+*ka(Z}aN4OgZWsVndB&Ju zEDWqD5g#qi+XYP!D~C;2+cf>EDZgI(gAi;yp}Z0SYYiw{tLBFfc*MKT{B@f|O+d0` zkCG5>X^WX#S{nUVap2s=CU@4VlKX&!R0eu)y&JDIn>i**>Gh=t>l1IkNL35F>)8r**tJ`N^Ip1<k{>ttMH)5mG2a=GH);VqpQJ2?` zjY14$q^SJtnU&8G%t4XlKz4BLf&yFW6HPkm#!yfrw$5zj(jHw@N3k?S0n@-PpoT~quub{wJ)5wYn4AdS6$`P4=1A6ahRlg=GAs`KE(e8GjSr;w$J!c&EO|>* z&B)4&Cg@Xc^e}mRZ(1d)PTg~mMmhj#zaT6=j3B3_1Zv1wTdMF_foDK@*M`%#DB{PK zu?Uvn?dL<&Vaqkyz&M6uUO6JDLtjdBI_gU-<)77hNB$2kbc8YdNU3`{OxD! zJs|_)R43isv}V^pFpz!?9~^=U;4kIEPV;o}U5(kI>UQNlGC?!A#jT)QUIAnoj0pD% z{iJ(YvH2sF!VOJeW4tb;b#DqY+FIGEf5*O zz9MH4CN*-QBbmx66gM@f;TqFq1al>fE6&y2IHUw$U_|#vs>*zdX0Ral7#e4H@@D3@ zmTEGLaX)M*_F2|(U*ba1Xr(BSL@c9^C`&X+bMxAcV67Ex#C$}2fP{<7WFfe*dJOk! z%W+sx;ZawxvWTYlI|U|?`CF3_>Le%!*^00z zi!#>ypdr3T!@-&(9$AG@M4@ey4OKd;H<54w~Vm%4tls7os!are$i0{HY09VSyZvc_GXDiV4fRjY_o? ze14Q7#*ez&8SIN zPZ(#7x%Mzj&Kb`Z_`($h2qOvn-l$?Dn#Tl-!Hl0dd!<&$(mEmrfwC z#H8!{G7;BKex^!fm0qv0+SMNq0AY9F>P?$J@DdaDoSK>46p-R{|&8 zZAgvp8N|%7}_v zB#a#TM4X5^&t!v4z!I3LIX(SjS1J~{ToL-yhlK(}4wDq$3xy$}VEnWMokSAFgtP?M z?X>bZNv!w`(7ziccqSnx_8bFyf6?=TsPft(+kPL?1I0!ihk~#n`qvk48N!RMBTAUD z5!$jR-gR@p6HF2^!Vp%W=7Qx^JnOL!#VLh2sU5vgwi5NV0^+1J%(KMhiJZ18C?x>;C{U8B_V9CaNPexSe>7>I}=C6Msbv!Nf z>n-0^IdY75NrKOWQTEi(9P~dLgCE!~-I&@d(AisA8(n)NbiAiV%8*eZI(Usn7oW*@ zQ6b2ludZF&Pf~E9wf=}!`2loS>p=81zi~;!p_kt6UO>M`lVk(_pyQv zJO$?@thJs36fA0=+g#4&ingo%F^`w)EqbnD*Xuf0cOLSi`n8ReB0tP2N`IZZ{i|Wa zL-q@?t}@zh=NwxENF&*<<0Se<#kw|bG2wOQ>k&O8`kv_?m0Nz=`#(XSsPVv%45_&j zR$igi#PvIYvuU@K&8@82Fw@YbJ}%D*lxI1vN(+;RTT0byzoU=QOc_$6XCdY8=ZRvf zn}GJ+_;uvdeBeXmk6#tl-Q5-9v`^^h_H3<=Qo(XMu-PS+{B$yV5j=kG8a|xA-t{so zj1*Vq>;{^@qD|;TV+OaKx_o{02aNsAgmyt=HO}I`A%3A>%lX~QlTVboDxMQyQIVZM zw~}dMi-k0_J=Qe;0V4Q_N8al?VY#=w&eNXjPc41*Fu+W|GaWe1&EB*+s!cS9Q_xt` zQ=W-W^i;RVUVq>krhG4ybW?xR9wzd^*8qQmfBWf@G{|IY16~$eLSG`t^`w_*LU|An zba110@f>*e-ihb7;OR}fR=;m8I(}_)6QP(DO6@XzBncKn4tfRTBkM`D{)70ykw}g!o_x7} znl|D&7OcmJ?~C1V>2rOyf`XysxB(l&9h>M;n}xG`wwV~X~ON`m!RWt*bQUhtVhTW!=PX& zIVIy7_6tiI3G_>uO4lKeF!@;xf!ceM?h|0^nI*gVEKQ_rw*{_^l9q(+6RSE0J5HT` z%l(30=P|l;r52_}LHwIeJIJW9L^27!&;4e1gc;wJ>@Jj2nxFIsOjWblAQ6E7zpH3rY!d`e%vaD8iJZI261eSj z-I-MLXe29*w(sC_X7KCFbY#D|C}Qusj8W|~a=i5AAZUFkcp6htzN_aewFg|g`|VPs zsVzMEi75UQS7XjwDbp_&t|ozZb5n`%RxMU*5dmHNQF9?qauO4e`c&u~d6oZZ`}9-$?O>p_tp79?n+M`rBc>P#f^jTZ^;8|cP0 zkgL8Ae4YbqOD{DP)LgP=W=%zBSM}&;D!27~v0mHjy;^QnY+VZYNR7&c%JD-(r{ZHA z0Cyzj1)WS0M>ik;T6u-)#!JoI#xtDW5o3>KD;XimB0%X>c@6@5Uaap-4tT!KQbt zFhjug!e|>*u{pMhlo75c-gpvGBQ+K7N%;p%#BEuDF4+uo=O{~+J0vK#4kH_T-+;PO z!@#zhE}A9V(iqsD)jIV^frK{pOb&2<9p$HGpCj_}uqD$4*% zOog;B>PT3x4C74qxkJ>Gl!{GQ8QCwU2oREyc`$ssD7Jb?9N7DE1Zz3p$S=w6+&iW9 z8Q&~jK>4l)FfT82iD%$^^5ROMmU!qT?VuIf_{f~O>Q;uK-+8xs+OvPvNI6)0sH}{h zlx=Qu-u`oN6a)As@{6XA9mi(rjRM1o_Xti<{I{v0#%~DDxm=mg`}tDU^}LTAc-)oW zIcqDpdj}f@_`qG**`3uT7xGkiU59{DeUTBMo_;!=_m#i-UtY7%7q+KKB5t> z6x_i7cd3-&&hxIY4_%3bLxJ6ny8Y5idu9UB)BIpv#Oarw>~B04J*}F5Fq%)*7xwzu zU&9Kr62){9EpjC6byTMFVrf!kaX9Mq$lWMf2`76X<`Hs)EkOpYWRltt?%j+iAdVdv_AiI zxL(cH$E3AylH3?YosOPj=OOLX_g&Fdyqqszzn=4wi@`HSrX^!_5uq}uUGf~>Q)0cp zl3GIh&%o2xQ-AbYp*;~qQrGCp$KwaD->F^jyZW00D1!Q{g#whDcrBq~;1=I5)SY{3 z(5V>8Nz`BhMNL=QIXz%XsSbF9wvFCcAH7&O(nNL~A<~2j-|K0xer!LqFsM_&R;igZ zk23BtKA<0F7-Q@Thi!#CqT_j+3?NPh0AT*6q#J3g!ONCEeTbT<>+m88^KcgV41t*QFmOHI)sMUkTF9%*pnyjYZcKtkRl} z??(#>{?9Af!c*a~@ZUHyC|;N9b)m+H7~Ngv@qN;<`8)F85&~L~OYxVt{;Sm8&{57~ z6;|lJ{iE}D_kMfr{BXx#-Ff%wd(J^nQ)}|jW_(W7sX6|X{izGI$Oad+jP!lt-cruwdK)GP{*f}cM%6nC2T_D4itQX_Zhy3m`GmHou7+Pkm9Q2 zPW?-rLaYTsBP&Urrx^>h&X*m^G(w<#E2PN|gy}?$2`OyI)K}|*%=dyNM?@Ys*%F13 z6)4aS2f~;HXZ4tgR^#5sIVWynn!lh9O%y_9Tc^kWSewaw`gf9|zYEloalx)>H(_pD zZW-(mqIUwMN?dV?3?Hxn+gg2Ap81tK-0RIghomJsYhA{pK%hw`re2LZlV3Uh4zG?f z7Xasp+h%5-Er+CbDa=l;dL?s5g<&TqED|#svF?xZ_GjB@P5)`En>3(5@xDOQ?X<4@ zbcQe&o#-i)nmY{+DlFDsaND9(fT1LdAQ~u|Kc9xOpd3m1n>81L(`R)+(?YWFMtLJ- z9YkO##LFN z*DONFF-wq1iM0$d(z(4^(!`L#52yX8QvtXYIOA;FXm}3MU@Nr7 zHkk+W7`nX&@{w9@y#K7vA(o=F!elVYlt{1$Fb^@l9zt{47$mnZhdoO3eeVFiafklP#>qAXC6tvNA#w>mxZlNy3p zr*1~NEezZfq)wKp*uJAhPxCw>K5X4VmMaI5I^nEytK)7AcU@zE9{6qpkhYlJdY7OF zFlUUL`Y(lFWV8RC_2oj&K*Ln%Q8W%vDLs+3(5wYZo#ka4$7yQH!f|azlC6+~dY}6O zrNB~T$84L>e2PvQcwSEJZXIj4Ej345@u1`@WBzn1O3tiqVui{JcpeNDrJ#MkJtz9V ze}W!7TmGs`TkQ^xpz$59R?pQlA0+4Ai1^`}M~(z}pNmWJzK0#+?=@%!>Hj*vzdJsk z4r{i=ti60V3#D0qeH}~!1`k!+`y??}dvtab|TOV-b6vV*dc@f4Xk(H(H4_X@0 z((L@V^eE{m+0y*neQ|FUqdJz3t9MGRow>Z1r-|3p6&=6l(sG25Ux1@9N5?{NZqPdY#jje+es$E=c=~IdQR^WdlXHw6ALuI7 zrUfzQ(g$2eY|C5Kbh*Idy+1XWr8pORS;w1!Xr*tt;GAp0nXGia-u~P5lP)|uw#N%oDFuwZw84Qh972EN z2R90S#6%okao}N8PjJ$>F#g=LHQNimrsw}bxs+CT?Z!)|>mhVktu7-Q6L9&bf|^>c zt9Fl{<0;-EIV_Lt3ko-sm8yX}!dBx?F&TvxWMCU|>*K5bHRY&jdi`t)6<6T`oM_&V zJ9HALTC)#(0`p&GKS<23W9SVI;+i)lFa>41h%Vr*_-NP*ujKx$<`Bj)RgP7)w#0vtuhG~QR(DXoW9mApe zFhVk+_V87xEe?R}K_)63t~3--r+G@z14|AW{A!!YUOT^*L1Wt=00q+q)=h$w+ItzD zyLXwlf3!wVNIu=JM$s8vH4(V7o3$@=rmKS`hr`D@?Eca^LR~w%nf*ARv${H0lCzt{ z%E*6m>L#ETxH-6eZ|(F~GqAUIK)ngbT)TK=7n(BNhGzdd{^{6$Ez*=dcFR=w3jNqe z`TuH93BeYKnv@|)1=_#3Ik*nHkIk7EK_?z^C3GfPcI)51{oHd2(>uUd4ueq@!`9II zS7R8eNhs#B1!v#y=?T=i4x7v{Jh!6Y%uNUNO6YzsFFt|KyJ4)Om%hRD*&O4#gtXU z?2P?&I!l@&gJ5qmqcKCPKpM-kU z`d8zFr^)Wak-#o+0S!~sVTelE=M8Rd9!#a)Csun2AaYt}9BL!H!zF+|W>AXp`&8D> zBtQvoL(HrSJn{0OuIuwxZ%q~MrEwPtpm6X;C7kz+xs{HBh>n&jGLNAZa9C& z0}Do5n$eJy<2Q7*9bx^9P!#f;g+_tt4~eS3GGLY2lSj2plwOwA+4fOh%_!%gA#bl_ z;NoZXFV!A4t&X2@$2mMtS7Ux9q+Z&*^31fjKR(!Hc^r$2S1yHjX{M2}xdP5#%(!@Q z?WG1cwNMYfwC>6`3uAZq-*wI;<{63IJz^=Pq^ z&nB*cpJhI-i8_0wHl3D}-@O4}1^jBjOurhIIU-ev>edpadO%o6N5RK2EcTXflZ0iF zp>PeuU_iA{%Ydx9ire85(F*J!LQ?Q4LeDxJHh3(xv0&*)Tc=mn!D#6}XGBX*ILAGy z7&XO0BIXuON*ZqEi>l)X?7MM8(CO~o;f14jd#pyaft$Hc?P!+bqA{t}R`QKA1sKD+ z)ntpfAluR3z3bMywzX@+$^z&t5vRl`4HL!udI?o~(jhrqaM*}qtrvqZ{Y1g!@7m5S z3ev%puU6}XV5uFxJ=mtwMkZ^(S??fsaI@ZW;ofg%Rr96h8uPc1dMlX^SvZ=@OsR^T zZMK0cOsfez{fME?a@r288Sg$!zzZ(YT>s9C--j%goC{9Of02IN?liYBKfHbqLV6sk z@ALg=Z$E#_2*>_VlO}-WuUE4RUt){0>gTrG1zxC8| zS~ZQCxo+Ggee09lE>nKWz(VUXMG*q847KnDy>D3ry;#VqOf%Q>Hq7yY>YU1N#9 zYBcL8%e8j;EIPC{T8nViOp6jAhKcR^b<0G8PE@_9KuF{&;86Uw3oT*S#GmhRdEHv( zu;;bqUnS~FQhKQ6(>+8+`~Cx*DMdDAE^sgK@hTuN_RmMj{fz=%UNRJLw^!2r2g#zu zFWXl@+2T-&f6)NRQ5b*+8tJmm?0SC(k{llcf?-aTpmu609y}C0urse`WML>;c@mb4 z&}d}BF!G@&SRr57Jk#_+;}J`#h;oK*G)Q(9G7g*yH*L4>SZG9afZ1_1g?Wm__-lyk zw0PJC04L#1rrf@}zHHI|Uk%R;@GN?g4m5jFM{Vt;j;~cZTyGuP zkh(GMS)U>FsrQfRu!Vj3MJrZxDhHH#9Pue_NqDpZ4!4}%_tLDnIvSU_*fv9b5+oV8 zJkwR}&PU7n(>(1WQY9B`Uz%)f4Nq9DUg!9@ckL*`?wQ9uH|}A8@5=);gySbr+=`o# zB|0bruAa2t585sj%Ul|`(+<4oed{0RE+P}K=>18oW%5v9T81jd#r z!lQ+@xC#Ra#KOJ|if17MK6thuy^R{4;Q|B^6p6Z&yKuNG*>ku%AlwdM$SE>Q5ovrk zpuh`ui)l6Sk0JU!h6)lk2$bVIB@MD1;uu7)$XZb~x04E3Aa>hn6N^}#`Xy0rrv0ai zFqiy*6)Dkn5)5NFaJmqC@M1!Fj@`MEK+KmKWW8R$pY}zz^IQK{t~u6E5UCj-<)Gud zbSd8I+Op=Hc3P@DwQB1p2*lXfU0MV^7aa-&@M^pqo@^|;h@#&kMu;kkR#`7dP+up{G6Yk+ zOG%7Qc_$^0Pw9Hmh%id_@Ogh!Jw_L82>^V--Nh|+?r`f^{GnFce&I|1XD(D0{0o73 zUx7>AZdQ$3iwNaMoQOF5t`}l-t$y!!mjkYb|6R}-=pKeFwd;5)DG#Qa@9P$ej$^M<+7#MDrw zd-Ji?-ilMxgVVf?SFd(o2@JG{c{kNZxEoZ}^&B)gZshPuBQp05ZCO`VF)^!6&V49L z?1zs76W-5AxjO!iY%gn*(p~veNA6|PKy8lHsQ)7pkGt@KZO5`D+~}0>d%f?Hr&MVB zRU7CV0`m<8Fwp+JD-hR>`CS1yd@P zRKx^7wM+F%1_Jt|Q30yb1M#%QVAIaQQ>4l~kazSO$pm}beFw*}U0fs*JvF4B-POrD zXrC)sJ$}mb*lgII5xKtbo6NB`VH`L2_Ifwrt^9>8wT*+dy|A&!aG>|2_Fb@1niZa? zL7=TMXrxmBlrR40aK<5()HM~-$?Mhx?pe(z(^pc~10Yn1u{`ifmbXx6d#FaB?PS&t zT#UdS&v6YX7-J~?f@puQdjmeqncZg(I;;xpbSKBhm<5?bFDzJ6TAarv%%}9&gi!6> z!A{D#Krp7W0NA2WbL!OS6h1Wk@n#p9Z9}u%cR%1z&vIzAJd=Xmy*SEN5_S6&yW(PW`(wcecqDblNEHaz@9;nFULS zUKlxI?-g`*E8E!4ojE?0+!MedAR} z!H1&7BcA)QPuvSD@>1C)tQEsTfUNNi!b}j?708rD_6Q!@+B(>w8#FeqAH^*?c3V%{ z#@4s7$2P{QGeF(;@xx}cvcNY6*V>Oa81i{ubm6>ir>eA+j>*kYpuQTia);sflHl(d z)lE(5|I-LQft)n+jfoR)Ue%r^^m2EcIu+k~5LoUso4J)bn_|KP=er}wcYLrp^;?@F zZtxJu#`U@04%dD8Fz@&2pR8V6Fo0|{I@Nye3vDM8Ks*04Pr=#$eAa>YsHFuTT3cv( zWo)zQ_+s8a$MLXYS4%%i$^IE=I!^6LfR*bE;Aiff`a>IbOv(z=3Tsaj&UttvIrUw9x?cRt zEY2#_UWO7GyUmwLiPSVYry8m<%q1hqMsj~fBv`z{db(^A+^gdW749zmkBJz{-tsaba9 z(k0xSKg%hopJJ9oia7$o1$S3?N)H^z6EV7b?{@2rFir1 z(KoC)&eK@>;qBHw{~Y@8>n_}Mp?|Tr*)V%xsWbUUm4)Sp0$(j4nzX6I$r>qo7lBN-9&Sp@2&U()K8dIXRqQMzO3RO|PVre5@R zeey>w)kk}tX!_t6tL`DZ1Ee2ZyS?ws+&1rPwx?Fs4n%FqO4$Dt{C@n75<@F#TzYL_ zNQKY&VE`3ft`E*Zb-U5FFh1LZP1?=PJ}!AJf8KEC@MX{abu9y-N&(n@e(=6sjoCXc zh8x`c^{7!l7yUQOntAD-)6kV$9c=ai)t`t0c9%P;ML967H z0p;41JYsP~HLMYNET?OrL+0K@-`g4i#AhcwLBAvI_4c-whNf=Y(aWuwzcDIugyoj{ z@SHH3OSKn0|C!}K`F!N;$Mw~vJ^G&}@=sltJ`+Zs1hY~PCf&V0II*{ha)XLea&b;X zJ%sMTyEZG{$@QcMC@u2lt5bL0EB9tp6=yElj)EyIop?&FfLvM4Lf2^1QVk;DgT}{Z z9JE}YXRVRbkGdN^V5-ami#v}5RFBX!5^?wxd7#X<8do@q^NXm2L$T`B$N7g<_;c^s zy9KsH$1A$?W2x&#_i7#W*ANA>?92hOxP3Q^{ut{xE3SZ;+n!HFF9kvL!<3I2t|Zv! z?Yg@Wa)v5ffk4X0aa(P}uF`kk)rk0JJAOdvXRCi~wEbb0_UV8rRSPaP;Djc8(Tg!& zM}juG6c7lGl}p~NhkFgxM}xMqjBj^&>T?m{$1x$~ohNg66Zrn0N4w%2crfBlZ_ zNU0_JxWeQyR>UUlwwq1>E<@mGPn;03=G0*|n3zo7fyB811GH_p4XK^hb*0-Oaf(I^1GuMH;52=8Ej zA8ylu*FQ$#xtoqgi+PWm6+9To$G*6VhpsRbfu#Gu8^S_k zl{u-z_^?T`(^g3m0$I#Tq42Wjp-Gbh^4t@u9gUlR+6GM(4Zm*?RxS(23`h+&px79JS9FxMqX zjF5D=PIRnATf5-VhvE0;jfxHjrfi$bT8q%%%Mg6jZyl)cYO1tYTIODa5nCdz8Z@lj zH9_oZqiN<$GKW8Tqlr1wn@M9Pd-EyxBxntQySt<}xo2iMUN+r%`+V@cu@k21CCGNL z*Ih2aMa;pi#!NX48U%^~li2gFt@XQ`&!Qa-$xC21cs&p`Cy}n1@A$wHc(I4J8gska zO?Apn3@ZP@y+7m19lq~(BbfJpoY8xAg+_xKBib+czHv6?m)&6yGEnPNm!PO?QtN3F zSD?|Py*v%JlT)oOMhK#TElAL8Q`9PF_*8=Dd~tf84Id`)_RQm6#pT@<0Oc4Fyl)3z zx945nz)QAoKm9e^i9Q{~MpS_kW7&ZlR-M{dfCE>q?w4C%O>w{3w0G(|HRl^o_u`F3 zBj$+^ZMjf42|epuC?ZzRnQKkPGB%P=T#4hRXs>)u`P^IeA)<2bTuUm@1iC!3N`;s8 zOlJz1jg|;yR;~J?Uj3qp-yH!HcLQWTf$QeknsYk4)&HOk9O2NmJlCqD1*&?N38lxb zURi|Jh+Ru8XbF2(z3I0+9MyLBhf3RD5lkBaS+o|hN;&&{%~((W=IGgT+dG%8zPQ;7 z+@@0%zZK%;fBopx_t+mz6J9iknu-LA3gF521hekRCImc=iPXGbYcj8X_q6^bk;?u= z?1L1`Oyn@;2`C9_Mcp9vTN4nh;`Gcxm1TB3!y_+bWr}e72Z)5aKS+Vf1>YtR1C-!X0jL3gmrH{W(EqNQyc{Qzio3GLy zZFtkyQBP^x>-=MBPvn@c_aJC7b735Yp$daA57SVGNhm3>=p&50?p+T{yx9>qh#?sk zeo`Op(~9oum#1(9=jDdoxvIa~4Uq&upCdNUf^3r1p-y$FTRrO4cI{A~`n6Lvs#Trp z)u2W-saY**Rh!z~A-7~oxYC6nVq}uQBvVW?!z^>mv%p^Vaexz?yKpe=!Xb1Bhteq=Mwf6n-NF&{2uIQ@ z9L09$(d^KuGe+_e?-y)TdbYX1#@HmMzG!V=goP9g0iN?IN+}3^tVm@CUxl$~xT-aH z=C4kDniD{Ky3?QGj3->=qu`F0D2Na77DW&75hV}Nii(H$ip5MdZq%u$Q&Fd)PDPyp zr%X^`j8)~~qEK8>Dyk?fjwrosE&7;YhbvlY(^wR@5LKpFQd?16E2>Pfqy{ZZhl_Hi zqFjzsSy8DWYN?{K#o|j#70WV;WoIz4IZwRs#s@8a-L?Ndq|?etQRSSp|8qxgvs5ytEzYbKD5=c>fWL(?j*&How(p93*Pxq2m3_>OQ zikj#}Su&YG2W(ypran3VLnFd-OC8r!kH8o>g!>;U-~S&GsNA#jP(%fQSW^qY9p#z| zIfczFpqNgm3@(E(6kvcM?#vbb6*=Dwvt8^a@A|?w{t~*Jq_3$OQGQ66Ff#5qGPiF!CHIacKFa_4Z z7%&5@r*Ecjr|+ga%t5dh0?36zsD_hp7A`>#oDbJBFR=c_;c|o=2WL2EJ8LiduWUFQ z&n9tuxqvIb>p-nwPUn#+Dz?n?MYviuaU2X z9$Am3$I+{*w&45G?>B$yDBZtT=^j*eVQVVg=sBPJ+MnXDbdXwEdpYijZVrk*X7vy+ z#a9?Ri6>5R6OnL=kp_ z=l;@t0=AN;^At{~bL{O$r+yMv4D}@#qN%aJYPbsMmb+1G&%b-#x_?rE?4C_kU2-v2J|H-X4-cAS`x%*uWz=;Yn*ORJyv zQeOSG?`F%dRcb0BN*EA&H?G)LSXOzP%(=&e;mQj9*N#B4nQU_S!ZOUsrIaGpvXd=* zrjQq8u~@_!M+wWx=OS;!BG$1>6q#=^o7ls3uCkY@OrxA|ZW6&YZg7`d+~y7nkv!xc z_t{4jmQ?VBM?5APBTOh@Ix);(7BiX62Ier2xy)w)i&#i3aj1wVkpz-RA(`WBB#l(k z$-o#jRear(QY-tWwSCvderjjG<=Y<}?3ecTSAqT05hV)Se+mJK0KgQn|HU+56bDK% z07?R<1V~DQpcGijgQhGf%7CF9ID4ukrQoRufgpk*B8JQsNQ6Kk)L`g~NF>nMiZbDZ z0ih^rM4>_iszlmJPN_i*bmGt?76$RKNW2aFwF_VclSGMYuR8aa&!I%}%UK zbn!01C2K%~Jd_2GWXWS$@lrxw$%)r;=DpncAP+vulTQ-yRX%)?H=pIjH~I2ieyq!1 zFf|lXO$ApY0ctFSnh2$4LaVtjY9XvzN?j$GQh*V;n2;|Gl}b}(qN`jCRY*%xE=!jy z(&MW1xh4+R#pQ+!xG6(!$%xxB=8jCbD^u>tj3=_@scd*ATb|2~KV;9J;`5gr_*(+r z%9VF=v;~Di`7H_mmoAVTC?(YuSoH)^eUX(TigKl_e9=@O6%|TV zMN(5S<`jvkO0l#}Y*pD={8Zz?OAR}@!9M#xjz0~-ldRs;xpI_#d*gpylo$3FxOZ<* zybRsttxmcM17U!)w4D15timz?;S${7RTfKP#KH_D`_g?&9C=Dz{t8sAc*3hxB?_rc zNCH6;OIMp-X%4Ltv1F%zHKQ7mxyEBSiY_n2lG!(j>A^_hxaN5U5+t-u!MLX?m5+)- zzC=nPPKshrKr482QdA(;QrPtaC;bZ1IWg3Sv@M+=qA&QjIpvqcBvbq(R!JC9naB1w zo+ZX-Yp<;)c^pjif!9oR&)4FCWw?;;^YxJ4&b5SpYXxFqsjW)H@^ViS+b)M;o6WK$ z=8(h+dt*LZC$SGa(luq{BxaG4XLqZx4(qfiPPb{x_7wMv~a)Bz885-A!V9X3cWVUz6CkBtX($xiXl{L_rkIbH99$ zY?T7u&^nb!R`Ma13dPCQdt=<=gjitAdNJuSj^|m^&?{rsAVvhE(NQpHm{QdufN$gk>TTWt! zlh{-eTS|h89mj0PopA6b+?@AF4OqatGn2UMQ{~=sfQQQC8ccN_>U$CH4$u zVNG#kdmW;ko^!gYDj`i6_#LQVmmf;x-Lg+BRXP0Rm%~< z^nUxHuFQ~d7XaG&f9&tncbt9@_{p~lgp$UNF}qquw^Q?*c7WjZ zxE<+G>7+aR?`E=seb5zU4`B0LH2TC?@5TTUgM|2~Rbl?@ZB76^9G=tG0?)P^`=cOK zMqkrI=<@r?0uJ1h-dLLu71IoNW7{S)ik|c_3b0& zKO}FOAM$f=m@7iLg4eR?OauA{X{l)pgY5B4HlBwZ{RL>WMm8Cw1-5 z&Lmjl?3J>#H)FX}hO$gU6l#2=qJCVm82$HOF{qrX?cG_5HXE681E}Wd2`H{gm@P3d zGXN@)}*4) zYAEw+wW)R7qQm@?5RrT&K8h*|ti#DLu8ybF6#tf8Ky@`Y4luNv0iR2Y&Hw-a literal 0 HcmV?d00001 diff --git a/gifts.html b/gifts.html index 2adbd48..fd35cdb 100644 --- a/gifts.html +++ b/gifts.html @@ -32,7 +32,7 @@ Date: Wed, 11 Oct 2023 20:27:43 +0100 Subject: [PATCH 27/34] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D0=B8=D1=82=20?= =?UTF-8?q?=D0=BD=D1=83=D0=BC=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styles/style.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/styles/style.css b/styles/style.css index 9b52c81..aee08e9 100644 --- a/styles/style.css +++ b/styles/style.css @@ -209,6 +209,7 @@ input.done { } #puzzle-clues ol { + list-style: none; margin-block-start: 0; margin-block-end: 40px; } @@ -224,7 +225,7 @@ input.done { margin-block-start: 5px; } -#puzzle-clues ol li::marker { +#puzzle-clues ol li::before { content: attr(data-order); } From 20e5050106de53e39632991ab37b983fe16c7c09 Mon Sep 17 00:00:00 2001 From: Alena Batitskaia Date: Wed, 11 Oct 2023 20:55:22 +0100 Subject: [PATCH 28/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D0=BF=D0=BE=D0=B4=D0=B0=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gifts.html | 7 +++++++ styles/style.css | 12 ++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gifts.html b/gifts.html index fd35cdb..23abe03 100644 --- a/gifts.html +++ b/gifts.html @@ -92,6 +92,13 @@

            Бинго!

            Вы знаете ответы на все вопросы! Спасибо, что уделили время и повайбили вместе с нами U^ᴥ^U

            +

            А вот и подарки!

            +

            Доступ к закрытым записям докладов с прошедшей FrontendConf: + Никита Дубко «Алло, мы с нижнего этажа, у вас стили подтекают», + Владимир Захаров «Пишем код для людей».

            +

            Запись доклада с HolyJS Spring + Андрей Смирнов «Фронтендеры — они повсюду».

            +

            Скидка 15% на все книги Литрес по промокоду DOKA до 12.11 и 1 книга из подборки бесплатно.

          + - From 108ea26d146df1a673c67d722ad1263a40de6e41 Mon Sep 17 00:00:00 2001 From: Svetlana Korobtseva Date: Thu, 12 Oct 2023 14:34:16 +0600 Subject: [PATCH 33/34] =?UTF-8?q?=D0=B7=D0=B0=D1=82=D0=B0=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=D0=B2=D0=B0=D0=B5=D1=82=20=D0=BA=D0=B0=D0=BD=D0=B2=D0=B0?= =?UTF-8?q?=D1=81=20=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D1=83=20=D0=BF=D0=BE=D0=B4=D0=B0=D1=80=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gifts.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gifts.html b/gifts.html index 23abe03..5a332e0 100644 --- a/gifts.html +++ b/gifts.html @@ -39,6 +39,7 @@ /> + @@ -233,6 +234,7 @@

          Бинго!

          + @@ -243,5 +245,6 @@

          Бинго!

          + From 83302675dffd94a8743870980cebf03837fa7dc6 Mon Sep 17 00:00:00 2001 From: Igor Korovchenko Date: Thu, 12 Oct 2023 13:31:42 +0300 Subject: [PATCH 34/34] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20=D1=80=D0=B0=D0=B7=D1=80=D0=B5=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B4=D0=BB=D1=8F=20=D0=BC=D0=BE=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20=D1=81=20=D0=B2=D1=8B=D1=81?= =?UTF-8?q?=D0=BE=D0=BA=D0=B8=D0=BC=20DPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/color-spread.js | 19 ++++++++++++++++--- styles/canvas.css | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/js/color-spread.js b/js/color-spread.js index f2cbc6e..5708818 100644 --- a/js/color-spread.js +++ b/js/color-spread.js @@ -10,9 +10,6 @@ const initCanvas = (canvas, color) => { } try { - canvas.width = window.innerWidth; - canvas.height = window.innerHeight; - let vertexShaderSource = ` attribute vec4 a_position; void main() { @@ -131,9 +128,25 @@ const initCanvas = (canvas, color) => { return program; } + function resizeCanvasToDisplaySize(canvas) { + const displayWidth = canvas.clientWidth; + const displayHeight = canvas.clientHeight; + if (window.devicePixelRatio > 1) { + canvas.width = displayWidth * window.devicePixelRatio; + canvas.height = displayHeight * window.devicePixelRatio; + canvas.style.width = displayWidth + "px"; + canvas.style.height = displayHeight + "px"; + } else { + canvas.width = displayWidth; + canvas.height = displayHeight; + } + } + function drawScene(time) { + time *= 0.002; // convert to seconds + resizeCanvasToDisplaySize(gl.canvas); gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); gl.clearColor(0, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT); diff --git a/styles/canvas.css b/styles/canvas.css index f47b732..a1d1217 100644 --- a/styles/canvas.css +++ b/styles/canvas.css @@ -9,7 +9,7 @@ canvas { top: 0; left: 0; z-index: -1; - width: 100%; - height: 100%; + width: 100vw; + height: 100vh; pointer-events: none; }