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

Rodrigo Mattos

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Governo traça plano com Big brother para reprimir manipulação no futebol

Colunista do UOL

10/05/2023 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

O governo federal elabora uma portaria para criar um sistema para reprimir a manipulação de jogos de futebol por apostas. A discussão envolve uma agência para acompanhar as apostas ao vivo e regras sobre modalidades de apostas e para jogadores.

Primeiro, o Ministério da Fazenda vai publicar a Medida Provisória para regulamentar as apostas, o que deve ocorrer nesta ou na próxima semana. Esse conjunto de regras vai obrigar os sites a terem sedes no Brasil e estabelecer valores de imposto e licença.

O dinheiro da licença para as casas de apostas, que será de R$ 30 milhões, será usado para financiar a estrutura para tentar impedir os casos de manipulação de apostas.

O governo federal acompanha a investigação do Ministério Público de Goiás. Foram descobertos indícios de que jogadores receberam cartões amarelos de forma proposital em jogos do Brasileiro da Série A para favorecer apostadores. O caso mais grave tem diálogos interceptados do zagueiro Bauermann falando com um interlocutor sobre forçar cartões amarelos e vermelhos.

Há um debate com participação do Ministério da Fazenda, Esporte, Justiça, CBF e COB para redigir a portaria para fiscalizar as apostas. A criação de uma agência fiscalizaria tanto as casas de apostas quanto os movimentos suspeitos.

A ideia é ter um sistema com monitores que acompanham as apostas para identificar indícios de armação como volumes altos em lances como cartão amarelos. Seria feito um cruzamento entre as apostas e o comportamento de atletas no jogo. Casos suspeitos teriam bloqueio de apostas. Já existe uma pesquisa feita pelo Ministério da Fazenda para compras de equipamentos que serão realizadas por meio de licitação.

O governo vai tentar descobrir com as casas de apostas o tamanho das operações relacionadas a cartões dentro do total.

É possível que sejam feitas restrições em valores de apostas em determinados lances como cartões, mas isso vai depender do impacto para as apostas.

No governo, a avaliação é de que os casos de manipulação atual ocorreram por causa dos quatro anos em que as apostas eram legais e sem regulação. Assim, os sites agiam sem regras. Tanto que haverá repressão para sites que não tiverem sede no Brasil. Primeiro, será com veto à publicidade. Segundo, métodos de pagamento nacionais também serão proibidos de operar para casas estrangeiras.

Atualmente, há um monitoramento de apostas pela empresa Sports Radar, contratada pela CBF. A empresa identifica volumes de apostas suspeitos e faz relatórios com análise dos lances de jogo.