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

"Esquerda universitária" e periferia são desafios para Boulos e PT subirem

Nathan Lopes

Do UOL, em São Paulo

29/10/2020 04h00

Candidatos do campo da esquerda mais bem posicionados nas pesquisas sobre a disputa pela Prefeitura de São Paulo, Guilherme Boulos (PSOL) e Jilmar Tatto (PT) foram os que mais cresceram em cenários específicos no último levantamento do Datafolha. Com eleitorados de perfis distintos no atual momento, eles ainda não têm tirado votos um do outro. Ainda.

Para o cientista político Carlos Melo, professor do Insper, Boulos tem que tirar votos do candidato do PT para crescer. Ele precisa "desidratar completamente o Tatto para crescer e precisa também do voto popular, nas mãos do Russomanno". "Não cabem os dois [no segundo turno]. Eles vão disputar votos", concorda o cientista político Glauco Peres, professor da USP (Universidade de São Paulo).

Atualmente, Boulos aparece com 14% das intenções de voto, e Tatto, 4%. Melo opina que talvez seja complicado para a esquerda chegar ao segundo turno.

Tatto e Boulos têm um percentual de votos em torno de 20%, a ser dividido entre eles. Talvez esse seja o limite do eleitorado de esquerda. Com uma eleição fragmentada, talvez com algo próximo de 20% [o candidato] possa ir para o segundo turno
Carlos Melo, cientista político

Em 2016, as candidaturas de Fernando Haddad (PT) e Luiza Erundina (PSOL) somaram cerca de 20%.

Perfis distintos de eleitor

Empatado tecnicamente com Celso Russomanno (Republicanos) na segunda posição, no limite da margem de erro, Boulos aparece consolidado como o candidato da "esquerda universitária". Seu desempenho é o melhor entre os eleitores mais jovens, com idades entre 16 e 24 anos, e entre quem possui ensino superior. Boulos também se sai melhor entre os ricos, com renda acima de dez salários mínimos.

Já Tatto, que começou a crescer nas pesquisas após o início do horário eleitoral no rádio e na TV, viu seus índices subirem principalmente entre os eleitores pardos e com renda de até dois salários mínimos. O petista também teve avanços no eleitorado com idades entre 45 e 59 anos, no grupo com ensino fundamental e entre evangélicos.

Tatto quer tirar votos de Russomanno e Covas

Mas a subida de Tatto nos índices não foi motivada por Boulos, que cresceu ou se manteve estável nesses grupos. A mudança nos cenários do petista deve-se mais à queda de Russomanno, cujo eleitorado está mais próximo do perfil do partido. Também houve oscilação negativa entre os eleitores que indicavam não saber em quem votar.

Para chegar ao segundo turno, Tatto precisará tirar votos de Russomanno, Bruno Covas (PSDB) e também de Boulos.

Por enquanto, o discurso na campanha do petista exclui Boulos dos alvos. "Nossa tática é ganhar do Russomanno e do Covas", diz o deputado estadual José Américo (PT-SP), responsável pela comunicação da campanha de Tatto.

Para ele, Tatto cresce sem influenciar no eleitorado de Boulos. Américo afirma que, enquanto o concorrente se consolida nas "camadas mais ilustradas, da intelectualidade", o PT busca crescer no "público de baixa renda, no público lulista".

Glauco Peres, porém, avalia que o mais difícil, tanto para o petista quanto Boulos, é tirar votos de Covas enquanto o eleitorado de Russomanno seria mais volátil, como demonstram suas derrotas em 2012 e 2016.

"Eu acho mais difícil saírem votos do Covas, porque é uma candidatura governista, é mais de centro", diz o professor da USP.

O eleitor do Russomanno, eu nem sei quem é. Um eleitor que parece mais indeciso, menos certo do que está fazendo, mais sujeito a mudar de opinião.
Glauco Peres, professor da USP

No caso específico de Tatto, Melo diz acredita que a situação é difícil de ser alterada. "Estamos a cerca de duas semanas da eleição. Não é uma eleição fácil de ser revertida em um tempo tão curto. Escolheram um candidato menos conhecido e agora fica mais difícil, o ritmo é muito acelerado. Não dá tempo de fazer o trabalho de formiguinha."

Boulos visa crescer na periferia

Boulos, por sua vez, precisa crescer na periferia, cujo eleitorado hoje está mais próximo de Russomanno, Covas e do PT. Para avançar nessa área, a campanha do PSOL apostará na candidata a vice de Boulos, Erundina, ligada às regiões periféricas da capital.

"Ela é a referência do Boulos, é a pessoa conhecida, foi prefeita. Há uma memória. E ele não. É um jovem político, está no começo da sua carreira, ainda tem dificuldade para se espalhar por esse mundão que é São Paulo", diz Melo.

"Ela não tem uma rejeição que tem um Lula, um Doria, um Bolsonaro." Quando foi prefeita de São Paulo, Erundina estava no PT.

"A nossa taxa de conhecimento em comparação com os adversários é muito menor", diz Josué Rocha, coordenador da campanha, lembrando que esta é a segunda eleição de Boulos. O Datafolha aponta que 43% não conhecem o candidato, número próximo ao de Tatto, desconhecido para 48%.