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

Haddad lamenta derrota de França para Marcos Pontes: 'Destruiu a Ciência'

Do UOL, em São Paulo

06/10/2022 21h56Atualizada em 06/10/2022 21h56

Lideranças políticas e membros da sociedade civil se reuniram na noite desta quinta-feira (6) em São Paulo para defender as candidaturas de Luiz Inácio Lula da Silva (PT) e Fernando Haddad (PT) em evento batizado de "Frente Ampla Pela Democracia".

Haddad discursou brevemente. A princípio, ele seria acompanhado por Lula, mas o ex-presidente cancelou a ida pouco antes do início do ato. O vice de Lula, o ex-governador Geraldo Alckmin (PSB), também participou do evento, realizado na Casa de Portugal, no bairro da Liberdade, zona sul de São Paulo.

Durante a fala, Haddad disse ser necessário acabar com o "flerte autoritário do governo federal" e criticou os cortes nos orçamentos de setores como Ciência, Meio Ambiente e Educação. Ele também afirmou que as eleições de 2022 não se tratam apenas da escolha de candidatos, mas sim de um regime.

"Pela democracia, contra o autoritarismo, estamos escolhendo um regime no dia 30", disse.

Nós vamos varrer o bolsonarismo, vamos varrer o fascismo"
Fernando Haddad

Márcio França. O ex-prefeito de São Paulo falou publicamente pela primeira vez sobre a derrota de Márcio França (PSB) no Senado para Marcos Pontes (PL), candidato apoiado por Bolsonaro.

"Lamentei tanto a não eleição do Márcio França, pelo Márcio e por quem foi eleito. O sujeito que destruiu o Ministério da Ciência e Tecnologia. Pega o orçamento, os cortes nas bolsas de pesquisa, foi uma devastação", afirmou.

Lúcia França. Haddad dividiu diversas agendas com França durante a campanha do 1º turno e a mulher dele, Lúcia França, é sua vice na chapa. Lúcia, presente no ato, também discursou. Ela alfinetou Tarcísio de Freitas (Republicanos) por não ser paulista.

"Aqui em São Paulo nós temos um adversário que nem nasceu aqui. Que nem sabe onde ele vota, que nem sabe se situar na cidade do São Paulo, quem dirá no estado de São Paulo. Aqui em São Paulo temos uma mulher candidata e a gente não faz democracia sem participação das mulheres", disse ela.

"Eles vão ter que nos engolir, vão ter que disputar contra a voz da mulher. Aqui é a chapa da Janja, da dona Lu Alckmin, da Ana Estela e da Lúcia França", acrescentou.

Apoios. Muito aplaudido, Alckmin defendeu as candidaturas de Lula e Haddad: "Eu entendo que a nação é muito mais importante do que o governo." Já Simone Tebet (MDB) enviou um vídeo ao evento reiterando o apoio à candidatura de Lula.

"Não podemos votar em nulo, não podemos votar em branco. A única opção para a democracia é o voto na eleição ao candidato Lula", disse Tebet.

Também estavam presentes no evento Marina Silva (Rede), Gleisi Hoffmann (PT), Wellington Dias (PT-PI), Marcelo Ramos (PT), José Luiz Penna (PV), Antônio Neto (PDT), Eduardo Suplicy (PT-SP), Aloysio Nunes (PSDB) e Miguel Reale Jr.

Aloysio foi outro a reiterar seu apoio a Lula. No evento ele também declarou voto em Haddad. Mais cedo, à reportagem, ele voltou a criticar Rodrigo Garcia (PSDB) pelo apoio a Bolsonaro e Tarcísio.

Tucanos históricos. Mais cedo, Lula teve um encontro com quatro quadros históricos do PSDB que já haviam anunciado seu apoio ao petista: Tasso Jereissati, José Aníbal, Pimenta da Veiga e Teotônio Vilela Filho.