
“It is true though that uncertainty creates weakness; knowledge and certainty give strength, and for this reason our need for answers, for the truth, is essential.”
They went on to thank the UK, German and Portuguese authorities for their ongoing work, and their supporters for “their continued good wishes.”
May 2022
This year we mark fifteen years since we last saw Madeleine. It feels no harder than any other but no easier…
Posted by Official Find Madeleine Campaign on Monday, May 2, 2022
In 2013, the Metropolitan Police launched its own investigation into Madeleine’s disappearance, called Operation Grange.
Detective Chief Inspector Mark Cranwell from the Metropolitan Police, the leader of Operation Grange, said on Tuesday: “Fifteen years on from Madeleine’s disappearance in Praia Da Luz our thoughts, as always, are with her family.
“Officers continue to investigate the case and our dedicated team are still working closely with law enforcement colleagues from the Portuguese Policia Judiciária as well as the German Bundeskriminalamt.
“At this time, the case remains a missing person’s enquiry and all involved are committed to doing what we can to find answers.”
Three-year-old Madeleine disappeared during a family holiday in Portugal on May 3 2007, and has never been found.
She would be due to turn 19 later this month.
Last month, Portuguese authorities declared an official suspect they had identified in the case. Although they did not name the suspect, they said they were acting at the request of German authorities.
It is thought the suspect is convicted German paedophile Christian Brueckner, who has been under investigation in connection with Maddie’s disappearance since 2020.
However, he is yet to be charged for anything to do with her disappearance and claims to have an alibi for the crime.
var host="www.joe.co.uk"; var element = document.createElement('script'); var firstScript = document.getElementsByTagName('script')[0]; var url="https://quantcast.mgr.consensu.org" .concat('/choice/', 'wFs6Tqd6-pgRC', '/', host, '/choice.js') var uspTries = 0; var uspTriesLimit = 3; element.async = true; element.type="text/javascript"; element.src = url;
firstScript.parentNode.insertBefore(element, firstScript);
function makeStub() { var TCF_LOCATOR_NAME = '__tcfapiLocator'; var queue = []; var win = window; var cmpFrame;
function addFrame() { var doc = win.document; var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]);
if (!otherCMP) { if (doc.body) { var iframe = doc.createElement('iframe');
iframe.style.cssText="display:none"; iframe.name = TCF_LOCATOR_NAME; doc.body.appendChild(iframe); } else { setTimeout(addFrame, 5); } } return !otherCMP; }
function tcfAPIHandler() { var gdprApplies; var args = arguments;
if (!args.length) { return queue; } else if (args[0] === 'setGdprApplies') { if ( args.length > 3 && args[2] === 2 && typeof args[3] === 'boolean' ) { gdprApplies = args[3]; if (typeof args[2] === 'function') { args[2]('set', true); } } } else if (args[0] === 'ping') { var retr = { gdprApplies: gdprApplies, cmpLoaded: false, cmpStatus: 'stub' };
if (typeof args[2] === 'function') { args[2](retr); } } else { queue.push(args); } }
function postMessageEventHandler(event) { var msgIsString = typeof event.data === 'string'; var json = {};
try { if (msgIsString) { json = JSON.parse(event.data); } else { json = event.data; } } catch (ignore) {}
var payload = json.__tcfapiCall;
if (payload) { window.__tcfapi( payload.command, payload.version, function(retValue, success) { var returnMsg = { __tcfapiReturn: { returnValue: retValue, success: success, callId: payload.callId } }; if (msgIsString) { returnMsg = JSON.stringify(returnMsg); } event.source.postMessage(returnMsg, '*'); }, payload.parameter ); } }
while (win) { try { if (win.frames[TCF_LOCATOR_NAME]) { cmpFrame = win; break; } } catch (ignore) {}
if (win === window.top) { break; } win = win.parent; } if (!cmpFrame) { addFrame(); win.__tcfapi = tcfAPIHandler; win.addEventListener('message', postMessageEventHandler, false); } };
makeStub();
var uspStubFunction = function() { var arg = arguments; if (typeof window.__uspapi !== uspStubFunction) { setTimeout(function() { if (typeof window.__uspapi !== 'undefined') { window.__uspapi.apply(window.__uspapi, arg); } }, 500); } };
var checkIfUspIsReady = function() { uspTries++; if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) { console.warn('USP is not accessible'); } else { clearInterval(uspInterval); } }; if (typeof window.__uspapi === 'undefined') { window.__uspapi = uspStubFunction; var uspInterval = setInterval(checkIfUspIsReady, 6000); } // This callback is triggered on each page load __tcfapi('addEventListener', 0, function(tcData, success) { if (success && (tcData.eventStatus == 'useractioncomplete' || tcData.eventStatus == 'tcloaded')) { processCmpData(tcData); } }); function processCmpData(tcData) { // Flag that CMP has been processed. consentManager.cmpProcessed = true; // Permutive disabling needed? if (tcData.purpose.consents[1] && tcData.purpose.consents[3]) { consentManager.permutive.isAllowed = true; } if (consentManager.isAllowed('permutive')) { window.localStorage.removeItem('permutive-opt-out'); } else { window.localStorage.setItem('permutive-opt-out', 'true'); } consentManager.setUserConsent(tcData); if(consentManager.isAllowed('google')) { (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l="+l:"';j.async=true;j.src="https://www.googletagmanager.com/gtm.js?id="+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NTW9BPH'); } // Consent String is needed as DFP target consentManager.setConsentString(tcData.tcString); consentManager.trackPublisherConsentLevel(tcData.publisher.consents); consentManager.trackVendorConsentLevel(tcData.vendor.consents); /** * According to Google policies, if Publisher Purpose 1 is revoked, we should not display ads at all * Check https://support.google.com/admanager/answer/9805023?hl=en for more information * Here we update the flag that points if ads should be rederer or not. */ consentManager.hideAds(tcData.purpose.consents[1]); // Posts tagged as sensitive shouldn't be showing any ads. Since we have a way to control ads viewability through // the consent manager, it's easy to check for the posts tags and flagged if they should shown or not. // According to Google policies, if Publisher Purpose 1 is revoked, we should not display ads at all // Check https://support.google.com/admanager/answer/9805023?hl=en for more information if (consentManager.hasBeenProcessed() && consentManager.displayAds) { consentManager.renderAds(); } // If consent was processed once the page was loaded, there are some ads that may not appear. Let's run prebid again. if (typeof executeParallelAuctionAlongsidePrebid !== 'undefined' && !consentManager.prebidProcessed && consentManager.displayAds) { executeParallelAuctionAlongsidePrebid() } // Facebook and Twitter are non IAB vendors, so we need to check their consents using a different callback __tcfapi('getNonIABVendorConsents', 0, function(consent, success) { if (success && consent.gdprApplies) { consentManager.setUserNonIabConsent(consent); } }) if (!consentManager.sentEventFbPixel && consentManager.isAllowed('facebook')) { !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','//connect.facebook.net/en_US/fbevents.js'); fbq('init', '1294117580618248'); fbq('track', "PageView"); fbq('track', 'ViewContent'); consentManager.sentEventFbPixel = true; } if (!consentManager.sentEventTwPixel && consentManager.isAllowed('twitter')) { !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src="https://static.ads-twitter.com/uwt.js", a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); // Insert Twitter Pixel ID and Standard Event data below twq('init','o1f6l'); twq('track','PageView'); consentManager.sentEventTwPixel = true; } }