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

Bolsonaro critica países europeus que terão de aprovar acordo com Mercosul

Bruno Aragaki e Vanessa Alves Baptista

Do UOL, em São Paulo

04/07/2019 20h00

O presidente Jair Bolsonaro (PSL) criticou nesta noite mais uma vez países europeus dos quais o Brasil dependerá para aprovar o acordo de livre comércio entre Mercosul e União Europeia, amplamente comemorado pelo governo nos últimos dias.

"Dois chefes de Estado, da França e da Alemanha, a maneira como começaram a conversar conosco, logicamente não é maneira como eu esperava, e nós mostramos para eles que o Brasil mudou", afirmou Bolsonaro na transmissão semanal de vídeo que faz para redes sociais. O presidente disse também que deu um "novo tom" no diálogo com esses países.

Mais cedo, Bolsonaro já havia dito em encontro com a bancada ruralista que Angela Merkel, chanceler da Alemanha, e Emmanuel Macron, presidente da França, não têm autoridade para discutir a questão ambiental.

Desde antes da reunião do G20 --grupo das 20 principais economias do mundo--, Bolsonaro e membros do primeiro escalão do governo têm rebatido publicamente as críticas de Merkel e de Macron em relação a desmatamento, agrotóxicos e direitos indígenas no Brasil.

"O que era comum após um evento desse? O presidente voltava para o Brasil e remarcava mais 30 áreas de reserva indígena, mais 5 quilombolas, ampliava estação ecológica ou criava novas, novas Apas [Áreas de Preservação Ambiental], cada vez mais inviabilizava o Brasil", afirmou Bolsonaro.

O presidente da República também disse que a Alemanha não vai cumprir com o acordo de Paris - um dos requisitos da Europa para firmar o tratado com o Mercosul é que os países se comprometam com o acordo.

"A Alemanha não vai cumprir, porque a fonte de energia deles é fóssil, não tem como sair rapidamente de uma para outra e, quando eles falam em carro elétrico, não está economizando emissão de carbono no espaço, não, porque aquela eletricidade veio de uma termoelétrica", afirmou.

Bolsonaro também questionou um interlocutor de Emmanuel Macron na causa indígena.

"O Macron [presidente da França] quer conversar comigo ao lado do índio Raoni. Eu perguntei: quem é Raoni?", afirmou.

"É um líder como outro qualquer, merece respeito como outro qualquer, agora, eu vou conversar, fazer um acordo com o Raoni do lado? De jeito nenhum", completou.

Comemorado, mas ainda não fechado

A discordância dos países criticados por Bolsonaro em relação à política ambiental brasileira será o principal entrave para o avanço do acordo que, até agora, figura entre os principais logros do governo Bolsonaro.

Na semana ada, União Europeia e Mercosul deram um o importante para concretizar esse projeto que se arrasta há 20 anos e dará o mais barato de produtos do Mercosul à Europa, e vice-versa. Mas o documento ainda precisa ser aprovado pelo parlamento europeu e de cada um dos países envolvidos.

Na Alemanha, membros do Partido Verde, que já formam uma das principais bancadas do país, ameaçam bloquear o avanço do acordo.