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

Marília Arraes diz não esconder partido: "Há anos faço militância no PT"

Colaboração para o UOL, em São Paulo

13/10/2020 15h48

Marília Arraes, candidata à Prefeitura do Recife, disse durante a sabatina do UOL, em parceira com a Folha de S.Paulo, que não esconde o PT nem seu sobrenome em sua campanha. "Como a gente esconde o que a gente tem? Não é questão de esconder, eu sou Marília Arraes desde que nasci. Sou neta de Arraes, todo mundo sabe."

Ela afirmou que "há anos faz militância no PT". "Claro que minha campanha vai ser uma campanha polarizando também, defendendo o legado do PT, mas principalmente o que a gente pode fazer para o futuro."

"Só não interessa a polarização a quem não tem lado", disse, atacando João Campos (PSB).

Segurança pública e presídios

Uma das propostas da candidata é a retirada do Complexo Prisional do Curado da região. A candidata defende a extinção de presídios e penitenciárias tão grandes e próximos de centros urbanos.

Segundo ela, o local enfrenta uma superlotação. "É uma comunidade que está ali atingida, os presos estão em situação muito precária, e alguém tem que ter coragem, a gente tem visto uma omissão de todos os lado em relação a isso", disse.

Em relação à segurança pública, comentou sobre o armamento da Guarda Municipal. Segundo a candidata, "o momento que a gente está vivendo no país faz com que certos assuntos sejam polemizados como antes não eram". "Com Bolsonaro, tudo o que bate nisso vira um debate entre esquerda e direita", disse.

"Armar a guarda não é solução para segurança pública, como alguns candidatos da direita tentam pregar", disse. "Não dá para transformar a Guarda Municipal como uma mini-PM."

Mas ela falou que é possível voltar a armar certos setores da instituição desde que com uma capacitação permanente.

Críticas ao PSB levaram a ataques

Marília Arraes disse que é oposição ao PSB há muito tempo e que sofre com ataques machistas. "Picharam a cidade toda com ofensas pessoais a mim quando eu rompi com o PSB", disse.

Segundo ela, em Pernambuco, poucas mulheres tiveram destaque na política. "E delas eu ouso dizer que fui uma das que mais sofreram ataques públicos por parte do PSB", disse. "Eu não vejo dúvida nenhuma sobre a minha oposição ao PSB", afirmou.

Segundo a candidata, seu principal adversário, João Campos, é que tem escondido o PSB durante a campanha. "É como se ele tivesse dado uma pausa nas gestões do PSB e não existisse Geraldo Julio e Paulo Câmara", disse, se referindo ao atual prefeito e governador do estado, do mesmo partido.

"Ele está escondendo que é o candidato da gestão", disse. "Ele diz que não é advogado de gestões adas, como assim? Não é o candidato do prefeito? Então ele não defende a gestão do prefeito?"

Campos lidera as pesquisas, enquanto Marília disputa o segundo lugar com Mendonça Filho, do DEM.