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

Homofobia causou 141 mortes somente em 2019, indica relatório

Getty Images/iStockphoto
Imagem: Getty Images/iStockphoto

Da Universa

17/05/2019 11h21

No Dia Nacional de Combate à Homofobia, o Grupo Gay da Bahia (GGB) divulgou novo relatório que registra 141 mortes, entre homicídios e suicídios, causados por homofobia de janeiro a 15 de maio de 2019. Segundo o documento, divulgado nesta sexta (17), além das ocorrências confirmadas, dispomos de 18 casos de supostas mortes por LGBTfobia que permanecem no "limbo" aguardando averiguação mais detalhada.

A pesquisa foi realizada pelo Prof. Marcelo Domingos Oliveira, autor de tese de doutorado sobre crimes lgbtfóbicos em Sergipe, cabendo ao Dr.Luiz Mott, da UFBa, fundador do GGB, a sistematização dos dados, com a ajuda de Eduardo Michels, criador da Hemeroteca Digital e do site homofobiamata.wordpress.com que colabora na divulgação deste relatório, que se baseou em informações coletadas em 82 veículos de comunicação, incluindo Jornais, Noticiários da TV, Agências de notícias, Blogs,
Facebook, Whats App, Buscadores e sites de pesquisa da Internet, Portais, Rádios, Informação pessoal de parentes e conhecidos, Registro Policial.

Segundo a ONG, como não há informações estatísticas governamentais sobre tais mortes, tais números são subnotificados e podem apresentar uma margem de erro de 5-10%. "Contudo, outras agências de pesquisa, nacionais e internacionais, públicas e ONGs, confirmam a veracidade de tais dados.

Comparativamente às estatísticas do ano ado, se tomarmos como referencial o Relatório de Mortes de LGBT+ do Brasil de 2018, conclui-se que o seu número mantém-se estável: entre janeiro-maio 2018 foram registrados 140 mortes, uma média de 28 homicídios e suicídios por mês, sendo 141 os casos registrados no corrente ano, até 15 de maio de 2019.

"Nossa expectativa é que tais dados, que confirmam ser o Brasil o campeão mundial de mortes de LGBT, contribuam para que a LGBTfobia seja equiparada legalmente ao crime de racismo e consigamos erradicar essa epidemia que neste início de 2019 levou à morte um LGBT+ a cada 23 horas", diz a GGB.