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

Thaís Oyama

ANÁLISE

Texto baseado no relato de acontecimentos, mas contextualizado a partir do conhecimento do jornalista sobre o tema; pode incluir interpretações do jornalista sobre os fatos.

Bolsonaro atropela Guedes e lei de mercado ao baixar o diesel na marra

Paulo Guedes: é o presidente que não escuta ou é o ministro que desistiu de falar?  - EVARISTO Sá/AFP
Paulo Guedes: é o presidente que não escuta ou é o ministro que desistiu de falar? Imagem: EVARISTO Sá/AFP

Colunista do UOL

19/02/2021 12h19

Jair Bolsonaro anunciou na live de quinta-feira que vai zerar por dois meses os impostos federais sobre o diesel e acabar para todo sempre com as taxações sobre o gás de cozinha. Indicou também que pretende demitir Roberto Castello Branco, presidente da Petrobras, que, pouco mais cedo, havia anunciado um novo aumento no preço da gasolina (na noite desta sexta-feira, a demissão se concretizou].

Como até as pedras sabem, a Petrobras define o preço dos combustíveis de acordo com a lógica da paridade internacional. Ou seja, toma como base o valor do barril de petróleo multiplicado pela taxa de câmbio.

Como tanto o preço do barril de petróleo no exterior está em alta como o dólar no Brasil, o resultado é o aumento do custo dos combustíveis.

Isso irrita Bolsonaro sobretudo porque atinge em cheio os caminhoneiros, um importante grupo de apoio para ele.

A solução desenhada pelo presidente, além de cortar a cabeça do mensageiro, foi abrir mão de impostos federais e talvez mandar para a cucuia a Lei de Responsabilidade Fiscal, que obriga o governo a compensar qualquer perda de arrecadação com corte de gastos ou elevação de outros tributos.

Até aqui, nenhuma surpresa.

Bolsonaro, como de hábito, pensa errado, faz errado e reitera não apenas que desconhece economia como caminha a os largos pela avenida do populismo, cujo ponto de chegada é a sua reeleição.

A pergunta que se faz aqui é: como fica Paulo Guedes nisso?

Como lembra o especialista em contas públicas Raul Velloso, faz parte do beabá da economia liberal a ideia de que o aumento dos preços de um produto sinaliza a escassez desse produto. E que, a partir dessa sinalização, o consumo do bem em questão a a diminuir (dada a limitação dos compradores), da mesma forma que a a aumentar a sua produção (dado que isso representa oportunidade de ganho para quem produz). É essa a dinâmica que permite a volta dos preços ao seu patamar de equilíbrio.

Ao retirar a sinalização de escassez, portanto, por meio de subsídio disfarçado de retirada de tributos, o governo age contra, e abala, o sistema de mercado, com as consequências funestas que isso acarreta (queda da Bolsa e aumento do dólar são apenas os efeitos imediatos).

E se o governo Bolsonaro viola o sistema de mercado, o que diz disso o "homem de mercado", liberal juramentado e ministro Paulo Guedes?

Por enquanto, não disse nada.

O que prova, mais uma vez que longe de conseguir iluminar Bolsonaro, o posto Ipiranga foi por ele obscurecido.

O mercado há tempos já percebeu isso e só não pede a cabeça de Guedes por medo de ver coisa pior no seu lugar.