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

Delegado diz que briga de torcidas envolveu mulheres e crianças

Do UOL, em São Paulo (SP)

16/02/2023 16h02

O delegado Cesar Saad, da Delegacia de Repressão e Análise dos Delitos de Intolerância, falou sobre detalhes da emboscada armada por torcedores do Palmeiras a ônibus de torcedores Corinthians que voltavam da partida contra o São Bernardo, na última quinta-feira.

Para Saad, ainda é cedo para cravar a ordem da facção para as organizadas, mas chamou a atenção dele que a emboscada da última quinta-feira "quebrou a ética interna" da torcidas.

"É muito cedo pra dizer, mas a policia já está atuando nessa linha de entender se houve essa participação, é relevante dizer que partindo das últimas brigas em São Paulo, essa briga específica mais recente, dessa forma que foi, foram atos muito cruéis, teve muito exagero em tudo, a forma como mulheres foram tratadas, tudo isso levou a repensar esses atos de covardia."

O delegado prosseguiu, dizendo que a emboscada por sí só já é uma quebra dessa ética.

"Isso feriu a ética das torcidas, são sempre os mesmos que brigam, a torcida organizada é maior que isso. Eles fazem bonitas festas, mas esse caso ultraou a ética entre eles, sobretudo quando envolveu crianças e mulheres, ou dos limites, a própria emboscada é uma quebra dessa ética."

Delegado explica rumo das investigações

Cesar Saad: "Desde que a briga ocorreu naquela madrugada, a Polícia Civil tomou as providências logo na manhã no dia seguinte. Fui aos hospitais onde estão os internados, vimos imagens do local, câmeras, ficou claro que foi uma emboscada de torcedores do Palmeiras, temos 100% de certeza disso."

Torcedores do Flamengo processam a Fifa

Bruno Braz: "Torcedores se sentiram lesados com a mudança da sede da dsputa do 3º lugar. Eles desistiram de ir à Tanger por ser muito longe. Esses torcedores triam direito de ver o jogo do Real Madrid."

Conversas do São Paulo com Luan não evoluem

Bruno Andrade: "O Luan tem contrato até dezembro deste ano, as primeiras conversas não funcionaram, não houve um positivo. Ele se considera reserva."

Endrick se inspira em Vini Jr.

Lucas Musetti: "O Endrick visitou o Vini em Madri, e viu como é a rotina dele. Agora, além das aulas de espanhol, ele está aprendendo inglês também. Ele tem uma rotina bem regrada."

Assista ao De Primeira na íntegra