;(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

Alckmin comemora avanço de PL das Fake News: 'Não é possível ter mentira'

O presidente em exercício Geraldo Alckmin fala com a imprensa em Brasília - Lucas Borges Teixeira/UOL
O presidente em exercício Geraldo Alckmin fala com a imprensa em Brasília Imagem: Lucas Borges Teixeira/UOL

Do UOL, em Brasília

25/04/2023 20h45Atualizada em 25/04/2023 21h05

O presidente em exercício Geraldo Alckmin (PSB) comemorou a aprovação do requerimento de urgência da PL das Fake News, que regulamenta as redes sociais pela Câmara dos Deputados e se disse a favor da liberdade de expressão, mas sem mentira e calúnia.

O que aconteceu

Em vitória governista, o plenário da Câmara, por 238 votos a 192, o avanço do projeto de lei. Era necessária maioria simples pela aprovação, ou seja, maioria mais um deputado entre os 431 presentes.

Pouco após o resultado, o vice-presidente disse o projeto de lei "é um avanço importante em termos de legislação". Ele participou da Marcha dos Vereadores em Brasília no começo da noite.

Ele defendeu ainda a manutenção do GSI (Gabinete de Segurança Institucional) "por que por erros foram cometidos", mas cobrou "responsabilização" pelos atos golpistas de 8 de Janeiro. Na última semana, vídeos de dentro do Planalto mostraram militares do GSI sendo conivente com os golpistas.

Temos que conciliar de um lado liberdade de expressão e do outro lado responsabilidade. Não é possível você ter mentira, ter calúnia, ter incitação muitas vezes a golpe, atos antidemocráticos sem responsabilização. Então acho que é um avanço importante em termos de legislação."
Geraldo Alckmin, presidente em exercício

Como foi a votação

A medida acelera a tramitação do projeto e faz com que ele seja votado diretamente no plenário, sem ar por comissões.

Durante a votação, houve confusão entre as bancadas sobre o entendimento firmado e Lira precisou pressionar os líderes. Segundo Lira, o acordo que teria sido costurado era de apoio de todas as bancadas, sem necessidade de votação nominal.

A votação do mérito do texto deve ser na próxima terça-feira (2). Até lá, o relator, deputado Orlando Silva (PCdoB-SP), vai ouvir todas as bancadas e modificar o parecer para conseguir ampliar o apoio. Inicialmente, a votação do projeto ocorreria até quinta-feira (27). Mas o texto ainda tem resistências, inclusive de partidos do centrão, como o União Brasil.

Em defesa do GSI

O presidente em exercício defendeu ainda a manutenção do GSI, mas não quis comentar sobre uma possível desmilitarização do órgão — negada hoje ao UOL pelo ministro interino da pasta, Ricardo Cappelli, que assumiu na semana ada após general Gonçalves Dias, aparecer em um vídeo interagindo com golpistas no Planalto nos ataques de 8 de janeiro.

G.Dias, como é conhecido, foi o primeiro ministro do presidente Lula (PT) a cair no terceiro mandato.

Alckmin afirmou ainda a escolha do novo comandante do GSI deve ser definida quando Lula voltar da Europa — o retorno a Brasília está marcado para amanhã (26) à noite.

O nome que o Exército sugeriu ao presidente é o do general Marcos Antônio Amaro dos Santos, que comandou a Casa Militar (como era chamado o GSI) no governo da ex-presidente Dilma Rousseff (PT).

Nós não devemos acabar com um órgão por que houve erro, o que precisa é apurar e ter responsabilização."
Geraldo Alckmin, presidente em exercício