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

Esse conteúdo é antigo

Manifestante negro que carregou homem branco ferido diz querer igualdade

13.jun.2020 - Manifestante carrega homem ferido em protesto do Black Lives Matter em Londres, na Inglaterra - Dylan Martinez/Reuters
13.jun.2020 - Manifestante carrega homem ferido em protesto do Black Lives Matter em Londres, na Inglaterra Imagem: Dylan Martinez/Reuters

Do UOL, em São Paulo

15/06/2020 07h48

A foto de um homem negro carregando um rapaz branco ferido durante um tumulto em um protesto do Black Lives Matter (vidas negras importam, em inglês) no último sábado, em Londres, se espalhou pelo mundo.

Patrick Hutchinson, o responsável pelo ato altruísta, disse ter feito isso para evitar uma catástrofe. À rede de TV norte-americana CNN, ele disse que este foi o primeiro protesto do Black Lives Matter do qual participou e ajudou o homem branco porque não queria que o principal motivo dos protestos se perdesse em um momento de violência.

Manifestantes em Londres e em todo o mundo tomaram as ruas pedindo mudanças após a morte de negros em ações policiais, como a de George Floyd, em Minneapolis, com um policial branco ajoelhado em seu pescoço, e Rayshard Brooks, em Atlanta, atingido por um disparo efetuado por um policial.

Hutchinson disse que viu inicialmente o homem deitado em posição fetal cercado por manifestantes. Ele disse que, naquele momento, não lhe ou pela cabeça que o homem pudesse ser um manifestante da extrema-direita — só queria tirá-lo dali com segurança.

Segundo o fotógrafo da agência Reuters Dylan Martinez, responsável pelo registro, algumas pessoas na multidão gritaram que a vítima de agressão era membro da extrema-direita. No entanto, a Reuters e a CNN não conseguiram identificar a vítima ou verificar o que ele fazia no local.

Mais de 100 pessoas foram presas em protestos em Londres no sábado, depois que a violência eclodiu quando grupos de extrema-direita atacaram os protestos do Black Lives Matter, segundo a CNN.

Hutchinson disse que ele e seus amigos formaram um cordão ao seu redor e ele o pegou no colo para levá-lo à polícia. Enquanto andavam, ele ainda podia sentir as pessoas tentando agredir o homem.

Ele acrescentou que gostaria de derrubar as barreiras raciais e que as pessoas percebessem que "somos todos uma raça".

"Quero ver igualdade para todos. Sou pai, avô e adoraria ver meus filhos pequenos, meus netos, minhas sobrinhas, meus sobrinhos terem um mundo melhor do que eu vivi. O mundo em que vivo foi melhor do que meus avós e meus pais e espero que possamos continuar até que tenhamos igualdade total para todos."