CINXE.COM
Early Childhood
<!DOCTYPE html> <html lang="en"> <head> <style> html { visibility: hidden; opacity: 0; } </style> <link rel="shortcut icon" href="/Images/Favicon/AAP-Favicon-4_Black.png" type="image/x-icon"> <meta name="viewport" content="width=device-width" /> <meta http-equiv="X-UA-Compatible" content="IE=11;IE=Edge,chrome=1" /> <meta name="referrer" content="always" /> <meta property="og:title" content="Early Childhood" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.aap.org/en/patient-care/early-childhood/" /> <meta property="og:image" content="" /> <meta property="og:description" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="Early Childhood" /> <meta name="twitter:description" /> <meta name="twitter:image" content="" /> <meta name="robots" /> <meta name="description" content="Early childhood is a pivotal period of development. Experiences from early childhood (before birth - age 8) lay the foundation for how children grow and learn." /> <meta name="keywords" content="Early Childhood, Early Childhood Development, Early Childhood, Early Childhood Milestones, Childhood Timeline, Childhood Development, Childhood Milestones" /> <meta name="publish_date" content="2021-12-03"> <meta name="publish_image" content="https://www.aap.org/globalassets/aap-img-placeholder.png"> <meta name="vertex_keywords" content="Early Childhood, Early Childhood Development, Early Childhood, Early Childhood Milestones, Childhood Timeline, Childhood Development, Childhood Milestones"> <title>Early Childhood</title> <!-- CookiePro Cookies Consent Notice start for www.aap.org --> <script src="https://cookie-cdn.cookiepro.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="3e68ef05-4f6d-4004-898a-78b94ce0823e" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- CookiePro Cookies Consent Notice end for www.aap.org --> <!-- Google Tag Manager --> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window, document, 'script', 'dataLayer', 'GTM-N2RV28J'); </script> <!-- End Google Tag Manager --> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script type='text/javascript'> googletag.cmd.push(function() { var AAPorg = googletag.sizeMapping(). addSize([730, 0], [728, 90]) //desktop .build(); var gptAdSlots = []; gptAdSlots[0] =googletag.defineSlot('/22410314033/aap_leadert', [728, 90], 'div-gpt-ad-1633540336787-0').defineSizeMapping(AAPorg).addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); </script> <!-- Donate Widget Script --> <script>(function(w,d,s,n,a){if(!w[n]){var l='call,catch,on,once,set,then,track'.split(','),i,o=function(n){return'function'==typeof n?o.l.push([arguments])&&o:function(){return o.l.push([n,arguments])&&o}},t=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=!0;j.src='https://cdn.fundraiseup.com/widget/'+a; t.parentNode.insertBefore(j,t);o.s=Date.now();o.v=4;o.h=w.location.href;o.l=[];for(i=0;i<7;i++)o[l[i]]=o(l[i]);w[n]=o}})(window,document,'script','FundraiseUp','ADAHKUXY');</script> <!-- End Donate Widget Script --> <!-- Magnet Mail --> <script type="text/javascript" src="https://tracking.magnetmail.net/MagnetLeads.js"> </script> <script type="text/javascript"> com.realmagnet.MagnetLeads.init('hXdIOUQOZEy77inoSnCQWg'); com.realmagnet.MagnetLeads.visitPage(); </script> <!-- share this script --> <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=6480b01ae58f550012ea9faa&product=sop' async='async'></script> <!--New Relic --> <script type = "text/javascript" > ; window.NREUM || (NREUM = {}); NREUM.init = { distributed_tracing: { enabled: true }, privacy: { cookies_enabled: true } }; ; NREUM.loader_config = { accountID: "1613493", trustKey: "1613493", agentID: "342119000", licenseKey: "0c3b4b61ad", applicationID: "342118967" };; NREUM.info = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net", licenseKey: "0c3b4b61ad", applicationID: "342118967", sa: 1 };; /*! For license information please see nr-loader-spa-1.246.0.min.js.LICENSE.txt */ (() => { "use strict"; var e, t, r = { 234: (e, t, r) => { r.d(t, { P_: () => g, Mt: () => v, C5: () => s, DL: () => A, OP: () => D, lF: () => N, Yu: () => x, Dg: () => m, CX: () => c, GE: () => w, sU: () => j }); var n = r(8632), i = r(9567); const o = { beacon: n.ce.beacon, errorBeacon: n.ce.errorBeacon, licenseKey: void 0, applicationID: void 0, sa: void 0, queueTime: void 0, applicationTime: void 0, ttGuid: void 0, user: void 0, account: void 0, product: void 0, extra: void 0, jsAttributes: {}, userAttributes: void 0, atts: void 0, transactionName: void 0, tNamePlain: void 0 }, a = {}; function s(e) { if (!e) throw new Error("All info objects require an agent identifier!"); if (!a[e]) throw new Error("Info for ".concat(e, " was never set")); return a[e] } function c(e, t) { if (!e) throw new Error("All info objects require an agent identifier!"); a[e] = (0, i.D)(t, o), (0, n.Qy)(e, a[e], "info") } const u = e => { if (!e || "string" != typeof e) return !1; try { document.createDocumentFragment().querySelector(e) } catch { return !1 } return !0 }; var d = r(7056), l = r(50); const f = () => { const e = { mask_selector: "*", block_selector: "[data-nr-block]", mask_input_options: { color: !1, date: !1, "datetime-local": !1, email: !1, month: !1, number: !1, range: !1, search: !1, tel: !1, text: !1, time: !1, url: !1, week: !1, textarea: !1, select: !1, password: !0 } }; return { feature_flags: [], proxy: { assets: void 0, beacon: void 0 }, privacy: { cookies_enabled: !0 }, ajax: { deny_list: void 0, block_internal: !0, enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, distributed_tracing: { enabled: void 0, exclude_newrelic_header: void 0, cors_use_newrelic_header: void 0, cors_use_tracecontext_headers: void 0, allowed_origins: void 0 }, session: { domain: void 0, expiresMs: d.oD, inactiveMs: d.Hb }, ssl: void 0, obfuscate: void 0, jserrors: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, metrics: { enabled: !0, autoStart: !0 }, page_action: { enabled: !0, harvestTimeSeconds: 30, autoStart: !0 }, page_view_event: { enabled: !0, autoStart: !0 }, page_view_timing: { enabled: !0, harvestTimeSeconds: 30, long_task: !1, autoStart: !0 }, session_trace: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 }, harvest: { tooManyRequestsDelay: 60 }, session_replay: { autoStart: !0, enabled: !1, harvestTimeSeconds: 60, sampling_rate: 50, error_sampling_rate: 50, collect_fonts: !1, inline_images: !1, inline_stylesheet: !0, mask_all_inputs: !0, get mask_text_selector() { return e.mask_selector }, set mask_text_selector(t) { u(t) ? e.mask_selector = t + ",[data-nr-mask]" : null === t ? e.mask_selector = t : (0, l.Z)("An invalid session_replay.mask_selector was provided and will not be used", t) }, get block_class() { return "nr-block" }, get ignore_class() { return "nr-ignore" }, get mask_text_class() { return "nr-mask" }, get block_selector() { return e.block_selector }, set block_selector(t) { u(t) ? e.block_selector += ",".concat(t) : "" !== t && (0, l.Z)("An invalid session_replay.block_selector was provided and will not be used", t) }, get mask_input_options() { return e.mask_input_options }, set mask_input_options(t) { t && "object" == typeof t ? e.mask_input_options = { ...t, password: !0 } : (0, l.Z)("An invalid session_replay.mask_input_option was provided and will not be used", t) } }, spa: { enabled: !0, harvestTimeSeconds: 10, autoStart: !0 } } }, h = {}, p = "All configuration objects require an agent identifier!"; function g(e) { if (!e) throw new Error(p); if (!h[e]) throw new Error("Configuration for ".concat(e, " was never set")); return h[e] } function m(e, t) { if (!e) throw new Error(p); h[e] = (0, i.D)(t, f()), (0, n.Qy)(e, h[e], "config") } function v(e, t) { if (!e) throw new Error(p); var r = g(e); if (r) { for (var n = t.split("."), i = 0; i < n.length - 1; i++) if ("object" != typeof (r = r[n[i]])) return; r = r[n[n.length - 1]] } return r } const b = { accountID: void 0, trustKey: void 0, agentID: void 0, licenseKey: void 0, applicationID: void 0, xpid: void 0 }, y = {}; function A(e) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); if (!y[e]) throw new Error("LoaderConfig for ".concat(e, " was never set")); return y[e] } function w(e, t) { if (!e) throw new Error("All loader-config objects require an agent identifier!"); y[e] = (0, i.D)(t, b), (0, n.Qy)(e, y[e], "loader_config") } const x = (0, n.mF)().o; var E = r(385), _ = r(6818); const T = { buildEnv: _.Re, customTransaction: void 0, disabled: !1, distMethod: _.gF, isolatedBacklog: !1, loaderType: void 0, maxBytes: 3e4, offset: Math.floor(E._A?.performance?.timeOrigin || E._A?.performance?.timing?.navigationStart || Date.now()), onerror: void 0, origin: "" + E._A.location, ptid: void 0, releaseIds: {}, session: void 0, xhrWrappable: "function" == typeof E._A.XMLHttpRequest?.prototype?.addEventListener, version: _.q4, denyList: void 0 }, S = {}; function D(e) { if (!e) throw new Error("All runtime objects require an agent identifier!"); if (!S[e]) throw new Error("Runtime for ".concat(e, " was never set")); return S[e] } function j(e, t) { if (!e) throw new Error("All runtime objects require an agent identifier!"); S[e] = (0, i.D)(t, T), (0, n.Qy)(e, S[e], "runtime") } function N(e) { return function (e) { try { const t = s(e); return !!t.licenseKey && !!t.errorBeacon && !!t.applicationID } catch (e) { return !1 } }(e) } }, 9567: (e, t, r) => { r.d(t, { D: () => i }); var n = r(50); function i(e, t) { try { if (!e || "object" != typeof e) return (0, n.Z)("Setting a Configurable requires an object as input"); if (!t || "object" != typeof t) return (0, n.Z)("Setting a Configurable requires a model to set its initial properties"); const r = Object.create(Object.getPrototypeOf(t), Object.getOwnPropertyDescriptors(t)), o = 0 === Object.keys(r).length ? e : r; for (let a in o) if (void 0 !== e[a]) try { Array.isArray(e[a]) && Array.isArray(t[a]) ? r[a] = Array.from(new Set([...e[a], ...t[a]])) : "object" == typeof e[a] && "object" == typeof t[a] ? r[a] = i(e[a], t[a]) : r[a] = e[a] } catch (e) { (0, n.Z)("An error occurred while setting a property of a Configurable", e) } return r } catch (e) { (0, n.Z)("An error occured while setting a Configurable", e) } } }, 6818: (e, t, r) => { r.d(t, { Re: () => i, gF: () => o, lF: () => a, q4: () => n }); const n = "1.246.0", i = "PROD", o = "CDN", a = "2.0.0-alpha.11" }, 385: (e, t, r) => { r.d(t, { FN: () => s, IF: () => d, Nk: () => f, Tt: () => c, _A: () => o, cv: () => h, iS: () => a, il: () => n, ux: () => u, v6: () => i, w1: () => l }); const n = "undefined" != typeof window && !!window.document, i = "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self.navigator instanceof WorkerNavigator || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis.navigator instanceof WorkerNavigator), o = n ? window : "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis), a = Boolean("hidden" === o?.document?.visibilityState), s = "" + o?.location, c = /iPad|iPhone|iPod/.test(o.navigator?.userAgent), u = c && "undefined" == typeof SharedWorker, d = (() => { const e = o.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/); return Array.isArray(e) && e.length >= 2 ? +e[1] : 0 })(), l = Boolean(n && window.document.documentMode), f = !!o.navigator?.sendBeacon, h = Math.floor(o?.performance?.timeOrigin || o?.performance?.timing?.navigationStart || Date.now()) }, 1117: (e, t, r) => { r.d(t, { w: () => o }); var n = r(50); const i = { agentIdentifier: "", ee: void 0 }; class o { constructor(e) { try { if ("object" != typeof e) return (0, n.Z)("shared context requires an object as input"); this.sharedContext = {}, Object.assign(this.sharedContext, i), Object.entries(e).forEach((e => { let [t, r] = e; Object.keys(i).includes(t) && (this.sharedContext[t] = r) })) } catch (e) { (0, n.Z)("An error occured while setting SharedContext", e) } } } }, 8e3: (e, t, r) => { r.d(t, { L: () => d, R: () => c }); var n = r(8325), i = r(1284), o = r(4322), a = r(3325); const s = {}; function c(e, t) { const r = { staged: !1, priority: a.p[t] || 0 }; u(e), s[e].get(t) || s[e].set(t, r) } function u(e) { e && (s[e] || (s[e] = new Map)) } function d() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "feature"; if (u(e), !e || !s[e].get(t)) return a(t); s[e].get(t).staged = !0; const r = [...s[e]]; function a(t) { const r = e ? n.ee.get(e) : n.ee, a = o.X.handlers; if (r.backlog && a) { var s = r.backlog[t], c = a[t]; if (c) { for (var u = 0; s && u < s.length; ++u) l(s[u], c); (0, i.D)(c, (function (e, t) { (0, i.D)(t, (function (t, r) { r[0].on(e, r[1]) })) })) } delete a[t], r.backlog[t] = null, r.emit("drain-" + t, []) } } r.every((e => { let [t, r] = e; return r.staged })) && (r.sort(((e, t) => e[1].priority - t[1].priority)), r.forEach((t => { let [r] = t; s[e].delete(r), a(r) }))) } function l(e, t) { var r = e[1]; (0, i.D)(t[r], (function (t, r) { var n = e[0]; if (r[0] === n) { var i = r[1], o = e[3], a = e[2]; i.apply(o, a) } })) } }, 8325: (e, t, r) => { r.d(t, { A: () => c, ee: () => u }); var n = r(8632), i = r(2210), o = r(234); class a { constructor(e) { this.contextId = e } } var s = r(3117); const c = "nr@context:".concat(s.a), u = function e(t, r) { var n = {}, s = {}, d = {}, f = !1; try { f = 16 === r.length && (0, o.OP)(r).isolatedBacklog } catch (e) {} var h = { on: g, addEventListener: g, removeEventListener: function (e, t) { var r = n[e]; if (!r) return; for (var i = 0; i < r.length; i++) r[i] === t && r.splice(i, 1) }, emit: function (e, r, n, i, o) { !1 !== o && (o = !0); if (u.aborted && !i) return; t && o && t.emit(e, r, n); for (var a = p(n), c = m(e), d = c.length, l = 0; l < d; l++) c[l].apply(a, r); var f = b()[s[e]]; f && f.push([h, e, r, a]); return a }, get: v, listeners: m, context: p, buffer: function (e, t) { const r = b(); if (t = t || "feature", h.aborted) return; Object.entries(e || {}).forEach((e => { let [n, i] = e; s[i] = t, t in r || (r[t] = []) })) }, abort: l, aborted: !1, isBuffering: function (e) { return !!b()[s[e]] }, debugId: r, backlog: f ? {} : t && "object" == typeof t.backlog ? t.backlog : {} }; return h; function p(e) { return e && e instanceof a ? e : e ? (0, i.X)(e, c, (() => new a(c))) : new a(c) } function g(e, t) { n[e] = m(e).concat(t) } function m(e) { return n[e] || [] } function v(t) { return d[t] = d[t] || e(h, t) } function b() { return h.backlog } }(void 0, "globalEE"), d = (0, n.fP)(); function l() { u.aborted = !0, u.backlog = {} } d.ee || (d.ee = u) }, 5546: (e, t, r) => { r.d(t, { E: () => n, p: () => i }); var n = r(8325).ee.get("handle"); function i(e, t, r, i, o) { o ? (o.buffer([e], i), o.emit(e, t, r)) : (n.buffer([e], i), n.emit(e, t, r)) } }, 4322: (e, t, r) => { r.d(t, { X: () => o }); var n = r(5546); o.on = a; var i = o.handlers = {}; function o(e, t, r, o) { a(o || n.E, i, e, t, r) } function a(e, t, r, i, o) { o || (o = "feature"), e || (e = n.E); var a = t[o] = t[o] || {}; (a[r] = a[r] || []).push([e, i]) } }, 3239: (e, t, r) => { r.d(t, { bP: () => s, iz: () => c, m$: () => a }); var n = r(385); let i = !1, o = !1; try { const e = { get passive() { return i = !0, !1 }, get signal() { return o = !0, !1 } }; n._A.addEventListener("test", null, e), n._A.removeEventListener("test", null, e) } catch (e) {} function a(e, t) { return i || o ? { capture: !!e, passive: i, signal: t } : !!e } function s(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; window.addEventListener(e, t, a(r, n)) } function c(e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = arguments.length > 3 ? arguments[3] : void 0; document.addEventListener(e, t, a(r, n)) } }, 3117: (e, t, r) => { r.d(t, { a: () => n }); const n = (0, r(4402).Rl)() }, 4402: (e, t, r) => { r.d(t, { Ht: () => u, M: () => c, Rl: () => a, ky: () => s }); var n = r(385); const i = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"; function o(e, t) { return e ? 15 & e[t] : 16 * Math.random() | 0 } function a() { const e = n._A?.crypto || n._A?.msCrypto; let t, r = 0; return e && e.getRandomValues && (t = e.getRandomValues(new Uint8Array(31))), i.split("").map((e => "x" === e ? o(t, ++r).toString(16) : "y" === e ? (3 & o() | 8).toString(16) : e)).join("") } function s(e) { const t = n._A?.crypto || n._A?.msCrypto; let r, i = 0; t && t.getRandomValues && (r = t.getRandomValues(new Uint8Array(31))); const a = []; for (var s = 0; s < e; s++) a.push(o(r, ++i).toString(16)); return a.join("") } function c() { return s(16) } function u() { return s(32) } }, 7056: (e, t, r) => { r.d(t, { Bq: () => n, Hb: () => o, oD: () => i }); const n = "NRBA", i = 144e5, o = 18e5 }, 7894: (e, t, r) => { function n() { return Math.round(performance.now()) } r.d(t, { z: () => n }) }, 7243: (e, t, r) => { r.d(t, { e: () => i }); var n = r(385); function i(e) { if (0 === (e || "").indexOf("data:")) return { protocol: "data" }; try { const t = new URL(e, location.href), r = { port: t.port, hostname: t.hostname, pathname: t.pathname, search: t.search, protocol: t.protocol.slice(0, t.protocol.indexOf(":")), sameOrigin: t.protocol === n._A?.location?.protocol && t.host === n._A?.location?.host }; return r.port && "" !== r.port || ("http:" === t.protocol && (r.port = "80"), "https:" === t.protocol && (r.port = "443")), r.pathname && "" !== r.pathname ? r.pathname.startsWith("/") || (r.pathname = "/".concat(r.pathname)) : r.pathname = "/", r } catch (e) { return {} } } }, 50: (e, t, r) => { function n(e, t) { "function" == typeof console.warn && (console.warn("New Relic: ".concat(e)), t && console.warn(t)) } r.d(t, { Z: () => n }) }, 2587: (e, t, r) => { r.d(t, { N: () => c, T: () => u }); var n = r(8325), i = r(5546), o = r(3325); const a = { stn: [o.D.sessionTrace], err: [o.D.jserrors, o.D.metrics], ins: [o.D.pageAction], spa: [o.D.spa], sr: [o.D.sessionReplay, o.D.sessionTrace] }, s = new Set; function c(e, t) { const r = n.ee.get(t); e && "object" == typeof e && (s.has(t) || Object.entries(e).forEach((e => { let [t, n] = e; a[t] ? a[t].forEach((e => { n ? (0, i.p)("feat-" + t, [], void 0, e, r) : (0, i.p)("block-" + t, [], void 0, e, r), (0, i.p)("rumresp-" + t, [Boolean(n)], void 0, e, r) })) : n && (0, i.p)("feat-" + t, [], void 0, void 0, r), u[t] = Boolean(n) })), Object.keys(a).forEach((e => { void 0 === u[e] && (a[e]?.forEach((t => (0, i.p)("rumresp-" + e, [!1], void 0, t, r))), u[e] = !1) })), s.add(t)) } const u = {} }, 2210: (e, t, r) => { r.d(t, { X: () => i }); var n = Object.prototype.hasOwnProperty; function i(e, t, r) { if (n.call(e, t)) return e[t]; var i = r(); if (Object.defineProperty && Object.keys) try { return Object.defineProperty(e, t, { value: i, writable: !0, enumerable: !1 }), i } catch (e) {} return e[t] = i, i } }, 1284: (e, t, r) => { r.d(t, { D: () => n }); const n = (e, t) => Object.entries(e || {}).map((e => { let [r, n] = e; return t(r, n) })) }, 4351: (e, t, r) => { r.d(t, { P: () => o }); var n = r(8325); const i = () => { const e = new WeakSet; return (t, r) => { if ("object" == typeof r && null !== r) { if (e.has(r)) return; e.add(r) } return r } }; function o(e) { try { return JSON.stringify(e, i()) } catch (e) { try { n.ee.emit("internal-error", [e]) } catch (e) {} } } }, 3960: (e, t, r) => { r.d(t, { K: () => a, b: () => o }); var n = r(3239); function i() { return "undefined" == typeof document || "complete" === document.readyState } function o(e, t) { if (i()) return e(); (0, n.bP)("load", e, t) } function a(e) { if (i()) return e(); (0, n.iz)("DOMContentLoaded", e) } }, 8632: (e, t, r) => { r.d(t, { EZ: () => u, Qy: () => c, ce: () => o, fP: () => a, gG: () => d, mF: () => s }); var n = r(7894), i = r(385); const o = { beacon: "bam.nr-data.net", errorBeacon: "bam.nr-data.net" }; function a() { return i._A.NREUM || (i._A.NREUM = {}), void 0 === i._A.newrelic && (i._A.newrelic = i._A.NREUM), i._A.NREUM } function s() { let e = a(); return e.o || (e.o = { ST: i._A.setTimeout, SI: i._A.setImmediate, CT: i._A.clearTimeout, XHR: i._A.XMLHttpRequest, REQ: i._A.Request, EV: i._A.Event, PR: i._A.Promise, MO: i._A.MutationObserver, FETCH: i._A.fetch }), e } function c(e, t, r) { let i = a(); const o = i.initializedAgents || {}, s = o[e] || {}; return Object.keys(s).length || (s.initializedAt = { ms: (0, n.z)(), date: new Date }), i.initializedAgents = { ...o, [e]: { ...s, [r]: t } }, i } function u(e, t) { a()[e] = t } function d() { return function () { let e = a(); const t = e.info || {}; e.info = { beacon: o.beacon, errorBeacon: o.errorBeacon, ...t } }(), function () { let e = a(); const t = e.init || {}; e.init = { ...t } }(), s(), function () { let e = a(); const t = e.loader_config || {}; e.loader_config = { ...t } }(), a() } }, 7956: (e, t, r) => { r.d(t, { N: () => i }); var n = r(3239); function i(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], r = arguments.length > 2 ? arguments[2] : void 0, i = arguments.length > 3 ? arguments[3] : void 0; (0, n.iz)("visibilitychange", (function () { if (t) return void("hidden" === document.visibilityState && e()); e(document.visibilityState) }), r, i) } }, 1214: (e, t, r) => { r.d(t, { em: () => b, u5: () => D, QU: () => C, _L: () => I, Gm: () => H, Lg: () => L, BV: () => G, Kf: () => K }); var n = r(8325), i = r(3117); const o = "nr@original:".concat(i.a); var a = Object.prototype.hasOwnProperty, s = !1; function c(e, t) { return e || (e = n.ee), r.inPlace = function (e, t, n, i, o) { n || (n = ""); const a = "-" === n.charAt(0); for (let s = 0; s < t.length; s++) { const c = t[s], u = e[c]; d(u) || (e[c] = r(u, a ? c + n : n, i, c, o)) } }, r.flag = o, r; function r(t, r, n, s, c) { return d(t) ? t : (r || (r = ""), nrWrapper[o] = t, function (e, t, r) { if (Object.defineProperty && Object.keys) try { return Object.keys(e).forEach((function (r) { Object.defineProperty(t, r, { get: function () { return e[r] }, set: function (t) { return e[r] = t, t } }) })), t } catch (e) { u([e], r) } for (var n in e) a.call(e, n) && (t[n] = e[n]) }(t, nrWrapper, e), nrWrapper); function nrWrapper() { var o, a, d, l; try { a = this, o = [...arguments], d = "function" == typeof n ? n(o, a) : n || {} } catch (t) { u([t, "", [o, a, s], d], e) } i(r + "start", [o, a, s], d, c); try { return l = t.apply(a, o) } catch (e) { throw i(r + "err", [o, a, e], d, c), e } finally { i(r + "end", [o, a, l], d, c) } } } function i(r, n, i, o) { if (!s || t) { var a = s; s = !0; try { e.emit(r, n, i, t, o) } catch (t) { u([t, r, n, i], e) } s = a } } } function u(e, t) { t || (t = n.ee); try { t.emit("internal-error", e) } catch (e) {} } function d(e) { return !(e && "function" == typeof e && e.apply && !e[o]) } var l = r(2210), f = r(385); const h = {}, p = f._A.XMLHttpRequest, g = "addEventListener", m = "removeEventListener", v = "nr@wrapped:".concat(n.A); function b(e) { var t = function (e) { return (e || n.ee).get("events") }(e); if (h[t.debugId]++) return t; h[t.debugId] = 1; var r = c(t, !0); function i(e) { r.inPlace(e, [g, m], "-", o) } function o(e, t) { return e[1] } return "getPrototypeOf" in Object && (f.il && y(document, i), y(f._A, i), y(p.prototype, i)), t.on(g + "-start", (function (e, t) { var n = e[1]; if (null !== n && ("function" == typeof n || "object" == typeof n)) { var i = (0, l.X)(n, v, (function () { var e = { object: function () { if ("function" != typeof n.handleEvent) return; return n.handleEvent.apply(n, arguments) }, function: n } [typeof n]; return e ? r(e, "fn-", null, e.name || "anonymous") : n })); this.wrapped = e[1] = i } })), t.on(m + "-start", (function (e) { e[1] = this.wrapped || e[1] })), t } function y(e, t) { let r = e; for (; "object" == typeof r && !Object.prototype.hasOwnProperty.call(r, g);) r = Object.getPrototypeOf(r); for (var n = arguments.length, i = new Array(n > 2 ? n - 2 : 0), o = 2; o < n; o++) i[o - 2] = arguments[o]; r && t(r, ...i) } var A = "fetch-", w = A + "body-", x = ["arrayBuffer", "blob", "json", "text", "formData"], E = f._A.Request, _ = f._A.Response, T = "prototype"; const S = {}; function D(e) { const t = function (e) { return (e || n.ee).get("fetch") }(e); if (!(E && _ && f._A.fetch)) return t; if (S[t.debugId]++) return t; function r(e, r, i) { var o = e[r]; "function" == typeof o && (e[r] = function () { var e, r = [...arguments], a = {}; t.emit(i + "before-start", [r], a), a[n.A] && a[n.A].dt && (e = a[n.A].dt); var s = o.apply(this, r); return t.emit(i + "start", [r, e], s), s.then((function (e) { return t.emit(i + "end", [null, e], s), e }), (function (e) { throw t.emit(i + "end", [e], s), e })) }) } return S[t.debugId] = 1, x.forEach((e => { r(E[T], e, w), r(_[T], e, w) })), r(f._A, "fetch", A), t.on(A + "end", (function (e, r) { var n = this; if (r) { var i = r.headers.get("content-length"); null !== i && (n.rxSize = i), t.emit(A + "done", [null, r], n) } else t.emit(A + "done", [e], n) })), t } const j = {}, N = ["pushState", "replaceState"]; function C(e) { const t = function (e) { return (e || n.ee).get("history") }(e); return !f.il || j[t.debugId]++ || (j[t.debugId] = 1, c(t).inPlace(window.history, N, "-")), t } var O = r(3239); const P = {}, R = ["appendChild", "insertBefore", "replaceChild"]; function I(e) { const t = function (e) { return (e || n.ee).get("jsonp") }(e); if (!f.il || P[t.debugId]) return t; P[t.debugId] = !0; var r = c(t), i = /[?&](?:callback|cb)=([^&#]+)/, o = /(.*)\.([^.]+)/, a = /^(\w+)(\.|$)(.*)$/; function s(e, t) { if (!e) return t; const r = e.match(a), n = r[1]; return s(r[3], t[n]) } return r.inPlace(Node.prototype, R, "dom-"), t.on("dom-start", (function (e) { ! function (e) { if (!e || "string" != typeof e.nodeName || "script" !== e.nodeName.toLowerCase()) return; if ("function" != typeof e.addEventListener) return; var n = (a = e.src, c = a.match(i), c ? c[1] : null); var a, c; if (!n) return; var u = function (e) { var t = e.match(o); if (t && t.length >= 3) return { key: t[2], parent: s(t[1], window) }; return { key: e, parent: window } }(n); if ("function" != typeof u.parent[u.key]) return; var d = {}; function l() { t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, O.m$)(!1)), e.removeEventListener("error", f, (0, O.m$)(!1)) } function f() { t.emit("jsonp-error", [], d), t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, O.m$)(!1)), e.removeEventListener("error", f, (0, O.m$)(!1)) } r.inPlace(u.parent, [u.key], "cb-", d), e.addEventListener("load", l, (0, O.m$)(!1)), e.addEventListener("error", f, (0, O.m$)(!1)), t.emit("new-jsonp", [e.src], d) }(e[0]) })), t } const k = {}; function H(e) { const t = function (e) { return (e || n.ee).get("mutation") }(e); if (!f.il || k[t.debugId]) return t; k[t.debugId] = !0; var r = c(t), i = f._A.MutationObserver; return i && (window.MutationObserver = function (e) { return this instanceof i ? new i(r(e, "fn-")) : i.apply(this, arguments) }, MutationObserver.prototype = i.prototype), t } const z = {}; function L(e) { const t = function (e) { return (e || n.ee).get("promise") }(e); if (z[t.debugId]) return t; z[t.debugId] = !0; var r = t.context, i = c(t), a = f._A.Promise; return a && function () { function e(r) { var n = t.context(), o = i(r, "executor-", n, null, !1); const s = Reflect.construct(a, [o], e); return t.context(s).getCtx = function () { return n }, s } f._A.Promise = e, Object.defineProperty(e, "name", { value: "Promise" }), e.toString = function () { return a.toString() }, Object.setPrototypeOf(e, a), ["all", "race"].forEach((function (r) { const n = a[r]; e[r] = function (e) { let i = !1; [...e || []].forEach((e => { this.resolve(e).then(a("all" === r), a(!1)) })); const o = n.apply(this, arguments); return o; function a(e) { return function () { t.emit("propagate", [null, !i], o, !1, !1), i = i || !e } } } })), ["resolve", "reject"].forEach((function (r) { const n = a[r]; e[r] = function (e) { const r = n.apply(this, arguments); return e !== r && t.emit("propagate", [e, !0], r, !1, !1), r } })), e.prototype = a.prototype; const n = a.prototype.then; a.prototype.then = function () { var e = this, o = r(e); o.promise = e; for (var a = arguments.length, s = new Array(a), c = 0; c < a; c++) s[c] = arguments[c]; s[0] = i(s[0], "cb-", o, null, !1), s[1] = i(s[1], "cb-", o, null, !1); const u = n.apply(this, s); return o.nextPromise = u, t.emit("propagate", [e, !0], u, !1, !1), u }, a.prototype.then[o] = n, t.on("executor-start", (function (e) { e[0] = i(e[0], "resolve-", this, null, !1), e[1] = i(e[1], "resolve-", this, null, !1) })), t.on("executor-err", (function (e, t, r) { e[1](r) })), t.on("cb-end", (function (e, r, n) { t.emit("propagate", [n, !0], this.nextPromise, !1, !1) })), t.on("propagate", (function (e, r, n) { this.getCtx && !r || (this.getCtx = function () { if (e instanceof Promise) var r = t.context(e); return r && r.getCtx ? r.getCtx() : this }) })) }(), t } const M = {}, F = "setTimeout", B = "setInterval", U = "clearTimeout", Z = "-start", V = "-", q = [F, "setImmediate", B, U, "clearImmediate"]; function G(e) { const t = function (e) { return (e || n.ee).get("timer") }(e); if (M[t.debugId]++) return t; M[t.debugId] = 1; var r = c(t); return r.inPlace(f._A, q.slice(0, 2), F + V), r.inPlace(f._A, q.slice(2, 3), B + V), r.inPlace(f._A, q.slice(3), U + V), t.on(B + Z, (function (e, t, n) { e[0] = r(e[0], "fn-", null, n) })), t.on(F + Z, (function (e, t, n) { this.method = n, this.timerDuration = isNaN(e[1]) ? 0 : +e[1], e[0] = r(e[0], "fn-", this, n) })), t } var W = r(50); const X = {}, Q = ["open", "send"]; function K(e) { var t = e || n.ee; const r = function (e) { return (e || n.ee).get("xhr") }(t); if (X[r.debugId]++) return r; X[r.debugId] = 1, b(t); var i = c(r), o = f._A.XMLHttpRequest, a = f._A.MutationObserver, s = f._A.Promise, u = f._A.setInterval, d = "readystatechange", l = ["onload", "onerror", "onabort", "onloadstart", "onloadend", "onprogress", "ontimeout"], h = [], p = f._A.XMLHttpRequest = function (e) { const t = new o(e), n = r.context(t); try { r.emit("new-xhr", [t], n), t.addEventListener(d, (a = n, function () { var e = this; e.readyState > 3 && !a.resolved && (a.resolved = !0, r.emit("xhr-resolved", [], e)), i.inPlace(e, l, "fn-", w) }), (0, O.m$)(!1)) } catch (e) { (0, W.Z)("An error occurred while intercepting XHR", e); try { r.emit("internal-error", [e]) } catch (e) {} } var a; return t }; function g(e, t) { i.inPlace(t, ["onreadystatechange"], "fn-", w) } if (function (e, t) { for (var r in e) t[r] = e[r] }(o, p), p.prototype = o.prototype, i.inPlace(p.prototype, Q, "-xhr-", w), r.on("send-xhr-start", (function (e, t) { g(e, t), function (e) { h.push(e), a && (m ? m.then(A) : u ? u(A) : (v = -v, y.data = v)) }(t) })), r.on("open-xhr-start", g), a) { var m = s && s.resolve(); if (!u && !s) { var v = 1, y = document.createTextNode(v); new a(A).observe(y, { characterData: !0 }) } } else t.on("fn-end", (function (e) { e[0] && e[0].type === d || A() })); function A() { for (var e = 0; e < h.length; e++) g(0, h[e]); h.length && (h = []) } function w(e, t) { return t } return r } }, 7825: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.ajax }, 6660: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.jserrors }, 3081: (e, t, r) => { r.d(t, { gF: () => o, mY: () => i, t9: () => n, vz: () => s, xS: () => a }); const n = r(3325).D.metrics, i = "sm", o = "cm", a = "storeSupportabilityMetrics", s = "storeEventMetrics" }, 4649: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageAction }, 7633: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewEvent }, 9251: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.pageViewTiming }, 7144: (e, t, r) => { r.d(t, { t: () => n }); const n = r(3325).D.sessionReplay }, 3614: (e, t, r) => { r.d(t, { BST_RESOURCE: () => i, END: () => s, FEATURE_NAME: () => n, FN_END: () => u, FN_START: () => c, PUSH_STATE: () => d, RESOURCE: () => o, START: () => a }); const n = r(3325).D.sessionTrace, i = "bstResource", o = "resource", a = "-start", s = "-end", c = "fn" + a, u = "fn" + s, d = "pushState" }, 7836: (e, t, r) => { r.d(t, { BODY: () => x, CB_END: () => E, CB_START: () => u, END: () => w, FEATURE_NAME: () => i, FETCH: () => T, FETCH_BODY: () => v, FETCH_DONE: () => m, FETCH_START: () => g, FN_END: () => c, FN_START: () => s, INTERACTION: () => f, INTERACTION_API: () => d, INTERACTION_EVENTS: () => o, JSONP_END: () => b, JSONP_NODE: () => p, JS_TIME: () => _, MAX_TIMER_BUDGET: () => a, REMAINING: () => l, SPA_NODE: () => h, START: () => A, originalSetTimeout: () => y }); var n = r(234); const i = r(3325).D.spa, o = ["click", "submit", "keypress", "keydown", "keyup", "change"], a = 999, s = "fn-start", c = "fn-end", u = "cb-start", d = "api-ixn-", l = "remaining", f = "interaction", h = "spaNode", p = "jsonpNode", g = "fetch-start", m = "fetch-done", v = "fetch-body-", b = "jsonp-end", y = n.Yu.ST, A = "-start", w = "-end", x = "-body", E = "cb" + w, _ = "jsTime", T = "fetch" }, 5938: (e, t, r) => { r.d(t, { W: () => i }); var n = r(8325); class i { constructor(e, t, r) { this.agentIdentifier = e, this.aggregator = t, this.ee = n.ee.get(e), this.featureName = r, this.blocked = !1 } } }, 7530: (e, t, r) => { r.d(t, { j: () => b }); var n = r(3325), i = r(234), o = r(5546), a = r(8325), s = r(7894), c = r(8e3), u = r(3960), d = r(385), l = r(50), f = r(3081), h = r(8632); function p() { const e = (0, h.gG)(); ["setErrorHandler", "finished", "addToTrace", "addRelease", "addPageAction", "setCurrentRouteName", "setPageViewName", "setCustomAttribute", "interaction", "noticeError", "setUserId", "setApplicationVersion", "start"].forEach((t => { e[t] = function () { for (var r = arguments.length, n = new Array(r), i = 0; i < r; i++) n[i] = arguments[i]; return function (t) { for (var r = arguments.length, n = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) n[i - 1] = arguments[i]; let o = []; return Object.values(e.initializedAgents).forEach((e => { e.exposed && e.api[t] && o.push(e.api[t](...n)) })), o.length > 1 ? o : o[0] }(t, ...n) } })) } var g = r(2587); const m = e => { const t = e.startsWith("http"); e += "/", r.p = t ? e : "https://" + e }; let v = !1; function b(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, b = arguments.length > 2 ? arguments[2] : void 0, y = arguments.length > 3 ? arguments[3] : void 0, { init: A, info: w, loader_config: x, runtime: E = { loaderType: b }, exposed: _ = !0 } = t; const T = (0, h.gG)(); w || (A = T.init, w = T.info, x = T.loader_config), (0, i.Dg)(e, A || {}), (0, i.GE)(e, x || {}), w.jsAttributes ??= {}, d.v6 && (w.jsAttributes.isWorker = !0), (0, i.CX)(e, w); const S = (0, i.P_)(e), D = [w.beacon, w.errorBeacon]; v || (v = !0, S.proxy.assets && (m(S.proxy.assets), D.push(S.proxy.assets)), S.proxy.beacon && D.push(S.proxy.beacon)), E.denyList = [...S.ajax.deny_list || [], ...S.ajax.block_internal ? D : []], (0, i.sU)(e, E), p(); const j = function (e, t) { t || (0, c.R)(e, "api"); const h = {}; var p = a.ee.get(e), g = p.get("tracer"), m = "api-", v = m + "ixn-"; function b(t, r, n, o) { const a = (0, i.C5)(e); return null === r ? delete a.jsAttributes[t] : (0, i.CX)(e, { ...a, jsAttributes: { ...a.jsAttributes, [t]: r } }), w(m, n, !0, o || null === r ? "session" : void 0)(t, r) } function y() {} ["setErrorHandler", "finished", "addToTrace", "addRelease"].forEach((e => { h[e] = w(m, e, !0, "api") })), h.addPageAction = w(m, "addPageAction", !0, n.D.pageAction), h.setCurrentRouteName = w(m, "routeName", !0, n.D.spa), h.setPageViewName = function (t, r) { if ("string" == typeof t) return "/" !== t.charAt(0) && (t = "/" + t), (0, i.OP)(e).customTransaction = (r || "http://custom.transaction") + t, w(m, "setPageViewName", !0)() }, h.setCustomAttribute = function (e, t) { let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if ("string" == typeof e) { if (["string", "number", "boolean"].includes(typeof t) || null === t) return b(e, t, "setCustomAttribute", r); (0, l.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string, number or boolean type, but a type of <".concat(typeof t, "> was provided.")) } else(0, l.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, h.setUserId = function (e) { if ("string" == typeof e || null === e) return b("enduser.id", e, "setUserId", !0); (0, l.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of <".concat(typeof e, "> was provided.")) }, h.setApplicationVersion = function (e) { if ("string" == typeof e || null === e) return b("application.version", e, "setApplicationVersion", !1); (0, l.Z)("Failed to execute setApplicationVersion. Expected <String | null>, but got <".concat(typeof e, ">.")) }, h.start = e => { try { const t = e ? "defined" : "undefined"; (0, o.p)(f.xS, ["API/start/".concat(t, "/called")], void 0, n.D.metrics, p); const r = Object.values(n.D); if (void 0 === e) e = r; else { if ((e = Array.isArray(e) && e.length ? e : [e]).some((e => !r.includes(e)))) return (0, l.Z)("Invalid feature name supplied. Acceptable feature names are: ".concat(r)); e.includes(n.D.pageViewEvent) || e.push(n.D.pageViewEvent) } e.forEach((e => { p.emit("".concat(e, "-opt-in")) })) } catch (e) { (0, l.Z)("An unexpected issue occurred", e) } }, h.interaction = function () { return (new y).get() }; var A = y.prototype = { createTracer: function (e, t) { var r = {}, i = this, a = "function" == typeof t; return (0, o.p)(v + "tracer", [(0, s.z)(), e, r], i, n.D.spa, p), function () { if (g.emit((a ? "" : "no-") + "fn-start", [(0, s.z)(), i, a], r), a) try { return t.apply(this, arguments) } catch (e) { throw g.emit("fn-err", [arguments, this, e], r), e } finally { g.emit("fn-end", [(0, s.z)()], r) } } } }; function w(e, t, r, i) { return function () { return (0, o.p)(f.xS, ["API/" + t + "/called"], void 0, n.D.metrics, p), i && (0, o.p)(e + t, [(0, s.z)(), ...arguments], r ? null : this, i, p), r ? void 0 : this } } function x() { r.e(111).then(r.bind(r, 7438)).then((t => { let { setAPI: r } = t; r(e), (0, c.L)(e, "api") })).catch((() => (0, l.Z)("Downloading runtime APIs failed..."))) } return ["actionText", "setName", "setAttribute", "save", "ignore", "onEnd", "getContext", "end", "get"].forEach((e => { A[e] = w(v, e, void 0, n.D.spa) })), h.noticeError = function (e, t) { "string" == typeof e && (e = new Error(e)), (0, o.p)(f.xS, ["API/noticeError/called"], void 0, n.D.metrics, p), (0, o.p)("err", [e, (0, s.z)(), !1, t], void 0, n.D.jserrors, p) }, d.il ? (0, u.b)((() => x()), !0) : x(), h }(e, y); return (0, h.Qy)(e, j, "api"), (0, h.Qy)(e, _, "exposed"), (0, h.EZ)("activatedFeatures", g.T), j } }, 3325: (e, t, r) => { r.d(t, { D: () => n, p: () => i }); const n = { ajax: "ajax", jserrors: "jserrors", metrics: "metrics", pageAction: "page_action", pageViewEvent: "page_view_event", pageViewTiming: "page_view_timing", sessionReplay: "session_replay", sessionTrace: "session_trace", spa: "spa" }, i = { [n.pageViewEvent]: 1, [n.pageViewTiming]: 2, [n.metrics]: 3, [n.jserrors]: 4, [n.ajax]: 5, [n.sessionTrace]: 6, [n.pageAction]: 7, [n.spa]: 8, [n.sessionReplay]: 9 } } }, n = {}; function i(e) { var t = n[e]; if (void 0 !== t) return t.exports; var o = n[e] = { exports: {} }; return r[e](o, o.exports, i), o.exports } i.m = r, i.d = (e, t) => { for (var r in t) i.o(t, r) && !i.o(e, r) && Object.defineProperty(e, r, { enumerable: !0, get: t[r] }) }, i.f = {}, i.e = e => Promise.all(Object.keys(i.f).reduce(((t, r) => (i.f[r](e, t), t)), [])), i.u = e => ({ 111: "nr-spa", 164: "nr-spa-compressor", 433: "nr-spa-recorder" } [e] + "-1.246.0.min.js"), i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), e = {}, t = "NRBA-1.246.0.PROD:", i.l = (r, n, o, a) => { if (e[r]) e[r].push(n); else { var s, c; if (void 0 !== o) for (var u = document.getElementsByTagName("script"), d = 0; d < u.length; d++) { var l = u[d]; if (l.getAttribute("src") == r || l.getAttribute("data-webpack") == t + o) { s = l; break } } s || (c = !0, (s = document.createElement("script")).charset = "utf-8", s.timeout = 120, i.nc && s.setAttribute("nonce", i.nc), s.setAttribute("data-webpack", t + o), s.src = r), e[r] = [n]; var f = (t, n) => { s.onerror = s.onload = null, clearTimeout(h); var i = e[r]; if (delete e[r], s.parentNode && s.parentNode.removeChild(s), i && i.forEach((e => e(n))), t) return t(n) }, h = setTimeout(f.bind(null, void 0, { type: "timeout", target: s }), 12e4); s.onerror = f.bind(null, s.onerror), s.onload = f.bind(null, s.onload), c && document.head.appendChild(s) } }, i.r = e => { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, i.p = "https://js-agent.newrelic.com/", (() => { var e = { 801: 0, 92: 0 }; i.f.j = (t, r) => { var n = i.o(e, t) ? e[t] : void 0; if (0 !== n) if (n) r.push(n[2]); else { var o = new Promise(((r, i) => n = e[t] = [r, i])); r.push(n[2] = o); var a = i.p + i.u(t), s = new Error; i.l(a, (r => { if (i.o(e, t) && (0 !== (n = e[t]) && (e[t] = void 0), n)) { var o = r && ("load" === r.type ? "missing" : r.type), a = r && r.target && r.target.src; s.message = "Loading chunk " + t + " failed.\n(" + o + ": " + a + ")", s.name = "ChunkLoadError", s.type = o, s.request = a, n[1](s) } }), "chunk-" + t, t) } }; var t = (t, r) => { var n, o, [a, s, c] = r, u = 0; if (a.some((t => 0 !== e[t]))) { for (n in s) i.o(s, n) && (i.m[n] = s[n]); if (c) c(i) } for (t && t(r); u < a.length; u++) o = a[u], i.o(e, o) && e[o] && e[o][0](), e[o] = 0 }, r = self["webpackChunk:NRBA-1.246.0.PROD"] = self["webpackChunk:NRBA-1.246.0.PROD"] || []; r.forEach(t.bind(null, 0)), r.push = t.bind(null, r.push.bind(r)) })(), (() => { var e = i(50); class t { addPageAction(t, r) { (0, e.Z)("Call to agent api addPageAction failed. The page action feature is not currently initialized.") } setPageViewName(t, r) { (0, e.Z)("Call to agent api setPageViewName failed. The page view feature is not currently initialized.") } setCustomAttribute(t, r, n) { (0, e.Z)("Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.") } noticeError(t, r) { (0, e.Z)("Call to agent api noticeError failed. The js errors feature is not currently initialized.") } setUserId(t) { (0, e.Z)("Call to agent api setUserId failed. The js errors feature is not currently initialized.") } setApplicationVersion(t) { (0, e.Z)("Call to agent api setApplicationVersion failed. The agent is not currently initialized.") } setErrorHandler(t) { (0, e.Z)("Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.") } finished(t) { (0, e.Z)("Call to agent api finished failed. The page action feature is not currently initialized.") } addRelease(t, r) { (0, e.Z)("Call to agent api addRelease failed. The js errors feature is not currently initialized.") } start(t) { (0, e.Z)("Call to agent api addRelease failed. The agent is not currently initialized.") } } var r = i(3325), n = i(234); const o = Object.values(r.D); function a(e) { const t = {}; return o.forEach((r => { t[r] = function (e, t) { return !1 !== (0, n.Mt)(t, "".concat(e, ".enabled")) }(r, e) })), t } var s = i(7530); var c = i(8e3), u = i(5938), d = i(3960), l = i(385); class f extends u.W { constructor(e, t, r) { let i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; super(e, t, r), this.auto = i, this.abortHandler = void 0, this.featAggregate = void 0, this.onAggregateImported = void 0, !1 === (0, n.Mt)(this.agentIdentifier, "".concat(this.featureName, ".autoStart")) && (this.auto = !1), this.auto && (0, c.R)(e, r) } importAggregator() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (this.featAggregate) return; if (!this.auto) return void this.ee.on("".concat(this.featureName, "-opt-in"), (() => { (0, c.R)(this.agentIdentifier, this.featureName), this.auto = !0, this.importAggregator() })); const r = l.il && !0 === (0, n.Mt)(this.agentIdentifier, "privacy.cookies_enabled"); let o; this.onAggregateImported = new Promise((e => { o = e })); const a = async () => { let n; try { if (r) { const { setupAgentSession: e } = await i.e(111).then(i.bind(i, 3228)); n = e(this.agentIdentifier) } } catch (t) { (0, e.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.", t) } try { if (!this.shouldImportAgg(this.featureName, n)) return (0, c.L)(this.agentIdentifier, this.featureName), void o(!1); const { lazyFeatureLoader: e } = await i.e(111).then(i.bind(i, 8582)), { Aggregate: r } = await e(this.featureName, "aggregate"); this.featAggregate = new r(this.agentIdentifier, this.aggregator, t), o(!0) } catch (t) { (0, e.Z)("Downloading and initializing ".concat(this.featureName, " failed..."), t), this.abortHandler?.(), (0, c.L)(this.agentIdentifier, this.featureName), o(!1) } }; l.il ? (0, d.b)((() => a()), !0) : a() } shouldImportAgg(e, t) { return e !== r.D.sessionReplay || !!n.Yu.MO && (!1 !== (0, n.Mt)(this.agentIdentifier, "session_trace.enabled") && (!!t?.isNew || !!t?.state.sessionReplayMode)) } } var h = i(7633); class p extends f { static featureName = h.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, h.t, r), this.importAggregator() } } var g = i(1117), m = i(1284); class v extends g.w { constructor(e) { super(e), this.aggregatedData = {} } store(e, t, r, n, i) { var o = this.getBucket(e, t, r, i); return o.metrics = function (e, t) { t || (t = { count: 0 }); return t.count += 1, (0, m.D)(e, (function (e, r) { t[e] = b(r, t[e]) })), t }(n, o.metrics), o } merge(e, t, r, n, i) { var o = this.getBucket(e, t, n, i); if (o.metrics) { var a = o.metrics; a.count += r.count, (0, m.D)(r, (function (e, t) { if ("count" !== e) { var n = a[e], i = r[e]; i && !i.c ? a[e] = b(i.t, n) : a[e] = function (e, t) { if (!t) return e; t.c || (t = y(t.t)); return t.min = Math.min(e.min, t.min), t.max = Math.max(e.max, t.max), t.t += e.t, t.sos += e.sos, t.c += e.c, t }(i, a[e]) } })) } else o.metrics = r } storeMetric(e, t, r, n) { var i = this.getBucket(e, t, r); return i.stats = b(n, i.stats), i } getBucket(e, t, r, n) { this.aggregatedData[e] || (this.aggregatedData[e] = {}); var i = this.aggregatedData[e][t]; return i || (i = this.aggregatedData[e][t] = { params: r || {} }, n && (i.custom = n)), i } get(e, t) { return t ? this.aggregatedData[e] && this.aggregatedData[e][t] : this.aggregatedData[e] } take(e) { for (var t = {}, r = "", n = !1, i = 0; i < e.length; i++) t[r = e[i]] = A(this.aggregatedData[r]), t[r].length && (n = !0), delete this.aggregatedData[r]; return n ? t : null } } function b(e, t) { return null == e ? function (e) { e ? e.c++ : e = { c: 1 }; return e }(t) : t ? (t.c || (t = y(t.t)), t.c += 1, t.t += e, t.sos += e * e, e > t.max && (t.max = e), e < t.min && (t.min = e), t) : { t: e } } function y(e) { return { t: e, min: e, max: e, sos: e * e, c: 1 } } function A(e) { return "object" != typeof e ? [] : (0, m.D)(e, w) } function w(e, t) { return t } var x = i(8632), E = i(4402), _ = i(4351); var T = i(5546), S = i(7956), D = i(3239), j = i(7894), N = i(9251); class C extends f { static featureName = N.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, N.t, r), l.il && ((0, S.N)((() => (0, T.p)("docHidden", [(0, j.z)()], void 0, N.t, this.ee)), !0), (0, D.bP)("pagehide", (() => (0, T.p)("winPagehide", [(0, j.z)()], void 0, N.t, this.ee))), this.importAggregator()) } } var O = i(3081); class P extends f { static featureName = O.t9; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, O.t9, r), this.importAggregator() } } var R = i(6660); class I { constructor(e, t, r, n) { this.name = "UncaughtError", this.message = e, this.sourceURL = t, this.line = r, this.column = n } } class k extends f { static featureName = R.t; #e = new Set; constructor(e, t) { let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, R.t, n); try { this.removeOnAbort = new AbortController } catch (e) {} this.ee.on("fn-err", ((e, t, n) => { this.abortHandler && !this.#e.has(n) && (this.#e.add(n), (0, T.p)("err", [this.#t(n), (0, j.z)()], void 0, r.D.jserrors, this.ee)) })), this.ee.on("internal-error", (e => { this.abortHandler && (0, T.p)("ierr", [this.#t(e), (0, j.z)(), !0], void 0, r.D.jserrors, this.ee) })), l._A.addEventListener("unhandledrejection", (e => { this.abortHandler && (0, T.p)("err", [this.#r(e), (0, j.z)(), !1, { unhandledPromiseRejection: 1 }], void 0, r.D.jserrors, this.ee) }), (0, D.m$)(!1, this.removeOnAbort?.signal)), l._A.addEventListener("error", (e => { this.abortHandler && (this.#e.has(e.error) ? this.#e.delete(e.error) : (0, T.p)("err", [this.#n(e), (0, j.z)()], void 0, r.D.jserrors, this.ee)) }), (0, D.m$)(!1, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator() } #i() { this.removeOnAbort?.abort(), this.#e.clear(), this.abortHandler = void 0 } #t(e) { return e instanceof Error ? e : void 0 !== e?.message ? new I(e.message, e.filename || e.sourceURL, e.lineno || e.line, e.colno || e.col) : new I("string" == typeof e ? e : (0, _.P)(e)) } #r(e) { let t = "Unhandled Promise Rejection: "; if (e?.reason instanceof Error) try { return e.reason.message = t + e.reason.message, e.reason } catch (t) { return e.reason } if (void 0 === e.reason) return new I(t); const r = this.#t(e.reason); return r.message = t + r.message, r } #n(e) { return e.error instanceof Error ? e.error : new I(e.message, e.filename, e.lineno, e.colno) } } var H = i(2210); let z = 1; const L = "nr@id"; function M(e) { const t = typeof e; return !e || "object" !== t && "function" !== t ? -1 : e === l._A ? 0 : (0, H.X)(e, L, (function () { return z++ })) } function F(e) { if ("string" == typeof e && e.length) return e.length; if ("object" == typeof e) { if ("undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer && e.byteLength) return e.byteLength; if ("undefined" != typeof Blob && e instanceof Blob && e.size) return e.size; if (!("undefined" != typeof FormData && e instanceof FormData)) try { return (0, _.P)(e).length } catch (e) { return } } } var B = i(1214), U = i(7243); class Z { constructor(e) { this.agentIdentifier = e } generateTracePayload(e) { if (!this.shouldGenerateTrace(e)) return null; var t = (0, n.DL)(this.agentIdentifier); if (!t) return null; var r = (t.accountID || "").toString() || null, i = (t.agentID || "").toString() || null, o = (t.trustKey || "").toString() || null; if (!r || !i) return null; var a = (0, E.M)(), s = (0, E.Ht)(), c = Date.now(), u = { spanId: a, traceId: s, timestamp: c }; return (e.sameOrigin || this.isAllowedOrigin(e) && this.useTraceContextHeadersForCors()) && (u.traceContextParentHeader = this.generateTraceContextParentHeader(a, s), u.traceContextStateHeader = this.generateTraceContextStateHeader(a, c, r, i, o)), (e.sameOrigin && !this.excludeNewrelicHeader() || !e.sameOrigin && this.isAllowedOrigin(e) && this.useNewrelicHeaderForCors()) && (u.newrelicHeader = this.generateTraceHeader(a, s, c, r, i, o)), u } generateTraceContextParentHeader(e, t) { return "00-" + t + "-" + e + "-01" } generateTraceContextStateHeader(e, t, r, n, i) { return i + "@nr=0-1-" + r + "-" + n + "-" + e + "----" + t } generateTraceHeader(e, t, r, n, i, o) { if (!("function" == typeof l._A?.btoa)) return null; var a = { v: [0, 1], d: { ty: "Browser", ac: n, ap: i, id: e, tr: t, ti: r } }; return o && n !== o && (a.d.tk = o), btoa((0, _.P)(a)) } shouldGenerateTrace(e) { return this.isDtEnabled() && this.isAllowedOrigin(e) } isAllowedOrigin(e) { var t = !1, r = {}; if ((0, n.Mt)(this.agentIdentifier, "distributed_tracing") && (r = (0, n.P_)(this.agentIdentifier).distributed_tracing), e.sameOrigin) t = !0; else if (r.allowed_origins instanceof Array) for (var i = 0; i < r.allowed_origins.length; i++) { var o = (0, U.e)(r.allowed_origins[i]); if (e.hostname === o.hostname && e.protocol === o.protocol && e.port === o.port) { t = !0; break } } return t } isDtEnabled() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.enabled } excludeNewrelicHeader() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.exclude_newrelic_header } useNewrelicHeaderForCors() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !1 !== e.cors_use_newrelic_header } useTraceContextHeadersForCors() { var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing"); return !!e && !!e.cors_use_tracecontext_headers } } var V = i(7825), q = ["load", "error", "abort", "timeout"], G = q.length, W = n.Yu.REQ, X = n.Yu.XHR; class Q extends f { static featureName = V.t; constructor(e, t) { let i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; if (super(e, t, V.t, i), (0, n.OP)(e).xhrWrappable) { this.dt = new Z(e), this.handler = (e, t, r, n) => (0, T.p)(e, t, r, n, this.ee); try { const e = { xmlhttprequest: "xhr", fetch: "fetch", beacon: "beacon" }; l._A?.performance?.getEntriesByType("resource").forEach((t => { if (t.initiatorType in e && 0 !== t.responseStatus) { const n = { status: t.responseStatus }, i = { rxSize: t.transferSize, duration: Math.floor(t.duration), cbTime: 0 }; K(n, t.name), this.handler("xhr", [n, i, t.startTime, t.responseEnd, e[t.initiatorType]], void 0, r.D.ajax) } })) } catch (e) {}(0, B.u5)(this.ee), (0, B.Kf)(this.ee), function (e, t, i, o) { function a(e) { var t = this; t.totalCbs = 0, t.called = 0, t.cbTime = 0, t.end = x, t.ended = !1, t.xhrGuids = {}, t.lastSize = null, t.loadCaptureCalled = !1, t.params = this.params || {}, t.metrics = this.metrics || {}, e.addEventListener("load", (function (r) { E(t, e) }), (0, D.m$)(!1)), l.IF || e.addEventListener("progress", (function (e) { t.lastSize = e.loaded }), (0, D.m$)(!1)) } function s(e) { this.params = { method: e[0] }, K(this, e[1]), this.metrics = {} } function c(t, r) { var i = (0, n.DL)(e); i.xpid && this.sameOrigin && r.setRequestHeader("X-NewRelic-ID", i.xpid); var a = o.generateTracePayload(this.parsedOrigin); if (a) { var s = !1; a.newrelicHeader && (r.setRequestHeader("newrelic", a.newrelicHeader), s = !0), a.traceContextParentHeader && (r.setRequestHeader("traceparent", a.traceContextParentHeader), a.traceContextStateHeader && r.setRequestHeader("tracestate", a.traceContextStateHeader), s = !0), s && (this.dt = a) } } function u(e, r) { var n = this.metrics, i = e[0], o = this; if (n && i) { var a = F(i); a && (n.txSize = a) } this.startTime = (0, j.z)(), this.body = i, this.listener = function (e) { try { "abort" !== e.type || o.loadCaptureCalled || (o.params.aborted = !0), ("load" !== e.type || o.called === o.totalCbs && (o.onloadCalled || "function" != typeof r.onload) && "function" == typeof o.end) && o.end(r) } catch (e) { try { t.emit("internal-error", [e]) } catch (e) {} } }; for (var s = 0; s < G; s++) r.addEventListener(q[s], this.listener, (0, D.m$)(!1)) } function d(e, t, r) { this.cbTime += e, t ? this.onloadCalled = !0 : this.called += 1, this.called !== this.totalCbs || !this.onloadCalled && "function" == typeof r.onload || "function" != typeof this.end || this.end(r) } function f(e, t) { var r = "" + M(e) + !!t; this.xhrGuids && !this.xhrGuids[r] && (this.xhrGuids[r] = !0, this.totalCbs += 1) } function h(e, t) { var r = "" + M(e) + !!t; this.xhrGuids && this.xhrGuids[r] && (delete this.xhrGuids[r], this.totalCbs -= 1) } function p() { this.endTime = (0, j.z)() } function g(e, r) { r instanceof X && "load" === e[0] && t.emit("xhr-load-added", [e[1], e[2]], r) } function m(e, r) { r instanceof X && "load" === e[0] && t.emit("xhr-load-removed", [e[1], e[2]], r) } function v(e, t, r) { t instanceof X && ("onload" === r && (this.onload = !0), ("load" === (e[0] && e[0].type) || this.onload) && (this.xhrCbStart = (0, j.z)())) } function b(e, r) { this.xhrCbStart && t.emit("xhr-cb-time", [(0, j.z)() - this.xhrCbStart, this.onload, r], r) } function y(e) { var t, r = e[1] || {}; if ("string" == typeof e[0] ? 0 === (t = e[0]).length && l.il && (t = "" + l._A.location.href) : e[0] && e[0].url ? t = e[0].url : l._A?.URL && e[0] && e[0] instanceof URL ? t = e[0].href : "function" == typeof e[0].toString && (t = e[0].toString()), "string" == typeof t && 0 !== t.length) { t && (this.parsedOrigin = (0, U.e)(t), this.sameOrigin = this.parsedOrigin.sameOrigin); var n = o.generateTracePayload(this.parsedOrigin); if (n && (n.newrelicHeader || n.traceContextParentHeader)) if (e[0] && e[0].headers) s(e[0].headers, n) && (this.dt = n); else { var i = {}; for (var a in r) i[a] = r[a]; i.headers = new Headers(r.headers || {}), s(i.headers, n) && (this.dt = n), e.length > 1 ? e[1] = i : e.push(i) } } function s(e, t) { var r = !1; return t.newrelicHeader && (e.set("newrelic", t.newrelicHeader), r = !0), t.traceContextParentHeader && (e.set("traceparent", t.traceContextParentHeader), t.traceContextStateHeader && e.set("tracestate", t.traceContextStateHeader), r = !0), r } } function A(e, t) { this.params = {}, this.metrics = {}, this.startTime = (0, j.z)(), this.dt = t, e.length >= 1 && (this.target = e[0]), e.length >= 2 && (this.opts = e[1]); var r, n = this.opts || {}, i = this.target; "string" == typeof i ? r = i : "object" == typeof i && i instanceof W ? r = i.url : l._A?.URL && "object" == typeof i && i instanceof URL && (r = i.href), K(this, r); var o = ("" + (i && i instanceof W && i.method || n.method || "GET")).toUpperCase(); this.params.method = o, this.body = n.body, this.txSize = F(n.body) || 0 } function w(e, t) { var n; this.endTime = (0, j.z)(), this.params || (this.params = {}), this.params.status = t ? t.status : 0, "string" == typeof this.rxSize && this.rxSize.length > 0 && (n = +this.rxSize); var o = { txSize: this.txSize, rxSize: n, duration: (0, j.z)() - this.startTime }; i("xhr", [this.params, o, this.startTime, this.endTime, "fetch"], this, r.D.ajax) } function x(e) { var t = this.params, n = this.metrics; if (!this.ended) { this.ended = !0; for (var o = 0; o < G; o++) e.removeEventListener(q[o], this.listener, !1); t.aborted || (n.duration = (0, j.z)() - this.startTime, this.loadCaptureCalled || 4 !== e.readyState ? null == t.status && (t.status = 0) : E(this, e), n.cbTime = this.cbTime, i("xhr", [t, n, this.startTime, this.endTime, "xhr"], this, r.D.ajax)) } } function E(e, t) { e.params.status = t.status; var r = function (e, t) { var r = e.responseType; return "json" === r && null !== t ? t : "arraybuffer" === r || "blob" === r || "json" === r ? F(e.response) : "text" === r || "" === r || void 0 === r ? F(e.responseText) : void 0 }(t, e.lastSize); if (r && (e.metrics.rxSize = r), e.sameOrigin) { var n = t.getResponseHeader("X-NewRelic-App-Data"); n && (e.params.cat = n.split(", ").pop()) } e.loadCaptureCalled = !0 } t.on("new-xhr", a), t.on("open-xhr-start", s), t.on("open-xhr-end", c), t.on("send-xhr-start", u), t.on("xhr-cb-time", d), t.on("xhr-load-added", f), t.on("xhr-load-removed", h), t.on("xhr-resolved", p), t.on("addEventListener-end", g), t.on("removeEventListener-end", m), t.on("fn-end", b), t.on("fetch-before-start", y), t.on("fetch-start", A), t.on("fn-start", v), t.on("fetch-done", w) }(e, this.ee, this.handler, this.dt), this.importAggregator() } } } function K(e, t) { var r = (0, U.e)(t), n = e.params || e; n.hostname = r.hostname, n.port = r.port, n.protocol = r.protocol, n.host = r.hostname + ":" + r.port, n.pathname = r.pathname, e.parsedOrigin = r, e.sameOrigin = r.sameOrigin } var Y = i(3614); const { BST_RESOURCE: J, RESOURCE: ee, START: te, END: re, FEATURE_NAME: ne, FN_END: ie, FN_START: oe, PUSH_STATE: ae } = Y; var se = i(7144); class ce extends f { static featureName = se.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, se.t, r), this.importAggregator() } } var ue = i(7836); const { FEATURE_NAME: de, START: le, END: fe, BODY: he, CB_END: pe, JS_TIME: ge, FETCH: me, FN_START: ve, CB_START: be, FN_END: ye } = ue; var Ae = i(4649); class we extends f { static featureName = Ae.t; constructor(e, t) { let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; super(e, t, Ae.t, r), this.importAggregator() } } new class extends t { constructor(t) { let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, E.ky)(16); super(), l._A ? (this.agentIdentifier = r, this.sharedAggregator = new v({ agentIdentifier: this.agentIdentifier }), this.features = {}, this.desiredFeatures = new Set(t.features || []), this.desiredFeatures.add(p), Object.assign(this, (0, s.j)(this.agentIdentifier, t, t.loaderType || "agent")), this.run()) : (0, e.Z)("Failed to initial the agent. Could not determine the runtime environment.") } get config() { return { info: (0, n.C5)(this.agentIdentifier), init: (0, n.P_)(this.agentIdentifier), loader_config: (0, n.DL)(this.agentIdentifier), runtime: (0, n.OP)(this.agentIdentifier) } } run() { const t = "features"; try { const n = a(this.agentIdentifier), i = [...this.desiredFeatures]; i.sort(((e, t) => r.p[e.featureName] - r.p[t.featureName])), i.forEach((t => { if (n[t.featureName] || t.featureName === r.D.pageViewEvent) { const i = function (e) { switch (e) { case r.D.ajax: return [r.D.jserrors]; case r.D.sessionTrace: return [r.D.ajax, r.D.pageViewEvent]; case r.D.sessionReplay: return [r.D.sessionTrace]; case r.D.pageViewTiming: return [r.D.pageViewEvent]; default: return [] } }(t.featureName); i.every((e => n[e])) || (0, e.Z)("".concat(t.featureName, " is enabled but one or more dependent features has been disabled (").concat((0, _.P)(i), "). This may cause unintended consequences or missing data...")), this.features[t.featureName] = new t(this.agentIdentifier, this.sharedAggregator) } })), (0, x.Qy)(this.agentIdentifier, this.features, t) } catch (r) { (0, e.Z)("Failed to initialize all enabled instrument classes (agent aborted) -", r); for (const e in this.features) this.features[e].abortHandler?.(); const n = (0, x.fP)(); return delete n.initializedAgents[this.agentIdentifier]?.api, delete n.initializedAgents[this.agentIdentifier]?.[t], delete this.sharedAggregator, n.ee?.abort(), delete n.ee?.get(this.agentIdentifier), !1 } } addToTrace(t) { (0, e.Z)("Call to agent api addToTrace failed. The session trace feature is not currently initialized.") } setCurrentRouteName(t) { (0, e.Z)("Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.") } interaction() { (0, e.Z)("Call to agent api interaction failed. The spa feature is not currently initialized.") } }({ features: [Q, p, C, class extends f { static featureName = ne; constructor(e, t) { if (super(e, t, ne, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il) return; const n = this.ee; let i; (0, B.QU)(n), this.eventsEE = (0, B.em)(n), this.eventsEE.on(oe, (function (e, t) { this.bstStart = (0, j.z)() })), this.eventsEE.on(ie, (function (e, t) { (0, T.p)("bst", [e[0], t, this.bstStart, (0, j.z)()], void 0, r.D.sessionTrace, n) })), n.on(ae + te, (function (e) { this.time = (0, j.z)(), this.startPath = location.pathname + location.hash })), n.on(ae + re, (function (e) { (0, T.p)("bstHist", [location.pathname + location.hash, this.startPath, this.time], void 0, r.D.sessionTrace, n) })); try { i = new PerformanceObserver((e => { const t = e.getEntries(); (0, T.p)(J, [t], void 0, r.D.sessionTrace, n) })), i.observe({ type: ee, buffered: !0 }) } catch (e) {} this.importAggregator({ resourceObserver: i }) } }, ce, P, we, k, class extends f { static featureName = de; constructor(e, t) { if (super(e, t, de, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !l.il) return; if (!(0, n.OP)(e).xhrWrappable) return; try { this.removeOnAbort = new AbortController } catch (e) {} let r, i = 0; const o = this.ee.get("tracer"), a = (0, B._L)(this.ee), s = (0, B.Lg)(this.ee), c = (0, B.BV)(this.ee), u = (0, B.Kf)(this.ee), d = this.ee.get("events"), f = (0, B.u5)(this.ee), h = (0, B.QU)(this.ee), p = (0, B.Gm)(this.ee); function g(e, t) { h.emit("newURL", ["" + window.location, t]) } function m() { i++, r = window.location.hash, this[ve] = (0, j.z)() } function v() { i--, window.location.hash !== r && g(0, !0); var e = (0, j.z)(); this[ge] = ~~this[ge] + e - this[ve], this[ye] = e } function b(e, t) { e.on(t, (function () { this[t] = (0, j.z)() })) } this.ee.on(ve, m), s.on(be, m), a.on(be, m), this.ee.on(ye, v), s.on(pe, v), a.on(pe, v), this.ee.buffer([ve, ye, "xhr-resolved"], this.featureName), d.buffer([ve], this.featureName), c.buffer(["setTimeout" + fe, "clearTimeout" + le, ve], this.featureName), u.buffer([ve, "new-xhr", "send-xhr" + le], this.featureName), f.buffer([me + le, me + "-done", me + he + le, me + he + fe], this.featureName), h.buffer(["newURL"], this.featureName), p.buffer([ve], this.featureName), s.buffer(["propagate", be, pe, "executor-err", "resolve" + le], this.featureName), o.buffer([ve, "no-" + ve], this.featureName), a.buffer(["new-jsonp", "cb-start", "jsonp-error", "jsonp-end"], this.featureName), b(f, me + le), b(f, me + "-done"), b(a, "new-jsonp"), b(a, "jsonp-end"), b(a, "cb-start"), h.on("pushState-end", g), h.on("replaceState-end", g), window.addEventListener("hashchange", g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("load", g, (0, D.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("popstate", (function () { g(0, i > 1) }), (0, D.m$)(!0, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator() } #i() { this.removeOnAbort?.abort(), this.abortHandler = void 0 } }], loaderType: "spa" }) })() })(); </script> <script> function mobileGlobalNav(elementName) { var icon = document.getElementsByClassName(elementName)[0]; icon.classList.toggle('active'); } </script> <meta charset="utf-8" /> <meta name="theme-color" content="#00247F"> <link href="/Bundles/css/main.css?v=9bb4293ac6fd77ddc0b82d05ed8ade6d89dbfeef4106a308882478ae5bc1adff" rel="stylesheet" /> <style> .preload-hide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #fff; z-index: 900; overflow: hidden; } </style> <script src='/Bundles/js/recommended-courses-bundle.js?v=c14132f570a0b529f454eb87d0c553923beb5cafaf7ad0fb719b8885534c7857'></script> </head> <body class="theme-aap " style="padding-top:0"> <div class="browser-message-container " data-browser-message-container> <div class="browser-alert ie"> <div class="browser-alert-inner"> <div class="browser-alert-title"> <svg class="svg-icon" aria-hidden="true" focusable="false"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-warning" /> </svg> <p class="browser-alert-title-text"> Internet Explorer Alert </p> </div> <div class="browser-alert-content"> <p>It appears you are using Internet Explorer as your web browser. Please note, Internet Explorer is no longer up-to-date and can cause problems in how this website functions<br />This site functions best using the latest versions of any of the following browsers: <strong>Edge, Firefox, Chrome, Opera, or Safari</strong>. <br />You can find the latest versions of these browsers at <a href="https://browsehappy.com/" target="_blank" rel="noopener">https://browsehappy.com</a></p> </div> </div> <svg class="svg-icon" aria-hidden="true" focusable="false" data-browser-message-close="ie"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-close" /> </svg> </div> </div> <header> </header> <!-- Google Tag Manager (noscript) --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N2RV28J" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <div class="header-advertisement"> <a class="header-advertisement-disclaimer" target="_blank" href="/en/pages/ad-disclaimer/">Advertisement Disclaimer</a> <!-- /22410314033/aap_leadert --> <div id='div-gpt-ad-1633540336787-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1633540336787-0'); }); </script> </div> </div> <header class="mobile-header print-hide"> <div class="mobile-header-top"> <div class="mobile-header-left"> <div class="mobile-header-top-trigger"> <svg class="mobile-header-top-trigger-open"> <use xlink:href="#mobile-menu-open"></use> </svg> <svg class="mobile-header-top-trigger-close"> <use xlink:href="#mobile-menu-close"></use> </svg> </div> <svg class="mobile-header-logo"> <use xlink:href="#Seal_Pos"></use> </svg> </div> <div class="utility-nav"> <div class="utility-nav-item utility-nav-search"> <svg class="utility-nav-search-icon"> <use xlink:href="#info-magnifying-glass"></use> </svg> <svg class="utility-nav-close"> <use xlink:href="#mobile-menu-close"></use> </svg> </div> <a class="utility-nav-item utility-nav-cart" data-cart-popup-button-mobile aria-expanded="false" href="javascript:;"> <svg> <use xlink:href="#icon-cart"></use> </svg> <div class="utility-nav-cart-amount hidden" data-cart-amount-mobile></div> </a> <div class="utility-nav-item utility-nav-account"> <svg id="mobile-my-account-link"> <use xlink:href="#icon-profile"></use> </svg> <svg id="mobile-my-account-close" style="display: none;"> <use xlink:href="#mobile-menu-close"></use> </svg> <div id="mobile-my-account-menu" class="utility-my-account-menu"> <a class="utility-my-account-menu-logout" href="/en/my-account/login/">Login</a> </div> </div> <div class="utility-nav-item utility-nav-explore explore-aap-mobile" explore-nav-mobile> <a href="javascript:;" class="explore-aap-mobile-trigger" explore-nav-button aria-controls="explore-aap-nav-mobile" aria-expanded="false"> <svg id="mobile-explore-aap-link" class="explore-icon"> <use xlink:href="#icon-explore"></use> </svg> <svg id="mobile-explore-close" class="close-icon"> <use xlink:href="#mobile-menu-close"></use> </svg> </a> <div id="explore-aap-nav-mobile" class="explore-aap-links-wrap" explore-nav-menu aria-hidden="true"> <div class="explore-aap-links-wrap-inner"> <ul class="explore-aap-links"> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://publications.aap.org/" target="_blank"> Publications </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/shopaap/" target=""> shopAAP </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/pedialink/" target=""> PediaLink </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://www.healthychildren.org/" target="_blank"> HealthyChildren.org </a> </li> </ul> </div> </div> </div> </div> </div> <div class="popup-cart popup-cart-mobile" data-cart-popup-mobile aria-hidden="true"> <div class="popup-cart-header"> <div class="popup-cart-header-content"><h3>Shopping cart</h3> <p data-cart-popup-item-number></p></div> <button class="unbutton" type="button" data-cart-popup-button-close-mobile><svg> <use xlink:href="#icon-close"></use> </svg></button> </div> <div class="popup-cart-warning popup-cart-warning-mobile" data-cart-validation-messages></div> <div class="popup-cart-wrapper" data-cart-popup-cart> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/"><svg><use xlink:href="#icon-cart"></use></svg>Go to Cart</a> <a class="button-primary" id="cart-popup-checkout-cta-mobile" href="/en/shopaap/cart/shipping/">Checkout</a> </div> <div class="popup-cart-item-list" data-cart-popup-items></div> <div class="popup-cart-more" data-cart-popup-overflow></div> <button type="button" class="unbutton button-link" data-cart-clear-cart-cta id="cart-popup-clear-cart-cta-mobile">Clear Cart</button> <div class="popup-cart-total"><p class="paragraph-large">Order Subtotal</p><p class="paragraph-large" data-cart-popup-subtotal></p></div> </div> <div data-cart-popup-empty class="popup-cart-empty active"> <svg> <use xlink:href="#icon-cart"></use> </svg> <p class="popup-cart-empty-title">Your cart is empty.</p> <p class="popup-cart-empty-subtitle">Looks like you haven't added anything to your cart.</p> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/">View Saved Items</a> <a class="button-primary" href="https://www.aap.org/en/shopaap">Go Shopping</a></div> </div> <div data-cart-popup-loading class="popup-cart-empty active"> <p>Loading</p> <div class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </div> </div> <div class="mobile-search-wrapper"> <div id="mobile-search-bar-component"></div> </div> <div class="mobile-global-nav"> <ul class="mobile-global-nav-menu unlisted" id="main-nav-menu-mobile"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('aaphome')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/"> News </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/membership-application/join-aap/"> Membership </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/career-resources/"> Career Resources </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/research/"> Research </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/philanthropy/"> Philanthropy </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/about-the-aap/"> About the AAP </a> </li> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('policy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://doi.org/10.1542/peds.2024-069298"> Nonmedical Use of Controlled Medications by Adolescents and Young Adults </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://publications.aap.org/aapnews/news/30742"> How to Prevent, Reduce Harms from Nonmedical Use of Controlled Medications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://www.healthychildren.org/English/ages-stages/teen/substance-abuse/Pages/dangers-of-prescription-drug-misuse-tips-to-keep-your-teen-safe.aspx"> Dangers of Prescription Drug Misuse: Tips to Keep Your Teen Safe </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/news-releases-from-the-aap/"> News Releases </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://pediatrics.aappublications.org/collection"> Policy Collections </a> </li> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('advocacy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/the-state-of-children-in-2020/"> The State of Children in 2020 </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/healthy-children/"> Healthy Children </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/secure-families/"> Secure Families </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/strong-communities/"> Strong Communities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/a-leading-nation-for-youth/"> A Leading Nation for Youth </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/transition-plan-2020/"> Transition Plan: Advancing Child Health in the Biden-Harris Administration </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/health-care-access-coverage/"> Health Care Access & Coverage </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/immigrant-child-health/"> Immigrant Child Health </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/gun-violence-prevention/"> Gun Violence Prevention </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/tobacco-e-cigarettes/"> Tobacco & E-Cigarettes </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/vaccines/"> Vaccines </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/child-nutrition/"> Child Nutrition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/assault-weapons-bans/"> Assault Weapons Bans </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/childhood-immunizations/"> Childhood Immunizations </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/flavored-e-cigarette-and-tobacco-products/"> E-Cigarette and Tobacco Products </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/childrens-health-care-coverage-fact-sheets/"> Children’s Health Care Coverage Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/opioid-fact-sheets/"> Opioid Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/advocacy-training-modules/"> Advocacy Training Modules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/my-account/login/Authenticate?returnurl=/globalassets/documents/academic-and-subspecialty-advocacy-washington-report_march-2020.pdf"> Subspecialty Advocacy Report </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/aap-advocacy-internship-program/"> AAP Washington Office Internship </a> </li> </ul> </li> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('pedialink')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/online-courses/"> Online Courses </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/live-activities/"> Live and Virtual Activities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://aapexperience.org/"> National Conference and Exhibition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/self-assessments/"> Prep®- Pediatric Review and Education Programs </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/publications/journals/"> Journals and Publications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/pedialink/neonatal-resuscitation-program/"> NRP </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://login.healthstream.com/hstmsts/login.aspx"> NRP LMS Login </a> </li> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('community')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-committees/"> AAP Committees </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-councils/"> AAP Councils </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-sections/"> AAP Sections </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://collaborate.aap.org/AAP-Volunteer-Network/Pages/Volunteer-Board-National.aspx"> Volunteer Network </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/join-your-chapter/"> Join a Chapter </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/chapter-websites/"> Chapter Websites </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/members/home/directories-and-rosters/chapter-district-leadership-rosters/chapter-and-district-executive-directors/"> Chapter Executive Directors </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/district-map/"> District Map </a> </li> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="_blank" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap main-nav-menu-item-mobile-only "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> </div> </header> <header class="global-header "> <div class="global-header-top"> <div class="main-nav print-hide" id="main-nav"> <div class="main-nav-wrapper" id="main-nav-wrapper"> <div class="main-nav-left-wrapper"> <ul class="main-nav-menu unlisted" id="main-nav-menu"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('aaphome')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/"> News </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/membership-application/join-aap/"> Membership </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/career-resources/"> Career Resources </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/research/"> Research </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/philanthropy/"> Philanthropy </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/about-the-aap/"> About the AAP </a> </li> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('policy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://doi.org/10.1542/peds.2024-069298"> Nonmedical Use of Controlled Medications by Adolescents and Young Adults </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://publications.aap.org/aapnews/news/30742"> How to Prevent, Reduce Harms from Nonmedical Use of Controlled Medications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://www.healthychildren.org/English/ages-stages/teen/substance-abuse/Pages/dangers-of-prescription-drug-misuse-tips-to-keep-your-teen-safe.aspx"> Dangers of Prescription Drug Misuse: Tips to Keep Your Teen Safe </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/news-room/news-releases-from-the-aap/"> News Releases </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://pediatrics.aappublications.org/collection"> Policy Collections </a> </li> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('advocacy')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/the-state-of-children-in-2020/"> The State of Children in 2020 </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/healthy-children/"> Healthy Children </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/secure-families/"> Secure Families </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/strong-communities/"> Strong Communities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/blueprint-for-children/a-leading-nation-for-youth/"> A Leading Nation for Youth </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/transition-plan-2020/"> Transition Plan: Advancing Child Health in the Biden-Harris Administration </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/health-care-access-coverage/"> Health Care Access & Coverage </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/immigrant-child-health/"> Immigrant Child Health </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/gun-violence-prevention/"> Gun Violence Prevention </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/tobacco-e-cigarettes/"> Tobacco & E-Cigarettes </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/vaccines/"> Vaccines </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/child-nutrition/"> Child Nutrition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/assault-weapons-bans/"> Assault Weapons Bans </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/childhood-immunizations/"> Childhood Immunizations </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/state-advocacy/flavored-e-cigarette-and-tobacco-products/"> E-Cigarette and Tobacco Products </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/childrens-health-care-coverage-fact-sheets/"> Children’s Health Care Coverage Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/opioid-fact-sheets/"> Opioid Fact Sheets </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/advocacy-training-modules/"> Advocacy Training Modules </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/my-account/login/Authenticate?returnurl=/globalassets/documents/academic-and-subspecialty-advocacy-washington-report_march-2020.pdf"> Subspecialty Advocacy Report </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/advocacy/aap-advocacy-internship-program/"> AAP Washington Office Internship </a> </li> </ul> </li> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('pedialink')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/online-courses/"> Online Courses </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/live-activities/"> Live and Virtual Activities </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://aapexperience.org/"> National Conference and Exhibition </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/professional-education/self-assessments/"> Prep®- Pediatric Review and Education Programs </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://shop.aap.org/publications/journals/"> Journals and Publications </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/pedialink/neonatal-resuscitation-program/"> NRP </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://login.healthstream.com/hstmsts/login.aspx"> NRP LMS Login </a> </li> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> <div class="mobile-header-trigger"> <svg onclick="mobileGlobalNav('community')" class="mobile-header-trigger-open"> <use xlink:href="#arrow-down"></use> </svg> </div> </div> <ul class="mobile-header-context-link-list"> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-committees/"> AAP Committees </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-councils/"> AAP Councils </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/aap-sections/"> AAP Sections </a> </li> <li class="mobile-nav-context-link"> <a class="" href="https://collaborate.aap.org/AAP-Volunteer-Network/Pages/Volunteer-Board-National.aspx"> Volunteer Network </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/join-your-chapter/"> Join a Chapter </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/chapter-websites/"> Chapter Websites </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/members/home/directories-and-rosters/chapter-district-leadership-rosters/chapter-and-district-executive-directors/"> Chapter Executive Directors </a> </li> <li class="mobile-nav-context-link"> <a class="" href="/en/community/district-map/"> District Map </a> </li> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="_blank" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap main-nav-menu-item-mobile-only "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <div class="main-nav-dropdown" id="main-nav-dropdown"> <div class="main-nav-dropdown-button" id="main-nav-dropdown-button"> <span>More</span> <svg> <use xlink:href="#arrow-down"></use> </svg> </div> <ul class="main-nav-dropdown-menu unlisted" id="main-nav-dropdown-menu"></ul> </div> </div> <ul class="main-nav-menu unlisted" id="main-nav-menu-utility"> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart " id="li-shop-link"> <a href="https://www.aap.org/en/shopaap">shopAAP</a> </li> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart" id="li-shop-cart"> <a class="utility-nav-item utility-nav-cart" data-cart-popup-button aria-expanded="false" href="javascript:;"> <svg> <use xlink:href="#icon-cart"></use> </svg> <div class="utility-nav-cart-amount hidden" data-cart-amount></div> </a> <div class="popup-cart" data-cart-popup aria-hidden="true"> <div class="popup-cart-header"> <div class="popup-cart-header-content"> <h3>Shopping cart</h3> <p data-cart-popup-item-number></p> </div> <button class="unbutton" type="button" data-cart-popup-button-close> <svg> <use xlink:href="#icon-close"></use> </svg> </button> </div> <div class="popup-cart-warning" data-cart-validation-messages></div> <div class="popup-cart-wrapper" data-cart-popup-cart> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/"><svg><use xlink:href="#icon-cart"></use></svg>Go to Cart</a> <a class="button-primary" id="cart-popup-checkout-cta" href="/en/shopaap/cart/shipping/">Checkout</a> </div> <div class="popup-cart-item-list" data-cart-popup-items></div> <div class="popup-cart-more" data-cart-popup-overflow></div> <button type="button" class="unbutton button-link" data-cart-clear-cart-cta id="cart-popup-clear-cart-cta">Clear Cart</button> <div class="popup-cart-total"><p class="paragraph-large">Order Subtotal</p><p class="paragraph-large" data-cart-popup-subtotal></p></div> </div> <div data-cart-popup-empty class="popup-cart-empty active"> <svg> <use xlink:href="#icon-cart"></use> </svg> <p class="popup-cart-empty-title">Your cart is empty.</p> <p class="popup-cart-empty-subtitle">Looks like you haven't added anything to your cart.</p> <div class="popup-cart-buttons"> <a class="button-secondary" href="/en/shopaap/cart/">View Saved Items</a> <a class="button-primary" href="https://www.aap.org/en/shopaap">Go Shopping</a> </div> </div> <div data-cart-popup-loading class="popup-cart-empty active"> <p>Loading</p> <div class="loader"> <div class="loader-circle"> <svg class="spin" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> <svg class="base" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" strokeWidth="3" strokeMiterlimit="10" /> </svg> </div> </div> </div> </div> </li> <li class="main-nav-menu-item main-nav-menu-item-right utility-nav-item utility-nav-cart" id="li-utilitynav-create-account-link"> <a href="/en/my-account/create-account-landing-page/">Create Account</a> </li> <li class="main-nav-menu-item main-nav-menu-item-right-bullet utility-nav-item utility-nav-cart" id="li-utilitynav-login-link"> <a href="/en/my-account/login/?ReturnUrl=https://www.aap.org/en/patient-care/early-childhood/"> Login </a> </li> <!--Explore AAP Button --> <div class="explore-aap-wrap" explore-nav> <a href="javascript:;" class="explore-aap-trigger" explore-nav-button aria-controls="explore-aap-nav" aria-expanded="false"> <span class="explore-icon"> <svg class="icon-explore"><use xlink:href="#icon-explore"></use></svg><span class="explore-aap-text">Explore AAP</span> </span> <span class="explore-aap-close"> <i class="icon-general-close"> <span class="screen-reader-only">Close</span> </i> </span> </a> <div id="explore-aap-nav" class="explore-aap-links-wrap" explore-nav-menu aria-hidden="true"> <div class="explore-aap-links-wrap-inner"> <ul class="explore-aap-links"> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://publications.aap.org/" target="_blank"> Publications </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/shopaap/" target=""> shopAAP </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="/en/pedialink/" target=""> PediaLink </a> </li> <li class="explore-aap-links-list-item"> <a class="explore-aap-links-list-item-link" href="https://www.healthychildren.org/" target="_blank"> HealthyChildren.org </a> </li> </ul> </div> </div> </div> </ul> </div> </div> <div class="global-search-wrapper"> <a href="https://www.aap.org"> <div class="global-logo-aap"> <svg class="icon icon-AAP-Logo_1-Line_Black"> <use xlink:href="#icon-AAP-Logo_2-Line_Black"></use> </svg> </div> </a> <div id="search-bar-component"></div> </div> </div> <div class="global-header-contextual-nav "> <div class="global-header-wrapper"> <a class="global-header-contextual-nav-current" href="/link/07d2b6db9df54bbdbe0ccbe2cdbadbe6.aspx"> Patient Care </a> <ul class="global-header-contextual-nav-links unlisted"> <li class="main-nav-menu-item earlychildhood " onmouseenter="onMegaNavHover('earlychildhood')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Early Childhood </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Early Childhood</div> <div class="description">Early childhood is a pivotal period of child development that begins before birth through age 8. The experiences and opportunities offered in early childhood lay the foundation for how children grow, learn, build relationships, and prepare for school.</div> <div class="cta"> <a href="/en/patient-care/early-childhood/"> Early Childhood </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list full-width"> <ul> <li> <a href="/en/patient-care/early-childhood/early-relational-health/" title="Early Relational Health">Early Relational Health</a> </li> <li> <a href="/en/patient-care/early-childhood/" title="Early Childhood Health & Development">Early Childhood Health & Development</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item gunsafety&injuryprevention " onmouseenter="onMegaNavHover('gunsafety&injuryprevention')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Gun Safety & Injury Prevention </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Gun Safety & Injury Prevention</div> <div class="description">The AAP has developed and published position statements with recommended public policy and clinical approaches to reduce the incidence of firearm injuries in children and adolescents and to reduce the effects of gun violence.</div> <div class="cta"> <a href="/en/patient-care/gun-safety-and-injury-prevention/"> Gun Safety </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list full-width"> <ul> <li> <a href="/en/patient-care/gun-safety-and-injury-prevention/safe-storage-of-firearms/" title="Safe Storage of Firearms">Safe Storage of Firearms</a> </li> <li> <a href="/en/patient-care/gun-safety-and-injury-prevention/promoting-firearm-injury-prevention--patient-safety-in-the-emergency-department/" title="Promoting Firearm Injury Prevention">Promoting Firearm Injury Prevention</a> </li> </ul> </div> </div> </div> </div> </div> </li> <li class="main-nav-menu-item mentalhealthinitiatives " onmouseenter="onMegaNavHover('mentalhealthinitiatives')" onmouseleave="onMegaNavLeave()"> <div class="main-nav-menu-item-top"> <a class="" href="#" > Mental Health Initiatives </a> </div> <div class="mega-nav"> <div class="mega-nav-inner" > <div class="mega-nav-inner-item mega-nav-inner-item-content"> <div class="title">Mental Health Initiatives</div> <div class="description">Mental health is an essential component of overall health. Pediatricians are an important first resource for parents and caregivers who are worried about their child's emotional and behavioral health or who want to promote healthy mental development.</div> <div class="cta"> <a href="/en/patient-care/mental-health-initiatives/"> Mental Health </a> </div> </div> <div class="mega-nav-inner-item mega-nav-inner-item-links"> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list title"></div> <div class="mega-nav-link-list title"></div> </div> <div class="mega-nav-inner-item-links-wrapper"> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/patient-care/mental-health-initiatives/mental-health-education-and-training/">Mental Health Education & Training</a> </li> <li> <a href="/en/patient-care/mental-health-initiatives/mental-health-practice-tools-and-resources/" title="Practice Tools & Resources">Practice Tools & Resources</a> </li> </ul> </div> <div class="mega-nav-link-list"> <ul> <li> <a href="/en/patient-care/mental-health-initiatives/mental-health-policies/" title="Policies on Mental Health">Policies on Mental Health</a> </li> <li> <a href="/en/patient-care/mental-health-initiatives/mental-health-resources-for-families/" title="Mental Health Resources for Families">Mental Health Resources for Families</a> </li> </ul> </div> </div> </div> </div> </div> </li> </ul> </div> </div> <div class="global-header-contextual-mobile-nav " > <div class="global-header-contextual-mobile-wrapper" data-horizontal-scroll-container> <nav class="sub-nav"> <ul class="global-header-contextual-mobile-nav-links unlisted tabbed sub-nav-contents" data-horizontal-scroll-content> <li class="main-nav-menu-item earlychildhood"> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/early-childhood/" > Early Childhood </a> </div> </li> <li class="main-nav-menu-item gunsafety&injuryprevention"> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/gun-safety-and-injury-prevention/" > Gun Safety & Injury Prevention </a> </div> </li> <li class="main-nav-menu-item mentalhealthinitiatives"> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/mental-health-initiatives/" > Mental Health Initiatives </a> </div> </li> </ul> </nav> <button id="subNavAdvancerLeft" class="sub-nav-advancer sub-nav-advancer-left" type="button"> <svg class="sub-nav-advancer-icon sub-nav-advancer-icon-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 551 1024"><path d="M445.44 38.183L-2.53 512l447.97 473.817 85.857-81.173-409.6-433.23v81.172l409.6-433.23L445.44 38.18z"></path></svg> </button> <button id="subNavAdvancerRight" class="sub-nav-advancer sub-nav-advancer-right" type="button"> <svg class="sub-nav-advancer-icon sub-nav-advancer-icon-right" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 551 1024"><path d="M105.56 985.817L553.53 512 105.56 38.183l-85.857 81.173 409.6 433.23v-81.172l-409.6 433.23 85.856 81.174z"></path></svg> </button> </div> </div> <script type="text/javascript"> // Get all links inside of the mega-nav and add onclick listeners var links = document.querySelectorAll(".mega-nav-inner * a"); if (links && links.length > 0) { links.forEach(function (link, index, list) { link.addEventListener("click", () => onMegaNavLinkClick(link)); }); } // Send tag for clicking mega-nav links onMegaNavLinkClick = (link) => { var dataLayer = window.dataLayer || []; const event = "MegaNavLinkClickEvent"; const tag = { event, megaNavLinkName: link.innerText, magaNavLinkUrl: link.href }; console.log(`Sending tag to data layer: ${JSON.stringify(tag)}`); dataLayer.push(tag); } var hoverTimer; var waitTime = 500; // Using timer to weed out momentary/incidental mouse enter events onMegaNavHover = (name) => { hoverTimer = setTimeout(function() { var dataLayer = window.dataLayer || []; const event = "MegaNavHoverEvent"; const tag = { event, megaNavItem: name, }; console.log(`Sending tag to data layer: ${JSON.stringify(tag)}`); dataLayer.push(tag); }, waitTime); } onMegaNavLeave = () => { clearTimeout(hoverTimer); } </script> <div class="page-header-global " data-page-header-global> <div class="page-header-global-body"> <h1 data-testid="welcome-name">Early Childhood</h1> <div class="breadcrumbs"> <a href="https://www.aap.org/en/">Home</a> <span class="breadcrumbs-divider"> / </span> <a href="https://www.aap.org/en/patient-care/">Patient Care</a> <span class="breadcrumbs-divider"> / </span> <span class="breadcrumb-page-name">Early Childhood</span> </div> </div> </div> </header> <div class="preload-hide"></div> <div class="container main-body" id="main-body"> <div class="content-container"> <div class="main-content"> <div><div class="row row0"><div class="block fiftyfiftyblock"> <section class="adage-block adage-block-full-bleed client-view"> <div class="adage-fiftyfifty"> <div class="adage-fiftyfifty-inner ratio-standard"> <article class="adage-fiftyfifty-item adage-theme-default " data-full-bleed-image> <section class="adage-block adage-video-section"> <figure class="adage-block-inner adage-video-block"> <div class="adage-video-thumbnail" data-adage-video-thumbnail> <button data-a11y-dialog-show="modal-62849fab-7528-4b4c-9cb8-0617e768aa1c" class="adage-video-thumbnail-trigger"> <img src="" alt="" data-brightcove-thumb data-brightcove-video="6311949222112" /> <svg class="icon-play-aap"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-play-aap"></use> </svg> </button> </div> </figure> <div id="modal-62849fab-7528-4b4c-9cb8-0617e768aa1c" data-modal class="dialog-container adage-modal-wrapper" aria-hidden="true"> <div tabindex="-1" data-a11y-dialog-hide class="adage-modal-overlay"></div> <div role="dialog" aria-labelledby="dialog-title-modal-62849fab-7528-4b4c-9cb8-0617e768aa1c" class="adage-modal-dialog"> <button type="button" data-a11y-dialog-hide aria-label="Close this dialog" class="adage-modal-close"></button> <div class="adage-modal-inner adage-modal-inner-full-bleed"> <!--note that in a modal, these video embeds need to have data-src instead of src--> <div class="adage-video-native brightcove-modal" data-video-type="brightcove"> <video-js data-video-type="brightcove" class="vjs-fluid" controls="" data-application-id="" data-embed="default" data-player="default" data-account="6056665225001" data-video-id="6311949222112" data-playlist-id="" id="brightcovePlayer_6311949222112"> </video-js> </div> </div> </div> </div> </section> </article> <article class="adage-fiftyfifty-item adage-theme-default non-media" data-full-bleed-image> <div class="adage-wysiwyg-block"> <p>Early childhood is a pivotal period of child development that begins before birth through age 8. This is a period of rapid brain and body development. In the first few years of life, more than 1 million new neural connections are formed every second (Center for Developing Child). The experiences and opportunities offered in early childhood lay the foundation for how children grow, learn, build relationships, and prepare for school. <br /><br />A child does not grow in a silo. The health of their family, community, safety of their environment as well as the systems and policy all interact to affect the trajectory and health of a child. </p> </div> </article> </div> </div> </section> </div></div><div class="row row1"><div class="block wysiwygblock"> <section class="adage-block wysiwyg "> <div class="adage-block-inner adage-wysiwyg-block"> <p><br />Together with a comprehensive well-child care system, pediatricians can promote healthy development and prevent and treat risks to development during 15 recommended visits from ages 0-5 years old.</p> <h3>New Coding Fact Sheet! Early Childhood Social-Emotional Development Billing and Coding</h3> <p>AAP has released a new resource <a href="https://downloads.aap.org/AAP/PDF/Early%20Childhood%20Social-Emotional%20Development%20Billing%20and%20Coding_final.pdf" target="_blank" rel="noopener">Early Childhood Social-Emotional Development Billing and Coding</a> that details billing and diagnosis codes recommended for use by pediatric providers, followed by case vignettes examples of social-emotional development coding in practice. This document is designed for all pediatric providers, including pediatricians, family medicine, integrated mental health professionals, and other specialists who work with children ages 0-5. This resource was developed by AAP is a core partner of the <a href="https://earlychildhoodimpact.org/" target="_blank" rel="noopener">Early Childhood Developmental Health Systems Evidence to Impact Center</a> funded by the Health Resources and Services Administration that provides technical assistance to Transforming Pediatrics for Early Childhood (TPEC) Resource Hubs and 151 Early Childhood Development (ECD) community health centers.</p> <h3 class="adage-block-heading adage-fwcta-heading">Infant and Early Childhood Mental Health: Relational Foundations for Lifelong Health</h3> <div class="adage-fwcta-content"> <p>Take the online education course titled <a href="/en/catalog/categories/pedialink-eqipp-courses/infant-and-early-childhood-mental-health-relational-roundations-for-lifelong-health/" data-uw-rm-brl="PR" data-uw-original-href="https://www.aap.org/en/catalog/categories/pedialink-eqipp-courses/infant-and-early-childhood-mental-health-relational-roundations-for-lifelong-health/">Infant and Early Childhood Mental Health: Relational Foundations for Lifelong Health</a> funded by the Perigee Fund to learn and apply an infant and early childhood mental health principles to promote, prevent risks, and intervene to support healthy early childhood development. The first 1,000 learners can access the course for free using code SAVE5. The intended audience is pediatricians, family medicine, and their teams, and others that care for infants and young children’s health and family well-being. The course requires creation or use of a free login AAP.org account to access our learning platform. </p> </div> <div class="adage-fwcta-cta"><a class="btn button-primary" href="/en/catalog/categories/pedialink-eqipp-courses/infant-and-early-childhood-mental-health-relational-roundations-for-lifelong-health/" data-uw-rm-brl="PR" data-uw-original-href="https://www.aap.org/en/catalog/categories/pedialink-eqipp-courses/infant-and-early-childhood-mental-health-relational-roundations-for-lifelong-health/">View</a></div> </div> </section> </div></div><div class="row row2"><div class="block fullwidthctablock"> <div class="adage-fwcta-container blue"> <section class="adage-block adage-block-full-bleed adage-fwcta-section"> <div class="adage-fwcta-spacer"></div> <div class="adage-fwcta center"> <div class="adage-fwcta-inner"> <h2 class="adage-block-heading adage-fwcta-heading">Professional Resources</h2> </div> </div> </section> </div></div></div><div class="row row3"><div class="block cardblock col-xxl-4 col-xl-4 col-lg-4 col-md-6 col-sm-12"> <a href="/en/patient-care/early-childhood/early-childhood-health-and-development/"> <div class="card-block"> <div class="card-block-content rich-text"> <h3 class="card-block-header">Early Childhood Health and Development </h3> <p class="paragraph-caption"> Learn about what can we do during this incredibly important period to ensure that children have a strong foundation for future development. </p> </div> </div> </a></div><div class="block cardblock col-xxl-4 col-xl-4 col-lg-4 col-md-6 col-sm-12"> <a href="/en/patient-care/early-childhood/early-relational-health/"> <div class="card-block"> <div class="card-block-content rich-text"> <h3 class="card-block-header">Early Relational Health</h3> <p class="paragraph-caption"> Early relational health is a framework that explores the role of early relationships and experiences in healthy development across a child’s lifetime. Relationships, especially in the early years, build a foundation for lifelong growth and development. </p> </div> </div> </a></div><div class="block cardblock col-xxl-4 col-xl-4 col-lg-4 col-md-6 col-sm-12"> <a href="/en/community/aap-councils/early-childhood/"> <div class="card-block"> <div class="card-block-content rich-text"> <h3 class="card-block-header">Council on Early Childhood</h3> <p class="paragraph-caption"> The Council on Early Childhood is the AAP home for pediatricians actively working to make pediatrics, children’s health care, and society more focused on young children and families, so that every child can reach their full potential. </p> </div> </div> </a></div></div><div class="row row4"><div class="block fullwidthctablock"> <div class="adage-fwcta-container blue"> <section class="adage-block adage-block-full-bleed adage-fwcta-section"> <div class="adage-fwcta-spacer"></div> <div class="adage-fwcta center"> <div class="adage-fwcta-inner"> <h2 class="adage-block-heading adage-fwcta-heading">Initiatives</h2> </div> </div> </section> </div></div></div><div class="row row5"><div class="block cardblock col-xxl-3 col-xl-3 col-lg-3 col-md-6 col-sm-12"> <a href="https://www.cdc.gov/ncbddd/actearly/index.html" target="_blank"> <div class="card-block"> <div class="card-block-content rich-text"> <h3 class="card-block-header">Learn the Signs. Act Early. (LTSAE)</h3> <p class="paragraph-caption"> Explore the CDC’s Learn the Signs. Act Early. (LTSAE) program that aims to improve early identification of developmental delays and disabilities, including autism, by facilitating parent-engaged developmental monitoring and promoting developmental screening so children and their families can get the early services and support they need. </p> </div> </div> </a></div><div class="block cardblock col-xxl-3 col-xl-3 col-lg-3 col-md-6 col-sm-12"> <a href="https://earlychildhoodimpact.org/" target="_blank"> <div class="card-block"> <div class="card-block-content rich-text"> <h3 class="card-block-header">Early Childhood Developmental Health Systems (ECDHS)</h3> <p class="paragraph-caption"> Access support resources and stories about states and communities building equitable and family-centered early childhood systems that work to secure the health and well-being of young children and their families. </p> </div> </div> </a></div><div class="block cardblock col-xxl-3 col-xl-3 col-lg-3 col-md-6 col-sm-12"> <a href="https://www.zerotothree.org/our-work/safebabies/" target="_blank"> <div class="card-block"> <div class="card-block-content rich-text"> <h3 class="card-block-header">Safe Babies</h3> <p class="paragraph-caption"> Learn more about work to transform child welfare into the practice of strengthening child and family well-being. </p> </div> </div> </a></div><div class="block cardblock col-xxl-3 col-xl-3 col-lg-3 col-md-6 col-sm-12"> <a href="/en/patient-care/early-childhood/facilitating-attuned-interactions-fan/"> <div class="card-block"> <div class="card-block-content rich-text"> <h3 class="card-block-header">Facilitating Attuned Interactions (FAN)</h3> <p class="paragraph-caption"> The American Academy of Pediatrics and Erikson Institute have joined forces to facilitate a learning journey for medical students and practicing pediatricians in Erikson’s Facilitating Attuned Interactions (FAN) approach to relationship-building and reflective practice. </p> </div> </div> </a></div></div><div class="row row6"><div class="block sourcelastupdatedblock"> <div class="last-updated-block-container"> <h5 class="last-updated-block-label">Last Updated</h5> <p class="last-updated-text">11/12/2024</p> </div> <div class="source-block-container"> <h5 class="source-block-label">Source</h5> <div class="source-text"> <p>American Academy of Pediatrics</p></div> </div> </div></div></div> </div> </div> <div class="back-to-top" tabindex="0" id="backToTop"> <svg class="back-to-top-arrow"> <use xlink:href="#back-to-top-arrow"></use> </svg> </div> </div> <script type="text/javascript"> window.searchBox = { searchBoxText: 'Search All AAP', searchButtonText: 'Search', findIndexUrl: 'https://es-us-api01.episerver.com/3fu1nB75NF5xwBMuzJdHOF0KFePbaflM/aaop_index00214/', searchPageUrl: '/en/search/', shopSearchBoxText: 'Search shopAAP' }; </script> <script type="text/javascript"> window.GoogleAnalyticsBootstrap = { sendUserInformationtoGA: 'False', lockedContentUniqueUserId: '', userVisitorGroupName: '', } </script> <script> window.errorText = { dismissButtonText: 'Dismiss', requiredErrorText: 'This is a required field', invalidErrorText: 'This field is invalid', invalidPasswordText: 'Password must be at least 10 characters long', passwordMatchErrorText: 'Passwords must match', } window.passwordValidation = { passwordRequiredLength: 10, passwordRequireNonLetterOrDigit: false, passwordRequireDigit: false, passwordRequireUpperCase: false, passwordRequireLowerCase: false, } </script> <script> window.loginInfo = { loginUrl: '/en/my-account/login/' } </script> <footer class="footer" id="footer"> <div class="footer-top"> <div class="footer-top-wrapper"> <div class="footer-aap-logo"> <svg> <use xlink:href="#Seal_Pos"></use> </svg> </div> <div class="row"> <div class="col-xxl-6 col-sm-12"> <div class="footer-top-about"> We're 67​,000 pediatricians committed to the optimal physical, mental, and social health and well-being for all infants, children, adolescents, and young adults. </div> </div> <div class="col-xxl-6 col-sm-12"> <div class="footer-top-nav"> <div class="row"> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item aaphome "> <div class="main-nav-menu-item-top"> <a class="" href="/en/" target="" data-testid="link-aaphome"> AAP Home </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item policy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/policy/" target="" data-testid="link-policy"> Policy </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item advocacy "> <div class="main-nav-menu-item-top"> <a class="" href="/en/advocacy/" target="" data-testid="link-advocacy"> Advocacy </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item pedialink "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pedialink/" target="" data-testid="link-pedialink"> PediaLink </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item practicemanagement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/practice-management/" target="" data-testid="link-practicemanagement"> Practice Management </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item patientcare "> <div class="main-nav-menu-item-top"> <a class="" href="/en/patient-care/" target="" data-testid="link-patientcare"> Patient Care </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="col-xxl-4 unlisted"> <li class="main-nav-menu-item community "> <div class="main-nav-menu-item-top"> <a class="" href="/en/community/" target="" data-testid="link-community"> Community </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item healthychildren "> <div class="main-nav-menu-item-top"> <a class="" href="http://healthychildren.org/" target="" data-testid="link-healthychildren"> Healthy Children </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item shopaap "> <div class="main-nav-menu-item-top"> <a class="" href="/en/shopaap/" target="" data-testid="link-shopaap"> shopAAP </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> </div> </div> <div class="footer-top-mobile-nav"> <div class="row"> <ul class="col-sm-6 unlisted"> </ul> <ul class="col-sm-6 unlisted"> </ul> </div> </div> </div> </div> </div> </div> <div class="footer-links-wrapper"> <div class="footer-links" id="footer-links"> <div class="footer-links-main"> <ul class="unlisted col-sm-6"> <li class="main-nav-menu-item privacystatement "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/privacy-statement/" target="" data-testid="link-privacystatement"> Privacy Statement </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item termsofuse "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/terms-of-use/" target="" data-testid="link-termsofuse"> Terms of Use </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item supportcenter "> <div class="main-nav-menu-item-top"> <a class="" href="/en/support-center/" target="" data-testid="link-supportcenter"> Support Center </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item codeofconduct "> <div class="main-nav-menu-item-top"> <a class="" href="/en/about-the-aap/american-academy-of-pediatrics-equity-and-inclusion-efforts/code-of-conduct/" target="" data-testid="link-codeofconduct"> Code of Conduct </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> <li class="main-nav-menu-item contactus "> <div class="main-nav-menu-item-top"> <a class="" href="/en/pages/contact-us/" target="" data-testid="link-contactus"> Contact Us </a> </div> <ul class="mobile-header-context-link-list"> </ul> </li> </ul> <ul class="unlisted col-sm-6"> </ul> </div> <ul class="footer-links-social unlisted"> <li class="main-nav-menu-item"> <a href="https://www.facebook.com/AmerAcadPeds" target="_blank"> <svg> <use xlink:href="#facebook-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.linkedin.com/company/american-academy-of-pediatrics" target="_blank"> <svg> <use xlink:href="#linkedin-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://twitter.com/AmerAcadPeds" target="_blank"> <svg> <use xlink:href="#twitter-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.youtube.com/channel/UClR8YIQX5Fb8J2wmsUKLhvQ" target="_blank"> <svg> <use xlink:href="#youtube-icon"></use> </svg> </a> </li> <li class="main-nav-menu-item"> <a href="https://www.instagram.com/ameracadpeds/" target="_blank"> <svg> <use xlink:href="#instagram-icon"></use> </svg> </a> </li> </ul> </div> </div> <div class="footer-copyright-wrapper"> <div class="footer-copyright"> <p class="paragraph-caption">© Copyright 2024 American Academy of Pediatrics. All rights reserved.</p> </div> </div> </footer> <a class="feedback-form-link" target="_blank" href="/en/forms/feedback-form/"> Feedback Form </a> <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.5.18/webfont.js"></script> <script> WebFont.load({ google: { families: ['Alegreya Sans:400,400italic,700,700italic', 'Alegreya:400,400italic,700,700italic'] } }); </script> <script src="https://players.brightcove.net/6056665225001/default_default/index.js"></script> <script src='/Bundles/js/common-bundle.js?v=a99dc922fdeee0f0be9b7e610920b0b2b3609c493afbd24db398782b8ec36907'></script> <script src='/Bundles/js/global-bundle.js?v=ffb0def9c7d266bafde611283b5de61e1d091a7c546960a8832b86692eacb4b9'></script> <script src='/Bundles/js/date-picker-bundle.js?v=5607472c79b4b8cf1231917918b9acd002bc7181ff9f2f508d9d2b29ce5f2b3c'></script> <script src='/Bundles/js/shop-carousel-bundle.js?v=e0b81793f12e054ce9f69548a6b10fe1db02a9df3ca353bd3723b471ae686e4c'></script> <script src='/Bundles/js/content-page-google-analytics-bundle.js?v=19e841c3eaf293a969f34673ac96c9095ea2b5216f650c5c0f9626dc80188b16'></script> <footer> <script defer="true" src="/Util/Find/epi-util/find.js"></script> <script> document.addEventListener('DOMContentLoaded',function(){if(typeof FindApi === 'function'){var api = new FindApi();api.setApplicationUrl('/');api.setServiceApiBaseUrl('/find_v2/');api.processEventFromCurrentUri();api.bindWindowEvents();api.bindAClickEvent();api.sendBufferedEvents();}}) </script> </footer> <!-- Custom Lucky Orange User Data --> </body> </html>