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

Ex-zagueiro da seleção alemã é condenado por pornografia infantil

Christoph Metzelder aceitou a sentença e pediu desculpas às vítimas - TF-Images/Getty Images
Christoph Metzelder aceitou a sentença e pediu desculpas às vítimas Imagem: TF-Images/Getty Images

29/04/2021 19h34

O ex-jogador da seleção alemã Christoph Metzelder foi condenado hoje a dez meses de prisão em liberdade condicional por ter compartilhado 18 arquivos com pornografia infantil e juvenil na internet.

"Aceitarei a sentença e peço desculpas às vítimas de violência sexual. Levarei para o resto da minha vida a culpa de ter causado esse mal à sociedade", disse o réu, na primeira audiência do julgamento sobre as acusações.

O ex-jogador do Real Madrid, Borussia Dortmund e outros clubes, também se declarou parcialmente culpado das acusações contra ele - ou seja, posse e troca de 18 arquivos -, mas não dos 300 que o Ministério Público pretende apresentar contra ele.

A pena prevista pelo Tribunal istrativo de Düsseldorf para tal confissão era de dez a doze meses em liberdade condicional.

Metzelder compareceu perante o tribunal alemão pela primeira vez hoje para responder às acusações de posse e troca de pornografia juvenil, incluindo imagens de abuso sexual de uma garota.

Na leitura das acusações contra o ex-jogador, a acusação incluiu detalhes sobre um dos casos, em agosto de 2019, em que ele compartilhou imagens de abuso de uma menina de 10 anos em dias sucessivos, relatou a emissora pública regional "WDR".

O depoimento inicial do ex-jogador de 40 anos centrou-se, no início da audiência, na sua trajetória profissional, no seu compromisso com diferentes projetos sociais, bem como nos reconhecimentos públicos obtidos tanto no campo esportivo como na esfera privada.

Ele não se pronunciou sobre as acusações, mas após uma pausa na audiência, seu depoimento foi retomado, seguido de uma confissão parcial.

O processo ocorre no Tribunal istrativo de Düsseldorf e há três audiências marcadas até o dia 10 de maio.

As suspeitas contra Metzelder surgiram em setembro de 2019.

Inicialmente, a identidade do ex-jogador não foi divulgada. Mas meios de comunicação como o tabloide "Bild" revelaram o caso, citando-o como suspeito, enquanto a principal envolvida é uma mulher, com quem ele aparentemente compartilhou os arquivos.

O Ministério Público de Düsseldof apresentou sua denúncia formal em 4 de setembro, ainda sem citar o nome de Metzelder. Segundo o "Bild", o texto da acusação mostrava que o ex-zagueiro tinha confessado, pelo menos parcialmente, as acusações.

Em setembro do ano ado, foram feitas buscas relacionadas com o caso e a polícia apreendeu vários objetos, incluindo pelo menos um telefone celular e um computador.

Metzelder foi titular da seleção alemã vice-campeã mundial para o Brasil em 2002, além de ter jogado a Copa do Mundo seguinte quatro anos depois, sediada pela própria Alemanha.