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

'Canguru perneta', Sucupira e 'titio dono de TV": 10 frases do debate do RJ

Igor Mello, Herculano Barreto Filho e Jean Sfakianakis

Do UOL, no Rio, e colaboração para o UOL, em São Paulo

20/11/2020 01h21

No primeiro debate do 2º turno no Rio de Janeiro, promovido pela Band, Eduardo Paes (DEM) e Marcelo Crivella (Republicanos) não pouparam o uso de ataques, denúncias de corrupção e ironias. Em um confronto com poucas propostas, as acusações dominaram o embate.

O tom agressivo ocorre no mesmo dia em que o Datafolha mostra que Paes, ex-prefeito da cidade por oito anos, tem uma vantagem de 42 pontos percentuais sobre Crivella, atual prefeito prejudicado por uma gestão má avaliada.

Veja dez frases que resumem o debate entre os candidatos à Prefeitura do Rio:

Impressionante, você é o pai da mentira. Você está há quatro anos fazendo acusações contra mim. Olha quantas pessoas foram presas desde 2014 e eu tô aqui, Crivella. Só tô aqui disputando as eleições contra você porque sou ficha limpa

Eduardo Paes ao responder a acusações de corrupção feitas por Crivella



Lembra que tem nome do doleiro, transportador, tem as contas lá na Suíça. Você vive dizendo que o Crivella não fez nada. Devolve aqueles R$ 32 milhões. Eu vou fazer, manda de volta, Edu. Eduardo tem provas concretas, ele é condenado. QG da Propina é fofoca da Globo

Crivella sobre depoimento de delatores da empreiteira Odebrecht contra Paes



Quando alguém do meu lado faz algo errado, boto pra correr. Você bota pra perto de você. Você tem medo do [empresário] Rafael Alves. Mandado de busca e apreensão na casa dele e você ligou [para ele]. Você continua sendo o pai da mentira, mente o tempo todo

Paes sobre investigação do MP-RJ (Ministério Público do Rio) contra o chamado QG da Propina na gestão Crivella



Tudo que ele fez foi no último ano de governo e deixou pra mim pagar. Eduardo sempre fez as coisas pensando nele. Eu fiz pensando em você, eleitor

Crivella sobre iniciativas de Paes na área da saúde no fim da gestão do adversário



Parece Odorico Paraguaçu, lá de Sucupira: Inaugura raio-X, cadeira de dentista

Paes, ironizando realizações de Crivella na área da saúde



Achei que [você] ia transformar canguru perneta em política pública

Crivella, em referência a comentários machistas feitos por Paes sobre uma beneficiária do programa Minha Casa, Minha Vida em sua época como prefeito



Não era tudo perfeito no meu governo, mas a cidade olhava para frente, os serviços funcionavam e tínhamos um prefeito presente. Infelizmente o que vemos hoje é um prefeito omisso e despreparado. Essa discussão aqui não é sobre ideologia, sobre isso ou aquilo. É sobre o futuro da nossa cidade

Paes critica Crivella em suas considerações finais



Pai da mentira? Você é a madrinha da mentira!

Crivella, respondendo a ironias de Paes empregando o gênero feminino sem qualquer relação com o contexto da discussão

O Carnaval dele era o Carnaval mais caro que existia. E quem ganhava com isso? A Rede Globo, que patrocina ele

Crivella acusando Paes de ser apoiado pela Rede Globo

Ele tem um titio dono de televisão e acha que todo mundo tem alguma coisa a ver com canal de televisão. Quem tem televisão aqui é você, eu não tenho televisão nenhuma

Paes rebate, lembrando a ligação de Crivella com a TV Record e a Igreja Universal do Reino de Deus