From 8aaa82c506e82c52059c993cfd702c6806a45ea2 Mon Sep 17 00:00:00 2001 From: Aline Yoda Date: Thu, 25 Jul 2024 21:34:58 -0300 Subject: [PATCH] =?UTF-8?q?"Exerc=C3=ADcios=20resolvidos"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aline/atualizar_livro.py | 10 ++ Aline/consultar_livros.py | 5 + Aline/criar_banco.py | 18 ++++ Aline/exportando_livros.csv | 6 ++ Aline/exportar_csv.py | 16 ++++ Aline/importar_csv.py | 29 ++++++ Aline/livraria.db | Bin 0 -> 12288 bytes Aline/livros.csv | 7 ++ Aline/remover_livro.py | 10 ++ exercicios/para-casa/README.md | 88 ------------------ exercicios/para-sala/resolucoes/empresa.db | Bin 0 -> 12288 bytes exercicios/para-sala/resolucoes/escola.db | Bin 0 -> 12288 bytes exercicios/para-sala/resolucoes/ex1.py | 16 ++++ exercicios/para-sala/resolucoes/ex10.py | 16 ++++ exercicios/para-sala/resolucoes/ex2.py | 16 ++++ exercicios/para-sala/resolucoes/ex3.py | 13 +++ exercicios/para-sala/resolucoes/ex4.py | 11 +++ exercicios/para-sala/resolucoes/ex5.py | 10 ++ exercicios/para-sala/resolucoes/ex6.py | 13 +++ exercicios/para-sala/resolucoes/ex7.py | 6 ++ exercicios/para-sala/resolucoes/ex8.py | 12 +++ exercicios/para-sala/resolucoes/ex9.py | 23 +++++ .../resolucoes/exportados_clientes.csv | 6 ++ .../para-sala/resolucoes/funcionarios.csv | 4 + .../para-sala/{ => resolucoes}/produtos.csv | 0 material/escola.db | Bin 0 -> 12288 bytes 26 files changed, 247 insertions(+), 88 deletions(-) create mode 100644 Aline/atualizar_livro.py create mode 100644 Aline/consultar_livros.py create mode 100644 Aline/criar_banco.py create mode 100644 Aline/exportando_livros.csv create mode 100644 Aline/exportar_csv.py create mode 100644 Aline/importar_csv.py create mode 100644 Aline/livraria.db create mode 100644 Aline/livros.csv create mode 100644 Aline/remover_livro.py delete mode 100644 exercicios/para-casa/README.md create mode 100644 exercicios/para-sala/resolucoes/empresa.db create mode 100644 exercicios/para-sala/resolucoes/escola.db create mode 100644 exercicios/para-sala/resolucoes/ex1.py create mode 100644 exercicios/para-sala/resolucoes/ex10.py create mode 100644 exercicios/para-sala/resolucoes/ex2.py create mode 100644 exercicios/para-sala/resolucoes/ex3.py create mode 100644 exercicios/para-sala/resolucoes/ex4.py create mode 100644 exercicios/para-sala/resolucoes/ex5.py create mode 100644 exercicios/para-sala/resolucoes/ex6.py create mode 100644 exercicios/para-sala/resolucoes/ex7.py create mode 100644 exercicios/para-sala/resolucoes/ex8.py create mode 100644 exercicios/para-sala/resolucoes/ex9.py create mode 100644 exercicios/para-sala/resolucoes/exportados_clientes.csv create mode 100644 exercicios/para-sala/resolucoes/funcionarios.csv rename exercicios/para-sala/{ => resolucoes}/produtos.csv (100%) create mode 100644 material/escola.db diff --git a/Aline/atualizar_livro.py b/Aline/atualizar_livro.py new file mode 100644 index 0000000..5f8d6e2 --- /dev/null +++ b/Aline/atualizar_livro.py @@ -0,0 +1,10 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("UPDATE livros SET preco = ? WHERE id = ?", (99.9, 1)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/Aline/consultar_livros.py b/Aline/consultar_livros.py new file mode 100644 index 0000000..1aec690 --- /dev/null +++ b/Aline/consultar_livros.py @@ -0,0 +1,5 @@ +import csv +with open('livros.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + for linha in leitor: + print(linha) \ No newline at end of file diff --git a/Aline/criar_banco.py b/Aline/criar_banco.py new file mode 100644 index 0000000..020b143 --- /dev/null +++ b/Aline/criar_banco.py @@ -0,0 +1,18 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute(""" + CREATE TABLE IF NOT EXISTS livros( + id INTEGER PRIMARY KEY AUTOINCREMENT, + titulo TEXT NOT NULL, + autor TEXT NOT NULL, + ano INTEGER NOT NULL, + preco REAL NOT NULL +) +""") + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/Aline/exportando_livros.csv b/Aline/exportando_livros.csv new file mode 100644 index 0000000..6b0f17a --- /dev/null +++ b/Aline/exportando_livros.csv @@ -0,0 +1,6 @@ +id,titulo,autor,ano,preco +1,One Piece,Eiichiro Oda,1997,99.9 +2,Naruto,Masashi Kishimoto,2002,29.9 +4,Death Note,Tsugumi Ohba,2003,24.9 +5,My Hero Academia,Kohei Horikoshi,2014,49.9 +6,Demon Slayer: Kimetsu no Yaiba,Koyoharu Gotouge,2016,44.9 diff --git a/Aline/exportar_csv.py b/Aline/exportar_csv.py new file mode 100644 index 0000000..4e0e359 --- /dev/null +++ b/Aline/exportar_csv.py @@ -0,0 +1,16 @@ +import sqlite3 +import csv + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM livros") +items = cursor.fetchall() + +with open('exportando_livros.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'titulo', 'autor', 'ano', 'preco']) + escritor.writerows(items) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/Aline/importar_csv.py b/Aline/importar_csv.py new file mode 100644 index 0000000..f07ad2a --- /dev/null +++ b/Aline/importar_csv.py @@ -0,0 +1,29 @@ +import sqlite3 +import csv + +livros = [ + [1, 'One Piece', 'Eiichiro Oda', 1997, 34.90], + [2, 'Naruto', 'Masashi Kishimoto', 2002, 29.90], + [3, 'Attack on Titan', 'Hajime Isayama', 2009, 39.90], + [4, 'Death Note', 'Tsugumi Ohba', 2003, 24.90], + [5, 'My Hero Academia', 'Kohei Horikoshi', 2014, 49.90], + [6, 'Demon Slayer: Kimetsu no Yaiba', 'Koyoharu Gotouge', 2016, 44.90] +] + +with open('livros.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'titulo', 'autor', 'ano', 'preço']) + escritor.writerows(livros) + + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() +with open('livros.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + next(leitor) + for item in leitor: + cursor.execute("INSERT INTO livros (titulo, autor, ano, preco) VALUES (?, ?, ?, ?)", (item[1], item[2], item [3], item [4])) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/Aline/livraria.db b/Aline/livraria.db new file mode 100644 index 0000000000000000000000000000000000000000..ebc0d062399ac758a597971a223263ef91c2ec3a GIT binary patch literal 12288 zcmeI&F>ljA6ae6}liE_G#%xh09z$uOv}EXlkcw=IX`&=fNL{I!&?UJx*Ty+&pOG?F z{0jIL{0T-R1XCBpgu27R#&e@qq(UIEf!>qvX2Rz@;`X__vnac6TC7|*?Ep`yRfi`WyW)G`9O0Sm5AOD&?wVn-+t|N56VQ`l zBz!4H6NyLfj=BBLJ^20#<8}7iyy1Lfcu|l536KB@kN^pg011!)36KB@kN^q%M*;;S LS2h-ZT(Eus$mGRh literal 0 HcmV?d00001 diff --git a/Aline/livros.csv b/Aline/livros.csv new file mode 100644 index 0000000..9c652ab --- /dev/null +++ b/Aline/livros.csv @@ -0,0 +1,7 @@ +id,titulo,autor,ano,preço +1,One Piece,Eiichiro Oda,1997,34.9 +2,Naruto,Masashi Kishimoto,2002,29.9 +3,Attack on Titan,Hajime Isayama,2009,39.9 +4,Death Note,Tsugumi Ohba,2003,24.9 +5,My Hero Academia,Kohei Horikoshi,2014,49.9 +6,Demon Slayer: Kimetsu no Yaiba,Koyoharu Gotouge,2016,44.9 \ No newline at end of file diff --git a/Aline/remover_livro.py b/Aline/remover_livro.py new file mode 100644 index 0000000..cb77acd --- /dev/null +++ b/Aline/remover_livro.py @@ -0,0 +1,10 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("DELETE FROM livros WHERE id = ?", (3, )) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/README.md b/exercicios/para-casa/README.md deleted file mode 100644 index 887e31f..0000000 --- a/exercicios/para-casa/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Exercício de Casa 🏠 - -### Integração Completa de CSV com SQLite usando Python - -#### Objetivo - -A ideia aqui é praticar como integrar arquivos CSV com um banco de dados SQLite usando Python. Vamos criar um banco de dados, importar dados de um arquivo CSV para uma tabela, fazer operações de CRUD (Create, Read, Update, Delete) e, no final, exportar os dados da tabela para um novo arquivo CSV. - -#### Descrição do Exercício - -1. **Criando o Banco de Dados e a Tabela** - - Crie um banco de dados SQLite chamado `livraria.db`. - - Crie uma tabela chamada `livros` com as seguintes colunas: - - `id` (INTEGER, chave primária, autoincremento) - - `titulo` (TEXT) - - `autor` (TEXT) - - `ano` (INTEGER) - - `preco` (REAL) - -2. **Importando Dados de um CSV** - - Crie um arquivo CSV chamado `livros.csv` com as colunas `titulo`, `autor`, `ano`, e `preco`. - - Adicione pelo menos 5 registros no arquivo `livros.csv`. - - Escreva um script Python que leia os dados do `livros.csv` e insira-os na tabela `livros`. - -3. **Consultando e Exibindo Dados** - - Escreva um script Python que selecione e exiba todos os registros da tabela `livros`. - -4. **Atualizando Dados** - - Escreva um script Python que atualize o preço de um livro específico (por exemplo, mude o preço do livro com `id` 1 para 29.99). - -5. **Removendo Dados** - - Escreva um script Python que remova um livro específico da tabela (por exemplo, remova o livro com `id` 3). - -6. **Exportando Dados para CSV** - - Escreva um script Python que exporte os dados da tabela `livros` para um novo arquivo CSV chamado `exportados_livros.csv`. - -### Exemplo do arquivo livros.csv - -Crie um arquivo CSV chamado `livros.csv` com o seguinte conteúdo: - -```csv -titulo,autor,ano,preco -Livro A,Autor A,2020,25.99 -Livro B,Autor B,2019,19.99 -Livro C,Autor C,2018,29.99 -Livro D,Autor D,2021,15.99 -Livro E,Autor E,2022,22.99 -``` - -#### Tarefas Extras - -Para dar um up nas suas habilidades, você pode adicionar as seguintes funcionalidades aos seus scripts: - -1. **Validação de Dados**: - - Adicione validações para garantir que os dados lidos do CSV sejam válidos antes de inseri-los no banco de dados. - -2. **Tratamento de Erros**: - - Adicione tratamento de exceções para lidar com possíveis erros durante a leitura, inserção e atualização de dados. - -3. **Interatividade**: - - Torne seus scripts interativos, solicitando entradas do usuário para operações como inserção, atualização e remoção de dados. - -#### Envio do Exercício - -Depois de terminar o exercício, você deve ter os seguintes arquivos: - -- `criar_banco.py` -- `importar_csv.py` -- `consultar_livros.py` -- `atualizar_livro.py` -- `remover_livro.py` -- `exportar_csv.py` -- `livros.csv` - -Teste todos os scripts para garantir que estão funcionando certinho antes de enviar. - -Boa sorte! ---- - -Terminou o exercício? Dá uma olhada nessa checklist e confere se tá tudo certinho, combinado?! - -- [ ] Fiz o fork do repositório. -- [ ] Clonei o fork na minha máquina (`git clone url-do-meu-fork`). -- [ ] Resolvi o exercício. -- [ ] Adicionei as mudanças. (`git add .` para adicionar todos os arquivos, ou `git add nome_do_arquivo` para adicionar um arquivo específico) -- [ ] Commitei a cada mudança significativa ou na finalização do exercício (`git commit -m "Mensagem do commit"`) -- [ ] Pushei os commits na minha branch (`git push origin nome-da-branch`) -- [ ] Criei um Pull Request seguindo as orientaçoes que estao nesse [documento](https://github.com/mflilian/repo-example/blob/main/exercicios/para-casa/instrucoes-pull-request.md). \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/empresa.db b/exercicios/para-sala/resolucoes/empresa.db new file mode 100644 index 0000000000000000000000000000000000000000..fb0b25af3906dfc221084502e5b826d916432be3 GIT binary patch literal 12288 zcmeI&ze>YE90%~bG*u|dxfO-LZML-5LEKvm~^#hS#)vvdFLSTWi*r1 zv^O%hq^rDC@Q1wF_UvQZ zh=ywP)z{^%2*-h}4OF;gnxwev%>8>2Bq>wNCAF>`#%i3TOwCAYEfM=7Ow#w-Ce^i_ y6ZQP4Zj{IzOWyyKy%YT*AOHafKmY;|fB*y_009U<00I#BHv(%kXVLVBg8T;o(uRBh literal 0 HcmV?d00001 diff --git a/exercicios/para-sala/resolucoes/escola.db b/exercicios/para-sala/resolucoes/escola.db new file mode 100644 index 0000000000000000000000000000000000000000..26185853dd7dc3d28cf3cabf039acb01ff8582fa GIT binary patch literal 12288 zcmeI&K}y3w6b9g#B&{N91d%L?@VXFMTHJU6(=tdgO>0b{T}j%E7)evwqzBLwdH_$* zl?xBx)RGpv5!@8ye`Jz*GjAsFWi^odJ15E{Jx*rhAfqdG!Z>HwM2xY5YPxE9aMdyL zL_L@JZ&6^E&u>SnN;8Yh?5i6B0uX=z1Rwwb2tWV=5P$##Ah0umu2!^aH9p9KVJy>W ztd7JFshrMbGTKh{rYCG)kZ(5}L0h$zBpA!OT3LO$;CoiN%wNyG_mpWi4}&C=>87Xs z*l9CPl>=Hu6jICe#f|W&>$TdpH=tWFAiL*xTCQ5%7Or22tWV=5P$##AOHafKmY;|fB*#kC~&A7ti+p7 z!7PrXwXYfMls6{B^8;=$i`#KDlBMPOpPL^{T?hz300Izz00bZa0SG_<0uX=z1pbM@ MG1tp{^RI#a1&K3bmH+?% literal 0 HcmV?d00001 diff --git a/exercicios/para-sala/resolucoes/ex1.py b/exercicios/para-sala/resolucoes/ex1.py new file mode 100644 index 0000000..9b20bc0 --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex1.py @@ -0,0 +1,16 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute(""" + CREATE TABLE IF NOT EXISTS estudantes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + idade INTEGER NOT NULL + ) + """) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex10.py b/exercicios/para-sala/resolucoes/ex10.py new file mode 100644 index 0000000..381ea3b --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex10.py @@ -0,0 +1,16 @@ +import csv +import sqlite3 + +conn = sqlite3.connect('empresa.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM clientes") +dados = cursor.fetchall() + +with open('exportados_clientes.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'nome', 'email']) + escritor.writerows(dados) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex2.py b/exercicios/para-sala/resolucoes/ex2.py new file mode 100644 index 0000000..269e234 --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex2.py @@ -0,0 +1,16 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +estudantes = [ + ('Alice', 21), + ('Bob', 22), + ('Charlie', 23) + ] + +cursor.executemany("INSERT INTO estudantes (nome, idade) VALUES (?, ?)", estudantes) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex3.py b/exercicios/para-sala/resolucoes/ex3.py new file mode 100644 index 0000000..a42b7f1 --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex3.py @@ -0,0 +1,13 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM estudantes") +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex4.py b/exercicios/para-sala/resolucoes/ex4.py new file mode 100644 index 0000000..9cb8716 --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex4.py @@ -0,0 +1,11 @@ +import sqlite3 +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() +estudantes = [ + (27, 'Alice'), + (29, 'Bob'), +] +cursor.executemany("UPDATE estudantes SET idade = ? WHERE nome = ?", estudantes) +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex5.py b/exercicios/para-sala/resolucoes/ex5.py new file mode 100644 index 0000000..c29d416 --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex5.py @@ -0,0 +1,10 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("DELETE FROM estudantes WHERE id = ?", ('Charlie',)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex6.py b/exercicios/para-sala/resolucoes/ex6.py new file mode 100644 index 0000000..8eb955c --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex6.py @@ -0,0 +1,13 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM estudantes WHERE idade > 21") +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex7.py b/exercicios/para-sala/resolucoes/ex7.py new file mode 100644 index 0000000..6baa091 --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex7.py @@ -0,0 +1,6 @@ +import csv + +with open('produtos.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + for linha in leitor: + print(linha) \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex8.py b/exercicios/para-sala/resolucoes/ex8.py new file mode 100644 index 0000000..8ccdf3d --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex8.py @@ -0,0 +1,12 @@ +import csv + +funcionarios = [ + [1, 'Ana', 'Financeiro'], + [2, 'Carlos', 'TI'], + [3, 'Beatriz', 'RH'] + ] + +with open('funcionarios.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'nome', 'departamento']) + escritor.writerows(funcionarios) \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/ex9.py b/exercicios/para-sala/resolucoes/ex9.py new file mode 100644 index 0000000..77a0802 --- /dev/null +++ b/exercicios/para-sala/resolucoes/ex9.py @@ -0,0 +1,23 @@ +import sqlite3 +import csv + +conn = sqlite3.connect('empresa.db') +cursor = conn.cursor() + +cursor.execute(""" +CREATE TABLE IF NOT EXISTS clientes ( +id INTEGER PRIMARY KEY AUTOINCREMENT, +nome TEXT NOT NULL, +email TEXT NOT NULL +) +""") + +with open('../clientes.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + next(leitor) # Pular o cabeçalho + for linha in leitor: + cursor.execute("INSERT INTO clientes (nome, email) VALUES (?, ?)", (linha[1], linha[2])) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/resolucoes/exportados_clientes.csv b/exercicios/para-sala/resolucoes/exportados_clientes.csv new file mode 100644 index 0000000..a86deda --- /dev/null +++ b/exercicios/para-sala/resolucoes/exportados_clientes.csv @@ -0,0 +1,6 @@ +id,nome,email +1,João,joao@example.com +2,Maria,maria@example.com +3,Pedro,pedro@example.com +4,Luiza,luiza@example.com +5,Fernando,fernando@example.com diff --git a/exercicios/para-sala/resolucoes/funcionarios.csv b/exercicios/para-sala/resolucoes/funcionarios.csv new file mode 100644 index 0000000..4f2c526 --- /dev/null +++ b/exercicios/para-sala/resolucoes/funcionarios.csv @@ -0,0 +1,4 @@ +id,nome,departamento +1,Ana,Financeiro +2,Carlos,TI +3,Beatriz,RH diff --git a/exercicios/para-sala/produtos.csv b/exercicios/para-sala/resolucoes/produtos.csv similarity index 100% rename from exercicios/para-sala/produtos.csv rename to exercicios/para-sala/resolucoes/produtos.csv diff --git a/material/escola.db b/material/escola.db new file mode 100644 index 0000000000000000000000000000000000000000..18626017318aa7b532d518e2091e6068f7b4c4dc GIT binary patch literal 12288 zcmeI&O-{l<6bJB`wpK&XF)`SMn_*!B!MO1P7Sb4EDOgJaD^utgYf1^U96(Ry30!jk zPvFXh2XKl&0~?nb^MC1lzc-8DZj#>K*kLO8{dhX^Q+`1X38mzcb3%x^Y;srxmA$r{ zXG6CBDO7U)INz693eySe$qoSl2tWV=5P$##AOHafKmY;|_%(r!q8qgu?Wg`A63HZz zPvW~oOlBe;ZZFk_Ynh(KJ+p3Gd@HvS`y+8CE2~eZbk``C>2qmur%2LS;K!**@|m)6 zQ@+nD1^yjjz?+U|U0E*gxXqU7_W8Bd=VsSyHyv5svK;Shl^l;pf_qla<4#+)u5GW6 z!oUy2`l{7&R#?s6<~n;J?32B-H#TRla)E#V1Rwwb2tWV=5P$##AOHafK;TaZ6m^Z9 z(8hy5jY47U?P%nP*2jb6f~FCJno&3urJ}l#qpWjio|C=*Df=MuLqGrm5P$##AOHaf XKmY;|fB*y_@J|E|s9L7^zXtjjkm_tf literal 0 HcmV?d00001