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

'Há um genocídio contra a juventude negra em São Paulo', diz Orlando Silva

Do UOL, em São Paulo

27/08/2020 12h00

O pré-candidato do PCdoB à Prefeitura de São Paulo, Orlando Silva, afirmou hoje que lutará contra o racismo institucional caso eleito. Como homem negro, o deputado federal disse que se comoveu com o caso de George Floyd, ocorrido nos Estados Unidos, em que um segurança negro foi asfixiado até a morte por um policial branco, e fez um paralelo com os casos de violência policial contra pessoas negras na capital paulista.

Eu me comovi com o George Floyd [morto por policiais nos EUA]. Ele falando 20 vezes 'eu não consigo respirar' me comove profundamente. Mas vou te falar uma coisa, todo dia morre um George Floyd na periferia de São Paulo.

Ele comparou com o caso de Douglas, jovem de 17 anos que foi morto por um PM em outubro de 2013 na Zona Norte de São Paulo e que teve tempo de perguntar: "Por que o senhor atirou em mim?".

"É agir politicamente para impedir que essa violência do Estado siga nas periferias. Há um genocídio contra a juventude negra na cidade de São Paulo", disse o pré-candidato durante o UOL Entrevista, comandando pelos colunistas do UOL Diogo Schelp e Maria Carolina Trevisan.

O deputado também lembrou o boicote organizado pelos jogadores de basquete da NBA e que levou ao adiamento da rodada dos playoffs da competição ontem. Os atletas se recusaram a jogar como forma de protesto a mais um caso de violência policial contra um homem negro nos Estados Unidos.

"Por que a NBA não jogou? Porque tem um valor simbólico para denunciar o tema", comentou Orlando Silva, sobre o caso de Jacob Blake. Ele foi gravemente ferido por um policial no último domingo (23), na cidade de Wisconsin. Jacob Blake levou sete tiros pelas costas enquanto caminhava em direção ao seu carro, onde estavam três filhos dele.

Luta antirracista

O pré-candidato, que já foi ministro do Esporte durante o governo petista de Dilma Rousseff (2011-2016) e também atuou como vereador em São Paulo, reforçou que tem a luta antirracista como uma de suas bandeiras na campanha à Prefeitura da capital.

"A violência policial é um assunto grave em São Paulo. As taxas de homicídio em São Paulo chegaram nesse patamar menos pela ação do estado e mais pela ação de forças paraestatais que atuam e ocupam a cidade", afirmou.

"Eu falo, nós por nós. Nós, os negros, que temos a responsabilidade central para romper o racismo. Mas para superar o racismo temos que reunir negros e não-negros com atitudes antirracistas", completou Orlando Silva. "Um prefeito negro precisa assumir e enfrentar essa ação da PM, precisa exigir medidas para que pare a violência policial na periferia."