From 37d9593dd5558e759d2afc49719c2265b57aeeda Mon Sep 17 00:00:00 2001 From: namdaeun Date: Tue, 14 Nov 2023 20:43:38 +0900 Subject: [PATCH 01/23] Feat: inital setting --- Week4/LoginAndSignup/src/App.css | 0 Week4/LoginAndSignup/src/App.jsx | 13 ++++++++++++ .../src/components/Header/Header.jsx | 0 .../src/components/Header/style.js | 0 Week4/LoginAndSignup/src/index.css | 0 Week4/LoginAndSignup/src/main.jsx | 10 ++++++++++ .../LoginAndSignup/src/pages/Login/Login.jsx | 15 ++++++++++++++ Week4/LoginAndSignup/src/pages/Login/style.js | 0 .../src/pages/Signup/Signup.jsx | 20 +++++++++++++++++++ .../LoginAndSignup/src/pages/Signup/style.js | 0 10 files changed, 58 insertions(+) create mode 100644 Week4/LoginAndSignup/src/App.css create mode 100644 Week4/LoginAndSignup/src/App.jsx create mode 100644 Week4/LoginAndSignup/src/components/Header/Header.jsx create mode 100644 Week4/LoginAndSignup/src/components/Header/style.js create mode 100644 Week4/LoginAndSignup/src/index.css create mode 100644 Week4/LoginAndSignup/src/main.jsx create mode 100644 Week4/LoginAndSignup/src/pages/Login/Login.jsx create mode 100644 Week4/LoginAndSignup/src/pages/Login/style.js create mode 100644 Week4/LoginAndSignup/src/pages/Signup/Signup.jsx create mode 100644 Week4/LoginAndSignup/src/pages/Signup/style.js diff --git a/Week4/LoginAndSignup/src/App.css b/Week4/LoginAndSignup/src/App.css new file mode 100644 index 0000000..e69de29 diff --git a/Week4/LoginAndSignup/src/App.jsx b/Week4/LoginAndSignup/src/App.jsx new file mode 100644 index 0000000..6fc8d9a --- /dev/null +++ b/Week4/LoginAndSignup/src/App.jsx @@ -0,0 +1,13 @@ +import './App.css' +import Login from './pages/Login/Login' + +function App() { + + return ( + <> + + + ) +} + +export default App diff --git a/Week4/LoginAndSignup/src/components/Header/Header.jsx b/Week4/LoginAndSignup/src/components/Header/Header.jsx new file mode 100644 index 0000000..e69de29 diff --git a/Week4/LoginAndSignup/src/components/Header/style.js b/Week4/LoginAndSignup/src/components/Header/style.js new file mode 100644 index 0000000..e69de29 diff --git a/Week4/LoginAndSignup/src/index.css b/Week4/LoginAndSignup/src/index.css new file mode 100644 index 0000000..e69de29 diff --git a/Week4/LoginAndSignup/src/main.jsx b/Week4/LoginAndSignup/src/main.jsx new file mode 100644 index 0000000..54b39dd --- /dev/null +++ b/Week4/LoginAndSignup/src/main.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')).render( + + + , +) diff --git a/Week4/LoginAndSignup/src/pages/Login/Login.jsx b/Week4/LoginAndSignup/src/pages/Login/Login.jsx new file mode 100644 index 0000000..19bed2b --- /dev/null +++ b/Week4/LoginAndSignup/src/pages/Login/Login.jsx @@ -0,0 +1,15 @@ +const Login = () => { + return ( + <> +

Login

+ ID + + PASSWORD + + + + + ); +}; + +export default Login; \ No newline at end of file diff --git a/Week4/LoginAndSignup/src/pages/Login/style.js b/Week4/LoginAndSignup/src/pages/Login/style.js new file mode 100644 index 0000000..e69de29 diff --git a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx new file mode 100644 index 0000000..7895df8 --- /dev/null +++ b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx @@ -0,0 +1,20 @@ +const Signup = () => { + return ( + <> +

Sign Up

+ ID + + + 비밀번호 + + 비밀번호 확인 + + 닉네임 + + + + + ); +}; + +export default Signup; \ No newline at end of file diff --git a/Week4/LoginAndSignup/src/pages/Signup/style.js b/Week4/LoginAndSignup/src/pages/Signup/style.js new file mode 100644 index 0000000..e69de29 From 85aa43f323fac3ce1922ae8509f5de17951566ea Mon Sep 17 00:00:00 2001 From: namdaeun Date: Tue, 14 Nov 2023 20:46:57 +0900 Subject: [PATCH 02/23] Docs: add MyPage --- Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx | 16 ++++++++++++++++ Week4/LoginAndSignup/src/pages/MyPage/style.js | 0 2 files changed, 16 insertions(+) create mode 100644 Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx create mode 100644 Week4/LoginAndSignup/src/pages/MyPage/style.js diff --git a/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx new file mode 100644 index 0000000..5155980 --- /dev/null +++ b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx @@ -0,0 +1,16 @@ +const MyPage = () => { + return ( + <> +

MY PAGE

+
+ ID : +
+
+ 닉네임 : +
+ + + ); +}; + +export default MyPage; \ No newline at end of file diff --git a/Week4/LoginAndSignup/src/pages/MyPage/style.js b/Week4/LoginAndSignup/src/pages/MyPage/style.js new file mode 100644 index 0000000..e69de29 From 99fe6b435d21ad9b28404105828f34ca256dd47e Mon Sep 17 00:00:00 2001 From: namdaeun Date: Tue, 14 Nov 2023 22:06:32 +0900 Subject: [PATCH 03/23] Feat: add Router.jsx --- Week4/LoginAndSignup/src/components/Router.jsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Week4/LoginAndSignup/src/components/Router.jsx diff --git a/Week4/LoginAndSignup/src/components/Router.jsx b/Week4/LoginAndSignup/src/components/Router.jsx new file mode 100644 index 0000000..46265a1 --- /dev/null +++ b/Week4/LoginAndSignup/src/components/Router.jsx @@ -0,0 +1,18 @@ +import { BrowserRouter, Routes, Route } from 'react-router-dom'; +import SignUp from '../pages/SignUp/SignUp'; +import Login from '../pages/Login/Login'; +import MyPage from '../pages/MyPage/MyPage'; + +const Router = () => { + return ( + + + } /> + } /> + } /> + + + ); +}; + +export default Router; \ No newline at end of file From bd5015698a67f7831e67dcb0071db38bdba39fe4 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Wed, 15 Nov 2023 15:11:39 +0900 Subject: [PATCH 04/23] =?UTF-8?q?Feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20API=20=EC=97=B0=EA=B2=B0=20+=20=EC=8A=A4=ED=83=80?= =?UTF-8?q?=EC=9D=BC=20=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/App.jsx | 7 +- .../src/pages/Signup/Signup.jsx | 79 +++++++++++++++---- .../LoginAndSignup/src/pages/Signup/style.js | 31 ++++++++ .../LoginAndSignup/src/style/GlobalStyle.jsx | 28 +++++++ 4 files changed, 129 insertions(+), 16 deletions(-) create mode 100644 Week4/LoginAndSignup/src/style/GlobalStyle.jsx diff --git a/Week4/LoginAndSignup/src/App.jsx b/Week4/LoginAndSignup/src/App.jsx index 6fc8d9a..2b4096c 100644 --- a/Week4/LoginAndSignup/src/App.jsx +++ b/Week4/LoginAndSignup/src/App.jsx @@ -1,11 +1,14 @@ import './App.css' -import Login from './pages/Login/Login' +import SignUp from './pages/SignUp/SignUp'; + +import { GlobalStyle } from './style/GlobalStyle'; function App() { return ( <> - + + ) } diff --git a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx index 7895df8..97a6e4c 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx +++ b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx @@ -1,20 +1,71 @@ -const Signup = () => { +import { GlobalStyle } from '../../style/GlobalStyle' +import axios from "axios"; +import { useState } from 'react'; +import * as S from './style'; + +const SignUp = () => { + const [username, setUsername] = useState(''); + const [nickname, setNickname] = useState(''); + const [password, setPassword] = useState(''); + + const saveUsername = event => { + setUsername(event.target.value); + }; + + const savePassword = event => { + setPassword(event.target.value); + }; + + const saveNickName = event => { + setNickname(event.target.value); + }; + + const postData = () => { + try { + axios.post(`${import.meta.env.VITE_BASE_URL}/api/v1/members`, { + "username": username, + "nickname": nickname, + "password": password + }); + console.log("성공🤩"); + } catch (err) { + console.log(err); + } + }; + return ( <> -

Sign Up

- ID - - - 비밀번호 - - 비밀번호 확인 - - 닉네임 - - - + + + Sign Up + ID + + + + + 비밀번호 + + 비밀번호 확인 + + 닉네임 + + + ); }; -export default Signup; \ No newline at end of file +export default SignUp; + diff --git a/Week4/LoginAndSignup/src/pages/Signup/style.js b/Week4/LoginAndSignup/src/pages/Signup/style.js index e69de29..487ec79 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/style.js +++ b/Week4/LoginAndSignup/src/pages/Signup/style.js @@ -0,0 +1,31 @@ +import styled from 'styled-components'; + +export const Component = styled.div` + background-color: bisque; + padding: 3rem; + margin: 10rem 31rem; + border-radius: 1rem; + +` + +export const PageTitle = styled.h3` + text-align: center; + padding-bottom: 1rem; + font-weight: bold; +`; + +export const Field = styled.div` + display: inline; + margin-right: 2rem; +`; + +export const Input = styled.input` + display: inline; + +`; + +export const CheckButton = styled.div` + display: inline; + margin-right: 2rem; + margin-left: 0.5rem; +` diff --git a/Week4/LoginAndSignup/src/style/GlobalStyle.jsx b/Week4/LoginAndSignup/src/style/GlobalStyle.jsx new file mode 100644 index 0000000..ac0471d --- /dev/null +++ b/Week4/LoginAndSignup/src/style/GlobalStyle.jsx @@ -0,0 +1,28 @@ +import { createGlobalStyle } from "styled-components"; +import reset from "styled-reset"; + +export const GlobalStyle = createGlobalStyle` +${reset} + +#root, body, html { + padding: 3rem; + margin: 50rem 50rem; + width:100%; + height: 100vh; + margin: 0 auto; + font-family: Arial, Helvetica, sans-serif; +} + +html { + font-size: 62.5%; +} + +button { + cursor: pointer; +} + +* { + box-sizing: border-box; +}`; + + From 866615a05553de3561e9e4a7a1adddef1447e74c Mon Sep 17 00:00:00 2001 From: namdaeun Date: Thu, 16 Nov 2023 12:36:53 +0900 Subject: [PATCH 05/23] =?UTF-8?q?Feat:=20=EB=B9=84=EB=B0=80=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=ED=99=95=EC=9D=B8=20&=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=EB=B2=84=ED=8A=BC=20=ED=99=9C=EC=84=B1?= =?UTF-8?q?=ED=99=94=ED=95=98=EB=8A=94=20=ED=95=A8=EC=88=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/Signup/Signup.jsx | 82 +++++++++++++++---- 1 file changed, 65 insertions(+), 17 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx index 97a6e4c..a0354e4 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx +++ b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx @@ -1,12 +1,15 @@ import { GlobalStyle } from '../../style/GlobalStyle' import axios from "axios"; -import { useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; import * as S from './style'; const SignUp = () => { const [username, setUsername] = useState(''); const [nickname, setNickname] = useState(''); const [password, setPassword] = useState(''); + const [isPasswordConfirm, setIsPasswordConfirm] = useState(false); + const [signupButton, setSignupButton] = useState(false); const saveUsername = event => { setUsername(event.target.value); @@ -20,49 +23,94 @@ const SignUp = () => { setNickname(event.target.value); }; - const postData = () => { + const navigate = useNavigate(); + const moveLoginPage = () => { + navigate(`/post/${username}`); + }; + + const postData = async (e) => { + e.preventDefault(); try { axios.post(`${import.meta.env.VITE_BASE_URL}/api/v1/members`, { "username": username, "nickname": nickname, "password": password - }); - console.log("성공🤩"); + }).then(() => { + console.log("성공🤩"); + }) } catch (err) { console.log(err); } }; + const onChangePasswordConfirm = useCallback( + (e) => { + e.preventDefault(); + const passwordConfirmCurrent = e.target.value + if (password === passwordConfirmCurrent) { + console.log('✅비밀번호 일치✅'); + setIsPasswordConfirm(true) + } else { + console.log('🚨비밀번호 불일치🚨'); + setIsPasswordConfirm(false) + } + }, + [password] + ) + + useEffect(() => { + isPasswordConfirm && nickname ? ( + setSignupButton(true) + ) : ( + setSignupButton(false) + ) + }, [isPasswordConfirm, nickname]); + return ( <> - + Sign Up - ID - ID + - - + 중복체크 - 비밀번호 + 비밀번호 - 비밀번호 확인 - - 닉네임 + 비밀번호 확인 + + 닉네임 - - + { + postData(); + moveLoginPage(); + }}> + 회원가입 + + ); }; From b3cd281decef23c13b4cda78942f52883fe8e698 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Thu, 16 Nov 2023 12:40:00 +0900 Subject: [PATCH 06/23] =?UTF-8?q?Feat:=20=EC=95=84=EC=9D=B4=EB=94=94=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/Signup/Signup.jsx | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx index a0354e4..a73250f 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx +++ b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx @@ -8,6 +8,8 @@ const SignUp = () => { const [username, setUsername] = useState(''); const [nickname, setNickname] = useState(''); const [password, setPassword] = useState(''); + // const [isEmpty, setIsEmpty] = useState(true); + const [isExist, setIsExist] = useState(false); const [isPasswordConfirm, setIsPasswordConfirm] = useState(false); const [signupButton, setSignupButton] = useState(false); @@ -43,6 +45,31 @@ const SignUp = () => { } }; + const duplicationCheck = (e) => { + e.preventDefault(); + let inputID = document.querySelector(".id-input").value; + axios.get(`${import.meta.env.VITE_BASE_URL}/api/v1/members/check`, { + params: { + "username": `${inputID}`, + }, + }) + .then((res) => { + const isDuplicate = res.data.isDuplicate; + console.log(isDuplicate); + if (isDuplicate) { + setIsExist(true); + console.log("중복되는 아이디 입니다."); + } else { + setUsername(inputID); + setIsExist(false); + console.log("🔥사용 가능한 아이디입니다.🔥"); + } + }) + .catch(function (error) { + console.log(error); + }); + }; + const onChangePasswordConfirm = useCallback( (e) => { e.preventDefault(); @@ -59,12 +86,12 @@ const SignUp = () => { ) useEffect(() => { - isPasswordConfirm && nickname ? ( + isExist && isPasswordConfirm && nickname ? ( setSignupButton(true) ) : ( setSignupButton(false) ) - }, [isPasswordConfirm, nickname]); + }, [isExist, isPasswordConfirm, nickname]); return ( <> @@ -80,7 +107,8 @@ const SignUp = () => { value={username} onChange={saveUsername} /> 중복체크 + type="button" + onClick={duplicationCheck}>중복체크 비밀번호 Date: Thu, 16 Nov 2023 12:41:58 +0900 Subject: [PATCH 07/23] =?UTF-8?q?Feat:=20useEffect=20=EC=A1=B0=EA=B1=B4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/pages/Signup/Signup.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx index a73250f..7ebbc37 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx +++ b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx @@ -86,7 +86,7 @@ const SignUp = () => { ) useEffect(() => { - isExist && isPasswordConfirm && nickname ? ( + !isExist && isPasswordConfirm && nickname ? ( setSignupButton(true) ) : ( setSignupButton(false) @@ -108,6 +108,7 @@ const SignUp = () => { onChange={saveUsername} /> 중복체크 비밀번호 From e8b5a50ffa349b0fcf5dface9e92598e9dcbfe8b Mon Sep 17 00:00:00 2001 From: namdaeun Date: Thu, 16 Nov 2023 12:52:29 +0900 Subject: [PATCH 08/23] =?UTF-8?q?Feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=B2=84=ED=8A=BC=20=EB=88=84=EB=A5=B4=EB=A9=B4=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/pages/Signup/Signup.jsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx index 7ebbc37..69f0bf3 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx +++ b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx @@ -27,11 +27,10 @@ const SignUp = () => { const navigate = useNavigate(); const moveLoginPage = () => { - navigate(`/post/${username}`); + navigate(`/login`); }; - const postData = async (e) => { - e.preventDefault(); + const postData = async () => { try { axios.post(`${import.meta.env.VITE_BASE_URL}/api/v1/members`, { "username": username, @@ -45,9 +44,9 @@ const SignUp = () => { } }; - const duplicationCheck = (e) => { - e.preventDefault(); + const duplicationCheck = () => { let inputID = document.querySelector(".id-input").value; + axios.get(`${import.meta.env.VITE_BASE_URL}/api/v1/members/check`, { params: { "username": `${inputID}`, @@ -72,7 +71,6 @@ const SignUp = () => { const onChangePasswordConfirm = useCallback( (e) => { - e.preventDefault(); const passwordConfirmCurrent = e.target.value if (password === passwordConfirmCurrent) { console.log('✅비밀번호 일치✅'); From b51a3ed936239f1e86f7c28fb76405426c96a800 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Thu, 16 Nov 2023 12:53:54 +0900 Subject: [PATCH 09/23] =?UTF-8?q?Design:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LoginAndSignup/src/pages/Signup/style.js | 62 +++++++++++++++---- .../LoginAndSignup/src/style/GlobalStyle.jsx | 27 +++++--- 2 files changed, 68 insertions(+), 21 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/Signup/style.js b/Week4/LoginAndSignup/src/pages/Signup/style.js index 487ec79..65c6199 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/style.js +++ b/Week4/LoginAndSignup/src/pages/Signup/style.js @@ -1,31 +1,69 @@ import styled from 'styled-components'; -export const Component = styled.div` - background-color: bisque; - padding: 3rem; - margin: 10rem 31rem; +export const Container = styled.div` + line-height: 40px; + width: 23rem; + height: 25rem; + background-color: var(--color-bg-dark); border-radius: 1rem; - -` + display: inline-block; + flex-direction: column; + box-shadow: 12px 15px 63px -1px rgba(0,0,0,0.81); + -webkit-box-shadow: 12px 15px 63px -1px rgba(0,0,0,0.81); + -moz-box-shadow: 12px 15px 63px -1px rgba(0,0,0,0.81); +`; export const PageTitle = styled.h3` text-align: center; - padding-bottom: 1rem; + padding: 2rem; font-weight: bold; `; export const Field = styled.div` display: inline; - margin-right: 2rem; + margin-right: 1.5rem; + margin-left: 2rem; + &.id-field { + margin-right: 6rem; + } + &.pwd-field { + margin-right: 3.5rem; + } + &.pwd-error { + margin-right: 1.5rem; + } + &.pwd-success > input { + margin-right: 1.5rem; + border-color: green; + } + &.nickname-field { + margin-right: 4.35rem; + } `; export const Input = styled.input` - display: inline; `; -export const CheckButton = styled.div` +export const CheckButton = styled.button` display: inline; - margin-right: 2rem; - margin-left: 0.5rem; + margin: 0.5rem; + border-radius: 0.7rem; + border: solid; + &.id-notExist { + background-color: green; + } + &.id-exist { + background-color: red; + } ` +export const SignUpBtn = styled.button` + display: flex; + width: 60%; + margin: auto; + margin-top: 3rem; + padding: 0.3rem; + border-radius: 0.7rem; + border: solid; + text-align: center; +`; diff --git a/Week4/LoginAndSignup/src/style/GlobalStyle.jsx b/Week4/LoginAndSignup/src/style/GlobalStyle.jsx index ac0471d..79d6e9d 100644 --- a/Week4/LoginAndSignup/src/style/GlobalStyle.jsx +++ b/Week4/LoginAndSignup/src/style/GlobalStyle.jsx @@ -4,17 +4,26 @@ import reset from "styled-reset"; export const GlobalStyle = createGlobalStyle` ${reset} -#root, body, html { - padding: 3rem; - margin: 50rem 50rem; - width:100%; - height: 100vh; - margin: 0 auto; - font-family: Arial, Helvetica, sans-serif; +:root { /* css변수 기능을 이용*/ + --color-bg-dark: #f5f5f5; + --color-bg: #fdfffd; + --color-grey: #d1d1d1; + --color-text: #22243b; + --color-accent: #f16e03; } -html { - font-size: 62.5%; +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + background: rgb(219, 221, 223); /* gradient CSS*/ } button { From 695506701070704447add8409233c083e1ff2c6d Mon Sep 17 00:00:00 2001 From: namdaeun Date: Fri, 17 Nov 2023 04:48:14 +0900 Subject: [PATCH 10/23] =?UTF-8?q?Design:=20=EC=A0=84=EC=B2=B4=20UI=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/pages/Login/style.js | 77 +++++++++++++++++++ .../LoginAndSignup/src/pages/MyPage/style.js | 43 +++++++++++ .../LoginAndSignup/src/pages/Signup/style.js | 35 +++++++-- .../LoginAndSignup/src/style/GlobalStyle.jsx | 21 +++-- 4 files changed, 163 insertions(+), 13 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/Login/style.js b/Week4/LoginAndSignup/src/pages/Login/style.js index e69de29..6b130dd 100644 --- a/Week4/LoginAndSignup/src/pages/Login/style.js +++ b/Week4/LoginAndSignup/src/pages/Login/style.js @@ -0,0 +1,77 @@ +import styled from 'styled-components'; + +export const Container = styled.div` + width: 23rem; + height: 25rem; + background-color: var(--color-bg); + border-radius: 1rem; + display: inline-block; + flex-direction: column; + box-shadow: 12px 15px 63px -1px rgba(0,0,0,0.81); + -webkit-box-shadow: 12px 15px 63px -1px rgba(0,0,0,0.81); + -moz-box-shadow: 12px 15px 63px -1px rgba(0,0,0,0.81); +`; + +export const PageTitle = styled.h3` + text-align: center; + font-size: 1.5rem; + font-weight: bold; + padding: 2rem; + margin-bottom: 1rem; + color: var(--color-accent); +`; + +export const InputContainer = styled.div` + line-height: 40px; +`; + +export const ButtonContainer = styled.div` + display: block; + margin-left: 4rem; + margin-top: 3rem; +`; + +export const Field = styled.div` + display: inline; + margin-right: 1.5rem; + margin-left: 2rem; + &.id-field { + margin-right: 6rem; + } + &.pwd-field { + margin-right: 3.5rem; + } +`; + +export const Button = styled.button` + display: block; + width: 70%; + margin: 1rem; + padding: 0.4rem; + border-radius: 0.5rem; + font-weight: bold; + border: solid; + background-color: var(--color-button-bg); + color: var(--color-accent); + &:hover { + background-color: var(--color-accent); + color: var(--color-button-bg); + font-weight: bold; + } +`; + +export const SignUpBtn = styled.button` + display: block; + width: 70%; + margin: 1rem; + padding: 0.4rem; + border-radius: 0.5rem; + font-weight: bold; + border: solid; + text-align: center; + &:hover { + background-color: #000000; + color: #FF1493; + font-weight: bold; + } +`; \ No newline at end of file diff --git a/Week4/LoginAndSignup/src/pages/MyPage/style.js b/Week4/LoginAndSignup/src/pages/MyPage/style.js index e69de29..b0092f1 100644 --- a/Week4/LoginAndSignup/src/pages/MyPage/style.js +++ b/Week4/LoginAndSignup/src/pages/MyPage/style.js @@ -0,0 +1,43 @@ +import styled from 'styled-components'; + +export const Container = styled.div` + width: 23rem; + height: 18rem; + line-height: 40px; + background-color: var(--color-bg); + border-radius: 1rem; + display: inline-block; + flex-direction: column; + -webkit-box-shadow: 0px 0px 17px 1px rgba(93,93,93,0.72); + box-shadow: 0px 0px 17px 1px rgba(93,93,93,0.72); +`; + +export const PageTitle = styled.h3` + text-align: center; + font-size: 1.5rem; + padding: 2rem; + font-weight: bold; +`; + +export const TextArea = styled.div` + text-align: center; + background-color: var(--color-light-pink); + font-size: 1rem; + font-weight: bold; + padding: 0.2rem; +`; + +export const Button = styled.button` + display: block; + width: 70%; + margin-left: 3.5rem; + margin-top: 1.5rem; + padding: 0.4rem; + border-radius: 0.5rem; + border: solid; + &:hover { + background-color: var(--color-button-bg); + color: var(--color-light-pink); + font-weight: bold; + } +`; diff --git a/Week4/LoginAndSignup/src/pages/Signup/style.js b/Week4/LoginAndSignup/src/pages/Signup/style.js index 65c6199..dd948c3 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/style.js +++ b/Week4/LoginAndSignup/src/pages/Signup/style.js @@ -1,10 +1,10 @@ import styled from 'styled-components'; export const Container = styled.div` - line-height: 40px; width: 23rem; height: 25rem; - background-color: var(--color-bg-dark); + line-height: 40px; + background-color: var(--color-bg); border-radius: 1rem; display: inline-block; flex-direction: column; @@ -15,6 +15,8 @@ export const Container = styled.div` export const PageTitle = styled.h3` text-align: center; + font-size: 1.5rem; + color: var(--color-accent); padding: 2rem; font-weight: bold; `; @@ -42,13 +44,17 @@ export const Field = styled.div` `; export const Input = styled.input` - + padding: 0.28rem; + border-radius: 0.5rem; + border: solid; `; export const CheckButton = styled.button` display: inline; margin: 0.5rem; border-radius: 0.7rem; + padding: 0.28rem; + font-weight: bold; border: solid; &.id-notExist { background-color: green; @@ -56,14 +62,31 @@ export const CheckButton = styled.button` &.id-exist { background-color: red; } + &.none { + background-color: black; + color: var(--color-accent); + font-weight: normal; + } ` export const SignUpBtn = styled.button` - display: flex; + display: block; width: 60%; margin: auto; margin-top: 3rem; - padding: 0.3rem; - border-radius: 0.7rem; + padding: 0.4rem; + border-radius: 0.5rem; + font-weight: bold; border: solid; text-align: center; + background-color: var(--color-button-bg); + color: var(--color-accent); + &:hover { + background-color: var(--color-accent); + color: var(--color-button-bg); + font-weight: bold; + } + &:disabled { + opacity: 0.4; + pointer-events: none; // disabled 되었을 땐 hover효과 없음 + } `; diff --git a/Week4/LoginAndSignup/src/style/GlobalStyle.jsx b/Week4/LoginAndSignup/src/style/GlobalStyle.jsx index 79d6e9d..78a51e3 100644 --- a/Week4/LoginAndSignup/src/style/GlobalStyle.jsx +++ b/Week4/LoginAndSignup/src/style/GlobalStyle.jsx @@ -4,12 +4,11 @@ import reset from "styled-reset"; export const GlobalStyle = createGlobalStyle` ${reset} -:root { /* css변수 기능을 이용*/ - --color-bg-dark: #f5f5f5; - --color-bg: #fdfffd; - --color-grey: #d1d1d1; - --color-text: #22243b; - --color-accent: #f16e03; +:root { + --color-bg: #f5f5f5; + --color-button-bg: #000000; + --color-light-pink: #FFD2D7; + --color-accent: #FF1493; } body { @@ -32,6 +31,14 @@ button { * { box-sizing: border-box; -}`; +} + +input { + padding: 0.28rem; + border-radius: 0.5rem; + border: solid; +} + +`; From 4d73a2e3473fbf5eaf4ef08c032682ee739b5a2c Mon Sep 17 00:00:00 2001 From: namdaeun Date: Fri, 17 Nov 2023 05:42:12 +0900 Subject: [PATCH 11/23] =?UTF-8?q?Feat:=20=EC=9E=85=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EA=B3=A0=20=EC=9E=88=EB=8A=94=20=EB=8F=84=EC=A4=91=EC=97=90?= =?UTF-8?q?=EB=8A=94=20=EC=A4=91=EB=B3=B5=20=ED=99=95=EC=9D=B8=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EA=B2=80=EC=A0=95=EC=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/Signup/Signup.jsx | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx index 69f0bf3..74e0994 100644 --- a/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx +++ b/Week4/LoginAndSignup/src/pages/Signup/Signup.jsx @@ -8,10 +8,10 @@ const SignUp = () => { const [username, setUsername] = useState(''); const [nickname, setNickname] = useState(''); const [password, setPassword] = useState(''); - // const [isEmpty, setIsEmpty] = useState(true); - const [isExist, setIsExist] = useState(false); + const [isExist, setIsExist] = useState('none'); const [isPasswordConfirm, setIsPasswordConfirm] = useState(false); const [signupButton, setSignupButton] = useState(false); + const navigate = useNavigate(); const saveUsername = event => { setUsername(event.target.value); @@ -25,7 +25,6 @@ const SignUp = () => { setNickname(event.target.value); }; - const navigate = useNavigate(); const moveLoginPage = () => { navigate(`/login`); }; @@ -38,6 +37,9 @@ const SignUp = () => { "password": password }).then(() => { console.log("성공🤩"); + console.log(`아이디 : ${username}`); + console.log(`비번 : ${password}`); + console.log(`닉네임 : ${nickname}`); }) } catch (err) { console.log(err); @@ -52,15 +54,15 @@ const SignUp = () => { "username": `${inputID}`, }, }) - .then((res) => { - const isDuplicate = res.data.isDuplicate; + .then((response) => { + const isDuplicate = response.data.isExist; console.log(isDuplicate); if (isDuplicate) { - setIsExist(true); + setIsExist('exist'); console.log("중복되는 아이디 입니다."); } else { setUsername(inputID); - setIsExist(false); + setIsExist('notExist'); console.log("🔥사용 가능한 아이디입니다.🔥"); } }) @@ -84,12 +86,12 @@ const SignUp = () => { ) useEffect(() => { - !isExist && isPasswordConfirm && nickname ? ( + username && isExist === 'notExist' && isPasswordConfirm && nickname ? ( setSignupButton(true) ) : ( setSignupButton(false) ) - }, [isExist, isPasswordConfirm, nickname]); + }, [username, isExist, isPasswordConfirm, nickname]); return ( <> @@ -97,17 +99,25 @@ const SignUp = () => { Sign Up ID - + onChange={(e) => { + saveUsername(e); + setIsExist('none'); + }} /> 중복체크 + className={(isExist === 'exist') ? 'id-exist' : + (isExist === 'notExist') ? 'id-notExist' : 'none'} + onClick={(event) => { + saveUsername(event); + duplicationCheck(); + }} + >중복체크 비밀번호 Date: Fri, 17 Nov 2023 05:45:42 +0900 Subject: [PATCH 12/23] =?UTF-8?q?Feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=B2=84=ED=8A=BC=20=EB=88=84=EB=A5=B4=EB=A9=B4=20?= =?UTF-8?q?Signup=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LoginAndSignup/src/pages/Login/Login.jsx | 51 +++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/Login/Login.jsx b/Week4/LoginAndSignup/src/pages/Login/Login.jsx index 19bed2b..9364d7c 100644 --- a/Week4/LoginAndSignup/src/pages/Login/Login.jsx +++ b/Week4/LoginAndSignup/src/pages/Login/Login.jsx @@ -1,14 +1,47 @@ +import { useState } from 'react'; +import * as S from './style'; +import { useNavigate } from 'react-router-dom'; + const Login = () => { + const [username, setUsername] = useState(""); + const [password, setPassword] = useState(""); + const navigate = useNavigate(); + const saveUsername = event => { + setUsername(event.target.value); + }; + + const savePassword = event => { + setPassword(event.target.value); + }; + + const moveSignupPage = () => { + navigate(`/signup`); + }; + return ( - <> -

Login

- ID - - PASSWORD - - - - + + + Login + ID + + PASSWORD + + + + 로그인 + 회원가입 + + ); }; From 4fd831ac74d4f1824e5436cc9ce1466252e1fb71 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Fri, 17 Nov 2023 05:47:07 +0900 Subject: [PATCH 13/23] =?UTF-8?q?Feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EB=88=84=EB=A5=B4=EB=A9=B4=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B3=A0=20mypage?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LoginAndSignup/src/pages/Login/Login.jsx | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Week4/LoginAndSignup/src/pages/Login/Login.jsx b/Week4/LoginAndSignup/src/pages/Login/Login.jsx index 9364d7c..ad20bd4 100644 --- a/Week4/LoginAndSignup/src/pages/Login/Login.jsx +++ b/Week4/LoginAndSignup/src/pages/Login/Login.jsx @@ -1,5 +1,6 @@ import { useState } from 'react'; import * as S from './style'; +import axios from "axios"; import { useNavigate } from 'react-router-dom'; const Login = () => { @@ -18,6 +19,23 @@ const Login = () => { navigate(`/signup`); }; + const getData = async () => { + try { + axios.post(`${import.meta.env.VITE_BASE_URL}/api/v1/members/sign-in`, { + username: username, + password: password, + }).then((res) => { + console.log("✨성공🤩✨"); + console.log(`아이디 : ${res.data.username}`); + console.log(`비번 : ${res.data.password}`); + console.log(res); + navigate(`/mypage/${res.data.id}`); + }) + } catch (err) { + console.log(err); + } + }; + return ( @@ -38,7 +56,7 @@ const Login = () => { onChange={savePassword} /> - 로그인 + 로그인 회원가입 From f6aa91ba083aa401773c33348014a4538a236a13 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Fri, 17 Nov 2023 05:51:16 +0900 Subject: [PATCH 14/23] =?UTF-8?q?Feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EB=88=84=EB=A5=B4=EB=A9=B4=20Login?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/MyPage/MyPage.jsx | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx index 5155980..4075137 100644 --- a/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx +++ b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx @@ -1,15 +1,24 @@ +import { useNavigate } from 'react-router-dom'; +import * as S from './style'; + const MyPage = () => { + const navigate = useNavigate(); + + const moveLoginPage = () => { + navigate(`/login`); + }; + return ( - <> -

MY PAGE

-
+ + MY PAGE + ID : -
-
+ + 닉네임 : -
- - + + 로그아웃 +
); }; From e5f379fe44713b7faba3ca42903c80ed1f08ceb8 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Fri, 17 Nov 2023 05:52:18 +0900 Subject: [PATCH 15/23] =?UTF-8?q?Feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EA=B0=80=EC=A0=B8=EC=99=80?= =?UTF-8?q?=EC=84=9C=20=ED=99=94=EB=A9=B4=EC=97=90=20=EB=9D=84=EC=9A=B0?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/MyPage/MyPage.jsx | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx index 4075137..b42bb4f 100644 --- a/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx +++ b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx @@ -1,21 +1,42 @@ -import { useNavigate } from 'react-router-dom'; +import { useNavigate, useParams } from 'react-router-dom'; +import axios from "axios"; import * as S from './style'; +import { useState } from 'react'; const MyPage = () => { + const { userId } = useParams(); const navigate = useNavigate(); + const [username, setUsername] = useState(""); + const [nickname, setNickname] = useState(""); const moveLoginPage = () => { navigate(`/login`); }; + const getLoginData = async () => { + try { + axios.get(`${import.meta.env.VITE_BASE_URL}/api/v1/members/${userId}`, { + userId: userId, + }).then((response) => { + setUsername(response.data.username); + setNickname(response.data.nickname); + console.log("✨🔥성공🔥✨"); + + }) + } catch (err) { + console.log(err); + } + }; + getLoginData(); + return ( MY PAGE - ID : + ID : {username} - 닉네임 : + 닉네임 : {nickname} 로그아웃 From 027497710bfd648f8e68ec31fc70ffb5e07a357b Mon Sep 17 00:00:00 2001 From: namdaeun Date: Fri, 17 Nov 2023 06:57:03 +0900 Subject: [PATCH 16/23] =?UTF-8?q?Feat:=20=EC=83=9D=EA=B0=81=EA=B3=BC?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/thinkHW/image.png | Bin 0 -> 74889 bytes Week4/LoginAndSignup/thinkHW/week4.md | 47 +++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 Week4/LoginAndSignup/thinkHW/image.png create mode 100644 Week4/LoginAndSignup/thinkHW/week4.md diff --git a/Week4/LoginAndSignup/thinkHW/image.png b/Week4/LoginAndSignup/thinkHW/image.png new file mode 100644 index 0000000000000000000000000000000000000000..59463c405dfeda99714dd05500939fc20d9c3efc GIT binary patch literal 74889 zcmeFYgLkD-@-Cd5*tTtV%#PJj$F^;=lXQ}fZQHi(bZm5NTle(bduQgG`K|T+12=1* zwcew=d+(}xcGdIL2~&`hK!C-C1pxs;kdhQt0s(BW@!BMJHV$0qnOcnqpATn;gTC3x7ypm;?AbP-9n|e*|ji5es`|I@Q=WTW>+o9KCrq@NQ z+l7x4Aqcujm3jsu9as#>SnQ8yFE&HNUF;`cA%L+z2(JCXP2FI{%#6POSi*a|cMDXG zgV(Sn-%@w?XLVj5mhml!zp$d*p4ly{fJ3o&*4@AlQeJ!YV+2tIdue9UWD$rte|mqQ7P1@eN7|3r6wDBT^ZL zL#%Y|e5W6UkDpE?H>fX4p-atDOT(mjEQaQ~c?+gN`TaeE?pGS`;EKi0*EtsJRy|UL z_$4OfXD|8bQz|_#@dv#{y1kL%g91_Tk)^53Dm`MuZ-*06u}ec(Pfv2gqGP**+?zM8 z1IM{H?qA!w*RwP67>Uw@2uF@171T zFbDPj!gbCjG98yk2%@%lRS>r>wKbsAm!}7yxZ}+Mbq*k522<@pHzd_ zgJA~~LnA2?(-wdpe;taUFot3wK^nn=4e85Krv{Y{5sg9D1XKo&<-nHUu7WLm6%;AX zftyh&f%AmE7YdruI)eMvW1Iqc+CzCop8`|AP0R(*1)=KKuqV-muMR5T)_h`K2iNnj z?%$|^_l1Zi22m6``YB)-%#6Z;8aO~A^%GnpB!M(hl3~`rfs|l`Kr{rNB%6f`9;3fU z-C&&=G({2~DLz;ugl1UT2+=T&`8ZuTfHx^{VMxd^#ApeeI6WL9t0d6nOZ@>5AgX z=BfY5>1pjr;EgH}@HJXr;)-klMf3-$FvSk?4*d>CZZ@;DG9@mWP8f-(K&^jER!j7< zbcfU#SyY^|WD&WW5;#p_L!7dhC9w`EKS}3z1qEgWd&QJuVrBJQg+hDfop9mkKC?R7 zmB0zg;rPNmmp!n(+r7{|H+0y+AAiKc^7j-L6;G(KXr`&N(M!V@!|}zs{x}Ze4pI)T zg;yv3lpd0%FASCrmQIu&PPC;(pg~LgmasCWy>BwcK31G?Nf%wBpkl2etjwxBrh-_i zt%9R4Se{n$Qg)*fq4HR!t9)Kasw_gAK9*mVcag7~_wd{P%Xi$+Bx$;Qf?Su`kOk!h z{Q123n+41Hsgltn=#3v!xy5r!bJ4#qe|JyJr1qwfq|~~K_y1aB6DYGP^(uv%ms!AD zXkX|yXa3^NKKq5k@{1MU!hpG^`PAIR+vn@(@rN(CLBw6OtMVHL31#;`BbochBe#=i+!S0)sOm@w$ThX%rtD?h2acN%+ZfmES^C8?Jl?i``k=P5%qGVs)~5Viix-YJODA$e$1A)u``z&s^OX}Z2@w#QiHL+>8s&tq z#@od0>*VMf$HmTtz=Ow4#bxK#HC@0WlDa=Z$Ec2Fm%PtdtRv9Q(|XWC==44}ImR$~ z9<$bCJ+~6L@@o3nhS%b>@z^rXhfN4W*v@a9^^&DMtvP+D8=~u7{jU2?@1#n5%6!_` z9N9eZTJR{*MCV2G+JW?E_wxJ6+;RB{-m%vC>%?>q(@OQG-SXCNzuM1d5NjcYo+1BN zd;-Mi@54BV&WPH$%Y>qcut;Tyo`lvY^f0!WVAC)e^%hg{twT;?PU#{-&{W3XN9Gjf zW-4a%4t5TLr^-_wNhdh0rPL+3*u52>a<7n3Hc?K=2qn_Qq{-Iu67v4!pX3RMzly4f zjvJZ|(nq!umgCU@b3E1sp*>W!ucFPiQ<&D3uiCM!#hy3dV7HhvW^ z4%RxeZBzGhr*5`AHpn(D&A**?dtnp9`@%QBIdQPtm|8P#y!npjF{sfI(7M@B*d*E} zsz9hUTC=S-8LTaxB%EB}UZxG5udXfGezpX4?>@*?XCkyayC$B$)M>T6_7Z;be`};{ zO!RW_a(e7q#%iqIr8- zSePTD#`vn!wcLBc>}c3fViCa+_pYt?n(+<6?b8yVlt^Wj-HS6Y8ubUT@(#n`Ob zZt9lVdG7JrN07~%eCc?hdzrPi;lgyY8T5MnXoB>F1W8yV=zUB5`1@!VL%v2{I-6Fo z(!1!r;(_ya3)e)hj*VY{pED~|&~JVG)aTyo;ZpB4Tu(t)`Qh|_31Jx_gYXWov(k*C}Ac3?Q3E(|zU?2*HpgEhu zuc6QJ?{`0h;y*#qz(3IBAJ)C` z+&T2-`q8&<43}#0f1o{u%068AmA+7%AVMHgqFh&NzSNpk`NbACj^r1*=e|DZMqg!$9ijI8DXaIA( z3i12>^J3FrbM5iqK3(mVw`1DqU~2Mmq9c>-aox$$*w`347+li-zXmZb_*8^=zIFV6 zy#xHL5K4~b)aieJ$sasV+~3k;ex}|4l^FCt2k<*q|L;5hZx34hq5nD@@gnqF2gUi? z!m!_#i|1>u-%K;=^HjA4&(eM3?Yd&IP=yOS<7>S^k#!c?>(bb@PuV9#T%q%~(q(B{ zZM5Y6(alU zLk9f2mKa5e1A!TU383Je%g*%Bzc~1w^vQ znGxdOQ2yxzI7GtdVx9`^xrhgWAqNCR`w71I6Y+3|gyY3*#q!ylcDkLO_kq=F!wPT)pBe7qDATel^3Y?E;Rfk2S`%6=KTxjJcA+SVyrNWCBhocDEy`LSmm{MGd zIry7eyFbrVGqu%N&8}%ZXrJ{4Sc@yo=IREi$uE{EeZ0axBVIYGk^vBf(v8UNxR^~P z#!pu}CSwUS+AUX2HfuFHxxx_EP#euPcVlh$cX}pU42z-k-{<^d;l^dEG?SoGCI4aJ zul`xfXuEul=;X*-;E-?5%rl^ToVPurY|fE8L>#h-P_$psVH#i#kivV~ONk&fFEZyH zK8>j_!_bMq1qjJLKTgS_#|`Me3OcM)M79e+<0I}dg0KHf)=3a$#ve1OE=6(}m{LA)Hq#e87NAhA+gTGylP?mAXwdBY z{<6`ABU2P>b39wvmSe(0>Hhj~9^qN^Ej`3K6p83!rQYmfU4!zFg^1m8Z=|8&i?QuO z*+QMkc#PR}7Jt4(^u_OdiB`vb1!ROBt>y?RW&GJlQjv|eG3oWzev|Q}$#l-@sf?^F z0n7Q4GL>@RzNuote0be+I=XxH41T_RbA8J@n3#qsni~3r6Q7aMq2CLb=rgFXTB>p( zLa8&N)Nm4Maw@FP0pa;(F`33*Z#F%Y3Si_n&S1U$l4^4QB}X9oe6^7+6+~dl&eD?B zF->yvHc<3%!n8UrF3ve(ii}pTiw{3XwOV(h0>2nC{%zSsz~QBjT3J%ZC8;vqXDGxg zVoD-tP1ntGH!!~&QuAS3Ftivy#lh$7!|+XG1Lt9hE# z>rCg?xz?OppY#3DkvIla2eV@$e4l-z`4*;*diKj$gZ_{mT_N8)D3waxPF%bf^j)lp zI!9u$PzOE#ny&GQ_EG$Vu1er89{75tdAw~%>d_aQKBuotxIHj&3&;W4FG~G>@De-A z^_nTcbjF~;X|>0T4XSTx;9Lh=(C;GW+EmR_f1z3v7VB+Tm~)F6 z_KM?*Nb^Q56aJL?0>9Iyuid4C`uw33N><#521UwLA@v=9@o`xe8R1RayR(W1&opdg ziz;%nnj?q`)(Gp}v%-G)G5ocJ|0qRO`r5oC8+sD)l&=KGV}`n+i}G7vt+mTIJ`=&M ztNFOLStCAoFVx0jSxYerC_w@Xzful|3)OgtJrA>z`2q1SyS>)ei*_ByliTGM2P5Of zwUHbQLFzq)QAl{~9C^^$T%Fwx=krwzDrK`FkKa^SWly|YbBq*kg zmPDLXJ%9TNAs$%+P)34~s6?N}tjx4ZkY-x@ETyab2xky|w4 zAob3`YCCbA@3taO4;=YlVBh2uD>-A<_b&^DSK-X5&QQ7d7N-TSuD8>c7?OG|@TEr_ zsmx`G7Z3&K3ZG^fjo?!?-!F0LjZ{xZI6)Tddf=|a{IraPGJ`#YYfk~2 zKYl^qe&fLsJ;)UawS319ofwM+%$KN|aV!Pwk_%tYP2X|BrTF#l;jwn#FKU(OHCIi? zG9DGWI8Vz&Ol875d%c%_3&8ySyi{o8%w!(5abvpD?#6_k?mtDDK$=kjgGOn-ukGYy zr&gTemP%pl!?06vYz0GwYX%PC5WKzlWh-H)qE(MAOY<(a%OWTmJ`2%K`_OlwqdLD2 z^BolPw(6_dUGVv)JlmjmV*rABlu+(MXbos2mdehT)KrmGu3L$iL3yS}Wn`cJ$tW3! z%;8tob^jLM7#y|y53#{_bKUcU(rabBxqpNlEjX7JA;y_?0=Q()SK|9+jbS-rtr{cw z&%^F@EX{7+0VC=IKVs9wDOys~9}T&U0^t(!d|`iZrY6pOz~p^LtWUt)x7ik~9|PTm zMBhCfr}x3+!>E7M0qy8;DZolOXjxj zgb^JAZa0%O@fEo89~uxaaCyizf8drXrjMh65CL{|%@EC}Jh0YEK-Hi(QF8Fye};xw zWa;s1LBB#6v&m;T$vdBFq6rZSYB?YK3%2`xqSatQ>M)!we~v$0cHo1q)0<6Y^a=rZ z(upC(aGjc{3tfbhzwQL1ZRFdmzR_;Vr> zLbv>6^oIj_q{odqX7d|KT~MXTX)cvq1{cbY+=~$1M8*CUkPa_Xi!WAR-w`F#J5y92 zUjlz~5;r**{lUWME|=_eOImFa`Fq^5{H<7iWg@$V0&&h8Ty}7xRk|`p1T@Hje)hiE z33A*9D-%@SD`};JJPj#I_s0C5aLeHu`B;FIKkVGZUl;MK*Kdi;t&|)XCNX*>14K+f zzAE*h!di~6NWOnt34(KGM9Uqf$5jr}2I1Q^b#_bV2Xg zSX0URF_}cqu%mnfAa0>L*Egal1Iy9Wu+AtIFqgopKySs6bYXV(ac8gTBE5*Zsalj{ zN+uZtts)Blk$(gJf;tFmIxx4p5+`mIiV+kIj-R^yq7wBm0VB)TnK~&#J zja|jjCpJF5I+P2FNLlmOqEU4U;T_r9^$dIi`E1+K65j6z5Yvy6U%nMhW-MRLwoQ+Z zwr2S^Md+!2$$2w9$iu>X0M4H;iBksI46Rryy}I8K8*lr-arfvW$CO&R<@HJlp4%aO zgM?>|c{s;N4|Kt7D%VT2UAzoo81}D65C46!CP8(tN9ugg1wv!Y|$+`Uq z<|W7m>nrCKGN08VJ)cG!KCExEawPG1QrSgmPBF@{Gas6jv%Qtm|Fq_wLSYc1n zA@GDwK37D2eaM6e`X(5rehQ#W@&9H&ZI@+wStuI3i0LIdoHG8I)~Fe^s(}Ao8}L0$ zOMU5JT{>nhSp~69zmQfJ7IF-;8{{cqc8KgLnB|f<+q(0vmv67sku7K+vdSz&!CB}t zP~!lGn8hp;gq7E9GSS4L{kHmxJt(^F1u?I!?s~eu`Q~5?x<&5=eB2t)Ftt*|BT{9{ z`0!q0KqEzi+qUr8b>s9_oLH+dWG7$$QAFLb*FUg?Je?I!@jNe=>p0BvQUE(px+7=E zI@dq>g>HishI^F}8megS$=oGsc=ffov@4s+rpU#2p)!}`{)@Ed3BhcL>1`FTiZ~n-4)_ocn*f{ z(@~xvgM1;RNAlT(5S&ueAe9nkOJXN+2>zt*oSEa9stX-isATA622P|PJAv<4HBgpf0CVUenckU z-`b-d+?gYna;FYTOMjphgeT*h_UII66r21lqm!I-$k_z)5~{K^wdMgs$W9LA`742E zvcRkE(9!EmV&wjNY*&5jp?LwLzC0?m7V|Ju+(%{0!>ZLaTVUF|K}3i@G=xKyg+^;n(^jIr-0U_h0p-J-5xQAR8cdjZ*tquaZn0o^lOltgj2cKQ?&Nyci;nUQCw(oNazle}knJKrXN)vY}~ z(%Y%tsBlpD^cP7!oTSt9rhC3gcd_s14B%gaz;AmClqr~y+hYIUQyO3Z#jPDaFEtvL zA`XCtZ)4oXsAp=X!6f7HaGwTqc62J^ux8h*#3zHG1eR(Qpa+O?J^7=LP?|T_5rn^Z zGx3X#r>yw(ry^S&WPd>NJoMabt?5h&3f7Q53W{d(F&mEPxZC%Lg@d#A656xT17So6 zphzav$Y*)9!VDARFO_3@to?baG`oJ^dOe~7L1eqfO!Js3$jGX{VS2gQ`CA3sETpwx zWmRf73v}M&oVc~Y0OUE9JrKNXuhm*V)$GmgY6_LWj>a|r^Vx`;sv_#%(^P#>q|YSs zkCC&-xA0T8{J=H43PZYh#e`T zWGUjWFuz{UkAmVKp7FJ(DT5`Nm@e4x*ji9i9?R%&jE=3#K^?_7m+ID|Spa%ODIc>@ zOFph;R-;q$I&VLxttVoFd!o0-?FEaRc%9?2Ks$&=XTjZs{tpvD4hv)=Xj3TuK~fS&|36Nq^SQc?ab(^c`QKTY-Q+!KU#{mayoiQ6zA;fE@Wtvx zhs*K0t%~|YYKlkK_(cuA7>z^YGB?2S?f$k?T-OZGQgC9yi2kTs`MqKhkQ<5-G6Yhh zS?Y)J`6K~9h_7yw8tl}FK7E#s&qF_Y{iXMKiBvC^)TW#yG666wUFJxJ{jw{35)ajh zyQxhu|3+(_XVt#@!_aeg@$HY~u~TstWUWN>i80YD(Uf}c0@NB9XGyo))O&(^!uRXU zv#iyryj;u4f?;Kz!)J4H8!XS`V%tejxbEXK(kP3Q$5t}SvTkLhsx<$>YvC(3(#!sJ zC5OKpl6EGeYtny_yTrB7+Qb@S9oC2 z1|$nYIHKUklbQ4y%uy1qfXu=-U;?+w4oj-FI~19_jK!$!-uDA$>Rz4jzTWiEv*p|0 z$^XYtB++lz6!3bm9>5hVKug~FiXmb6e6xS8(`czOAP^9hnU)rwARG)!!eJ3hDz;dm z5hN;GtX8gyFo-hlcDh(O(>7W5cmDMnFr5Fx^nsP{naViJMyK@(>x4@?64F?GX%!U} zl@S)tLl(bRP7E2Fv&%%J5!UhYVAIFc$jA&$oA7wPpzE31N3r9l2I;~c;QAZHzizVD*7Y9GRXGVg!cJ4{eK{@Q+TAB&=++TKPjAg3d1b~aN| zYmU#hGtU5R0>Uej++@O(ePy_i8p(4K-Z9O&eII1(#Te8j^~a9@1z{`#2B@1?rb zZwDktvB_)Pum6Zg;tuK$FH->T_)UMS%ZEZHi5z(Q0Bn*TEmmf+%J|#oAx_J@0~k%FWitY@@MuZkO=rFzqgMO!qlk|x9nyPa}TXT z?GHx&ac5Kt>6H5xyX|iQ-v&0;41uYXKScnLQ@P=2AnzAN{Ye1mkTN>duAw3a0d!D! z;KT@Jpw=idG?NDknWrFywneR6UTn0dJB+V2*+jh6xQ7a?H{0o1r#no=B9P1>PiPM_ z43iu^?+!-~ueVnX?3aA9Ydyq-{fDppeTvKi;ND*2GmOk7nfNiC%2sSN97V#x<8iZ> z#GoY%hEz)^Kgg|h5e7deMQjMJq@y8m33)&h>NbM~ovx}J z@T%tbe!5AwL8C1rQ}e{Od>*2XZMNKnJW&d;Ao&mH@dp>CLbf1tm5*8h!-YY=nK@ho zvy4ssAKa`55fGcj&};->@jnSTe-eNQ%Ej++#_``SMv4psGHA0{qyH9getriikMG_M z)c#GN{$qp*0WpO%Lo6!bzh+G=2cy6cJ%=`I3#5(z!==dqpk@1E_L$s||K+m*Tok|) zPfi}c{lDWr2Kp}z+^4aJ{oh;kC!q(zVb#tx{l6!&2vd+5hj6-ogu?BhEteI;20Y6^ zX%rM-G2{MF6c}5Krm`)D>id0`B&|)SF#N|+GTn3S~Aslq%c-NC_elRDfc+(dapoF||6c z(cMd zPZNzVKrVqao+}d9CUfOFijJ;*RsSM1rV>L}9apX;y-#~^4ZaCoApdm!@z|}{2}%(J4o1yO-l1! z`7PFE)4n9fWfgZJ5hOedj^}yQoi)>&G~1wfcV!SKGA6HG#+GXtbK_QK?helbiv@BC zaq$p@g(08B($dn=QSU+Q$HQ2#pH=`G8X6!u9DPbsb4wnx{5O_rreqS zo7x(UeG){D`$;lm)Nrm7EEj8Z#d4Z^p=y;>uTpbX^oWBxvvGQR)dWh7ZOWA>Za(r? zh?g5=?_T3k=TQd25na2wtrc}-gNK+Eg7%Y4dbHh)%CM~w=!~T2yi&z$6!L`0WGJf} z4PV7ODUXJ>cU&7J8`slliP$SznG?ZDC4m6|ZctBy3LOISsR}6)X(HK!209Vy$0>$6 zkw_*{QLkTWQ#htnTc@om#a$gz>$#}W&cD`_G~|tEy4`IhDiW36=89Abc8 zFhd4hogDZJoB;}+E;4viWtiF7m4fNsx-_DXo1k)2@LMF@#MyMp^?8< zHvUmT?1k2Yjz51;8eiAa0f-wfmwKlwv;|}5%%ZCP{6%joB^vJg%AU$QUP5js;IWVJ zmAT9vWgUU28f)tZ3jm0I%1xG7k%xyrpBD-O^jS;(~A(NlTkyqVo=1pV)r0Y3I;vn z(R)pXoEm|sdRMbR%w7c9yhaQ5(-BzeU2A^psa?WwHexy**Sz3^4u;!CLekPWnhzMO z4ok#K_g7%lB{pxdpQ6eF^$2J-pcM=t$4(@P*Z+FUx~PVpFj|k{<@N4fF^&eLhZ9!o zx$S-j1OA`gq=DJ>Vj?uzc@amdQQqA%do7G82jfLh)f)B18)d)N+90vXqRpsnEh70} z_c*5X6i*LUTbuWp!(kS;5?Mb7=Nhbv`CfqSAW*+Yw%oV0-q;RNf*tS_L7?uF-(P>x zIv{i~lfyH7{MLI^d|?j@Ve68tH`OG?=j2Xv+w}Zz8?4 z+GYX5z7k7Uj1l)fGI>-;TXgCyZ~?ftAH#sPU2Jr7?dVOryYdYN%e+}7`^l}1-|8N| zOFoXDB1x@z*-w+A?2Qq~hEo8hmlmnqxjzDfPQ|>e0MUpgg&4feY=ipnNCVe;J%0CmbHX@bmjo*j7rq~C@ zT$iQ*&M|2&2`&v-sc(fHuSE`T=|l@RXDM-oGJB251Z-_>b~SRB?(NOo_7xnTFL0@> zznM`aXxzUC`7XC;+(Ee=<=mavat(Dqp%%s){dRFS`D1p|OD%y_!$oxI0Eo0kvU#hI z-rok5;8&MIlu3ey1qRKs?|YR7mdW3Rx&K`llEk7gpa})Iu(cV_5^SUaCtu~&rx$iY zNB3{GGYUD#ZS*tunt@P3x-v`gnA(+aDS=f{AzTn)ag)5rD0&KS&(;F_2P;EB(F4{n+U1vBl z)%b;EepF$L1=s;P=6;v|F|c8AlpQdQ^MUuAgT#5WPNMd7fBe1cK%+1t@fAPhP^`tP zr@EXbIZ5T=O5u`>4(OL2udnTDFy;)xj-m(y#oS zyfrug>qL*~zJs&UwQ$5Y#j7mp?f@r@Op1syqL7REg9z_RdZz0o$b3r?yqoF@w**S1 zpyU@W8aI($l$`q}kCS+6j!~ySjrx>R|2Inw_kCK^G$XKp#j9E42ieeaKc9;6%o_!H zi6&@UV2uz$&~usQ0`U(lNd)G_3NUqiFw3&Qwc9{uXuNlD-~2WYsAt4#&5I2$fXG*M zC%<8IPZ`QTxhtgw#M7t;!|_^5AA#qH_tE38K82eE67Mi76=keDN6Ze_#4P*5oF#eh z`SzayXct4X2ggWnU+p;2yT@tAkFGyh+xI<1T0QH!8yX!E5ADQuMnWH1nYyWq<#1it z?Fzj^zKX$X%4I6ajbIjGW9Y{|Z|?+xtj407`30l|hR8)>d9zTr;20Ftco-#B8NAC) zuF@`ZZR%evSDC(|B-@S`(Rs#z+WRv^1gVJfWX65k_2C4;qj9QXR%U1UJ9^a*k zQ~kfeDf#zA`w<;1)#D31oh`_W+|LQ0%Z&OEZc~{9hHg8jTOBTa`qB<}f(U+R8El48 zB%sRx)T=sPnN0Y8DM;1G4RhStUjo?cJQ?;2D|!>-5{A8Wd7~h`Wk@eL^Zcv=b{Hqz z@~Ni|PMf#LHV9#InAC6AKQzfcQ(%;8l|W4TQ||9`Z{C&j1zIi%Z!}Z90QcBU*9Wvm z;@|d<&1@cLF5dETtv&8vh7KCBceqKOD*LOcGa5ddmW_gc3PQ;wnKJZYUacF+_!8u3 z+D6iB1FdHH53BJ3t=3y_B!&7D8uX*G0q$0dY_EM(eE+Hko=Tqi2Vy>#pqbN@cF;H8 z!ZXcW9NRV0wdUtjWhA){#&+#gw0_Yh>HCsuOT>eufi)uVxkc88xsmo(NA0D@4bvyo ze%Z6nF6V;RR`xxQeN&{s{Uh}RLW8d*eF5+IxWtPmNQ5NMBFx&4^L|_w5+Xk2z~6~vg*QF=cQOFut9l;%^PE9n-6)R&^#Rin zHTJzwbe>nHpjg;l<7x@(twB`_QGq}(DuuiSf)UzxU|AbT4g@1fdwOv|EGh7i+@V6a zoCM2G-123y3^8gt3@zCnGQh%ai00yy&$3~6;%dr zltqnLK6=%Ph+0r9#SV4(noh`Vpv)L_QJO&jkq6FWm-j>MZ~CMJBOLpj!1f}&B917@ zv+s4{1#k^zLbv@^B3qkv29=5zLx?xZpF*e5^nwlhGP+%V=x{waI4qhClT_-AJb8kfJQz0guSG0aADu*KXxJ$68}~>Z>NGB^j_K9g^)Ji zbGNwga^FUGuxsB#?$j~1iC&yuw3>xE8lPgWw5W2}D97*240XyV#q|YFQzX-VJ|ri7 z4=8e?@?b*ulW;mn2oTv1;8mWkwf4QEK7N)hkf?og3zds9xA}Uscf|7M(pybfv4Wxo zkI^T<%^Em}IL$}d{=upl@r!M6I19ZcRY=tNho-;v3cZM~!ev+*hgy733UjC{0r07N1tBd06{H4Y{AV^J%E}e)1DG^r!{uzO&fb{+M?>+Kb-2 zR6iq-61-9v7fhwj-%=C_8Hb_X5u8@aCKcPeu~cfxn4PT!r!+%}<}yeR^7zP?FtICB z8uZhl9*%A|74Hb)y@+HtvRjg)921CKuADYzRux)gXZf2IO9H+aBBA0(#0nKaU)h-~ zOZJC;pT3A|8!xe+VcxgpXJ!3Efzg2#$Xy#Ppf-K&zyM7V%r$MLR-R+>wAhu;9|>(x zMW>cXyTB^AV50$ZR%+ojE7C@>W4Q+J@VN*z=AdJ|x8t>dhXzfLQq%ID7ZGIlFui{> z&|k*2_$L3%^5pqO50m*&3x$8X7u#Wz=>?4!V@EYQVd3~t;Z(OeR0fXi!{tRZAj$&| zJL6PQ_du$S5#3^IFBj#ek|2q)ZS7GYSx@j!1OB6qRYhQ&`<@&_ZflCGP&y|H;c^y&JFLMrX`X1ciZUcg!PixhC5s5f&DwC))_CtE$zb7Ob`O@xI{>e@W zHBtJz)TC^&VHJt1Q$cx76m(wIu?_?mOklS7Svk7MW}|d`T~5W}^FB4*FGJus(FKRI zqEl6k->H!c4frBEN0S9DluPhX#OEB{^9N*TLSBI0u7jv7>#UR^6S3IPbO3a@N~9KE z2bc5v?NAH^%|qFKKV<2WkR~KzM4DU`uf2g>YeR)lY1h8${x1S6PFL&1{?PqPpAa^| z{CvWX{*8e4kFxT_M{wyo=;iXHXaZhWV0#?4PP^;*YLm?=tL$xwQ^+x}Co#RqwwRFL zbG}jw3r`{nA4kCZ3E0d+t6VYz>{DCU@LAC!+yJ(`jl`18&CZ@IRc}>lac)$3P4Z-J z{fh@eh5*!1s_;C^(&oe;MJerh_0mtxrm2fyGPd4~=9reQUB- zf(>z_(0)XUIxSyB=Blk$75Vn-`x}-0b>Yp;X$S#V2EpA4V|90Vp419Syg+j8B@RZv z79L+`uvpEDNcsNlAuK77@`E+93mH1wor!1bXv z?fms=vGa5Yh1ev7TCQLNy*dSFOX{5KIEyAYP?rKx6TDfjjq*9u1Uja^r**wPp4d6|Se-9QO2GW!jLF%RrO zyRZ5)*H1w=_Lns@*$OErPF_Q9;>q?Gx?U38s7U$RE0Wt`1c8lbqG*K*V9r(;3?kq*umKX<3Q45IDcISZ68d)5v-WoAR(&Yp8W!7$%Fx$&gB$hC z6cfM(0I6`y_<;Ask1!bZfo8oFQu#Zy3F}bO2&}OYH3F8}Yuo)uw|+n2om$!QeHq`_ zwf2x%y@E@%wOF>dllE*DvX%Ng^JET=v9wW+`d? zJnt9nmm%Vn3yy45N;%5u?TmOy5-cniaR}@!OJ{MR?f(jLeO^$$xknFekMPCWLk|m& z&hyBZm7ZPsaUk8JnMVJqbA0$vnG#&|I0p|bejPUt7+p^25b%lI&4c9R!eBu=iab93 zq}i4Z&5u!AZ%r}aJ2oaAUB-Jn8>mzucGB6&#>cTHjJmJ0h{bi53wOAe9Oyn3x=xW# z>9hj_y!nPo;HRcN975pePe;jt5?hqZ1~T>GOlKxRlZj>vU9>GSc4|Kl!B~A3#!}b| z9*yVb8u#z@CcbbSN9?L}kDA=W&CKsLoqnGm^%vLg8LX}4k8)70Qb5*>Hy{WK2`JoT zvf>d3AVZ(69gc5u{TM?7>X{INSa0sKh&G@RG~p82vgI1`>qTgJTn`Jq$C;!0U}t1ff6+AeLXnegs;tQ1MxDVgCbk<43h+)m?k zc9?I*vYQ%gktDl5lQ&zR<9gf5@dw3Ktq=6teqNZ`hf>`PQ}L|4RI1d*iMs@C8RlCw zyL&Xf!;mzpt!1`%SMqFgeSfz3>*K}rd}!1Th6ML%-!>Y=WH(wl6pRxIVT4xh-06RS zHI?tT*%h(0QW0p;EvL|iHgbm_J=@6EScwrhZ7^#OyG7x1JBL>-&MDGMNFbQQP2Xi% zGAic%z_O(_M{{6`ya8%N{%rqS)^djIvqAm&6)0=H^V8VtJPgsXx+TRDvAK)rGHK_l zVq)=rESi{gy|&Sn-(;>$3%V0OA7<}OdG)U>zp%5uQG_P*D(kfTWW_X}Czr^4k%C^t zoEoaL(AnvxctuLEs>0}~=nW5&?WIffX6x>km~^4iEBNC`vdI@XzCD@Njt4M!K?j{NrTq=`|=b*##&cVqHz}-b%(FZPL$46VaUU0VD`TJ{v@uW zLH1$)w1(Q`rL}C2cq2aB-b`)d?j5kP+d|Kl((;!2?hx1^E&>*c87YG=(_4#4fXhXi z*PD!oYH$ja{jO#Xbi<1COVG+!8oN2=+0*%VApfNqElYx|KE2wF_JWC{{aj_YFG-*` zF^b4let-IYGqGC+XfY0btp2lE!~!rsjJRff(2@8s988?rI-snYa$yczVQAqTHXG)6 zcCFJtc-w=?FP4ag7C4-DvD>KDkzZ|yH)SB*i$5zX0&+kL*;~HXi*%pS24d$WPMb@1 zXFWY$AMr+VpD=s=XzZU(P-%0&WNmp|*cu&_O$hG^b?`OYWY!&jP!I|FdIQx}=HLro zboNlf=8XFNfGn#6s(>0aNhv9d%?^*{a+6?Spzr)GX#^zyC=$vQ7kSf^e>m^`Kq|A1 z=5aN0Ivo_Kv(Gxg#l$8{^Ze=f6w|>fl=Oa3a*(98{}HM@Ln*BeBYKqd!!&Ann=a}3 z!YfP(aOq%wM&x1ltPT@hxE&LlUnp*~rE{MJCjBumt&GVP`DqOsbmdVznBR+1qsHKN ziPmt$?R4OLw*32DL5L=vO5S#*uJAaHKd0`)IBMoHO;E>x5Ot&qSVo&Iu}wP+BLskd zYPGs1I<~?)t=pud2#QA$V3Z`gQ-^M_XDE}Y(s6{N#~Th7xJz*h&b=Y`W+O+w4Zz%Y zdKR9_5`^Cokt5&^^}>jQ+*V~qQY!?705zGwOSXpVWIg+qmY{ql_tv0JkU>a5Y!?NK zUz7}mOEdn++Ymp1AK&!6Fb)M?$_FcalNMn>Ec>q2(0grT_PsVnpG>xgfZ!Ky)(KMz zLvf5h0=V@T!{##v>v0hzY{U)1#I@pht%r<%DY-CmAh&CRa%$h#)kR@L_bvdpI^H$5 z916$I?d$JCT$#d9s{#Hu{q~*1Mj;Cq>HQ1FM)ofl6^jP#wy>C0U;qjO=mZ+7r-7oL zxpdWWltc#6#`U|ds9q(i=*hWEOkxc-%+pumS<6-;9Yf52rTjn9 zLAjznwy;y*gRHz1imetE5vR8^;GG7a^zlHO=j2R$XXiQ377Pa9^lbeupW zafSd9))t;|8w_Bz#8{XHY4$s_Fx7oIAf3_t!2T1m7xnt1)8t62i~ZJ)a%`=dH)N?j zdL6w?f<(e*ofPyF=8J`G$^Or0tPIUAllX!O4%|KE*3Z3EHfo??9n?1@{7)NP%jkdV z;(W$VJaLReSJ^N$yC&XX)RCLs638MU5;8J9s9>woCl?dNqmWUI20^)~BXqDR*CeRH zY5(cGD^sqtJ-ZP^{mBeEkz_OwasVWAc8}gNE~sE9dy(_r!GPlf8>GmVK@>?OzS-bo&=_H^-lQPuKJ~ zwSkZ2^7~ngh?yO#IyjHqE;sZEEodG9glg8+HxJdGNRd>|Ef)Se_ntuwe{cYK&&mx* z01NN`MM@z)R4z|ZfpAzz?cExsoBnGZH!v3X4 zEn6r3HTeH|M`xHG&b8$1v88OYFb`J?4UfEPeWm0-NC7g z;b@b8_Bj})^nCcRKFd7&mSynlADP7FIqLl{zWxHJj;8AZg@Hh@;0f*y!QI^|szRMJ-P6;(Wv#XMAT(CC5cz97AbNl5 zm>3yIyQCz#NSe@;B-Wv_Oo*8mP_bV z65o+URwALLl9`x%IZIGb}yMZtXKmcG8aV-ML-`!!8%ZY;kY>CiC?!k6t7PsZxO`u?%#&Lsqy(9 zbp&e-ykPq+hUSgis1zCt8GAng!F^-}IEOfySw~)0R~vLlZ-Fd>H;IYQ>);o zY6UTTdEjY_1~bk6cXp1%m-Z*uQ@-)os~NXDa455>lo0$ehtYGBdy-m!fLA!I*Om2t zy$(DSpV+`fs}9A@t8o_V5U{(v|0)U=^#mbC*G!|nZdGq%Fzc|$LsG23EPWmO@A!K* zl`A_)7zYz^%(wLHPE?Yqj4tZKF)AlUUJX`rjOw@qJ{F&rHfR`*8Eb#swJ)ALh`Cm^ zL4+xNjIDQ~23(BCHT4PIH*gC;pgG4FDvBAM52*5vV?zA74@T>nss8IG}=z@^oJx2wWfK zkCQKq- ze98}5X6PqBJUGS8CKDV>47ZU*(*(5>1pIND=LmiN|M4YBu+;@L)kuK~iM!(hs%pBZ zr=<`eiR2UyXd!Xj!8$L!Q6LSq-&$+58X>#WeBb!$&|kqVAY$g!92ZWkpJN7xj8i zpD1gRF}1+XsLK*q3_6tdokW#|$PwPCA{4lS-6kKSNpj9K=GiN_(_)f66*uw zlXer3u~PUH#l)^SA9)L3(w3BJ-fDiy(M2WEth#f)K6X!ftWK47R&3NuI(hSM`_#9_ zYFBJC-n3P_-bZsbfa_`2?b={ai#9sWjpsB;yeb#_Q7a^QMwX3N^6prM`@~BjAb;$1 zzPhA7?+kn|=(`r3oAY=}4X$uqfT6oC4s{hRv;LT7jW95DIe>C9@$T9vdT(aCk{uiU zIC>C-b@lxbiedL_F95{Elekiy9I>^Z6f$Y{eo_oik5QM^hs*UU;I~z8DK9?Y_1<*$ z{QT$jtiZ=73}%%9nG;RZ)V``BO6DQ=Z7epsg##GMYGSA`nN0e7lhq2k#m0HI*m%-J zxjsmgx_v9<%BnZfJ+SKqhk&wXQsDYjvN~SA+=n49u;7@TcOZS95@C-_GB!4aqiJKr z>ej`S;euO#^zvNxBP{v9fr%rjfmI%fFG%xyf@ORVq4#biQSYh30i`Dq_tV;2|GA@el568TN&gi*7eoq9%epTlSK?-YA_>&sWqc+*U%qD3SF*V7PUfW1ofr8HJ z%bM4EAMBtp@p|6oyEN=DLa6VLhY%HD*p!4kL0R0^;Z$N#aON$J*u%3}Eb;lj)(1-z z+bww^U?-87(R?QG0b5;}aid0)Rpoj7t#Sj;e6O-NRp5n1nSPRj?|DA3yFEGUBO#F8 zvbHoTUa2AE=?_U*Oo|~jSz-DslUj)S8%dk%bbLa`E;v+;+t<)s- z0(51A3?kremi93YO}|tP)7BGb;o}YTYmeF=2FbA3&a>=H**o@{=7E^v&N_5V><=a- zgJlrdqV@OLA{iG5kId69JWhkVz-ejfN2Bcab8c{2=Q5LAmjBLO3v_BiOW?@ZKfNUz zlDERK=wSjG-f(tISIzB1;My+6_^D}|gPoSnf(O9Ph7at3dKx_P6vXdMV{?oavQmg^ zqwC3FeJ(y9c89CCxxE;4R_IhTi;^(6p2xTRN?O4s6+psrpW#7+jCh6e}d5Uijwrb4-uia$YoHDr4ynY%^Ay8i^eu z#5Ojn=LJ8LDJJWnH!CuaQc$lDE@6y+IZgUQpI)R1ms4ll3Hz3;+Z$uhpX!EyhP->V z*^%w+fL|MlT6%o4M2IwC=E{RIj3kEf=H1p>yrF+S_kn@)wP5m^L*;||N_^f#!r~2ozLYA%Yy*qzC zx8?w*^-Zc>yVhfGs!}q62BHlhe`+mf|3a(*jE+b+c2a!2a+}w^)qK--&Qp5|7E8=J z_p>dz`ZBjB4xm@U(Q+41QlXe7;15(5Yz(K(HsU@B`u8*u{uSXXf(1D+n+E_%Ha*Ff zrdHaGd_j6JYCuFD5Uogvz_tBMpwPi!#^xm@(urf|9b_DVCDaN8q$C5)*8NiFZ_J^< z(mR4U^Z=Y_@ykajYOkxv&|5x#4cHJsZFtPFnhx0|Zz%M!qXeT=&07fqJbdxy2jbXY zqQB@=qBc9VbJ!gvGJTGb`81%06y6Sd|l zuN5AG{eG$ai{(0P-%!W|nx$m`-A!*8R!(}SKdek5T}LS>0D<3^PB-E{%ftC1!7C`y zZ+Zg{2Uh3TE-p^Swx~GR^SeL);NEt3z1M2o^@`wVoMzGc#_ya)r3l4y>`1Diu0k-h@yK`_eEWwy=78%h0g5z8XYKi6V& z7Aan&HoXMHwsqR>3#_6oKM3VSSz6UD5aoPlak8-gIl*y>*CzLUMr>#|&+fzK8c3bB zMLBlcCv>um4Erbu|HsYg!6h!)U#DA0AMT`@H72;*V;O!l3kw%dM)&?Q81wkUCNgQw zSJ)yppXae{y6vD*SSwt@rA>|>RIlCX?SGke7^Ez^XLebRGg#n_%Hdue!mtZyC;>AX zr2oW5k$xZ_*QmGhm$%HGl)4!bl>|MxouqVGz1D(ecxB%X*BNn zGFIQHxQ%R0%5~rL>g}OU4gqP%!E|OFw?{^Bzvt|Hc%#Fi8O4X!J*?kUly!-3mj;W&DzU z0ltjF|K*bX675d4n<*s%)gbak7Sev)$CP5Tp)#qGV1HQnk=5njS`9*B!O&| z8cMgxeI9eVLHc2aB4{Se)p~20K%zF;H*eK(S8|_<7EiGB4|#az;-M!oAWO16#DHI` zIKjq~>giHKC(WQH;r^6)CP22>GGvQ=<8j#s?lqb7(Z=*|VG(@~9KxEX&buPcAiwYH z@iYW~P|iD{R=)o^fiwRThXG3F5rth<6t8o*V@Mj^qO0+G?5dyWrR8lnuyv2$g>u92 zvvh*+U5>^yKphY}#4Jz<%D6+b?KXK*n8AFw2sEsju8#k+BjkL(AZdh42*_oh>6ZX6 ztPM7M(#?Qc_Ij%(o6~&QdP^SO8vkYtcKZj7?BCNXBqQvJ=xn5nTlq%FmJ!GyMBg{Kr@fz599};N4xTW0~55?Zri&Z|Jps^iZjh%+$HtJ65 zxT5B**|=r7=IgENJM-G)cN*F)@l7?o7Z66PYb$D-46KnQAegcJ(#7iU87(EA-rpRLNz+_qW(S!EQ8V_nr^R0HKfPyC~px{ZYBc@)t zf?f$&x%Xp?n~A!j98UBff&abKJDI&!9c@WawT+Ra1ZlAJ2?6`t84R#;a1ShV4chV4 zQHu%v!G;IS&H0)hMX{9B5HJ!Q0!bP6SflkwH=v+DkHYpf8|~J9e#83(b#K*l!JzgQ zUJ0~jsq3y@=d9yY8hgYqbL+|_8aXewPoKTKu`aRTot${zVl_~SL1Olv#48o`4(8OK zqUmx*rexTt`6n{k{y$^Qj^8B3$NrJFLXB>=wiJ= zD1!Gqkf2CKx z|KngDep_68#R9e+fLm9#CJ20ZRH9f@#XAtE)S^);9?COZ%a#N;|GsLT_mQeSu!REa z?*N&89Ha}aum4}w^@TMvTD5G~tpzJ}YL(uLj_-7VZ7sY?KM+Wk;r7dRL+@Cnr-KNJ zr*UQtcTvT?(cqGoec#`=waaF_#`eUz!uXJ>g=%?$WWPc+tOBr||NglTrGclOC$VCO zdFs=mQm&mS;LICbcB@vMz;9PK2aAnM=+lq*k7j9%sFO}d{QCVtKM7z<3<1FqC{c|*L4tOe4Doi z=TI%zB@m!>O0-{6WBlDv#Q@@ebZ9^u((L?R{VbK;p2KNx%ZofSb|8kV-eP*(VE|WF z?F+-H^DjIJ04J+MKFW_5{1AxSddBMWg-X(=ue1p+*Ga2LT~K1S3cSBcjr1*_?mFK1 zEdkNvBxA1F7|38c8%^3QCE0akmNjL}Rd=MTy`k(E=J!7|FfLv9A_guO2kS-pon!v+ z0Zf;1dc-|aWgs!)B)G?7v@JK6Q#v?uvUixsUi_SHEv{R;4WI#^<4K#V+LQtiz90rr zDcEui>LD+nfkAIgxhJqGA*Mo^&vfp-SoU{ne;H=re+zF&noxU?*%b60|`XGYuYBs5ig{U=m; zw90*$EC@RSCQqhuj4IOjs?C4vxwxR4NtFJ|>L{Uy=#6zjKwFq4bth$YP>St$ z9SeTodPA4?Na*Qj-FHE1AkT3L&!R1pJ?+soB_mop? zDB5REe{Bc&;~N~&CGt(VL-7wDx)`_X;2ptpKt+bR2CRUSC=kdh*KLiq*IUQzYj}QK zCVbRRJoUJeF4q+HL>v!IpCz=r3#kso~0Mijb56=lcwjf8z(rs`OGt!+pUS zpzr8@1-bA2e50KMgDOAL*B8zaeR&uMz52VrPRVpaS-lpC$_%djxyH{>YoqGud>5Sh z=Ka+QjgB0pvV6u6CGAwzFK2J23`YjRJrq9T3jUE|E3fk+z6l!jIgJEfTyyN6Ci6q~ zmOsd|eM@zSX6)cdkSi+GeOP?dDohf5IdAnX?*45Y;AjJsma7X}6)JKNj}L+f1*5Kl z?)Ln;bdj>)l7%>I{GkAQU+j6kLab*qD%EE1W=nmnQMh4KVj8?~1%t<`x>~)+-_mHH zq1f-Q;RG=6<56|gm0j1$RHvDLU!Wq`_Iv&w>N*x#+KJyeM=TTUZ$QYE$^X>6j-M~h zkUtm`y;gQhT}>=N`1|Crpx6f=W~pU<)lsO8ip~wb+T*{R$y)`;nOats`H_Rrz{=sH zk|sijwdF<9U8RdB?e^Udi1XgA+UrB+fq8POZ9EVg4;NZor5}I4Y0tlJVi_+iQf&BH z+px})tzo%P$b&UGlz%Q_8P6UCmDYA=D9>W=$=QnHSUfRtlyu~onmMFq#VzVp+*h!Va4^|I_XRzL8^*CIn1AhUEQ z>~cU3!UG#sl1jst9t&vQp0!3LCA(FO14OFbUmk8G1O2bd(f~#N`9P8apl0^})Vt{m zyY`cpQi|!WX;s4-n|FiSBq;!r1kW0@CWECEK{V|>as{!CD>Kl_z=Kf^2YVF2JY*tQ zr~pu-S_b{l(`+&>{M!e#U#_`RG>WQ?MqgpyLcNpO>09pHTl~V@3;r>2g(TDxU_4$T zuq7V=%|*~nlma^z02#9VG<#l>JP1oGS*H1Lfn&6mW~Gu5J1s$^eqNA+zcDgds)+ZP zXF^}(&Ac2JD*~EusEQ{|08o}(53xv@xQCuM7xB(K@25OX)YxQ1!Xy14f8*+{afk?y>GV!1J|aI22ymWW5O$R zqdm@MMN*DRnAU3XXRQ|`j`*3F6KiR;$!#{%<2RZqL(%FE65+a7Q3LgZBLu**5M8#F zw#Ss<@sOwV<|c&A{>s7Pd1>q&%_5|Ebk9!fT??MiFr1tB*sTZ428n#%i`EIv$6^Xr z$D0EBQ9RqSZUn%F9NU*oO-vDZUrEV+c(@Y;GNT;Psx#Q|ZY-u)AgY-;ugaaRe6wk( zDqjW>eC(|vURdcMX^Inyk9{rASb4Vwf1@u5Vyo-otF$5*~0b8X}<9~qa@D&Cn$ zwzT2LxzE|ICHUV?p~^-c4A;-$$2+rws6?D%-#L28)1bSD+L!IXK#>S4`ihn})(Evl zI=ub?{E`2aJAOC>U+UfhKaA0?1_7}kF z%7Ykdv3rHoO*#(jq#IuiCN6+DUV;P+5NAT~O_63i$ZXtg4Ze}tmu%5676Pu3~if?KcdyE~o&a2-d2SI=_o5Au-E7M)z zwW;I;;@sj~cEbgr^g-Cp*R(G~{MR|S9RV;i_uk!9(=i~p{$yWBV24fHFu~FpQnZPF zsgpa89{Bpl0u=&yY;<_%$+|uy2D7N!P6=mt9Cv{F{hD16I;cG<9zg`4V-if&9M=83tnXgZEMOFFQ59X#4)IRiwsYe8^qO zS(&neNCcWxT-$BFFJ$=!!0rFt`wU%or-!%twY>pth6lJ7J^?fkyuYU;77d5O7H_wJ z!k#b{V*A>~NVVeEiu+sa`GEu-cCy1!adrX( z#muiNiUh_dlp}#=|A?BZ4J~1WekEJdRf&Q64#|80y z`VHqoEs<51*<_h+`3SVK-tlYiOi)6mqWT&iZX-%hULXS-Z~joJ7-l;uJqe$^ z>Adify3GC)f)(Cz3sUg)b%8;Tol?hF+h`{V+-)2i!^EyHhTd{8x_BPMOPH!pP+}_- zAN3?qzwF^KSECzv`hPsw;uGQ+MwuC^QD4~3B5U%wMzbQ4SSOcov^U>(hk@qI;~4DP z&?`Rf4~^@OL%pS|Ok{=3bv>oro7lJzny3(3X#200)dU$>LG?9zta)KXJJHSUYB$W^ zV?|kwH+K%EeZ>Z1L>F9i-kvdH_j}&^=N1ga+`lP=9uB+ZCAbP8CK&*{DEUw+VE=6; zGVMO(tR7*1n{*X-)$_zQLWH5Aia1y3dH4q!b)y1SaG4YDV?0Hi_4HxY!hlkuAir58)M8W|fs%qN6;0 zugj)@sC5^X#o$?7jIxM-F{j(M1G(ASg8goJgPKPB_==gu2tWajq(FvA0WmnYQmfbZ zn^~kGUmZ$Il&{j-u1Zvwv7Rq3*+=!M=g=CXFP%E?ugJ#gQYD^*ozH=x2mrml;IV^I zqHVNiZW0iMrfR!N0+t_64=%~CY4y|PcX7^{v8vuJ1v!}nI#?dB74oQqkWx98{VgUsQWuJdh>IY0W610S|-vPY{VoKujJiEae z*Hnwb8_W^A1$eLOe_RD4)X_D#98d%v3(UfQhOI%Zl&dBHXn;&;Mb3hFqCLIPlJzU| zY>0SKI>i6Q*;k(c#mZu#CWAmpD!`qk=D(|(hv-oMTpfm?%Qnd4p<0yxWk0g*(s;n- zsaZNqjN)Uc2#ZucHJ;FC=A2UMzW@5qoCXswe*e@emac@@FJ( znf+2&*kxrn@XS1G&2k5$vu-U!NRt8D9eo%kd*&!@?W9)yH~C9j$UKQneXJW%__Cen zAH9Fi7jIBwX>r#l)o#N{aWh-x=l2~ip?`2a6K|v|@L=a>4o@Qa%7n+J`13<9jaDaT zxX(S#1=@#?LqswS2FoZ0It*4`{l{GV&yMdv7*~?f!mwy%*xjf!{i=^KnmuUxaJ7B22bYLvrZd0( z*I;dq={yIJW}C0DEod|o$8aqN?Tb5MAgE15SKrBs z2N~J(CzfYCWr}YWT6?nHUDA9asdfb+L5z_02f8Zr)H%-P7kKbzNeC(;VO( zk^%*E&JId%-w%U1JCwIk>E=OvJPmBY_!54QCffbP=JP=(9`5}$WTu6wNrzfv{ZdjC zFY3+m)VUD&h*3S0xya^1%NU=`%*^bnQuIOxrpigl-5req$qb{<7Y=x9rs<`x< zn9)I_%=@h+yTATt?W9;fuc>`EA|2!JG@TrR(*6~_Vfy#Fh$1aP=*3OuP?RI5;`zdK}ih<{<5*ANyKQjKBSE^ijg%7qmi% zN+6rM_h*Rg9Q`piDQZLmlbu|u-ba@lpjT|<1#CFWip56~l04Vb4cot_P6^%8XB}UW%$F4WS5|Dy(7OK^px59p9;WC4JRMY{jeghs` z*GHCbjaL&}!znsW96ji)52;+x{k%K7yb(;c*tTgyTB>EJGtFcj@si-0le} z$=gQPYCHimze7h8A}CW8f6HC6z{7VGy*}}%=8RFjTR(5<8T3>?3@wxC2A2fL-u3V0 zLW|bnFN{o>?ml(nvHh2m@ZmpM^lXTps}dQ*E)G$iQk&MSmbp203mVHMyLTD4O(oNE zOpy0;jqIXbUe=%I9mT1RX!3Zb+V?*GNZZA?^qNHah;dG?sa)JAu_xq$D%p=RVk zw#utG1g8mph^g!EBSZcXQ*&qS>4?lBwKpqT=0V`af1m9&x%{GK;IKC+LO&zu6!OBU z=_LXo{ceo?LzE!HWuR1qRZ%#$a4--p#U+FPnuGUIspdRX!fQFhWI0V?9gP2^W;8Zd zmX1Lq%Xb|!q{Fwb*VJG_f1V7oNFrGzB!P|8P6*|JN~^eu8IXAd5&5xRb5f)cJ@YwE zR$eg~iyGHMgc8U}vYJ{}i1`ohLc|ALhjKfMCHeK#8#Q>{yi1%*7(E4HkxWw}M0lRq zJwXt2!lSIGt9ZkLy7Z0u`b!_pnNGNWP7rxB^GA+X4qRJO{|l%bpP;_cb4UT;Hc(I3 zOr$Nj)5+@G?0AC#E}6zTzhOgQ6_;lElF#T8fx47yw#ffM__7ytgJgbki<~3+sVuy< ztdjTTD~M>o6Vu4ZS5T?{30d-k##!9e9V|eNbqHu=@O%Vqh`bw+)v5bVPS6#Hz9dqSaP zgu-Yj$!|94|HUCb?a--cE=ckJ#sdBg!uLsb4DHQ~f4tNI$GXU&U}VB97`)Hyp?bY1 zalqP>ppw2u|34A=8p0S1m8^$Tqr#*?IrX#rB)#a}e1g{hH%R6aRS$y&`^x?hLnoqa zeAMp`=kA;SVz7?)HsB+sNHpXu;69%w;v+<;yE=1nc6KJ0BVsvS1@YsximTC{vl@%j zX>UAF(oy1H1z5=bbMY4o96*(w6>8MeumH6H3?5fUKu>iwWj$91pf44XXtVksT1t!w#7>csw5HO{@%jHPWpf*Czmu%@2JD6qo_XXO<3E4CWq~RyqSnGK%`-Y|1D9m{@0d`FkUn(I7j&R>Ksu2W<)ag^7MUF$z*F9Vky6K zxbDPSC>WVk;y3>N&d?-R;6-&7==u6BHWJ+&pcKjg=s7>yo)$Kh#U&U3hZO*QibN!0 z5{5IK8JUA`N670G1=+0b-scRo9FiW3)4&zh12`|MkL>Ii&4qIoCgIfzC3~Bax6auNA+Il#X`50}mCK6T zkqI|4TBN^xV6-|Cg&>BtqX zz5@@aS)jN`@F4orNJ}%Z-Rm$b-@Gw=EPBQhRkd4<^7zZ$ez|n^x4xc~J*0{;6wbG> z&gM4DEH+DgXlZk4e##Y}JK)XjvHzUTsz#N4aQqpZ^Y(=)!Q{f}DR%q~Vu{VTnQpew z_T>@Sdh_mj`3)mYDS-{Zu0#X{gG9hxvqT3Swjd0LiX~UN@ojM@rrvMwbTy__4!0T! zp}FN&F+zaX@i0wJNmF;Y?fol`?~XhLv}n7)W)uAcXgHU6AhF~BS}G3Jo}RXP-m34c zjZS6x5V>KT8Shu)s58BVX2zAC&-5W8#N=urK!WXAzWol6FF=Re3HaroQSKbU9Q5~P z_dl0st2SPm$?;)Sd~0ymkOH{D3S!wB6S;+ec!R`5PiWoFyXFCOugbL9+-YXHjSAD2 z1HR>wa*B5m4uG}rK?mBkq|nh3@Jb<{hmH#bEz zlVw12B)ng(U08Q-oD1P&$w_p)uzsaiJOx4a;8#~};oy&CK37D*=C*=<^GYO`xc+|Z zejyUCZn-&34uis03kd>>a+wG5}TJ4hbAq?h*OOgslBB z68mJ2AFH3;U;Iq}Tc0~HQ!5jR#zk6!<5_SkQFwpaR+9nnaNmSi$yE_Q{%jRC^i*YD zKfEuO;}`c}eO>35-zS2Al}rZEHtElTYic#-5)N(BD(JvacC*P(NOwuiOX_L)RPCapV^>V36GIE1cL( zqLW*qz~N3hp%P;G*w63k)lBTVi%IPHHo@VWr{mw36W1O~#HYryz97EOKq>^wg&Q{KPVh*~2gBB>y zdj{PV!a)qLW8EcPU&I~?Dc*lbsdYZI_8=?_U9_z5^SP&Z$i)n(sHN?foVvX@UAhm@ zvhgxK&T*GQ&)1==g)VI*^!RdUJ#rC7DVg(Yb=+jyXk_=FkC0LVW~FeRw(j}ze=RWc zvUiKKkh6KZbS0OrT-Y5nztS@P?4IboUf=QQ`tz6Z&LaP=uLS-3SN!0|wUph%gmB#9 z9W7jhP4^tC5lScR=eHe*=}MqvQe})=(^`i=ubpl&a>GjUQJSG^5|i6d!46sQCD8pD zxMez9aPlFtaPIQw{;0rT#8G7P6TUPMnPROTuyN(CxyP6pM>KPCKF4rR Y`PYpK& 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�jI-#vsp&AIKz`oO9;xtkL(h@mN@jHm68Fn}3p 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 XP_WqKrsd(z0X`>8td8d&Ltp 에러 처리 방법 +처리 방법을 따지기 전에 막는 방법 먼저 살펴보자. +##### 에러 전파 최대한 막기 +- try catch문과 throw 구문을 예로 들면, 이들은 에러가 발생한 곳에서 에러 처리에 대한 권한을 가장 먼저 갖고, 처리할 수 없는 경우 다른 곳으로 처리를 위임하게 된다. => `에러 전파` +- 에러가 전파되는 3가지의 레이어를 정의하자면 다음과 같을 것이다. + 1. 에러가 최초로 발생한 함수 (e.g. fetch) + 2. 1번 함수의 반환값을 표현하는 컴포넌트 + 3. 2번 컴포넌트를 감싸는 에러 바운더리 + +#### 🔍 React ErrorBoundary (에러 처리 방법) +- ErrorBoundary는 데이터를 가져올 때 에러가 발생하면 그 에러에 대한 핸들링 처리를 위임 받을 수 있는 컴포넌트이다. +- try-catch문처럼 동작한다. + +#### 🔍 React Suspense (로딩 처리 방법) +- Suspense는 데이터를 가져올 때 데이터의 준비가 끝나지 않았을 때에는 컴포넌트를 렌더링하지 않고 지정한 컴포넌트를 보여줄 수 있는 컴포넌트를 의미한다. +- children으로 들어간 컴포넌트가 비동기 처리할 때의 처리를 외부인 Suspense로 위임 받을 수 있다. + + +### ➰ 패칭 라이브러리란 무엇이고 어떤 것들이 있을까? + +![Alt text](image.png) + +- React와 함께 사용 가능한 데이터 패칭 라이브러리는 axios, swr, tanstack query(전 react-query), Redux Toolkit Query, Apollo Client가 있다. + + +### ➰ 패칭 라이브러리를 쓰는 이유는 무엇일까? +> Server State 분리의 필요성 + +*Server State: 서버로부터 받아오는 state(e.g. 비동기 로직을 통해 세팅하는 state) +- redux에 server state를 같이 관리하게 되면서 store가 점점 비대해지고, 관심사의 분리가 어렵게 되는 문제들이 발생할 수 있다. +- 또한 DB에 있는 자료들을 프론트에서 렌더링하기 위해 임시적으로 redux store에 자료들을 보관하는 용도인데, 시간이 지날수록 실제 DB의 자료와 redux store에 보관된 자료들의 일관성이 깨질 수 있다. +-> 패칭 라이브러리가 데이터의 일관성 유지를 대신 수행해준다. + +- 간편한 비동기 데이터 요청 +- 상태관리 및 업데이트 용이 +- 캐싱과 최적화 +- 로딩, 오류 처리 +- 서버사이드렌더링(SSR)과의 호환 + + +출처 +https://velog.io/@0715yk/FE-Without-Redux-MiddleWares +https://velog.io/@diso592/%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%8C%A8%EC%B9%AD-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EB%B0%B0%EA%B2%BD%EA%B3%BC-%EA%B0%9C%EB%85%90 + From 4c5e50a99e3f17f36d768065fc885198d3654a3a Mon Sep 17 00:00:00 2001 From: namdaeun Date: Sat, 18 Nov 2023 00:28:54 +0900 Subject: [PATCH 17/23] =?UTF-8?q?Remove:=20Header=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/components/Header/Header.jsx | 0 Week4/LoginAndSignup/src/components/Header/style.js | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Week4/LoginAndSignup/src/components/Header/Header.jsx delete mode 100644 Week4/LoginAndSignup/src/components/Header/style.js diff --git a/Week4/LoginAndSignup/src/components/Header/Header.jsx b/Week4/LoginAndSignup/src/components/Header/Header.jsx deleted file mode 100644 index e69de29..0000000 diff --git a/Week4/LoginAndSignup/src/components/Header/style.js b/Week4/LoginAndSignup/src/components/Header/style.js deleted file mode 100644 index e69de29..0000000 From d48d0a345f49fc09d93b313d9f3965753f78f265 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Sat, 18 Nov 2023 01:58:34 +0900 Subject: [PATCH 18/23] Feat: toast --- Week4/LoginAndSignup/src/components/Toast.jsx | 32 +++++++++ .../LoginAndSignup/src/pages/Login/Login.jsx | 66 +++++++++++-------- 2 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 Week4/LoginAndSignup/src/components/Toast.jsx diff --git a/Week4/LoginAndSignup/src/components/Toast.jsx b/Week4/LoginAndSignup/src/components/Toast.jsx new file mode 100644 index 0000000..e311f92 --- /dev/null +++ b/Week4/LoginAndSignup/src/components/Toast.jsx @@ -0,0 +1,32 @@ +import { useEffect } from 'react'; +import { createPortal } from 'react-dom'; +import styled from 'styled-components'; + +const Toast = (error, setError, errMessage) => { + console.log(error); + useEffect(() => { + const timer = setTimeout(() => { + setError(false); + }, 2000); + return () => { + clearTimeout(timer); + }; + }, [error, setError]); + + return createPortal( + + {errMessage} + + ); +}; + +export default Toast; + +const ToastWrapper = styled.div` + background-color: var(--color-bg); + text-align: center; +`; + +const ToastMessage = styled.div` + +`; \ No newline at end of file diff --git a/Week4/LoginAndSignup/src/pages/Login/Login.jsx b/Week4/LoginAndSignup/src/pages/Login/Login.jsx index ad20bd4..13dfaf2 100644 --- a/Week4/LoginAndSignup/src/pages/Login/Login.jsx +++ b/Week4/LoginAndSignup/src/pages/Login/Login.jsx @@ -1,17 +1,20 @@ import { useState } from 'react'; import * as S from './style'; import axios from "axios"; +import Toast from '../../components/Toast'; import { useNavigate } from 'react-router-dom'; const Login = () => { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); + const [error, setError] = useState(false); + const [errMessage, setErrMessage] = useState(""); const navigate = useNavigate(); - const saveUsername = event => { + const saveUsername = (event) => { setUsername(event.target.value); }; - const savePassword = event => { + const savePassword = (event) => { setPassword(event.target.value); }; @@ -32,34 +35,45 @@ const Login = () => { navigate(`/mypage/${res.data.id}`); }) } catch (err) { - console.log(err); + setError(true); + setErrMessage(err.response.data.message); } }; return ( - - - Login - ID - - PASSWORD - - - - 로그인 - 회원가입 - - + <> + + + Login + ID + + PASSWORD + + + + 로그인 + 회원가입 + + + {error ? ( + , document.getElementById("toast")) + : null + } + ); }; From c7cae17c35820d0d219dce06e4c493c322597842 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Sat, 18 Nov 2023 02:28:46 +0900 Subject: [PATCH 19/23] =?UTF-8?q?Feat:=20Toast=20=EC=9E=AC=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/components/Toast.jsx | 23 ++++++++++--------- .../LoginAndSignup/src/pages/Login/Login.jsx | 16 ++++++------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/Week4/LoginAndSignup/src/components/Toast.jsx b/Week4/LoginAndSignup/src/components/Toast.jsx index e311f92..687e9ba 100644 --- a/Week4/LoginAndSignup/src/components/Toast.jsx +++ b/Week4/LoginAndSignup/src/components/Toast.jsx @@ -2,31 +2,32 @@ import { useEffect } from 'react'; import { createPortal } from 'react-dom'; import styled from 'styled-components'; -const Toast = (error, setError, errMessage) => { - console.log(error); +const Toast = ({ error, setError, errMessage }) => { + console.log("아무거"); useEffect(() => { - const timer = setTimeout(() => { + setTimeout(() => { setError(false); }, 2000); - return () => { - clearTimeout(timer); - }; - }, [error, setError]); + }, [error]); return createPortal( {errMessage} - + , document.getElementById("toast") ); }; export default Toast; const ToastWrapper = styled.div` - background-color: var(--color-bg); - text-align: center; + background-color: var(--color-light-pink); + position: fixed; + bottom: 11rem; + right: 26rem; + padding: 0.5rem; + border-radius: 1rem; `; const ToastMessage = styled.div` - + color: var(--color-button-bg); `; \ No newline at end of file diff --git a/Week4/LoginAndSignup/src/pages/Login/Login.jsx b/Week4/LoginAndSignup/src/pages/Login/Login.jsx index 13dfaf2..3787e65 100644 --- a/Week4/LoginAndSignup/src/pages/Login/Login.jsx +++ b/Week4/LoginAndSignup/src/pages/Login/Login.jsx @@ -24,16 +24,14 @@ const Login = () => { const getData = async () => { try { - axios.post(`${import.meta.env.VITE_BASE_URL}/api/v1/members/sign-in`, { + const res = await axios.post(`${import.meta.env.VITE_BASE_URL}/api/v1/members/sign-in`, { username: username, password: password, - }).then((res) => { - console.log("✨성공🤩✨"); - console.log(`아이디 : ${res.data.username}`); - console.log(`비번 : ${res.data.password}`); - console.log(res); - navigate(`/mypage/${res.data.id}`); }) + console.log("✨성공🤩✨"); + console.log(`아이디 : ${res.data.username}`); + console.log(`비번 : ${res.data.password}`); + navigate(`/mypage/${res.data.id}`); } catch (err) { setError(true); setErrMessage(err.response.data.message); @@ -65,12 +63,12 @@ const Login = () => { 회원가입 - {error ? ( + {error ? , document.getElementById("toast")) + > : null } From b5c07f8593fc45627eb2b15d3ba29c65c6372801 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Sat, 18 Nov 2023 02:30:27 +0900 Subject: [PATCH 20/23] =?UTF-8?q?Docs:=20=EB=B9=88=20=EC=B9=B8=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/Week4/LoginAndSignup/src/App.jsx b/Week4/LoginAndSignup/src/App.jsx index 2b4096c..2b03b9d 100644 --- a/Week4/LoginAndSignup/src/App.jsx +++ b/Week4/LoginAndSignup/src/App.jsx @@ -1,6 +1,5 @@ import './App.css' import SignUp from './pages/SignUp/SignUp'; - import { GlobalStyle } from './style/GlobalStyle'; function App() { From f653d21b1eb4052fa75444a2e93bc646d72fecc6 Mon Sep 17 00:00:00 2001 From: namdaeun Date: Sat, 18 Nov 2023 02:31:31 +0900 Subject: [PATCH 21/23] =?UTF-8?q?Feat:=20toast=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EB=94=94=20=EC=9C=84=EC=B9=98=EC=97=90=20=ED=86=A0=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EB=AC=B8=EA=B5=AC=20=EB=9D=84=EC=9A=B0=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20html=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/index.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Week4/LoginAndSignup/index.html diff --git a/Week4/LoginAndSignup/index.html b/Week4/LoginAndSignup/index.html new file mode 100644 index 0000000..531f77d --- /dev/null +++ b/Week4/LoginAndSignup/index.html @@ -0,0 +1,13 @@ + + + + + + 로그인 & 회원가입 + + +
+
+ + + From 2b0b5102e2732d8df7d1564eabab30de789cc97d Mon Sep 17 00:00:00 2001 From: namdaeun Date: Sat, 18 Nov 2023 02:38:52 +0900 Subject: [PATCH 22/23] =?UTF-8?q?Docs:=20Router=EB=A7=8C=20=EB=B6=88?= =?UTF-8?q?=EB=9F=AC=EC=98=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week4/LoginAndSignup/src/App.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week4/LoginAndSignup/src/App.jsx b/Week4/LoginAndSignup/src/App.jsx index 2b03b9d..566c731 100644 --- a/Week4/LoginAndSignup/src/App.jsx +++ b/Week4/LoginAndSignup/src/App.jsx @@ -1,5 +1,5 @@ +import Router from './components/Router'; import './App.css' -import SignUp from './pages/SignUp/SignUp'; import { GlobalStyle } from './style/GlobalStyle'; function App() { @@ -7,7 +7,7 @@ function App() { return ( <> - + ) } From a7a690a9f332a224f0daa08feaa28af5c879580b Mon Sep 17 00:00:00 2001 From: namdaeun Date: Sat, 18 Nov 2023 03:01:03 +0900 Subject: [PATCH 23/23] =?UTF-8?q?Feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=82=AC=EC=A7=84=20=EB=9D=84=EC=9A=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/assets/profile/profile.png | Bin 0 -> 10666 bytes Week4/LoginAndSignup/src/components/Toast.jsx | 9 ++-- .../src/pages/MyPage/MyPage.jsx | 2 + .../LoginAndSignup/src/pages/MyPage/style.js | 9 +++- .../src/style/thinkHW/image.png | Bin 0 -> 74889 bytes .../LoginAndSignup/src/style/thinkHW/week4.md | 47 ++++++++++++++++++ 6 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 Week4/LoginAndSignup/src/assets/profile/profile.png create mode 100644 Week4/LoginAndSignup/src/style/thinkHW/image.png create mode 100644 Week4/LoginAndSignup/src/style/thinkHW/week4.md diff --git a/Week4/LoginAndSignup/src/assets/profile/profile.png b/Week4/LoginAndSignup/src/assets/profile/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..5974b5c1933632e220b8daa73d9c6fa9961664b4 GIT binary patch literal 10666 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 P%>M;rDE#+_OtAk0AQgEC literal 0 HcmV?d00001 diff --git a/Week4/LoginAndSignup/src/components/Toast.jsx b/Week4/LoginAndSignup/src/components/Toast.jsx index 687e9ba..e541132 100644 --- a/Week4/LoginAndSignup/src/components/Toast.jsx +++ b/Week4/LoginAndSignup/src/components/Toast.jsx @@ -3,7 +3,6 @@ import { createPortal } from 'react-dom'; import styled from 'styled-components'; const Toast = ({ error, setError, errMessage }) => { - console.log("아무거"); useEffect(() => { setTimeout(() => { setError(false); @@ -20,14 +19,14 @@ const Toast = ({ error, setError, errMessage }) => { export default Toast; const ToastWrapper = styled.div` - background-color: var(--color-light-pink); + background-color: var(--color-bg); position: fixed; bottom: 11rem; - right: 26rem; - padding: 0.5rem; + right: 25rem; + padding: 0.6rem; border-radius: 1rem; `; const ToastMessage = styled.div` - color: var(--color-button-bg); + color: black; `; \ No newline at end of file diff --git a/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx index b42bb4f..fe2bd7f 100644 --- a/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx +++ b/Week4/LoginAndSignup/src/pages/MyPage/MyPage.jsx @@ -2,6 +2,7 @@ import { useNavigate, useParams } from 'react-router-dom'; import axios from "axios"; import * as S from './style'; import { useState } from 'react'; +import profileImg from "../../assets/profile/profile.png"; const MyPage = () => { const { userId } = useParams(); @@ -32,6 +33,7 @@ const MyPage = () => { return ( MY PAGE + ID : {username} diff --git a/Week4/LoginAndSignup/src/pages/MyPage/style.js b/Week4/LoginAndSignup/src/pages/MyPage/style.js index b0092f1..d231351 100644 --- a/Week4/LoginAndSignup/src/pages/MyPage/style.js +++ b/Week4/LoginAndSignup/src/pages/MyPage/style.js @@ -2,7 +2,7 @@ import styled from 'styled-components'; export const Container = styled.div` width: 23rem; - height: 18rem; + height: 20rem; line-height: 40px; background-color: var(--color-bg); border-radius: 1rem; @@ -17,6 +17,7 @@ export const PageTitle = styled.h3` font-size: 1.5rem; padding: 2rem; font-weight: bold; + padding-bottom: 0; `; export const TextArea = styled.div` @@ -27,6 +28,12 @@ export const TextArea = styled.div` padding: 0.2rem; `; +export const Profile = styled.img` + width: 4rem; + height: auto; + margin-left: 9.5rem; +`; + export const Button = styled.button` display: block; width: 70%; diff --git a/Week4/LoginAndSignup/src/style/thinkHW/image.png b/Week4/LoginAndSignup/src/style/thinkHW/image.png new file mode 100644 index 0000000000000000000000000000000000000000..59463c405dfeda99714dd05500939fc20d9c3efc GIT binary patch literal 74889 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 Y`PYpK& zX7?3~?Sn2=rQUWpL9YyMn25^jNawP#gD22nBSWt?JQ)1FS}W)6!U;P?c-s6w3=5d&dtkv~U{GIXtSgVC+Mrscx`xD> z5gqWBk;frJ#*BwrM>r>Li+Y63O8c1^64S**0wy71&0-DoLjeAyD}lr}SWhz4HDH{! zkaUNHy)K>{FtcybdYrGPoE?m4VyK#Y2rJnx{0-#4-NXkLlLV}vf!8IQ)ARRyOr=4> z%}bPwMi)pOYm8Cf`cCzTsHLlo);w$2iRt#CY^wp zytlFiHep{+SIoa_5=X9r$J4Zt4_z9`#$R5FcL_2;$EXz-{+9<*DbzzM8JY?Dh_`EQZEWfS`p-pPXv-6g159ia0 zuw<1*ON=our0Dat0LMci0s<6}PvPX*ak>aBpI*yX($(I|$II+rCOH42Md;w5bln=K z7|{C4T!yf=s59PXkS`DdPks>m&Wl%T9qIjbDj`_VO=OkkCqKiNn@#)*UPae(_q(TY z{heOMS3E@cBmfA!1uq=PNs19?LdgrL(&X=W)?ES%DJ2aCiz+FS!{rcU97uG3=`B3w znZ?vek|*!Qf3rUU3!lzZ^qgqdeJ_+XxWQmrHE4K&E+71JU7@b2a~Y)gBUhCa1+oQsLk1Hsa&EJe#?kb!3@tiIrJ#RB zVCE&=G||&`3|;~DarJar?e)%y!BMH95zb`Q3lf~2#c2vG8f&B&G)SRg;h+1>lEQ%& z8d?af6hp#oHZHG_64Qr&<;4yp&+%#E&Sg->_cICz7U8zY_Qtfx7Evs2CSTubZTMQ@ z-I~n_pVjgit~^`*9cNRyUc7%d@NCG2gQ;Jv7=9o$Rb%4${-}>bxE--?3qhKZ>Ax%< z1lHs$am{G^5&^s%qL(STcE1I7woi7LEfjaDRcMu)p#FIldEa4njmk~%g#)4I!;9!nzN^;XN2dr zbVlrFHMF|&>}TKzJ{x{gZlB~N`Oi@vXi%Jo7BaK@sms~xruyQ~5dk7UU%z^grA2VJ zFcwlrI9PY%I7xP;P3}iyId2wa@al0nq@N~u^TOM>)#Y}|6uPM<6!3o%f?CVQ{r!cY z3}oXMF=yzY*aosjfX*N9K70>_md8GagM-_t{{H=YAq6F6ad9yv1qHjq7GhI-TC2$z zp#u=iuLC)BR?`O}`VmqSHTur~3G%%lwKNaCoO+B#SpYYa{Y_KBv9rg>g4X5llzO;fNMDl%CloLcy(gG=LK>#fy! z#S*#-UiLe+viP|bDl=KUF?se-R~G)EV5I-tdoZG`GObKPy{34Vw(>C3p2C`7=PY2f z`su-f+m&I^Gs!6>WdLb2!dN4tlLWwHGvbC-EzZhq{D=Gf~z&k zP29Ck@>fXILGB%8+@Ry1UNz}RzED=uj&x`iKhiH7NyfM?OQ2u#OPbpS!z-K|!;T_L z%w@xmD#`4CIi;ng4GQK!Rj<&gFZ5aTN&pV!9n#kJ_VOg1poOW^ATl{k3F@WOiR$dO zLPzW*BO}h73MRu=S#bv%gRh3DsHhMe0&q@9BSG4tQJ{El#;xkH?1-9pdN3<#FcsgS zQcBLm4jB0UljWI}JYi_xZaB~R}0!6B3#~019&wFqy*GOMzEf)0(~Nog>or+Wnv+J6&NxFnt3jjYYGH_*bdGDior5WxL4d9Dw6 zGB5b3K9Ya?LjK_Ya#UTg0Frd)1y|!>CmoOD9ylzP?z64}6Ez28M0a(%aVY3q0bKwP z+MO(y=>fZqZg(K28>RKMi1AoePC09yj3QtqfnqIB(3GC;9MZ^9Xgz)$jGd}tgw9O? z_RBVDax}LPczu0+fq~wjV}R38sz=IRjr{GR+nsX+y5sU2yf2ecxO&@mtwlsasxQzU zD1T;!SaCW98jjPpl)Z!^$4po9k19&_m;!^Ov=>L@4Xy~zfZko!G$@Ajd4~vcARfP8 z;j*60-S*;@J)0x-HXK){?H3fnb{B-P@08Keto+eRQE#1?^ZJ#6Px!M7Cj*~Ca-Qm` zo>0X(GH-)DJ=i=08LuA&(gC+D^6_LcQQR-1>Pi98jXt5?n^!-q2rgo9?GxMki)oKy zS>O2O&tkDaLYkdB^)KrI&JH9fcp1?m7Ry)QJ#L!gDahRmbY!Mjd(ZEie2N?BNP&o* z9;p)aHHu;ZQziXmaeDy>zcXYwoTU#+CMB!QVwgIu{tGjpf$T&E1Ucnj&=lFeMp$uH zb>xCT{Ba1W1NU9Oh!Jak)8NdSK;PJFV)7So=EgYew6EhPkyfl_Q!UoB4oIf8CLU79 zXcr_8^k1-foX{TE=S6CpH*uP>?~{o3By6D>`4eLr4=65U0h_I(w%XJB=i=97Kj zd;-qDANCS19ZPD3>!vC*Unh?Z?>KOLSKht6ed8mmI?>~lt&J_5`bS?Rn)sTIUt9nx z7L}UTDOwjiEKV@bn+7xNt(GspYw8Lj1U3xk7_)>9YOkdC!pSkR{(l&RE7(;F$w?&< z;ys@{{3%LbCo8+L_V6M#?}tVddkcWJm3La{Z{~@-x6%_?Brg2;6y*L ztDg0XoYf+k=)X8F2&9|NW4_Z9$9A^!8#Pm%2}o_|FI~D!Lx+Sd%%04xLZ)^CY5t=e zk$x{th?JwG5VtXr%JxndXu2TJAKg>0m?G&LP(!!thht;UW*cd{=Jk|Rc1eaL(yn>C z(C3{&4F$#h&K6haZAi83*woVKTg-;$4}2@7h5T=_%HpcYp=285{VuXYvXA~~9VLPo z6AZ^)P!aP3Yet+|3H!32*0?~yE6oKShw!+GUAb1V4vuq{FYGrW%84{y!gO-bAcG*| ztQdkuQLK>2-O+Iq41&(pehc!uAezyOY)->#lR}iz0xB8A_bD$Rb9*kKH{JSn@>P zf9*#*mq459Shtao;)&Sm?E3$SHh~i`NYX>|DeWt@RKg1s^#V zSf8iI045*_i@-jJ-Xc4MR1f+cetN}-acUi>;aTDPJU=rC&E*&O#QTsWaY)}AWhdFD8V zvh*Y;0#U!d-e;1R!KA#vMwekx#UU>xRa-n3aZUH*py#8jhOY&h22sFzMV{Bj5N!0% zRJX94H>S#fe zt9=0=~22b4lg;q&R#FE-5^T%MFqEuBFC^W`c& znxr<@AC|{jE)S-eK4AZ!UET)p#B`qcnpfC_T`cp5fSCzQ#O`k~y&{e5!kLAt0-8-z+7DWL zSuJPg6zGvMTD97gH2k)g76!cY=fCxv{eaxTl(t3k^9ks?G>7p z_xa@(`*FaId^D&|Y-ZGRw;+D%xQYuPa@Or6jT?Sk1N+~CTOf@Z?+W~Y|L=HpBhg{z zMJy8C@0q%SNAQwrxrXJoU190Eh~13o+i}-5^AJ3&Kfenrl1~KM1WY@P@r=tMcIe6? zZp_$$BTX60sq`%vXxn0W%~;?=@vR5XZxbd=+aNn3#^3E=dqLqVr8A|42ygx9@_vU1 z+6I>=;qzI$k`|7WzV1d`ADM@w*bG{Pl9o?5zhH@0k)gggzxD#S9qA(>x3^$476?A!rh$*>Uk9A6_+$dmQV}2fgH8N{-pe0H-KhZi@-FG0zlP2u03uMIG?(;O; z4;uk-9e4r9zXkM3CC)T44TV22{~;)EMTa;!>g zJ`*^Coy8XnNB)-`ogiKfU*;7jAK85P)Oswky-+Td?!F}UY;4p~ytx9r0t8T{51~*C z`vTr(V`vj$E+NJpRl*VlL!s^ar)brDJLpe-2SB4Eh^oo|D(LWm+xKSv`FJ0Qtlg78 zCUNPhbTj)!046gPn+Eb9%xnV<8f47YOYj3J#A^WhkB{t(2`YVwrm642QKhI9CR&+Y zD)O&b-|-OtpGf^8h_^8^JZefxj=SIMMdse_I3EB(yLIzE%a|_Epn$gJ44Lw<`LOlF z$2Dg4o7-DFudC&Sg@xYU-rK{rMGKaa{cf(=xw*TooCuDzVW3#ib6Zjec|V7`WWVAS z=AQ89>v^}W@+EROBhJk&7s&WsdmI{V7s#GApOhV#?6B<2F*CarQk5pTy>M6G59_Ip z{8Ryb?BH;uI5vMwNBuldSW|+?W6@P0*ukwFTHo2-^}F!ms)7F0>VA1(Ia|m7mG^8^ zaD?}f>o;>U_i;Chinc3>`Uf;L-rK!uB$4b9fx?`V>Wq7;Saupv=5U&^_&-kn!6v4n zy2@!kgxHy{Yus0#aom_VkQ!UUWbArKUUruEgxE`kK1g57VQGOpjsiC(2yxj2p9MQO zIWbHviO}cWpdI;+D6T8`s^1WYTPz!_HA`&WjiR}^xuBq+oE*}RT@n(KKzJPFUqIv0 zuSOqL%D6mlm=x>BNjB8PY+ZhThAf9gqv7(nqDvOmQ2t+f^`ALom*z9E2r}3*s|-WU zfsd#+381N3hpn+ht5mbCEWjD`YvZwn}QED*)e!qx9<{aw;BA zwmmq8zJovAI_BrnzrCn$3saDAaMRGh0%tcHMGM9WH1QM6S~w0y05{8=_3ubDmNTtX z)djUIE-6{|0^Yk;_kVzg{~ewTkhAK@QTo8*_+J8YqD+3#z850vCdR@d&W`0*DvI?6 z?80CeXYqY_Nr)psDx!t#>VzCPD{B1~j-tOawY73+`nX{G8k*n+>8V9){sWj_;(QQj zgD~$AW%ika`q+F=^wBlh4O3Q0KVTE^Tf5#J6Qrf|Zv_}(v08a7`=jBf6Y0&^!Z3Fp z;!LRjtUih)veBB?zFPRhOz!OD^#9QHl~HjmZL_#*f)4KP?hrgc(BKZi-CcqVF2Msq zg9O*$E<=Fe?(Qob!J7yX&sSkNu0;yZ7$yr|PMyE+u1-&gwU*Z;N;61wgRR z$ltVptCw{KoEqKu#6)5Xwk~9&l*5M(pqY~9Wbs&b;MkiM(TEA)O1#m83O$Io~=@u7&mFM zr9o)e@lDR8km4amCbzym*{FA7y*eAtB^0XjyTFBv69F|j5|{~cIx1WQHa17LkmOKU zqA|onsBd1cAL!+m=`=wZy33P3YxjSn=c}wS|_aA@l(` zqjPCT2Wgn^Sv$V^cujiqAQ}+BoOLt8H6{%1f_2K1&B09>YT0pS?#20c_xq==ArC&r z3gQHX;p8;0yq%vrbRfKHKz~>Q`c;H<+)xBo^@?p{ptZn+oOV?Uso2bX+&wBqxx)3P z-zR#H&SaxFT&kogS>!hY6cW}`7FZSD@!I(Xlz=u_b>$l&VI(rIX5UFUEH2k8F2TOR4OV6EUmiqrJ|B~F&5w}q*;DQD(2+9 z`FnN$cW@xeJ2-Z-N0nAf$FfK9%t!H7&<1koFKq?t5E|U~vVtP>ufA&u>}p1)+B|O` zmfLJnt*;ebvl+6Lmp0Ie55UBS;NzC{o_P-gr(Sf?MdM2QYP)o^6@E}lC2Jvcyan0y zLh8=@n`?eEz$Ffx_u}B+~ z$RkbNOC=&wK#yjO4bFul!H|8fVI4bnz_c6aWEgxzSDHP_EZ3URV@B|9zm0K#+#_K- zA>eP?;(rXzpeXbRf-Kw}5gm!+HxCc=ct#%zXRXm6x}vQF=X(mJincbt%`n_$Ixt$P zGp1P{vtBSqn>`GJ3YHq4%eizdj0nIcYc8AXdLV@PyFsB(xV_A%^H0pa>%y&btpT{5ar#X?t;D_rt75 z@j~g+Za$15bjY!H1kClJX&5HyN|`c`i+#aWRV-tgPs z_5QzWx*Rz+OciO}>qEjbrtD7P=(JwVN6%j3qXs8YKJAKu!TWhRtW*l6N>bRN^uz#z z0-k(M5GKR0>l6AW_`m<;uSX~X1RFLMuS}g?z>{Q?8^*R6M}9O+(`z0>vHzhKN5B6M zUE&07)N*j`6Du>@%O8e7Um#<>d3pc2oBW~Ya|zDxWQ0TY{5K~P3iAT3;@MTuN|M1Ug`=`hIFNlJCFO6&w{VmE@ zUdnD1=uP;a`m}7_0?Y!8u8i$uloF-295^Z%=6d#Gq?@T0k(5YP88E_Vfl=Wt1GG3z zx>^NQ{7lnL>|qE|ZL$&!OqOFe_dj`Cjf76;J$#yKyR?lb@O7_#udwRla2)1n8+r|Y z_N$YC9p;ejACiJ}Q0d-9+W)Tsf|x>JzyW9cM}9}^>o1yonggP<2l6F)CD^HN>wNw2 zeL~L2P6Cg=y}YYCZJ|}1ryh?;KU+epAfgY zd%KdYzOqWCJ=Hqg+S-qcWD{NSFiLS2q<#}DnUs08xMxr-&f zmOWqF!lVsC8h{jHPX4AW|D87EitBbcx0bEI7vHt<7hX?AdbtOY;t>@+^PutyrpYnp z$vIr2wl7t^WK=AKsavNFh=K@(?Q|7q-`ukgNFpK9kj;UYf?I^43$!B(y(0y;;nJAP zAvE1sxYsu3cp7x#-4BlBxf8mIZw^z?KR|f55ngOsIHuf zSMGdxZ@20PkCBceOGBKQfE_a^);}Nv;<-xhwm8at{hf4UZ<)0;*0dp@Rq0Ycb$P?E zkYZqv8v@`v_%5(h)c+ALkeq-0YB$r(y)gAB^zFUqZ8e?M^sxM@?xV<_&kDg!f>2vY z<4g&vbaC0X?>TTYd@S4ZmWLxI$QWRRp&CSg;hlINs zi$e|ZZ3pkIQ1Q1jULob{xP8}<4^x8Mmk-p`7Lp>n0Xb*xl3G=z*Cb~yIcL`+j2t>> zEpZaXPX1-UZ7}(+2oikUdqsUm#;GwDuFc?{i;UUA89b8RQs8b0YFZP$WWtt;RA)4d z!H&&$`80;%BpFcLzx&#ME~X;74oJ_$+Gk-gn;){VxBRz+mqgNb);QNvEm4F93@Q`X zUEQ}dhK5TO=Q~|KCDM_T?1SwEMBCaIHm>7^0YS7NG^e{R79_hltK(CsH^o5iX4#4D z9?8lnxM;=6TEOrmK*7DkLNmB>gtwMAQ(GN9`bXr1jGVIuN+fGvGkvj((J?B7jC~^b zUt3K=7Xe&Ab^B|e*mE}&7djKZKmIR2kroFb{l`Kkx4E53{*(EO-+`B8IRSu%{T%Ub-WT9biOXN zYA1canJ`3n8(Llv-A%ri@fJ8lqLRu)ug0K~TKq2F|9{OcP6enR)7yh5q>g*lov!ni zv$jmAZgnWvTC;kUwlRr3EGGpA1Q&rDVK-}JHB6}-)=!z4L!z8~L|R&`r8wkYY9b}S z@gm7KI)~@gaF-urCB=c@KEhiRwwDH3q5!-)Ykn~9P);|10}6=S7j;Hh4^5=Bw>G>W ze13cy!P0*?+`q?3Toc)C>Dlt34gbO4Uh+@DxI}K~?>{Qu$;G~ZK^1~O>8W?6_T$7Y z@}rjN%up4c0CRH<4nr$Tv;{$(;4-(taoQs=dr9PKmjRT^q$XKf1!ez~riE`N*x14u zyOZO`5AHNPgt0MsOM2nBqVI9^nOnc|o!-|6evaaO8g zNyU^W%&JA6fytZ23uP@FKZlRdZ5;=#?|hgyGJ5z7PwvkVVX=4ZWKMX{Q<)A&X2Kp0 zVcL7&3a_1sjGuZRfZ0h+A_fo_mvdgcm#Fl7U!QL->ZN{)b(leM{YsIAl{>t-RMs-p z^yr)Sl7q4SL;vB$aQ{R9{bx)$p`|i=w^lgG&ye_mFk)isA~Po^weie0JcerNjKZyb zDq40WLvu4YhnCyJhxL@oklM88ZCv|wsZc;szqa;-*)3I5JJYro2-h>q-9cze&F`#< zwMag2uR`>g$@1%~-N)|Yv^}a#|F$i8-^W>rwO+>?(Hn=(Mb3*Pe;aRT1aJ3tX@e@p zv3d7y_~)nXM-!UPsu}<1c-G|_`m;p6q1{wE!WOa(YS7Nh0af9vlOzCU^dpsJA{;A4 z7Xw_{x(bG_o?cm5S&HNzrl?l=AN=v+?hVlZ1;Zgj@CTek&B8P}6i@X1QagrNkvH&7 z{Jl{4j+HCYdO(_Rx9@oDT#%rW=Vv~{kGYPFJQ};hoUNQjTG@2?Q7jwoKND8%JR(Ug zLG^fhOvon>v(|e;zely=7f4E_HhXsMQSEb#4DM?Bz0C|M-=fEP_>d3gta|_YVunr= z-f3urR@G6vs{N#}<$u573;WvA;3>|7`fNLg^SXsz7;zf6rsa?4(eZ3?=DBv_X`oM3 z{!{MtijFbKsk2qTvc6oel62La4L|JXuK;{PfY>K*yK3i`%Kp0GGS*EECa_CZvQ zKhWT}KBF)*eTyR;_>w%R^+p*zz}M=oc_rlV`{rg`6tnK2aZ{1j@0g5kp_IqC6;F^3 zJ~#V7fv8C9JouI``RV@9eAiJ@Bk;0eRd($}9W8aqEwH@E zMgE=v^;)IKrSf$c1v-MYPk`*~hP;%xd6vC_h^sxx$r(h*OzTM1L+typgA{tty}uTx ziiMLqdB|4O(t&7B>kZ1yy}wKLC1fkdmVCE(Ggh8_?M=!05YZ7yoPB)rVtTfI`3U47 z(q9QMY(77l!=n|^-aYGrlqG_$y)gM78D)u}(_^9y`(b2?53?ckbYCw_Gko2t%PY3@$=*=q%f9}Ee~x$U)@BkV(NG;-NY#%fM{nl zq%&%TzecJ_>Qv@7eNR|kYfw-GL#jY>9>`<-I5%^AGsqA9VwB@VO;w3gdc{Qts288ME^>TJ3^4h?smId;&1>5ZmA4QS2Rl=P=aS+9neW?`&;D7Rl zC=o4=kFnpY|HB^tRnod-Ks^N@eUPDa_`Y?Ta+w6LzY5jXH2%S>KQ8^S@S{K@vu2c> zvYYQs{U9Z=%~ObL<$kgS_6^4mBCZyEjdXU%VS-`U2eUym`M(K#q^xbslkDS#yVn*Wp0eSEet6uAxrZ z8^$k7e3nwja&%ao>6|WCm1R@c+TUK>?_Os~7CA)p^Yx(Uiou;vih!Wc-x~4ueKr=7v$YDqEt?;&v z;TLpF(+*cX0qqSua7Oo3*^NXe8&+S|D?C>WQgStbcCC^8t)qzj2l7AS;m|RK{}vTp z^KgqmKPPx9V*DtWUuA4)`kc5P$1iC=#YgMr;)JTB4>NbooXbDArtQ|}U@a2e#$|Lx z_7&=(e;u~{ZEM2PVaMQJ)Z#?@Wa|mh)eqcV7hAreIKzs1JkQC7t zFWg5$wJPGx7mfCDM&8NKFEm8~`m~qRhkbHRt&;!K`-1_r{*UK+KsMIpFY4^@n|`^# z_I(O6DfbcSTy83vWOy?;J=p69^7g?x!( z?ZRaDV{f?AeYmJ$W#g_4SWZ{)^|3avF){K_sGjE!b!bBiB!O&YGHxv#E$Fs#@8l%WBy}Z8&7zys>CFq(tX$l>!&&E@@Bl3Z=5X%{$nf5YIZN;<_o#s1+kt@7ovyC9m_xdPl((F+!IZ^)tlQsvOwJGvm~@ z$mEL0&iCalBH4su#0Q1nVDsb`CR`<)@53uq@)E5W{&2n{d49=5jk|%73|6vjIAqqW zC{!`ZTz~6h&@w>UC9Ipnw@cab&e?QklR*6TEq9DT!}yPKoTFTc{!`R;y@vQ2uLDcL2D8J}I= z2+2OV6s*AaKs(KiZ$!ue6|yoWWnudttQEwq4y?{&d_p7w9B7_4@}U{~@g_)9tO)Dg ze9_BN;}*t{rf+qsC`g-Q8mq!)QN_v>S{L2q_a5=ytbX=NYqT5}o8CHkTkLl4bBs?k z^t$LatL87Ck@sEONZW>Suc z_B5woeehO)X^Q`5X~eO*k`Fw;eq$pc)#R*{PH1jfb(x!dYE9k!Xvq;yY!<}y(n?n0 zwVirlbV~McFxt&R*NeQ7FmwbWLo)`IyYHI|SOkPKr}uBJ%ALZCc`W5txz4X`fg3UJ zg@FEEBFh`$0HB!g=BbQO-xM(X4Qvcw3gKP~QR-ZJVux@2KsntX}ce&hoC2peqd?Ni6OLi}}y5j3bOP<62km@HZH>j5Mw;?%L1L1DYJ~)+s>e zQ=@e@>gU5Aov@Drw_)kOQLgW$A9_svvA2C1YTi_F#q6jYb18i+iCLgANNMlrfaoz0 zk7Y3z<8y<6s68%;9S{SML4q~#zbxSZEfk$cqrqy;L!&mDU)K)b0S{Km{AG+wUKg`v zj*QRVK70;VdaQeTwHx7g{#^w!J5Q=_cUD>}RXq!HS^h6xsp?f-oJ0)lJVt+$Bk9O-iw;lT%N0@ z1&GU`O2qM&1Y>|`+t%`Hu=d^;u9r1|CQ#95bOexJ+0`tj!guaRC{2>BsA7o*67i~LUCJ_w zEA>_^PRCO9%3!RH2S{<$-BH~CTqhDTc1#?T^VxyB&dZLYcw}C~CSA)!UyY%PFb?;- ztnG-;n+V$RLu;`eVc#C_mfoeAt&@{Wbn;!mqI+ebbB+B=%jb_12DEJ!gJOOo&KKgZ ziO(#E6qg@bM_ZmaNPiJNcW3k#V9XXwX@?VO?Xc+SRm1QRt$Y|Xljf4;6Gvang*MFl z)lc!Ahu4|jW|~u|2)j^?BTS5E3DL7dq}m^}?vVA(y5a_2)?#zsEma^jT*lSEz3}IN zwoVCKIj1HPm2{pGM+D60-d2dly(1vBb?Z4S{-Le4VQMONPSmK4`+79!sALPyqk$)x zXvDov5dt+A{R~K75Z<*9w~oeiMnN+~SW-T}bW5y}i^{=vNLU^7DkHAuB2jT*n&27w zgwFcH8ZyAvW_e$lnx_2+ikan@u|V|Gnn-plE$+_`*E-EOY!KL)fELVf8CW<)dRv0KG((VcY7Q&2wHj2(H8J6g|JJnOd6KI5@uY@bqfQRl|A` z*iBK=eJkt;?liffHQZ3qP3tV3;Pf4d!$z-`BPxm*_D$QM8JtS{ zL)SmY_>oXfQgmV`#yubj3CAcyshM{Ya z!B4`;!AioPITUu^nMrhvT1+ioxXlWGLuY7seg)9CN9&`1mgh_|{Xww7j1V2&j(=WQ5^3u|l z>sdXjfw})ji(tv;xcW4yz?SE?=6_qET>}&L^6~;C3uuDqb!%$QUmnl+GJo3${iXM} zr^^@q6ksE@jE^aA{N|4*P0A4uC@6xg82rk#K@_<89Bk1Mi?m1Tfd~|Ffj$cM#JJCkSB=<@mJGEVW9AeuVEw_#TFGsqENo14+P%_?c!NeZ zFXV^yS$NTlk*6?xvkYa{@T1rL*C$-X@GO*HaF2#gjqbxRW=`{BXj+HWYuG*wTew1` zRiX8_37mmE5_Mbl2*sb;n;qO=E*jvO^0)_cab~ykrlQ za;l!B+M9XLSs8x1!Rvzw91j95_r?t)2CQstbR4Du@6q}TA2v-TRU<1)233&u>;t+~ zX7_#`+AXRi-{pE%53ixhI;S-fVXi|uu~E!gM4fF;{kZ*QY4f{t85Rti0=dX&Ug5`v zK*QphBQ)A?9Lly+a6DM6`=|owH7qem{;bnYCBcpQQWXV+HY%DqxM_DzR%gDwLdxEw zS1pgND5Vn(CB&b^Jo-^8 zGg2K#NRDWLfW@==u%)r737sqY_;sIl8M#=8^L|0JE8a`?jnacI6vYq+!zmMofRC$!K!ht^oNL?VlU~4$8?!Wrk0EBi}+m&c5r$~4j3U} z%3#%SWBe_EXk=qK1mru;7aG}@@ReU^V=IOf%I_d;uPR8?D6_M6RG6zpV%8?;DBj=E z;ndqc=UHVWnv$8&2U%jGq3ElPI?WZ$E>tg1EU_6-y<2-m!A_WNGfMyn($L&;Iet{GICU`>w^Bxd5lL z@x1gvbQHIHTNKT%z*Vd4ZP#oz?h^p zIYE1`C2xZ_=|qC%8eb`wgzpBb81+NY4kHQh?I$5ZPeYtF9;@rRQ`Cx655KqHpy^&n zDVIewz*aO$!J=fClpGf0Ny9BL!Ub^R)S>a#?3pQqS$eG8uFlRJSsN3La2x2Io|2NV zkUa+C>S=S{l6gXm2eg@#F#ql3>HW*eqpjWSLL()l!3RJJX_C5HfMWrr?M%R0p#Lkm zGp7SXSg|QGjHlZU3b@L$Gk68>KnM43NaI$EPn(tzkw4!faHjn}_Qi7sR((jp4%H(3 z4dCNoa|BaDT+^gVFj?~ZkO`D=;e-dI5LqO86!397Uz7UE-R~Fsd5RJ8(KGsXY#Sy2 z)K8&|L55am!6OKgBSHNXC>;LZ8Qz2l2Wg0pb1r+Du0m78g~BmjUJr6vbvcZ0&R9(X z&;V4+)s&Aoq*z%twm(xBtHrt7P9+0`%#l6r-f$@0mLK_re(q<$rip{z3aO`bWVqS! zR=}#w++?AiC%H^Iw|@0MI|3)jdUo5{$U#WW%T$@1uwEmLO}v1aXJ0>0R?-gCOrwhX zO?)OXk`<A9ZzS?qRjZ(6M5eOS{#eozg%+^j&(3TJCT! z8A|j(sP&AO3*Cj%IxY;+`;UrY38>KVTks4$takVP(GrIpXZwZL`j|yy~ zZfSNF;g;V<1ydqUlDn5;XcJczuSC_{`;T)aT;jjBf~nxH`+zkFdZ|9e*E~^MtCA>g zb`L&rEkkiIG`^ItRWIaY-*@Y2*zCd7e9G!q9!qy%ZAio!P8WXin{%XKVK)=*!3of> z9I%^w!ezQhT?e}NEx=)Zk}hVmstpZ+qtIGE^>uWb``L}Tdbn1pkMj#iCh*!WtC!tW z;WkA#Bo;-shP*hIXpx|37`ln@+>wi!R4EPp3FjTKL!5np8Fu@#jGC2i*TIz#wmx~* zDkXmM(;=CnAT2KpDjct-S$O?`I%bKj;_K+t29L7n^ulypYeZZm*}DO)BMS{ZS*6%e zsUg^2s4llS=`^<(20JzW7*hW#Sfi4y819lbKImt3+8LIY4?4HRdmN@;PP>w@Jyq_-W25it z0#4~$4^qFx66&Ty`kkAIkFP(T7ZD|W4fh{b%KY{E36`P9*jf#H;)L3ZpW=uVD&q;3 zq)2-7=-;etG|Zun+r6&$*z-DaZx z>wyWCRk_DF%3xO~vpTSLbE`7f_iViT`9`vR^+kf38A)nXTLMlfl}Gu(1$@s|{aeR4 zBLoTs(l%K#0l^_FrZWS9#KA|0swkMvEeN0Peuc@3K#Va15ZCHXI)cuB)YGy3O@(A{wQ*x`u?WSz`?qme-gx99OHBIcdH_CkMy<{CB3OuvhPVz7N zH8<`yqS@J>;knNv@1r!DCVYdS8vNXJi6b0k6+4EUWd=5m&Rwf{G+KnQ@w0v9HIMo{ zr{Ir})2{d4v8mlno!8abAiI0fDsP@K~U zp67|1*YhT1YWL6GD?;HO-SI1UDea1>v%MVkZileFvLx{V4y+47Rj!A#Sf?+U(qjJk zCmCmrFH+jRKeyohEMN0ZtG-N)v3WQK)Sl?@U?I8qk%)?IB}I;q$v?+!>ap7@y4VDL zPKiM54k`6eo`Y8&hR2`9O;S&Lq!FX`9wEmzKj5=bN{2I<2E=~BHj$8S=^-58{9ceG zw)X(;K|ik=t+S?MH>o9tkor9v$iTz!Ks_Y8rXlR6xJ;aE*AW3(5sVF7h}+RH5hy;5 zgjMiOsn5mIvRKZV9WZ58^=QSS1Bqf!K!y6 z0>CSgrk~0lqQFX?Fj?L`!dfS7#%ryp84KS5KRy30?45nLelK-2{_j4aY{Sg{@36kkTKK(VvhIT>p3O`$J zTS0lt@%{5s5I`Al&!eAeOPOX9V#Q$_bEh723vg_~g`8T+W0a{yes&N4)lW69tsb+v zwAbBV?Tm)wccN0Af7Xze%Mb3rA0{vDg*gMh^>eNz3%->rYcsoNR=2TVlb9oydXv5U zl<)}l)9Ijq=B!YqrgAMnnC<6X9ea zsEAj^fa#-xk9^r&x;yO?8{P;}eB;xmCDEBYFnLt$Y^XwVQ-By_$LR|mXMNO-)R0RX z2jqMty!%x!ia#rD2GtKD9DYqH$s#@tQxrj$P72ATN`qFZclNFDXS@{`tgMgT##Jc-$Dizw=xSg>HA#loHceDhw zV%w-vCyN?-uHk;eViE*knaN`&tE%hjepNS;WbO=ZPAfLBRN+6f=@uk5HJNm4_fP*7 zSzUjhT14|REN$nPH>+!4FH!7qkyl_%G9+I0N`kOX+ET~-TQRXk1(ev*m{1`6tsEoj z`|Eqe>SEiGapQSq@3FR1KSbWN1w4ED4uGrYxwPCI4ej^`-Hz`O1p%ce&9}fFHLS)h zK>1Hko&}*@uW%+m!?Lw+d$-g{v|5(+_!?w`Rf2Fzm0WR8cztAK-&ds(8WwgJ1=W?l zdE-s;Y>bUsQEx~NluAc*iX8JJSc-0%&9KD#elU5h5Fw6^8~;=eK(~#s9B7eE2glrS z6w~*YNGnHUgwZ*rGpav0>St>UR5Mg<}i#J9LiEiVL#>MqrcnHgoq(f8He3EQ>72 zGTVDM7?HH=5#W!fr8w@A)tFiSaJ?(|ov4EA zcc^9+@2Ff4awOTp;1-G&L6)x5!MeBiXTAud*e1$shprPgPzNQqNSjZ!TqqStX7e1e z$Wh|OWa8_1FE&43mP*hj19G-c7qZw_TYN?s9jAnQWc>F|a`Jq=CtHMl0=MvYlI&dQ ztk@KTNxTFT*o{HH%?(!wB?S@c45XB1c(hnDVuBJ-FtyrMzl@q00|^5(t_7cpecNTe zSy<$C^Z^J*OG#mO8+s<@c24jb%RCX?St~|Ark^phk}@)!au67Ru{TbT z+8G853{fl%C>xX9h`hqjWzEE>Tb}7VhP^xppT|)G5%CsxO)CnBqAL5>%Dz|eP>^ge zhgC~py^kVwG#?F#_m4ZaV3SmYUQK&v(DBhydIaYsYO@vg{acq1_1*j*el*2sq5DML zTU^2~(amUjZf2?>mXbR4g4nKYNIaBWgL6r;)T#YSpj7Y}dgt-^ z5%jOhe3GAo-&#AsC{1(gesKhPEV{o&rX1b|zG{(JjZl=)W$6-Y=u^2?ncNEeq5=UU8FY->6we&I9<-jra z=czkq)6E00v8foT#HVMxg};XV7hbHDy9<-#9YmMUgEv&z}tgn7xi)>=1;Yo*y|<< zCR22h%|$51bXbZW)sqzmBr;7jVv4Z`SVVSsrHG9@Q1(Glz2UF7WF)YLBw;`f8bO$d z+rzl~VDgL!Y0Rih?piy#H&V%0J?t4@RjZc=PiNWM>zf(`xl2IiMBz#|QJ|NXrO}D+ zC4@06xE6S_o5MBqwx7U_=#F-z-eg|ZmwSxC8IPFleVXqJVE`)t0vi&X2;!-$jTv4d z!m@p0L?WRa6Cy5F9L0z))uV8oPnkR2)z96rB}p!^#@Gz^Ur2V*W$ODLYVHJR2HX4> z?;*W&QU1WlKp{ws41~45hImJq=eV^g7H5h#(Q0SYiQ7zFqFdNOx9^@Ci?XZP}ZV zJ8f)~c(k>lG2Vl9S;en0JXmQ;sp0L0G?3RKc zol_8xfklQ5SW+z6(E<;~S^Ww?ii&+^RA1lBhr;6_Od*75I%)U zwdh^W7Vd&uK8QGKqiP^05nx86CbOXmv$!6N3ZO!ar+4#d0l$TVUOf*sF12q!_R)*` z1xms{2gAqXK-T+o94rxyHXXgk#?Hw`_$qA6^KwL0sJn4f5N1I{-J#^u{j;&t*yT!R zw6-Qnb1wVsS$0%>l-PHC1i!%hr4Qwr6{k!?5UmfX5m+&2>@@P0-p0S+lVp;6FELZw z{)CLw?;EaB7CI7eZ|4;8Xk=l1IqUcuL|eI~aKSqonfUHlG3WN|b^LPqG;w=XPFgeY zwX4*qhph+!|0*bGuz! zhjHH*h_HS~{2dBcf3*^oR`znEH9M5$Z{|PKr9Dud`U~pK(5=)3S6%c8Drs4!q^YaRZPz zr4YWy{`J{Yc7Ke!L+M;L|!%s%Uf`IAj=Um!su z5KU5yjIqAauZfsyQ3Htnsz6@tf2cjPMef%~cC#g290s;HzG$2Ku#c)@7PL=gN{g21V^`B*mw3pkN#~_dP-70XqE3}{?_734{ewa$H>=U;$zYZN9DR2 zzFP8*jk@}em}xgh^fn*~rKSFDn3jCm%RgBF@tZJ5`cEIbfmmV4uOr3|FuQm5r`{~h z)MM%Kv2ZSpX%1@S;*BToUR#RphP7~LE=Xzk-rZ0JTT7FlS8dn#aH{eN6*14r zX$$>i8U_2QnZsp#DDGw4Ib`iN9^XT)f}Bq_JRvhgp_}hdjs<>{<;;#4vO?7!R&oO| z6h^mjjBM&2#>po$3~z}SFvp`?UY{zdOmmD$a8r)p+7M#!MNmq4#d%Vq?CNEs6$;6S z?^^Hagm#-@7p2dc?j%zO@w;wsg^6M15QiR9T2QcE4Z@C*kZV+*;?RCDb3RtD9JlQC zrhVwf$^w%ybYRHWfhn@SMD!`Crh)=pvGL+Sek|EHm)f!`D^c4UUX!8QYLvKb#Fvz3 zsWASeqIP#?DMRWNcU1D{%x}(2@I*XDMk5?i;@@ZvWz1-mGigTxJr4)cf3_d|N}cTn zD<>TRDwJ153i76N9g>W_jmjP?rao*t_A-5GjGrwlQVDc#hfh3gWUi(lyR-T|P`>8U z<9u6Z?>`C-W1nfW*kJ>cyl!O4s_FOHjwlqbl1rcmrEI?j%$4PpT)*GR$J$<7)`$u{ ze2@Mo?vvq-9K_YU`Eg!E0w!|MrQI!n+g9S&ev(D32i`R#2+~DTdJ8KbFsZA05S6dV z?NQHQBEhXf-EN9kq{4v4Xju>&Qx*=vx~xMN^G>2IXLY|jz_)N6`rG1$=HGzABXZ<1 zGwG(c@_Bd^RTq_fb2=`rohX`O=64s3gezvZ%n2Ehkuo;ueH2`EB1;V0oEy_h~b zGr_g5UjREei*(r#R0CCMJ53O)8zNC4+nvipz;hAD?n{08Uf7(x$1W9<<0J0*4HPPR zZqxZE%MRjg%s^2Wm0^Xzf}ka|_Y%yd(+4N-Fl@YUAF;D(EcO;4J<#+w@xouztAZOqUzyP_ zE0n+#y&GgxwA5E5%8iVXvt$r^haO*Azn#G9`;whm2{8xs&qh`OQgvgDlWbKS_+O`r z=s1?1ZgT2-%-F)U+!vyEE{*zyqjN@lxnIm5&sRSzF45&fXWRLnI`Uz9l64w3KYW^@ z73S6vxcq|1G^F!KYy5>aVNi?Hdh3|q5QZ>ir>B_(r-7cS(ypl?tX>BFLx18<)VwA$ zz5fL2iixb7R=pqwXjoz;8@~REI6&I4>lBs@2p!= z8EE@^ijfKj?6mjiAzdv`s7?r_DjN|lNR%Lb1yO6|FD#h6pct$)D zbQTd5vTrU_&L|X_7|iSC+eIiMJYAPCBg?79PG-9va$QuN&rsxOcZeJ$v_wI!=5I=^rj#9vmKHTqo>|TMOhMq%_+V4IpKS1yoHld zeDxXnIK(ywHjl6&h2L&0D6r0pHw~G;4SJ+JJiPCC|JnZZhC*z*Y4iA_3!UKD%_YYF&RVSLfmXG7sBaHL|sK(McS5qu0sm=?1j?VzzM} z*imyFXrxEni9hzA(4js$C`*0-QX<;(@%50cA5umvjQ;*S4$xasU1d>a%PPFC8j{;N zFJ25*8aVUsRwMc!Bg=DhPufyY+l2-aX$Bk=_R zivC^AjF}chu%|Y7v2U?yCuOFQFN5UB5vzYffe)#te}J$$6&<~aMW5CiP zlP#O{XsMz>kcT|P3jnco1~`pgZ@}Lo?q$)LvVchJJC=(w6RUuoE&k(kqT8-svTu6p z(e7SOAnqS+uVc1ZTnY(Yw_9qPQ{S4cNRkb-ui8<^{bQP2hw}5k5?Kc&J9auUv;tq- zwCA6WmyGNeuh>L>o{o{VzS3Qi4(og(O(M0pdOBDVd+r}DgLwg~e|fB8^tpG_BOylL|JLDUO_)8zECz;NG>AasrdMc*pG-8Z#P9HP8LP4GtklRqQ*lt|zj`~?Tzxa|h_RSA8P-ry zobdkleSF~YeX&yEj|f+|$+b(nrQPVV=;!{H9g^#y4W-F z>2D03`#YN+qNc7W@0;&Wa3P0 z+qP}nNq>FseShCty`De2d!6T;Q&oFc?VV6&+p#(Yyi)mZzkckkVrpuunD?ETdotiW z^Et^`bsx8KkgvQOI@0HvxTY9#+jPGU(+8{UR`R=Re!-ZBuJCaJpwo9*)_mEBA7_D; zzGA>9V_@^+C!`6VM*VXmBby%cIty|CzPPke8%pGti~=VZw|jTSHH3BN{bRX4zqhu2 zw&g7xK;UZaFac$#ZECQmN(Ei*myk*i~Kt>(`fatpkXmFC{P{n zXCbdMnDZa@2F^dcY#qJd0fU$kRHd}UQ)u0ox)j2|4F_v=@$aDBKB<$jkbyzP`c(ws zmFF9@o)^MH`v>@)ZO=caA%#d)ea&*?WQA#G%=ym>g5fGUD|-iDD&$MUuV z6=((!7&Ok#@f9?u7c^(E8_YyBTVq>SbuYe_3{zbP4>JU1e|0)ep~6P921;9IfzBkYi> zB`~Y-poUhnnCX4eQ}Hj5gcWGoPPS2@kG)Sjcfw^*UVWAv+Tz#G7_)dsI}+gfgeX*g}aYp$BT~_ZJr32 zqvI!w*4e;mso)=XDbc0JyP?QZWRV0eTvIE-Dm(yBOqA1E&`W2i_$SqUM3d)dsV@cU z8G7TtR)5v!4rFyMyc0P(h9uV{u{ln-sk{+os|XT((+<9r;CLh%{?tk%^pi%M(gL$s zi_vb||E<<{PIK;#nVEI^kh*6)7Of5v_ovZ;xfIKUZSpjlI;;GiwB__P_1(pW1{%uj ziEB1qfR8H{OTRwL(hR5uujm(Rpwe1^#A9GS*{<<`;#Jwl%AWJIR9u(X)$(`ytvUdJ z&V-g}!CZc`S3Qt&sAHgMC#rQ@SZOeHJNTs=HPi1@RTq)40%KoWpxXW!t2*bV))|D1 z2?6%z*jAzQ)O74F8`s_g3Qac^T0ikQ^djPjw2s{B7F+AM|S6xlgRrR$=0C`hoba+eA2NO8q*S{^5vmrVPA^BAQet zQ1CAOC&W`DaGK7Ci5X8}yr19-A`R{rMUaxg#8TDBJVu7Q(#Rbl!$^ci2o$0NL<3SA z_>7SjCH{L2C5R-mLBs}V=x@>!0?3PzOhS7@eQ>P9N)mpJh+J)}QpQ=*dR(vt%j1I& z13I(L{fb83skVTILO=;`zwzas0dfFQt&mTY`mz;KN;Xk`CNu~e?nmY1y6M0^^QTak_9ncMI4@~SWLyMO;v#rz}o zeTK3X1uft^SqRctFg^)i)Z{XWaom=fGh(X&BdrHDN%<7zE5Oj#5{yvNxfqbCio2Oe zKAy;EXNqU1;EHVub0j0R6iNn>xC!B6hw1`~cL$v)&r#FLC zW*a47#16{I^ySG2EI5-&M3!J=IzF(3bF|6}QHC5u{jWfME^TXUiiBJ9D64kDHtcBi5J zediYFd^6ILBdfpLndXMluAT-h2hhlvZls5{y>>1GK^lJeWs4Z65b@Mu5jpqrzC1e# ze%c}>bsxU!a5u+4u7l_1r0PqmIZ$feHO-4bPs3+)Y%b#z{nIg!=VMWlckJ2g&)ym?Ow99j_$q84)4XGuv(eJ>?w*y|#^h{%ep&7kO=m>D| zk$14quJ3fy>4-WkqM!rfw&(ZF&oTICq84U)XbtX@$er;U1zP9`ZXg}dddn?CE;*oi3-qkKAIzfvjyyCUNdOapjQ~Fn2%{!`-QJDizYP6Yv zuPB2}>NFK0-oBL22Hxk+C7{dW2Y4XYJ9ru*py@fSr3>q=DbQ~jK~T@uZ-hqH7jEaK&J*_kr@#j#X2h|!x0RDHd0S5rB5G6%SnsJ{l8x*}3yAk|6^ zdb4oK`&XtzWi}i2J;5=9uDj`sv%Ei;&ss2}k>XNLPX5*`Q$eTdm{)5&X(vv5JhU)B z%02}tT-=_{e4`S;av%?)Ltb%TS>E8S>-NQ-9pCMQ=k?&dSotIc3a+emqMcpI*C*Bt zi+GU^t<3RohH_eL@%W^+_t?!^lk8r3OYSUs0HtHDSP2v(vjJV6d{0SFd6_y@f4M%P zWgW+zV+=2NoYp*bfEMhSR~O-(?_Y=V;!hosr0J%Jd<3uu7@!=6_h%lzS>B)ch_E-x z{TP2D68R`Ywy`RS&Ng80!Yjk|-=QAzNQ}WZl!8nwpbWug>8|1>%V!xGt2|w!6~T4V ze2boVXHiNL6OZgQ9F`r%wktKf6{*G=?>1HF?@0PJrl{by0l%#PgjR`ublcvxI-N(8 zfoM8a6S>-&{>8e)xe|@Oa7z^YKJVG9-(hM5vE(@7Sef6i`b?E2fFt*bu!sPO2>wEX+oMW3&R>!YQXI(}*bk~2CL71d`~DFlX#bh= z>NQ%~9PnC-=c3V`|Kqy!`m@L#fSO%f`ses{dP1;?=APNw)q|T41@?dxbRvnbAVfxJ zHM6Z(&^3KH>>6Izxf17%u&Myitf7SpHA%bMA(%9+FM;5~iT*1kqDl@H#jC6!Ql!jj`MFO#sddLCW`K z=1tFnP}M>T6JJSlrmA=Bzh`KdIYF0%iYg^<@Y%*bSi-j6AMe9gLoa$QjXN+#h~>vf zK6!#%4}SMEO(9z&Fe}{c8fdi}1InUI_iZYY`WfJ{hw|&qRe}IHF|cuMc`p*wkw7p* z?}mNZz%!;tzI&=^=i|-Kg&qsP0joZMmd|_UPt|&VSb+b|>Ue+>J~n3BqwF%<=aW8` z`Fk{79t2zl2;a}Rjf&V0Jrd2Ltlzgkr;?>+EvRdvLVvqJb5dVhu)n0^T1&?vSPZee z>HVqBSinuviD|qo)+|VDZ9&eJCuztx+!3+@Vdd-poav8JogLlWQs3MXXQ9By#r}jz zQVddXj(WaKW&p`B^R1R!WrsH`*V671dwrr}FUYP5VoVOe*ETJ<4jThS^M5=zPxOH; zDk^e!cQ3mZ1b_ZR7Z*4W#A;o4mrfNyOq+-taW^_Fk!}3WgNViAWeziqG8vW}b_dt! z@xAHF@U1TQYu0}^6E~fYi+lA)_{Aa`#l{~k2`FdaE5>8GdjyaLb&xylUn6aIQL~w^ z;Yeak^1tJ?hkO2RI*hG**ZgSd)z9n9B)V&?e(6QafsPxbKAPfxnK&HB!^5lh0rmeum38zvx93FCR_pXeRcf7{Jzi7dJ@Yn+3{; zARD76f@vrV5-8UM*Vn1X>*doA6%D}*{SI!Hzfe_<&Qsg$E%la}>HZFx=MHxBc!bOk zyo~l8=6t?i+iyKspxb#O3IbNcb@I}H2uHfMSw7myd*fLf`PjO4RqF}cA-5)`8Gd~M zb#%k8S?sfKP-fTrWAADYhzWVjyQ;U^m(A#pMnWGW;^7vF?PrN2MpDiB zK5BoWZz2;UB*Lo>H|&B145l5VAm`6XzMa!o&jPKU$ou`z?ntCYx&=B*$y~qt6*Dyb z);{*o@O~l(@y+IL06oCsH6glul<5gC9Rc!xUW)a*WM#US{4W+sdlQzSvbt&k?|Ft! z_8d0vn_!mB`u#xAMR&d$KIn8XRP8V>wgwn_PXZMvg zXdV%qD1#@TgN(v^@sgAC;N>1}G@_^&ks2|I4KSSW&v3Z#%h7~w9dBlqeIFDdM4_6Y zL0tCS!Cv8|QOc}@z(25`jPg$dd;+XM@{qMZp-9dX%xbgg`F;I;;?JrNeZ8e@u_G1J z0g{OT6CH)=k_DKto|k=DAy{qiuS*yOjbh5}#P7Rj(IYY#*uqphls4*IH>MRVR`*3`*Vfm|&mI!eEg&(<74^EjGPsw>}K=Hq8G^|md~ zkJX@CMKDKW=e86dg{ysWvUWwxtfpgm zZUJsZNw8OGAW|oI{mnMT7>s`l1?CRE-EZ=_tftm0p;!Yb8u&X`W*#gEYNf)v*c zrTyVa=YA#yUoYI37Ft+2SFj?7_iKRn74`P!GB=aU03KhY2G;I`>MY^Y5+&fQ0RI!YBB9$%QNE3!Iyy%!$ zg*J*b24*gj^zY^mV5J1;n~Z1Q95+={K;d{G$zu_vCFU z57ePK6}z7Fgv)EEJoR9Nm;opDQOle3Nv5yQp+{qV<`fyU6%RS(ck{$~_hy0*&NONn4KQwsA&X8wqEt5GdkBwAXiuXTM4A1D+SA^M z?Db^2TH-get1BKssa&#Di~NB+SDGk~^cR(Sg;GTcGs>JRAUN^C*xUMpzZO~oMwf=a z2)vIMGK3~lYkQ`EXAfANnb(L!UnM@4AN(bex#!L=ul3}}qn&6=5b8zQ8E@QiIEC-} zo?b{inBR}`({DVtmn`-W0b^?M+t0McwzS38)aBN+r8ef6r-2b~J&rh8i(Q3VC$5R> z>nBckL{bhsOt13(L?r(0<8LDCq^4uSM4;JQcw;#+7rU3wpPg6HYva&In-L$6@_?_MF+;D5LA0)eVV~TV<6AgDe7f8@ z?SkdBF(2_Hst7t9P9L^$Lk;0p;l~J3Hq)^jAq=E}o5{%1r9qkA_%Jmvf7Mxg&#v4x zBgCl3#WbSxe~!Zp25LN!InLZ$+m@WnUZWl}m8JNm$nC?Ec0knSa&~>=aTDmMoGoKs zn+#%reIWhrg>AQBJr^FOJ5*~aC>&78*k7-(z;%RV`H$g5&;n3Mwqz*ES3dGbbmY|& z(Fx8FZqpt(|Cgx$*Ai(B@%Zov3GL6zL4_>3Dy8B9`wA)-wX~HA{u)inXqBboZyjq# zA!GJu*a`vy_`=ImyloIDBPbDmaHR33xHr_TYTsMR2*b`<{D9$gyc=5n+JfR+<(qwiInhRA zSS-dv{;}sX^yoo(5v7eOP3sU23k3oG%bKmot&3J6%p@bs)X|FE_|fK?0o#@VQE(@#b&il~*|^EsT_;k-ueczrA#|H1m`p zKU5}ccfGim8}r(*8@Ch6_^Iq8a9N3fJAI*E!v%IPK7`pTW4_2m+OaJjv3|B~HF5Xfio`qwX64halz zOW(2B8vCwdiGF!W->I{o|A&=*Nn@Uyx4zg%NpkhkeS7!Q8f!kdCZkjL@xWa&QjP;} z-vh1?J{`7&ZUaANehuPSkHr9G2%;i?6rXN^(VY(?T_8PJ7*hMi!@gh14!GRcHM zwfj1L(=9zQ3?0NTPK!h9Q;c~|Gw0_ZvU@=PmcS8pIQk2@Rw3K zAabin0Zv!t*H?qcxlIO^hf8>TwhlwP&6j|!pNWUVDTGNr$}4F1c>wE@?rWu!((7*5 zpFnGiin&_eU*|0Nf7c&^rSxaEe1b?DMvWqVPcWq!1RuH4qe3EX+hHx$q%o+#)aiST zc8VBN17=QA@~?$D#@5XYY+1GZAKLvUqxShzYr!Ay8|x~ufQZAyKVcx|nzt|N@*J~} zZDK*|`kHXaOvkrfjQ)63z4z5mxY0JC2#vG|ORbd&1aAzd-jCD-8A?_+CG`Gv$Ek-G zUrYjX6arc1uPxIIKUZ)g``#K4L?<+iJ4eYz(Co6idF&gDWeR0}VY@pz>p!BEN-GdI zrtjy^?0Qbmpn6ADoe0Ak-P`UHjGw}Q5(B`-Cv5=VdWy|VS=zf{tNAtobn~W(lfRq$ zA@%)TW#PQsMQG44s_>dvM7Un)P59utl*39VIlKWBYB=049)5#gPEUT0+`0S|>l>?M)(t9H{vxZowc zP!dM!OB^;<3JEzr^cg)XICaKl46f_rzs$-WRw6!nLGvy+zDq(H?+vX%fQwou-a;C| z27cZ+ao7mdvM}4>mE%qJhAlF{ILZwpEOwR-MF}02p_fXg@Fr8H__recJE||l0(Q(u z|GFmLXy_$2G~adCw@O=)iSL?w^7O3t{)QFM^-)FA&b!+C*1inw8R)VcL(izk!>1I2 z0CVGfzOJ%(zmJ)_g~&9D$WN+j9|bd9InLx}JJ0#Y%L1*>ZS-Iz9S6^qYZ4{UZj`iM zh$No%f3{yjsjzYxbk9DW`uh5*PaJ8j!0~c=-6o;X{R*IYpqi#8CmY*_|MRBpa#fgB zM0EG_mM?uqjHr^-MKki*iq~O^W|da$-W2b3DDH4=Ejgo3gO!QhF1{Cxs=?!HmM^&* zjzFITLchCj_lZ;K?Wkffd+kqgLP$dgxeRb{mg1W5qhVacGl|zMc9F`~3yzmOBpJpZ zRDqk{kg=tEi3!Mi$y%O_F_ z`!UNH-{>zIw0zW=NWzOIsi!*ADRJg0B3N1pqu;8Jm-*_q-)9hUMAsh%pt1C3)YN9% zTz49$FTc+I{_0BC%K$XKJHu07+hwhPJ#%L9zE1wKb>&1MH4=&NB_2e<{>W%3v>*Pu z-j(2D2E!4p%Wuo?%x~-ebx@0PZy|jRj`lyr1v%oNvgE@W3sEmg13y>S`@O+m73Jkd zsMTdU6K_q6(w%WZYeJgNUS zUd*R}1oI(u7x-0|?sm(<(2jPb&fE6hm`2HT%Cssb!iSSsa(~_t9cKp|cWJKqg>)HR zqZwwpZ#{Z=3X(k^R{I@14RX>y(?#(I3PE1+yd>o{eQ6pEbY7p%XzjVCCHuWJJeXPy zr{?;7vuGn+DTNBC?ocG(c7D)RUSP6XjyQU2Iz8<|N&beboBRYsNRCIE|94i&;-4Xk zKZ!+`CBJ+QX+nVZ4CF3Onz%c~Y%Urq_#i}$TmKOJy6BpxtEbcDb6XB^NP}tJK z>uxK}94e7>jp4uzg?rgiLC9(+ytIk_)I?up&cs#0x0E(O2>6eB$pk6(#Pt#zAfzzM zT_aP~?aqG#P^x`98JhDfO_WtT9n>zzGQdO%^!lfu__dNpzZrXG*==L^j+1R0=LtCE z6}$r+`QQC~8?RI)!a04ne;?Xz08|Z9vgUC*`o~?5*qJGfFm7c{N;z)PmtS+113+(; z6_a;F4g69k1kA;_mM9Rt3qD)_�jI-#vsp&AIKz`oO9;xtkL(h@mN@jHm68Fn}3p zb8f0ean;NeEqNJ^Y9brEMtNpxANAMO=>qxYhA`5=;iLI{yn)oSwUF>?;}G#BrhgKN za1+KFb1N((`lZ`arEPcMx=3qIyo@mr?Hb$d%_yl4GUNL8c;oUn{r%<>2nx0yb*8Vp=0roE+FbC0fIH>Zmt$lojqKr>#pJ?fT zw>SK)lUnq$djv{x!M$IgjwWM?MSxLKl$&33>o7^cnnDT&Ya9pYNbdj~Pt z;&`Xirkx+OEt?o#+KlV^y_$X7R5)o{{&=av!@RLv0LT>lPa3pVbHc~ZX3W5|xViRD z`#4|WX-}-`){=S={6SyISU%4KNV+BOV9@2QNuqOmfnK}U37jidi$@O5XC2-F3q*pS z5(MpWjf2G2 z8U>EbJNV>6F@^GZr3b6^gQASeZLir!bSR2$5)MG?l1LIJ+a)@IaAmo>ThpD$K9VP6 zGbVs5mjjvH47M0Tk_#g0#C{FmGvGO0wKbJ?+Iy^C!F$S++d|%bB&IOMN3zuC_d;Oz zLX%-J0rM#9-FHm&TNL%r>#>Z{=TAz!l!}I9({7B+jGSq5Ki5D*p6W|H(M?`mSTNh`B&S)W3B~y*A^aZ13}JR;$%@6c z(W(oC-(v6+(^s@)7o1-#o+Fk+OcA3$e003O5Mu0YdYL{IU~&%d_0O~LBIyQS|L_tu|3 zbsim*wn_@)27bTId5(klhMWD8=%4;Cw_;8Bfgrq4eAf2Ydpv2HfsmJ#yO_NDIM=tT z^GPRt#_d&Bq9f4VJ}WuhZ;6U`#*__v7so!4}hJF95HddAA)E5P#x)^7UjD7s9>bUr^qmlhR2k>409#euRliWd#OH zG#cDxV}K8f4)ss;P9lEk0Y}OX{Cd@pdKyK?c-8{SdJp!+kj2Y_vFfCXQj*eON0*`o zT-3x0L4EURH(2Y-Skl{y4LweTZA1BhM^jCql~XbQhNmytmV8|lD!KbhIV!-RT*Hm& z6p+&*iWEbT9Sx`Er>DO88{d6&Dt&r8pA&)rVRIXsbZT~-=^PJLox$}KYx>dPT?wzR zUJ^t5qCvmA3JNWk6zx$xG0u4_Jcn(2=xZ=oK zfyY}84NUcDKmbReCVv0s!uoD>A!ZoZXB*jE-%Wk+N|#ut9@7xEugojfxB7c8I$rd< zt(<^fNr^x?g1L*LQuNS}k{y&(fAmF6eJK3YP@i4&w5fb!lnvoS*-lNL&Z+x>BsRu9 zlQ5HP^zGQq$27uNka=vhcj{#k9Lo5ifQi0jpjzpI{^`uEPxtsd+9Uz&_m0;a;u z#iCgY+B4R3pYn_Eoy_1P%ouvFl6B}d0V<7$z5i`-vUo*^;)+JTb@)2-zXD(bh!tp#AR*ffDJXCptH<}8)p zMGpliwi(zSs_?Cq2@KUF19*ykPIQ5Wj_P_vr~>t-9>>tYn`acw=-&MfUKcd(@k>jl4bz-Cw>GFMx zb`{QXVHg?8aMe88p&+OEWIps40UIewoZ(gViK5Z2mSLdzP%;MZ*1XKaMVqX8`&Rz; z%e%UKGyj@r+%=hz?k!tP8QPUK=X&MQ4yV_;%IN4b%E z-gtj+ms7S_&rJ%0Q@LazL(iX=IzYyn(CJRa;)h=H?6FFjMs4OAZp&{sC0^h+VS;2i zuomsNvOwoy5tsg3RhlEMuVACD>D1j!U{FMbd-h?|(yF4R<=rzPoKNcFS>yIY65aDQ zuNo`Q1Hy&T`~IPGAZh_WmQvqPS>KR|9}~YEAP+TnEQ;$lv3*Bu>GW)+uQyzJcCP*! zA=%6Xw3Ln)1+(iqLgr8engaqoY6*#`0+;uI%%dME$ok{VFVrs}Z53Q2J$sP8S|K!I zwahZRTSX4XDo)B+7|a@<>-W*cUc!hHbtU+{6JD#Zoj6^pYQ4dZqiW4~68_ol_G&4A z1b>kQ6W5kmV0udEQwsw2ARGiL9RI7O1w(7JRcdjga;&<65v z*K~i;RlYYJe!K+Mf}bq9fiAlLl5>oe zUUSWcB2>Nv(D|ED>`Ef}L)_^63kU*3DX^`O3b>D>68D|wGeOKaNJK=%v&yo_!FTON zf=?S?W(ZY+5DC=$0x7E1;hX9QbLk4hb~pJc(MRRz+SaOQ1r7o(!vds=2XTX$jzNBy6m zun{VdEu#dDi%`fF0&&jmbCop4x3+qtvZbN!hC>v$8$hh(jk5~kC-WT(_Ws-F9jS}c zjL$v4s8lsMUK{y4$oRA`F#&>C{r0r{giXCer&SS^(}e6C#acJS1|Y!B4(;GN2Yeu-3?Xa1`SRbTR3eu?Rj{0AsW)+CrmID@Y?|;lO+; zI=>wq8JSSI(TUUg21hVGQAzHm-JaOm4hokcJxm|Lyy4$LqeE`mx+@gR2P}yX`C%yy!EKcVt%gV}&xM*-D`EPc-a2(U1UoPen(`h2cd+7uQCYDK<{dGk}q-Xf* zHG1eBT`_B7zwJm_bPJy{6^O)Tb(MRO74bZwiI`cN3@Sl)Ne11~o$aR8P<>9OnBdpd zc5bZ9Txu^(E4`T5HXBO))#RY1B-wu|pt9$_2j6!Jhqiy*W=y#rb_76k=2 zRgsF8{{#DNEKtcVf2OL83>I7iFBY^oB&ZjPR`)EKfJmM~0-|pf&q513kGya>AI1zu zaEYEYULK!Cd8cMchgIRQQ(UJweNI(^nm=SAy|u9N(n6%{W1zHf_GkOqtFzzxr42jO5op4T}GMM%ey|w_@PsefcJ4+Xa?K{{Qlj_oq}pxC6dq7omz`qMcLo}3rj$d7Wj#`{wD@UJ+)Vrmpj=E z>J}YxQUvE>1unZayI4854YU9YArN3KbOyl$*6}5v{u)|(n{S`Lk9=4EJY3iFUUnb? z>|m)psY-!M;_bQi-$An3skYh4XJ*ik-*eyABnQO5Wwicld;HJ$^b7zQo#A7SotBRB zI_59W4Vi!cg%Fsx0*Gt+^m;keSEWzaU#KrO9c>7N%Rs4AGT2?#iYm=T!(^_^|HF=i zz*Z@N9Ebl9ANc=4ZLpv%m8LiW>L&Hi0AU1xf3{9?hd5Mentn0za?=05e!pu1uU}X3 z%;W#Pq#$bI9i1u*e_70zif2IFUFVinQ6tqm-R$KWP7xvBwZ;;8y)UzCLg|fX=+ja->c^XgFULn|Fe6g{HvS zQS~YV-rqPLH2ByuGM!P638^zB56gi)CB(Fb+}hdvX5L@J_=8CQ0PcRDW6LGKDI?w% zZhqt5o>G3JFr@Pu2tOpf%V%dHEiV=EE>}OLJ7iG5VmV|;U~f7Q$X_eIYx!yXiALOw zWEx0vpeX`yOV5LOU9w}&5OVuFIL80PNqmRZ{~;6F)FQIXfG>j{!1H@lc!KOhtLz8v zg|dPlJAvKN7x61}40kaqd)Y|(bHK`K% zV3EpEzJBR?iukiDxw&`?ls-HWw{v04x601LiaH~u{nwSFDuMi&R0W-Xgc;6Byk|#8 zN5lgzPRGMA0uO7*xbnExW*sFh`py!Dc zE~hZ(n4-y_i&_DRNFrIl4&?&X@eJ`BDH+uiua3fjKpR_W^#%C{YZj5#y&$7Yrwn>~ z2}O2UD$%jCiW0(Od9Qy0aDl$Al?8v>UCck5@HMZ(#&nkavvCA(vR zwyc_AmR*Be+3RNH8`T}V$Z+O1+C@eJSt4&`)vVf&11Jg74)d6}PaJMVD7apLob_Lt zYE7$JErj$tD0Lp)l<5R4&s5d$NXyn#y4-)>$z5ho0;czUK6{)+C!0piZ`cBi-wnzS zl4dt9eG-+TIGvE&dofh@RuA53G@4~JG>dZ#bh{Gm?!ykk;V`^3hdj zcD*JSrV=W93DSwbMV*o#$iv!W5-<2VyAlJ(>6W$BVy+Z$FHKoe$qR29n}$1K8n5a5 zlSj3P^wG-59kLtNZZ+KrgF!%W$fU)D)pT(UWFs<_JuL|GG3d2nXvrs{OQ%cQW^&LA z;lu*N#+mCT&%XCxC#LK6cXv9y$tT_rMQ%&KayKrOCO$IXHTze-h<%Euo@}GNMuY}% z4DqMSIdc!u@u4OTtbm1_iG_`2lRYxNR8Lfk^%`1id}~-e0MM{xJPQN}#x+QjhEijI z&C#!yv^|k+V2$B_o@#xaa^AHkoSJ=;;23Aoe|w;>Zf$L?O+fo2zm3P0WV7X~^vF>` z*vYY1)2+YOq9yq$5hn{N&x{RDQ1h7Kp5XQM+c~ui-9{frJ8}u0Mc@@ujx!&itG6t3 zn1+Jj=4R7J_N(K;VX53?p0{fGG}Z1Bi5ADeA|6`nZ4J@_VBG0IM2cEhzFIj(HVOiE zm1(Wo_Y@XR{arQ*Wy?^@mXqn=o}2{iWzyN& z-?k?i+Eyb}Gtp0(MW+HAKJ7)KlCwMgqLSw-v1M2vzndiYgLnhc2+r}i#biOr{V%{y zS7b%2cJ|$GoM~5Q`C&=BVN96r8%gY{Le$VyD(1@_8jH~paa-1Vb>dG}Nt7K)Ak_K& zbM|I!rVDQbJI!=HgT&Ue^c>o|q93x_!W*k+y-4%9{dB8Y&V6ubiD?wL!3*xJVoso> z7ZgJmR#EOn^8-Z>n)}QyW(Ny(X&yw40~m(Bti=4u`Qx-2h}$X+YQ%KLmD$deT$9f> zXgdX8^KKlCd?srohBKU>aO@9uwngLKa6X4YB-k`azc^?78nXpLF(ib3mqkTijn}gj z{w3X%5K+as{@##xDcaEEUN~90i0%M?d<|}=E#2G0zg`~#|2zu*geys$Ii&a;Zfj+v z4|o|rylp{W(7<=3b3?(=>kCan<{(%vo)+Lckp6z2pg`PLe7{xs>B51`+C6JQ@aD`M z5aPpMOCyX%ID4sSJxGWuOF<{gWI@uO9QwnnT0KfH0(Q;IQAhBWMDMX4O$RBGUcs%! zLtj?qNbY?s@w52TI9hgvs#@_9;TL>qCSx6sqE8`U?# z@4*fz`{8LkAKa9sW37Ac;gFXYbSFkX-$jFnkoD9yLNVhOCyl?1jh1B+jq3Wl(Vhm7 zA}^3=i2|hM7-0hxD*>FFU_#S2PoXCTXD*Y=!)QqYj0=fW4<}@*{;gow8OGTKVH-4qIZNJ z#+|qXxhkbxX+h@8 z$V~X8e(ViXeCYKhsnRtlkuv#PP9<1`yUfVt?Nt4TLDC>v=drOI=mB?h+@%6A2` z1{>7yCsQXHDbFxji5ew9H7q$wKubJzWzds+Ody_WMdiESV#4PTq);b%nwg3Ci#1ra zf+e{hf+aNKME?l>mK;mAnHG9QHj0lv?W(tMfX3G|$RChV&MSf6XY8Jb2^+_e4kGft zZO+|b`q4Wf`B(j3bDZVb>=ZNOj7=hSUnClg(}wSnh~dMs;28qoj@=i*{!p(q{Xmi< z{8D;p{n7}3Dt$Q^fWCaPP_Qm#|xWFCQ1$I25P^83}bgBvG$+W8pbEPmR z{Cj!ix3gdyVXBlSnpBH(YJ_*``!pIUI_W~;Yi*c-SfaD2jyv|g)`%DswaLfUqm%79 z*5VsC#`aynX+G0Anfp*+;fIx|ROqr2R=%N2{p?56xw{#6Y3{4wz?Vd7^hr z>?Dzrz5bjRRY-S?IMF7(CmQoT+0l24hZ2##21}pRSov!ctd#5IYSJ@~Ps%4+R4aX( zR+634{536Ir>W6xv)=0c)WgvD?r3w3b{Ck=C+ygNM3lI#6C@g8IvRkVbMUy=Os2#H zOzyuOX($|s7_mz3BiLHGSi{Txv9u&PK4iur`3HIX1Aw;VZBO#SE-0cU6?F@=w6Y)K zGa`fKIOF4SR+UcZ950BBCd!=pEl8m(@@~-}sqGsQNvpi_DCJ{J?AzxcJ~R%~C_~;9~vDFE={cNnSxRQB(mCybtQm(ONW4C@ZEuPK!R+oCgf6?!HWjEL0Y)e&J?e2?Svu3@aI`an){v7CaE%HV)EjNC!B0 ziaALm?<$dAlkjMlggvi1qi2gu7qF9;VJR24#vUIF{-_#ud2dZAhS7#@3Yt#)2pex{ zyVH}fsH`5#*;SiUNSoL7J>H!Gej64%T|<@iz!C$0u@1t-KiZPN_W9e8j*PNDTwX^_ zfX#Lz6u@fLZq9s_EMEVglJK>u`@u@z+{=u`E$wC2SZ@GbJ_frxb_3`P(^EUY;y%e! z@oNkolz`Kbg*0K|J9Mik<;GxnV6ys~B4p`-e6hdPv@9ESiZB7|a zAv+sBX#xbvH&+ane+oxc8Q@qc_26_;QqLb4tLAm-l%A0PC~#m}>mmz+$Ue@P2njoN zDWA3Qt6M`pE=I#-+9C`%?4fk8pgzu^@@u(>ABHHYr~6CuagFqLk?YS3Ghjx?VtPs$`-NDmC#G4Nur?zFc>BxzTQ2 zv(yax1Zo^)p{WTP)bfR|ir%5;=XJWsL~f*6(2WZfgohXZh~P~2lvs6b$v)=)3e4}I zKoBV#0Q0|JR6>S8KKQseHw#+z8@^tk#T%XwgdY9;2#jr2xG+?qO;DBlf9+j|SJT%Q zXN1ZS*#!~|p&+6nyC4!Mh(JW9mf@n2Fv1EbG6GZ+Who;J8xSxuTBTxvfIuii5C~xj zC=jMVnF=CdSw%}<%23MbKkz%hobUObcXGaY@2;13zn^#SyHBsgUfLBmHo%kD%}Tks z(70sv`EB|RfTbxO*~+BNx&mYl?|w&>55I>@yz`tgcIF`IwdlmYP7GY`J=*@=g=Qim zitrhaWk7-DJj!z2+(uE0fT&&S=Syk2{@6XHzry6rHPe8~EVWDM!ExnN-2!&qwhse; zO$)kpmPRgR(K2X>8>4Di0R@kt&LB44>BpssIXwrJ6$OQI>nd*hB9=sw3FIy%A@W0H zo>rdm25_Jm!QuMeqWndr)rM$=f_Mg7~M+PpGk= zk}=trmk=+5$Kq)2sbv|(ITAH%Dyjf(-~KrJ*~AH&-AuqiLMZ*@I@I>%T}g^dv*BhH z8YiV1{_h{7G84emlzcukUb4>rmv;+I@W1zBHj?`Lmg#IYB90S^Dih`u3nF%OiB4k| z&2rO;?Oq3nw$Y*hx{SD@gFmcbV*@caH|KvH60ELZ;|IxjCarbvWbKf?lMScni2NCX z&QB>?7~bCNwIi|Rj!sJ3w6sp;xFqL_{}l5R+6R@1=AC_6wHmKCCnY0OFL5{I^{=uZ z=27fIKM6!EMn*=0!!ga~2yyND?_^55y1E8|RPF5S7`}rv)@YQh>Ey$_{IeyV5*h=g zJ_CgpxiwHdri&taz#bKJ3;N=`L{pm}^Qp6g<%?-v`3F=~tWu1}HLtQ7B+row@xl7= z_7bL31-A2>0%qvc-Jog~9j0`xDQVy2`J3^UWqSre-sDXJ-tl2x-v0T?TdSFzR$Yr& zA0v85mEzITgx-a-D8w3H$4&jUw<2CBt`{VZE)6YR=tM`WsrK;I)i=Sc2f_P}$b_b0 zBvqZl);_%(lh?-e6-|^5;8q8x41z#Wv#c}2LqngYb4bntE8&WbxL#+gi+q2Iw=;%- zxjg@d&?s$v2Ty0Aa4##RNebpQ^!$7k_=%yQVITN&i9_}yat)@l1b6LDs)rpx zFBxRc7|Kek@LMM=tDO7V~=RB;A2-q;zGS&KbWKdW000J^un8}6$t}S&z1}8 zKem@-s=M3OZAQZ3Jg2`jREA#fbLMH*FX`#&adtAHXM40~-B#-9r>%4wrhR7lZtf}8 zZ4H?o8wSyTD^ErvVXX(|B{VE8EsqFK+6~^!y@aoCc-&5Jp%3hJ!ec#0Wu~V)dpq_Vr8Qqe~K{MN^3o zv|OWqxWoS2x?$GySSj9VN#iIE5NM~p};jPZY1vm+g-7uYPXik5X?9d{1juf@1 z)VXP?(y!`%;A_YRrSp9Irp%sT;z1`oT-f2^%Pof|LG9)|U0!nz7?no@VXGeep%7-S z2G#4t+59!{u1+d0Aq6}ti2zjJfy`gYe9?@=AAjS5?}_S7O5syb=~6is1}!`%;=B~ zQGF7%z~Q!ZfOk^y{2?$Ul|?eeLdi8nj-sjMkPdOf7+FhxE#=)2p>L}srNwyp;=c+MbI0uiVQL+S9H`v6m5;3dC}VV=eu${IQ|lN&c)u?D@y* z%GiWhCk{Ts2{8VKZE4EtA+o%i*;rQOD%QjIq>!q9o zLQ47GIWd}uwffHn&FZ6r7vW~My=};HB~FncbxY$xjC_kb1>&}c6X`YGs-e%Ee8?Ix zB-TYuWcWWbO3{MbL4q}lYM;S)gZ+f7g7yZlxzK*j_jGz>z>4wL* zwJ0kjOhK@R+ZSQ=ueY}Uwia}84Pd&*sw*nBw++oEgNS7B9!=>)cguf4)H;DmF6180Qtn|5qyU)U??Y+sjNC)(c-m}0fs+d0Dtv{qyA35j{!gbzeTCkviR{UYRJD? z1L;u~Z0F~#NZ*X>kD_(B+f)i{f13=-*|5w~L4gC)&j<_Zi XP_WqKrsd(z0X`>8td8d&Ltp 에러 처리 방법 +처리 방법을 따지기 전에 막는 방법 먼저 살펴보자. +##### 에러 전파 최대한 막기 +- try catch문과 throw 구문을 예로 들면, 이들은 에러가 발생한 곳에서 에러 처리에 대한 권한을 가장 먼저 갖고, 처리할 수 없는 경우 다른 곳으로 처리를 위임하게 된다. => `에러 전파` +- 에러가 전파되는 3가지의 레이어를 정의하자면 다음과 같을 것이다. + 1. 에러가 최초로 발생한 함수 (e.g. fetch) + 2. 1번 함수의 반환값을 표현하는 컴포넌트 + 3. 2번 컴포넌트를 감싸는 에러 바운더리 + +#### 🔍 React ErrorBoundary (에러 처리 방법) +- ErrorBoundary는 데이터를 가져올 때 에러가 발생하면 그 에러에 대한 핸들링 처리를 위임 받을 수 있는 컴포넌트이다. +- try-catch문처럼 동작한다. + +#### 🔍 React Suspense (로딩 처리 방법) +- Suspense는 데이터를 가져올 때 데이터의 준비가 끝나지 않았을 때에는 컴포넌트를 렌더링하지 않고 지정한 컴포넌트를 보여줄 수 있는 컴포넌트를 의미한다. +- children으로 들어간 컴포넌트가 비동기 처리할 때의 처리를 외부인 Suspense로 위임 받을 수 있다. + + +### ➰ 패칭 라이브러리란 무엇이고 어떤 것들이 있을까? + +![Alt text](image.png) + +- React와 함께 사용 가능한 데이터 패칭 라이브러리는 axios, swr, tanstack query(전 react-query), Redux Toolkit Query, Apollo Client가 있다. + + +### ➰ 패칭 라이브러리를 쓰는 이유는 무엇일까? +> Server State 분리의 필요성 + +*Server State: 서버로부터 받아오는 state(e.g. 비동기 로직을 통해 세팅하는 state) +- redux에 server state를 같이 관리하게 되면서 store가 점점 비대해지고, 관심사의 분리가 어렵게 되는 문제들이 발생할 수 있다. +- 또한 DB에 있는 자료들을 프론트에서 렌더링하기 위해 임시적으로 redux store에 자료들을 보관하는 용도인데, 시간이 지날수록 실제 DB의 자료와 redux store에 보관된 자료들의 일관성이 깨질 수 있다. +-> 패칭 라이브러리가 데이터의 일관성 유지를 대신 수행해준다. + +- 간편한 비동기 데이터 요청 +- 상태관리 및 업데이트 용이 +- 캐싱과 최적화 +- 로딩, 오류 처리 +- 서버사이드렌더링(SSR)과의 호환 + + +출처 +https://velog.io/@0715yk/FE-Without-Redux-MiddleWares +https://velog.io/@diso592/%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%8C%A8%EC%B9%AD-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EB%B0%B0%EA%B2%BD%EA%B3%BC-%EA%B0%9C%EB%85%90 +