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

Abel cita Roberto Carlos e "bola que pegou no rabo" ao falar sobre derrota

Abel Ferreira, técnico do Palmeiras, na final do Paulistão contra o São Paulo - Cesar Greco/ Palmeiras
Abel Ferreira, técnico do Palmeiras, na final do Paulistão contra o São Paulo Imagem: Cesar Greco/ Palmeiras

Diego Iwata Lima

Em São Paulo

23/05/2021 19h44

"Muitas vezes chorei, muitas vezes sorri, o importante é que emoções eu vivi."

Foi declamando uma adaptação de versos da canção "Emoções", eternizada por Roberto Carlos, que Abel Ferreira explicou sua sensação após a derrota do Palmeiras para o São Paulo (2 a 0), na final do Campeonato Paulista.

"Prefiro chegar à final e ganhar. Mas [antes de tudo] prefiro chegar à final", afirmou.

Abel atribuiu em muito ao acaso e aos detalhes a vitória do São Paulo que garantiu o título paulista aos tricolores.

"Futebol é assim. O jogador chuta, a bola vai na bandeira de escanteio, bate no rabo de um jogador nosso e entra na baliza", disse o treinador, em referência ao gol de Luan, que teve desvio em Felipe Melo.

Abel não avalia que o São Paulo tenha sido superior ao Palmeiras, nem no primeiro nem no segundo jogo.

"Já no primeiro jogo, as maiores oportunidades são nossas. Foi um jogo de muito encaixe e intensidade. Se virmos um Inter x Juventus, era assim que iríamos ver", disse.

"Nosso adversário não foi melhor que nós em nada", afirmou. "Mas não me custa nada reconhecer que o São Paulo teve seus méritos", disse o luso, que ressaltou que o clube tricolor foi o primeiro adversário enfrentado por ele que marcou o Palmeiras individualmente no Brasil.

"Nosso adversário foi melhor sim na eficácia e na sorte. Quem marcasse o primeiro gol iria desbloquear o jogo, porque a outra equipe teria que correr mais riscos", afirmou.

Treinador queria mais chegada na área com Danilo Barbosa

Abel explicou porque decidiu escalar Danilo Barbosa em vez de Patrick de Paula como titular.

"A primeira grande oportunidade foi com o Danilo Barbosa, Era isso que queríamos", explicou. "Apesar de fazer de zagueiro, ele é um 8, ele é de entrar na área", completou, comparando com Patrick que, em sua visão, é um jogador de arremate.

Ele também rechaçou que o Palmeiras tenha jogado com três zagueiros quando o time tinha a bola.

"Jogamos no 4-3-3. Basta ver onde estava o Gómez, o Mayke. O Renan jogou à esquerda, com bola, aberto. Sem bola, fechava um pouco mais", explicou.

Por fim, Abel exaltou o caminho de seu time até a decisão, contra Red Bull Bragantino e Corinthians, bem como a estratégia de usar o Campeonato Paulista como laboratório.

"Demos minutos a jogadores que nem sonhavam com minutos", disse. "Foi um campeonato de todos para todos".

E, por fim, garantiu estar preparado para as possíveis críticas:

"As árvores que dão mais frutos são as que levam mais varadas".

"Para chegar às finais é preciso trabalhar, ter competência, uma equipe focada. E nós estivemos nas finais de todas as competições. Quem quiser valorizar o processo, o caminho, valoriza, quem quiser criticar que perdemos a finais, podem criticar."