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

Ataques são 'orquestrados' e UPPs estão em alerta máximo, diz coronel da PM

Do UOL, no Rio

21/03/2014 13h22Atualizada em 21/03/2014 15h27

O coronel Frederico Caldas, comandante geral das UPPs (Unidades de Polícia Pacificadora) no Rio de Janeiro, afirmou nesta sexta-feira (21) que os ataques às bases da polícia nas comunidades ocorridos na noite de quinta-feira (20) foram "orquestrados" e que todas as unidades estão em "alerta máximo". "Mobilizamos um esquema de alerta máximo nas UPPs, Todos os comandantes foram para as bases", disse, em entrevista ao canal "GloboNews".

“Há uma conexão entre os episódios [ataques de ontem às UPPs de Manguinhos e Camarista-Méier]. Até então nunca tivemos um evento tão extremo. O que aconteceu ontem naquela região foi orquestrado”, afirmou.

Para o coronel, houve “uma conexão entre o que aconteceu” nas diferentes comunidades. Caldas também defendeu a presença de tropas federais para ajudar a polícia no Rio. Hoje o governador Sérgio Cabral (PMDB) e o secretário de Segurança Pública, José Mariano Beltrame, embarcaram para Brasília, onde requisitaram auxílio à presidente Dilma Rousseff (PT). “Essa ajuda [Guarda Nacional] vai ser muito bem-vinda”, afirmou.

Segundo o ministro da Justiça, José Eduardo Cardozo, os detalhes da cooperação não serão adiantados, mas haverá uma reunião na próxima segunda-feira (24), às 10h, entre autoridades de segurança do Rio e do governo federal. "Governo federal e governo do Estado do Rio de Janeiro são mais fortes juntos do que o crime organizado", disse.

"É evidente que vocês têm uma ansiedade natural em saber quais são as medidas, quando serão tomadas e os detalhes e eu tenho, mais uma vez, que responder que em questões de segurança pública não se comenta, não se revela, só após as medidas serem tomadas", afirmou Cardozo.

O governador também atribuiu a série de ataques a uma ação deliberada das facções criminosas para desestabilizar o programa de pacificação, principal medida no Estado na área de segurança pública, e disse que já estavam sendo monitorados.

Manguinhos

Quatro escolas municipais, duas creches e um EDI (Espaço de Desenvolvimento Infantil) estão sem atendimento nesta sexta-feira na região da favela de Manguinhos, na zona norte do Rio de Janeiro, por conta dos ataques que a UPP (Unidade de Polícia Pacificadora) da comunidade sofreu na noite de quinta (20).

Mapa das UPPs no Rio: clique na imagem para ver em tamanho maior

  • Arte/UOL

Segundo a Secretaria Municipal de Educação, as unidades atendem 3.993 alunos, e o conteúdo perdido será reposto. Parte da comunidade segue com o fornecimento de energia interrompido após criminosos atearem fogo na base da UPP.

Capitão é segundo oficial baleado no mês

Ataques de criminosos a policiais e sedes de UPPs têm se tornado cada vez mais frequentes. Toledo foi o segundo oficial de UPP baleado neste mês. No dia 13, o subcomandante da UPP da Vila Cruzeiro, Leidson Alves, de 27 anos, morreu baleado na testa, no Parque Proletário, na Penha (zona norte). Desde que as UPPs começaram a ser implantadas, em 2008, 11 policiais que atuavam nessas unidades foram mortos.