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

Matheus Pichonelli

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Com desfile militar, Bolsonaro só mostrou a potência do meme nacional

Meme postado no Twitter durante o desfile de blindados em Brasília - Reprodução/Twitter
Meme postado no Twitter durante o desfile de blindados em Brasília Imagem: Reprodução/Twitter

Colunista do UOL

11/08/2021 04h00

Ao que tudo indica, Jair Bolsonaro queria ostentar o muque no dia em que sua natimorta proposta do voto impresso seria definitivamente enterrada na Câmara.

Por redes sociais, chamou os chefes do Congresso, do STF e do TSE para assistir à sua "blindadociata", como ficou conhecido o desfile de blindados da "sua" Marinha numa terça-feira de manhã. Só não ficou sozinho na festa graças à presença dos subordinados — até aí, todo mundo já participou a contragosto de alguma palestra motivacional na firma para não arrumar encrenca com a chefia.

O fato é que Bolsonaro conseguiu de fato mostrar ao mundo a potência nacional. No caso, a potência produtora de memes em escala industrial num ritmo que país nenhum do mundo pode acompanhar.

Durante o desfile, não faltou nas redes quem associasse o fumacê de um dos tanques ao ar pelo Planalto ao carro de combate ao mosquito da dengue. A palavra foi parar nos trending topics. A ameaça, segundo uma das postagens, não era direcionada aos deputados, mas ao clima global.

Cortina de fumaça perdeu o sentido alegórico. Mais uma perda ao país que aboliu a metáfora.

"Quem é que joga fumaça pro alto", escreveram cantando os antigos fãs de Planet Hemp, muitos já ressignificando a letra de "Contexto".

Enquanto o veículo desfilava, um engraçadinho trocou o áudio para anunciar a agem da pamonha. Pamonha fresquinha. Pamonha de milho. O puro creme de Brasil.

Outros tantos buscaram nos arquivos de gifs e memes as forças-tarefas para pintura de árvores e meios-fios após o desfile que ninguém entendeu a que servia a não ser amedrontar os desobedientes deputados.

Não faltaram também trocadilhos com tanques, mísseis, miras, hastes, canos, falos.

Mancada? Mancada.

Mas ficaria mais fácil se os amantes da demonstração de força, potência e virilidade ajudassem a ajudá-los. Um dos mais empolgados deles era um deputado federal da base governista que confessou: "Nunca uma manobra militar mexeu tanto com meu patriotismo".

A foto que acompanhava a legenda era a de um desfile do Exército chinês.

O deputado virou a piada do dia com seu misto de burrice e patriotismo made in China. Mas vamos combinar: nada muito diferente do que já fazem os compatriotas do tipo que juram amor à pátria batendo continência à bandeira dos EUA ou cantam o hino nacional na frente da réplica de uma estátua nova-iorquina.

Nas montagens que correram as redes, Bolsonaro, o dono da festa, aparecia estilizado com a cabeleira inconfundível do ditador da Coreia do Norte, Kim Jong-un; em uma das montagens, recebia continências dos filhos e apoiadores, enquanto carregava uma miniatura da deputada Bia Kicis no ombro, como um papagaio-de-pirata.

Uma apoiadora também entrou na pista da vergonha alheia e criou uma montagem para homenagear seu presidente. Dizia que se o povo temia um simples e rotineiro desfile militar, imagina o que aconteceria quando acontecesse "isto daqui". O "isto daqui" era a imagem do Apocalipse, com cavalos brancos e alados desembarcando na terra com fogo, espada, choro e ranger de dentes. Coisa fina.

Quem embarcou na conversa bolsonarista em 2018 e se arrependeu na primeira ameaça à democracia mal disfarçou o desconforto. Teve até ex-ministro que viu no ato um grande desrespeito com o Congresso e o Brasil, conforme declarou o general da reserva e ex-ministro Santos Cruz — o ex-chefe do Exército que gosta de tuitar em dias de julgamento no STF, ao que se sabe, não se manifestou desta vez.

Entre a turma dos arrependidos e do "eu avisei", a análise inicial do desfile confluiu em um ponto: seria menos custoso, para os cofres públicos e para a saúde mental dos brasileiros, comprar logo uma coleção de bonecos dos Comandos em Ação e deixar Bolsonaro e companhia ocupados com a própria ilusão de grandeza em seus tempos de baixo clero.

Eleito presidente, Bolsonaro agora tenta compensar a sua "confusa mescla de ambições, aspirações e valores menores", como apontavam seus superiores nos tempos de Exército, com brinquedos de tamanho real.

O constrangimento agora é meu, é seu, é nosso — mas é principalmente de quem, em busca do prestígio perdido, se associou a tudo isso, deixou a autoestima e o golpismo aflorar, e agora vê os canhões dos memes voltados contra si.