CINXE.COM
The game is afoot - Episode 2: Hook, line, sinker
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta content="width=device-width, initial-scale=1" name="viewport"> <meta property="og:type" content="website"> <meta property="og:title" content="The game is afoot - Episode 2: Hook, line, sinker"> <meta property="og:description" content="Episode 2: Hook, line, sinker"> <meta property="og:image" content="https://cdn.pathfactory.com/assets/10445/thumbnails/973598/025f6b3d-594e-405f-b67f-246b4fe510db.png"> <meta property="og:url" content="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep2"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="The game is afoot - Episode 2: Hook, line, sinker"> <meta name="twitter:description" content="Episode 2: Hook, line, sinker"> <meta name="twitter:image" content="https://cdn.pathfactory.com/assets/10445/thumbnails/973598/025f6b3d-594e-405f-b67f-246b4fe510db.png"> <meta name="robots" content="noindex, nofollow"> <link rel="canonical" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep2"> <link rel="icon" type="image/x-icon" href="/images/favicon.ico?v=6"> <title> The game is afoot - Episode 2: Hook, line, sinker </title> <meta name="description" content="Episode 2: Hook, line, sinker"> <script> const jukeboxApiHost = "https://jukebox.pathfactory.com"; const clientId = "LB-3D884D63-10445"; </script> <script> let dimensions = []; dimensions = `[{"label":"Topics","value":"topics","is_default":true},{"label":"Business Units","value":"business_units","is_default":true},{"label":"Personas","value":"personas","is_default":true},{"label":"Industries","value":"industries","is_default":true},{"label":"Products","value":"products","is_default":true},{"label":"Solutions","value":"solutions","is_default":true}]` ? JSON.parse(`[{"label":"Topics","value":"topics","is_default":true},{"label":"Business Units","value":"business_units","is_default":true},{"label":"Personas","value":"personas","is_default":true},{"label":"Industries","value":"industries","is_default":true},{"label":"Products","value":"products","is_default":true},{"label":"Solutions","value":"solutions","is_default":true}]`) : [] const contentTagCategories = dimensions; const customCategories = contentTagCategories?.filter(item => item?.is_default === false) || []; const customCategoryKeys = customCategories.map(item => item.value); </script> <script> function pfDebounce(func, timeout = 500){ let timer; return (...args) => { clearTimeout(timer); timer = setTimeout(() => { func.apply(this, args); }, timeout); }; } function pfGeneratePageOptions({ page, totalPages, maxSlots = 7 }) { let pageOptions = []; if (totalPages <= maxSlots) { for (let i = 1; i <= totalPages; i++) { pageOptions.push(i); } } else { pageOptions = [page]; let pagesSlotted = 1; for (let i = 1; pagesSlotted < maxSlots; i++) { const leadingPage = page - i; const trailingPage = page + i; if (leadingPage >= 1) { pageOptions = [leadingPage, ...pageOptions]; pagesSlotted++; } if (trailingPage <= totalPages) { pageOptions = [...pageOptions, trailingPage]; pagesSlotted++; } } if (pageOptions[0] !== 1) { pageOptions[0] = 1; } if (pageOptions[pageOptions.length - 1] !== totalPages) { pageOptions[pageOptions.length - 1] = totalPages; } if (pageOptions[1] > 2) { pageOptions[1] = "..."; } if (pageOptions[pageOptions.length - 2] < totalPages - 1) { pageOptions[pageOptions.length - 2] = "..."; } } return pageOptions; } function pfGetCookie(namePattern){ const cookies = document.cookie.split("; "); const cookie = cookies.find((cookie) => { const cookieName = cookie.split("=")[0]; return !!cookieName.match(namePattern) }) || ""; return cookie.split("=")[1]; } </script> <script type="text/javascript"> (function() { var didInit = false; function initMunchkin() { if(didInit === false) { didInit = true; Munchkin.init('937-WRZ-618'); var webpageTrackTriggered = false; var totalTimeSpent = 0; const threshold = 90; const totalTimer = setInterval(() => { if (!webpageTrackTriggered && !window.formModalOpen && !document.hidden) { totalTimeSpent++; if (totalTimeSpent >= threshold) { trackWebPage(true); webpageTrackTriggered = true; clearInterval(totalTimer); } } }, 1000); } } function trackWebPage(thresholdPassed) { var url = document.location.pathname; var params = "funnel_stage=Top of Funnel&topic=Digital Operations&topic=Network security&topic=Software as a service&business_unit=CNS X-Portfolio&topic=Security&topic=Analytics&topic=5G security&topic=Cybersecurity&funnel_stage=top-of-funnel&topic=digital-operations&topic=network-security&topic=software-as-a-service&business_unit=cns-x-portfolio&topic=security&topic=analytics&topic=5g-security&topic=cybersecurity&content_type=Video 3+ min&content_type=video-3-min&track_external_id=T01674"; var queryString = ""; if (thresholdPassed) { url = url + ", Met Threshold"; params = "threshold_passed=true" + (params ? "&" + params : ""); } params = params + (queryString ? "&" + queryString : ""); window.mktoMunchkinFunction('visitWebPage', { url: url, params: params }); } var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = '//munchkin.marketo.net/munchkin.js'; s.onreadystatechange = function() { if (this.readyState == 'complete' || this.readyState == 'loaded') { initMunchkin(); } }; s.onload = initMunchkin; document.getElementsByTagName('head')[0].appendChild(s); })(); </script> <script src="https://cdn.pathfactory.com/templated-experiences/glide.js"></script> <link rel="stylesheet" href="https://cdn.pathfactory.com/templated-experiences/glide.core.css"> <link rel="stylesheet" href="https://cdn.pathfactory.com/templated-experiences/glide.theme.css"> <script defer src="https://cdn.pathfactory.com/templated-experiences/alpine.js"></script> <script src="https://cdn.pathfactory.com/templated-experiences/values.js"></script> <script src="https://cdn.pathfactory.com/templated-experiences/brightcove-player-loader.min.js"></script> <script src="https://cdn.pathfactory.com/templated-experiences/reactplayer.standalone.js"></script> <script src="https://www.youtube.com/iframe_api"></script> <script src="https://player.vimeo.com/api/player.js"></script> <script src="https://play.vidyard.com/embed/v4.js"></script> <script src="https://fast.wistia.com/assets/external/E-v1.js"></script> <script defer src="https://js.static.parmonic.ai/v5/aw-single.js"></script> <script defer src="https://js.static.parmonic.ai/v5/aw-init.js"></script> <script src="https://video.limelight.com/player/limelightjs-player.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"> <script> var primaryColor = new Values("#005aff"); var primaryShades = primaryColor.all(18).map((shade) => shade.hexString()); let sectionPadding = "px-[0px] sm:px-[0px] py-[0px] sm:py-[0px]"; if (true) { sectionPadding = "py-12 px-4 sm:px-6 lg:py-16 lg:px-8"; }; window.__unocss = { theme: { colors: { primary: { DEFAULT: primaryShades[5], 50: primaryShades[0], 100: primaryShades[1], 200: primaryShades[2], 300: primaryShades[3], 400: primaryShades[4], 500: primaryShades[5], 600: primaryShades[6], 700: primaryShades[7], 800: primaryShades[8], 900: primaryShades[9] }, on: { primary: "#ffffff" } } }, shortcuts: { "section-display": "flex justify-center mx-auto", "section-padding": `${sectionPadding} flex justify-center mx-auto`, "section-base": "container", "section-heading": "text-3xl font-bold leading-tight tracking-tight text-gray-900 md:text-4xl", "btn": "inline-block w-full px-4 py-2 text-base font-medium leading-4 text-center border rounded-md shadow-sm focus:ring-2 focus:ring-opacity-50 md:text-lg", "btn-lg": "px-6 py-4", "btn-md": "px-4 py-2", "btn-sm": "px-2 py-1", "btn-primary": "bg-primary-500 border-primary-500 text-on-primary hover:bg-primary-600 focus:ring-primary-500", "btn-outline": "text-gray-800 bg-white border border-gray-400 hover:bg-gray-200 focus:ring-gray-200" } }; </script> <script defer src="https://cdn.pathfactory.com/templated-experiences/attributify.global.js"></script> <script src="https://cdn.pathfactory.com/templated-experiences/tailwind.js"></script> <script src="https://cdn.pathfactory.com/templated-experiences/ozmenu.js"></script> <link rel="stylesheet" href="https://cdn.pathfactory.com/templated-experiences/ozmenu-styles.css"> <script src="https://cdn-app.pathfactory.com/libraries/overlay/overlay.js"></script> <link href="https://cdn-app.pathfactory.com/libraries/overlay/overlay.css" rel="stylesheet" type="text/css"> <script defer> const detectGlideAndMount = (count = 0) => { const glides = document.querySelectorAll(".glide"); if (glides.length === 0 && count <= 20) { setTimeout(() => detectGlideAndMount(count + 1), 1000); } else { window.pfGlides = {}; window.carouselConfiguration = {}; glides.forEach((glide) => { window.carouselConfiguration[glide?.dataset?.carouselGlideId] = { type: "slider", animationDuration: 1000, autoplay: glide.dataset.autoplay === "no" ? false : glide.dataset.autoplayInterval * 1000, gap: glide.dataset.gap || 0, perView: glide.dataset.tilesPerRow, peek: glide.dataset.peek || 0, breakpoints: { 640: { perView: 1 }, 1024: { perView: glide.dataset.tilesPerRow === "1" ? 1 : 2 } } }; window.pfGlides[glide.dataset.carouselGlideId] = new Glide(glide, window.carouselConfiguration[glide?.dataset?.carouselGlideId]); window.pfGlides[glide.dataset.carouselGlideId].on(['mount.after', 'run'], () => { const bullets = glide.querySelectorAll('.glide__bullet'); const activeIndex = window.pfGlides[glide.dataset.carouselGlideId].index; bullets.forEach((bullet, index) => { bullet.setAttribute('aria-current', index === activeIndex); }); }); window.pfGlides[glide.dataset.carouselGlideId].mount(); }); for (let count = 0; count < 10; count++) { setTimeout(() => window.dispatchEvent(new Event('resize')), 500 * count); } } } detectGlideAndMount(); </script> <script> function pfUpdateCheckedFiltersCount(sectionNodeId) { const section = document.querySelector(`.section-${sectionNodeId}`); const optionWrappers = section.querySelectorAll("ul[class*='pf-options-wrapper-']"); optionWrappers.forEach((wrapper) => { const f = wrapper.closest("[class*=select-container]"); if (!f) return; const checkboxes = Array.from(f.querySelectorAll(".pf-checkbox")); const checkedOptionsCount = checkboxes.reduce((total, cb) => { return cb.checked ? total + 1 : total; }, 0); const countLabel = f.querySelector(".pf-selected-options-count"); countLabel.style.display = checkedOptionsCount === 0 ? "none" : "inline-block"; countLabel.textContent = checkedOptionsCount > 0 ? checkedOptionsCount : ""; }); const filterContainers = section.querySelectorAll(".pf-resource-center-filters"); filterContainers.forEach((filterContainer) => { const totalCheckedFiltersLabel = filterContainer.querySelector(".pf-total-checked-filters-count"); const overallFiltersLabel = filterContainer.querySelector(".pf-filters-label"); if (totalCheckedFiltersLabel && overallFiltersLabel) { const totalChecked = Array.from(filterContainer.querySelectorAll(".pf-checkbox")).reduce((total, cb) => { return cb.checked ? total + 1 : total; }, 0); totalCheckedFiltersLabel.textContent = totalChecked; if (totalChecked > 0) { totalCheckedFiltersLabel.style.display = ""; overallFiltersLabel.textContent = "Filters applied:"; } else { totalCheckedFiltersLabel.style.display = "none"; overallFiltersLabel.textContent = "Filter"; } } }); } function pfUpdateUrlsWithFilterParams(sectionNodeId) { const filterOptions = window.pfAllFilterOptions || {}; const selectedFilters = window.pfResourceCenterParams?.[sectionNodeId] || {}; const userDefinedCategoryParams = customCategoryKeys.reduce((acc, key) => { acc[key] = selectedFilters?.[key]?.map((id) => filterOptions?.dimensions?.[key]?.find((t) => t.value == id)?.label)?.filter((x) => x) || []; return acc; }, {}); reconstructUrl(convertToQueryParams({ topics: selectedFilters.topics?.map((id) => filterOptions.dimensions?.topics?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], languages: selectedFilters.languages?.map((id) => filterOptions.languages?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], personas: selectedFilters.personas?.map((id) => filterOptions.dimensions?.personas?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], business_units: selectedFilters.business_units?.map((id) => filterOptions.dimensions?.business_units?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], industries: selectedFilters.industries?.map((id) => filterOptions.dimensions?.industries?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], products: selectedFilters.products?.map((id) => filterOptions.dimensions?.products?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], solutions: selectedFilters.solutions?.map((id) => filterOptions.dimensions?.solutions?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], content_types: selectedFilters.content_types?.map((id) => filterOptions.contentTypes?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], funnel_stages: selectedFilters.funnel_stages?.map((id) => filterOptions.dimensions?.funnel_stages?.find((t) => t.value == id)?.label)?.filter((x) => x) || [], current_page: `${selectedFilters.page}`, ...userDefinedCategoryParams })); } async function pfGetContents({ sectionNodeId, isLoadMore = false, updateParams = {} }) { const sectionSelector = `.section-${sectionNodeId}`; const contents = Array.from(document.querySelectorAll(`.section-${sectionNodeId} .pf-content-card`)); const contentUuids = contents.map((c) => c.dataset.uuid).filter((x) => x); const landingPageId = ""; const segmentGroupId = ""; const api_url = `${jukeboxApiHost}/api/public/v3/get_contents/${window.location.search}`; const initialParams = { sort: "", page: 1, search: "", dimensions: [], languages: [], content_types: [] }; const newParams = { ...(window.pfResourceCenterParams?.[sectionNodeId] || initialParams), ...updateParams }; window.pfResourceCenterParams = { ...(window.pfResourceCenterParams || {}), [sectionNodeId]: newParams }; const body = { ...newParams, landingPageId, sectionNodeId, clientId, baseUrl: "https://pf.content.nokia.com", visitorUuid: pfGetCookie("vid"), sessionId: (pfGetCookie(/_pf_id.+/) || "").split(".")[5], segmentGroupId, loadedContentUuids: newParams.page === 1 ? [] : contentUuids }; const response = await fetch(api_url, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body) }); const result = await response.json(); window.pfResourceCenterParams[sectionNodeId] = { ...window.pfResourceCenterParams[sectionNodeId], totalContents: result.totalContents }; window.document.dispatchEvent(new CustomEvent('pageMetadataUpdated', { detail: sectionNodeId })); const section = document.querySelector(sectionSelector); const contentListWrapper = section.querySelector(".pf-resource-center-cards-wrapper"); const contentCardTemplate = section.querySelector(".pf-content-card.template"); if (!contentCardTemplate || !contentListWrapper) return; if (!isLoadMore) contentListWrapper.innerHTML = ""; const noResultsMessage = document.querySelector(".pf-no-results"); if ((result.contents || []).length === 0 && !isLoadMore) { noResultsMessage.style.display = ""; } else { noResultsMessage.style.display = "none"; } (result.contents || []).forEach((c) => { const contentCard = contentCardTemplate.cloneNode(true); contentCard.dataset.uuid = c.uuid; contentCard.querySelector(".pf-content-card-title").textContent = c.title; contentCard.querySelector(".pf-content-card-thumbnail").src = c.thumbnail; contentCard.querySelector(".pf-content-card-link").href = c.url; const linkNode = contentCard.querySelector(".pf-content-card-link"); if (linkNode.dataset.hasOwnProperty("lookbookOverlayHref")) { linkNode.dataset.lookbookOverlayHref = c.url; } const descriptionNode = contentCard.querySelector(".pf-content-card-description"); if (descriptionNode && c.description) { descriptionNode.textContent = c.description; descriptionNode.parentElement.style.display = ""; } const ctaLabelNode = contentCard.querySelector(".pf-content-card-cta"); if (ctaLabelNode) { ctaLabelNode.textContent = c.ctaLabel; } const tagsOnCardWrapper = contentCard.querySelector(".pf-content-tag-on-card-wrapper"); const tagsBelowCardWrapper = contentCard.querySelector(".pf-content-tag-below-card-wrapper"); if (tagsOnCardWrapper || tagsBelowCardWrapper) { const tagOnCardTemplate = tagsOnCardWrapper?.querySelector(".pf-content-tag-on-card"); const tagBelowCardTemplate = tagsBelowCardWrapper?.querySelector(".pf-content-tag-below-card"); const enabledTagTypes = (tagBelowCardTemplate || tagOnCardTemplate).dataset.enabledTags.split(","); if (c.contentType && tagsOnCardWrapper && enabledTagTypes.includes("content_type")) { const contentTypeTag = tagOnCardTemplate.cloneNode(); contentTypeTag.textContent = c.contentType; tagsOnCardWrapper.appendChild(contentTypeTag); } if (c.language && tagsOnCardWrapper && enabledTagTypes.includes("language")) { const languageTag = tagOnCardTemplate.cloneNode(); languageTag.textContent = c.language; tagsOnCardWrapper.appendChild(languageTag); } const customCategoryDimensionsByType = customCategoryKeys.reduce((acc, item) => { const camelizedKey = item.replace(/(_\w)/g, function (match) { return match[1].toUpperCase(); }) if (c && c[camelizedKey]) { acc[item] = c[camelizedKey]; } return acc; }, {}); const dimensionsByType = { business_units: c.businessUnits, funnel_stages: c.funnelStages, industries: c.industries, personas: c.personas, products: c.products, solutions: c.solutions, topics: c.topics, ...customCategoryDimensionsByType }; if (Object.values(dimensionsByType).flat().length > 0 && tagsBelowCardWrapper) { enabledTagTypes.forEach((type) => { const dimensions = dimensionsByType[type] || []; dimensions.forEach((d) => { const dimensionTag = tagBelowCardTemplate.cloneNode(); dimensionTag.textContent = d; tagsBelowCardWrapper.appendChild(dimensionTag); }); }); } if(tagOnCardTemplate) tagOnCardTemplate.remove(); if(tagBelowCardTemplate) tagBelowCardTemplate.remove(); if (c.isPinned) { const pinnedTag = tagsOnCardWrapper.querySelector(".pf-pinned-content-tag"); pinnedTag.style.display = ""; tagsOnCardWrapper.style.display = "flex"; } } contentCard.style.display = ""; contentListWrapper.appendChild(contentCard); }); pfUpdateCheckedFiltersCount(sectionNodeId); if (!isLoadMore) section.scrollIntoView(); } async function pfGetFilters(sectionNodeId) { const isContentPage = true; const urlParams = new URLSearchParams(window.location.search); const sectionSelector = `.section-${sectionNodeId}`; const contentPlayUuid = urlParams.get("pf_cpid"); const campaignUuid = urlParams.get("pf_cid"); const landingPageId = isContentPage ? urlParams.get("pflpid") : ""; const lpSectionNodeId = isContentPage ? urlParams.get("pfsid") : sectionNodeId; const segmentGroupId = ""; const contentPageParams = isContentPage ? { isContentPage: true, contentSource: "974c39a3-8501-452e-9bd9-91f1c8b7a428", templatedExperienceId: "8765" } : {}; const apiUrl = new URL(`${jukeboxApiHost}/api/public/v3/get_filter_options`); const params = { ...contentPageParams, landingPageId, sectionNodeId: lpSectionNodeId, clientId, segmentGroupId, pf_cpid: contentPlayUuid, pf_cid: campaignUuid }; apiUrl.search = new URLSearchParams(params); const response = await fetch(apiUrl); const result = await response.json(); window.pfAllFilterOptions = result; if (typeof result?.totalContents === "number") { window.pfResourceCenterParams = { ...(window.pfResourceCenterParams || {}), [sectionNodeId]: { ...(window.pfResourceCenterParams?.[sectionNodeId] || {}), totalContents: result.totalContents || 0 } }; window.document.dispatchEvent(new CustomEvent('pageMetadataUpdated', { detail: sectionNodeId })); } const section = document.querySelector(sectionSelector); const allFiltersWrapper = section.querySelectorAll(".pf-resource-center-filters"); if (allFiltersWrapper.length === 0) return; allFiltersWrapper.forEach((filtersWrapper) => { const filterOptionTemplate = filtersWrapper.querySelector(".pf-options.pf-template"); const contentTypeOptionsWrapper = filtersWrapper.querySelector(".pf-options-wrapper-content_type") || filtersWrapper.querySelector(".pf-options-wrapper-content_types"); const languageOptionsWrapper = filtersWrapper.querySelector(".pf-options-wrapper-language") || filtersWrapper.querySelector(".pf-options-wrapper-languages"); if (contentTypeOptionsWrapper) { if (result.contentTypes.length === 0) { filtersWrapper.querySelector("[class*='select-content_type']").style.display = "none"; } else { filtersWrapper.querySelector("[class*='select-content_type']").style.display = ""; contentTypeOptionsWrapper.innerHTML = ""; } result.contentTypes.forEach((ct) => { const contentTypeOption = filterOptionTemplate.cloneNode(true); contentTypeOption.querySelector(".pf-label").textContent = ct.label; contentTypeOption.querySelector(".pf-checkbox").name = ct.value; contentTypeOption.querySelector(".pf-checkbox").dataset.label = ct.label; contentTypeOption.style.display = ""; contentTypeOption.querySelector(".pf-checkbox").addEventListener("change", (event) => { const currentCheckedValues = window.pfResourceCenterParams?.[sectionNodeId]?.["content_types"] || []; const checkedContentTypes = event.target.checked ? [...currentCheckedValues, ct.value] : currentCheckedValues.filter(x => x !== ct.value); const newParams = { ["content_types"]: checkedContentTypes, page: 1 }; if (isContentPage) { pfGetContentPageContents({ sectionNodeId, updateParams: newParams }); } else { pfGetContents({ sectionNodeId, updateParams: newParams }); } }); contentTypeOptionsWrapper.appendChild(contentTypeOption); }); } if (languageOptionsWrapper) { if (result.languages.length === 0) { filtersWrapper.querySelector("[class*='select-language']").style.display = "none"; } else { filtersWrapper.querySelector("[class*='select-language']").style.display = ""; languageOptionsWrapper.innerHTML = ""; } result.languages.forEach((l) => { const languageOption = filterOptionTemplate.cloneNode(true); languageOption.querySelector(".pf-label").textContent = l.label; languageOption.querySelector(".pf-checkbox").name = l.value; languageOption.querySelector(".pf-checkbox").dataset.label = l.label; languageOption.style.display = ""; languageOption.querySelector(".pf-checkbox").addEventListener("change", (event) => { const currentCheckedValues = window.pfResourceCenterParams?.[sectionNodeId]?.languages || []; const checkedLanguages = event.target.checked ? [...currentCheckedValues, l.value] : currentCheckedValues.filter(x => x !== l.value); const newParams = { ["languages"]: checkedLanguages, page: 1 }; if (isContentPage) { pfGetContentPageContents({ sectionNodeId, updateParams: newParams }); } else { pfGetContents({ sectionNodeId, updateParams: newParams }); } }); languageOptionsWrapper.appendChild(languageOption); }); } const dimensionTypes = [ "topics", "personas", "business_units", "industries", "products", "solutions", "funnel_stages", ...customCategoryKeys ]; dimensionTypes.forEach((dt) => { const optionsWrapper = filtersWrapper.querySelector(`.pf-options-wrapper-${dt}`); if (optionsWrapper && (result.dimensions[dt] || []).length === 0) { filtersWrapper.querySelector(`.select-${dt}`).style.display = "none"; } if (optionsWrapper && (result.dimensions[dt] || []).length > 0) { filtersWrapper.querySelector(`.select-${dt}`).style.display = ""; optionsWrapper.innerHTML = ""; result.dimensions[dt].forEach((d) => { const option = filterOptionTemplate.cloneNode(true); option.querySelector(".pf-label").textContent = d.label; option.querySelector(".pf-checkbox").name = d.value; option.querySelector(".pf-checkbox").dataset.label = d.label; option.style.display = ""; option.querySelector(".pf-checkbox").addEventListener("change", (event) => { const currentTypeCheckedValues = window.pfResourceCenterParams?.[sectionNodeId]?.[dt] || []; const newCurrentTypeCheckedValues = event.target.checked ? [...currentTypeCheckedValues, d.value] : currentTypeCheckedValues.filter(x => x !== d.value); const newCheckedDimensions = [ ...dimensionTypes.map((type) => { if (type !== dt) return window.pfResourceCenterParams?.[sectionNodeId]?.[type]; }), newCurrentTypeCheckedValues ].filter(x => x); const newParams = { [dt]: newCurrentTypeCheckedValues, dimensions: newCheckedDimensions, page: 1 }; if (isContentPage) { pfGetContentPageContents({ sectionNodeId, updateParams: newParams }); } else { pfGetContents({ sectionNodeId, updateParams: newParams }); } }); optionsWrapper.appendChild(option); }); } }); window.document.dispatchEvent(new CustomEvent('pfFiltersRendered', { detail: sectionNodeId })); }); } </script> <script> async function pfGetContentPageContents({ isLoadMore = false, sectionNodeId, initialLimit, pageAfterInitialLimit, updateParams = {}}) { const urlParams = new URLSearchParams(window.location.search); const filterParams = ["topics", "languages", "personas", "business_units", "industries", "products", "solutions", "content_types", "funnel_stages", ...customCategoryKeys]; filterParams.forEach((p) => urlParams.delete(p)); const templatedExperienceId = "8765"; const contentSource = "974c39a3-8501-452e-9bd9-91f1c8b7a428"; const segmentGroupId = ""; const landingPageId = urlParams.get("pflpid"); const lpSectionNodeId = urlParams.get("pfsid"); const contents = Array.from(document.querySelectorAll(`.section-${sectionNodeId} .pf-content-card`)); const contentUuids = contents.map((c) => c.dataset.uuid).filter((x) => x); const api_url = `${jukeboxApiHost}/api/public/v3/get_contents/?${urlParams.toString()}`; const initialParams = { sort: "", page: 1, search: "", dimensions: [], languages: [], content_types: [] }; const newParams = { ...(window.pfResourceCenterParams?.[sectionNodeId] || initialParams), ...updateParams }; window.pfResourceCenterParams = { ...(window.pfResourceCenterParams || {}), [sectionNodeId]: newParams }; const body = { ...newParams, templatedExperienceId, contentSource, landingPageId, sectionNodeId: lpSectionNodeId, clientId, baseUrl: "https://pf.content.nokia.com", visitorUuid: pfGetCookie("vid"), sessionId: (pfGetCookie(/_pf_id.+/) || "").split(".")[5], segmentGroupId, isContentPage: true, loadedContentUuids: newParams.page === 1 ? [] : contentUuids }; if (!isLoadMore && initialLimit) { body.limit = initialLimit; } const response = await fetch(api_url, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body) }); const result = await response.json(); window.pfResourceCenterParams[sectionNodeId] = { ...window.pfResourceCenterParams[sectionNodeId], totalContents: result.totalContents }; if (!isLoadMore && pageAfterInitialLimit) { window.pfResourceCenterParams[sectionNodeId].page = pageAfterInitialLimit; } window.document.dispatchEvent(new CustomEvent('pageMetadataUpdated', { detail: sectionNodeId })); // The following will handle desktop and mobile content lists const contentListWrappers = document.querySelectorAll(".pf-cards-wrapper"); contentListWrappers.forEach((contentListWrapper) => { const contentCardTemplate = contentListWrapper.querySelector(".pf-content-card.template"); const loadMoreButton = contentListWrapper.querySelector(".pf-load-more"); if (!contentCardTemplate) return; if (!isLoadMore) { contentListWrapper.innerHTML = ""; contentCardTemplate.style.display = "none"; contentListWrapper.appendChild(contentCardTemplate); const noResultsMessages = document.querySelectorAll(".pf-no-results"); if ((result.contents || []).length === 0) { noResultsMessages.forEach((noResultsMessage) => { noResultsMessage.style.display = "block"; }); } else { noResultsMessages.forEach((noResultsMessage) => { noResultsMessage.style.display = "none"; }); } }; (result.contents || []).forEach((c) => { const contentCard = contentCardTemplate.cloneNode(true); const thumbnail = contentCard.querySelector(".pf-content-card-thumbnail"); const pinnedTag = contentCard.querySelector(".pf-pinned-content-tag"); const tagTemplate = contentCard.querySelector(".pf-content-tag"); contentCard.dataset.uuid = c.uuid; contentCard.classList.remove("template"); contentCard.querySelector(".pf-content-card-title").textContent = c.title; if (thumbnail) { thumbnail.src = c.thumbnail; } contentCard.querySelector(".pf-content-card-link").href = c.url; contentCard.querySelector(".pf-content-card-link").onclick = () => { window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window['initializeContentEvents']('contentClick', {contentId: c.id}); }; if (c.isPinned && pinnedTag) { pinnedTag.style.display = "" } if (tagTemplate) { const enabledTags = (tagTemplate.dataset.enabledContentTags || "").split(",").filter(x => x); if (enabledTags.length > 0) { const tagsWrapper = contentCard.querySelector(".pf-content-tags-wrapper"); enabledTags.forEach((tagType) => { [c[tagType] || []].flat().forEach((tag) => { const newTag = tagTemplate.cloneNode(true); newTag.textContent = tag; newTag.style.display = "block"; tagsWrapper.appendChild(newTag); }); }); } } contentCard.style.display = ""; contentListWrapper.appendChild(contentCard); }); if (loadMoreButton) { contentListWrapper.appendChild(loadMoreButton); // Moves the button back to bottom const totalPages = Math.ceil(window.pfResourceCenterParams[sectionNodeId].totalContents / window.pfResourceCenterParams[sectionNodeId].limit); if (window.pfResourceCenterParams[sectionNodeId].page == totalPages) { loadMoreButton.style.display = "none"; } } pfUpdateCheckedFiltersCount(sectionNodeId); pfUpdateUrlsWithFilterParams(sectionNodeId); }); } </script> <script defer> const pfShowCookieSettingsModal = () => { const cookieSettingsContainer = document.querySelector("#qa-modal-container"); const cookieSettingsModal = document.querySelector("#qa-modal-background"); if (cookieSettingsModal && cookieSettingsContainer) { cookieSettingsModal.style.display = "block"; cookieSettingsContainer.style.display = "block"; const toggle = cookieSettingsContainer.querySelector("#optIn-checkbox"); toggle.checked = pfConsentStatus(); } }; </script> <script defer> document.addEventListener("click", (event) => { document.querySelectorAll(".select-container").forEach((select) => { if (!select.contains(event.target)) { select.querySelector(".dropdown-list").classList.add("hidden"); } }); }); const convertToQueryParams = (paramObject) => { const keys = Object.keys(paramObject); const keyValuePairs = keys.filter(k => paramObject[k].length).map(key => { return key + '=' + paramObject[key]; }); return keyValuePairs.join('&'); } const reconstructUrl = (newFilterQueryParams) => { const isContentPage = true; if (isContentPage) { const allowedFilters = ["topics", "languages", "personas", "business_units", "industries", "products", "solutions", "content_types", "funnel_stages", "current_page", ...customCategoryKeys]; const allParams = new URLSearchParams(window.location.search); const allParamsAsObject = Object.fromEntries(allParams); const nonFilterParams = Object.keys(allParamsAsObject). filter((key) => !allowedFilters.includes(key)). reduce((cur, key) => { return Object.assign(cur, { [key]: allParamsAsObject[key] })}, {}); const nonFilterQueryParams = convertToQueryParams(nonFilterParams); const currentUrl = window.location.href; const path = currentUrl.substring(0, currentUrl.indexOf('?')); history.replaceState({}, "", `${path}?${nonFilterQueryParams}&${newFilterQueryParams}`); const allContentLinks = document.querySelectorAll(".assets-content-page a"); for (let i = 0; i < allContentLinks.length; i++) { const contentUrl = allContentLinks[i].href.split("?")[0]; allContentLinks[i].href = (`${contentUrl}?${nonFilterQueryParams}&${newFilterQueryParams}`.replace("&lb-mode=overlay", "")); } } }; function handleFilterChange(nodeId) { const isDeviceMobile = window.innerWidth <= 640; const isDeviceTablet = window.innerWidth <= 1024; const mobileFilters = document.querySelector(`.section-${nodeId} .mobile-filters-container`); const mobileFiltersVisible = mobileFilters && window.getComputedStyle(mobileFilters).display !== "none"; const filters = mobileFiltersVisible ? mobileFilters : document.querySelector(`.section-${nodeId} .filters-container`); const search = document.querySelector(`#search-${nodeId}`)?.value?.toLowerCase() || ""; const selectedTopics = filters.querySelector(".select-topics")?.value || []; const selectedLanguages = filters.querySelector(".select-languages")?.value || []; const selectedPersonas = filters.querySelector(".select-personas")?.value || []; const selectedBusinessUnits = filters.querySelector(".select-business_units")?.value || []; const selectedIndustries = filters.querySelector(".select-industries")?.value || []; const selectedProducts = filters.querySelector(".select-products")?.value || []; const selectedSolutions = filters.querySelector(".select-solutions")?.value || []; const selectedContentTypes = filters.querySelector(".select-content_types")?.value || []; const selectedFunnelStages = filters.querySelector(".select-funnel_stages")?.value || []; const filterObj = { topics: selectedTopics, languages: selectedLanguages, personas: selectedPersonas, business_units: selectedBusinessUnits, industries: selectedIndustries, products: selectedProducts, solutions: selectedSolutions, content_types: selectedContentTypes, funnel_stages: selectedFunnelStages }; const carouselArrow = document.querySelector(`.carousel-arrows-${nodeId}`); const carouselSection = document.querySelector(`.carousel-${nodeId}`); const configuredTilesPerRow = carouselSection ? carouselSection?.dataset?.tilesPerRow : ""; const tabletTilesPerRow = configuredTilesPerRow === "1" ? "1" : "2"; const tilesPerRow = Number(isDeviceMobile ? "1" : (isDeviceTablet ? tabletTilesPerRow : configuredTilesPerRow)); customCategories.forEach(filter => { const className = `.select-${filter.value}`; const selectedValue = filters.querySelector(className)?.value || [] filterObj[filter.value] = selectedValue; }) const newQueryString = convertToQueryParams(filterObj); reconstructUrl(newQueryString); window.assets = window.assets || {}; if (!window.assets[`asset-${nodeId}`]) { window.assets[`asset-${nodeId}`] = document.querySelectorAll(`.assets-${nodeId} > .asset`); } const matches = Array.from(window.assets[`asset-${nodeId}`]).filter((asset) => { const topicMatches = selectedTopics.length == 0 || selectedTopics.findIndex((topic) => asset.dataset.topics.includes(topic)) > -1; const searchMatches = asset.dataset.title.toLowerCase().includes(search) || !search; const languageMatches = selectedLanguages.length == 0 || selectedLanguages.findIndex((language) => asset.dataset.language.includes(language)) > -1; const personaMatches = selectedPersonas.length == 0 || selectedPersonas.findIndex((persona) => asset.dataset.personas.includes(persona)) > -1; const businessUnitMatches = selectedBusinessUnits.length == 0 || selectedBusinessUnits.findIndex((value) => asset.dataset.businessUnits.includes(value)) > -1; const industryMatches = selectedIndustries.length == 0 || selectedIndustries.findIndex((value) => asset.dataset.industries.includes(value)) > -1; const productMatches = selectedProducts.length == 0 || selectedProducts.findIndex((value) => asset.dataset.products.includes(value)) > -1; const solutionMatches = selectedSolutions.length == 0 || selectedSolutions.findIndex((value) => asset.dataset.solutions.includes(value)) > -1; const contentTypeMatches = selectedContentTypes.length == 0 || selectedContentTypes.findIndex((value) => asset.dataset.contentType.includes(value)) > -1; const funnelStageMatches = selectedFunnelStages.length == 0 || selectedFunnelStages.findIndex((value) => asset.dataset.funnelStages.includes(value)) > -1; const customCategoriesMatches = customCategories.every(category => { const customFilter = category.value; if (filterObj[customFilter].length === 0) return true; const dataSetKey = "data-" + customFilter.replaceAll("_", "-") return filterObj[customFilter].some(value => asset.getAttribute(dataSetKey)?.includes(value)); }); const isPinned = asset.dataset.isPinned == "true"; const assetMatchesAllFilters = isPinned || ( topicMatches && searchMatches && languageMatches && personaMatches && businessUnitMatches && industryMatches && productMatches && solutionMatches && contentTypeMatches && funnelStageMatches && customCategoriesMatches ); if (assetMatchesAllFilters) { asset.style.display = ""; } else { asset.style.display = "none"; } return assetMatchesAllFilters; }); if (matches.length === 0) { document.querySelectorAll(`.section-${nodeId} .no-results`).forEach((noResultsMessage) => { noResultsMessage.classList.remove("hidden"); }); } else { document.querySelectorAll(`.section-${nodeId} .no-results`).forEach((noResultsMessage) => { noResultsMessage.classList.add("hidden"); }); } const updatedAssets = document.createDocumentFragment(); const bulletsContainer = document.querySelector(`.carousel-${nodeId} .glide__bullets`); const showCarouselArrow = matches.length > tilesPerRow; if (bulletsContainer) { const updatedBulletContainer = document.createDocumentFragment(); bulletsContainer.innerHTML = ''; matches.forEach((asset, index) => { updatedAssets.appendChild(matches[index]); const i = index + 1; if (tilesPerRow) { const remainder = (i + tilesPerRow) % tilesPerRow; const buttonElement = document.createElement('button'); buttonElement.className = `glide__bullet ${!(remainder == 1 || tilesPerRow == 1) && 'glide__bullet--between'}`; buttonElement.setAttribute('data-glide-dir', `=${i-1}`); buttonElement.setAttribute('aria-label', `scroll to content ${i}`); updatedBulletContainer.appendChild(buttonElement); } }); const carouselContainer = document.querySelector(`.carousel-${nodeId} .assets-${nodeId}`); if (carouselContainer) { carouselContainer.innerHTML = ''; carouselContainer.appendChild(updatedAssets); } updatedBulletContainer && bulletsContainer.appendChild(updatedBulletContainer); if (window.pfGlides && window.pfGlides[`glide-${nodeId}`]) { const mountAndGo = window.customThrottle(() => { window.pfGlides[`glide-${nodeId}`].destroy(); const carousel = document.querySelector(`.carousel-${nodeId}`); if (carousel) { window.pfGlides[`glide-${nodeId}`] = new Glide(carousel, window.carouselConfiguration ? window.carouselConfiguration[`glide-${nodeId}`] : {}); window.pfGlides[`glide-${nodeId}`].mount(); window.pfGlides[`glide-${nodeId}`].go('=0'); } }, 1000); mountAndGo(); } } function showHideCarouselActions(type) { if (bulletsContainer) { bulletsContainer.style.display = type; } if (carouselArrow?.style) { carouselArrow.style.display = type; } } showHideCarouselActions(showCarouselArrow ? "" : "none"); } </script> <script> (function(j,o,u,r,n,e,y){j["pfObject"]=n;j[n]=j[n]||function(){ (j[n].q=j[n].q||[]).push(arguments)},j[n].l=1*new Date();e=o.createElement(u), y=o.getElementsByTagName(u)[0];e.async=1;e.src=r;y.parentNode.insertBefore(e,y) })(window,document,"script","https://cdn-app.pathfactory.com/libraries/journey/current/journey.js","pf"); pf("create", "LB-3D884D63-10445", { appId: "69b03101-39df-4479-a65b-9b97fc3d9e0f", collectorUrl: "spcollector.pathfactory.com", consentDeclinedCookieLifetimeDays: "1/48", contentId: '832118', contentUuid: "a2d859e5-c010-4107-9d34-c63236aebb44", cookieLifetimeDays: "730", experienceId: '186752', experienceUuid: "f4f48f05-9555-41b5-8903-f20b6f7216a4", gdprCookieConsentEnabled: false, marketingAutomationPlatform: "marketo", landingPageContentUuid: "ccc4eda3-7901-4fb6-bb58-d113f6660a57", jukeboxApiHost: "https://jukebox.pathfactory.com", collectionUuid: "974c39a3-8501-452e-9bd9-91f1c8b7a428", childTrackExperienceUuid: "974c39a3-8501-452e-9bd9-91f1c8b7a428", enableDemandBase: false, enableNvidiaNcidCookie: false, baseUrl: "https://pf.content.nokia.com", segmentGroupId: "", enableSixSense: true, sixSenseApiKey: "", sixSenseCustomIdToken: "PathFactory-98f3a68e5a5be89d0185081bb37fedbd3ba9dd82", sixSenseCacheDuration: "86400", requestIp: "8.222.208.146", }); </script> <script> const elementInView = (elem) => { if (!elem) { return; } var bounding = elem.getBoundingClientRect(); return ( bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth) ); }; window.customThrottle = (cb, delay) => { let wait = false; let storedArgs = null; const checkStoredArgs = () => { if (storedArgs == null) { wait = false; } else { cb(...storedArgs); storedArgs = null; setTimeout(checkStoredArgs, delay); } }; return (...args) => { if (wait) { storedArgs = args; return; } cb(...args); wait = true; setTimeout(checkStoredArgs, delay); }; }; </script> <script> window.viewedEmbedForms = []; const embedFormLoaded = (retryCount, formId, formType) => { setTimeout(() => { if (window["showForm"] && typeof window["showForm"] === "function") { window.showForm({ formType: formType, formData: { value: formId } }); } else if (retryCount < 5) { retryCount++; embedFormLoaded(retryCount, formId, formType); } }, 500); }; const initEmbedFormShow = (formId, formType, nodeId) => { const scrollElementToView = () => { if (window.viewedEmbedForms && !window.viewedEmbedForms.includes(nodeId)) { const embedFormView = elementInView && elementInView(document.querySelector(`.embed-form-section-${nodeId} .embed-form-container`)); if (embedFormView) { embedFormLoaded && embedFormLoaded(0, formId, formType); window.viewedEmbedForms.push(nodeId); } } } if (window.customThrottle) { document.addEventListener("scroll", window.customThrottle(scrollElementToView, 1000)); } } </script> <script> window.getPFContact = function() { var api_host = "https://pf.content.nokia.com"; return fetch(`${api_host}/get_contact`); }; </script> <script defer> function handleOverlay(retries = 0) { var nextRetryCount = retries + 1; var rawOverlayUrl = window.location.search.substring(1).split("&").filter(function(query) { return query.indexOf("overlay_url=") == 0 })[0] var overlayUrl = rawOverlayUrl ? decodeURIComponent(rawOverlayUrl.replace("overlay_url=", "")) : null; var overlayContentLink = document.querySelector(`a[data-lookbook-overlay-href^="${overlayUrl}"]`); if (overlayUrl && overlayContentLink) { overlayContentLink.click() } else if (overlayUrl) { var a = document.createElement('a'); a.setAttribute("data-lookbook-overlay-href", overlayUrl) a.href = overlayUrl; a.style.display = "hidden"; window.onload = function() { document.body.appendChild(a); a.click(); } } else if (retries <= 10) { setTimeout(function() { handleOverlay(nextRetryCount) }, 500); } }; handleOverlay(); </script> <style> .glide__arrow { color: rgba(25, 25, 25, 0.5); height: 100%; top: 40%; border: none; box-shadow: none; } .glide__arrow--left { left: -40px; } .glide__arrow--right { right: -40px; } .glide__bullets { bottom: 0; } .glide__bullet { width: 15px; height: 15px; background-color: rgba(125, 125, 125, 0.5); } .glide__bullet--active { background-color: #005aff; } .glide__bullet:hover, .glide__bullet:focus { background-color: #005aff; } .glide__bullet--between { display: none; } .glide__bullet--between.glide__bullet--active { display: block; position: relative; left: -23px; margin-right: -19px; } </style> <style> [un-cloak] { display: none; } #content-page { height: 100vh; } .video-js { width: 100%; height: 100% } </style> <style> .pf-full-width-rte .pf-rte-wrapper { width: 100%; } .pf-rte-wrapper ul, .pf-rte-wrapper ol { list-style: revert; list-style-position: inside; margin: revert; padding: revert; } .pf-rte-wrapper menu { list-style: revert !important; margin: revert !important; padding: revert !important; } .pf-rte-wrapper ul p, .pf-rte-wrapper ol p { display: inline; } </style> <style> .pf-aem-fragment .container { max-width: none; } </style> <style> html { scroll-behavior: smooth; } </style> <style> .lookbook-overlay { z-index: 10000000; } </style> <style> body:has(div[class*='pf-modal'][style*='display: block']) { overflow: hidden; } </style> <style> .pf-ai-response ul { list-style: revert; margin: revert; padding: revert; } </style> <link href="//fonts.googleapis.com/css?family=Raleway:300,400,500,600,700|Roboto:300,400,500,700|Lato:300,400,700" media="screen" rel="stylesheet" type="text/css" /> <style> @font-face { font-family: Nokia Pure Headline Bold; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/6a81c983-8c18-4a59-9280-9d4557a0299d.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Headline Extra Bold; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/34340831-44a2-4765-822c-fc26078bf0d6.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Headline Light; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/430ff6e6-d31a-43ab-a575-270489bd7e6c.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Headline Regular; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/188751a6-fc2d-4405-b956-f8c7e442bacb.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Headline Ultra light; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/57d2ec2a-97a4-42f3-939f-66bef834dce0.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Symbols; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/7c76009c-aeab-45ee-82eb-62e8181723ba.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Text Bold; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/7576f0e2-008e-4eb6-84ac-dafa25808ddf.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Text Light; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/6b371443-fe7a-43fd-aaf6-903ce3f8e373.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Text Medium; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/172f8679-4fa4-4f2e-8346-ffeb92dfba0e.ttf') format('truetype'); } @font-face { font-family: Nokia Pure Text Regular; src: url('https://app.cdn.lookbookhq.com/lbhq-production/2/fonts/4b948c55-762e-41b5-a921-2551ff34e74e.ttf') format('truetype'); } @font-face { font-family: ANokiaPureTextHeadline; src: url('https://cdn.pathfactory.com/assets/2/fonts/eeff6730-97fc-4163-af17-34886aa84050.ttf') format('truetype'); }</style> <style>.pf_font_preset_0 { font-size: 36pt; font-weight: bold; font-family: inherit; line-height: ; } .pf_font_preset_1 { font-size: 24pt; font-weight: bold; font-family: inherit; line-height: ; } .pf_font_preset_2 { font-size: 24pt; font-weight: normal; font-family: inherit; line-height: ; } .pf_font_preset_3 { font-size: 20pt; font-weight: bold; font-family: inherit; line-height: ; } .pf_font_preset_4 { font-size: 20pt; font-weight: normal; font-family: inherit; line-height: ; } .pf_font_preset_5 { font-size: 18pt; font-weight: normal; font-family: inherit; line-height: ; } .pf_font_preset_6 { font-size: 14pt; font-weight: normal; font-family: inherit; line-height: ; } .pf_font_preset_7 { font-size: 12pt; font-weight: normal; font-family: inherit; line-height: ; } @media (max-width: 640px) { .pf_font_preset_0 { font-size: ; line-height: ; } .pf_font_preset_1 { font-size: ; line-height: ; } .pf_font_preset_2 { font-size: ; line-height: ; } .pf_font_preset_3 { font-size: ; line-height: ; } .pf_font_preset_4 { font-size: ; line-height: ; } .pf_font_preset_5 { font-size: ; line-height: ; } .pf_font_preset_6 { font-size: ; line-height: ; } .pf_font_preset_7 { font-size: ; line-height: ; } }</style> <style> ul.ozmenu-nav > li:hover{ background:#75757599; border-radius:4px; } ul.ozmenu-nav > li > a:hover{ --un-brightness:1!important; border-radius: 4px; } .section-sXEmqqh0Oe{ position:absolute!important; width:100%; background:transparent!important; } #header-header + div > div > nav > div > div + div > div + div > div > div + ul > .item > a { color:#151515!important; } #header-header + div > div > nav > div > div + div > div + div > div > div + ul > .dropdownitem > div > ul > .item > a{ color:#151515!important; } #header-header + div > div > nav > div > div + div > div + div > div > div + ul > .dropdownitem > div > ul{ background:#fff!important; } #header-header + div > div > nav > div > div + div > div + .ozmenu.active > div{ background:#151515!important; } #header-sXEmqqh0Oe + div > div > nav > div > div + div > div + .ozmenu.active > div > ul{ background:#75757506!important; } #header-sXEmqqh0Oe + div > div > nav > div > div + div > div + .ozmenu.active{ background:#151515!important; } #explainer-header + div > div > nav > div > div + div > div + .ozmenu.active > div > ul{ background:#151515!important; } #explainer-header + div > div > nav > div > div + div > div + .ozmenu.active{ background:#151515!important; } li.asset > a > div { margin-bottom:0.25rem; } div.asset > a > div { margin-bottom:0.25rem; } .asset:hover { /* background:#75757599; */ border-radius:10px; padding-top:10px; transition: .1s ease-in-out; } .glide__arrow > i{ color: white!important; } </style> <!-- Google Tag Manager --> <script> if(!document.location.href.includes("EkXxdR")){ (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-MBL8DDM'); } else if(document.location.href.includes("EkXxdR")){ (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-5T46HL3Q'); } </script> <!-- End Google Tag Manager --> <style> @media (max-width: 768px) { #download{ display: none; } } </style><style> #qa-sidebar-featured-tag{ background: #005aff; } </style> </head> <body un-cloak class="mb-[50px] md:mb-[0px]"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MBL8DDM" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <section id="" class="section-display relative section- pf-header pf-header-background-color z-10000 py-0 hidden section-padding bg-[#EFEFF7] " x-data="{ open: false }" > <div id=""></div> <div class=" w-full relative"> <div class="relative iframe-hide"> <nav class="flex justify-between h-20"> <div class="flex items-center justify-between w-full"> <div class="flex flex-wrap"> <a class="flex items-center max-w-max" > <img id="pf-header-company-logo" alt="Logo" class="h-10 mr-3 object-cover" src="https://raw.githubusercontent.com/buzzdata/themes/main/images/logoipsum-logo-35.svg" > <span id="pf-header-company-name" class="self-center text-lg hidden md:block font-semibold whitespace-nowrap mr-3 "> <div class="pf-rte-wrapper">Your Company Name</div> </span> </a> </div> <div class="block grow mx-4"> <div class="menu-open"> <button class="self-center navbar-burger lg:hidden" aria-label="open menu"> <svg fill="none" height="35" viewbox="0 0 32 32" width="35" xmlns="http://www.w3.org/2000/svg"> <rect class="text-gray-50" fill="currentColor" height="32" rx="6" width="32"></rect> <path class="text-gray-500" d="M7 12H25C25.2652 12 25.5196 11.8946 25.7071 11.7071C25.8946 11.5196 26 11.2652 26 11C26 10.7348 25.8946 10.4804 25.7071 10.2929C25.5196 10.1054 25.2652 10 25 10H7C6.73478 10 6.48043 10.1054 6.29289 10.2929C6.10536 10.4804 6 10.7348 6 11C6 11.2652 6.10536 11.5196 6.29289 11.7071C6.48043 11.8946 6.73478 12 7 12ZM25 15H7C6.73478 15 6.48043 15.1054 6.29289 15.2929C6.10536 15.4804 6 15.7348 6 16C6 16.2652 6.10536 16.5196 6.29289 16.7071C6.48043 16.8946 6.73478 17 7 17H25C25.2652 17 25.5196 16.8946 25.7071 16.7071C25.8946 16.5196 26 16.2652 26 16C26 15.7348 25.8946 15.4804 25.7071 15.2929C25.5196 15.1054 25.2652 15 25 15ZM25 20H7C6.73478 20 6.48043 20.1054 6.29289 20.2929C6.10536 20.4804 6 20.7348 6 21C6 21.2652 6.10536 21.5196 6.29289 21.7071C6.48043 21.8946 6.73478 22 7 22H25C25.2652 22 25.5196 21.8946 25.7071 21.7071C25.8946 21.5196 26 21.2652 26 21C26 20.7348 25.8946 20.4804 25.7071 20.2929C25.5196 20.1054 25.2652 20 25 20Z" fill="currentColor"></path> </svg> </button> </div> <div class="ozmenu"> <div> <div class="menu-close"> <a class="absolute p-4 navbar-close top-5 right-3" href="#"> <svg fill="none" height="12" viewbox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"> <path d="M6.94004 6L11.14 1.80667C11.2656 1.68113 11.3361 1.51087 11.3361 1.33333C11.3361 1.1558 11.2656 0.985537 11.14 0.860002C11.0145 0.734466 10.8442 0.66394 10.6667 0.66394C10.4892 0.66394 10.3189 0.734466 10.1934 0.860002L6.00004 5.06L1.80671 0.860002C1.68117 0.734466 1.51091 0.663941 1.33337 0.663941C1.15584 0.663941 0.985576 0.734466 0.860041 0.860002C0.734505 0.985537 0.66398 1.1558 0.66398 1.33333C0.66398 1.51087 0.734505 1.68113 0.860041 1.80667L5.06004 6L0.860041 10.1933C0.797555 10.2553 0.747959 10.329 0.714113 10.4103C0.680267 10.4915 0.662842 10.5787 0.662842 10.6667C0.662842 10.7547 0.680267 10.8418 0.714113 10.9231C0.747959 11.0043 0.797555 11.078 0.860041 11.14C0.922016 11.2025 0.99575 11.2521 1.07699 11.2859C1.15823 11.3198 1.24537 11.3372 1.33337 11.3372C1.42138 11.3372 1.50852 11.3198 1.58976 11.2859C1.671 11.2521 1.74473 11.2025 1.80671 11.14L6.00004 6.94L10.1934 11.14C10.2554 11.2025 10.3291 11.2521 10.4103 11.2859C10.4916 11.3198 10.5787 11.3372 10.6667 11.3372C10.7547 11.3372 10.8419 11.3198 10.9231 11.2859C11.0043 11.2521 11.0781 11.2025 11.14 11.14C11.2025 11.078 11.2521 11.0043 11.286 10.9231C11.3198 10.8418 11.3372 10.7547 11.3372 10.6667C11.3372 10.5787 11.3198 10.4915 11.286 10.4103C11.2521 10.329 11.2025 10.2553 11.14 10.1933L6.94004 6Z" fill="#556987"> </path> </svg> </a> </div> <ul class="flex justify-center pf_font_preset_7 gap-8 ozmenu-nav"> <li class="item"> <a id="header-link-Home" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.location.href='https://pf.content.nokia.com/the-game-is-afoot/home?pflpid=28247&pfsid=BLJsmNp95Z'; event.preventDefault()">Home</span> </a> </li> <li class="item"> <a id="header-link-Take the quiz" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.location.href='https://pf.content.nokia.com/the-game-is-afoot/quiz?pflpid=28247&pfsid=BLJsmNp95Z'; event.preventDefault()">Take the quiz</span> </a> </li> <li class="item"> <a id="header-link-Explainer videos" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.location.href='https://pf.content.nokia.com/the-game-is-afoot/explainer-videos?pflpid=28247&pfsid=BLJsmNp95Z'; event.preventDefault()">Explainer videos</span> </a> </li> <li class="item dropdownitem"> <a id="header-link-Nokia solutions to save the day" class="font-medium text-[#ffffff] hover:brightness-70 nav-dropdown"> <span class="cursor-pointer px-2 mh-test" onclick="window.location.href='?pflpid=28247&pfsid=BLJsmNp95Z'; event.preventDefault()">Nokia solutions to save the day</span> </a> <div class="dropdown w-full lg:max-w-max"> <ul class="lg:bg-[#75757599] w-full lg:max-w-max"> <li class="item"> <a id="header-link-Autonomous Networks" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.open('https://www.nokia.com/networks/autonomous-networks?pflpid=28247&pfsid=BLJsmNp95Z'); event.preventDefault()" > Autonomous Networks </span> </a> </li> <li class="item"> <a id="header-link-Cybersecurity" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.open('https://www.nokia.com/networks/cybersecurity/?pflpid=28247&pfsid=BLJsmNp95Z'); event.preventDefault()" > Cybersecurity </span> </a> </li> <li class="item"> <a id="header-link-Digital Operations" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.open('https://www.nokia.com/networks/bss-oss/digital-operations-center/?pflpid=28247&pfsid=BLJsmNp95Z'); event.preventDefault()" > Digital Operations </span> </a> </li> <li class="item"> <a id="header-link-AI and Analytics" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.open('https://www.nokia.com/networks/ai-and-analytics/?pflpid=28247&pfsid=BLJsmNp95Z'); event.preventDefault()" > AI and Analytics </span> </a> </li> <li class="item"> <a id="header-link-Software-as-a-Service" class="font-medium text-[#ffffff] hover:brightness-70 "> <span class="cursor-pointer px-2 mh-test" onclick="window.open('https://www.nokia.com/networks/as-a-service/saas/?pflpid=28247&pfsid=BLJsmNp95Z'); event.preventDefault()" > Software-as-a-Service </span> </a> </li> </ul> </div> </li> </ul> <div class="flex w-50 lg:hidden mx-auto flex-col gap-5"> <div> <a class=" btn leading-none btn-md pf-cta pf_font_preset_6 bg-[#005aff] border-[#005aff] text-on-primary hover:bg-primary-600 focus:ring-[#005aff] rounded-[6px] pointer-events-none " href="#" target="_blank" data-pf-theme-artefact-id="cta-link" data-pf-theme-block-id="pf-mobile-primary-cta-in-header" data-pf-theme-block-type="component" data-pf-theme-block-ref="cta" data-pf-theme-block-label="Request a Demo" aria-label="Request a Demo" > Request a Demo </a> </div> <div> <a class=" btn leading-none btn-md pf-cta pf_font_preset_6 bg-[#005aff] border-[#005aff] text-on-primary hover:bg-primary-600 focus:ring-[#005aff] rounded-[6px] pointer-events-none " href="#" target="_blank" data-pf-theme-artefact-id="cta-link" data-pf-theme-block-id="pf-mobile-secondary-cta-in-header" data-pf-theme-block-type="component" data-pf-theme-block-ref="cta" data-pf-theme-block-label="Request a Demo" aria-label="Request a Demo" > Request a Demo </a> </div> </div> </div> </div> </div> <div class="hidden lg:block"> <div class="flex items-center justify-end"> <div> <a class=" btn leading-none btn-md pf-cta pf_font_preset_6 bg-[#005aff] border-[#005aff] text-on-primary hover:bg-primary-600 focus:ring-[#005aff] rounded-[6px] pointer-events-none " href="#" target="_blank" data-pf-theme-artefact-id="cta-link" data-pf-theme-block-id="pf-primary-cta-in-header" data-pf-theme-block-type="component" data-pf-theme-block-ref="cta" data-pf-theme-block-label="Request a Demo" aria-label="Request a Demo" > Request a Demo </a> </div> <div class="ml-5 flex-nowrap"> <a class=" btn leading-none btn-md pf-cta pf_font_preset_6 bg-[#005aff] border-[#005aff] text-on-primary hover:bg-primary-600 focus:ring-[#005aff] rounded-[6px] pointer-events-none " href="#" target="_blank" data-pf-theme-artefact-id="cta-link" data-pf-theme-block-id="pf-secondary-cta-in-header" data-pf-theme-block-type="component" data-pf-theme-block-ref="cta" data-pf-theme-block-label="Request a Demo" aria-label="Request a Demo" > Request a Demo </a> </div> </div> </div> </div> </nav> </div> </div> </section> <div id="content-page" class="section-content-page relative bg-white" > <aside id="sidebar" class="hidden md:flex md:w-64 lg:w-72 flex-col absolute h-full overflow-visible border-gray-200 border-r bg-[#FFFFFF] " aria-label="Sidebar" > <div class="flex justify-center flex-wrap h-auto py-[15px] "> <a class="flex items-center max-w-max" href=" https://www.nokia.com/ "> <img id="pf-header-company-logo" alt="Logo" class="h-10 mr-3 object-cover" src="https://cdn.pathfactory.com/assets/10445/thumbnails/945947/5ebeb50a-157c-4a4d-be0d-e57f499b751f.png" > </a> </div> <section> <div class=" mb-3 "> <div class="items-center flex flex-col justify-center"> <div class="ml-3 mt-2 mr-2 flex-nowrap"> <button class="leading-none cta-button-content-page-pf-primary-cta-in-layout pf-cta pf-cta-form btn btn-md bg-[#005aff] border-[#005aff] cursor-pointer text-on-primary hover:bg-primary-600 focus:ring-[#005aff] pf_font_preset_6 rounded-[6px]" data-pf-theme-artefact-id="cta-form" data-pf-theme-block-id="pf-primary-cta-in-layout" data-pf-theme-block-type="component" data-pf-theme-block-ref="cta" data-pf-theme-block-label="Request a callback" aria-label="Request a callback" > Request a callback </button> <div class="pf-modal modal-content-page-pf-primary-cta-in-layout max-w-full relative z-[10000]" aria-labelledby="modal-title" role="dialog" aria-modal="true" id="pf-modal" style="display: none;" > <div class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity"></div> <div class="fixed inset-0 z-10 overflow-y-auto"> <div class="flex flex-row min-h-full items-end justify-center p-4 pt-10 sm:items-start"> <div class="modal-content relative max-w-full"> <div class="pf-form w-[440px] max-w-full h-full flex flex-col justify-center items-center bg-[#FFFFFF] bg-[url('')] bg-no-repeat bg-cover bg-center text-[#000000] " data-pf-theme-artefact-id="form-external" data-pf-theme-form-library-id="21512" data-pf-theme-block-id="pf-primary-cta-in-layout" data-pf-theme-block-type="component" data-pf-theme-block-ref="form" data-pf-theme-modal-type="" > <iframe sandbox="allow-forms allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-top-navigation allow-downloads" class="pf-form-iframe--pf-primary-cta-in-layout px-[25px] pb-[25px] rounded-b w-full block m-0 h-[450px] border-none bg-[rgba(255,255,255,0)]" src="https://pages.nokia.com/Contact-Us-T0169L.html?extid=T01674" > </iframe> </div> <div class="embed-form-submitted-message form-submitted-message flex flex-col justify-center items-center w-[400px] min-w-[400px] h-[500px] bg-[white]" style="display: none;" > <i class="fa-regular fa-circle-check text-[100px] text-[#00FF00]"></i> <div class="text-[35px] font-bold">Thank you!</div> <div class="text-md">Your submission has been sent.</div> </div> <button class="modal-close-button-content-page-pf-primary-cta-in-layout w-[35px] h-[35px] flex justify-center items-center absolute top-0 right-0 hover:brightness-70" aria-label="Close"> <i class="fa fa-close text-[#005aff]" style="font-size:20px"></i> </button> </div> </div> </div> </div> <script> document.querySelector(".modal-close-button-content-page-pf-primary-cta-in-layout").addEventListener("click", (event) => { window.closeForm({ formType: "external", formData: { value: "pf_cta_form", ctaId: "pf-primary-cta-in-layout" } }); document.querySelector(".modal-content-page-pf-primary-cta-in-layout").style.display = "none"; }); </script> <script> document.querySelector(".cta-button-content-page-pf-primary-cta-in-layout").addEventListener("click", () => { document.querySelector(".modal-content-page-pf-primary-cta-in-layout").style.display = "block"; window.showForm({ formType: "external", formData: { value: "pf_cta_form", ctaId: "pf-primary-cta-in-layout" } }); (window.pfVideoPlayers || []).forEach((player) => { player.pause(); }) }); </script> </div> </div> </div> </section> <div class="pf-resource-center-filters filters-container flex justify-start flex-wrap flex-col border-b-1 border-white"> </div> <div class="no-results pf-no-results hidden text-md text-center w-full p-15">No results match the search/filter criteria</div> <ul role="list" class="assets-content-page pf-cards-wrapper grow-[1] overflow-y-auto divide-y divide-gray-200"> <li class="asset pf-content-card hover:bg-[rgba(50,50,50,0.25)] template flex h-24 px-4 py-5 " style="display: none;" data-is-pinned="" data-topics="" data-title="" data-language="" data-personas="" data-business-units="" data-industries="" data-products="" data-solutions="" data-content-type="" data-funnel-stages="" data-uuid="" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: }) " class="pf-content-card-link flex items-center justify-between space-x-3" href=""> <div class="relative w-[64px] h-fit rounded-[9px] border border-gray-200 overflow-hidden"> <img src="" alt="" class="pf-content-card-thumbnail object-cover w-full aspect-[16/9]" > <span class="pf-pinned-content-tag absolute bottom-0 w-full text-center text-[9px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured </span> </div> <div class="flex-1 min-w-0"> <p class="pf-content-card-title pf_font_preset_7 text-[#000000] line-clamp-3"> </p> </div> </a> </li> <li class="asset pf-content-card hover:bg-[rgba(50,50,50,0.25)] flex h-24 px-4 py-5 " style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 1: Day off" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="2b58c443-72db-4bac-80f7-e138d1d9e9d9" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832111}) " class="pf-content-card-link flex items-center justify-between space-x-3" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep1?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="relative w-[64px] h-fit rounded-[9px] border border-gray-200 overflow-hidden"> <img src="https://cdn.pathfactory.com/assets/10445/thumbnails/973599/1a885b32-9417-4aaa-9647-e14489c2f258.png" alt="The game is afoot - Episode 1: Day off" class="pf-content-card-thumbnail object-cover w-full aspect-[16/9]" > <span class="pf-pinned-content-tag absolute bottom-0 w-full text-center text-[9px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured </span> </div> <div class="flex-1 min-w-0"> <p class="pf-content-card-title pf_font_preset_7 text-[#000000] line-clamp-3"> The game is afoot - Episode 1: Day off </p> </div> </a> </li> <li class="asset pf-content-card hover:bg-[rgba(50,50,50,0.25)] flex h-24 px-4 py-5 " style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceSecurityAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 2: Hook, line, sinker" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="a2d859e5-c010-4107-9d34-c63236aebb44" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832118}) " class="pf-content-card-link flex items-center justify-between space-x-3" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep2?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="relative w-[64px] h-fit rounded-[9px] border border-gray-200 overflow-hidden"> <img src="https://cdn.pathfactory.com/assets/10445/thumbnails/973598/025f6b3d-594e-405f-b67f-246b4fe510db.png" alt="The game is afoot - Episode 2: Hook, line, sinker" class="pf-content-card-thumbnail object-cover w-full aspect-[16/9]" > <span class="pf-pinned-content-tag absolute bottom-0 w-full text-center text-[9px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured </span> </div> <div class="flex-1 min-w-0"> <p class="pf-content-card-title pf_font_preset_7 text-[#000000] line-clamp-3"> The game is afoot - Episode 2: Hook, line, sinker </p> </div> </a> </li> <li class="asset pf-content-card hover:bg-[rgba(50,50,50,0.25)] flex h-24 px-4 py-5 " style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceSecurityAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 3: Spinning reel" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="c7a917b6-7daf-4fab-9b32-b93e3914282a" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832119}) " class="pf-content-card-link flex items-center justify-between space-x-3" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep3?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="relative w-[64px] h-fit rounded-[9px] border border-gray-200 overflow-hidden"> <img src="https://cdn.pathfactory.com/assets/10445/thumbnails/973601/7e0c7d3c-557d-4c82-b513-0c85f6ec7305.png" alt="The game is afoot - Episode 3: Spinning reel" class="pf-content-card-thumbnail object-cover w-full aspect-[16/9]" > <span class="pf-pinned-content-tag absolute bottom-0 w-full text-center text-[9px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured </span> </div> <div class="flex-1 min-w-0"> <p class="pf-content-card-title pf_font_preset_7 text-[#000000] line-clamp-3"> The game is afoot - Episode 3: Spinning reel </p> </div> </a> </li> <li class="asset pf-content-card hover:bg-[rgba(50,50,50,0.25)] flex h-24 px-4 py-5 " style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceSecurityAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 4: Quantum catch" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="cf57292c-51a5-4fa9-9f69-6a75ef2646a2" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832121}) " class="pf-content-card-link flex items-center justify-between space-x-3" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep4?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="relative w-[64px] h-fit rounded-[9px] border border-gray-200 overflow-hidden"> <img src="https://cdn.pathfactory.com/assets/10445/thumbnails/973602/2d5eaf01-c322-4965-8933-cf8c3bc79e7b.png" alt="The game is afoot - Episode 4: Quantum catch" class="pf-content-card-thumbnail object-cover w-full aspect-[16/9]" > <span class="pf-pinned-content-tag absolute bottom-0 w-full text-center text-[9px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured </span> </div> <div class="flex-1 min-w-0"> <p class="pf-content-card-title pf_font_preset_7 text-[#000000] line-clamp-3"> The game is afoot - Episode 4: Quantum catch </p> </div> </a> </li> <div class="pf-load-more w-full flex justify-center pt-[15px]"> <button class="bg-[] hover:bg-[] text-[] p-[10px] rounded-[10px]" onclick="pfGetContentPageContents({ isLoadMore: true, sectionNodeId: 'content-page', updateParams: { page: (window.pfResourceCenterParams?.['content-page']?.page ?? 1) + 1, limit: 10 }})" > Load More </button> </div> </ul> <section> <div class=" mt-3 "> <div class="items-center flex flex-col justify-center"> </div> </div> </section> </aside> <div id="sidebar-contents-content-page" class="z-[1000] fixed bottom-[calc(50px-340px)] left-0 h-[340px] w-full transition-[bottom] ease-in-out duration-300 md:hidden bg-white"> <div id="sidebar-contents-content-page-title" class="w-full px-5 flex justify-between items-center h-[50px] text-[#000000] pf_font_preset_7 bg-[#FFFFFF] " > <span>Read More </span> <button aria-label="Expand" class="fa-solid fa-chevron-up"></button> </div> <div class="w-full flex justify-center h-full"> <div x-data="{ activeTab: 'contents' }" class="pf-resource-center-filters w-full flex flex-col items-center"> <div x-show="activeTab == 'contents'" class="w-full flex justify-center"> <div class="no-results pf-no-results hidden text-md text-center w-full p-15">No results match the search/filter criteria</div> <div class="pf-bottombar-scroller flex overflow-x-scroll snap-mandatory snap-x pt-[20px]"> <div class="assets-content-page pf-cards-wrapper flex w-full"> <div class="asset pf-content-card template snap-center shrink-0 flex justify-center max-w-[280px] w-[85%] h-full mb-8 mx-[5px]" style="display: none;" data-is-pinned="" data-topics="" data-title="" data-language="" data-personas="" data-business-units="" data-industries="" data-products="" data-solutions="" data-content-type="" data-funnel-stages="" data-uuid="" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: }) " class="pf-content-card-link relative block group max-w-[280px] h-fit" href=""> <div class="rounded-t-md h-[50px] p-[8px] flex items-center bg-[#FFFFFF] "> <div class="pf-content-card-title line-clamp-2 pf_font_preset_7 text-[#000000]"> </div> </div> <img class="pf-content-card-thumbnail object-cover w-full mb-4 aspect-[16/9] border border-gray-200 rounded-b-md" src="" alt="" > <span class="pf-pinned-content-tag absolute bottom-[15px] rounded-b-md w-full text-center text-[12px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured <i class="fa fa-star" aria-hidden="true"></i> </span> </a> </div> <div class="asset pf-content-card snap-center shrink-0 flex justify-center max-w-[280px] w-[85%] h-full mb-8 mx-[5px]" style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 1: Day off" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="2b58c443-72db-4bac-80f7-e138d1d9e9d9" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832111}) " class="pf-content-card-link relative block group max-w-[280px] h-fit" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep1?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="rounded-t-md h-[50px] p-[8px] flex items-center bg-[#FFFFFF] "> <div class="pf-content-card-title line-clamp-2 pf_font_preset_7 text-[#000000]"> The game is afoot - Episode 1: Day off </div> </div> <img class="pf-content-card-thumbnail object-cover w-full mb-4 aspect-[16/9] border border-gray-200 rounded-b-md" src="https://cdn.pathfactory.com/assets/10445/thumbnails/973599/1a885b32-9417-4aaa-9647-e14489c2f258.png" alt="The game is afoot - Episode 1: Day off" > <span class="pf-pinned-content-tag absolute bottom-[15px] rounded-b-md w-full text-center text-[12px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured <i class="fa fa-star" aria-hidden="true"></i> </span> </a> </div> <div class="asset pf-content-card snap-center shrink-0 flex justify-center max-w-[280px] w-[85%] h-full mb-8 mx-[5px]" style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceSecurityAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 2: Hook, line, sinker" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="a2d859e5-c010-4107-9d34-c63236aebb44" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832118}) " class="pf-content-card-link relative block group max-w-[280px] h-fit" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep2?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="rounded-t-md h-[50px] p-[8px] flex items-center bg-[#FFFFFF] "> <div class="pf-content-card-title line-clamp-2 pf_font_preset_7 text-[#000000]"> The game is afoot - Episode 2: Hook, line, sinker </div> </div> <img class="pf-content-card-thumbnail object-cover w-full mb-4 aspect-[16/9] border border-gray-200 rounded-b-md" src="https://cdn.pathfactory.com/assets/10445/thumbnails/973598/025f6b3d-594e-405f-b67f-246b4fe510db.png" alt="The game is afoot - Episode 2: Hook, line, sinker" > <span class="pf-pinned-content-tag absolute bottom-[15px] rounded-b-md w-full text-center text-[12px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured <i class="fa fa-star" aria-hidden="true"></i> </span> </a> </div> <div class="asset pf-content-card snap-center shrink-0 flex justify-center max-w-[280px] w-[85%] h-full mb-8 mx-[5px]" style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceSecurityAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 3: Spinning reel" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="c7a917b6-7daf-4fab-9b32-b93e3914282a" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832119}) " class="pf-content-card-link relative block group max-w-[280px] h-fit" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep3?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="rounded-t-md h-[50px] p-[8px] flex items-center bg-[#FFFFFF] "> <div class="pf-content-card-title line-clamp-2 pf_font_preset_7 text-[#000000]"> The game is afoot - Episode 3: Spinning reel </div> </div> <img class="pf-content-card-thumbnail object-cover w-full mb-4 aspect-[16/9] border border-gray-200 rounded-b-md" src="https://cdn.pathfactory.com/assets/10445/thumbnails/973601/7e0c7d3c-557d-4c82-b513-0c85f6ec7305.png" alt="The game is afoot - Episode 3: Spinning reel" > <span class="pf-pinned-content-tag absolute bottom-[15px] rounded-b-md w-full text-center text-[12px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured <i class="fa fa-star" aria-hidden="true"></i> </span> </a> </div> <div class="asset pf-content-card snap-center shrink-0 flex justify-center max-w-[280px] w-[85%] h-full mb-8 mx-[5px]" style="" data-is-pinned="false" data-topics="Digital OperationsNetwork securitySoftware as a serviceSecurityAnalytics5G securityCybersecurity" data-title="The game is afoot - Episode 4: Quantum catch" data-language="English" data-personas="" data-business-units="CNS X-Portfolio" data-industries="" data-products="" data-solutions="" data-content-type="Video 3+ min" data-funnel-stages="Top of Funnel" data-uuid="cf57292c-51a5-4fa9-9f69-6a75ef2646a2" > <a onclick=" window['initializeContentEvents'] && typeof window['initializeContentEvents'] === 'function' && window.initializeContentEvents('contentClick', {contentId: 832121}) " class="pf-content-card-link relative block group max-w-[280px] h-fit" href="https://pf.content.nokia.com/the-game-is-afoot/col/t01675-the-game-is-afoot/the-game-is-afoot-ep4?pflpid=28247&pfsid=BLJsmNp95Z"> <div class="rounded-t-md h-[50px] p-[8px] flex items-center bg-[#FFFFFF] "> <div class="pf-content-card-title line-clamp-2 pf_font_preset_7 text-[#000000]"> The game is afoot - Episode 4: Quantum catch </div> </div> <img class="pf-content-card-thumbnail object-cover w-full mb-4 aspect-[16/9] border border-gray-200 rounded-b-md" src="https://cdn.pathfactory.com/assets/10445/thumbnails/973602/2d5eaf01-c322-4965-8933-cf8c3bc79e7b.png" alt="The game is afoot - Episode 4: Quantum catch" > <span class="pf-pinned-content-tag absolute bottom-[15px] rounded-b-md w-full text-center text-[12px] bg-[#005aff] text-[#ffffff]" style="display: none;" > Featured <i class="fa fa-star" aria-hidden="true"></i> </span> </a> </div> </div> </div> <script> document.querySelector(".pf-bottombar-scroller").addEventListener("scroll", pfDebounce((event) => { const scrollableWidth = event.target.scrollWidth - event.target.clientWidth; const loadedContentsCount = Array.from(document.querySelectorAll(".pf-bottombar-scroller .pf-content-card")).length - 1; const totalContents = window.pfResourceCenterParams?.["content-page"]?.totalContents || 0; if (event.target.scrollLeft >= scrollableWidth - 1 && loadedContentsCount < totalContents) { pfGetContentPageContents({ isLoadMore: true, sectionNodeId: 'content-page', updateParams: { page: (window.pfResourceCenterParams?.['content-page']?.page ?? 1) + 1, limit: 10 } }); } }, 500)); </script> </div> <div x-show="activeTab == 'filters'" class="mobile-filters-container flex flex-col w-full overflow-scroll grow max-h-[260px]"> </div> </div> </div> </div> <script> document.querySelector("#sidebar-contents-content-page-title").onclick = (e) => { const bottombar = document.querySelector("#sidebar-contents-content-page"); const bottombarTitleIcon = document.querySelector("#sidebar-contents-content-page-title > i"); if (bottombar.style.bottom == "0px") { bottombar.style.bottom = "" bottombar.classList.add("bottom-calc(50px-340px)"); bottombarTitleIcon.setAttribute("class", "fa-solid fa-chevron-up"); } else { bottombar.classList.remove("bottom-calc(50px-340px)"); bottombar.style.bottom = "0px"; bottombarTitleIcon.setAttribute("class", "fa-solid fa-chevron-down"); } (() => { const allContents = Array.from(document.querySelectorAll(".pf-bottombar-scroller .pf-content-card")); const currentContentIndex = allContents.findIndex((c) => c.dataset.uuid.includes("a2d859e5-c010-4107-9d34-c63236aebb44")); const nextIndex = currentContentIndex > -1 ? currentContentIndex + 1 : 0; const nextContent = allContents[currentContentIndex + 1] || allContents[0]; nextContent.scrollIntoView(); })(); } </script> <div class="overflow-auto pf-content-wrapper absolute h-full w-full md:w-[calc(100%-16rem)] lg:w-[calc(100%-18rem)] right-0"> <div class="flex flex-col items-center absolute md:left-[calc(50%-16rem)] lg:left-[calc(50%-18rem)] top-[2%]"> <div id="video-tooltip" class="flex items-center w-full max-w-sm p-4 text-white bg-black shadow opacity-70 mb-1 z-[999] hidden" role="alert"> <div class="ms-3 text-sm font-normal">Video is muted due to browser restrictions. Adjust the volume on the video player to unmute.</div> <button id="video-tooltip-close-icon" type="button" class="ms-auto -mx-1.5 -my-1.5 bg-black text-white rounded-lg p-1.5 hover:cursor-pointer inline-flex items-center justify-center h-8 w-8" data-dismiss-target="#video-tooltip" aria-label="Close"> <span class="sr-only">Close</span> <svg class="w-3 h-3" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 14"> <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"></path> </svg> </button> </div> <div id="video-captions" class="flex items-center w-full max-w-sm p-4 text-white bg-black shadow opacity-70 mb-1 z-[999] hidden" role="alert"> <div class="ms-3 text-sm font-normal">Selected language is not available in captions.</div> <button id="video-captions-close-icon" type="button" class="ms-auto -mx-1.5 -my-1.5 bg-black text-white rounded-lg p-1.5 hover:cursor-pointer inline-flex items-center justify-center h-8 w-8" data-dismiss-target="#video-captions" aria-label="Close"> <span class="sr-only">Close</span> <svg class="w-3 h-3" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 14"> <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"></path> </svg> </button> </div> </div> <div style="aspect-ratio: 16/9; width: 100%; height: auto;"> <div id="pf-video-video-container" class="w-full pf-video pf-video-video-container h-fit aspect-video bg-black"></div> </div> <script> // preventing accessing variables within the IIFE idiom as well as polluting the global scope to support multiple videos on the same page (() => { const container = document.querySelector(".pf-video-video-container"); const getVideoDetails = (url = "") => { const urlObject = new URL(url); const videoTypes = { "youtube.com": "youtube", "youtu.be": "youtube", "embed.vidyard.com": "vidyard", "play.vidyard.com": "vidyard", "share.vidyard.com": "vidyard", "video.vidyard.com": "vidyard", "vimeo.com": "vimeo", "slideshare.net": "slideshare", "wistia.com": "wistia", "wistia.net": "wistia", "brightcove.net": "brightcove", "brightcove.com": "brightcove", "parmonic.ai": "parmonic", "limelight.com": "limelight" }; const videoType = Object.entries(videoTypes).find(([key, value]) => urlObject.host.match(key))?.[1] || ""; const mediaId = urlObject.searchParams.get("mediaId") || ""; const channelId = urlObject.searchParams.get("channelId") || ""; const videoId = ((pathParts) => { if (pathParts.length === 4) { return `${pathParts[2]/pathParts[3]}`; } else { return pathParts[pathParts.length - 1]; } })(urlObject.pathname.split("/")); return ({ url, videoType, embedHash: { mediaId, // for limelight channelId, // for limelight videoId // for parmonic } }); }; const url = "https://www.youtube.com/watch?v=OxWpTkGZ9Xo"; const videoDetails = getVideoDetails(url); const isContentPage = "true" === "true"; const videoStartTime = "0"; const videoType = "youtube" || videoDetails.videoType; let isPlayerInitialised = false; if (!Array.isArray(window.pfVideoPlayers)) { window.pfVideoPlayers = []; } const retryHandler = (methodToRetry, params) => { const retryMethod = retryCount => { setTimeout(() => { if (window[methodToRetry] && typeof window[methodToRetry] === "function") { window[methodToRetry](params); } else if (retryCount < 5) { retryCount++; retryMethod(retryCount); } }, 1000); }; retryMethod(0); }; const autoPlay = "false" === "true"; const showVideoToolTip = () => { const videoTooltipElement = document.querySelector('#video-tooltip'); if (videoTooltipElement) { videoTooltipElement.classList.remove('hidden'); } }; const hideVideoToolTip = () => { const videoTooltipElement = document.querySelector('#video-tooltip'); if (videoTooltipElement) { videoTooltipElement.classList.add('hidden'); } }; const showCaptionsToolTip = () => { const captionsTooltipElement = document.querySelector('#video-captions'); if (captionsTooltipElement) { captionsTooltipElement.classList.remove('hidden'); } }; const hideCaptionsToolTip = () => { const captionsTooltipElement = document.querySelector('#video-captions'); if (captionsTooltipElement) { captionsTooltipElement.classList.add('hidden'); } }; const videoTooltipCloseIcon = document.querySelector('#video-tooltip-close-icon'); videoTooltipCloseIcon.addEventListener('click', hideVideoToolTip); const captionsTooltipCloseIcon = document.querySelector('#video-captions-close-icon'); captionsTooltipCloseIcon.addEventListener('click', hideCaptionsToolTip); const hideVideo = () => { const vidEl = document.querySelector(".pf-video-video-container"); vidEl.style.height = "200px" vidEl.innerHTML = "<p style='color: red; margin-left: 25%; padding-top: 90px'>**Video is unavailable</p>"; }; if (videoType === "brightcove") { const MATCH_URL_BRIGHTCOVE = /(?:players\.brightcove\.net)\/([0-9]+)\/([a-zA-Z0-9]+)_([a-zA-Z0-9]+)\/index\.html(?:\?videoId=|\?.+&videoId=)([0-9]+)/; const [ , accountId, playerId, embedId, videoId ] = url && url.match(MATCH_URL_BRIGHTCOVE); brightcovePlayerLoader({ refNode: container, embedOptions: { tagName: "video" }, embedType: "in-page", accountId, playerId, embedId, videoId }).then(({ref}) => { var myPlayer = ref; window.pfVideoPlayers.push(myPlayer); myPlayer.on('loadedmetadata', function () { myPlayer.currentTime(videoStartTime); if (autoPlay) { myPlayer.muted(true); myPlayer.play(); if (isContentPage) showVideoToolTip(); } else { myPlayer.pause(); } const language = "false" === "true" ? "en" : null; const availableTracks = myPlayer.textTracks(); const enableCaption = "false" === "true" const availableLanguages = availableTracks ? Object.values(availableTracks).length > 0 ? Object.values(availableTracks)[0].map(item => item.language.substr(0, 2) ) : [] : []; if (enableCaption) { for (let i = 0; i < availableTracks.length; i++) { if (availableTracks[i].language.substr(0, 2) === language) { availableTracks[i].mode = "showing"; } else { availableTracks[i].mode = "disabled"; } } if (enableCaption && availableLanguages.find(lang => lang === language) === undefined) { showCaptionsToolTip(); } } }); retryHandler("setPlayer", myPlayer); } ); } else if (videoType === "parmonic") { const videoElement = document.querySelector("#pf-video-video-container"); videoElement.dataset.vId = `${videoDetails?.embedHash?.videoId}`; videoElement.dataset.layout = "single"; videoElement.classList.add("parmonic-widget"); const initializePlayer = (count = 0) => { const player = container.querySelector("video"); if (!player && count <= 10) { setTimeout(() => initializePlayer(count + 1), 500); } if (player) { if (autoPlay) { container.querySelector("button[aria-label='Mute Video']").click(); player.muted = true; player.currentTime = 0; player.play(); if (isContentPage) showVideoToolTip(); const unmuteVideo = () => { player.muted = false; container.removeEventListener("click", unmuteVideo); }; container.addEventListener("click", unmuteVideo); } else { player.currentTime = 0; player.pause(); } window.pfVideoPlayers.push(player); } }; initializePlayer(); } else if (videoType === "limelight") { LimelightPlayerUtil.embed({ "width":"100%", "height":"100%", "playerForm":"Player", "playerId":"pf-video-video-container", "mediaId":"" || videoDetails.embedHash.mediaId, "channelId":"" || videoDetails.embedHash.channelId, "enableInfoButton":true, "deepLink":true }); const initializePlayer = (count = 0) => { const player = container.querySelector("video"); if (!player && count <= 10) { setTimeout(() => initializePlayer(count + 1), 500); } if (player) { player.currentTime = 0; if (autoPlay) { player.muted = true; player.play(); if (isContentPage) showVideoToolTip(); } else { player.pause(); } window.pfVideoPlayers.push(player); } }; initializePlayer(); } else { const render = (opts) => renderReactPlayer(container, opts); const options = { url, playing: autoPlay, muted: autoPlay, playsinline: true, controls: true, width: "100%", height: "auto", config: { youtube: { playerVars: { fs: 1, cc_lang_pref: "false" === "true" ? "en" : null, cc_load_policy: "false" === "true" ? 1 : 0, start: videoStartTime }, }, vimeo: { playerOptions: { texttrack: "false" === "true" ? "en": null } } }, style: { aspectRatio: "16/9" }, onReady: function (event) { if (!isPlayerInitialised) { retryHandler("setPlayer", event); isPlayerInitialised = true; if (autoPlay) { if (isContentPage) showVideoToolTip(); } if (videoType === "wistia") { if (videoStartTime !== "0") { event?.player?.seekTo(videoStartTime); } } else if (videoType !== "youtube") { event?.player?.seekTo(videoStartTime); } const captionCode = "false" === "true" ? "en": null; const isVimeo = videoType === "vimeo" if (isVimeo && captionCode) { const player = event?.getInternalPlayer(); if (player) { player.getTextTracks().then(response => { const textTracks = response; const hasCaptionForLanguage = textTracks?.some(track => track?.language === captionCode); if (!hasCaptionForLanguage) { showCaptionsToolTip(); } }); } } const isVidyard = videoType === "vidyard"; if (isVidyard && captionCode) { const player = event?.getInternalPlayer(); const textTracks = player?.metadata?.chapters_attributes?.[0]?.video_attributes?.captions || []; const captionData = textTracks?.find(track => track?.language === captionCode); if (captionData) { player?.enableCaption(captionData?.name, captionData?.language); } else { showCaptionsToolTip(); } } } } }; render(options); window.pfVideoPlayers.push({ play: () => render({...options, playing: true}), pause: () => render({...options, playing: false}) }); } retryHandler("initializeMediaTracker", { url: "https://www.youtube.com/watch?v=OxWpTkGZ9Xo", video_type: videoType, content_uuid: "a2d859e5-c010-4107-9d34-c63236aebb44" }); })(); </script> </div> </div> <script> pfGetFilters("content-page"); document.addEventListener("pageMetadataUpdated", (event) => { if (event.detail !== "content-page") return; const params = new URLSearchParams(window.location.search); const totalContents = window.pfResourceCenterParams?.["content-page"]?.totalContents; const currentContents = document.querySelector(".pf-cards-wrapper").querySelectorAll(".pf-content-card:not(.template)"); const currentPage = Math.ceil(currentContents.length / 10); const totalPages = Math.ceil(totalContents / 10); const lazyLoadButton = document.querySelector(".pf-load-more"); if (lazyLoadButton && (totalPages <= currentPage || totalContents === 0)) { lazyLoadButton.style.display = 'none'; } else if (lazyLoadButton) { lazyLoadButton.style.display = ""; } }); document.querySelectorAll(".pf-content-card").forEach((c) => { if (c.dataset.uuid === "a2d859e5-c010-4107-9d34-c63236aebb44") { c.querySelector(".pf-content-card-title").style.fontWeight = "bold"; } }); </script> <script> (() => { const pfOriginalDocumentTitle = document.title; let pfInactivityIntervalId = ""; document.addEventListener("visibilitychange", () => { if(document.visibilityState === "hidden") { setTimeout(() => { document.title = "Are you still there?"; pfInactivityIntervalId = setInterval(() => { document.title = document.title === pfOriginalDocumentTitle ? "Are you still there?" : pfOriginalDocumentTitle; }, 3000); }, 1000); } else { clearInterval(pfInactivityIntervalId); document.title = pfOriginalDocumentTitle; } }); })(); </script> <script> const pfExperienceFormStrategy = `` ? JSON.parse(``) : null; const pfContentFormStrategy = `` ? JSON.parse(``) : null; const pfExperienceFormPresent = false; const pfContentFormPresent = false; const pfExperienceFormModalSelector = ".modal-pf-experience-form-strategy"; const pfContentFormModalSelector = ".modal-pf-content-form-strategy"; const pfVisitorKnown = false; const pfIsLandingPage = false; const pfExperienceFormModal = pfExperienceFormPresent && document.querySelector(pfExperienceFormModalSelector); const pfContentFormModal = pfContentFormPresent && document.querySelector(pfContentFormModalSelector); if (pfExperienceFormPresent || pfContentFormPresent) { setInterval(() => { document.dispatchEvent(new CustomEvent("pf_page_ping", { detail: { interval: 5 }, })); }, 5000); } const pfFormConditionsMet = ({ formModal, config, toggleModal = false, pdfButtonClick = false }) => { if (!config) { return false; } if (window.pdfFormModalOpen) { return false; } const currentSession = JSON.parse(localStorage.getItem("pfCurrentSession") || "{}"); const knownVisitorCondition = config.show_to_known_visitors && pfVisitorKnown; const unknownVisitorCondition = config.show_to_unknown_visitors && !pfVisitorKnown; const formSubmittedAlready = JSON.parse(localStorage.getItem("pfSubmittedForms") || "[]").filter((sf) => { return ( sf.experienceId == "186752" && sf.formId == config.form_id ); }).length > 0; const submittedShowAgainCondition = config.submitted_show_again || !formSubmittedAlready; const formNotDismissed = JSON.parse(localStorage.getItem("pfDismissedForms") || "[]").filter((df) => { return ( df.experienceId == "186752" && df.formId == config.form_id ); }).length == 0; const visibleModal = Array.from(document.querySelectorAll(".pf-modal")).filter((m) => m.style.display !== "none").length > 0; const show = pdfButtonClick || (knownVisitorCondition || unknownVisitorCondition) && submittedShowAgainCondition && formNotDismissed && !visibleModal; if (toggleModal && formModal) { formModal.style.display = show ? "block" : "none"; formModal.style.opacity = 0; setTimeout(() => formModal.style.opacity = show ? 1 : 0, 500); if (show) { if (!pdfButtonClick) { window.pfFormsShown = [...new Set((window.pfFormsShown || []).concat([config.form_id]))]; } (window.pfVideoPlayers || []).forEach((player) => { player.pause(); }); window.showForm({ formType: pfContentFormPresent ? "" : "", formData: { value: pfContentFormPresent ? "content_form_strategy" : "experience_form_strategy" } }); } } return show; }; const pdfButtonHandler = (e) => { e.preventDefault(); pfFormConditionsMet({ formModal: pfContentFormModal, config: pfContentFormStrategy, toggleModal: true, pdfButtonClick: true, }); setTimeout(() => window.pdfFormModalOpen = e?.target?.id, 0); } const getPdfElements = () => { const pfPrint = document.getElementById("print_pf"); const pfDownload = document.getElementById("download_pf"); const printBtn = document.getElementById("print"); const downloadBtn = document.getElementById("download"); if (!pfPrint || !pfDownload || !printBtn || !downloadBtn) { return false; } return { pfPrint, pfDownload, printBtn, downloadBtn } } const switchPdfButtons = ({ showCustomButtons, config }) => { const pdfElements = getPdfElements(); if (!pdfElements) { return; } const { pfPrint, pfDownload, printBtn, downloadBtn } = pdfElements; if (showCustomButtons) { const { show_on_print, show_on_download } = config; if (show_on_print) { pfPrint.style.display = "inline-block"; printBtn.style.display = "none"; pfPrint.addEventListener("click", pdfButtonHandler); window.originalPrint = window.print; window.print = () => {}; } if (show_on_download) { pfDownload.style.display = "inline-block"; downloadBtn.style.display = "none"; pfDownload.addEventListener("click", pdfButtonHandler); } } else { pfPrint.style.display = "none"; pfDownload.style.display = "none"; printBtn.style.display = "inline-block"; downloadBtn.style.display = "inline-block"; [pfPrint, pfDownload].forEach(button => { button.removeEventListener('click', pdfButtonHandler); }); } } const pfPdfFormConditionsMet = ({ config }) => { if (!config) { return false; } const { show_on_print, show_on_download } = config; if (!show_on_print && !show_on_download) { return; } const knownVisitorCondition = config.show_to_known_visitors && pfVisitorKnown; const unknownVisitorCondition = config.show_to_unknown_visitors && !pfVisitorKnown; const formSubmittedAlready = JSON.parse(localStorage.getItem("pfSubmittedForms") || "[]").filter((sf) => { return ( sf.experienceId == "186752" && sf.formId == config.form_id ); }).length > 0; const submittedShowAgainCondition = config.submitted_show_again || !formSubmittedAlready; const showForm = (knownVisitorCondition || unknownVisitorCondition) && submittedShowAgainCondition; switchPdfButtons({ showCustomButtons: showForm, config }); }; const isBypassEngagementEnabled = (config) => { const { enable_bypass_engagement, show_on_download, show_on_print, } = config; if (!getPdfElements()) { return false; } return enable_bypass_engagement && (show_on_download || show_on_print); }; const resumePdfActions = (modal) => { return new Promise((resolve, reject) => { let counter = 0; const modalCloseInterval = setInterval(() => { try { if (modal.style.display === "none" || counter > 10) { clearInterval(modalCloseInterval); if (window.pdfFormModalOpen) { if (window.pdfFormModalOpen === "print_pf") { if (window.originalPrint) { window.print = window.originalPrint; } window.PDFViewerApplication?.triggerPrinting(); } else if (window.pdfFormModalOpen === "download_pf") { window.PDFViewerApplication?.downloadOrSave(); } } window.pdfFormModalOpen = false; pfPdfFormConditionsMet({ config: pfContentFormStrategy }); resolve(); } else { counter++; } } catch (error) { clearInterval(modalCloseInterval); reject(error); } }, 500); }); }; const pfContentFormStrategyEligible = pfContentFormPresent && pfFormConditionsMet({ config: pfContentFormStrategy }); const pfExperienceFormStrategyEligible = pfExperienceFormPresent && pfFormConditionsMet({ config: pfExperienceFormStrategy }); const pfActiveFormStrategy = (pfContentFormStrategyEligible && "contentStrategy") || (pfExperienceFormStrategyEligible && "experienceStrategy"); const promotersClickable = (pfActiveFormStrategy === "experienceStrategy" && pfExperienceFormStrategy.promoters_clickable) || (pfActiveFormStrategy === "contentStrategy" && pfContentFormStrategy.promoters_clickable); pfContentFormPresent && pfPdfFormConditionsMet({ config: pfContentFormStrategy }); const pfUpdateEngagementTimes = (pagePing) => { const engagementTimes = JSON.parse(localStorage.getItem("pfExperienceEngagement") || "[]"); const engagementTimeIndex = engagementTimes.findIndex((et) => { return et.experienceId == "186752" }); let contentEngagementIndex = -1; const contentEngagements = engagementTimes[engagementTimeIndex]?.contentEngagements || []; const contentEngagement = contentEngagements.find((ce, i) => { if (ce.contentId == "832118") { contentEngagementIndex = i; return true; } }) || {}; const newContentEngagement = { ...contentEngagement, contentId: "832118", duration: (contentEngagement.duration || 0) + pagePing.interval }; const updatedEngagementTime = { experienceId: "186752", duration: (engagementTimeIndex > -1 ? engagementTimes[engagementTimeIndex].duration : 0) + pagePing.interval, contents: engagementTimeIndex > -1 ? [...new Set(engagementTimes[engagementTimeIndex].contents.concat(["832118"]))] : ["832118"], contentEngagements: contentEngagementIndex > -1 ? contentEngagements.map((ce) => ce.contentId == "832118" ? newContentEngagement : ce) : [...contentEngagements, newContentEngagement] }; if (engagementTimeIndex > -1) { engagementTimes[engagementTimeIndex] = updatedEngagementTime; } else { engagementTimes.push(updatedEngagementTime); } localStorage.setItem("pfExperienceEngagement", JSON.stringify(engagementTimes)); localStorage.setItem("pfCurrentSession", JSON.stringify(updatedEngagementTime)); if (pfActiveFormStrategy === "experienceStrategy") { const assetsViewedCondition = updatedEngagementTime.contents.length >= pfExperienceFormStrategy.assets_viewed && updatedEngagementTime.duration >= pfExperienceFormStrategy.assets_viewed_time; const timeOnExperienceCondition = updatedEngagementTime.duration >= pfExperienceFormStrategy.time_on_experience; const formNotYetShown = (window.pfFormsShown || []).indexOf(pfExperienceFormStrategy.form_id) == -1; if ( (pfExperienceFormStrategy.form_trigger_type !== "assetsViewed" || assetsViewedCondition) && (pfExperienceFormStrategy.form_trigger_type !== "timeOnExperience" || timeOnExperienceCondition) && formNotYetShown ) { pfFormConditionsMet({ config: pfExperienceFormStrategy, formModal: pfExperienceFormModal, toggleModal: true }); } } if (pfActiveFormStrategy === "contentStrategy") { const timeOnContentCondition = (newContentEngagement.duration >= pfContentFormStrategy.show_after_time) && !isBypassEngagementEnabled(pfContentFormStrategy); const formNotYetShown = (window.pfFormsShown || []).indexOf(pfContentFormStrategy.form_id) == -1; if (timeOnContentCondition && formNotYetShown) { pfFormConditionsMet({ formModal: pfContentFormModal, config: pfContentFormStrategy, toggleModal: true }) } } }; if (promotersClickable) { const pfPromoter = document.querySelector("#sidebar"); if (pfPromoter) { pfPromoter.style["z-index"] = 1000000; } } document.addEventListener("pf_page_ping", (e) => { if (pfIsLandingPage && pfExperienceFormStrategy?.exclude_landing_page) { return; } if (pfIsLandingPage && document.querySelector(".lookbook-overlay-content")) { return; } const pagePingEvent = e.detail; pfUpdateEngagementTimes(pagePingEvent); }); window.addEventListener("message", (event) => { if (!(event.data?.lookbookExternalForm || event.data?.pfStandardForm)) { return; } const visibleModal = Array.from(document.querySelectorAll("#pf-modal")).filter((m) => m.style.display !== "none")[0]; const visibleForm = visibleModal?.querySelector("[data-pf-theme-block-ref='form']"); const formId = visibleForm?.getAttribute("data-pf-theme-form-library-id"); if (formId) { const submittedForms = JSON.parse(localStorage.getItem("pfSubmittedForms") || "[]"); const submittedForm = { experienceId: "186752", formId }; const submittedFormNotLogged = submittedForms.findIndex((x) => x.experienceId == submittedForm.experienceId && x.formId == submittedForm.formId ) === -1; if (submittedFormNotLogged) { submittedForms.push(submittedForm); localStorage.setItem("pfSubmittedForms", JSON.stringify(submittedForms)); } resumePdfActions(visibleModal).then(() => { window.resetForm(visibleModal); }) } }); window.addEventListener("load", () => { if (pfIsLandingPage && pfExperienceFormStrategy?.exclude_landing_page) { return; } const currentSession = JSON.parse(localStorage.getItem("pfCurrentSession") || "{}"); if (currentSession.experienceId == "186752") { pfUpdateEngagementTimes({ interval: 0 }); } }); </script> </body> <div id="clearbit-attribution" class="h-[30px] mb-[50px] md:mb-[0px]" style='display: none; align-items: center; z-index: 99999; overflow: hidden;'> <a style='color: #AAAAAA; font-size: 12px; margin: auto;' href='https://clearbit.com'>Logos Provided by Clearbit</a> </div> </html> <script> const partnershipLogo = document.querySelector("img[src*='//logo.clearbit.com/']") if (partnershipLogo) { const clearbitAttribution = document.getElementById("clearbit-attribution"); clearbitAttribution.style.display = "flex"; } </script> <script> /* This script removes the promoters if content is loaded inside iframe but also checks it is not overlay and preview. This script also removes header if TE landing page is added as content and loaded inside iframe but also checks it is not overlay and preview. */ const parentWindow = window.parent; const insideContentPageIframe = parentWindow && parentWindow.document.querySelector("iframe.pf-content-page-iframe") && window.self !== window.top; if(insideContentPageIframe) { // hide promiters const contentDiv = document.querySelector('.pf-content-wrapper'); if(contentDiv) { const htmlElement = document.querySelector('html'); htmlElement.style.height = "100%"; document.body.style.height = "100%"; document.body.innerHTML = contentDiv.innerHTML; } const iframeHideDivs = document.querySelector(".iframe-hide"); iframeHideDivs && iframeHideDivs.remove(); } </script>