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

OPINIÃO

Carla Bigatto: Pazuello é fantoche controlado pelo presidente Bolsonaro

Colaboração para o UOL, em São Paulo

30/10/2020 09h35

Apesar de o presidente Jair Bolsonaro (sem partido) ter defendido a permanência do ministro da Saúde, general Eduardo Pazuello, no governo, a situação dele não é confortável —principalmente depois de uma semana com acontecimento marcantes nesta área e sem manifestação alguma do ministro.

"Pazuello sai? Pazuello é demitido ou será que vai ficar por isso mesmo? Pelo jeito a resposta está clara, né? Pazuello fica, Pazuello sendo um fantoche absolutamente controlado pelo presidente", opina a apresentadora do podcast Baixo Clero, Carla Bigatto. (Ouça a partir de 13:46)

Pazuello está afastado desde a semana ada, quando o ministério anunciou que seu exame para covid-19 deu positivo. No mesmo dia, ele havia sido desautorizado pelo presidente —Bolsonaro mandou cancelar a compra de 46 milhões de doses da CoronaVac, a vacina desenvolvida e testada pelo laboratório chinês SinoVac em parceria com o Instituto Butatan, ligado ao governo paulista.

O assunto foi abordado no episódio do podcast Baixo Clero #63, apresentado por Bigatto, com a participação dos colunistas do UOL Carolina Trevisan e Diogo Schelp.

Trevisan criticou a decisão do presidente de cancelar a compra do imunizante. "Você vai falar de cobaia? E no momento em que você tem a oportunidade de fazer o melhor investimento, você volta atrás depois de anunciar? Por uma questão de ego? De quem manda mais aqui? Por esse tipo de questão?", questionou. (Ouça a partir do minuto 19:11)

Na ocasião, Bolsonaro disse: "Já mandei cancelar, o presidente sou eu, não abro mão da minha autoridade".

Para a colunista, o afastamento de Pazuello pode ter sido "bom para ele, no sentido que ele pode se afastar da crise". "Vamos ver se Pazuello volta bem e vivo, ou se volta meio zumbi. Porque, de fato, o que Bolsonaro fez foi uma humilhação contra ele." (Ouça a partir do minuto 18:01)

Os três participantes também falaram de outras pautas da pasta em alta nos últimos dias —como o incêndio que deixou quatro mortos no hospital federal de Bonsucesso e o decreto que autorizava estudos para parcerias entre os setores privado e público para construção e istração de UBSs (Unidades Básicas de Saúde), e foi revogado depois da repercussão negativa.

"Enquanto isso, nem sinal do ministro da Saúde. Tudo bem, compreensível que Pazuello esteja recolhido por causa da contaminação do coronavírus, porém, ele se reuniu algumas vezes com o presidente da República, em agenda oficial. Por isso, eu senti falta da manifestação do ministro, nem que seja por rede social, já que isso está tão em alta, sobre o incêndio e também sobre o futuro do SUS", disse Bigatto. (Ouça a partir de 13:15)

Durante o podcast de política do UOL, os colunistas também falaram sobre a cotação do dólar e a cruzada antiaborto.

Baixo Clero está disponível no Spotify, na Apple Podcasts, no Google Podcasts, no Castbox, no Deezer e em outros distribuidores. Você também pode ouvir o programa no YouTube. Outros podcasts do UOL estão disponíveis em uol.com.br/podcasts.