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

Chico Alves

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.

Amigo de Bolsonaro chama militares da reserva para ato de apoio em Brasília

Jair Bolsonaro e Waldir Ferraz - Reprodução YouTube
Jair Bolsonaro e Waldir Ferraz Imagem: Reprodução YouTube

Colunista do UOL

11/08/2021 04h00

Depois do criticado desfile de soldados e tanques que foram saudá-lo na manhã de ontem à porta do Palácio do Planalto, o presidente Jair Bolsonaro já tem prevista na agenda a próxima solenidade militar. Será na celebração do Dia do Soldado, no dia 25, à frente do Quartel-General do Exército, em Brasília. Para esse evento, um amigo muito próximo de Bolsonaro convocou e cadastrou militares da reserva de todo Brasil que deverão comparecer para demonstrar apoio ao presidente da República.

O responsável por arregimentar esses simpatizantes é Waldir Ferraz, velho conhecido do presidente e sua família. Foi ele o organizador da motociata em homenagem a Bolsonaro no Rio. Também tratado pelo apelido de Jacaré, Waldir disparou há algumas semanas mensagens no WhatsApp e redes sociais fazendo a convocação.

Em uma das mensagens, sobre a imagem de uma criança envolta na bandeira brasileira, aparece o texto: "Agradeço a adesão de todos os reservistas das FFAA (Forças Armadas) que se dispem em comparecer (sic) em Brasília no dia 25/08 em apoio ao presidente da República". As inscrições se encerraram na segunda-feira, 9.

Waldir contou à coluna que é difícil precisar quantos militares aposentados realmente comparecerão. "Espero pelo menos uns 10 mil ou 15 mil, mas o resultado a gente só vê na hora", estima ele. "Vai ser uma espécie de caravana, com ônibus alugados".

Segundo o organizador do encontro, Bolsonaro não tem nada a ver com a iniciativa. A ideia e execução seriam de responsabilidade dos próprios apoiadores.

Ele adianta que o plano é que os simpatizantes formem um corredor para o presidente ar de manhã, quando sair do Palácio da Alvorada para ir ao Forte Apache, como é conhecido o QG do Exército. Depois, todos seguem para o local da solenidade.

"O pessoal está convocado para mostrar força, para mostrar que está do lado do presidente", explica Waldir. Haverá também encontro de Bolsonaro com os companheiros de turma de 1977 da Academia Militar das Agulhas Negras.

A caravana de reservistas pode ser definida como uma manifestação?

"O pessoal encara como quiser. Alguns vão ficar com a pulga atrás da orelha com esses reservistas todos, vão ficar preocupados. Não querem dizer que ele quer dar o golpe a todo custo? Deixa eles pensarem", diz Waldir, despreocupadamente.