;(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 chama manifestantes contra cortes na educação de 'idiotas úteis'

Beatriz Bulla, enviada especial

Em Dallas

15/05/2019 14h22

O presidente Jair Bolsonaro chamou de "idiotas úteis" e "massa de manobra" manifestantes que organizam hoje uma série de protestos contra os cortes do governo na educação básica e no ensino superior. O presidente classificou os protestos como algo "natural" e disse que "a maioria ali (na manifestação) é militante".

"Se você perguntar a fórmula da água, não sabe, não sabe nada. São uns idiotas úteis que estão sendo usados como massa de manobra de uma minoria espertalhona que compõe o núcleo das universidades federais", disse Bolsonaro ao chegar em Dallas, nos Estados Unidos. Ele foi recebido por apoiadores ao chegar no hotel onde se hospedará hoje na cidade americana.

Em capitais como São Paulo, Belo Horizonte e Salvador, os atos contra os bloqueios do Ministério da Educação (MEC) começaram pela manhã, embora a maior parte esteja marcada para o período da tarde. Além das manifestações, algumas universidades e escolas cancelaram as aulas.

O presidente disse ainda que não gostaria que houvesse cortes na educação e disse que não teve saída.

"Na verdade não existe corte, o que houve é um problema que a gente pegou o Brasil destruído economicamente, com baixa nas arrecadações, afetando a previsão de quem fez o orçamento e se não tiver esse contingenciamento eu simplesmente entro contra a lei de responsabilidade fiscal", afirmou o presidente. "Mas eu gostaria que nada fosse contingenciado, em especial na educação", disse Bolsonaro.

Ao menos 75 universidades e institutos federais do País convocaram protestos em resposta ao bloqueio de 30% dos orçamentos determinado pelo Ministério da Educação (MEC).

O presidente falou que a educação no Brasil "está deixando muito a desejar". "A garotada, com 15 anos de idade, na oitava série, 70% não sabe uma regra de três simples. Qual o futuro dessas pessoas?", disse o presidente, culpando o governo do PT por não ter dado "qualificação" a parte dos desempregados do País.

Bolsonaro visita Dallas em uma agenda improvisada e organizada às pressas pelo governo, depois de o presidente desistir de ir à cidade de Nova York. Ele participaria do prêmio de "personalidade do ano" concedido pela Câmara de Comércio Brasil-Estados Unidos na noite desta terça, mas a homenagem foi alvo de boicotes e críticas do próprio prefeito da cidade, Bill de Blasio.