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

Mulher beija desconhecidos em cartões-postais, e fotos viralizam na web

Foto de Kristiana Kuqi feita em frente à Torre Eiffel, em Paris, na França - Reprodução/Twitter
Foto de Kristiana Kuqi feita em frente à Torre Eiffel, em Paris, na França Imagem: Reprodução/Twitter

Do UOL

08/11/2019 09h50

Kristiana Kuqi tem 23 anos, é de Kosovo, e dois registros fotográficos dela feitos em frente a famosos cartões-postais em viagens pela Europa viralizaram na web. Em uma das imagens, ela aparece beijando um homem com a Torre Eiffel ao fundo (foto); na outra, uma cena parecida próxima ao Coliseu.

Nas legendas das fotos postadas no Twitter, Kristiana conta que os dois homens que beijou eram desconhecidos:

"Espero que esse cara que eu conheci na Torre Eiffel e pedi uma foto nossa nos beijando para que eu pudesse fingir que tive um tempo romântico em Paris esteja bem", diz a legenda

"Espero que este de Roma esteja bem também <3", escreve Kristiana em foto na Itália.

Em entrevista à Fox News, Kristiana Kuqi disse estar surpresa que os posts se tornaram virais. Ela contou que sempre teve uma personalidade espontânea e ousada e que sempre se imaginou tirando uma foto de beijo no cartão-postal francês.

"Tinha planejado esse beijo semanas antes de ir para Paris, estava estudando no exterior na época. A amiga que foi comigo pensou que era loucura e não achava que eu realmente faria isso", afirmou.

Kristiana também contou que ficou nervosa no momento anterior ao beijo. Ela se aproximou do seu eventual parceiro de beijo e perguntou se ele tinha namorada; ele respondeu que não e o restante da cena -aparentemente romântica - não foi revelado. "O beijo foi tão puro, foi um momento tão doce. Tiramos uma foto, nos despedimos e nunca mais o vi", disse à Fox News.

Depois da proeza pela França, Kristiana repetiu o ato com um turista em frente ao Coliseu. "Com confiança, você pode realmente fazer o que quiser. Tudo o que você precisa fazer é pedir. As mulheres não devem negar a si mesmas o que querem com medo de julgamento", finalizou.

A repercussão dos beijos de Kristiana

As imagens da jovem foram retuitadas mais de 60 mil vezes, com milhares de comentários no Twitter.

"Amiga, nos ensine a fazer isso, por favor", "Isso é o que eu chamo de gênia", "Se você precisar de alguém para fazer isso no Big Ben, me avise!", escreveram alguns dos internautas sobre as imagens de beijos nas viagens de Kristiana Kuqi.

Vai ter mais!

Where to next? Dress: @phosphene_studio

A post shared by Kristiana Kuqi (@kristianakuqi) on

"Onde será o próximo beijo?", postou Kristiana Kuqi nesta quinta-feira (7). No registro, ela aparece no Aeroporto Internacional Wahsington Dulles, na Virgínia, nos Estados Unidos.

Os seguidores da jovem estão animados. "Venha para NY que eu te beijo na Brooklyn Bridge", "Por favor, venha para a África do Sul. Eu gostaria de te beijar na Table Mountain", "E se nos beijarmos em frente ao Taj Mahal?", propam alguns dos internautas nos comentários da publicação no Instagram.