186 lines
696 KiB
HTML
186 lines
696 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" imageSrcSet="/_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=576&q=75 576w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1600&q=75 1600w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=2200&q=75 2200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=3840&q=75 3840w" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 744px"/><link rel="preload" as="script" fetchPriority="low" href="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0_jn37pkwlfh1.js" crossorigin=""/><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3b13n_ig3xyf-.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/37qjt71871ggd.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/24ax31gj69mb3.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/turbopack-12riahh4j5zh-.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2lonyreq8one5.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1xlcp68i4rm_j.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js" async="" crossorigin=""></script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js" async="" crossorigin=""></script><script async="" src="/plz/js/script.js"></script><link rel="preload" href="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1kw9k40f5sj-1.js" as="script" fetchPriority="low"/><link crossorigin="anonymous" href="https://cdn.cloudquery.io" rel="preconnect"/><link href="https://cdn.cloudquery.io" rel="preconnect"/><link href="https://region1.google-analytics.com" rel="dns-prefetch"/><link href="https://www.google.com" rel="dns-prefetch"/><link href="https://www.googletagmanager.com" rel="dns-prefetch"/><link href="https://snap.licdn.com" rel="dns-prefetch"/><link href="https://pixel-config.reddit.com" rel="dns-prefetch"/><link href="https://alb.reddit.com" rel="dns-prefetch"/><link href="https://www.redditstatic.com" rel="dns-prefetch"/><meta name="color-scheme" content="dark"/><title>Fourth Pillar of Observability: Config | CloudQuery Blog</title><meta name="description" content="Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap."/><meta name="keywords" content="Engineering"/><link rel="canonical" href="https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring"/><meta property="og:title" content="Fourth Pillar of Observability: Config | CloudQuery Blog"/><meta property="og:description" content="Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap."/><meta property="og:url" content="https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring"/><meta property="og:site_name" content="CloudQuery"/><meta property="og:image" content="https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/thumbnail.png"/><meta property="og:type" content="article"/><meta property="article:published_time" content="2025-04-17T00:00:00.000Z"/><meta property="article:author" content="https://twitter.com/yevgenypats"/><meta property="article:tag" content="Engineering"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@cloudqueryio"/><meta name="twitter:creator" content="@cloudqueryio"/><meta name="twitter:title" content="Fourth Pillar of Observability: Config | CloudQuery Blog"/><meta name="twitter:description" content="Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap."/><meta name="twitter:image" content="https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/thumbnail.png"/><link rel="icon" href="/favicon.ico?favicon.2k_x5-n-rslbw.ico" sizes="100x100" type="image/x-icon"/><link rel="icon" href="/icon.png?icon.1v6qyz2_zqfa5.png" sizes="32x32" type="image/png"/><link rel="apple-touch-icon" href="/apple-icon.png?apple-icon.1zk3sfvhiw9nk.png" sizes="180x180" type="image/png"/><script>(function(){try{if(document.cookie.split('; ').some(function(r){return r.indexOf('cloudquery-cookie-consent=')===0})){var s=document.createElement('style');s.textContent='#cq-cookie-consent-banner{display:none!important}';document.head.appendChild(s);}}catch(e){}})();</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","description":"CloudQuery is the unified control plane for cloud operations. Sync, transform, and govern your cloud infrastructure data.","name":"CloudQuery","potentialAction":{"@type":"SearchAction","query-input":"required name=search_term_string","target":{"@type":"EntryPoint","urlTemplate":"https://www.cloudquery.io/hub?q={search_term_string}"}},"publisher":{"@type":"Organization","name":"CloudQuery","url":"https://www.cloudquery.io"},"url":"https://www.cloudquery.io"}</script><meta name="sentry-trace" content="0e841f168eb74816b7d183d6d6cde53e-8a2717de4fb4f506-0"/><meta name="baggage" content="sentry-environment=vercel-production,sentry-release=55f581b9919f375422d590f820f89f7ce2e8cbc3,sentry-public_key=16a80a57d99d5b9630e5b68eb8ebf4ea,sentry-trace_id=0e841f168eb74816b7d183d6d6cde53e,sentry-org_id=4505877667840000,sentry-sampled=false,sentry-sample_rand=0.7856489569968785,sentry-sample_rate=0"/><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0c0hxoamwjsbw.js" crossorigin="anonymous" noModule=""></script><style data-emotion="mui-global 1oo3abx">html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;-webkit-text-size-adjust:100%;}*,*::before,*::after{box-sizing:inherit;}strong,b{font-weight:700;}body{margin:0;color:#EDF2F7;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;background-color:#0E1320;}@media print{body{background-color:#fff;}}body::backdrop{background-color:#0E1320;}#root,#__next{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;}*{box-sizing:border-box;}body{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh;width:100%;}html{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100%;width:100%;}</style><style data-emotion="mui-global 1w60vfz">#nprogress{pointer-events:none;}#nprogress .bar{background:#29d;position:fixed;z-index:2000;top:0;left:0;width:100%;height:3px;background-color:#17B264;}#nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #17B264,0 0 5px #17B264;opacity:1;-webkit-transform:rotate(3deg) translate(0px, -4px);-ms-transform:rotate(3deg) translate(0px, -4px);-webkit-transform:rotate(3deg) translate(0px, -4px);-moz-transform:rotate(3deg) translate(0px, -4px);-ms-transform:rotate(3deg) translate(0px, -4px);transform:rotate(3deg) translate(0px, -4px);}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px;}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite;}.nprogress-custom-parent{overflow:hidden;position:relative;}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute;}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);}}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}</style><style data-emotion="mui-global gdl5bz">html{scroll-padding-top:80px;}</style><style data-emotion="mui-global 13kse5l">@-webkit-keyframes mui-auto-fill{from{-webkit-animation-name:mui-auto-fill;animation-name:mui-auto-fill;}}@keyframes mui-auto-fill{from{-webkit-animation-name:mui-auto-fill;animation-name:mui-auto-fill;}}@-webkit-keyframes mui-auto-fill-cancel{from{-webkit-animation-name:mui-auto-fill-cancel;animation-name:mui-auto-fill-cancel;}}@keyframes mui-auto-fill-cancel{from{-webkit-animation-name:mui-auto-fill-cancel;animation-name:mui-auto-fill-cancel;}}</style><style data-emotion="mui-global animation-c7515d">@-webkit-keyframes animation-c7515d{0%{opacity:1;}50%{opacity:0.4;}100%{opacity:1;}}@keyframes animation-c7515d{0%{opacity:1;}50%{opacity:0.4;}100%{opacity:1;}}</style><style data-emotion="mui lox0zw 1i43dhb yd8sa2 137fnnc s34mzo 1vkzsho 18bva83 gpygjm 1cr5flb ur1szg 16aq4vz 178k8gi 1us3bst 151h3to 4daq1z 1vg6q84 hkongz 4xeni4 15ebxym 170b55v 13ckb2b o6uoyh 15od74j 6o898j ht098x 13dkzwh wnwoy4 7ltdnm 10klw3m 15gt2y6 0 o5fn60 pnt9oq 1ugcz4v q7mezt y5sj4z 12ax1ca 1kunz08 13tkiz0 o4n3w0 14wd3ve i5suun 1qa3kim 1l4ua4w 1fg3vl0 u81msc 1x78ejx ths26n 1f47inc 128mcjr 16p0nhe 1pbzl6g 1xn6284 fm2fnw gsjzcg xm6ojw 1ygqs8m 14vsv3w 11t9ytc zguuy3 qbyn4h 1mqbv4i 1lux3f 1di0y35 1821gv5 1p6ixfa xtk6by rqgsqp prgei8 1bo4ba 1u8sthv 121fc5o 6k8fz8 ijr5jr 1cex1bn snpgch vh810p 660jju z2m5rw xvuz8q 1ikp2sb 1pg5tsb qlrnyb 1krrotb vcph0c 1p5bani 114t9px x6yksb dwq1z6 1f11l0v 1rxukac s8nxjm 18dxcls 1kw1wfr 1kja2d9 pocbpe 14s99i0 1xdhyk6 1vbfw84 4zg0rh 5w3psd lc49qv 1zmr45 6u32un 63lbxk j7qwjs addh84 1qn95c4 1x4jos1 12j5cho pg7028 157ab1j 9ujrnj w7khw8 12hp7bd 1ffpgi4 1tgtyda 1qwn5aq 1ne20ar 1aqki0k wdwfj1 8u2j5p 1p2grzc 3pri70 1vx0dya 1ip1b4j 1a0tpiy 14ur3ac 1q9ko37 15g30mo 19efhd4 1aht0z4 1yg0an9 4lrcex 1yt52m3 ook2qp b93c8e 13o6m2m k8h5iv e2xa0z 14kcl30 12uhh2q 1e200l7 1mn9afq 13wylk3 1h9jnp6 1ee2bgt 1ifeoh2 1nb28em jia77 anhusk hyzzuw 45do71 e6yp17 f4ecj 1wpzwvx 1rrerex 1yal89z xr049a 14yb8e9 180qr1i 1fxbtv0 1a4nwe1 z752c2 btvwch 14rdsw0 zwnb3h 9po5sc hjfd6p 1gmhwrj 5a3qg8 2jca7 bk4zqc y6j1my u710dz atj203 15wnsdl 1ov46kg 12m4dll 177aong 1gh05y5 wm4fnc 15ihrvk iwwhz8 1hadodn jp1awa 1klpoq2 1oxr19c cjpees bm9u9p gaaq6e 1gk40q3 1ekl43h 105c0k vbhgvt mh02tt 7d0zx8 c441ch 3fljw 5src73 1f27pzi 1yuxupd 1k0wk4f 1qftbaz 3xrgwf 9h6quu 1fbef5u 74682y tnhbhy y9r8r7 1vtl3vo m60s8j 1a6n7l1">.mui-lox0zw{background-color:#29303D;padding:24px;position:fixed;z-index:10000;}@media (min-width:0px){.mui-lox0zw{bottom:0;left:0;width:100%;}}@media (min-width:768px){.mui-lox0zw{bottom:24px;left:32px;width:424px;}}.mui-1i43dhb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24px;}.mui-yd8sa2{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}.mui-137fnnc{margin:0;font-size:1.125rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.0075em;font-weight:600;}.mui-s34mzo{margin:0;font-size:0.875rem;font-weight:400;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.01071em;}.mui-1vkzsho{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:var(--variant-containedColor);background-color:var(--variant-containedBg);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;color:#0E1320;}.mui-1vkzsho:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1vkzsho.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-1vkzsho:hover{box-shadow:0px 1px 5px rgba(0, 0, 0, 0.24);}@media (hover: none){.mui-1vkzsho:hover{box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);}}.mui-1vkzsho:active{box-shadow:0px 4px 6px rgba(0, 0, 0, 0.24);}.mui-1vkzsho.Mui-focusVisible{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.24);}.mui-1vkzsho.Mui-disabled{color:rgba(243, 244, 246, 0.38);box-shadow:none;background-color:rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-1vkzsho:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-1vkzsho.MuiButton-loading{color:transparent;}.mui-1vkzsho.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-18bva83{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:var(--variant-containedColor);background-color:var(--variant-containedBg);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;color:#0E1320;}.mui-18bva83::-moz-focus-inner{border-style:none;}.mui-18bva83.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-18bva83{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-18bva83:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-18bva83.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-18bva83:hover{box-shadow:0px 1px 5px rgba(0, 0, 0, 0.24);}@media (hover: none){.mui-18bva83:hover{box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);}}.mui-18bva83:active{box-shadow:0px 4px 6px rgba(0, 0, 0, 0.24);}.mui-18bva83.Mui-focusVisible{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.24);}.mui-18bva83.Mui-disabled{color:rgba(243, 244, 246, 0.38);box-shadow:none;background-color:rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-18bva83:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-18bva83.MuiButton-loading{color:transparent;}.mui-18bva83.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-gpygjm{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:5px 15px;border:1px solid currentColor;border-color:var(--variant-outlinedBorder, currentColor);background-color:var(--variant-outlinedBg);color:var(--variant-outlinedColor);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:5px 15px;padding:6px 16px;}.mui-gpygjm:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-gpygjm.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-gpygjm.Mui-disabled{border:1px solid rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-gpygjm:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-gpygjm.MuiButton-loading{color:transparent;}.mui-gpygjm.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-1cr5flb{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:5px 15px;border:1px solid currentColor;border-color:var(--variant-outlinedBorder, currentColor);background-color:var(--variant-outlinedBg);color:var(--variant-outlinedColor);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:5px 15px;padding:6px 16px;}.mui-1cr5flb::-moz-focus-inner{border-style:none;}.mui-1cr5flb.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1cr5flb{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1cr5flb:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1cr5flb.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-1cr5flb.Mui-disabled{border:1px solid rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-1cr5flb:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-1cr5flb.MuiButton-loading{color:transparent;}.mui-1cr5flb.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-ur1szg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}.mui-16aq4vz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;box-sizing:border-box;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;position:fixed;z-index:1100;top:0;left:auto;right:0;--AppBar-background:#17B264;--AppBar-color:#FFFFFF;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#022723;cursor:pointer;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:static;-webkit-text-decoration:none;text-decoration:none;}@media print{.mui-16aq4vz{position:absolute;}}.mui-16aq4vz:hover{background-color:#022E29;}.mui-178k8gi{background-color:#111927;color:#EDF2F7;-webkit-transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;box-shadow:var(--Paper-shadow);background-image:var(--Paper-overlay);background-image:none;background-color:#1C2536;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;box-sizing:border-box;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;position:fixed;z-index:1100;top:0;left:auto;right:0;--AppBar-background:#17B264;--AppBar-color:#FFFFFF;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#022723;cursor:pointer;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:static;-webkit-text-decoration:none;text-decoration:none;}@media print{.mui-178k8gi{position:absolute;}}.mui-178k8gi:hover{background-color:#022E29;}.mui-1us3bst{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:16px;padding-right:16px;min-height:48px;padding-top:8px;padding-bottom:8px;}@media (min-width:576px){.mui-1us3bst{padding-left:24px;padding-right:24px;}}.mui-151h3to{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width:0px){.mui-151h3to{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}@media (min-width:768px){.mui-151h3to{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.mui-4daq1z{margin:0;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;}.mui-1vg6q84{font-weight:700;}.mui-hkongz{margin:0;font-size:1rem;font-weight:600;line-height:1.5;color:#17B264;}@media (min-width:0px){.mui-hkongz{display:inline-block;}}@media (min-width:768px){.mui-hkongz{display:none;}}.mui-4xeni4{margin-left:8px;white-space:nowrap;}@media (min-width:0px){.mui-4xeni4{display:none;}}@media (min-width:768px){.mui-4xeni4{display:block;}}.mui-15ebxym{margin:0;font-size:1rem;font-weight:600;line-height:1.5;color:#17B264;}.mui-170b55v{height:1px;left:0;position:absolute;right:0;top:0;}.mui-13ckb2b{padding-top:16px;padding-bottom:16px;position:-webkit-sticky;position:sticky;top:0;z-index:1000;background-color:transparent;-webkit-transition:background-color 0.3s;transition:background-color 0.3s;}.mui-o6uoyh{width:100%;margin-left:auto;box-sizing:border-box;margin-right:auto;padding-left:16px;padding-right:16px;position:relative;z-index:2;}@media (min-width:576px){.mui-o6uoyh{padding-left:24px;padding-right:24px;}}@media (min-width:1200px){.mui-o6uoyh{max-width:1200px;}}@media (min-width: 576px){.mui-o6uoyh{padding-left:40px;padding-right:40px;}}.mui-15od74j{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.mui-15od74j>:not(style):not(style){margin:0;}.mui-15od74j>:not(style)~:not(style){margin-left:8px;}.mui-6o898j{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}.mui-6o898j>:not(style):not(style){margin:0;}.mui-6o898j>:not(style)~:not(style){margin-left:32px;}.mui-ht098x{-webkit-text-decoration:none;text-decoration:none;font-weight:600;position:relative;z-index:1;}.mui-ht098x:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-13dkzwh{margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;color:#17B264;-webkit-text-decoration:none;text-decoration:none;font-weight:600;position:relative;z-index:1;}.mui-13dkzwh:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-wnwoy4{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;font-size:1.5rem;display:block;height:44px;width:auto;}.mui-7ltdnm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}.mui-7ltdnm>:not(style):not(style){margin:0;}.mui-7ltdnm>:not(style)~:not(style){margin-left:16px;}@media (min-width:0px){.mui-7ltdnm{display:none;}}@media (min-width:1200px){.mui-7ltdnm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}.mui-10klw3m{height:100%;}.mui-15gt2y6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;list-style:none;margin:0px;padding:0px;}.mui-15gt2y6>:not(style):not(style){margin:0;}.mui-15gt2y6>:not(style)~:not(style){margin-left:4px;}.mui-o5fn60{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;position:relative;z-index:1;}.mui-o5fn60:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-o5fn60.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-o5fn60:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-o5fn60.MuiButton-loading{color:transparent;}.mui-o5fn60.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-pnt9oq{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;position:relative;z-index:1;}.mui-pnt9oq::-moz-focus-inner{border-style:none;}.mui-pnt9oq.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-pnt9oq{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-pnt9oq:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-pnt9oq.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-pnt9oq:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-pnt9oq.MuiButton-loading{color:transparent;}.mui-pnt9oq.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-1ugcz4v{display:inherit;margin-right:-4px;margin-left:8px;}.mui-1ugcz4v>*:nth-of-type(1){font-size:20px;}.mui-q7mezt{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;fill:currentColor;font-size:1.5rem;}.mui-y5sj4z{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#111927;left:0;max-height:0;opacity:0;overflow:hidden;position:fixed;right:0;top:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px);-webkit-transition:-webkit-transform 0.3s ease-in-out,opacity 0.3s ease-in-out,max-height 0s 0.3s ease-in-out;transition:transform 0.3s ease-in-out,opacity 0.3s ease-in-out,max-height 0s 0.3s ease-in-out;}.mui-12ax1ca{width:100%;margin-left:auto;box-sizing:border-box;margin-right:auto;padding-left:16px;padding-right:16px;}@media (min-width:576px){.mui-12ax1ca{padding-left:24px;padding-right:24px;}}@media (min-width:1200px){.mui-12ax1ca{max-width:1200px;}}@media (min-width: 576px){.mui-12ax1ca{padding-left:40px;padding-right:40px;}}.mui-1kunz08{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:48px;padding-top:calc(88px + 0px);}.mui-1kunz08>:not(style):not(style){margin:0;}.mui-1kunz08>:not(style)~:not(style){margin-left:40px;}.mui-13tkiz0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;}.mui-13tkiz0>:not(style):not(style){margin:0;}.mui-13tkiz0>:not(style)~:not(style){margin-top:16px;}.mui-o4n3w0{--Grid-columns:12;--Grid-columnSpacing:16px;--Grid-rowSpacing:16px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;min-width:0;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--Grid-rowSpacing) var(--Grid-columnSpacing);grid-auto-rows:1fr;}.mui-o4n3w0 >*{--Grid-parent-columns:12;}.mui-o4n3w0 >*{--Grid-parent-columnSpacing:16px;}.mui-o4n3w0 >*{--Grid-parent-rowSpacing:16px;}.mui-14wd3ve{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 6 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 6) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));min-width:0;box-sizing:border-box;}.mui-i5suun{-webkit-text-decoration:none;text-decoration:none;font-weight:600;color:inherit;display:block;height:100%;}.mui-i5suun:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-i5suun:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1qa3kim{margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;color:#17B264;-webkit-text-decoration:none;text-decoration:none;font-weight:600;color:inherit;display:block;height:100%;}.mui-1qa3kim:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-1qa3kim:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1l4ua4w{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;border-radius:8px;height:100%;padding-left:16px;padding-right:16px;padding-top:12px;padding-bottom:12px;-webkit-transition:background-color 0.3s ease-in-out;transition:background-color 0.3s ease-in-out;}.mui-1l4ua4w>:not(style):not(style){margin:0;}.mui-1l4ua4w>:not(style)~:not(style){margin-left:12px;}.mui-1l4ua4w:hover{background-color:rgba(108, 115, 127, 0.08);}.mui-1l4ua4w:hover .nav-item-arrow{opacity:1;}.mui-1fg3vl0{color:#17B264;}.mui-u81msc{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;font-size:1.5rem;}.mui-1x78ejx{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}.mui-1x78ejx>:not(style):not(style){margin:0;}.mui-1x78ejx>:not(style)~:not(style){margin-top:8px;}.mui-ths26n{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;width:100%;}.mui-ths26n>:not(style):not(style){margin:0;}.mui-ths26n>:not(style)~:not(style){margin-left:8px;}.mui-1f47inc{margin:0;font-size:1rem;font-weight:600;line-height:1.5;color:#17B264;}.mui-128mcjr{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;font-size:1.5rem;color:#17B264;opacity:0;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;}.mui-16p0nhe{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:340px;}.mui-1pbzl6g{-webkit-text-decoration:none;text-decoration:none;font-weight:600;color:inherit;}.mui-1pbzl6g:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-1pbzl6g:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1xn6284{margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;color:#17B264;-webkit-text-decoration:none;text-decoration:none;font-weight:600;color:inherit;}.mui-1xn6284:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-1xn6284:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-fm2fnw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#15202E;border-radius:8px;overflow:hidden;}.mui-fm2fnw:hover{background-color:#1C2536;}.mui-gsjzcg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:24px;}.mui-xm6ojw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:8px;margin-bottom:24px;}.mui-1ygqs8m{max-width:100%;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.8125rem;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;height:32px;line-height:1.5;color:#EDF2F7;background-color:rgba(243, 244, 246, 0.12);border-radius:16px;white-space:nowrap;-webkit-transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;cursor:unset;outline:0;-webkit-text-decoration:none;text-decoration:none;border:0;padding:0;vertical-align:middle;box-sizing:border-box;border-radius:12px;font-weight:500;padding-bottom:3px;padding-top:3px;color:#EDF2F7;background-color:#17B264;color:#111927;text-transform:uppercase;}.mui-1ygqs8m.Mui-disabled{opacity:0.38;pointer-events:none;}.mui-1ygqs8m .MuiChip-avatar{margin-left:5px;margin-right:-6px;width:24px;height:24px;color:#e0e0e0;font-size:0.75rem;}.mui-1ygqs8m .MuiChip-icon{margin-left:5px;margin-right:-6px;}.mui-1ygqs8m .MuiChip-deleteIcon{-webkit-tap-highlight-color:transparent;color:rgba(237, 242, 247, 0.26);font-size:22px;cursor:pointer;margin:0 5px 0 -6px;}.mui-1ygqs8m .MuiChip-deleteIcon:hover{color:rgba(237, 242, 247, 0.4);}.mui-1ygqs8m .MuiChip-icon{color:#e0e0e0;}.mui-1ygqs8m .MuiChip-icon{color:#6C737F;}.mui-1ygqs8m span{font-feature-settings:'clig' off;letter-spacing:0.16px;line-height:18px;padding-left:10px;padding-right:10px;}.mui-14vsv3w{overflow:hidden;text-overflow:ellipsis;padding-left:12px;padding-right:12px;white-space:nowrap;}.mui-11t9ytc{max-width:100%;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.8125rem;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;height:32px;line-height:1.5;color:#EDF2F7;background-color:rgba(243, 244, 246, 0.12);border-radius:16px;white-space:nowrap;-webkit-transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;cursor:unset;outline:0;-webkit-text-decoration:none;text-decoration:none;border:0;padding:0;vertical-align:middle;box-sizing:border-box;border-radius:12px;font-weight:500;padding-bottom:3px;padding-top:3px;color:#EDF2F7;background-color:default;color:#EDF2F7;text-transform:uppercase;}.mui-11t9ytc.Mui-disabled{opacity:0.38;pointer-events:none;}.mui-11t9ytc .MuiChip-avatar{margin-left:5px;margin-right:-6px;width:24px;height:24px;color:#e0e0e0;font-size:0.75rem;}.mui-11t9ytc .MuiChip-icon{margin-left:5px;margin-right:-6px;}.mui-11t9ytc .MuiChip-deleteIcon{-webkit-tap-highlight-color:transparent;color:rgba(237, 242, 247, 0.26);font-size:22px;cursor:pointer;margin:0 5px 0 -6px;}.mui-11t9ytc .MuiChip-deleteIcon:hover{color:rgba(237, 242, 247, 0.4);}.mui-11t9ytc .MuiChip-icon{color:#e0e0e0;}.mui-11t9ytc .MuiChip-icon{color:#6C737F;}.mui-11t9ytc span{font-feature-settings:'clig' off;letter-spacing:0.16px;line-height:18px;padding-left:10px;padding-right:10px;}.mui-zguuy3{margin:0;font-size:1.125rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.0075em;-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;font-size:24px;font-weight:600;overflow:hidden;}.mui-qbyn4h{z-index:1500;pointer-events:none;}.mui-1mqbv4i{z-index:1500;pointer-events:none;}.mui-1lux3f{margin:0;font-size:0.875rem;font-weight:400;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.01071em;-webkit-box-orient:vertical;-webkit-line-clamp:3;color:#C8CBD0;display:-webkit-box;overflow:hidden;}.mui-1di0y35{margin:0;font-size:1rem;font-weight:600;line-height:1.5;}.mui-1821gv5{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}.mui-1p6ixfa{margin:0;font-size:1.125rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.0075em;}.mui-xtk6by{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;border-radius:8px;height:100%;padding-left:16px;padding-right:16px;padding-top:8px;padding-bottom:8px;-webkit-transition:background-color 0.3s ease-in-out;transition:background-color 0.3s ease-in-out;}.mui-xtk6by>:not(style):not(style){margin:0;}.mui-xtk6by>:not(style)~:not(style){margin-left:12px;}.mui-xtk6by:hover{background-color:rgba(108, 115, 127, 0.08);}.mui-xtk6by:hover .nav-item-arrow{opacity:1;}.mui-rqgsqp{position:relative;z-index:1;}.mui-prgei8{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:16px;padding-right:16px;padding-top:8px;padding-bottom:8px;width:100%;}.mui-prgei8:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-prgei8.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-prgei8:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-prgei8.MuiButton-loading{color:transparent;}.mui-prgei8.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-1bo4ba{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:16px;padding-right:16px;padding-top:8px;padding-bottom:8px;width:100%;}.mui-1bo4ba::-moz-focus-inner{border-style:none;}.mui-1bo4ba.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1bo4ba{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1bo4ba:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1bo4ba.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-1bo4ba:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-1bo4ba.MuiButton-loading{color:transparent;}.mui-1bo4ba.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-1u8sthv{-webkit-text-decoration:none;text-decoration:none;font-weight:600;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:16px;padding-right:16px;padding-top:8px;padding-bottom:8px;width:100%;}.mui-1u8sthv:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-1u8sthv::-moz-focus-inner{border-style:none;}.mui-1u8sthv.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1u8sthv{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1u8sthv:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1u8sthv.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-1u8sthv:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-1u8sthv.MuiButton-loading{color:transparent;}.mui-1u8sthv.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-121fc5o{margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;color:#17B264;-webkit-text-decoration:none;text-decoration:none;font-weight:600;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:16px;padding-right:16px;padding-top:8px;padding-bottom:8px;width:100%;}.mui-121fc5o:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-121fc5o::-moz-focus-inner{border-style:none;}.mui-121fc5o.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-121fc5o{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-121fc5o:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-121fc5o.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-121fc5o:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-121fc5o.MuiButton-loading{color:transparent;}.mui-121fc5o.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}@media (min-width:0px){.mui-6k8fz8{display:none;}}@media (min-width:1200px){.mui-6k8fz8{display:block;}}.mui-ijr5jr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}.mui-ijr5jr>:not(style):not(style){margin:0;}.mui-ijr5jr>:not(style)~:not(style){margin-left:16px;}@media (min-width:1200px){.mui-ijr5jr{display:none;}}.mui-1cex1bn{text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);border-radius:8px;}.mui-1cex1bn:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-1cex1bn:hover{background-color:transparent;}}.mui-1cex1bn.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-1cex1bn.MuiIconButton-loading{color:transparent;}.mui-snpgch{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);border-radius:8px;}.mui-snpgch::-moz-focus-inner{border-style:none;}.mui-snpgch.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-snpgch{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-snpgch:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-snpgch:hover{background-color:transparent;}}.mui-snpgch.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-snpgch.MuiIconButton-loading{color:transparent;}.mui-vh810p{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;fill:currentColor;font-size:1.25rem;}.mui-660jju{z-index:1200;}@media (min-width:1200px){.mui-660jju{display:none;}}.mui-z2m5rw{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;position:relative;z-index:1;}.mui-xvuz8q{width:100%;margin-left:auto;box-sizing:border-box;margin-right:auto;padding-left:16px;padding-right:16px;position:relative;}@media (min-width:576px){.mui-xvuz8q{padding-left:24px;padding-right:24px;}}@media (min-width:1200px){.mui-xvuz8q{max-width:1200px;}}@media (min-width: 576px){.mui-xvuz8q{padding-left:40px;padding-right:40px;}}.mui-1ikp2sb{position:absolute;z-index:-1;height:100%;left:0;top:0;width:100%;}.mui-1ikp2sb+*{position:relative;z-index:1;}.mui-1pg5tsb{height:383px;left:0;max-width:100vw;overflow:hidden;position:absolute;top:0;width:100%;}.mui-qlrnyb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:20px;box-shadow:0px 5px 22px 0px rgba(0, 0, 0, 0.04),0px 0px 0px 0.5px rgba(0, 0, 0, 0.03);gap:16px;margin-top:96px;margin-bottom:96px;max-width:1120px;text-align:center;width:100%;}@media (min-width:0px){.mui-qlrnyb{padding-left:16px;padding-right:16px;}}@media (min-width:992px){.mui-qlrnyb{padding-left:192px;padding-right:192px;}}.mui-1krrotb{margin:0;font-size:3rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:-0.00833em;}.mui-vcph0c{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:16px;margin-top:16px;}.mui-1p5bani{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:var(--variant-containedColor);background-color:var(--variant-containedBg);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;padding:8px 22px;font-size:0.9375rem;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:8px 22px;color:#0E1320;}.mui-1p5bani:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1p5bani.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-1p5bani:hover{box-shadow:0px 1px 5px rgba(0, 0, 0, 0.24);}@media (hover: none){.mui-1p5bani:hover{box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);}}.mui-1p5bani:active{box-shadow:0px 4px 6px rgba(0, 0, 0, 0.24);}.mui-1p5bani.Mui-focusVisible{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.24);}.mui-1p5bani.Mui-disabled{color:rgba(243, 244, 246, 0.38);box-shadow:none;background-color:rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-1p5bani:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-1p5bani.MuiButton-loading{color:transparent;}.mui-1p5bani.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-114t9px{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:var(--variant-containedColor);background-color:var(--variant-containedBg);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;padding:8px 22px;font-size:0.9375rem;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:8px 22px;color:#0E1320;}.mui-114t9px::-moz-focus-inner{border-style:none;}.mui-114t9px.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-114t9px{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-114t9px:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-114t9px.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-114t9px:hover{box-shadow:0px 1px 5px rgba(0, 0, 0, 0.24);}@media (hover: none){.mui-114t9px:hover{box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);}}.mui-114t9px:active{box-shadow:0px 4px 6px rgba(0, 0, 0, 0.24);}.mui-114t9px.Mui-focusVisible{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.24);}.mui-114t9px.Mui-disabled{color:rgba(243, 244, 246, 0.38);box-shadow:none;background-color:rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-114t9px:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-114t9px.MuiButton-loading{color:transparent;}.mui-114t9px.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}@media print{.mui-x6yksb{position:absolute!important;}}.mui-x6yksb .MuiDialog-paper{max-width:1000px;}.mui-dwq1z6{padding-bottom:24px;padding-top:48px;background-color:#1C2536;border:1px solid #29303D;}.mui-1f11l0v{--Grid-columns:12;--Grid-columnSpacing:0px;--Grid-rowSpacing:0px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;min-width:0;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--Grid-rowSpacing) var(--Grid-columnSpacing);}.mui-1f11l0v >*{--Grid-parent-columns:12;}.mui-1f11l0v >*{--Grid-parent-columnSpacing:0px;}.mui-1f11l0v >*{--Grid-parent-rowSpacing:0px;}.mui-1rxukac{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 12 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 12) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));min-width:0;box-sizing:border-box;justify-self:center;}@media (min-width:768px){.mui-1rxukac{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 6 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 6) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}@media (min-width:992px){.mui-1rxukac{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 4 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 4) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}.mui-s8nxjm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width:0px){.mui-s8nxjm{padding-right:0px;}}@media (min-width:768px){.mui-s8nxjm{padding-right:32px;}}.mui-18dxcls{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;font-size:1.5rem;height:56px;width:auto;}.mui-1kw1wfr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:left;-webkit-box-align:left;-ms-flex-align:left;align-items:left;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;min-width:270px;padding-top:24px;padding-bottom:24px;width:100%;}.mui-1kw1wfr>:not(style):not(style){margin:0;}.mui-1kw1wfr>:not(style)~:not(style){margin-left:24px;}.mui-1kja2d9{min-width:0;width:100%;}.mui-pocbpe{margin:0;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;margin-bottom:16px;}.mui-14s99i0{margin-bottom:16px;max-width:100%;}.mui-1vbfw84{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:relative;min-width:0;padding:0;margin:0;border:0;vertical-align:top;width:100%;}.mui-4zg0rh{font-size:1rem;font-weight:400;line-height:1.4375em;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;color:#EDF2F7;box-sizing:border-box;position:relative;cursor:text;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;position:relative;background-color:rgba(255, 255, 255, 0.09);border-top-left-radius:8px;border-top-right-radius:8px;-webkit-transition:background-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms;transition:background-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms;background-color:transparent;border-radius:8px;border-style:solid;border-width:1px;overflow:hidden;-webkit-transition:border-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:border-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-color:#D2D6DB;color:#EDF2F7;}.mui-4zg0rh.Mui-disabled{color:rgba(255, 255, 255, 0.48);cursor:default;}.mui-4zg0rh.MuiFilledInput-root.Mui-disabled{border-color:#29303D;}.mui-4zg0rh:hover{background-color:rgba(255, 255, 255, 0.13);}@media (hover: none){.mui-4zg0rh:hover{background-color:rgba(255, 255, 255, 0.09);}}.mui-4zg0rh.Mui-focused{background-color:rgba(255, 255, 255, 0.09);}.mui-4zg0rh.Mui-disabled{background-color:rgba(255, 255, 255, 0.12);}.mui-4zg0rh::after{left:0;bottom:0;content:"";position:absolute;right:0;-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);-webkit-transition:-webkit-transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms;transition:transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms;pointer-events:none;}.mui-4zg0rh.Mui-focused:after{-webkit-transform:scaleX(1) translateX(0);-moz-transform:scaleX(1) translateX(0);-ms-transform:scaleX(1) translateX(0);transform:scaleX(1) translateX(0);}.mui-4zg0rh.Mui-error::before,.mui-4zg0rh.Mui-error::after{border-bottom-color:#F04438;}.mui-4zg0rh::before{border-bottom:1px solid rgba(255, 255, 255, 0.7);left:0;bottom:0;content:"";position:absolute;right:0;-webkit-transition:border-bottom-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:border-bottom-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;pointer-events:none;}.mui-4zg0rh:hover:not(.Mui-disabled, .Mui-error):before{border-bottom:1px solid #EDF2F7;}.mui-4zg0rh.Mui-disabled:before{border-bottom-style:dotted;}.mui-4zg0rh::after{border-bottom:2px solid #17B264;}.mui-4zg0rh:after{display:none;}.mui-4zg0rh:before{display:none;}.mui-4zg0rh:hover{background-color:rgba(243, 244, 246, 0.04);}.mui-4zg0rh.Mui-disabled{background-color:transparent;}.mui-4zg0rh.Mui-focused{background-color:transparent;border-color:#17B264;box-shadow:#17B264 0 0 0 2px;}.mui-4zg0rh.Mui-error{border-color:#F04438;box-shadow:#F04438 0 0 0 2px;}.mui-5w3psd{font:inherit;letter-spacing:inherit;color:currentColor;padding:4px 0 5px;border:0;box-sizing:content-box;background:none;height:1.4375em;margin:0;-webkit-tap-highlight-color:transparent;display:block;min-width:0;width:100%;-webkit-animation-name:mui-auto-fill-cancel;animation-name:mui-auto-fill-cancel;-webkit-animation-duration:10ms;animation-duration:10ms;padding-top:25px;padding-right:12px;padding-bottom:8px;padding-left:12px;padding-top:16px;padding-bottom:17px;font-size:14px;font-weight:500;line-height:24px;}.mui-5w3psd::-webkit-input-placeholder{color:currentColor;opacity:0.5;-webkit-transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;}.mui-5w3psd::-moz-placeholder{color:currentColor;opacity:0.5;-webkit-transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;}.mui-5w3psd::-ms-input-placeholder{color:currentColor;opacity:0.5;-webkit-transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;}.mui-5w3psd:focus{outline:0;}.mui-5w3psd:invalid{box-shadow:none;}.mui-5w3psd::-webkit-search-decoration{-webkit-appearance:none;}label[data-shrink=false]+.MuiInputBase-formControl .mui-5w3psd::-webkit-input-placeholder{opacity:0!important;}label[data-shrink=false]+.MuiInputBase-formControl .mui-5w3psd::-moz-placeholder{opacity:0!important;}label[data-shrink=false]+.MuiInputBase-formControl .mui-5w3psd::-ms-input-placeholder{opacity:0!important;}label[data-shrink=false]+.MuiInputBase-formControl .mui-5w3psd:focus::-webkit-input-placeholder{opacity:0.5;}label[data-shrink=false]+.MuiInputBase-formControl .mui-5w3psd:focus::-moz-placeholder{opacity:0.5;}label[data-shrink=false]+.MuiInputBase-formControl .mui-5w3psd:focus::-ms-input-placeholder{opacity:0.5;}.mui-5w3psd.Mui-disabled{opacity:1;-webkit-text-fill-color:rgba(255, 255, 255, 0.48);}.mui-5w3psd:-webkit-autofill{-webkit-animation-duration:5000s;animation-duration:5000s;-webkit-animation-name:mui-auto-fill;animation-name:mui-auto-fill;}.mui-5w3psd::-webkit-input-placeholder{opacity:1;color:#C8CBD0;}.mui-5w3psd::-moz-placeholder{opacity:1;color:#C8CBD0;}.mui-5w3psd:-ms-input-placeholder{opacity:1;color:#C8CBD0;}.mui-5w3psd::placeholder{opacity:1;color:#C8CBD0;}.mui-5w3psd:-webkit-autofill{-webkit-box-shadow:0 0 0 100px #266798 inset;-webkit-text-fill-color:#fff;caret-color:#fff;border-top-left-radius:inherit;border-top-right-radius:inherit;}.mui-lc49qv{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:var(--variant-containedColor);background-color:var(--variant-containedBg);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;width:100%;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;color:#0E1320;}.mui-lc49qv:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-lc49qv.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-lc49qv:hover{box-shadow:0px 1px 5px rgba(0, 0, 0, 0.24);}@media (hover: none){.mui-lc49qv:hover{box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);}}.mui-lc49qv:active{box-shadow:0px 4px 6px rgba(0, 0, 0, 0.24);}.mui-lc49qv.Mui-focusVisible{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.24);}.mui-lc49qv.Mui-disabled{color:rgba(243, 244, 246, 0.38);box-shadow:none;background-color:rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-lc49qv:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-lc49qv.MuiButton-loading{color:transparent;}.mui-lc49qv.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-1zmr45{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:var(--variant-containedColor);background-color:var(--variant-containedBg);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;width:100%;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;color:#0E1320;}.mui-1zmr45::-moz-focus-inner{border-style:none;}.mui-1zmr45.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1zmr45{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1zmr45:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1zmr45.Mui-disabled{color:rgba(243, 244, 246, 0.38);}.mui-1zmr45:hover{box-shadow:0px 1px 5px rgba(0, 0, 0, 0.24);}@media (hover: none){.mui-1zmr45:hover{box-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);}}.mui-1zmr45:active{box-shadow:0px 4px 6px rgba(0, 0, 0, 0.24);}.mui-1zmr45.Mui-focusVisible{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.24);}.mui-1zmr45.Mui-disabled{color:rgba(243, 244, 246, 0.38);box-shadow:none;background-color:rgba(243, 244, 246, 0.12);}@media (hover: hover){.mui-1zmr45:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-1zmr45.MuiButton-loading{color:transparent;}.mui-1zmr45.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-6u32un{--Grid-columns:12;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 12 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 12) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;min-width:0;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--Grid-rowSpacing) var(--Grid-columnSpacing);gap:40px;}@media (min-width:768px){.mui-6u32un{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 6 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 6) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}@media (min-width:992px){.mui-6u32un{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 8 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 8) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}@media (min-width:0px){.mui-6u32un{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (min-width:992px){.mui-6u32un{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}.mui-63lbxk{min-width:0;box-sizing:border-box;}@media (min-width:576px){.mui-63lbxk{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 3 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 3) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}@media (min-width:768px){.mui-63lbxk{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 6 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 6) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}.mui-j7qwjs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.mui-addh84{margin:0;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;color:#EDF2F7;font-weight:600;margin-bottom:16px;}.mui-1qn95c4{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;list-style:none;margin:0px;padding:0px;max-width:200px;}.mui-1x4jos1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.mui-1x4jos1>:not(style):not(style){margin:0;}.mui-1x4jos1>:not(style)~:not(style){margin-left:16px;}.mui-12j5cho{-webkit-text-decoration:none;text-decoration:none;font-weight:600;color:#C8CBD0;overflow-wrap:anywhere;}.mui-12j5cho:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-pg7028{margin:0;font-size:0.875rem;font-weight:500;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00714em;color:#17B264;-webkit-text-decoration:none;text-decoration:none;font-weight:600;color:#C8CBD0;overflow-wrap:anywhere;}.mui-pg7028:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-157ab1j{margin:0;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;color:#EDF2F7;font-weight:600;margin-bottom:4px;margin-top:12px;}.mui-9ujrnj{min-width:0;box-sizing:border-box;}@media (min-width:576px){.mui-9ujrnj{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 3 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 3) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}@media (min-width:768px){.mui-9ujrnj{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 4 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 4) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}.mui-w7khw8{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;list-style:none;margin:0px;padding:0px;max-width:110px;}.mui-12hp7bd{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 12 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 12) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));min-width:0;box-sizing:border-box;}@media (min-width:576px){.mui-12hp7bd{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 3 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 3) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}@media (min-width:768px){.mui-12hp7bd{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 6 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 6) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}.mui-1ffpgi4{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;list-style:none;margin:0px;padding:0px;}@media (min-width:0px){.mui-1ffpgi4{display:grid;grid-template-columns:repeat(2, 1fr);max-height:112px;max-width:unset;}}@media (min-width:576px){.mui-1ffpgi4{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;grid-template-columns:unset;max-height:unset;}}@media (min-width:768px){.mui-1ffpgi4{max-width:170px;}}.mui-1tgtyda{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;color:#C8CBD0;padding:0px;text-align:left;}.mui-1tgtyda:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1tgtyda.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-1tgtyda:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-1tgtyda.MuiButton-loading{color:transparent;}.mui-1tgtyda.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-1tgtyda:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-1qwn5aq{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);--variant-textColor:#17B264;--variant-outlinedColor:#17B264;--variant-outlinedBorder:rgba(23, 178, 100, 0.5);--variant-containedColor:#FFFFFF;--variant-containedBg:#17B264;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;color:#C8CBD0;padding:0px;text-align:left;}.mui-1qwn5aq::-moz-focus-inner{border-style:none;}.mui-1qwn5aq.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1qwn5aq{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1qwn5aq:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1qwn5aq.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-1qwn5aq:hover{--variant-containedBg:#109962;--variant-textBg:rgba(23, 178, 100, 0.04);--variant-outlinedBorder:#17B264;--variant-outlinedBg:rgba(23, 178, 100, 0.04);}}.mui-1qwn5aq.MuiButton-loading{color:transparent;}.mui-1qwn5aq.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-1qwn5aq:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-1ne20ar{margin:0;font-size:0.875rem;font-weight:500;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00714em;}.mui-1aqki0k{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 12 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 12) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));min-width:0;box-sizing:border-box;}@media (min-width:768px){.mui-1aqki0k{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:calc(100% * 4 / var(--Grid-parent-columns) - (var(--Grid-parent-columns) - 4) * (var(--Grid-parent-columnSpacing) / var(--Grid-parent-columns)));}}.mui-wdwfj1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;list-style:none;margin:0px;padding:0px;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;-webkit-column-gap:24px;column-gap:24px;}@media (min-width:0px){.mui-wdwfj1{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media (min-width:768px){.mui-wdwfj1{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}.mui-8u2j5p{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;padding:2px;-webkit-transition:opacity 0.2s ease;transition:opacity 0.2s ease;}.mui-8u2j5p:hover{opacity:0.8;}.mui-1p2grzc{margin:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;border-width:0;border-style:solid;border-color:#29303D;border-bottom-width:thin;margin-bottom:24px;margin-top:48px;}.mui-3pri70{margin:0;font-size:0.75rem;font-weight:500;line-height:1.66;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.03333em;color:#C8CBD0;}.mui-1vx0dya{width:100%;margin-left:auto;box-sizing:border-box;margin-right:auto;padding-left:16px;padding-right:16px;}@media (min-width:576px){.mui-1vx0dya{padding-left:24px;padding-right:24px;}}@media (min-width:1200px){.mui-1vx0dya{max-width:1200px;}}@media (min-width: 576px){.mui-1vx0dya{padding-left:40px;padding-right:40px;}}@media (min-width:0px){.mui-1vx0dya{padding-bottom:24px;padding-top:24px;}}@media (min-width:768px){.mui-1vx0dya{padding-bottom:80px;padding-top:64px;}}.mui-1ip1b4j{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:relative;}@media (min-width:0px){.mui-1ip1b4j{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.mui-1ip1b4j>:not(style):not(style){margin:0;}.mui-1ip1b4j>:not(style)~:not(style){margin-top:24px;}}@media (min-width:768px){.mui-1ip1b4j{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}.mui-1ip1b4j>:not(style):not(style){margin:0;}.mui-1ip1b4j>:not(style)~:not(style){margin-left:24px;}}@media (min-width:992px){.mui-1ip1b4j>:not(style):not(style){margin:0;}.mui-1ip1b4j>:not(style)~:not(style){margin-left:48px;}}.mui-1a0tpiy{position:relative;}@media (min-width:768px){.mui-1a0tpiy{-webkit-flex:0 0 200px;-ms-flex:0 0 200px;flex:0 0 200px;}}.mui-14ur3ac{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;white-space:nowrap;}.mui-14ur3ac:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-14ur3ac.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-14ur3ac:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-14ur3ac.MuiButton-loading{color:transparent;}.mui-14ur3ac.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}@media (min-width:0px){.mui-14ur3ac{margin-bottom:16px;margin-left:0px;}}@media (min-width:768px){.mui-14ur3ac{margin-bottom:40px;margin-left:-8px;}}.mui-1q9ko37{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;white-space:nowrap;}.mui-1q9ko37::-moz-focus-inner{border-style:none;}.mui-1q9ko37.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1q9ko37{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1q9ko37:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-1q9ko37.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-1q9ko37:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-1q9ko37.MuiButton-loading{color:transparent;}.mui-1q9ko37.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}@media (min-width:0px){.mui-1q9ko37{margin-bottom:16px;margin-left:0px;}}@media (min-width:768px){.mui-1q9ko37{margin-bottom:40px;margin-left:-8px;}}.mui-15g30mo{display:inherit;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:8px;margin-left:-4px;}.mui-15g30mo::before{content:"\200b";width:0;overflow:hidden;}.mui-15g30mo>*:nth-of-type(1){font-size:20px;}.mui-19efhd4{left:0;max-height:calc(100vh - 130px);position:-webkit-sticky;position:sticky;top:75px;}.mui-1aht0z4{margin:0;font-size:1.125rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.0075em;font-weight:600;margin-bottom:16px;padding-left:8px;}@media (min-width:0px){.mui-1aht0z4{display:none;}}@media (min-width:768px){.mui-1aht0z4{display:block;}}.mui-1yg0an9{overflow:hidden;}@media (min-width:0px){.mui-1yg0an9{display:none;}}@media (min-width:768px){.mui-1yg0an9{display:block;}}.mui-4lrcex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 60px);}.mui-1yt52m3{list-style:none;margin:0;padding:0;position:relative;padding-top:8px;padding-bottom:8px;box-sizing:content-box;margin:0px;max-height:100%;overflow:auto;padding:0px;padding-bottom:16px;padding-right:20px;width:100%;}.mui-ook2qp{font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-text-decoration:none;text-decoration:none;min-height:48px;padding-top:6px;padding-bottom:6px;box-sizing:border-box;white-space:nowrap;padding-left:16px;padding-right:16px;border-radius:8px;padding:6px 8px;width:100%;font-size:1rem;font-weight:400;line-height:1.5;color:#EDF2F7;color:#17B264;font-weight:600;margin-left:0px;white-space:normal;}.mui-ook2qp:hover{-webkit-text-decoration:none;text-decoration:none;background-color:rgba(243, 244, 246, 0.04);}@media (hover: none){.mui-ook2qp:hover{background-color:transparent;}}.mui-ook2qp.Mui-selected{background-color:rgba(23, 178, 100, 0.08);}.mui-ook2qp.Mui-selected.Mui-focusVisible{background-color:rgba(23, 178, 100, 0.2);}.mui-ook2qp.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.12);}@media (hover: none){.mui-ook2qp.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.08);}}.mui-ook2qp.Mui-focusVisible{background-color:rgba(243, 244, 246, 0.16);}.mui-ook2qp.Mui-disabled{opacity:0.38;}.mui-ook2qp+.MuiDivider-root{margin-top:8px;margin-bottom:8px;}.mui-ook2qp+.MuiDivider-inset{margin-left:52px;}.mui-ook2qp .MuiListItemText-root{margin-top:0;margin-bottom:0;}.mui-ook2qp .MuiListItemText-inset{padding-left:36px;}.mui-ook2qp .MuiListItemIcon-root{min-width:36px;}@media (min-width:576px){.mui-ook2qp{min-height:auto;}}.mui-ook2qp.MuiAutocomplete-option{font-size:0.875rem;font-weight:400;line-height:1.57;}.mui-ook2qp.bold{font-weight:600;}.mui-ook2qp svg{color:#6EE792;}.mui-ook2qp.Mui-selected.bold{background-color:rgba(23, 178, 100, 0.12);}.mui-b93c8e{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-text-decoration:none;text-decoration:none;min-height:48px;padding-top:6px;padding-bottom:6px;box-sizing:border-box;white-space:nowrap;padding-left:16px;padding-right:16px;border-radius:8px;padding:6px 8px;width:100%;font-size:1rem;font-weight:400;line-height:1.5;color:#EDF2F7;color:#17B264;font-weight:600;margin-left:0px;white-space:normal;}.mui-b93c8e::-moz-focus-inner{border-style:none;}.mui-b93c8e.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-b93c8e{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-b93c8e:hover{-webkit-text-decoration:none;text-decoration:none;background-color:rgba(243, 244, 246, 0.04);}@media (hover: none){.mui-b93c8e:hover{background-color:transparent;}}.mui-b93c8e.Mui-selected{background-color:rgba(23, 178, 100, 0.08);}.mui-b93c8e.Mui-selected.Mui-focusVisible{background-color:rgba(23, 178, 100, 0.2);}.mui-b93c8e.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.12);}@media (hover: none){.mui-b93c8e.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.08);}}.mui-b93c8e.Mui-focusVisible{background-color:rgba(243, 244, 246, 0.16);}.mui-b93c8e.Mui-disabled{opacity:0.38;}.mui-b93c8e+.MuiDivider-root{margin-top:8px;margin-bottom:8px;}.mui-b93c8e+.MuiDivider-inset{margin-left:52px;}.mui-b93c8e .MuiListItemText-root{margin-top:0;margin-bottom:0;}.mui-b93c8e .MuiListItemText-inset{padding-left:36px;}.mui-b93c8e .MuiListItemIcon-root{min-width:36px;}@media (min-width:576px){.mui-b93c8e{min-height:auto;}}.mui-b93c8e.MuiAutocomplete-option{font-size:0.875rem;font-weight:400;line-height:1.57;}.mui-b93c8e.bold{font-weight:600;}.mui-b93c8e svg{color:#6EE792;}.mui-b93c8e.Mui-selected.bold{background-color:rgba(23, 178, 100, 0.12);}.mui-13o6m2m{margin:0;font-size:1rem;font-weight:500;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;color:#EDF2F7;}.mui-k8h5iv{font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-text-decoration:none;text-decoration:none;min-height:48px;padding-top:6px;padding-bottom:6px;box-sizing:border-box;white-space:nowrap;padding-left:16px;padding-right:16px;border-radius:8px;padding:6px 8px;width:100%;font-size:1rem;font-weight:400;line-height:1.5;color:#EDF2F7;margin-left:0px;white-space:normal;}.mui-k8h5iv:hover{-webkit-text-decoration:none;text-decoration:none;background-color:rgba(243, 244, 246, 0.04);}@media (hover: none){.mui-k8h5iv:hover{background-color:transparent;}}.mui-k8h5iv.Mui-selected{background-color:rgba(23, 178, 100, 0.08);}.mui-k8h5iv.Mui-selected.Mui-focusVisible{background-color:rgba(23, 178, 100, 0.2);}.mui-k8h5iv.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.12);}@media (hover: none){.mui-k8h5iv.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.08);}}.mui-k8h5iv.Mui-focusVisible{background-color:rgba(243, 244, 246, 0.16);}.mui-k8h5iv.Mui-disabled{opacity:0.38;}.mui-k8h5iv+.MuiDivider-root{margin-top:8px;margin-bottom:8px;}.mui-k8h5iv+.MuiDivider-inset{margin-left:52px;}.mui-k8h5iv .MuiListItemText-root{margin-top:0;margin-bottom:0;}.mui-k8h5iv .MuiListItemText-inset{padding-left:36px;}.mui-k8h5iv .MuiListItemIcon-root{min-width:36px;}@media (min-width:576px){.mui-k8h5iv{min-height:auto;}}.mui-k8h5iv.MuiAutocomplete-option{font-size:0.875rem;font-weight:400;line-height:1.57;}.mui-k8h5iv.bold{font-weight:600;}.mui-k8h5iv svg{color:#6EE792;}.mui-k8h5iv.Mui-selected.bold{background-color:rgba(23, 178, 100, 0.12);}.mui-e2xa0z{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-text-decoration:none;text-decoration:none;min-height:48px;padding-top:6px;padding-bottom:6px;box-sizing:border-box;white-space:nowrap;padding-left:16px;padding-right:16px;border-radius:8px;padding:6px 8px;width:100%;font-size:1rem;font-weight:400;line-height:1.5;color:#EDF2F7;margin-left:0px;white-space:normal;}.mui-e2xa0z::-moz-focus-inner{border-style:none;}.mui-e2xa0z.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-e2xa0z{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-e2xa0z:hover{-webkit-text-decoration:none;text-decoration:none;background-color:rgba(243, 244, 246, 0.04);}@media (hover: none){.mui-e2xa0z:hover{background-color:transparent;}}.mui-e2xa0z.Mui-selected{background-color:rgba(23, 178, 100, 0.08);}.mui-e2xa0z.Mui-selected.Mui-focusVisible{background-color:rgba(23, 178, 100, 0.2);}.mui-e2xa0z.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.12);}@media (hover: none){.mui-e2xa0z.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.08);}}.mui-e2xa0z.Mui-focusVisible{background-color:rgba(243, 244, 246, 0.16);}.mui-e2xa0z.Mui-disabled{opacity:0.38;}.mui-e2xa0z+.MuiDivider-root{margin-top:8px;margin-bottom:8px;}.mui-e2xa0z+.MuiDivider-inset{margin-left:52px;}.mui-e2xa0z .MuiListItemText-root{margin-top:0;margin-bottom:0;}.mui-e2xa0z .MuiListItemText-inset{padding-left:36px;}.mui-e2xa0z .MuiListItemIcon-root{min-width:36px;}@media (min-width:576px){.mui-e2xa0z{min-height:auto;}}.mui-e2xa0z.MuiAutocomplete-option{font-size:0.875rem;font-weight:400;line-height:1.57;}.mui-e2xa0z.bold{font-weight:600;}.mui-e2xa0z svg{color:#6EE792;}.mui-e2xa0z.Mui-selected.bold{background-color:rgba(23, 178, 100, 0.12);}.mui-14kcl30{font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-text-decoration:none;text-decoration:none;min-height:48px;padding-top:6px;padding-bottom:6px;box-sizing:border-box;white-space:nowrap;padding-left:16px;padding-right:16px;border-radius:8px;padding:6px 8px;width:100%;font-size:1rem;font-weight:400;line-height:1.5;color:#EDF2F7;margin-left:16px;white-space:normal;}.mui-14kcl30:hover{-webkit-text-decoration:none;text-decoration:none;background-color:rgba(243, 244, 246, 0.04);}@media (hover: none){.mui-14kcl30:hover{background-color:transparent;}}.mui-14kcl30.Mui-selected{background-color:rgba(23, 178, 100, 0.08);}.mui-14kcl30.Mui-selected.Mui-focusVisible{background-color:rgba(23, 178, 100, 0.2);}.mui-14kcl30.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.12);}@media (hover: none){.mui-14kcl30.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.08);}}.mui-14kcl30.Mui-focusVisible{background-color:rgba(243, 244, 246, 0.16);}.mui-14kcl30.Mui-disabled{opacity:0.38;}.mui-14kcl30+.MuiDivider-root{margin-top:8px;margin-bottom:8px;}.mui-14kcl30+.MuiDivider-inset{margin-left:52px;}.mui-14kcl30 .MuiListItemText-root{margin-top:0;margin-bottom:0;}.mui-14kcl30 .MuiListItemText-inset{padding-left:36px;}.mui-14kcl30 .MuiListItemIcon-root{min-width:36px;}@media (min-width:576px){.mui-14kcl30{min-height:auto;}}.mui-14kcl30.MuiAutocomplete-option{font-size:0.875rem;font-weight:400;line-height:1.57;}.mui-14kcl30.bold{font-weight:600;}.mui-14kcl30 svg{color:#6EE792;}.mui-14kcl30.Mui-selected.bold{background-color:rgba(23, 178, 100, 0.12);}.mui-12uhh2q{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-text-decoration:none;text-decoration:none;min-height:48px;padding-top:6px;padding-bottom:6px;box-sizing:border-box;white-space:nowrap;padding-left:16px;padding-right:16px;border-radius:8px;padding:6px 8px;width:100%;font-size:1rem;font-weight:400;line-height:1.5;color:#EDF2F7;margin-left:16px;white-space:normal;}.mui-12uhh2q::-moz-focus-inner{border-style:none;}.mui-12uhh2q.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-12uhh2q{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-12uhh2q:hover{-webkit-text-decoration:none;text-decoration:none;background-color:rgba(243, 244, 246, 0.04);}@media (hover: none){.mui-12uhh2q:hover{background-color:transparent;}}.mui-12uhh2q.Mui-selected{background-color:rgba(23, 178, 100, 0.08);}.mui-12uhh2q.Mui-selected.Mui-focusVisible{background-color:rgba(23, 178, 100, 0.2);}.mui-12uhh2q.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.12);}@media (hover: none){.mui-12uhh2q.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.08);}}.mui-12uhh2q.Mui-focusVisible{background-color:rgba(243, 244, 246, 0.16);}.mui-12uhh2q.Mui-disabled{opacity:0.38;}.mui-12uhh2q+.MuiDivider-root{margin-top:8px;margin-bottom:8px;}.mui-12uhh2q+.MuiDivider-inset{margin-left:52px;}.mui-12uhh2q .MuiListItemText-root{margin-top:0;margin-bottom:0;}.mui-12uhh2q .MuiListItemText-inset{padding-left:36px;}.mui-12uhh2q .MuiListItemIcon-root{min-width:36px;}@media (min-width:576px){.mui-12uhh2q{min-height:auto;}}.mui-12uhh2q.MuiAutocomplete-option{font-size:0.875rem;font-weight:400;line-height:1.57;}.mui-12uhh2q.bold{font-weight:600;}.mui-12uhh2q svg{color:#6EE792;}.mui-12uhh2q.Mui-selected.bold{background-color:rgba(23, 178, 100, 0.12);}.mui-1e200l7{text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);border-radius:8px;background-color:#0E1320;height:40px;position:-webkit-sticky;position:sticky;top:25px;width:40px;}.mui-1e200l7:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-1e200l7:hover{background-color:transparent;}}.mui-1e200l7.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-1e200l7.MuiIconButton-loading{color:transparent;}@media (min-width:768px){.mui-1e200l7{display:none;}}.mui-1e200l7:hover{background-color:#111927;}.mui-1mn9afq{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);border-radius:8px;background-color:#0E1320;height:40px;position:-webkit-sticky;position:sticky;top:25px;width:40px;}.mui-1mn9afq::-moz-focus-inner{border-style:none;}.mui-1mn9afq.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1mn9afq{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1mn9afq:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-1mn9afq:hover{background-color:transparent;}}.mui-1mn9afq.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-1mn9afq.MuiIconButton-loading{color:transparent;}@media (min-width:768px){.mui-1mn9afq{display:none;}}.mui-1mn9afq:hover{background-color:#111927;}.mui-1h9jnp6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:100%;min-width:0;}.mui-1ee2bgt{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width:0px){.mui-1ee2bgt{padding-left:0px;padding-right:0px;}}@media (min-width:768px){.mui-1ee2bgt{padding-left:24px;padding-right:48px;}}@media (min-width:1200px){.mui-1ee2bgt{padding-right:104px;}}.mui-1ifeoh2{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;margin-bottom:16px;position:relative;}.mui-1nb28em{max-width:100%;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.8125rem;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;height:32px;line-height:1.5;color:#EDF2F7;background-color:rgba(243, 244, 246, 0.12);border-radius:16px;white-space:nowrap;-webkit-transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;cursor:unset;outline:0;-webkit-text-decoration:none;text-decoration:none;border:0;padding:0;vertical-align:middle;box-sizing:border-box;border-radius:12px;font-weight:500;padding-bottom:3px;padding-top:3px;color:#EDF2F7;padding-top:7px;padding-bottom:7px;}.mui-1nb28em.Mui-disabled{opacity:0.38;pointer-events:none;}.mui-1nb28em .MuiChip-avatar{margin-left:5px;margin-right:-6px;width:24px;height:24px;color:#e0e0e0;font-size:0.75rem;}.mui-1nb28em .MuiChip-icon{margin-left:5px;margin-right:-6px;}.mui-1nb28em .MuiChip-deleteIcon{-webkit-tap-highlight-color:transparent;color:rgba(237, 242, 247, 0.26);font-size:22px;cursor:pointer;margin:0 5px 0 -6px;}.mui-1nb28em .MuiChip-deleteIcon:hover{color:rgba(237, 242, 247, 0.4);}.mui-1nb28em .MuiChip-icon{color:#e0e0e0;}.mui-1nb28em .MuiChip-icon{color:#6C737F;}.mui-1nb28em span{font-feature-settings:'clig' off;letter-spacing:0.16px;line-height:18px;padding-left:10px;padding-right:10px;}.mui-jia77{margin:0;font-size:2rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00735em;margin-bottom:16px;}.mui-anhusk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;margin-bottom:32px;}.mui-hyzzuw{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:40px;height:40px;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:1.25rem;line-height:1;border-radius:50%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:14px;font-weight:600;letter-spacing:0;background-color:#D2D6DB;color:#000;}.mui-45do71{width:100%;height:100%;text-align:center;object-fit:cover;color:transparent;text-indent:10000px;}.mui-e6yp17{-webkit-text-decoration:underline;text-decoration:underline;font-weight:600;color:inherit;}.mui-e6yp17:hover{text-decoration-color:inherit;}.mui-f4ecj{margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;-webkit-text-decoration:underline;text-decoration:underline;font-weight:600;color:inherit;}.mui-f4ecj:hover{text-decoration-color:inherit;}.mui-1wpzwvx{display:block;background-color:rgba(237, 242, 247, 0.13);height:1.2em;border-radius:8px;-webkit-animation:animation-c7515d 2s ease-in-out 0.5s infinite;animation:animation-c7515d 2s ease-in-out 0.5s infinite;}.mui-1rrerex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.mui-1rrerex>:not(style):not(style){margin:0;}.mui-1rrerex>:not(style)~:not(style){margin-top:32px;}.mui-1yal89z{color:#C8CBD0;font-size:1rem;font-weight:400;line-height:1.25;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;white-space:pre-wrap;}.mui-1yal89z ul{margin:0px;}.mui-xr049a{margin:0;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;font-style:italic;}.mui-14yb8e9{margin:0;font-size:1.5rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0em;color:#EDF2F7;margin-top:8px;}.mui-180qr1i{-webkit-text-decoration:none;text-decoration:none;font-weight:600;}.mui-1fxbtv0{margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;color:#17B264;-webkit-text-decoration:none;text-decoration:none;font-weight:600;}.mui-1a4nwe1{background:none;border:none;cursor:pointer;padding:0px;position:relative;width:100%;aspect-ratio:auto;display:block;height:100%;max-width:100%;}.mui-1a4nwe1 img{height:auto!important;position:static!important;}.mui-z752c2{list-style:none;margin:0;padding:0;position:relative;counter-reset:list 1;line-height:0;list-style:none;padding-left:24px;}.mui-z752c2 .MuiListItem-root{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}.mui-z752c2>li::before{color:#C8CBD0;content:counter(list) '.';counter-increment:list 1;left:-17px;position:absolute;top:11.5px;}.mui-z752c2>li:first-of-type:before{counter-increment:none;}.mui-btvwch{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-text-decoration:none;text-decoration:none;width:100%;box-sizing:border-box;text-align:left;padding-top:8px;padding-bottom:8px;margin-bottom:8px;padding:0px;position:relative;}.mui-btvwch:last-child{margin-bottom:0px;}.mui-14rdsw0{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;margin-top:4px;margin-bottom:4px;}.MuiTypography-root:where(.mui-14rdsw0 .MuiListItemText-primary){display:block;}.MuiTypography-root:where(.mui-14rdsw0 .MuiListItemText-secondary){display:block;}.mui-zwnb3h{overflow:hidden;border-radius:20px;background-color:#111927;box-shadow:0px 0px 0px 0.5px rgba(0, 0, 0, 0.03),0px 5px 22px 0px rgba(0, 0, 0, 0.04);background-color:transparent;border-radius:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:0;}.mui-zwnb3h .MuiTableHead-root{background-color:#111927;position:-webkit-sticky;position:sticky;top:0;z-index:2;}.mui-zwnb3h .MuiTableHead-root .MuiTableCell-root{background-color:rgba(107, 151, 227, 0.05);}.mui-zwnb3h .MuiTablePagination-toolbar{min-height:44px;}.mui-zwnb3h .MuiTablePagination-selectLabel{margin-top:0px;margin-bottom:0px;}.mui-zwnb3h .MuiTablePagination-displayedRows{margin-top:0px;margin-bottom:0px;}.mui-9po5sc{background-color:#111927;color:#EDF2F7;-webkit-transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;box-shadow:var(--Paper-shadow);background-image:var(--Paper-overlay);background-image:none;background-color:#1C2536;overflow:hidden;border-radius:20px;background-color:#111927;box-shadow:0px 0px 0px 0.5px rgba(0, 0, 0, 0.03),0px 5px 22px 0px rgba(0, 0, 0, 0.04);background-color:transparent;border-radius:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:0;}.mui-9po5sc .MuiTableHead-root{background-color:#111927;position:-webkit-sticky;position:sticky;top:0;z-index:2;}.mui-9po5sc .MuiTableHead-root .MuiTableCell-root{background-color:rgba(107, 151, 227, 0.05);}.mui-9po5sc .MuiTablePagination-toolbar{min-height:44px;}.mui-9po5sc .MuiTablePagination-selectLabel{margin-top:0px;margin-bottom:0px;}.mui-9po5sc .MuiTablePagination-displayedRows{margin-top:0px;margin-bottom:0px;}.mui-hjfd6p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-height:100%;min-height:0;}.mui-1gmhwrj{display:table;width:100%;border-collapse:collapse;border-spacing:0;}.mui-1gmhwrj caption{font-size:0.875rem;font-weight:400;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.01071em;padding:16px;color:#C8CBD0;text-align:left;caption-side:bottom;}.mui-5a3qg8{display:table-header-group;border-bottom:none;border-top-left-radius:8px;background-color:#1C2536;}.mui-5a3qg8 .MuiTableCell-root{border-bottom:none;font-size:12px;font-weight:600;letter-spacing:0.5px;line-height:1;padding:16px;text-transform:uppercase;color:#C8CBD0;}.mui-5a3qg8 .MuiTableCell-root:first-of-type{padding-left:24px;}.mui-5a3qg8 .MuiTableCell-root:last-child{padding-right:24px;}.mui-5a3qg8 .MuiTableCell-paddingCheckbox{padding-bottom:4px;padding-top:4px;}.mui-2jca7{color:inherit;display:table-row;vertical-align:middle;outline:0;}.mui-2jca7.MuiTableRow-hover:hover{background-color:rgba(243, 244, 246, 0.04);}.mui-2jca7.Mui-selected{background-color:rgba(23, 178, 100, 0.08);}.mui-2jca7.Mui-selected:hover{background-color:rgba(23, 178, 100, 0.12);}.mui-2jca7.MuiTableRow-hover{cursor:pointer;}.mui-2jca7:not(:last-child){border-bottom:1px solid #29303D;}.mui-bk4zqc{font-size:0.875rem;font-weight:400;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.01071em;display:table-cell;vertical-align:inherit;border-bottom:1px solid rgba(13, 15, 19, 1);text-align:left;padding:16px;color:#EDF2F7;line-height:1.5rem;font-weight:500;padding:6px 16px;border-bottom:none;padding:13px 16px;white-space:nowrap;}.mui-bk4zqc.MuiTableCell-paddingCheckbox{width:24px;padding:0 12px 0 16px;}.mui-bk4zqc.MuiTableCell-paddingCheckbox>*{padding:0;}.mui-bk4zqc:first-of-type{padding-left:24px;}.mui-bk4zqc:last-child{padding-right:24px;}.mui-y6j1my{display:table-row-group;}.mui-u710dz{font-size:0.875rem;font-weight:400;line-height:1.57;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.01071em;display:table-cell;vertical-align:inherit;border-bottom:1px solid rgba(13, 15, 19, 1);text-align:left;padding:16px;color:#EDF2F7;padding:6px 16px;border-bottom:none;padding:13px 16px;white-space:nowrap;white-space:pre-line;}.mui-u710dz.MuiTableCell-paddingCheckbox{width:24px;padding:0 12px 0 16px;}.mui-u710dz.MuiTableCell-paddingCheckbox>*{padding:0;}.mui-u710dz:first-of-type{padding-left:24px;}.mui-u710dz:last-child{padding-right:24px;}.mui-atj203{margin:0;font-size:1.125rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.0075em;color:#EDF2F7;margin-top:8px;}.mui-15wnsdl{list-style:none;margin:0;padding:0;position:relative;line-height:0;list-style:none;padding-left:24px;}.mui-15wnsdl .MuiListItem-root{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}.mui-15wnsdl li::before{color:#C8CBD0;content:'• ';left:-16px;position:absolute;top:11px;}.mui-1ov46kg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.mui-1ov46kg>:not(style):not(style){margin:0;}.mui-1ov46kg>:not(style)~:not(style){margin-top:16px;}.mui-12m4dll{overflow:hidden;border-radius:20px;background-color:#111927;box-shadow:0px 0px 0px 0.5px rgba(0, 0, 0, 0.03),0px 5px 22px 0px rgba(0, 0, 0, 0.04);}.mui-177aong{background-color:#111927;color:#EDF2F7;-webkit-transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;box-shadow:var(--Paper-shadow);background-image:var(--Paper-overlay);background-image:none;background-color:#1C2536;overflow:hidden;border-radius:20px;background-color:#111927;box-shadow:0px 0px 0px 0.5px rgba(0, 0, 0, 0.03),0px 5px 22px 0px rgba(0, 0, 0, 0.04);}.mui-1gh05y5{padding:16px;padding:24px 24px;}.mui-1gh05y5:last-child{padding-bottom:24px;}.mui-1gh05y5:last-child{padding-bottom:24px;}.mui-wm4fnc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}@media (min-width:0px){.mui-wm4fnc>:not(style):not(style){margin:0;}.mui-wm4fnc>:not(style)~:not(style){margin-left:16px;}}@media (min-width:576px){.mui-wm4fnc>:not(style):not(style){margin:0;}.mui-wm4fnc>:not(style)~:not(style){margin-left:40px;}}.mui-15ihrvk{-webkit-text-decoration:none;text-decoration:none;font-weight:600;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;height:100px;text-align:center;width:100px;}.mui-15ihrvk:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-iwwhz8{margin:0;font:inherit;line-height:inherit;letter-spacing:inherit;color:#17B264;-webkit-text-decoration:none;text-decoration:none;font-weight:600;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;height:100px;text-align:center;width:100px;}.mui-iwwhz8:hover{-webkit-text-decoration:underline;text-decoration:underline;}.mui-1hadodn{margin:0;font-size:1.5rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0em;}.mui-jp1awa{margin:0;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;max-width:700px;white-space:pre-line;}.mui-1klpoq2{--Grid-columns:12;--Grid-columnSpacing:16px;--Grid-rowSpacing:16px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;min-width:0;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--Grid-rowSpacing) var(--Grid-columnSpacing);}.mui-1klpoq2 >*{--Grid-parent-columns:12;}.mui-1klpoq2 >*{--Grid-parent-columnSpacing:16px;}.mui-1klpoq2 >*{--Grid-parent-rowSpacing:16px;}.mui-1oxr19c{text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);color:inherit;padding:5px;font-size:1.125rem;border-radius:8px;border-radius:6px;padding:4px;}.mui-1oxr19c:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-1oxr19c:hover{background-color:transparent;}}.mui-1oxr19c.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-1oxr19c.MuiIconButton-loading{color:transparent;}.mui-cjpees{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);color:inherit;padding:5px;font-size:1.125rem;border-radius:8px;border-radius:6px;padding:4px;}.mui-cjpees::-moz-focus-inner{border-style:none;}.mui-cjpees.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-cjpees{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-cjpees:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-cjpees:hover{background-color:transparent;}}.mui-cjpees.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-cjpees.MuiIconButton-loading{color:transparent;}.mui-bm9u9p{font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#6C737F;border-radius:50%;bottom:40px;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:40px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-left:calc(100% - 40px);margin-top:8px;min-width:0;opacity:0;padding:0px;pointer-events:none;position:-webkit-sticky;position:sticky;right:0;-webkit-transition:opacity 350ms ease-in-out;transition:opacity 350ms ease-in-out;width:40px;}.mui-bm9u9p:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-bm9u9p.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-bm9u9p:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-bm9u9p.MuiButton-loading{color:transparent;}.mui-bm9u9p.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-bm9u9p:hover{background-color:rgba(108, 115, 127, 0.5);}.mui-gaaq6e{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-weight:600;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:6px 16px;border:0;border-radius:8px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:6px 8px;color:var(--variant-textColor);background-color:var(--variant-textBg);color:inherit;border-color:currentColor;--variant-containedBg:#424242;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:8px;text-transform:none;padding:6px 16px;font-weight:600;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#6C737F;border-radius:50%;bottom:40px;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:40px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-left:calc(100% - 40px);margin-top:8px;min-width:0;opacity:0;padding:0px;pointer-events:none;position:-webkit-sticky;position:sticky;right:0;-webkit-transition:opacity 350ms ease-in-out;transition:opacity 350ms ease-in-out;width:40px;}.mui-gaaq6e::-moz-focus-inner{border-style:none;}.mui-gaaq6e.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-gaaq6e{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-gaaq6e:hover{-webkit-text-decoration:none;text-decoration:none;}.mui-gaaq6e.Mui-disabled{color:rgba(243, 244, 246, 0.38);}@media (hover: hover){.mui-gaaq6e:hover{--variant-containedBg:#616161;--variant-textBg:rgba(237, 242, 247, 0.04);--variant-outlinedBg:rgba(237, 242, 247, 0.04);}}.mui-gaaq6e.MuiButton-loading{color:transparent;}.mui-gaaq6e.MuiButton-text.MuiButton-colorSecondary{color:#C8CBD0;}.mui-gaaq6e:hover{background-color:rgba(108, 115, 127, 0.5);}.mui-1gk40q3{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24px;margin-top:32px;padding-left:0px;width:100%;}.mui-1ekl43h{display:grid;gap:24px;height:100%;}@media (min-width:0px){.mui-1ekl43h{grid-template-columns:1fr;}}@media (min-width:768px){.mui-1ekl43h{grid-template-columns:1fr 1fr;}}@media (min-width:992px){.mui-1ekl43h{grid-template-columns:1fr 1fr 1fr;}}.mui-105c0k{display:block;text-align:inherit;border-radius:inherit;width:100%;height:100%;}.mui-105c0k:hover .MuiCardActionArea-focusHighlight{opacity:0.04;}@media (hover: none){.mui-105c0k:hover .MuiCardActionArea-focusHighlight{opacity:0;}}.mui-105c0k.Mui-focusVisible .MuiCardActionArea-focusHighlight{opacity:0.12;}.mui-vbhgvt{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;display:block;text-align:inherit;border-radius:inherit;width:100%;height:100%;}.mui-vbhgvt::-moz-focus-inner{border-style:none;}.mui-vbhgvt.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-vbhgvt{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-vbhgvt:hover .MuiCardActionArea-focusHighlight{opacity:0.04;}@media (hover: none){.mui-vbhgvt:hover .MuiCardActionArea-focusHighlight{opacity:0;}}.mui-vbhgvt.Mui-focusVisible .MuiCardActionArea-focusHighlight{opacity:0.12;}.mui-mh02tt{padding:16px;padding:24px 24px;height:100%;padding-top:32px;padding-bottom:32px;}.mui-mh02tt:last-child{padding-bottom:24px;}.mui-mh02tt:last-child{padding-bottom:24px;}.mui-7d0zx8{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;}.mui-7d0zx8>:not(style):not(style){margin:0;}.mui-7d0zx8>:not(style)~:not(style){margin-top:16px;}.mui-c441ch{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;}.mui-c441ch>:not(style):not(style){margin:0;}.mui-c441ch>:not(style)~:not(style){margin-left:12px;}.mui-3fljw{display:block;background-color:rgba(237, 242, 247, 0.13);height:1.2em;border-radius:8px;-webkit-animation:animation-c7515d 2s ease-in-out 0.5s infinite;animation:animation-c7515d 2s ease-in-out 0.5s infinite;left:0;position:absolute;top:0;z-index:1;}.mui-5src73{max-width:100%;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:0.8125rem;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;height:32px;line-height:1.5;color:#EDF2F7;background-color:rgba(243, 244, 246, 0.12);border-radius:16px;white-space:nowrap;-webkit-transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;cursor:unset;outline:0;-webkit-text-decoration:none;text-decoration:none;border:0;padding:0;vertical-align:middle;box-sizing:border-box;border-radius:12px;font-weight:500;padding-bottom:3px;padding-top:3px;color:#EDF2F7;opacity:0;padding-top:7px;padding-bottom:7px;}.mui-5src73.Mui-disabled{opacity:0.38;pointer-events:none;}.mui-5src73 .MuiChip-avatar{margin-left:5px;margin-right:-6px;width:24px;height:24px;color:#e0e0e0;font-size:0.75rem;}.mui-5src73 .MuiChip-icon{margin-left:5px;margin-right:-6px;}.mui-5src73 .MuiChip-deleteIcon{-webkit-tap-highlight-color:transparent;color:rgba(237, 242, 247, 0.26);font-size:22px;cursor:pointer;margin:0 5px 0 -6px;}.mui-5src73 .MuiChip-deleteIcon:hover{color:rgba(237, 242, 247, 0.4);}.mui-5src73 .MuiChip-icon{color:#e0e0e0;}.mui-5src73 .MuiChip-icon{color:#6C737F;}.mui-5src73 span{font-feature-settings:'clig' off;letter-spacing:0.16px;line-height:18px;padding-left:10px;padding-right:10px;}.mui-1f27pzi{margin:0;font-size:1.125rem;font-variant-ligatures:none;font-weight:700;line-height:1.2;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.0075em;-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;overflow:hidden;}.mui-1yuxupd{margin:0;font-size:1rem;font-weight:400;line-height:1.5;font-family:"Roboto","Helvetica","Arial",sans-serif;letter-spacing:0.00938em;-webkit-box-orient:vertical;-webkit-line-clamp:5;color:#C8CBD0;display:-webkit-box;overflow:hidden;}.mui-1k0wk4f{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}.mui-1k0wk4f>:not(style):not(style){margin:0;}.mui-1k0wk4f>:not(style)~:not(style){margin-top:8px;}.mui-1qftbaz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.mui-1qftbaz>:not(style):not(style){margin:0;}.mui-1qftbaz>:not(style)~:not(style){margin-left:12px;}.mui-3xrgwf{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:40px;height:40px;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:1.25rem;line-height:1;border-radius:50%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#0E1320;background-color:#757575;font-size:14px;font-weight:600;letter-spacing:0;background-color:#D2D6DB;color:#000;height:32px;width:32px;}@media (forced-colors: active){.mui-3xrgwf{box-sizing:border-box;border:1px solid ButtonBorder;}}.mui-9h6quu{overflow:hidden;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;opacity:0;background-color:currentcolor;-webkit-transition:opacity 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:opacity 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;}.mui-1fbef5u{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;gap:16px;}.mui-74682y{position:relative;overflow:hidden;display:block;height:4px;z-index:0;background-color:rgb(11, 89, 50);border-radius:3px;overflow:hidden;width:100%;}@media print{.mui-74682y{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-tnhbhy{width:100%;position:absolute;left:0;bottom:0;top:0;-webkit-transition:-webkit-transform 0.2s linear 0ms;transition:transform 0.2s linear 0ms;transform-origin:left;background-color:#17B264;-webkit-transition:-webkit-transform .4s linear 0ms;transition:transform .4s linear 0ms;}.mui-y9r8r7{text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);padding:5px;font-size:1.125rem;border-radius:8px;border-radius:6px;padding:4px;color:#0E1320;}.mui-y9r8r7:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-y9r8r7:hover{background-color:transparent;}}.mui-y9r8r7.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-y9r8r7.MuiIconButton-loading{color:transparent;}.mui-y9r8r7.Mui-disabled{color:rgba(108, 115, 127, 0.5);}.mui-1vtl3vo{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;color:#6C737F;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--IconButton-hoverBg:rgba(108, 115, 127, 0.04);padding:5px;font-size:1.125rem;border-radius:8px;border-radius:6px;padding:4px;color:#0E1320;}.mui-1vtl3vo::-moz-focus-inner{border-style:none;}.mui-1vtl3vo.Mui-disabled{pointer-events:none;cursor:default;}@media print{.mui-1vtl3vo{-webkit-print-color-adjust:exact;color-adjust:exact;}}.mui-1vtl3vo:hover{background-color:var(--IconButton-hoverBg);}@media (hover: none){.mui-1vtl3vo:hover{background-color:transparent;}}.mui-1vtl3vo.Mui-disabled{background-color:transparent;color:rgba(243, 244, 246, 0.38);}.mui-1vtl3vo.MuiIconButton-loading{color:transparent;}.mui-1vtl3vo.Mui-disabled{color:rgba(108, 115, 127, 0.5);}.mui-m60s8j{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:40px;height:40px;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:1.25rem;line-height:1;border-radius:50%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#0E1320;background-color:#757575;font-size:14px;font-weight:600;letter-spacing:0;background-color:#D2D6DB;color:#000;color:inherit;}@media (forced-colors: active){.mui-m60s8j{box-sizing:border-box;border:1px solid ButtonBorder;}}.mui-m60s8j:hover{opacity:0.8;}.mui-1a6n7l1{border:0px solid;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0px;position:absolute;white-space:nowrap;width:1px;}</style></head><body><div hidden=""><!--$--><!--/$--></div><style>
|
||
:root {
|
||
--bprogress-color: #17B264;
|
||
--bprogress-height: 4px;
|
||
--bprogress-spinner-size: 18px;
|
||
--bprogress-spinner-animation-duration: 400ms;
|
||
--bprogress-spinner-border-size: 2px;
|
||
--bprogress-box-shadow: 0 0 10px #17B264, 0 0 5px #17B264;
|
||
--bprogress-z-index: 99999;
|
||
--bprogress-spinner-top: 15px;
|
||
--bprogress-spinner-bottom: auto;
|
||
--bprogress-spinner-right: 15px;
|
||
--bprogress-spinner-left: auto;
|
||
}
|
||
|
||
.bprogress {
|
||
width: 0;
|
||
height: 0;
|
||
pointer-events: none;
|
||
z-index: var(--bprogress-z-index);
|
||
}
|
||
|
||
.bprogress .bar {
|
||
background: var(--bprogress-color);
|
||
position: fixed;
|
||
z-index: var(--bprogress-z-index);
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: var(--bprogress-height);
|
||
}
|
||
|
||
/* Fancy blur effect */
|
||
.bprogress .peg {
|
||
display: block;
|
||
position: absolute;
|
||
right: 0;
|
||
width: 100px;
|
||
height: 100%;
|
||
box-shadow: var(--bprogress-box-shadow);
|
||
opacity: 1.0;
|
||
transform: rotate(3deg) translate(0px, -4px);
|
||
}
|
||
|
||
/* Remove these to get rid of the spinner */
|
||
.bprogress .spinner {
|
||
display: block;
|
||
position: fixed;
|
||
z-index: var(--bprogress-z-index);
|
||
top: var(--bprogress-spinner-top);
|
||
bottom: var(--bprogress-spinner-bottom);
|
||
right: var(--bprogress-spinner-right);
|
||
left: var(--bprogress-spinner-left);
|
||
}
|
||
|
||
.bprogress .spinner-icon {
|
||
width: var(--bprogress-spinner-size);
|
||
height: var(--bprogress-spinner-size);
|
||
box-sizing: border-box;
|
||
border: solid var(--bprogress-spinner-border-size) transparent;
|
||
border-top-color: var(--bprogress-color);
|
||
border-left-color: var(--bprogress-color);
|
||
border-radius: 50%;
|
||
-webkit-animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite;
|
||
animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite;
|
||
}
|
||
|
||
.bprogress-custom-parent {
|
||
overflow: hidden;
|
||
position: relative;
|
||
}
|
||
|
||
.bprogress-custom-parent .bprogress .spinner,
|
||
.bprogress-custom-parent .bprogress .bar {
|
||
position: absolute;
|
||
}
|
||
|
||
.bprogress .indeterminate {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: var(--bprogress-height);
|
||
overflow: hidden;
|
||
}
|
||
|
||
.bprogress .indeterminate .inc,
|
||
.bprogress .indeterminate .dec {
|
||
position: absolute;
|
||
top: 0;
|
||
height: 100%;
|
||
background-color: var(--bprogress-color);
|
||
}
|
||
|
||
.bprogress .indeterminate .inc {
|
||
animation: bprogress-indeterminate-increase 2s infinite;
|
||
}
|
||
|
||
.bprogress .indeterminate .dec {
|
||
animation: bprogress-indeterminate-decrease 2s 0.5s infinite;
|
||
}
|
||
|
||
@-webkit-keyframes bprogress-spinner {
|
||
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
|
||
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
|
||
}
|
||
|
||
@keyframes bprogress-spinner {
|
||
0% { transform: rotate(0deg); }
|
||
100% { transform: rotate(360deg); }
|
||
}
|
||
|
||
@keyframes bprogress-indeterminate-increase {
|
||
from { left: -5%; width: 5%; }
|
||
to { left: 130%; width: 100%; }
|
||
}
|
||
|
||
@keyframes bprogress-indeterminate-decrease {
|
||
from { left: -80%; width: 80%; }
|
||
to { left: 110%; width: 10%; }
|
||
}
|
||
</style><!--$--><!--/$--><div class="MuiStack-root mui-ur1szg"><a class="MuiPaper-root MuiPaper-elevation MuiPaper-elevation4 MuiAppBar-root MuiAppBar-colorPrimary MuiAppBar-positionFixed mui-fixed mui-178k8gi" href="https://www.env0.com/blog/env-zero-and-cloudquery-announce-merger-to-create-the-industrys-first-unified-cloud-intelligence-platform" style="--Paper-shadow:0px 1px 5px rgba(0, 0, 0, 0.24);--Paper-overlay:linear-gradient(rgba(255, 255, 255, 0.092), rgba(255, 255, 255, 0.092))"><div class="MuiToolbar-root MuiToolbar-gutters MuiToolbar-dense mui-1us3bst"><div class="MuiStack-root mui-151h3to"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">CloudQuery is joining env zero!</span> <!-- -->We're moving from data to decisions.<!-- --> <p class="MuiTypography-root MuiTypography-body1Bold mui-hkongz">Read the Announcement ❯</p></div></div><div class="MuiBox-root mui-4xeni4"><p class="MuiTypography-root MuiTypography-body1Bold mui-15ebxym">Read the Announcement ❯</p></div></div></a><div class="MuiBox-root mui-170b55v"></div><header class="MuiBox-root mui-13ckb2b"><div class="MuiContainer-root MuiContainer-maxWidthXl mui-o6uoyh"><div class="MuiStack-root mui-15od74j"><div class="MuiStack-root mui-6o898j"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-13dkzwh" title="CloudQuery Home" href="/"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-wnwoy4" focusable="false" aria-hidden="true" viewBox="190 168 875 225" fill="none" xmlns="http://www.w3.org/2000/svg"><mask height="177" id="mask0_919_6147" maskUnits="userSpaceOnUse" style="mask-type:luminance" width="864" x="197" y="173"><path d="M1060.4 173.139H197.601V349.759H1060.4V173.139Z" fill="white"></path></mask><g mask="url(#mask0_919_6147)"><path d="M262.54 273.079C265.455 273.079 268.304 272.215 270.728 270.596C273.152 268.976 275.041 266.675 276.156 263.982C277.271 261.289 277.563 258.326 276.995 255.467C276.426 252.608 275.022 249.982 272.961 247.921C270.9 245.86 268.274 244.456 265.415 243.888C262.557 243.319 259.593 243.611 256.9 244.726C254.208 245.842 251.906 247.731 250.286 250.154C248.667 252.578 247.803 255.427 247.803 258.342C247.797 260.279 248.174 262.198 248.913 263.989C249.651 265.779 250.736 267.406 252.106 268.776C253.476 270.146 255.103 271.231 256.893 271.97C258.684 272.708 260.603 273.085 262.54 273.079Z" fill="white"></path><path d="M309.516 273.079C312.432 273.083 315.283 272.222 317.71 270.606C320.136 268.989 322.029 266.689 323.147 263.996C324.266 261.304 324.561 258.34 323.995 255.48C323.429 252.619 322.027 249.991 319.967 247.928C317.907 245.865 315.281 244.459 312.422 243.888C309.562 243.318 306.598 243.608 303.904 244.723C301.209 245.838 298.906 247.727 297.286 250.151C295.666 252.575 294.801 255.425 294.801 258.341C294.795 260.276 295.171 262.193 295.908 263.983C296.646 265.772 297.729 267.398 299.096 268.767C300.463 270.137 302.088 271.222 303.876 271.962C305.664 272.702 307.581 273.081 309.516 273.079Z" fill="white"></path><path d="M361.788 316.832L357.643 312.688L336.228 291.272C331.064 300.055 323.693 307.334 314.846 312.386C305.999 317.438 295.984 320.088 285.796 320.072C275.494 320.084 265.37 317.387 256.439 312.254C247.507 307.12 240.081 299.73 234.906 290.822L213.49 312.224C219.192 320.307 226.194 327.389 234.213 333.181C249.248 343.974 267.293 349.773 285.801 349.759C304.135 349.816 322.022 344.095 336.921 333.41L341.07 337.555C342.43 338.915 344.046 339.995 345.823 340.731C347.601 341.468 349.507 341.847 351.431 341.847C353.355 341.847 355.261 341.468 357.038 340.731C358.816 339.995 360.431 338.915 361.792 337.555C363.153 336.194 364.232 334.579 364.969 332.801C365.705 331.023 366.084 329.118 366.084 327.193C366.084 325.269 365.705 323.364 364.969 321.586C364.232 319.808 363.153 318.193 361.792 316.832H361.788Z" fill="url(#paint0_radial_919_6147)"></path><path d="M372.84 246.826C370.612 233.519 365.332 220.909 357.414 209.985C351.622 201.965 344.541 194.961 336.458 189.258C321.523 178.73 303.688 173.098 285.416 173.139C267.143 173.18 249.334 178.892 234.447 189.487C226.435 195.198 219.43 202.202 213.72 210.214C205.949 221.001 200.822 233.464 198.753 246.597C198.016 251.477 197.631 256.404 197.601 261.339C197.631 266.273 198.016 271.198 198.753 276.077H228.903C226.449 266.405 226.449 256.273 228.903 246.601C230.26 241.343 232.359 236.305 235.136 231.639C240.298 222.856 247.669 215.576 256.517 210.524C265.364 205.472 275.379 202.822 285.567 202.839C295.914 202.807 306.085 205.51 315.051 210.673C323.646 215.739 330.847 222.862 336.007 231.4C338.77 236.233 341.074 241.3 342.456 246.826C344.91 256.498 344.91 266.63 342.456 276.302H372.849C373.586 271.423 373.971 266.498 374.001 261.564C373.968 256.63 373.58 251.705 372.84 246.826Z" fill="url(#paint1_radial_919_6147)"></path><path d="M447.801 303.765C442.229 303.824 436.702 302.752 431.556 300.615C426.66 298.559 422.223 295.547 418.506 291.755C414.76 287.919 411.806 283.384 409.812 278.408C407.691 273.086 406.632 267.401 406.693 261.672C406.637 255.931 407.675 250.231 409.753 244.878C411.682 239.913 414.602 235.393 418.336 231.594C422.07 227.795 426.539 224.797 431.47 222.783C436.651 220.662 442.203 219.594 447.801 219.642C453.708 219.642 459.013 220.626 463.717 222.594C468.189 224.408 472.261 227.084 475.701 230.469C478.843 233.531 481.238 237.274 482.703 241.409L467.718 248.609C466.336 244.69 463.797 241.283 460.437 238.839C456.972 236.253 452.76 234.959 447.801 234.956C443.001 234.956 438.771 236.087 435.111 238.349C431.471 240.612 428.54 243.852 426.651 247.7C424.644 251.678 423.642 256.328 423.645 261.65C423.648 266.972 424.65 271.638 426.651 275.649C428.532 279.523 431.471 282.786 435.129 285.059C438.777 287.318 443.007 288.447 447.819 288.447C452.778 288.447 456.99 287.153 460.455 284.564C463.817 282.115 466.355 278.701 467.731 274.776L482.716 281.976C481.252 286.12 478.852 289.87 475.701 292.934C472.264 296.32 468.193 298.996 463.722 300.809C459.015 302.78 453.708 303.765 447.801 303.765Z" fill="white"></path><path d="M492.324 302.451V219.651H508.731V302.451H492.324Z" fill="white"></path><path d="M550.401 303.765C544.764 303.833 539.205 302.438 534.268 299.715C529.497 297.095 525.497 293.267 522.672 288.614C519.789 283.91 518.349 278.568 518.352 272.589C518.352 266.538 519.792 261.177 522.672 256.506C525.511 251.877 529.508 248.069 534.268 245.458C539.221 242.8 544.755 241.408 550.376 241.408C555.997 241.408 561.531 242.8 566.484 245.458C571.22 248.084 575.196 251.89 578.026 256.506C580.909 261.174 582.351 266.535 582.351 272.589C582.351 278.571 580.911 283.913 578.031 288.614C575.213 293.254 571.235 297.08 566.488 299.715C561.57 302.442 556.025 303.838 550.401 303.765ZM550.401 288.996C553.107 289.088 555.782 288.395 558.103 287.001C560.424 285.607 562.292 283.571 563.482 281.139C564.802 278.486 565.46 275.552 565.399 272.589C565.461 269.649 564.803 266.738 563.482 264.111C562.279 261.744 560.467 259.742 558.231 258.31C555.884 256.852 553.163 256.111 550.401 256.177C547.626 256.119 544.892 256.859 542.526 258.31C540.266 259.729 538.433 261.734 537.22 264.111C535.904 266.739 535.251 269.65 535.317 272.589C535.255 275.552 535.911 278.485 537.229 281.139C538.421 283.529 540.26 285.537 542.535 286.935C544.912 288.345 547.638 289.059 550.401 288.996Z" fill="white"></path><path d="M613.401 303.764C608.601 303.764 604.5 302.725 601.098 300.646C597.722 298.575 595.042 295.543 593.403 291.938C591.651 288.221 590.775 283.883 590.775 278.924V242.722H607.186V277.619C607.136 279.688 607.6 281.737 608.536 283.582C609.413 285.263 610.763 286.651 612.42 287.573C614.18 288.507 616.142 288.995 618.135 288.995C620.127 288.995 622.09 288.507 623.85 287.573C625.482 286.637 626.811 285.251 627.679 283.582C628.614 281.736 629.078 279.688 629.029 277.619V242.722H645.436V302.45H630.136V290.638L631.009 293.261C629.623 296.834 627.381 299.479 624.282 301.195C621.183 302.911 617.556 303.767 613.401 303.764Z" fill="white"></path><path d="M685.622 303.765C679.784 303.765 674.568 302.379 669.975 299.607C665.421 296.88 661.668 293 659.094 288.357C656.411 283.545 655.034 278.116 655.098 272.607C655.021 267.071 656.419 261.614 659.148 256.798C661.768 252.177 665.542 248.314 670.101 245.589C674.758 242.798 680.099 241.358 685.527 241.431C689.546 241.355 693.529 242.197 697.173 243.892C700.433 245.422 703.21 247.818 705.201 250.818L702.686 254.098V219.642H719.097V302.441H703.797V291.512L705.332 294.904C703.247 297.856 700.361 300.152 697.016 301.52C693.411 303.037 689.533 303.801 685.622 303.765ZM687.588 288.995C690.358 289.054 693.088 288.335 695.468 286.917C697.739 285.521 699.576 283.52 700.773 281.139C702.033 278.47 702.686 275.555 702.686 272.604C702.686 269.653 702.033 266.739 700.773 264.07C699.576 261.684 697.739 259.677 695.468 258.274C693.088 256.856 690.358 256.136 687.588 256.195C684.764 256.151 681.982 256.889 679.551 258.328C677.213 259.719 675.301 261.725 674.025 264.129C672.67 266.745 671.992 269.66 672.054 272.607C671.994 275.576 672.671 278.513 674.025 281.156C675.285 283.56 677.202 285.558 679.551 286.917C681.994 288.323 684.771 289.04 687.588 288.995Z" fill="white"></path><path d="M773.151 303.764C767.313 303.825 761.519 302.755 756.087 300.614C748.299 297.532 741.63 292.16 736.962 285.206C732.294 278.253 729.846 270.046 729.942 261.671C729.888 255.968 730.985 250.313 733.169 245.044C735.261 240.026 738.35 235.485 742.25 231.697C746.201 227.872 750.866 224.861 755.979 222.836C767.038 218.607 779.269 218.607 790.328 222.836C795.441 224.861 800.106 227.872 804.057 231.697C807.955 235.485 811.043 240.026 813.134 245.044C815.319 250.312 816.418 255.968 816.365 261.671C816.457 270.045 814.007 278.25 809.339 285.202C804.671 292.155 798.005 297.529 790.22 300.614C784.787 302.755 778.991 303.825 773.151 303.764ZM773.151 288.464C776.697 288.501 780.216 287.832 783.501 286.497C786.622 285.217 789.464 283.34 791.867 280.971C794.299 278.566 796.199 275.678 797.447 272.494C798.792 269.045 799.461 265.369 799.418 261.667C799.465 257.981 798.796 254.32 797.447 250.889C796.18 247.715 794.281 244.831 791.867 242.411C789.483 240.019 786.637 238.139 783.501 236.885C776.838 234.33 769.465 234.33 762.801 236.885C759.664 238.139 756.816 240.019 754.431 242.411C752.017 244.824 750.119 247.703 748.851 250.871C747.502 254.302 746.833 257.963 746.88 261.649C746.837 265.351 747.506 269.027 748.851 272.476C750.095 275.661 751.995 278.549 754.427 280.953C756.831 283.322 759.674 285.199 762.797 286.479C766.084 287.815 769.603 288.484 773.151 288.446V288.464ZM790.436 312.314L766.136 269.87H783.641L808.256 312.314H790.436Z" fill="white"></path><path d="M848.616 303.764C843.816 303.764 839.714 302.725 836.309 300.646C832.926 298.578 830.24 295.545 828.596 291.938C826.844 288.221 825.969 283.883 825.972 278.924V242.722H842.379V277.619C842.328 279.688 842.792 281.737 843.729 283.582C844.606 285.263 845.956 286.651 847.613 287.573C849.373 288.507 851.335 288.995 853.328 288.995C855.32 288.995 857.282 288.507 859.043 287.573C860.675 286.637 862.004 285.251 862.872 283.582C863.809 281.737 864.273 279.688 864.222 277.619V242.722H880.629V302.45H865.329V290.638L866.207 293.261C864.818 296.834 862.568 299.479 859.457 301.195C856.346 302.911 852.732 303.767 848.616 303.764Z" fill="white"></path><path d="M921.471 303.765C915.126 303.765 909.619 302.361 904.951 299.553C900.375 296.841 896.63 292.925 894.124 288.231C891.544 283.387 890.227 277.97 890.295 272.481C890.295 266.505 891.625 261.182 894.286 256.511C896.845 251.946 900.561 248.136 905.059 245.463C909.692 242.736 914.985 241.335 920.359 241.413C925.099 241.413 929.292 242.163 932.937 243.663C936.442 245.063 939.599 247.213 942.184 249.963C944.702 252.668 946.655 255.849 947.926 259.319C949.267 263.018 949.933 266.927 949.893 270.861C949.893 272.025 949.839 273.173 949.731 274.304C949.653 275.293 949.45 276.268 949.128 277.206H904.389V265.146H939.831L932.064 270.839C932.793 267.701 932.757 264.911 931.956 262.469C931.225 260.126 929.745 258.089 927.744 256.668C925.737 255.246 923.275 254.535 920.359 254.535C917.761 254.466 915.204 255.192 913.029 256.614C910.986 258 909.454 260.043 908.434 262.743C907.414 265.443 907.02 268.725 907.251 272.589C906.951 275.94 907.351 278.894 908.452 281.45C909.47 283.911 911.228 285.995 913.483 287.412C915.748 288.834 918.484 289.545 921.691 289.545C924.298 289.619 926.88 289.016 929.184 287.795C931.22 286.67 932.906 285.003 934.053 282.98L947.179 289.239C945.979 292.196 944.083 294.82 941.653 296.889C939.032 299.136 936.007 300.864 932.739 301.979C929.111 303.207 925.301 303.811 921.471 303.765Z" fill="white"></path><path d="M959.541 302.45V242.722H974.841V257.054L973.747 254.975C975.058 249.938 977.227 246.529 980.254 244.747C983.281 242.965 986.881 242.065 991.054 242.047H994.551V256.267H989.407C985.399 256.267 982.155 257.489 979.674 259.934C977.193 262.379 975.952 265.829 975.952 270.284V302.446L959.541 302.45Z" fill="white"></path><path d="M1011.06 326.516C1009.36 326.516 1007.65 326.366 1005.98 326.066C1004.47 325.819 1003.01 325.34 1001.65 324.644V311.189C1002.84 311.513 1004.04 311.768 1005.25 311.954C1006.52 312.164 1007.8 312.274 1009.08 312.283C1012.29 312.283 1014.58 311.533 1015.97 310.033C1017.36 308.525 1018.51 306.807 1019.36 304.943L1023.41 295.646L1023.19 309.322L996.941 242.722H1014.55L1031.95 290.089H1025.39L1042.78 242.722H1060.39L1034.79 308.03C1033.39 311.755 1031.4 315.228 1028.89 318.313C1026.73 320.939 1024.03 323.051 1020.95 324.496C1017.84 325.874 1014.47 326.564 1011.06 326.516Z" fill="white"></path></g><path d="M892.975 354.888C899.976 354.888 905.325 359.523 905.325 367.237V370.027H884.787C885.116 374.902 888.1 378.64 893.07 378.64C896.667 378.64 899.457 376.699 900.5 373.625H905.09C904.003 378.734 899.272 382.332 893.07 382.332C885.406 382.332 880.296 376.888 880.295 368.61C880.295 360.237 885.5 354.888 892.975 354.888ZM1000.1 354.888C1007.1 354.888 1012.45 359.523 1012.45 367.237V370.027H991.915C992.244 374.902 995.228 378.64 1000.19 378.64C1003.79 378.64 1006.58 376.699 1007.62 373.625H1012.21C1011.13 378.734 1006.4 382.332 1000.19 382.332C992.529 382.332 987.419 376.888 987.419 368.61H987.423C987.423 360.237 992.628 354.888 1000.1 354.888ZM1042.69 354.888C1049.89 354.888 1055.61 359.858 1055.61 368.61C1055.61 377.362 1049.89 382.332 1042.69 382.332C1035.5 382.332 1029.77 377.362 1029.77 368.61C1029.77 359.858 1035.5 354.888 1042.69 354.888ZM1020.46 360.138H1020.55C1021.78 357.393 1023.2 355.597 1027.36 355.597H1030.4V359.384H1026.79C1022.44 359.384 1020.55 361.989 1020.55 366.953V381.624H1016.28V355.602L1016.29 355.597H1020.46V360.138ZM985.437 358.914L970.298 377.841V377.886H986.48V381.623H964.48V378.311H964.475L979.665 359.384V359.339H965.423V355.602H985.437V358.914ZM944.416 376.369H944.46L951.985 355.597H956.67L946.641 381.619H942.24L932.21 355.597H936.891L944.416 376.369ZM922.031 354.888C927.52 354.888 930.833 358.815 930.834 366.005V381.618H926.577V366.43C926.577 360.801 924.117 358.67 920.709 358.67C917.016 358.67 913.423 361.225 913.423 367.518V381.618H909.162V355.597H913.324V360.472H913.419C914.98 357.019 918.009 354.888 922.031 354.888ZM1042.69 358.58C1037.96 358.58 1034.22 361.989 1034.22 368.61C1034.22 375.232 1037.96 378.64 1042.69 378.64C1047.42 378.64 1051.16 375.232 1051.16 368.61C1051.16 361.989 1047.42 358.58 1042.69 358.58ZM893.12 358.575C888.294 358.575 885.455 361.984 884.886 366.385H900.878C900.878 361.749 897.945 358.575 893.12 358.575ZM1000.25 358.575C995.422 358.575 992.583 361.984 992.014 366.385H1008.01C1008.01 361.749 1005.07 358.575 1000.25 358.575Z" fill="white"></path><path d="M839.997 381.759H831.769L835.7 374.947H843.929L839.997 381.759ZM859.897 381.759H843.021L846.953 374.947H863.828L859.897 381.759ZM858.175 365.207L854.243 372.019H837.398L841.329 365.207H858.175ZM839.997 362.273H831.769L835.7 355.462H843.929L839.997 362.273ZM859.897 362.273H843.021L846.953 355.462H863.828L859.897 362.273ZM868.369 355.762H867.581V357.857H867.247V355.762H866.458V355.462H868.369V355.762ZM869.781 357.558H869.812L870.425 355.462H871.03V357.857H870.69V355.762H870.66L870.051 357.857H869.537L868.929 355.762H868.894V357.857H868.565V355.462H869.168L869.781 357.558Z" fill="white"></path><path d="M696.65 381.759V354.676H707.638C713.364 354.676 716.653 358.042 716.653 362.917C716.653 367.831 713.325 371.197 707.599 371.197H700.519V381.759H696.65ZM706.903 367.831C710.694 367.831 712.59 365.741 712.59 362.917C712.59 360.131 710.772 358.236 706.903 358.236H700.519V367.831H706.903ZM730.801 368.643C730.801 366.438 729.602 365.084 726.778 365.084C723.412 365.084 722.328 367.057 721.825 368.527L718.343 367.405C718.962 364.774 721.709 362.027 726.778 362.027C731.962 362.027 734.438 364.619 734.438 368.759V377.542C734.438 378.431 734.67 378.664 735.56 378.664H737.533V381.759H734.748C731.962 381.759 731.42 380.482 731.188 378.857C729.834 380.946 727.977 382.3 724.92 382.3C721.168 382.3 718.73 380.211 718.73 376.807C718.73 371.506 724.611 369.726 730.801 369.223V368.643ZM722.483 376.497C722.483 378.238 723.605 379.321 725.888 379.321C728.325 379.321 730.801 377.658 730.801 373.827V371.854C726.313 372.319 722.483 373.441 722.483 376.497ZM740.128 381.759V362.569H743.687V366.631C744.345 365.161 746.241 362.298 750.071 362.298C750.884 362.298 751.425 362.375 751.851 362.491V366.206C751.232 366.128 750.574 366.051 749.8 366.051C745.544 366.051 743.765 368.604 743.765 373.131V381.759H740.128ZM761.994 381.759C758.822 381.759 757.158 380.211 757.158 377.039V365.587H752.786V362.569H757.158V356.572H760.795V362.569H765.979V365.587H760.795V376.729C760.795 378.045 761.375 378.625 762.691 378.625H766.715V381.759H761.994ZM785.744 382.3C780.559 382.3 776.613 377.967 776.613 372.202C776.613 366.36 780.443 362.027 785.744 362.027C791.044 362.027 794.836 366.36 794.836 372.202C794.836 378.045 790.889 382.3 785.744 382.3ZM785.744 379.167C788.877 379.167 791.044 376.923 791.044 372.241C791.044 367.521 788.877 365.161 785.744 365.161C782.571 365.161 780.404 367.521 780.404 372.241C780.404 376.923 782.571 379.167 785.744 379.167ZM800.361 359.744C800.361 356.262 802.024 354.676 805.197 354.676H809.646V357.81H805.893C804.539 357.81 803.997 358.39 803.997 359.706V362.569H808.95V365.587H803.997V381.759H800.361V365.587H796.182V362.569H800.361V359.744Z" fill="white"></path><defs><radialGradient cx="0" cy="0" gradientTransform="translate(285.783 262.166) scale(96.7995 96.7995)" gradientUnits="userSpaceOnUse" id="paint0_radial_919_6147" r="1"><stop offset="0.55" stop-color="#178064"></stop><stop offset="0.57" stop-color="#178764"></stop><stop offset="0.64" stop-color="#179A64"></stop><stop offset="0.71" stop-color="#17A864"></stop><stop offset="0.81" stop-color="#17B064"></stop><stop offset="1" stop-color="#17B264"></stop></radialGradient><radialGradient cx="0" cy="0" gradientTransform="translate(285.797 262.167) scale(96.786 96.786)" gradientUnits="userSpaceOnUse" id="paint1_radial_919_6147" r="1"><stop offset="0.55" stop-color="#178064"></stop><stop offset="0.57" stop-color="#178764"></stop><stop offset="0.64" stop-color="#179A64"></stop><stop offset="0.71" stop-color="#17A864"></stop><stop offset="0.81" stop-color="#17B064"></stop><stop offset="1" stop-color="#17B264"></stop></radialGradient></defs></svg></a><div class="MuiStack-root mui-7ltdnm"><nav class="MuiBox-root mui-10klw3m" aria-label="Main navigation"><ul class="MuiStack-root mui-15gt2y6"><li class="MuiBox-root mui-0"><button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-pnt9oq" tabindex="0" type="button">Product<span class="MuiButton-icon MuiButton-endIcon mui-1ugcz4v"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"></path></svg></span></button><div class="MuiStack-root mui-y5sj4z"><div class="MuiContainer-root MuiContainer-maxWidthXl mui-12ax1ca"><div class="MuiStack-root mui-1kunz08"><div class="MuiStack-root mui-13tkiz0"><div class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-row MuiGrid-spacing-xs-2 mui-o4n3w0"><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/product/platform"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M12.3946 5.57941C10.7823 6.07065 9.6358 7.28388 9.31863 8.70586C9.22941 9.10589 8.87447 9.39038 8.46462 9.39038C6.34402 9.39038 4.68262 11.0369 4.68262 12.9974C4.68262 14.959 6.34415 16.6054 8.46462 16.6054C8.4926 16.6054 8.52028 16.6067 8.54759 16.6093L11.3064 16.6054C11.7896 16.6047 12.1819 16.9959 12.1826 17.4792C12.1833 17.9624 11.7921 18.3547 11.3088 18.3554L8.46585 18.3594C8.43454 18.3594 8.40361 18.3578 8.37314 18.3547C5.39066 18.3075 2.93262 15.9575 2.93262 12.9974C2.93262 10.2313 5.08029 7.99771 7.79626 7.67932C8.43179 5.88559 9.96056 4.49148 11.8849 3.90527" fill="#17B264"></path><path clip-rule="evenodd" d="M19.1312 9.52061C19.1447 9.57597 19.1709 9.62739 19.208 9.67068C19.245 9.71397 19.2917 9.74791 19.3444 9.76973C19.397 9.79156 19.454 9.80066 19.5108 9.7963C19.5676 9.79193 19.6226 9.77422 19.6712 9.74461C20.8907 9.00211 22.2862 10.3971 21.5437 11.6166C21.5141 11.6652 21.4964 11.7202 21.492 11.7769C21.4876 11.8337 21.4967 11.8907 21.5184 11.9433C21.5402 11.9959 21.5741 12.0427 21.6173 12.0797C21.6606 12.1168 21.7119 12.1431 21.7672 12.1566C23.1547 12.4931 23.1547 14.4666 21.7672 14.8036C21.7119 14.817 21.6605 14.8433 21.6172 14.8803C21.5739 14.9174 21.5399 14.9641 21.5181 15.0167C21.4963 15.0693 21.4872 15.1264 21.4916 15.1832C21.4959 15.24 21.5136 15.2949 21.5432 15.3436C22.2857 16.5631 20.8907 17.9586 19.6712 17.2161C19.6226 17.1865 19.5677 17.1688 19.5109 17.1644C19.4541 17.16 19.3971 17.169 19.3445 17.1908C19.2919 17.2126 19.2452 17.2465 19.2081 17.2897C19.1711 17.3329 19.1447 17.3843 19.1312 17.4396C18.7947 18.8271 16.8212 18.8271 16.4842 17.4396C16.4708 17.3842 16.4445 17.3328 16.4075 17.2895C16.3705 17.2462 16.3237 17.2123 16.2711 17.1905C16.2185 17.1686 16.1615 17.1595 16.1047 17.1639C16.0479 17.1683 15.9929 17.186 15.9442 17.2156C14.7247 17.9581 13.3292 16.5631 14.0717 15.3436C14.1014 15.295 14.1191 15.24 14.1235 15.1833C14.1279 15.1265 14.1188 15.0695 14.097 15.0169C14.0753 14.9643 14.0414 14.9175 13.9982 14.8805C13.9549 14.8434 13.9036 14.8171 13.8482 14.8036C12.4607 14.4671 12.4607 12.4936 13.8482 12.1566C13.9036 12.1432 13.955 12.1169 13.9983 12.0799C14.0416 12.0428 14.0755 11.9961 14.0974 11.9435C14.1192 11.8909 14.1283 11.8338 14.1239 11.777C14.1196 11.7202 14.1019 11.6653 14.0722 11.6166C13.3297 10.3971 14.7247 9.00161 15.9442 9.74411C15.9928 9.77394 16.0478 9.79185 16.1046 9.79636C16.1615 9.80087 16.2186 9.79186 16.2712 9.77005C16.3239 9.74825 16.3707 9.71428 16.4077 9.67092C16.4447 9.62756 16.471 9.57605 16.4842 9.52061C16.8207 8.13311 18.7942 8.13311 19.1312 9.52061ZM17.8076 16.3525C19.3938 16.3525 20.6797 15.0667 20.6797 13.4805C20.6797 11.8943 19.3938 10.6084 17.8076 10.6084C16.2214 10.6084 14.9355 11.8943 14.9355 13.4805C14.9355 15.0667 16.2214 16.3525 17.8076 16.3525Z" fill="#17B264" fill-rule="evenodd"></path><path d="M16.9035 6.46283C15.65 5.45783 13.9835 5.09372 12.3686 5.58504C12.3686 5.58504 12.2941 5.32736 12.1534 4.86504C12.0128 4.40272 11.8254 3.92002 11.8673 3.90754C14.0125 3.25486 16.2757 3.71647 17.9982 5.09747C18.3752 5.39976 18.4358 5.95045 18.1335 6.32748C17.8312 6.70452 17.2805 6.76511 16.9035 6.46283Z" fill="#17B264"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Platform</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Fully managed inventory, insights, policies, and automation.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/product/cli"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 34 34" fill="none" height="34" width="34"><path d="M9.16545 10.5821C9.58038 10.1672 10.253 10.1672 10.6679 10.5821C11.0828 10.9971 11.0828 11.6696 10.6679 12.0846L5.75244 17L10.6679 21.9155C11.0828 22.3304 11.0828 23.003 10.6679 23.4179C10.253 23.8328 9.58038 23.8328 9.16545 23.4179L3.49878 17.7512C3.08385 17.3363 3.08385 16.6637 3.49878 16.2488L9.16545 10.5821Z" fill="currentColor"></path><path d="M23.3321 10.5821C23.747 10.1672 24.4196 10.1672 24.8346 10.5821L30.5012 16.2488C30.9162 16.6637 30.9162 17.3363 30.5012 17.7512L24.8346 23.4179C24.4196 23.8328 23.747 23.8328 23.3321 23.4179C22.9172 23.003 22.9172 22.3304 23.3321 21.9155L28.2476 17L23.3321 12.0846C22.9172 11.6696 22.9172 10.9971 23.3321 10.5821Z" fill="currentColor"></path><path d="M18.8027 5.40936C18.9449 4.84019 19.5215 4.4939 20.0907 4.63601C20.6598 4.7783 21.0061 5.35484 20.864 5.92401L15.1973 28.5907C15.0551 29.1599 14.4785 29.5061 13.9093 29.364C13.3402 29.2217 12.9939 28.6452 13.136 28.076L18.8027 5.40936Z" fill="currentColor"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">CLI</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Open source, self-hosted. Query your infra on your infra.</p></div></div></a></div></div></div></div></div></div></li><li class="MuiBox-root mui-0"><button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-pnt9oq" tabindex="0" type="button">Solutions<span class="MuiButton-icon MuiButton-endIcon mui-1ugcz4v"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"></path></svg></span></button><div class="MuiStack-root mui-y5sj4z"><div class="MuiContainer-root MuiContainer-maxWidthXl mui-12ax1ca"><div class="MuiStack-root mui-1kunz08"><div class="MuiStack-root mui-13tkiz0"><div class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-row MuiGrid-spacing-xs-2 mui-o4n3w0"><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/solutions/cloud-asset-management"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M18.456 10.45a6.45 6.45 0 0 0 -12 -2.151a4.857 4.857 0 0 0 -4.44 5.241a4.856 4.856 0 0 0 5.236 4.444h10.751a3.771 3.771 0 0 0 3.99 -3.54a3.772 3.772 0 0 0 -3.538 -3.992z"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Cloud Asset Management</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Collect and store cloud data across providers for visibility, auditing, and analysis.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/solutions/cspm"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" height="24" width="24" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-rule="evenodd" fill="currentColor" fill-rule="evenodd"><path d="M10.682 2.35a2.659 2.659 0 0 1 2.637 0l6.436 3.685h.001a2.625 2.625 0 0 1 1.325 2.277V15.686c0 .942-.507 1.81-1.324 2.278L13.32 21.65a2.662 2.662 0 0 1-2.638 0l-6.437-3.686a2.624 2.624 0 0 1-1.325-2.277V8.314c0-.942.507-1.81 1.324-2.278l6.438-3.686Zm.798 1.397L5.044 7.432a1.019 1.019 0 0 0-.515.882v7.373c0 .361.194.697.514.88l6.437 3.686a1.051 1.051 0 0 0 1.04 0l6.436-3.685c.322-.184.516-.522.516-.882V8.315a1.02 1.02 0 0 0-.514-.882h-.001L12.52 3.746a1.05 1.05 0 0 0-1.041 0Z"></path><path d="M12 11.196c.445 0 .805.36.805.805v9.195a.804.804 0 0 1-1.61 0V12c0-.444.361-.804.805-.804Z"></path><path d="M20.725 6.964a.805.805 0 0 1-.295 1.099l-8.027 4.634a.805.805 0 0 1-.805-1.393l8.028-4.635a.805.805 0 0 1 1.099.295Z"></path><path d="M3.276 6.964a.805.805 0 0 1 1.1-.295l8.027 4.635a.805.805 0 0 1-.805 1.393L3.571 8.063a.805.805 0 0 1-.295-1.1Z"></path></g></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Security & Compliance</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Analyze cloud configurations to detect misconfigurations, risks, and violations.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/solutions/cloud-cmdb"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M12.3946 5.57941C10.7823 6.07065 9.6358 7.28388 9.31863 8.70586C9.22941 9.10589 8.87447 9.39038 8.46462 9.39038C6.34402 9.39038 4.68262 11.0369 4.68262 12.9974C4.68262 14.959 6.34415 16.6054 8.46462 16.6054C8.4926 16.6054 8.52028 16.6067 8.54759 16.6093L11.3064 16.6054C11.7896 16.6047 12.1819 16.9959 12.1826 17.4792C12.1833 17.9624 11.7921 18.3547 11.3088 18.3554L8.46585 18.3594C8.43454 18.3594 8.40361 18.3578 8.37314 18.3547C5.39066 18.3075 2.93262 15.9575 2.93262 12.9974C2.93262 10.2313 5.08029 7.99771 7.79626 7.67932C8.43179 5.88559 9.96056 4.49148 11.8849 3.90527" fill="#17B264"></path><path clip-rule="evenodd" d="M19.1312 9.52061C19.1447 9.57597 19.1709 9.62739 19.208 9.67068C19.245 9.71397 19.2917 9.74791 19.3444 9.76973C19.397 9.79156 19.454 9.80066 19.5108 9.7963C19.5676 9.79193 19.6226 9.77422 19.6712 9.74461C20.8907 9.00211 22.2862 10.3971 21.5437 11.6166C21.5141 11.6652 21.4964 11.7202 21.492 11.7769C21.4876 11.8337 21.4967 11.8907 21.5184 11.9433C21.5402 11.9959 21.5741 12.0427 21.6173 12.0797C21.6606 12.1168 21.7119 12.1431 21.7672 12.1566C23.1547 12.4931 23.1547 14.4666 21.7672 14.8036C21.7119 14.817 21.6605 14.8433 21.6172 14.8803C21.5739 14.9174 21.5399 14.9641 21.5181 15.0167C21.4963 15.0693 21.4872 15.1264 21.4916 15.1832C21.4959 15.24 21.5136 15.2949 21.5432 15.3436C22.2857 16.5631 20.8907 17.9586 19.6712 17.2161C19.6226 17.1865 19.5677 17.1688 19.5109 17.1644C19.4541 17.16 19.3971 17.169 19.3445 17.1908C19.2919 17.2126 19.2452 17.2465 19.2081 17.2897C19.1711 17.3329 19.1447 17.3843 19.1312 17.4396C18.7947 18.8271 16.8212 18.8271 16.4842 17.4396C16.4708 17.3842 16.4445 17.3328 16.4075 17.2895C16.3705 17.2462 16.3237 17.2123 16.2711 17.1905C16.2185 17.1686 16.1615 17.1595 16.1047 17.1639C16.0479 17.1683 15.9929 17.186 15.9442 17.2156C14.7247 17.9581 13.3292 16.5631 14.0717 15.3436C14.1014 15.295 14.1191 15.24 14.1235 15.1833C14.1279 15.1265 14.1188 15.0695 14.097 15.0169C14.0753 14.9643 14.0414 14.9175 13.9982 14.8805C13.9549 14.8434 13.9036 14.8171 13.8482 14.8036C12.4607 14.4671 12.4607 12.4936 13.8482 12.1566C13.9036 12.1432 13.955 12.1169 13.9983 12.0799C14.0416 12.0428 14.0755 11.9961 14.0974 11.9435C14.1192 11.8909 14.1283 11.8338 14.1239 11.777C14.1196 11.7202 14.1019 11.6653 14.0722 11.6166C13.3297 10.3971 14.7247 9.00161 15.9442 9.74411C15.9928 9.77394 16.0478 9.79185 16.1046 9.79636C16.1615 9.80087 16.2186 9.79186 16.2712 9.77005C16.3239 9.74825 16.3707 9.71428 16.4077 9.67092C16.4447 9.62756 16.471 9.57605 16.4842 9.52061C16.8207 8.13311 18.7942 8.13311 19.1312 9.52061ZM17.8076 16.3525C19.3938 16.3525 20.6797 15.0667 20.6797 13.4805C20.6797 11.8943 19.3938 10.6084 17.8076 10.6084C16.2214 10.6084 14.9355 11.8943 14.9355 13.4805C14.9355 15.0667 16.2214 16.3525 17.8076 16.3525Z" fill="#17B264" fill-rule="evenodd"></path><path d="M16.9035 6.46283C15.65 5.45783 13.9835 5.09372 12.3686 5.58504C12.3686 5.58504 12.2941 5.32736 12.1534 4.86504C12.0128 4.40272 11.8254 3.92002 11.8673 3.90754C14.0125 3.25486 16.2757 3.71647 17.9982 5.09747C18.3752 5.39976 18.4358 5.95045 18.1335 6.32748C17.8312 6.70452 17.2805 6.76511 16.9035 6.46283Z" fill="#17B264"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Cloud CMDB</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Transform fragmented cloud data into a real-time, queryable Cloud CMDB.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/solutions/platform-engineering"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10h3v-3l-3.5 -3.5a6 6 0 0 1 8 8l6 6a2 2 0 0 1 -3 3l-6 -6a6 6 0 0 1 -8 -8l3.5 3.5"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Platform Engineering</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Empower platform teams with unified cloud data and self-service infrastructure.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/solutions/fin-ops"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"></path><path d="M13.193 17.924c-.39 .05 -.788 .076 -1.193 .076c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.005 0 5.592 1.394 7.761 4.181"></path><path d="M21 15h-2.5a1.5 1.5 0 0 0 0 3h1a1.5 1.5 0 0 1 0 3h-2.5"></path><path d="M19 21v1m0 -8v1"></path></svg> </svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">FinOps</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Gain visibility into cloud costs and optimize spend across your organization.</p></div></div></a></div></div></div><div class="MuiBox-root mui-16p0nhe"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1xn6284" href="/blog/reddit-cloudquery-case-study"><div class="MuiStack-root mui-fm2fnw"><div class="MuiStack-root mui-gsjzcg"><div class="MuiStack-root mui-xm6ojw"><div class="MuiChip-root MuiChip-filled MuiChip-sizeMedium MuiChip-colorDefault mui-1ygqs8m"><span class="MuiChip-label mui-14vsv3w">Featured</span></div><div class="MuiChip-root MuiChip-filled MuiChip-sizeMedium MuiChip-colorDefault mui-11t9ytc"><span class="MuiChip-label mui-14vsv3w">Customer story</span></div></div><div class="MuiTypography-root MuiTypography-h6 mui-zguuy3" aria-label="How Reddit Secures Its Cloud with CloudQuery">How Reddit Secures Its Cloud with CloudQuery</div><p class="MuiTypography-root MuiTypography-body2 mui-1lux3f" aria-label="Securing Reddit's cloud infrastructure with a single source of truth for multi-cloud resources.">Securing Reddit's cloud infrastructure with a single source of truth for multi-cloud resources.</p></div><img alt="Reddit" loading="lazy" width="1280" height="720" decoding="async" data-nimg="1" style="color:transparent;height:auto;max-width:100%" srcSet="/_next/image?url=https%3A%2F%2Fcdn.cloudquery.io%2Fwebsite%2Fmmmpsfi92%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Fsolutions.2x2nnxlb3w1n_.webp&w=1600&q=75 1x, /_next/image?url=https%3A%2F%2Fcdn.cloudquery.io%2Fwebsite%2Fmmmpsfi92%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Fsolutions.2x2nnxlb3w1n_.webp&w=3840&q=75 2x" src="/_next/image?url=https%3A%2F%2Fcdn.cloudquery.io%2Fwebsite%2Fmmmpsfi92%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Fsolutions.2x2nnxlb3w1n_.webp&w=3840&q=75"/></div></a></div></div></div></div></li><li class="MuiBox-root mui-0"><button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-pnt9oq" tabindex="0" type="button">Resources<span class="MuiButton-icon MuiButton-endIcon mui-1ugcz4v"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"></path></svg></span></button><div class="MuiStack-root mui-y5sj4z"><div class="MuiContainer-root MuiContainer-maxWidthXl mui-12ax1ca"><div class="MuiStack-root mui-1kunz08"><div class="MuiStack-root mui-13tkiz0"><div class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-row MuiGrid-spacing-xs-2 mui-o4n3w0"><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><p class="MuiTypography-root MuiTypography-body1Bold mui-1di0y35">Learn Cloud Governance</p></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><p class="MuiTypography-root MuiTypography-body1Bold mui-1di0y35">What's New?</p></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/blog/category/tutorials"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M6 4h11a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-11a1 1 0 0 1 -1 -1v-14a1 1 0 0 1 1 -1m3 0v18"></path><path d="M13 8l2 0"></path><path d="M13 12l2 0"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">How-to Guides & Tutorials</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Step-by-step guides to help you master CloudQuery, from setup to advanced.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="https://community.cloudquery.io"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0"></path><path d="M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path><path d="M21 21v-2a4 4 0 0 0 -3 -3.85"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Community</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Join our community to get help, share insights, and connect with others.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/case-studies"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M11.933 5h-6.933v16h13v-8"></path><path d="M14 17h-5"></path><path d="M9 13h5v-4h-5z"></path><path d="M15 5v-2"></path><path d="M18 6l2 -2"></path><path d="M19 9h2"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Case Studies & Customer Stories</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Discover how businesses like yours are using CloudQuery.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/blog"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M3 4m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z"></path><path d="M7 8h10"></path><path d="M7 12h10"></path><path d="M7 16h10"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Blog</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Stay up to date with the latest news and updates from CloudQuery.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/learning-center"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none" stroke="none"></path><path d="M5 4m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z"></path><path d="M9 4m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z"></path><path d="M5 8h4"></path><path d="M9 16h4"></path><path d="M13.803 4.56l2.184 -.53c.562 -.135 1.133 .19 1.282 .732l3.695 13.418a1.02 1.02 0 0 1 -.634 1.219l-.133 .041l-2.184 .53c-.562 .135 -1.133 -.19 -1.282 -.732l-3.695 -13.418a1.02 1.02 0 0 1 .634 -1.219l.133 -.041z"></path><path d="M14 9l4 -1"></path><path d="M16 16l3.923 -.98"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Learning center</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Take control of your cloud inventory data and discover key cloud management concepts.</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/events"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="32" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M4 5m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path><path d="M16 3l0 4"></path><path d="M8 3l0 4"></path><path d="M4 11l16 0"></path><path d="M8 15h2v2h-2z"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Events & Webinars</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Browse and register for upcoming sessions or catch up on what you missed with exclusive recordings</p></div></div></a></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-xs-6 mui-14wd3ve"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/resources"><div class="MuiStack-root mui-1l4ua4w"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M21 21H3m15-10-6 6m0 0-6-6m6 6V3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path></svg></div><div class="MuiStack-root mui-1x78ejx"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1f47inc">Resources</p><svg class="MuiSvgIcon-root MuiSvgIcon-colorPrimary MuiSvgIcon-fontSizeMedium nav-item-arrow mui-128mcjr" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M5 12l14 0" stroke="currentColor"></path><path d="M15 16l4 -4" stroke="currentColor"></path><path d="M15 8l4 4" stroke="currentColor"></path></svg></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Access whitepapers, ebooks, and webinar recordings on cloud governance and security</p></div></div></a></div></div></div><div class="MuiBox-root mui-16p0nhe"><div class="MuiStack-root mui-1821gv5"><p class="MuiTypography-root MuiTypography-h6 mui-1p6ixfa">Learning Center</p><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/blog/what-is-a-cloud-asset-inventory"><div class="MuiStack-root mui-xtk6by"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M6.657 16c-2.572 0 -4.657 -2.007 -4.657 -4.483c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486c0 1.927 -1.551 3.487 -3.465 3.487h-11.878" stroke="currentColor"></path><path d="M12 16v5" stroke="currentColor"></path><path d="M16 16v4a1 1 0 0 0 1 1h4" stroke="currentColor"></path><path d="M8 16v4a1 1 0 0 1 -1 1h-4" stroke="currentColor"></path></svg></div><div class="MuiStack-root mui-ur1szg"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1di0y35">Cloud Asset Inventory</p></div></div></div></a><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/learning-center/cloud-cmdb"><div class="MuiStack-root mui-xtk6by"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.75" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M4 6c0 1.657 3.582 3 8 3s8 -1.343 8 -3s-3.582 -3 -8 -3s-8 1.343 -8 3"></path><path d="M4 6v6c0 1.657 3.582 3 8 3c.21 0 .42 -.003 .626 -.01"></path><path d="M20 11.5v-5.5"></path><path d="M4 12v6c0 1.657 3.582 3 8 3"></path><path d="M19.001 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M19.001 15.5v1.5"></path><path d="M19.001 21v1.5"></path><path d="M22.032 17.25l-1.299 .75"></path><path d="M17.27 20l-1.3 .75"></path><path d="M15.97 17.25l1.3 .75"></path><path d="M20.733 20l1.3 .75"></path></svg></div><div class="MuiStack-root mui-ur1szg"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1di0y35">Cloud CMDB</p></div></div></div></a><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/learning-center/cloud-observability-pillars-technologies-and-practices"><div class="MuiStack-root mui-xtk6by"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"><path d="M11 18.004h-4.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99"></path><path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path><path d="M20.2 20.2l1.8 1.8"></path></svg></div><div class="MuiStack-root mui-ur1szg"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1di0y35">Cloud Observability</p></div></div></div></a><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/learning-center/it-asset-management"><div class="MuiStack-root mui-xtk6by"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.75" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M4 6c0 1.657 3.582 3 8 3s8 -1.343 8 -3s-3.582 -3 -8 -3s-8 1.343 -8 3"></path><path d="M4 6v6c0 1.657 3.582 3 8 3c.21 0 .42 -.003 .626 -.01"></path><path d="M20 11.5v-5.5"></path><path d="M4 12v6c0 1.657 3.582 3 8 3"></path><path d="M19.001 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M19.001 15.5v1.5"></path><path d="M19.001 21v1.5"></path><path d="M22.032 17.25l-1.299 .75"></path><path d="M17.27 20l-1.3 .75"></path><path d="M15.97 17.25l1.3 .75"></path><path d="M20.733 20l1.3 .75"></path></svg></div><div class="MuiStack-root mui-ur1szg"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1di0y35">IT Asset Management</p></div></div></div></a><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-1qa3kim" href="/learning-center/four-steps-to-designing-your-cloud-governance-framework"><div class="MuiStack-root mui-xtk6by"><div class="MuiBox-root mui-1fg3vl0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.75"><path d="M12 18.004h-5.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c.956 0 1.822 .39 2.449 1.02"></path><path d="M19.001 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M19.001 15.5v1.5"></path><path d="M19.001 21v1.5"></path><path d="M22.032 17.25l-1.299 .75"></path><path d="M17.27 20l-1.3 .75"></path><path d="M15.97 17.25l1.3 .75"></path><path d="M20.733 20l1.3 .75"></path></svg></div><div class="MuiStack-root mui-ur1szg"><div class="MuiStack-root mui-ths26n"><p class="MuiTypography-root MuiTypography-body1Bold mui-1di0y35">Cloud Governance</p></div></div></div></a></div></div></div></div></div></li><li class="MuiBox-root mui-rqgsqp"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-121fc5o" tabindex="0" href="https://www.cloudquery.io/docs/platform/introduction">Docs</a></li><li class="MuiBox-root mui-rqgsqp"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-121fc5o" tabindex="0" href="https://www.cloudquery.io/hub/plugins/source">Integrations</a></li><li class="MuiBox-root mui-rqgsqp"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-121fc5o" tabindex="0" href="/pricing">Pricing</a></li></ul></nav></div></div><div class="MuiBox-root mui-6k8fz8"></div><div class="MuiStack-root mui-ijr5jr"><button class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeMedium mui-snpgch" tabindex="0" type="button" title="Menu"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeSmall mui-vh810p" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"></path></svg></button></div></div></div></header><main class="MuiBox-root mui-z2m5rw"><div class="MuiContainer-root MuiContainer-maxWidthXl mui-1vx0dya"><div class="MuiStack-root mui-1ip1b4j"><div class="MuiBox-root mui-1a0tpiy"><!--$--><a class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-1q9ko37" tabindex="0" href="/blog"><span class="MuiButton-icon MuiButton-startIcon mui-15g30mo"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></svg></span>Back to blog</a><!--/$--><nav class="MuiBox-root mui-19efhd4" aria-label="On this page"><div class="MuiTypography-root MuiTypography-h6 mui-1aht0z4">On this page</div><div class="MuiBox-root mui-1yg0an9"><div class="MuiBox-root mui-4lrcex"><ul class="MuiList-root MuiList-padding mui-1yt52m3" role="menu" tabindex="-1"><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-b93c8e" tabindex="-1" role="menuitem" href="#logs,-metrics,-and-traces---a-quick-recap"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Logs, Metrics, and Traces - A Quick Recap</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-e2xa0z" tabindex="-1" role="menuitem" href="#config-data:-the-fourth-pillar"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Config Data: The Fourth Pillar</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-e2xa0z" tabindex="-1" role="menuitem" href="#why-config-data-matters"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Why Config Data Matters</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-e2xa0z" tabindex="-1" role="menuitem" href="#architecture-for-config-data-monitoring"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Architecture for Config Data Monitoring</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-12uhh2q" tabindex="-1" role="menuitem" href="#data-ingestion"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Data Ingestion</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-12uhh2q" tabindex="-1" role="menuitem" href="#storage"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Storage</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-12uhh2q" tabindex="-1" role="menuitem" href="#insights-generation"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Insights Generation</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-12uhh2q" tabindex="-1" role="menuitem" href="#relationships-and-materialized-views"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Relationships and Materialized Views</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-e2xa0z" tabindex="-1" role="menuitem" href="#integration-with-traditional-observability"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Integration with Traditional Observability</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-e2xa0z" tabindex="-1" role="menuitem" href="#challenges-and-considerations"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Challenges and Considerations</span></a><a class="MuiButtonBase-root MuiMenuItem-root MuiMenuItem-gutters mui-e2xa0z" tabindex="-1" role="menuitem" href="#wrap-up"><span class="MuiTypography-root MuiTypography-subtitle1 mui-13o6m2m">Wrap up</span></a></ul></div></div></nav><button class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeMedium mui-1mn9afq" tabindex="0" type="button" title="Open table of contents"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"></path></svg></button></div><div class="MuiStack-root mui-1h9jnp6"><article class="MuiStack-root mui-1ee2bgt"><div class="MuiStack-root mui-1ifeoh2"><div class="MuiChip-root MuiChip-filled MuiChip-sizeMedium MuiChip-colorDefault mui-1nb28em"><span class="MuiChip-label mui-14vsv3w">Engineering</span></div></div><h1 class="MuiTypography-root MuiTypography-h4 mui-jia77">The Lost Fourth Pillar of Observability - Config Data Monitoring</h1><div class="MuiStack-root mui-anhusk"><div class="MuiAvatar-root MuiAvatar-circular mui-hyzzuw"><img alt="Yevgeny Pats" src="/images/people/yevgenypats.jpg" height="32" loading="lazy" width="32" class="MuiAvatar-img mui-45do71"/></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways mui-f4ecj" href="/authors/yevgeny-pats">Yevgeny Pats</a></p><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">•</p><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo"><time class="MuiBox-root mui-0" dateTime="2025-04-17T00:00:00.000Z" aria-label="Apr 17, 2025 12:00 AM UTC"><span class="MuiSkeleton-root MuiSkeleton-rounded MuiSkeleton-pulse mui-1wpzwvx" style="width:90px;height:24px"></span></time></p><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">•</p><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">6<!-- --> min read</p></div><div class="MuiStack-root mui-1rrerex"><div class="MuiBox-root mui-1yal89z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">A lot has been written about logs, metrics, and traces as they are indeed key components in observability, application, and system monitoring. One thing that is often overlooked, however, is <span class="MuiTypography-root MuiTypography-body1 mui-xr049a">config data</span> and its observability. In this blog, we'll explore what config data is, how it differs from logs, metrics, and traces, and discuss what architecture is needed to store this type of data and in which scenarios it provides value.</div>
|
||
<h2 class="MuiTypography-root MuiTypography-h5 mui-14yb8e9" id="logs,-metrics,-and-traces---a-quick-recap">Logs, Metrics, and Traces - A Quick Recap<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Logs, Metrics, and Traces - A Quick Recap" href="#logs,-metrics,-and-traces---a-quick-recap"> <!-- -->#</a></h2>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">For those that are new to the three pillars of observability, let’s do a quick recap:</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><button class="MuiBox-root mui-1a4nwe1"><img alt="Diagram showing the three traditional pillars of observability: Logs represented as JSON snippets, Metrics as a bar chart, and Traces as a timeline of request spans." decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;display:block;max-width:100%" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 744px" srcSet="/_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=576&q=75 576w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1600&q=75 1600w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=2200&q=75 2200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=3840&q=75 3840w" src="/_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage1.png&w=3840&q=75"/></button></div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Logs</span>: Detailed records of events that occur within your system. They provide information about specific occurrences, including timestamps, error messages, and other relevant details. Logs help with debugging and forensic analysis.</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Metrics</span>: Numerical measurements collected at regular intervals. They help monitor system health, performance, and behavior over time. Examples include CPU usage, request rates, error rates, and response times.</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Traces</span>: Records that follow a request as it moves through different services in a distributed system. Traces provide visibility into request flows, helping to identify bottlenecks and understand dependencies.</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">The backend for such technologies is usually some sort of time-series database, and the type of data is usually what we call low cardinality data (it can be higher cardinality, but this typically becomes expensive and is advised against).</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Another key aspect is that to get any of these metrics, you usually need to instrument the system - i.e., you need access to the application or the infrastructure so you can deploy an agent or add a Prometheus exporter.</div>
|
||
<h2 class="MuiTypography-root MuiTypography-h5 mui-14yb8e9" id="config-data:-the-fourth-pillar">Config Data: The Fourth Pillar<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Config Data: The Fourth Pillar" href="#config-data:-the-fourth-pillar"> <!-- -->#</a></h2>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Infrastructure isn't limited to AWS EC2 instances but also includes IAM users, configurations from security tools, SaaS applications, and more. This configuration data differs from traditional observability data in several important ways:</div>
|
||
<ol class="MuiList-root mui-z752c2">
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Not instrumentable</span>: These systems cannot be instrumented directly, but they expose their configuration through APIs.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">High cardinality and relational</span>: The data typically has high cardinality and is highly relational. It also doesn't change as frequently as metrics like disk I/O on a server, as it's more focused on configuration states.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Lower frequency, higher detail</span>: The tradeoff we want to make here is less frequent collection but with higher cardinality and detail.</div></span></div></li>
|
||
</ol>
|
||
<div class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root mui-9po5sc" style="--Paper-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--Paper-overlay:linear-gradient(rgba(255, 255, 255, 0.051), rgba(255, 255, 255, 0.051))"><div class="MuiStack-root mui-hjfd6p"><div data-simplebar="init" style="max-height:100%;min-height:0"><div class="simplebar-wrapper"><div class="simplebar-height-auto-observer-wrapper"><div class="simplebar-height-auto-observer"></div></div><div class="simplebar-mask"><div class="simplebar-offset"><div class="simplebar-content-wrapper" tabindex="0" role="region" aria-label="scrollable content"><div class="simplebar-content"><table class="MuiTable-root mui-1gmhwrj"><thead class="MuiTableHead-root mui-5a3qg8"><tr class="MuiTableRow-root MuiTableRow-head mui-2jca7"><th class="MuiTableCell-root MuiTableCell-head MuiTableCell-sizeSmall mui-bk4zqc" scope="col">Traditional Observability</th><th class="MuiTableCell-root MuiTableCell-head MuiTableCell-sizeSmall mui-bk4zqc" scope="col">Config Data</th></tr></thead><tbody class="MuiTableBody-root mui-y6j1my"><tr class="MuiTableRow-root mui-2jca7"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">High Frequency</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">Low Frequency</td></tr><tr class="MuiTableRow-root mui-2jca7"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">Low Cardinality</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">High Cardinality</td></tr><tr class="MuiTableRow-root mui-2jca7"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">Time-Series Storage</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">Relational Storage</td></tr><tr class="MuiTableRow-root mui-2jca7"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">System Instrumentation</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeSmall mui-u710dz">API-Based Collection</td></tr></tbody></table></div></div></div></div><div class="simplebar-placeholder"></div></div><div class="simplebar-track simplebar-horizontal"><div class="simplebar-scrollbar"></div></div><div class="simplebar-track simplebar-vertical"><div class="simplebar-scrollbar"></div></div></div></div></div>
|
||
<h2 class="MuiTypography-root MuiTypography-h5 mui-14yb8e9" id="why-config-data-matters">Why Config Data Matters<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Why Config Data Matters" href="#why-config-data-matters"> <!-- -->#</a></h2>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Configuration data monitoring fills critical gaps in your observability strategy:</div>
|
||
<ol class="MuiList-root mui-z752c2">
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Security posture monitoring</span>: Track IAM permissions, security group rules, encryption settings, and other configuration items that impact your security posture.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Compliance tracking</span>: Monitor configurations against internal policies or external compliance requirements (SOC2, HIPAA, PCI-DSS, etc.).</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Cost optimization</span>: Identify misconfigurations leading to unnecessary costs, like over sized instances or unused resources.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Change management</span>: Detect and track configuration changes across your environment, providing visibility into who changed what and when.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Drift detection</span>: Identify when resources deviate from their expected or desired configurations.</div></span></div></li>
|
||
</ol>
|
||
<h2 class="MuiTypography-root MuiTypography-h5 mui-14yb8e9" id="architecture-for-config-data-monitoring"><span class="MuiBox-root mui-1vg6q84">Architecture for Config Data Monitoring</span><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Architecture for Config Data Monitoring" href="#architecture-for-config-data-monitoring"> <!-- -->#</a></h2>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Let's examine some key architectural decisions we made at CloudQuery for handling config data:</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><button class="MuiBox-root mui-1a4nwe1"><img alt="Diagram of a Config Data Monitoring Architecture with four layers: Data Sources (AWS, GCP, Azure, SaaS Tools), Data Extraction Layer (API Connectors and ETL Pipelines), Storage Layer (SQL Database and Materialized Views), and Insights Layer (Security Dashboards, Compliance Reports, and Custom Queries)." loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;display:block;max-width:100%" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 744px" srcSet="/_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=576&q=75 576w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=1600&q=75 1600w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=2200&q=75 2200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=3840&q=75 3840w" src="/_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage3.png&w=3840&q=75"/></button></div>
|
||
<h3 class="MuiTypography-root MuiTypography-h6 mui-atj203" id="data-ingestion">Data Ingestion<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Data Ingestion" href="#data-ingestion"> <!-- -->#</a></h3>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">First, the data extraction challenge is a different beast. We can't instrument these systems, so we need to create extractors (or ETL scripts), and the primary challenge is maintaining these connectors. Any system that wants to address this need must maintain high-quality connectors to various data sources.</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">The collection frequency can usually be daily, but sometimes it might need to be configurable for higher cadence depending on the criticality of the configuration.</div>
|
||
<h3 class="MuiTypography-root MuiTypography-h6 mui-atj203" id="storage">Storage<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Storage" href="#storage"> <!-- -->#</a></h3>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Due to the highly relational nature of the data obtained from APIs, we utilize a SQL database where you can create complex joins. NoSQL databases or time-series databases aren't optimized for this use case.</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">The tradeoff on frequency and cardinality here would be something like daily partitioning. Some extractors might run more frequently, but the snapshotting would still typically run daily; otherwise, data volume would explode.</div>
|
||
<h3 class="MuiTypography-root MuiTypography-h6 mui-atj203" id="insights-generation">Insights Generation<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Insights Generation" href="#insights-generation"> <!-- -->#</a></h3>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">This is somewhat similar to how observability platforms solve the "blank page syndrome" of "I have the data, now what do I monitor?" We provide numerous insights out of the box, but we recognize that every organization has slightly different needs, and there is no one-size-fits-all rule in cloud governance. Therefore, customers can access the raw queries and modify them as well as add new custom data sources.</div>
|
||
<h3 class="MuiTypography-root MuiTypography-h6 mui-atj203" id="relationships-and-materialized-views">Relationships and Materialized Views<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Relationships and Materialized Views" href="#relationships-and-materialized-views"> <!-- -->#</a></h3>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">One significant advantage of storing config data in a relational database is the ability to model and query the relationships between different configuration items. For example:</div>
|
||
<ul class="MuiList-root mui-15wnsdl">
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z">Which IAM roles have access to which S3 buckets?</span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z">Which security groups are associated with which instances?</span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z">How do your Kubernetes RBAC settings relate to your cloud IAM permissions?</span></div></li>
|
||
</ul>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Materialized views can be used to pre-compute common relationship queries, improving performance for frequently requested insights.</div>
|
||
<h2 class="MuiTypography-root MuiTypography-h5 mui-14yb8e9" id="integration-with-traditional-observability">Integration with Traditional Observability<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Integration with Traditional Observability" href="#integration-with-traditional-observability"> <!-- -->#</a></h2>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">While config data serves as a fourth pillar, its true power emerges when integrated with traditional observability data:</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><button class="MuiBox-root mui-1a4nwe1"><img alt="Diagram showing how logs, metrics, traces, and config data integrate into a unified observability model. Logs contribute context enrichment, metrics aid in root cause analysis, traces support performance correlation, and config data enables change impact analysis." loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;display:block;max-width:100%" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 744px" srcSet="/_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=384&q=75 384w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=576&q=75 576w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=640&q=75 640w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=1600&q=75 1600w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=2200&q=75 2200w, /_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=3840&q=75 3840w" src="/_next/image?url=https%3A%2F%2Fwww.cloudquery.io%2Fimages%2Fblog%2Ffourth-lost-pillar-of-observability-config-data-monitoring%2Fimage2.png&w=3840&q=75"/></button></div>
|
||
<ol class="MuiList-root mui-z752c2">
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Root cause analysis</span>: When an incident occurs, correlating metrics, logs, and traces with configuration changes can quickly identify the root cause.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Context enrichment</span>: Enhance your metrics and logs with configuration context (e.g., "This spike in errors occurred after a configuration change to the load balancer").</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Proactive monitoring</span>: Detect configuration changes that might lead to future performance issues or outages before they affect your metrics.</div></span></div></li>
|
||
</ol>
|
||
<h2 class="MuiTypography-root MuiTypography-h5 mui-14yb8e9" id="challenges-and-considerations">Challenges and Considerations<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Challenges and Considerations" href="#challenges-and-considerations"> <!-- -->#</a></h2>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Implementing config data monitoring comes with its own set of challenges:</div>
|
||
<ol class="MuiList-root mui-z752c2">
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">API rate limiting</span>: Many services impose rate limits on their APIs, which can constrain how frequently you can collect configuration data.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Authentication and authorization</span>: Managing credentials and permissions for numerous systems requires careful security considerations.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Data volume management</span>: Even with less frequent collection, the high cardinality of configuration data can lead to significant storage requirements.</div></span></div></li>
|
||
<li class="MuiListItem-root MuiListItem-padding mui-btvwch"><div class="MuiListItemText-root mui-14rdsw0"><span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary mui-4daq1z"><div class="MuiTypography-root MuiTypography-body1 mui-4daq1z"><span class="MuiBox-root mui-1vg6q84">Schema evolution</span>: APIs change over time, requiring adaptation of your data extraction and storage mechanisms.</div></span></div></li>
|
||
</ol>
|
||
<h2 class="MuiTypography-root MuiTypography-h5 mui-14yb8e9" id="wrap-up">Wrap up<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineNone mui-1fxbtv0" title="Link to Wrap up" href="#wrap-up"> <!-- -->#</a></h2>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">While logs, metrics, and traces remain crucial components of observability, configuration data represents a fourth pillar that provides unique insights into your systems. By implementing comprehensive config data monitoring, organizations can enhance their security posture, ensure compliance, optimize costs, and gain deeper understanding of their infrastructure.</div>
|
||
<div class="MuiTypography-root MuiTypography-body1 mui-4daq1z">As systems grow more complex and distributed, the value of configuration data monitoring will only increase. Organizations that recognize this fourth pillar and incorporate it into their observability strategy will be better positioned to understand, troubleshoot, and optimize their infrastructure in an increasingly complex world.</div></div><div class="MuiStack-root mui-1ov46kg"><div class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root mui-177aong" style="--Paper-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--Paper-overlay:linear-gradient(rgba(255, 255, 255, 0.051), rgba(255, 255, 255, 0.051))"><div class="MuiCardContent-root mui-1gh05y5"><aside class="MuiStack-root mui-wm4fnc"><a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineHover mui-iwwhz8" href="/authors/yevgeny-pats"><img alt="Yevgeny Pats" loading="lazy" width="100" height="100" decoding="async" data-nimg="1" style="color:transparent;border-radius:10px;max-height:100%;max-width:100%" srcSet="/_next/image?url=%2Fimages%2Fpeople%2Fyevgenypats.jpg&w=128&q=75 1x, /_next/image?url=%2Fimages%2Fpeople%2Fyevgenypats.jpg&w=256&q=75 2x" src="/_next/image?url=%2Fimages%2Fpeople%2Fyevgenypats.jpg&w=256&q=75"/></a><div class="MuiStack-root mui-1ov46kg"><h2 class="MuiTypography-root MuiTypography-h5 mui-1hadodn">Written by<!-- --> <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways mui-f4ecj" href="/authors/yevgeny-pats">Yevgeny Pats</a></h2><p class="MuiTypography-root MuiTypography-body1 mui-jp1awa">Yevgeny Pats is the Co-Founder & CEO at CloudQuery. Prior to establishing CloudQuery, he successfully founded and exited other startups. He has a background in software engineering and cybersecurity.</p><div class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-row MuiGrid-spacing-xs-2 mui-1klpoq2"><a rel="noopener noreferrer nofollow" target="_blank" class="MuiButtonBase-root MuiIconButton-root MuiIconButton-colorInherit MuiIconButton-sizeSmall mui-cjpees" tabindex="0" title="Twitter Profile" href="https://twitter.com/yevgenypats"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"></path></svg></a><a rel="noopener noreferrer nofollow" target="_blank" class="MuiButtonBase-root MuiIconButton-root MuiIconButton-colorInherit MuiIconButton-sizeSmall mui-cjpees" tabindex="0" title="LinkedIn Profile" href="https://www.linkedin.com/in/yevgeny-pats-5973328b/"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"></path></svg></a></div></div></aside></div></div></div></div></article><button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorInherit mui-gaaq6e" tabindex="0" type="button" title="Scroll to top"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"></path></svg></button><aside class="MuiStack-root mui-1gk40q3"><h2 class="MuiTypography-root MuiTypography-h6 mui-1p6ixfa">Related posts</h2><div class="MuiStack-root mui-yd8sa2"><!--$?--><template id="B:0"></template><span class="MuiSkeleton-root MuiSkeleton-rounded MuiSkeleton-pulse mui-1wpzwvx" style="width:100%;height:400px"></span><!--/$--><div class="MuiBox-root mui-1fbef5u"><span class="MuiLinearProgress-root MuiLinearProgress-colorPrimary MuiLinearProgress-determinate mui-74682y" role="progressbar" aria-valuenow="11.11111111111111" aria-valuemin="0" aria-valuemax="100" title="Slides Progress"><span class="MuiLinearProgress-bar MuiLinearProgress-bar1 mui-tnhbhy" style="transform:translateX(-88.88888888888889%)"></span></span><button class="MuiButtonBase-root Mui-disabled MuiIconButton-root Mui-disabled MuiIconButton-sizeSmall mui-1vtl3vo" tabindex="-1" type="button" disabled="" title="Previous slide"><div class="MuiAvatar-root MuiAvatar-circular MuiAvatar-colorDefault mui-m60s8j"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"></path></svg></div></button><button class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeSmall mui-1vtl3vo" tabindex="0" type="button" title="Next slide"><div class="MuiAvatar-root MuiAvatar-circular MuiAvatar-colorDefault mui-m60s8j"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-q7mezt" focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"></path></svg></div></button></div></div></aside></div></div></div><nav class="MuiBox-root mui-1a6n7l1" aria-label="Related posts"><ul><li><a href="/blog/etl-benchmark-1-million-rows-2-seconds-macbook">We benchmarked our ETL tool and synced 1 million rows in 2 seconds on a MacBook</a></li><li><a href="/blog/explainer-3nf_vs_star-schema">Third Normal Form (3NF) vs Star Schema: When to Use Each</a></li><li><a href="/blog/cloud-cmdb-best-practices-platform-engineers">6 Cloud CMDB Best Practices for Platform Engineers (2026 Guide)</a></li><li><a href="/blog/real-time-cloud-cmdb-ephemeral-infrastructure">The Real-Time Cloud CMDB - Why Ephemeral Infrastructure Killed Traditional Discovery</a></li><li><a href="/blog/scale-github-issues-semantic-search-with-cloudquery-bigquery-and-vertex-ai">Scale GitHub Issues semantic search with CloudQuery, BigQuery, and Vertex AI</a></li><li><a href="/blog/how-to-design-cloud-asset-inventory-aws">How to Design a Cloud Asset Inventory for AWS</a></li><li><a href="/blog/improve-github-issues-search-with-cloudquery-pgvector-and-openai">Improve GitHub Issues search effortlessly with CloudQuery, pgvector and OpenAI</a></li><li><a href="/blog/cloudquery-performance-benchmark-analysis-581gb-throughput-reality-cloud-api-constraints">CloudQuery Performance Benchmark Analysis: 581 GB/Hour Throughput and the Reality of Cloud API Constraints</a></li><li><a href="/blog/how-to-work-with-cloudquery-syncs-snowflake-backstage">How to Work with CloudQuery Syncs with Snowflake and Backstage</a></li><li><a href="/blog/how-we-made-our-ides-data-aware-with-a-go-mcp-server">How we made our IDEs data-aware with a Go MCP Server</a></li><li><a href="/blog/mcp-server-gotchas-we-learned-the-hard-way">We Built an MCP Server and These Are the Gotchas Nobody Talks About</a></li><li><a href="/blog/how-to-make-your-internal-developer-portal-actually-useful">How to Make Your Internal Developer Portal Actually Useful</a></li><li><a href="/blog/why-and-how-we-built-our-own-full-text-search-engine-with-clickhouse">Why (and How) We Built Our Own Full Text Search Engine with ClickHouse</a></li><li><a href="/blog/we-built-a-search-language-for-cloudquery">How We Accidentally Invented a Cloud Search Language</a></li><li><a href="/blog/how-we-handle-billion-row-clickhouse-inserts-with-uuid-range-bucketing">How We Handle Billion-Row ClickHouse Inserts With UUID Range Bucketing</a></li><li><a href="/blog/kubernetes-asset-tracking-at-scale">Kubernetes Asset Tracking: Why 70% of Enterprises are Struggling (And How to Fix It)</a></li><li><a href="/blog/celebrating-4-years-of-cloudquery">Celebrating 4 Years of CloudQuery! Onward and upward!</a></li><li><a href="/blog/six-months-with-clickhouse-at-cloudquery">Six Months with ClickHouse at CloudQuery (The Good, The Bad, and the Unexpected)</a></li><li><a href="/blog/what-we-learned-querying-cloud-infra-for-expired-dependencies">What We Learned Querying Cloud Infra for Expired Dependencies</a></li><li><a href="/blog/what-is-a-cloud-cmdb-and-do-you-need-one">What is a Cloud CMDB (and is it needed)?</a></li><li><a href="/blog/soc2">What is SOC2 Compliance?</a></li><li><a href="/blog/what-is-asm">What is ASM?</a></li><li><a href="/blog/what-is-cnapp">What is CNAPP?</a></li><li><a href="/blog/what-is-infrastructure-data-lake">What is an Infrastructure Data Lake?</a></li><li><a href="/blog/what-is-a-security-data-fabric">What is a security data fabric?</a></li><li><a href="/blog/a-very-happy-golang-memory-profiling-story-at-cloudquery">A very happy Golang memory profiling story at CloudQuery</a></li><li><a href="/blog/one-change-to-optimize-them-all">One change to optimize them all: a story about batching on the source side</a></li><li><a href="/blog/building-local-and-serverless-elt-cq-and-md">Building Local and Serverless ELT(ETL) pipelines with CloudQuery and MotherDuck</a></li><li><a href="/blog/cmdb-is-dead-long-live-infrastructure-lake">CMDB is Dead: Long Live the Infrastructure Lake</a></li><li><a href="/blog/infrastructure-data-platforms-made-simple">Infrastructure Data Platforms made simple</a></li><li><a href="/blog/adopting-apache-arrow-at-cloudquery">Adopting Apache Arrow at CloudQuery</a></li><li><a href="/blog/exploring-api-data-with-duckdb">Exploring API Data with DuckDB</a></li><li><a href="/blog/what-is-the-modern-data-stack">What is The Modern Data Stack?</a></li><li><a href="/blog/building-cloudquery">Building CloudQuery: High Performance Data Integration Framework in Go</a></li><li><a href="/blog/our-open-source-journey-building-cloudquery">Our Open-Source Journey Building CloudQuery</a></li></ul></nav><script type="application/ld+json">{"@context":"https://schema.org","@type":"TechArticle","author":[{"@type":"Person","description":"Yevgeny Pats is the Co-Founder & CEO at CloudQuery. Prior to establishing CloudQuery, he successfully founded and exited other startups. He has a background in software engineering and cybersecurity.","image":"https://www.cloudquery.io/images/people/yevgenypats.jpg","name":"Yevgeny Pats","sameAs":["https://www.linkedin.com/in/yevgeny-pats-5973328b/","https://twitter.com/yevgenypats"],"url":"https://www.cloudquery.io/authors/yevgeny-pats"}],"dateModified":"2026-09-11T19:27:06.563Z","datePublished":"2025-04-17T00:00:00.000Z","description":"Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap.","headline":"The Lost Fourth Pillar of Observability - Config Data Monitoring","image":{"@type":"ImageObject","url":"https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/thumbnail.png"},"keywords":"Engineering","mainEntityOfPage":{"@id":"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring","@type":"WebPage"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://www.cloudquery.io/images/logo.webp"},"name":"CloudQuery","url":"https://www.cloudquery.io"},"timeRequired":"PT6M","url":"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring"}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":"https://www.cloudquery.io","name":"Home","position":1},{"@type":"ListItem","item":"https://www.cloudquery.io/blog","name":"Blog","position":2},{"@type":"ListItem","item":"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring","name":"The Lost Fourth Pillar of Observability - Config Data Monitoring","position":3}]}</script><!--$--><!--/$--></main><div class="MuiContainer-root MuiContainer-maxWidthXl mui-xvuz8q"><div class="MuiBox-root mui-1ikp2sb"><div class="MuiBox-root mui-1pg5tsb"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 1200 384" style="height:383px;left:0;position:absolute;top:0;width:1200px" fill="none" height="384" width="1200" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_153_7528)"><g opacity="0.8"><g filter="url(#filter0_f_153_7528)" opacity="0.3"><path clip-rule="evenodd" d="M947.78 243.466L908.969 318.412L667.32 -30.4787L706.131 -105.424L947.78 243.466Z" fill="url(#paint0_linear_153_7528)" fill-rule="evenodd"></path></g><g filter="url(#filter1_f_153_7528)" opacity="0.3"><path clip-rule="evenodd" d="M476.195 259.174L452.415 318.723L211.07 -30.4791L234.85 -90.0278L476.195 259.174Z" fill="url(#paint1_linear_153_7528)" fill-rule="evenodd"></path></g><g filter="url(#filter2_f_153_7528)" opacity="0.3"><path clip-rule="evenodd" d="M759.945 169.146L736.165 228.695L494.82 -120.507L518.6 -180.056L759.945 169.146Z" fill="url(#paint2_linear_153_7528)" fill-rule="evenodd"></path></g><g filter="url(#filter3_f_153_7528)" opacity="0.3"><path clip-rule="evenodd" d="M700.197 197.062L583.307 362.886L265.467 -92.708L382.358 -258.532L700.197 197.062Z" fill="url(#paint3_linear_153_7528)" fill-rule="evenodd"></path></g><g filter="url(#filter4_f_153_7528)" opacity="0.3"><path clip-rule="evenodd" d="M395.378 271.958L373.726 334.602L96.3228 -67.0572L117.975 -129.701L395.378 271.958Z" fill="url(#paint4_linear_153_7528)" fill-rule="evenodd"></path></g></g></g><defs><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="623.836" id="filter0_f_153_7528" width="480.46" x="567.32" y="-205.424"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" mode="normal" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_153_7528" stdDeviation="50"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="608.751" id="filter1_f_153_7528" width="465.125" x="111.07" y="-190.028"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" mode="normal" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_153_7528" stdDeviation="50"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="608.751" id="filter2_f_153_7528" width="465.124" x="394.82" y="-280.056"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" mode="normal" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_153_7528" stdDeviation="50"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="821.418" id="filter3_f_153_7528" width="634.73" x="165.467" y="-358.532"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" mode="normal" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_153_7528" stdDeviation="50"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="664.303" id="filter4_f_153_7528" width="499.055" x="-3.67712" y="-229.701"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" mode="normal" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_153_7528" stdDeviation="50"></feGaussianBlur></filter><linearGradient gradientUnits="userSpaceOnUse" id="paint0_linear_153_7528" x1="687.045" x2="972.802" y1="-85.8745" y2="193.102"><stop stop-color="#6366F1"></stop><stop offset="1" stop-color="#6366F1" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="paint1_linear_153_7528" x1="221.176" x2="506.933" y1="-76.022" y2="202.954"><stop stop-color="#6366F1"></stop><stop offset="1" stop-color="#6366F1" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="paint2_linear_153_7528" x1="504.926" x2="790.683" y1="-166.05" y2="112.926"><stop stop-color="#6366F1"></stop><stop offset="1" stop-color="#6366F1" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="paint3_linear_153_7528" x1="333.575" x2="714.297" y1="-208.563" y2="184.167"><stop stop-color="#14B8A6"></stop><stop offset="1" stop-color="#14B8A6" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="paint4_linear_153_7528" x1="369.463" x2="40.8769" y1="270.06" y2="-50.7296"><stop stop-color="#0EA5E9"></stop><stop offset="1" stop-color="#0EA5E9" stop-opacity="0"></stop></linearGradient><clipPath id="clip0_153_7528"><rect fill="white" height="383" transform="translate(0 0.739014)" width="1200"></rect></clipPath></defs></svg></div></div><div class="MuiStack-root mui-qlrnyb"><div class="MuiTypography-root MuiTypography-h2 mui-1krrotb">Turn cloud chaos into clarity</div><p class="MuiTypography-root MuiTypography-body1 mui-4daq1z">Find out how CloudQuery can help you get clarity from a chaotic cloud environment with a personalized conversation and demo.</p><div class="MuiStack-root mui-vcph0c"><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-sizeLarge MuiButton-colorPrimary mui-114t9px" tabindex="0" type="button">Get a Demo</button></div></div></div><div class="MuiBox-root mui-dwq1z6"><div class="MuiContainer-root MuiContainer-maxWidthXl mui-12ax1ca"><div class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-row mui-1f11l0v"><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-lg-4 MuiGrid-grid-md-6 MuiGrid-grid-xs-12 mui-1rxukac"><div class="MuiStack-root mui-s8nxjm"><div class="MuiBox-root mui-0"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-18dxcls" focusable="false" aria-hidden="true" viewBox="190 168 875 225" fill="none" xmlns="http://www.w3.org/2000/svg"><mask height="177" id="mask0_919_6147" maskUnits="userSpaceOnUse" style="mask-type:luminance" width="864" x="197" y="173"><path d="M1060.4 173.139H197.601V349.759H1060.4V173.139Z" fill="white"></path></mask><g mask="url(#mask0_919_6147)"><path d="M262.54 273.079C265.455 273.079 268.304 272.215 270.728 270.596C273.152 268.976 275.041 266.675 276.156 263.982C277.271 261.289 277.563 258.326 276.995 255.467C276.426 252.608 275.022 249.982 272.961 247.921C270.9 245.86 268.274 244.456 265.415 243.888C262.557 243.319 259.593 243.611 256.9 244.726C254.208 245.842 251.906 247.731 250.286 250.154C248.667 252.578 247.803 255.427 247.803 258.342C247.797 260.279 248.174 262.198 248.913 263.989C249.651 265.779 250.736 267.406 252.106 268.776C253.476 270.146 255.103 271.231 256.893 271.97C258.684 272.708 260.603 273.085 262.54 273.079Z" fill="white"></path><path d="M309.516 273.079C312.432 273.083 315.283 272.222 317.71 270.606C320.136 268.989 322.029 266.689 323.147 263.996C324.266 261.304 324.561 258.34 323.995 255.48C323.429 252.619 322.027 249.991 319.967 247.928C317.907 245.865 315.281 244.459 312.422 243.888C309.562 243.318 306.598 243.608 303.904 244.723C301.209 245.838 298.906 247.727 297.286 250.151C295.666 252.575 294.801 255.425 294.801 258.341C294.795 260.276 295.171 262.193 295.908 263.983C296.646 265.772 297.729 267.398 299.096 268.767C300.463 270.137 302.088 271.222 303.876 271.962C305.664 272.702 307.581 273.081 309.516 273.079Z" fill="white"></path><path d="M361.788 316.832L357.643 312.688L336.228 291.272C331.064 300.055 323.693 307.334 314.846 312.386C305.999 317.438 295.984 320.088 285.796 320.072C275.494 320.084 265.37 317.387 256.439 312.254C247.507 307.12 240.081 299.73 234.906 290.822L213.49 312.224C219.192 320.307 226.194 327.389 234.213 333.181C249.248 343.974 267.293 349.773 285.801 349.759C304.135 349.816 322.022 344.095 336.921 333.41L341.07 337.555C342.43 338.915 344.046 339.995 345.823 340.731C347.601 341.468 349.507 341.847 351.431 341.847C353.355 341.847 355.261 341.468 357.038 340.731C358.816 339.995 360.431 338.915 361.792 337.555C363.153 336.194 364.232 334.579 364.969 332.801C365.705 331.023 366.084 329.118 366.084 327.193C366.084 325.269 365.705 323.364 364.969 321.586C364.232 319.808 363.153 318.193 361.792 316.832H361.788Z" fill="url(#paint0_radial_919_6147)"></path><path d="M372.84 246.826C370.612 233.519 365.332 220.909 357.414 209.985C351.622 201.965 344.541 194.961 336.458 189.258C321.523 178.73 303.688 173.098 285.416 173.139C267.143 173.18 249.334 178.892 234.447 189.487C226.435 195.198 219.43 202.202 213.72 210.214C205.949 221.001 200.822 233.464 198.753 246.597C198.016 251.477 197.631 256.404 197.601 261.339C197.631 266.273 198.016 271.198 198.753 276.077H228.903C226.449 266.405 226.449 256.273 228.903 246.601C230.26 241.343 232.359 236.305 235.136 231.639C240.298 222.856 247.669 215.576 256.517 210.524C265.364 205.472 275.379 202.822 285.567 202.839C295.914 202.807 306.085 205.51 315.051 210.673C323.646 215.739 330.847 222.862 336.007 231.4C338.77 236.233 341.074 241.3 342.456 246.826C344.91 256.498 344.91 266.63 342.456 276.302H372.849C373.586 271.423 373.971 266.498 374.001 261.564C373.968 256.63 373.58 251.705 372.84 246.826Z" fill="url(#paint1_radial_919_6147)"></path><path d="M447.801 303.765C442.229 303.824 436.702 302.752 431.556 300.615C426.66 298.559 422.223 295.547 418.506 291.755C414.76 287.919 411.806 283.384 409.812 278.408C407.691 273.086 406.632 267.401 406.693 261.672C406.637 255.931 407.675 250.231 409.753 244.878C411.682 239.913 414.602 235.393 418.336 231.594C422.07 227.795 426.539 224.797 431.47 222.783C436.651 220.662 442.203 219.594 447.801 219.642C453.708 219.642 459.013 220.626 463.717 222.594C468.189 224.408 472.261 227.084 475.701 230.469C478.843 233.531 481.238 237.274 482.703 241.409L467.718 248.609C466.336 244.69 463.797 241.283 460.437 238.839C456.972 236.253 452.76 234.959 447.801 234.956C443.001 234.956 438.771 236.087 435.111 238.349C431.471 240.612 428.54 243.852 426.651 247.7C424.644 251.678 423.642 256.328 423.645 261.65C423.648 266.972 424.65 271.638 426.651 275.649C428.532 279.523 431.471 282.786 435.129 285.059C438.777 287.318 443.007 288.447 447.819 288.447C452.778 288.447 456.99 287.153 460.455 284.564C463.817 282.115 466.355 278.701 467.731 274.776L482.716 281.976C481.252 286.12 478.852 289.87 475.701 292.934C472.264 296.32 468.193 298.996 463.722 300.809C459.015 302.78 453.708 303.765 447.801 303.765Z" fill="white"></path><path d="M492.324 302.451V219.651H508.731V302.451H492.324Z" fill="white"></path><path d="M550.401 303.765C544.764 303.833 539.205 302.438 534.268 299.715C529.497 297.095 525.497 293.267 522.672 288.614C519.789 283.91 518.349 278.568 518.352 272.589C518.352 266.538 519.792 261.177 522.672 256.506C525.511 251.877 529.508 248.069 534.268 245.458C539.221 242.8 544.755 241.408 550.376 241.408C555.997 241.408 561.531 242.8 566.484 245.458C571.22 248.084 575.196 251.89 578.026 256.506C580.909 261.174 582.351 266.535 582.351 272.589C582.351 278.571 580.911 283.913 578.031 288.614C575.213 293.254 571.235 297.08 566.488 299.715C561.57 302.442 556.025 303.838 550.401 303.765ZM550.401 288.996C553.107 289.088 555.782 288.395 558.103 287.001C560.424 285.607 562.292 283.571 563.482 281.139C564.802 278.486 565.46 275.552 565.399 272.589C565.461 269.649 564.803 266.738 563.482 264.111C562.279 261.744 560.467 259.742 558.231 258.31C555.884 256.852 553.163 256.111 550.401 256.177C547.626 256.119 544.892 256.859 542.526 258.31C540.266 259.729 538.433 261.734 537.22 264.111C535.904 266.739 535.251 269.65 535.317 272.589C535.255 275.552 535.911 278.485 537.229 281.139C538.421 283.529 540.26 285.537 542.535 286.935C544.912 288.345 547.638 289.059 550.401 288.996Z" fill="white"></path><path d="M613.401 303.764C608.601 303.764 604.5 302.725 601.098 300.646C597.722 298.575 595.042 295.543 593.403 291.938C591.651 288.221 590.775 283.883 590.775 278.924V242.722H607.186V277.619C607.136 279.688 607.6 281.737 608.536 283.582C609.413 285.263 610.763 286.651 612.42 287.573C614.18 288.507 616.142 288.995 618.135 288.995C620.127 288.995 622.09 288.507 623.85 287.573C625.482 286.637 626.811 285.251 627.679 283.582C628.614 281.736 629.078 279.688 629.029 277.619V242.722H645.436V302.45H630.136V290.638L631.009 293.261C629.623 296.834 627.381 299.479 624.282 301.195C621.183 302.911 617.556 303.767 613.401 303.764Z" fill="white"></path><path d="M685.622 303.765C679.784 303.765 674.568 302.379 669.975 299.607C665.421 296.88 661.668 293 659.094 288.357C656.411 283.545 655.034 278.116 655.098 272.607C655.021 267.071 656.419 261.614 659.148 256.798C661.768 252.177 665.542 248.314 670.101 245.589C674.758 242.798 680.099 241.358 685.527 241.431C689.546 241.355 693.529 242.197 697.173 243.892C700.433 245.422 703.21 247.818 705.201 250.818L702.686 254.098V219.642H719.097V302.441H703.797V291.512L705.332 294.904C703.247 297.856 700.361 300.152 697.016 301.52C693.411 303.037 689.533 303.801 685.622 303.765ZM687.588 288.995C690.358 289.054 693.088 288.335 695.468 286.917C697.739 285.521 699.576 283.52 700.773 281.139C702.033 278.47 702.686 275.555 702.686 272.604C702.686 269.653 702.033 266.739 700.773 264.07C699.576 261.684 697.739 259.677 695.468 258.274C693.088 256.856 690.358 256.136 687.588 256.195C684.764 256.151 681.982 256.889 679.551 258.328C677.213 259.719 675.301 261.725 674.025 264.129C672.67 266.745 671.992 269.66 672.054 272.607C671.994 275.576 672.671 278.513 674.025 281.156C675.285 283.56 677.202 285.558 679.551 286.917C681.994 288.323 684.771 289.04 687.588 288.995Z" fill="white"></path><path d="M773.151 303.764C767.313 303.825 761.519 302.755 756.087 300.614C748.299 297.532 741.63 292.16 736.962 285.206C732.294 278.253 729.846 270.046 729.942 261.671C729.888 255.968 730.985 250.313 733.169 245.044C735.261 240.026 738.35 235.485 742.25 231.697C746.201 227.872 750.866 224.861 755.979 222.836C767.038 218.607 779.269 218.607 790.328 222.836C795.441 224.861 800.106 227.872 804.057 231.697C807.955 235.485 811.043 240.026 813.134 245.044C815.319 250.312 816.418 255.968 816.365 261.671C816.457 270.045 814.007 278.25 809.339 285.202C804.671 292.155 798.005 297.529 790.22 300.614C784.787 302.755 778.991 303.825 773.151 303.764ZM773.151 288.464C776.697 288.501 780.216 287.832 783.501 286.497C786.622 285.217 789.464 283.34 791.867 280.971C794.299 278.566 796.199 275.678 797.447 272.494C798.792 269.045 799.461 265.369 799.418 261.667C799.465 257.981 798.796 254.32 797.447 250.889C796.18 247.715 794.281 244.831 791.867 242.411C789.483 240.019 786.637 238.139 783.501 236.885C776.838 234.33 769.465 234.33 762.801 236.885C759.664 238.139 756.816 240.019 754.431 242.411C752.017 244.824 750.119 247.703 748.851 250.871C747.502 254.302 746.833 257.963 746.88 261.649C746.837 265.351 747.506 269.027 748.851 272.476C750.095 275.661 751.995 278.549 754.427 280.953C756.831 283.322 759.674 285.199 762.797 286.479C766.084 287.815 769.603 288.484 773.151 288.446V288.464ZM790.436 312.314L766.136 269.87H783.641L808.256 312.314H790.436Z" fill="white"></path><path d="M848.616 303.764C843.816 303.764 839.714 302.725 836.309 300.646C832.926 298.578 830.24 295.545 828.596 291.938C826.844 288.221 825.969 283.883 825.972 278.924V242.722H842.379V277.619C842.328 279.688 842.792 281.737 843.729 283.582C844.606 285.263 845.956 286.651 847.613 287.573C849.373 288.507 851.335 288.995 853.328 288.995C855.32 288.995 857.282 288.507 859.043 287.573C860.675 286.637 862.004 285.251 862.872 283.582C863.809 281.737 864.273 279.688 864.222 277.619V242.722H880.629V302.45H865.329V290.638L866.207 293.261C864.818 296.834 862.568 299.479 859.457 301.195C856.346 302.911 852.732 303.767 848.616 303.764Z" fill="white"></path><path d="M921.471 303.765C915.126 303.765 909.619 302.361 904.951 299.553C900.375 296.841 896.63 292.925 894.124 288.231C891.544 283.387 890.227 277.97 890.295 272.481C890.295 266.505 891.625 261.182 894.286 256.511C896.845 251.946 900.561 248.136 905.059 245.463C909.692 242.736 914.985 241.335 920.359 241.413C925.099 241.413 929.292 242.163 932.937 243.663C936.442 245.063 939.599 247.213 942.184 249.963C944.702 252.668 946.655 255.849 947.926 259.319C949.267 263.018 949.933 266.927 949.893 270.861C949.893 272.025 949.839 273.173 949.731 274.304C949.653 275.293 949.45 276.268 949.128 277.206H904.389V265.146H939.831L932.064 270.839C932.793 267.701 932.757 264.911 931.956 262.469C931.225 260.126 929.745 258.089 927.744 256.668C925.737 255.246 923.275 254.535 920.359 254.535C917.761 254.466 915.204 255.192 913.029 256.614C910.986 258 909.454 260.043 908.434 262.743C907.414 265.443 907.02 268.725 907.251 272.589C906.951 275.94 907.351 278.894 908.452 281.45C909.47 283.911 911.228 285.995 913.483 287.412C915.748 288.834 918.484 289.545 921.691 289.545C924.298 289.619 926.88 289.016 929.184 287.795C931.22 286.67 932.906 285.003 934.053 282.98L947.179 289.239C945.979 292.196 944.083 294.82 941.653 296.889C939.032 299.136 936.007 300.864 932.739 301.979C929.111 303.207 925.301 303.811 921.471 303.765Z" fill="white"></path><path d="M959.541 302.45V242.722H974.841V257.054L973.747 254.975C975.058 249.938 977.227 246.529 980.254 244.747C983.281 242.965 986.881 242.065 991.054 242.047H994.551V256.267H989.407C985.399 256.267 982.155 257.489 979.674 259.934C977.193 262.379 975.952 265.829 975.952 270.284V302.446L959.541 302.45Z" fill="white"></path><path d="M1011.06 326.516C1009.36 326.516 1007.65 326.366 1005.98 326.066C1004.47 325.819 1003.01 325.34 1001.65 324.644V311.189C1002.84 311.513 1004.04 311.768 1005.25 311.954C1006.52 312.164 1007.8 312.274 1009.08 312.283C1012.29 312.283 1014.58 311.533 1015.97 310.033C1017.36 308.525 1018.51 306.807 1019.36 304.943L1023.41 295.646L1023.19 309.322L996.941 242.722H1014.55L1031.95 290.089H1025.39L1042.78 242.722H1060.39L1034.79 308.03C1033.39 311.755 1031.4 315.228 1028.89 318.313C1026.73 320.939 1024.03 323.051 1020.95 324.496C1017.84 325.874 1014.47 326.564 1011.06 326.516Z" fill="white"></path></g><path d="M892.975 354.888C899.976 354.888 905.325 359.523 905.325 367.237V370.027H884.787C885.116 374.902 888.1 378.64 893.07 378.64C896.667 378.64 899.457 376.699 900.5 373.625H905.09C904.003 378.734 899.272 382.332 893.07 382.332C885.406 382.332 880.296 376.888 880.295 368.61C880.295 360.237 885.5 354.888 892.975 354.888ZM1000.1 354.888C1007.1 354.888 1012.45 359.523 1012.45 367.237V370.027H991.915C992.244 374.902 995.228 378.64 1000.19 378.64C1003.79 378.64 1006.58 376.699 1007.62 373.625H1012.21C1011.13 378.734 1006.4 382.332 1000.19 382.332C992.529 382.332 987.419 376.888 987.419 368.61H987.423C987.423 360.237 992.628 354.888 1000.1 354.888ZM1042.69 354.888C1049.89 354.888 1055.61 359.858 1055.61 368.61C1055.61 377.362 1049.89 382.332 1042.69 382.332C1035.5 382.332 1029.77 377.362 1029.77 368.61C1029.77 359.858 1035.5 354.888 1042.69 354.888ZM1020.46 360.138H1020.55C1021.78 357.393 1023.2 355.597 1027.36 355.597H1030.4V359.384H1026.79C1022.44 359.384 1020.55 361.989 1020.55 366.953V381.624H1016.28V355.602L1016.29 355.597H1020.46V360.138ZM985.437 358.914L970.298 377.841V377.886H986.48V381.623H964.48V378.311H964.475L979.665 359.384V359.339H965.423V355.602H985.437V358.914ZM944.416 376.369H944.46L951.985 355.597H956.67L946.641 381.619H942.24L932.21 355.597H936.891L944.416 376.369ZM922.031 354.888C927.52 354.888 930.833 358.815 930.834 366.005V381.618H926.577V366.43C926.577 360.801 924.117 358.67 920.709 358.67C917.016 358.67 913.423 361.225 913.423 367.518V381.618H909.162V355.597H913.324V360.472H913.419C914.98 357.019 918.009 354.888 922.031 354.888ZM1042.69 358.58C1037.96 358.58 1034.22 361.989 1034.22 368.61C1034.22 375.232 1037.96 378.64 1042.69 378.64C1047.42 378.64 1051.16 375.232 1051.16 368.61C1051.16 361.989 1047.42 358.58 1042.69 358.58ZM893.12 358.575C888.294 358.575 885.455 361.984 884.886 366.385H900.878C900.878 361.749 897.945 358.575 893.12 358.575ZM1000.25 358.575C995.422 358.575 992.583 361.984 992.014 366.385H1008.01C1008.01 361.749 1005.07 358.575 1000.25 358.575Z" fill="white"></path><path d="M839.997 381.759H831.769L835.7 374.947H843.929L839.997 381.759ZM859.897 381.759H843.021L846.953 374.947H863.828L859.897 381.759ZM858.175 365.207L854.243 372.019H837.398L841.329 365.207H858.175ZM839.997 362.273H831.769L835.7 355.462H843.929L839.997 362.273ZM859.897 362.273H843.021L846.953 355.462H863.828L859.897 362.273ZM868.369 355.762H867.581V357.857H867.247V355.762H866.458V355.462H868.369V355.762ZM869.781 357.558H869.812L870.425 355.462H871.03V357.857H870.69V355.762H870.66L870.051 357.857H869.537L868.929 355.762H868.894V357.857H868.565V355.462H869.168L869.781 357.558Z" fill="white"></path><path d="M696.65 381.759V354.676H707.638C713.364 354.676 716.653 358.042 716.653 362.917C716.653 367.831 713.325 371.197 707.599 371.197H700.519V381.759H696.65ZM706.903 367.831C710.694 367.831 712.59 365.741 712.59 362.917C712.59 360.131 710.772 358.236 706.903 358.236H700.519V367.831H706.903ZM730.801 368.643C730.801 366.438 729.602 365.084 726.778 365.084C723.412 365.084 722.328 367.057 721.825 368.527L718.343 367.405C718.962 364.774 721.709 362.027 726.778 362.027C731.962 362.027 734.438 364.619 734.438 368.759V377.542C734.438 378.431 734.67 378.664 735.56 378.664H737.533V381.759H734.748C731.962 381.759 731.42 380.482 731.188 378.857C729.834 380.946 727.977 382.3 724.92 382.3C721.168 382.3 718.73 380.211 718.73 376.807C718.73 371.506 724.611 369.726 730.801 369.223V368.643ZM722.483 376.497C722.483 378.238 723.605 379.321 725.888 379.321C728.325 379.321 730.801 377.658 730.801 373.827V371.854C726.313 372.319 722.483 373.441 722.483 376.497ZM740.128 381.759V362.569H743.687V366.631C744.345 365.161 746.241 362.298 750.071 362.298C750.884 362.298 751.425 362.375 751.851 362.491V366.206C751.232 366.128 750.574 366.051 749.8 366.051C745.544 366.051 743.765 368.604 743.765 373.131V381.759H740.128ZM761.994 381.759C758.822 381.759 757.158 380.211 757.158 377.039V365.587H752.786V362.569H757.158V356.572H760.795V362.569H765.979V365.587H760.795V376.729C760.795 378.045 761.375 378.625 762.691 378.625H766.715V381.759H761.994ZM785.744 382.3C780.559 382.3 776.613 377.967 776.613 372.202C776.613 366.36 780.443 362.027 785.744 362.027C791.044 362.027 794.836 366.36 794.836 372.202C794.836 378.045 790.889 382.3 785.744 382.3ZM785.744 379.167C788.877 379.167 791.044 376.923 791.044 372.241C791.044 367.521 788.877 365.161 785.744 365.161C782.571 365.161 780.404 367.521 780.404 372.241C780.404 376.923 782.571 379.167 785.744 379.167ZM800.361 359.744C800.361 356.262 802.024 354.676 805.197 354.676H809.646V357.81H805.893C804.539 357.81 803.997 358.39 803.997 359.706V362.569H808.95V365.587H803.997V381.759H800.361V365.587H796.182V362.569H800.361V359.744Z" fill="white"></path><defs><radialGradient cx="0" cy="0" gradientTransform="translate(285.783 262.166) scale(96.7995 96.7995)" gradientUnits="userSpaceOnUse" id="paint0_radial_919_6147" r="1"><stop offset="0.55" stop-color="#178064"></stop><stop offset="0.57" stop-color="#178764"></stop><stop offset="0.64" stop-color="#179A64"></stop><stop offset="0.71" stop-color="#17A864"></stop><stop offset="0.81" stop-color="#17B064"></stop><stop offset="1" stop-color="#17B264"></stop></radialGradient><radialGradient cx="0" cy="0" gradientTransform="translate(285.797 262.167) scale(96.786 96.786)" gradientUnits="userSpaceOnUse" id="paint1_radial_919_6147" r="1"><stop offset="0.55" stop-color="#178064"></stop><stop offset="0.57" stop-color="#178764"></stop><stop offset="0.64" stop-color="#179A64"></stop><stop offset="0.71" stop-color="#17A864"></stop><stop offset="0.81" stop-color="#17B064"></stop><stop offset="1" stop-color="#17B264"></stop></radialGradient></defs></svg></div><div class="MuiStack-root mui-1kw1wfr"><form class="MuiBox-root mui-1kja2d9" name="newsletter-form"><p class="MuiTypography-root MuiTypography-body1 mui-pocbpe">CloudQuery Updates, In Your Inbox Weekly</p><div class="MuiBox-root mui-14s99i0"><div class="MuiFormControl-root MuiFormControl-fullWidth MuiTextField-root mui-1vbfw84"><div class="MuiInputBase-root MuiFilledInput-root MuiFilledInput-underline MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-hiddenLabel mui-4zg0rh"><input aria-invalid="false" id="_R_5alj6mlabrmlb_" placeholder="Your email address" type="text" class="MuiInputBase-input MuiFilledInput-input mui-5w3psd" value=""/></div></div></div><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-sizeMedium MuiButton-colorPrimary MuiButton-fullWidth mui-1zmr45" tabindex="0" type="submit"><span class="MuiButton-loadingWrapper" style="display:contents"></span>Subscribe</button></form></div></div></div><div class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-row MuiGrid-grid-lg-8 MuiGrid-grid-md-6 MuiGrid-grid-xs-12 mui-6u32un"><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-md-6 MuiGrid-grid-sm-3 mui-63lbxk"><div class="MuiStack-root mui-j7qwjs"><p class="MuiTypography-root MuiTypography-body1 mui-addh84">Product</p><ul class="MuiStack-root mui-1qn95c4"><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="CLI" href="/product/cli">CLI</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Platform" href="/product/platform">Platform</a></li><li class="MuiTypography-root MuiTypography-body1 mui-157ab1j">Use Cases</li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Cloud Asset Management" href="/solutions/cloud-asset-management">Cloud Asset Management</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Security & Compliance" href="/solutions/cspm">Security & Compliance</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="FinOps" href="/solutions/fin-ops">FinOps</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Cloud CMDB" href="/solutions/cloud-cmdb">Cloud CMDB</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Platform Engineering" href="/solutions/platform-engineering">Platform Engineering</a></li></ul></div></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-md-4 MuiGrid-grid-sm-3 mui-9ujrnj"><div class="MuiStack-root mui-j7qwjs"><p class="MuiTypography-root MuiTypography-body1 mui-addh84">Resources</p><ul class="MuiStack-root mui-w7khw8"><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" href="https://www.cloudquery.io/hub/plugins/source" title="Integrations">Integrations</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" href="https://www.cloudquery.io/docs/platform/introduction" title="Documentation">Documentation</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Pricing" href="/pricing">Pricing</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Blog" href="/blog">Blog</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Case Studies" href="/case-studies">Case Studies</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Resources" href="/resources">Resources</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Tutorials" href="/blog/category/tutorials">Tutorials</a></li><li class="MuiStack-root mui-1x4jos1"><a rel="noopener noreferrer nofollow" target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Careers" href="https://apply.workable.com/cloudquery">Careers</a></li><li class="MuiStack-root mui-1x4jos1"><a target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Status" href="https://status.cloudquery.io/">Status</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Contact Us" href="/contact-us">Contact Us</a></li></ul></div></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-md-6 MuiGrid-grid-sm-3 MuiGrid-grid-xs-12 mui-12hp7bd"><div class="MuiStack-root mui-j7qwjs"><p class="MuiTypography-root MuiTypography-body1 mui-addh84">Legal</p><ul class="MuiStack-root mui-1ffpgi4"><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Terms & Conditions" href="/legal/website-terms-of-service">Terms & Conditions</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Privacy Policy" href="/legal/privacy-policy">Privacy Policy</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Legal" href="/legal">Legal</a></li><li class="MuiStack-root mui-1x4jos1"><a rel="noopener noreferrer nofollow" target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Trust Center" href="https://app.drata.com/trust/cc9ec5bb-5e31-4fe3-9175-362b3ad96c70">Trust Center</a></li><li class="MuiStack-root mui-1x4jos1"><a class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Bug Bounty" href="/bug-bounty">Bug Bounty</a></li><li class="MuiStack-root mui-1x4jos1"><button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorPrimary mui-1qwn5aq" tabindex="0" type="button"><span class="MuiTypography-root MuiTypography-subtitle2 mui-1ne20ar">Opt in to data collection</span></button></li><li class="MuiStack-root mui-1x4jos1"><button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-sizeMedium MuiButton-colorPrimary mui-1qwn5aq" tabindex="0" type="button"><span class="MuiTypography-root MuiTypography-subtitle2 mui-1ne20ar">Opt out of data collection</span></button></li></ul></div></div><div class="MuiGrid-root MuiGrid-direction-xs-row MuiGrid-grid-md-4 MuiGrid-grid-xs-12 mui-1aqki0k"><div class="MuiStack-root mui-j7qwjs"><ul class="MuiStack-root mui-wdwfj1"><li class="MuiStack-root mui-1x4jos1"><a rel="noopener noreferrer nofollow" target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Follow us on X" href="https://x.com/cloudqueryio"><span class="MuiBox-root mui-8u2j5p"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg></span></a></li><li class="MuiStack-root mui-1x4jos1"><a rel="noopener noreferrer nofollow" target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Follow us on LinkedIn" href="https://www.linkedin.com/company/cloudqueryio"><span class="MuiBox-root mui-8u2j5p"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path><path d="M8 11l0 5"></path><path d="M8 8l0 .01"></path><path d="M12 16l0 -5"></path><path d="M16 16v-3a2 2 0 0 0 -4 0"></path></svg></span></a></li><li class="MuiStack-root mui-1x4jos1"><a rel="noopener noreferrer nofollow" target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Follow us on YouTube" href="https://www.youtube.com/@cloudqueryio"><span class="MuiBox-root mui-8u2j5p"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M2 8a4 4 0 0 1 4 -4h12a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-12a4 4 0 0 1 -4 -4v-8z"></path><path d="M10 9l5 3l-5 3z"></path></svg></span></a></li><li class="MuiStack-root mui-1x4jos1"><a rel="noopener noreferrer nofollow" target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Follow us on Threads" href="https://www.threads.net/@cloudqueryio"><span class="MuiBox-root mui-8u2j5p"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M19 7.5c-1.333 -3 -3.667 -4.5 -7 -4.5c-5 0 -8 2.5 -8 9s3.5 9 8 9s7 -3 7 -5s-1 -5 -7 -5c-2.5 0 -3 1.25 -3 2.5c0 1.5 1 2.5 2.5 2.5c2.5 0 3.5 -1.5 3.5 -5s-2 -4 -3 -4s-1.833 .333 -2.5 1"></path></svg></span></a></li><li class="MuiStack-root mui-1x4jos1"><a target="_blank" class="MuiTypography-root MuiTypography-subtitle2 MuiLink-root MuiLink-underlineHover mui-pg7028" title="Join our community" href="https://community.cloudquery.io"><span class="MuiBox-root mui-8u2j5p"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium mui-u81msc" focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0"></path><path d="M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path><path d="M21 21v-2a4 4 0 0 0 -3 -3.85"></path></svg></span></a></li></ul></div></div></div></div><hr class="MuiDivider-root MuiDivider-fullWidth mui-1p2grzc"/><span class="MuiTypography-root MuiTypography-caption mui-3pri70">© <!-- -->2026<!-- --> CloudQuery, Inc. All rights reserved.</span></div></div></div><div class="MuiBox-root mui-lox0zw" aria-describedby="cookie-banner-description" aria-labelledby="cookie-banner-title" id="cq-cookie-consent-banner" role="dialog"><div class="MuiStack-root mui-1i43dhb"><div class="MuiStack-root mui-yd8sa2"><p class="MuiTypography-root MuiTypography-h6 mui-137fnnc" id="cookie-banner-title">CloudQuery's use of cookies</p><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo" id="cookie-banner-description">We use tracking cookies to understand how you use the product and help us improve it.<!-- --> <!-- -->Your consent is required before we can enable these cookies. <!-- -->You can opt out via the link in the footer.</p></div><div class="MuiStack-root mui-yd8sa2"><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-sizeMedium MuiButton-colorPrimary mui-18bva83" tabindex="0" type="button" aria-label="Accept all cookies">Accept all cookies</button><button class="MuiButtonBase-root MuiButton-root MuiButton-outlined MuiButton-sizeMedium MuiButton-colorPrimary mui-1cr5flb" tabindex="0" type="button" aria-label="Reject all cookies">Reject all cookies</button></div></div></div><div data-rht-toaster="" style="position:fixed;z-index:9999;top:40px;left:40px;right:40px;bottom:40px;pointer-events:none"></div><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script src="https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0_jn37pkwlfh1.js" crossorigin="" id="_R_" async=""></script><div hidden id="S:0"><div style="overflow-x:hidden"><div style="-webkit-flex-direction:row;flex-direction:row;-webkit-transition:all 0s ease 0s;transition:all 0s ease 0s;direction:ltr;display:flex;will-change:transform" class="react-swipeable-view-container"><div style="width:100%;-webkit-flex-shrink:0;flex-shrink:0;overflow:auto" aria-hidden="false" data-swipeable="true"><div class="MuiBox-root mui-10klw3m"><div class="MuiBox-root mui-1ekl43h"><article class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root mui-177aong" style="--Paper-shadow:0px 1px 2px rgba(0, 0, 0, 0.24);--Paper-overlay:linear-gradient(rgba(255, 255, 255, 0.051), rgba(255, 255, 255, 0.051))"><a class="MuiButtonBase-root MuiCardActionArea-root mui-vbhgvt" tabindex="0" href="/blog/etl-benchmark-1-million-rows-2-seconds-macbook"><div class="MuiCardContent-root mui-mh02tt"><div class="MuiStack-root mui-7d0zx8"><div class="MuiStack-root mui-c441ch"><span class="MuiSkeleton-root MuiSkeleton-rounded MuiSkeleton-pulse mui-3fljw" style="width:100px;height:100%"></span><div class="MuiChip-root MuiChip-filled MuiChip-sizeMedium MuiChip-colorDefault mui-5src73"><span class="MuiChip-label mui-14vsv3w">Engineering</span></div></div><h2 class="MuiTypography-root MuiTypography-h6 mui-1f27pzi" aria-label="We benchmarked our ETL tool and synced 1 million rows in 2 seconds on a MacBook">We benchmarked our ETL tool and synced 1 million rows in 2 seconds on a MacBook</h2><p class="MuiTypography-root MuiTypography-body1 mui-1yuxupd">We benchmarked our ETL tool and synced 1 million rows in 2 seconds on laptop hardware, which is 68% faster than enterprise platforms.</p><div class="MuiStack-root mui-1k0wk4f"><div class="MuiStack-root mui-1qftbaz"><div class="MuiAvatar-root MuiAvatar-circular MuiAvatar-colorDefault mui-3xrgwf"><img alt="Joe Karlsson" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Fimages%2Fpeople%2Fjoekarlsson.jpg&w=32&q=75 1x, /_next/image?url=%2Fimages%2Fpeople%2Fjoekarlsson.jpg&w=64&q=75 2x" src="/_next/image?url=%2Fimages%2Fpeople%2Fjoekarlsson.jpg&w=64&q=75"/></div><p class="MuiTypography-root MuiTypography-body2 mui-s34mzo">Joe Karlsson<!-- --> •<!-- --> <time class="MuiBox-root mui-0" dateTime="2026-08-27T00:00:00.000Z" aria-label="Aug 27, 2026 12:00 AM UTC"><span class="MuiSkeleton-root MuiSkeleton-rounded MuiSkeleton-pulse mui-1wpzwvx" style="width:90px;height:24px"></span></time></p></div></div></div></div><span class="MuiCardActionArea-focusHighlight mui-9h6quu"></span></a></article></div></div></div></div></div></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
|
||
$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[956236,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"TrackingHeadPreConnects\"]\n3:I[363374,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"default\"]\n4:I[944235,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"QueryClientProvider\"]\n5:I[957783,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"AuthProviderWrapper\"]\n6:I[804933,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"FeatureFlagsProvider\"]\n7:I[912313,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"default\"]\n8:I[630516,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"theme\"]\n9:I[913684,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"default\"]\na:I[577708,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"NProgressStyles\"]\nb:I[812772,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"default\"]\nc:I[966124,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2lonyreq8one5.js\"],\"default\"]\nd:I[550722,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"default\"]\ne:I[244552,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\"],\"NavigationProgressProvider\"]\nf:I[803538,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\"],\"default\"]\n10:I[386258,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n11:I[265592,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\"],\"TopBar\"]\n12:I[722103,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\"],\"AppBaseNav\"]\n1c:I[110916,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1xlcp68i4rm_j.js\"],\"default\"]\n1a:X\n0:{\"P\":null,\"c\":[\"\",\"blog\",\"fourth-lost-pillar-of-observability-config-data-monitoring\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"blog\",{\"children\":[[\"article\",\"fourth-lost-pillar-of-observability-config-data-monitoring\",\"d\",[\"category\",\"category-dynamic\",\"page\"]],{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4256]},\"$undefined\",\"$undefined\",4192]},\"$undefined\",\"$undefined\",4160]},\"$undefined\",\"$undefined\",4112],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[[\"$\",\"link\",null,{\"crossOrigin\":\"anonymous\",\"href\":\"https://cdn.cloudquery.io\",\"rel\":\"preconnect\"}],[\"$\",\"link\",null,{\"href\":\"https://cdn.cloudquery.io\",\"rel\":\"preconnect\"}]],[\"$\",\"$L2\",null,{}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{if(document.cookie.split('; ').some(function(r){return r.indexOf('cloudquery-cookie-consent=')===0})){var s=document.createElement('style');s.textContent='#cq-cookie-consent-banner{display:none!important}';document.head.appendChild(s);}}catch(e){}})();\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebSite\\\",\\\"description\\\":\\\"CloudQuery is the unified control plane for cloud operations. Sync, transform, and govern your cloud infrastructure data.\\\",\\\"name\\\":\\\"CloudQuery\\\",\\\"potentialAction\\\":{\\\"@type\\\":\\\"SearchAction\\\",\\\"query-input\\\":\\\"required name=search_term_string\\\",\\\"target\\\":{\\\"@type\\\":\\\"EntryPoint\\\",\\\"urlTemplate\\\":\\\"https://www.cloudquery.io/hub?q={search_term_string}\\\"}},\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"CloudQuery\\\",\\\"url\\\":\\\"https://www.cloudquery.io\\\"},\\\"url\\\":\\\"https://www.cloudquery.io\\\"}\"},\"type\":\"application/ld+json\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"initMode\":\"idle\",\"children\":[\"$\",\"$L7\",null,{\"theme\":\"$8\",\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{}],[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$c\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2lonyreq8one5.js\",\"async\":true}]],\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"$Lf\",null,{\"styles\":{\"html\":{\"scrollPaddingTop\":\"80px\"}}}],[\"$\",\"$L10\",null,{\"sx\":{\"flex\":\"1 1 auto\"},\"children\":[[\"$\",\"$L11\",null,{}],[\"$\",\"$L12\",null,{\"homePath\":\"/\",\"solutionsImage\":{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/media/solutions.2x2nnxlb3w1n_.webp\",\"width\":1280,\"height\":720,\"blurWidth\":8,\"blurHeight\":5,\"blurDataURL\":\"data:image/webp;base64,UklGRuoAAABXRUJQVlA4TN0AAAAvBwABAM1VICICHgiACQMAAIC9semrpxEOAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADinvlLAgAA8EAAchAAAADO//6DsybjgQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYImmyzDOfBwJwAgEAAHD+O6/07fEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiY3WdpF1/HHFwWa/sDm5+XbpEom8VAKYhMEfktdl7fbJY/Cd4fcH+ujfO55ttqJ6rrPvciwLvsC9F5JTofeO03OKDSLBtRYTIAA=\"},\"sx\":{\"bgcolor\":\"$undefined\"}}],\"$L13\",false,false,\"$L14\"]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],\"$L15\",\"$L16\"]}]}]}]}]}]}]]}]]}],{\"children\":[\"$L17\",{\"children\":[\"$L18\",{\"children\":[\"$L19\",{},null,false,null]},null,false,\"$1a\"]},null,false,null]},null,false,null],\"$L1b\",false]],\"m\":\"$undefined\",\"G\":[\"$1c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"V373Pgu4A9pSJgk_7qemW\"}\n1d:I[580720,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n1e:I[179372,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js\"],\"NotFoundHero\"]\n1f:I[524759,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js\"],\"NotFoundQuickLinks\"]\n20:I[825362,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n21:I[388699,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n22:I[329344,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js\"],\"default\"]\n23:I[931737,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n24:I[936246,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js\"],\"default\"]\n25:I[311588,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js\"],\"default\"]\n26:I[870039,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n27:I[918036,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n28:I[275326,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"Image\"]\n29:I[197244,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"DateTime\"]\n2e:I[178265,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\"],\"Footer\"]\n2f:I[641422,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"CookieConsentProvider\"]\n30:I[447342,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"Tracking\"]\n31:I[978027,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"Toaster\"]\n32:I[397402,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\"],\"SignupCTA\"]\n34:I[688265,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"OutletBoundary\"]\n35:\"$Sreact.suspense\"\n37:I[688265,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"ViewportBoundary\"]\n39:I[688265,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"MetadataBoundary\"]\n13:[\"$\",\"$L1d\",null,{\"component\":\"main\",\"sx\":{\"flex\":\"1 1 auto\",\"position\":\"relative\",\"zIndex\":1},\"children\":[[\"$\",\"$L1e\",null,{}],[\"$\",\"$L1f\",null,{}],[\"$\",\"$L1d\",null,{\"sx\":{\"bgcolor\":\"background.paper\",\"paddingY\":{\"md\":8,\"xs\":5}},\"children\":[\"$\",\"$L20\",null,{\"maxWidth\":\"lg\",\"children\":[[\"$\",\"$L10\",null,{\"spacing\":1,\"sx\":{\"alignItems\":\"center\",\"marginBottom\":4},\"children\":[[\"$\",\"$L21\",null,{\"sx\":{\"textAlign\":\"center\"},\"variant\":\"h5\",\"children\":\"Latest from the blog\"}],[\"$\",\"$L21\",null,{\"sx\":{\"color\":\"text.secondary\",\"textAlign\":\"center\"},\"variant\":\"body1\",\"children\":\"Insights on cloud operations, security, and infrastructure management\"}]]}],[\"$\",\"$L22\",null,{\"container\":true,\"spacing\":3,\"children\":[[\"$\",\"$L22\",\"cloudquery-apps-environments-data-exports.md\",{\"size\":{\"md\":4,\"sm\":6,\"xs\":12},\"children\":[\"$\",\"$L23\",null,{\"component\":\"article\",\"sx\":{\"height\":\"100%\"},\"children\":[\"$\",\"$L24\",null,{\"href\":\"/blog/cloudquery-apps-environments-data-exports\",\"sx\":{\"height\":\"100%\"},\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"CloudQuery Platform Adds Business Context and Scheduled Exports to Cloud Inventory\",\"component\":\"img\",\"height\":180,\"image\":\"/images/blog/cloudquery-apps-environments-data-exports/thumbnail.png\",\"sx\":{\"objectFit\":\"cover\"}}],[\"$\",\"$L26\",null,{\"children\":[\"$\",\"$L10\",null,{\"spacing\":1.5,\"children\":[[\"$\",\"$L21\",null,{\"component\":\"h3\",\"sx\":{\"WebkitBoxOrient\":\"vertical\",\"WebkitLineClamp\":\"2\",\"display\":\"-webkit-box\",\"overflow\":\"hidden\"},\"variant\":\"h6\",\"children\":\"CloudQuery Platform Adds Business Context and Scheduled Exports to Cloud Inventory\"}],[\"$\",\"$L21\",null,{\"sx\":{\"WebkitBoxOrient\":\"vertical\",\"WebkitLineClamp\":\"3\",\"color\":\"text.secondary\",\"display\":\"-webkit-box\",\"overflow\":\"hidden\"},\"variant\":\"body2\",\"children\":\"CloudQuery Platform now groups cloud resources into apps and environments, and lets you schedule automated data exports to your data warehouse on a cron.\"}],[\"$\",\"$L10\",null,{\"direction\":\"row\",\"spacing\":1.5,\"sx\":{\"alignItems\":\"center\"},\"children\":[[\"$\",\"$L27\",null,{\"slotProps\":{\"img\":{\"height\":28,\"loading\":\"lazy\",\"width\":28}},\"sx\":{\"height\":28,\"width\":28},\"variant\":\"circular\",\"children\":[\"$\",\"$L28\",null,{\"src\":\"/images/people/zrachidi.jpg\",\"alt\":\"Zeen Rachidi\",\"height\":28,\"width\":28,\"priority\":\"$undefined\",\"unoptimized\":\"$undefined\"}]}],[\"$\",\"$L21\",null,{\"sx\":{\"color\":\"text.secondary\"},\"variant\":\"body2\",\"children\":[\"Zeen Rachidi\",\" •\",\" \",[\"$\",\"$L29\",null,{\"date\":\"2026-08-31T00:00:00.000Z\",\"ssr\":true,\"type\":\"date\"}]]}]]}]]}]}]]}]}]}],[\"$\",\"$L22\",\"etl-benchmark-1-million-rows-2-seconds-macbook.md\",{\"size\":{\"md\":4,\"sm\":6,\"xs\":12},\"children\":[\"$\",\"$L23\",null,{\"component\":\"article\",\"sx\":{\"height\":\"100%\"},\"children\":[\"$\",\"$L24\",null,{\"href\":\"/blog/etl-benchmark-1-million-rows-2-seconds-macbook\",\"sx\":{\"height\":\"100%\"},\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"We benchmarked our ETL tool and synced 1 million rows in 2 seconds on a MacBook\",\"component\":\"img\",\"height\":180,\"image\":\"/images/blog/etl-benchmark-1-million-rows-2-seconds-macbook/thumbnail.png\",\"sx\":{\"objectFit\":\"cover\"}}],[\"$\",\"$L26\",null,{\"children\":[\"$\",\"$L10\",null,{\"spacing\":1.5,\"children\":[[\"$\",\"$L21\",null,{\"component\":\"h3\",\"sx\":{\"WebkitBoxOrient\":\"vertical\",\"WebkitLineClamp\":\"2\",\"display\":\"-webkit-box\",\"overflow\":\"hidden\"},\"variant\":\"h6\",\"children\":\"We benchmarked our ETL tool and synced 1 million rows in 2 seconds on a MacBook\"}],[\"$\",\"$L21\",null,{\"sx\":{\"WebkitBoxOrient\":\"vertical\",\"WebkitLineClamp\":\"3\",\"color\":\"text.secondary\",\"display\":\"-webkit-box\",\"overflow\":\"hidden\"},\"variant\":\"body2\",\"children\":\"We benchmarked our ETL tool and synced 1 million rows in 2 seconds on laptop hardware, which is 68% faster than enterprise platforms.\"}],[\"$\",\"$L10\",null,{\"direction\":\"row\",\"spacing\":1.5,\"sx\":{\"alignItems\":\"center\"},\"children\":[[\"$\",\"$L27\",null,{\"slotProps\":{\"img\":{\"height\":28,\"loading\":\"lazy\",\"width\":28}},\"sx\":{\"height\":28,\"width\":28},\"variant\":\"circular\",\"children\":[\"$\",\"$L28\",null,{\"src\":\"/images/people/joekarlsson.jpg\",\"alt\":\"Joe Karlsson\",\"height\":28,\"width\":28,\"priority\":\"$undefined\",\"unoptimized\":\"$undefined\"}]}],[\"$\",\"$L21\",null,{\"sx\":{\"color\":\"text.secondary\"},\"variant\":\"body2\",\"children\":[\"Joe Karlsson\",\" •\",\" \",[\"$\",\"$L29\",null,{\"date\":\"2026-08-27T00:00:00.000Z\",\"ssr\":true,\"type\":\"date\"}]]}]]}]]}]}]]}]}]}],[\"$\",\"$L22\",\"whats-new-in-the-cloudquery-platform-ai-assistant.md\",{\"size\":{\"md\":4,\"sm\":6,\"xs\":12},\"children\":[\"$\",\"$L23\",null,{\"component\":\"article\",\"sx\":{\"height\":\"100%\"},\"children\":[\"$\",\"$L24\",null,{\"href\":\"/blog/whats-new-in-the-cloudquery-platform-ai-assistant\",\"sx\":{\"height\":\"100%\"},\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"What's new in the CloudQuery Platform AI Assistant\",\"component\":\"img\",\"height\":180,\"image\":\"/images/blog/whats-new-in-the-cloudquery-platform-ai-assistant/thumbnail.png\",\"sx\":{\"objectFit\":\"cover\"}}],[\"$\",\"$L26\",null,{\"children\":[\"$\",\"$L10\",null,{\"spacing\":1.5,\"children\":[[\"$\",\"$L21\",null,{\"component\":\"h3\",\"sx\":{\"WebkitBoxOrient\":\"vertical\",\"WebkitLineClamp\":\"2\",\"display\":\"-webkit-box\",\"overflow\":\"hidden\"},\"variant\":\"h6\",\"children\":\"What's new in the CloudQuery Platform AI Assistant\"}],\"$L2a\",\"$L2b\"]}]}]]}]}]}]]}],\"$L2c\"]}]}],\"$L2d\"]}]\n"])</script><script>self.__next_f.push([1,"14:[\"$\",\"$L2e\",null,{}]\n15:[\"$\",\"$L2f\",null,{\"children\":[\"$\",\"$L30\",null,{}]}]\n16:[\"$\",\"$L31\",null,{}]\n17:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"$Lf\",null,{\"styles\":{\"html\":{\"scrollPaddingTop\":\"80px\"}}}],[\"$\",\"$L10\",null,{\"sx\":{\"flex\":\"1 1 auto\"},\"children\":[[\"$\",\"$L11\",null,{}],[\"$\",\"$L12\",null,{\"homePath\":\"/\",\"solutionsImage\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:children:props:children:props:children:2:props:notFound:0:props:children:1:props:children:1:props:solutionsImage\",\"sx\":{\"bgcolor\":\"$undefined\"}}],[\"$\",\"$L1d\",null,{\"component\":\"main\",\"sx\":{\"flex\":\"1 1 auto\",\"position\":\"relative\",\"zIndex\":1},\"children\":[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],false,[\"$\",\"$L32\",null,{}],[\"$\",\"$L2e\",null,{}]]}]]}]]}]\n18:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n19:[\"$\",\"$1\",\"c\",{\"children\":[\"$L33\",[[\"$\",\"script\",\"script-0\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L34\",null,{\"children\":[\"$\",\"$35\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@36\"}]}]]}]\n1b:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L37\",null,{\"children\":\"$L38\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L39\",null,{\"children\":[\"$\",\"$35\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L3a\"}]}]}],null]}]\n3b:I[17398,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js\"],\"default\"]\n3c:I[143330,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-nfealtg0d3j.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/13treh-54q1mx.js\"],\"NotFoundCta\"]\n1a:C\n2a:[\"$\",\"$L21\",null,{\"sx\":{\"WebkitBoxOrient\":\"vertical\",\"WebkitLineClamp\":\"3\",\"color\":\"text.secondary\",\"display\":\"-webkit-box\",\"overflow\":\"hidden\"},\"variant\":\"body2\",\"children\":\"The CloudQuery Platform AI Assistant just got a major upgrade enabling you to build reports from chat, revisit past conversations, manage policies conversationally, and more.\"}]\n2b:[\"$\",\"$L10\",null,{\"direction\":\"row\",\"spacing\":1.5,\"sx\":{\"alignItems\":\"center\"},\"children\":[[\"$\",\"$L27\",null,{\"slotProps\":{\"img\":{\"height\":28,\"loading\":\"lazy\",\"width\":28}},\"sx\":{\"height\":28,\"width\":28},\"variant\":\"circular\",\"children\":[\"$\",\"$L28\",null,{\"src\":\"/images/people/zrachidi.jpg\",\"alt\":\"Zeen Rachidi\",\"height\":28,\"width\":28,\"priority\":\"$undefined\",\"unoptimized\":\"$undefined\"}]}],[\"$\",\"$L21\",null,{\"sx\":{\"color\":\"text.secondary\"},\"variant\":\"body2\",\"children\":[\"Zeen Rachidi\",\" •\",\" \",[\"$\",\"$L29\",null,{\"date\":\"2026-07-16T00:00:00.000Z\",\"ssr\":true,\"type\":\"date\"}]]}]]}]\n2c:[\"$\",\"$L10\",null,{\"sx\":{\"alignItems\":\"center\",\"marginTop\":4},\"children\":[\"$\",\"$L3b\",null,{\"href\":\"/blog\",\"size\":\"large\",\"variant\":\"outlined\",\"children\":\"View all posts\"}]}]\n2d:[\"$\",\"$L3c\",null,{}]\n38:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"color-scheme\",\"content\":\"dark\"}]]\n3d:I[972834,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\"],\"IconMark\"]\n36:null\n3a:[[\"$\",\"title\",\"0\",{\"children\":\"Fourth Pillar of Observability: Config | CloudQuery Blog\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"Engineering\"}],[\"$\",\"link\",\"3\",{\"rel\":\"canonical\",\"href\":\"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"Fourth Pillar of Observability: Config | CloudQuery Blog\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap.\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:url\",\"content\":\"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:site_name\",\"content\":\"CloudQuery\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image\",\"content\":\"https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/thumbnail.png\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"10\",{\"property\":\"article:published_time\",\"content\":\"2025-04-17T00:00:00.000Z\"}],[\"$\",\"meta\",\"11\",{\"property\":\"article:author\",\"content\":\"https://twitter.com/yevgenypats\"}],[\"$\",\"meta\",\"12\",{\"property\":\"article:tag\",\"content\":\"Engineering\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:site\",\"content\":\"@cloudqueryio\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:creator\",\"content\":\"@cloudqueryio\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:title\",\"content\":\"Fourth Pillar of Observability: Config | CloudQuery Blog\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:description\",\"content\":\"Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap.\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image\",\"content\":\"https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/thumbnail.png\"}],[\"$\",\"link\",\"19\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.2k_x5-n-rslbw.ico\",\"sizes\":\"100x100\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"20\",{\"rel\":\"icon\",\"href\":\"/icon.png?icon.1v6qyz2_zqfa5.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"21\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?apple-icon.1zk3sfvhiw9nk.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$L3d\",\"22\",{}]]\n"])</script><script>self.__next_f.push([1,"3e:I[74775,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"BackButton\"]\n3f:I[445106,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"TableOfContents\"]\n40:I[51767,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n41:I[253257,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n42:I[423292,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"LightboxImage\"]\n33:[[\"$\",\"$L20\",null,{\"maxWidth\":\"xl\",\"sx\":{\"paddingBottom\":{\"md\":10,\"xs\":3},\"paddingTop\":{\"md\":8,\"xs\":3}},\"children\":[\"$\",\"$L10\",null,{\"direction\":{\"md\":\"row\",\"xs\":\"column\"},\"spacing\":{\"lg\":6,\"xs\":3},\"sx\":{\"position\":\"relative\"},\"children\":[[\"$\",\"$L1d\",null,{\"sx\":{\"flex\":{\"md\":\"0 0 200px\"},\"position\":\"relative\"},\"children\":[[\"$\",\"$35\",null,{\"fallback\":[\"$\",\"$L1d\",null,{\"sx\":{\"height\":36.5,\"marginBottom\":{\"md\":5,\"xs\":2},\"marginLeft\":{\"md\":-1,\"xs\":0}}}],\"children\":[\"$\",\"$L3e\",null,{}]}],false,[\"$\",\"$L3f\",null,{\"data\":[{\"content\":\"Logs, Metrics, and Traces - A Quick Recap\",\"lvl\":2,\"slug\":\"logs,-metrics,-and-traces---a-quick-recap\"},{\"content\":\"Config Data: The Fourth Pillar\",\"lvl\":2,\"slug\":\"config-data:-the-fourth-pillar\"},{\"content\":\"Why Config Data Matters\",\"lvl\":2,\"slug\":\"why-config-data-matters\"},{\"content\":\"Architecture for Config Data Monitoring\",\"lvl\":2,\"slug\":\"architecture-for-config-data-monitoring\"},{\"content\":\"Data Ingestion\",\"lvl\":3,\"slug\":\"data-ingestion\"},{\"content\":\"Storage\",\"lvl\":3,\"slug\":\"storage\"},{\"content\":\"Insights Generation\",\"lvl\":3,\"slug\":\"insights-generation\"},{\"content\":\"Relationships and Materialized Views\",\"lvl\":3,\"slug\":\"relationships-and-materialized-views\"},{\"content\":\"Integration with Traditional Observability\",\"lvl\":2,\"slug\":\"integration-with-traditional-observability\"},{\"content\":\"Challenges and Considerations\",\"lvl\":2,\"slug\":\"challenges-and-considerations\"},{\"content\":\"Wrap up\",\"lvl\":2,\"slug\":\"wrap-up\"}]}]]}],[\"$\",\"$L10\",null,{\"sx\":{\"maxWidth\":\"100%\",\"minWidth\":0},\"children\":[[\"$\",\"$L10\",null,{\"component\":\"article\",\"sx\":{\"paddingLeft\":{\"md\":3,\"xs\":0},\"paddingRight\":{\"md\":6,\"xl\":13,\"xs\":0}},\"children\":[[\"$\",\"$L10\",null,{\"direction\":\"row\",\"sx\":{\"alignItems\":\"center\",\"flexWrap\":\"wrap\",\"gap\":1.5,\"marginBottom\":2,\"position\":\"relative\"},\"children\":[[\"$\",\"$L40\",\"Engineering\",{\"label\":\"Engineering\",\"sx\":{\"paddingY\":\"7px\"},\"variant\":\"filled\"}]]}],[\"$\",\"$L21\",null,{\"component\":\"h1\",\"sx\":{\"marginBottom\":2},\"variant\":\"h4\",\"children\":\"The Lost Fourth Pillar of Observability - Config Data Monitoring\"}],[\"$\",\"$L10\",null,{\"direction\":\"row\",\"sx\":{\"alignItems\":\"center\",\"flexWrap\":\"wrap\",\"gap\":1.5,\"marginBottom\":4},\"children\":[[[\"$\",\"$1\",\"Yevgeny Pats\",{\"children\":[[\"$\",\"$L27\",null,{\"alt\":\"Yevgeny Pats\",\"slotProps\":{\"img\":{\"height\":32,\"loading\":\"lazy\",\"width\":32}},\"src\":\"/images/people/yevgenypats.jpg\",\"variant\":\"circular\"}],[\"$\",\"$L21\",null,{\"variant\":\"body2\",\"children\":[\"$\",\"$L41\",\"Yevgeny Pats\",{\"color\":\"inherit\",\"href\":\"/authors/yevgeny-pats\",\"underline\":\"always\",\"children\":\"Yevgeny Pats\"}]}]]}]],[\"$\",\"$L21\",null,{\"variant\":\"body2\",\"children\":\"•\"}],[\"$\",\"$L21\",null,{\"variant\":\"body2\",\"children\":[\"$\",\"$L29\",null,{\"date\":\"2025-04-17T00:00:00.000Z\",\"ssr\":true,\"type\":\"date\"}]}],[[\"$\",\"$L21\",null,{\"variant\":\"body2\",\"children\":\"•\"}],[\"$\",\"$L21\",null,{\"variant\":\"body2\",\"children\":[6,\" min read\"]}]]]}],[\"$\",\"$L10\",null,{\"spacing\":4,\"children\":[[\"$\",\"$L1d\",null,{\"sx\":{\"color\":\"text.secondary\",\"typography\":\"body1\",\"ul\":{\"margin\":0},\"whiteSpace\":\"pre-wrap\",\"lineHeight\":1.25},\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[\"A lot has been written about logs, metrics, and traces as they are indeed key components in observability, application, and system monitoring. One thing that is often overlooked, however, is \",[\"$\",\"$L21\",\"em-0\",{\"component\":\"span\",\"sx\":{\"fontStyle\":\"italic\"},\"children\":\"config data\"}],\" and its observability. In this blog, we'll explore what config data is, how it differs from logs, metrics, and traces, and discuss what architecture is needed to store this type of data and in which scenarios it provides value.\"]}],\"\\n\",[\"$\",\"$L21\",\"h2-0\",{\"component\":\"h2\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h5\",\"id\":\"logs,-metrics,-and-traces---a-quick-recap\",\"children\":[\"Logs, Metrics, and Traces - A Quick Recap\",[\"$\",\"$L41\",null,{\"href\":\"#logs,-metrics,-and-traces---a-quick-recap\",\"title\":\"Link to Logs, Metrics, and Traces - A Quick Recap\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}],\"\\n\",[\"$\",\"$L21\",\"p-1\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"For those that are new to the three pillars of observability, let’s do a quick recap:\"}],\"\\n\",[\"$\",\"$L21\",\"p-2\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[\"$\",\"$L42\",\"img-0\",{\"unoptimized\":false,\"alt\":\"Diagram showing the three traditional pillars of observability: Logs represented as JSON snippets, Metrics as a bar chart, and Traces as a timeline of request spans.\",\"fill\":true,\"priority\":true,\"sizes\":\"(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 744px\",\"src\":\"https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/image1.png\",\"triggerProps\":{\"sx\":{\"aspectRatio\":\"auto\",\"display\":\"block\",\"height\":\"100%\",\"maxWidth\":\"100%\"}}}]}],\"\\n\",\"$L43\",\"\\n\",\"$L44\",\"\\n\",\"$L45\",\"\\n\",\"$L46\",\"\\n\",\"$L47\",\"\\n\",\"$L48\",\"\\n\",\"$L49\",\"\\n\",\"$L4a\",\"\\n\",\"$L4b\",\"\\n\",\"$L4c\",\"\\n\",\"$L4d\",\"\\n\",\"$L4e\",\"\\n\",\"$L4f\",\"\\n\",\"$L50\",\"\\n\",\"$L51\",\"\\n\",\"$L52\",\"\\n\",\"$L53\",\"\\n\",\"$L54\",\"\\n\",\"$L55\",\"\\n\",\"$L56\",\"\\n\",\"$L57\",\"\\n\",\"$L58\",\"\\n\",\"$L59\",\"\\n\",\"$L5a\",\"\\n\",\"$L5b\",\"\\n\",\"$L5c\",\"\\n\",\"$L5d\",\"\\n\",\"$L5e\",\"\\n\",\"$L5f\",\"\\n\",\"$L60\",\"\\n\",\"$L61\",\"\\n\",\"$L62\",\"\\n\",\"$L63\",\"\\n\",\"$L64\",\"\\n\",\"$L65\",\"\\n\",\"$L66\",\"\\n\",\"$L67\"]}],\"$L68\"]}]]}],\"$L69\",\"$L6a\"]}]]}]}],\"$L6b\",\"$L6c\",\"$L6d\",null]\n"])</script><script>self.__next_f.push([1,"6e:I[89579,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n6f:I[174037,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n70:I[145336,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n71:I[157649,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"TableCard\"]\n72:I[379202,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n73:I[253884,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n74:I[300930,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n75:I[961693,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n76:I[990644,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"default\"]\n77:I[719282,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"BlogAuthorInfo\"]\n78:I[228346,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"ScrollToTop\"]\n79:I[361233,[\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3vxdq3s5s96x-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2fx6-6gfsvo45.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1atfeketpf8-1.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/20x65px7xii5-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3romtotp3lyxx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-9t8bl4syiuo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0utwr1s46vx1r.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2-4irhzkv5y9m.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/091iwo4agvt4e.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1zxv_9-dgq9vw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3u3wvup00cczt.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1wdg2vkm_tgie.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/29-219lp53jk3.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3nfqtoryeobdo.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3joo_9lesox5n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1z_hxooebyk6n.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0z-9prrbha2kv.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3l3mga4-8ivf6.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0sm05rb1po6-f.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/3oh1v-z0l2uhx.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/0ttct8r1u0kk-.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/132ed8wk-iffw.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2zpm86s2-d3km.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/2v6isos8ligz0.js\",\"https://cdn.cloudquery.io/website/mmmpsfi92/_next/static/immutable/chunks/1aqnd9-br_ou0.js\"],\"RelatedBlogList\"]\n43:[\"$\",\"$L21\",\"p-3\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Logs\"}],\": Detailed records of events that occur within your system. They provide information about specific occurrences, including timestamps, error messages, and other relevant details. Logs help with debugging and forensic analysis.\"]}]\n44:[\"$\",\"$L21\",\"p-4\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Metrics\"}],\": Numerical measurements collected at regular intervals. They help monitor system health, performance, and behavior over time. Examples include CPU usage, request rates, error rates, and response times.\"]}]\n45:[\"$\",\"$L21\",\"p-5\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Traces\"}],\": Records that follow a request as it moves through different services in a distributed system. Traces provide visibility into request flows, helping to identify bottlenecks and understand dependencies.\"]}]\n46:[\"$\",\"$L21\",\"p-6\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"The backend for such technologies is usually some sort of time-series database, and the type of data is usually what we call low cardinality data (it can be higher cardinality, but this typically becomes expensive and is advised against).\"}]\n47:[\"$\",\"$L21\",\"p-7\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"Another key aspect is that to get any of these metrics, you usually need to instrument the system - i.e., you need access to the application or the infrastructure so you can deploy an agent or add a Prometheus exporter.\"}]\n48:[\"$\",\"$L21\",\"h2-1\",{\"component\":\"h2\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h5\",\"id\":\"config-data:-the-fourth-pillar\",\"children\":[\"Config Data: The Fourth Pillar\",[\"$\",\"$L41\",null,{\"href\":\"#config-data:-the-fourth-pillar\",\"title\":\"Link to Config Data: The Fourth Pillar\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n49:[\"$\",\"$L21\",\"p-8\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"Infrastructure isn't limited to AWS EC2 instances but also includes IAM users, configurations from security tools, SaaS applications, and more. This configuration data differs from traditional observability data in several important ways:\"}]\n4a:[\"$\",\"$L6e\",\"ol-0\",{\"component\":\"ol\",\"disablePadding\":true,\"start\":\"$undefined\",\"sx\":{\"\u0026 .MuiListItem-root\":{\"display\":\"list-item\"},\"\u0026\u003eli::before\":{\"color\":\"text.secondary\",\"content\":\"counter(list) '.'\",\"counterIncrement\":\"list 1\",\"left\":-17,\"position\":\"absolute\",\"top\":11.5},\"\u0026\u003eli:first-of-type:before\":{\"counterIncrement\":\"none\"},\"counterReset\":\"list 1\",\"lineHeight\":\"0\",\"listStyle\":\"none\",\"paddingLeft\":3},\"children\":[\"\\n\",[\"$\",\"$L6f\",\"li-0\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Not instrumentable\"}],\": These systems cannot be instrumented directly, but they expose their configuration through APIs.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-1\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"High cardinality and relational\"}],\": The data typically has high cardinality and is highly relational. It also doesn't change as frequently as metrics like disk I/O on a server, as it's more focused on configuration states.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-2\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Lower frequency, higher detail\"}],\": The tradeoff we want to make here is less frequent collection but with higher cardinality and detail.\"]}]]}]}],\"\\n\"]}]\n4b:[\"$\",\"$L71\",\"table-0\",{\"children\":[\"$\",\"$L72\",null,{\"size\":\"small\",\"children\":[[\"$\",\"$L73\",\"thead-0\",{\"children\":[\"$\",\"$L74\",\"tr-0\",{\"children\":[[\"$\",\"$L75\",\"th-0\",{\"children\":\"Traditional Observability\"}],[\"$\",\"$L75\",\"th-1\",{\"children\":\"Config Data\"}]]}]}],[\"$\",\"$L76\",\"tbody-0\",{\"children\":[[\"$\",\"$L74\",\"tr-0\",{\"children\":[[\"$\",\"$L75\",\"td-0\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"High Frequency\"}],[\"$\",\"$L75\",\"td-1\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"Low Frequency\"}]]}],[\"$\",\"$L74\",\"tr-1\",{\"children\":[[\"$\",\"$L75\",\"td-0\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"Low Cardinality\"}],[\"$\",\"$L75\",\"td-1\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"High Cardinality\"}]]}],[\"$\",\"$L74\",\"tr-2\",{\"children\":[[\"$\",\"$L75\",\"td-0\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"Time-Series Storage\"}],[\"$\",\"$L75\",\"td-1\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"Relational Storage\"}]]}],[\"$\",\"$L74\",\"tr-3\",{\"children\":[[\"$\",\"$L75\",\"td-0\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"System Instrumentation\"}],[\"$\",\"$L75\",\"td-1\",{\"sx\":{\"whiteSpace\":\"pre-line\"},\"children\":\"API-Based Collection\"}]]}]]}]]}]}]\n4c:[\"$\",\"$L21\",\"h2-2\",{\"component\":\"h2\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h5\",\"id\":\"why-config-data-matters\",\"children\":[\"Why Config Data Matters\",[\"$\",\"$L41\",null,{\"href\":\"#why-config-data-matters\",\"title\":\"Link to Why Config Data Matters\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n4d:[\"$\",\"$L21\",\"p-9\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"Configuration data monitoring fills critical gaps in your observability strategy:\"}]\n4e:[\"$\",\"$L6e\",\"ol-1\",{\"component\":\"ol\",\"disablePadding\":true,\"start\":\"$undefined\",\"sx\":{\"\u0026 .MuiListItem-root\":{\"display\":\"list-item\"},\"\u0026\u003eli::before\":{\"color\":\"text.secondary\",\"content\":\"counter(list) '.'\",\"counterIncrement\":\"list 1\",\"left\":-17,\"position\":\"absolute\",\"top\":11.5},\"\u0026\u003eli:first-of-type:before\":{\"counterIncrement\":\"none\"},\"counterReset\":\"list 1\",\"lineHeight\":\"0\",\"listStyle\":\"none\",\"paddingLeft\":3},\"children\":[\"\\n\",[\"$\",\"$L6f\",\"li-0\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Security posture monitoring\"}],\": Track IAM permissions, security group rules, encryption settings, and other configuration items that impact your security posture.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-1\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Compliance tracking\"}],\": Monitor configurations against internal policies or external compliance requirements (SOC2, HIPAA, PCI-DSS, etc.).\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-2\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Cost optimization\"}],\": Identify misconfigurations leading to unnecessary costs, like over sized instances or unused resources.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-3\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Change management\"}],\": Detect and track configuration changes across your environment, providing visibility into who changed what and when.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-4\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Drift detection\"}],\": Identify when resources deviate from their expected or desired configurations.\"]}]]}]}],\"\\n\"]}]\n4f:[\"$\",\"$L21\",\"h2-3\",{\"component\":\"h2\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h5\",\"id\":\"architecture-for-config-data-monitoring\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Architecture for Config Data Monitoring\"}],[\"$\",\"$L41\",null,{\"href\":\"#architecture-for-config-data-monitoring\",\"title\":\"Link to Architecture for Config Data Monitoring\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n50:[\"$\",\"$L21\",\"p-10\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"Let's examine some key architectural decisions we made at CloudQuery for handling config data:\"}]\n51:[\"$\",\"$L21\",\"p-11\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[\"$\",\"$L42\",\"img-0\",{\"unoptimized\":false,\"alt\":\"Diagram of a Config Data Monitoring Architecture with four layers: Data Sources (AWS, GCP, Azure, SaaS Tools), Data Extraction Layer (API Connectors and ETL Pipelines), Storage Layer (SQL Database and Materialized Views), and Insights Layer (Security Dashboards, Compliance Reports, and Custom Queries).\",\"fill\":true,\"priority\":false,\"sizes\":\"(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 744px\",\"src\":\"https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/image3.png\",\"triggerProps\":{\"sx\":{\"aspectRatio\":\"auto\",\"display\":\"block\",\"height\":\"100%\",\"maxWidth\":\"100%\"}}}]}]\n52:[\"$\",\"$L21\",\"h3-0\",{\"component\":\"h3\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h6\",\"id\":\"data-ingestion\",\"children\":[\"Data Ingestion\",[\"$\",\"$L41\",null,{\"href\":\"#data-ingestion\",\"title\":\"Link to Data Ingestion\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n53:[\"$\",\"$L21\",\"p-12\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"First, the data extraction challenge is a different beast. We can't instrument these systems, so we need to create extractors (or ETL scripts), and the primary challenge is maintaining these connectors. Any system that wants to address this need must maintain high-quality connectors to various data sources.\"}]\n54:[\"$\",\"$L21\",\"p-13\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"The collection frequency can usually be daily, but sometimes it might need to be configurable for higher cadence depending on the criticality of the configuration.\"}]\n55:[\"$\",\"$L21\",\"h3-1\",{\"component\":\"h3\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h6\",\"id\":\"storage\",\"children\":[\"Storage\",[\"$\",\"$L41\",null,{\"href\":\"#storage\",\"title\":\"Link to Storage\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n56:[\"$\",\"$L21\",\"p-14\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"Due to the highly relational nature of the data obtained from APIs, we utilize a SQL database where you can create complex joins. NoSQL databases or time-series databases aren't optimized for this use case.\"}]\n57:[\"$\",\"$L21\",\"p-15\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"The tradeoff on frequency and cardinality here would be something like daily partitioning. Some extractors might run more frequently, but the snapshotting would still typically run daily; otherwise, data volume would explode.\"}]\n58:[\"$\",\"$L21\",\"h3-2\",{\"component\":\"h3\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h6\",\"id\":\"insights-generation\",\"children\":[\"Insights Generation\",[\"$\",\"$L41\",null,{\"href\":\"#insights-generation\",\"title\":\"Link to Insights Generation\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n59:[\"$\",\"$L21\",\"p-16\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"This is somewhat similar to how observability platforms solve the \\\"blank page syndrome\\\" of \\\"I have the data, now what do I monitor?\\\" We provide numerous insights out of the box, but we recognize that every organization has slightly different needs, and there is no one-size-fits-all rule in cloud governance. Therefore, customers can access the raw queries and modify them as well as add new custom data sources.\"}]\n5a:[\"$\",\"$L21\",\"h3-3\",{\"component\":\"h3\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h6\",\"id\":\"relationships-and-materialized-views\",\"children\":[\"Relationships and Materialized Views\",[\"$\",\"$L41\",null,{\"href\":\"#relationships-and-materialized-views\",\"title\":\"Link to Relationships and Materialized Views\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n5b:[\"$\",\"$L21\",\"p-17\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"One significant advantage of storing config data in a relational database is the ability to model and query the relationships between different configuration items. For example:\"}]\n5c:[\"$\",\"$L6e\",\"ul-0\",{\"disablePadding\":true,\"sx\":{\"\u0026 .MuiListItem-root\":{\"display\":\"list-item\"},\"li::before\":{\"color\":\"text.secondary\",\"content\":\"'• '\",\"left\":-16,\"position\":\"absolute\",\"top\":11},\"lineHeight\":\"0\",\"listStyle\":\"none\",\"paddingLeft\":3},\"children\":[\"\\n\",[\"$\",\"$L6f\",\"li-0\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":\"Which IAM roles have access to which S3 buckets?\"}]}],\"\\n\",[\"$\",\"$L6f\",\"li-1\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":\"Which security groups are associated with which instances?\"}]}],\"\\n\",[\"$\",\"$L6f\",\"li-2\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":\"How do your Kubernetes RBAC settings relate to your cloud IAM permissions?\"}]}],\"\\n\"]}]\n5d:[\"$\",\"$L21\",\"p-18\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"Materialized views can be used to pre-compute common relationship queries, improving performance for frequently requested insights.\"}]\n5e:[\"$\",\"$L21\",\"h2-4\",{\"component\":\"h2\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h5\",\"id\":\"integration-with-traditional-observability\",\"children\":[\"Integration with Traditional Observability\",[\"$\",\"$L41\",null,{\"href\":\"#integration-with-traditional-observability\",\"title\":\"Link to Integration with Traditional Observability\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n5f:[\"$\",\"$L21\",\"p-19\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"While config data serves as a fourth pillar, its true power emerges when integrated with traditional observability data:\"}]\n60:[\"$\",\"$L21\",\"p-20\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[\"$\",\"$L42\",\"img-0\",{\"unoptimized\":false,\"alt\":\"Diagram showing how logs, metrics, traces, and config data integrate into a unified observability model. Logs contribute context enrichment, metrics aid in root cause analysis, traces support performance correlation, and config data enables change impact analysis.\",\"fill\":true,\"priority\":false,\"sizes\":\"(max-width: 768px) 100vw, (max-width: 1200px) 60vw, 744px\",\"src\":\"https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/image2.png\",\"triggerProps\":{\"sx\":{\"aspectRatio\":\"auto\",\"display\":\"block\",\"height\":\"100%\",\"maxWidth\":\"100%\"}}}]}]\n61:[\"$\",\"$L6e\",\"ol-2\",{\"component\":\"ol\",\"disablePadding\":true,\"start\":\"$undefined\",\"sx\":{\"\u0026 .MuiListItem-root\":{\"display\":\"list-item\"},\"\u0026\u003eli::before\":{\"color\":\"text.secondary\",\"content\":\"counter(list) '.'\",\"counterIncrement\":\"list 1\",\"left\":-17,\"position\":\"absolute\",\"top\":11.5},\"\u0026\u003eli:first-of-type:before\":{\"counterIncrement\":\"none\"},\"counterReset\":\"list 1\",\"lineHeight\":\"0\",\"listStyle\":\"none\",\"paddingLeft\":3},\"children\":[\"\\n\",[\"$\",\"$L6f\",\"li-0\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Root cause analysis\"}],\": When an incident occurs, correlating metrics, logs, and traces with configuration changes can quickly identify the root cause.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-1\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Context enrichment\"}],\": Enhance your metrics and logs with configuration context (e.g., \\\"This spike in errors occurred after a configuration change to the load balancer\\\").\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-2\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Proactive monitoring\"}],\": Detect configuration changes that might lead to future performance issues or outages before they affect your metrics.\"]}]]}]}],\"\\n\"]}]\n62:[\"$\",\"$L21\",\"h2-5\",{\"component\":\"h2\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h5\",\"id\":\"challenges-and-considerations\",\"children\":[\"Challenges and Considerations\",[\"$\",\"$L41\",null,{\"href\":\"#challenges-and-considerations\",\"title\":\"Link to Challenges and Considerations\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n63:[\"$\",\"$L21\",\"p-21\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"Implementing config data monitoring comes with its own set of challenges:\"}]\n64:[\"$\",\"$L6e\",\"ol-3\",{\"component\":\"ol\",\"disablePadding\":true,\"start\":\"$undefined\",\"sx\":{\"\u0026 .MuiListItem-root\":{\"display\":\"list-item\"},\"\u0026\u003eli::before\":{\"color\":\"text.secondary\",\"content\":\"counter(list) '.'\",\"counterIncrement\":\"list 1\",\"left\":-17,\"position\":\"absolute\",\"top\":11.5},\"\u0026\u003eli:first-of-type:before\":{\"counterIncrement\":\"none\"},\"counterReset\":\"list 1\",\"lineHeight\":\"0\",\"listStyle\":\"none\",\"paddingLeft\":3},\"children\":[\"\\n\",[\"$\",\"$L6f\",\"li-0\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"API rate limiting\"}],\": Many services impose rate limits on their APIs, which can constrain how frequently you can collect configuration data.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-1\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Authentication and authorization\"}],\": Managing credentials and permissions for numerous systems requires careful security considerations.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-2\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Data volume management\"}],\": Even with less frequent collection, the high cardinality of configuration data can lead to significant storage requirements.\"]}]]}]}],\"\\n\",[\"$\",\"$L6f\",\"li-3\",{\"disableGutters\":true,\"sx\":{\"\u0026:last-child\":{\"marginBottom\":0},\"marginBottom\":1,\"padding\":0,\"position\":\"relative\"},\"children\":[\"$\",\"$L70\",null,{\"children\":[[\"$\",\"$L21\",\"p-0\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":[[\"$\",\"$L1d\",\"strong-0\",{\"component\":\"span\",\"sx\":{\"fontWeight\":\"bold\"},\"children\":\"Schema evolution\"}],\": APIs change over time, requiring adaptation of your data extraction and storage mechanisms.\"]}]]}]}],\"\\n\"]}]\n65:[\"$\",\"$L21\",\"h2-6\",{\"component\":\"h2\",\"sx\":{\"color\":\"text.primary\",\"marginTop\":1},\"variant\":\"h5\",\"id\":\"wrap-up\",\"children\":[\"Wrap up\",[\"$\",\"$L41\",null,{\"href\":\"#wrap-up\",\"title\":\"Link to Wrap up\",\"underline\":\"none\",\"children\":[\" \",\"#\"]}]]}]\n66:[\"$\",\"$L21\",\"p-22\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"While logs, metrics, and traces remain crucial components of observability, configuration data represents a fourth pillar that provides unique insights into your systems. By implementing comprehensive config data monitoring, organizations can enhance their security posture, ensure compliance, optimize costs, and gain deeper understanding of their infrastructure.\"}]\n67:[\"$\",\"$L21\",\"p-23\",{\"component\":\"div\",\"variant\":\"body1\",\"children\":\"As systems grow more complex and distributed, the value of configuration data monitoring will only increase. Organizations that recognize this fourth pillar and incorporate it into their observability strategy will be better positioned to understand, troubleshoot, and optimize their infrastructure in an increasingly complex world.\"}]\n68:[\"$\",\"$L10\",null,{\"spacing\":2,\"children\":[[\"$\",\"$L23\",\"Yevgeny Pats\",{\"children\":[\"$\",\"$L26\",null,{\"children\":[\"$\",\"$L77\",null,{\"author\":{\"image_url\":\"/images/people/yevgenypats.jpg\",\"name\":\"Yevgeny Pats\",\"social\":{\"twitter\":\"https://twitter.com/yevgenypats\",\"linkedin\":\"https://www.linkedin.com/in/yevgeny-pats-5973328b/\"},\"short_bio\":\"Yevgeny Pats is the Co-Founder \u0026 CEO at CloudQuery. Prior to establishing CloudQuery, he successfully founded and exited other startups. He has a background in software engineering and cybersecurity.\",\"biography\":\"Yevgeny is the co-founder and CEO of CloudQuery and brings a decade of software engineering and startup expertise to the business. Prior to the formation of CloudQuery, Yevgeny founded other software businesses and saw them through to exit. As CloudQuery has grown, Yevgeny has remained a hand-on developer and works closely with the software engineering team on CloudQuery’s development.\",\"key\":\"yevgenypats\",\"slug\":\"yevgeny-pats\"},\"insideBlogPost\":true}]}]}]]}]\n69:[\"$\",\"$L78\",null,{}]\n7a:T3a26,\n\n\n:::callout{type=\"info\"}\n**TL;DR:**\nCloudQuery achieved 163,489 rows/sec and 841.9 GB/hour data throughput on an 11-core MacBook - 68% faster than Fivetran's enterprise infrastructure benchmarks. Our Go-based architecture with Apache Arrow integration delivers multi-cloud extraction at 42 resources/sec across AWS, GCP, and Azure simultaneously, using just 47% CPU and 75MB memory. The complete benchmark methodology is [open-source](http://github.com/cloudquery/benchmark) and reproducible on any hardware, from laptops to enterprise clusters.\n:::\n\nWe ran comprehensive performance benchmarks to test CloudQuery's data synchronization capabilities against industry leaders - and the results exceeded our expectations. This post breaks down our methodology, presents the complete performance data, and explains the architectural choices that enable CloudQuery to outperform managed ETL tools on standard hardware.\n\nWe think that the real story here isn't just the data movement speeds - it's that we achieved superior throughput on small, affordable hardware compared to enterprise infrastructure. CloudQuery delivers best-in-class performance whether you're running dev pipelines locally on your MacBook, managing enterprise Kubernetes clusters in the cloud, or deploying on your hardware at any scale.\n\nHere's how the numbers break down: We pushed 163,489 rows per second through our data pipeline while processing 841.9 GB/hour on an 11-core MacBook. For comparison, [Fivetran's latest published benchmarks](https://www.fivetran.com/benchmarking) show 500+ GB/hour throughput at roughly 105,000-117,000 rows/sec on enterprise GCP infrastructure with 16 cores and 128GB RAM - that's 68% higher throughput on hardware you probably have sitting on your desk.\n\n\n\n## Why data movement performance matters\n\nSlow data synchronization creates cascading infrastructure costs. We've observed engineering teams waiting 8 hours for inventory updates because their ETL tool couldn't keep pace with API changes across three cloud providers. Meanwhile, they're paying for idle compute resources and missing SLA windows.\n\nPerformance impacts extend beyond operational efficiency. When you're syncing cloud infrastructure data, every minute of delay affects monitoring, compliance, and cost management systems. Slow data sync results in stale dashboards, missed security alerts, and finance teams working with outdated spend data.\n\nFor teams pushing the envelope of real-time data delivery for financial or AI use cases, CloudQuery’s can be the difference between winning and losing. When the stakes are high, speed matters.\n\nWe measured our performance to demonstrate that modern architecture choices can deliver enterprise-grade performance on any hardware, from laptops to data centers.\n\n## Benchmark methodology and reproducibility\n\nOur benchmark follows rigorous testing principles with complete transparency. The entire testing framework is open source, allowing independent verification of our performance claims.\n\n### Testing Framework Architecture\n\nThese benchmarks were executed on a MacBook Pro with an M3 processor and 36GB of RAM, running macOS Sequoia. This consumer-grade hardware provides a consistent baseline for performance measurement and represents typical development environments.\n\nOur benchmark framework implements comprehensive performance monitoring with process-specific resource tracking. Rather than measuring system-wide metrics, we monitor CloudQuery's specific CPU and memory utilization during execution. This approach isolates CloudQuery's performance characteristics from background system processes.\n\nThe framework supports:\n\n**Source diversity**: File, AWS, GCP, Azure, PostgreSQL, ClickHouse, SQLite\n**Destination compatibility**: SQLite, PostgreSQL, ClickHouse with destination-specific optimizations\n**Concurrent execution**: Configurable worker pools for parallel source processing\n**Resource monitoring**: Process-specific CPU and memory tracking with 100ms sampling intervals\n**Dual throughput metrics**: Both rows/second and MB/second (GB/hour) measurement\n**Comprehensive reporting**: CSV and Markdown output with detailed system specifications\n\n#### Performance Measurement Methodology\n\nOur calculations follow standard throughput measurement practices:\n\n```python\nrows_per_second = total_rows / (end_time - start_time)\nmb_per_second = total_data_mb / (end_time - start_time)\ngb_per_hour = mb_per_second * 3.6\ncpu_percent = process.cpu_percent(interval=0.1)\nmemory_mb = process.memory_info().rss / 1024 / 1024\n```\n\nResource utilization data is collected at 100ms intervals throughout execution, providing granular performance insights without introducing measurement overhead that could affect results.\n\n#### Comparative Performance Analysis\n\n| Metric | CloudQuery (MacBook) | Industry Benchmarks\\* | Configuration |\n| ------------- | -------------------- | --------------------- | -------------------- |\n| **Rows/sec** | 163,489 | 50,000-111,000 | 11-core M3 processor |\n| **GB/hour** | 841.9 | 500+ (verified) | Consumer hardware |\n| **CPU usage** | 47% | Not disclosed | Headroom available |\n| **Memory** | 12GB peak | Unknown | 33% of available |\n\n\\*Industry performance varies significantly. Independent analysis shows processing time differences of 19x between fastest and slowest ETL tools for equivalent workloads.\n\n\n\n#### Architectural Performance Factors\n\nCloudQuery's performance characteristics result from specific architectural decisions that create multiplicative performance benefits:\n\n**Concurrency optimization**: Go's goroutine model utilizes 2KB stack allocation versus megabytes for OS threads, enabling thousands of concurrent operations without memory overhead constraints.\n\n**Memory layout efficiency**: Apache Arrow integration provides columnar memory format enabling SIMD vectorization. This architecture processes 64-byte buffers with single CPU instructions rather than 24+ scalar operations, delivering 10-100x performance improvements in real-world implementations.\n\n**Zero-copy operations**: Arrow eliminates serialization overhead between processes while maintaining 64-byte memory alignment that matches CPU cache boundaries for optimal memory access patterns.\n\n**I/O optimization**: HTTP/2 connection multiplexing reduces network overhead, while SQLite WAL mode with memory mapping minimizes disk I/O bottlenecks.\n\nThese architectural choices compound to produce the observed throughput performance on consumer hardware.\n\n#### Benchmark Reproducibility\n\nComplete benchmark implementation is available in the [benchmark repository](https://github.com/cloudquery/benchmark). The repository includes:\n\n- Complete configuration files used in testing\n- Test data generators for consistent dataset creation\n- Exact execution scripts and parameters\n- Multiple iteration framework with statistical averaging\n\n```bash\ngit clone https://github.com/cloudquery/benchmark\ncd benchmark\npython benchmark.py --source file --dest clickhouse\n```\n\nOur methodology prioritizes reproducible results with consistent hardware specifications and realistic workload patterns. The framework validates performance against actual customer use cases rather than synthetic benchmarks alone.\n\n#### Performance Validation\n\nThe demonstrated throughput on consumer hardware exceeds enterprise cloud infrastructure performance in published benchmarks. This performance profile maintains consistency across deployment scenarios, from development environments to production data centers, due to the architectural optimizations that reduce dependency on specialized hardware configurations.\n\n#### Performance comparison: small hardware vs enterprise cloud\n\n| Metric | CloudQuery (MacBook) | Fivetran (GCP Enterprise) | Advantage |\n| ------------- | -------------------- | ------------------------- | ----------------- |\n| **Rows/sec** | 163,489 | ~111,000 | 47% faster |\n| **GB/hour** | 841.9 | 500+ | 68% faster |\n| **Hardware** | 11-core laptop | 16-core cloud server | Smaller footprint |\n| **CPU usage** | 47% | Not disclosed | Room to scale |\n\n\n\nThe key here is that we can achieve superior throughput on consumer laptop hardware compared to enterprise cloud infrastructure. This performance profile enables consistent results across any deployment scenario, from development environments to production data centers.\n\n## What makes CloudQuery fast\n\n### Go concurrency architecture\n\nCloudQuery leverages Go's goroutine model for lightweight concurrency. Each goroutine uses approximately 2KB of stack space compared to megabytes for OS threads, enabling thousands of concurrent operations with minimal resource overhead. This architecture scales effectively whether running on a laptop or a 64-core server.\n\n### Apache Arrow integration\n\nApache Arrow's columnar memory format provides 10-100x performance improvements through SIMD vectorization. Instead of row-wise processing, we handle entire 64-byte buffers with single CPU instructions. Arrow's zero-copy data access eliminates serialization overhead between processes, creating genuine zero-copy data movement from source to destination.\n\n\n\n## Multi-cloud performance testing results\n\nOur benchmark framework tests real-world multi-cloud extraction performance across AWS, GCP, and Azure simultaneously on laptop hardware. Unlike traditional data integration tools that serialize cloud provider access, CloudQuery's architecture enables concurrent extraction from multiple cloud APIs.\n\nMulti-cloud benchmark results (MacBook hardware):\n\n| Cloud Provider | Resources Extracted | Throughput | Processing Time | CPU Usage |\n| -------------- | ------------------- | ---------- | --------------- | --------- |\n| AWS | 1,863 resources | 36.33/sec | 51.28s | 10.2% |\n| Azure | 742 resources | 41.62/sec | 17.83s | 6.3% |\n| GCP | 109 resources | 8.23/sec | 13.25s | 7.2% |\n\nThese results demonstrate production-grade multi-cloud data extraction running on consumer laptop hardware, with CPU usage remaining below 11% across all cloud providers. Most enterprise ETL platforms require dedicated cloud infrastructure to achieve comparable multi-cloud processing capabilities.\n\n### Multi-cloud optimization approach\n\nCloudQuery treats each cloud provider as an independent system with separate rate limits and API patterns. Our architecture respects these constraints while maximizing concurrent utilization:\n\n- **AWS rate limits:** 20 requests/sec sustained, burst capacity up to 100\n- **Azure rate limits:** Variable by subscription and resource type\n- **GCP rate limits:** 10 requests/sec sustained, service-specific variations\n\nThe variation in resource counts reflects different infrastructure footprints in each cloud, while the consistent low CPU usage demonstrates efficient resource utilization across all providers.\n\nThis concurrent multi-cloud approach delivers significant advantages over tools that process cloud providers sequentially, reducing total extraction time and enabling real-time infrastructure visibility across hybrid cloud environments.\n\n## Architecture advantages over enterprise ETL tools\n\n### Specialized cloud infrastructure focus\n\nCloudQuery is purpose-built for cloud infrastructure data extraction and management. This specialization enables architectural decisions that wouldn't work for general-purpose data integration, including optimizations for cloud resource relationships and API patterns.\n\n### Resource efficiency\n\nOur benchmark demonstrates 47% CPU usage and 75.7MB memory consumption on laptop hardware while outperforming enterprise ETL platforms. Traditional enterprise tools typically require dedicated cloud infrastructure and significantly more resources to achieve comparable throughput.\n\n\n\n\n\n### Self-hosted performance advantages\n\nCloudQuery processes data entirely on your infrastructure, eliminating network overhead to vendor-hosted processing. This approach avoids the latency and bottlenecks inherent in vendor-routed data processing.\n\n## CloudQuery by the numbers\n\n\\*All metrics achieved on laptop hardware.\n\n**163,489 rows/sec**\nPeak database throughput (47% faster than enterprise ETL).\n**841.9 GB/hour**\nData processing throughput (68% faster than Fivetran's enterprise setup)\n\n**75.7MB memory**\nLightweight footprint during operation\n\n**100MB binary**\nComplete deployment package size\n\n**93% efficiency**\nAPI utilization under cloud provider rate limits\n\n**Verify these results yourself:** Our complete benchmark methodology, test configurations, and measurement scripts are available in [our open-source repository](https://github.com/cloudquery/benchmark). See how we can improve and how much more you can squeeze out of our benchmarks. The methodology, configurations, and code enable independent verification on any hardware.\n\nData integration requires more engineering focus and less vendor dependency. We built CloudQuery to deliver superior performance on any hardware - from laptops to enterprise infrastructure - because your data pipeline performance shouldn't require expensive cloud infrastructure to beat industry benchmarks.\n\n## Resources\n\n- [CloudQuery benchmark repository](https://github.com/cloudquery/benchmark)\n- [CloudQuery documentation](/docs/platform/introduction)\n- [Performance tuning guide](https://www.cloudquery.io/docs/cli/advanced/performance-tuning)\n7b:T7a27,"])</script><script>self.__next_f.push([1,"\n\n\n:::callout{type=\"info\"}\n**TL;DR:**\n3NF minimizes data redundancy and is the standard for transactional (OLTP) databases. Star schema denormalizes data into fact and dimension tables for fast analytical (OLAP) queries. Most teams use both: 3NF in source systems and star schema in the warehouse, connected by an ELT pipeline with tools like [CloudQuery Platform](https://www.cloudquery.io/) and [dbt](https://www.getdbt.com/).\n:::\n\nThird Normal Form (3NF) and star schema are two fundamentally different ways to organize data. One optimizes for write consistency, the other for read speed. Choosing the wrong one costs you either query performance or data integrity.\n\nThis guide covers what each schema is, how they differ in practice, and when to pick one over the other, with SQL examples and references to how modern cloud warehouses handle both.\n\n## What Is Third Normal Form (3NF)?\n\n:::callout{type=\"info\"}\n**Third Normal Form (3NF)** is a level of database normalization that eliminates redundancy by ensuring every non-key column depends only on the primary key — not on other non-key columns. In practice, a table in 3NF stores each fact exactly once. If you change a customer's city, you update one row in one table and the change is reflected everywhere. 3NF is the standard schema design for transactional (OLTP) databases.\n:::\n\nThird Normal Form is a database normalization level defined by [Edgar F. Codd in 1971](https://en.wikipedia.org/wiki/Third_normal_form). A table is in 3NF when it meets three conditions:\n\n1. **First Normal Form (1NF):** Every column holds atomic (indivisible) values, and each row is unique.\n2. **Second Normal Form (2NF):** Every non-key column depends on the entire primary key, not just part of it.\n3. **Third Normal Form (3NF):** No non-key column depends on another non-key column. All non-key attributes depend directly on the primary key, with no [transitive dependencies](https://www.geeksforgeeks.org/dbms/third-normal-form-3nf/).\n\nIn practice, 3NF means splitting data across multiple related tables so that each fact is stored exactly once.\n\n### What Does a 3NF Schema Look Like?\n\nConsider an e-commerce system tracking orders. In 3NF, we separate customers, products, and orders into distinct tables:\n\n**customers**\n\n| customer_id | name | email | city |\n| ----------- | ------------ | ----------------- | ------- |\n| 1 | Alice Chen | alice@example.com | Seattle |\n| 2 | Bob Martinez | bob@example.com | Austin |\n\n**products**\n\n| product_id | product_name | category | unit_price |\n| ---------- | -------------- | ----------- | ---------- |\n| 101 | Wireless Mouse | Electronics | 29.99 |\n| 102 | Standing Desk | Furniture | 499.00 |\n\n**orders**\n\n| order_id | customer_id | product_id | quantity | order_date |\n| -------- | ----------- | ---------- | -------- | ---------- |\n| 5001 | 1 | 101 | 2 | 2026-01-15 |\n| 5002 | 2 | 102 | 1 | 2026-01-16 |\n\nIf Alice moves from Seattle to Portland, we update exactly one row in the `customers` table. No other table is affected, and there is no risk of inconsistent city values appearing in different places.\n\n### What Are the Advantages of 3NF?\n\n- **No data redundancy.** Each fact is stored once, which reduces storage and eliminates update anomalies ([Codd, 1972](https://en.wikipedia.org/wiki/Database_normalization)).\n- **Strong data integrity.** Foreign keys and constraints enforce consistency at the database level.\n- **Fast writes.** Inserting or updating a single record touches one table, making 3NF the standard for [OLTP (Online Transaction Processing) workloads](https://dev.to/joanwanjiru/recommendations-for-normalization-between-olap-vs-oltp-systems-1ea9).\n- **Natural fit for application code.** ORMs (Object-Relational Mappers) map directly to normalized tables, which reduces cognitive load for developers.\n\n### What Are the Disadvantages of 3NF?\n\n- **Slower analytical queries.** Answering a business question often requires joining three or more tables, and join performance degrades with table count and row volume.\n- **Higher query complexity.** Analysts need to understand the full table relationship graph to write correct queries.\n- **Not optimized for aggregation.** Summing, grouping, and filtering across normalized tables is more expensive than querying a single wide table.\n\n## What Is a Star Schema?\n\nA star schema is a [dimensional modeling](https://www.databricks.com/glossary/star-schema) approach developed by [Ralph Kimball in the 1990s](https://en.wikipedia.org/wiki/Ralph_Kimball). It organizes data into two types of tables:\n\n- **Fact tables** store quantitative measurements (revenue, quantity, duration) along with foreign keys to dimension tables. Each row represents a business event.\n- **Dimension tables** store descriptive attributes (who, what, where, when) used to filter and group facts. Dimensions are intentionally [denormalized](https://celerdata.com/glossary/normalization-vs-denormalization-the-trade-offs-you-need-to-know) into wide tables to reduce joins.\n\nThe name \"star schema\" comes from the shape of the entity-relationship diagram: a central fact table surrounded by dimension tables, forming a star.\n\n### What Does a Star Schema Look Like?\n\nUsing the same e-commerce data:\n\n**fact_orders** (fact table)\n\n| order_key | customer_key | product_key | date_key | quantity | revenue |\n| --------- | ------------ | ----------- | -------- | -------- | ------- |\n| 5001 | 1 | 101 | 20260115 | 2 | 59.98 |\n| 5002 | 2 | 102 | 20260116 | 1 | 499.00 |\n\n**dim_customer** (dimension table)\n\n| customer_key | name | email | city | state | region |\n| ------------ | ------------ | ----------------- | ------- | ---------- | ------ |\n| 1 | Alice Chen | alice@example.com | Seattle | Washington | West |\n| 2 | Bob Martinez | bob@example.com | Austin | Texas | South |\n\n**dim_product** (dimension table)\n\n| product_key | product_name | category | subcategory | unit_price |\n| ----------- | -------------- | ----------- | ----------- | ---------- |\n| 101 | Wireless Mouse | Electronics | Peripherals | 29.99 |\n| 102 | Standing Desk | Furniture | Office | 499.00 |\n\n**dim_date** (dimension table)\n\n| date_key | full_date | year | quarter | month | day_of_week |\n| -------- | ---------- | ---- | ------- | ----- | ----------- |\n| 20260115 | 2026-01-15 | 2026 | 1 | 1 | Thursday |\n| 20260116 | 2026-01-16 | 2026 | 1 | 1 | Friday |\n\nNotice that `dim_customer` includes `state` and `region` directly in the table rather than in a separate `locations` table. This denormalization is intentional: it eliminates a join at query time.\n\n### What Are the Advantages of Star Schema?\n\n- **Fast reads.** Queries typically join the fact table to one or two dimensions, versus three-plus joins in 3NF. Benchmarks from [Fivetran show a 25-50% improvement](https://www.fivetran.com/blog/star-schema-vs-obt) in query response time with denormalized structures across Redshift, Snowflake, and BigQuery.\n- **Simple queries.** Analysts can write straightforward SQL without needing to understand the full normalized schema.\n- **BI tool compatibility.** Tools like Tableau, Looker, and Power BI are [designed to work with star schemas](https://learn.microsoft.com/en-us/power-bi/guidance/star-schema), automatically recognizing fact and dimension relationships.\n- **Predictable performance.** The flat structure makes query execution plans simpler and more consistent.\n\n### What Are the Disadvantages of Star Schema?\n\n- **Data redundancy.** Denormalized dimensions duplicate data. If \"Electronics\" gets renamed to \"Consumer Electronics,\" every row with that value needs updating.\n- **Slower writes.** Loading data requires populating dimensions first, then inserting facts with the correct foreign keys.\n- **ETL dependency.** Star schemas require a transformation pipeline to convert source data into the dimensional model.\n\n## How Do 3NF and Star Schema Queries Compare?\n\nHere is a concrete example. We want total revenue by product category for Q1 2026.\n\n**3NF query (3 tables, 2 joins):**\n\n```sql\nSELECT\n p.category,\n SUM(o.quantity * p.unit_price) AS total_revenue\nFROM orders o\nJOIN products p ON o.product_id = p.product_id\nWHERE o.order_date \u003e= '2026-01-01'\n AND o.order_date \u003c '2026-04-01'\nGROUP BY p.category\nORDER BY total_revenue DESC;\n```\n\n**Star schema query (3 tables, 2 joins):**\n\n```sql\nSELECT\n dp.category,\n SUM(f.revenue) AS total_revenue\nFROM fact_orders f\nJOIN dim_product dp ON f.product_key = dp.product_key\nJOIN dim_date dd ON f.date_key = dd.date_key\nWHERE dd.year = 2026\n AND dd.quarter = 1\nGROUP BY dp.category\nORDER BY total_revenue DESC;\n```\n\nThe star schema query is shorter and more readable for two reasons:\n\n1. **Revenue is pre-calculated** in the fact table, so there is no need to multiply quantity by price at query time.\n2. **Date filtering uses integer comparisons** (year and quarter) instead of timestamp range scans.\n\nOn large datasets (hundreds of millions of rows), the [join reduction and integer-based filtering](https://motherduck.com/learn-more/star-schema-data-warehouse-guide/) in star schemas typically produce faster query plans in columnar warehouses.\n\n## What Is a Snowflake Schema?\n\nA snowflake schema is a [variation of the star schema](https://www.datacamp.com/blog/star-schema-vs-snowflake-schema) where dimension tables are partially normalized. Instead of storing all attributes in a single dimension table, related attributes are split into sub-dimension tables.\n\nFor example, instead of putting `category` and `subcategory` directly in `dim_product`, a snowflake schema creates a separate `dim_category` table:\n\n**dim_product** (snowflaked)\n\n| product_key | product_name | category_key | unit_price |\n| ----------- | -------------- | ------------ | ---------- |\n| 101 | Wireless Mouse | 10 | 29.99 |\n\n**dim_category**\n\n| category_key | category | subcategory |\n| ------------ | ----------- | ----------- |\n| 10 | Electronics | Peripherals |\n\nThis reduces storage for repeated category values and makes category updates easier, but adds an extra join to every query that needs category data. [Snowflake schemas use less storage space](https://www.integrate.io/blog/snowflake-schemas-vs-star-schemas-what-are-they-and-how-are-they-different/) than star schemas for dimension data, at the cost of more complex queries and slightly slower reads.\n\nIn practice, most teams today [use star schemas for their analytical marts](https://www.montecarlodata.com/blog-star-schema-vs-snowflake-schema/) and reserve snowflake schemas for cases where dimension tables have millions of rows or change frequently.\n\n## What About One Big Table (OBT)?\n\nA growing number of teams skip the star schema entirely and flatten everything into a single wide table — sometimes called [One Big Table (OBT)](https://www.fivetran.com/blog/star-schema-vs-obt). Instead of joining a fact table to multiple dimensions at query time, an OBT pre-joins all dimensions into one denormalized table during the transformation step.\n\nThe appeal is straightforward: no joins at all. Every query hits one table, which makes SQL trivial and eliminates join-related performance issues. Fivetran's benchmarks show OBT [outperforms star schema by 25-50% on average](https://www.fivetran.com/blog/star-schema-vs-obt) across BigQuery, Snowflake, and Redshift, with BigQuery showing the largest gap (49% faster) because its parallel execution engine handles wide tables particularly well.\n\nThe trade-offs are real, though. OBTs duplicate dimension data across every row, which increases storage costs and makes updates harder. If a customer's city changes, you need to update every row that references that customer — not one row in a dimension table. OBTs also become unwieldy when you have many dimension attributes; a table with 200+ columns is harder to navigate than a star schema with clear fact/dimension separation.\n\nOBT works well when:\n\n- Your warehouse is columnar (BigQuery, Snowflake, Redshift) and handles wide tables efficiently\n- Your queries are read-heavy with few or no updates to historical data\n- Your team values query speed and SQL clarity over storage efficiency\n- You have a reliable transformation pipeline (dbt) rebuilding the table on a schedule\n\nFor most teams, the choice comes down to: star schema if you need a balance of flexibility and performance, OBT if you want maximum query speed and your data pipeline can handle the rebuild cost.\n\n## When Should You Use 3NF vs Star Schema?\n\nThe choice depends on your workload:\n\n| Factor | 3NF | Star Schema |\n| -------------------- | ----------------------------------------- | --------------------------------------- |\n| **Primary workload** | OLTP (transactions, application backends) | OLAP (analytics, reporting, dashboards) |\n| **Optimized for** | Write speed, data integrity | Read speed, query simplicity |\n| **Data redundancy** | Minimal | Intentional duplication in dimensions |\n| **Query complexity** | Higher (many joins) | Lower (fewer joins, pre-aggregated) |\n| **Schema changes** | Easier to add new entities | Requires ETL pipeline updates |\n| **Best for** | Application databases, source systems | Data warehouses, BI reporting |\n\nMost organizations use both. The application database runs in 3NF for transactional consistency, and a separate data warehouse uses a star schema for analytics. The connection between the two is an [ELT pipeline](https://www.getdbt.com/blog/data-transformation-in-data-warehouse) that extracts data from source systems, loads it into the warehouse, and transforms it into dimensional models.\n\n## How Does the Modern Data Stack Handle This?\n\nThe split between 3NF source systems and star schema warehouses is well-established, but the tools and patterns have shifted significantly since 2024.\n\n### Cloud Warehouses Favor Denormalization\n\nModern columnar warehouses like [BigQuery, Snowflake, Redshift, and ClickHouse](https://clickhouse.com/resources/engineering/top-5-cloud-data-warehouses) are optimized for scanning wide tables rather than joining normalized ones. Their architectures, including columnar storage, compression, and query optimizers, handle denormalized data more efficiently than row-oriented databases that 3NF was originally designed for.\n\nBigQuery in particular shows a [49% average improvement in query response time](https://www.fivetran.com/blog/star-schema-vs-obt) with denormalized tables versus star schemas, because its massively parallel execution engine benefits from fewer shuffles across nodes.\n\nThat said, 3NF is still the right choice for your source systems. The write-optimized, consistency-first properties of normalized schemas are exactly what transactional applications need.\n\n### dbt and the Transformation-First Approach\n\n[dbt (data build tool)](https://www.getdbt.com/blog/data-transformation-in-data-warehouse) has become the standard way to transform 3NF source data into star schemas inside the warehouse. dbt encourages a layered modeling pattern:\n\n1. **Staging models** clean and rename raw source tables (still roughly 3NF).\n2. **Intermediate models** combine and enrich staging tables.\n3. **Mart models** produce the final star schema or denormalized tables that analysts query.\n\nThis ELT pattern, where you load raw data first and transform it inside the warehouse, has replaced the older ETL approach for most cloud-native teams. The warehouse's compute power handles the transformation work, and dbt provides version control, testing, and documentation for the transformation logic.\n\n### Data Lakehouses and Open Table Formats\n\nThe [data lakehouse architecture](https://datalakehousehub.com/blog/2025-09-2026-guide-to-data-lakehouses/) adds another layer. Open table formats like [Apache Iceberg](https://www.datacamp.com/blog/iceberg-vs-delta-lake), [Delta Lake](https://www.onehouse.ai/blog/apache-hudi-vs-delta-lake-vs-apache-iceberg-lakehouse-feature-comparison), and Apache Hudi bring ACID transactions, schema evolution, and time travel to data stored in object storage (S3, GCS, Azure Blob).\n\nThese formats let you store both raw (normalized) and transformed (denormalized) data in the same lake, queried by the same engine. You can maintain a 3NF-like layer for data governance and lineage, and produce star schema views or materialized tables for analytics, all without moving data between systems.\n\nAs of early 2026, [every major cloud warehouse supports Apache Iceberg reads and writes](https://clickhouse.com/resources/engineering/top-5-cloud-data-warehouses), making it the dominant open table format. Databricks' [Delta Lake UniForm](https://www.onehouse.ai/blog/apache-hudi-vs-delta-lake-vs-apache-iceberg-lakehouse-feature-comparison) provides interoperability between Delta Lake and Iceberg, reducing format lock-in.\n\n### Where Does CloudQuery Fit?\n\n[CloudQuery Platform](https://www.cloudquery.io/solutions/cloud-asset-management) is a high-performance ELT platform built on Apache Arrow. It extracts data from cloud infrastructure APIs, SaaS tools, and databases, and loads it into your warehouse or data lake in a normalized format.\n\nThat normalized data becomes the raw layer in your dbt pipeline, which you then transform into star schemas or other analytical models. CloudQuery Platform handles the \"E\" and \"L\" in ELT, while dbt or similar tools handle the \"T.\"\n\nThis separation matters because schema design is a downstream decision. CloudQuery Platform gives you clean, normalized source data. You choose how to model it for analytics, whether that is a star schema in Snowflake, a denormalized table in BigQuery, or an Iceberg table in your data lake.\n\n## What Are Common Mistakes When Choosing Between 3NF and Star Schema?\n\n**Using star schema for your application database.** Star schemas are designed for read-heavy analytics. Using one as your application's primary database creates write performance problems and makes it harder to enforce data integrity.\n\n**Using 3NF for your analytics warehouse.** Analysts should not need to understand and join 10+ normalized tables to answer a business question. Transform source data into a dimensional model before exposing it to BI tools.\n\n**Skipping the staging layer.** Loading source data directly into a star schema without a staging layer makes debugging and reprocessing difficult. Keep a clean copy of your 3NF source data in the warehouse.\n\n**Over-normalizing dimensions.** Unless a dimension table has millions of rows or changes frequently, [keep it denormalized in the star schema](https://www.montecarlodata.com/blog-star-schema-vs-snowflake-schema/). The storage savings from snowflaking are rarely worth the added query complexity.\n\n**Ignoring your warehouse's strengths.** Columnar warehouses handle wide, denormalized tables well. Row-oriented databases handle normalized tables well. Design your schema to match your engine's architecture.\n\n## Which Schema Should You Start With?\n\n3NF and star schema solve different problems. 3NF minimizes redundancy and protects data integrity for transactional workloads. Star schema minimizes query complexity and maximizes read performance for analytical workloads.\n\nMost modern data architectures use both: 3NF in source systems, star schema (or further denormalized models) in the warehouse, connected by an ELT pipeline. Tools like CloudQuery Platform extract and load the normalized source data, dbt transforms it into dimensional models, and your warehouse or lakehouse serves the final analytical layer.\n\nThe best schema design is the one that matches your workload. If you are building an application, start with 3NF. If you are building a data warehouse, start with a star schema. If you need both, use both, and invest in the pipeline that connects them.\n\n## 3NF vs Star Schema: Which Should You Choose?\n\nThe right schema depends on what you are building. This table summarizes the key trade-offs:\n\n| Criteria | 3NF | Star Schema |\n| ---------------------- | --------------------------------------- | ------------------------------------------------- |\n| **Best for** | Transactional (OLTP) systems | Analytical (OLAP) systems |\n| **Query performance** | Slower (many joins) | Faster (fewer joins, pre-aggregated measures) |\n| **Write performance** | Fast (single-table inserts and updates) | Slower (dimension tables must be populated first) |\n| **Storage efficiency** | High (minimal duplication) | Lower (intentional denormalization) |\n| **OLTP vs OLAP** | OLTP | OLAP |\n| **Typical use case** | Application databases, source systems | Data warehouses, BI dashboards, reporting |\n\nThe practical rule: use 3NF in your source systems (application databases, operational stores) and star schema in your analytics warehouse. An ELT pipeline connects the two, extracting normalized source data and transforming it into dimensional models. This combination gives you write integrity where you need it and read performance where analysts work.\n\n## 3NF vs Star Schema for Cloud Data Pipelines with CloudQuery\n\nCloud asset data is naturally hierarchical. An AWS EC2 instance has a region, an account, a VPC, security groups, tags, and nested configuration blocks. This structure maps poorly to a flat star schema — and extremely well to normalized 3NF tables.\n\n[CloudQuery Platform](https://www.cloudquery.io/solutions/cloud-asset-management) syncs cloud asset data from AWS, GCP, and Azure into normalized tables that preserve data integrity across syncs. When CloudQuery extracts an EC2 instance, it flattens the API response into a set of related tables: `aws_ec2_instances`, `aws_ec2_instance_tags`, `aws_security_groups`, and so on. Each table stores a distinct entity with its own primary key and foreign key relationships to related tables — closer to 3NF than to a denormalized star schema.\n\nThis normalized structure has two advantages for cloud data:\n\n1. **Sync correctness.** When an EC2 instance's security group changes, CloudQuery updates one row in `aws_security_groups`. If the data were denormalized into a single wide table, you would need to update every row that references that instance — and reconciling partial updates across a large estate is error-prone.\n2. **Downstream flexibility.** Loading normalized cloud asset data into BigQuery, Snowflake, or Redshift gives you a clean staging layer. From there, dbt can model the data into whatever shape your analytics require: star schema for BI dashboards, denormalized OBT for ad-hoc queries, or Iceberg tables in your data lake.\n\nFor cloud infrastructure analytics specifically, the recommended pattern is:\n\n- **CloudQuery Platform** extracts and loads normalized (3NF-like) cloud asset tables into your warehouse\n- **dbt** transforms those tables into star schemas or denormalized models for reporting\n- **BI tools** (Tableau, Looker, Grafana) query the dimensional layer\n\nThis means the 3NF vs star schema decision is not binary for cloud data — it is a pipeline. CloudQuery handles the normalized source layer, and you choose how to model it for analytics at transformation time.\n\n## Frequently Asked Questions\n\n### What Is Third Normal Form (3NF)?\n\nThird Normal Form (3NF) is a database normalization standard where every non-key column depends directly on the primary key and not on any other non-key column. A table is in 3NF when it meets three conditions: all values are atomic (First Normal Form), every non-key column depends on the whole primary key and not a subset of it (Second Normal Form), and no non-key column is transitively dependent on another non-key column (Third Normal Form). 3NF is the standard for transactional (OLTP) databases where minimizing data redundancy and preventing update anomalies are the priority.\n\n### Is 3NF or Star Schema Better for a Data Warehouse?\n\nStar schema is the standard for data warehouses. It's designed for read-heavy analytical queries, with fewer joins and pre-aggregated measures. 3NF is better for transactional source systems where write speed and data integrity matter most.\n\n### Can You Use Both 3NF and Star Schema in the Same Architecture?\n\nYes, and most organizations do. Source systems (application databases) use 3NF for transactional consistency. Data warehouses use star schemas for analytics. An [ELT pipeline](https://www.getdbt.com/blog/data-transformation-in-data-warehouse) connects the two, transforming normalized source data into dimensional models.\n\n### What Is the Difference Between a Star Schema and a Snowflake Schema?\n\nA star schema keeps dimension tables fully denormalized (wide, flat tables). A [snowflake schema](https://www.datacamp.com/blog/star-schema-vs-snowflake-schema) partially normalizes dimensions by splitting them into sub-tables. Snowflake schemas save storage but add joins. Most teams prefer star schemas unless their dimension tables have millions of rows.\n\n### Does BigQuery or Snowflake Perform Better with 3NF or Star Schema?\n\nColumnar warehouses like BigQuery, Snowflake, and Redshift perform better with denormalized data. BigQuery shows a [49% average improvement in query response time](https://www.fivetran.com/blog/star-schema-vs-obt) with denormalized tables compared to star schemas, because its parallel execution engine benefits from fewer cross-node shuffles.\n\n### How Does dbt Relate to 3NF and Star Schema?\n\n[dbt](https://www.getdbt.com/) transforms 3NF source data into star schemas inside the warehouse. It uses a layered pattern: staging models (roughly 3NF), intermediate models (enriched), and mart models (star schema or denormalized tables). dbt handles the \"T\" in ELT.\n\n### What Is a Fact Table vs a Dimension Table?\n\nA fact table stores quantitative measurements (revenue, quantity, duration) and foreign keys to dimensions. Each row represents a business event. A dimension table stores descriptive attributes (customer name, product category, date parts) used to filter and group facts.\n\n### How Do You Migrate from 3NF to Star Schema?\n\nYou don't migrate your source system. Instead, you build a separate analytical layer. Extract data from your 3NF source using a tool like [CloudQuery Platform](https://www.cloudquery.io/), load it into your warehouse, and use dbt to transform it into a star schema. The source system stays in 3NF.\n\n### What Are Slowly Changing Dimensions in a Star Schema?\n\n[Slowly Changing Dimensions (SCDs)](https://en.wikipedia.org/wiki/Slowly_changing_dimension) handle attributes that change over time, like a customer's city. Type 1 overwrites the old value. Type 2 creates a new row with the updated value while preserving the historical record. Type 2 is the most common approach in production star schemas.\n\n### What is the difference between 3NF and star schema?\n\n3NF (Third Normal Form) is a database normalization standard that eliminates redundancy by storing each fact exactly once across multiple related tables. Star schema is a dimensional modeling approach that denormalizes data into a central fact table surrounded by dimension tables. 3NF optimizes for write speed and data integrity — it is the standard for transactional (OLTP) databases. Star schema optimizes for read speed and query simplicity — it is the standard for analytical (OLAP) warehouses. The key practical difference: 3NF requires joins to answer business questions, while star schema pre-joins data into a structure that is fast to query and easy for BI tools to navigate.\n\n### When should I use star schema instead of 3NF?\n\nUse star schema when your primary workload is analytical: dashboards, reports, and ad-hoc queries that aggregate large volumes of data. Star schema is the right choice for your data warehouse because columnar engines like BigQuery, Snowflake, and Redshift are designed to scan wide, denormalized tables efficiently. Use 3NF for your application database or any system where writes, updates, and data integrity are the priority. Most organizations end up using both: 3NF in source systems and star schema in the warehouse, connected by an ELT pipeline.\n\n### Is 3NF better than star schema for analytics?\n\nNo. Star schema is specifically designed for analytical workloads. 3NF performs poorly for analytics because answering business questions typically requires joining many tables, and join performance degrades with scale. Star schema reduces the number of joins needed, pre-aggregates measures in fact tables, and produces simpler SQL that BI tools can generate automatically. Columnar warehouses like BigQuery show a 49% average improvement in query response time with denormalized tables versus normalized schemas. For analytics, star schema (or further denormalized One Big Table) consistently outperforms 3NF.\n\n### Which schema is better for cloud asset data warehouses?\n\nFor storing cloud asset data (AWS, GCP, Azure resources), a normalized approach close to 3NF is better for the source layer because cloud asset data is hierarchical and changes frequently. CloudQuery Platform loads cloud asset data into normalized tables that maintain data integrity across syncs — when a resource changes, one row updates, not every denormalized row referencing that resource. For the analytics layer on top of that data (dashboards, compliance queries, cost analysis), transforming the normalized source data into a star schema or denormalized model with dbt gives you the query performance analysts need.\n\n### Does CloudQuery use 3NF or star schema?\n\nCloudQuery Platform loads data into normalized tables that are closer to 3NF than star schema. Each cloud resource type (EC2 instances, S3 buckets, IAM roles) gets its own table with primary and foreign keys preserving the relationships between resources. This normalized structure ensures sync correctness — CloudQuery can insert, update, and delete individual resource records without touching unrelated rows. The star schema modeling happens downstream: teams typically use dbt to transform CloudQuery's normalized source tables into dimensional models optimized for their BI tools and analytical queries.\n\n## Next steps\n\n:::cta{title=\"Build Your Cloud Data Pipeline\" label=\"Get Started\" href=\"/docs/cli/getting-started\"}\nCloudQuery Platform loads cloud asset data from 70+ sources into PostgreSQL, Snowflake, BigQuery, and more — normalized tables ready for dbt to transform into star schemas for your BI tools.\n:::\n7c:T6df1,\n\n\n:::callout{type=\"info\"}\n**6 Cloud CMDB Best Practices:**\n\n1. **Automate discovery** — Cloud APIs track everything; extract automatically\n2. **Define clear scope** — Start with security/compute resources, expand deliberately\n3. **Tiered sync strategies** — Critical 15-30 min, operational hourly, baseline daily\n4. **Multi-account design** — Centralized database; query across all accounts\n5. **Tool integration** — SQL-based integration with security, FinOps, and incident management tools\n6. **Historical data retention** — 2-7 year retention for compliance and debugging\n\n:::\n\nYou manage 4,782 resources across 6 cloud accounts. Can you answer these questions in under 5 minutes?\n\n- Which S3 buckets are publicly accessible right now?\n- Which IAM roles haven't been used in 90 days?\n- What changed in production yesterday between 2 p.m. and 3 p.m.?\n\nThat RDS database from the abandoned prototype? Still running. The EC2 instance someone spun up \"just to test something real quick\"? Racked up $4,000 last month. Your CMDB knows about none of this because Bob updated it in February 2023 and nobody's touched it since.\n\nTraditional CMDBs were built for servers that lived 3-5 years, not containers that live 3 minutes. Manual updates fail within weeks as engineers forget to document changes (then forget the CMDB exists entirely).\n\nThis guide covers 6 cloud CMDB best practices based on ITIL standards and real-world implementations managing thousands of cloud accounts. The architectural patterns apply regardless of tooling. Whether you're evaluating cloud CMDB solutions or improving an existing implementation, these practices will help you build infrastructure visibility that platform engineering teams actually use.\n\n:::callout{type=\"info\"}\nOrganizations following ITIL CMDB best practices see 30% faster incident resolution and 50% fewer downtime incidents [[industry research](https://cloudaware.com/blog/cmdb-best-practices/)]. ITSM teams using well-maintained CMDBs identify root causes 15% faster and resolve issues 30% faster [[CMDB metrics study](https://www.device42.com/blog/2023/07/19/how-a-cmdb-helps-improve-incident-management-mttr-metrics/)].\n:::\n\n## Why Traditional CMDB Approaches Fail in Cloud Environments\n\nMost cloud CMDB implementations face these problems:\n\n**Data Staleness:**\n\nTraditional CMDBs sync weekly or daily. The majority of containers in production have short lifespans, often measured in minutes rather than hours or days [[Datadog Container Report](https://www.datadoghq.com/container-report/)]. Lambda functions execute in milliseconds and their instances are recycled after periods of inactivity [[AWS Lambda documentation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)]. AWS spot instances can be terminated with just a 2-minute warning [[AWS EC2 documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)]. Weekly discovery misses ephemeral resources entirely.\n\n**Manual Update Death Spiral:**\n\nWeek 1: Engineers manually enter new infrastructure. Week 3: Engineers forget to update entries. Month 3: Cloud CMDB data is 40% stale; nobody trusts it. Month 6: Project abandoned.\n\n**Multi-Cloud Blind Spots:**\n\nSeparate tools for AWS, GCP, Azure. No unified query interface across clouds. Platform teams maintain 3+ different systems.\n\n**High Costs, Low Adoption:**\n\nEnterprise CMDB solutions can cost tens to hundreds of thousands of dollars annually in licensing fees. Proprietary UIs that platform engineers don't want to learn. No integration with existing tools.\n\n**Compliance Gaps:**\n\nNo historical data retention. Can't answer auditor questions: \"Prove S3 buckets had encryption on October 15.\" Incident investigations limited: \"What changed yesterday at 3 p.m.?\"\n\n## Best Practice 1: Automate Discovery from Cloud APIs\n\nITIL recommends automated discovery tools to maintain CMDB accuracy [[ITIL CMDB guidance](https://www.device42.com/cmdb-best-practices/itil-cmdb/)]. Manual discovery doesn't scale to cloud velocity.\n\n**Why manual updates fail:** Engineers document infrastructure when it's created. Three weeks later, autoscaling adds 50 instances. Six weeks later, someone deletes half the dev environment. Nobody updates the CMDB. Month 3: your cloud CMDB data is 40% stale. Month 6: engineers start calling it \"the spreadsheet that lies.\"\n\n**Why automation works:** AWS, GCP, and Azure already track every resource via APIs. Extract this data automatically rather than asking engineers to document what the cloud already knows.\n\n:::callout{type=\"warning\"}\nThe majority of containers in production have short lifespans, often measured in minutes [[Datadog Container Report](https://www.datadoghq.com/container-report/)]. Lambda functions execute in milliseconds, with instances recycled after periods of inactivity [[AWS Lambda docs](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)]. Spot instances terminate with 2-minute warnings [[AWS EC2 docs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)]. Manual discovery running daily or weekly misses these resources entirely.\n:::\n\n**Implementation:** Tools like CloudQuery, Steampipe, and AWS Config extract cloud data automatically via API calls. Choose which resources to track (EC2 instances, S3 buckets, IAM roles) and sync frequency. The tool handles API authentication, pagination, and rate limiting.\n\n## Best Practice 2: Start with High-Value Resources, Expand Deliberately\n\nITIL says: Include only Configuration Items (CIs) necessary for service delivery [[ITIL CMDB standards](https://www.manageengine.com/products/service-desk/itsm/what-is-cmdb.html)]. Translation: don't sync everything just because you can.\n\nAWS has 240+ services [[AWS services](https://www.statista.com/statistics/1246116/amazon-web-services-number-of-services-marketplace/)]. GCP and Azure each have 100+. The \"let's sync everything!\" approach leads to:\n\n- API rate limits (AWS will politely throttle you, then less politely)\n- Database bloat (10 million low-value records nobody queries)\n- Query performance death spiral (finding signal in noise becomes impossible)\n- Sync jobs taking hours instead of minutes\n\n**Start here:** IAM policies/roles, security groups, EC2 instances, RDS databases, S3 buckets. **Expand when teams ask:** \"Can we track ACM certificates?\" (security team) or \"Can we get billing resources?\" (FinOps team).\n\n## Best Practice 3: Use Tiered Sync Frequencies\n\nNot all resources need the same sync frequency. Security teams need IAM changes visible within 30 minutes. FinOps teams analyzing cost trends can wait for daily snapshots. One-size-fits-all sync schedules waste API quota and money.\n\n| Tier | Frequency | Resources | Why | Trade-off |\n| --------------- | --------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |\n| **Critical** | 15-30 min | IAM policies/roles, security groups, NACLs, WAF rules, public S3 buckets, TLS certificates | Fast threat detection (unauthorized IAM role created = you want to know in 30 min, not 24 hours) | Higher API costs, justified by security value |\n| **Operational** | Hourly | EC2, RDS, S3 configs, Lambda, Kubernetes clusters, ECS services | Troubleshooting (\"Which EC2 instances are running?\") and cost attribution | Moderate API costs, operational queries tolerate 1-hour staleness |\n| **Baseline** | Daily | Dev/test environments, archival storage, VPC configs, CloudTrail logs | Trend analysis (\"How many EC2 instances 6 months ago?\") and compliance snapshots | Minimal API costs, broadest resource coverage |\n\n**Implementation:** Use your scheduler (Kubernetes CronJobs, AWS EventBridge, systemd timers) or orchestrator (Airflow, Dagster, Prefect) to run different configs at different intervals:\n\n```bash\n*/30 * * * * sync-tool sync critical-resources-config # Every 30 min\n0 * * * * sync-tool sync operational-resources-config # Hourly\n0 2 * * * sync-tool sync baseline-resources-config # Daily at 2am\n```\n\n**Real-world scale:** Organization with 1,000 AWS accounts syncs millions of IAM/security group records every 30 minutes, tens of millions of EC2/RDS/S3 records hourly, and hundreds of millions of historical records daily. Tools handle API rate limiting automatically.\n\n## Choosing Your Cloud CMDB Approach\n\nBefore implementing these practices, choose your technical approach. The architectural patterns (tiered sync, centralized database, SQL queries) apply regardless of tooling.\n\n| Approach | What It Is | Strengths | Limitations | Best For |\n| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |\n| **[CloudQuery](https://www.cloudquery.io/)** | Open-source ELT tool syncing cloud APIs to your database (PostgreSQL, BigQuery, Snowflake) | Pre-built connectors for 200+ services (AWS, GCP, Azure, K8s), incremental sync, you control the database | Requires infrastructure (K8s/Docker or managed platform), YAML config learning curve | 100+ cloud accounts, multi-cloud, teams comfortable with ELT tools |\n| **[Steampipe](https://steampipe.io/)** | Query live cloud APIs directly via PostgreSQL foreign tables | Zero ETL, simple setup, strong compliance focus, active community | Queries hit live APIs (slower, rate limits), no historical data without external storage | Security teams, compliance audits, proof-of-concepts |\n| **[AWS Config Advanced Query](https://docs.aws.amazon.com/config/latest/developerguide/querying-AWS-resources.html)** | AWS-native service recording resource configs | Fully managed, native AWS compliance integration, built-in conformance packs | AWS-only, proprietary query language (not SQL), 7-year retention limit | AWS-only shops already invested in AWS Config |\n| **Build Your Own** | Custom scripts with cloud SDKs (boto3, google-cloud-python) | Complete control, no third-party dependencies, optimize for your use case | 3-6 months development time, ongoing maintenance burden, custom error handling/rate limiting | Large teams with specific requirements, strict data residency rules |\n\n**Recommendation:** For most teams managing 50+ cloud accounts: CloudQuery (historical data + multi-cloud) or Steampipe (current state + compliance). AWS Config if AWS-only. Build-your-own only if you have bandwidth to maintain it.\n\n## Best Practice 4: Design for Multi-Account and Multi-Cloud from Day One\n\nMost organizations use multiple AWS accounts (10+ accounts for dev, staging, prod, per-team, per-region) [[AWS multi-account best practices](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/benefits-of-using-multiple-aws-accounts.html)]. Many run multi-cloud (AWS + GCP for redundancy, Azure for that one service your VP insisted on). Single-account cloud CMDB implementations look great in the proof-of-concept, then collapse spectacularly when account #11 appears.\n\n**The centralized data model:** All cloud accounts sync to a single destination database (PostgreSQL, BigQuery, Snowflake). `account_id` becomes a dimension in every table, enabling cross-account queries like \"Find all unencrypted RDS instances across all AWS accounts.\"\n\n**Tag everything consistently:**\n\n- `account_id` (AWS account number, GCP project ID, Azure subscription ID)\n- `environment` (prod, staging, dev, test)\n- `owner_team` (for when you need to know who to blame—sorry, \"collaborate with\")\n- `cost_center` (financial attribution)\n\nCloudQuery extracts native cloud tags automatically. Enrichment happens at query time (join cloud CMDB data with team directory, cost allocation tables).\n\n**Multi-cloud:** CloudQuery supports AWS, GCP, Azure, and Kubernetes sources simultaneously. Store resources from all providers in a unified schema. Normalize where it makes sense (all compute instances → `instances` table). Accept cloud-specific differences where forcing unification doesn't add value (looking at you, Azure naming conventions).\n\n**Cross-account queries:**\n\nNote: All SQL examples use PostgreSQL syntax. Adapt for BigQuery or Snowflake as needed.\n\n```sql\n-- Cloud CMDB query: find public S3 buckets across all AWS accounts\nSELECT\n account_id,\n arn,\n region,\n tags-\u003e\u003e'Owner' as owner,\n tags-\u003e\u003e'Environment' as environment\nFROM aws_s3_buckets\nWHERE\n block_public_acls = false\n OR block_public_policy = false\nORDER BY account_id, region;\n```\n\n**Multi-account configuration:**\n\nAWS Organizations role assumption: Configure one role in the management account, CloudQuery assumes roles in member accounts automatically. No per-account credential management required (one less thing to forget to rotate).\n\nGCP projects auto-discovered via Resource Manager API. Azure subscriptions discovered via Azure Resource Manager.\n\n```yaml\n# AWS multi-account config\nkind: source\nspec:\n name: aws\n path: cloudquery/aws\n destinations: ['postgresql']\n spec:\n # Assume role in all organization accounts\n org:\n member_role_name: 'CloudQueryRole'\n```\n\n:::callout{type=\"warning\"}\n**Scaling Consideration**\n\nThousands of AWS accounts generate millions of records per sync. Database partitioning by `account_id` or `sync_date` improves query performance. Plan for scale from day one.\n:::\n\n## Best Practice 5: Integrate with Security, FinOps, and Incident Management Tools\n\nYour cloud CMDB isn't an end-user application. It's data infrastructure that feeds the tools platform teams already use. Engineers don't want another UI to learn when they already have Grafana dashboards, PagerDuty runbooks, and Backstage service catalogs.\n\n### Security: Datadog, Elastic, Splunk\n\nSync cloud CMDB data to your SIEM for correlation. CloudQuery syncs to [Datadog](https://www.cloudquery.io/hub/plugins/destination), [Elasticsearch](https://www.cloudquery.io/hub/plugins/destination/cloudquery/elasticsearch), and SQL databases that feed Splunk.\n\nAlert on risky changes detected in your CMDB data:\n\n- Public S3 bucket created (someone's getting creative with permissions)\n- IAM policy grants `*:*` permissions (bold move)\n- TLS certificate expiring in \u003c30 days\n- Security group allows `0.0.0.0/0` on port 22 (the \"I'll fix this later\" that never gets fixed)\n\n### FinOps: AWS Cost Explorer, GCP Billing, Azure Cost Management\n\nJoin cloud CMDB resource data with billing data to answer: \"Which team launched that $4,000/month EC2 instance nobody's SSH'd into since March?\" CloudQuery syncs billing data from [AWS](https://www.cloudquery.io/hub/plugins/source/cloudquery/aws), [GCP](https://www.cloudquery.io/hub/plugins/source/cloudquery/gcp), and [Azure](https://www.cloudquery.io/hub/plugins/source/cloudquery/azure).\n\n- Attribute costs to teams via resource tags\n- Find idle RDS databases (zero connections for 7 days = expensive paperweight)\n- Identify rightsizing opportunities (EC2 with \u003c5% CPU = money pit)\n\nSQL Query Example:\n\n```sql\n-- FinOps: unused RDS instances (join cloud CMDB + CloudWatch metrics)\nWITH connection_metrics AS (\n SELECT\n db_instance_identifier,\n MAX(database_connections) as max_connections\n FROM cloudwatch_rds_metrics\n WHERE timestamp \u003e NOW() - INTERVAL '7 days'\n GROUP BY db_instance_identifier\n)\nSELECT\n r.account_id,\n r.arn,\n r.db_instance_class,\n r.estimated_monthly_cost,\n m.max_connections\nFROM aws_rds_instances r\nLEFT JOIN connection_metrics m\n ON r.db_instance_identifier = m.db_instance_identifier\nWHERE m.max_connections = 0 OR m.max_connections IS NULL\nORDER BY r.estimated_monthly_cost DESC;\n```\n\n### Developer Portals: Backstage, Port\n\nShow infrastructure dependencies in service catalogs. Link services to underlying cloud resources: \"This service uses RDS instance `db-prod-users` in account `123456789012`.\" CloudQuery syncs to [PostgreSQL](https://www.cloudquery.io/hub/plugins/destination/cloudquery/postgresql) which Backstage reads directly.\n\n### Incident Management: PagerDuty, Opsgenie\n\nQuery during incidents: \"What changed in production between 2 p.m. and 3 p.m. yesterday?\" Feed infrastructure changes into incident timelines. Post-mortem queries: \"What was the security group configuration when things exploded?\" CloudQuery syncs cloud resource data from [AWS](https://www.cloudquery.io/hub/plugins/source/cloudquery/aws), [GCP](https://www.cloudquery.io/hub/plugins/source/cloudquery/gcp), [Azure](https://www.cloudquery.io/hub/plugins/source/cloudquery/azure), and [Kubernetes](https://www.cloudquery.io/hub/plugins/source/cloudquery/k8s).\n\n### BI \u0026 Dashboards: Grafana, Looker, Metabase\n\nCloudQuery syncs to [PostgreSQL](https://www.cloudquery.io/hub/plugins/destination/cloudquery/postgresql), [BigQuery](https://www.cloudquery.io/hub/plugins/destination/cloudquery/bigquery), [Snowflake](https://www.cloudquery.io/hub/plugins/destination/cloudquery/snowflake), [ClickHouse](https://www.cloudquery.io/hub/plugins/destination/cloudquery/clickhouse), and [50+ other destinations](https://www.cloudquery.io/hub/plugins/destination). Standard SQL means any BI tool connects.\n\n## Best Practice 6: Retain Historical Data for Compliance and Debugging\n\nAuditors ask: \"Prove all S3 buckets had encryption enabled on October 15.\" Engineers ask: \"What changed between 2 p.m. and 3 p.m. yesterday?\" You need point-in-time data.\n\n**Compliance retention requirements:**\n\n- SOC 2: 1-2 years | ISO 27001: 2-3 years | HIPAA: 6 years | Financial services: 7 years\n\n**Append-only tables:** Every sync writes new records with `sync_time` timestamps. Old records stick around. Simple to implement, easy to query specific points in time. Downside: storage grows forever (partition by month, archive old data to S3 Glacier).\n\n**Point-in-time queries:**\n\n```sql\n-- Cloud CMDB: S3 bucket configuration as of October 15, 2024 at 3pm\n-- Get most recent sync before target time for each bucket\nWITH ranked_syncs AS (\n SELECT\n account_id,\n arn,\n block_public_acls,\n encryption_rules,\n sync_time,\n ROW_NUMBER() OVER (\n PARTITION BY arn\n ORDER BY sync_time DESC\n ) as rn\n FROM aws_s3_buckets\n WHERE sync_time \u003c= '2024-10-15 15:00:00'\n)\nSELECT\n account_id,\n arn,\n block_public_acls,\n encryption_rules\nFROM ranked_syncs\nWHERE rn = 1;\n```\n\nThousands of AWS accounts with 2-year retention = billions of records. PostgreSQL, BigQuery, and Snowflake handle this scale. Partition by month, drop old partitions after retention period ends.\n\n## Implementation\n\nHere's how to set this up:\n\n**Step 1: Choose Your Database**\n\n- **PostgreSQL:** Best for simplicity; run on AWS RDS, GCP CloudSQL, or self-hosted\n- **BigQuery:** Best for massive scale (billions of records); Google Cloud native\n- **Snowflake:** Best if already in your stack; excellent query performance\n\n**Step 2: Deploy CloudQuery**\n\n**Option A: CloudQuery CLI (Open-Source)**\n\nRuns on your infrastructure (Kubernetes, Docker, VMs). Full control over sync schedules and configuration. [Download CloudQuery CLI](https://www.cloudquery.io/download).\n\n**Option B: CloudQuery Platform (Managed Service)**\n\nManaged scheduling via UI (no CronJob management). Asset inventory explorer for visual browsing. SQL console and RESTful API built-in. [Try CloudQuery Platform](https://www.cloudquery.io/docs/platform/introduction).\n\n**Step 3: Configure Cloud Sources**\n\nFollow CloudQuery [quickstart guide](https://www.cloudquery.io/docs/cli/getting-started/quickstart/macOS) to configure:\n\n- AWS (via AWS Organizations role assumption for multi-account)\n- GCP (via Resource Manager API for all projects)\n- Azure (via Azure Resource Manager for all subscriptions)\n- Kubernetes (via kubeconfig)\n\n**Step 4: Implement Tiered Sync Schedules**\n\n- Critical resources (IAM, security groups): every 30 min\n- Operational resources (EC2, RDS, S3): hourly\n- Baseline resources (dev environments): daily\n\n**Step 5: Create Initial Queries**\n\nStart with high-value queries:\n\n```sql\n-- Public S3 buckets across all accounts\nSELECT account_id, arn FROM aws_s3_buckets\nWHERE block_public_acls = false;\n\n-- Untagged EC2 instances\nSELECT instance_id, tags FROM aws_ec2_instances\nWHERE tags-\u003e\u003e'Owner' IS NULL;\n```\n\n**Step 6: Integrate with Existing Tools**\n\nExport cloud CMDB data to security scanner. Create Grafana dashboards from cloud CMDB SQL queries. Feed data into incident management system.\n\n## Summary\n\nSix practices that actually work:\n\n1. **Automate discovery** from cloud APIs (manual updates fail within weeks)\n2. **Define clear scope** (start security/compute; expand deliberately)\n3. **Tiered sync strategies** (critical 15-30 min, operational hourly, baseline daily)\n4. **Multi-account design** from day one (centralized database; query across accounts)\n5. **Tool integration** (SQL enables integration with security, FinOps, incident management)\n6. **Historical data retention** (2-7 years for compliance and incident investigation)\n\nOrganizations following ITIL CMDB best practices see 30% faster incident resolution [[source](https://cloudaware.com/blog/cmdb-best-practices/)]. ITSM teams using well-maintained CMDBs identify root causes 15% faster and resolve issues 30% faster [[source](https://www.device42.com/blog/2023/07/19/how-a-cmdb-helps-improve-incident-management-mttr-metrics/)].\n\nCloudQuery provides both [CLI](https://www.cloudquery.io/download) (open-source, runs on your infrastructure) and [Platform](https://www.cloudquery.io/docs/platform/introduction) (managed service with UI, scheduling, reporting). Sync AWS, GCP, Azure, Kubernetes into PostgreSQL, BigQuery, or Snowflake. Query with standard SQL.\n\n[Get started with the quickstart guide](https://www.cloudquery.io/docs/cli/getting-started/quickstart/macOS).\n\n## Related Resources\n\nDeep Dive on Cloud CMDB Concepts:\n\n- [What is a Cloud CMDB and Do You Need One?](/blog/what-is-a-cloud-cmdb-and-do-you-need-one) — Comprehensive introduction to cloud CMDBs, comparing traditional vs modern approaches\n- [The Real-Time Cloud CMDB: Why Ephemeral Infrastructure Killed Traditional Discovery](/blog/real-time-cloud-cmdb-ephemeral-infrastructure) — Technical analysis of sync frequencies and ephemeral resource tracking\n- [CMDB is Dead: Long Live the Infrastructure Lake](/blog/cmdb-is-dead-long-live-infrastructure-lake) — Architecture patterns for building modern cloud CMDBs with Infrastructure Lake approach\n\nImplementation Guides:\n\n- [CloudQuery Quickstart Guide](https://www.cloudquery.io/docs/cli/getting-started/quickstart/macOS) — Get started syncing your first cloud resources in minutes\n- [AWS Multi-Account Setup](https://www.cloudquery.io/hub/plugins/source/cloudquery/aws/latest/docs) — Configure AWS Organizations role assumption for multi-account discovery\n- [CloudQuery Hub](https://www.cloudquery.io/hub/plugins/source) — Browse all available cloud provider integrations and resource types\n\n## Frequently Asked Questions\n\n### What is a cloud CMDB and why do platform engineers need it?\n\nA cloud CMDB (Configuration Management Database) tracks cloud infrastructure configuration items (CIs) like EC2 instances, S3 buckets, IAM roles across multi-account and multi-cloud environments. Unlike traditional CMDBs built for static servers, cloud CMDBs handle ephemeral resources (containers living minutes, Lambda functions executing milliseconds). Platform engineers need cloud CMDBs to answer questions like \"Which S3 buckets are publicly accessible?\" or \"What changed in production yesterday at 3 p.m.?\" within minutes, not hours.\n\n### How often should a cloud CMDB sync data?\n\nUse tiered sync strategies based on resource criticality. Critical security resources (IAM, security groups) sync every 15-30 minutes for fast threat detection. Operational resources (EC2, RDS) sync hourly for troubleshooting and cost attribution. Baseline resources (dev environments) sync daily for trend analysis. This balances data freshness against API rate limits and compute costs.\n\n### What's the difference between a cloud CMDB and a cloud asset inventory?\n\nCloud asset inventory lists resources (EC2 instances, S3 buckets, IAM roles). Cloud CMDB adds configuration details, relationships between resources, historical tracking, and governance. CloudQuery provides both: asset inventory (comprehensive resource lists) and CMDB capabilities (time-series data, SQL queryability, compliance retention).\n\n### Can CloudQuery be used as a cloud CMDB?\n\nYes. CloudQuery syncs cloud infrastructure data from AWS, GCP, Azure, Kubernetes into your database (PostgreSQL, BigQuery, Snowflake), providing the foundation for a modern cloud CMDB. Query with standard SQL, track historical changes, integrate with existing security/FinOps/incident management tools. CloudQuery Platform adds managed scheduling, asset inventory UI, and reporting; CLI provides open-source flexibility running on your infrastructure.\n\n### How do I handle multi-account AWS environments in my cloud CMDB?\n\nUse AWS Organizations role assumption. Configure one IAM role in your management account; CloudQuery assumes roles in all member accounts automatically. All accounts sync to centralized cloud CMDB database. Query across accounts with SQL: `SELECT * FROM aws_s3_buckets WHERE account_id IN (...)`. No per-account credential management required.\n\n### What are the main cloud CMDB data quality challenges?\n\nStale data (sync failures mean outdated information), missing tags (untagged resources can't be attributed to teams), incomplete coverage (not syncing critical resource types). Solutions: monitor sync success rates (target \u003e99%), enforce tagging via AWS Config/Azure Policy, start with high-value resources (security, compute) and expand based on user requests.\n\n### How much does it cost to run a cloud CMDB for large enterprise environments?\n\nCosts vary by database choice and sync frequency. Self-managed approaches using CloudQuery with PostgreSQL, BigQuery, or Snowflake are significantly more cost-effective than traditional enterprise CMDB licensing. Factors include database storage (for billions of records with multi-year retention) and compute resources for running sync jobs. CloudQuery's open-source CLI and managed Platform offer flexible pricing compared to traditional CMDB solutions.\n7d:T579f,\n\n\nYour Kubernetes pods live for 3 minutes. Your Lambda functions for 300 milliseconds. Your CMDB updates weekly. See the problem?\n\nIn traditional IT environments, infrastructure was measured in months and years. A server lived in the data center for 3-5 years. Network equipment lasted a decade. CMDBs were designed for this reality, where a weekly discovery scan was more than sufficient. Then cloud happened. And everything changed.\n\nToday, the majority of containers in production have [short lifespans](https://www.datadoghq.com/container-report/), often measured in minutes rather than hours or days. AWS Lambda functions execute in milliseconds and their instances are recycled after periods of inactivity. Kubernetes pods autoscale continuously, spawning and terminating hundreds of instances within minutes. Infrastructure has become ephemeral, and traditional discovery models have become obsolete. For a detailed side-by-side breakdown of how these approaches differ architecturally, see [Cloud CMDB vs Traditional CMDB: A 2026 Comparison](/blog/cloud-cmdb-vs-traditional-cmdb-2026).\n\n:::callout{type=\"info\"}\n**TL;DR**\n\nTraditional CMDBs miss the vast majority of short-lived cloud resources because they rely on scheduled discovery (daily or weekly scans). With containers living just minutes and Lambda functions executing in milliseconds, ephemeral infrastructure demands a new approach. Modern cloud CMDBs use tiered sync strategies (critical resources every 15-30 minutes, important resources hourly, baseline daily) for SQL queryability and scalability. CloudQuery extracts data from cloud APIs into your database of choice, enabling flexible sync schedules and on-demand queries when you need current state.\n:::\n\n## The Ephemeral Reality: How Cloud Infrastructure Actually Behaves\n\nCloud infrastructure operates on a completely different timescale than traditional IT. According to [Datadog's container research](https://www.datadoghq.com/container-report/), **the majority of containers in production have short lifespans**, often measured in minutes. This isn't a bug, it's a feature. Kubernetes treats containers as disposable units of compute.\n\nA typical autoscaling scenario: traffic spikes, the [Kubernetes Horizontal Pod Autoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) spawns 50 new pods, traffic subsides 10 minutes later, pods terminate. The entire lifecycle happens faster than most CMDB discovery scans run. A single microservice might cycle through hundreds of container instances daily.\n\nServerless functions take ephemerality even further:\n\n- **Lambda cold starts:** [400-700 milliseconds](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)\n- **Function execution:** Often completes in under 1 second\n- **Instance lifecycle:** [Recycled after minutes of inactivity](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html), depending on resource availability\n\nAn API Gateway triggering a Lambda that queries DynamoDB completes the entire request in under one second. From a CMDB perspective, these resources effectively don't exist.\n\n**The core problem:** Infrastructure that exists for 5 minutes may never be discovered by tools designed to run hourly or daily scans. [AWS spot instances can be terminated with just a 2-minute warning](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html). The fundamental assumption underlying traditional CMDBs (that infrastructure is relatively stable) no longer holds in cloud environments.\n\n:::callout{type=\"info\"}\n**Key Terms**\n\n**Ephemeral infrastructure**: Cloud resources with lifespans measured in minutes or seconds rather than months or years. Includes containers, serverless functions, and auto-scaled instances.\n\n**Tiered sync strategy**: Syncing different resource types at different frequencies based on criticality. Critical resources (IAM, security groups) sync every 15-30 minutes, while less critical resources sync hourly or daily.\n\n**Infrastructure Lake**: Data architecture pattern that extracts cloud data into queryable databases (PostgreSQL, BigQuery, Snowflake) rather than proprietary CMDB applications, enabling SQL analysis and time-series tracking. Used as the foundation for modern cloud CMDBs.\n\n**Dynamic configuration management**: Tracking infrastructure that changes continuously rather than remaining static, using flexible sync strategies and time-series data.\n:::\n\n## The Speed Mismatch: When Discovery Can't Keep Up\n\nThe math on traditional discovery simply doesn't work for cloud environments.\n\nTraditional CMDB discovery runs on scheduled intervals: daily scans are common, weekly scans are not unusual, and even \"aggressive\" schedules rarely exceed hourly intervals. Each scan must enumerate all resources across all accounts and regions, querying dozens or hundreds of API endpoints.\n\nThis comprehensive approach is necessary because traditional discovery has no other way to detect changes. It checks everything, repeatedly. API rate limits from AWS, GCP, and Azure constrain how fast these scans can run. A thorough scan of a large AWS environment can take hours.\n\nConsider a moderately large cloud environment generating 1,000 infrastructure changes per hour. With a 24-hour discovery window, you **miss the vast majority of short-lived resources**. A resource that exists for 30 minutes has little chance of appearing in a daily CMDB scan.\n\n:::callout{type=\"warning\"}\n**The Ephemeral Infrastructure Problem**\n\nWith a 24-hour discovery window, you miss the vast majority of short-lived resources. Traditional discovery fundamentally cannot track infrastructure that appears and disappears between scans. Resources existing for minutes are effectively invisible.\n:::\n\n### Real-World Impact\n\nThis speed mismatch has concrete consequences:\n\n**Security:** A compromised Lambda function spins up, runs a crypto miner for 5 minutes, and terminates before your CMDB discovers it. The resource never appears in your [security scanning tools](/solutions/cspm).\n\n**Cost:** Ephemeral GPU instances rack up charges but your [FinOps tools](/solutions/fin-ops) never see them because they terminate between daily scans. You can't attribute costs to specific resources or teams.\n\n**Compliance:** Auditors ask to prove infrastructure configuration on a specific date. Your CMDB has snapshots from the day before and after, but not the actual date. The resources existed between your scheduled scans.\n\n**Debugging:** Engineers find references to pods that don't appear in the CMDB. These \"ghost\" resources existed during the incident but have no record.\n\n## Traditional vs. Modern Cloud CMDB: A Comparison\n\n| Aspect | Traditional CMDB | Modern Cloud CMDB |\n| ---------------------------------------- | ------------------------------------------------- | ---------------------------------------------------- |\n| **Sync Frequency** | Daily to weekly | Tiered: 15-30 min (critical) to daily (baseline) |\n| **Ephemeral Resource Coverage** | Minimal (miss most short-lived resources) | High with tiered sync strategies |\n| **Infrastructure Lifespan Assumption** | Months to years (servers: 3-5 years) | Minutes to seconds (most containers ephemeral) |\n| **Data Model** | Flat CI (Configuration Item) tables | Time-series with SQL queryability |\n| **Typical Annual Cost (1,000 accounts)** | High (enterprise CMDB licensing + implementation) | Significantly lower (database + sync infrastructure) |\n| **API Rate Limit Handling** | Manual throttling and backoff | Built-in connector rate limit management |\n| **Query Language** | Proprietary UI and workflows | Standard SQL across databases |\n| **Scalability** | Limited (built for ITSM workflows) | Millions of records per sync |\n| **Historical Data** | Periodic snapshots | Continuous time-series tracking |\n| **Discovery Method** | Scheduled scans (pull model) | Tiered sync + on-demand queries |\n\n## What Modern Cloud CMDBs Actually Need\n\nThe answer isn't simply \"scan faster.\" Even with unlimited rate limits, the cost would be prohibitive and you'd still miss short-lived resources. Modern cloud CMDBs need a different approach.\n\n### How do you balance CMDB sync frequency with cost?\n\nEvery CMDB implementation must balance competing concerns:\n\n- How fresh does the data need to be?\n- How complete does the inventory need to be?\n- How much are you willing to spend on API calls?\n\nThere's no universal answer. Security teams might need IAM changes visible within 30 minutes. FinOps teams analyzing cost trends might be fine with daily snapshots. Development environments can update less frequently than production.\n\n### Flexible Sync Strategies\n\nOne-size-fits-all sync schedules don't work. Modern CMDBs need **tiered approaches** where different resources sync at different frequencies:\n\n**Tier 1 (Critical, 15-30 minute sync):**\n\n- IAM policies, security groups, public-facing resources\n- Immediate security implications\n- Fast detection worth the API cost\n\n**Tier 2 (Important, hourly sync):**\n\n- EC2 instances, RDS databases, S3 buckets\n- Matter for operations and cost\n- Less urgency than security-critical resources\n\n**Tier 3 (Baseline, daily sync):**\n\n- Development environments, archival storage\n- Sufficient for trend analysis and cost tracking\n\n### What database architecture works best for cloud CMDBs?\n\nTraditional CMDBs use application databases designed for ITSM workflows like ticket tracking and change requests. These weren't built to handle millions of time-series records across thousands of resource types.\n\nThe [Infrastructure Lake](/blog/cmdb-is-dead-long-live-infrastructure-lake) architecture offers a better model: extract cloud data via purpose-built tools, load into scalable data warehouses (PostgreSQL, BigQuery, Snowflake, ClickHouse), and query using SQL. This provides time-series data, SQL queryability, integration with existing data infrastructure, and scalability to handle millions of resources.\n\n## The Technical Challenge: Why This is Hard\n\nIf the solution seems obvious (just sync more frequently), why doesn't everyone do it?\n\n### API Rate Limits\n\nEvery cloud provider implements rate limiting:\n\n- **AWS:** [Per-account, per-API, and per-client throttling](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html)\n- **GCP:** Quota system with different limits per service\n- **Azure:** Subscription-level throttling\n\nIn large environments, aggressive polling quickly hits these limits. Your sync jobs slow down or fail. There's a ceiling on how fast you can pull data. The only solutions are adding more API quota (expensive), distributing requests across time (slower), or being more selective about what you sync (reduced coverage).\n\n### Data Volume and Velocity\n\nLarge cloud environments generate staggering amounts of configuration data. An organization with 1,000 AWS accounts might extract millions of records per sync. That data needs to be stored, indexed, and made queryable. Keep data for 2 years for compliance and you're storing billions of historical records. The infrastructure must handle thousands of changes per day, every day, continuously.\n\n### Why is filtering cloud CMDB data so challenging?\n\nCloud providers launch new services constantly. AWS alone has over 200 services, each with multiple resource types. You can't instrument everything. You must prioritize: which resource types matter most for security? For cost analysis? For compliance?\n\nNot all infrastructure changes matter equally. Different teams need different views. Security teams want IAM and network configuration. FinOps teams need compute and storage resources. Custom views and filtering become essential to make CMDB data useful rather than overwhelming.\n\n## Practical Approaches That Work\n\n### Tiered Sync Strategy in Practice\n\nFor an organization with 1,000 AWS accounts, a tiered approach balances visibility, cost, and API quota constraints:\n\n- **Critical resources (15-30 min):** IAM, security groups, public-facing resources, certificates\n- **Important resources (hourly):** EC2, RDS, S3, Kubernetes clusters\n- **Baseline resources (daily):** Development environments, archival storage, historical metadata\n\n### Building a Modern CMDB with CloudQuery\n\n[CloudQuery](https://www.cloudquery.io/) provides a modern approach to building cloud CMDBs. It extracts data from cloud provider APIs (AWS, GCP, Azure, Kubernetes) using purpose-built connectors that handle rate limiting appropriately. You load data into your database of choice and query using standard SQL rather than navigating proprietary CMDB application interfaces.\n\nCloudQuery's key capabilities for tracking ephemeral infrastructure:\n\n- **[Extensive cloud resource coverage](https://www.cloudquery.io/hub/plugins/source)** across AWS, GCP, Azure, and Kubernetes with automatic updates as providers add new resource types\n- **Built-in incremental sync** reduces API calls and costs by syncing only changed resources rather than full scans\n- **Automatic schema evolution** handles cloud provider API changes without manual intervention, ensuring your CMDB stays current\n\nTransform and model data using tools like dbt to create custom views for different teams. Security views, FinOps dashboards, and compliance reports all draw from the same underlying data. This architecture separates data collection from data analysis.\n\n### Query-on-Demand Pattern\n\nCombine scheduled syncs for baseline inventory with on-demand queries when you need current state. Scheduled syncs run at defined intervals to maintain historical inventory. On-demand queries hit cloud provider APIs directly during incidents or audits. This hybrid approach balances cost with freshness.\n\n## Use Cases and How to Address Them\n\n### Security and Incident Response\n\n**Requirement:** Detect security-critical changes within minutes to hours.\n\n**Approach:** Sync critical resources every 15-30 minutes (IAM, security groups, public-facing resources). Alert on changes via policies. Use on-demand queries during incident response.\n\n**Example:** Detect unauthorized IAM role creation within 30 minutes. Alerting rules fire and security investigates while the trail is fresh.\n\n### Cost Optimization and FinOps\n\n**Requirement:** Understand resource usage and identify waste.\n\n**Approach:** Daily snapshots are sufficient for most FinOps analysis. Track instance types and configurations over time. Join CMDB data with billing data to attribute costs.\n\n**Example:** Even ephemeral resources show up in billing. Daily snapshots correlate billing line items with configurations, even if instances have terminated.\n\n### Compliance and Audit\n\n**Requirement:** Prove infrastructure configuration at specific points in time.\n\n**Approach:** Regular snapshots (daily or more frequent) create audit trails. Point-in-time queries answer \"what did infrastructure look like on October 15?\" Historical retention addresses regulatory requirements (2-7 years).\n\n**Example:** Auditor asks to prove S3 buckets had encryption enabled on a specific date. Point-in-time query provides the evidence.\n\n### Operational Visibility\n\n**Requirement:** Troubleshoot issues and track resource relationships.\n\n**Approach:** Balance sync frequency with criticality. Production services sync hourly, development daily. Use on-demand queries during troubleshooting.\n\n**Example:** Application fails. Engineers query what infrastructure changed in the last hour. Security group modification, new deployment, or database change appears. Historical data narrows the investigation.\n\n## Summary\n\nTraditional CMDBs were built for a world where servers lived for years and weekly discovery scans provided adequate visibility. That world no longer exists. Modern cloud infrastructure is ephemeral. With containers living just minutes and Lambda functions executing in milliseconds, traditional 24-hour discovery windows miss the vast majority of short-lived resources.\n\nThe solution isn't \"scan faster.\" API rate limits, costs, and data volumes make that impractical. Instead, modern [cloud CMDBs](/blog/what-is-a-cloud-cmdb-and-do-you-need-one) need tiered sync strategies: 15-30 minutes for critical resources like IAM and security groups, hourly for important resources like EC2 and RDS, and daily for baseline resources. The [Infrastructure Lake](/blog/cmdb-is-dead-long-live-infrastructure-lake) architecture (extracting cloud data into scalable databases and querying with SQL) provides the scalability and flexibility modern cloud environments demand. CloudQuery enables this approach by syncing cloud infrastructure data into your database of choice.\n\n**Key takeaways:** Use API-first approaches combining scheduled syncs with on-demand queries. Expect to handle millions of records per sync across 1,000+ accounts. Modern cloud CMDB architectures cost significantly less than traditional CMDB applications by using existing databases and avoiding proprietary licensing. Finding the right balance depends on your requirements, but the principle holds: ephemeral infrastructure killed traditional discovery, and modern approaches must account for that reality.\n\nReady to build a modern cloud CMDB? [CloudQuery](https://www.cloudquery.io/) can help you extract and synchronize cloud infrastructure data at scale. [Reach out](/contact-us) for a demo or [explore the documentation](/docs/platform/introduction) to get started.\n\n## Frequently Asked Questions\n\n### What is a real-time cloud CMDB?\n\nA real-time cloud CMDB is a configuration management database that updates infrastructure inventory frequently enough to track ephemeral resources. Unlike traditional CMDBs that scan daily or weekly, real-time cloud CMDBs use tiered sync strategies (15-30 minutes for critical resources, hourly for important resources, daily for baseline) to maintain accurate visibility into cloud environments where containers live for minutes and serverless functions execute in milliseconds.\n\n### Why can't traditional CMDBs handle ephemeral infrastructure?\n\nTraditional CMDBs rely on scheduled discovery scans (daily or weekly intervals) that are too slow for cloud environments. With most containers living just minutes and Lambda functions executing in under one second, traditional discovery misses the vast majority of short-lived resources. These resources appear, execute, and vanish between scheduled scans, leaving security gaps, incomplete cost attribution, and missing audit trails.\n\n### What is the difference between a cloud CMDB and a traditional CMDB?\n\nTraditional CMDBs were designed for stable infrastructure (servers lasting 3-5 years) with manual or periodic discovery. Cloud CMDBs must handle ephemeral resources, millions of configuration changes per day, and time-series data across thousands of resource types. Cloud CMDBs use tiered sync strategies, Infrastructure Lake architecture with SQL queryability, and API-first approaches that combine scheduled syncs with on-demand queries. Traditional CMDB applications weren't built for this scale or velocity.\n\n### How often should a cloud CMDB sync infrastructure data?\n\nIt depends on the resource criticality. Use a tiered approach: critical security resources (IAM, security groups, public-facing resources) should sync every 15-30 minutes, important operational resources (EC2, RDS, S3) should sync hourly, and baseline resources (development environments, archival storage) can sync daily. This balances visibility needs against API rate limits and costs.\n\n### What is dynamic configuration management for cloud infrastructure?\n\nDynamic configuration management tracks infrastructure that changes continuously rather than remaining static. In cloud environments, resources autoscale, containers restart, and serverless functions execute on-demand. Dynamic configuration management uses flexible sync strategies, handles time-series data, and provides both historical snapshots for compliance and on-demand queries for current state. It replaces static inventory approaches that assume infrastructure is relatively stable.\n\n### Can CloudQuery handle ephemeral infrastructure?\n\nYes. CloudQuery extracts data from cloud provider APIs (AWS, GCP, Azure, Kubernetes) and loads it into your database of choice. You control sync frequency per resource type, implementing tiered strategies that sync critical resources every 15-30 minutes while less critical resources sync less frequently. CloudQuery provides SQL queryability, time-series data for historical analysis, and scalability to handle millions of resources across thousands of accounts.\n\n### What are the biggest challenges with tracking ephemeral infrastructure?\n\nThe main challenges are API rate limits (cloud providers throttle aggressive polling), data volume (millions of records per sync across 1,000+ accounts), coverage (AWS alone has 200+ services with new ones launching monthly), and filtering signal from noise (not all infrastructure changes matter equally). Solutions require tiered sync strategies, selective resource prioritization, scalable data storage, and custom views for different teams.\n\n### How much does it cost to build a cloud CMDB?\n\nCosts vary based on environment size and sync frequency. For an organization with 1,000 AWS accounts, expect database storage costs (hosting billions of historical records for 2-year retention), API call costs (though cloud providers don't charge for most metadata API calls), and infrastructure costs for running sync jobs. Using CloudQuery with your existing database is significantly more cost-effective than traditional CMDB applications, as you avoid proprietary licensing fees and leverage databases you already have.\n"])</script><script>self.__next_f.push([1,"7e:T38fd,\nBacklogs grow fast. Finding the themes behind requests, bugs, and \"nice to haves\" shouldn't require spelunking. In our previous post, we built semantic issue search with PostgreSQL + pgvector and OpenAI — great if you want to run it yourself and keep everything in your database. This article shows the fully managed path on Google Cloud: BigQuery stores and searches your embeddings, Vertex AI generates them and answers with Gemini. Same outcome; far less ops, elastic scale, and pay‑per‑query simplicity. If you prefer the self‑hosted route, check out the pgvector/OpenAI version here: [Improve GitHub Issues search with CloudQuery, pgvector and OpenAI](/blog/improve-github-issues-search-with-cloudquery-pgvector-and-openai).\n\n## What we’ll build\n\n- **Sync**: CloudQuery pulls open issues from the `cloudquery/cloudquery` GitHub repository into BigQuery.\n- **Embed**: As part of the sync, BigQuery calls Vertex AI through a remote model to create text embeddings and store them alongside chunks on a separate table.\n- **Ask**: A small Python script takes a question, embeds it, searches against existing embeddings with `VECTOR_SEARCH` in BigQuery, and has Gemini write the answer based on retrieved snippets.\n\n## Prerequisites\n\n- **CloudQuery CLI**: Install from the site ([cloudquery.io](https://www.cloudquery.io/)). If above free-tier usage, a `CLOUDQUERY_API_KEY` is required.\n- **GitHub Access Token**: PAT with repository read access for fetching issues.\n- **GCP project \u0026 dataset**: We’ll call it `ai-playground`. Also a BigQuery dataset named `github_issues` needs to be created.\n- **APIs enabled** in the project:\n - BigQuery API\n - BigQuery Connection API\n - Vertex AI API\n- **IAM permissions**:\n - For you (the auth’d user) within the project:\n - `roles/bigquery.admin`\n - `roles/resourcemanager.projectIamAdmin`\n - For the BigQuery connection’s service account (we'll create this soon): Vertex AI User role\n\nSee also: BigQuery ML remote models ([reference](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-create-remote-model)), remote model tutorial ([guide](https://cloud.google.com/bigquery/docs/bigquery-ml-remote-model-tutorial)), text embeddings overview ([guide](https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-text-embeddings)), and embeddings API reference ([guide](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api)).\n\n## Step 1 — Create a BigQuery remote model to Vertex AI\n\nIt’s a bit of setup, but once you get here the rest is trivial. We need a BigQuery dataset containing a remote model that points at Vertex AI’s embeddings endpoint.\n\n1. **Open your GCP project**\n\n\n\n2. **Create a BigQuery dataset** (or pick an existing one, e.g., `github_issues`)\n\n\n\n3. **Fill out the dataset form** (choose location and defaults)\n\n\n\n4. **Enable required APIs**\n\n\n\n\n\n5. **In BigQuery, click \"+ Add data\"** to start creating a connection\n\n\n\n6. **Add a Vertex AI connection** (Business Applications → Vertex AI Models: BigQuery Federation)\n\n\n\n7. **Grant the generated service account Vertex AI User** in IAM\n\n\n\n8. **Create the remote model in your dataset** (name it `textembedding`)\n\nNote that the project ID is not the project name (which is `ai-playground` in this case). GCP picked `triple-shift-469512-k6` as ID for this project.\n\n```sql\nCREATE OR REPLACE MODEL `triple-shift-469512-k6.github_issues_dataset.textembedding`\nREMOTE WITH CONNECTION `projects/triple-shift-469512-k6/locations/us/connections/bqml_connection`\nOPTIONS (\n ENDPOINT = 'gemini-embedding-001'\n);\n```\n\nIf this succeeds, you’re ready for embeddings directly from SQL. Note the model name (i.e. `textembedding`) is a friendly name for the remote model in BigQuery's dataset, not the name of the model in Vertex AI.\n\n\n\n## Step 2 — CloudQuery config\n\nCreate `github_to_bigquery.yaml` with the following content:\n\n```yaml\nkind: source\nspec:\n name: github\n path: cloudquery/github\n registry: cloudquery\n version: 'v14.1.1'\n tables: ['github_issues']\n destinations: ['bigquery']\n spec:\n access_token: '${GITHUB_TOKEN}' # Personal Access Token, required if not using App Authentication.\n repos: ['cloudquery/cloudquery']\n table_options:\n github_issues:\n state: 'open' # e.g. \"open, all, closed\", defaults to `all`\n\n---\nkind: destination\nspec:\n name: bigquery\n path: cloudquery/bigquery\n registry: cloudquery\n version: 'v4.3.9'\n write_mode: 'append'\n spec:\n project_id: ai-playground\n dataset_id: github_issues\n\n text_embeddings:\n tables:\n - source_table_name: github_issues\n target_table_name: github_issues_embeddings\n embed_columns: ['title', 'body'] # list of columns to embed\n text_splitter:\n recursive_text: # default text splitter\n chunk_size: 1000\n chunk_overlap: 500\n remote_model_name: 'textembedding'\n```\n\nNotes:\n\n- `GITHUB_TOKEN` and any other environment variables will be expanded by CloudQuery when the sync is run.\n- Your environment must be authenticated against the GCP project. Instructions for this can be found in the [BigQuery destination integration docs](https://www.cloudquery.io/hub/plugins/destination/cloudquery/bigquery/latest/docs#overview-authentication).\n\nRun the sync:\n\n```bash\ncloudquery sync github_to_bigquery.yaml\n```\n\nExample successful output:\n\n```text\n$ cloudquery sync github_to_bigquery.yaml\nLoading spec(s) from github_to_bigquery.yaml\nStarting sync for: github (cloudquery/github@v14.1.1) -\u003e [bigquery (cloudquery/bigquery@v4.3.9)]\nSync completed successfully. Resources: 157, Errors: 0, Warnings: 0, Time: 31s\n```\n\n\n\n## Step 3 — Ask questions (RAG) with a tiny Python script\n\nThe script below embeds your query via `ML.GENERATE_EMBEDDING`, searches your embeddings table with `VECTOR_SEARCH` (cosine distance), and asks Gemini to answer using the retrieved chunks.\n\n```python\nfrom google import genai\nfrom google.cloud import bigquery\nimport sys\nimport os\nfrom dotenv import load_dotenv\n\nload_dotenv()\n\nPROJECT_ID = os.getenv(\"PROJECT_ID\")\nLOCATION = os.getenv(\"LOCATION\")\nDATASET_ID = os.getenv(\"DATASET_ID\")\nTARGET_TABLE_ID = os.getenv(\"TARGET_TABLE_ID\", \"github_issues_embeddings\")\nREMOTE_MODEL_NAME = os.getenv(\"REMOTE_MODEL_NAME\", \"textembedding\")\nGEMINI_MODEL = os.getenv(\"GEMINI_MODEL\", \"gemini-2.5-flash\")\nTOP_K = int(os.getenv(\"TOP_K\", \"5\"))\n\ndef generate_query_embedding(query_text):\n \"\"\"Generate embedding for the search query using the remote model.\"\"\"\n\n embedding_query = f\"\"\"\n SELECT\n ml_generate_embedding_result AS embedding\n FROM\n ML.GENERATE_EMBEDDING(\n MODEL `{PROJECT_ID}.{DATASET_ID}.{REMOTE_MODEL_NAME}`,\n (\n SELECT '{query_text}' AS content, 'query' AS title\n )\n )\n \"\"\"\n\n client = bigquery.Client()\n query_job = client.query(embedding_query)\n results = query_job.result()\n\n for row in results:\n return row.embedding\n\n raise ValueError(\"No embedding generated for query\")\n\ndef search_documents(query_text, top_k=None):\n \"\"\"Search for relevant documents using VECTOR_SEARCH with cosine distance.\"\"\"\n\n if top_k is None:\n top_k = TOP_K\n\n client = bigquery.Client()\n query_embedding = generate_query_embedding(query_text)\n search_query = f\"\"\"\n SELECT\n base.chunk_id as chunk_id,\n base.chunk_text as chunk_text\n FROM VECTOR_SEARCH(\n TABLE `{PROJECT_ID}.{DATASET_ID}.{TARGET_TABLE_ID}`,\n 'embedding',\n (\n SELECT ARRAY\u003cFLOAT64\u003e{query_embedding} AS embedding\n ),\n 'embedding',\n top_k =\u003e {top_k},\n distance_type =\u003e 'COSINE'\n )\n \"\"\"\n\n query_job = client.query(search_query)\n results = query_job.result()\n\n return [\n {\n 'chunk_id': row.chunk_id,\n 'chunk_text': row.chunk_text,\n }\n for row in results\n ]\n\ndef generate_response(query_text, search_results):\n \"\"\"Generate a response using Gemini based on search results.\"\"\"\n\n if not search_results:\n return \"I couldn't find any relevant information to answer your question.\"\n\n client = genai.Client(vertexai=PROJECT_ID, project=PROJECT_ID, location=LOCATION)\n\n context = \"\\n\\n\".join([\n f\"(chunk {result['chunk_id']}): {result['chunk_text']}\"\n for result in search_results\n ])\n\n prompt = f\"\"\"\n Based on the following context, please answer the user's question.\n If the context doesn't contain enough information to answer the question,\n please say so clearly.\n\n Context:\n {context}\n\n User Question: {query_text}\n\n Please provide a comprehensive answer based on the context provided.\n \"\"\"\n\n response = client.models.generate_content(model=GEMINI_MODEL, contents=prompt)\n return response.text\n\ndef main():\n query = sys.argv[1]\n print(generate_response(query, search_documents(query)))\n\nif __name__ == \"__main__\":\n main()\n```\n\nLet's test it to see how our BigQuery integration is doing!\n\n```bash\n$ python search.py \"Summarise any feature requests for the BigQuery destination plugin\"\nBased on the provided context, here are the feature requests for the BigQuery destination plugin:\n\n1. **Add overwrite or overwrite-delete-stale write modes:**\n * **Problem:** Currently lacks support for incremental syncs in the BigQuery destination plugin.\n * **Solution:** Introduce `write` or `overwrite-delete-stale` write modes to enable incremental data synchronization.\n\n2. **Full CDC (Change Data Capture) support for PostgreSQL -\u003e BigQuery:**\n * **Problem:** Existing CDC support from PostgreSQL to BigQuery is partial, specifically missing handling for `DELETE` operations, `UPDATE` operations, and DML (Data Manipulation Language) for creating tables. There's also a need for benchmarking and stress testing to ensure BigQuery limits are not hit under high load.\n * **Solution:** Enhance CDC to fully support `DELETE`, `UPDATE`, and DML operations, and ensure performance under high load, potentially by exploring solutions like Datastream or Debezium.\n\n3. **Support time types in BigQuery destination:**\n * **Problem:** Inserting Arrow `time64_ns` types into BigQuery results in an error on Linux.\n * **Solution:** Enable proper support for time types, specifically `time64_ns`, to be inserted into BigQuery without errors.\n```\n\nErr..but at least we have text-embeddings support now! :|\n\n## Notes, gotchas, and tips\n\n- **Project ID**: The name that appears in the GCP console is NOT the project ID, but the project name.\n- **Remote model name**: The remote model name is the name of the remote model in BigQuery. It is not the name of the model in Vertex AI. You create a remote model in BigQuery by specifying the connection to Vertex AI, and give it a friendly name.\n- **Regions must match**: Dataset, connection, remote model, and Vertex AI location should align.\n- **Cost and quotas**: Embeddings and vector search consume resources. Monitor usage in GCP.\n- **Why BigQuery + Vertex AI?** At scale, embedding and search directly in BigQuery lets you rely on Google’s infra for parallelism and resource management rather than operating your own vector database. In theory it should be cheaper, faster, and simpler to manage.\n\n## Where to go next\n\n- GitHub source integration docs: [www.cloudquery.io/hub/plugins/source](https://www.cloudquery.io/hub/plugins/source/cloudquery/github/latest/docs)\n- BigQuery destination integration docs: [www.cloudquery.io/hub/plugins/destination](https://www.cloudquery.io/hub/plugins/destination/cloudquery/bigquery/latest/docs)\n- BigQuery ML remote models: [reference](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-create-remote-model), [tutorial](https://cloud.google.com/bigquery/docs/bigquery-ml-remote-model-tutorial)\n- Text embeddings: [how-to](https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-text-embeddings), [API reference](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api)\n- Vector search in BigQuery: [overview](https://cloud.google.com/bigquery/docs/vector-search-intro)\n\nWith a single config and a small script, you get high-quality semantic search over GitHub issues—backed by BigQuery and Vertex AI.\n\nNo clusters to size, no indices to tune, and no vector database to run. You keep governance and cost controls in BigQuery, while Vertex AI handles embeddings and answers.\n\nStart with issues today, then join them with product analytics, support tickets, or docs you already have in BigQuery to power calmer triage, faster prioritization, and sharper roadmaps. If your team runs on Google Cloud, this is the most frictionless way to add RAG to your workflow: sync with CloudQuery, search with BigQuery, and answer with Gemini.\n\nReady to turn your backlog into insight? Install the CLI, run the sync, and start asking smarter questions.\n7f:T660e,\n\n\n:::callout{type=\"info\"}\n**TL;DR**\nDesigning an effective cloud asset inventory isn't a technical problem—it's a decision-making problem. Learn the five design principles (freshness, completeness, normalization, queryability, extensibility) and maturity stages that separate systems delivering sub-five-minute response times from those taking days to answer critical security questions. The gap between containing a breach and watching it spread often comes down to inventory architecture.\n:::\n\nYour security team discovers a critical vulnerability affecting unencrypted databases. How long does it take you to identify and remediate all affected systems?\n\nIf you're running a poorly designed cloud asset inventory—or none at all—the answer is probably days. You'll manually hunt through spreadsheets, wikis, multiple dashboards, and scattered documentation trying to piece together which systems are vulnerable.\n\nWith a well-designed, up-to-date cloud asset inventory system? Minutes. All the data is immediately accessible, queryable, and actionable.\n\nThe difference isn't just efficiency. It's the gap between containing a security breach and watching it spread across your entire infrastructure.\n\nIn this video, AWS Partner Solutions Architect Keegan Marazzi and CloudQuery Developer Advocate Joe Karlsson break down how to build cloud asset inventory systems that deliver answers in seconds, not days.\n\n[](https://www.youtube.com/embed/quxBtPGPPbc)\n\n## The Real Problem: Decision Velocity, Not Data Collection\n\nMost engineers fundamentally misunderstand cloud asset inventory systems. They approach them as data collection and engineering problems—build the pipelines, sync the resources, store the data.\n\nHowever, cloud asset inventories aren't just technical problems. They're **decision-making and velocity problems** for the business and teams managing cloud infrastructure.\n\nThe question isn't \"can we collect this data?\" It's \"can we make critical decisions fast enough to matter?\"\n\nAfter analyzing hundreds of inventory implementations across enterprises, five design principles consistently separate successful systems from failed projects.\n\n## The Five Design Principles\n\n### 1. Freshness: How Current Is Your Data?\n\n**The reality:** 68% of security incidents require immediate asset visibility. Most teams need sub-five-minute response times to address security events effectively.\n\n**The anti-pattern:** Daily snapshots for security monitoring. When someone spins up a rogue instance or opens a security group to the public internet, you can't wait until tomorrow's batch run to discover it.\n\n**What freshness means:**\n\n- Real-time or near-real-time data synchronization\n- Sub-five-minute detection for critical security events\n- Continuous monitoring, not periodic snapshots\n- Immediate visibility when resources are created, modified, or deleted\n\nThe speed of your inventory directly determines your ability to respond to threats, contain breaches, and prevent incidents from escalating.\n\n### 2. Completeness: Do You See Everything?\n\n**The reality:** AWS (as of this recording) offers 240+ different services. Your inventory needs complete coverage across all of them—not just the main ones or a few S3 buckets.\n\n**What you need to capture:**\n\n- Every resource type across all AWS services\n- Configuration data for each resource\n- Relationships between resources\n- Tags, permissions, and full metadata depth\n- Coverage across all accounts and regions\n\n**Anecdotally, 90% of companies report only 40-60% visibility into their cloud environments.** That means massive blind spots where security vulnerabilities, cost waste, and operational issues hide undetected.\n\nYou can't secure, optimize, or govern resources you don't know exist.\n\n### 3. Normalization: Can We Join Our Data?\n\nThis is where most cloud asset inventory systems break.\n\n**The challenge:** You need schema consistency across different data sources, AWS services, and multiple accounts to get a complete view of resources across your organization.\n\n**Examples of relationships you need:**\n\n- Security groups that connect to EC2 instances\n- VPC networking topology across accounts\n- IAM roles and the resources they can access\n- Team ownership through tags\n- Environment classifications (production, staging, development)\n\n**What your data model needs:**\n\n- Universal keys (account ID, region, resource ID)\n- Consistent schemas across all resource types\n- Standardized field names and data types\n- Relationship mappings that span services and accounts\n\nWithout normalization, you end up with data silos that can't answer cross-service questions—which defeats the entire purpose of centralized inventory.\n\n### 4. Queryability: Can Teams Ask Questions About Your Cloud?\n\nRaw data is useless if people can't query it. Queryability determines whether your inventory becomes an operational tool or an abandoned data project.\n\n**Developer experience matters.** Give your engineering and business teams the ability to ask ad-hoc questions and explore infrastructure through tools they find most useful.\n\n**What queryability requires:**\n\n- **SQL databases or data warehouses** for ad-hoc queries and exploration\n- **APIs for programmatic access** to integrate with automation, scripts, and applications\n- **Webhook integrations** for real-time updates to Slack, PagerDuty, or alerting systems\n- **Standardized schemas** that enable integration into data pipelines and business intelligence tools\n\nIf only one person on your team knows how to extract insights from your inventory, you've created another bottleneck instead of solving visibility problems.\n\n### 5. Extensibility: Can Your System Adapt to Change?\n\nThe only constant in cloud infrastructure is change. AWS announces new services constantly—often at re:Invent and throughout the year. Your cloud asset inventory should track new services within days, not months.\n\n**What extensibility means:**\n\n- Plug-in architecture that discovers and maps new AWS services automatically\n- API-first design patterns that work with services that don't exist yet\n- Data models that handle unknown resource types without breaking\n- Support for new relationship patterns and service integrations\n\n**Future-proofing your inventory:** New requirements emerge. Applications launch. Teams grow. Your inventory architecture must adapt without requiring complete re-architecture every time AWS releases new capabilities.\n\n## Cloud Asset Inventory Maturity Stages\n\nMost organizations don't leap directly to perfectly architected cloud asset inventories. They progress through predictable stages, each with distinct capabilities, limitations, and breaking points that drive evolution to the next level.\n\n### Stage 1: Ad-Hoc\n\n**What it looks like:**\n\n- Someone asks questions about your cloud that you can't answer\n- Manually clicking through AWS console dashboards\n- Running ad-hoc API queries to gather information\n- Excel spreadsheets shared among team members\n\n**Limitations:** No automation, no consistency, massive time investment for every question.\n\n**Breaking point:** Questions become too frequent, or urgency (like security incidents) requires faster answers.\n\nIf this sounds familiar, you're not alone. Everyone starts here when they begin building cloud visibility.\n\n### Stage 2: Repeatable\n\n**What it looks like:**\n\n- Scheduled scripts (Lambda functions, cron jobs)\n- Basic automation that runs nightly or weekly\n- Some level of data collection consistency\n\n**Limitations:**\n\n- No real-time visibility\n- Missing relationship mapping between resources\n- Difficult to debug when scripts fail\n- Maintenance burden as AWS APIs change\n\n**Breaking point:** Scripts become too complex to maintain, or business needs require faster, more reliable data.\n\n### Stage 3: Internal APIs\n\n**What it looks like:**\n\n- Custom-built APIs to query cloud infrastructure\n- Centralized data access layer\n- Some level of standardization\n\n**Limitations:**\n\n- APIs break when AWS changes underlying services\n- Constant maintenance required\n- Development resources diverted from business features\n- Relationship management becomes complex\n\n**Breaking point:** Maintenance overhead exceeds value delivered, or organization realizes they're rebuilding what managed services already provide.\n\n### Stage 4: Managed Services\n\n**What it looks like:**\n\n- Centralized platforms with standardized queries\n- Solutions like AWS Config, CloudQuery, or other cloud inventory tools\n- Answer complex questions across accounts and regions\n- Track changes over time with audit trails\n\n**Capabilities:**\n\n- Multi-account, multi-region visibility\n- Relationship mapping across services\n- Historical change tracking\n- Standardized query interfaces\n\n**This is where most organizations should aim** unless they have unique requirements that managed services can't address.\n\n### Stage 5: Optimized\n\n**What it looks like:**\n\n- Real-time decision making with predictive analytics\n- Inventory doesn't just tell you what happened—it predicts what will happen\n- Automated remediation based on discovered issues\n- Proactive identification of future problems\n\n**Capabilities:**\n\n- Trend analysis based on historical data\n- Predictive modeling for capacity planning\n- Automated policy enforcement\n- Machine learning-powered anomaly detection\n\n**This is the gold tier** for organizations that have mastered cloud asset inventory fundamentals and are investing in advanced operational intelligence.\n\n## Putting It All Together\n\nGood cloud asset inventory architecture starts with the five core design principles:\n\n1. **Freshness** - Current, real-time data that enables rapid response\n2. **Completeness** - Comprehensive coverage across all AWS services, accounts, and regions\n3. **Normalization** - Consistent schemas that enable cross-service queries and relationship mapping\n4. **Queryability** - Accessible data through SQL, APIs, and integrations\n5. **Extensibility** - Architecture that adapts to new AWS services and changing requirements\n\nThese principles apply whether you're building internal solutions or evaluating managed services. Organizations that get these fundamentals right can answer critical questions in seconds instead of days—and that speed determines whether security incidents get contained or spiral out of control.\n\n---\n\n_Continue learning about cloud asset inventories with our guides on [what cloud asset inventories are](/blog/what-is-cloud-asset-inventory), [maximizing value from inventories](/blog/five-tips-maximum-value-cloud-asset-inventory), and [getting started with CloudQuery](/blog/introduction-to-cloudquery-aws)._\n\n## Video Transcript\n\n**Keegan:** Hi, everyone. Thanks for joining. My name is Keegan Marazzi, and I'm a partner solutions architect at AWS, where my team's goal is to help discover, develop, and deliver solutions with our partners. Today, I'm joined here with Joe Carlson, a senior cloud advocate developer at Cloud Query. Joe, can you introduce yourself?\n\n**Joe:** Hey, my name is Joe, developer advocate, and my job is mostly just helping people get better visibility into their cloud infrastructure.\n\n**Keegan:** Cool. So today we're going to be talking about some of the design considerations when it comes to building a cloud asset inventory at AWS as well as the common steps that we see companies go through in order to have successful and useful cloud asset inventories. So Joe, let's talk about our scenario.\n\n**Joe:** Yeah, let's go through it. So. What I see most engineers fundamentally misunderstand their cloud asset inventory systems is that they approach it as a data collection and engineering problem. But in my humble opinion, it's more of a decision making and velocity problem for the business and people are managing the cloud. So I want you to consider a scenario to help make this a little bit more clear, but let's say your security team comes to you because they discovered a critical vulnerability affecting unencrypted databases on the cloud. If you're running a non-existent or a poorly designed cloud-ass inventory, in order to answer that question, you might have to take a couple days to go through and manually hunt across spreadsheets, wikis, multiple goodies and dashboards to find out what your systems might be affected by that. But imagine you have a well-designed, up-to-date, fresh cloud-ass inventory system. You can identify and remediate all of those vulnerabilities in a couple of minutes, because all that data is right there. And the difference here isn't just efficiency. It's a gap between containing a breach and watching it spread out across the infrastructure or become a massive issue. So how do you build a system that delivers questions you might have about your cloud in seconds and not days? I've analyzed hundreds of different inventory implementations, and we found that there are every system who is working well at enterprise level gets five things right. Let's dig into some of the considerations you make for building out your own cloud asset inventory.\n\n**Keegan:** Yeah. So we're going to be talking about these five design principles you see on the right hand side of the screen. So the first principle is what we call a freshness or how current our data is. So the reality is 68% of security incidents require immediate asset visibility. And most teams need sub five minute response times. to update and address security events. Some of the anti-patterns we see are daily snapshots of security monitoring. When someone spins up a rogue instance or opens up a security group to the public internet, you can't wait until tomorrow's batch run in order to find out what's going on.\n\n**Joe:** Yeah. Principle two, completeness. The question you should be asking yourself is, do we see everything in our cloud environment? AWS, as of the date of the recording, has 240 plus different services that you can access their cloud config. with, and your inventory needs to get complete coverage across all these, not just the main ones or a couple of your S3 buckets. We're talking configuration data, your relationships between those different resources, tags, permission, and full metadata depth. I'd say too, just anecdotally, I see 90% of companies I talk to probably have, they say they have 40% to 60% visibility into their cloud. That's still a lot of resources that you don't have eyes on.\n\n**Keegan:** Yeah, yeah, that's a really good point, Joe. So that brings us into our third pillar, which is normalization. And the question that's asking is, can we join our data? And this is where most systems break because you need schema consistency across different data sources and across different accounts that your company manages in order to have a good rounded view of all the different resources in your organization. So it could be something as simple as security groups that connect to EC2 instances or it can be more complex depending on specific teams, tags, and ownership of different resources themselves. So this being said, your data model needs universal keys. Think account ID, think the region, whether you're just adding more data, you're gonna always make sure to have a consistent data schema across your cloud asset inventory.\n\n**Joe:** Yeah, well said. So, for instance, to the fourth principle, queryability, ask yourself, can our engineering or the people who need to see this data, can they ask questions about our cloud, our cloud, right? What's going on in it? I think one of the things here that you should be thinking about is developer experience. You need to make sure that you're giving your teams like the business and engineers who are building on your AWS cloud the ability to make ad hoc queries and exploration through, you know, whatever tools they find most useful. Oftentimes we see that through SQL databases or data warehouses, but they also may need APIs for programmatic access integration. It's like webhook integration. for real-time updates or integrating into things like Slack or other alert systems, as well as standardized schemas in order to build them into data pipelines.\n\n**Keegan:** Awesome. And that brings us to our final design principle, which is extensibility. So you need plug-in architecture that discover and map new AWS services automatically when AWS announces them. So whether it be a new service that comes out in re-event, your cloud asset inventory should be able to track it within days, not within months. So future proofing means API first design patterns for services that don't exist yet. Your data model must handle unknown resource types, new relationship patterns and service integrations that you haven't seen before or not using yet. So being able to future proof your cloud asset inventory is really important, especially when being agile and handling new changes within your organization.\n\n**Joe:** That reminds me that like the only constant in your cloud is going to be change, right? New requirements, new apps, new things come out, things got to go, things get sunset, but being able to like improvise and that's super important. All right, cool. So we talked about the five design principles that we see are really important. If you're considering or starting to build out your cloud asset inventory, I just want to talk a little bit about common steps I see for companies as they're building them out. Most organizations don't just leap right into a golden version, perfectly built cloud asset inventory that takes some steps. It's been weird, but I've seen predictable stages, each with like distinct capabilities and limitations and breaking points where they determine they need to go on to next level. Um, so. Here's how we've broken down maturity levels and kind of see what your progression through building out a cloud S inventory might look like. So first of all, on our ladder is an ad hoc layer. This typically comes when someone starts asking you questions about the cloud that you can't answer right away. So you have to start getting that data. Maybe you're manually clicking through some of your dashboards and trying to figure out all this data. Maybe you've got access to the APIs. So you're just running ad hoc queries on that to get the data to answer those questions. And, you know, a lot of that even may be done like in Excel spreadsheets that you're kind of sharing around. That's not familiar. You're not alone. I'd say this is where everyone starts out and they're starting to build a cloud asset or they're trying to start answering questions about their AWS cloud environment.\n\n**Keegan:** Yeah, so that takes us to our next step, which is being repeatable. So you have some scheduled scripts. You have some basic level automation, maybe a Lambda script that gets information about your cloud infrastructure on a nightly basis, but it's not able to really work for you every single time for different types of scenarios. So you don't have things like real-time visibility and you don't have things like relationship mapping. So any luck or any tries to debug some of your problems in these scripts are going to be really hard challenges. That takes us to the third rung on this ladder.\n\n**Joe:** Yeah. So a lot of times people too, they're building their own APIs to go and query that. I think oftentimes people find that maintaining an internal API to be able to answer this question becomes annoying. APIs change, they break, they need to be maintained, the data endpoints need to be changed, new relationships need to be managed, and that becomes just kind of a pain, right? You want to be able to focus on delivering features, and this is just a thing that's helping you build a better, more scalable, safer cloud. But that brings us to building up or looking into managed services. These are more centralized platforms with standardized queries that kind of help you do that. Think like AWS Config or Cloud Query, or you're building out another solution too. but they allow you to answer complex questions about your AWS environment across accounts, across regions, and allows you to track changes over time. But you can actually go a little bit further than that.\n\n**Keegan:** Yeah, and from our experience we've seen companies that have really advanced inventory systems. Asset inventory systems and we call that and categorize it as the optimized here so you have real time decision making with predictive analytics so your inventory doesn't just tell you what happened it tells you what will happen it enables you to make changes based on past trends in history of your organization in your asset utilization so. We're not talking just addressing the current problems but identifying the problems that might happen in the future. And this is really the gold tier that we have seen in our experience for companies managing their assets and their infrastructure on AWS. This kind of encapsulates the different stages and different levels of cloud asset inventories. And good inventory architecture starts with the principles that we discussed over here. So it's making sure that you have fresh current data. You have a well-rounded view of that data. So it encapsulates not only your specific infrastructure or your core components, but also the minor different configurations between your deployments. It could also, and it should include things like your test accounts and your experimentation accounts that you have engineers working on. So you have a well-rounded view. Next, we have normalization, which just makes sure that all of our data is joined and that we don't have any breaks in the styles of data. Next, we have query ability, so the ability to search that data, find and get insights on it. And lastly, we have extensibility, which, as I said before, is future-proofing the data, making sure that we're able to have room for new services that we don't account for, and being able to change quickly.\n\n## FAQ\n\n**Q: What's the difference between AWS Config and a cloud asset inventory?**\n\nA: AWS Config focuses on compliance monitoring and configuration change tracking for AWS resources. Cloud asset inventories provide broader capabilities—multi-cloud support, custom queries, integration with external data sources, and flexible data models. Many organizations use AWS Config as one input into a broader cloud asset inventory system.\n\n**Q: How often should cloud asset inventory data be refreshed?**\n\nA: It depends on your use cases. Security and compliance often require real-time or sub-five-minute refresh rates. Cost optimization can work with daily updates. Start with hourly refreshes as a baseline, then adjust based on stakeholder needs. The 68% of security incidents requiring immediate visibility argue for real-time or near-real-time updates.\n\n**Q: Can I build a cloud asset inventory using AWS native services alone?**\n\nA: Yes, using a combination of AWS Config, Systems Manager Inventory, Resource Groups, and custom Lambda functions. However, this approach requires significant engineering effort to build queries, normalize data, and maintain as AWS releases new services. Most organizations find managed solutions more cost-effective than dedicating engineering resources to building custom inventory systems.\n\n**Q: What's the biggest design mistake organizations make?**\n\nA: Optimizing for data collection instead of queryability. Teams build elaborate pipelines that sync every possible resource, then discover nobody can actually extract insights from the data. Start with specific questions you need to answer (security compliance, cost optimization, operational visibility), then design your inventory to make those queries simple and fast.\n\n**Q: How do I handle inventory across multiple AWS accounts?**\n\nA: Use cross-account IAM roles with read-only permissions (describe and list actions). Your inventory system assumes these roles to collect data from each account, then normalizes everything into a unified schema with account ID as a key dimension. This allows queries that span all accounts while maintaining security boundaries.\n\n**Q: Should I store inventory data in a data lake or database?**\n\nA: Depends on your query patterns and scale. Databases (PostgreSQL, MySQL) work well for operational queries and relationship mapping. Data warehouses (Snowflake, BigQuery) excel at analytical workloads and massive scale. Data lakes (S3 + Athena) provide cost-effective storage with query flexibility. Many organizations use hybrid approaches—operational database for real-time queries, data warehouse for analytics and historical trends.\n\n**Q: How do I ensure my inventory captures resources across all regions?**\n\nA: Configure your data collection to iterate through all enabled AWS regions for each account. Some services are global (IAM, Route53), but most are regional (EC2, RDS, S3). Your collection logic needs to handle both global and regional resources, avoiding duplication for global services while ensuring complete regional coverage.\n\n**Q: What permissions does a cloud asset inventory need?**\n\nA: Read-only access (describe and list permissions) across all AWS services you want to inventory. Use AWS managed policies like `ReadOnlyAccess` as a baseline, then refine to least-privilege access for production. Never grant write permissions to inventory systems—they should observe infrastructure, not modify it.\n\n**Q: How do I measure if my cloud asset inventory design is successful?**\n\nA: Track time-to-answer for critical questions. Can you identify all unencrypted databases in under five minutes? Can you map complete network topology across accounts in seconds? Measure query performance, data freshness, coverage percentage, and—most importantly—how often teams actually use the inventory to make decisions. Unused inventories are failed inventories, regardless of technical sophistication.\n80:T269a,\nShipping fast means making sense of a lot of noise. If your team lives in GitHub Issues, you know how hard it is to spot the themes behind requests, bugs, and \"would be nice\" ideas. With CloudQuery, PostgreSQL + pgvector, and a tiny OpenAI-powered script, you can turn that backlog into a searchable, conversational knowledge base—so you get answers, not just results.\n\nHere’s a lightweight setup you can run locally in minutes.\n\n::::callout{type=\"info\"}\n**TL;DR:**\n\nWith the new pgvector support in the PostgreSQL destination, CloudQuery automatically generates embeddings for issue titles and bodies. A minimal Python script embeds a question, retrieves relevant issue text-chunks directly in PostgreSQL using vector search, and asks OpenAI to answer using those relevant snippets. The result is a dramatically better GitHub Issues search experience.\nWe use CloudQuery to sync open issues from our public `cloudquery/cloudquery` GitHub repository into PostgreSQL.\n\n::::\n\n## Why do this?\n\nNative issue search is great for simple keyword matches, but it struggles with synonyms, context, and multi-sentence questions. By storing text embeddings in PostgreSQL with pgvector, we can perform semantic search over GitHub issues and ask questions like “What are users asking for around Azure?” — and get meaningful, contextual answers.\n\n\u003c!-- vale on --\u003e */}\n\n## What we’ll build\n\n- **Sync**: CloudQuery pulls open issues from `cloudquery/cloudquery` into PostgreSQL.\n- **Embed**: The PostgreSQL destination’s pgvector config splits issue content into chunks and stores embeddings.\n- **Ask**: A small Python script embeds your question, uses pgvector similarity to fetch the most relevant issue chunks, and calls OpenAI to answer concisely.\n\n## Prerequisites\n\n- **CloudQuery CLI**: [Download CloudQuery](https://www.cloudquery.io/) and install.\n- **PostgreSQL with pgvector**: PostgreSQL 14+ (15+ recommended) with the `pgvector` extension installed (CloudQuery automatically enables it for your database).\n- **Python 3.10+** with `openai` and `psycopg2-binary` packages.\n- **OpenAI API key** with access to `text-embedding-3-small` and a chat model (e.g., `gpt-4o-mini`).\n- **GitHub token** with repository read access (a Personal Access Token is sufficient).\n\nExport the environment variables (the YAML below will expand them automatically):\n\n```bash\nexport GITHUB_TOKEN=\"ghp_...\" # your GitHub PAT\nexport OPENAI_API_KEY=\"sk-...\" # your OpenAI API key\nexport POSTGRES_CONNECTION_STRING=\"host=localhost dbname=github user=postgres password=...\"\n# optional overrides\nexport EMBEDDING_MODEL=\"text-embedding-3-small\"\nexport COMPLETION_MODEL=\"gpt-4o-mini\"\n```\n\n## CloudQuery config\n\nCreate `github_to_postgresql.yaml` with the following content:\n\n```yaml\nkind: source\nspec:\n name: github\n path: cloudquery/github\n registry: cloudquery\n version: 'v14.1.0'\n tables: ['github_issues']\n destinations: ['postgresql']\n spec:\n access_token: '${GITHUB_TOKEN}' # Personal Access Token, required if not using App Authentication.\n repos: ['cloudquery/cloudquery']\n table_options:\n github_issues:\n state: 'open' # e.g. \"open, all, closed\", defaults to `all`\n\n---\nkind: destination\nspec:\n name: 'postgresql'\n path: 'cloudquery/postgresql'\n registry: 'cloudquery'\n version: 'v8.9.0'\n write_mode: 'overwrite-delete-stale'\n spec:\n connection_string: ${POSTGRES_CONNECTION_STRING}\n pgvector_config:\n tables:\n - source_table_name: github_issues\n target_table_name: github_issues_embeddings\n embed_columns: ['title', 'body'] # list of columns to embed\n # metadata_columns: [] # list of columns to copy from the source table as metadata\n text_splitter:\n recursive_text: # default text splitter\n chunk_size: 1000\n chunk_overlap: 500\n openai_embedding:\n api_key: ${OPENAI_API_KEY}\n model_name: text-embedding-3-small # the model to use for embedding\n dimensions: 1536 # the number of dimensions the embedding model is generating\n```\n\nRun the sync:\n\n```bash\ncloudquery sync github_to_postgresql.yaml\n```\n\nCloudQuery will create and populate `github_issues` and will also generate chunks and embeddings into `github_issues_embeddings` using pgvector.\n\nQuick sanity checks:\n\n```sql\n-- Latest issues\nSELECT number, title, state, updated_at\nFROM github_issues\nORDER BY updated_at DESC\nLIMIT 5;\n\n-- Embeddings: confirm chunking and vector dimensions\nSELECT LEFT(chunk, 120) AS chunk_preview,\n vector_dims(embedding) AS dims\nFROM github_issues_embeddings\nLIMIT 3;\n```\n\n## Ask questions with a tiny Python script\n\nSet up a virtual environment (pyenv or venv both work). Here’s a minimal venv flow:\n\n```bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install --upgrade pip\npip install openai psycopg2-binary\n```\n\nCreate `main.py`:\n\n```python\nimport psycopg2\nimport sys\nfrom openai import OpenAI\nimport os\n\n# ----------------------------\n# CONFIG\n# ----------------------------\nOPENAI_API_KEY = os.getenv(\"OPENAI_API_KEY\", \"sk-proj-.....\")\nPOSTGRES_CONNECTION_STRING = os.getenv(\"POSTGRES_CONNECTION_STRING\", \"host=localhost dbname=github user=postgres password=...\")\nEMBEDDING_MODEL = os.getenv(\"EMBEDDING_MODEL\", \"text-embedding-3-small\")\nCOMPLETION_MODEL = os.getenv(\"COMPLETION_MODEL\", \"gpt-4o-mini\")\nCONTEXT_CHUNK_COUNT = 5\n# ----------------------------\n\nclient = OpenAI(api_key=OPENAI_API_KEY)\n\ndef get_query_embedding(query: str):\n resp = client.embeddings.create(\n input=query,\n model=EMBEDDING_MODEL,\n )\n return resp.data[0].embedding\n\ndef get_most_similar_chunks(query_embedding, limit=5):\n \"\"\"\n Searches pgvector table for the most similar chunks.\n \"\"\"\n conn = psycopg2.connect(POSTGRES_CONNECTION_STRING)\n cur = conn.cursor()\n\n # Using \u003c-\u003e operator for cosine similarity in pgvector\n sql = \"\"\"\n SELECT chunk\n FROM github_issues_embeddings\n ORDER BY embedding \u003c-\u003e %s::vector\n LIMIT %s\n \"\"\"\n # Convert Python list to pgvector literal string: \"[v1,v2,...]\"\n embedding_literal = \"[\" + \",\".join(str(v) for v in query_embedding) + \"]\"\n cur.execute(sql, (embedding_literal, limit))\n results = [r[0] for r in cur.fetchall()]\n cur.close()\n conn.close()\n return results\n\ndef answer_question(query):\n # Step 1: Embed the query\n query_emb = get_query_embedding(query)\n\n # Step 2: Retrieve top-k similar chunks\n chunks = get_most_similar_chunks(query_emb, limit=CONTEXT_CHUNK_COUNT)\n context = \"\\n\\n\".join(chunks)\n\n # Step 3: Ask GPT with context\n prompt = f\"\"\"\nYou are an assistant. Use the following content to answer the question.\nContent:\n{context}\n\nQuestion:\n{query}\n\nAnswer concisely:\n\"\"\"\n resp = client.chat.completions.create(\n model=COMPLETION_MODEL,\n messages=[{\"role\": \"user\", \"content\": prompt}],\n temperature=0,\n )\n return resp.choices[0].message.content\n\n# ----------------------------\n# USAGE\n# ----------------------------\nif __name__ == \"__main__\":\n if len(sys.argv) \u003c 2:\n print(\"Usage: python main.py \u003cquestion\u003e\")\n print(\"Example: python main.py 'What are people requesting for Azure support?'\")\n sys.exit(1)\n\n question = sys.argv[1]\n answer = answer_question(question)\n print(answer)\n```\n\nRun it:\n\n```bash\n./.venv/bin/python main.py \"What are people requesting for Azure support?\"\n```\n\nThis was the result the OpenAI model gave us for our public CloudQuery repository's GitHub issues:\n\n```text\nPeople are requesting support for the following Azure features:\n\n1. Programmatic management of Azure Service Quotas through Azure Quota Rest APIs.\n2. Update of CloudQuery's policy support to align with the latest CIS Microsoft Azure Foundations Benchmark v1.5.0.\n3. Addition of Defender endpoints data to the Azure source plugin for detecting security vulnerabilities in machines.\n4. Correct documentation for the `cloud_name` options in CloudQuery configuration, specifically for AzurePublic, AzureGovernment, and AzureChina.\n```\n\n## Notes, gotchas, and tips\n\n- **Enable pgvector**: If you see `type \"vector\" does not exist`, run `CREATE EXTENSION vector;` in your database.\n- **Model dimensions must match**: `text-embedding-3-small` produces 1536 dimensions; keep the YAML `dimensions` in sync with the model you use.\n- **Cost awareness**: Embeddings incur token costs. Limit synced tables/columns or adjust chunk sizes if needed.\n- **Freshness**: Re-run `cloudquery sync` to refresh issues and regenerate new chunks when content changes.\n- **Indexes**: For larger datasets, consider adding an index to speed up retrieval:\n\n ```sql\n CREATE INDEX IF NOT EXISTS idx_github_issues_embeddings_embedding\n ON github_issues_embeddings USING ivfflat (embedding vector_cosine_ops)\n WITH (lists = 100);\n ```\n\n## Where to go next\n\n- GitHub source integration docs: [www.cloudquery.io/hub/plugins/source](https://www.cloudquery.io/hub/plugins/source/cloudquery/github/latest/docs)\n- PostgreSQL destination integration docs: [www.cloudquery.io/hub/plugins/destination](https://www.cloudquery.io/hub/plugins/destination/cloudquery/postgresql/latest/docs)\n- Download the CloudQuery CLI: [cloudquery.io](https://www.cloudquery.io/)\n- Our public GitHub repository: [github.com/cloudquery/cloudquery](https://github.com/cloudquery/cloudquery)\n\nWith a single config and a small script, you get high-quality semantic search over GitHub issues—right inside your own PostgreSQL instance.\n\nCloudQuery makes your GitHub data portable and intelligent: one config, a fast sync, and embeddings managed for you. Whether you’re sorting through issues, prioritizing roadmap items, or answering customer questions, semantic search over your own issues turns noise into signal.\n\nReady to level up your issues workflow? Install the CLI, run the sync, and start asking questions.\n81:T4a76,\n\n\n:::callout{type=\"info\"}\n**Executive Summary:**\nCloudQuery achieved 581 GB/hour processing throughput when handling file data on Apple M4 Pro hardware, demonstrating our engine's architectural capabilities when unconstrained by external rate limits. Production cloud data synchronization performance ranges from 7-91 GB/hour due to provider API rate limiting, with Azure achieving 91 GB/hour, GCP reaching 49 GB/hour, and AWS delivering 13 GB/hour - representing optimal throughput within documented API constraints. Complete benchmark methodology and reproducible test framework available via [open-source repository](https://github.com/cloudquery/benchmark).\n:::\n\nWe conducted extensive performance benchmarking across multiple hardware platforms and data source types to establish CloudQuery's throughput characteristics and identify performance constraints in production environments. This analysis reveals two distinct performance profiles: our engine's theoretical maximum when processing local data sources, and the practical limitations imposed by cloud provider API rate-limiting policies.\n\nThe distinction matters because most discussions of ETL performance focus on hardware scaling without acknowledging the external constraints that define real-world throughput. Our 581 GB/hour file processing performance exceeds [Fivetran's published enterprise benchmarks](https://www.fivetran.com/blog/benchmarked-a-data-pipeline-throughput-analysis) of 500+ GB/hour achieved on 16-core, 128GB RAM GCP infrastructure, while our cloud API performance delivers optimal throughput within provider rate limits that constrain all ETL solutions regardless of architecture.\n\nCompared to other open-source alternatives like [Airbyte](https://airbyte.com/resources/benchmark-of-data-pipeline-performance-cost), which typically processes data at 50-200 GB/hour depending on configuration complexity, CloudQuery's specialized cloud infrastructure focus enables superior performance across both consumer-grade and enterprise hardware configurations. Our testing methodology isolates these variables to provide actionable performance data for teams planning CloudQuery deployments across different scenarios.\n\n\n\n## Methodology and Testing Framework\n\nOur benchmark framework implements process-specific resource monitoring rather than system-wide metrics, providing precise measurement of CloudQuery's resource consumption during data processing operations. We tested across four primary data source types: [file](https://www.cloudquery.io/hub/plugins/source/cloudquery/file/latest/docs), [AWS](https://www.cloudquery.io/hub/plugins/source/cloudquery/aws/latest/docs), [Azure](https://www.cloudquery.io/hub/plugins/source/cloudquery/azure/latest/docs), and [GCP](https://www.cloudquery.io/hub/plugins/source/cloudquery/gcp/latest/docs), running identical workloads across different hardware configurations to isolate platform-specific performance characteristics.\n\nTesting was conducted on Apple M4 Pro systems alongside Linux configurations ranging from 4-core to 16-core systems with proportional memory allocation. Each test measured throughput in both rows per second and GB per hour, while monitoring CPU utilization and memory consumption at 100-millisecond intervals throughout the processing cycle.\n\nThe [File](https://www.cloudquery.io/hub/plugins/source/cloudquery/file/latest/docs) data source represents CloudQuery's uncontrolled performance ceiling. By processing local data without network latency or API rate limiting, we can measure the pure computational throughput of our Go-based architecture with Apache Arrow integration. This establishes the theoretical maximum performance that becomes achievable as external constraints diminish.\n\n## Benchmark Results\n\nThe following table presents raw performance measurements from our primary test configuration running CloudQuery on Apple M4 Pro hardware:\n\n\n\n| Data Source | Total Rows | Total MB | Duration (s) | GB/Hour | Average CPU | Max Memory (MB) |\n| ----------- | ---------- | -------- | ------------ | ------- | ----------- | --------------- |\n| AWS | 66,200 | 77.0 | 38.3 | 7.1 | 3.4% | 396.3 |\n| AZURE | 648,045 | 939.8 | 36.2 | 91.2 | 29.2% | 6,339.1 |\n| GCP | 179,940 | 485.7 | 34.3 | 49.7 | 6.7% | 1,122.7 |\n| File | 894,185 | 1,501.6 | 9.1 | 581.6 | 24.6% | 2,655.4 |\n\n**Test Platform Specifications:**\n\n- Platform: macOS 15.6.1 (ARM64)\n- CPU: Apple M4 Pro (12 cores)\n- RAM: 48.0 GB\n- CloudQuery Version: Latest stable release\n\nThese measurements demonstrate the performance differential between local data processing and cloud API-constrained operations. File processing achieved 8.2x higher throughput than Azure, the best-performing cloud provider, while utilizing moderate CPU and memory resources.\n\n## File Processing: Architectural Performance Ceiling\n\nFile processing achieved 581 GB/hour throughput while maintaining 24.6% average CPU utilization and peak memory usage of 2.6GB. This performance level represents CloudQuery's architectural capability when external rate limiting and network constraints are removed from the equation.\n\nThe relatively low CPU utilization during peak throughput indicates significant headroom for scaling on higher-core configurations or when processing multiple data sources simultaneously. Memory efficiency remained linear with data volume, consuming approximately 1.8MB per 1,000 rows processed across all test scenarios.\n\nThis performance ceiling becomes relevant for database migration scenarios, file synchronization workloads, and any data processing pipeline where CloudQuery operates against local data sources or APIs without restrictive rate limiting policies.\n\n## Cloud Provider Performance and API Rate Limiting Analysis\n\nCloud data synchronization performance varies significantly across providers due to different API rate limiting policies and service architecture decisions. Azure delivered the highest throughput at 91.2 GB/hour, while GCP achieved 49.7 GB/hour and AWS reached 7.1 GB/hour under identical testing conditions.\n\nThese performance differences reflect provider-specific API constraints rather than CloudQuery optimization levels, but CloudQuery delivers optimal throughput within these constraints through specialized knowledge of each provider's API patterns and rate limiting behavior. Teams attempting to build custom cloud data extraction solutions typically achieve 30-50% lower throughput than CloudQuery due to suboptimal connection management, inefficient API request patterns, and lack of provider-specific optimizations accumulated through years of production experience.\n\n**Note on Cloud Provider Quotas:**\nThe actual quotas vary by project, usage history, and can be different for different accounts. The performance differences we observed reflect provider-specific API constraints rather than CloudQuery optimization levels, but CloudQuery delivers optimal throughput within these constraints through specialized knowledge of each provider's API patterns and rate limiting behavior.\n\n## Platform Performance Characteristics\n\nExtended testing across Linux platforms revealed that 8-core configurations provide the optimal price-performance ratio for most CloudQuery workloads. File processing on Linux systems achieved 275-351 GB/hour depending on core count, with performance scaling plateauing around 8 cores due to I/O saturation rather than computational limits. Scaling from 8 to 16 cores delivered minimal throughput improvements while doubling hardware costs, indicating that I/O and API rate limiting become the primary bottlenecks beyond 8 cores for cloud data synchronization workloads.\n\nMemory usage scaled linearly with data volume rather than core count, requiring approximately 2GB of RAM per 100 GB/hour of expected throughput. This predictable scaling pattern enables accurate resource planning for enterprise deployments across different infrastructure configurations.\n\n## Architectural Design Decisions\n\nCloudQuery's performance characteristics result from specific architectural choices optimized for cloud infrastructure data processing. Our Go-based implementation leverages Goroutines for lightweight concurrency, with each Goroutines consuming approximately 2KB of stack space compared to megabytes required by traditional OS threads.\n\nApache Arrow integration enables vectorized data processing through SIMD operations on 64-byte column buffers, eliminating row-by-row processing overhead. This columnar approach provides genuine zero-copy data movement between processing stages, reducing memory allocation and garbage collection pressure during high-throughput operations.\n\nHTTP/2 connection pooling maintains persistent connections to cloud provider APIs with intelligent request multiplexing. We configure 200 idle connections with automatic cleanup and 20 connections per host to respect provider rate limits while maximizing request efficiency. This connection management strategy operates within documented API limits while achieving maximum allowable throughput.\n\n## Performance Validation and Reproducibility\n\nThe complete benchmark framework is available through our [open-source repository](https://github.com/cloudquery/benchmark), enabling independent verification of these performance measurements. The framework includes configuration files for all tested scenarios, detailed measurement scripts, and comprehensive reporting tools for CSV and markdown output generation.\n\nTeams can reproduce these benchmarks on their specific infrastructure configurations to validate performance expectations before production deployment. The framework supports multiple source and destination combinations, enabling performance testing across different data pipeline configurations relevant to specific use cases.\n\nThis transparency in methodology and tooling reflects our commitment to providing actionable performance data rather than theoretical benchmarks that cannot be validated in production environments.\n\n## CloudQuery Deployment Scenarios\n\nCloudQuery serves multiple data integration scenarios, each with different performance requirements and constraints. Cloud infrastructure data synchronization represents our most common use case, where teams need to maintain current inventory data across AWS, GCP, and Azure environments for security monitoring, compliance reporting, and cost management.\n\nDatabase migration projects leverage CloudQuery's FILE processing capabilities for rapid data transfer between systems without API rate limiting constraints. Teams frequently use CloudQuery as a lightweight alternative to enterprise ETL platforms for these migrations, achieving superior performance on standard infrastructure configurations.\n\nFile synchronization and general data pipeline scenarios benefit from CloudQuery's efficient memory usage and predictable resource consumption, enabling cost-effective data processing across different organizational scales and deployment environments.\n\n## Implications for Production Deployment\n\nThese performance measurements provide concrete data for capacity planning and infrastructure sizing decisions across different deployment architectures. CloudQuery operates as a single Go binary that can run anywhere Go is supported, from DevOps pipeline containers to Kubernetes clusters to EC2 instances.\n\n### Deployment Architecture and Infrastructure Sizing\n\nMost production deployments occur in containerized environments within Kubernetes clusters, where teams can leverage horizontal scaling to distribute workload across multiple CloudQuery instances. Our benchmarks indicate that 8-core configurations provide optimal cost-performance ratios for these scenarios, whether deployed as Kubernetes pods or dedicated EC2 instances.\n\nContainer orchestration platforms like Kubernetes benefit from CloudQuery's lightweight resource footprint, enabling cost-effective horizontal scaling when processing requirements exceed single-instance capabilities. Teams frequently deploy CloudQuery in CI/CD pipelines for automated infrastructure inventory updates, leveraging its efficient resource utilization for frequent, scheduled synchronization tasks.\n\n### Cloud Provider Performance and Location Impact\n\nTeams processing large cloud environments should account for API rate limiting constraints when estimating sync windows and planning batch processing schedules. Azure environments can typically sync 500GB datasets in 5.5 hours, while equivalent AWS datasets may require 70+ hours due to more restrictive API limits. This variance directly impacts operational planning for compliance reporting, security scanning, and cost analysis workflows.\n\nDeployment location significantly impacts cloud provider synchronization performance. Our AWS synchronization achieved 13.5 GB/hour when running on AWS infrastructure (4-core Linux instance) compared to 7.1 GB/hour on local Apple M4 Pro hardware - representing a 90% performance improvement through network proximity and AWS's internal routing optimizations. This benchmark demonstrates that AWS synchronization throughput nearly doubles when executed within AWS's own infrastructure environment.\n\n**AWS Infrastructure Deployment Results (2.2xlarge):**\n\n- AWS sync: 12.9 GB/hour (vs 7.1 GB/hour local)\n- Azure sync: 51.5 GB/hour\n- GCP sync: 18.2 GB/hour\n- File processing: 351.1 GB/hour\n- Platform: 4-core Linux on AWS infrastructure (31.3GB RAM)\n\nTeams should expect similar performance improvements when running Azure synchronization on Azure Compute instances or GCP synchronization on Google Cloud infrastructure, as network latency and provider-specific routing optimizations provide measurable throughput benefits.\n\n### Scaling Strategies and Horizontal Performance\n\nCloudQuery's architecture enables horizontal scaling across multiple instances to overcome single-instance API rate limiting constraints. Splitting synchronization workloads across two machines effectively doubles throughput for most scenarios, as each instance operates within its own API rate limit allocation. This scaling approach proves particularly effective for large enterprise environments where total sync time becomes a critical operational constraint.\n\nDatabase migration projects can leverage CloudQuery's full architectural performance when processing local data sources or databases with high-throughput APIs. The 581 GB/hour FILE processing capability enables rapid data transfer scenarios that traditional ETL platforms struggle to match without significant infrastructure investment.\n\n### Resource Planning and Capacity Management\n\nResource provisioning should account for linear memory scaling with data volume rather than processing cores. Teams should budget approximately 2GB of RAM per 100 GB/hour of expected throughput, regardless of the underlying infrastructure configuration. This predictable scaling pattern simplifies capacity planning across different cloud providers and deployment architectures.\n\n### Performance Optimization in Production\n\nPerformance optimization in production environments focuses primarily on connection pooling and request parallelization within provider API limits rather than hardware scaling. Teams achieve the best results by configuring CloudQuery to respect provider-specific rate limits while maximizing request efficiency through intelligent connection management.\n\n## Summary and Key Findings\n\nThis comprehensive performance analysis demonstrates several critical insights for teams evaluating ETL solutions for cloud infrastructure data processing. CloudQuery's 581 GB/hour FILE processing capability represents genuine architectural performance that exceeds enterprise ETL platforms while running on standard hardware configurations available in any deployment environment.\n\nThe performance differential between local data processing and cloud API-constrained operations highlights the importance of understanding external rate limiting factors when planning data synchronization workflows. Our cloud provider benchmarks achieve optimal throughput within documented API constraints, delivering 91 GB/hour from Azure, 49 GB/hour from GCP, and 13 GB/hour from AWS - performance levels that custom implementations rarely achieve without deep provider-specific optimization.\n\nCloudQuery's specialized cloud provider integrations, developed through years of production experience, consistently deliver maximum possible performance within each provider's documented rate limits. This expertise translates directly into operational advantages for teams requiring reliable, high-performance cloud data synchronization across enterprise environments.\n\nThe architectural choices underlying these performance characteristics - Go concurrency, Apache Arrow integration, and intelligent connection management - enable predictable resource scaling and deployment flexibility across different infrastructure configurations. Whether deployed in Kubernetes clusters, CI/CD pipelines, or dedicated compute instances, CloudQuery delivers consistent performance characteristics that simplify capacity planning and operational management.\n\n## Try CloudQuery\n\nReady to experience these performance characteristics in your environment? CloudQuery's complete functionality is available through our open-source distribution, enabling immediate evaluation against your specific cloud infrastructure and data processing requirements.\n\nDownload CloudQuery and run your own benchmarks using our [open-source benchmark framework](https://github.com/cloudquery/benchmark). Compare the results against your current data synchronization tools to quantify the performance and operational advantages CloudQuery can deliver in your production environment.\n\nGet started with CloudQuery today through our [documentation](/docs/platform/introduction) and join the thousands of engineering teams already leveraging CloudQuery for reliable, high-performance cloud infrastructure data processing.\n\n**Resources:**\n\n- [CloudQuery benchmark repository](https://github.com/cloudquery/benchmark)\n- [CloudQuery documentation](https://www.cloudquery.io/docs/platform/introduction)\n- [Performance tuning guide](https://www.cloudquery.io/docs/cli/advanced/performance-tuning)\n- [AWS API throttling documentation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html)\n- [Azure Resource Manager throttling guide](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/request-limits-and-throttling)\n- [GCP API quotas and limits](https://cloud.google.com/compute/quotas)\n"])</script><script>self.__next_f.push([1,"82:T186c,\nWe built a [Backstage plugin](https://www.cloudquery.io/hub/plugins/source/cloudquery/backstage/latest) that brings your entire cloud inventory into your developer portal. No more switching between AWS consoles or writing custom scripts to figure out what's running where. The plugin connects to [CloudQuery](https://www.cloudquery.io/hub/plugins/source), which automatically discovers and catalogs your cloud resources across [AWS](https://www.cloudquery.io/hub/plugins/source/cloudquery/aws/latest), [GCP](https://www.cloudquery.io/hub/plugins/source/cloudquery/gcp/latest), and [Azure](https://www.cloudquery.io/hub/plugins/source/cloudquery/azure/latest). Once connected, your team can browse EC2 instances, S3 buckets, databases, and IAM roles directly in Backstage. Run SQL queries through a web interface, generate filterable asset inventories, and answer questions like \"which resources are publicly accessible?\" without leaving your developer portal.\n\n**What you'll build:** A working integration that turns your CloudQuery infrastructure data into browsable, searchable content with Backstage.\n\n**What you'll get:** SQL console for ad-hoc queries, asset inventory generation, and a single interface for exploring your cloud footprint.\n\n**What you need to know:** Basic Backstage knowledge and a Snowflake account with data from your cloud accounts. We'll walk through CloudQuery setup if you haven't used it before.\n\n## Prerequisites\n\n- CloudQuery CLI set up to sync data into [Snowflake](https://www.cloudquery.io/hub/plugins/destination/cloudquery/snowflake/latest/docs).\n- Data synced to Snowflake. A minimal AWS example is in our [Quickstart Guide](https://www.cloudquery.io/docs/cli/getting-started).\n\n## Getting Started\n\nStart by cloning the [Backstage repository](https://github.com/cloudquery/backstage) locally:\n\n```sh\ngit clone https://github.com/cloudquery/backstage.git\n```\n\nIn the root directory, create a file named `app-config.local.yaml` and add your Snowflake account details:\n\n```sh\n$ cat \u003c\u003c 'EOF' | tee app-config.local.yaml \u003e /dev/null\nsnowflake:\n account: ${SNOWFLAKE_ACCOUNT}\n username: ${SNOWFLAKE_USERNAME}\n password: ${SNOWFLAKE_PASSWORD}\n database: ${SNOWFLAKE_DATABASE}\n schema: ${SNOWFLAKE_SCHEMA}\n warehouse: ${SNOWFLAKE_WAREHOUSE}\n role: ${SNOWFLAKE_ROLE}\n authenticator: ${SNOWFLAKE_AUTHENTICATOR}\n privateKeyPath: ${SNOWFLAKE_PRIVATE_KEY_PATH}\n privateKeyPass: ${SNOWFLAKE_PRIVATE_KEY_PASS}\n token: ${SNOWFLAKE_TOKEN}\nEOF\n```\n\nYou can use any authentication method supported by the [Snowflake Node.js driver](https://docs.snowflake.com/en/developer-guide/node-js/nodejs-driver-authenticate).\n\n## Running the Demo App\n\nTo get a quick idea on how the plugin works, install dependencies and start the app:\n\n```sh\nyarn install\nyarn start\n```\n\nThis will automatically launch the UI at `http://localhost:3000`.\n\n## Install Plugins to Existing Backstage App\n\nYou can easily integrate our plugin into your existing app.\n\n1. Copy the frontend and backend components of our plugin into your integrations directory:\n\n```sh\ncp -r plugins/cq-snowflake-frontend /path/to/your/app/plugins\ncp -r plugins/cq-snowflake-backend /path/to/your/app/plugins\n```\n\n1. Open your `packages/app/packages.json` and add a dependency for the frontend component:\n\n```json\n{\n \"dependencies\": {\n \"@internal/plugin-cq-snowflake-frontend\": \"workspace:*\"\n }\n}\n```\n\n1. Open `packages/backend/src/index.ts` and do the same for the backend component:\n\n```ts\nbackend.add(import('@internal/plugin-cq-snowflake-backend'));\n```\n\n1. You can now reference the plugin UI in the main app code. For example, you can add it as a route inside `packages/app/src/app.tsx`:\n\n```tsx\n...\nimport { CqSnowflakeFrontendSqlConsolePage, CqSnowflakeFrontendAssetInventoryPage } from '@internal/plugin-cq-snowflake-frontend';\n\n\u003cRoute path=\"/cq-snowflake-ui-asset-inventory\" element={\u003cCqSnowflakeFrontendAssetInventoryPage /\u003e} /\u003e\n\u003cRoute path=\"/cq-snowflake-ui-sql-console\" element={\u003cCqSnowflakeFrontendSqlConsolePage /\u003e} /\u003e\n...\n```\n\n1. Install dependencies with `yarn install` and you're done! 🎉\n\n## Using the SQL Console\n\nThe SQL console allows you to run arbitrary queries against your CloudQuery sync data.\n\n\n\n## Generating Asset Inventory\n\nOpen the Asset Inventory page and click `Generate Data`. This will start a background task to create and populate your asset inventory.\n\n\n\nThis could take several minutes, depending on how much data you have on Snowflake. Once the task is done, you should be able to browse your asset inventory 🎉\n\n\n\n\n\n## Wrap up\n\nYou've successfully set up a Backstage plugin that integrates with CloudQuery and Snowflake to provide a comprehensive view of your cloud infrastructure. The plugin offers:\n\n- **SQL Console**: Run ad-hoc queries against your CloudQuery sync data\n- **Asset Inventory**: Generate and browse filterable asset inventories\n- **Unified Interface**: Access all your cloud resources from one place\n\nThis integration eliminates the need to switch between multiple cloud consoles and provides a developer-friendly way to explore and query your infrastructure data.\n\n## Next Steps\n\n- Explore the [CloudQuery documentation](https://www.cloudquery.io/docs/platform/introduction) for more advanced configurations\n- Check out other [CloudQuery integrations](https://www.cloudquery.io/hub/plugins/source) for additional data sources\n- Join our [community forum](https://community.cloudquery.io/) to share your experiences and get help\n\nIf you find the plugin useful or have any feedback, we'd love to hear from you!\n6a:[\"$\",\"$L79\",null,{\"relatedArticles\":[{\"authors\":[{\"short_bio\":\"Joe Karlsson (He/They) is an Engineer turned Developer Advocate (and massive nerd). Joe empowers developers to think creatively when building applications, through demos, blogs, videos, or whatever else developers need.\",\"biography\":\"Joe Karlsson (He/They) is a Data Engineer and he empowers developers to think creatively when building real-time data applications through demos, blogs, videos, or whatever else developers need.\\nJoe's career has taken him from building out database best practices and demos for MongoDB, architecting and building one of the largest eCommerce websites in North America at Best Buy, and teaching at one of the most highly-rated software development boot camps on Earth. Joe is also a TEDx Speaker, film buff, and avid [TikToker](https://www.tiktok.com/@joekarlsson) and [Tweeter](https://x.com/JoeKarlsson1).\",\"image_url\":\"/images/people/joekarlsson.jpg\",\"name\":\"Joe Karlsson\",\"social\":{\"website\":\"https://joekarlsson.com\",\"twitter\":\"https://twitter.com/JoeKarlsson1\",\"linkedin\":\"https://www.linkedin.com/in/joekarlsson\",\"github\":\"https://github.com/JoeKarlsson\"},\"key\":\"joekarlsson\",\"slug\":\"joe-karlsson\"}],\"body\":\"$7a\",\"faqItems\":\"$undefined\",\"fileName\":\"etl-benchmark-1-million-rows-2-seconds-macbook.md\",\"metadata\":{\"title\":\"We benchmarked our ETL tool and synced 1 million rows in 2 seconds on a MacBook\",\"seoTitle\":\"ETL Benchmark: 1M Rows in 2 Seconds\",\"tags\":[\"Engineering\"],\"audience\":[\"Developers\"],\"date\":\"2026-08-27T00:00:00.000Z\",\"description\":\"We benchmarked our ETL tool and synced 1 million rows in 2 seconds on laptop hardware, which is 68% faster than enterprise platforms.\",\"author\":\"joekarlsson,\",\"image\":\"/images/blog/etl-benchmark-1-million-rows-2-seconds-macbook/thumbnail.png\",\"relatedArticles\":[\"explainer-3nf_vs_star-schema\",\"cloud-cmdb-best-practices-platform-engineers\",\"real-time-cloud-cmdb-ephemeral-infrastructure\"],\"lastModified\":\"2026-09-11T19:27:06.490Z\",\"readingTime\":8,\"url\":\"https://www.cloudquery.io/blog/etl-benchmark-1-million-rows-2-seconds-macbook\"},\"tableOfContent\":[{\"content\":\"Why data movement performance matters\",\"lvl\":2,\"slug\":\"why-data-movement-performance-matters\"},{\"content\":\"Benchmark methodology and reproducibility\",\"lvl\":2,\"slug\":\"benchmark-methodology-and-reproducibility\"},{\"content\":\"Testing Framework Architecture\",\"lvl\":3,\"slug\":\"testing-framework-architecture\"},{\"content\":\"Performance Measurement Methodology\",\"lvl\":4,\"slug\":\"performance-measurement-methodology\"},{\"content\":\"Comparative Performance Analysis\",\"lvl\":4,\"slug\":\"comparative-performance-analysis\"},{\"content\":\"Architectural Performance Factors\",\"lvl\":4,\"slug\":\"architectural-performance-factors\"},{\"content\":\"Benchmark Reproducibility\",\"lvl\":4,\"slug\":\"benchmark-reproducibility\"},{\"content\":\"Performance Validation\",\"lvl\":4,\"slug\":\"performance-validation\"},{\"content\":\"Performance comparison: small hardware vs enterprise cloud\",\"lvl\":4,\"slug\":\"performance-comparison:-small-hardware-vs-enterprise-cloud\"},{\"content\":\"What makes CloudQuery fast\",\"lvl\":2,\"slug\":\"what-makes-cloudquery-fast\"},{\"content\":\"Go concurrency architecture\",\"lvl\":3,\"slug\":\"go-concurrency-architecture\"},{\"content\":\"Apache Arrow integration\",\"lvl\":3,\"slug\":\"apache-arrow-integration\"},{\"content\":\"Multi-cloud performance testing results\",\"lvl\":2,\"slug\":\"multi-cloud-performance-testing-results\"},{\"content\":\"Multi-cloud optimization approach\",\"lvl\":3,\"slug\":\"multi-cloud-optimization-approach\"},{\"content\":\"Architecture advantages over enterprise ETL tools\",\"lvl\":2,\"slug\":\"architecture-advantages-over-enterprise-etl-tools\"},{\"content\":\"Specialized cloud infrastructure focus\",\"lvl\":3,\"slug\":\"specialized-cloud-infrastructure-focus\"},{\"content\":\"Resource efficiency\",\"lvl\":3,\"slug\":\"resource-efficiency\"},{\"content\":\"Self-hosted performance advantages\",\"lvl\":3,\"slug\":\"self-hosted-performance-advantages\"},{\"content\":\"CloudQuery by the numbers\",\"lvl\":2,\"slug\":\"cloudquery-by-the-numbers\"},{\"content\":\"Resources\",\"lvl\":2,\"slug\":\"resources\"}],\"tools\":[],\"tagOverlap\":1},{\"authors\":[{\"image_url\":\"/images/people/timarmstrong.webp\",\"name\":\"Tim Armstrong\",\"social\":{\"linkedin\":\"https://www.linkedin.com/in/notanexpat\",\"twitter\":\"https://twitter.com/plaintextnerds\",\"website\":\"https://plaintextnerds.com\"},\"short_bio\":\"Tim is a developer advocate and software engineer with experience in creating content and tutorials for programming, application security, networking and devops.\",\"biography\":\"Tim is a developer advocate who has contributed to well-known publications such as Linux Format. A software engineer with experience in C++, C#, Python and the entire software development ecosystem, Tim combines his software development experience and writing skills to ensure that every product he works on serves developers as well as it can.\",\"key\":\"timarmstrong\",\"slug\":\"tim-armstrong\"}],\"body\":\"$7b\",\"faqItems\":[{\"answer\":\"Third Normal Form (3NF) is a database normalization standard where every non-key column depends directly on the primary key and not on any other non-key column. A table is in 3NF when it meets three conditions: all values are atomic (First Normal Form), every non-key column depends on the whole primary key and not a subset of it (Second Normal Form), and no non-key column is transitively dependent on another non-key column (Third Normal Form). 3NF is the standard for transactional (OLTP) databases where minimizing data redundancy and preventing update anomalies are the priority.\",\"question\":\"What Is Third Normal Form (3NF)?\"},{\"answer\":\"Star schema is the standard for data warehouses. It's designed for read-heavy analytical queries, with fewer joins and pre-aggregated measures. 3NF is better for transactional source systems where write speed and data integrity matter most.\",\"question\":\"Is 3NF or Star Schema Better for a Data Warehouse?\"},{\"answer\":\"Yes, and most organizations do. Source systems (application databases) use 3NF for transactional consistency. Data warehouses use star schemas for analytics. An [ELT pipeline](https://www.getdbt.com/blog/data-transformation-in-data-warehouse) connects the two, transforming normalized source data into dimensional models.\",\"question\":\"Can You Use Both 3NF and Star Schema in the Same Architecture?\"},{\"answer\":\"A star schema keeps dimension tables fully denormalized (wide, flat tables). A [snowflake schema](https://www.datacamp.com/blog/star-schema-vs-snowflake-schema) partially normalizes dimensions by splitting them into sub-tables. Snowflake schemas save storage but add joins. Most teams prefer star schemas unless their dimension tables have millions of rows.\",\"question\":\"What Is the Difference Between a Star Schema and a Snowflake Schema?\"},{\"answer\":\"Columnar warehouses like BigQuery, Snowflake, and Redshift perform better with denormalized data. BigQuery shows a [49% average improvement in query response time](https://www.fivetran.com/blog/star-schema-vs-obt) with denormalized tables compared to star schemas, because its parallel execution engine benefits from fewer cross-node shuffles.\",\"question\":\"Does BigQuery or Snowflake Perform Better with 3NF or Star Schema?\"},{\"answer\":\"[dbt](https://www.getdbt.com/) transforms 3NF source data into star schemas inside the warehouse. It uses a layered pattern: staging models (roughly 3NF), intermediate models (enriched), and mart models (star schema or denormalized tables). dbt handles the \\\"T\\\" in ELT.\",\"question\":\"How Does dbt Relate to 3NF and Star Schema?\"},{\"answer\":\"A fact table stores quantitative measurements (revenue, quantity, duration) and foreign keys to dimensions. Each row represents a business event. A dimension table stores descriptive attributes (customer name, product category, date parts) used to filter and group facts.\",\"question\":\"What Is a Fact Table vs a Dimension Table?\"},{\"answer\":\"You don't migrate your source system. Instead, you build a separate analytical layer. Extract data from your 3NF source using a tool like [CloudQuery Platform](https://www.cloudquery.io/), load it into your warehouse, and use dbt to transform it into a star schema. The source system stays in 3NF.\",\"question\":\"How Do You Migrate from 3NF to Star Schema?\"},{\"answer\":\"[Slowly Changing Dimensions (SCDs)](https://en.wikipedia.org/wiki/Slowly_changing_dimension) handle attributes that change over time, like a customer's city. Type 1 overwrites the old value. Type 2 creates a new row with the updated value while preserving the historical record. Type 2 is the most common approach in production star schemas.\",\"question\":\"What Are Slowly Changing Dimensions in a Star Schema?\"},{\"answer\":\"3NF (Third Normal Form) is a database normalization standard that eliminates redundancy by storing each fact exactly once across multiple related tables. Star schema is a dimensional modeling approach that denormalizes data into a central fact table surrounded by dimension tables. 3NF optimizes for write speed and data integrity — it is the standard for transactional (OLTP) databases. Star schema optimizes for read speed and query simplicity — it is the standard for analytical (OLAP) warehouses. The key practical difference: 3NF requires joins to answer business questions, while star schema pre-joins data into a structure that is fast to query and easy for BI tools to navigate.\",\"question\":\"What is the difference between 3NF and star schema?\"},{\"answer\":\"Use star schema when your primary workload is analytical: dashboards, reports, and ad-hoc queries that aggregate large volumes of data. Star schema is the right choice for your data warehouse because columnar engines like BigQuery, Snowflake, and Redshift are designed to scan wide, denormalized tables efficiently. Use 3NF for your application database or any system where writes, updates, and data integrity are the priority. Most organizations end up using both: 3NF in source systems and star schema in the warehouse, connected by an ELT pipeline.\",\"question\":\"When should I use star schema instead of 3NF?\"},{\"answer\":\"No. Star schema is specifically designed for analytical workloads. 3NF performs poorly for analytics because answering business questions typically requires joining many tables, and join performance degrades with scale. Star schema reduces the number of joins needed, pre-aggregates measures in fact tables, and produces simpler SQL that BI tools can generate automatically. Columnar warehouses like BigQuery show a 49% average improvement in query response time with denormalized tables versus normalized schemas. For analytics, star schema (or further denormalized One Big Table) consistently outperforms 3NF.\",\"question\":\"Is 3NF better than star schema for analytics?\"},{\"answer\":\"For storing cloud asset data (AWS, GCP, Azure resources), a normalized approach close to 3NF is better for the source layer because cloud asset data is hierarchical and changes frequently. CloudQuery Platform loads cloud asset data into normalized tables that maintain data integrity across syncs — when a resource changes, one row updates, not every denormalized row referencing that resource. For the analytics layer on top of that data (dashboards, compliance queries, cost analysis), transforming the normalized source data into a star schema or denormalized model with dbt gives you the query performance analysts need.\",\"question\":\"Which schema is better for cloud asset data warehouses?\"},{\"answer\":\"CloudQuery Platform loads data into normalized tables that are closer to 3NF than star schema. Each cloud resource type (EC2 instances, S3 buckets, IAM roles) gets its own table with primary and foreign keys preserving the relationships between resources. This normalized structure ensures sync correctness — CloudQuery can insert, update, and delete individual resource records without touching unrelated rows. The star schema modeling happens downstream: teams typically use dbt to transform CloudQuery's normalized source tables into dimensional models optimized for their BI tools and analytical queries.\",\"question\":\"Does CloudQuery use 3NF or star schema?\"}],\"fileName\":\"explainer-3nf_vs_star-schema.md\",\"metadata\":{\"title\":\"Third Normal Form (3NF) vs Star Schema: When to Use Each\",\"seoTitle\":\"3NF vs Star Schema: When to Use Each\",\"tags\":[\"Engineering\"],\"audience\":[\"Developers\"],\"date\":\"2026-02-25T00:00:00.000Z\",\"lastModified\":\"2026-04-20T00:00:00.000Z\",\"description\":\"Learn the differences between Third Normal Form (3NF) and star schema with SQL examples, table diagrams, and guidance on when to use each in a data warehouse.\",\"author\":\"timarmstrong\",\"image\":\"/images/blog/explainer-3nf_vs_star-schema/thumbnail.webp\",\"relatedArticles\":[\"etl-benchmark-1-million-rows-2-seconds-macbook\",\"cloud-cmdb-best-practices-platform-engineers\",\"real-time-cloud-cmdb-ephemeral-infrastructure\"],\"readingTime\":20,\"url\":\"https://www.cloudquery.io/blog/explainer-3nf_vs_star-schema\"},\"tableOfContent\":[{\"content\":\"What Is Third Normal Form (3NF)?\",\"lvl\":2,\"slug\":\"what-is-third-normal-form-(3nf)?\"},{\"content\":\"What Does a 3NF Schema Look Like?\",\"lvl\":3,\"slug\":\"what-does-a-3nf-schema-look-like?\"},{\"content\":\"What Are the Advantages of 3NF?\",\"lvl\":3,\"slug\":\"what-are-the-advantages-of-3nf?\"},{\"content\":\"What Are the Disadvantages of 3NF?\",\"lvl\":3,\"slug\":\"what-are-the-disadvantages-of-3nf?\"},{\"content\":\"What Is a Star Schema?\",\"lvl\":2,\"slug\":\"what-is-a-star-schema?\"},{\"content\":\"What Does a Star Schema Look Like?\",\"lvl\":3,\"slug\":\"what-does-a-star-schema-look-like?\"},{\"content\":\"What Are the Advantages of Star Schema?\",\"lvl\":3,\"slug\":\"what-are-the-advantages-of-star-schema?\"},{\"content\":\"What Are the Disadvantages of Star Schema?\",\"lvl\":3,\"slug\":\"what-are-the-disadvantages-of-star-schema?\"},{\"content\":\"How Do 3NF and Star Schema Queries Compare?\",\"lvl\":2,\"slug\":\"how-do-3nf-and-star-schema-queries-compare?\"},{\"content\":\"What Is a Snowflake Schema?\",\"lvl\":2,\"slug\":\"what-is-a-snowflake-schema?\"},{\"content\":\"What About One Big Table (OBT)?\",\"lvl\":2,\"slug\":\"what-about-one-big-table-(obt)?\"},{\"content\":\"When Should You Use 3NF vs Star Schema?\",\"lvl\":2,\"slug\":\"when-should-you-use-3nf-vs-star-schema?\"},{\"content\":\"How Does the Modern Data Stack Handle This?\",\"lvl\":2,\"slug\":\"how-does-the-modern-data-stack-handle-this?\"},{\"content\":\"Cloud Warehouses Favor Denormalization\",\"lvl\":3,\"slug\":\"cloud-warehouses-favor-denormalization\"},{\"content\":\"dbt and the Transformation-First Approach\",\"lvl\":3,\"slug\":\"dbt-and-the-transformation-first-approach\"},{\"content\":\"Data Lakehouses and Open Table Formats\",\"lvl\":3,\"slug\":\"data-lakehouses-and-open-table-formats\"},{\"content\":\"Where Does CloudQuery Fit?\",\"lvl\":3,\"slug\":\"where-does-cloudquery-fit?\"},{\"content\":\"What Are Common Mistakes When Choosing Between 3NF and Star Schema?\",\"lvl\":2,\"slug\":\"what-are-common-mistakes-when-choosing-between-3nf-and-star-schema?\"},{\"content\":\"Which Schema Should You Start With?\",\"lvl\":2,\"slug\":\"which-schema-should-you-start-with?\"},{\"content\":\"3NF vs Star Schema: Which Should You Choose?\",\"lvl\":2,\"slug\":\"3nf-vs-star-schema:-which-should-you-choose?\"},{\"content\":\"3NF vs Star Schema for Cloud Data Pipelines with CloudQuery\",\"lvl\":2,\"slug\":\"3nf-vs-star-schema-for-cloud-data-pipelines-with-cloudquery\"},{\"content\":\"Frequently Asked Questions\",\"lvl\":2,\"slug\":\"frequently-asked-questions\"},{\"content\":\"What Is Third Normal Form (3NF)?\",\"lvl\":3,\"slug\":\"what-is-third-normal-form-(3nf)?\"},{\"content\":\"Is 3NF or Star Schema Better for a Data Warehouse?\",\"lvl\":3,\"slug\":\"is-3nf-or-star-schema-better-for-a-data-warehouse?\"},{\"content\":\"Can You Use Both 3NF and Star Schema in the Same Architecture?\",\"lvl\":3,\"slug\":\"can-you-use-both-3nf-and-star-schema-in-the-same-architecture?\"},{\"content\":\"What Is the Difference Between a Star Schema and a Snowflake Schema?\",\"lvl\":3,\"slug\":\"what-is-the-difference-between-a-star-schema-and-a-snowflake-schema?\"},{\"content\":\"Does BigQuery or Snowflake Perform Better with 3NF or Star Schema?\",\"lvl\":3,\"slug\":\"does-bigquery-or-snowflake-perform-better-with-3nf-or-star-schema?\"},{\"content\":\"How Does dbt Relate to 3NF and Star Schema?\",\"lvl\":3,\"slug\":\"how-does-dbt-relate-to-3nf-and-star-schema?\"},{\"content\":\"What Is a Fact Table vs a Dimension Table?\",\"lvl\":3,\"slug\":\"what-is-a-fact-table-vs-a-dimension-table?\"},{\"content\":\"How Do You Migrate from 3NF to Star Schema?\",\"lvl\":3,\"slug\":\"how-do-you-migrate-from-3nf-to-star-schema?\"},{\"content\":\"What Are Slowly Changing Dimensions in a Star Schema?\",\"lvl\":3,\"slug\":\"what-are-slowly-changing-dimensions-in-a-star-schema?\"},{\"content\":\"What is the difference between 3NF and star schema?\",\"lvl\":3,\"slug\":\"what-is-the-difference-between-3nf-and-star-schema?\"},{\"content\":\"When should I use star schema instead of 3NF?\",\"lvl\":3,\"slug\":\"when-should-i-use-star-schema-instead-of-3nf?\"},{\"content\":\"Is 3NF better than star schema for analytics?\",\"lvl\":3,\"slug\":\"is-3nf-better-than-star-schema-for-analytics?\"},{\"content\":\"Which schema is better for cloud asset data warehouses?\",\"lvl\":3,\"slug\":\"which-schema-is-better-for-cloud-asset-data-warehouses?\"},{\"content\":\"Does CloudQuery use 3NF or star schema?\",\"lvl\":3,\"slug\":\"does-cloudquery-use-3nf-or-star-schema?\"},{\"content\":\"Next steps\",\"lvl\":2,\"slug\":\"next-steps\"}],\"tools\":[],\"tagOverlap\":1},{\"authors\":[\"$6a:props:relatedArticles:0:authors:0\"],\"body\":\"$7c\",\"faqItems\":[{\"answer\":\"A cloud CMDB (Configuration Management Database) tracks cloud infrastructure configuration items (CIs) like EC2 instances, S3 buckets, IAM roles across multi-account and multi-cloud environments. Unlike traditional CMDBs built for static servers, cloud CMDBs handle ephemeral resources (containers living minutes, Lambda functions executing milliseconds). Platform engineers need cloud CMDBs to answer questions like \\\"Which S3 buckets are publicly accessible?\\\" or \\\"What changed in production yesterday at 3 p.m.?\\\" within minutes, not hours.\",\"question\":\"What is a cloud CMDB and why do platform engineers need it?\"},{\"answer\":\"Use tiered sync strategies based on resource criticality. Critical security resources (IAM, security groups) sync every 15-30 minutes for fast threat detection. Operational resources (EC2, RDS) sync hourly for troubleshooting and cost attribution. Baseline resources (dev environments) sync daily for trend analysis. This balances data freshness against API rate limits and compute costs.\",\"question\":\"How often should a cloud CMDB sync data?\"},{\"answer\":\"Cloud asset inventory lists resources (EC2 instances, S3 buckets, IAM roles). Cloud CMDB adds configuration details, relationships between resources, historical tracking, and governance. CloudQuery provides both: asset inventory (comprehensive resource lists) and CMDB capabilities (time-series data, SQL queryability, compliance retention).\",\"question\":\"What's the difference between a cloud CMDB and a cloud asset inventory?\"},{\"answer\":\"Yes. CloudQuery syncs cloud infrastructure data from AWS, GCP, Azure, Kubernetes into your database (PostgreSQL, BigQuery, Snowflake), providing the foundation for a modern cloud CMDB. Query with standard SQL, track historical changes, integrate with existing security/FinOps/incident management tools. CloudQuery Platform adds managed scheduling, asset inventory UI, and reporting; CLI provides open-source flexibility running on your infrastructure.\",\"question\":\"Can CloudQuery be used as a cloud CMDB?\"},{\"answer\":\"Use AWS Organizations role assumption. Configure one IAM role in your management account; CloudQuery assumes roles in all member accounts automatically. All accounts sync to centralized cloud CMDB database. Query across accounts with SQL: `SELECT * FROM aws_s3_buckets WHERE account_id IN (...)`. No per-account credential management required.\",\"question\":\"How do I handle multi-account AWS environments in my cloud CMDB?\"},{\"answer\":\"Stale data (sync failures mean outdated information), missing tags (untagged resources can't be attributed to teams), incomplete coverage (not syncing critical resource types). Solutions: monitor sync success rates (target \u003e99%), enforce tagging via AWS Config/Azure Policy, start with high-value resources (security, compute) and expand based on user requests.\",\"question\":\"What are the main cloud CMDB data quality challenges?\"},{\"answer\":\"Costs vary by database choice and sync frequency. Self-managed approaches using CloudQuery with PostgreSQL, BigQuery, or Snowflake are significantly more cost-effective than traditional enterprise CMDB licensing. Factors include database storage (for billions of records with multi-year retention) and compute resources for running sync jobs. CloudQuery's open-source CLI and managed Platform offer flexible pricing compared to traditional CMDB solutions.\",\"question\":\"How much does it cost to run a cloud CMDB for large enterprise environments?\"}],\"fileName\":\"cloud-cmdb-best-practices-platform-engineers.md\",\"metadata\":{\"title\":\"6 Cloud CMDB Best Practices for Platform Engineers (2026 Guide)\",\"tags\":[\"Cloud Asset Inventory\",\"Engineering\",\"Platform Engineering\"],\"audience\":[\"Developers\"],\"date\":\"2025-10-29T00:00:00.000Z\",\"description\":\"Cloud CMDB best practices for multi-account environments: automated discovery, tiered sync strategies, SQL-based querying, and historical data retention.\",\"author\":\"joekarlsson\",\"image\":\"/images/blog/cloud-cmdb-best-practices-platform-engineers/thumbnail.png\",\"tools\":\"aws-source-plugin, gcp-source-plugin, azure-source-plugin, k8s-source-plugin, postgresql-destination-plugin, bigquery-destination-plugin, snowflake-destination-plugin, clickhouse-destination-plugin\",\"relatedArticles\":[\"cloud-cmdb-vs-traditional-cmdb-2026\",\"real-time-cloud-cmdb-ephemeral-infrastructure\",\"cmdb-is-dead-long-live-infrastructure-lake\"],\"lastModified\":\"2026-09-11T19:27:06.166Z\",\"readingTime\":15,\"url\":\"https://www.cloudquery.io/blog/cloud-cmdb-best-practices-platform-engineers\"},\"tableOfContent\":[{\"content\":\"Why Traditional CMDB Approaches Fail in Cloud Environments\",\"lvl\":2,\"slug\":\"why-traditional-cmdb-approaches-fail-in-cloud-environments\"},{\"content\":\"Best Practice 1: Automate Discovery from Cloud APIs\",\"lvl\":2,\"slug\":\"best-practice-1:-automate-discovery-from-cloud-apis\"},{\"content\":\"Best Practice 2: Start with High-Value Resources, Expand Deliberately\",\"lvl\":2,\"slug\":\"best-practice-2:-start-with-high-value-resources,-expand-deliberately\"},{\"content\":\"Best Practice 3: Use Tiered Sync Frequencies\",\"lvl\":2,\"slug\":\"best-practice-3:-use-tiered-sync-frequencies\"},{\"content\":\"Choosing Your Cloud CMDB Approach\",\"lvl\":2,\"slug\":\"choosing-your-cloud-cmdb-approach\"},{\"content\":\"Best Practice 4: Design for Multi-Account and Multi-Cloud from Day One\",\"lvl\":2,\"slug\":\"best-practice-4:-design-for-multi-account-and-multi-cloud-from-day-one\"},{\"content\":\"Best Practice 5: Integrate with Security, FinOps, and Incident Management Tools\",\"lvl\":2,\"slug\":\"best-practice-5:-integrate-with-security,-finops,-and-incident-management-tools\"},{\"content\":\"Security: Datadog, Elastic, Splunk\",\"lvl\":3,\"slug\":\"security:-datadog,-elastic,-splunk\"},{\"content\":\"FinOps: AWS Cost Explorer, GCP Billing, Azure Cost Management\",\"lvl\":3,\"slug\":\"finops:-aws-cost-explorer,-gcp-billing,-azure-cost-management\"},{\"content\":\"Developer Portals: Backstage, Port\",\"lvl\":3,\"slug\":\"developer-portals:-backstage,-port\"},{\"content\":\"Incident Management: PagerDuty, Opsgenie\",\"lvl\":3,\"slug\":\"incident-management:-pagerduty,-opsgenie\"},{\"content\":\"BI \u0026 Dashboards: Grafana, Looker, Metabase\",\"lvl\":3,\"slug\":\"bi-\u0026-dashboards:-grafana,-looker,-metabase\"},{\"content\":\"Best Practice 6: Retain Historical Data for Compliance and Debugging\",\"lvl\":2,\"slug\":\"best-practice-6:-retain-historical-data-for-compliance-and-debugging\"},{\"content\":\"Implementation\",\"lvl\":2,\"slug\":\"implementation\"},{\"content\":\"Summary\",\"lvl\":2,\"slug\":\"summary\"},{\"content\":\"Related Resources\",\"lvl\":2,\"slug\":\"related-resources\"},{\"content\":\"Frequently Asked Questions\",\"lvl\":2,\"slug\":\"frequently-asked-questions\"},{\"content\":\"What is a cloud CMDB and why do platform engineers need it?\",\"lvl\":3,\"slug\":\"what-is-a-cloud-cmdb-and-why-do-platform-engineers-need-it?\"},{\"content\":\"How often should a cloud CMDB sync data?\",\"lvl\":3,\"slug\":\"how-often-should-a-cloud-cmdb-sync-data?\"},{\"content\":\"What's the difference between a cloud CMDB and a cloud asset inventory?\",\"lvl\":3,\"slug\":\"what's-the-difference-between-a-cloud-cmdb-and-a-cloud-asset-inventory?\"},{\"content\":\"Can CloudQuery be used as a cloud CMDB?\",\"lvl\":3,\"slug\":\"can-cloudquery-be-used-as-a-cloud-cmdb?\"},{\"content\":\"How do I handle multi-account AWS environments in my cloud CMDB?\",\"lvl\":3,\"slug\":\"how-do-i-handle-multi-account-aws-environments-in-my-cloud-cmdb?\"},{\"content\":\"What are the main cloud CMDB data quality challenges?\",\"lvl\":3,\"slug\":\"what-are-the-main-cloud-cmdb-data-quality-challenges?\"},{\"content\":\"How much does it cost to run a cloud CMDB for large enterprise environments?\",\"lvl\":3,\"slug\":\"how-much-does-it-cost-to-run-a-cloud-cmdb-for-large-enterprise-environments?\"}],\"tools\":[{\"name\":\"AWS Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/aws/latest/docs\"},{\"name\":\"GCP Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/gcp/latest/docs\"},{\"name\":\"Azure Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/azure/latest/docs\"},{\"name\":\"Kubernetes Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/k8s/latest/docs\"},{\"name\":\"PostgreSQL Destination Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/destination/cloudquery/postgresql/latest/docs\"},{\"name\":\"BigQuery Destination Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/destination/cloudquery/bigquery/latest/docs\"},{\"name\":\"Snowflake Destination Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/destination/cloudquery/snowflake/latest/docs\"},{\"name\":\"ClickHouse Destination Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/destination/cloudquery/clickhouse/latest/docs\"}],\"tagOverlap\":1},{\"authors\":[\"$6a:props:relatedArticles:0:authors:0\"],\"body\":\"$7d\",\"faqItems\":[{\"answer\":\"A real-time cloud CMDB is a configuration management database that updates infrastructure inventory frequently enough to track ephemeral resources. Unlike traditional CMDBs that scan daily or weekly, real-time cloud CMDBs use tiered sync strategies (15-30 minutes for critical resources, hourly for important resources, daily for baseline) to maintain accurate visibility into cloud environments where containers live for minutes and serverless functions execute in milliseconds.\",\"question\":\"What is a real-time cloud CMDB?\"},{\"answer\":\"Traditional CMDBs rely on scheduled discovery scans (daily or weekly intervals) that are too slow for cloud environments. With most containers living just minutes and Lambda functions executing in under one second, traditional discovery misses the vast majority of short-lived resources. These resources appear, execute, and vanish between scheduled scans, leaving security gaps, incomplete cost attribution, and missing audit trails.\",\"question\":\"Why can't traditional CMDBs handle ephemeral infrastructure?\"},{\"answer\":\"Traditional CMDBs were designed for stable infrastructure (servers lasting 3-5 years) with manual or periodic discovery. Cloud CMDBs must handle ephemeral resources, millions of configuration changes per day, and time-series data across thousands of resource types. Cloud CMDBs use tiered sync strategies, Infrastructure Lake architecture with SQL queryability, and API-first approaches that combine scheduled syncs with on-demand queries. Traditional CMDB applications weren't built for this scale or velocity.\",\"question\":\"What is the difference between a cloud CMDB and a traditional CMDB?\"},{\"answer\":\"It depends on the resource criticality. Use a tiered approach: critical security resources (IAM, security groups, public-facing resources) should sync every 15-30 minutes, important operational resources (EC2, RDS, S3) should sync hourly, and baseline resources (development environments, archival storage) can sync daily. This balances visibility needs against API rate limits and costs.\",\"question\":\"How often should a cloud CMDB sync infrastructure data?\"},{\"answer\":\"Dynamic configuration management tracks infrastructure that changes continuously rather than remaining static. In cloud environments, resources autoscale, containers restart, and serverless functions execute on-demand. Dynamic configuration management uses flexible sync strategies, handles time-series data, and provides both historical snapshots for compliance and on-demand queries for current state. It replaces static inventory approaches that assume infrastructure is relatively stable.\",\"question\":\"What is dynamic configuration management for cloud infrastructure?\"},{\"answer\":\"Yes. CloudQuery extracts data from cloud provider APIs (AWS, GCP, Azure, Kubernetes) and loads it into your database of choice. You control sync frequency per resource type, implementing tiered strategies that sync critical resources every 15-30 minutes while less critical resources sync less frequently. CloudQuery provides SQL queryability, time-series data for historical analysis, and scalability to handle millions of resources across thousands of accounts.\",\"question\":\"Can CloudQuery handle ephemeral infrastructure?\"},{\"answer\":\"The main challenges are API rate limits (cloud providers throttle aggressive polling), data volume (millions of records per sync across 1,000+ accounts), coverage (AWS alone has 200+ services with new ones launching monthly), and filtering signal from noise (not all infrastructure changes matter equally). Solutions require tiered sync strategies, selective resource prioritization, scalable data storage, and custom views for different teams.\",\"question\":\"What are the biggest challenges with tracking ephemeral infrastructure?\"},{\"answer\":\"Costs vary based on environment size and sync frequency. For an organization with 1,000 AWS accounts, expect database storage costs (hosting billions of historical records for 2-year retention), API call costs (though cloud providers don't charge for most metadata API calls), and infrastructure costs for running sync jobs. Using CloudQuery with your existing database is significantly more cost-effective than traditional CMDB applications, as you avoid proprietary licensing fees and leverage databases you already have.\",\"question\":\"How much does it cost to build a cloud CMDB?\"}],\"fileName\":\"real-time-cloud-cmdb-ephemeral-infrastructure.md\",\"metadata\":{\"title\":\"The Real-Time Cloud CMDB - Why Ephemeral Infrastructure Killed Traditional Discovery\",\"seoTitle\":\"Real-Time Cloud CMDB: Ephemeral Infra\",\"tags\":[\"Cloud Asset Inventory\",\"Engineering\"],\"audience\":[\"Developers\"],\"date\":\"2025-10-24T00:00:00.000Z\",\"description\":\"Traditional CMDBs miss ephemeral resources because containers live minutes. Modern cloud CMDBs use tiered sync strategies for real-time accuracy and coverage.\",\"author\":\"joekarlsson\",\"image\":\"/images/blog/real-time-cloud-cmdb-ephemeral-infrastructure/thumbnail.png\",\"relatedArticles\":[\"cloud-cmdb-vs-traditional-cmdb-2026\",\"cloud-cmdb-best-practices-platform-engineers\",\"cmdb-is-dead-long-live-infrastructure-lake\"],\"lastModified\":\"2026-09-11T19:27:07.212Z\",\"readingTime\":13,\"url\":\"https://www.cloudquery.io/blog/real-time-cloud-cmdb-ephemeral-infrastructure\"},\"tableOfContent\":[{\"content\":\"The Ephemeral Reality: How Cloud Infrastructure Actually Behaves\",\"lvl\":2,\"slug\":\"the-ephemeral-reality:-how-cloud-infrastructure-actually-behaves\"},{\"content\":\"The Speed Mismatch: When Discovery Can't Keep Up\",\"lvl\":2,\"slug\":\"the-speed-mismatch:-when-discovery-can't-keep-up\"},{\"content\":\"Real-World Impact\",\"lvl\":3,\"slug\":\"real-world-impact\"},{\"content\":\"Traditional vs. Modern Cloud CMDB: A Comparison\",\"lvl\":2,\"slug\":\"traditional-vs.-modern-cloud-cmdb:-a-comparison\"},{\"content\":\"What Modern Cloud CMDBs Actually Need\",\"lvl\":2,\"slug\":\"what-modern-cloud-cmdbs-actually-need\"},{\"content\":\"How do you balance CMDB sync frequency with cost?\",\"lvl\":3,\"slug\":\"how-do-you-balance-cmdb-sync-frequency-with-cost?\"},{\"content\":\"Flexible Sync Strategies\",\"lvl\":3,\"slug\":\"flexible-sync-strategies\"},{\"content\":\"What database architecture works best for cloud CMDBs?\",\"lvl\":3,\"slug\":\"what-database-architecture-works-best-for-cloud-cmdbs?\"},{\"content\":\"The Technical Challenge: Why This is Hard\",\"lvl\":2,\"slug\":\"the-technical-challenge:-why-this-is-hard\"},{\"content\":\"API Rate Limits\",\"lvl\":3,\"slug\":\"api-rate-limits\"},{\"content\":\"Data Volume and Velocity\",\"lvl\":3,\"slug\":\"data-volume-and-velocity\"},{\"content\":\"Why is filtering cloud CMDB data so challenging?\",\"lvl\":3,\"slug\":\"why-is-filtering-cloud-cmdb-data-so-challenging?\"},{\"content\":\"Practical Approaches That Work\",\"lvl\":2,\"slug\":\"practical-approaches-that-work\"},{\"content\":\"Tiered Sync Strategy in Practice\",\"lvl\":3,\"slug\":\"tiered-sync-strategy-in-practice\"},{\"content\":\"Building a Modern CMDB with CloudQuery\",\"lvl\":3,\"slug\":\"building-a-modern-cmdb-with-cloudquery\"},{\"content\":\"Query-on-Demand Pattern\",\"lvl\":3,\"slug\":\"query-on-demand-pattern\"},{\"content\":\"Use Cases and How to Address Them\",\"lvl\":2,\"slug\":\"use-cases-and-how-to-address-them\"},{\"content\":\"Security and Incident Response\",\"lvl\":3,\"slug\":\"security-and-incident-response\"},{\"content\":\"Cost Optimization and FinOps\",\"lvl\":3,\"slug\":\"cost-optimization-and-finops\"},{\"content\":\"Compliance and Audit\",\"lvl\":3,\"slug\":\"compliance-and-audit\"},{\"content\":\"Operational Visibility\",\"lvl\":3,\"slug\":\"operational-visibility\"},{\"content\":\"Summary\",\"lvl\":2,\"slug\":\"summary\"},{\"content\":\"Frequently Asked Questions\",\"lvl\":2,\"slug\":\"frequently-asked-questions\"},{\"content\":\"What is a real-time cloud CMDB?\",\"lvl\":3,\"slug\":\"what-is-a-real-time-cloud-cmdb?\"},{\"content\":\"Why can't traditional CMDBs handle ephemeral infrastructure?\",\"lvl\":3,\"slug\":\"why-can't-traditional-cmdbs-handle-ephemeral-infrastructure?\"},{\"content\":\"What is the difference between a cloud CMDB and a traditional CMDB?\",\"lvl\":3,\"slug\":\"what-is-the-difference-between-a-cloud-cmdb-and-a-traditional-cmdb?\"},{\"content\":\"How often should a cloud CMDB sync infrastructure data?\",\"lvl\":3,\"slug\":\"how-often-should-a-cloud-cmdb-sync-infrastructure-data?\"},{\"content\":\"What is dynamic configuration management for cloud infrastructure?\",\"lvl\":3,\"slug\":\"what-is-dynamic-configuration-management-for-cloud-infrastructure?\"},{\"content\":\"Can CloudQuery handle ephemeral infrastructure?\",\"lvl\":3,\"slug\":\"can-cloudquery-handle-ephemeral-infrastructure?\"},{\"content\":\"What are the biggest challenges with tracking ephemeral infrastructure?\",\"lvl\":3,\"slug\":\"what-are-the-biggest-challenges-with-tracking-ephemeral-infrastructure?\"},{\"content\":\"How much does it cost to build a cloud CMDB?\",\"lvl\":3,\"slug\":\"how-much-does-it-cost-to-build-a-cloud-cmdb?\"}],\"tools\":[],\"tagOverlap\":1},{\"authors\":[{\"image_url\":\"/images/people/marianogappa.webp\",\"name\":\"Mariano Gappa\",\"social\":{\"website\":\"https://marianogappa.github.io\",\"linkedin\":\"https://www.linkedin.com/in/marianolopezgappa/?locale=en_US\",\"github\":\"https://github.com/marianogappa\",\"twitter\":\"https://x.com/MarianoGappa\"},\"biography\":\"Mariano is part of CloudQuery's software development team. During 15 years working in software development, Mariano has worked in a wide variety of languages and platforms. His greatest experience lies in Python, Go, MySQL, PHP, Kubernetes and AWS but his varied career has shown that he can turn his hand to anything.\\nPrior to joining CloudQuery, Mariano worked in a number of software engineering roles at various businesses. In each role, he contributed to significant efficiency gains and performance improvements for the products he worked on, delivering 25x performance improvements in some cases.\\nHailing from Argentina, Mariano has worked in software engineering roles for businesses in his home country, New Zealand and the U.K.\",\"short_bio\":\"Mariano is a software engineer working at CloudQuery with 15 years of experience in the industry. His speciality is in improving performance and his work has reduced sync times and significantly improved CloudQuery's performance.\",\"key\":\"marianogappa\",\"slug\":\"mariano-gappa\"}],\"body\":\"$7e\",\"faqItems\":\"$undefined\",\"fileName\":\"scale-github-issues-semantic-search-with-cloudquery-bigquery-and-vertex-ai.md\",\"metadata\":{\"title\":\"Scale GitHub Issues semantic search with CloudQuery, BigQuery, and Vertex AI\",\"seoTitle\":\"GitHub Issues Search: BigQuery Vertex AI\",\"tags\":[\"Engineering\",\"Tutorials\",\"AI\"],\"audience\":[\"Developers\"],\"date\":\"2025-10-09T00:00:00.000Z\",\"description\":\"Sync GitHub issues to BigQuery with CloudQuery, generate Vertex AI embeddings via BigQuery remote models, and power fast, fully managed semantic search.\",\"author\":\"marianogappa\",\"tools\":\"github-source-plugin, bigquery-destination-plugin\",\"relatedArticles\":[\"improve-github-issues-search-with-cloudquery-pgvector-and-openai\",\"building-secure-ai-powered-cloud-security-data-pipeline-risk-detection\",\"automating-tag-recommendations-cloudquery-n8n\"],\"lastModified\":\"2026-09-11T19:27:07.264Z\",\"readingTime\":8,\"url\":\"https://www.cloudquery.io/blog/scale-github-issues-semantic-search-with-cloudquery-bigquery-and-vertex-ai\"},\"tableOfContent\":[{\"content\":\"What we’ll build\",\"lvl\":2,\"slug\":\"what-we’ll-build\"},{\"content\":\"Prerequisites\",\"lvl\":2,\"slug\":\"prerequisites\"},{\"content\":\"Step 1 — Create a BigQuery remote model to Vertex AI\",\"lvl\":2,\"slug\":\"step-1-—-create-a-bigquery-remote-model-to-vertex-ai\"},{\"content\":\"Step 2 — CloudQuery config\",\"lvl\":2,\"slug\":\"step-2-—-cloudquery-config\"},{\"content\":\"Step 3 — Ask questions (RAG) with a tiny Python script\",\"lvl\":2,\"slug\":\"step-3-—-ask-questions-(rag)-with-a-tiny-python-script\"},{\"content\":\"Notes, gotchas, and tips\",\"lvl\":2,\"slug\":\"notes,-gotchas,-and-tips\"},{\"content\":\"Where to go next\",\"lvl\":2,\"slug\":\"where-to-go-next\"}],\"tools\":[{\"name\":\"GitHub Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/github/latest/docs\"},{\"name\":\"BigQuery Destination Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/destination/cloudquery/bigquery/latest/docs\"}],\"tagOverlap\":1},{\"authors\":[\"$6a:props:relatedArticles:0:authors:0\"],\"body\":\"$7f\",\"faqItems\":[{\"answer\":\"A: AWS Config focuses on compliance monitoring and configuration change tracking for AWS resources. Cloud asset inventories provide broader capabilities—multi-cloud support, custom queries, integration with external data sources, and flexible data models. Many organizations use AWS Config as one input into a broader cloud asset inventory system.\",\"question\":\"Q: What's the difference between AWS Config and a cloud asset inventory?\"},{\"answer\":\"A: It depends on your use cases. Security and compliance often require real-time or sub-five-minute refresh rates. Cost optimization can work with daily updates. Start with hourly refreshes as a baseline, then adjust based on stakeholder needs. The 68% of security incidents requiring immediate visibility argue for real-time or near-real-time updates.\",\"question\":\"Q: How often should cloud asset inventory data be refreshed?\"},{\"answer\":\"A: Yes, using a combination of AWS Config, Systems Manager Inventory, Resource Groups, and custom Lambda functions. However, this approach requires significant engineering effort to build queries, normalize data, and maintain as AWS releases new services. Most organizations find managed solutions more cost-effective than dedicating engineering resources to building custom inventory systems.\",\"question\":\"Q: Can I build a cloud asset inventory using AWS native services alone?\"},{\"answer\":\"A: Optimizing for data collection instead of queryability. Teams build elaborate pipelines that sync every possible resource, then discover nobody can actually extract insights from the data. Start with specific questions you need to answer (security compliance, cost optimization, operational visibility), then design your inventory to make those queries simple and fast.\",\"question\":\"Q: What's the biggest design mistake organizations make?\"},{\"answer\":\"A: Use cross-account IAM roles with read-only permissions (describe and list actions). Your inventory system assumes these roles to collect data from each account, then normalizes everything into a unified schema with account ID as a key dimension. This allows queries that span all accounts while maintaining security boundaries.\",\"question\":\"Q: How do I handle inventory across multiple AWS accounts?\"},{\"answer\":\"A: Depends on your query patterns and scale. Databases (PostgreSQL, MySQL) work well for operational queries and relationship mapping. Data warehouses (Snowflake, BigQuery) excel at analytical workloads and massive scale. Data lakes (S3 + Athena) provide cost-effective storage with query flexibility. Many organizations use hybrid approaches—operational database for real-time queries, data warehouse for analytics and historical trends.\",\"question\":\"Q: Should I store inventory data in a data lake or database?\"},{\"answer\":\"A: Configure your data collection to iterate through all enabled AWS regions for each account. Some services are global (IAM, Route53), but most are regional (EC2, RDS, S3). Your collection logic needs to handle both global and regional resources, avoiding duplication for global services while ensuring complete regional coverage.\",\"question\":\"Q: How do I ensure my inventory captures resources across all regions?\"},{\"answer\":\"A: Read-only access (describe and list permissions) across all AWS services you want to inventory. Use AWS managed policies like `ReadOnlyAccess` as a baseline, then refine to least-privilege access for production. Never grant write permissions to inventory systems—they should observe infrastructure, not modify it.\",\"question\":\"Q: What permissions does a cloud asset inventory need?\"},{\"answer\":\"A: Track time-to-answer for critical questions. Can you identify all unencrypted databases in under five minutes? Can you map complete network topology across accounts in seconds? Measure query performance, data freshness, coverage percentage, and—most importantly—how often teams actually use the inventory to make decisions. Unused inventories are failed inventories, regardless of technical sophistication.\",\"question\":\"Q: How do I measure if my cloud asset inventory design is successful?\"}],\"fileName\":\"how-to-design-cloud-asset-inventory-aws.md\",\"metadata\":{\"title\":\"How to Design a Cloud Asset Inventory for AWS\",\"seoTitle\":\"Design a Cloud Asset Inventory for AWS\",\"tags\":[\"AWS\",\"Cloud Infrastructure\",\"Engineering\"],\"audience\":[\"Developers\"],\"date\":\"2025-10-03T00:00:00.000Z\",\"description\":\"Learn five essential design principles for cloud asset inventories: freshness, completeness, normalization, queryability, and automation for real AWS results.\",\"author\":\"joekarlsson\",\"image\":\"/images/blog/how-to-design-cloud-asset-inventory-aws/thumbnail.png\",\"video\":\"https://youtu.be/quxBtPGPPbc\",\"relatedArticles\":[\"what-is-an-aws-cloud-asset-inventory\",\"building-cloud-asset-inventory-with-aws\",\"what-is-a-cloud-asset-inventory\"],\"lastModified\":\"2026-09-11T19:27:06.644Z\",\"readingTime\":18,\"url\":\"https://www.cloudquery.io/blog/how-to-design-cloud-asset-inventory-aws\"},\"tableOfContent\":[{\"content\":\"The Real Problem: Decision Velocity, Not Data Collection\",\"lvl\":2,\"slug\":\"the-real-problem:-decision-velocity,-not-data-collection\"},{\"content\":\"The Five Design Principles\",\"lvl\":2,\"slug\":\"the-five-design-principles\"},{\"content\":\"1. Freshness: How Current Is Your Data?\",\"lvl\":3,\"slug\":\"1.-freshness:-how-current-is-your-data?\"},{\"content\":\"2. Completeness: Do You See Everything?\",\"lvl\":3,\"slug\":\"2.-completeness:-do-you-see-everything?\"},{\"content\":\"3. Normalization: Can We Join Our Data?\",\"lvl\":3,\"slug\":\"3.-normalization:-can-we-join-our-data?\"},{\"content\":\"4. Queryability: Can Teams Ask Questions About Your Cloud?\",\"lvl\":3,\"slug\":\"4.-queryability:-can-teams-ask-questions-about-your-cloud?\"},{\"content\":\"5. Extensibility: Can Your System Adapt to Change?\",\"lvl\":3,\"slug\":\"5.-extensibility:-can-your-system-adapt-to-change?\"},{\"content\":\"Cloud Asset Inventory Maturity Stages\",\"lvl\":2,\"slug\":\"cloud-asset-inventory-maturity-stages\"},{\"content\":\"Stage 1: Ad-Hoc\",\"lvl\":3,\"slug\":\"stage-1:-ad-hoc\"},{\"content\":\"Stage 2: Repeatable\",\"lvl\":3,\"slug\":\"stage-2:-repeatable\"},{\"content\":\"Stage 3: Internal APIs\",\"lvl\":3,\"slug\":\"stage-3:-internal-apis\"},{\"content\":\"Stage 4: Managed Services\",\"lvl\":3,\"slug\":\"stage-4:-managed-services\"},{\"content\":\"Stage 5: Optimized\",\"lvl\":3,\"slug\":\"stage-5:-optimized\"},{\"content\":\"Putting It All Together\",\"lvl\":2,\"slug\":\"putting-it-all-together\"},{\"content\":\"Video Transcript\",\"lvl\":2,\"slug\":\"video-transcript\"},{\"content\":\"FAQ\",\"lvl\":2,\"slug\":\"faq\"}],\"tools\":[],\"tagOverlap\":1},{\"authors\":[\"$6a:props:relatedArticles:4:authors:0\"],\"body\":\"$80\",\"faqItems\":\"$undefined\",\"fileName\":\"improve-github-issues-search-with-cloudquery-pgvector-and-openai.md\",\"metadata\":{\"title\":\"Improve GitHub Issues search effortlessly with CloudQuery, pgvector and OpenAI\",\"seoTitle\":\"Improve GitHub Issues Search with\",\"tags\":[\"Engineering\",\"Tutorials\",\"AI\"],\"audience\":[\"Developers\"],\"date\":\"2025-10-01T00:00:00.000Z\",\"description\":\"Turn GitHub issues into instant insights by syncing with CloudQuery, generating pgvector embeddings in PostgreSQL, and querying with natural language.\",\"author\":\"marianogappa\",\"tools\":\"github-source-plugin, postgresql-destination-plugin\",\"relatedArticles\":[\"scale-github-issues-semantic-search-with-cloudquery-bigquery-and-vertex-ai\",\"building-secure-ai-powered-cloud-security-data-pipeline-risk-detection\",\"automating-tag-recommendations-cloudquery-n8n\"],\"lastModified\":\"2026-09-11T19:27:06.753Z\",\"readingTime\":6,\"url\":\"https://www.cloudquery.io/blog/improve-github-issues-search-with-cloudquery-pgvector-and-openai\"},\"tableOfContent\":[{\"content\":\"Why do this?\",\"lvl\":2,\"slug\":\"why-do-this?\"},{\"content\":\"What we’ll build\",\"lvl\":2,\"slug\":\"what-we’ll-build\"},{\"content\":\"Prerequisites\",\"lvl\":2,\"slug\":\"prerequisites\"},{\"content\":\"CloudQuery config\",\"lvl\":2,\"slug\":\"cloudquery-config\"},{\"content\":\"Ask questions with a tiny Python script\",\"lvl\":2,\"slug\":\"ask-questions-with-a-tiny-python-script\"},{\"content\":\"Notes, gotchas, and tips\",\"lvl\":2,\"slug\":\"notes,-gotchas,-and-tips\"},{\"content\":\"Where to go next\",\"lvl\":2,\"slug\":\"where-to-go-next\"}],\"tools\":[{\"name\":\"GitHub Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/github/latest/docs\"},{\"name\":\"PostgreSQL Destination Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/destination/cloudquery/postgresql/latest/docs\"}],\"tagOverlap\":1},{\"authors\":[\"$6a:props:relatedArticles:0:authors:0\"],\"body\":\"$81\",\"faqItems\":\"$undefined\",\"fileName\":\"cloudquery-performance-benchmark-analysis-581gb-throughput-reality-cloud-api-constraints.md\",\"metadata\":{\"title\":\"CloudQuery Performance Benchmark Analysis: 581 GB/Hour Throughput and the Reality of Cloud API Constraints\",\"seoTitle\":\"CloudQuery Performance: 581 GB/Hour\",\"tags\":[\"Engineering\"],\"audience\":[\"Developers\"],\"date\":\"2025-09-15T00:00:00.000Z\",\"description\":\"Performance analysis of CloudQuery across AWS, GCP, and Azure achieving 581 GB/hour throughput on consumer hardware, with real-world API constraint data.\",\"author\":\"joekarlsson\",\"image\":\"/images/blog/cloudquery-performance-analysis-581gb/thumbnail.png\",\"tools\":\"aws-source-plugin, gcp-source-plugin, azure-source-plugin\",\"relatedArticles\":[\"etl-benchmark-1-million-rows-2-seconds-macbook\",\"explainer-3nf_vs_star-schema\",\"cloud-cmdb-best-practices-platform-engineers\"],\"lastModified\":\"2026-09-11T19:27:06.290Z\",\"readingTime\":10,\"url\":\"https://www.cloudquery.io/blog/cloudquery-performance-benchmark-analysis-581gb-throughput-reality-cloud-api-constraints\"},\"tableOfContent\":[{\"content\":\"Methodology and Testing Framework\",\"lvl\":2,\"slug\":\"methodology-and-testing-framework\"},{\"content\":\"Benchmark Results\",\"lvl\":2,\"slug\":\"benchmark-results\"},{\"content\":\"File Processing: Architectural Performance Ceiling\",\"lvl\":2,\"slug\":\"file-processing:-architectural-performance-ceiling\"},{\"content\":\"Cloud Provider Performance and API Rate Limiting Analysis\",\"lvl\":2,\"slug\":\"cloud-provider-performance-and-api-rate-limiting-analysis\"},{\"content\":\"Platform Performance Characteristics\",\"lvl\":2,\"slug\":\"platform-performance-characteristics\"},{\"content\":\"Architectural Design Decisions\",\"lvl\":2,\"slug\":\"architectural-design-decisions\"},{\"content\":\"Performance Validation and Reproducibility\",\"lvl\":2,\"slug\":\"performance-validation-and-reproducibility\"},{\"content\":\"CloudQuery Deployment Scenarios\",\"lvl\":2,\"slug\":\"cloudquery-deployment-scenarios\"},{\"content\":\"Implications for Production Deployment\",\"lvl\":2,\"slug\":\"implications-for-production-deployment\"},{\"content\":\"Deployment Architecture and Infrastructure Sizing\",\"lvl\":3,\"slug\":\"deployment-architecture-and-infrastructure-sizing\"},{\"content\":\"Cloud Provider Performance and Location Impact\",\"lvl\":3,\"slug\":\"cloud-provider-performance-and-location-impact\"},{\"content\":\"Scaling Strategies and Horizontal Performance\",\"lvl\":3,\"slug\":\"scaling-strategies-and-horizontal-performance\"},{\"content\":\"Resource Planning and Capacity Management\",\"lvl\":3,\"slug\":\"resource-planning-and-capacity-management\"},{\"content\":\"Performance Optimization in Production\",\"lvl\":3,\"slug\":\"performance-optimization-in-production\"},{\"content\":\"Summary and Key Findings\",\"lvl\":2,\"slug\":\"summary-and-key-findings\"},{\"content\":\"Try CloudQuery\",\"lvl\":2,\"slug\":\"try-cloudquery\"}],\"tools\":[{\"name\":\"AWS Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/aws/latest/docs\"},{\"name\":\"GCP Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/gcp/latest/docs\"},{\"name\":\"Azure Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/azure/latest/docs\"}],\"tagOverlap\":1},{\"authors\":[{\"image_url\":\"/images/people/cancelasun.webp\",\"name\":\"Duru Can Celasun\",\"social\":{\"website\":\"https://dcc.im\",\"linkedin\":\"https://www.linkedin.com/in/cancelasun\",\"github\":\"https://github.com/dcelasun\"},\"biography\":\"Can is part of CloudQuery's software engineering team. With extensive experience over many years in developing data‑intensive systems, Can has worked across multiple languages and platforms. His core expertise includes working on large‑scale event pipelines, building data warehousing systems, and contributing to open‑source governance as a member of the Apache Thrift PMC. He is proficient in Go, Linux, and cloud environments. Prior to joining CloudQuery, Can worked on game backends and data platforms in the gaming industry at various companies, including at Peak Games. Originally from Turkey, he has worked in software engineering roles in his home country and the Netherlands, and now lives in London.\",\"short_bio\":\"Duru Can Celasun is a software engineer at CloudQuery with deep experience in data pipelines, warehousing, Linux‑based systems, and open‑source development. As an Apache Thrift PMC member since late 2019, he has contributed to development and releases around the project.\",\"key\":\"cancelasun\",\"slug\":\"duru-can-celasun\"}],\"body\":\"$82\",\"faqItems\":\"$undefined\",\"fileName\":\"how-to-work-with-cloudquery-syncs-snowflake-backstage.md\",\"metadata\":{\"title\":\"How to Work with CloudQuery Syncs with Snowflake and Backstage\",\"seoTitle\":\"CloudQuery: Snowflake and Backstage Syncs\",\"date\":\"2025-08-07T00:00:00.000Z\",\"tags\":[\"Engineering\"],\"audience\":[\"Developers\"],\"description\":\"Learn how to query CloudQuery sync data on Snowflake using Backstage, including data transformation and visualization of your cloud asset inventory.\",\"author\":\"cancelasun\",\"tools\":\"aws-source-plugin, gcp-source-plugin, azure-source-plugin, snowflake-destination-plugin\",\"relatedArticles\":[\"etl-benchmark-1-million-rows-2-seconds-macbook\",\"explainer-3nf_vs_star-schema\",\"cloud-cmdb-best-practices-platform-engineers\"],\"lastModified\":\"2026-09-11T19:27:06.706Z\",\"readingTime\":4,\"url\":\"https://www.cloudquery.io/blog/how-to-work-with-cloudquery-syncs-snowflake-backstage\"},\"tableOfContent\":[{\"content\":\"Prerequisites\",\"lvl\":2,\"slug\":\"prerequisites\"},{\"content\":\"Getting Started\",\"lvl\":2,\"slug\":\"getting-started\"},{\"content\":\"Running the Demo App\",\"lvl\":2,\"slug\":\"running-the-demo-app\"},{\"content\":\"Install Plugins to Existing Backstage App\",\"lvl\":2,\"slug\":\"install-plugins-to-existing-backstage-app\"},{\"content\":\"Using the SQL Console\",\"lvl\":2,\"slug\":\"using-the-sql-console\"},{\"content\":\"Generating Asset Inventory\",\"lvl\":2,\"slug\":\"generating-asset-inventory\"},{\"content\":\"Wrap up\",\"lvl\":2,\"slug\":\"wrap-up\"},{\"content\":\"Next Steps\",\"lvl\":2,\"slug\":\"next-steps\"}],\"tools\":[{\"name\":\"AWS Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/aws/latest/docs\"},{\"name\":\"GCP Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/gcp/latest/docs\"},{\"name\":\"Azure Source Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/source/cloudquery/azure/latest/docs\"},{\"name\":\"Snowflake Destination Plugin\",\"url\":\"https://www.cloudquery.io/hub/plugins/destination/cloudquery/snowflake/latest/docs\"}],\"tagOverlap\":1}]}]\n6b:[\"$\",\"$L1d\",null,{\"aria-label\":\"Related posts\",\"component\":\"nav\",\"sx\":{\"border\":0,\"clipPath\":\"inset(50%)\",\"height\":\"1px\",\"margin\":\"-1px\",\"overflow\":\"hidden\",\"padding\":0,\"position\":\"absolute\",\"whiteSpace\":\"nowrap\",\"width\":\"1px\"},\"children\":[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",\"etl-benchmark-1-million-rows-2-seconds-macbook.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/etl-benchmark-1-million-rows-2-seconds-macbook\",\"children\":\"We benchmarked our ETL tool and synced 1 million rows in 2 seconds on a MacBook\"}]}],[\"$\",\"li\",\"explainer-3nf_vs_star-schema.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/explainer-3nf_vs_star-schema\",\"children\":\"Third Normal Form (3NF) vs Star Schema: When to Use Each\"}]}],[\"$\",\"li\",\"cloud-cmdb-best-practices-platform-engineers.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/cloud-cmdb-best-practices-platform-engineers\",\"children\":\"6 Cloud CMDB Best Practices for Platform Engineers (2026 Guide)\"}]}],[\"$\",\"li\",\"real-time-cloud-cmdb-ephemeral-infrastructure.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/real-time-cloud-cmdb-ephemeral-infrastructure\",\"children\":\"The Real-Time Cloud CMDB - Why Ephemeral Infrastructure Killed Traditional Discovery\"}]}],[\"$\",\"li\",\"scale-github-issues-semantic-search-with-cloudquery-bigquery-and-vertex-ai.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/scale-github-issues-semantic-search-with-cloudquery-bigquery-and-vertex-ai\",\"children\":\"Scale GitHub Issues semantic search with CloudQuery, BigQuery, and Vertex AI\"}]}],[\"$\",\"li\",\"how-to-design-cloud-asset-inventory-aws.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/how-to-design-cloud-asset-inventory-aws\",\"children\":\"How to Design a Cloud Asset Inventory for AWS\"}]}],[\"$\",\"li\",\"improve-github-issues-search-with-cloudquery-pgvector-and-openai.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/improve-github-issues-search-with-cloudquery-pgvector-and-openai\",\"children\":\"Improve GitHub Issues search effortlessly with CloudQuery, pgvector and OpenAI\"}]}],[\"$\",\"li\",\"cloudquery-performance-benchmark-analysis-581gb-throughput-reality-cloud-api-constraints.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/cloudquery-performance-benchmark-analysis-581gb-throughput-reality-cloud-api-constraints\",\"children\":\"CloudQuery Performance Benchmark Analysis: 581 GB/Hour Throughput and the Reality of Cloud API Constraints\"}]}],[\"$\",\"li\",\"how-to-work-with-cloudquery-syncs-snowflake-backstage.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/how-to-work-with-cloudquery-syncs-snowflake-backstage\",\"children\":\"How to Work with CloudQuery Syncs with Snowflake and Backstage\"}]}],[\"$\",\"li\",\"how-we-made-our-ides-data-aware-with-a-go-mcp-server.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/how-we-made-our-ides-data-aware-with-a-go-mcp-server\",\"children\":\"How we made our IDEs data-aware with a Go MCP Server\"}]}],[\"$\",\"li\",\"mcp-server-gotchas-we-learned-the-hard-way.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/mcp-server-gotchas-we-learned-the-hard-way\",\"children\":\"We Built an MCP Server and These Are the Gotchas Nobody Talks About\"}]}],[\"$\",\"li\",\"how-to-make-your-internal-developer-portal-actually-useful.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/how-to-make-your-internal-developer-portal-actually-useful\",\"children\":\"How to Make Your Internal Developer Portal Actually Useful\"}]}],[\"$\",\"li\",\"why-and-how-we-built-our-own-full-text-search-engine-with-clickhouse.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/why-and-how-we-built-our-own-full-text-search-engine-with-clickhouse\",\"children\":\"Why (and How) We Built Our Own Full Text Search Engine with ClickHouse\"}]}],[\"$\",\"li\",\"we-built-a-search-language-for-cloudquery.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/we-built-a-search-language-for-cloudquery\",\"children\":\"How We Accidentally Invented a Cloud Search Language\"}]}],[\"$\",\"li\",\"how-we-handle-billion-row-clickhouse-inserts-with-uuid-range-bucketing.md\",{\"children\":\"$L83\"}],\"$L84\",\"$L85\",\"$L86\",\"$L87\",\"$L88\",\"$L89\",\"$L8a\",\"$L8b\",\"$L8c\",\"$L8d\",\"$L8e\",\"$L8f\",\"$L90\",\"$L91\",\"$L92\",\"$L93\",\"$L94\",\"$L95\",\"$L96\",\"$L97\"]}]}]\n98:T5c8,{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"author\":[{\"@type\":\"Person\",\"description\":\"Yevgeny Pats is the Co-Founder \u0026 CEO at CloudQuery. Prior to establishing CloudQuery, he successfully founded and exited other startups. He has a background in software engineering and cybersecurity.\",\"image\":\"https://www.cloudquery.io/images/people/yevgenypats.jpg\",\"name\":\"Yevgeny Pats\",\"sameAs\":[\"https://www.linkedin.com/in/yevgeny-pats-5973328b/\",\"https://twitter.com/yevgenypats\"],\"url\":\"https://www.cloudquery.io/authors/yevgeny-pats\"}],\"dateModified\":\"2026-09-11T19:27:06.563Z\",\"datePublished\":\"2025-04-17T00:00:00.000Z\",\"description\":\"Discover why config data is the missing fourth pillar of observability, how it differs from logs, metrics, and traces, and how CloudQuery fills the gap.\",\"headline\":\"The Lost Fourth Pillar of Observability - Config Data Monitoring\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https://www.cloudquery.io/images/blog/fourth-lost-pillar-of-observability-config-data-monitoring/thumbnail.png\"},\"keywords\":\"Engineering\",\"mainEntityOfPage\":{\"@id\":\"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring\",\"@type\":\"WebPage\"},\"publisher\":{\"@type\":\"Organization\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.cloudquery.io/images/logo.webp\"},\"name\":\"CloudQuery\",\"url\":\"https://www.cloudquery.io\"},\"timeRequired\":\"PT6M\",\"url\":\"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring\"}6c:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$98\"},\"type\":\"application/ld+json\"}]\n6d:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"item\\\":\\\"https://www.cloudquery.io\\\",\\\"name\\\":\\\"Home\\\",\\\"position\\\":1},{\\\"@type\\\":\\\"ListItem\\\",\\\"item\\\":\\\"https://www.cloudquery.io/blog\\\",\\\"name\\\":\\\"Blog\\\",\\\"position\\\":2},{\\\"@type\\\":\\\"ListItem\\\",\\\"item\\\":\\\"https://www.cloudquery.io/blog/fourth-lost-pillar-of-observability-config-data-monitoring\\\",\\\"name\\\":\\\"The Lost Fourth Pillar of Observability - Config Data Monitoring\\\",\\\"position\\\":3}]}\"},\"type\":\"application/ld+json\"}]\n"])</script><script>self.__next_f.push([1,"83:[\"$\",\"a\",null,{\"href\":\"/blog/how-we-handle-billion-row-clickhouse-inserts-with-uuid-range-bucketing\",\"children\":\"How We Handle Billion-Row ClickHouse Inserts With UUID Range Bucketing\"}]\n84:[\"$\",\"li\",\"kubernetes-asset-tracking-at-scale.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/kubernetes-asset-tracking-at-scale\",\"children\":\"Kubernetes Asset Tracking: Why 70% of Enterprises are Struggling (And How to Fix It)\"}]}]\n85:[\"$\",\"li\",\"celebrating-4-years-of-cloudquery.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/celebrating-4-years-of-cloudquery\",\"children\":\"Celebrating 4 Years of CloudQuery! Onward and upward!\"}]}]\n86:[\"$\",\"li\",\"six-months-with-clickhouse-at-cloudquery.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/six-months-with-clickhouse-at-cloudquery\",\"children\":\"Six Months with ClickHouse at CloudQuery (The Good, The Bad, and the Unexpected)\"}]}]\n87:[\"$\",\"li\",\"what-we-learned-querying-cloud-infra-for-expired-dependencies.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/what-we-learned-querying-cloud-infra-for-expired-dependencies\",\"children\":\"What We Learned Querying Cloud Infra for Expired Dependencies\"}]}]\n88:[\"$\",\"li\",\"what-is-a-cloud-cmdb-and-do-you-need-one.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/what-is-a-cloud-cmdb-and-do-you-need-one\",\"children\":\"What is a Cloud CMDB (and is it needed)?\"}]}]\n89:[\"$\",\"li\",\"soc2.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/soc2\",\"children\":\"What is SOC2 Compliance?\"}]}]\n8a:[\"$\",\"li\",\"what-is-asm.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/what-is-asm\",\"children\":\"What is ASM?\"}]}]\n8b:[\"$\",\"li\",\"what-is-cnapp.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/what-is-cnapp\",\"children\":\"What is CNAPP?\"}]}]\n8c:[\"$\",\"li\",\"what-is-infrastructure-data-lake.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/what-is-infrastructure-data-lake\",\"children\":\"What is an Infrastructure Data Lake?\"}]}]\n8d:[\"$\",\"li\",\"what-is-a-security-data-fabric.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/what-is-a-security-data-fabric\",\"children\":\"What is a security data fabric?\"}]}]\n8e:[\"$\",\"li\",\"a-very-happy-golang-memory-profiling-story-at-cloudquery.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/a-very-happy-golang-memory-profiling-story-at-cloudquery\",\"children\":\"A very happy Golang memory profiling story at CloudQuery\"}]}]\n8f:[\"$\",\"li\",\"one-change-to-optimize-them-all.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/one-change-to-optimize-them-all\",\"children\":\"One change to optimize them all: a story about batching on the source side\"}]}]\n90:[\"$\",\"li\",\"building-local-and-serverless-elt-cq-and-md.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/building-local-and-serverless-elt-cq-and-md\",\"children\":\"Building Local and Serverless ELT(ETL) pipelines with CloudQuery and MotherDuck\"}]}]\n91:[\"$\",\"li\",\"cmdb-is-dead-long-live-infrastructure-lake.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/cmdb-is-dead-long-live-infrastructure-lake\",\"children\":\"CMDB is Dead: Long Live the Infrastructure Lake\"}]}]\n92:[\"$\",\"li\",\"infrastructure-data-platforms-made-simple.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/infrastructure-data-platforms-made-simple\",\"children\":\"Infrastructure Data Platforms made simple\"}]}]\n93:[\"$\",\"li\",\"adopting-apache-arrow-at-cloudquery.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/adopting-apache-arrow-at-cloudquery\",\"children\":\"Adopting Apache Arrow at CloudQuery\"}]}]\n94:[\"$\",\"li\",\"exploring-api-data-with-duckdb.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/exploring-api-data-with-duckdb\",\"children\":\"Exploring API Data with DuckDB\"}]}]\n95:[\"$\",\"li\",\"what-is-the-modern-data-stack.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/what-is-the-modern-data-stack\",\"children\":\"What is The Modern Data Stack?\"}]}]\n96:[\"$\",\"li\",\"building-cloudquery.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/building-cloudquery\",\"children\":\"Building CloudQuery: High Performance Data Integration Framework in Go\"}]}]\n97:[\"$\",\"li\",\"our-open-source-journey-building-cloudquery.md\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/our-open-source-journey-building-cloudquery\",\"children\":\"Our Open-Source Journey Building CloudQuery\"}]}]\n"])</script></body></html> |