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

Koulibaly vê Senegal como exemplo para África: 'Podemos acreditar em tudo'

Kalidou Koulibaly, do Senegal, comemora após marcar o segundo gol de sua equipe contra o Equador na Copa - Ryan Pierse/Getty Images
Kalidou Koulibaly, do Senegal, comemora após marcar o segundo gol de sua equipe contra o Equador na Copa Imagem: Ryan Pierse/Getty Images
, Julio Gomes, colunista do UOL e em Doha (Qatar)

04/12/2022 04h00

Classificação e Jogos

Para Kalidou Koulibaly, 31, chegou a hora de uma seleção africana dar um o à frente. O zagueiro do Chelsea será novamente o grande líder de Senegal em campo na partida de oitavas de final, contra a Inglaterra, neste domingo (16h de Brasília).

Ele conversou com o UOL Esporte após a vitória de Senegal sobre o Equador, a última partida da fase de grupos. E diz acreditar que pode ter chegado a hora de ver uma seleção do continente africano ir além das quartas de final e, por que não, chegar até uma final de Copa.

"Competimos, demos um exemplo a todas as equipes africanas na fase de grupos. Vendo o nível na Copa Africana das Nações, sabíamos que podíamos meter em problemas qualquer seleção do mundo. Sim, podemos acreditar em tudo", disse.

Senegal conquistou a Copa Africana pela primeira vez no início do ano, batendo o Egito na final. Depois, voltou a derrotar os egípcios na disputa direta por uma vaga na Copa - esta é a terceira participação do país.

Em 2002, Senegal jogou um Mundial pela primeira vez e assustou o mundo ao vencer a França na fase de grupos e chegar até as quartas de final. Apenas uma outra seleção africana havia ido tão longo (Camarões em 1990) e só uma depois daquilo repetiu o feito (Gana em 2010). Além de Senegal, Marrocos também está vivo e, assim, é a segunda vez na história que a África coloca duas seleções nas oitavas de final (a outra foi no Brasil-2014).

"Sabíamos que, com a ausência de Sadio (Mane), as coisas ficariam difíceis. Mas sabíamos que tínhamos que jogar como uma equipe, como sempre fizemos. Foi o que demonstramos nos jogos que vencemos, depois da derrota para a Holanda", falou Koulibaly.

O zagueiro ressalta que Senegal chega à fase eliminatória da Copa com uma grande vantagem em relação a outros competidores, como a Inglaterra. É que a seleção dele já está jogando o "mata", ou seja, já está entrando em campo com a obrigação de vitória, com o espírito de matar ou morrer, desde a segunda partida no torneio.

"Agora começa outra Copa, é outro tipo de competição. E estamos prontos, porque já vivemos isso nessas duas partidas. Faremos tudo para ir em frente", completou.

Comprado por 40 milhões de euros pelo Chelsea na última janela de transferências, Koulibaly nasceu na cidade de Saint-Dié-des-Vosges, na França. Curiosamente, no mesmo dia e hospital, nasceu sua mulher, Charline Oudenot, que está com o jogador há 11 anos. Apesar de nascer francês, ele decidiu defender o país de origem de seus pais.

O pai dele trabalhava em uma fábrica de roupas no Senegal e, segundo consta em reportagens da imprensa local, trabalhou por cinco anos sem folgar nos finais de semana para guardar dinheiro até conseguir ir para a França com a esposa, futuramente mãe de Kalidou. Ela completava a renda da família fazendo serviços de faxineira.