;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Em guerra de respostas, Lula diz que acabará com sigilos de Bolsonaro

Do UOL, em São Paulo, Rio e Brasília*

29/09/2022 22h57Atualizada em 30/09/2022 01h10

O presidente Jair Bolsonaro (PL) e o ex-presidente Luiz Inácio Lula da Silva (PT) trocaram farpas, numa guerra por direitos de respostas, logo no início do debate promovido pela TV Globo, nesta quarta-feira (29).

O petista pediu direito de resposta após ataque de Bolsonaro, que havia o chamado de "presidiário" e "mentiroso". A organização do debate analisou o pedido e concedeu.

Num debate entre pessoas que querem ser Presidente da República, o atual presidente tivesse um mínimo de honestidade. O mínimo de seriedade. Ele falar que eu montei quadrilha? Com a quadrilha da rachadinha dele que ele decretou sigilo de cem anos, com a rachadinha da família, sabe, do Ministério da Educação? Com barras de ouro? Ele falar de quadrilha comigo? Ele precisava se olhar no espelho e saber o que está acontecendo no governo dele. Ex-presidente Luiz Inácio Lula da Silva

Diferentemente do primeiro debate, Lula elevou o tom contra Bolsonaro.

"Você, quando vier no microfone, você se comporte como presidente. Respeite quem está assistindo, não minta! Não minta que é feio um presidente da República mentir como você mente toda hora, descaradamente, não é possível", disse o petista.

Na sequência, Bolsonaro também disse que se sentiu ofendido e pediu um novo direito de resposta, novamente concedido pela organização do evento.

Mentiroso! Ex-presidiário. Traidor da Pátria. Que rachadinha? Rachadinha é teus filhos! Roubando milhões de empresas! Após a tua chegada ao poder, que I é essa? Da farsa? Que você vem defender aqui? O que achou a meu respeito? Nada! Que dinheiro de propina? Não teve propina, propina teve o seu Carlos Gabas, do consórcio nordeste! Dos governadores amigos teus! Bolsonaro a Lula

Em relatório paralelo entregue à I da Covid, o senador Eduardo Girão (Podemos-CE), aliado de Bolsonaro, indicou que o secretário-executivo do Consórcio Nordeste, Carlos Gabas, deveria ser indiciado por quatro crimes por suspeitas de corrupção na compra de respiradores na pandemia.

"Deixe de mentir. Tome vergonha na cara, Lula", disse Bolsonaro.

*Participaram desta cobertura:
Em São Paulo: Ana Paula Bimbati, Beatriz Gomes, Caê Vasconcelos, Gilvan Marques, Isabela Aleixo, Juliana Arreguy, Letícia Mutchnik e Rafael Neves.
No Rio de Janeiro: Felipe Pereira e Lucas Borges Teixeira.
Em Brasília: Camila Turtelli, Gabriela Vinhal, Hanrrikson de Andrade e Letícia Casado.