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

Mulher de policial suspeito de matar George Floyd pede divórcio

Do UOL, em São Paulo

30/05/2020 08h50

Kellie Chauvin, mulher de Derek Chauvin, policial suspeito de matar George Floyd, em Minneapolis, nos Estados Unidos, pediu o divórcio.

De acordo com a rede de TV norte-americana CNN, um escritório de direito da família que representa a mulher emitiu um comunicado ontem informando sobre o pedido de dissolução do casamento.

Chauvin, um agente branco, foi filmado imobilizando Floyd, homem negro, com o joelho enquanto ignorava as súplicas da vítima e das testemunhas. Ele foi preso ontem.

"Hoje à noite, conversei com Kellie Chauvin e sua família. Ela está arrasada com a morte de Floyd e sua maior condolência está com sua família, com seus entes queridos e com todos que estão sofrendo com essa tragédia. Ela pediu a dissolução de seu casamento com Derek Chauvin", diz um trecho do comunicado.

"Embora Chauvin não tenha filhos de seu casamento atual, ela solicita respeitosamente que seus filhos, seus pais e sua família recebam segurança e privacidade durante esse período difícil", acrescenta o documento.

Protestos se espalham pelos EUA

Desde a morte de Floyd, manifestantes têm ido às ruas em vários estados do país em protesto contra a violência policial que vitima pessoas negras.

Em todo o país, milhares de pessoas saíram às ruas e entoaram slogans como "sem justiça, sem paz" e "diga o nome dele: George Floyd". Cartazes diziam "ele disse que não podia respirar. Justiça para George".

Houve manifestações em Minneapolis, Saint Paul (Minnesota), Atlanta (Geórgia), Detroit (Michigan), Nova York, Portland (Oregon), Dallas, Houston (Texas), Los Angeles, San Jose, Oakland (Califórnia), Las Vegas (Nevada), Columbus (Ohio), Phoenix (Arizona) e várias outras cidades.

No centro de Atlanta, no sudeste do país, perto da sede da cadeia de televisão CNN, grupos de manifestantes destruíram lojas, e a polícia lançou granadas de gás lacrimogêneo. Alguns manifestantes atiraram pedras contra o edifício da CNN e vários veículos da polícia em estacionamentos foram atingidos por pedras e outros objetos. Ao menos um foi incendiado.

O governo da Geórgia declarou estado de emergência na manhã de hoje, um requisito para pedir a presença da Guarda Nacional em Atlanta.

* Com informações da Deutsche Welle