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

Dedicado a Gal, último show de Milton Nascimento tem choro e 'eu te amo'

Milton Nascimento realizou seu último show da carreira neste domingo (13) - Reprodução: Globoplay
Milton Nascimento realizou seu último show da carreira neste domingo (13) Imagem: Reprodução: Globoplay

Colaboração para Splash, no Rio de Janeiro

14/11/2022 08h40

Com transmissão feita pelo Globoplay, o último show de Milton Nascimento contou com muita emoção e choro. Realizada no Mineirão e dedicada à grande amiga do cantor Gal Costa, que morreu nesta última quarta (9), a apresentação da turnê "A Última Sessão de Música" teve também a presença de convidados especiais, o que inclui o filho do artista, Augusto.

A turnê começou em junho e teve 35 apresentações, sendo algumas delas no Brasil, Estados Unidos e países da Europa. Este último show tomou conta das redes sociais e chegou a ficar no topo dos trending topics - assuntos mais comentados do Twitter.

"Esse show é dedicado à minha querida amiga Gal Costa", disse Milton logo no início da apresentação, que contava com o público de 60 mil pessoas. Enquanto falava, uma imagem dos dois se abraçando era exibida nos telões, o que emocionou ainda mais todos os presentes no local.

O espetáculo celebrou o Clube da Esquina, e Milton recebeu seus antigos parceiros musicais Wagner Tiso, Lô Borges, Toninho Horta e Beto Guedes.

Além dos músicos, Nascimento também chamou ao palco o cantor Samuel Rosa, com quem cantou "O Trem Azul", além de ter contado com o apoio de Zé Ibarra, integrante do grupo Bala Desejo - ganhador do Grammy Latino e uma das revelações do ano -, que fez o show de abertura. O filho de Milton, Augusto Nascimento, diretor-geral da turnê, subiu ao palco e amparou o pai nos momentos finais da apresentação.

Na plateia, famosos como o casal Daniel Oliveira e Sophie Charlotte, acompanhados do filho e dos herdeiros do também ator Júlio Andrade, as atrizes Inês Peixoto e Lydia Del Picchia e Rogério Flausino celebraram o show. A multidão de 60 mil pessoas entoava "Bituca, eu te amo" do início ao fim da apresentação.

No espetáculo, Milton cantou alguns de seus clássicos ao longo desses 60 anos de carreira. De surpresa, o artista incluiu "Tambores de Minas", "Tema de Tostão" e "Catavento" no repertório, que contou também com as músicas "Ponta de Areia", "Canção do Sal", "Morro Velho", "Outubro", "Veracruz", "Pai Grande", "Para Lennon e McCartney", "Cais", "Tudo o que você podia ser", "Cravo e Canela", "San Vicente", "Clube da Esquina 2", "Lília", "Nada Será Como Antes", "A Última Sessão de Música", "Fé cega faca amolada/Paula e Bebeto", "Volver a los 17", "Cálix Bento"/"Peixinhos do mar"/"Cuitelinho", "O Cio da Terra", "Canção da América", "Caçador de Mim", "Nos Bailes da Vida", "Bola de meia, bola de gude", "Coração de estudante", "Maria Maria", "Encontros e despedidas" e "Travessia".