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

Frota revela bastidores do áudio de Bolsonaro sobre 'transar' com ele

Alexandre Frota e Jair Bolsonaro já foram aliados - Michel Jesus/ Câmara dos Deputados
Alexandre Frota e Jair Bolsonaro já foram aliados Imagem: Michel Jesus/ Câmara dos Deputados

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

01/06/2023 12h00

Alexandre Frota revelou como ocorreu a gravação de um áudio em que o então presidente Jair Bolsonaro (PL) diz querer "continuar transando com ele" — isso aconteceu em 2019, pouco antes do então deputado federal romper laços com seu aliado de outrora.

Frota explicou que esse episódio foi resultante de uma série de atritos entre ele e o governo. "O Bolsonaro ligou para o presidente do partido (PSL) e falou: 'eu não quero o Frota, porque o Frota não vai fazer o nosso jogo, ele vai bater [no governo]", disse o famoso no podcast Não é Nada Pessoal.

Bolsonaro ficou ainda mais irritado após Frota pedir a prisão de Fabrício Queiroz, acusado de liderar um esquema criminoso de rachadinha no gabinete do então deputado e hoje senador Flávio Bolsonaro (PL-RJ). "Eu pedi a prisão do Queiroz e ele ligou puto: 'caralho, você está pensando que você é quem, porra? Como você me pede a prisão do Queiroz, tu quer me foder? Quer foder o meu filho? Você está louco, Frota?', e bateu o telefone na minha cara."

Flávio também reclamou. "Depois o Flávio Bolsonaro chegou e falou: 'porra, meu pai tá puto contigo, como é que você pede a prisão do Queiroz? Porra, tu não sabe que isso vai me prejudicar?" E minha vida virou um inferno.

Áudio foi gravado no Palácio do Planalto. Após esses atritos, Alexandre Frota contou que foi participar de um café da manhã com Bolsonaro e outras pessoas. Quando o então presidente o viu, foi ao encontro dele e, nesse momento, uma mulher que estava próximo gravou a conversa entre os dois, quando Jair "brincou" sobre querer "continuar transando" com ele.

"Essa foi a última treta que teve e meu nome ainda estava no café da manhã do Planalto e eu fui... Tinham mil pessoas no Palácio e o Bolsonaro é cheio de brincadeirinhas assim: 'ah, eu estou namorando o Rodrigo Maia, estou ficando noivo de fulano'... Quando eu entro no Palácio, ele me viu, veio na minha direção, aí me pegou pelo braço, primeiro veio com uma gracinha, e tinha uma mulher gravando, aí ele chegou no meu ouvido, falou assim: 'porra, Frota, fecha essa matraca. Tu quer me foder? Eu quero continuar transando contigo, porra'. Aí quando ele mandou essa gracinha, a mulher gravou e soltou isso imediatamente na rede social, só que ela picotou a parada", declarou.