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

OPINIÃO

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

Bolsonaro sugere método usado por milícias para baratear gás de cozinha

19.ago.2021 - O presidente da Caixa, Pedro Guimarães, e o presidente Jair Bolsonaro (sem partido) durante live - Reprodução/YouTube
19.ago.2021 - O presidente da Caixa, Pedro Guimarães, e o presidente Jair Bolsonaro (sem partido) durante live Imagem: Reprodução/YouTube

Colunista do UOL

20/08/2021 14h13

Definitivamente, o presidente Jair Bolsonaro não sabe mais o que fazer para justificar ao eleitorado mais pobre a alta do preço do gás de cozinha. Há algumas semanas, prometeu lançar um programa de compra de botijões para a população carente e disse que a Petrobras teria R$ 3 bilhões para gastar com isso. Acabou desmentido pela empresa, que informou em comunicado que "não há definição" sobre tal projeto. Ontem, em sua live semanal, Bolsonaro fez mais uma declaração esdrúxula.

Começou comentando a intenção de alguns governadores de instituir o vale-gás. Em sua oratória trôpega, disparou: "Mas eu acho que, em vez do vale-gás, se zerar o imposto estadual ICMS, vai ser excelente. Sabe por quê? Nós podemos começar a tratar da venda direta do botijão de gás, a exemplo do etanol".

A proposta maluca do presidente parte do princípio de que os governadores deveriam abrir mão de uma fatia de sua principal fonte de recurso, o ICMS, para baratear o preço do botijão.

Mais à frente, dá pitaco sobre a melhor forma de comercialização.

"Você pode pegar o teu caminhãozinho, para a tua comunidade, você vive às vezes num condomínio fechado. Uma vez por mês teu caminhãozinho vai lá e compra ali 100 botijões de gás. ICMS tá zerado", ensinou ele. "O frete do caminhãozinho vocês pagam do condomínio. Margem de lucro: zero. Não precisa ter lucro para quem for entregar lá, é o trabalho comunitário". Com isso, garante Bolsonaro, o preço seria a metade do atual.

O presidente sabe muito bem que essa receita já é posta em prática em muitas áreas pobres do Rio. Milicianos que dominam favelas cariocas periodicamente dispõem de muito mais que 100 botijões de gás. A diferença é que nesse "trabalho comunitário" o lucro não é zero. Pelo contrário. Milicianos cobram uma fortuna por cada botijão, que acaba ficando mais caro que nos distribuidores regulares.

Sob o domínio das armas pesadas da milícia, as leis de concorrência de mercado são inexistentes.

Em mais uma tentativa de se eximir da responsabilidade do poder público e reá-la a outros, Bolsonaro radicalizou. Se a sugestão presidencial vingasse (o que é improvável), os grupos paramilitares poderiam gabar-se de que, ao menos no ramo do gás de cozinha, seu empreendimento contaria com o aval do presidente.

A fórmula bolsonariana de barateamento tem ainda uma inovação importante. Ao propor que os governadores baixem a zero o ICMS, ele na prática indica o caminho para que os cofres públicos recebam menos impostos e os distribuidores clandestinos de botijões lucrem ainda mais.

Não há possibilidade à vista de que esse delírio se concretize. Mesmo assim, a ideia de Bolsonaro deve ter sido muito comemorada em Rio das Pedras. Os milicianos agradecem.