;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Cofundador do Nubank, David Vélez se compromete a doar fortuna em vida

O CEO da Nubank, David Vélez, na sede da startup em São Paulo - Tiago Queiroz/Estadão Conteúdo
O CEO da Nubank, David Vélez, na sede da startup em São Paulo Imagem: Tiago Queiroz/Estadão Conteúdo

Cristiane Barbieri

São Paulo

11/08/2021 20h30

O colombiano David Vélez, cofundador do Nubank, e sua mulher, a empreendedora peruana Mariel Reyes, aderiram ao Giving Pledge, movimento global para que bilionários se comprometam a doar suas fortunas em vida à caridade. Vélez tem uma fortuna estimada em US$ 5,2 bilhões, segundo a revista Forbes. Ao lado do sírio radicado no Brasil Elie Horn, da Cyrela, eles são os únicos latino-americanos que fazem parte da lista de 223 signatários da iniciativa, criada por Bill e Melinda Gates e Warren Buffett, em 2010.

Vélez e Reyes se comprometeram a usar sua fortuna na criação de uma plataforma voltada à filantropia, que vai priorizar a melhoria de oportunidades para crianças e jovens adultos em situação de vulnerabilidade na América Latina. O Giving Pledge não envolve qualquer tipo de doação legal, mas sim um compromisso moral e com a comunidade de doação. Hoje, pessoas de 90 países já firmaram o compromisso.

"As oportunidades não são igualmente distribuídas e há milhões de pessoas que querem trabalhar duro para construir comunidades e países melhores, mas muitas vezes não têm o a oportunidades para colocá-los numa trajetória de vida diferente e com impacto social positivo", escrevem os dois, numa carta postada no site do Giving Pledge. "Com essa iniciativa, buscamos construir uma plataforma filantrópica única na América Latina."

Um dos motivos para a doação foi o desejo de que seus filhos sejam capazes de trilhar seus próprios caminhos: "queremos construir um ambiente familiar no qual nossas crianças tenham todo amor e e que precisem, enquanto sejam capazes de sentir o 'senso de desespero' que todo ser humano precisa: aquele sentimento de querer desesperadamente algo que falta e nos impulsiona ao trabalho duro para chegar lá. Acreditamos que ao habilitar nossos filhos o senso de propósito para construir o próprio caminho e não trilhar o de outro os ajudará a construir sua própria autoconfiança e um caráter forte."

Soluções além do convencional

Segundo eles, já está sendo recrutado um time "classe mundial" para enfrentar os problemas e desenvolver soluções que classificam como "de um jeito não convencional". Reyes, de 40 anos, comanda, há seis anos, a startup Reprograma, que ensina programação a mulheres carentes. Com o Nubank, conhecido por não cobrar tarifas, Vélez diz se orgulhar de ter incluído milhões de pessoas no sistema bancário.

"Sempre tivemos a motivação de investir nosso tempo e energia a resolver problemas grandes e impactantes. Talvez essa necessidade tenha vindo do fato de ambos termos crescido na América Latina, região com tanto potencial, mas onde muitos milhões ainda vivem na pobreza e têm poucas oportunidades para crescerem e se desenvolverem plenamente", escrevem ambos.

O comunicado continua: "Tivemos sorte. Nossas famílias sempre nos proveram com uma profunda consciência social, na qual o sentido da vida é derivado em fazer a diferença para as pessoas: em produzir as maiores oportunidades que pudermos para criar chances para os outros. Esse é o espírito que guia nossa jornada".