CINXE.COM
Linux UFW (Uncomplicated Firewall) Configuration Made Easy
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><script async="" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" type="text/javascript"></script><script async="" defer="" src="https://connect.facebook.net/en_US/sdk.js?xfbml=1&version=v3.2&hash=606879e94b06283a619cebf5b7449644"></script><script async="" defer="" src="https://www.instagram.com/embed.js"></script><meta name="robots" content="max-image-preview:large"/><title>Linux UFW (Uncomplicated Firewall) Configuration Made Easy</title><meta name="description" content="This tutorial covers configuring and managing a basic firewall using UFW, the uncomplicated firewall, which simplifies firewall rule management on Linux systems."/><meta property="og:title" content="Linux UFW (Uncomplicated Firewall) Configuration Made Easy"/><meta property="og:description" content="This tutorial covers configuring and managing a basic firewall using UFW, the uncomplicated firewall, which simplifies firewall rule management on Linux systems."/><meta property="og:url" content="https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"/><meta property="og:type" content="article"/><meta property="og:image" content="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbd7c8f7dbc67e2/66c8c7eb9aeab424dd358da0/linux_ufw_hero.png?disable=upscale&width=1200&height=630&fit=crop"/><meta property="oc:keywords" content="Linux OS, Vulnerabilities & Threats, IT Security, Networking & Security"/><link rel="canonical" href="https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"/><link rel="preload" href="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbd7c8f7dbc67e2/66c8c7eb9aeab424dd358da0/linux_ufw_hero.png?width=1280&auto=webp&quality=10&format=jpg&disable=upscale&blur=40" as="image"/><meta property="twitter:card" content="summary"/><link rel="preconnect" href="https://cdn.cookielaw.org"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="preconnect" href="https://fonts.googleapis.com" crossorigin="anonymous"/><link rel="preconnect" href="https://www.googletagmanager.com"/><link rel="icon" type="image/x-icon" href="/assets/itprotoday-DWmeQ76g.ico"/><link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com"/><link rel="modulepreload" href="/assets/entry.client-fWB18xdV.js"/><link rel="modulepreload" href="/assets/chunk-K6AXKMTT-D00r_oVc.js"/><link rel="modulepreload" href="/assets/index-BlRIwUgC.js"/><link rel="modulepreload" href="/assets/with-props-C4rFUyxV.js"/><link rel="modulepreload" href="/assets/gtm-DGm0KW_T.js"/><link rel="modulepreload" href="/assets/contentPreview-raReixWB.js"/><link rel="modulepreload" href="/assets/_-BJdr63HM.js"/><link rel="modulepreload" href="/assets/useArticleProps-B5v1naMg.js"/><link rel="modulepreload" href="/assets/provider-vRHVWpv0.js"/><link rel="modulepreload" href="/assets/newsletterSignupPromo-C5ZmaayE.js"/><link rel="modulepreload" href="/assets/socialShare-BbqkDzDu.js"/><link rel="modulepreload" href="/assets/link-C1MkzDH5.js"/><link rel="modulepreload" href="/assets/button-DlgCHeeG.js"/><link rel="modulepreload" href="/assets/util-BlbSWXsE.js"/><link rel="modulepreload" href="/assets/searchBar-CEbzLjII.js"/><link rel="modulepreload" href="/assets/useSearchBar-B0qpfoK9.js"/><link rel="modulepreload" href="/assets/navigation-BPrJWSO7.js"/><link rel="modulepreload" href="/assets/redirection-DiAII56c.js"/><link rel="modulepreload" href="/assets/meta-DL0KpjEK.js"/><link rel="modulepreload" href="/assets/form-5uUV5058.js"/><link rel="modulepreload" href="/assets/root-BIuf-57F.js"/><link rel="modulepreload" href="/assets/sidebar-C38SyLXI.js"/><link rel="modulepreload" href="/assets/articleMultiSection-B_lQ5uys.js"/><link rel="modulepreload" href="/assets/contentDomain.generated-DIEwSG95.js"/><link rel="modulepreload" href="/assets/topicList-DLI_z99T.js"/><link rel="modulepreload" href="/assets/gridLayout-wIbp2Hs_.js"/><link rel="modulepreload" href="/assets/featureImageHeader-B2n6UlsK.js"/><link rel="modulepreload" href="/assets/useWeatherWidget-CqdUxz0N.js"/><link rel="modulepreload" href="/assets/string-BS_NwYxO.js"/><link rel="modulepreload" href="/assets/weatherWidget-BYzhjHC9.js"/><link rel="modulepreload" href="/assets/changeLocationBar-BNl0rC1C.js"/><link rel="modulepreload" href="/assets/contentCards-aFwo1o7S.js"/><link rel="modulepreload" href="/assets/videoPlaylist-BaLxtSEs.js"/><link rel="modulepreload" href="/assets/toNumber-DCajaT_r.js"/><link rel="modulepreload" href="/assets/contributorSummary-CYbbZoZR.js"/><link rel="modulepreload" href="/assets/programHeader-UEd8-rbR.js"/><link rel="modulepreload" href="/assets/categoryHeader-BNorRpUl.js"/><link rel="modulepreload" href="/assets/resources-DIZqnfs4.js"/><link rel="modulepreload" href="/assets/index-BObwWQ7a.js"/><link rel="modulepreload" href="/assets/breadcrumb-D99WjBeI.js"/><link rel="modulepreload" href="/assets/listContent-DPrFxO8G.js"/><link rel="modulepreload" href="/assets/utils-Bn24zYNJ.js"/><link rel="modulepreload" href="/assets/pagination-CotFOi0g.js"/><link rel="modulepreload" href="/assets/commodityPrices-CuYN6Jxx.js"/><link rel="modulepreload" href="/assets/_getPrototype-3cCw-LUg.js"/><link rel="modulepreload" href="/assets/useStorage-gorQNo4e.js"/><link rel="modulepreload" href="/assets/_topic._slug._index-NLhdOpms.js"/><script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"Linux UFW (Uncomplicated Firewall) Configuration Made Easy","description":"Learn how to configure and manage a firewall using UFW, a critical skill for securing Linux systems.","thumbnailUrl":["https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbd7c8f7dbc67e2/66c8c7eb9aeab424dd358da0/linux_ufw_hero.png"],"uploadDate":"2024-08-28T11:00:00.000Z","duration":"P0Y0M0DT0H12M45S","contentUrl":""}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.itprotoday.com"},{"@type":"ListItem","position":2,"name":"Linux OS","item":"https://www.itprotoday.com/operating-systems/linux-os"}]}</script><script type="text/javascript">window.NREUM||(NREUM={});NREUM.info = {"agent":"","beacon":"bam.eu01.nr-data.net","errorBeacon":"bam.eu01.nr-data.net","licenseKey":"NRJS-26ae6a3b09493bbcc87","applicationID":"514059305","agentToken":null,"applicationTime":6.246929,"transactionName":"MhBSZQoZWEEDU0ZaXgtac0QLDFlfTR9eWl8QDR1eC1daWwxFSh5EAwIdRBYbWV8SXFtQUBEQVBweEURXFVFeXxwGGl5XER9DQANEW1xfSBhRVR1VU1MRSQ==","queueTime":0,"ttGuid":"292cb844c52ea36e"}; (window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.eu01.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"538480682",accountID:"3936348",trustKey:"3288925",xpid:"Vw8EV1VXABAFVVVSAggEVlE=",licenseKey:"NRJS-26ae6a3b09493bbcc87",applicationID:"514059305"};;/*! For license information please see nr-loader-spa-1.283.1.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>g,xN:()=>p});var n=r(3333);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.283.1",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{A4:()=>s,OF:()=>d,RI:()=>i,WN:()=>h,bv:()=>o,gm:()=>a,lR:()=>f,m:()=>u,mw:()=>c,sb:()=>l});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s="complete"===a?.document?.readyState,c=Boolean("hidden"===a?.document?.visibilityState),u=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d&&"undefined"==typeof SharedWorker,f=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),c&&h(c.prototype,f),h(a.gm,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9414:(e,t,r)=>{"use strict";r.d(t,{J:()=>c});var n=r(7836),i=r(2646),o=r(944),a=r(3434);const s=new Map;function c(e,t,r,c){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,o.R)(29);const u=function(e){return(e||n.ee).get("logger")}(e),d=(0,a.YM)(u),l=new i.y(n.P);l.level=c.level,l.customAttributes=c.customAttributes;const f=t[r]?.[a.Jt]||t[r];return s.set(f,l),d.inPlace(t,[r],"wrap-logger-",(()=>s.get(f))),u}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{$v:()=>u,TZ:()=>n,Zp:()=>i,kd:()=>c,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3,c=["PageAction","UserAction","BrowserPerformance"],u={MARKS:"experimental.marks",MEASURES:"experimental.measures",RESOURCES:"experimental.resources"}},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,TZ:()=>s,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log",s=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(8154),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},8154:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(6154),r(9566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>c,Qu:()=>u,TZ:()=>s,ih:()=>d,pP:()=>a,tC:()=>i});var n=r(860);const i=["click","keydown","submit","popstate"],o="api",a="initialPageLoad",s=n.K7.softNav,c={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},u={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},d={IP:"in progress",FIN:"finished",CAN:"cancelled"}},7378:(e,t,r)=>{"use strict";r.d(t,{$p:()=>x,BR:()=>b,Kp:()=>R,L3:()=>y,Lc:()=>c,NC:()=>o,SG:()=>d,TZ:()=>i,U6:()=>p,UT:()=>m,d3:()=>w,dT:()=>f,e5:()=>A,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>T,uP:()=>s,wW:()=>E,xq:()=>a});var n=r(384);const i=r(860).K7.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",l="remaining",f="interaction",h="spaNode",p="jsonpNode",g="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=(0,n.dV)().o.ST,w="-start",R="-end",x="-body",E="cb"+R,A="jsTime",T="fetch"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},8969:(e,t,r)=>{"use strict";r.d(t,{j:()=>O});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(8154),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(9414);function x(){const e=(0,h.pV)();g.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const E={};var A=r(9417),T=r(5603),N=r(5284);const S=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let _=!1;function O(e,t={},g,O){let{init:I,info:P,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();P||(I=L.init,P=L.info,j=L.loader_config),(0,A.xN)(e.agentIdentifier,I||{}),(0,T.a)(e.agentIdentifier,j||{}),P.jsAttributes??={},d.bv&&(P.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,P);const H=(0,A.D0)(e.agentIdentifier),M=[P.beacon,P.errorBeacon];_||(H.proxy.assets&&(S(H.proxy.assets),M.push(H.proxy.assets)),H.proxy.beacon&&M.push(H.proxy.beacon),x(),(0,h.US)("activatedFeatures",N.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?M:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const g={};var x=s.ee.get(e),A=x.get("tracer");E[e]=b.g.OFF,x.on(p.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var T="api-",N=T+"ixn-";function S(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(T,n,!0,o||null===r?"session":void 0)(t,r)}function _(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,x),(0,w.R)(x,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,x),(0,R.J)(x,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(T,e,!0,"api")})),g.addPageAction=I(T,"addPageAction",!0,n.K7.genericEvents),g.recordCustomEvent=I(T,"recordCustomEvent",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(T,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return S(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if("string"==typeof e||null===e)return S("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return S("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},g.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,x),x.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,x)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,x)},g.interaction=function(e){return(new _).get("object"==typeof e?e:{})};const O=_.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,x),h||(0,a.p)(N+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,x),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,x),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,x),r?void 0:this}}function P(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),x.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{O[e]=I(N,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(N,"routeName",void 0,n.K7.softNav):I(T,"routeName",!0,n.K7.spa),g.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,x),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,x)},d.RI?(0,u.GG)((()=>P()),!0):P(),g}(e.agentIdentifier,O,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),_=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.283.1.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.283.1.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={478:"sha512-xh2gny9FbPW5pomtWyy7hHdQHGboXB/N4nyn8DfA0WA2vCwX0A4j2oDh5iaHPZ7LExtpCN1wH+cmFhC5+XZpvw==",249:"sha512-QwbAv951CmpiBMYrGDX13s51PFIraP7TGD1mhcZv8jILwi1qPZbPL+c98zB6u5kWpOPcdfGLroZW+38lG3ZVHA==",212:"sha512-hVJwKgbpekN6SB9bmRkjdGJxXRXeHDsrVRlTC1EMUEYSeaO8NWR6CjzsDA2iUrhmD1sv4p1TCx6tYULmyZ2Tbw=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.283.1.PROD"]=self["webpackChunk:NRBA-1.283.1.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(8969);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),E=i(2843),A=i(3878),T=i(782),N=i(1863);class S extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),p.RI&&((0,E.u)((()=>(0,x.p)("docHidden",[(0,N.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,N.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var _=i(8154);class O extends b{static featureName=_.TZ;constructor(e,t=!0){super(e,_.TZ,t),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function L(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error&&!!e.stack}class M extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",((e,t)=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,N.t)(),!0,{},this.#r,t],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),p.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,x.p)("err",[k(e),(0,N.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",(e=>{this.abortHandler&&(0,x.p)("err",[L(e),(0,N.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var D=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,D.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var g=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",J=Y+"body-",X=["arrayBuffer","blob","json","text","formData"],Q=p.gm.Request,ee=p.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,X.forEach((e=>{r(Q[te],e,J),r(ee[te],e,J)})),r(p.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){E(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,N.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,N.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function g(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,N.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,N.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,N.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:p.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),pe(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,N.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,N.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,N.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):E(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function E(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,x.p)(_.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",g),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ge={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Ee,Lc:Ae,uP:Te,Rz:Ne}=be;class Se extends b{static featureName=Ee;constructor(e,t=!0){super(e,Ee,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Te,(function(e,t){this.bstStart=(0,N.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,N.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Ne+Re,(function(e){this.time=(0,N.t)(),this.startPath=location.pathname+location.hash})),r.on(Ne+xe,(function(e){(0,x.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var _e=i(2614);class Oe extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(_e.H3,"_").concat(_e.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===_e.g.FULL||e.sessionReplayMode===_e.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee,agentRef:this.#o}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==_e.g.FULL&&this.featAggregate.initializeRecording(_e.g.FULL,!0):(this.#i=_e.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==_e.g.FULL&&(this.recorder.parent.mode=_e.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class Pe extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=>{(0,A.sp)(e,(e=>{a(e)}),!0)}));const n=()=>(0,x.p)("newURL",[(0,N.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",n),r.on("replaceState-end",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)("popstate",(e=>(0,x.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=>{i||(i=!0,requestAnimationFrame((()=>{(0,x.p)("newDom",[(0,N.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=>{(0,x.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var je=i(7378);const Ce={},ke=["appendChild","insertBefore","replaceChild"];function Le(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?&](?:callback|cb)=([^&#]+)/,i=/(.*)\.([^.]+)/,o=/^(\w+)(\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t&&t.length>=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var d={};function l(){t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,A.jT)(!1)),e.addEventListener("error",f,(0,A.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const He={};function Me(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i&&function(){function e(r){var o=t.context(),a=n(r,"executor-",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),["all","race"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],"cb-",a,null,!1),e[1]=n(e[1],"cb-",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(e[1],"resolve-",this,null,!1)})),t.on("executor-err",(function(e,t,r){e[1](r)})),t.on("cb-end",(function(e,r,n){t.emit("propagate",[n,!0],this.nextPromise,!1,!1)})),t.on("propagate",(function(e,r,n){this.getCtx&&!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r&&r.getCtx?r.getCtx():this})}))}(),t}const De={},Ke="setTimeout",Ue="setInterval",Ve="clearTimeout",Ge="-start",Fe=[Ke,"setImmediate",Ue,Ve,"clearImmediate"];function Be(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(De[t.debugId]++)return t;De[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+"-"),r.inPlace(p.gm,Fe.slice(2,3),Ue+"-"),r.inPlace(p.gm,Fe.slice(3),Ve+"-"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Je,wW:Xe,e5:$e,tH:Qe,uP:et,rw:tt,Lc:rt}=je;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=Le(this.ee),a=Me(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,N.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,N.t)();this[$e]=~~this[$e]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,N.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Xe,m),o.on(Xe,m),this.ee.on("fn-err",((...t)=>{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)("function-err",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,"xhr-resolved"],this.featureName),u.buffer([et],this.featureName),s.buffer(["setTimeout"+Ye,"clearTimeout"+Ze,et],this.featureName),c.buffer([et,"new-xhr","send-xhr"+Ze],this.featureName),d.buffer([Qe+Ze,Qe+"-done",Qe+Je+Ze,Qe+Je+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,Xe,"executor-err","resolve"+Ze],this.featureName),i.buffer([et,"no-"+et],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,Qe+Ze),v(d,Qe+"-done"),v(o,"new-jsonp"),v(o,"jsonp-end"),v(o,"cb-start"),l.on("pushState-end",h),l.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled,e.init.performance.resources.enabled];if(p.RI&&(e.init.user_actions.enabled&&(it.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=>{const t=(0,v.s)((e=>{(0,x.p)("ua",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled&&p.gm.PerformanceObserver?.supportedEntryTypes.includes("resource"))){new PerformanceObserver((e=>{e.getEntries().forEach((e=>{(0,x.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)}))})).observe({type:"resource",buffered:!0})}r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785),ct=i(9414);class ut extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;(0,ct.J)(r,p.gm.console,"log",{level:"info"}),(0,ct.J)(r,p.gm.console,"error",{level:"error"}),(0,ct.J)(r,p.gm.console,"warn",{level:"warn"}),(0,ct.J)(r,p.gm.console,"info",{level:"info"}),(0,ct.J)(r,p.gm.console,"debug",{level:"debug"}),(0,ct.J)(r,p.gm.console,"trace",{level:"trace"}),this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,S,Se,Oe,O,M,ot,ut,Pe,nt],loaderType:"spa"})})()})();</script><link rel="stylesheet" href="/assets/styles.generated-CmzcVq8e.css"/><link rel="stylesheet" href="/assets/brand.generated-ChPKH9i1.css"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"/><noscript><style type="text/css">.gptHideContent { opacity: 1!important; }</style></noscript><script type="text/javascript" src="https://cdn.cookielaw.org/consent/dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e/OtAutoBlock.js"></script><script type="text/javascript" src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-domain-script="dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e"></script><script type="text/javascript" id="vwoCode">window._vwo_code = window._vwo_code || (function () { var account_id = 734041, version = 1.5, settings_tolerance = 2000, library_tolerance = 2500, use_existing_jquery = false, is_spa = 1, hide_element = 'body', hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important',/* DO NOT EDIT BELOW THIS LINE */ f = false, d = document, vwoCodeEl = d.querySelector('#vwoCode'), code = { use_existing_jquery: function () { return use_existing_jquery }, library_tolerance: function () { return library_tolerance }, hide_element_style: function () { return '{' + hide_element_style + '}' }, finish: function () { if (!f) { f = true; var e = d.getElementById('_vis_opt_path_hides'); if (e) e.parentNode.removeChild(e) } }, finished: function () { return f }, load: function (e) { var t = d.createElement('script'); t.fetchPriority = 'high'; t.src = e; t.type = 'text/javascript'; t.onerror = function () { _vwo_code.finish() }; d.getElementsByTagName('head')[0].appendChild(t) }, getVersion: function () { return version }, getMatchedCookies: function (e) { var t = []; if (document.cookie) { t = document.cookie.match(e) || [] } return t }, getCombinationCookie: function () { var e = code.getMatchedCookies(/(?:^|;)\s?(_vis_opt_exp_\d+_combi=[^;$]*)/gi); e = e.map(function (e) { try { var t = decodeURIComponent(e); if (!/_vis_opt_exp_\d+_combi=(?:\d+,?)+\s*$/.test(t)) { return '' } return t } catch (e) { return '' } }); var i = []; e.forEach(function (e) { var t = e.match(/([\d,]+)/g); t && i.push(t.join('-')) }); return i.join('|') }, init: function () { if (d.URL.indexOf('__vwo_disable__') > -1) return; window.settings_timer = setTimeout(function () { _vwo_code.finish() }, settings_tolerance); var e = d.createElement('style'), t = hide_element ? hide_element + '{' + hide_element_style + '}' : '', i = d.getElementsByTagName('head')[0]; e.setAttribute('id', '_vis_opt_path_hides'); vwoCodeEl && e.setAttribute('nonce', vwoCodeEl.nonce); e.setAttribute('type', 'text/css'); if (e.styleSheet) e.styleSheet.cssText = t; else e.appendChild(d.createTextNode(t)); i.appendChild(e); var n = this.getCombinationCookie(); this.load('https://dev.visualwebsiteoptimizer.com/j.php?a=' + account_id + '&u=' + encodeURIComponent(d.URL) + '&f=' + +is_spa + '&vn=' + version + (n ? '&c=' + n : '')); return settings_timer } }; window._vwo_settings_timer = code.init(); return code; }()); </script></head><body class="brand-itprotoday gptHideContent"><noscript></noscript><div id="bigsky_v"></div><div id="welcome_v"></div><main data-theme="theme1" class="Provider"><div data-testid="ad_blocker" class="ads ad adsbox doubleclick ad-placement carbon-ads" style="height:1px;width:1px;position:absolute;left:-999em;top:-999em"></div><div><div data-template="layout" class="Layout"><nav data-module="navigation" aria-label="navigation" class="Navigation"><div data-testid="header" class="Navigation-HeaderWrapper"><div class="FullScreenBackground Navigation-HeaderBackground"></div><div class="Navigation-Header"><div class="InformaBarTech" data-component="informa-bar"><div class="InformaBarTech-LogoSectionWrapper"><div class="InformaBarTech-LogoSection" data-testid="informa-bar-logo-section" role="button" tabindex="0" aria-label="Open Informa bar"><div class="InformaBarTech-LogoWrapper"><img class="InformaBarTech-Logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAekAAABqCAYAAACYnalVAAAACXBIWXMAAAsSAAALEgHS3X78AAAPZklEQVR4nO2d320bSRKHew0/HkDe4t41jkDcCMSNwNwIpI3AdATWRmA6AksRrAzcu8UIjoxgxffDQYzAh9mtvmsPKHJIVvVUz3wfQNgWrOHM9J9fV3V11Q/fvn0Le7gJIUxDCFUI4Ur+2zKE8BxCeJDP874LQPGMpQ9M5M/635d7HmoTQngKITyGEFbyeaIbAAAcz0siXYvzbQjh4sAVtyGEhfxf6A+1EM/k81bhqdYi2nci2gAA0IKmSI9lIj12Yl6LlYVVXTZ1+8/lMzJ6krUs7PDCAAAcoCnSqwOuzH0g1GUzkwWalTg3iV6YBX0GAGA3r5KfLs4Q6CC/e8d7Lo7oPfk9o0AH+a4PYrUDAMAOokjXFvA7hRf0ViwyKIOx7BVf014AAP6IIq1pzRBEVgZRoM/xngAAgCGvZLLWiOCNXMpxHfANAg0A4JxXRoI6peFdc278AQAAZOCVkaCOaTy3aMUfAACAMbVI/4OXPCiIwAcAKIRapP8dQvgPDTYIblpkkQMAACe8lgQmP4pQ/0jD9JockfcxBeiz9K00Ucn0hb8DAMAOXie5lDWF+pGX7Q5LK3ojwWh3B7KH0S8AAI7glVQoWsuv/Kjg+t4wGbvEKsnMvZwQIL0nAIAyMZnJIrnsuUJNYJI/tM/CR96LhY44AwAYkBbYeExqRocTXd9rEpm4pBbSz8o3di/XBQAAI9ICGzOpTBQ51qLeMmm7RdvVvaUwBgCAPalIP0v07Sb5WVuh3srvUtDfJ9reDfafAQAy8KrxFSuZ0O+Tnx0S6qX8DgLtk8ogqpu4AwCADDRFOoiFVLut34QQPoll3RTqjQj5z2JBP9FYbqmUb2xNewMA5OH1nm95kn3HuPdYi/HfQgj/pG2KQjtpCMfrAAAysU+kmzA5Q8CKBgDIxy53N/QLbUua2AMAgEwg0gAAAE45xt0N/2eXdfo8ECuz79se4xZH1p5w+0NLXupP3vvQkOe4SHUg8LZZQMgERHo/Y+msUxlo9Wd04Hc20ni1mD0wmbukStpzIu18deKNLpPJ6zHXwAW3TBtzxqH5Yi195iGpHpebShIexXs+dGSzb3NcOr9XLdstZSPvYNX4qJCmBYW/iB22PoZ2qfBO1kmFqC7QbuAfOnqOc4iLrTgRWdfUjuU64yQG/WaWfI6Z3Jtspb/cZhA+zXmu6znuWCbJfHDq4vwQ22Th9XDO4iuKdDNv97mcMpF3fQ838rFstLlyR+7DCus3wzrXcRKyKC7SljhYFx26CjX7yVIxGLFqWDCpa/GxRb+o7+Or0r2EI/tiJeP55kxhfol7ub62ZT2V61qMiY28P49iXSVzvPUivclZc8DQ3d2x4eZGAy1lJEUuYkfBDW7DOGnT3INxF3W7X8tnKQN1qNZ16ladHhhzXmMfKhGia+PvuU4WmRr95Ubu23JMXCRz3MzJto+18dWG5hxwe0z/Hmp0dyWrvT9CCB8yCHTKVZJ+FXSJi5+PTgS6Sd32v0v7ax+N80q0OFcy3j6KFZdzzGmQzhnWAh0ZSX85x9MUx8TnjGPiSr6zyzkufe4uBbrJlXh/HtpmgxyaSI87GGi7GMlKiqphOsTc8Z8Lmfwvk4E6dnA/FtxIH4/CrBHf0QUe5owPJ7iQp8mY6GLBGue43ELdxaLkFN5K+xzUgCGJdAzG6FKcU0bi+sSiPo+6Xf9VqAi8lT6pXUq0K8bSHs8OLZhTmDuaM65bLuorEcevDsZETqGeFSLOKXELdO8CbAgiHQuA5HZrtyF24r5aU5aM5d19KPw5oktz4eBeTmWcLII9jrNjiUL30dmzfN4jeLEN/nC2OBoZe4ziPPB7QeLc5HqfUPdZpMcy8X113ngjjukczcTgNEDXvCt0wdYncQ5ira4c961dghdd214XrBeGEd+TnswDLwp1n0V6JRNfCVyxP92aKNCl7nHu46ogofbsoTqVeQFxDRdJZcKxiLZ3QyTI1k5ftnWsuN7lUeuzSJfm+rA6K9wnomurL6Kwi0vnQl2Kh+oUSulX8yRAqsscAMdS8pZOLt41FzMU2PDDBdb0XoYg0JFLx1sglwV5qPrKqKCTDCnMce24SxfpiLQvsKZf5q6nLu6XuMLygB4yp1EPMkq1YOgZx7xxIa4OAsm+xyqN4Uusk4T5KTF1Za5AlXfk/4aecZnkNchNWgwnrejVpijOpJHz29qL8S4eZ0Sk/YFIf0+VycOwFGu9bTL8aZL+0HLA3sk7oLIW9IWbDBb1OqlKt1JYFMRrxAjsHOlG63d0i0j/xTYpvfZSnde4irK26I6JgPytxf/RPpZxr5x3/FAO24WxCB6dS1d4TAK85obHX0YyMRAZ64dNQwCa5JorjmGb3POuvl5ltBJnBiK9SapO5Sj5eSefucwfFu/sz3zrfa6CdYhl0qjHrLJi0gDL4JmfFN1B2pWyfs5Y/EC7ylHKVtpRa9+3kv5ktW9+znv3UC1t2ai3nS6Gx40kHdNkst2HZf9osk48LW0XqZX0r67EepuISdv5ZJwU47AU6zdKi/2xvOeuKswF6bsPRqcdfhqaSK+TTnvuSutGIiwteK8oHiWLtFWf2CYJIDSJx5Ms0kiuz0iv2IVIx/J8D4bbNzlE+l6hzKjlXLGLZTLPnYr1ovPXgupPtyEuFLQXNu+HEt19L9bpRAachivkTjqaBUOpkLSPaWECHaRf3Uh/0+aykOMraxkXlWKZxS74FEL4e5KB7BzuZOFtzVIW0VMFAXyS62yM7rlvNQuscvBP+y7S9+JW0Rhou6gHwheD67YqYdYSq0FmjVVgiZVAp9zIhKmN5+MrUSAmSp6qrljKnDFXfoaFUZ8IMsZ/SbYJtHg2XBj2sbDQo8ECveqzSL9JsvJYYjFxarqYrJ/fgspoH+99xr2rmVjtmlw69LKk1luubRArPiXpTi2wOKWwTfZELbAQntDj6n/abXzZZ5HOJU5PRtb0kCtjWbiNlpmTg1hZIV5c3useiXPE2vp/lPemySjDfVssLvqaOVBdD8g4poPFKnbIdaYthKgLV/GDgYtz1vECbit7zpMeiXNOLIKlrL0rTwaLi9BjQ0R1XCDSOjBZ6VEZRJTed3hEQ9sKGXV8ZnrVs6jc3JQ6V1i0eV8NEdW5BpHW4clg/3GoWAhQl6LyaGBNE/1fLqtC54ouzyGXBiLtFDqxDtoCtHZgvWjvhZN9rGxKnCvwFrZHNUYAkdajxChqj2iLtAfX7IOy9TQaeMxC6ZR6PM1iXxoOgEjrgUifT2UQ9eklmYb2feDyLpdSvW4UeekARBo8oW0drh0tnrRFGksacoMh0gGINHhCW3g87aNp34tmVjqANiDSHUCpSvBEn0X6WSx7reNlOSvGAQydiZzrTiu2Nau3BYtxiUiDJ7STG3jb+1spnwEfs09YJFikPhkntcAr+Uy6zo6GSIMntF243ibDlXIZS7J+lQki7YMoyFP5u0U96LNBpMETmoPEquLQOXCWHqA7xpJjYCp/FpE/HJEGyIe2a7pPxS0ArJjJR9OLlQ1EGrygvR/tUbywpAHyEK3mW69u7LYg0uAFzv0CgAZzEedelMNEpAEAoA9MJQ1w0ZZzE5KZAABAyYyliM3Xvgl0wJIGAICCqSTlrnYNejdgSQMAQIlMDBIEaaB6/BNLGgAASiMm8ukiOGwri4NHSUyTfiLftL4MkQYvkN4SANpQZRbojXzfYyLM2UCkwQucIQaANjxkEOiNfM9d13MTIg19xeO5a+3c5HgfYGjcGu9BLyVSXLv++8kg0tBXtDOYaaAt0ngfYEjUC+8PRs+7lAWAu0yFRHeDJzSjIodgSQMMiYXBs9ZBYO8958HHkoa+4jEloLZIU1wDhkK96L5Sfta15Pd2XToUSxo8oS06U2fPR35ygNOYK7+3tcwP7mt7I9LgCe0B400UNe/HY71sACtmitfdikAXEXiJSIMntEXakyVdKecVJmgMhsJMeftqVtLJCEQaPNFnd7f2vSDSMBQ0x86ytFgORBq8oenGHTlyeSPSAKehOYbvSmsDRBq8ob3KvXHyfNp7aog0DAXNqO4cSUpUF+SINHhDW6Q1xfFUbpT31Dh6BUNB89jiJtNetOpRS0QavPEolqIWFw72prWteTcpCwGM0RS8XMetsKSh92iL0G2HL6wySMKASAMcT65UwareO0QaPKItQlcdWtPaqQy/UFgD4CQsC3NEtLe2EGlwyYPsH2nShTVdLwzeKl8TKxrgdKzz56vPM4g0eEX7qMSVQWrBQ2hb0ZsSj5AAOMLSozZXTlj0J4g0eGWhHEAWZJWb69z0wsC9hkADnIfVkcyJlbcOkQavPBtYoiMROusAknoieKd8za1RqT4Az2jHX1jEp4xlXjGpvIdIg2csrOlLOeZlJdS1QH82uO6CgDEYIBZJezQXu2OZT8yC0hBp8IyFNR0SodZ2fd8aCfQGKxoGzFr50S+Vto4m1gIdEGkogFuDQRoSodYIJqvkWh8UrrWLOVY0DBiLDHvXZwr1PIdAB0QaCsEq2KPeQ/oomYhO+Y6JDPQ/DBKWRL5w7AoGjlXA5LW404/Zo76R+eKj1R50k9c5vgTgTOqB9F4GhgUX4qZeyOr4Ub7zqZFKcCp7UFP5WK+iN44KhAB0xUrGgvrxJhnDX8VbdyfftUo8V1PxlE0N6lq3ApGGUliI5XpteL8jST6inYDkFLalFacHMOTOcDspiFhrGgFbWeCfvZDH3Q0lMTfan/bInHKUAP/D4qSHFVuxvFUW2Ig0lMSzdP6+C/WvJC4B+I7nDjIGnorqAhuRhtLou1Aj0AC7qcfF0vm7UR+/iDSUSBRq7wP2GGoX2S8INMBeZk7d3mbjF5GGUolC/akHLbiWZ+GoFcB+4rj3JNRby/GLSEPp1Ps/PxuUtszFJxngBIkBtGPlSKiXckTLbPwi0tAHYorPkqzqjSwuyCYGcDxdC/VWcjeoRXG/BCINfSFGf74JIdw7fqaNBJdURukOAYbCSsZR7tiUpRgFWfLpI9LQN2KKzyjWXvau1ok4ExwGoEPco/41w1hfivdr2shEaErMOOZhP6z0Pbkn5RWdlgtF+72W4pqNYj2WiNBZB5nENhJMctdx/9bsl57G6bPys+WaeLXvO9eY9DrHBRljD+JNu1FOIfolSRl8DCpj5Ydv375pXAegFGayEp4YFMXYJHm/H3KutgHgO2bJ55R828tkgd2pYYJIw9CZJEUzQvLvQ8RVdSzCwf4ygE/qMV1/YqGMXaTj2M9YDiH8F/cmbyXaV5JLAAAAAElFTkSuQmCC" alt="Logo Informa"/></div><span class="InformaBarTech-IconWrapper InformaBarTech-IconWrapper_closed"><svg viewBox="0 0 320 512" aria-hidden="true" focusable="false" role="img" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="currentColor" height="100%"><path fill="#ffffff" d="M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"></path></svg></span></div><p class="InformaBarTech-LogoInfoWrapper"><span class="InformaBarTech-LogoInfo">TechTarget and Informa Tech’s Digital Business Combine.</span><span class="InformaBarTech-LogoInfo InformaBarTech-LogoInfo_isMobile">TechTarget and Informa</span></p></div><div class="InformaBarTech-TopSection InformaBarTech-TopSection_hidden"><h2 class="InformaBarTech-TopSectionTitle">TechTarget and Informa Tech’s Digital Business Combine.</h2><p class="InformaBarTech-TopSectionDescription">Together, we power an unparalleled network of 220+ online properties covering 10,000+ granular topics, serving an audience of 50+ million professionals with original, objective content from trusted sources. We help you gain critical insights and make more informed decisions across your business priorities.</p></div></div></div></div><div class="Navigation-SecondaryMenuWrapper"><div class="FullScreenBackground Navigation-SecondaryMenuBackground"></div><div class="Navigation-SecondaryMenu"><nav data-testid="SecondaryMenu" class="SecondaryMenu"><a class="SecondaryMenu-Link" href="/documents" data-discover="true">Documents</a><a class="SecondaryMenu-Link" href="/resources?page=1&types=Virtual+Event&types=Webinar" data-discover="true">Online Events</a><a class="SecondaryMenu-Link" href="/advertise" data-discover="true">Advertise</a><a class="SecondaryMenu-Link" href="/about-us" data-discover="true">About</a></nav></div></div><div style="padding-top:0px"></div><div id="navigation-header" class="Navigation-NavBase"><div data-testid="navBase" class="NavBase"><div class="NavBase-Content"><div class="FullScreenBackground NavBase-SecondaryMenuBackground"></div><div class="NavBase-HeaderWrapper"><div class="NavBase-IconsWrapper"><button data-testid="navBase-megaMenuButton" class="NavBase-MegaMenuButton" aria-label="Open Mega menu"><span data-component="icon" data-name="Bars" class="NavBase-MegaMenuIcon NavBase-MegaMenuIcon_iconVariant_small NavBase-MegaMenuIcon_iconType_bars" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='15'%20viewBox='0%200%2018%2015'%3e%3cpath%20id='Hamburger'%20d='M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z'%20transform='translate(0%20-68)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='15'%20viewBox='0%200%2018%2015'%3e%3cpath%20id='Hamburger'%20d='M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z'%20transform='translate(0%20-68)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button><button data-testid="SearchButtonDesktop" class="NavBase-SearchButtonDesktop" aria-label="Open Search"><span data-component="icon" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_large NavBase-SearchIcon_iconType_search" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button><button data-testid="SearchButtonTablet" class="NavBase-SearchButtonTablet" aria-label="Open Search in MegaMenu"><span data-component="icon" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_small NavBase-SearchIcon_iconType_search" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div><div class="NavBase-LogoWrapper"><button data-testid="navBase-LogoMegaMenuButton" class="NavBase-LogoMegaMenuButton" aria-label="Open Mega menu"><span data-component="icon" data-name="Bars" class="NavBase-LogoMegaMenuIcon NavBase-LogoMegaMenuIcon_iconVariant_small NavBase-LogoMegaMenuIcon_iconType_bars" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='15'%20viewBox='0%200%2018%2015'%3e%3cpath%20id='Hamburger'%20d='M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z'%20transform='translate(0%20-68)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='15'%20viewBox='0%200%2018%2015'%3e%3cpath%20id='Hamburger'%20d='M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z'%20transform='translate(0%20-68)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button><a class="NavBase-Logo" href="/" data-discover="true"><img data-testid="logo-image" data-component="image" class="NavBase-LogoImage" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6a28f214e959257b/65dc5966d7e7df040ab9cb3f/Logo_-_IT_Pro_Today.svg?width=476&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6a28f214e959257b/65dc5966d7e7df040ab9cb3f/Logo_-_IT_Pro_Today.svg?width=476&auto=webp&quality=80&disable=upscale" loading="lazy" alt="ITPro Today Logo" title="ITPro Today Logo"/></a></div><div class="NavBase-RegisterWrapper"><div data-module="newsletter-signup-promo"><div class="NewsletterSignupPromo-Button NewsletterSignupPromo-Button_small NewsletterSignupButton"><a data-component="button" data-testid="headerSmallNewsletterButton" class="Button Button_size_small Button_variant_primaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-nav" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_itpb86&ch=itpsitebtn" target="_blank"><span data-component="icon" data-name="Email" class="Button-Icon Button-Icon_position_left" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div><div class="NewsletterSignupPromo-Button NewsletterSignupPromo-Button_medium NewsletterSignupButton"><div data-component="social-share" class="SocialShare SocialShare_variant_layout Layout-SocialShare"><a target="_blank" rel="noreferrer" aria-label="Facebook" class="Layout-SocialLink" href="https://www.facebook.com/ITProToday/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_facebook" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" class="Layout-SocialLink" href="https://twitter.com/ITProToday"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_twitter" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Linkedin" class="Layout-SocialLink" href="https://www.linkedin.com/company/itpro-today/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_linkedin" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Youtube" class="Layout-SocialLink" href="https://www.youtube.com/channel/UCedUgT8R7qC3vsOSxXS5-ZA"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Youtube" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_youtube" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20576%20512'%3e%3cpath%20d='M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20576%20512'%3e%3cpath%20d='M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="GoogleNews" class="Layout-SocialLink" href="https://news.google.com/publications/CAAqKQgKIiNDQklTRkFnTWFoQUtEbWwwY0hKdmRHOWtZWGt1WTI5dEtBQVAB"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="GoogleNews" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_googleNews" style="mask-image:url("data:image/svg+xml,%3csvg%20id='Capa_1'%20enable-background='new%200%200%20512.288%20512.288'%20height='512'%20viewBox='0%200%20512.288%20512.288'%20width='512'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20d='m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z'/%3e%3cpath%20d='m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z'/%3e%3cpath%20d='m179.256%20101.453-51.436-10.231-4.238%2021.306z'/%3e%3cpath%20d='m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z'/%3e%3cpath%20d='m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20id='Capa_1'%20enable-background='new%200%200%20512.288%20512.288'%20height='512'%20viewBox='0%200%20512.288%20512.288'%20width='512'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20d='m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z'/%3e%3cpath%20d='m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z'/%3e%3cpath%20d='m179.256%20101.453-51.436-10.231-4.238%2021.306z'/%3e%3cpath%20d='m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z'/%3e%3cpath%20d='m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z'/%3e%3c/g%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_self" rel="noreferrer" aria-label="RSS" class="Layout-SocialLink" href="https://www.itprotoday.com/rss.xml"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="RSS" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_rss" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='25'%20height='25'%20viewBox='0%200%2025%2025'%3e%3cpath%20id='Icon_awesome-rss'%20data-name='Icon%20awesome-rss'%20d='M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z'%20transform='translate(0%20-2.25)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='25'%20height='25'%20viewBox='0%200%2025%2025'%3e%3cpath%20id='Icon_awesome-rss'%20data-name='Icon%20awesome-rss'%20d='M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z'%20transform='translate(0%20-2.25)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div><a data-component="button" data-testid="headerMediumNewsletterButton" class="Button Button_size_medium Button_variant_primaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-nav" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_itpb86&ch=itpsitebtn" target="_blank"><span data-component="icon" data-name="Email" class="Button-Icon Button-Icon_position_left" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div><button data-testid="RegisterSearchButton" class="NavBase-RegisterSearchButton" aria-label="Open Search in MegaMenu"><span data-component="icon" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_large NavBase-SearchIcon_iconType_search" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div><div class="NavBase-SearchWrapper"><div class="FullScreenBackground NavBase-SearchBackground"></div><button data-testid="SearchCloseButton" class="NavBase-SearchCloseButton" aria-label="Close Search"><span data-component="icon" data-name="Close" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_medium NavBase-SearchIcon_iconType_close" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='18.001'%20viewBox='0%200%2018%2018.001'%3e%3cpath%20id='times'%20d='M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z'%20transform='translate(-0.008%20-95.998)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='18.001'%20viewBox='0%200%2018%2018.001'%3e%3cpath%20id='times'%20d='M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z'%20transform='translate(-0.008%20-95.998)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div></div><div class="Navigation-MainMenu"><div data-testid="mainMenu"><div class="FullScreenBackground MainMenu-BackgroundSubmenu"></div><div class="FullScreenBackground MainMenu-BackgroundMenuItem"></div><div class="MainMenu-Content"><div class="MainMenu-MegaMenuButtonWrapper"><button data-testid="mainMenu-MegaMenuButton" aria-label="Open MegaMenu" class="MainMenu-MegaMenuButton"><span data-component="icon" data-name="Bars" class="MainMenu-MegaMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='15'%20viewBox='0%200%2018%2015'%3e%3cpath%20id='Hamburger'%20d='M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z'%20transform='translate(0%20-68)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='15'%20viewBox='0%200%2018%2015'%3e%3cpath%20id='Hamburger'%20d='M17.518,70.234H.482A.48.48,0,0,1,0,69.755V68.479A.48.48,0,0,1,.482,68H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,70.234Zm0,6.383H.482A.48.48,0,0,1,0,76.138V74.862a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,76.617Zm0,6.383H.482A.48.48,0,0,1,0,82.521V81.245a.48.48,0,0,1,.482-.479H17.518a.48.48,0,0,1,.482.479v1.277A.48.48,0,0,1,17.518,83Z'%20transform='translate(0%20-68)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div><div class="MainMenu-ItemsWrapper" role="menu"><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Cloud"><span class="MainMenu-MainTitle">Cloud<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/cloud-services" data-discover="true">Cloud Services</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/hybrid-cloud" data-discover="true">Hybrid Cloud</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/private-cloud" data-discover="true">Private Cloud</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/cloud-computing/public-cloud" data-discover="true">Public Cloud</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/cloud-computing" data-discover="true">Cloud</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/cloud-computing" data-discover="true"><span class="SubMenu-SeeMoreText">SEE ALL Cloud</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">cloud Kubernetes helm concept with the containers</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_cloudComputing ContentPreview-Category" href="/cloud-computing" data-discover="true">Cloud Computing</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/christopher-tozzi" data-discover="true">Christopher Tozzi</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 18, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>6 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">hybrid cloud spelled out above a tablet</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbbbd88e5773ffc6b/67ac97b77c6ab0666ea09ca5/hybrid-cloud-1716x965_-_2024-12-27.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbbbd88e5773ffc6b/67ac97b77c6ab0666ea09ca5/hybrid-cloud-1716x965_-_2024-12-27.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_hybridCloud ContentPreview-Category" href="/cloud-computing/hybrid-cloud" data-discover="true">Hybrid Cloud</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls" data-discover="true">How to Avoid Common Hybrid Cloud Pitfalls</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls" data-discover="true">How to Avoid Common Hybrid Cloud Pitfalls</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName Contributors-ContributorName_showComma" data-testid="contributor-name" href="/author/lisa-morgan" data-discover="true">Lisa Morgan<!-- -->, </a><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/informationweek" data-discover="true">InformationWeek</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 12, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of OS"><span class="MainMenu-MainTitle">OS<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/microsoft-windows" data-discover="true">Microsoft Windows</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/windows-server" data-discover="true">Windows Server</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/powershell" data-discover="true">PowerShell</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/linux-os" data-discover="true">Linux OS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/sql-server" data-discover="true">SQL Server</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/macos" data-discover="true">MacOS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/android-os" data-discover="true">Android OS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/chromeos" data-discover="true">ChromeOS</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/ubuntu" data-discover="true">Ubuntu</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/operating-systems/red-hat-os" data-discover="true">Red Hat OS</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/operating-systems" data-discover="true">OS</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/operating-systems" data-discover="true"><span class="SubMenu-SeeMoreText">See All OS</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">a dry erase boards with doodles, powershell code snippet, powershell logo, and a hand drawing with a market</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt1ef028e07e495a1a/67b518be149b7e2c6c0df150/Your_paragraph_text_(1).png?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt1ef028e07e495a1a/67b518be149b7e2c6c0df150/Your_paragraph_text_(1).png?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_powerShell ContentPreview-Category" href="/operating-systems/powershell" data-discover="true">PowerShell</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf" data-discover="true">PowerShell GUI Tutorial: Building Whiteboard Apps With WPF</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf" data-discover="true">PowerShell GUI Tutorial: Building Whiteboard Apps With WPF</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/brien-posey" data-discover="true">Brien Posey</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 19, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>13 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/linux-os/beyond-the-basics-advanced-linux-hardening-techniques" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">a magnifying glass being help up to an open padlock icon that is set within rows of locked padlocks</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt55c34441e4c5f4cf/67ae572a2ba611390a866d2b/image-1716x965_-_2025-02-13T153328.829.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt55c34441e4c5f4cf/67ae572a2ba611390a866d2b/image-1716x965_-_2025-02-13T153328.829.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_linuxOs ContentPreview-Category" href="/operating-systems/linux-os" data-discover="true">Linux OS</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/linux-os/beyond-the-basics-advanced-linux-hardening-techniques" data-discover="true">Beyond the Basics: Advanced Linux Hardening Techniques</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/linux-os/beyond-the-basics-advanced-linux-hardening-techniques" data-discover="true">Beyond the Basics: Advanced Linux Hardening Techniques</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/grant-knoetze" data-discover="true">Grant Knoetze</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 14, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>7 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of IT Mgmt"><span class="MainMenu-MainTitle">IT Mgmt<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/it-operations" data-discover="true">IT Operations</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/devops" data-discover="true">DevOps</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/ops-and-more" data-discover="true">Ops and More</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/it-sustainability" data-discover="true">IT Sustainability</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-management/it-automation" data-discover="true">IT Automation</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/it-management" data-discover="true">IT Mgmt</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/it-management" data-discover="true"><span class="SubMenu-SeeMoreText">See All IT Mgmt</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">disaster recovery playbook on a desk near a keyboard</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_disasterRecovery ContentPreview-Category" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>5 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/it-sustainability/7-top-data-center-sustainability-strategies-for-2025" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">eco icons and data processing over computer servers</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt253192bcd42230d9/67b798981f1ef5d72674f1f5/image-1716x965_-_2025-02-20T160308.726.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt253192bcd42230d9/67b798981f1ef5d72674f1f5/image-1716x965_-_2025-02-20T160308.726.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_itSustainability ContentPreview-Category" href="/it-management/it-sustainability" data-discover="true">IT Sustainability</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/it-sustainability/7-top-data-center-sustainability-strategies-for-2025" data-discover="true">7 Top Data Center Sustainability Strategies for 2025</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/it-sustainability/7-top-data-center-sustainability-strategies-for-2025" data-discover="true">7 Top Data Center Sustainability Strategies for 2025</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName Contributors-ContributorName_showComma" data-testid="contributor-name" href="/author/christopher-tozzi" data-discover="true">Christopher Tozzi<!-- -->, </a><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/data-center-knowledge" data-discover="true">Data Center Knowledge</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 20, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Career"><span class="MainMenu-MainTitle">Career<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/career-management/career-tips" data-discover="true">Career Tips</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/career-management/certifications" data-discover="true">Certifications</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/career-management/training" data-discover="true">Training</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/career-management" data-discover="true">Career</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/career-management" data-discover="true"><span class="SubMenu-SeeMoreText">See All Career Mgmt</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">an unhappy employee is surrounded by smiley faces and the words "Stay Positive"</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_careerTips ContentPreview-Category" href="/career-management/career-tips" data-discover="true">Career Tips</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/danielle-meinert" data-discover="true">Danielle Meinert</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>2 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/software-development/process-standardization-is-stifling-my-creativity" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">an annoyed-looking software developer is covered by red tape and the words "process compliance"</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9559a8f9078d3a4e/67aa33c656339648630cc13d/Process_Compliance_(1).gif?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9559a8f9078d3a4e/67aa33c656339648630cc13d/Process_Compliance_(1).gif?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_softwareDevelopment ContentPreview-Category" href="/software-development" data-discover="true">Software Development</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/software-development/process-standardization-is-stifling-my-creativity" data-discover="true">Process Standardization Is Stifling My Creativity</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/software-development/process-standardization-is-stifling-my-creativity" data-discover="true">Process Standardization Is Stifling My Creativity</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/danielle-meinert" data-discover="true">Danielle Meinert</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 11, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>3 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Storage"><span class="MainMenu-MainTitle">Storage<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/cloud-storage" data-discover="true">Cloud Storage</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/high-speed-storage" data-discover="true">High Speed Storage</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/data-backup" data-discover="true">Data Backup</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/data-storage" data-discover="true">Storage</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/data-storage" data-discover="true"><span class="SubMenu-SeeMoreText">See All Data Storage</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">disaster recovery playbook on a desk near a keyboard</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_disasterRecovery ContentPreview-Category" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world" data-discover="true">Disaster Recovery Strategies for a Disaster-Prone World</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>5 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/linux-os/how-to-identify-and-remove-linux-malware-infections" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">the word malware on top of a digital background</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt88f81fb36d6cbe4a/67a4e82ca4ff164b53d978f6/image-1716x965_-_2025-02-06T113039.208.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt88f81fb36d6cbe4a/67a4e82ca4ff164b53d978f6/image-1716x965_-_2025-02-06T113039.208.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_linuxOs ContentPreview-Category" href="/operating-systems/linux-os" data-discover="true">Linux OS</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/linux-os/how-to-identify-and-remove-linux-malware-infections" data-discover="true">How To Identify and Remove Linux Malware Infections</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/linux-os/how-to-identify-and-remove-linux-malware-infections" data-discover="true">How To Identify and Remove Linux Malware Infections</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/grant-knoetze" data-discover="true">Grant Knoetze</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 7, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>6 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Security"><span class="MainMenu-MainTitle">Security<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/vulnerabilities-threats" data-discover="true">Vulnerabilities & Threats</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/attacks-breaches" data-discover="true">Attacks & Breaches</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/regulatory-compliance" data-discover="true">Regulatory Compliance</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/data-privacy" data-discover="true">Data Privacy</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/cloud-security" data-discover="true">Cloud Security</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/endpoint-security" data-discover="true">Endpoint Security</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-security/identity-management-access-control" data-discover="true">Identity Mgmt & Access Control</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/it-security" data-discover="true">Security</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/it-security" data-discover="true"><span class="SubMenu-SeeMoreText">See All IT Security</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">robot and human fingers touching</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_aiMachineLearning ContentPreview-Category" href="/digital-transformation/ai-machine-learning" data-discover="true">AI & Machine Learning</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 20, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>4 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">xerox logo on sign outside xerox square building </span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_vulnerabilitiesThreats ContentPreview-Category" href="/it-security/vulnerabilities-threats" data-discover="true">Vulnerabilities & Threats</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/jai-vijayan" data-discover="true">Jai Vijayan</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 19, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Dev"><span class="MainMenu-MainTitle">Dev<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/cloud-native" data-discover="true">Cloud Native</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/programming-languages" data-discover="true">Programming Languages</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/no-code-low-code" data-discover="true">No-Code/Low-Code</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/software-development/software-development-techniques" data-discover="true">Software Development Techniques</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/software-development" data-discover="true">Dev</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/software-development" data-discover="true"><span class="SubMenu-SeeMoreText">See All Software Dev</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">an unhappy employee is surrounded by smiley faces and the words "Stay Positive"</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_careerTips ContentPreview-Category" href="/career-management/career-tips" data-discover="true">Career Tips</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns" data-discover="true">Toxic Positivity at Work Is Silencing My Team’s Concerns</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/danielle-meinert" data-discover="true">Danielle Meinert</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 21, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>2 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">software developer writing code on a laptop</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blta837190fc0e7c602/67ade2fd64f859b14b05f5fd/software-developer-code-1716x965_-_2024-10-18.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blta837190fc0e7c602/67ade2fd64f859b14b05f5fd/software-developer-code-1716x965_-_2024-10-18.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_softwareDevelopmentTechniques ContentPreview-Category" href="/software-development/software-development-techniques" data-discover="true">Software Development Techniques</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets" data-discover="true">The Overlooked Art of Software Localization for Non-Traditional Markets</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets" data-discover="true">The Overlooked Art of Software Localization for Non-Traditional Markets</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 13, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>7 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of DX"><span class="MainMenu-MainTitle">DX<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/digital-transformation/ai-machine-learning" data-discover="true">AI & Machine Learning</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/digital-transformation/edge-computing" data-discover="true">Edge Computing</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/digital-transformation/iot" data-discover="true">IoT</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/digital-transformation" data-discover="true">DX</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/digital-transformation" data-discover="true"><span class="SubMenu-SeeMoreText">See All Digital Transformation</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">robot and human fingers touching</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_aiMachineLearning ContentPreview-Category" href="/digital-transformation/ai-machine-learning" data-discover="true">AI & Machine Learning</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management" data-discover="true">The Role of Human Touch in Agentic AI Data Management</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 20, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>4 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">xerox logo on sign outside xerox square building </span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_vulnerabilitiesThreats ContentPreview-Category" href="/it-security/vulnerabilities-threats" data-discover="true">Vulnerabilities & Threats</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture" data-discover="true">Xerox Printer Vulnerabilities Enable Credential Capture</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/jai-vijayan" data-discover="true">Jai Vijayan</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 19, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Infrastructure"><span class="MainMenu-MainTitle">Infrastructure<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-infrastructure/high-performance-computing" data-discover="true">High Performance Computing</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-infrastructure/containerization" data-discover="true">Containerization</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/it-infrastructure/server-virtualization" data-discover="true">Server Virtualization</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/it-infrastructure" data-discover="true">Infrastructure</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/it-infrastructure" data-discover="true"><span class="SubMenu-SeeMoreText">See All Infrastructure</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">cloud Kubernetes helm concept with the containers</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_cloudComputing ContentPreview-Category" href="/cloud-computing" data-discover="true">Cloud Computing</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager" data-discover="true">Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/christopher-tozzi" data-discover="true">Christopher Tozzi</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 18, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>6 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">computer CPU</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blte1ae920643569ab5/67a52cba2f8fd4865d38e4c5/silicon-1716x965_-_2025-02-06.jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blte1ae920643569ab5/67a52cba2f8fd4865d38e4c5/silicon-1716x965_-_2025-02-06.jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_aiMachineLearning ContentPreview-Category" href="/digital-transformation/ai-machine-learning" data-discover="true">AI & Machine Learning</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle" data-discover="true">How Silicon Diversity Optimizes Cost, Performance Across the AI Lifecycle</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle" data-discover="true">How Silicon Diversity Optimizes Cost, Performance Across the AI Lifecycle</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/industry-perspectives" data-discover="true">Industry Perspectives</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Feb 7, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>4 Min<!-- --> <!-- -->Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of More"><span class="MainMenu-MainTitle">More<span data-component="icon" data-name="ChevronDown" class="MainMenu-SubMenuIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='21'%20height='13'%20viewBox='0%200%2021%2013'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'%20transform='translate(21)%20rotate(90)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" rel="nofollow" target="_self" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_itpb86&ch=itpnav">Newsletters</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/latest-how-to" data-discover="true">How To…?</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/program/industry-perspectives" data-discover="true">Industry Perspectives</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources" data-discover="true">Business Resources</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources?types=Survey+Report&page=1" data-discover="true">Reports/Research</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources?page=1&types=Virtual+Event&types=Webinar" data-discover="true">Online Events</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/events" data-discover="true">Live Events</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/videos" data-discover="true">Videos</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/resources?page=1&types=White+Paper" data-discover="true">White Papers</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/advertise" data-discover="true">Advertise With Us</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/about-us" data-discover="true">About Us</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent SubMenu-MoreContent_noRecent" href="/resources" data-discover="true"><span class="SubMenu-SeeMoreText">Resource Library</span><span data-component="icon" data-name="ChevronRight" class="SubMenu-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a></div></div></div></div></div></div></div></div><div class="MainMenu-SearchButtonWrapper"><button data-testid="mainMenu-SearchButton" aria-label="Open Search" class="MainMenu-SearchButton"><span data-component="icon" data-name="Search" class="MainMenu-SearchButtonIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='22'%20height='21.789'%20viewBox='0%200%2022%2021.789'%3e%3cg%20id='search_icon'%20data-name='search%20icon'%20transform='translate(-1387%20-125)'%3e%3cpath%20id='search_icon-2'%20data-name='search%20icon'%20d='M1395.176,138.7a5.606,5.606,0,1,1,5.661-5.606A5.626,5.626,0,0,1,1395.176,138.7Zm7.547,0h-.994l-.351-.336a8.02,8.02,0,0,0,1.975-5.27,8.154,8.154,0,1,0-2.856,6.142l.34.349v.984l6.289,6.217,1.875-1.856Z'%20transform='translate(0%200)'/%3e%3c/g%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div><div class="MainMenu-SearchWrapper"><div class="FullScreenBackground MainMenu-SearchBackground MainMenu-SearchBackground_withSearchBar"></div><button data-testid="mainMenu-SearchCloseButton" class="MainMenu-SearchCloseButton" aria-label="Close Search"><span data-component="icon" data-name="Close" class="MainMenu-SearchCloseIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='18.001'%20viewBox='0%200%2018%2018.001'%3e%3cpath%20id='times'%20d='M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z'%20transform='translate(-0.008%20-95.998)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='18'%20height='18.001'%20viewBox='0%200%2018%2018.001'%3e%3cpath%20id='times'%20d='M11.685,105l6.059-6.059a.9.9,0,0,0,0-1.27L16.336,96.26a.9.9,0,0,0-1.27,0l-6.059,6.06L2.948,96.261a.9.9,0,0,0-1.27,0L.27,97.668a.9.9,0,0,0,0,1.27L6.33,105,.27,111.057a.9.9,0,0,0,0,1.27l1.408,1.408a.9.9,0,0,0,1.27,0l6.059-6.06,6.059,6.059a.9.9,0,0,0,1.27,0l1.408-1.408a.9.9,0,0,0,0-1.27Z'%20transform='translate(-0.008%20-95.998)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></button></div></div></div></div></nav><section class="Layout-Section"><div id="iiris-identity" data-testid="iris-identity"></div><div data-template="article"><div class="TwoColumnLayout"><div id="portal-root"></div><div class="TwoColumnLayout-Head"><div class="ArticleBase-Header"><ul class="ArticleBase-Topics" data-testid="article-topics"><li class="ArticleBase-Topic"><a data-component="keyword" class="Keyword Keyword_variant_category Keyword_title_linuxOs" href="/operating-systems/linux-os" data-discover="true">Linux OS</a></li><li class="ArticleBase-Topic"><a data-component="keyword" class="Keyword Keyword_variant_category Keyword_title_vulnerabilitiesThreats" href="/it-security/vulnerabilities-threats" data-discover="true">Vulnerabilities & Threats</a></li><li class="ArticleBase-Topic"><a data-component="keyword" class="Keyword Keyword_variant_category Keyword_title_itSecurity" href="/it-security" data-discover="true">IT Security</a></li><li class="ArticleBase-Topic"><a data-component="keyword" class="Keyword Keyword_variant_category Keyword_title_networkingSecurity" href="/operating-systems/windows-server/networking-security" data-discover="true">Networking & Security</a></li></ul><div><h1 class="ArticleBase-HeaderTitle"><noscript><span class="ArticleBase-LargeTitle">Linux UFW (Uncomplicated Firewall) Configuration Made Easy</span></noscript><span class="ArticleBase-LargeTitle" data-testid="article-title">Linux UFW (Uncomplicated Firewall) Configuration Made Easy</span><span class="ArticleBase-DefaultTitle" data-testid="article-default-title">Linux UFW (Uncomplicated Firewall) Configuration Made Easy</span></h1><p class="ArticleBase-HeaderSummary" data-testid="article-summary">Learn how to configure and manage a firewall using UFW, a critical skill for securing Linux systems.</p></div></div></div><div class="TwoColumnLayout-Content"><div class="TwoColumnLayout-Body"><div class="ArticleBase-Body" data-testid="article-base-body"><div class="ArticleBase-Contributors" data-testid="article-base-contributors"><div class="Contributors Contributors_variant_normal Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Grant Knoetze" href="/author/grant-knoetze" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb840b8274b6e83ca/6613c9f9ddf6623b6265761c/Grant-Knoetze-cropped.jpg?width=100&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb840b8274b6e83ca/6613c9f9ddf6623b6265761c/Grant-Knoetze-cropped.jpg?width=100&auto=webp&quality=80&disable=upscale" loading="lazy" alt="Picture of Grant Knoetze" title="Picture of Grant Knoetze"/></a></div><div class="Contributors-InfoWrapper"><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/grant-knoetze" data-discover="true">Grant Knoetze</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">, <!-- -->Contributor</span><p class="Contributors-Date" data-testid="contributors-date">August 28, 2024</p></div></div><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_normal"><span data-component="icon" data-name="Clock" class="ArticleReadTime-Icon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='25'%20height='25'%20viewBox='0%200%2025%2025'%3e%3cpath%20id='clock'%20d='M20.5,8A12.5,12.5,0,1,0,33,20.5,12.5,12.5,0,0,0,20.5,8Zm0,22.581A10.081,10.081,0,1,1,30.581,20.5,10.078,10.078,0,0,1,20.5,30.581Zm3.115-5.262-4.279-3.11a.609.609,0,0,1-.247-.489V13.444a.607.607,0,0,1,.6-.6h1.613a.607.607,0,0,1,.6.6v7.142l3.367,2.45a.6.6,0,0,1,.131.847l-.948,1.305a.609.609,0,0,1-.847.131Z'%20transform='translate(-8%20-8)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='25'%20height='25'%20viewBox='0%200%2025%2025'%3e%3cpath%20id='clock'%20d='M20.5,8A12.5,12.5,0,1,0,33,20.5,12.5,12.5,0,0,0,20.5,8Zm0,22.581A10.081,10.081,0,1,1,30.581,20.5,10.078,10.078,0,0,1,20.5,30.581Zm3.115-5.262-4.279-3.11a.609.609,0,0,1-.247-.489V13.444a.607.607,0,0,1,.6-.6h1.613a.607.607,0,0,1,.6.6v7.142l3.367,2.45a.6.6,0,0,1,.131.847l-.948,1.305a.609.609,0,0,1-.847.131Z'%20transform='translate(-8%20-8)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><span>13 Min<!-- --> <!-- -->View</span></div></div><div class="ArticleVideo-Media"><div data-component="captioned-content" class="CaptionedContent"><div class="CaptionedContent-Content"><div data-component="media"><div class="Media Media_video"><iframe data-ot-ignore="true" loading="lazy" class="Media-Iframe" data-testid="media-iframe" src="https://www.youtube.com/embed/KMycRnBzDx0?si=nHUxZi_ID84Kt9v4" frameBorder="0" allow="autoplay;accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; " allowFullScreen="" aria-label="Play Audio Media" title=""></iframe></div></div></div><div class="CaptionedContent-Caption" data-testid="captioned-content-caption"><span class="CaptionedContent-CreditTo">ITPro Today</span></div></div></div><div class="SocialShare"><div data-component="social-share" class="SocialShare SocialShare_variant_button ArticleBase-SocialShare ArticleBase-SocialShare_first"><a target="_blank" rel="noreferrer" aria-label="Linkedin" href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_linkedin" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Facebook" href="http://www.facebook.com/sharer/sharer.php?u=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_facebook" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" href="http://www.twitter.com/intent/tweet?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_twitter" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Reddit" href="https://www.reddit.com/submit?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy&title=Linux%20UFW%20(Uncomplicated%20Firewall)%20Configuration%20Made%20Easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Reddit" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_reddit" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Email" href="/cdn-cgi/l/email-protection#58672b2d3a323d3b2c651431362d20780d1e0f78700d363b37352834313b392c3d3c781e312a3d2f39343471781b37363e313f2d2a392c3137367815393c3d781d392b217e393528633a373c2165117d6a682c30372d3f302c7d6a682c303d7d6a683e373434372f31363f7d6a683e2a37357d6a68110c082a377d6a680c373c39217d6a6835313f302c7d6a6831362c3d2a3d2b2c7d6a6821372d767d681c7d68197d681c7d68197d6a681431362d207d6a680d1e0f7d6a68700d363b37352834313b392c3d3c7d6a681e312a3d2f393434717d6a681b37363e313f2d2a392c3137367d6a6815393c3d7d6a681d392b217d681c7d6819302c2c282b7d6b197d6a1e7d6a1e2f2f2f76312c282a372c373c3921763b37357d6a1e3431362d2075372b7d6a1e3431362d20752d3e2f752d363b37352834313b392c3d3c753e312a3d2f393434753b37363e313f2d2a392c3137367535393c3d753d392b21"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Email" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_email" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div></div><div class="ArticleBase-BodyContent ArticleBase-BodyContent_Video" data-testid="article-base-body-content"><div data-module="content" class="ContentModule-Wrapper"><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">This tutorial covers configuring and managing a basic firewall using UFW, the uncomplicated firewall, which simplifies firewall rule management on Linux systems.</span></span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">Understanding how to set up and manage firewall rules is vital for protecting systems from unauthorized access by ensuring that only legitimate traffic is allowed while blocking potential threats. This tutorial provides practical, step-by-step guidance on using UFW's commands, enabling IT professionals to implement and customize security measures according to their needs. </span></span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">The following transcript has been edited for length and clarity. </span></span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Transcript:" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Transcript:</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Grant Knoetze: </span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Hello, and welcome to this tutorial on configuring and managing a basic firewall using UFW, the uncomplicated firewall. Using UFW is an essential skill for </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" target="_self" href="https://www.itprotoday.com/linux-os/securing-linux-systems-with-ebpf-the-future-of-in-kernel-observability-and-security">securing any Linux system</a></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. Let's dive in. </span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="What Is UFW?" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">What Is UFW?</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">What is a firewall? A firewall is a network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">What is the uncomplicated firewall? UFW, or the uncomplicated firewall, is a user-friendly frontend for managing iptables firewall rules. It simplifies the process of setting up a firewall to secure your system.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Here we are on the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" target="_self" href="https://www.itprotoday.com/microsoft-windows/free-guide-get-started-with-ubuntu">Ubuntu</a></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> community wiki for UFW, and it says: “UFW, the uncomplicated firewall, is the default firewall configuration tool for Ubuntu. It was developed to ease iptables firewall configuration. UFW provides a user-friendly way to create an IPv4 or IPv6 host-based firewall. By default, UFW is disabled.”</span></p><p data-component="related-article" class="RelatedArticle"><span data-testid="related-article-title" class="RelatedArticle-Title">Related:</span><a class="RelatedArticle-RelatedContent" href="/linux-os/how-to-implement-zero-trust-security-in-linux-environments" target="_self" data-discover="true">How To Implement Zero-Trust Security in Linux Environments</a></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Getting Started With Linux UFW" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Getting Started With Linux UFW</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Let's dive into some fundamental usage. You are going to need to open a terminal. Once you have opened your terminal, we can start with the basics of managing UFW, the uncomplicated firewall. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">The first thing you want to do is enable UFW. When you turn on UFW or enable it, it uses a default set of rules that should be fine for the average home user. In short, the default setting is:</span></p><div data-component="basic-list" class="BasicList BasicList_nestedLevel_0 BasicList_variant_unordered BasicList_limited"><ul data-testid="basic-list-unordered" class="BasicList-UnorderedList"><li><div class="BasicList-ListItem BasicList-ListItem_variant_unordered"><span data-component="icon" data-name="Circle" class="BasicList-ListIcon BasicList-ListIcon_variant_unordered" style="mask-image:url("data:image/svg+xml,%3csvg%20viewBox='0%200%2024%2024'%20aria-hidden='true'%20focusable='false'%20role='img'%20xml:space='preserve'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20fill='currentColor'%20height='100%25'%20width='10'%3e%3ccircle%20cx='12'%20cy='12'%20r='11.5'%20fill='white'%20stroke='%230b0b0b'%3e%3c/circle%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20viewBox='0%200%2024%2024'%20aria-hidden='true'%20focusable='false'%20role='img'%20xml:space='preserve'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20fill='currentColor'%20height='100%25'%20width='10'%3e%3ccircle%20cx='12'%20cy='12'%20r='11.5'%20fill='white'%20stroke='%230b0b0b'%3e%3c/circle%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><div class="BasicList-Item"><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">All incoming is denied with some exceptions to make things easier for home users.</span></p></div></div></li><li><div class="BasicList-ListItem BasicList-ListItem_variant_unordered"><span data-component="icon" data-name="Circle" class="BasicList-ListIcon BasicList-ListIcon_variant_unordered" style="mask-image:url("data:image/svg+xml,%3csvg%20viewBox='0%200%2024%2024'%20aria-hidden='true'%20focusable='false'%20role='img'%20xml:space='preserve'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20fill='currentColor'%20height='100%25'%20width='10'%3e%3ccircle%20cx='12'%20cy='12'%20r='11.5'%20fill='white'%20stroke='%230b0b0b'%3e%3c/circle%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20viewBox='0%200%2024%2024'%20aria-hidden='true'%20focusable='false'%20role='img'%20xml:space='preserve'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20fill='currentColor'%20height='100%25'%20width='10'%3e%3ccircle%20cx='12'%20cy='12'%20r='11.5'%20fill='white'%20stroke='%230b0b0b'%3e%3c/circle%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><div class="BasicList-Item"><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">All outgoing is allowed. </span></p></div></div></li></ul></div><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To enable UFW, type the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw enable</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> command. We can see that the firewall is enabled and active on system startup. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To disable UFW, you could type </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw disable</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. We can see that the firewall is stopped and disabled at the system startup. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">If you have not installed UFW on your system, you can use your package manager for Debian. Ubuntu is </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">apt</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. I will type in </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo apt install ufw</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. We can see that I have already installed the latest version. If it were not, it would be installed. If it installed but needed to be upgraded, it would be upgraded. That is </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo apt install ufw</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, and you can use whatever package manager for the distribution that you are using. </span></p><p data-component="related-article" class="RelatedArticle"><span data-testid="related-article-title" class="RelatedArticle-Title">Related:</span><a class="RelatedArticle-RelatedContent" href="/linux-os/how-to-set-up-a-secure-vpn-connection-in-linux" target="_self" data-discover="true">How To Set up a Secure VPN Connection in Linux</a></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">After having enabled/disabled UFW, if I want to see the status, I can type </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw status</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> and add the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">verbose</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> parameter to get a more verbose output. When I hit Enter, it tells me that the status is inactive. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Typing </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw enable</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> and hitting Enter will enable the firewall. I retype the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw status</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">verbose</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> command. It gives me a rich output. It tells me that the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">Status</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> is active. </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">Logging</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> is off (We will get into logging and show you how to enable logging). </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">Default</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> is deny (incoming), allow (outgoing), disabled (routed). </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">New profiles</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> – it’s skipping. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We can see all the rules here. For </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">443</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, it is “allow in” from anywhere. </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">Anywhere</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> is “allow in” from IP addresses that I have worked with in the past. </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_italic">Port 22/TCP</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> is “limited.” 22 is “allow in.” 80/TCP is “deny in,” etc. It shows us whether it is Version 6. Everything else is Version 4. </span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Allow or Deny Specific Rules" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Allow or Deny Specific Rules</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To allow connections based on a specific port or protocol, you can use </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw allow</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. The port you can put in, and the protocol is optional. To allow incoming TCP and UDP packets on port 53, I would type in: </span></p><p data-component="related-article" class="RelatedArticle"><span data-testid="related-article-title" class="RelatedArticle-Title">Related:</span><a class="RelatedArticle-RelatedContent" href="/linux-os/linux-security-in-the-cloud-era-best-practices-for-protecting-your-cloud-workloads" target="_self" data-discover="true">Linux Security in the Cloud Era: Best Practices for Protecting Your Cloud Workloads</a></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw allow 53</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">I hit Enter and have added the rule.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To allow specifically TCP packets coming in on port 53, I would enter: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw allow 53/tcp</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To allow specifically UDP communication on port 53, I could enter: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw allow 53/udp</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To deny or to create “deny” rules for the same, I could type: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny 53</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Entering this command will update the rule and deny all traffic on port 53.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To specifically deny according to protocol: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny 53/tcp</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Similarly, for UDP:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny 53/udp</span></pre><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Delete an Existing Rule " style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Delete an Existing Rule </span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To delete a rule, prefix the original rule with Delete. For example, if the original rule was </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw deny 80/tcp</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, I could prefix this with </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw delete deny</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw delete deny 80/tcp</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">I press Enter and I delete the rule. </span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Deny or Allow by Service Name" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Deny or Allow by Service Name</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">You can also allow or deny by service name since UFW reads from </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">etc</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> services. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To get a list of services, you can use </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> or not, but we can use </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">less</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">less /etc/services</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We can see a list of all our services. For example, it shows </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" target="_self" href="https://www.itprotoday.com/linux-os/how-to-remotely-manage-linux-users-and-groups">Secure Shell (SSH)</a></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> running on port 22/tcp. To traverse through </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">less</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, you can use your spacebar. To exit, you can hit the Q key.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Let’s look at how to allow by service name. For example, let's use Secure Shell: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw allow ssh</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We have updated the rule. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To deny by service name, we type: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny ssh</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We have updated the rule and denied SSH.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"></p><div class="Iframe"><iframe title="Embedded content" src="https://www.youtube.com/embed/H5AErKbqYmQ?si=aDAGSEgWKK5BYZD2&start=2006" height="315px" width="100%" allowFullScreen="" data-testid="iframe-video" loading="lazy"></iframe></div><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Enable or Disable Logging" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Enable or Disable Logging</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Let's talk about logging. Logging is helpful for troubleshooting, and it's also critical for security. For example, you would want to look at firewall logs when responding to an incident. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">You can enable logging in UFW by simply typing in: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw logging on</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">If you'd like to disable logging, you type:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw logging off</span></pre><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Advanced Syntax " style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Advanced Syntax </span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">You can also use a fuller syntax, specifying the source and destination addresses, ports, and protocol. Let's look at allowing by specific IP address. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To allow by specific IP address, I type </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw allow from</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> and then specify the IP address. For example: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw allow from 192.168.1.1</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">I press Enter and add the rule. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To deny traffic from that same IP address, I put the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">deny</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> keyword where the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">allow</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> keyword was:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny from 192.168.1.1</span></pre><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Allow by Specific Port and IP Address" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Allow by Specific Port and IP Address</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">If I want to allow from a specific port and an IP address, I can type in </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw allow from</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, then my IP address is the target (192.168.1.1, for example). I can add </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">to any port</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. I'm going to use </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">port 22</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> as an example. </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw allow from 192.168.1.1 to any port 22</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To deny, I would change the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">allow</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> keyword to </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">deny</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny from 192.168.1.1 to any port 22</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To allow by any specific port, IP address, and protocol, I use the same command and then add </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">proto</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, or protocol keyword. I add the protocol. In this case, I’m choosing TCP. </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny from 192.168.1.1 to any port 22 proto tcp</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">You can go ahead and do the same thing for another protocol, UDP:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw deny from 192.168.1.1 to any port 22 proto udp</span></pre><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Working With Numbered Rules" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Working With Numbered Rules</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">UFW stores and deals with rules in a numbered way. You can use the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">status numbered</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"> command to show the order and number of the rules:</span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw status numbered</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We can see my rules in a numbered order, from one to 23.</span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Editing Numbered Rules" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Editing Numbered Rules</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">You may delete rules using the number. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">Let's type in our </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">status numbered</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. We can identify which rule we'd like to delete. For example, we can delete rule number 10, UDP. You can use: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw delete 10</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">We see that it's deleting and would like to prompt me for a yes or no. I choose yes and delete the rule.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">When I run my </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">status numbered</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, I can see that that rule has been deleted and the list has been shifted by one. Rule number 10 is now a different rule. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To insert a numbered rule, the same numbered rule, we can type in: </span></p><pre data-component="code-block" class="CodeBlock"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">sudo ufw insert 10 allow from 192.168.1.1 to any port 53</span></pre><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">When I type </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">sudo ufw status numbered</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, we can see that rule 10, port number 53, from the specified IP address, has been inserted. </span></p><h2 class="ContentText ContentText_variant_h2 ContentText_align_left" data-testid="content-text" id="Recap" style="scroll-margin-top:10rem;scroll-snap-margin-top:10rem"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">Recap</span></h2><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">To recap, we've been through the basics of using the uncomplicated firewall. For more resources and help, you can use the </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link ContentText-BodyTextChunk_bold" target="_self" href="https://www.itprotoday.com/linux-os/the-best-linux-commands-a-comprehensive-guide-for-all-users">man</a></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" target="_self" href="https://www.itprotoday.com/linux-os/the-best-linux-commands-a-comprehensive-guide-for-all-users"> pages in Linux</a></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">. We can see that our manual pages exist for UFW. Use your spacebar to go through them and use Q to quit. Or you could type in </span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text"><span class="ContentText-BodyTextChunk ContentText-BodyTextChunk_bold">ufw --help</span></span><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">, and we have simplified help. </span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNormal" data-testid="content-text">I hope you've enjoyed this tutorial. I look forward to seeing you on the next one.</span></p></div></div><div class="SocialShare"><div data-component="social-share" class="SocialShare SocialShare_variant_button ArticleBase-SocialShare ArticleBase-SocialShare_second"><a target="_blank" rel="noreferrer" aria-label="Linkedin" href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_linkedin" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Facebook" href="http://www.facebook.com/sharer/sharer.php?u=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_facebook" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" href="http://www.twitter.com/intent/tweet?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_twitter" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Reddit" href="https://www.reddit.com/submit?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy&title=Linux%20UFW%20(Uncomplicated%20Firewall)%20Configuration%20Made%20Easy"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Reddit" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_reddit" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Free%206.1.1%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license/free%20(Icons:%20CC%20BY%204.0,%20Fonts:%20SIL%20OFL%201.1,%20Code:%20MIT%20License)%20Copyright%202022%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M440.3%20203.5c-15%200-28.2%206.2-37.9%2015.9-35.7-24.7-83.8-40.6-137.1-42.3L293%2052.3l88.2%2019.8c0%2021.6%2017.6%2039.2%2039.2%2039.2%2022%200%2039.7-18.1%2039.7-39.7s-17.6-39.7-39.7-39.7c-15.4%200-28.7%209.3-35.3%2022l-97.4-21.6c-4.9-1.3-9.7%202.2-11%207.1L246.3%20177c-52.9%202.2-100.5%2018.1-136.3%2042.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6%200-73.8%2074.6-22.9%20100.1-1.8%207.9-2.6%2016.3-2.6%2024.7%200%2083.8%2094.4%20151.7%20210.3%20151.7%20116.4%200%20210.8-67.9%20210.8-151.7%200-8.4-.9-17.2-3.1-25.1%2049.9-25.6%2031.5-99.7-23.8-99.7zM129.4%20308.9c0-22%2017.6-39.7%2039.7-39.7%2021.6%200%2039.2%2017.6%2039.2%2039.7%200%2021.6-17.6%2039.2-39.2%2039.2-22%20.1-39.7-17.6-39.7-39.2zm214.3%2093.5c-36.4%2036.4-139.1%2036.4-175.5%200-4-3.5-4-9.7%200-13.7%203.5-3.5%209.7-3.5%2013.2%200%2027.8%2028.5%20120%2029%20149%200%203.5-3.5%209.7-3.5%2013.2%200%204.1%204%204.1%2010.2.1%2013.7zm-.8-54.2c-21.6%200-39.2-17.6-39.2-39.2%200-22%2017.6-39.7%2039.2-39.7%2022%200%2039.7%2017.6%2039.7%2039.7-.1%2021.5-17.7%2039.2-39.7%2039.2z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Email" href="/cdn-cgi/l/email-protection#66591513040c0305125b2a0f08131e46332031464e330805090b160a0f050712030246200f140311070a0a4f46250908000f01131407120f0908462b070203462307151f40070b165d0409021f5b2f435456120e0913010e12435456120e0343545600090a0a09110f08014354560014090b4354562f32361409435456320902071f4354560b0f010e124354560f081203140315124354561f0913484356224356274356224356274354562a0f08131e4354563320314354564e330805090b160a0f0507120302435456200f140311070a0a4f435456250908000f01131407120f09084354562b0702034354562307151f4356224356270e12121615435527435420435420111111480f12161409120902071f4805090b4354200a0f08131e4b09154354200a0f08131e4b1300114b130805090b160a0f05071203024b000f140311070a0a4b050908000f01131407120f09084b0b0702034b0307151f"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_button"><span data-component="icon" data-name="Email" class="SocialShare-Icon SocialShare-Icon_variant_button SocialShare-Icon_type_email" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='33.333'%20height='25'%20viewBox='0%200%2033.333%2025'%3e%3cpath%20id='Icon_awesome-envelope'%20data-name='Icon%20awesome-envelope'%20d='M32.7,12.755a.392.392,0,0,1,.632.306V26.375A3.126,3.126,0,0,1,30.208,29.5H3.125A3.126,3.126,0,0,1,0,26.375V13.068a.389.389,0,0,1,.632-.306c1.458,1.133,3.392,2.572,10.033,7.4,1.374,1,3.691,3.112,6,3.1,2.324.02,4.688-2.135,6.009-3.1C29.316,15.333,31.243,13.888,32.7,12.755ZM16.667,21.167c1.51.026,3.685-1.9,4.779-2.7,8.639-6.27,9.3-6.816,11.289-8.379a1.558,1.558,0,0,0,.6-1.23V7.625A3.126,3.126,0,0,0,30.208,4.5H3.125A3.126,3.126,0,0,0,0,7.625V8.862a1.567,1.567,0,0,0,.6,1.23c1.992,1.556,2.65,2.109,11.289,8.379C12.982,19.266,15.156,21.193,16.667,21.167Z'%20transform='translate(0%20-4.5)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div></div><div class="ArticleBase-ContributorsWrapper"><h2 class="ArticleBase-ContributorsTitle">About the Author</h2><div class="ArticleBase-ContributorsSummary"><div data-component="contributor-summary" class="ContributorSummary ContributorSummary_variant_author"><div class="ContributorSummary-ImageWrapper ContributorSummary-ImageWrapper_variant_author"><a data-testid="contributor-summary-img-link" href="/author/grant-knoetze" data-discover="true"><img data-component="image" class="ContributorSummary-Image ContributorSummary-Image_variant_author" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb840b8274b6e83ca/6613c9f9ddf6623b6265761c/Grant-Knoetze-cropped.jpg?width=400&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb840b8274b6e83ca/6613c9f9ddf6623b6265761c/Grant-Knoetze-cropped.jpg?width=400&auto=webp&quality=80&disable=upscale" loading="lazy" alt="Grant Knoetze" title="Grant Knoetze"/></a></div><div class="ContributorSummary-InfoWrapper ContributorSummary-InfoWrapper_variant_author"><div class="ContributorSummary-TitleWrapper"><a data-testid="contributor-summary-title-link" href="/author/grant-knoetze" data-discover="true"><p class="ContributorSummary-Title ContributorSummary-Title_variant_author" data-testid="contributor-summary-title">Grant Knoetze</p></a></div><div class="ContributorSummary-SubTitleWrapper ContributorSummary-SubTitleWrapper_variant_author"><p class="ContributorSummary-SubTitle ContributorSummary-SubTitle_variant_author" data-testid="contributor-summary-subtitle">Contributor</p></div><div class="ContributorSummary-ContentWrapper ContributorSummary-ContentWrapper_variant_author"><div class="ContributorSummary-Content ContributorSummary-Content_variant_author" data-testid="contributor-summary-content"><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">Grant Knoetze is a cybersecurity analyst with a special interest in DFIR, programming languages, incident response, red-teaming, and malware analysis. His full-time job includes teaching and instructing in various topics from basic Linux all the way through to malware incident response, and other advanced topics. He is also a speaker at various conferences worldwide.</span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" target="_blank" href="http://www.grantknoetze.com">www.grantknoetze.com</a></span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text"><a class="ContentText-BodyTextChunk ContentText-BodyTextChunk_link" target="_blank" href="https://github.com/Grant-Knoetze">https://github.com/Grant-Knoetze</a></span></p><p class="ContentParagraph ContentParagraph_align_left" data-testid="content-paragraph"><span class="ContentText ContentText_variant_bodyNoneStyle" data-testid="content-text">https://www.linkedin.com/in/grant-knoetze-563b0b1b6/</span></p></div></div></div><div class="ContributorSummary-SeeMore"><a data-component="button" class="Button Button_size_medium Button_variant_textLink" rel="" href="/author/grant-knoetze" data-discover="true"><span class="Button-ContentWrapper"><span class="ContributorSummary-SeeMoreText"><span>See more from <!-- -->Grant Knoetze</span><span data-component="icon" data-name="ChevronRight" class="ContributorSummary-SeeMoreIcon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></span></a></div></div></div></div><div data-module="newsletter-signup-promo"><div class="SubscribeBannerTopicPage SubscribeBannerTopicPage_mode_dark SubscribeBannerTopicPage_variant_vertical ArticleBase-Newsletter"><div class="SubscribeBannerTopicPage-Content"><div class="SubscribeBannerTopicPage-Title" data-testid="subscribeBannerTopicPage_title">Sign up for the ITPro Today newsletter</div><div class="SubscribeBannerTopicPage-Message" data-testid="subscribeBannerTopicPage_message">Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.</div><div class="SubscribeBannerTopicPage-Button" data-testid="subscribe-banner-topic-page-button"><a data-component="button" data-testid="bannerTopicPageNewsletterButton" class="Button Button_size_medium Button_variant_secondaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-banner" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_itpb86&ch=itpsitebtn" target="_blank"><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div></div></div><p class="IirisRecommendation-Title">You May Also Like</p><hr class="IirisRecommendation-TitleHr"/><div bordercolor="#e6e6e6" borderRadius="4" brand_family="enterpriseit" cardwidth="210px" class="iris-recommend iris-recommend-non-sticky" columns="2" data-component="iris-recommendation" division="it" dropShadow="#FFEB00" entity="content" entitytagbackground="#333333BF" entitytagbordercolor="#333333" entitytagfont="#ffffff" id="widget-1717150909887" imageHeight="182" imagePosition="vertical" imageWidth="324" recipe="related-items" redirectmode="same" rows="2" showborder="yes" showby="" showentitytag="yes" showtime="" title="" widgetType="grid" brand="itprotoday" itemUrl="http://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy" style="max-width:1100px"></div><div><div class="ArticleBase-AdSponsored"></div></div></div></div><div class="TwoColumnLayout-Sidebar"><div class="Sidebar" data-module="sidebar"><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_default"><div class="ContentCards-Header ContentCards-Header_default" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Editor's Choice</h3></div><div class="ContentCards-Content ContentCards-Content_default"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">jobs key on keyboard</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blted009d53042b6a96/673dc873f59c3326ad835a0e/jobs-key-1716x965_-_2024-08-21.jpg?width=300&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blted009d53042b6a96/673dc873f59c3326ad835a0e/jobs-key-1716x965_-_2024-08-21.jpg?width=300&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_careerManagement HorizontalCard-Keyword" href="/career-management" data-discover="true">Career Management</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce" data-discover="true">IT Jobs Outlook 2025: Evolving Skills, AI, Workplace Flexibility Will Shape IT Workforce</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce" data-discover="true">IT Jobs Outlook 2025: Evolving Skills, AI, Workplace Flexibility Will Shape IT Workforce</a></div><p class="HorizontalCard-Date" data-testid="horizontalCardDate">Nov 20, 2024</p></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">an it pro is disappointed as a poster for sustainability is switched with one for financial results and garbage piles up next to a recycling bin</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt8e3cff5562b9ae01/67462526b7779a7c7bca6346/green_IT_sustainability_hero.gif?width=300&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt8e3cff5562b9ae01/67462526b7779a7c7bca6346/green_IT_sustainability_hero.gif?width=300&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_greenIt HorizontalCard-Keyword" href="/it-management/it-sustainability/green-it" data-discover="true">Green IT</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-" data-discover="true">How Do I Advocate for Green IT Without Being Dismissed as a Lorax?</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-" data-discover="true">How Do I Advocate for Green IT Without Being Dismissed as a Lorax?</a></div><p class="HorizontalCard-Date" data-testid="horizontalCardDate">Nov 27, 2024</p></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">person using a laptop with the Ubuntu logo on its scree</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt169bb0721a0b9a6d/67401d99c70a870d4f57da8d/Ubuntu-1716x965_-_2024-11-22.jpg?width=300&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt169bb0721a0b9a6d/67401d99c70a870d4f57da8d/Ubuntu-1716x965_-_2024-11-22.jpg?width=300&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_itOperations HorizontalCard-Keyword" href="/it-management/it-operations" data-discover="true">IT Operations</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu" data-discover="true">3 Simple Ways to Install and Run a Virtual Machine on Ubuntu</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu" data-discover="true">3 Simple Ways to Install and Run a Virtual Machine on Ubuntu</a></div><p class="HorizontalCard-Date" data-testid="horizontalCardDate">Nov 22, 2024</p></div></div></div></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-component="content-list" class="ContentList"><div class="ContentList-Header"><span data-component="icon" data-name="Document" class="ContentList-Icon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='10.5'%20height='14'%20viewBox='0%200%2010.5%2014'%3e%3cpath%20id='Icon_awesome-file-alt'%20data-name='Icon%20awesome-file-alt'%20d='M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='10.5'%20height='14'%20viewBox='0%200%2010.5%2014'%3e%3cpath%20id='Icon_awesome-file-alt'%20data-name='Icon%20awesome-file-alt'%20d='M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span><span class="ContentList-Title" data-testid="content-list-title">Exclusive ITPro Resources</span></div><ul class="ContentList-List"><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/devops/itpro-today-s-2024-state-of-devops-report" target="" data-discover="true"><p class="ContentList-ListItemTitle">ITPro Today’s 2024 State of DevOps Report</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Dec 16, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>2 Min<!-- --> <!-- -->Read</span></div></div></span></li><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" target="" data-discover="true"><p class="ContentList-ListItemTitle">BCDR Basics: A Quick Reference Guide for Business Continuity & Disaster Recovery</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Oct 10, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></span></li><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/career-management/itpro-today-s-2024-it-priorities-report" target="" data-discover="true"><p class="ContentList-ListItemTitle">ITPro Today’s 2024 IT Priorities Report</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Sep 25, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></span></li><li class="ContentList-ListItem"><a data-testid="content-list-item-title" href="/career-management/tech-careers-quick-reference-guide-to-it-job-titles" target="" data-discover="true"><p class="ContentList-ListItemTitle">Tech Careers: Quick Reference Guide to IT Job Titles</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Sep 13, 2024<div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span>1 Min<!-- --> <!-- -->Read</span></div></div></span></li></ul><div class="ContentList-CTAButton"><span data-component="button" role="presentation" class="Button Button_size_medium Button_variant_textLink"><span class="Button-ContentWrapper"><a class="ContentList-CTAText" rel="noreferrer" href="/documents" target="_blank" data-discover="true">See all ITPro Resources</a></span><span data-component="icon" data-name="ChevronRight" class="Button-Icon Button-Icon_position_right" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='13'%20height='21'%20viewBox='0%200%2013%2021'%3e%3cpath%20id='Icon_awesome-chevron-right'%20data-name='Icon%20awesome-chevron-right'%20d='M12.655,11.316,3.122,20.662a1.194,1.194,0,0,1-1.665,0L.345,19.572a1.138,1.138,0,0,1,0-1.63L7.9,10.5.343,3.058a1.138,1.138,0,0,1,0-1.63L1.457.338a1.194,1.194,0,0,1,1.665,0l9.533,9.346A1.138,1.138,0,0,1,12.655,11.316Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_default"><div class="ContentCards-Header ContentCards-Header_default" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Featured Technical Explainers</h3></div><div class="ContentCards-Content ContentCards-Content_default"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">AI chip</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfec5fcbd31c7f2a6/673b100cd675084d0707e288/AI-chip-1716x965_-_2024-11-18.jpg?width=300&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfec5fcbd31c7f2a6/673b100cd675084d0707e288/AI-chip-1716x965_-_2024-11-18.jpg?width=300&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_cloudComputing HorizontalCard-Keyword" href="/cloud-computing" data-discover="true">Cloud Computing</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads" data-discover="true">Cloud vs. On-Prem AI Accelerators: Choosing the Best Fit for Your AI Workloads</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads" data-discover="true">Cloud vs. On-Prem AI Accelerators: Choosing the Best Fit for Your AI Workloads</a></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">SaaS concept on a tablet</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd277e0c4548d3c42/673278ac8d8bc463268a48b4/SaaS-1716x965_-_2024-11-11.jpg?width=300&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd277e0c4548d3c42/673278ac8d8bc463268a48b4/SaaS-1716x965_-_2024-11-11.jpg?width=300&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_cloudComputing HorizontalCard-Keyword" href="/cloud-computing" data-discover="true">Cloud Computing</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees" data-discover="true">Why SaaS Backup Matters: Protecting Data Beyond Vendor Guarantees</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees" data-discover="true">Why SaaS Backup Matters: Protecting Data Beyond Vendor Guarantees</a></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_default" data-testid="content-preview-default"><div class="ContentPreview" data-module="content-preview" data-variant="card-horizontal"><div class="HorizontalCard"><div class="HorizontalCard-ImageWrapper"><a href="/devops/devops-key-to-faster-more-efficient-government-software-development" data-discover="true"><span class="HorizontalCard-ImageScreenReaderText">DevOps logo on top of code</span><img data-component="image" class="HorizontalCard-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltdf272a7a39b366c2/672b48253c936766d5282090/DevOps-code-1716x965_-_2024-09-06.jpg?width=300&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltdf272a7a39b366c2/672b48253c936766d5282090/DevOps-code-1716x965_-_2024-09-06.jpg?width=300&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></a></div><div class="HorizontalCard-ContentWrapper"><div class="HorizontalCard-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_devOps HorizontalCard-Keyword" href="/it-management/devops" data-discover="true">DevOps</a></div><div class="HorizontalCard-TitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-default-title" href="/devops/devops-key-to-faster-more-efficient-government-software-development" data-discover="true">DevOps: Key to Faster, More Efficient Government Software Development</a></div><div class="HorizontalCard-MobileTitleWrapper"><a class="HorizontalCard-Title" data-testid="preview-mobile-title" href="/devops/devops-key-to-faster-more-efficient-government-software-development" data-discover="true">DevOps: Key to Faster, More Efficient Government Software Development</a></div></div></div></div></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="newsletter-signup-promo"><div class="SubscribeBanner SubscribeBanner_mode_dark SubscribeBanner_variant_vertical"><div class="SubscribeBanner-Wrapper"><div class="SubscribeBanner-Title" data-testid="subscribeBanner_title">Sign up for the ITPro Today newsletter</div><div class="SubscribeBanner-Message" data-testid="subscribeBanner_message">Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.</div><div class="SubscribeBanner-Button"><a data-component="button" data-testid="bannerNewsletterbutton" class="Button Button_size_medium Button_variant_secondaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-banner" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_itpb86&ch=itpsitebtn" target="_blank"><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_column"><div class="ContentCards-Header ContentCards-Header_column" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Recent What Is</h3></div><div class="ContentCards-Content ContentCards-Content_column"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">cartoon shows a person next to a checklist and several icons that represent disaster scenarios</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd6267f0056e427cb/6707f1e94c215e0bdbe8db2f/image-1795x965_(2).jpg?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd6267f0056e427cb/6707f1e94c215e0bdbe8db2f/image-1795x965_(2).jpg?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_disasterRecovery ContentPreview-Category" href="/data-storage/disaster-recovery" data-discover="true">Disaster Recovery</a><a class="ContentPreview-IconWrapper" title="Link to all document" data-testid="content-preview-icon-link" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true"><span data-component="icon" data-name="Document" class="ContentPreview-Icon" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='10.5'%20height='14'%20viewBox='0%200%2010.5%2014'%3e%3cpath%20id='Icon_awesome-file-alt'%20data-name='Icon%20awesome-file-alt'%20d='M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='10.5'%20height='14'%20viewBox='0%200%2010.5%2014'%3e%3cpath%20id='Icon_awesome-file-alt'%20data-name='Icon%20awesome-file-alt'%20d='M6.125,3.719V0H.656A.655.655,0,0,0,0,.656V13.344A.655.655,0,0,0,.656,14H9.844a.655.655,0,0,0,.656-.656V4.375H6.781A.658.658,0,0,1,6.125,3.719Zm1.75,6.453a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V9.953a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.75a.329.329,0,0,1-.328.328H2.953a.329.329,0,0,1-.328-.328V8.2a.329.329,0,0,1,.328-.328H7.547a.329.329,0,0,1,.328.328Zm0-1.969v.219A.329.329,0,0,1,7.547,7H2.953a.329.329,0,0,1-.328-.328V6.453a.329.329,0,0,1,.328-.328H7.547A.329.329,0,0,1,7.875,6.453ZM10.5,3.333V3.5H7V0h.167a.656.656,0,0,1,.465.191l2.677,2.68A.654.654,0,0,1,10.5,3.333Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true">BCDR Basics: A Quick Reference Guide for Business Continuity & Disaster Recovery</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery" data-discover="true">BCDR Basics: A Quick Reference Guide for IT Pros</a></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/powershell/introduction-to-powershell-environment-variables" data-discover="true"><div class="ContentPreview-ImageContainer"><span data-testid="content-preview-screen-reader-text" class="ContentPreview-ImageScreenReaderText">technology interface with a person's hand drawing gears and cogs</span><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfffa964ee37aaf1e/66f6ee6fe8a6b02af4dab7fe/powershell_environment_variables_chart.png?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfffa964ee37aaf1e/66f6ee6fe8a6b02af4dab7fe/powershell_environment_variables_chart.png?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="" title=""/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_powerShell ContentPreview-Category" href="/operating-systems/powershell" data-discover="true">PowerShell</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/powershell/introduction-to-powershell-environment-variables" data-discover="true">Introduction To PowerShell Environment Variables</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/powershell/introduction-to-powershell-environment-variables" data-discover="true">Introduction To PowerShell Environment Variables</a></div></div></div></div></div></div></div></div></div></div></div></div></div></div></section><footer data-module="footer" class="Footer"><div class="Footer-Background"></div><div data-testid="logo" class="Footer-LogoContainer Footer-LogoContainer_length_2"><a href="/" data-discover="true"><img title="ITPro Today Logo" data-component="image" class="Footer-LogoImage Footer-LogoImage_length_2" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6988047454ea0f07/65def58180429104075f67f7/Logo_-_IT_Pro_Today@2x.png?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6988047454ea0f07/65def58180429104075f67f7/Logo_-_IT_Pro_Today@2x.png?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="ITPro Today Logo"/></a></div><div data-testid="LinkSection" class="LinkSection LinkSection_length_2"><h5 class="LinkSection-Title" data-testid="link-section-title">Discover More</h5><div class="LinkSection-LinksWrapper"><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.datacenterknowledge.com/">Data Center Knowledge</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.informationweek.com/">InformationWeek</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.networkcomputing.com/">Network Computing</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://www.nojitter.com/">No Jitter</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://afcom.com/">AFCOM</a></div></div><div data-testid="LinkSection" class="LinkSection LinkSection_length_2"><h5 class="LinkSection-Title" data-testid="link-section-title">Working With Us</h5><div class="LinkSection-LinksWrapper"><a class="LinkSection-Link" rel="noreferrer" href="/about-us" target="_blank" data-discover="true">About Us</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://info.wrightsmedia.com/informa-licensing-reprints-request">Reprints</a><a class="LinkSection-Link" rel="noreferrer" href="/advertise" target="_blank" data-discover="true">Advertise</a><a class="LinkSection-Link" rel="noreferrer" href="/contact-us" target="_blank" data-discover="true">Contact Us</a></div></div><div data-testid="registration" class="Footer-RegistrationWrapper"><div class="RegistrationSection RegistrationSection_linkSectionLength_2"><h5 class="RegistrationSection-Title">Join Us</h5><div class="Layout-Register Layout-Register_variant_footer"></div><div class="Layout-NewsLetter Layout-NewsLetter_variant_footer"><div data-module="newsletter-signup-promo"><a data-component="button" data-testid="footerNewsletterButton" class="Button Button_size_medium Button_variant_primaryFilled" rel="nofollow" data-action-type="sign-up" data-name="subscribe-footer" href="https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_itpb86&ch=itpsitebtn" target="_blank"><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div></div></div><div data-testid="social" class="SocialSection SocialSection_linkSectionLength_2"><h5 class="SocialSection-Title">Follow Us</h5><div data-component="social-share" class="SocialShare SocialShare_variant_layout"><a target="_blank" rel="noreferrer" aria-label="Facebook" href="https://www.facebook.com/ITProToday/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_facebook" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20320%20512'%3e%3cpath%20d='M279.14%20288l14.22-92.66h-88.91v-60.13c0-25.35%2012.42-50.06%2052.24-50.06h40.42V6.26S260.43%200%20225.36%200c-73.22%200-121.08%2044.38-121.08%20124.72v70.62H22.89V288h81.39v224h100.17V288z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" href="https://twitter.com/ITProToday"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_twitter" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3c!--!%20Font%20Awesome%20Pro%206.4.2%20by%20@fontawesome%20-%20https://fontawesome.com%20License%20-%20https://fontawesome.com/license%20(Commercial%20License)%20Copyright%202023%20Fonticons,%20Inc.%20--%3e%3cpath%20d='M389.2%2048h70.6L305.6%20224.2%20487%20464H345L233.7%20318.6%20106.5%20464H35.8L200.7%20275.5%2026.8%2048H172.4L272.9%20180.9%20389.2%2048zM364.4%20421.8h39.1L151.1%2088h-42L364.4%20421.8z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Linkedin" href="https://www.linkedin.com/company/itpro-today/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_linkedin" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20448%20512'%3e%3cpath%20d='M100.28%20448H7.4V148.9h92.88zM53.79%20108.1C24.09%20108.1%200%2083.5%200%2053.8a53.79%2053.79%200%200%201%20107.58%200c0%2029.7-24.1%2054.3-53.79%2054.3zM447.9%20448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29%200-55.69%2037.7-55.69%2076.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5%2042.69-48.3%2087.88-48.3%2094%200%20111.28%2061.9%20111.28%20142.3V448z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Youtube" href="https://www.youtube.com/channel/UCedUgT8R7qC3vsOSxXS5-ZA"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="Youtube" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_youtube" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20576%20512'%3e%3cpath%20d='M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20viewBox='0%200%20576%20512'%3e%3cpath%20d='M549.655%20124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781%2064%20288%2064%20288%2064S117.22%2064%2074.629%2075.486c-23.497%206.322-42.003%2024.947-48.284%2048.597-11.412%2042.867-11.412%20132.305-11.412%20132.305s0%2089.438%2011.412%20132.305c6.281%2023.65%2024.787%2041.5%2048.284%2047.821C117.22%20448%20288%20448%20288%20448s170.78%200%20213.371-11.486c23.497-6.321%2042.003-24.171%2048.284-47.821%2011.412-42.867%2011.412-132.305%2011.412-132.305s0-89.438-11.412-132.305zm-317.51%20213.508V175.185l142.739%2081.205-142.739%2081.201z'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_blank" rel="noreferrer" aria-label="GoogleNews" href="https://news.google.com/publications/CAAqKQgKIiNDQklTRkFnTWFoQUtEbWwwY0hKdmRHOWtZWGt1WTI5dEtBQVAB"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="GoogleNews" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_googleNews" style="mask-image:url("data:image/svg+xml,%3csvg%20id='Capa_1'%20enable-background='new%200%200%20512.288%20512.288'%20height='512'%20viewBox='0%200%20512.288%20512.288'%20width='512'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20d='m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z'/%3e%3cpath%20d='m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z'/%3e%3cpath%20d='m179.256%20101.453-51.436-10.231-4.238%2021.306z'/%3e%3cpath%20d='m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z'/%3e%3cpath%20d='m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20id='Capa_1'%20enable-background='new%200%200%20512.288%20512.288'%20height='512'%20viewBox='0%200%20512.288%20512.288'%20width='512'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20d='m91.734%20118.863%2012.516-62.917%20151.894%2030.213%20151.895-30.213%2012.515%2062.917%2024.09%204.791v-107.991h-377v107.991z'/%3e%3cpath%20d='m512.288%20167.697-85.399-16.987%2010.127%2050.915h37.628v155.322z'/%3e%3cpath%20d='m179.256%20101.453-51.436-10.231-4.238%2021.306z'/%3e%3cpath%20d='m406.429%20201.625-21.961-110.403-384.468%2076.475%2037.644%20189.25v-155.322z'/%3e%3cpath%20d='m444.644%20231.625h-377v265h377zm-127%20117.5h82v30h-82zm82-60v30h-82v-30zm-199.5%20162.5c-48.248%200-87.5-39.252-87.5-87.5s39.252-87.5%2087.5-87.5c22.574%200%2044.005%208.572%2060.345%2024.138l-20.692%2021.722c-10.736-10.228-24.818-15.86-39.653-15.86-31.706%200-57.5%2025.794-57.5%2057.5s25.794%2057.5%2057.5%2057.5c26.518%200%2048.901-18.046%2055.516-42.5h-55.516v-30h87.5v15c0%2048.248-39.252%2087.5-87.5%2087.5zm117.5-42.5h82v30h-82z'/%3e%3c/g%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a><a target="_self" rel="noreferrer" aria-label="RSS" href="https://www.itprotoday.com/rss.xml"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" data-name="RSS" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_rss" style="mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='25'%20height='25'%20viewBox='0%200%2025%2025'%3e%3cpath%20id='Icon_awesome-rss'%20data-name='Icon%20awesome-rss'%20d='M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z'%20transform='translate(0%20-2.25)'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='currentColor'%20width='25'%20height='25'%20viewBox='0%200%2025%2025'%3e%3cpath%20id='Icon_awesome-rss'%20data-name='Icon%20awesome-rss'%20d='M7.147,23.676A3.574,3.574,0,1,1,3.574,20.1,3.574,3.574,0,0,1,7.147,23.676Zm9.8,2.637A16.968,16.968,0,0,0,.937,10.3.892.892,0,0,0,0,11.193v2.682a.893.893,0,0,0,.831.894,12.5,12.5,0,0,1,11.65,11.65.893.893,0,0,0,.894.831h2.682a.892.892,0,0,0,.893-.937Zm8.05.016A25.017,25.017,0,0,0,.921,2.251.892.892,0,0,0,0,3.144V5.826a.9.9,0,0,0,.862.893A20.539,20.539,0,0,1,20.531,26.388a.9.9,0,0,0,.893.862h2.682A.892.892,0,0,0,25,26.329Z'%20transform='translate(0%20-2.25)'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain"></span></span></a></div></div><div class="CopyrightsSection"><div class="CopyrightsSection-Background"></div><div data-testid="copyrights" class="CopyrightsSection-Wrapper"><a data-testid="businessUnit" class="CopyrightsSection-BusinessLink" target="_blank" href="https://www.informa.com/"><img title="Informa" data-component="image" class="CopyrightsSection-BusinessImage" data-src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbaa492998ab75f/674ef556a2308a7b8e6c5d5f/Informa_Logo_OneLine_Graduated_White_RGB.png?width=700&auto=webp&quality=80&disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbaa492998ab75f/674ef556a2308a7b8e6c5d5f/Informa_Logo_OneLine_Graduated_White_RGB.png?width=700&auto=webp&quality=80&disable=upscale" loading="lazy" alt="Informa"/></a><div class="CopyrightsSection-TextWrapper"><p data-testid="copyrightText" class="CopyrightsSection-Text"><span class="CopyrightsSection-TextBlock"></span>Copyright © 2025. This website is owned and operated by Informa TechTarget, part of a global network that informs, influences and connects the world’s technology buyers and sellers. All copyright resides with them. Informa PLC’s registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. TechTarget, Inc.’s registered office is 275 Grove St. Newton, MA 02466.</p><div data-testid="copyrightLinks" class="CopyrightsSection-LinksWrapper CopyrightsSection-LinksWrapper_hasLinks"><a class="CopyrightsSection-Link" target="_blank" href="https://www.techtarget.com/">Home<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://privacyportal-eu-cdn.onetrust.com/dsarwebform/c1f53e84-9f05-4169-a854-85052b63c50b/5f26b553-52cc-4973-a761-295d5634a6b6.html">CCPA: Do not sell my personal info<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" href="/cookie-policy" target="_blank" data-discover="true">Cookies<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://www.techtarget.com/privacy-policy/">Privacy<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://tech.informa.com/terms-and-conditions">Terms</a></div></div></div></div></footer></div></div></main><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>((storageKey2, restoreKey) => { if (!window.history.state || !window.history.state.key) { let key = Math.random().toString(32).slice(2); window.history.replaceState({ key }, ""); } try { let positions = JSON.parse(sessionStorage.getItem(storageKey2) || "{}"); let storedY = positions[restoreKey || window.history.state.key]; if (typeof storedY === "number") { window.scrollTo(0, storedY); } } catch (error) { console.error(error); sessionStorage.removeItem(storageKey2); } })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false},"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type="module" async="">; import * as route0 from "/assets/root-BIuf-57F.js"; import * as route1 from "/assets/_topic._slug._index-NLhdOpms.js"; window.__reactRouterManifest = { "entry": { "module": "/assets/entry.client-fWB18xdV.js", "imports": [ "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/index-BlRIwUgC.js" ], "css": [] }, "routes": { "root": { "id": "root", "path": "", "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-BIuf-57F.js", "imports": [ "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/index-BlRIwUgC.js", "/assets/with-props-C4rFUyxV.js", "/assets/gtm-DGm0KW_T.js", "/assets/contentPreview-raReixWB.js", "/assets/_-BJdr63HM.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/provider-vRHVWpv0.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/socialShare-BbqkDzDu.js", "/assets/link-C1MkzDH5.js", "/assets/button-DlgCHeeG.js", "/assets/util-BlbSWXsE.js", "/assets/searchBar-CEbzLjII.js", "/assets/useSearchBar-B0qpfoK9.js", "/assets/navigation-BPrJWSO7.js", "/assets/redirection-DiAII56c.js", "/assets/meta-DL0KpjEK.js", "/assets/form-5uUV5058.js" ], "css": [] }, "routes/$topic.$slug._index": { "id": "routes/$topic.$slug._index", "parentId": "root", "path": ":topic/:slug", "index": true, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_topic._slug._index-NLhdOpms.js", "imports": [ "/assets/with-props-C4rFUyxV.js", "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/_-BJdr63HM.js", "/assets/gtm-DGm0KW_T.js", "/assets/contentPreview-raReixWB.js", "/assets/sidebar-C38SyLXI.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/articleMultiSection-B_lQ5uys.js", "/assets/contentDomain.generated-DIEwSG95.js", "/assets/provider-vRHVWpv0.js", "/assets/button-DlgCHeeG.js", "/assets/topicList-DLI_z99T.js", "/assets/gridLayout-wIbp2Hs_.js", "/assets/featureImageHeader-B2n6UlsK.js", "/assets/link-C1MkzDH5.js", "/assets/useWeatherWidget-CqdUxz0N.js", "/assets/string-BS_NwYxO.js", "/assets/meta-DL0KpjEK.js", "/assets/weatherWidget-BYzhjHC9.js", "/assets/changeLocationBar-BNl0rC1C.js", "/assets/form-5uUV5058.js", "/assets/contentCards-aFwo1o7S.js", "/assets/videoPlaylist-BaLxtSEs.js", "/assets/toNumber-DCajaT_r.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/index-BlRIwUgC.js", "/assets/socialShare-BbqkDzDu.js", "/assets/contributorSummary-CYbbZoZR.js", "/assets/programHeader-UEd8-rbR.js", "/assets/categoryHeader-BNorRpUl.js", "/assets/redirection-DiAII56c.js", "/assets/resources-DIZqnfs4.js", "/assets/index-BObwWQ7a.js", "/assets/breadcrumb-D99WjBeI.js", "/assets/listContent-DPrFxO8G.js", "/assets/utils-Bn24zYNJ.js", "/assets/pagination-CotFOi0g.js", "/assets/commodityPrices-CuYN6Jxx.js", "/assets/_getPrototype-3cCw-LUg.js", "/assets/useStorage-gorQNo4e.js" ], "css": [] }, "routes/_index": { "id": "routes/_index", "parentId": "root", "index": true, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_index-fCp8yBJU.js", "imports": [ "/assets/with-props-C4rFUyxV.js", "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/_-BJdr63HM.js", "/assets/gtm-DGm0KW_T.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/moduleSection-BD4rkMdo.js", "/assets/contentDomain.generated-DIEwSG95.js", "/assets/useStorage-gorQNo4e.js", "/assets/meta-DL0KpjEK.js", "/assets/link-C1MkzDH5.js", "/assets/contentCards-aFwo1o7S.js", "/assets/contentPreview-raReixWB.js", "/assets/weatherHomepage-CnI474xN.js", "/assets/button-DlgCHeeG.js", "/assets/socialShare-BbqkDzDu.js", "/assets/index-BObwWQ7a.js", "/assets/weatherWidget-BYzhjHC9.js", "/assets/changeLocationBar-BNl0rC1C.js", "/assets/form-5uUV5058.js", "/assets/commodityPrices-CuYN6Jxx.js", "/assets/videoPlaylist-BaLxtSEs.js", "/assets/toNumber-DCajaT_r.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/resources-DIZqnfs4.js" ], "css": [] }, "routes/$topic._index": { "id": "routes/$topic._index", "parentId": "root", "path": ":topic", "index": true, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_topic._index-DgKjDyGQ.js", "imports": [ "/assets/with-props-C4rFUyxV.js", "/assets/chunk-K6AXKMTT-D00r_oVc.js", "/assets/_-BJdr63HM.js", "/assets/gtm-DGm0KW_T.js", "/assets/useArticleProps-B5v1naMg.js", "/assets/breadcrumb-D99WjBeI.js", "/assets/categoryHeader-BNorRpUl.js", "/assets/listContent-DPrFxO8G.js", "/assets/searchBar-CEbzLjII.js", "/assets/useSearchBar-B0qpfoK9.js", "/assets/newsletterSignupPromo-C5ZmaayE.js", "/assets/contentPreview-raReixWB.js", "/assets/utils-Bn24zYNJ.js", "/assets/pagination-CotFOi0g.js", "/assets/button-DlgCHeeG.js", "/assets/filterSection-B0_8V9sY.js", "/assets/topicList-DLI_z99T.js", "/assets/gridLayout-wIbp2Hs_.js", "/assets/featureImageHeader-B2n6UlsK.js", "/assets/moduleSection-BD4rkMdo.js", "/assets/articleMultiSection-B_lQ5uys.js", "/assets/provider-vRHVWpv0.js", "/assets/string-BS_NwYxO.js", "/assets/meta-DL0KpjEK.js", "/assets/useWeatherWidget-CqdUxz0N.js", "/assets/link-C1MkzDH5.js", "/assets/commodityPrices-CuYN6Jxx.js", "/assets/sidebar-C38SyLXI.js", "/assets/weatherWidget-BYzhjHC9.js", "/assets/changeLocationBar-BNl0rC1C.js", "/assets/form-5uUV5058.js", "/assets/contentCards-aFwo1o7S.js", "/assets/videoPlaylist-BaLxtSEs.js", "/assets/contentDomain.generated-DIEwSG95.js", "/assets/toNumber-DCajaT_r.js", "/assets/index-BlRIwUgC.js", "/assets/_getPrototype-3cCw-LUg.js", "/assets/util-BlbSWXsE.js", "/assets/input-zB_nkUn5.js", "/assets/_baseForOwn-ClWWO-WO.js", "/assets/index-BObwWQ7a.js", "/assets/socialShare-BbqkDzDu.js", "/assets/weatherHomepage-CnI474xN.js", "/assets/resources-DIZqnfs4.js", "/assets/contributorSummary-CYbbZoZR.js", "/assets/programHeader-UEd8-rbR.js", "/assets/redirection-DiAII56c.js", "/assets/useStorage-gorQNo4e.js" ], "css": [] } }, "url": "/assets/manifest-c120b55d.js", "version": "c120b55d" }; window.__reactRouterRouteModules = {"root":route0,"routes/$topic.$slug._index":route1}; import("/assets/entry.client-fWB18xdV.js");</script><!--$?--><template id="B:0"></template><!--/$--><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_2150\":-5,\"_2151\":-5},\"loaderData\",{\"_3\":4,\"_882\":883},\"root\",{\"_5\":6,\"_7\":8,\"_9\":10,\"_11\":12,\"_13\":14,\"_15\":16,\"_27\":28,\"_33\":34,\"_37\":24,\"_38\":39,\"_42\":-7,\"_43\":44,\"_49\":-7,\"_50\":51,\"_62\":63,\"_64\":65,\"_83\":84,\"_770\":771,\"_772\":-7,\"_773\":774,\"_787\":788,\"_818\":819},\"href\",\"http://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy\",\"brand\",\"itprotoday\",\"domainUrl\",\"https://www.itprotoday.com\",\"authenticationStatus\",\"anonymous\",\"siteName\",\"ITPro Today\",\"ads\",{\"_17\":18,\"_19\":20,\"_21\":22,\"_23\":24,\"_25\":26},\"networkId\",3834,\"parentAdUnit\",\"itprotoday.home\",\"enabledAds\",\"all\",\"checkClientIP\",false,\"disableSponsorBar\",true,\"authConfig\",{\"_29\":24,\"_30\":-7,\"_31\":-7,\"_32\":24},\"enabled\",\"authenticationConfigId\",\"standaloneRegistrationPage\",\"disableCaptcha\",\"vwo\",{\"_29\":26,\"_35\":36},\"accountId\",\"734041\",\"isDctsTurnOn\",\"oneTrust\",{\"_40\":41},\"siteId\",\"dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e\",\"cookieBanner\",\"gtmIds\",{\"_45\":46,\"_47\":48},\"primary\",\"GTM-5523ZCM\",\"secondary\",\"GTM-MTN2X7K\",\"pageContent\",\"ui\",{\"_7\":8,\"_52\":53,\"_54\":55},\"theme\",\"theme1\",\"font\",{\"_45\":56,\"_47\":61},{\"_57\":58,\"_59\":60},\"name\",\"Inter\",\"url\",\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900\u0026display=swap\",{\"_57\":58,\"_59\":60},\"environment\",\"prod\",\"featureToggles\",{\"_66\":24,\"_67\":24,\"_68\":24,\"_69\":24,\"_70\":24,\"_71\":24,\"_72\":24,\"_73\":24,\"_74\":24,\"_75\":24,\"_76\":77,\"_78\":24,\"_79\":24,\"_80\":26,\"_81\":26,\"_82\":26},\"elnNewsletter\",\"elnWithoutNewsletter\",\"iirisAuthentication\",\"subBrand\",\"useSettingsRedirectAPIVersion1\",\"gatingEnabled\",\"iirisRecommendationDisabled\",\"iasPetEnabled\",\"bridgedMediaEnabled\",\"ecommerceEnabled\",\"iirisRecommendationVer\",\"version4\",\"weather3MonthForecastEnabled\",\"legacyHomepage\",\"oneTrustEnabled\",\"transcendEnabled\",\"useTechInformaBar\",\"layout\",{\"_85\":86,\"_106\":107,\"_130\":131,\"_576\":577,\"_694\":695,\"_701\":702,\"_768\":26,\"_769\":24},\"socialLinks\",[87,91,94,97,100,103],{\"_88\":89,\"_59\":90},\"type\",\"Facebook\",\"https://www.facebook.com/ITProToday/\",{\"_88\":92,\"_59\":93},\"Twitter\",\"https://twitter.com/ITProToday\",{\"_88\":95,\"_59\":96},\"Linkedin\",\"https://www.linkedin.com/company/itpro-today/\",{\"_88\":98,\"_59\":99},\"Youtube\",\"https://www.youtube.com/channel/UCedUgT8R7qC3vsOSxXS5-ZA\",{\"_88\":101,\"_59\":102},\"GoogleNews\",\"https://news.google.com/publications/CAAqKQgKIiNDQklTRkFnTWFoQUtEbWwwY0hKdmRHOWtZWGt1WTI5dEtBQVAB\",{\"_88\":104,\"_59\":105},\"RSS\",\"https://www.itprotoday.com/rss.xml\",\"informaBar\",{\"_29\":26,\"_108\":109,\"_127\":128},\"leftSection\",{\"_110\":111,\"_112\":113},\"description\",\"Together, we power an unparalleled network of 220+ online properties covering 10,000+ granular topics, serving an audience of 50+ million professionals with original, objective content from trusted sources. We help you gain critical insights and make more informed decisions across your business priorities.\",\"subMenu\",[114,118,121,124],{\"_115\":116,\"_59\":117},\"title\",\"INFORMA PLC\",\"https://informa.com/\",{\"_115\":119,\"_59\":120},\"ABOUT US\",\"https://informa.com/about-us/\",{\"_115\":122,\"_59\":123},\"INVESTOR RELATIONS\",\"https://informa.com/investors/\",{\"_115\":125,\"_59\":126},\"TALENT\",\"https://informa.com/talent/\",\"rightSection\",{\"_110\":129},\"This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.\",\"nav\",{\"_132\":133,\"_566\":567},\"mainMenuItems\",[134,212,276,327,368,398,449,480,501,529],{\"_115\":135,\"_59\":136,\"_137\":138,\"_139\":136,\"_140\":26,\"_112\":141,\"_154\":155},\"Cloud\",\"/cloud-computing\",\"seeAllLink\",\"SEE ALL Cloud\",\"seeAllLinkUrl\",\"hasSubMenu\",[142,145,148,151],{\"_115\":143,\"_59\":144},\"Cloud Services\",\"/cloud-computing/cloud-services\",{\"_115\":146,\"_59\":147},\"Hybrid Cloud\",\"/cloud-computing/hybrid-cloud\",{\"_115\":149,\"_59\":150},\"Private Cloud\",\"/cloud-computing/private-cloud\",{\"_115\":152,\"_59\":153},\"Public Cloud\",\"/cloud-computing/public-cloud\",\"recentContents\",[156,194],{\"_157\":158,\"_163\":164,\"_165\":164,\"_166\":167,\"_168\":169,\"_170\":171,\"_172\":173,\"_174\":171,\"_175\":176,\"_177\":136,\"_178\":179,\"_180\":181,\"_188\":189,\"_190\":191,\"_192\":193},\"thumbnail\",{\"_159\":160,\"_161\":162},\"src\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9a67f57273c07d90/67b473773875e33a243b106a/Kubenetes-1716x965_-_2025-02-18.jpg\",\"alt\",\"cloud Kubernetes helm concept with the containers\",\"articleName\",\"Mastering Kubernetes in the Cloud: A Guide to Cloud Controller Manager\",\"mobileHeadline\",\"articleSummary\",\"Cloud Controller Manager is a crucial yet often overlooked Kubernetes component that streamlines cloud integrations. Here's why it matters and how to use it effectively.\",\"articleUrl\",\"/cloud-computing/mastering-kubernetes-in-the-cloud-a-guide-to-cloud-controller-manager\",\"listPageUrl\",\"\",\"date\",\"Feb 18, 2025\",\"webinarStartTime\",\"categoryName\",\"Cloud Computing\",\"categoryUrl\",\"contentType\",\"Article\",\"contributors\",[182],{\"_57\":183,\"_184\":185,\"_186\":187},\"Christopher Tozzi\",\"link\",\"/author/christopher-tozzi\",\"avatar\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt363e2b757d4697ca/6613c9a4e92bcfe48a891995/christophertozzi_2.jpg\",\"timeRead\",6,\"variant\",\"card-vertical\",\"layoutVariant\",\"vertical\",{\"_157\":195,\"_163\":198,\"_165\":198,\"_166\":199,\"_168\":200,\"_170\":171,\"_172\":201,\"_174\":171,\"_175\":146,\"_177\":147,\"_178\":179,\"_180\":202,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":196,\"_161\":197},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbbbd88e5773ffc6b/67ac97b77c6ab0666ea09ca5/hybrid-cloud-1716x965_-_2024-12-27.jpg\",\"hybrid cloud spelled out above a tablet\",\"How to Avoid Common Hybrid Cloud Pitfalls\",\"Some data and workloads are moving back from cloud to on-premises. It isn't a return to the days of yore, so thoughtful strategy and implementation matter greatly.\",\"/hybrid-cloud/how-to-avoid-common-hybrid-cloud-pitfalls\",\"Feb 12, 2025\",[203,207],{\"_57\":204,\"_184\":205,\"_186\":206},\"Lisa Morgan\",\"/author/lisa-morgan\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb11c8ae625be7abe/6613c9bdd9d6083199a9aceb/lisamorgan.jpg\",{\"_57\":208,\"_184\":209,\"_186\":210},\"InformationWeek\",\"/author/informationweek\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfe700963d293545b/662c186ab6e73c2096cb1da7/251403_Favicon_512x512.png\",1,{\"_115\":213,\"_59\":214,\"_137\":215,\"_139\":214,\"_140\":26,\"_112\":216,\"_154\":247},\"OS\",\"/operating-systems\",\"See All OS\",[217,220,223,226,229,232,235,238,241,244],{\"_115\":218,\"_59\":219},\"Microsoft Windows\",\"/operating-systems/microsoft-windows\",{\"_115\":221,\"_59\":222},\"Windows Server\",\"/operating-systems/windows-server\",{\"_115\":224,\"_59\":225},\"PowerShell\",\"/operating-systems/powershell\",{\"_115\":227,\"_59\":228},\"Linux OS\",\"/operating-systems/linux-os\",{\"_115\":230,\"_59\":231},\"SQL Server\",\"/operating-systems/sql-server\",{\"_115\":233,\"_59\":234},\"MacOS\",\"/operating-systems/macos\",{\"_115\":236,\"_59\":237},\"Android OS\",\"/operating-systems/android-os\",{\"_115\":239,\"_59\":240},\"ChromeOS\",\"/operating-systems/chromeos\",{\"_115\":242,\"_59\":243},\"Ubuntu\",\"/operating-systems/ubuntu\",{\"_115\":245,\"_59\":246},\"Red Hat OS\",\"/operating-systems/red-hat-os\",[248,262],{\"_157\":249,\"_163\":252,\"_165\":252,\"_166\":253,\"_168\":254,\"_170\":171,\"_172\":255,\"_174\":171,\"_175\":224,\"_177\":225,\"_178\":179,\"_180\":256,\"_188\":261,\"_190\":191,\"_192\":193},{\"_159\":250,\"_161\":251},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt1ef028e07e495a1a/67b518be149b7e2c6c0df150/Your_paragraph_text_(1).png\",\"a dry erase boards with doodles, powershell code snippet, powershell logo, and a hand drawing with a market\",\"PowerShell GUI Tutorial: Building Whiteboard Apps With WPF\",\"Discover how to use PowerShell with WPF to create a simple inking canvas capable of saving drawings as JPEG files, undoing ink strokes, and resetting the canvas.\",\"/powershell/powershell-gui-tutorial-building-whiteboard-apps-with-wpf\",\"Feb 19, 2025\",[257],{\"_57\":258,\"_184\":259,\"_186\":260},\"Brien Posey\",\"/author/brien-posey\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbd2d61ed5b87072c/6613c9a9bce8e3a5a1d68782/Brien_Posey.jpg\",13,{\"_157\":263,\"_163\":266,\"_165\":266,\"_166\":267,\"_168\":268,\"_170\":171,\"_172\":269,\"_174\":171,\"_175\":227,\"_177\":228,\"_178\":179,\"_180\":270,\"_188\":275,\"_190\":191,\"_192\":193},{\"_159\":264,\"_161\":265},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt55c34441e4c5f4cf/67ae572a2ba611390a866d2b/image-1716x965_-_2025-02-13T153328.829.jpg\",\"a magnifying glass being help up to an open padlock icon that is set within rows of locked padlocks\",\"Beyond the Basics: Advanced Linux Hardening Techniques\",\"This guide explores advanced hardening techniques, including MAC frameworks, network security enhancements, proactive vulnerability management, container security, and the use of AI for threat detection.\",\"/linux-os/beyond-the-basics-advanced-linux-hardening-techniques\",\"Feb 14, 2025\",[271],{\"_57\":272,\"_184\":273,\"_186\":274},\"Grant Knoetze\",\"/author/grant-knoetze\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltb840b8274b6e83ca/6613c9f9ddf6623b6265761c/Grant-Knoetze-cropped.jpg\",7,{\"_115\":277,\"_59\":278,\"_137\":279,\"_139\":278,\"_140\":26,\"_112\":280,\"_154\":296},\"IT Mgmt\",\"/it-management\",\"See All IT Mgmt\",[281,284,287,290,293],{\"_115\":282,\"_59\":283},\"IT Operations\",\"/it-management/it-operations\",{\"_115\":285,\"_59\":286},\"DevOps\",\"/it-management/devops\",{\"_115\":288,\"_59\":289},\"Ops and More\",\"/it-management/ops-and-more\",{\"_115\":291,\"_59\":292},\"IT Sustainability\",\"/it-management/it-sustainability\",{\"_115\":294,\"_59\":295},\"IT Automation\",\"/it-management/it-automation\",[297,313],{\"_157\":298,\"_163\":301,\"_165\":301,\"_166\":302,\"_168\":303,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":305,\"_177\":306,\"_178\":179,\"_180\":307,\"_188\":312,\"_190\":191,\"_192\":193},{\"_159\":299,\"_161\":300},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9fc49f74c870f57b/67b859beabe3fd2cdd69ba66/disaster-recovery-1716x965_-_2025-02-21.jpg\",\"disaster recovery playbook on a desk near a keyboard\",\"Disaster Recovery Strategies for a Disaster-Prone World\",\"Downtime is costly, but a well-planned high availability (HA) and disaster recovery (DR) strategy can minimize disruptions.\",\"/disaster-recovery/disaster-recovery-strategies-for-a-disaster-prone-world\",\"Feb 21, 2025\",\"Disaster Recovery\",\"/data-storage/disaster-recovery\",[308],{\"_57\":309,\"_184\":310,\"_186\":311},\"Industry Perspectives\",\"/author/industry-perspectives\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd7fa51c8929351c1/6659df384bcb3c8c0e786295/ITP_IP.png\",5,{\"_157\":314,\"_163\":317,\"_165\":317,\"_166\":318,\"_168\":319,\"_170\":171,\"_172\":320,\"_174\":171,\"_175\":291,\"_177\":292,\"_178\":179,\"_180\":321,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":315,\"_161\":316},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt253192bcd42230d9/67b798981f1ef5d72674f1f5/image-1716x965_-_2025-02-20T160308.726.jpg\",\"eco icons and data processing over computer servers\",\"7 Top Data Center Sustainability Strategies for 2025\",\"Data center sustainability is more critical than ever as energy demands surge. Here are seven key strategies to improve efficiency and reduce carbon impact.\",\"/it-sustainability/7-top-data-center-sustainability-strategies-for-2025\",\"Feb 20, 2025\",[322,323],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_57\":324,\"_184\":325,\"_186\":326},\"Data Center Knowledge\",\"/author/data-center-knowledge\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltbfc1cdb5b46a19b7/6647115632777426bbc9b8b0/DCK_Favicon_RGB_512x512.png\",{\"_115\":328,\"_59\":329,\"_137\":330,\"_139\":329,\"_140\":26,\"_112\":331,\"_154\":341},\"Career\",\"/career-management\",\"See All Career Mgmt\",[332,335,338],{\"_115\":333,\"_59\":334},\"Career Tips\",\"/career-management/career-tips\",{\"_115\":336,\"_59\":337},\"Certifications\",\"/career-management/certifications\",{\"_115\":339,\"_59\":340},\"Training\",\"/career-management/training\",[342,355],{\"_157\":343,\"_163\":346,\"_165\":346,\"_166\":347,\"_168\":348,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":333,\"_177\":334,\"_178\":179,\"_180\":349,\"_188\":354,\"_190\":191,\"_192\":193},{\"_159\":344,\"_161\":345},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt373cd0b4af7d9b4c/67b74c33531f576610137525/toxic_positivity_hero.gif\",\"an unhappy employee is surrounded by smiley faces and the words \\\"Stay Positive\\\"\",\"Toxic Positivity at Work Is Silencing My Team’s Concerns\",\"An IT pro’s team struggles with burnout due to overwhelming workloads, while management dismisses their concerns with toxic positivity. Read our advice.\",\"/career-tips/toxic-positivity-at-work-is-silencing-my-team-s-concerns\",[350],{\"_57\":351,\"_184\":352,\"_186\":353},\"Danielle Meinert\",\"/author/danielle-meinert\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6cea48e7fba9fe0c/66744228de07df7824ca2798/danielle-profile-photo.jpeg\",2,{\"_157\":356,\"_163\":359,\"_165\":359,\"_166\":360,\"_168\":361,\"_170\":171,\"_172\":362,\"_174\":171,\"_175\":363,\"_177\":364,\"_178\":179,\"_180\":365,\"_188\":367,\"_190\":191,\"_192\":193},{\"_159\":357,\"_161\":358},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt9559a8f9078d3a4e/67aa33c656339648630cc13d/Process_Compliance_(1).gif\",\"an annoyed-looking software developer is covered by red tape and the words \\\"process compliance\\\"\",\"Process Standardization Is Stifling My Creativity\",\"A software developer seeks advice about a new manager’s rigid obsession with process standardization, replacing creative problem-solving with excessive bureaucracy. \",\"/software-development/process-standardization-is-stifling-my-creativity\",\"Feb 11, 2025\",\"Software Development\",\"/software-development\",[366],{\"_57\":351,\"_184\":352,\"_186\":353},3,{\"_115\":369,\"_59\":370,\"_137\":371,\"_139\":370,\"_140\":26,\"_112\":372,\"_154\":383},\"Storage\",\"/data-storage\",\"See All Data Storage\",[373,376,379,382],{\"_115\":374,\"_59\":375},\"Cloud Storage\",\"/data-storage/cloud-storage\",{\"_115\":377,\"_59\":378},\"High Speed Storage\",\"/data-storage/high-speed-storage\",{\"_115\":380,\"_59\":381},\"Data Backup\",\"/data-storage/data-backup\",{\"_115\":305,\"_59\":306},[384,388],{\"_157\":385,\"_163\":301,\"_165\":301,\"_166\":302,\"_168\":303,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":305,\"_177\":306,\"_178\":179,\"_180\":386,\"_188\":312,\"_190\":191,\"_192\":193},{\"_159\":299,\"_161\":300},[387],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_157\":389,\"_163\":392,\"_165\":392,\"_166\":393,\"_168\":394,\"_170\":171,\"_172\":395,\"_174\":171,\"_175\":227,\"_177\":228,\"_178\":179,\"_180\":396,\"_188\":189,\"_190\":191,\"_192\":193},{\"_159\":390,\"_161\":391},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt88f81fb36d6cbe4a/67a4e82ca4ff164b53d978f6/image-1716x965_-_2025-02-06T113039.208.jpg\",\"the word malware on top of a digital background\",\"How To Identify and Remove Linux Malware Infections\",\"Explore common Linux malware types, how to detect infections, and best practices for removal, recovery, and prevention.\",\"/linux-os/how-to-identify-and-remove-linux-malware-infections\",\"Feb 7, 2025\",[397],{\"_57\":272,\"_184\":273,\"_186\":274},{\"_115\":399,\"_59\":400,\"_137\":401,\"_139\":400,\"_140\":26,\"_112\":402,\"_154\":424},\"Security\",\"/it-security\",\"See All IT Security\",[403,406,409,412,415,418,421],{\"_115\":404,\"_59\":405},\"Vulnerabilities \u0026 Threats\",\"/it-security/vulnerabilities-threats\",{\"_115\":407,\"_59\":408},\"Attacks \u0026 Breaches\",\"/it-security/attacks-breaches\",{\"_115\":410,\"_59\":411},\"Regulatory Compliance\",\"/it-security/regulatory-compliance\",{\"_115\":413,\"_59\":414},\"Data Privacy\",\"/it-security/data-privacy\",{\"_115\":416,\"_59\":417},\"Cloud Security\",\"/it-security/cloud-security\",{\"_115\":419,\"_59\":420},\"Endpoint Security\",\"/it-security/endpoint-security\",{\"_115\":422,\"_59\":423},\"Identity Mgmt \u0026 Access Control\",\"/it-security/identity-management-access-control\",[425,437],{\"_157\":426,\"_163\":429,\"_165\":429,\"_166\":430,\"_168\":431,\"_170\":171,\"_172\":320,\"_174\":171,\"_175\":432,\"_177\":433,\"_178\":179,\"_180\":434,\"_188\":436,\"_190\":191,\"_192\":193},{\"_159\":427,\"_161\":428},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfc15224b242e5649/67b6eb780ae52c6f2ede6380/AI-robot-finger-1716x965_-_2025-02-20.jpg\",\"robot and human fingers touching\",\"The Role of Human Touch in Agentic AI Data Management\",\"Advancements in agentic AI bring new challenges, especially in data privacy and regulatory compliance. Here's how to harness its benefits while ensuring privacy and compliance.\",\"/ai-machine-learning/the-role-of-human-touch-in-agentic-ai-data-management\",\"AI \u0026 Machine Learning\",\"/digital-transformation/ai-machine-learning\",[435],{\"_57\":309,\"_184\":310,\"_186\":311},4,{\"_157\":438,\"_163\":441,\"_165\":441,\"_166\":442,\"_168\":443,\"_170\":171,\"_172\":255,\"_174\":171,\"_175\":404,\"_177\":405,\"_178\":179,\"_180\":444,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":439,\"_161\":440},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt422134f81885f07c/67b60c8c0ae52c0d13de60c7/image-1716x965_-_2025-02-19T115324.570.jpg\",\"xerox logo on sign outside xerox square building \",\"Xerox Printer Vulnerabilities Enable Credential Capture\",\"Attackers use patched bugs to potentially gain unfettered access to an organization's Windows environment under certain conditions.\",\"/vulnerabilities-threats/xerox-printer-vulnerabilities-enable-credential-capture\",[445],{\"_57\":446,\"_184\":447,\"_186\":448},\"Jai Vijayan\",\"/author/jai-vijayan\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt2493953a95cd126f/6613c9b888728662974ed18d/Jai-Vijayan.jpg\",{\"_115\":450,\"_59\":364,\"_137\":451,\"_139\":364,\"_140\":26,\"_112\":452,\"_154\":465},\"Dev\",\"See All Software Dev\",[453,456,459,462],{\"_115\":454,\"_59\":455},\"Cloud Native\",\"/software-development/cloud-native\",{\"_115\":457,\"_59\":458},\"Programming Languages\",\"/software-development/programming-languages\",{\"_115\":460,\"_59\":461},\"No-Code/Low-Code\",\"/software-development/no-code-low-code\",{\"_115\":463,\"_59\":464},\"Software Development Techniques\",\"/software-development/software-development-techniques\",[466,470],{\"_157\":467,\"_163\":346,\"_165\":346,\"_166\":347,\"_168\":348,\"_170\":171,\"_172\":304,\"_174\":171,\"_175\":333,\"_177\":334,\"_178\":179,\"_180\":468,\"_188\":354,\"_190\":191,\"_192\":193},{\"_159\":344,\"_161\":345},[469],{\"_57\":351,\"_184\":352,\"_186\":353},{\"_157\":471,\"_163\":474,\"_165\":474,\"_166\":475,\"_168\":476,\"_170\":171,\"_172\":477,\"_174\":171,\"_175\":463,\"_177\":464,\"_178\":179,\"_180\":478,\"_188\":275,\"_190\":191,\"_192\":193},{\"_159\":472,\"_161\":473},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blta837190fc0e7c602/67ade2fd64f859b14b05f5fd/software-developer-code-1716x965_-_2024-10-18.jpg\",\"software developer writing code on a laptop\",\"The Overlooked Art of Software Localization for Non-Traditional Markets\",\"Despite software's global reach, many companies overlook a critical aspect of their development process: localization for non-traditional markets.\",\"/software-development-techniques/the-overlooked-art-of-software-localization-for-non-traditional-markets\",\"Feb 13, 2025\",[479],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_115\":481,\"_59\":482,\"_137\":483,\"_139\":482,\"_140\":26,\"_112\":484,\"_154\":492},\"DX\",\"/digital-transformation\",\"See All Digital Transformation\",[485,486,489],{\"_115\":432,\"_59\":433},{\"_115\":487,\"_59\":488},\"Edge Computing\",\"/digital-transformation/edge-computing\",{\"_115\":490,\"_59\":491},\"IoT\",\"/digital-transformation/iot\",[493,497],{\"_157\":494,\"_163\":429,\"_165\":429,\"_166\":430,\"_168\":431,\"_170\":171,\"_172\":320,\"_174\":171,\"_175\":432,\"_177\":433,\"_178\":179,\"_180\":495,\"_188\":436,\"_190\":191,\"_192\":193},{\"_159\":427,\"_161\":428},[496],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_157\":498,\"_163\":441,\"_165\":441,\"_166\":442,\"_168\":443,\"_170\":171,\"_172\":255,\"_174\":171,\"_175\":404,\"_177\":405,\"_178\":179,\"_180\":499,\"_188\":211,\"_190\":191,\"_192\":193},{\"_159\":439,\"_161\":440},[500],{\"_57\":446,\"_184\":447,\"_186\":448},{\"_115\":502,\"_59\":503,\"_137\":504,\"_139\":503,\"_140\":26,\"_112\":505,\"_154\":515},\"Infrastructure\",\"/it-infrastructure\",\"See All Infrastructure\",[506,509,512],{\"_115\":507,\"_59\":508},\"High Performance Computing\",\"/it-infrastructure/high-performance-computing\",{\"_115\":510,\"_59\":511},\"Containerization\",\"/it-infrastructure/containerization\",{\"_115\":513,\"_59\":514},\"Server Virtualization\",\"/it-infrastructure/server-virtualization\",[516,520],{\"_157\":517,\"_163\":164,\"_165\":164,\"_166\":167,\"_168\":169,\"_170\":171,\"_172\":173,\"_174\":171,\"_175\":176,\"_177\":136,\"_178\":179,\"_180\":518,\"_188\":189,\"_190\":191,\"_192\":193},{\"_159\":160,\"_161\":162},[519],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_157\":521,\"_163\":524,\"_165\":524,\"_166\":525,\"_168\":526,\"_170\":171,\"_172\":395,\"_174\":171,\"_175\":432,\"_177\":433,\"_178\":179,\"_180\":527,\"_188\":436,\"_190\":191,\"_192\":193},{\"_159\":522,\"_161\":523},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blte1ae920643569ab5/67a52cba2f8fd4865d38e4c5/silicon-1716x965_-_2025-02-06.jpg\",\"computer CPU\",\"How Silicon Diversity Optimizes Cost, Performance Across the AI Lifecycle\",\"Strategically matching AI workloads to the right compute resources — through training, inference, and serverless inference — helps organizations control costs while maximizing performance.\",\"/ai-machine-learning/how-silicon-diversity-optimizes-cost-performance-across-the-ai-lifecycle\",[528],{\"_57\":309,\"_184\":310,\"_186\":311},{\"_115\":530,\"_59\":531,\"_137\":532,\"_139\":531,\"_140\":26,\"_112\":533,\"_154\":565},\"More\",\"/resources\",\"Resource Library\",[534,537,540,542,544,547,550,553,556,559,562],{\"_115\":535,\"_59\":536},\"Newsletters\",\"https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1\u0026sr=pp\u0026_t=pp:\u0026qf=w_itpb86\u0026ch=itpnav\",{\"_115\":538,\"_59\":539},\"How To…?\",\"/latest-how-to\",{\"_115\":309,\"_59\":541},\"/program/industry-perspectives\",{\"_115\":543,\"_59\":531},\"Business Resources\",{\"_115\":545,\"_59\":546},\"Reports/Research\",\"/resources?types=Survey+Report\u0026page=1\",{\"_115\":548,\"_59\":549},\"Online Events\",\"/resources?page=1\u0026types=Virtual+Event\u0026types=Webinar\",{\"_115\":551,\"_59\":552},\"Live Events\",\"/events\",{\"_115\":554,\"_59\":555},\"Videos\",\"/videos\",{\"_115\":557,\"_59\":558},\"White Papers\",\"/resources?page=1\u0026types=White+Paper\",{\"_115\":560,\"_59\":561},\"Advertise With Us\",\"/advertise\",{\"_115\":563,\"_59\":564},\"About Us\",\"/about-us\",[],\"secondaryMenu\",[568,571,572,574],{\"_115\":569,\"_59\":570},\"Documents\",\"/documents\",{\"_115\":548,\"_59\":549},{\"_115\":573,\"_59\":561},\"Advertise\",{\"_115\":575,\"_59\":564},\"About\",\"megaMenu\",{\"_578\":579,\"_654\":655,\"_685\":686},\"largeMenu\",[580,586,598,605,610,616,625,631,636,641],{\"_115\":135,\"_59\":136,\"_112\":581,\"_137\":138,\"_139\":136},[582,583,584,585],{\"_115\":143,\"_59\":144},{\"_115\":146,\"_59\":147},{\"_115\":149,\"_59\":150},{\"_115\":152,\"_59\":153},{\"_115\":213,\"_59\":214,\"_112\":587,\"_137\":215,\"_139\":214},[588,589,590,591,592,593,594,595,596,597],{\"_115\":218,\"_59\":219},{\"_115\":221,\"_59\":222},{\"_115\":224,\"_59\":225},{\"_115\":227,\"_59\":228},{\"_115\":230,\"_59\":231},{\"_115\":233,\"_59\":234},{\"_115\":236,\"_59\":237},{\"_115\":239,\"_59\":240},{\"_115\":242,\"_59\":243},{\"_115\":245,\"_59\":246},{\"_115\":277,\"_59\":278,\"_112\":599,\"_137\":279,\"_139\":278},[600,601,602,603,604],{\"_115\":282,\"_59\":283},{\"_115\":285,\"_59\":286},{\"_115\":288,\"_59\":289},{\"_115\":291,\"_59\":292},{\"_115\":294,\"_59\":295},{\"_115\":328,\"_59\":329,\"_112\":606,\"_137\":330,\"_139\":329},[607,608,609],{\"_115\":333,\"_59\":334},{\"_115\":336,\"_59\":337},{\"_115\":339,\"_59\":340},{\"_115\":369,\"_59\":370,\"_112\":611,\"_137\":371,\"_139\":370},[612,613,614,615],{\"_115\":374,\"_59\":375},{\"_115\":377,\"_59\":378},{\"_115\":380,\"_59\":381},{\"_115\":305,\"_59\":306},{\"_115\":399,\"_59\":400,\"_112\":617,\"_137\":401,\"_139\":400},[618,619,620,621,622,623,624],{\"_115\":404,\"_59\":405},{\"_115\":407,\"_59\":408},{\"_115\":410,\"_59\":411},{\"_115\":413,\"_59\":414},{\"_115\":416,\"_59\":417},{\"_115\":419,\"_59\":420},{\"_115\":422,\"_59\":423},{\"_115\":450,\"_59\":364,\"_112\":626,\"_137\":451,\"_139\":364},[627,628,629,630],{\"_115\":454,\"_59\":455},{\"_115\":457,\"_59\":458},{\"_115\":460,\"_59\":461},{\"_115\":463,\"_59\":464},{\"_115\":481,\"_59\":482,\"_112\":632,\"_137\":483,\"_139\":482},[633,634,635],{\"_115\":432,\"_59\":433},{\"_115\":487,\"_59\":488},{\"_115\":490,\"_59\":491},{\"_115\":502,\"_59\":503,\"_112\":637,\"_137\":504,\"_139\":503},[638,639,640],{\"_115\":507,\"_59\":508},{\"_115\":510,\"_59\":511},{\"_115\":513,\"_59\":514},{\"_115\":530,\"_59\":531,\"_112\":642,\"_137\":532,\"_139\":531},[643,644,645,646,647,648,649,650,651,652,653],{\"_115\":535,\"_59\":536},{\"_115\":538,\"_59\":539},{\"_115\":309,\"_59\":541},{\"_115\":543,\"_59\":531},{\"_115\":545,\"_59\":546},{\"_115\":548,\"_59\":549},{\"_115\":551,\"_59\":552},{\"_115\":554,\"_59\":555},{\"_115\":557,\"_59\":558},{\"_115\":560,\"_59\":561},{\"_115\":563,\"_59\":564},\"smallMenu\",[656,665,669],{\"_115\":657,\"_59\":171,\"_112\":658},\"Browse\",[659,660,661,662,663,664],{\"_115\":569,\"_59\":570},{\"_115\":548,\"_59\":549},{\"_115\":551,\"_59\":552},{\"_115\":554,\"_59\":555},{\"_115\":309,\"_59\":541},{\"_115\":543,\"_59\":531},{\"_115\":573,\"_59\":171,\"_112\":666},[667],{\"_115\":668,\"_59\":561},\"Explore Marketing Solutions\",{\"_115\":670,\"_59\":171,\"_112\":671},\"Discover More\",[672,674,676,679,682],{\"_115\":324,\"_59\":673},\"https://www.datacenterknowledge.com/\",{\"_115\":208,\"_59\":675},\"https://www.informationweek.com/\",{\"_115\":677,\"_59\":678},\"Network Computing\",\"https://www.networkcomputing.com/\",{\"_115\":680,\"_59\":681},\"No Jitter\",\"https://www.nojitter.com/\",{\"_115\":683,\"_59\":684},\"AFCOM\",\"https://afcom.com/\",\"sideNavSections\",[687],{\"_115\":688,\"_59\":171,\"_112\":689,\"_137\":171,\"_139\":171},\"Communicate\",[690,691],{\"_115\":563,\"_59\":564},{\"_115\":692,\"_59\":693},\"Contact Us\",\"/contact-us\",\"navBase\",{\"_696\":697},\"logo\",{\"_59\":698,\"_699\":700},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6a28f214e959257b/65dc5966d7e7df040ab9cb3f/Logo_-_IT_Pro_Today.svg\",\"altText\",\"ITPro Today Logo\",\"footer\",{\"_696\":703,\"_705\":706,\"_736\":737,\"_738\":739},{\"_59\":704,\"_699\":700},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt6988047454ea0f07/65def58180429104075f67f7/Logo_-_IT_Pro_Today@2x.png\",\"linkSections\",[707,723],{\"_708\":709,\"_115\":670,\"_88\":722},\"links\",[710,714,716,718,720],{\"_711\":712,\"_713\":26,\"_115\":324,\"_59\":673},\"image\",{\"_699\":171,\"_59\":704},\"openInNewTab\",{\"_711\":715,\"_713\":26,\"_115\":208,\"_59\":675},{\"_699\":171,\"_59\":704},{\"_711\":717,\"_713\":26,\"_115\":677,\"_59\":678},{\"_699\":171,\"_59\":704},{\"_711\":719,\"_713\":26,\"_115\":680,\"_59\":681},{\"_699\":171,\"_59\":704},{\"_711\":721,\"_713\":26,\"_115\":683,\"_59\":684},{\"_699\":171,\"_59\":704},\"1\",{\"_708\":724,\"_115\":735,\"_88\":722},[725,727,731,733],{\"_711\":726,\"_713\":26,\"_115\":563,\"_59\":564},{\"_699\":171,\"_59\":704},{\"_711\":728,\"_713\":26,\"_115\":729,\"_59\":730},{\"_699\":171,\"_59\":704},\"Reprints\",\"https://info.wrightsmedia.com/informa-licensing-reprints-request\",{\"_711\":732,\"_713\":26,\"_115\":573,\"_59\":561},{\"_699\":171,\"_59\":704},{\"_711\":734,\"_713\":26,\"_115\":692,\"_59\":693},{\"_699\":171,\"_59\":704},\"Working With Us\",\"brandLinks\",[],\"copyright\",{\"_740\":741,\"_708\":746,\"_115\":767},\"businessUnit\",{\"_59\":742,\"_57\":743,\"_744\":745},\"https://www.informa.com/\",\"Informa\",\"logoUrl\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbaa492998ab75f/674ef556a2308a7b8e6c5d5f/Informa_Logo_OneLine_Graduated_White_RGB.png\",[747,751,755,759,763],{\"_711\":748,\"_713\":24,\"_115\":749,\"_59\":750},{\"_699\":749,\"_59\":750},\"Home\",\"https://www.techtarget.com/\",{\"_711\":752,\"_713\":26,\"_115\":753,\"_59\":754},{\"_699\":753,\"_59\":754},\"CCPA: Do not sell my personal info\",\"https://privacyportal-eu-cdn.onetrust.com/dsarwebform/c1f53e84-9f05-4169-a854-85052b63c50b/5f26b553-52cc-4973-a761-295d5634a6b6.html\",{\"_711\":756,\"_713\":26,\"_115\":757,\"_59\":758},{\"_699\":757,\"_59\":758},\"Cookies\",\"/cookie-policy\",{\"_711\":760,\"_713\":26,\"_115\":761,\"_59\":762},{\"_699\":761,\"_59\":762},\"Privacy\",\"https://www.techtarget.com/privacy-policy/\",{\"_711\":764,\"_713\":26,\"_115\":765,\"_59\":766},{\"_699\":765,\"_59\":766},\"Terms\",\"https://tech.informa.com/terms-and-conditions\",\". This website is owned and operated by Informa TechTarget, part of a global network that informs, influences and connects the world’s technology buyers and sellers. All copyright resides with them. Informa PLC’s registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. TechTarget, Inc.’s registered office is 275 Grove St. Newton, MA 02466.\",\"isSponsorBarEnabled\",\"isPaidContent\",\"newRelicJs\",\"window.NREUM||(NREUM={});NREUM.info = {\\\"agent\\\":\\\"\\\",\\\"beacon\\\":\\\"bam.eu01.nr-data.net\\\",\\\"errorBeacon\\\":\\\"bam.eu01.nr-data.net\\\",\\\"licenseKey\\\":\\\"NRJS-26ae6a3b09493bbcc87\\\",\\\"applicationID\\\":\\\"514059305\\\",\\\"agentToken\\\":null,\\\"applicationTime\\\":6.246929,\\\"transactionName\\\":\\\"MhBSZQoZWEEDU0ZaXgtac0QLDFlfTR9eWl8QDR1eC1daWwxFSh5EAwIdRBYbWV8SXFtQUBEQVBweEURXFVFeXxwGGl5XER9DQANEW1xfSBhRVR1VU1MRSQ==\\\",\\\"queueTime\\\":0,\\\"ttGuid\\\":\\\"292cb844c52ea36e\\\"}; (window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:[\\\"bam.eu01.nr-data.net\\\"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:\\\"538480682\\\",accountID:\\\"3936348\\\",trustKey:\\\"3288925\\\",xpid:\\\"Vw8EV1VXABAFVVVSAggEVlE=\\\",licenseKey:\\\"NRJS-26ae6a3b09493bbcc87\\\",applicationID:\\\"514059305\\\"};;/*! For license information please see nr-loader-spa-1.283.1.min.js.LICENSE.txt */\\n(()=\u003e{var e,t,r={8122:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{a:()=\u003ei});var n=r(944);function i(e,t){try{if(!e||\\\"object\\\"!=typeof e)return(0,n.R)(3);if(!t||\\\"object\\\"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])\u0026\u0026Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):\\\"object\\\"==typeof e[a]\u0026\u0026\\\"object\\\"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Vp:()=\u003ec,fn:()=\u003es,x1:()=\u003eu});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey\u0026\u0026!!t.errorBeacon\u0026\u0026!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error(\\\"All info objects require an agent identifier!\\\");if(!a[e])throw new Error(\\\"Info for \\\".concat(e,\\\" was never set\\\"));return a[e]}function u(e,t){if(!e)throw new Error(\\\"All info objects require an agent identifier!\\\");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r\u0026\u0026(r.info=a[e])}},9417:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{D0:()=\u003eh,gD:()=\u003eg,xN:()=\u003ep});var n=r(3333);const i=e=\u003e{if(!e||\\\"string\\\"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u=\\\"[data-nr-mask]\\\",d=()=\u003e{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:\\\"*\\\",block_selector:\\\"[data-nr-block]\\\",mask_input_options:{color:!1,date:!1,\\\"datetime-local\\\":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector=\\\"\\\".concat(t,\\\",\\\").concat(u):\\\"\\\"===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return\\\"nr-block\\\"},get ignore_class(){return\\\"nr-ignore\\\"},get mask_text_class(){return\\\"nr-mask\\\"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=\\\",\\\".concat(t):\\\"\\\"!==t\u0026\u0026(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t\u0026\u0026\\\"object\\\"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:[\\\"id\\\",\\\"className\\\",\\\"tagName\\\",\\\"type\\\"]}}},l={},f=\\\"All configuration objects require an agent identifier!\\\";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error(\\\"Configuration for \\\".concat(e,\\\" was never set\\\"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r\u0026\u0026(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split(\\\".\\\"),i=0;i\u003cn.length-1;i++)if(\\\"object\\\"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{a:()=\u003ec,o:()=\u003es});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error(\\\"All loader-config objects require an agent identifier!\\\");if(!a[e])throw new Error(\\\"LoaderConfig for \\\".concat(e,\\\" was never set\\\"));return a[e]}function c(e,t){if(!e)throw new Error(\\\"All loader-config objects require an agent identifier!\\\");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r\u0026\u0026(r.loader_config=a[e])}},3371:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{V:()=\u003ef,f:()=\u003el});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},d={};function l(e){if(!e)throw new Error(\\\"All runtime objects require an agent identifier!\\\");if(!d[e])throw new Error(\\\"Runtime for \\\".concat(e,\\\" was never set\\\"));return d[e]}function f(e,t){if(!e)throw new Error(\\\"All runtime objects require an agent identifier!\\\");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],\\\"harvestCount\\\")||Object.defineProperty(d[e],\\\"harvestCount\\\",{get:()=\u003e++s});const r=(0,i.nY)(e);r\u0026\u0026(r.runtime=d[e])}},9324:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{F3:()=\u003ei,Xs:()=\u003eo,Yq:()=\u003ea,xv:()=\u003en});const n=\\\"1.283.1\\\",i=\\\"PROD\\\",o=\\\"CDN\\\",a=\\\"^2.0.0-alpha.17\\\"},6154:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A4:()=\u003es,OF:()=\u003ed,RI:()=\u003ei,WN:()=\u003eh,bv:()=\u003eo,gm:()=\u003ea,lR:()=\u003ef,m:()=\u003eu,mw:()=\u003ec,sb:()=\u003el});var n=r(1863);const i=\\\"undefined\\\"!=typeof window\u0026\u0026!!window.document,o=\\\"undefined\\\"!=typeof WorkerGlobalScope\u0026\u0026(\\\"undefined\\\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self.navigator instanceof WorkerNavigator||\\\"undefined\\\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis.navigator instanceof WorkerNavigator),a=i?window:\\\"undefined\\\"!=typeof WorkerGlobalScope\u0026\u0026(\\\"undefined\\\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self||\\\"undefined\\\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis),s=\\\"complete\\\"===a?.document?.readyState,c=Boolean(\\\"hidden\\\"===a?.document?.visibilityState),u=\\\"\\\"+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d\u0026\u0026\\\"undefined\\\"==typeof SharedWorker,f=(()=\u003e{const e=a.navigator?.userAgent?.match(/Firefox[/\\\\s](\\\\d+\\\\.\\\\d+)/);return Array.isArray(e)\u0026\u0026e.length\u003e=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Xv:()=\u003ea,gX:()=\u003ei,iW:()=\u003eo});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t\u003cn.length;t++){var r=n[t];if(\\\"*\\\"===r.hostname)return!1;if(s(r.hostname,e.hostname)\u0026\u0026c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e\u0026\u0026e.length)for(var t=0;t\u003ce.length;t++){let r=e[t];if(!r)continue;0===r.indexOf(\\\"http://\\\")?r=r.substring(7):0===r.indexOf(\\\"https://\\\")\u0026\u0026(r=r.substring(8));const i=r.indexOf(\\\"/\\\");let o,a;i\u003e0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a=\\\"\\\");let[s]=o.split(\\\":\\\");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length\u003et.length)\u0026\u0026t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf(\\\"/\\\")\u0026\u0026(e=e.substring(1)),0===t.indexOf(\\\"/\\\")\u0026\u0026(t=t.substring(1)),\\\"\\\"===e||e===t}},1687:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Ak:()=\u003ec,Ze:()=\u003el,x3:()=\u003eu});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e\u0026\u0026s[e]\u0026\u0026(s[e].get(t)\u0026\u0026s[e].delete(t),h(e,t,!1),s[e].size\u0026\u0026f(e))}function d(e){if(!e)throw new Error(\\\"agentIdentifier required\\\");s[e]||(s[e]=new Map)}function l(e=\\\"\\\",t=\\\"feature\\\",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=\u003et.staged))\u0026\u0026(t.sort(((e,t)=\u003ee[1].priority-t[1].priority)),t.forEach((([t])=\u003e{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted\u0026\u0026o.backlog\u0026\u0026s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e\u0026\u0026t\u003ce.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=\u003e{Object.values(t||{}).forEach((t=\u003e{t[0]?.on\u0026\u0026t[0]?.context()instanceof a.y\u0026\u0026t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit(\\\"drain-\\\"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=\u003e{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{P:()=\u003ec,ee:()=\u003eu});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c=\\\"nr@context:\\\".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length\u0026\u0026(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i\u003cr.length;i++)r[i]===t\u0026\u0026r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o\u0026\u0026(o=!0);if(u.aborted\u0026\u0026!i)return;t\u0026\u0026o\u0026\u0026t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l\u003cd;l++)c[l].apply(a,r);var p=v()[s[e]];p\u0026\u0026p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||\\\"feature\\\",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=\u003e{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=\u003e{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t\u0026\u0026\\\"object\\\"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,\\\"aborted\\\",{get:()=\u003e{let e=f._aborted||!1;return e||(t\u0026\u0026(e=t.aborted),e)}}),f;function h(e){return e\u0026\u0026e instanceof a.y?e:e?(0,i.I)(e,c,(()=\u003enew a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,\\\"globalEE\\\"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{y:()=\u003en});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{d:()=\u003en,p:()=\u003ei});var n=r(7836).ee.get(\\\"handle\\\");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{i:()=\u003eo});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o=\\\"feature\\\"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=\u003eo,jT:()=\u003en,sp:()=\u003ei})},5607:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003en});const n=(0,r(9566).bz)()},9566:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{LA:()=\u003es,ZF:()=\u003ec,bz:()=\u003ea,el:()=\u003eu});var n=r(6154);const i=\\\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\\\";function o(e,t){return e?15\u0026e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e\u0026\u0026e.getRandomValues\u0026\u0026(t=e.getRandomValues(new Uint8Array(30))),i.split(\\\"\\\").map((e=\u003e\\\"x\\\"===e?o(t,r++).toString(16):\\\"y\\\"===e?(3\u0026o()|8).toString(16):e)).join(\\\"\\\")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t\u0026\u0026t.getRandomValues\u0026\u0026(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s\u003ce;s++)a.push(o(r,i++).toString(16));return a.join(\\\"\\\")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{BB:()=\u003ea,H3:()=\u003en,g:()=\u003eu,iL:()=\u003ec,tS:()=\u003es,uh:()=\u003ei,wk:()=\u003eo});const n=\\\"NRBA\\\",i=\\\"SESSION\\\",o=144e5,a=18e5,s={STARTED:\\\"session-started\\\",PAUSE:\\\"session-pause\\\",RESET:\\\"session-reset\\\",RESUME:\\\"session-resume\\\",UPDATE:\\\"session-update\\\"},c={SAME_TAB:\\\"same-tab\\\",CROSS_TAB:\\\"cross-tab\\\"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=\u003e{\\\"use strict\\\";function n(){return Math.floor(performance.now())}r.d(t,{t:()=\u003en})},7485:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{D:()=\u003ei});var n=r(6154);function i(e){if(0===(e||\\\"\\\").indexOf(\\\"data:\\\"))return{protocol:\\\"data\\\"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(\\\":\\\")),sameOrigin:t.protocol===n.gm?.location?.protocol\u0026\u0026t.host===n.gm?.location?.host};return r.port\u0026\u0026\\\"\\\"!==r.port||(\\\"http:\\\"===t.protocol\u0026\u0026(r.port=\\\"80\\\"),\\\"https:\\\"===t.protocol\u0026\u0026(r.port=\\\"443\\\")),r.pathname\u0026\u0026\\\"\\\"!==r.pathname?r.pathname.startsWith(\\\"/\\\")||(r.pathname=\\\"/\\\".concat(r.pathname)):r.pathname=\\\"/\\\",r}catch(e){return{}}}},944:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t){\\\"function\\\"==typeof console.debug\u0026\u0026console.debug(\\\"New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#\\\".concat(e),t)}r.d(t,{R:()=\u003en})},5284:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{t:()=\u003ec,B:()=\u003es});var n=r(7836),i=r(6154);const o=\\\"newrelic\\\";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e\u0026\u0026\\\"object\\\"==typeof e\u0026\u0026(a.has(t)||(r.emit(\\\"rumresp\\\",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{I:()=\u003ei});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=\u003e{n\u0026\u0026void 0===i\u0026\u0026(e.apply(this,r),i=setTimeout((()=\u003e{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=\u003e{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=\u003e{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=\u003ei,s:()=\u003en})},3304:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A:()=\u003eo});var n=r(7836);const i=()=\u003e{const e=new WeakSet;return(t,r)=\u003e{if(\\\"object\\\"==typeof r\u0026\u0026null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??\\\"\\\"}catch(e){try{n.ee.emit(\\\"internal-error\\\",[e])}catch(e){}return\\\"\\\"}}},5289:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{GG:()=\u003eo,sB:()=\u003ea});var n=r(3878);function i(){return\\\"undefined\\\"==typeof document||\\\"complete\\\"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)(\\\"load\\\",e,t)}function a(e){if(i())return e();(0,n.DD)(\\\"DOMContentLoaded\\\",e)}},384:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{NT:()=\u003eo,US:()=\u003ed,Zm:()=\u003ea,bQ:()=\u003ec,dV:()=\u003es,nY:()=\u003eu,pV:()=\u003el});var n=r(6154),i=r(1863);const o={beacon:\\\"bam.nr-data.net\\\",errorBeacon:\\\"bam.nr-data.net\\\"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic\u0026\u0026(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{u:()=\u003ei});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)(\\\"visibilitychange\\\",(function(){if(t)return void(\\\"hidden\\\"===document.visibilityState\u0026\u0026e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{u:()=\u003ef});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u=\\\"addEventListener\\\",d=\\\"removeEventListener\\\",l=\\\"nr@wrapped:\\\".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get(\\\"events\\\")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],\\\"-\\\",p)}function p(e,t){return e[1]}return\\\"getPrototypeOf\\\"in Object\u0026\u0026(a.RI\u0026\u0026h(document,f),c\u0026\u0026h(c.prototype,f),h(a.gm,f)),t.on(u+\\\"-start\\\",(function(e,t){var n=e[1];if(null!==n\u0026\u0026(\\\"function\\\"==typeof n||\\\"object\\\"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if(\\\"function\\\"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,\\\"fn-\\\",null,e.name||\\\"anonymous\\\"):n}));this.wrapped=e[1]=i}})),t.on(d+\\\"-start\\\",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;\\\"object\\\"==typeof n\u0026\u0026!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n\u0026\u0026t(n,...r)}},3434:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Jt:()=\u003eo,YM:()=\u003ec});var n=r(7836),i=r(5607);const o=\\\"nr@original:\\\".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n=\\\"\\\");const a=\\\"-\\\"===n.charAt(0);for(let s=0;s\u003ct.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=\\\"\\\"),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)\u0026\u0026(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d=\\\"function\\\"==typeof n?n(o,a):n||{}}catch(t){u([t,\\\"\\\",[o,a,s],d],e)}i(r+\\\"start\\\",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+\\\"err\\\",[o,a,e],d,c),e}finally{i(r+\\\"end\\\",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit(\\\"internal-error\\\",e)}catch(e){}}function d(e){return!(e\u0026\u0026\\\"function\\\"==typeof e\u0026\u0026e.apply\u0026\u0026!e[o])}},9414:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{J:()=\u003ec});var n=r(7836),i=r(2646),o=r(944),a=r(3434);const s=new Map;function c(e,t,r,c){if(\\\"object\\\"!=typeof t||!t||\\\"string\\\"!=typeof r||!r||\\\"function\\\"!=typeof t[r])return(0,o.R)(29);const u=function(e){return(e||n.ee).get(\\\"logger\\\")}(e),d=(0,a.YM)(u),l=new i.y(n.P);l.level=c.level,l.customAttributes=c.customAttributes;const f=t[r]?.[a.Jt]||t[r];return s.set(f,l),d.inPlace(t,[r],\\\"wrap-logger-\\\",(()=\u003es.get(f))),u}},9300:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.ajax},3333:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$v:()=\u003eu,TZ:()=\u003en,Zp:()=\u003ei,kd:()=\u003ec,mq:()=\u003es,nf:()=\u003ea,qN:()=\u003eo});const n=r(860).K7.genericEvents,i=[\\\"auxclick\\\",\\\"click\\\",\\\"copy\\\",\\\"keydown\\\",\\\"paste\\\",\\\"scrollend\\\"],o=[\\\"focus\\\",\\\"blur\\\"],a=4,s=1e3,c=[\\\"PageAction\\\",\\\"UserAction\\\",\\\"BrowserPerformance\\\"],u={MARKS:\\\"experimental.marks\\\",MEASURES:\\\"experimental.measures\\\",RESOURCES:\\\"experimental.resources\\\"}},6774:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.jserrors},993:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A$:()=\u003eo,ET:()=\u003ea,TZ:()=\u003es,p_:()=\u003ei});var n=r(860);const i={ERROR:\\\"ERROR\\\",WARN:\\\"WARN\\\",INFO:\\\"INFO\\\",DEBUG:\\\"DEBUG\\\",TRACE:\\\"TRACE\\\"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a=\\\"log\\\",s=n.K7.logging},3785:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{R:()=\u003ec,b:()=\u003eu});var n=r(9908),i=r(1863),o=r(860),a=r(8154),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,[\\\"API/logging/\\\".concat(c.toLowerCase(),\\\"/called\\\")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return\\\"string\\\"==typeof e\u0026\u0026Object.values(s.p_).some((t=\u003et===e.toUpperCase().trim()))}},8154:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{z_:()=\u003eo,XG:()=\u003es,TZ:()=\u003en,rs:()=\u003ei,xV:()=\u003ea});r(6154),r(9566),r(384);const n=r(860).K7.metrics,i=\\\"sm\\\",o=\\\"cm\\\",a=\\\"storeSupportabilityMetrics\\\",s=\\\"storeEventMetrics\\\"},6630:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.pageViewEvent},782:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{BB:()=\u003ed,G4:()=\u003eo,Qb:()=\u003el,TZ:()=\u003ei,Ug:()=\u003ea,_s:()=\u003es,bc:()=\u003eu,yP:()=\u003ec});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:\\\"recordReplay\\\",PAUSE:\\\"pauseReplay\\\",REPLAY_RUNNING:\\\"replayRunning\\\",ERROR_DURING_REPLAY:\\\"errorDuringReplay\\\"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:\\\"Session was reset\\\",sm:\\\"Reset\\\"},IMPORT:{message:\\\"Recorder failed to import\\\",sm:\\\"Import\\\"},TOO_MANY:{message:\\\"429: Too Many Requests\\\",sm:\\\"Too-Many\\\"},TOO_BIG:{message:\\\"Payload was too large\\\",sm:\\\"Too-Big\\\"},CROSS_TAB:{message:\\\"Session Entity was set to OFF on another tab\\\",sm:\\\"Cross-Tab\\\"},ENTITLEMENTS:{message:\\\"Session Replay is not allowed and will not be started\\\",sm:\\\"Entitlement\\\"}},d=5e3,l={API:\\\"api\\\"}},5270:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Aw:()=\u003ec,CT:()=\u003eu,SR:()=\u003es});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO\u0026\u0026(0,o.V)(e)\u0026\u0026!0===(0,i.gD)(e,\\\"session_trace.enabled\\\")}function c(e){return!0===(0,i.gD)(e,\\\"session_replay.preload\\\")\u0026\u0026s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{He:()=\u003ei,Kp:()=\u003es,Lc:()=\u003eu,Rz:()=\u003ed,TZ:()=\u003en,bD:()=\u003eo,d3:()=\u003ea,jx:()=\u003el,uP:()=\u003ec});const n=r(860).K7.sessionTrace,i=\\\"bstResource\\\",o=\\\"resource\\\",a=\\\"-start\\\",s=\\\"-end\\\",c=\\\"fn\\\"+a,u=\\\"fn\\\"+s,d=\\\"pushState\\\",l=1e3},3962:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{AM:()=\u003eo,O2:()=\u003ec,Qu:()=\u003eu,TZ:()=\u003es,ih:()=\u003ed,pP:()=\u003ea,tC:()=\u003ei});var n=r(860);const i=[\\\"click\\\",\\\"keydown\\\",\\\"submit\\\",\\\"popstate\\\"],o=\\\"api\\\",a=\\\"initialPageLoad\\\",s=n.K7.softNav,c={INITIAL_PAGE_LOAD:\\\"\\\",ROUTE_CHANGE:1,UNSPECIFIED:2},u={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},d={IP:\\\"in progress\\\",FIN:\\\"finished\\\",CAN:\\\"cancelled\\\"}},7378:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$p:()=\u003ex,BR:()=\u003eb,Kp:()=\u003eR,L3:()=\u003ey,Lc:()=\u003ec,NC:()=\u003eo,SG:()=\u003ed,TZ:()=\u003ei,U6:()=\u003ep,UT:()=\u003em,d3:()=\u003ew,dT:()=\u003ef,e5:()=\u003eA,gx:()=\u003ev,l9:()=\u003el,oW:()=\u003eh,op:()=\u003eg,rw:()=\u003eu,tH:()=\u003eT,uP:()=\u003es,wW:()=\u003eE,xq:()=\u003ea});var n=r(384);const i=r(860).K7.spa,o=[\\\"click\\\",\\\"submit\\\",\\\"keypress\\\",\\\"keydown\\\",\\\"keyup\\\",\\\"change\\\"],a=999,s=\\\"fn-start\\\",c=\\\"fn-end\\\",u=\\\"cb-start\\\",d=\\\"api-ixn-\\\",l=\\\"remaining\\\",f=\\\"interaction\\\",h=\\\"spaNode\\\",p=\\\"jsonpNode\\\",g=\\\"fetch-start\\\",m=\\\"fetch-done\\\",v=\\\"fetch-body-\\\",b=\\\"jsonp-end\\\",y=(0,n.dV)().o.ST,w=\\\"-start\\\",R=\\\"-end\\\",x=\\\"-body\\\",E=\\\"cb\\\"+R,A=\\\"jsTime\\\",T=\\\"fetch\\\"},4234:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003eo});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{V:()=\u003eo});var n=r(9417),i=r(6154);const o=e=\u003ei.RI\u0026\u0026!0===(0,n.gD)(e,\\\"privacy.cookies_enabled\\\")},8969:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{j:()=\u003eO});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(8154),h=r(384),p=r(6344);const g=[\\\"setErrorHandler\\\",\\\"finished\\\",\\\"addToTrace\\\",\\\"addRelease\\\",\\\"recordCustomEvent\\\",\\\"addPageAction\\\",\\\"setCurrentRouteName\\\",\\\"setPageViewName\\\",\\\"setCustomAttribute\\\",\\\"interaction\\\",\\\"noticeError\\\",\\\"setUserId\\\",\\\"setApplicationVersion\\\",\\\"start\\\",p.G4.RECORD,p.G4.PAUSE,\\\"log\\\",\\\"wrapLogger\\\"],m=[\\\"setErrorHandler\\\",\\\"finished\\\",\\\"addToTrace\\\",\\\"addRelease\\\"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(9414);function x(){const e=(0,h.pV)();g.forEach((t=\u003e{e[t]=(...r)=\u003efunction(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=\u003e{e\u0026\u0026e.api?e.exposed\u0026\u0026e.api[t]\u0026\u0026n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length\u003e1?n:n[0]}(t,...r)}))}const E={};var A=r(9417),T=r(5603),N=r(5284);const S=e=\u003e{const t=e.startsWith(\\\"http\\\");e+=\\\"/\\\",r.p=t?e:\\\"https://\\\"+e};let _=!1;function O(e,t={},g,O){let{init:I,info:P,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();P||(I=L.init,P=L.info,j=L.loader_config),(0,A.xN)(e.agentIdentifier,I||{}),(0,T.a)(e.agentIdentifier,j||{}),P.jsAttributes??={},d.bv\u0026\u0026(P.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,P);const H=(0,A.D0)(e.agentIdentifier),M=[P.beacon,P.errorBeacon];_||(H.proxy.assets\u0026\u0026(S(H.proxy.assets),M.push(H.proxy.assets)),H.proxy.beacon\u0026\u0026M.push(H.proxy.beacon),x(),(0,h.US)(\\\"activatedFeatures\\\",N.B),e.runSoftNavOverSpa\u0026\u0026=!0===H.soft_navigations.enabled\u0026\u0026H.feature_flags.includes(\\\"soft_nav\\\")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?M:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api\u0026\u0026(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,\\\"api\\\");const g={};var x=s.ee.get(e),A=x.get(\\\"tracer\\\");E[e]=b.g.OFF,x.on(p.G4.REPLAY_RUNNING,(t=\u003e{E[e]=t}));var T=\\\"api-\\\",N=T+\\\"ixn-\\\";function S(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(T,n,!0,o||null===r?\\\"session\\\":void 0)(t,r)}function _(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,[\\\"API/log/called\\\"],void 0,n.K7.metrics,x),(0,w.R)(x,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=\u003e{(0,a.p)(f.xV,[\\\"API/wrapLogger/called\\\"],void 0,n.K7.metrics,x),(0,R.J)(x,e,t,{customAttributes:r,level:i})},m.forEach((e=\u003e{g[e]=I(T,e,!0,\\\"api\\\")})),g.addPageAction=I(T,\\\"addPageAction\\\",!0,n.K7.genericEvents),g.recordCustomEvent=I(T,\\\"recordCustomEvent\\\",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if(\\\"string\\\"==typeof t)return\\\"/\\\"!==t.charAt(0)\u0026\u0026(t=\\\"/\\\"+t),(0,o.f)(e).customTransaction=(r||\\\"http://custom.transaction\\\")+t,I(T,\\\"setPageViewName\\\",!0)()},g.setCustomAttribute=function(e,t,r=!1){if(\\\"string\\\"==typeof e){if([\\\"string\\\",\\\"number\\\",\\\"boolean\\\"].includes(typeof t)||null===t)return S(e,t,\\\"setCustomAttribute\\\",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if(\\\"string\\\"==typeof e||null===e)return S(\\\"enduser.id\\\",e,\\\"setUserId\\\",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if(\\\"string\\\"==typeof e||null===e)return S(\\\"application.version\\\",e,\\\"setApplicationVersion\\\",!1);(0,l.R)(42,typeof e)},g.start=()=\u003e{try{(0,a.p)(f.xV,[\\\"API/start/called\\\"],void 0,n.K7.metrics,x),x.emit(\\\"manual-start-all\\\")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,[\\\"API/recordReplay/called\\\"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,x)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,[\\\"API/pauseReplay/called\\\"],void 0,n.K7.metrics,x),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,x)},g.interaction=function(e){return(new _).get(\\\"object\\\"==typeof e?e:{})};const O=_.prototype={createTracer:function(e,t){var r={},i=this,o=\\\"function\\\"==typeof t;return(0,a.p)(f.xV,[\\\"API/createTracer/called\\\"],void 0,n.K7.metrics,x),h||(0,a.p)(N+\\\"tracer\\\",[(0,v.t)(),e,r],i,n.K7.spa,x),function(){if(A.emit((o?\\\"\\\":\\\"no-\\\")+\\\"fn-start\\\",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t=\\\"string\\\"==typeof e?new Error(e):e;throw A.emit(\\\"fn-err\\\",[arguments,this,t],r),t}finally{A.emit(\\\"fn-end\\\",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,[\\\"API/\\\"+t+\\\"/called\\\"],void 0,n.K7.metrics,x),i\u0026\u0026(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,x),r?void 0:this}}function P(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=\u003e{t(e),(0,c.Ze)(e,\\\"api\\\")})).catch((e=\u003e{(0,l.R)(27,e),x.abort()}))}return[\\\"actionText\\\",\\\"setName\\\",\\\"setAttribute\\\",\\\"save\\\",\\\"ignore\\\",\\\"onEnd\\\",\\\"getContext\\\",\\\"end\\\",\\\"get\\\"].forEach((e=\u003e{O[e]=I(N,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(N,\\\"routeName\\\",void 0,n.K7.softNav):I(T,\\\"routeName\\\",!0,n.K7.spa),g.noticeError=function(t,r){\\\"string\\\"==typeof t\u0026\u0026(t=new Error(t)),(0,a.p)(f.xV,[\\\"API/noticeError/called\\\"],void 0,n.K7.metrics,x),(0,a.p)(\\\"err\\\",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,x)},d.RI?(0,u.GG)((()=\u003eP()),!0):P(),g}(e.agentIdentifier,O,e.runSoftNavOverSpa)),void 0===e.exposed\u0026\u0026(e.exposed=k),_=!0}},8374:(e,t,r)=\u003e{r.nc=(()=\u003e{try{return document?.currentScript?.nonce}catch(e){}return\\\"\\\"})()},860:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$J:()=\u003eu,K7:()=\u003es,P3:()=\u003ec,XX:()=\u003ei,qY:()=\u003en,v4:()=\u003ea});const n=\\\"events\\\",i=\\\"jserrors\\\",o=\\\"browser/blobs\\\",a=\\\"rum\\\",s={ajax:\\\"ajax\\\",genericEvents:\\\"generic_events\\\",jserrors:i,logging:\\\"logging\\\",metrics:\\\"metrics\\\",pageAction:\\\"page_action\\\",pageViewEvent:\\\"page_view_event\\\",pageViewTiming:\\\"page_view_timing\\\",sessionReplay:\\\"session_replay\\\",sessionTrace:\\\"session_trace\\\",softNav:\\\"soft_navigations\\\",spa:\\\"spa\\\"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:\\\"browser/logs\\\",[s.genericEvents]:\\\"ins\\\"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=\u003e{for(var r in t)i.o(t,r)\u0026\u0026!i.o(e,r)\u0026\u0026Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=\u003ePromise.all(Object.keys(i.f).reduce(((t,r)=\u003e(i.f[r](e,t),t)),[])),i.u=e=\u003e({212:\\\"nr-spa-compressor\\\",249:\\\"nr-spa-recorder\\\",478:\\\"nr-spa\\\"}[e]+\\\"-1.283.1.min.js\\\"),i.o=(e,t)=\u003eObject.prototype.hasOwnProperty.call(e,t),e={},t=\\\"NRBA-1.283.1.PROD:\\\",i.l=(r,n,o,a)=\u003e{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName(\\\"script\\\"),d=0;d\u003cu.length;d++){var l=u[d];if(l.getAttribute(\\\"src\\\")==r||l.getAttribute(\\\"data-webpack\\\")==t+o){s=l;break}}if(!s){c=!0;var f={478:\\\"sha512-xh2gny9FbPW5pomtWyy7hHdQHGboXB/N4nyn8DfA0WA2vCwX0A4j2oDh5iaHPZ7LExtpCN1wH+cmFhC5+XZpvw==\\\",249:\\\"sha512-QwbAv951CmpiBMYrGDX13s51PFIraP7TGD1mhcZv8jILwi1qPZbPL+c98zB6u5kWpOPcdfGLroZW+38lG3ZVHA==\\\",212:\\\"sha512-hVJwKgbpekN6SB9bmRkjdGJxXRXeHDsrVRlTC1EMUEYSeaO8NWR6CjzsDA2iUrhmD1sv4p1TCx6tYULmyZ2Tbw==\\\"};(s=document.createElement(\\\"script\\\")).charset=\\\"utf-8\\\",s.timeout=120,i.nc\u0026\u0026s.setAttribute(\\\"nonce\\\",i.nc),s.setAttribute(\\\"data-webpack\\\",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+\\\"/\\\")\u0026\u0026(s.crossOrigin=\\\"anonymous\\\"),f[a]\u0026\u0026(s.integrity=f[a])}e[r]=[n];var h=(t,n)=\u003e{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode\u0026\u0026s.parentNode.removeChild(s),i\u0026\u0026i.forEach((e=\u003ee(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:\\\"timeout\\\",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c\u0026\u0026document.head.appendChild(s)}},i.r=e=\u003e{\\\"undefined\\\"!=typeof Symbol\u0026\u0026Symbol.toStringTag\u0026\u0026Object.defineProperty(e,Symbol.toStringTag,{value:\\\"Module\\\"}),Object.defineProperty(e,\\\"__esModule\\\",{value:!0})},i.p=\\\"https://js-agent.newrelic.com/\\\",(()=\u003e{var e={38:0,788:0};i.f.j=(t,r)=\u003e{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=\u003en=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=\u003e{if(i.o(e,t)\u0026\u0026(0!==(n=e[t])\u0026\u0026(e[t]=void 0),n)){var o=r\u0026\u0026(\\\"load\\\"===r.type?\\\"missing\\\":r.type),a=r\u0026\u0026r.target\u0026\u0026r.target.src;s.message=\\\"Loading chunk \\\"+t+\\\" failed.\\\\n(\\\"+o+\\\": \\\"+a+\\\")\\\",s.name=\\\"ChunkLoadError\\\",s.type=o,s.request=a,n[1](s)}}),\\\"chunk-\\\"+t,t)}};var t=(t,r)=\u003e{var n,o,[a,s,c]=r,u=0;if(a.some((t=\u003e0!==e[t]))){for(n in s)i.o(s,n)\u0026\u0026(i.m[n]=s[n]);if(c)c(i)}for(t\u0026\u0026t(r);u\u003ca.length;u++)o=a[u],i.o(e,o)\u0026\u0026e[o]\u0026\u0026e[o][0](),e[o]=0},r=self[\\\"webpackChunk:NRBA-1.283.1.PROD\\\"]=self[\\\"webpackChunk:NRBA-1.283.1.PROD\\\"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=\u003e{\\\"use strict\\\";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if(\\\"function\\\"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e(\\\"addPageAction\\\",e,t)}recordCustomEvent(e,t){return this.#e(\\\"recordCustomEvent\\\",e,t)}setPageViewName(e,t){return this.#e(\\\"setPageViewName\\\",e,t)}setCustomAttribute(e,t,r){return this.#e(\\\"setCustomAttribute\\\",e,t,r)}noticeError(e,t){return this.#e(\\\"noticeError\\\",e,t)}setUserId(e){return this.#e(\\\"setUserId\\\",e)}setApplicationVersion(e){return this.#e(\\\"setApplicationVersion\\\",e)}setErrorHandler(e){return this.#e(\\\"setErrorHandler\\\",e)}addRelease(e,t){return this.#e(\\\"addRelease\\\",e,t)}log(e,t){return this.#e(\\\"log\\\",e,t)}}class o extends n{#e(t,...r){if(\\\"function\\\"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e(\\\"start\\\")}finished(e){return this.#e(\\\"finished\\\",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e(\\\"addToTrace\\\",e)}setCurrentRouteName(e){return this.#e(\\\"setCurrentRouteName\\\",e)}interaction(){return this.#e(\\\"interaction\\\")}wrapLogger(e,t,r){return this.#e(\\\"wrapLogger\\\",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=\u003e{t[r]=function(e,t){return!0===(0,s.gD)(t,\\\"\\\".concat(e,\\\".enabled\\\"))}(r,e)})),t}var d=i(8969);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart\u0026\u0026(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on(\\\"manual-start-all\\\",(0,v.J)((()=\u003e{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=\u003e{n=e}));const o=async()=\u003e{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit(\\\"internal-error\\\",[t]),this.featureName===a.K7.sessionReplay\u0026\u0026this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,\\\"aggregate\\\");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee\u0026\u0026this.ee.abort()}};p.RI?(0,h.GG)((()=\u003eo()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)\u0026\u0026!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),E=i(2843),A=i(3878),T=i(782),N=i(1863);class S extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),p.RI\u0026\u0026((0,E.u)((()=\u003e(0,x.p)(\\\"docHidden\\\",[(0,N.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)(\\\"pagehide\\\",(()=\u003e(0,x.p)(\\\"winPagehide\\\",[(0,N.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var _=i(8154);class O extends b{static featureName=_.TZ;constructor(e,t=!0){super(e,_.TZ,t),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name=\\\"UncaughtError\\\",this.message=\\\"string\\\"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t=\\\"Unhandled Promise Rejection\\\";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+\\\": \\\"+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+\\\": \\\"+r?.message,r}function L(e){if(e.error instanceof SyntaxError\u0026\u0026!/:\\\\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error\u0026\u0026!!e.stack}class M extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on(\\\"internal-error\\\",((e,t)=\u003e{this.abortHandler\u0026\u0026(0,x.p)(\\\"ierr\\\",[C(e),(0,N.t)(),!0,{},this.#r,t],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=\u003e{this.#r=e})),p.gm.addEventListener(\\\"unhandledrejection\\\",(e=\u003e{this.abortHandler\u0026\u0026(0,x.p)(\\\"err\\\",[k(e),(0,N.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener(\\\"error\\\",(e=\u003e{this.abortHandler\u0026\u0026(0,x.p)(\\\"err\\\",[L(e),(0,N.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var D=i(8990);let K=1;const U=\\\"nr@id\\\";function V(e){const t=typeof e;return!e||\\\"object\\\"!==t\u0026\u0026\\\"function\\\"!==t?-1:e===p.gm?0:(0,D.I)(e,U,(function(){return K++}))}function G(e){if(\\\"string\\\"==typeof e\u0026\u0026e.length)return e.length;if(\\\"object\\\"==typeof e){if(\\\"undefined\\\"!=typeof ArrayBuffer\u0026\u0026e instanceof ArrayBuffer\u0026\u0026e.byteLength)return e.byteLength;if(\\\"undefined\\\"!=typeof Blob\u0026\u0026e instanceof Blob\u0026\u0026e.size)return e.size;if(!(\\\"undefined\\\"!=typeof FormData\u0026\u0026e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=[\\\"open\\\",\\\"send\\\"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get(\\\"xhr\\\")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u=\\\"readystatechange\\\",d=[\\\"onload\\\",\\\"onerror\\\",\\\"onabort\\\",\\\"onloadstart\\\",\\\"onloadend\\\",\\\"onprogress\\\",\\\"ontimeout\\\"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit(\\\"new-xhr\\\",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState\u003e3\u0026\u0026!s.resolved\u0026\u0026(s.resolved=!0,n.emit(\\\"xhr-resolved\\\",[],e)),i.inPlace(e,d,\\\"fn-\\\",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit(\\\"internal-error\\\",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,[\\\"onreadystatechange\\\"],\\\"fn-\\\",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,\\\"-xhr-\\\",y),n.on(\\\"send-xhr-start\\\",(function(e,t){h(e,t),function(e){l.push(e),a\u0026\u0026(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on(\\\"open-xhr-start\\\",h),a){var g=s\u0026\u0026s.resolve();if(!c\u0026\u0026!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on(\\\"fn-end\\\",(function(e){e[0]\u0026\u0026e[0].type===u||b()}));function b(){for(var e=0;e\u003cl.length;e++)h(0,l[e]);l.length\u0026\u0026(l=[])}function y(e,t){return t}return n}var Y=\\\"fetch-\\\",J=Y+\\\"body-\\\",X=[\\\"arrayBuffer\\\",\\\"blob\\\",\\\"json\\\",\\\"text\\\",\\\"formData\\\"],Q=p.gm.Request,ee=p.gm.Response,te=\\\"prototype\\\";const re={};function ne(e){const t=function(e){return(e||B.ee).get(\\\"fetch\\\")}(e);if(!(Q\u0026\u0026ee\u0026\u0026p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];\\\"function\\\"==typeof i\u0026\u0026(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+\\\"before-start\\\",[r],o),o[B.P]\u0026\u0026o[B.P].dt\u0026\u0026(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+\\\"start\\\",[r,e],a),a.then((function(e){return t.emit(n+\\\"end\\\",[null,e],a),e}),(function(e){throw t.emit(n+\\\"end\\\",[e],a),e}))})}return re[t.debugId]=1,X.forEach((e=\u003e{r(Q[te],e,J),r(ee[te],e,J)})),r(p.gm,\\\"fetch\\\",Y),t.on(Y+\\\"end\\\",(function(e,r){var n=this;if(r){var i=r.headers.get(\\\"content-length\\\");null!==i\u0026\u0026(n.rxSize=i),t.emit(Y+\\\"done\\\",[null,r],n)}else t.emit(Y+\\\"done\\\",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||\\\"\\\").toString()||null,i=(t.agentID||\\\"\\\").toString()||null,o=(t.trustKey||\\\"\\\").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)\u0026\u0026this.useTraceContextHeadersForCors())\u0026\u0026(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin\u0026\u0026!this.excludeNewrelicHeader()||!e.sameOrigin\u0026\u0026this.isAllowedOrigin(e)\u0026\u0026this.useNewrelicHeaderForCors())\u0026\u0026(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return\\\"00-\\\"+t+\\\"-\\\"+e+\\\"-01\\\"}generateTraceContextStateHeader(e,t,r,n,i){return i+\\\"@nr=0-1-\\\"+r+\\\"-\\\"+n+\\\"-\\\"+e+\\\"----\\\"+t}generateTraceHeader(e,t,r,n,i,o){if(!(\\\"function\\\"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:\\\"Browser\\\",ac:n,ap:i,id:e,tr:t,ti:r}};return o\u0026\u0026n!==o\u0026\u0026(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()\u0026\u0026this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\")\u0026\u0026(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n\u003cr.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname\u0026\u0026e.protocol===i.protocol\u0026\u0026e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,\\\"distributed_tracing\\\");return!!e\u0026\u0026!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=[\\\"load\\\",\\\"error\\\",\\\"abort\\\",\\\"timeout\\\"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=\u003e(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:\\\"xhr\\\",fetch:\\\"fetch\\\",beacon:\\\"beacon\\\"};p.gm?.performance?.getEntriesByType(\\\"resource\\\").forEach((t=\u003e{if(t.initiatorType in e\u0026\u00260!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler(\\\"xhr\\\",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener(\\\"load\\\",(function(r){E(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener(\\\"progress\\\",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid\u0026\u0026this.sameOrigin\u0026\u0026r.setRequestHeader(\\\"X-NewRelic-ID\\\",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader\u0026\u0026(r.setRequestHeader(\\\"newrelic\\\",i.newrelicHeader),o=!0),i.traceContextParentHeader\u0026\u0026(r.setRequestHeader(\\\"traceparent\\\",i.traceContextParentHeader),i.traceContextStateHeader\u0026\u0026r.setRequestHeader(\\\"tracestate\\\",i.traceContextStateHeader),o=!0),o\u0026\u0026(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n\u0026\u0026i){var a=G(i);a\u0026\u0026(n.txSize=a)}this.startTime=(0,N.t)(),this.body=i,this.listener=function(e){try{\\\"abort\\\"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),(\\\"load\\\"!==e.type||o.called===o.totalCbs\u0026\u0026(o.onloadCalled||\\\"function\\\"!=typeof r.onload)\u0026\u0026\\\"function\\\"==typeof o.end)\u0026\u0026o.end(r)}catch(e){try{t.emit(\\\"internal-error\\\",[e])}catch(e){}}};for(var s=0;s\u003cde;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled\u0026\u0026\\\"function\\\"==typeof r.onload||\\\"function\\\"!=typeof this.end||this.end(r)}function d(e,t){var r=\\\"\\\"+V(e)+!!t;this.xhrGuids\u0026\u0026!this.xhrGuids[r]\u0026\u0026(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=\\\"\\\"+V(e)+!!t;this.xhrGuids\u0026\u0026this.xhrGuids[r]\u0026\u0026(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,N.t)()}function h(e,r){r instanceof fe\u0026\u0026\\\"load\\\"===e[0]\u0026\u0026t.emit(\\\"xhr-load-added\\\",[e[1],e[2]],r)}function g(e,r){r instanceof fe\u0026\u0026\\\"load\\\"===e[0]\u0026\u0026t.emit(\\\"xhr-load-removed\\\",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe\u0026\u0026(\\\"onload\\\"===r\u0026\u0026(this.onload=!0),(\\\"load\\\"===(e[0]\u0026\u0026e[0].type)||this.onload)\u0026\u0026(this.xhrCbStart=(0,N.t)()))}function v(e,r){this.xhrCbStart\u0026\u0026t.emit(\\\"xhr-cb-time\\\",[(0,N.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if(\\\"string\\\"==typeof e[0]?0===(t=e[0]).length\u0026\u0026p.RI\u0026\u0026(t=\\\"\\\"+p.gm.location.href):e[0]\u0026\u0026e[0].url?t=e[0].url:p.gm?.URL\u0026\u0026e[0]\u0026\u0026e[0]instanceof URL?t=e[0].href:\\\"function\\\"==typeof e[0].toString\u0026\u0026(t=e[0].toString()),\\\"string\\\"==typeof t\u0026\u00260!==t.length){t\u0026\u0026(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i\u0026\u0026(i.newrelicHeader||i.traceContextParentHeader))if(e[0]\u0026\u0026e[0].headers)s(e[0].headers,i)\u0026\u0026(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)\u0026\u0026(this.dt=i),e.length\u003e1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader\u0026\u0026(e.set(\\\"newrelic\\\",t.newrelicHeader),r=!0),t.traceContextParentHeader\u0026\u0026(e.set(\\\"traceparent\\\",t.traceContextParentHeader),t.traceContextStateHeader\u0026\u0026e.set(\\\"tracestate\\\",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,N.t)(),this.dt=t,e.length\u003e=1\u0026\u0026(this.target=e[0]),e.length\u003e=2\u0026\u0026(this.opts=e[1]);var r,n=this.opts||{},i=this.target;\\\"string\\\"==typeof i?r=i:\\\"object\\\"==typeof i\u0026\u0026i instanceof le?r=i.url:p.gm?.URL\u0026\u0026\\\"object\\\"==typeof i\u0026\u0026i instanceof URL\u0026\u0026(r=i.href),pe(this,r);var o=(\\\"\\\"+(i\u0026\u0026i instanceof le\u0026\u0026i.method||n.method||\\\"GET\\\")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,N.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,\\\"string\\\"==typeof this.rxSize\u0026\u0026this.rxSize.length\u003e0\u0026\u0026(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,N.t)()-this.startTime};r(\\\"xhr\\\",[this.params,i,this.startTime,this.endTime,\\\"fetch\\\"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t\u003cde;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,N.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status\u0026\u0026(t.status=0):E(this,e),n.cbTime=this.cbTime,r(\\\"xhr\\\",[t,n,this.startTime,this.endTime,\\\"xhr\\\"],this,a.K7.ajax))}}function E(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return\\\"json\\\"===r\u0026\u0026null!==t?t:\\\"arraybuffer\\\"===r||\\\"blob\\\"===r||\\\"json\\\"===r?G(e.response):\\\"text\\\"===r||\\\"\\\"===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n\u0026\u0026(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader(\\\"X-NewRelic-App-Data\\\");i\u0026\u0026((0,x.p)(_.rs,[\\\"Ajax/CrossApplicationTracing/Header/Seen\\\"],void 0,a.K7.metrics,t),e.params.cat=i.split(\\\", \\\").pop())}e.loadCaptureCalled=!0}t.on(\\\"new-xhr\\\",i),t.on(\\\"open-xhr-start\\\",o),t.on(\\\"open-xhr-end\\\",s),t.on(\\\"send-xhr-start\\\",c),t.on(\\\"xhr-cb-time\\\",u),t.on(\\\"xhr-load-added\\\",d),t.on(\\\"xhr-load-removed\\\",l),t.on(\\\"xhr-resolved\\\",f),t.on(\\\"addEventListener-end\\\",h),t.on(\\\"removeEventListener-end\\\",g),t.on(\\\"fn-end\\\",v),t.on(\\\"fetch-before-start\\\",b),t.on(\\\"fetch-start\\\",y),t.on(\\\"fn-start\\\",m),t.on(\\\"fetch-done\\\",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+\\\":\\\"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ge={},me=[\\\"pushState\\\",\\\"replaceState\\\"];function ve(e){const t=function(e){return(e||B.ee).get(\\\"history\\\")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,\\\"-\\\")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Ee,Lc:Ae,uP:Te,Rz:Ne}=be;class Se extends b{static featureName=Ee;constructor(e,t=!0){super(e,Ee,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Te,(function(e,t){this.bstStart=(0,N.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)(\\\"bst\\\",[e[0],t,this.bstStart,(0,N.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Ne+Re,(function(e){this.time=(0,N.t)(),this.startPath=location.pathname+location.hash})),r.on(Ne+xe,(function(e){(0,x.p)(\\\"bstHist\\\",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=\u003e{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var _e=i(2614);class Oe extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem(\\\"\\\".concat(_e.H3,\\\"_\\\").concat(_e.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)\u0026\u0026this.ee.on(t.G4.RECORD,(()=\u003ethis.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on(\\\"err\\\",(e=\u003e{this.replayRunning\u0026\u0026(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=\u003e{this.replayRunning=e}))}#s(e){return e\u0026\u0026(e.sessionReplayMode===_e.g.FULL||e.sessionReplayMode===_e.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee,agentRef:this.#o}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==_e.g.FULL\u0026\u0026this.featAggregate.initializeRecording(_e.g.FULL,!0):(this.#i=_e.g.FULL,this.#c(t.Qb.API),this.recorder\u0026\u0026this.recorder.parent.mode!==_e.g.FULL\u0026\u0026(this.recorder.parent.mode=_e.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class Pe extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=\u003e{(0,A.sp)(e,(e=\u003e{a(e)}),!0)}));const n=()=\u003e(0,x.p)(\\\"newURL\\\",[(0,N.t)(),\\\"\\\"+window.location],void 0,this.featureName,this.ee);r.on(\\\"pushState-end\\\",n),r.on(\\\"replaceState-end\\\",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)(\\\"popstate\\\",(e=\u003e(0,x.p)(\\\"newURL\\\",[e.timeStamp,\\\"\\\"+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=\u003e{i||(i=!0,requestAnimationFrame((()=\u003e{(0,x.p)(\\\"newDom\\\",[(0,N.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=\u003e{(0,x.p)(\\\"newUIEvent\\\",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var je=i(7378);const Ce={},ke=[\\\"appendChild\\\",\\\"insertBefore\\\",\\\"replaceChild\\\"];function Le(e){const t=function(e){return(e||B.ee).get(\\\"jsonp\\\")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?\u0026](?:callback|cb)=([^\u0026#]+)/,i=/(.*)\\\\.([^.]+)/,o=/^(\\\\w+)(\\\\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,\\\"dom-\\\"),t.on(\\\"dom-start\\\",(function(e){!function(e){if(!e||\\\"string\\\"!=typeof e.nodeName||\\\"script\\\"!==e.nodeName.toLowerCase())return;if(\\\"function\\\"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t\u0026\u0026t.length\u003e=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if(\\\"function\\\"!=typeof u.parent[u.key])return;var d={};function l(){t.emit(\\\"jsonp-end\\\",[],d),e.removeEventListener(\\\"load\\\",l,(0,A.jT)(!1)),e.removeEventListener(\\\"error\\\",f,(0,A.jT)(!1))}function f(){t.emit(\\\"jsonp-error\\\",[],d),t.emit(\\\"jsonp-end\\\",[],d),e.removeEventListener(\\\"load\\\",l,(0,A.jT)(!1)),e.removeEventListener(\\\"error\\\",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],\\\"cb-\\\",d),e.addEventListener(\\\"load\\\",l,(0,A.jT)(!1)),e.addEventListener(\\\"error\\\",f,(0,A.jT)(!1)),t.emit(\\\"new-jsonp\\\",[e.src],d)}(e[0])})),t}const He={};function Me(e){const t=function(e){return(e||B.ee).get(\\\"promise\\\")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i\u0026\u0026function(){function e(r){var o=t.context(),a=n(r,\\\"executor-\\\",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,\\\"name\\\",{value:\\\"Promise\\\"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),[\\\"all\\\",\\\"race\\\"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=\u003e{this.resolve(e).then(a(\\\"all\\\"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit(\\\"propagate\\\",[null,!i],o,!1,!1),i=i||!e}}}})),[\\\"resolve\\\",\\\"reject\\\"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r\u0026\u0026t.emit(\\\"propagate\\\",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],\\\"cb-\\\",a,null,!1),e[1]=n(e[1],\\\"cb-\\\",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit(\\\"propagate\\\",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on(\\\"executor-start\\\",(function(e){e[0]=n(e[0],\\\"resolve-\\\",this,null,!1),e[1]=n(e[1],\\\"resolve-\\\",this,null,!1)})),t.on(\\\"executor-err\\\",(function(e,t,r){e[1](r)})),t.on(\\\"cb-end\\\",(function(e,r,n){t.emit(\\\"propagate\\\",[n,!0],this.nextPromise,!1,!1)})),t.on(\\\"propagate\\\",(function(e,r,n){this.getCtx\u0026\u0026!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r\u0026\u0026r.getCtx?r.getCtx():this})}))}(),t}const De={},Ke=\\\"setTimeout\\\",Ue=\\\"setInterval\\\",Ve=\\\"clearTimeout\\\",Ge=\\\"-start\\\",Fe=[Ke,\\\"setImmediate\\\",Ue,Ve,\\\"clearImmediate\\\"];function Be(e){const t=function(e){return(e||B.ee).get(\\\"timer\\\")}(e);if(De[t.debugId]++)return t;De[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+\\\"-\\\"),r.inPlace(p.gm,Fe.slice(2,3),Ue+\\\"-\\\"),r.inPlace(p.gm,Fe.slice(3),Ve+\\\"-\\\"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],\\\"fn-\\\",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],\\\"fn-\\\",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get(\\\"mutation\\\")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n\u0026\u0026(window.MutationObserver=function(e){return this instanceof n?new n(r(e,\\\"fn-\\\")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Je,wW:Xe,e5:$e,tH:Qe,uP:et,rw:tt,Lc:rt}=je;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get(\\\"tracer\\\"),o=Le(this.ee),a=Me(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get(\\\"events\\\"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit(\\\"newURL\\\",[\\\"\\\"+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,N.t)()}function m(){n--,window.location.hash!==r\u0026\u0026h(0,!0);var e=(0,N.t)();this[$e]=~~this[$e]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,N.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Xe,m),o.on(Xe,m),this.ee.on(\\\"fn-err\\\",((...t)=\u003e{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)(\\\"function-err\\\",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,\\\"xhr-resolved\\\"],this.featureName),u.buffer([et],this.featureName),s.buffer([\\\"setTimeout\\\"+Ye,\\\"clearTimeout\\\"+Ze,et],this.featureName),c.buffer([et,\\\"new-xhr\\\",\\\"send-xhr\\\"+Ze],this.featureName),d.buffer([Qe+Ze,Qe+\\\"-done\\\",Qe+Je+Ze,Qe+Je+Ye],this.featureName),l.buffer([\\\"newURL\\\"],this.featureName),f.buffer([et],this.featureName),a.buffer([\\\"propagate\\\",tt,Xe,\\\"executor-err\\\",\\\"resolve\\\"+Ze],this.featureName),i.buffer([et,\\\"no-\\\"+et],this.featureName),o.buffer([\\\"new-jsonp\\\",\\\"cb-start\\\",\\\"jsonp-error\\\",\\\"jsonp-end\\\"],this.featureName),v(d,Qe+Ze),v(d,Qe+\\\"-done\\\"),v(o,\\\"new-jsonp\\\"),v(o,\\\"jsonp-end\\\"),v(o,\\\"cb-start\\\"),l.on(\\\"pushState-end\\\",h),l.on(\\\"replaceState-end\\\",h),window.addEventListener(\\\"hashchange\\\",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener(\\\"load\\\",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener(\\\"popstate\\\",(function(){h(0,n\u003e1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled,e.init.performance.resources.enabled];if(p.RI\u0026\u0026(e.init.user_actions.enabled\u0026\u0026(it.Zp.forEach((e=\u003e(0,A.sp)(e,(e=\u003e(0,x.p)(\\\"ua\\\",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=\u003e{const t=(0,v.s)((e=\u003e{(0,x.p)(\\\"ua\\\",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled\u0026\u0026p.gm.PerformanceObserver?.supportedEntryTypes.includes(\\\"resource\\\"))){new PerformanceObserver((e=\u003e{e.getEntries().forEach((e=\u003e{(0,x.p)(\\\"browserPerformance.resource\\\",[e],void 0,this.featureName,this.ee)}))})).observe({type:\\\"resource\\\",buffered:!0})}r.some((e=\u003ee))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785),ct=i(9414);class ut extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;(0,ct.J)(r,p.gm.console,\\\"log\\\",{level:\\\"info\\\"}),(0,ct.J)(r,p.gm.console,\\\"error\\\",{level:\\\"error\\\"}),(0,ct.J)(r,p.gm.console,\\\"warn\\\",{level:\\\"warn\\\"}),(0,ct.J)(r,p.gm.console,\\\"info\\\",{level:\\\"info\\\"}),(0,ct.J)(r,p.gm.console,\\\"debug\\\",{level:\\\"debug\\\"}),(0,ct.J)(r,p.gm.console,\\\"trace\\\",{level:\\\"trace\\\"}),this.ee.on(\\\"wrap-logger-end\\\",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=\u003ee.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||\\\"agent\\\"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=\u003ea.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=\u003e{if(!t[r.featureName]\u0026\u0026r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa\u0026\u0026r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa\u0026\u0026r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=\u003e!(e in this.features)));n.length\u003e0\u0026\u0026(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,S,Se,Oe,O,M,ot,ut,Pe,nt],loaderType:\\\"spa\\\"})})()})();\",\"google\",\"testAutomationFlags\",{\"_775\":24,\"_776\":24,\"_777\":24,\"_778\":24,\"_779\":24,\"_780\":24,\"_781\":24,\"_782\":24,\"_783\":24,\"_32\":24,\"_784\":24,\"_785\":171,\"_786\":171},\"disableAds\",\"disableIirisAuth\",\"disableWelcomeAd\",\"disableBigskyAd\",\"disableIirisRecommend\",\"disableDcts\",\"disableWeatherWidget\",\"disableCashGrainWidget\",\"disableCommoditiesWidget\",\"disableCookieBanner\",\"overrideBrandStyling\",\"overrideThemeStyling\",\"configState\",{\"_54\":55,\"_52\":53,\"_789\":8,\"_790\":-7,\"_791\":24,\"_711\":792,\"_796\":797,\"_799\":800,\"_814\":815},\"uiBrand\",\"colors\",\"isMarketsDivision\",{\"_7\":793,\"_794\":795},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt06f49c53183e1192/65def48d237abe040a0cdb1b/Placeholder_Image.svg\",\"contributor\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltae99c6600909049d/6582ebe1e746c5040a189f2b/theme1_placeholder_avatar.png\",\"media\",{\"_798\":171},\"brightcoveAccountId\",\"newsletterSignupPromo\",{\"_801\":802,\"_803\":804},\"unbounceURL\",\"https://itp-resources.itprotoday.com/c/pubRD.mpl?secure=1\u0026sr=pp\u0026_t=pp:\u0026qf=w_itpb86\u0026ch=itpsitebtn\",\"elnConfig\",{\"_805\":806},\"newsletter\",{\"_807\":808,\"_812\":813},\"subscribeForm\",{\"_115\":809,\"_810\":811},\"Subscribe to Our Newsletters\",\"subtitle\",\"Subtitle\",\"subscribeConfirm\",{\"_115\":809,\"_810\":811},\"proxyConfigs\",{\"_816\":24,\"_817\":171},\"proxyEnabled\",\"proxyRootPath\",\"brandConfig\",{\"_13\":14,\"_820\":14,\"_821\":10,\"_822\":823,\"_15\":16,\"_33\":34,\"_824\":825,\"_38\":826,\"_835\":836,\"_798\":171,\"_43\":44,\"_50\":841,\"_842\":843,\"_847\":804,\"_738\":767,\"_848\":849,\"_877\":878},\"siteFullName\",\"siteUrl\",\"siteDivision\",\"Informa Tech\",\"authentication\",{},{\"_827\":828,\"_830\":831,\"_832\":833,\"_63\":834},\"local\",{\"_40\":829},\"dfd08c13-c8cf-43d1-8ccc-a1ca99dc6d5e-test\",\"preview\",{\"_40\":829},\"staging\",{\"_40\":41},{\"_40\":41},\"unbounce\",{\"_827\":837,\"_830\":838,\"_832\":839,\"_63\":840},{},{},{},{},{\"_7\":8,\"_52\":53,\"_54\":55},\"newsletterSignupPromoContent\",{\"_115\":809,\"_844\":171,\"_845\":846},\"message\",\"buttonText\",\"Sign Me Up\",\"eln\",\"iirisRecommendation\",{\"_850\":851,\"_852\":853,\"_854\":855,\"_856\":857,\"_858\":171,\"_859\":171,\"_860\":861,\"_862\":863,\"_864\":865,\"_866\":193,\"_867\":868,\"_869\":870,\"_871\":872,\"_873\":874,\"_875\":876,\"_7\":8},\"id\",\"widget-1717150909887\",\"division\",\"it\",\"brandFamily\",\"enterpriseit\",\"entityTagBackground\",\"#333333BF\",\"showBy\",\"showTime\",\"borderRadius\",\"4\",\"imageWidth\",\"324\",\"imageHeight\",\"182\",\"imagePosition\",\"dropShadow\",\"#FFEB00\",\"entityTagBorderColor\",\"#333333\",\"borderColor\",\"#e6e6e6\",\"redirectMode\",\"same\",\"recipe\",\"related-items\",\"articleSocialShareToggle\",{\"_879\":26,\"_880\":26,\"_881\":26},\"print\",\"email\",\"reddit\",\"routes/$topic.$slug._index\",{\"_884\":24,\"_885\":-7,\"_886\":849,\"_887\":24,\"_888\":24,\"_889\":890,\"_972\":973,\"_2067\":2068,\"_2089\":2090,\"_2100\":2101,\"_2149\":24},\"isRequestedByGoogleBot\",\"weatherWidgetConfig\",\"iirisRecommendationConfig\",\"isUserEntitled\",\"isGatedAsPaid\",\"metadata\",{\"_88\":891,\"_892\":893,\"_894\":895,\"_896\":12,\"_897\":898,\"_919\":920,\"_921\":171,\"_794\":922,\"_968\":24,\"_969\":24,\"_970\":24,\"_971\":171},\"video\",\"uid\",\"blt0d1d1254dcfe5e32\",\"aid\",\"456221\",\"reg\",\"pterm\",{\"_899\":227,\"_900\":901,\"_902\":903,\"_904\":905},\"main\",\"parent\",\"Operating Systems\",\"grandparent\",{\"_115\":171},\"additional\",[906,912,913],{\"_88\":907,\"_115\":404,\"_59\":405,\"_908\":909},\"TopicSecondary\",\"parentTopic\",{\"_88\":910,\"_115\":911},\"TopicPrimary\",\"IT Security\",{\"_88\":910,\"_115\":911,\"_59\":400},{\"_88\":914,\"_115\":915,\"_59\":916,\"_908\":917},\"TopicTertiary\",\"Networking \u0026 Security\",\"/operating-systems/windows-server/networking-security\",{\"_88\":907,\"_115\":221,\"_908\":918},{\"_88\":910,\"_115\":901},\"contentFormat\",\"How To\",\"buyersJourney\",[923],{\"_115\":272,\"_57\":272,\"_924\":171,\"_925\":926,\"_186\":274,\"_184\":273,\"_927\":926,\"_928\":929},\"companyName\",\"role\",\"Contributor\",\"tagLine\",\"summary\",[930,941,955,963],{\"_88\":931,\"_932\":933,\"_936\":937},\"paragraph\",\"attrs\",{\"_934\":935},\"textAlign\",\"left\",\"content\",[938],{\"_88\":939,\"_939\":940},\"text\",\"Grant Knoetze is a cybersecurity analyst with a special interest in DFIR, programming languages, incident response, red-teaming, and malware analysis. His full-time job includes teaching and instructing in various topics from basic Linux all the way through to malware incident response, and other advanced topics. He is also a speaker at various conferences worldwide.\",{\"_88\":931,\"_932\":942,\"_936\":943},{\"_934\":935},[944],{\"_88\":939,\"_945\":946,\"_939\":954},\"marks\",[947],{\"_88\":184,\"_932\":948},{\"_5\":949,\"_950\":951,\"_952\":-5,\"_953\":-5},\"http://www.grantknoetze.com\",\"target\",\"_self\",\"rel\",\"class\",\"www.grantknoetze.com\",{\"_88\":931,\"_932\":956,\"_936\":957},{\"_934\":935},[958],{\"_88\":939,\"_945\":959,\"_939\":962},[960],{\"_88\":184,\"_932\":961},{\"_5\":962,\"_950\":951,\"_952\":-5,\"_953\":-5},\"https://github.com/Grant-Knoetze\",{\"_88\":931,\"_932\":964,\"_936\":965},{\"_934\":935},[966],{\"_88\":939,\"_939\":967},\"https://www.linkedin.com/in/grant-knoetze-563b0b1b6/\",\"gatedWithExternalForm\",\"gatedWithSiteReg\",\"paidGating\",\"sponsorName\",\"template\",{\"_974\":975,\"_979\":980,\"_69\":-5,\"_990\":991,\"_928\":992,\"_115\":993,\"_165\":993,\"_994\":171,\"_995\":171,\"_996\":171,\"_921\":171,\"_180\":922,\"_997\":261,\"_998\":-7,\"_999\":1000,\"_1008\":-7,\"_1009\":-7,\"_1010\":1011,\"_1024\":1025,\"_1026\":1027,\"_1028\":1029,\"_1030\":1031,\"_178\":1818,\"_892\":893,\"_1819\":1820,\"_1827\":1828,\"_919\":1833,\"_1834\":1835,\"_1836\":1837,\"_1838\":1839,\"_2036\":2037,\"_2038\":2039,\"_2044\":-7,\"_970\":2045,\"_2048\":2049,\"_891\":2055,\"_888\":24},\"breadcrumbs\",[976,978],{\"_59\":977,\"_115\":749},\"/\",{\"_59\":228,\"_115\":227},\"topics\",[981,984,986,987],{\"_982\":907,\"_115\":227,\"_59\":228,\"_908\":983},\"__typename\",{\"_115\":901},{\"_982\":907,\"_115\":404,\"_59\":405,\"_908\":985},{\"_115\":911},{\"_982\":910,\"_115\":911,\"_59\":400},{\"_982\":914,\"_115\":915,\"_59\":916,\"_908\":988},{\"_115\":221,\"_908\":989},{\"_115\":901},\"searchParams\",{},\"Learn how to configure and manage a firewall using UFW, a critical skill for securing Linux systems.\",\"Linux UFW (Uncomplicated Firewall) Configuration Made Easy\",\"authoredBy\",\"authoredOn\",\"oldUrl\",\"readTime\",\"panelsModule\",\"newsletterSignUpPromo\",{\"_115\":1001,\"_844\":1002,\"_1003\":1004,\"_845\":1005,\"_190\":193,\"_1006\":1007},\"Sign up for the ITPro Today newsletter\",\"Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.\",\"newsletterId\",\"blt96562e27e259477c\",\"Newsletter Sign-Up\",\"mode\",\"dark\",\"resourcesModule\",\"embedModule\",\"socialShare\",[1012,1014,1016,1018,1021],{\"_88\":95,\"_59\":1013},\"https://www.linkedin.com/sharing/share-offsite/?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy\",{\"_88\":89,\"_59\":1015},\"http://www.facebook.com/sharer/sharer.php?u=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy\",{\"_88\":92,\"_59\":1017},\"http://www.twitter.com/intent/tweet?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy\",{\"_88\":1019,\"_59\":1020},\"Reddit\",\"https://www.reddit.com/submit?url=https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy\u0026title=Linux%20UFW%20(Uncomplicated%20Firewall)%20Configuration%20Made%20Easy\",{\"_88\":1022,\"_59\":1023},\"Email\",\"mailto:?subject=Linux UFW (Uncomplicated Firewall) Configuration Made Easy\u0026body=I%20thought%20the%20following%20from%20ITPro%20Today%20might%20interest%20you.%0D%0A%0D%0A%20Linux%20UFW%20(Uncomplicated%20Firewall)%20Configuration%20Made%20Easy%0D%0Ahttps%3A%2F%2Fwww.itprotoday.com%2Flinux-os%2Flinux-ufw-uncomplicated-firewall-configuration-made-easy\",\"publishedDate\",\"2024-08-28T11:00:00.000Z\",\"keywords\",[],\"atAGlance\",[],\"bodyJson\",[1032,1040,1047,1051,1058,1068,1085,1092,1097,1099,1104,1116,1118,1125,1132,1137,1142,1160,1171,1182,1204,1209,1226,1270,1293,1295,1302,1313,1318,1325,1330,1335,1340,1345,1350,1355,1360,1365,1370,1375,1380,1385,1392,1409,1414,1419,1426,1437,1454,1459,1477,1482,1487,1492,1497,1502,1507,1509,1524,1531,1536,1541,1546,1551,1556,1563,1568,1579,1581,1586,1591,1607,1612,1619,1641,1646,1660,1665,1676,1681,1686,1691,1698,1709,1714,1719,1726,1731,1741,1746,1751,1761,1766,1771,1781,1788,1813],{\"_88\":931,\"_932\":1033,\"_936\":1034},{\"_934\":935},[1035],{\"_88\":939,\"_945\":1036,\"_939\":1039},[1037],{\"_88\":1038},\"italic\",\"This tutorial covers configuring and managing a basic firewall using UFW, the uncomplicated firewall, which simplifies firewall rule management on Linux systems.\",{\"_88\":931,\"_932\":1041,\"_936\":1042},{\"_934\":935},[1043],{\"_88\":939,\"_945\":1044,\"_939\":1046},[1045],{\"_88\":1038},\"Understanding how to set up and manage firewall rules is vital for protecting systems from unauthorized access by ensuring that only legitimate traffic is allowed while blocking potential threats. This tutorial provides practical, step-by-step guidance on using UFW's commands, enabling IT professionals to implement and customize security measures according to their needs. \",{\"_88\":1048,\"_1049\":1050},\"ad\",\"pos\",\"300_1v_article\",{\"_88\":931,\"_932\":1052,\"_936\":1053},{\"_934\":935},[1054],{\"_88\":939,\"_945\":1055,\"_939\":1057},[1056],{\"_88\":1038},\"The following transcript has been edited for length and clarity. \",{\"_88\":1059,\"_932\":1060,\"_936\":1062},\"heading\",{\"_934\":935,\"_1061\":354},\"level\",[1063],{\"_88\":939,\"_945\":1064,\"_939\":1067},[1065],{\"_88\":1066},\"bold\",\"Transcript:\",{\"_88\":931,\"_932\":1069,\"_936\":1070},{\"_934\":935},[1071,1075,1077,1083],{\"_88\":939,\"_945\":1072,\"_939\":1074},[1073],{\"_88\":1066},\"Grant Knoetze: \",{\"_88\":939,\"_939\":1076},\"Hello, and welcome to this tutorial on configuring and managing a basic firewall using UFW, the uncomplicated firewall. Using UFW is an essential skill for \",{\"_88\":939,\"_945\":1078,\"_939\":1082},[1079],{\"_88\":184,\"_932\":1080},{\"_5\":1081,\"_950\":951,\"_952\":-5,\"_953\":-5},\"https://www.itprotoday.com/linux-os/securing-linux-systems-with-ebpf-the-future-of-in-kernel-observability-and-security\",\"securing any Linux system\",{\"_88\":939,\"_939\":1084},\". Let's dive in. \",{\"_88\":1059,\"_932\":1086,\"_936\":1087},{\"_934\":935,\"_1061\":354},[1088],{\"_88\":939,\"_945\":1089,\"_939\":1091},[1090],{\"_88\":1066},\"What Is UFW?\",{\"_88\":931,\"_932\":1093,\"_936\":1094},{\"_934\":935},[1095],{\"_88\":939,\"_939\":1096},\"What is a firewall? A firewall is a network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules. \",{\"_88\":1048,\"_1049\":1098},\"native_1v\",{\"_88\":931,\"_932\":1100,\"_936\":1101},{\"_934\":935},[1102],{\"_88\":939,\"_939\":1103},\"What is the uncomplicated firewall? UFW, or the uncomplicated firewall, is a user-friendly frontend for managing iptables firewall rules. It simplifies the process of setting up a firewall to secure your system.\",{\"_88\":931,\"_932\":1105,\"_936\":1106},{\"_934\":935},[1107,1109,1114],{\"_88\":939,\"_939\":1108},\"Here we are on the \",{\"_88\":939,\"_945\":1110,\"_939\":242},[1111],{\"_88\":184,\"_932\":1112},{\"_5\":1113,\"_950\":951,\"_952\":-5,\"_953\":-5},\"https://www.itprotoday.com/microsoft-windows/free-guide-get-started-with-ubuntu\",{\"_88\":939,\"_939\":1115},\" community wiki for UFW, and it says: “UFW, the uncomplicated firewall, is the default firewall configuration tool for Ubuntu. It was developed to ease iptables firewall configuration. UFW provides a user-friendly way to create an IPv4 or IPv6 host-based firewall. By default, UFW is disabled.”\",{\"_88\":1048,\"_1049\":1117},\"video_v\",{\"_88\":1119,\"_936\":1120,\"_115\":1124},\"relatedArticle\",[1121],{\"_115\":1122,\"_59\":1123,\"_950\":951},\"How To Implement Zero-Trust Security in Linux Environments\",\"/linux-os/how-to-implement-zero-trust-security-in-linux-environments\",\"Related\",{\"_88\":1059,\"_932\":1126,\"_936\":1127},{\"_934\":935,\"_1061\":354},[1128],{\"_88\":939,\"_945\":1129,\"_939\":1131},[1130],{\"_88\":1066},\"Getting Started With Linux UFW\",{\"_88\":931,\"_932\":1133,\"_936\":1134},{\"_934\":935},[1135],{\"_88\":939,\"_939\":1136},\"Let's dive into some fundamental usage. You are going to need to open a terminal. Once you have opened your terminal, we can start with the basics of managing UFW, the uncomplicated firewall. \",{\"_88\":931,\"_932\":1138,\"_936\":1139},{\"_934\":935},[1140],{\"_88\":939,\"_939\":1141},\"The first thing you want to do is enable UFW. When you turn on UFW or enable it, it uses a default set of rules that should be fine for the average home user. In short, the default setting is:\",{\"_88\":1143,\"_936\":1144},\"bulletList\",[1145,1153],{\"_88\":1146,\"_936\":1147},\"listItem\",[1148],{\"_88\":931,\"_932\":1149,\"_936\":1150},{\"_934\":935},[1151],{\"_88\":939,\"_939\":1152},\"All incoming is denied with some exceptions to make things easier for home users.\",{\"_88\":1146,\"_936\":1154},[1155],{\"_88\":931,\"_932\":1156,\"_936\":1157},{\"_934\":935},[1158],{\"_88\":939,\"_939\":1159},\"All outgoing is allowed. \",{\"_88\":931,\"_932\":1161,\"_936\":1162},{\"_934\":935},[1163,1165,1169],{\"_88\":939,\"_939\":1164},\"To enable UFW, type the \",{\"_88\":939,\"_945\":1166,\"_939\":1168},[1167],{\"_88\":1066},\"sudo ufw enable\",{\"_88\":939,\"_939\":1170},\" command. We can see that the firewall is enabled and active on system startup. \",{\"_88\":931,\"_932\":1172,\"_936\":1173},{\"_934\":935},[1174,1176,1180],{\"_88\":939,\"_939\":1175},\"To disable UFW, you could type \",{\"_88\":939,\"_945\":1177,\"_939\":1179},[1178],{\"_88\":1066},\"sudo ufw disable\",{\"_88\":939,\"_939\":1181},\". We can see that the firewall is stopped and disabled at the system startup. \",{\"_88\":931,\"_932\":1183,\"_936\":1184},{\"_934\":935},[1185,1187,1191,1193,1197,1199,1202],{\"_88\":939,\"_939\":1186},\"If you have not installed UFW on your system, you can use your package manager for Debian. Ubuntu is \",{\"_88\":939,\"_945\":1188,\"_939\":1190},[1189],{\"_88\":1066},\"apt\",{\"_88\":939,\"_939\":1192},\". I will type in \",{\"_88\":939,\"_945\":1194,\"_939\":1196},[1195],{\"_88\":1066},\"sudo apt install ufw\",{\"_88\":939,\"_939\":1198},\". We can see that I have already installed the latest version. If it were not, it would be installed. If it installed but needed to be upgraded, it would be upgraded. That is \",{\"_88\":939,\"_945\":1200,\"_939\":1196},[1201],{\"_88\":1066},{\"_88\":939,\"_939\":1203},\", and you can use whatever package manager for the distribution that you are using. \",{\"_88\":1119,\"_936\":1205,\"_115\":1124},[1206],{\"_115\":1207,\"_59\":1208,\"_950\":951},\"How To Set up a Secure VPN Connection in Linux\",\"/linux-os/how-to-set-up-a-secure-vpn-connection-in-linux\",{\"_88\":931,\"_932\":1210,\"_936\":1211},{\"_934\":935},[1212,1214,1218,1220,1224],{\"_88\":939,\"_939\":1213},\"After having enabled/disabled UFW, if I want to see the status, I can type \",{\"_88\":939,\"_945\":1215,\"_939\":1217},[1216],{\"_88\":1066},\"sudo ufw status\",{\"_88\":939,\"_939\":1219},\" and add the \",{\"_88\":939,\"_945\":1221,\"_939\":1223},[1222],{\"_88\":1066},\"verbose\",{\"_88\":939,\"_939\":1225},\" parameter to get a more verbose output. When I hit Enter, it tells me that the status is inactive. \",{\"_88\":931,\"_932\":1227,\"_936\":1228},{\"_934\":935},[1229,1231,1234,1236,1239,1241,1244,1246,1250,1252,1256,1258,1262,1264,1268],{\"_88\":939,\"_939\":1230},\"Typing \",{\"_88\":939,\"_945\":1232,\"_939\":1168},[1233],{\"_88\":1066},{\"_88\":939,\"_939\":1235},\" and hitting Enter will enable the firewall. I retype the \",{\"_88\":939,\"_945\":1237,\"_939\":1217},[1238],{\"_88\":1066},{\"_88\":939,\"_939\":1240},\" \",{\"_88\":939,\"_945\":1242,\"_939\":1223},[1243],{\"_88\":1066},{\"_88\":939,\"_939\":1245},\" command. It gives me a rich output. It tells me that the \",{\"_88\":939,\"_945\":1247,\"_939\":1249},[1248],{\"_88\":1038},\"Status\",{\"_88\":939,\"_939\":1251},\" is active. \",{\"_88\":939,\"_945\":1253,\"_939\":1255},[1254],{\"_88\":1038},\"Logging\",{\"_88\":939,\"_939\":1257},\" is off (We will get into logging and show you how to enable logging). \",{\"_88\":939,\"_945\":1259,\"_939\":1261},[1260],{\"_88\":1038},\"Default\",{\"_88\":939,\"_939\":1263},\" is deny (incoming), allow (outgoing), disabled (routed). \",{\"_88\":939,\"_945\":1265,\"_939\":1267},[1266],{\"_88\":1038},\"New profiles\",{\"_88\":939,\"_939\":1269},\" – it’s skipping. \",{\"_88\":931,\"_932\":1271,\"_936\":1272},{\"_934\":935},[1273,1275,1279,1281,1285,1287,1291],{\"_88\":939,\"_939\":1274},\"We can see all the rules here. For \",{\"_88\":939,\"_945\":1276,\"_939\":1278},[1277],{\"_88\":1038},\"443\",{\"_88\":939,\"_939\":1280},\", it is “allow in” from anywhere. \",{\"_88\":939,\"_945\":1282,\"_939\":1284},[1283],{\"_88\":1038},\"Anywhere\",{\"_88\":939,\"_939\":1286},\" is “allow in” from IP addresses that I have worked with in the past. \",{\"_88\":939,\"_945\":1288,\"_939\":1290},[1289],{\"_88\":1038},\"Port 22/TCP\",{\"_88\":939,\"_939\":1292},\" is “limited.” 22 is “allow in.” 80/TCP is “deny in,” etc. It shows us whether it is Version 6. Everything else is Version 4. \",{\"_88\":1048,\"_1049\":1294},\"native_2v\",{\"_88\":1059,\"_932\":1296,\"_936\":1297},{\"_934\":935,\"_1061\":354},[1298],{\"_88\":939,\"_945\":1299,\"_939\":1301},[1300],{\"_88\":1066},\"Allow or Deny Specific Rules\",{\"_88\":931,\"_932\":1303,\"_936\":1304},{\"_934\":935},[1305,1307,1311],{\"_88\":939,\"_939\":1306},\"To allow connections based on a specific port or protocol, you can use \",{\"_88\":939,\"_945\":1308,\"_939\":1310},[1309],{\"_88\":1066},\"sudo ufw allow\",{\"_88\":939,\"_939\":1312},\". The port you can put in, and the protocol is optional. To allow incoming TCP and UDP packets on port 53, I would type in: \",{\"_88\":1119,\"_936\":1314,\"_115\":1124},[1315],{\"_115\":1316,\"_59\":1317,\"_950\":951},\"Linux Security in the Cloud Era: Best Practices for Protecting Your Cloud Workloads\",\"/linux-os/linux-security-in-the-cloud-era-best-practices-for-protecting-your-cloud-workloads\",{\"_88\":1319,\"_932\":1320,\"_936\":1322},\"codeBlock\",{\"_1321\":-5},\"language\",[1323],{\"_88\":939,\"_939\":1324},\"sudo ufw allow 53\",{\"_88\":931,\"_932\":1326,\"_936\":1327},{\"_934\":935},[1328],{\"_88\":939,\"_939\":1329},\"I hit Enter and have added the rule.\",{\"_88\":931,\"_932\":1331,\"_936\":1332},{\"_934\":935},[1333],{\"_88\":939,\"_939\":1334},\"To allow specifically TCP packets coming in on port 53, I would enter: \",{\"_88\":1319,\"_932\":1336,\"_936\":1337},{\"_1321\":-5},[1338],{\"_88\":939,\"_939\":1339},\"sudo ufw allow 53/tcp\",{\"_88\":931,\"_932\":1341,\"_936\":1342},{\"_934\":935},[1343],{\"_88\":939,\"_939\":1344},\"To allow specifically UDP communication on port 53, I could enter: \",{\"_88\":1319,\"_932\":1346,\"_936\":1347},{\"_1321\":-5},[1348],{\"_88\":939,\"_939\":1349},\"sudo ufw allow 53/udp\",{\"_88\":931,\"_932\":1351,\"_936\":1352},{\"_934\":935},[1353],{\"_88\":939,\"_939\":1354},\"To deny or to create “deny” rules for the same, I could type: \",{\"_88\":1319,\"_932\":1356,\"_936\":1357},{\"_1321\":-5},[1358],{\"_88\":939,\"_939\":1359},\"sudo ufw deny 53\",{\"_88\":931,\"_932\":1361,\"_936\":1362},{\"_934\":935},[1363],{\"_88\":939,\"_939\":1364},\"Entering this command will update the rule and deny all traffic on port 53.\",{\"_88\":931,\"_932\":1366,\"_936\":1367},{\"_934\":935},[1368],{\"_88\":939,\"_939\":1369},\"To specifically deny according to protocol: \",{\"_88\":1319,\"_932\":1371,\"_936\":1372},{\"_1321\":-5},[1373],{\"_88\":939,\"_939\":1374},\"sudo ufw deny 53/tcp\",{\"_88\":931,\"_932\":1376,\"_936\":1377},{\"_934\":935},[1378],{\"_88\":939,\"_939\":1379},\"Similarly, for UDP:\",{\"_88\":1319,\"_932\":1381,\"_936\":1382},{\"_1321\":-5},[1383],{\"_88\":939,\"_939\":1384},\"sudo ufw deny 53/udp\",{\"_88\":1059,\"_932\":1386,\"_936\":1387},{\"_934\":935,\"_1061\":354},[1388],{\"_88\":939,\"_945\":1389,\"_939\":1391},[1390],{\"_88\":1066},\"Delete an Existing Rule \",{\"_88\":931,\"_932\":1393,\"_936\":1394},{\"_934\":935},[1395,1397,1401,1403,1407],{\"_88\":939,\"_939\":1396},\"To delete a rule, prefix the original rule with Delete. For example, if the original rule was \",{\"_88\":939,\"_945\":1398,\"_939\":1400},[1399],{\"_88\":1066},\"sudo ufw deny 80/tcp\",{\"_88\":939,\"_939\":1402},\", I could prefix this with \",{\"_88\":939,\"_945\":1404,\"_939\":1406},[1405],{\"_88\":1066},\"sudo ufw delete deny\",{\"_88\":939,\"_939\":1408},\":\",{\"_88\":1319,\"_932\":1410,\"_936\":1411},{\"_1321\":-5},[1412],{\"_88\":939,\"_939\":1413},\"sudo ufw delete deny 80/tcp\",{\"_88\":931,\"_932\":1415,\"_936\":1416},{\"_934\":935},[1417],{\"_88\":939,\"_939\":1418},\"I press Enter and I delete the rule. \",{\"_88\":1059,\"_932\":1420,\"_936\":1421},{\"_934\":935,\"_1061\":354},[1422],{\"_88\":939,\"_945\":1423,\"_939\":1425},[1424],{\"_88\":1066},\"Deny or Allow by Service Name\",{\"_88\":931,\"_932\":1427,\"_936\":1428},{\"_934\":935},[1429,1431,1435],{\"_88\":939,\"_939\":1430},\"You can also allow or deny by service name since UFW reads from \",{\"_88\":939,\"_945\":1432,\"_939\":1434},[1433],{\"_88\":1066},\"etc\",{\"_88\":939,\"_939\":1436},\" services. \",{\"_88\":931,\"_932\":1438,\"_936\":1439},{\"_934\":935},[1440,1442,1446,1448,1452],{\"_88\":939,\"_939\":1441},\"To get a list of services, you can use \",{\"_88\":939,\"_945\":1443,\"_939\":1445},[1444],{\"_88\":1066},\"sudo\",{\"_88\":939,\"_939\":1447},\" or not, but we can use \",{\"_88\":939,\"_945\":1449,\"_939\":1451},[1450],{\"_88\":1066},\"less\",{\"_88\":939,\"_939\":1453},\": \",{\"_88\":1319,\"_932\":1455,\"_936\":1456},{\"_1321\":-5},[1457],{\"_88\":939,\"_939\":1458},\"less /etc/services\",{\"_88\":931,\"_932\":1460,\"_936\":1461},{\"_934\":935},[1462,1464,1470,1472,1475],{\"_88\":939,\"_939\":1463},\"We can see a list of all our services. For example, it shows \",{\"_88\":939,\"_945\":1465,\"_939\":1469},[1466],{\"_88\":184,\"_932\":1467},{\"_5\":1468,\"_950\":951,\"_952\":-5,\"_953\":-5},\"https://www.itprotoday.com/linux-os/how-to-remotely-manage-linux-users-and-groups\",\"Secure Shell (SSH)\",{\"_88\":939,\"_939\":1471},\" running on port 22/tcp. To traverse through \",{\"_88\":939,\"_945\":1473,\"_939\":1451},[1474],{\"_88\":1066},{\"_88\":939,\"_939\":1476},\", you can use your spacebar. To exit, you can hit the Q key.\",{\"_88\":931,\"_932\":1478,\"_936\":1479},{\"_934\":935},[1480],{\"_88\":939,\"_939\":1481},\"Let’s look at how to allow by service name. For example, let's use Secure Shell: \",{\"_88\":1319,\"_932\":1483,\"_936\":1484},{\"_1321\":-5},[1485],{\"_88\":939,\"_939\":1486},\"sudo ufw allow ssh\",{\"_88\":931,\"_932\":1488,\"_936\":1489},{\"_934\":935},[1490],{\"_88\":939,\"_939\":1491},\"We have updated the rule. \",{\"_88\":931,\"_932\":1493,\"_936\":1494},{\"_934\":935},[1495],{\"_88\":939,\"_939\":1496},\"To deny by service name, we type: \",{\"_88\":1319,\"_932\":1498,\"_936\":1499},{\"_1321\":-5},[1500],{\"_88\":939,\"_939\":1501},\"sudo ufw deny ssh\",{\"_88\":931,\"_932\":1503,\"_936\":1504},{\"_934\":935},[1505],{\"_88\":939,\"_939\":1506},\"We have updated the rule and denied SSH.\",{\"_88\":931,\"_932\":1508},{\"_934\":935},{\"_88\":1510,\"_932\":1511},\"iframe\",{\"_1512\":1513,\"_1514\":1515,\"_1516\":-5,\"_1517\":1518,\"_1519\":1520,\"_159\":1521,\"_1522\":1523},\"width\",\"100%\",\"height\",\"315px\",\"scrolling\",\"frameBorder\",\"0\",\"allow\",\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\",\"https://www.youtube.com/embed/H5AErKbqYmQ?si=aDAGSEgWKK5BYZD2\u0026start=2006\",\"loading\",\"lazy\",{\"_88\":1059,\"_932\":1525,\"_936\":1526},{\"_934\":935,\"_1061\":354},[1527],{\"_88\":939,\"_945\":1528,\"_939\":1530},[1529],{\"_88\":1066},\"Enable or Disable Logging\",{\"_88\":931,\"_932\":1532,\"_936\":1533},{\"_934\":935},[1534],{\"_88\":939,\"_939\":1535},\"Let's talk about logging. Logging is helpful for troubleshooting, and it's also critical for security. For example, you would want to look at firewall logs when responding to an incident. \",{\"_88\":931,\"_932\":1537,\"_936\":1538},{\"_934\":935},[1539],{\"_88\":939,\"_939\":1540},\"You can enable logging in UFW by simply typing in: \",{\"_88\":1319,\"_932\":1542,\"_936\":1543},{\"_1321\":-5},[1544],{\"_88\":939,\"_939\":1545},\"sudo ufw logging on\",{\"_88\":931,\"_932\":1547,\"_936\":1548},{\"_934\":935},[1549],{\"_88\":939,\"_939\":1550},\"If you'd like to disable logging, you type:\",{\"_88\":1319,\"_932\":1552,\"_936\":1553},{\"_1321\":-5},[1554],{\"_88\":939,\"_939\":1555},\"sudo ufw logging off\",{\"_88\":1059,\"_932\":1557,\"_936\":1558},{\"_934\":935,\"_1061\":354},[1559],{\"_88\":939,\"_945\":1560,\"_939\":1562},[1561],{\"_88\":1066},\"Advanced Syntax \",{\"_88\":931,\"_932\":1564,\"_936\":1565},{\"_934\":935},[1566],{\"_88\":939,\"_939\":1567},\"You can also use a fuller syntax, specifying the source and destination addresses, ports, and protocol. Let's look at allowing by specific IP address. \",{\"_88\":931,\"_932\":1569,\"_936\":1570},{\"_934\":935},[1571,1573,1577],{\"_88\":939,\"_939\":1572},\"To allow by specific IP address, I type \",{\"_88\":939,\"_945\":1574,\"_939\":1576},[1575],{\"_88\":1066},\"sudo ufw allow from\",{\"_88\":939,\"_939\":1578},\" and then specify the IP address. For example: \",{\"_88\":1048,\"_1049\":1580},\"300_2v_article\",{\"_88\":1319,\"_932\":1582,\"_936\":1583},{\"_1321\":-5},[1584],{\"_88\":939,\"_939\":1585},\"sudo ufw allow from 192.168.1.1\",{\"_88\":931,\"_932\":1587,\"_936\":1588},{\"_934\":935},[1589],{\"_88\":939,\"_939\":1590},\"I press Enter and add the rule. \",{\"_88\":931,\"_932\":1592,\"_936\":1593},{\"_934\":935},[1594,1596,1600,1602,1605],{\"_88\":939,\"_939\":1595},\"To deny traffic from that same IP address, I put the \",{\"_88\":939,\"_945\":1597,\"_939\":1599},[1598],{\"_88\":1066},\"deny\",{\"_88\":939,\"_939\":1601},\" keyword where the \",{\"_88\":939,\"_945\":1603,\"_939\":1519},[1604],{\"_88\":1066},{\"_88\":939,\"_939\":1606},\" keyword was:\",{\"_88\":1319,\"_932\":1608,\"_936\":1609},{\"_1321\":-5},[1610],{\"_88\":939,\"_939\":1611},\"sudo ufw deny from 192.168.1.1\",{\"_88\":1059,\"_932\":1613,\"_936\":1614},{\"_934\":935,\"_1061\":354},[1615],{\"_88\":939,\"_945\":1616,\"_939\":1618},[1617],{\"_88\":1066},\"Allow by Specific Port and IP Address\",{\"_88\":931,\"_932\":1620,\"_936\":1621},{\"_934\":935},[1622,1624,1627,1629,1633,1635,1639],{\"_88\":939,\"_939\":1623},\"If I want to allow from a specific port and an IP address, I can type in \",{\"_88\":939,\"_945\":1625,\"_939\":1576},[1626],{\"_88\":1066},{\"_88\":939,\"_939\":1628},\", then my IP address is the target (192.168.1.1, for example). I can add \",{\"_88\":939,\"_945\":1630,\"_939\":1632},[1631],{\"_88\":1066},\"to any port\",{\"_88\":939,\"_939\":1634},\". I'm going to use \",{\"_88\":939,\"_945\":1636,\"_939\":1638},[1637],{\"_88\":1066},\"port 22\",{\"_88\":939,\"_939\":1640},\" as an example. \",{\"_88\":1319,\"_932\":1642,\"_936\":1643},{\"_1321\":-5},[1644],{\"_88\":939,\"_939\":1645},\"sudo ufw allow from 192.168.1.1 to any port 22\",{\"_88\":931,\"_932\":1647,\"_936\":1648},{\"_934\":935},[1649,1651,1654,1656,1659],{\"_88\":939,\"_939\":1650},\"To deny, I would change the \",{\"_88\":939,\"_945\":1652,\"_939\":1519},[1653],{\"_88\":1066},{\"_88\":939,\"_939\":1655},\" keyword to \",{\"_88\":939,\"_945\":1657,\"_939\":1599},[1658],{\"_88\":1066},{\"_88\":939,\"_939\":1408},{\"_88\":1319,\"_932\":1661,\"_936\":1662},{\"_1321\":-5},[1663],{\"_88\":939,\"_939\":1664},\"sudo ufw deny from 192.168.1.1 to any port 22\",{\"_88\":931,\"_932\":1666,\"_936\":1667},{\"_934\":935},[1668,1670,1674],{\"_88\":939,\"_939\":1669},\"To allow by any specific port, IP address, and protocol, I use the same command and then add \",{\"_88\":939,\"_945\":1671,\"_939\":1673},[1672],{\"_88\":1066},\"proto\",{\"_88\":939,\"_939\":1675},\", or protocol keyword. I add the protocol. In this case, I’m choosing TCP. \",{\"_88\":1319,\"_932\":1677,\"_936\":1678},{\"_1321\":-5},[1679],{\"_88\":939,\"_939\":1680},\"sudo ufw deny from 192.168.1.1 to any port 22 proto tcp\",{\"_88\":931,\"_932\":1682,\"_936\":1683},{\"_934\":935},[1684],{\"_88\":939,\"_939\":1685},\"You can go ahead and do the same thing for another protocol, UDP:\",{\"_88\":1319,\"_932\":1687,\"_936\":1688},{\"_1321\":-5},[1689],{\"_88\":939,\"_939\":1690},\"sudo ufw deny from 192.168.1.1 to any port 22 proto udp\",{\"_88\":1059,\"_932\":1692,\"_936\":1693},{\"_934\":935,\"_1061\":354},[1694],{\"_88\":939,\"_945\":1695,\"_939\":1697},[1696],{\"_88\":1066},\"Working With Numbered Rules\",{\"_88\":931,\"_932\":1699,\"_936\":1700},{\"_934\":935},[1701,1703,1707],{\"_88\":939,\"_939\":1702},\"UFW stores and deals with rules in a numbered way. You can use the \",{\"_88\":939,\"_945\":1704,\"_939\":1706},[1705],{\"_88\":1066},\"status numbered\",{\"_88\":939,\"_939\":1708},\" command to show the order and number of the rules:\",{\"_88\":1319,\"_932\":1710,\"_936\":1711},{\"_1321\":-5},[1712],{\"_88\":939,\"_939\":1713},\"sudo ufw status numbered\",{\"_88\":931,\"_932\":1715,\"_936\":1716},{\"_934\":935},[1717],{\"_88\":939,\"_939\":1718},\"We can see my rules in a numbered order, from one to 23.\",{\"_88\":1059,\"_932\":1720,\"_936\":1721},{\"_934\":935,\"_1061\":354},[1722],{\"_88\":939,\"_945\":1723,\"_939\":1725},[1724],{\"_88\":1066},\"Editing Numbered Rules\",{\"_88\":931,\"_932\":1727,\"_936\":1728},{\"_934\":935},[1729],{\"_88\":939,\"_939\":1730},\"You may delete rules using the number. \",{\"_88\":931,\"_932\":1732,\"_936\":1733},{\"_934\":935},[1734,1736,1739],{\"_88\":939,\"_939\":1735},\"Let's type in our \",{\"_88\":939,\"_945\":1737,\"_939\":1706},[1738],{\"_88\":1066},{\"_88\":939,\"_939\":1740},\". We can identify which rule we'd like to delete. For example, we can delete rule number 10, UDP. You can use: \",{\"_88\":1319,\"_932\":1742,\"_936\":1743},{\"_1321\":-5},[1744],{\"_88\":939,\"_939\":1745},\"sudo ufw delete 10\",{\"_88\":931,\"_932\":1747,\"_936\":1748},{\"_934\":935},[1749],{\"_88\":939,\"_939\":1750},\"We see that it's deleting and would like to prompt me for a yes or no. I choose yes and delete the rule.\",{\"_88\":931,\"_932\":1752,\"_936\":1753},{\"_934\":935},[1754,1756,1759],{\"_88\":939,\"_939\":1755},\"When I run my \",{\"_88\":939,\"_945\":1757,\"_939\":1706},[1758],{\"_88\":1066},{\"_88\":939,\"_939\":1760},\", I can see that that rule has been deleted and the list has been shifted by one. Rule number 10 is now a different rule. \",{\"_88\":931,\"_932\":1762,\"_936\":1763},{\"_934\":935},[1764],{\"_88\":939,\"_939\":1765},\"To insert a numbered rule, the same numbered rule, we can type in: \",{\"_88\":1319,\"_932\":1767,\"_936\":1768},{\"_1321\":-5},[1769],{\"_88\":939,\"_939\":1770},\"sudo ufw insert 10 allow from 192.168.1.1 to any port 53\",{\"_88\":931,\"_932\":1772,\"_936\":1773},{\"_934\":935},[1774,1776,1779],{\"_88\":939,\"_939\":1775},\"When I type \",{\"_88\":939,\"_945\":1777,\"_939\":1713},[1778],{\"_88\":1066},{\"_88\":939,\"_939\":1780},\", we can see that rule 10, port number 53, from the specified IP address, has been inserted. \",{\"_88\":1059,\"_932\":1782,\"_936\":1783},{\"_934\":935,\"_1061\":354},[1784],{\"_88\":939,\"_945\":1785,\"_939\":1787},[1786],{\"_88\":1066},\"Recap\",{\"_88\":931,\"_932\":1789,\"_936\":1790},{\"_934\":935},[1791,1793,1800,1805,1807,1811],{\"_88\":939,\"_939\":1792},\"To recap, we've been through the basics of using the uncomplicated firewall. For more resources and help, you can use the \",{\"_88\":939,\"_945\":1794,\"_939\":1799},[1795,1798],{\"_88\":184,\"_932\":1796},{\"_5\":1797,\"_950\":951,\"_952\":-5,\"_953\":-5},\"https://www.itprotoday.com/linux-os/the-best-linux-commands-a-comprehensive-guide-for-all-users\",{\"_88\":1066},\"man\",{\"_88\":939,\"_945\":1801,\"_939\":1804},[1802],{\"_88\":184,\"_932\":1803},{\"_5\":1797,\"_950\":951,\"_952\":-5,\"_953\":-5},\" pages in Linux\",{\"_88\":939,\"_939\":1806},\". We can see that our manual pages exist for UFW. Use your spacebar to go through them and use Q to quit. Or you could type in \",{\"_88\":939,\"_945\":1808,\"_939\":1810},[1809],{\"_88\":1066},\"ufw --help\",{\"_88\":939,\"_939\":1812},\", and we have simplified help. \",{\"_88\":931,\"_932\":1814,\"_936\":1815},{\"_934\":935},[1816],{\"_88\":939,\"_939\":1817},\"I hope you've enjoyed this tutorial. I look forward to seeing you on the next one.\",\"Video\",\"sponsored\",{\"_744\":171,\"_59\":171,\"_161\":171,\"_115\":171,\"_1821\":171,\"_1822\":24,\"_1823\":24,\"_1824\":1825,\"_1826\":171},\"campaignURL\",\"isSponsored\",\"gateWithSiteReg\",\"gateWithExternalForm\",\"None\",\"externalFormID\",\"featuredImage\",{\"_159\":1829,\"_161\":1830,\"_1831\":171,\"_1832\":171},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbd7c8f7dbc67e2/66c8c7eb9aeab424dd358da0/linux_ufw_hero.png\",\"a wall and fire with the words linux uncomplicated firewall (ufw) tutorial, configure and manage\",\"caption\",\"creditTo\",{\"_115\":920},\"seriesTaxonomy\",[],\"programTaxonomy\",[],\"sidebarModules\",[1840,1914,1949,1995,2001],{\"_88\":1841,\"_1842\":1843,\"_1911\":1912},\"module_content_cards\",\"data\",{\"_115\":1844,\"_1845\":1844,\"_190\":1846,\"_1847\":1848,\"_1907\":1908,\"_1909\":1908,\"_1910\":-7},\"Editor's Choice\",\"moduleLabel\",\"default\",\"contents\",[1849,1872,1875,1891,1904],{\"_88\":1850,\"_1842\":1851},\"contentPreview\",{\"_178\":179,\"_190\":1852,\"_157\":1853,\"_163\":1856,\"_165\":1856,\"_168\":1857,\"_170\":1857,\"_1858\":1859,\"_172\":1860,\"_174\":171,\"_175\":1861,\"_177\":329,\"_180\":1862,\"_188\":1867,\"_970\":1868},\"card-horizontal\",{\"_159\":1854,\"_161\":1855},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blted009d53042b6a96/673dc873f59c3326ad835a0e/jobs-key-1716x965_-_2024-08-21.jpg\",\"jobs key on keyboard\",\"IT Jobs Outlook 2025: Evolving Skills, AI, Workplace Flexibility Will Shape IT Workforce\",\"/career-management/it-jobs-outlook-2025-evolving-skills-ai-workplace-flexibility-will-shape-it-workforce\",\"linkAttrs\",{},\"Nov 20, 2024\",\"Career Management\",[1863],{\"_57\":1864,\"_184\":1865,\"_186\":1866},\"Nathan Eddy\",\"/author/nathan-eddy\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd76bf4740a6e8198/6658946837ce132abb475f63/nathan-eddy-pic.webp\",8,{\"_1869\":24,\"_1870\":1871},\"paidContent\",\"paidProductTaxonomy\",[],{\"_88\":1048,\"_1842\":1873},{\"_1049\":1874},\"native_right_1v\",{\"_88\":1850,\"_1842\":1876},{\"_178\":179,\"_190\":1852,\"_157\":1877,\"_163\":1880,\"_165\":1881,\"_168\":1882,\"_170\":1882,\"_1858\":1883,\"_172\":1884,\"_174\":171,\"_175\":1885,\"_177\":1886,\"_180\":1887,\"_188\":367,\"_970\":1889},{\"_159\":1878,\"_161\":1879},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt8e3cff5562b9ae01/67462526b7779a7c7bca6346/green_IT_sustainability_hero.gif\",\"an it pro is disappointed as a poster for sustainability is switched with one for financial results and garbage piles up next to a recycling bin\",\"How Do I Advocate for Green IT Without Being Dismissed as a Lorax?\",\"How Do I Advocate for Green IT Without Being Dismissed as a Lorax? \",\"/green-it/how-do-i-advocate-for-green-it-without-being-dismissed-as-a-lorax-\",{},\"Nov 27, 2024\",\"Green IT\",\"/it-management/it-sustainability/green-it\",[1888],{\"_57\":351,\"_184\":352,\"_186\":353},{\"_1869\":24,\"_1870\":1890},[],{\"_88\":1850,\"_1842\":1892},{\"_178\":179,\"_190\":1852,\"_157\":1893,\"_163\":1896,\"_165\":1896,\"_168\":1897,\"_170\":1897,\"_1858\":1898,\"_172\":1899,\"_174\":171,\"_175\":282,\"_177\":283,\"_180\":1900,\"_188\":312,\"_970\":1902},{\"_159\":1894,\"_161\":1895},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt169bb0721a0b9a6d/67401d99c70a870d4f57da8d/Ubuntu-1716x965_-_2024-11-22.jpg\",\"person using a laptop with the Ubuntu logo on its scree\",\"3 Simple Ways to Install and Run a Virtual Machine on Ubuntu\",\"/it-operations/3-simple-ways-to-install-and-run-a-virtual-machine-on-ubuntu\",{},\"Nov 22, 2024\",[1901],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1869\":24,\"_1870\":1903},[],{\"_88\":1048,\"_1842\":1905},{\"_1049\":1906},\"native_right_2v\",\"dateDisplay\",\"show\",\"contributorDisplay\",\"displayAd\",\"adConfig\",{\"_1913\":26},\"nativeAdOption\",{\"_88\":1915,\"_1842\":1916},\"module_link_list\",{\"_1917\":1918,\"_1919\":1920,\"_1921\":1922,\"_1923\":171,\"_1924\":1925,\"_713\":24,\"_1929\":1930},\"listOption\",\"Dynamic\",\"listTitle\",\"Exclusive ITPro Resources\",\"icon\",\"Document\",\"externalFeed\",\"ctaButton\",{\"_1926\":570,\"_1927\":1928},\"ctaButtonLink\",\"ctaButtonText\",\"See all ITPro Resources\",\"articles\",[1931,1937,1941,1945],{\"_178\":1922,\"_115\":1932,\"_59\":1933,\"_1934\":24,\"_997\":354,\"_1024\":1935,\"_1936\":171,\"_174\":171},\"ITPro Today’s 2024 State of DevOps Report\",\"/devops/itpro-today-s-2024-state-of-devops-report\",\"isExternalLink\",\"2024-12-16T13:00:00.000Z\",\"eventDate\",{\"_178\":1922,\"_115\":1938,\"_59\":1939,\"_1934\":24,\"_997\":211,\"_1024\":1940,\"_1936\":171,\"_174\":171},\"BCDR Basics: A Quick Reference Guide for Business Continuity \u0026 Disaster Recovery\",\"/disaster-recovery/bcdr-basics-a-quick-reference-guide-for-business-continuity-disaster-recovery\",\"2024-10-10T15:22:31.000Z\",{\"_178\":1922,\"_115\":1942,\"_59\":1943,\"_1934\":24,\"_997\":211,\"_1024\":1944,\"_1936\":171,\"_174\":171},\"ITPro Today’s 2024 IT Priorities Report\",\"/career-management/itpro-today-s-2024-it-priorities-report\",\"2024-09-25T10:00:00.000Z\",{\"_178\":1922,\"_115\":1946,\"_59\":1947,\"_1934\":24,\"_997\":211,\"_1024\":1948,\"_1936\":171,\"_174\":171},\"Tech Careers: Quick Reference Guide to IT Job Titles\",\"/career-management/tech-careers-quick-reference-guide-to-it-job-titles\",\"2024-09-13T10:45:00.000Z\",{\"_88\":1841,\"_1842\":1950,\"_1911\":1994},{\"_115\":1951,\"_1845\":1952,\"_190\":1846,\"_1847\":1953,\"_1907\":1993,\"_1909\":1993,\"_1910\":-7},\"Technical Explainers\",\"Featured Technical Explainers\",[1954,1967,1980],{\"_88\":1850,\"_1842\":1955},{\"_178\":179,\"_190\":1852,\"_157\":1956,\"_163\":1959,\"_165\":1959,\"_168\":1960,\"_170\":1960,\"_1858\":1961,\"_172\":1962,\"_174\":171,\"_175\":176,\"_177\":136,\"_180\":1963,\"_188\":436,\"_970\":1965},{\"_159\":1957,\"_161\":1958},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfec5fcbd31c7f2a6/673b100cd675084d0707e288/AI-chip-1716x965_-_2024-11-18.jpg\",\"AI chip\",\"Cloud vs. On-Prem AI Accelerators: Choosing the Best Fit for Your AI Workloads\",\"/cloud-computing/cloud-vs-on-prem-ai-accelerators-choosing-the-best-fit-for-your-ai-workloads\",{},\"Nov 18, 2024\",[1964],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1869\":24,\"_1870\":1966},[],{\"_88\":1850,\"_1842\":1968},{\"_178\":179,\"_190\":1852,\"_157\":1969,\"_163\":1972,\"_165\":1972,\"_168\":1973,\"_170\":1973,\"_1858\":1974,\"_172\":1975,\"_174\":171,\"_175\":176,\"_177\":136,\"_180\":1976,\"_188\":312,\"_970\":1978},{\"_159\":1970,\"_161\":1971},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd277e0c4548d3c42/673278ac8d8bc463268a48b4/SaaS-1716x965_-_2024-11-11.jpg\",\"SaaS concept on a tablet\",\"Why SaaS Backup Matters: Protecting Data Beyond Vendor Guarantees\",\"/cloud-computing/why-saas-backup-matters-protecting-data-beyond-vendor-guarantees\",{},\"Nov 12, 2024\",[1977],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1869\":24,\"_1870\":1979},[],{\"_88\":1850,\"_1842\":1981},{\"_178\":179,\"_190\":1852,\"_157\":1982,\"_163\":1985,\"_165\":1985,\"_168\":1986,\"_170\":1986,\"_1858\":1987,\"_172\":1988,\"_174\":171,\"_175\":285,\"_177\":286,\"_180\":1989,\"_188\":436,\"_970\":1991},{\"_159\":1983,\"_161\":1984},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltdf272a7a39b366c2/672b48253c936766d5282090/DevOps-code-1716x965_-_2024-09-06.jpg\",\"DevOps logo on top of code\",\"DevOps: Key to Faster, More Efficient Government Software Development\",\"/devops/devops-key-to-faster-more-efficient-government-software-development\",{},\"Nov 6, 2024\",[1990],{\"_57\":183,\"_184\":185,\"_186\":187},{\"_1869\":24,\"_1870\":1992},[],\"hide\",{\"_1913\":24},{\"_88\":1996,\"_892\":1004,\"_1842\":1997},\"module_newsletter_promo\",{\"_115\":1001,\"_844\":1002,\"_1003\":1004,\"_845\":1005,\"_190\":193,\"_1006\":1007,\"_1998\":24,\"_1999\":2000},\"isOnHomepage\",\"moduleLocation\",\"sidebar\",{\"_88\":1841,\"_1842\":2002,\"_1911\":2035},{\"_115\":2003,\"_1845\":2004,\"_190\":2005,\"_1847\":2006,\"_1907\":1993,\"_1909\":1993,\"_1910\":-7},\"What Is\",\"Recent What Is\",\"column\",[2007,2022],{\"_88\":1850,\"_1842\":2008},{\"_178\":1922,\"_190\":191,\"_157\":2009,\"_163\":1938,\"_165\":2012,\"_168\":1939,\"_170\":1939,\"_1858\":2013,\"_172\":2014,\"_174\":171,\"_175\":305,\"_177\":306,\"_180\":2015,\"_188\":211,\"_970\":2020},{\"_159\":2010,\"_161\":2011},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltd6267f0056e427cb/6707f1e94c215e0bdbe8db2f/image-1795x965_(2).jpg\",\"cartoon shows a person next to a checklist and several icons that represent disaster scenarios\",\"BCDR Basics: A Quick Reference Guide for IT Pros\",{},\"Oct 10, 2024\",[2016],{\"_57\":2017,\"_184\":2018,\"_186\":2019},\"Ian Horowitz\",\"/author/ian-horowitz\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltc93aa705007174ee/66a10526893fa79494559f62/itpro-contributor-icon2.png\",{\"_1869\":24,\"_1870\":2021},[],{\"_88\":1850,\"_1842\":2023},{\"_178\":179,\"_190\":191,\"_157\":2024,\"_163\":2027,\"_165\":2027,\"_168\":2028,\"_170\":2028,\"_1858\":2029,\"_172\":2030,\"_174\":171,\"_175\":224,\"_177\":225,\"_180\":2031,\"_188\":436,\"_970\":2033},{\"_159\":2025,\"_161\":2026},\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/bltfffa964ee37aaf1e/66f6ee6fe8a6b02af4dab7fe/powershell_environment_variables_chart.png\",\"technology interface with a person's hand drawing gears and cogs\",\"Introduction To PowerShell Environment Variables\",\"/powershell/introduction-to-powershell-environment-variables\",{},\"Sep 30, 2024\",[2032],{\"_57\":258,\"_184\":259,\"_186\":260},{\"_1869\":24,\"_1870\":2034},[],{\"_1913\":24},\"relatedEvents\",[],\"topicSelector\",{\"_2040\":2041,\"_2043\":905},\"mainTopic\",{\"_88\":907,\"_115\":227,\"_59\":228,\"_908\":2042},{\"_88\":910,\"_115\":901},\"additionalTopics\",\"disclaimer\",{\"_769\":24,\"_2046\":2047},\"paidProductTaxonomies\",[],\"errorModal\",{\"_2050\":24,\"_2051\":2052,\"_2053\":2054},\"showErrorModal\",\"errorTitle\",\"Oops! An error has occurred\",\"errorDescription\",\"The connection on our end has been interrupted. Please refresh the page and try again.\",{\"_2056\":2057,\"_2059\":171,\"_2060\":14,\"_2061\":2062,\"_2063\":2064,\"_2065\":2066,\"_798\":171},\"duration\",{\"_2056\":2058},\"00:12:45\",\"videoUrl\",\"videoCredit\",\"videoId\",\"KMycRnBzDx0?si=nHUxZi_ID84Kt9v4\",\"videoService\",\"youtube\",\"videoEmbedCode\",\"\u003ciframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/KMycRnBzDx0?si=Y-92WcA5E27Kd64f\\\" title=\\\"YouTube video player\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\\\" referrerpolicy=\\\"strict-origin-when-cross-origin\\\" allowfullscreen\u003e\u003c/iframe\u003e\",\"schema\",[2069,2079],{\"_2070\":2071,\"_2072\":2073,\"_57\":993,\"_110\":992,\"_2074\":2075,\"_2076\":1025,\"_2056\":2077,\"_2078\":171},\"@context\",\"https://schema.org\",\"@type\",\"VideoObject\",\"thumbnailUrl\",[1829],\"uploadDate\",\"P0Y0M0DT0H12M45S\",\"contentUrl\",{\"_2070\":2071,\"_2072\":2080,\"_2081\":2082},\"BreadcrumbList\",\"itemListElement\",[2083,2087],{\"_2072\":2084,\"_2085\":211,\"_57\":749,\"_2086\":10},\"ListItem\",\"position\",\"item\",{\"_2072\":2084,\"_2085\":354,\"_57\":227,\"_2086\":2088},\"https://www.itprotoday.com/operating-systems/linux-os\",\"seo\",{\"_2091\":2092,\"_2093\":2094,\"_2095\":993,\"_2096\":24,\"_2097\":2098,\"_13\":-7,\"_1026\":2099},\"canonicalUrl\",\"https://www.itprotoday.com/linux-os/linux-ufw-uncomplicated-firewall-configuration-made-easy\",\"metaDescription\",\"This tutorial covers configuring and managing a basic firewall using UFW, the uncomplicated firewall, which simplifies firewall rule management on Linux systems. \",\"metaTitle\",\"noIndex\",\"imageUrl\",\"https://eu-images.contentstack.com/v3/assets/blt07f68461ccd75245/blt3cbd7c8f7dbc67e2/66c8c7eb9aeab424dd358da0/linux_ufw_hero.png?disable=upscale\u0026width=1200\u0026height=630\u0026fit=crop\",\"Linux OS, Vulnerabilities \u0026 Threats, IT Security, Networking \u0026 Security\",\"gtm\",{\"_2102\":2103},\"loadEvent\",{\"_2104\":2105,\"_2121\":2122,\"_2139\":2140},\"attributes\",{\"_2106\":2107,\"_69\":171,\"_2089\":2108,\"_1819\":2111,\"_2112\":2113,\"_891\":2116},\"events\",[],{\"_2109\":2092,\"_2110\":24},\"canonicalURL\",\"hideFromSearchEngines\",{\"_57\":171,\"_1821\":171,\"_1822\":24,\"_1823\":24,\"_1824\":1825,\"_1826\":171},\"legacy\",{\"_2114\":171,\"_2115\":171,\"_794\":171},\"destinationPath\",\"issueDate\",{\"_2117\":2062,\"_2063\":2064,\"_2118\":171,\"_2060\":14,\"_2119\":2120},\"videoID\",\"videoURL\",\"videoDuration\",765,\"category\",{\"_2123\":171,\"_919\":920,\"_2124\":891,\"_2125\":2126,\"_2127\":2128,\"_2129\":-7,\"_2130\":2131,\"_2134\":2135},\"buyerJourney\",\"pageType\",\"keyword\",[],\"series\",[],\"programName\",\"primaryTerm\",{\"_900\":901,\"_2132\":227,\"_2133\":171},\"child\",\"grandchild\",\"secondaryTerm\",[2136,2137,2138],{\"_900\":911,\"_2132\":404,\"_2133\":171},{\"_900\":911,\"_2132\":171,\"_2133\":171},{\"_900\":901,\"_2132\":221,\"_2133\":915},\"pageInfo\",{\"_2141\":893,\"_2142\":993,\"_2143\":2092,\"_2115\":2144,\"_794\":2145},\"pageID\",\"pageName\",\"destinationURL\",\"Aug 28, 2024\",[2146],{\"_924\":171,\"_2147\":272,\"_2148\":926,\"_57\":272},\"displayName\",\"jobTitle\",\"isLivePreview\",\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RC=function(b,c,e){c=document.getElementById(c);c.parentNode.removeChild(c);var a=document.getElementById(b);if(a){b=a.previousSibling;if(e)b.data="$!",a.setAttribute("data-dgst",e);else{e=b.parentNode;a=b.nextSibling;var f=0;do{if(a&&8===a.nodeType){var d=a.data;if("/$"===d)if(0===f)break;else f--;else"$"!==d&&"$?"!==d&&"$!"!==d||f++}d=a.nextSibling;e.removeChild(a);a=d}while(a);for(;c.firstChild;)e.insertBefore(c.firstChild,a);b.data="$"}b._reactRetry&&b._reactRetry()}};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>