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

Ex-ministro de Bolsonaro, astronauta Marcos Pontes se elege senador por SP

Juliana Arreguy

Do UOL

02/10/2022 20h28Atualizada em 02/10/2022 23h19

O astronauta Marcos Pontes (PL) foi eleito senador por São Paulo neste domingo (2). Ex-ministro de Jair Bolsonaro (PL), ele deixou o cargo no governo federal em março para disputar as eleições de 2022.

Marcos Pontes recebeu 10.714.913 de votos (49.68%), ficando à frente de Márcio França (PSB), com 7.822.518 (36,27%); Edson Aparecido (PSDB), com 1.655.224 (7,67%); e Janaina Paschoal (PRTB), com 447.550 (2,07%).

Nascido em Bauru (SP), Marcos Pontes, 59, é engenheiro, astronauta e tenente-coronel reformado da Força Aérea. Foi o único brasileiro enviado ao espaço, em março de 2006, e chefiou o Ministério da Ciência, Tecnologia e Inovações (2019-2022) no governo de Jair Bolsonaro.

Pontes foi candidato a deputado federal pelo PSB em 2014. O partido é o mesmo de Márcio França, que foi seu principal adversário na corrida pelo Senado neste ano.

Há oito anos, Pontes não foi eleito: ele recebeu 43.707 votos, o equivalente a 0,21% do eleitorado paulista. Já em 2018, foi o segundo suplente a senador de Major Olímpio (no então PSL), morto em março de 2021 após complicações da covid-19.

Apadrinhado por Bolsonaro

O astronauta — como se identificou durante a campanha e em seu nome de urna — integrou a chapa de Tarcísio de Freitas (Republicanos) ao governo estadual com o apoio de Bolsonaro. Os três dividiram o palanque ao longo da campanha.

Durante a pandemia de covid-19, Bolsonaro deu diversas declarações contra campanhas de vacinação e estimulou o uso de medicamentos sem eficácia comprovada contra o coronavírus. Apesar disso, Pontes negou que o governo tenha sido contrário à ciência e minimizou as declarações do presidente.

"Não me cabe comentar ou julgar e falar a respeito das opiniões do presidente. É melhor perguntar para ele mesmo isso aí [declarações durante a pandemia]. Obviamente não concordo com tudo", disse ele em setembro ao UOL Entrevista.

A vitória de Pontes ocorreu após o candidato ter figurado em segundo nas pesquisas de opinião no estado. Márcio França (PSB), que contou com o apoio do ex-presidente Luiz Inácio Lula da Silva (PT), liderou grande parte dos levantamentos eleitorais em São Paulo.

Como ficará a bancada de SP no Senado?

Pontes se juntará a Alexandre Giordano (MDB) e Mara Gabrilli (PSDB) na bancada paulista do Senado — cada estado tem direito a três representantes na Casa. Até 2023, a cadeira que será ocupada por Pontes pertence a José Serra (PSDB).

No Senado, diferentemente da Câmara, os mandatos duram oito anos. Tanto Giordano quanto Gabrilli só terminam seus respectivos mandatos em 2027. Pontes, por outro lado, foi eleito para desempenhar suas funções até 2031.

No entanto, a eleição de Pontes pode criar uma situação inusitada. Com a morte de Major Olímpio, a vaga dele no Senado ficou com Alexandre Giordano, enquanto Pontes ou de segundo para primeiro suplente.

Caso Giordano deixe o cargo antes do fim do mandato, São Paulo ficará com um senador a menos na Casa.

Essa situação foi explorada por adversários de Pontes ao longo da campanha, em especial pela deputada estadual Janaína Paschoal (PRTB), que também concorria a uma vaga no Senado.

O primeiro suplente de Pontes é o vereador de Campinas Professor Alberto (PL). Já a segunda suplente é a empresária Sirlange Manga (PL), mulher do prefeito de Sorocaba.