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

Beltrame anuncia instalação da 1ª UPP no Complexo da Maré em julho

Policiais militares iniciaram a ocupação das comunidades Praia de Ramos e a Roquette Pinto no dia 1º de abril - José Lucena/Futura Press/Estadão Conteúdo
Policiais militares iniciaram a ocupação das comunidades Praia de Ramos e a Roquette Pinto no dia 1º de abril Imagem: José Lucena/Futura Press/Estadão Conteúdo

No Rio

28/04/2015 15h21

O Complexo da Maré, conjunto de favelas da zona norte do Rio de Janeiro, terá até o fim do primeiro trimestre de 2016 um total de quatro UPPs (Unidades de Polícia Pacificadora) funcionando em suas 16 comunidades. Essa é a previsão do secretário de Segurança do Rio, José Mariano Beltrame. Nesta terça-feira (28), ele anunciou que a primeira delas, referente às comunidades Roquete Pinto e Praia de Ramos, será inaugurada em julho deste ano.

A previsão é que a unidade conte com cinco bases. As duas favelas já estão ocupadas por 115 PMs desde o dia 1º de abril deste ano. No próximo dia 1º de maio, mais quatro comunidades do complexo (Nova Holanda, Parque União, Parque Maré e Rubens Vaz) terão patrulhamento de militares da Força de Pacificação substituído pelo de PMs.

Beltrame itiu que partes da Maré ainda não estão "preparadas" para receber policiamento comunitário. "Há áreas que não apresentam condições ainda de colocar policiamento da maneira que queremos que seja feito", afirmou.

Outra novidade na região da Maré é que o 22º Batalhão de Polícia, que atende a área, será realocado, e sua estrutura será reutilizada pela Unidade de Polícia Pacificadora do Complexo. Na ocasião, Beltrame disse ainda que, se dependesse dele, a ocupação do Chapadão e da Pedreira, comunidades da zona norte do Rio que vêm registrando confrontos violentos e ação indiscriminada de traficantes, seria imediata.

"Se eu pudesse eu entrava amanhã no Chapadão e na Pedreira", declarou. A instalação de UPPs nessas duas comunidades, entretanto, ainda não tem data definida e só deve ocorrer depois da inauguração das unidades da Maré. Em ritmo mais lento, a expansão das UPPs a por um processo de "análise" desde o começo do ano.

Efetivos

O secretário anunciou uma redistribuição de efetivos de PMs recém-formados. Ao todo, 1.272 reforçarão 28 batalhões e outros 400 serão divididos entre 32 UPPs. Mais 500 agentes do interior que estavam trabalhando no Rio voltaram para batalhões fora da Região Metropolitana. Beltrame também afirmou que existem "planos" de aumentar o tempo de formação de PMs dos atuais 7 meses para 10.

"Se nós pudermos aumentar a formação entendemos que é melhor. Temos planos de ar para 10 (meses), para melhorar e capacitar o policial", disse. "Qualquer escola de polícia do mundo prepara um policial para trabalhar em áreas urbanisticamemte ordenadas. Aqui temos que preparar também os policiais para atuar em becos onde a só uma pessoa por vez e não tem luz".

Bases

Outro assunto foi a reforma em bases de UPPs. Segundo Beltrame, 20 obras estão em andamento e 20 já foram contratadas. O funcionamento de sedes das UPPs em contêineres é uma das principais críticas às condições de trabalho encontradas por policiais nas unidades.

Ao todo, a construção de 35 novos postos avançados de policiamento já está contratada. E, de 11 obras de UPPs a cargo da RioUrbe, nove estão em andamento. "Foi dado um ree de R$ 6 milhões à Empresa Municipal de Obras Públicas (Emop) para manutenção de UPPs já existentes", completou o secretário.