;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Carla Araújo

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Ministro da Defesa, general Azevedo e Silva anuncia saída do governo

Do UOL, em Brasília

29/03/2021 15h59

Receba os novos posts desta coluna no seu e-mail

Email inválido

Apontado como um dos principais auxiliares do presidente Jair Bolsonaro, o ministro da Defesa, Fernando Azevedo e Silva, entregou o cargo nesta segunda-feira (29). Sem maiores explicações para a razão de sua saída, em uma nota oficial divulgada pela assessoria da pasta, o ministro agradece ao presidente Jair Bolsonaro e aos comandantes das Forças e diz que sempre atuou para que as Forças Armadas fossem preservadas como instituição de estado.

"Agradeço ao Presidente da República, a quem dediquei total lealdade ao longo desses mais de dois anos, a oportunidade de ter servido ao País, como Ministro de Estado da Defesa. Nesse período, preservei as Forças Armadas como instituições de Estado. O meu reconhecimento e gratidão aos Comandantes da Marinha, do Exército e da Aeronáutica, e suas respectivas forças, que nunca mediram esforços para atender às necessidades e emergências da população brasileira", diz a nota. "Saio na certeza da missão cumprida", finaliza.

De acordo com fontes ligadas ao general, a decisão veio após um pedido do presidente Jair Bolsonaro pelo cargo. "Ele sai sereno", disse um auxiliar.

O anúncio da saída do general, sem maiores justificativas por ora, pegou de surpresa algumas fontes em Brasília que estavam envolvidas nas tratativas para fechar um substituto para o ministro das Relações Exteriores, Ernesto Araújo, que também informou sua decisão de sair do governo ao presidente.

Com a saída de Ernesto e Azevedo, no mesmo dia, o presidente Jair Bolsonaro perde dois importantes expoentes de alas diferentes do governo: um da ala ideológica e outro da ala militar.

Novas mudanças

Fontes do Palácio do Planalto afirmam que outras mudanças podem ainda ser anunciadas hoje.

Segundo um general ouvido pela coluna, existe a possibilidade de o atual ministro da Secretaria de Governo, Luiz Eduardo Ramos, ir para o comando da Defesa, o que poderia abrir espaço político para o cargo de articulação.

Além disso, outra possibilidade, segundo auxiliares, é que o atual ministro da Casa Civil, Braga Netto vá para a Defesa e Ramos assuma a Casa Civil.

Com isso, Bolsonaro deve contemplar um político do Centrão com mais espaço no governo.

Saída foi selada em rápida conversa

Pessoas próximas do general Fernando disseram que Bolsonaro disse na conversa com o ministro que precisaria do seu cargo para "fazer ajustes na Esplanada". A conversa foi rápida e o general não titubeou, atendeu a ordem de entregar seu espaço no governo.

A alguns amigos, o general disse que não irá sair "atirando" e que nem deve fazer críticas públicas ao governo.

Militares ouvidos pela coluna lamentaram a saída do general Fernando e lembraram que ele conseguiu enfrentar diversos momentos de turbulência mantendo a harmonia entre as instituições.

Fernando Azevedo e Silva, que trabalhou como assessor do ministro do STF, Dias Toffoli, era sempre chamado para intermediar conversas com a cúpula dos outros poderes e apontado como um bom apaziguador.