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

Josias de Souza

Militares rebatem Gilmar, mas estão incomodados com general na Saúde

Ministro interino da Saúde, general Eduardo Pazuello, em Brasília -
Ministro interino da Saúde, general Eduardo Pazuello, em Brasília

Colunista do UOL

14/07/2020 19h18

Receba os novos posts desta coluna no seu e-mail

Email inválido

O ministro Gilmar Mendes gosta de repetir uma frase. Diz o seguinte: "Ninguém se livra de pedrada de doido nem de coice de burro". Corre no Supremo Tribunal Federal há mais de um ano um inquérito secreto aberto em condições esquisitas. Visa apurar alegados ataques à Corte e aos seus membros. Decidiu-se, com o apoio de Gilmar, tratar como ataques à instituição as pedradas e os coices que têm o Supremo como alvo.

De repente, Gilmar Mendes utiliza o fiasco da istração do general Eduardo Pazuello no Ministério da Saúde para afirmar que o Exército se vincula a um genocídio. E espera que sua fala seja recebida com naturalidade. Diante da decisão do Ministério da Defesa de acioná-lo junto à Procuradoria-Geral da República, Gilmar disse que respeita as Forças Armadas. Mas reiterou a crítica à conversão da pasta da Saúde numa estrutura militar num instante em que a pandemia pede gestão técnica.

Não há dúvida de que o expurgo de dois ministros médicos e a substituição de 28 técnicos por militares associou o Ministério da Saúde o Exército ao estorvo que Jair Bolsonaro ou a representar na pandemia. O desastre se reflete nas estatísticas da crise do coronavírus. E vem sendo realçado à exaustão no Brasil e no exterior. Mas isso não autoriza um ministro do Supremo a exagerar na retórica como se estivesse atirando pedras ou distribuindo coices. Se o Supremo reage corporativamente contra os ataques que sofre, o ministro não pode reclamar da reação corporativa dos militares.

A cúpula das Forças Armadas não está alheia aos riscos que corre na Saúde. Discute-se, por exemplo, a hipótese de o general Pazuello ar para a reserva. Tenta-se também convencer Bolsonaro a nomear um ministro efetivo, interrompendo a interinidade do general. O presidente não esboçou, por ora, interesse por nenhuma dessas hipotéticas soluções.

A Bolsonaro parece interessar a manutenção do quadro em que seu governo se confunde com a instituição militar. Para as Forças Armadas isso serve apenas para inspirar pedradas de doido e coices de burro. Forças Armadas são instituições de Estado, não se confundem —ou não deveriam se confundir— com forças de sustentação de um governo.