A partir do dia 28/08 após às 20hs, o acesso ao TDN nas páginas logadas será integrado ao Identity Fluig, seguindo o mesmo padrão já adotado em outras ferramentas, como o Jira Produção.
Essa mudança tem como objetivo aprimorar a segurança e a gestão de acessos a ferramenta. Atenciosamente, equipe TOTVS.
Os navegadores atuais possuem um ambiente de execução segura, chamado Sandbox, que impede o acesso à sua estação de trabalho.
O WebAgent permite esses acessos de forma segura, utilizando os seguintes mecanismos:
Conexão entre o navegador e o WebAgent exclusivamente via Websocket Secure (wss);
Conexão entre o navegador e o WebAgent exclusivamente através do endereço localhost, bloqueando ataques a partir de IPs externos;
Uso do mesmo protocolo de comunicação utilizado entre SmartClient Desktop e o Appserver, um motor utilizado a mais de 20 anos, e conhecidamente seguro.
Vantagens no uso do WebAgent em conjunto com o WebApp (topo)
Simplificação na montagem de ambientes;
Instalação simples e rápida, devido ao menor numero de arquivos do WebAgent;
Ambiente HTML (navegador) sempre atualizado, preparado para os mais novos Frameworks HTML de mercado.
📢 Existem dois modelos de configuração para download do WebAgent:
Configurando a partir do AppServer.INI
Está liberado a partir do WebApp 9.0.3 ou superior
Segue o padrão já conhecido pelos Administradores do Protheus
A configuração precisa ser replicada para cada AppSever.INI do balanceamento de ambientes
Configurando a partir do arquivo JSON
Esta liberado à partir do WebApp 9.0.0
O arquivo JSON pode ser configurado uma única vez e compartilhado entre vários AppServers
Importante
🚨 Após ajustar as configurações abaixo, é necessário reiniciar o/s AppServer/s.
A partir da versão 1.0.15 do WebAgent, seu instalador será distribuido também no formato MSI para Windows, que permite a instalação remota a partir do serviço de GPO, mais informações acesse aqui.
Importante
🚨 Para garantir a correta atualização do WebAgent em Windows, é uma boa pratica ao configurar a instalação viaGPO, desligar a atualização padrão via arquivo INI/JSON para Windows, para que não haja conflito entre os dois mecanismos de atualização.
🚨 Para atualização automática aceitar o instalador no formato MSI, a versão mínima do WebAgent deve obrigatoriamente ser a 1.0.15.
1. Configurando o download do WebAgent a partir do arquivo AppServer.INI(topo)
Para consultar todas as opções de configuração acesse aqui.
Parâmetro
Descrição
Observações
VERSION
Define a versão dos instaladores do WebAgent disponíveis pra download
Sempre que atualizar os instaladores na pasta de download é necessário atualizar também sua versão no arquivo AppServer.INI;
O versão pode ser alterada tanto para update quanto para downgrade do WebAgent.
PORT(opcional)
Habilita uma porta específica para o WebAgent de todos os usuários
Essa configuração impede que os usuários alterem a porta do WebAgent.
🚨 Importante: Essa configuração impede que os usuários utilizem o ERP sem o WebAgent instalado/registrado em suas estações.
Os parâmetros abaixo representam o Sistema Operacional e a Arquitetura(32/64 bits) do WebAgent:
Linux 64 bits pacote RPM (Fedora, Oracle Linux e Red Hat)
Exemplo de Configuração do WebAgent via AppServer.INI - Linux - Usando path relativo (diretório atual do AppServer)
[WEBAGENT]
VERSION=1.x.x "<ajuste esta opção com a versão correta do WebAgent que será disponibilizado>"
Windows_x86=webagent/web-agent-1.x.x-windows-x86.setup.exe
Windows_x64=webagent/web-agent-1.x.x-windows-x64.setup.exe
Darwin_universal=webagent/web-agent-1.x.x-darwin-universal.dmg
Linux_x64_deb=webagent/web-agent-1.x.x-linux-x64.deb
Linux_x64_rpm=webagent/web-agent-1.x.x-linux-x64.rpm
Exemplo de Configuração do WebAgent via AppServer.INI - Windows
[WEBAGENT]
VERSION=1.x.x "<ajuste esta opção com a versão correta do WebAgent que será disponibilizado>"
Windows_x86=C:\totvs\files\web-agent-1.x.x-windows-x86.setup.exe
Windows_x64=C:\totvs\files\web-agent-1.x.x-windows-x64.setup.exe
Darwin_universal=C:\totvs\files\web-agent-1.x.x-darwin-universal.dmg
Linux_x64_deb=C:\totvs\files\web-agent-1.x.x-linux-x64.deb
Linux_x64_rpm=C:\totvs\files\web-agent-1.x.x-linux-x64.rpm
2. Configurando o download do WebAgent a partir do arquivo WebAgent.json (topo)
Neste exemplo utilizaremos o arquivo de configuração com o nome webagent.json, na mesma pasta do AppServer, mas tanto o nome do arquivo quanto o diretório são de sua escolha, ajuste a configuração de acordo com sua necessidade, por exemplo:
Seguindo nosso exemplo, crie agora o arquivo webagent.json na mesma pasta do AppServer.
Os arquivos para download serão disponibilizados em uma subpasta do AppServer, exemplo: /home/admin/totvs/appserver/webagent/
Parâmetro
Descrição
Observações
VERSION
Define a versão dos instaladores do WebAgent disponíveis pra download
Sempre que atualizar os instaladores na pasta de download é necessário atualizar também sua versão no arquivo AppServer.INI;
O versão pode ser alterada tanto para update quanto para downgrade do WebAgent.
🚨 Caso esteja utilizando um AppServerWindows é necessário utilizar barras duplas "\\" para configuração do arquivo, pois a primeira barra é considerada um caracter de escape pelo formato .json, e não permitirá o download do instalador.
Exemplo de Configuração do WebAgent via webagent.json - Windows
{
"version": "1.x.x","<ajuste esta opção com a versão correta do WebAgent que será disponibilizado>"
"windows_x86": "webagent\\web-agent-1.x.x-windows-x86-release.setup.exe",
"windows_x64": "webagent\\web-agent-1.x.x-windows-x64-release.setup.exe",
"darwin_universal": "20-10-10-p12_smartclient_web-agent_1.x.x_mac-universal.dmg",
"linux_x64_deb": "webagent\\web-agent.deb",
"linux_x64_rpm": "webagent\\web-agent.rpm"
}
Exemplo de Configuração do WebAgent via webagent.json - Linux
{
"version": "1.x.x", "<ajuste esta opção com a versão correta do WebAgent que será disponibilizado>"
"windows_x86": "webagent/web-agent-1.x.x-windows-x86-release.setup.exe",
"windows_x64": "webagent/web-agent-1.x.x-windows-x64-release.setup.exe",
"darwin_universal": "20-10-10-p12_smartclient_web-agent_1.x.x_mac-universal.dmg",
"linux_x64_deb": "webagent/web-agent.deb",
"linux_x64_rpm": "webagent/web-agent.rpm"
}
3. Configurando uma porta específica para o WebAgent de todos os usuários(topo)
Parâmetro
Descrição
Observações
PORT(opcional)
Habilita uma porta específica para o WebAgent de todos os usuários
Essa configuração impede que os usuários alterem a porta do WebAgent.
🚨 Importante: Essa configuração impede que os usuários utilizem o ERP sem o WebAgent instalado/registrado em suas estações.
Trecho do arquivo AppServer.ini
[WEBAGENT]
Port=21021
...
Ao habilitar essa chave, a opção "Habilita/Desabilita o Agente Local" não será mais exibida na tela de configuração para o usuário.
4. Atualização automática de arquivos extras, exemplo, SIGALOJA.DLL (topo)
A partir do WebAgent 1.0.15 e WebApp 10.0.6 (apenas Onça Preta),é possivel definir a atualização automática de arquivos extras, como por exemplo, os arquivos do FrontLoja.
Importante
Esta implementação foi feita exclusivamente para Windows.
As chaves a seguir definem o caminho para um arquivo ZIP, que deverá conter a estrutura de diretórios e arquivos que o cliente deseja descompactar na pasta do WebAgent.
📢 Estas chaves estão disponiveis tanto no arquivo AppServer.INI quanto no arquivo JSON de configuração.
Parâmetro
Descrição
Windows_x86_extras
Caminho para o arquivo ZIP que deverá conter a estrutura de diretórios e arquivos, na arquitetura 32 bits, que será descompactada na pasta do WebAgent.
Windows_x64_extras
Caminho para o arquivo ZIP que deverá conter a estrutura de diretórios e arquivos, na arquitetura 64 bits, que será descompactada na pasta do WebAgent.
Acessando a Tela de Parâmetros do WebApp, agora será exibida a tela para download dos instaladores:
Importante
O popup para instalação deixará de ser exibido assim que a primeira conexão entre o WebAgent e o Navegador for bem sucedida, para que não induza o usuário a instalar mais de uma vez a ferramenta.
O checkbox "Não mostrar novamente" pode ser usado caso o usuário não precise instalar o WebAgent, e também não queira que esta opção continue sendo exibida.
🚨 A atualização automática do WebAgent foi implementada apenas para o Windows, e acontecerá sempre que o Administrador do ERP atualizar a versão do WebAgent nos arquivos de configuração.
Para Linux e macOS é necessário informar a senha do administrador do computador no momento da instalação/atualização, impossibilitando a atualização automática.
O instalador vai sugerir o Sistema Operacional e a Arquitetura(32/64 bits). Caso utilize o Windows 64 bits, mas precise integrar o ERP com o Microsoft Office 32 bits, poderá baixar o WebAgent 32 bits, mais detalhes aqui.
O registro do certificado de segurança para conexão entre o WebAgent e o navegador é automático a partir da versão 1.0.15.
Para versões anteriores este registro deve ser feito manualmente, mais detalhes acesse aqui.
Para mais detalhes sobre como baixar o WebAgent acesse aqui, escolha o download para o seu Linux, sendo o arquivo .deb para Ubuntu e o .rpm para o Fedora, Oracle Linux e Red Hat.
Video com detalhes do processo:
Ubuntu
Instale o WebAgent
sudo apt install ./web-agent<versao>.deb
Caso a instalação não seja permitida, utilize o comando chmod para tornar o WebAgent um arquivo executável, e repita o passo anterior
chmod +x ./web-agent<versao>.deb
Fedora, Oracle Linux
Para o Oracle Linux é necessário instalar o EPEL antes da instalação do WebAgent
Para versões anteriores a 1.0.16 do WebAgent é necessário instalar manualmente a biblioteca libappindicator
sudo dnf install libappindicator-gtk3
🚨 O processo abaixo, para habilitar a exibição do ícone da bandeja do WebAgent, é necessário apenas para o desktop GNOME, caso utilize desktops como o XFCE ou KDE Plasma, pode pular este passo.
Instale a extensão do GNOME para exibição do ícone da bandeja
Para consultar outra versão do sistema operacional, selecione a versão correta:
Este exemplo de instalação/autorização se baseia no macOS Sequoia. (💡 Dica: Clique nas imagens para melhor visualização )
Após baixar o arquivo de instalação para macOS (Universal), com a extenção .dmg, execute o instalador e na sequencia arraste o web-agent para pasta Aplicações (Applications)
Caso esteja atualizando o web-agent, pressione o botão Atualizar (Replace)
Abra o web-agent na pasta Aplicações e pressione o botão Done
Acesse as configurações do seu Mac e na sequencia Privacidade e Segurança (Privacy & Security)
Role até localizar a seção Segurança (Security) e na sequencia clique em Abrir Mesmo Assim (Open Anyway)
Confirme, cliquando em Abrir Mesmo Assim (Open Anyway)
Clique em Use sua Senha (Use Password)
Digite o usuário e senha de um usuário com autorização de Administrador do equipamento
Clique no botão OK para autorizar a execução do WebAgent
🚨 Importante
Caso esteja instalando pela primeira vez o WebAgent, será necessário proceder com o registro do Certificado SSL, mais detalhes acesse aqui.
Registrando o certificado SSL para uso do WebAgent (topo)
Para utilizar o Websocket Secure (wss) é necessário registrar o TOTVS Certificate em seu sistema operacional.
🚨 Importante
Utilize os certificados disponibilizados na pasta de instalação do WebAgent, não utilizeos certificados da pasta de instalação do AppServer.
O registro é automático para Windows 10/11, 32 ou 64 bits, e será efetivado na primeira execução do WebAgent.
🚨 Importante
Durante a primeira execução do WebAgent, caso seja apresentada a tela de confirmação para o registro do certificado, selecione a opção "SIM", "OK" ou "CONFIRMAR", essa opção que pode variar dependendo da versão do Windows em uso.
Dicas para configuração do Firefox
Na configuração do Firefox pode estar desabilitada a utilização de certificados do sistema, causando falha na conexão com o WebAgent, é necessário habilitar os certificados da seguinte maneira:
Na barra de navegação digite: about:config
Clicar em "Aceitar o risco e continuar"
Na barra de pesquisa digite: security.enterprise_roots.enabled e mude a opção para true (verdadeiro) clicando no botão a direita.
Para usuários Linux (automático a partir da versão 1.0.15)(topo)
🚨 Importante
A partir da versão 1.0.15 do WebAgent, seu instalador para Linux fará automaticamente o registro do certificado para conexão com o navegador, não sendo mais necessários os passos abaixo.
Ubuntu
Após a instalação o WebAgent
Localize o arquivo totvs_certificate_CA.crt na pasta /opt/web-agent
Importante: O processo de registro do certificado deve ser feito uma unica vez, atualizações do WebAgent assumirão o certificado já registrado automaticamente.
O WebAgent, como qualquer aplicação que não seja disponibilizada via Apple Store, precisa ter seus certificados instalados manualmente para execução.
Para consultar outra versão do sistema operacional, selecione a versão correta:
🚨 Importante
Este processo deve ser executado para dois arquivos, o totvs_certificate_CA.crt e o arquivo totvs_certificate.crt.
Este exemplo de registro do certificado se baseia no macOS Sequoia. (💡 Dica: Clique nas imagens para melhor visualização )
Após instalar o WebAgent, localize o arquivo totvs_certificate_CA.crt na pasta /Applications/web-agent.app/Contents/MacOS No App Acesso às Chaves (Keychain Access) , selecione Sistema (System), e nasequência Certificados (Certificates).
Importante
🚨 No macOS Sequoia, o atalho pro Keychain mudou, sendo acessado pelo caminho: /System/Library/CoreServices/Applications/Keychain Access.app
Arraste o arquivo do certificado para o App Acesso às Chaves (Keychain Access).
Configure a confiança do certificado, clicando com o botão direito do mouse sobre o arquivo, e escolhendo a opção ObterInformações (Get Info).
Expanda a opção Confiança (Trust),e coloque Confiar Sempre (Always Trust)para todas as opções disponíveis.
Ao confirmar as informações, se for solicitado usuário e senha, utilize um usuário com acesso de administrador.
Habilitando o WebAgent na Tela de Parâmetros (topo)
Para habilitar o uso do WebAgent pelo WebApp, na Tela de Parâmetros, selecione o botão de configuração.
Escolha a porta de inicialização do WebAgent (por padrão é a 21021).
Na sequencia feche essa janela clicando no X na parte superior da janela de configuração.
Ao confirmar os dados na Tela de Parâmetros será exibida a mensagem abaixo, solicitando autorização para abertura do WebAgent, basta clicar no botão Abrir.
Caso a conexão com o WebAgent falhe ou a solicitação de autorização seja ignorada, será exibida a mensagem de erro a seguir:
O WebAgent pode ser iniciado via linha de comando, os parâmetros podem ser usados em conjunto, as opções são:
Parâmetro
Descrição
web-agent -h ou --help
Exibe help com essas opções
web-agent -c ou --console
Inicia o WebAgent em console(linha de comando) omitindo o systray(icone na bandeja), nesse exemplo iniciamos o WebAgent em console na porta 21023:
web-agent -c --port 21023
web-agent -v ou --version
Exibe a versão do WebAgent, exemplo:
web-agent -v v1.0.9-RC3 - x64
web-agent -t ou --tray
Abre o WebAgent via systray (default)
web-agent --port
Define uma porta específica para o WebAgent (a porta padrão é a 21021)
web-agent --locallog <n>
0 (default): Desabilita o log de execução; 1: Habilita a geração de log de execução (necessário apenas quando solicitado por nosso Suporte).
Comando launch: Abrindo o navegador diretamente pelo WebAgent (topo)
Importante
🚨 Ao utilizar o parâmetro launch, é uma boa pratica não efetuar o acesso direto ao WebApp via navegador na mesma estação. Nesse caso, poderá haver conflito entre a porta aleatória utilizada pelo WebAgent, e a porta padrão instanciada pelo WebApp. Para evitar este cenário, crie atalhos utilizando o launch para cada Ambiente Protheus/Logix que precise acessar.
Vídeo com detalhes do processo:
Permite abrir uma janela destacada do navegador a partir do WebAgent.
🚨 Importante
O Firefox não respeita a instrução para ser instanciado sem as Abas e endereço de URL, seja em Windows ou Linux, mas sua operação ocorre normalmente utilizando o launch.
Dicas importantes
Durante a primeira execução com comando launch, a janela pode não ser exibida de forma maximizada, impedindo uma melhor experiência, maximize a janela, e nas próximas execuções o navegador irá respeitar o estado em que foi encerrado.
Importante: O comando launch deve obrigatóriamente ser o primeiro da linha de comando, exemplo:
web-agent launch...
Quando utilizado o comando launch, o WebAgent iniciará em uma porta aleatória, permitindo multiplas execuções, cada uma em sua porta específica.
*Para execução de aplicações que não utilizam interface, como processamentos e execução de jobs, utilize a opção --headless, mais informações acesse aqui.
Sintaxe
webagent launch "ip+porta+[parâmetros<opcional>]" --browser="caminho para o navegador"
Exemplos:
Nos exemplos abaixo será aberto o SIGAFAT e preenchidos os parâmetros de abertura (&A=), artificio utilizado em produtos como SIGALOJA, e útil em algumas customizações.
Exemplo de abertura do WebAgent em linha de comando em Windows
Indica o nome do ambiente que será utilizado para definições gerais.
&P=
Identifica o programa inicial que será executado.
&A=
Identifica um parâmetro que será passado para o programa inicial.
O parâmetro de linha &A pode ser utilizado multiplas vezes.
O valor recebido pelo programa através do parâmetro é do tipo caractere, mesmo que seja preenchido um valor numérico.
Comando --headless: Executando aplicações sem interface através do WebAgent (topo)
Importante
🚨 Ao utilizar o parâmetro launch, é uma boa pratica não efetuar o acesso direto ao WebApp via navegador na mesma estação. Nesse caso, poderá haver conflito entre a porta aleatória utilizada pelo WebAgent, e a porta padrão instanciada pelo WebApp. Para evitar este cenário, crie atalhos utilizando o launch para cada Ambiente Protheus/Logix que precise acessar.
Vídeo com detalhes do processo:
A partir da versão 1.0.9 do WebAgent será possível executar programas sem interface gráfica, com o objetivo de dinamizar automações, testes e etc.
Nesse modo é recomendado o uso dos navegadores Google Chrome, Microsoft Edge ou Mozilla Firefox.
Sintaxe
webagent launch "ip+porta+[parâmetros<opcional>]" --browser="caminho para o navegador" --headless
Exemplos:
O exemplo abaixo executa a função de usuário u_headless em um navegador sem interface gráfica.
Exemplo de execução headless do WebAgent em Windows
Na pasta de instalação do Firefox (que depende do Linux utilizado, por exemplo /opt/firefox/ ou /usr/lib/firefox/)
Localize a pasta distribution
Crie nessa pasta um arquivo com o nome de policies.json com o conteúdo abaixo, apontando para o arquivototvs_certificate_CA.crt da pasta de instalação do WebAgent:
Entendendo as arquiteturas 32 e 64 bits para uso do WebAgent (topo)
Video sobre o tema
O WebAgent para Linux e macOS será distribuido somente na versão 64 bits.
Para Windows ele será distribuido também na versão 32 bits, devido a dois cenários:
Cenário 1
Utilizar o Windows 64 bits, porém ferramentas 32 bits, nesse caso será necessária a instalação do WebAgent 32 bits para integração com:
Pacote Microsoft Office 32bits;
DLLs 32 bits, para por exemplo, integração de equipamentos, como impressoras, balanças, caixas registradoras, etc.
Cenário 2
Utilizar o Windows 64 bits, o Office32 bits e uma integração com DLLs 64 bits (o inverso pode ocorrer).
Este cenário é mais complexo, faremos o mesmo processo que já era conhecido nessa situação para o SmartClient Desktop, manteremos duas instalaçõesdo WebAgent na estação do usuário, uma 32 e uma 64 bits.
Importante
🚨 Este processo esta disponível à partir do WebAgent versão 1.0.16.
Ao fim do processo abaixo, iremos executar cada WebAgent a partir do parâmetro launch:
Baixe os WebAgents nas duas arquiteturas, x86(32bits) e x64(64bits), seja a versão .EXE ou a versão .MSI. (clique nas imagens para melhor visualização)
Instale o WebAgent 32bits
Na sequência, faça uma coṕia da pasta de instalação, e renomeie essa cópia, inserindo o texto 32, exemplo:
Ao fim deste processo, você terá duas cópias do WebAgent, uma em cada arquitetura.
Ao executar o WebAgent, será necessário verificar a arquitetura da aplicação que deseja utilizar/integrar, consulte o administrador de seu ambiente caso tenha dúvidas, no exemplo abaixo, partiremos do princípio que faremos a integração com o Microsoft Office 32bits.
Abra o WebAgent 32bits a partir da linha de comando, utilizando o parâmetro launch, se seguiu nosso exemplo à risca, a linha de comando será a seguinte: C:\Users\seu_usuario_aqui\AppData\Local\Programs\web-agent32\web-agent.exe launch "http://127.0.0.1:5021/webapp/" --browser="C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
Sintaxe do comando:
web-agent.exe launch "ip:porta para o Servidor do WebApp" --browser="caminho completo para seu navegador"
🚨Este processo pode ser simplificado para o usuário, criando um atalho em seu Desktop.
Ao executar este comando, será apresentada a rotina em uma tela destacada do navegador, com uma porta específica do WebAgent, escolhida automaticamente, proceda com o uso normal do ERP.
Continuando no exemplo, imagine que agora você precisa utilizar o ERP com uma impressora que depende da integração com uma DLL 64bits.
O ponto mais importânte é que você pode manter o WebAgent 32bits em execução, e repetir o processo agora para o WebAgent 64bits, pois cada um deles irá utilizar uma porta específica, não influenciando no processo um do outro.
O WebAgent não é homologado para navegadores utilizados a partir de Metaframes, RDPs ou Web enablers, como:
Citrix;
Windows Remote Desktop;
Go Global.
Devido à simplificação na montagem do ambiente com o WebApp, nossa arquitetura não depende das ferramentas acima para operação dos ERPs Protheus/Logix.
O WebAgent não é homologado para sistemas operacionais :
ChromeOS/ChromeOS Flex
iOS
iPadOs
Android
Importante
A homologação de uma distro base Linux permite o uso se suas flavors e spins Oficiais, pois essas variantes mantém as mesmas bibliotecas que sua base, exemplo:
Ao homologar o Ubuntu 24.04, que utiliza o GNOME como interface/desktop, permite o uso de suas flavors, como Xubuntu, Kubuntu, etc, mais informações no link abaixo:
Ao homologar o Fedora 41,que também utiliza o GNOME como interface/Desktop, permite o uso de suas seus spins, como Fedora XFCE ou Fedora KDE Plasma, mais informações no link abaixo:
🚨Isso não significa que os spins são Homologados, eles serão mantidos como "Suportados", havendo diferenças de comportamentos nos flavors e spins, cada caso será avaliado, podendo impedir o suporte a essa determinada distro.
O WebAgent está disponível e homologado para os seguintes Sistemas Operacionais:
Window 32 e 64 bits
Windows 10 Pro/Enterprise => Término do Suporte pela Microsoft em 14/Out/2025, mais informações aqui.
Windows 11 Pro/Enterprise
Linux 64 bits
Ubuntu 22.04 LTS (recomendamos o uso do Ubuntu 24.04 LTS)
Ubuntu 24.04 LTS ou superior (a partir do WebAgent 1.0.15)
Fedora 41 (a partir do WebAgent 1.0.15)
Oracle Linux 9.x (a partir do WebAgent 1.0.15)
Red Hat Enterprise Linux Desktop 8.x
🚨 Recomendamos o uso do Fedora ou do Oracle Linux, ambas distrosgratuitas, e com a mesma base do Red Hat.
macOS x86_64 e Universal(ARM64)
macOS 13.6 Ventura ou superior
🚨 A tentativa de utilizar a versão Universal em macOS anterior resultará no erro abaixo: