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

Vítimas de queda de prédios no Rio identificaram suspeitos, diz delegada

Bombeiros buscam corpos em meio aos escombros de dois prédios que desabaram no Rio - WILTON JUNIOR/ESTADÃO CONTEÚDO
Bombeiros buscam corpos em meio aos escombros de dois prédios que desabaram no Rio Imagem: WILTON JUNIOR/ESTADÃO CONTEÚDO

Hanrrikson de Andrade e Marina Lang

Do UOL, em Brasília e no Rio

19/04/2019 14h45Atualizada em 19/04/2019 16h50

Vítimas do desabamento de dois prédios na comunidade da Muzema, na zona oeste do Rio de Janeiro, identificaram os três investigados pela polícia e alvos de ordem de prisão expedidos pela Justiça sob suspeita de serem os responsáveis por construir e comercializar as unidades que ruíram.

No começo da tarde de hoje, a Polícia Civil fluminense informou que o trio é considerado foragido.

Segundo a delegada Adriana Belém, chefe da 16ª DP (Barra da Tijuca), o reconhecimento foi fundamental para ordenar os mandados de prisão temporária (30 dias) por alegação de homicídio com dolo eventual.

Adriana explicou que, inicialmente, as vítimas não se sentiam confortáveis para colaborar com a polícia devido a possíveis retaliações. Os dois prédios que desabaram no Rio estavam situados em uma área controlada por milicianos. Foi o primeiro contato dos investigadores com as testemunhas.

Os grupos paramilitares, dominantes em algumas regiões da zona oeste carioca, são conhecidos por intimidar ou mesmo eliminar pessoas que tentam denunciá-los.

Os suspeitos foram identificados como José Bezerra Lima, o Zé do Rolo, que teria construído os imóveis. Já Renato Siqueira Ribeiro e Rafael Gomes da Costa seriam os corretores responsáveis pela venda.

Ao menos 20 pessoas morreram na tragédia, que ocorreu no dia 12 de abril. Três pessoas ainda são consideradas desaparecidas.

Dezoito pessoas foram encontradas sem vida em meio aos escombros. São quatro homens, nove mulheres, quatro menores de idade do sexo masculino e um do sexo feminino. Duas vítimas chegaram a ser levadas para hospitais, mas não resistiram aos ferimentos.

Medo de moradores da Muzema de se exporem afeta trabalho da polícia

redetv