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

Mundial é marcado por desorganização, prejuízos e reclamações contra Fifa

Real Madrid celebra título do Mundial de Clubes da Fifa, no Marrocos - Abu Adem Muhammed/Anadolu Agency via Getty Images
Real Madrid celebra título do Mundial de Clubes da Fifa, no Marrocos Imagem: Abu Adem Muhammed/Anadolu Agency via Getty Images

Do UOL, em Casablanca

13/02/2023 04h00

Uma competição que terminou confusa assim como começou. O Mundial de Clubes, realizado no Marrocos e que sagrou o Real Madrid campeão no último sábado (11), foi marcado pela desorganização, prejuízos e muitas reclamações por parte dos torcedores e também dos clubes.

Indefinição de sede

Marrocos foi definido como sede só um mês antes do início da competição. A Fifa estava totalmente voltada para a Copa do Mundo do Qatar, que aconteceu no fim do ano. A organização do Mundial de Clubes ficou em segundo plano.

As cidades dos jogos saíram ainda mais tarde. O Flamengo soube que jogaria a semifinal em Tânger no dia 13 de janeiro. Muitos flamenguistas achavam que Marrakesh seria uma das escolhidas e compraram agens para lá. A cidade acabou ficando de fora do Mundial e os torcedores precisaram refazer a logística.

Mudança em cima da hora

O ápice da confusão aconteceu depois da semifinal.

A Fifa mudou o local da disputa do 3º lugar faltando só dois dias do jogo. Foi da capital Rabat para Tânger, no extremo norte do país, por sugestão do rei de Marrocos. O jogo ia ser no estádio da final e o rei temia pelo gramado.

Os torcedores rubro-negros já estavam com hotéis reservados na capital marroquina. Agora, teriam um gasto extra de deslocamento.

A Fifa prometeu reembolsar quem desistisse de ir a Tânger, mas a revolta com a entidade não diminuiu.

A Fifa também não cumpriu a promessa de oferecer trens especiais ligando Rabat a Tânger para os torcedores. Mas, quando foram conferir, os torcedores só encontraram as linhas habituais oferecidas a toda população.

Clubes na bronca

O Flamengo manifestou o desejo de permanecer em Rabat mas foi voto vencido. O técnico Vítor Pereira reclamou do desgaste do deslocamento.

O técnico do Al Hilal, Ramón Díaz, criticou o formato do Mundial. Nas entrevistas coletivas oficiais ele reclamou de clubes da África, Ásia e Oceania precisarem disputar mais partidas que os da Europa e América do Sul. O treinador pediu uma revisão no regulamento, mas uma nova fórmula de disputa só acontecerá a partir de 2025.

Invasão e distribuição de ingressos

Houve uma invasão de pessoas sem ingressos na final. Torcedores que haviam comprado suas entradas acabaram impedidos de entrar, porque houve uma superlotação no estádio invadido.

Outros jogos não atraíram público e a Fifa precisou distribuir ingressos para encher os estádios.

Profissionais de imprensa também reclamaram da desorganização da Fifa. Havia confusão entre os serviços no Marrocos que a entidade oferecia.

Processos na Justiça

Mais de 140 torcedores só do Flamengo se organizam para mover um processo coletivo contra a Fifa. O UOL teve o a um grupo de Whatsapp onde documentos estão sendo juntados e estratégias sendo definidas.

Flamengo