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

STF: Moraes prorroga investigação contra o deputado Daniel Silveira

STF torna Daniel Silveira réu por unanimidade - Reprodução/Facebook
STF torna Daniel Silveira réu por unanimidade Imagem: Reprodução/Facebook

Rafael Neves

Do UOL, em Brasília

31/05/2021 21h54Atualizada em 31/05/2021 21h55

O ministro Alexandre de Moraes, do STF (Supremo Tribunal Federal), prorrogou por 60 dias um inquérito contra o deputado bolsonarista Daniel Silveira (PSL-RJ), que está em prisão domiciliar desde março. Silveira já foi denunciado e responde a uma investigação por publicar um vídeo com ataques a ministros da Corte e exaltação de medidas antidemocráticas.

Moraes atendeu a um pedido da PF (Polícia Federal), que informou, no último dia 27, ainda não ter conseguido o integral ao conteúdo dos celulares apreendidos com o deputado. A PF informou a Moraes que ainda espera respostas da Apple e do Facebook, dono do WhatsApp, sobre pedidos de dados dos aparelhos.

Segundo a PF, os investigadores só tiveram o a 2 MB (megabytes) do material, mas um relatório aponta que o deputado tem quase 1,8 GB (gigabytes) em sua conta no iCloud, serviço de armazenamento de dados em nuvem da Apple. Por essa razão, a PF pediu a prorrogação das investigações, concedida por Moraes.

No dia 28 de abril, o Supremo decidiu, por unanimidade, receber a denúncia da Procuradoria-Geral da República Daniel Silveira. Com a decisão, o parlamentar bolsonarista ou a ser réu. Ao ler seu voto, Alexandre Moraes afirmou que "liberdade de expressão não se confunde com liberdade de agressão", e que a denúncia da PGR mostra que ele incitou a animosidade entre o STF e as Forças Armadas.

Liberdade de expressão não se confunde com liberdade de agressão, com anarquia, desrespeito ao estado de direito e da defesa da volta da ditadura, do fechamento do Congresso Nacional, com fechamento do STF"
Alexandre de Moraes, ministro do STF

Entenda o caso

Em fevereiro, o parlamentar bolsonarista foi preso em flagrante e denunciado depois de divulgar um vídeo com ofensas e ameaças a ministros da Corte, além de defender medidas antidemocráticas. O Supremo já havia se debruçado sobre o caso e manteve por unanimidade, com 11 votos a 0, a prisão decretada no dia anterior pelo ministro Alexandre de Moraes.

Silveira responder pelo crime de coação no curso de processo (usar de "violência ou grave ameaça" contra autoridades por interesse pessoal) e também por dois artigos da Lei de Segurança Nacional: estimular o emprego de violência contra o livre exercício dos Poderes e incitar as Forças Armadas contra o STF.

O parlamentar esteve quase um mês preso em um batalhão da Polícia Militar em Niterói, na região metropolitana do Rio, até ser colocado em prisão domiciliar desde o dia 14 de março. Para conceder o benefício, Moraes impôs várias restrições: o deputado teve que instalar tornozeleira eletrônica, foi proibido de receber visitas sem autorização, de falar com outros investigados e de usar as redes sociais. Seus perfis no Facebook, no Instagram e no Twitter foram bloqueados dias depois da prisão.