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

Flamengo

OPINIÃO

Milly: Tragédia no Ninho é a maior vergonha da história do Flamengo

Do UOL, em São Paulo

07/03/2023 09h32

Em reportagem exclusiva do UOL, o engenheiro eletricista José Augusto Bezerra acusa o Flamengo de adulterar a cena do incêndio que matou dez jovens no Ninho do Urubu.

O UOL News Esporte comentou sobre o caso. Em conversa com Leo Burlá, autor da reportagem, a colunista Milly Lacombe questionou a maneira como o Flamengo lida com a tragédia.

"O Flamengo não fez ainda um memorial para esses garotos. Deveria ter na Gávea um espaço de memória. Com os nomes, os rostos, as histórias das vidas desses meninos. O que eles gostavam de fazer? Qual era a música predileta deles? Qual era o grande sonho? Em que posição eles jogavam? O time deles era o Flamengo?", disse Milly Lacombe.

"É essa falta de envolvimento que deixa o torcedor e a torcedora do Flamengo muito chateados. Perder a semifinal do Mundial não é vergonha nenhuma. O Flamengo só estava no Mundial porque ganhou a Libertadores. É orgulho. A maior vergonha da história do Flamengo é a tragédia do Ninho do Urubu", afirmou a colunista.

Advogados cogitam anular acordo com Flamengo

"As advogadas do Pablo Henrique e do Jorge Eduardo já cogitam anular os acordos celebrados na Justiça. Por que elas entendem que essa matéria traz elementos que o acordo naquele momento não estava baseado", disse Leo Burlá.

Flamengo tem histórico de demissões antiéticas

"Não sei se o Vítor Pereira fica se perder o estadual, por todas essas coisas. Se estiver mostrando evolução tem que ficar. Todo mundo diz que ele é bom treinador, mas ainda não mostrou isso no Brasil", disse Milly Lacombe.

Protestos em frente ao Ninho

"No Brasil, muitas vezes a gente vê as pessoas falando 'Fulano comemorou título de estadual', como se fosse algo menor. Agora a gente vê 'A torcida protestou no estadual'", disse Thiago Arantes.

São Paulo tem tarefa difícil?

"Acho que todos os grandes vão ar, mas acho que o São Paulo corre mais riscos", disse Milly Lacombe. "Pega um time ajustadinho e não joga no Morumbi".

Lesões são 'fatalidade'?

"Tratar como fatalidade não ajuda o São Paulo. Acho que deveria ser tratado como 'o que está acontecendo aqui?'. Por que se você acreditar em fatalidade, sei lá, leva um padre para benzer", disse Milly Lacombe.

Neymar vai mesmo voltar mais forte?

"O número de lesões do Neymar não é equiparável a nenhum outro jogador de alto nível desses últimos dez anos. É desesperador para quem gosta do Neymar", disse Thiago Arantes.

Premier League ou Brasil: qual o caminho para Neymar?

"Vejo como um caminho interessante para o Neymar ir para o futebol inglês. O que não sei é se ele teria essa motivação, essa força interior", disse Thiago Arantes.

Confira o programa na íntegra

Flamengo