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

Marcos Pontes endossa Bolsonaro e questiona Inpe sobre dados de desmatamento

Jair Bolsonaro cumprimenta o ministro Marcos Pontes, da Ciência e Tecnologia - Eduardo Anizelli/Folhapress
Jair Bolsonaro cumprimenta o ministro Marcos Pontes, da Ciência e Tecnologia Imagem: Eduardo Anizelli/Folhapress

Giovana Girardi

22/07/2019 15h25

Três dias após o início das contestações do presidente Jair Bolsonaro sobre os dados apresentados pelo Instituto Nacional de Pesquisas Espaciais (Inpe) a respeito do desmatamento da Amazônia, o ministro da Ciência, Tecnologia, Inovações e Comunicações, Marcos Pontes, se manifestou no início da tarde desta segunda-feira, 22, endossando o chefe.

Ele disse que compartilha a "estranheza" de Bolsonaro quanto à variação dos dados e pediu um "relatório técnico completo" sobre os últimos dois anos de análises. Também afirmou que vai cobrar um posicionamento do diretor do Inpe, Ricardo Galvão.

"Com relação aos dados de desmatamento produzidos pelo Inpe, organização pelo qual tenho grande apreço, entendo e compartilho a estranheza expressa pelo nosso presidente Bolsonaro quanto à variação porcentual dos últimos resultados na série histórica", escreveu o ministro em nota divulgada pela pasta.

Na última sexta-feira, Bolsonaro, em café da manhã com jornalistas estrangeiros, disse que os dados que mostram aumento da perda da floresta em junho e julho são mentirosos. Ele também insinuou que o diretor do Inpe, Ricardo Galvão, esteja "a serviço de alguma ONG".

Conversa de botequim

No dia seguinte, em entrevista ao jornal O Estado de S. Paulo, Galvão afirmou que o presidente fez "comentários impróprios" e "ataques inaceitáveis" que mais parecem "conversa de botequim" e disse que a atitude dele foi "pusilânime e covarde". O pesquisador ainda desafiou o presidente a repetir os comentários olhando nos olhos dele e disse que não pediria demissão.

No domingo, Bolsonaro voltou a criticar os dados, desta vez dizendo que divulgar dados "alarmantes" de desmatamento "prejudica" o País. O presidente jogou a bola para o seu ministro e disse que Pontes falaria com Galvão. O Estado vem procurando o ministro desde sexta-feira, uma vez que o Inpe é subordinado à pasta, mas só hoje recebeu a nota em resposta.

No texto, Pontes diz que a "contestação de resultados, assim como a análise e discussão de hipóteses, são elementos normais e saudáveis do desenvolvimento da Ciência, suas teorias e metodologias" e que está solicitando ao Inpe "um relatório técnico completo contendo os resultados da série histórica dos últimos 24 meses, assim como informações detalhadas sobre os dados brutos, a metodologia aplicada e quaisquer alterações significativas desses fatores no período".

De acordo com a nota, o relatório será analisado por técnicos do ministério, do próprio Inpe e também do Ministério do Meio Ambiente. Segundo Pontes, isso visa à "melhoria continuada do monitoramento e preservação ambiental, assim como o aperfeiçoamento das ferramentas e metodologias empregadas no sistema".

Sobre as declarações feitas por Galvão à imprensa, disse: "Embora entenda o contexto do fator emocional, discordo do meio e da forma utilizada pelo diretor, visto que não corresponderam ao tratamento esperado na relação profissional, especialmente com o chefe do Executivo do País". E afirmou que convidou Galvão a comparecer ao Ministério para "esclarecimentos e orientações". Segundo o ministro, "a partir dessa reunião serão definidos novos os".