1<!DOCTYPE html> 2<html class="no-js" lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"NRJS-243b9dcdd9befd954e4","applicationID":"1030851535","transactionName":"JVddFRZYX1tSFhdEUAFdQE4XX1xA","queueTime":0,"applicationTime":123,"agent":""}</script>
vendor: 1 bytes, line 7
7
8<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1134260961",accountID:"3672290",trustKey:"3672290",xpid:"VwAAU1RaCBABVFJSDwQGU1cE",licenseKey:"NRJS-243b9dcdd9befd954e4",applicationID:"1030851535",browserID:"1134260961"};;/*! For license information please see nr-loader-spa-1.323.0.min.js.LICENSE.txt */ 9(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.323.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
9e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
9const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
9if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
9o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=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)o.call(e,n)&&(t[n]=e[n])}
9(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
9;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.323.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.323.0.PROD:";r.l=(n,i,s,a)=>
9{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-ORjtmy+nQMgxbu0os8+oTRa5sPzbinyuWSvpZrrstVLIaHofRRlfODdH+oUmkIgeQpM+vPf3vG/4RzvCsFVh1A==",249:"sha512-o7+K6xC0z3TqynjVxpd+jgiSgqy8rrPeRcUSqt5J0Rqg5Su5CycLMYfpwiM3WBCHiNDrG5aZoXJQ6HRc335XYQ==",212:"sha512-kRvBt1IYQDBnClTEWNaE8sDFqbXXM3Vdyf972Uf4MFbJxl7u3KmdO+jdB1H4achPEoT9YtNXHswaESey6sCH0A==",238:"sha512-U5EGmyYbFVR2UMNAuZJ7fTgVVtPa5b8RPMySDwXo7z3frRdkUJ2x1VAQTLQCeBab8VlGVGRV8FiSHIn/pwN72A=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.323.0.PROD"]=self["webpackChunk:NRBA-1.323.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
9ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
9{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
9null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
9dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
9imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)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,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
9return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s,a=(0,ye.ZF)(),o=(0,ye.el)(),c=Date.now();this.agentRef.runtime?.timeKeeper?.ready&&(s=Math.floor(this.agentRef.runtime.timeKeeper.correctAbsoluteTimestamp(c)));var d={spanId:a,traceId:o,timestamp:c,timestampCorrected:s};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(d.traceContextParentHeader=this.generateTraceContextParentHeader(a,o),d.traceContextStateHeader=this.generateTraceContextStateHeader(a,s??c,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(d.newrelicHeader=this.generateTraceHeader(a,o,s??c,r,n,i)),d}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,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
9!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(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 h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(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 R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
9if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
9);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
9class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
9h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
9 10 11 12 <title>JP Tree Service | Affordable Tree Removal & Trimming in Upper Darby, PA</title> 13 <meta name="description" content="JP Tree Service proudly serves Upper Darby, PA with professional, affordable tree removal, trimming, and maintenance. Fully insured and trusted by the local community. Call (610) 507-2386 today."> 14 <meta name="keywords" content="tree service Upper Darby PA, JP Tree Service, tree removal Upper Darby, affordable tree trimming, local tree care, professional tree maintenance, stump removal Upper Darby"> 15 16 17 <meta property="og:description" content="JP Tree Service proudly serves Upper Darby, PA with professional, affordable tree removal, trimming, and maintenance. Fully insured and trusted by the local community. Call (610) 507-2386 today." /><meta property="og:title" content="JP Tree Service | Affordable Tree Removal & Trimming in Upper Darby, PA" /><meta property="og:type" content="website" /><meta property="og:url" content="https://www.jptreeservice.net/" /><meta property="og:site_name" content="JP Tree Service" /> 18 19 <link rel="preconnect" href="https://fonts.googleapis.com"> 20 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 21 <link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&family=Bevan&family=Roboto+Slab:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet"> 22 23 <link rel="stylesheet" href="/assets/site-a8f902e6c8187fd4cc60b5b6c7beccc59f839132351bebadc28ad843ce04e7b7.css" /> 24 <link rel="stylesheet" href="/system/sites/104206/custom.css?t=1746392718" /> 25 26 <!--[if (gte IE 10)|!(IE)]><!--> 27 <!--<![endif]--> 28 29 30 <link rel="icon" type="image/x-icon" href="https://d14tal8bchn59o.cloudfront.net/f4hXNiokyyIY_nEz-JQa-LUn6Phwqg0VsTbeNbPA65I/fn:911cafe2-a3f4-4c41-8573-f400b708336a/plain/s3://multisiteadmin-production/ofxiazxc5qof1ce8zhgpt5a6wma7" /> 31
31<script src="/assets/modernizr-5b260783c5e23a62a2a4a31304b93643fce78a1291ee747b60a91c23f01c0f3b.js"></script>
31 32
32<script src="/assets/respond.js/dest/respond.src-cecde35ca5b295ed289797f910fc62fe80029112755562799acab5928f1e8d47.js"></script>
32 33 <meta name="csrf-param" content="authenticity_token" /> 34<meta name="csrf-token" content="91ZRMv4yMFpVcPQSFD5DiojHKqLMS8yosleVzVP5qK6jiQR33tTK09NwpnOgr1uhH34__XSxFLsfftv_5TZNZw" /> 35 <link rel="canonical" href="https://www.jptreeservice.net/"> 36 37 38 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 68 bytes, lines 38-39
38 39 <script async src="https://www.googletagmanager.com/gtag/js?id=
39G-183KX7JDET
vendor: 16 bytes, lines 39-40
39"></script> 40
40<script> 41
vendor: 146 bytes, lines 41-45
41window.dataLayer = window.dataLayer || []; 42 function gtag(){dataLayer.push(arguments);} 43 gtag('js', new Date()); 44 45 gtag('config', '
45G-183KX7JDET
vendor: 9 bytes, lines 45-47
45'); 46 47
47</script>
47 48 49 <meta name="google-site-verification" content="Jgw1q09aL_xufd641lE7V9SI-rvgyIffTHKL639kcj4" /> 50<section id="jp-header-2026"> 51 <style> 52 header.primary-header{display:none !important;} 53 54 #jp-header-2026, 55 #jp-header-2026 *{box-sizing:border-box;} 56 57 #jp-header-2026{ 58 --green:#1f7a2e; 59 --green2:#116125; 60 --ink:#0c1b10; 61 --text:#0f172a; 62 --card:#f6faf6; 63 --line:rgba(2,6,23,.12); 64 font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif; 65 } 66 67 #jp-header-2026 .jp-header{ 68 position:sticky; 69 top:0; 70 z-index:99999; 71 background:rgba(255,255,255,.94); 72 backdrop-filter:blur(10px); 73 border-bottom:1px solid var(--line); 74 } 75 76 #jp-header-2026 .jp-wrap{ 77 max-width:1200px; 78 margin:0 auto; 79 padding:12px 14px; 80 display:flex; 81 align-items:center; 82 justify-content:space-between; 83 gap:14px; 84 } 85 86 #jp-header-2026 .jp-brand{ 87 display:flex; 88 align-items:center; 89 gap:12px; 90 min-width:220px; 91 text-decoration:none; 92 } 93 94 #jp-header-2026 .jp-brand img{ 95 width:64px; 96 height:64px; 97 object-fit:contain; 98 } 99 100 #jp-header-2026 .jp-btxt{ 101 display:flex; 102 flex-direction:column; 103 line-height:1.05; 104 } 105 106 #jp-header-2026 .jp-name{ 107 font-weight:1000; 108 letter-spacing:.3px; 109 color:var(--ink); 110 font-size:18px; 111 } 112 113 #jp-header-2026 .jp-sub{ 114 font-weight:800; 115 color:rgba(17,24,39,.70); 116 font-size:12px; 117 margin-top:3px; 118 } 119 120 #jp-header-2026 .jp-nav{ 121 display:flex; 122 gap:10px; 123 align-items:center; 124 flex-wrap:wrap; 125 justify-content:center; 126 } 127 128 #jp-header-2026 .jp-nav a{ 129 text-decoration:none; 130 color:var(--text); 131 font-weight:900; 132 padding:10px 12px; 133 border-radius:12px; 134 border:1px solid transparent; 135 transition:all .18s ease; 136 } 137 138 #jp-header-2026 .jp-nav a:hover{ 139 background:var(--card); 140 border-color:rgba(17,24,39,.10); 141 } 142 143 #jp-header-2026 .jp-actions{ 144 display:flex; 145 align-items:center; 146 gap:10px; 147 justify-content:flex-end; 148 min-width:260px; 149 } 150 151 #jp-header-2026 .jp-btn{ 152 appearance:none; 153 border:none; 154 cursor:pointer; 155 font-weight:1000; 156 border-radius:12px; 157 padding:10px 14px; 158 text-decoration:none; 159 display:inline-flex; 160 align-items:center; 161 gap:10px; 162 transition:transform .08s ease, box-shadow .15s ease; 163 white-space:nowrap; 164 } 165 166 #jp-header-2026 .jp-btn:active{transform:translateY(1px);} 167 168 #jp-header-2026 .jp-btnCoupon{ 169 background:linear-gradient(180deg,#ffca28,#ffb300); 170 color:#121212; 171 box-shadow:0 14px 26px rgba(255,179,0,.24); 172 } 173 174 #jp-header-2026 .jp-btnCall{ 175 background:linear-gradient(180deg,var(--green),var(--green2)); 176 color:#fff; 177 box-shadow:0 14px 26px rgba(17,97,37,.22); 178 } 179 180 #jp-header-2026 .jp-burger{ 181 display:none; 182 width:46px; 183 height:46px; 184 border-radius:12px; 185 border:1px solid rgba(2,6,23,.14); 186 background:#fff; 187 cursor:pointer; 188 font-size:18px; 189 font-weight:900; 190 line-height:1; 191 } 192 193 #jp-header-2026 .jp-drawer{ 194 display:none; 195 padding:10px 14px 16px; 196 border-top:1px solid rgba(2,6,23,.10); 197 background:#fff; 198 } 199 200 #jp-header-2026 .jp-drawer a{ 201 display:block; 202 text-decoration:none; 203 color:var(--text); 204 font-weight:950; 205 padding:12px 10px; 206 border-radius:12px; 207 border:1px solid rgba(2,6,23,.10); 208 background:#f8fafc; 209 margin-top:10px; 210 } 211 212 #jp-header-2026 .jp-drawer .jp-drawerBtns{ 213 display:flex; 214 gap:10px; 215 flex-wrap:wrap; 216 margin-top:12px; 217 } 218 219 #jp-header-2026 .jp-drawer .jp-drawerBtns a, 220 #jp-header-2026 .jp-drawer .jp-drawerBtns button{ 221 flex:1 1 180px; 222 justify-content:center; 223 } 224 225 .jp-floating-call-button{ 226 position:fixed; 227 bottom:25px; 228 right:20px; 229 background:#28a745; 230 color:#fff; 231 padding:12px 20px; 232 font-size:16px; 233 font-family:'Segoe UI',sans-serif; 234 border-radius:30px; 235 box-shadow:0 0 12px rgba(0,0,0,.4); 236 text-decoration:none; 237 z-index:9999; 238 transition:transform .3s ease, background .3s ease; 239 animation:jpGlowPulse 2s infinite; 240 } 241 242 .jp-floating-call-button:hover{ 243 background:#218838; 244 transform:scale(1.05); 245 } 246 247 @keyframes jpGlowPulse{ 248 0%{box-shadow:0 0 12px rgba(40,167,69,.7);} 249 50%{box-shadow:0 0 18px rgba(40,167,69,1);} 250 100%{box-shadow:0 0 12px rgba(40,167,69,.7);} 251 } 252 253 #jp-header-2026 #jpCouponModal{ 254 position:fixed; 255 inset:0; 256 z-index:999999; 257 display:none; 258 } 259
260 #jp-header-2026 #jpCouponModal.jp-show{display:block;} 261 262 #jp-header-2026 .jpCoupon-backdrop{ 263 position:absolute; 264 inset:0; 265 background:rgba(0,0,0,.62); 266 backdrop-filter:blur(8px); 267 } 268 269 #jp-header-2026 .jpCoupon-card{ 270 position:relative; 271 width:min(920px,calc(100% - 24px)); 272 max-height:calc(100vh - 24px); 273 margin:12px auto; 274 background:linear-gradient(180deg,#ffffff 0%,#f7faf7 100%); 275 border-radius:18px; 276 box-shadow:0 30px 90px rgba(0,0,0,.35); 277 overflow:hidden; 278 display:flex; 279 flex-direction:column; 280 animation:jpPop .22s ease-out; 281 } 282 283 @keyframes jpPop{ 284 from{transform:translateY(10px) scale(.985);opacity:0;} 285 to{transform:translateY(0) scale(1);opacity:1;} 286 } 287 288 #jp-header-2026 .jpCoupon-x{ 289 position:absolute; 290 top:10px; 291 right:10px; 292 width:42px; 293 height:42px; 294 border-radius:12px; 295 border:1px solid rgba(0,0,0,.08); 296 background:rgba(255,255,255,.85); 297 cursor:pointer; 298 font-size:18px; 299 display:grid; 300 place-items:center; 301 } 302 303 #jp-header-2026 .jpCoupon-head{ 304 padding:18px 18px 12px; 305 text-align:center; 306 } 307 308 #jp-header-2026 .jpCoupon-badge{ 309 display:inline-block; 310 padding:7px 12px; 311 border-radius:999px; 312 background:rgba(46,125,50,.10); 313 color:#1b5e20; 314 font-weight:900; 315 letter-spacing:.6px; 316 font-size:12px; 317 border:1px solid rgba(46,125,50,.18); 318 margin-bottom:10px; 319 } 320 321 #jp-header-2026 .jpCoupon-head h3{ 322 margin:0; 323 font-size:clamp(20px,2.4vw,30px); 324 color:#0f2a14; 325 } 326 327 #jp-header-2026 .jpCoupon-head p{ 328 margin:8px 0 0; 329 color:rgba(15,42,20,.75); 330 font-size:14px; 331 } 332 333 #jp-header-2026 .jpCoupon-imgWrap{ 334 padding:0 16px 14px; 335 display:flex; 336 justify-content:center; 337 } 338 339 #jp-header-2026 .jpCoupon-imgWrap img{ 340 width:100%; 341 max-width:820px; 342 height:auto; 343 border-radius:14px; 344 border:1px solid rgba(0,0,0,.08); 345 box-shadow:0 14px 40px rgba(0,0,0,.10); 346 background:#fff; 347 } 348 349 #jp-header-2026 .jpCoupon-actions{ 350 padding:0 18px 14px; 351 display:flex; 352 gap:12px; 353 justify-content:center; 354 flex-wrap:wrap; 355 } 356 357 #jp-header-2026 .jpCoupon-btn{ 358 appearance:none; 359 border:none; 360 cursor:pointer; 361 text-decoration:none; 362 font-weight:1000; 363 border-radius:12px; 364 padding:12px 16px; 365 min-width:190px; 366 text-align:center; 367 transition:transform .08s ease, box-shadow .15s ease; 368 } 369 370 #jp-header-2026 .jpCoupon-btnPrimary{ 371 background:linear-gradient(180deg,#ffca28 0%,#ffb300 100%); 372 color:#121212; 373 box-shadow:0 14px 26px rgba(255,179,0,.25); 374 } 375 376 #jp-header-2026 .jpCoupon-btnGhost{ 377 background:#ffffff; 378 border:1px solid rgba(0,0,0,.14); 379 color:#1f2937; 380 } 381 382 #jp-header-2026 .jpCoupon-foot{ 383 padding:12px 18px 18px; 384 border-top:1px solid rgba(0,0,0,.08); 385 display:flex; 386 justify-content:space-between; 387 align-items:center; 388 gap:12px; 389 flex-wrap:wrap; 390 } 391 392 #jp-header-2026 .jpCoupon-tip{ 393 color:rgba(15,42,20,.80); 394 font-size:13px; 395 } 396 397 #jp-header-2026 .jpCoupon-call{ 398 display:inline-block; 399 padding:10px 14px; 400 border-radius:999px; 401 background:rgba(46,125,50,.10); 402 border:1px solid rgba(46,125,50,.20); 403 color:#1b5e20; 404 font-weight:1000; 405 text-decoration:none; 406 white-space:nowrap; 407 } 408 409 @media (max-width:980px){ 410 #jp-header-2026 .jp-nav{display:none;} 411 #jp-header-2026 .jp-actions{min-width:auto;} 412 #jp-header-2026 .jp-burger{display:inline-grid;place-items:center;} 413 #jp-header-2026 .jp-btnCall{display:none;} 414 } 415 416 @media (max-width:520px){ 417 #jp-header-2026 .jp-brand img{width:56px;height:56px;} 418 #jp-header-2026 .jp-name{font-size:16px;} 419 #jp-header-2026 .jp-sub{font-size:11px;} 420 .jp-floating-call-button{ 421 font-size:14px; 422 padding:10px 16px; 423 bottom:20px; 424 right:15px; 425 } 426 #jp-header-2026 .jpCoupon-btn{min-width:100%;} 427 #jp-header-2026 .jpCoupon-foot{justify-content:center;text-align:center;} 428 } 429 </style> 430 431 <div class="jp-header"> 432 <div class="jp-wrap"> 433 <a class="jp-brand" href="/"> 434 <img src="https://besuretocook.org/wp-content/uploads/2026/08/911cafe2-a3f4-4c41-8573-f400b708336a_original-3.webp" alt="JP Tree Service logo">
435 <span class="jp-btxt"> 436 <span class="jp-name">JP Tree Service</span> 437 <span class="jp-sub">Affordable ⢠Fast ⢠Fully Insured</span> 438 </span> 439 </a> 440 441 <nav class="jp-nav" aria-label="JP Tree Service Navigation"> 442 <a href="/">Home</a> 443 <a href="/about-us">About</a> 444 <a href="/our-services">Services</a> 445 <a href="/gallery">Gallery</a> 446 <a href="/reviews">Reviews</a> 447 <a href="/contact-us">Contact</a> 448 </nav> 449 450 <div class="jp-actions"> 451 <button class="jp-btn jp-btnCoupon" type="button" id="jpOpenCoupon">Book & Save</button> 452 <a class="jp-btn jp-btnCall" href="tel:+16105072386">ð Call Now</a> 453 <button class="jp-burger" type="button" id="jpBurger" aria-label="Open Menu">â°</button> 454 </div> 455 </div> 456 457 <div class="jp-drawer" id="jpDrawer"> 458 <a href="/">Home</a> 459 <a href="/about-us">About</a> 460 <a href="/our-services">Services</a> 461 <a href="/gallery">Gallery</a> 462 <a href="/reviews">Reviews</a> 463 <a href="/contact-us">Contact</a> 464 465 <div class="jp-drawerBtns"> 466 <button class="jp-btn jp-btnCoupon" type="button" id="jpOpenCoupon2">ð° Tree Service Deals</button> 467 <a class="jp-btn jp-btnCall" href="tel:+16105072386">ð Call Now</a> 468 </div> 469 </div> 470 </div> 471 472 <a href="tel:6105072386" class="jp-floating-call-button" title="Call JP Tree Service">ð Call Us</a> 473 474 <div id="jpCouponModal" aria-hidden="true"> 475 <div class="jpCoupon-backdrop" data-close="1"></div> 476 477 <div class="jpCoupon-card" role="dialog" aria-modal="true" aria-label="JP Tree Service Coupon"> 478 <button class="jpCoupon-x" type="button" aria-label="Close coupon" data-close="1">â</button> 479 480 <div class="jpCoupon-head"> 481 <div class="jpCoupon-badge">LIMITED TIME COUPONS</div> 482 <h3>Download or Screenshot This Coupon</h3> 483 <p>Show this coupon when you book. Phone users can screenshot it.</p> 484 </div> 485 486 <div class="jpCoupon-imgWrap"> 487 <img 488 id="jpCouponImg" 489 src="https://d14tal8bchn59o.cloudfront.net/2AJS3y4kcaC4oXxMH2WcAgbtLePnOTkjXcTj4BdbP2Q/w:1920/plain/https://02f0a56ef46d93f03c90-22ac5f107621879d5667e0d7ed595bdb.ssl.cf2.rackcdn.com/sites/104206/photos/23785287/ChatGPT_Image_Mar_5__2026__03_19_30_PM_original.png" 490 alt="JP Tree Service coupon" 491 > 492 </div> 493 494 <div class="jpCoupon-actions"> 495 <a 496 class="jpCoupon-btn jpCoupon-btnPrimary" 497 href="https://d14tal8bchn59o.cloudfront.net/2AJS3y4kcaC4oXxMH2WcAgbtLePnOTkjXcTj4BdbP2Q/w:1920/plain/https://02f0a56ef46d93f03c90-22ac5f107621879d5667e0d7ed595bdb.ssl.cf2.rackcdn.com/sites/104206/photos/23785287/ChatGPT_Image_Mar_5__2026__03_19_30_PM_original.png" 498 download="JP-Tree-Service-Coupon.png" 499 target="_blank" 500 rel="noopener" 501 >Download Coupon</a> 502 503 <button class="jpCoupon-btn jpCoupon-btnGhost" type="button" data-close="1">Not Now</button> 504 </div> 505 506 <div class="jpCoupon-foot"> 507 <div class="jpCoupon-tip"><strong>Tip:</strong> Screenshot it on your phone.</div> 508 <a class="jpCoupon-call" href="tel:+16105072386">Call: (610) 507-2386</a> 509 </div> 510 </div> 511 </div> 512 513
513<script> 514 (function(){ 515 var burger = document.getElementById("jpBurger"); 516 var drawer = document.getElementById("jpDrawer"); 517 var modal = document.getElementById("jpCouponModal"); 518 var open1 = document.getElementById("jpOpenCoupon"); 519 var open2 = document.getElementById("jpOpenCoupon2"); 520 521 function toggleDrawer(){ 522 if(!drawer) return; 523 drawer.style.display = drawer.style.display === "block" ? "none" : "block"; 524 } 525 526 function openModal(){ 527 if(!modal) return; 528 modal.classList.add("jp-show"); 529 modal.setAttribute("aria-hidden","false"); 530 document.documentElement.style.overflow = "hidden"; 531 } 532 533 function closeModal(){ 534 if(!modal) return; 535 modal.classList.remove("jp-show"); 536 modal.setAttribute("aria-hidden","true"); 537 document.documentElement.style.overflow = ""; 538 } 539 540 if(burger){ 541 burger.addEventListener("click", toggleDrawer); 542 } 543 544 if(open1){ 545 open1.addEventListener("click", function(){ 546 openModal(); 547 if(drawer) drawer.style.display = "none"; 548 }); 549 } 550 551 if(open2){ 552 open2.addEventListener("click", function(){ 553 openModal(); 554 if(drawer) drawer.style.display = "none"; 555 }); 556 } 557 558 document.addEventListener("click", function(e){ 559 var t = e.target; 560 if(!t) return; 561 if(t.matches("[data-close='1']") || (t.closest && t.closest("[data-close='1']"))){ 562 closeModal(); 563 } 564 }); 565 566 document.addEventListener("keydown", function(e){ 567 if(e.key === "Escape"){ 568 closeModal(); 569 } 570 }); 571 })(); 572 </script>
572 573</section> 574 </head> 575 576 <body class=" " data-page-id="1964140"> 577 <a href="#main" class="skip-to-content">Skip to content</a> 578 579 580 581 582 583 <div class="site-container"> 584 <header class="primary-header layout-inline_nav branding-style-logo-text "> 585 <style> 586 :root { 587 --ss-header-background-color: #ffffff; 588 --ss-header-background-alpha: calc(100% * 1.0); 589 --ss-header-padding: 10px; 590 --ss-header-alignment: center; 591 --ss-header-logo-height: 123px; 592 --ss-header-title-color: var(--ss-color-70528); 593 --ss-header-title-font-family: 'Bevan', serif; 594 --ss-header-title-font-size: 33px; 595 --ss-header-tagline-color: var(--ss-color-70529); 596 --ss-header-tagline-font-family: 'Bevan', serif; 597 --ss-header-tagline-font-size: 18px; 598 --ss-navigation-1-color: var(--ss-color-70528); 599 --ss-navigation-2-color: #ffffff; 600 } 601 </style> 602 603 <div class="primary-header__content"> 604 605 606 607 <a class="branding" href="/"> 608 <img alt="JP Tree Service" src="https://d14tal8bchn59o.cloudfront.net/3lmGpicZGclu4KtSGUSf20QLNBANUolL5AulKFnGu_Q/w:1920/fn:911cafe2-a3f4-4c41-8573-f400b708336a/plain/s3://multisiteadmin-production/zno87ux2bnm1ty787ge0d25iylsd" /> 609 610</a> 611 <nav class="primary-navigation" aria-label="Site"> 612 <div class="inner-wrap"> 613 614 <button type="button" aria-label="View Menu" title="View Menu" class="menu-toggle "></button> 615 616 <ul class="page-listing" data-behavior="site-navigation"> 617 <li> 618 619 620 <a class="active" href="/"> 621 <div> 622 Home 623 624 </div> 625</a> 626 </li> 627 <li> 628 629 630 <a class="" href="/about-us"> 631 <div> 632 About Us 633 634 </div> 635</a> 636 </li> 637 <li> 638 639 640 <a class="" href="/our-services"> 641 <div> 642 Our Services 643 644 </div> 645</a> 646 </li> 647 <li> 648 649 650 <a class="" href="/gallery"> 651 <div> 652 Gallery 653 654 </div> 655</a> 656 </li> 657 <li> 658 659 660 <a class="" href="/reviews"> 661 <div> 662 Reviews 663 664 </div> 665</a> 666 </li> 667 <li> 668 669 670 <a class="" href="/contact-us"> 671 <div> 672 Contact Us 673 674 </div> 675</a> 676 </li> 677 678 </ul> 679 680 681 </div> 682</nav> 683 684 685 </div> 686 687 688 <ul class="location-quick-links clearfix"> 689 690 <li> 691 <a title="Call us" href="tel:+16105072386"> 692 <i class="fas fa-phone"></i> 693 Call 694</a> </li> 695 696 697 <li> 698 <a title="View on a map" target="_blank" aria-label="View Map (opens in new window)" data-track="/a/track_map_view" href="https://maps.google.com/maps?q=17+Elm+Ave%2C+Upper+Darby%2C+PA+19082&z=15&mrt=loc"> 699 <i class="fas fa-map-marker-alt"></i> 700 Map 701</a> </li> 702 703 <li> 704 <a title="View hours" data-modal="true" href="/a/locations/hours"> 705 <i class="far fa-clock"></i> 706 Hours 707</a> </li> 708 709 710 <li> 711 <a title="Contact us" data-modal="true" href="/a/locations/contact/191639?return_to=%2F"> 712 <i class="fas fa-envelope"></i> 713 Email 714</a> </li> 715 716 </ul> 717 718</header> 719 720 721 <main class="posts-container" id="main"> 722 723 724 725 726<div class="posts"> 727 728 729<div class="post-container"> 730 <article class="post post-html max-width" id="post_12958532" data-id="12958532" data-type="Html"> 731 732 <div class="post-body"> 733 <article class="post post-html full-width visible" id="post_11611095" data-id="11611095" data-type="Html"> 734 <div class="post-body"> 735 736 <section class="jp-home-hero"> 737 738 <div class="jp-hero-overlay"></div> 739 740 <div class="jp-hero-container"> 741 742 <!-- LEFT SIDE: HERO CONTENT --> 743 <div class="jp-content-column"> 744 745 <div class="jp-hero-badge"> 746 Affordable ⢠Fast Response ⢠Fully Insured 747 </div> 748 749 <h1>Tree Removal & Tree Service in Upper Darby, PA</h1> 750 751 <p class="jp-hero-sub"> 752 JP Tree Service provides professional tree removal, tree trimming, stump grinding, storm cleanup, and routine tree care in Upper Darby, PA. We help homeowners protect their property with safe, affordable, and dependable tree services. 753 </p> 754 755 <div class="jp-hero-cta"> 756 757 <a class="jp-btn jp-btn-primary" href="tel:6105072386"> 758 ð Call (610) 507-2386 759 </a> 760 761 <a class="jp-btn jp-btn-secondary" href="#jp-estimate"> 762 ð³ Get a Free Estimate 763 </a> 764 765 </div> 766 767 <div class="jp-trust-grid"> 768 769 <div class="jp-trust-item">
770 <span class="jp-check">â</span> 771 <div> 772 <strong>Free Estimates</strong> 773 <small>Know what to expect before work begins.</small> 774 </div> 775 </div> 776 777 <div class="jp-trust-item"> 778 <span class="jp-check">â</span> 779 <div> 780 <strong>Emergency Tree Service</strong> 781 <small>Help with fallen, damaged, or hazardous trees.</small> 782 </div> 783 </div> 784 785 <div class="jp-trust-item"> 786 <span class="jp-check">â</span> 787 <div> 788 <strong>Local Upper Darby Crew</strong> 789 <small>Professional tree service in your local area.</small> 790 </div> 791 </div> 792 793 <div class="jp-trust-item"> 794 <span class="jp-check">â</span> 795 <div> 796 <strong>Safe & Professional</strong> 797 <small>Property safety comes first on every project.</small> 798 </div> 799 </div> 800 801 </div> 802 803 <div class="jp-services-line"> 804 <strong>Our Services:</strong> 805 Tree Removal ⢠Tree Trimming ⢠Stump Grinding ⢠Storm Damage Cleanup ⢠Roof Line Clearing 806 </div> 807 808 </div> 809 810 811 <!-- RIGHT SIDE: CONTACT FORM --> 812 <div class="jp-contact-column" id="jp-estimate"> 813 814 <div class="jp-form-card"> 815 816 <div class="jp-form-heading"> 817 818 <span class="jp-form-mini"> 819 FAST ⢠FREE ⢠NO OBLIGATION 820 </span> 821 822 <h2>Get Your Free Quote For Tree Removal & Pruning Services</h2> 823 824 <p> 825 Let us know what you need help with and a member of our local team will get back to you as soon as possible. 826 </p> 827 828 </div> 829 830 831 <div class="jp-form-wrap"> 832 833 <!-- Elfsight Contact Form --> 834
834<script src="https://elfsightcdn.com/platform.js" async></script>
834 835 836 <div class="elfsight-app-7f2da393-c592-4591-9b77-2d3da609ebb6"></div> 837 838 </div> 839 840 841 <div class="jp-form-call"> 842 843 <span>Prefer to speak with someone?</span> 844 845 <a href="tel:6105072386"> 846 ð (610) 507-2386 847 </a> 848 849 </div> 850 851 </div> 852 853 </div> 854 855 </div> 856 857 858 <!-- BOTTOM TRUST BAR --> 859 <div class="jp-bottom-bar"> 860 861 <div> 862 <strong>Need Tree Service?</strong> 863 Request your free estimate today. 864 </div> 865 866 <a href="tel:6105072386"> 867 Call Now â 868 </a> 869 870 </div> 871 872 </section> 873 874 </div> 875 876 877 <style> 878 879 /* ============================== 880 RESET 881 ============================== */ 882 883 #post_11611095{ 884 --ss-post-vertical-spacing:0px; 885 --ss-post-background-color:#ffffff; 886 margin:0; 887 padding:0; 888 } 889 890 #post_11611095 *{ 891 box-sizing:border-box; 892 } 893 894 895 /* ============================== 896 MAIN HERO 897 ============================== */ 898 899 #post_11611095 .jp-home-hero{ 900 width:100vw; 901 position:relative; 902 left:50%; 903 transform:translateX(-50%); 904 overflow:hidden; 905 906 padding:55px 22px 0; 907 908 color:#ffffff; 909 910 background: 911 linear-gradient( 912 110deg, 913 rgba(5,25,10,.94) 0%, 914 rgba(8,39,17,.88) 45%, 915 rgba(0,0,0,.66) 100% 916 ), 917 url('https://besuretocook.org/wp-content/uploads/2026/08/2022-09-05_original.webp') 918 center center / cover no-repeat; 919 } 920 921 922 #post_11611095 .jp-hero-overlay{ 923 position:absolute; 924 inset:0; 925 926 pointer-events:none; 927 928 background: 929 radial-gradient( 930 circle at 15% 20%, 931 rgba(75,190,90,.16), 932 transparent 32% 933 ), 934 radial-gradient( 935 circle at 90% 78%, 936 rgba(255,193,7,.12), 937 transparent 35% 938 ); 939 } 940 941 942 /* ============================== 943 DESKTOP LAYOUT 944 ============================== */ 945 946 #post_11611095 .jp-hero-container{ 947 position:relative; 948 z-index:2; 949 950 width:100%; 951 max-width:1280px; 952 953 margin:0 auto; 954 955 display:grid; 956 957 grid-template-columns: 958 minmax(0,1.05fr) 959 minmax(390px,.95fr); 960 961 gap:55px; 962 963 align-items:center; 964 965 padding-bottom:55px; 966 } 967 968 969 #post_11611095 .jp-content-column{ 970 grid-column:1; 971 grid-row:1; 972 } 973 974 975 #post_11611095 .jp-contact-column{ 976 grid-column:2; 977 grid-row:1; 978 } 979 980 981 /* ============================== 982 HERO BADGE 983 ============================== */ 984 985 #post_11611095 .jp-hero-badge{ 986 display:inline-block; 987 988 margin:0 0 18px; 989 990 padding:9px 15px; 991 992 border-radius:999px; 993 994 background:rgba(255,255,255,.10); 995 996 border:1px solid rgba(255,255,255,.16); 997 998 color:#ffffff; 999 1000 font-size:.88rem; 1001 1002 font-weight:800; 1003 1004 letter-spacing:.03em; 1005 } 1006 1007 1008 /* ============================== 1009 H1 1010 ============================== */ 1011 1012 #post_11611095 h1{ 1013 max-width:720px; 1014 1015 margin:0 0 18px; 1016 1017 color:#ffffff; 1018 1019 font-size:clamp(2.5rem,4.5vw,4.4rem); 1020 1021 line-height:1.04; 1022 1023 font-weight:900; 1024 1025 letter-spacing:-.04em; 1026 } 1027 1028 1029 /* ============================== 1030 HERO TEXT 1031 ============================== */ 1032 1033 #post_11611095 .jp-hero-sub{ 1034 max-width:700px; 1035 1036 margin:0 0 27px; 1037 1038 color:rgba(255,255,255,.91); 1039 1040 font-size:1.08rem; 1041 1042 line-height:1.72; 1043 } 1044 1045 1046 /* ============================== 1047 BUTTONS 1048 ============================== */ 1049 1050 #post_11611095 .jp-hero-cta{ 1051 display:flex; 1052 1053 flex-wrap:wrap; 1054 1055 gap:12px; 1056 1057 margin-bottom:28px; 1058 } 1059 1060 1061 #post_11611095 .jp-btn{ 1062 display:inline-flex; 1063 1064 align-items:center; 1065 1066 justify-content:center; 1067 1068 min-height:54px; 1069 1070 padding:14px 23px; 1071 1072 border-radius:11px; 1073 1074 text-decoration:none !important; 1075 1076 font-size:1rem; 1077 1078 font-weight:900; 1079 1080 transition: 1081 transform .2s ease, 1082 box-shadow .2s ease, 1083 background .2s ease; 1084 } 1085 1086 1087 #post_11611095 .jp-btn:hover{ 1088 transform:translateY(-2px); 1089 } 1090 1091 1092 #post_11611095 .jp-btn-primary{ 1093 background:#2faf4b; 1094 1095 color:#ffffff !important; 1096 1097 box-shadow: 1098 0 14px 32px rgba(46,175,74,.26); 1099 } 1100 1101 1102 #post_11611095 .jp-btn-primary:hover{ 1103 background:#27953f; 1104 } 1105 1106 1107 #post_11611095 .jp-btn-secondary{ 1108 background:#ffc107; 1109 1110 color:#111111 !important; 1111 1112 box-shadow: 1113 0 14px 32px rgba(255,193,7,.20); 1114 } 1115 1116 1117 #post_11611095 .jp-btn-secondary:hover{ 1118 background:#dfa906; 1119 } 1120 1121 1122 /* ============================== 1123 TRUST GRID 1124 ============================== */ 1125 1126 #post_11611095 .jp-trust-grid{ 1127 display:grid; 1128 1129 grid-template-columns: 1130 repeat(2,minmax(0,1fr)); 1131 1132 gap:12px; 1133 1134 max-width:700px; 1135 1136 margin-bottom:24px; 1137 } 1138 1139 1140 #post_11611095 .jp-trust-item{ 1141 display:flex; 1142 1143 gap:11px; 1144 1145 align-items:flex-start; 1146 1147 padding:13px; 1148 1149 border-radius:11px; 1150 1151 background: 1152 rgba(255,255,255,.075); 1153 1154 border: 1155 1px solid rgba(255,255,255,.10); 1156 } 1157 1158 1159 #post_11611095 .jp-check{ 1160 display:flex; 1161 1162 align-items:center; 1163 1164 justify-content:center; 1165 1166 flex:0 0 25px; 1167 1168 width:25px; 1169 1170 height:25px; 1171 1172 border-radius:50%; 1173 1174 background:#2faf4b; 1175 1176 color:#ffffff; 1177 1178 font-size:.82rem; 1179 1180 font-weight:900; 1181 } 1182 1183 1184 #post_11611095 .jp-trust-item strong{ 1185 display:block; 1186 1187 margin-bottom:2px; 1188 1189 color:#ffffff; 1190 1191 font-size:.91rem; 1192 } 1193 1194 1195 #post_11611095 .jp-trust-item small{ 1196 display:block; 1197 1198 color:rgba(255,255,255,.71); 1199 1200 font-size:.77rem; 1201 1202 line-height:1.42; 1203 } 1204 1205 1206 /* ============================== 1207 SERVICE LINE 1208 ============================== */ 1209 1210 #post_11611095 .jp-services-line{ 1211 max-width:700px; 1212 1213 padding-top:17px; 1214 1215 border-top: 1216 1px solid rgba(255,255,255,.15); 1217 1218 color:rgba(255,255,255,.82); 1219 1220 font-size:.92rem; 1221 1222 line-height:1.7; 1223 } 1224 1225 1226 #post_11611095 .jp-services-line strong{ 1227 color:#ffffff; 1228 } 1229 1230 1231 /* ============================== 1232 CONTACT FORM CARD 1233 DARK SO WHITE ELFSIGHT FORM 1234 REMAINS VISIBLE 1235 ============================== */ 1236 1237 #post_11611095 .jp-contact-column{ 1238 position:relative; 1239 } 1240 1241 1242 #post_11611095 .jp-form-card{ 1243 width:100%; 1244 1245 max-width:510px; 1246 1247 margin-left:auto; 1248 1249 overflow:hidden; 1250 1251 border-radius:18px; 1252 1253 background: 1254 linear-gradient( 1255 160deg, 1256 rgba(10,48,22,.98), 1257 rgba(4,27,12,.99) 1258 ); 1259 1260 border: 1261 1px solid rgba(255,255,255,.15); 1262 1263 color:#ffffff; 1264 1265 box-shadow: 1266 0 30px 80px rgba(0,0,0,.43); 1267 } 1268 1269 1270 #post_11611095 .jp-form-card:before{ 1271 content:""; 1272 1273 display:block; 1274 1275 width:100%; 1276 1277 height:6px; 1278 1279 background: 1280 linear-gradient( 1281 90deg, 1282 #2faf4b, 1283 #ffc107 1284 ); 1285 } 1286 1287 1288 /* ============================== 1289 FORM HEADER 1290 ============================== */ 1291 1292 #post_11611095 .jp-form-heading{ 1293 padding:26px 25px 10px; 1294 1295 text-align:center; 1296 } 1297 1298 1299 #post_11611095 .jp-form-mini{ 1300 display:inline-block; 1301 1302 margin-bottom:9px; 1303 1304 color:#ffc107; 1305 1306 font-size:.74rem; 1307 1308 font-weight:900; 1309 1310 letter-spacing:.11em; 1311 } 1312 1313 1314 #post_11611095 .jp-form-heading h2{ 1315 margin:0 0 10px; 1316 1317 color:#ffffff; 1318 1319 font-size:1.68rem; 1320 1321 line-height:1.18; 1322 1323 font-weight:900; 1324 1325 letter-spacing:-.02em; 1326 } 1327 1328 1329 #post_11611095 .jp-form-heading p{ 1330 max-width:410px; 1331 1332 margin:0 auto; 1333 1334 color: 1335 rgba(255,255,255,.80); 1336 1337 font-size:.92rem; 1338 1339 line-height:1.55; 1340 } 1341 1342 1343 /* ============================== 1344 ELFSIGHT FORM AREA 1345 ============================== */ 1346 1347 #post_11611095 .jp-form-wrap{ 1348 width:100%; 1349 1350 min-height:320px; 1351 1352 padding:5px 10px 12px; 1353 } 1354 1355 1356 /* 1357 Make the embedded form area stay 1358 transparent so the dark green 1359 card shows behind it. 1360 */ 1361 1362 #post_11611095 .jp-form-wrap, 1363 #post_11611095 .jp-form-wrap > div{ 1364 background:transparent !important; 1365 } 1366 1367 1368 /* ============================== 1369 PHONE BAR 1370 ============================== */ 1371 1372 #post_11611095 .jp-form-call{ 1373 display:flex; 1374 1375 align-items:center; 1376 1377 justify-content:center; 1378 1379 flex-wrap:wrap; 1380 1381 gap:8px; 1382 1383 padding:16px 20px; 1384 1385 background: 1386 rgba(0,0,0,.22); 1387 1388 border-top: 1389 1px solid rgba(255,255,255,.12); 1390 1391 color: 1392 rgba(255,255,255,.80); 1393 1394 font-size:.88rem; 1395 1396 font-weight:600; 1397 } 1398 1399 1400 #post_11611095 .jp-form-call a{ 1401 color:#ffc107 !important; 1402 1403 text-decoration:none !important; 1404 1405 font-weight:900; 1406 } 1407 1408 1409 /* ============================== 1410 BOTTOM BAR 1411 ============================== */ 1412 1413 #post_11611095 .jp-bottom-bar{ 1414 position:relative; 1415 1416 z-index:2; 1417 1418 width:calc(100% + 44px); 1419 1420 margin-left:-22px; 1421 1422 display:flex; 1423 1424 align-items:center; 1425 1426 justify-content:center; 1427 1428 gap:38px; 1429 1430 padding:18px 22px; 1431 1432 background: 1433 rgba(3,18,7,.95); 1434 1435 border-top: 1436 1px solid rgba(255,255,255,.10); 1437 1438 color: 1439 rgba(255,255,255,.84); 1440 1441 text-align:center; 1442 1443 font-size:.94rem; 1444 } 1445 1446 1447 #post_11611095 .jp-bottom-bar strong{ 1448 color:#ffffff; 1449 } 1450 1451 1452 #post_11611095 .jp-bottom-bar a{ 1453 color:#ffc107 !important; 1454 1455 text-decoration:none !important; 1456 1457 font-weight:900; 1458 1459 white-space:nowrap; 1460 } 1461 1462 1463 /* ============================== 1464 TABLET 1465 ============================== */ 1466 1467 @media screen and (max-width:1050px){ 1468 1469 #post_11611095 .jp-hero-container{ 1470 grid-template-columns: 1471 minmax(0,1fr) 1472 minmax(350px,.9fr); 1473 1474 gap:30px; 1475 } 1476 1477 #post_11611095 h1{ 1478 font-size: 1479 clamp(2.2rem,4vw,3.5rem); 1480 } 1481 1482 } 1483 1484 1485 /* ============================== 1486 MOBILE 1487 CONTACT FORM SHOWS FIRST 1488 ============================== */ 1489 1490 @media screen and (max-width:800px){ 1491 1492 #post_11611095 .jp-home-hero{ 1493 padding: 1494 18px 15px 0; 1495 } 1496 1497 1498 #post_11611095 .jp-hero-container{ 1499 display:flex; 1500 1501 flex-direction:column; 1502 1503 gap:30px; 1504 1505 padding-bottom:35px; 1506 } 1507 1508 1509 #post_11611095 .jp-contact-column{ 1510 order:1; 1511 1512 width:100%; 1513 } 1514 1515 1516 #post_11611095 .jp-content-column{ 1517 order:2; 1518 1519 width:100%; 1520 1521 text-align:center; 1522 } 1523 1524 1525 #post_11611095 .jp-form-card{ 1526 max-width:590px; 1527 1528 margin:0 auto; 1529 } 1530 1531 1532 #post_11611095 .jp-form-heading{ 1533 padding: 1534 22px 18px 9px; 1535 } 1536 1537 1538 #post_11611095 .jp-form-heading h2{ 1539 font-size:1.45rem; 1540 } 1541 1542 1543 #post_11611095 .jp-form-heading p{ 1544 font-size:.88rem; 1545 } 1546 1547 1548 #post_11611095 .jp-form-wrap{ 1549 min-height:300px; 1550 } 1551 1552 1553 #post_11611095 .jp-hero-badge{ 1554 margin-bottom:14px; 1555 } 1556 1557 1558 #post_11611095 h1{ 1559 max-width:600px; 1560 1561 margin-left:auto; 1562 1563 margin-right:auto; 1564 1565 font-size:2.15rem; 1566 1567 line-height:1.08; 1568 } 1569 1570 1571 #post_11611095 .jp-hero-sub{ 1572 max-width:600px; 1573 1574 margin-left:auto; 1575 1576 margin-right:auto; 1577 1578 font-size:.98rem; 1579 1580 line-height:1.65; 1581 } 1582 1583 1584 #post_11611095 .jp-hero-cta{ 1585 justify-content:center; 1586 } 1587 1588 1589 #post_11611095 .jp-trust-grid{ 1590 max-width:600px; 1591 1592 margin-left:auto; 1593 1594 margin-right:auto; 1595 1596 text-align:left; 1597 } 1598 1599 1600 #post_11611095 .jp-services-line{ 1601 max-width:600px; 1602 1603 margin-left:auto; 1604 1605 margin-right:auto; 1606 } 1607 1608 } 1609 1610 1611 /* ============================== 1612 SMALL MOBILE 1613 ============================== */ 1614 1615 @media screen and (max-width:520px){ 1616 1617 #post_11611095 .jp-home-hero{ 1618 padding-top:12px; 1619 } 1620 1621 1622 #post_11611095 .jp-form-card{ 1623 border-radius:14px; 1624 } 1625 1626 1627 #post_11611095 .jp-form-heading h2{ 1628 font-size:1.35rem; 1629 } 1630 1631 1632 #post_11611095 h1{ 1633 font-size:1.9rem; 1634 } 1635 1636 1637 #post_11611095 .jp-hero-sub{ 1638 font-size:.95rem; 1639 } 1640 1641 1642 #post_11611095 .jp-hero-cta{ 1643 flex-direction:column; 1644 } 1645 1646 1647 #post_11611095 .jp-btn{ 1648 width:100%; 1649 } 1650 1651 1652 #post_11611095 .jp-trust-grid{ 1653 grid-template-columns:1fr; 1654 } 1655 1656 1657 #post_11611095 .jp-bottom-bar{ 1658 flex-direction:column; 1659 1660 gap:4px; 1661 1662 padding:15px; 1663 } 1664 1665 } 1666 1667 </style> 1668 1669</article> 1670 1671 </div> 1672 1673 1674 1675 <style> 1676 #post_12958532 { 1677 --ss-post-vertical-spacing: 0px; 1678 --ss-post-background-color: #ffffff; 1679 1680 1681 1682 1683 1684 } 1685 </style> 1686 1687</article></div> 1688 1689 1690<div class="post-container"> 1691 <article class="post post-html max-width" id="post_12549561" data-id="12549561" data-type="Html"> 1692 1693 <div class="post-body"> 1694 <section class="jp-about-section"> 1695 <div class="jp-about-wrap"> 1696 <div class="jp-about-intro">
1697 <span class="jp-about-eyebrow">Local ⢠Reliable ⢠Fully Insured</span> 1698 <h2>About JP Tree Service</h2> 1699 <p> 1700 JP Tree Service proudly provides professional tree service in Upper Darby, PA and nearby communities. With years of hands-on experience, our team specializes in tree removal, tree trimming, pruning, stump grinding, storm cleanup, and routine tree maintenance for residential and commercial properties. 1701 </p> 1702 <p> 1703 Our goal is to help property owners keep their trees safe, healthy, and well-maintained while protecting homes, roofs, driveways, and surrounding landscapes. Whether you need a hazardous tree removed, overgrown limbs trimmed back, or dependable emergency tree service after a storm, JP Tree Service is ready to help with fast response times and affordable pricing. 1704 </p> 1705 </div> 1706 1707 <div class="jp-about-grid"> 1708 <div class="jp-about-card"> 1709 <h3>Why Homeowners Choose Us</h3> 1710 <ul> 1711 <li>Experienced local tree care professionals</li> 1712 <li>Affordable pricing and free estimates</li> 1713 <li>Fully insured for your peace of mind</li> 1714 <li>Fast scheduling and dependable service</li> 1715 <li>Emergency storm damage tree service available</li> 1716 </ul> 1717 </div> 1718 1719 <div class="jp-about-card"> 1720 <h3>Services We Provide</h3> 1721 <ul> 1722 <li>Tree removal</li> 1723 <li>Tree trimming and pruning</li> 1724 <li>Stump grinding</li> 1725 <li>Roof line clearing</li> 1726 <li>Brush and log removal</li> 1727 </ul> 1728 </div> 1729 </div> 1730 </div> 1731 1732 <style> 1733 .jp-about-section{ 1734 background:linear-gradient(180deg, #f7f7f4 0%, #eef4ec 100%); 1735 padding:80px 20px; 1736 } 1737 1738 .jp-about-section *{ 1739 box-sizing:border-box; 1740 } 1741 1742 .jp-about-wrap{ 1743 max-width:1100px; 1744 margin:0 auto; 1745 } 1746 1747 .jp-about-intro{ 1748 max-width:900px; 1749 margin:0 auto 34px; 1750 text-align:center; 1751 } 1752 1753 .jp-about-eyebrow{ 1754 display:inline-block; 1755 margin-bottom:14px; 1756 padding:8px 14px; 1757 border-radius:999px; 1758 background:#e4efe2; 1759 color:#0d4b18; 1760 font-size:.9rem; 1761 font-weight:800; 1762 letter-spacing:.04em; 1763 text-transform:uppercase; 1764 } 1765 1766 .jp-about-section h2{ 1767 margin:0 0 18px; 1768 font-size:clamp(2rem, 4vw, 2.8rem); 1769 line-height:1.15; 1770 color:#0a3d0a; 1771 font-family:'Arial Black', sans-serif; 1772 } 1773 1774 .jp-about-intro p{ 1775 margin:0 auto 16px; 1776 font-size:1.08rem; 1777 line-height:1.85; 1778 color:#2f2f2f; 1779 font-family:'Segoe UI', sans-serif; 1780 max-width:880px; 1781 } 1782 1783 .jp-about-grid{ 1784 display:grid; 1785 grid-template-columns:repeat(2, minmax(0, 1fr)); 1786 gap:22px; 1787 align-items:stretch; 1788 } 1789 1790 .jp-about-card{ 1791 background:#ffffff; 1792 border:1px solid rgba(10,61,10,.08); 1793 border-radius:20px; 1794 padding:28px 24px; 1795 box-shadow:0 14px 40px rgba(0,0,0,0.06); 1796 text-align:left; 1797 } 1798 1799 .jp-about-card h3{ 1800 margin:0 0 14px; 1801 color:#0a3d0a; 1802 font-size:1.3rem; 1803 font-family:'Arial Black', sans-serif; 1804 } 1805 1806 .jp-about-card ul{ 1807 list-style:none; 1808 padding:0; 1809 margin:0; 1810 } 1811 1812 .jp-about-card li{ 1813 position:relative; 1814 padding:0 0 0 24px; 1815 margin:0 0 12px; 1816 color:#333; 1817 font-size:1rem; 1818 line-height:1.65; 1819 font-family:'Segoe UI', sans-serif; 1820 } 1821 1822 .jp-about-card li:before{ 1823 content:"â"; 1824 position:absolute; 1825 left:0; 1826 top:0; 1827 color:#2e9e45; 1828 font-weight:900; 1829 } 1830 1831 .jp-about-card li:last-child{ 1832 margin-bottom:0; 1833 } 1834 1835 @media screen and (max-width: 767px){ 1836 .jp-about-section{ 1837 padding:56px 16px; 1838 } 1839 1840 .jp-about-grid{ 1841 grid-template-columns:1fr; 1842 gap:16px; 1843 } 1844 1845 .jp-about-card{ 1846 padding:22px 18px; 1847 border-radius:16px; 1848 } 1849 1850 .jp-about-intro p{ 1851 font-size:1rem; 1852 line-height:1.72; 1853 } 1854 } 1855 </style> 1856</section> 1857 1858 </div> 1859 1860 1861 1862 <style> 1863 #post_12549561 { 1864 --ss-post-vertical-spacing: 0px; 1865 --ss-post-background-color: #ffffff; 1866 1867 1868 1869 1870 1871 } 1872 </style> 1873 1874</article></div> 1875 1876 1877<div class="post-container"> 1878 <article class="post post-html max-width" id="post_11611315" data-id="11611315" data-type="Html"> 1879 1880 <div class="post-body"> 1881 <section style="position: relative; width: 100vw; left: 50%; transform: translateX(-50%); padding: 80px 20px; box-sizing: border-box; text-align: center; overflow-x: hidden;"> 1882 <div style=" 1883 position: absolute; 1884 top: 0; left: 0; right: 0; bottom: 0; 1885 background: url('https://besuretocook.org/wp-content/uploads/2026/08/2021-07-28_original.webp') center center/cover no-repeat; 1886 filter: blur(6px) brightness(0.8); 1887 z-index: 1; 1888 "></div> 1889 1890 <div style="position: relative; z-index: 2; max-width: 1200px; margin: 0 auto;"> 1891 <h2 style="font-size: 2.7em; color: #ffffff; font-family: 'Arial Black', sans-serif; text-shadow: 0 0 8px #28a745;"> 1892 Our Tree Services 1893 </h2> 1894 1895 <p style="color: #ffffff; font-size: 1.3em; line-height: 1.8; font-family: 'Segoe UI', sans-serif; max-width: 900px; margin: 20px auto 50px;"> 1896 We specialize in expert-level tree removal, trimming, stump grinding, and routine care services to protect your property and beautify your landscape. 1897 </p> 1898 1899 <div class="service-grid"> 1900 <div class="service-badge" onclick="showPopup('Tree Removal')"> 1901 <img src="https://cdn-icons-png.flaticon.com/512/427/427735.png" alt="Tree Removal"> 1902 <p>Tree Removal</p> 1903 </div> 1904 <div class="service-badge" onclick="showPopup('Stump Grinding')"> 1905 <img src="https://cdn-icons-png.flaticon.com/512/3079/3079164.png" alt="Stump Grinding"> 1906 <p>Stump Grinding</p> 1907 </div> 1908 <div class="service-badge" onclick="showPopup('Tree Trimming')"> 1909 <img src="https://cdn-icons-png.flaticon.com/512/1632/1632670.png" alt="Tree Trimming"> 1910 <p>Tree Trimming</p> 1911 </div> 1912 <div class="service-badge" onclick="showPopup('Low Maintenance')"> 1913 <img src="https://cdn-icons-png.flaticon.com/512/5783/5783441.png" alt="Low Maintenance"> 1914 <p>Low Maintenance</p> 1915 </div> 1916 <div class="service-badge" onclick="showPopup('Affordable Pricing')"> 1917 <img src="https://cdn-icons-png.flaticon.com/512/3135/3135706.png" alt="Affordable Pricing"> 1918 <p>Affordable Pricing</p> 1919 </div> 1920 </div> 1921 </div> 1922</section> 1923 1924<!-- Popup --> 1925<div id="popupBox" style="display:none; position:fixed; top:0; left:0; width:100vw; height:100vh; background:rgba(0,0,0,0.8); z-index:9999;
1925 align-items:center; justify-content:center; padding: 20px; box-sizing: border-box;"> 1926 <div id="popupContent" style="background:white; padding:30px 20px; max-width:480px; width:100%; border-radius:10px; box-shadow:0 0 20px rgba(0,0,0,0.5); font-family:'Segoe UI',sans-serif; text-align:center; position:relative;"> 1927 <span onclick="hidePopup()" style="position:absolute; top:10px; right:15px; font-size:1.5em; cursor:pointer;">×</span> 1928 <h3 id="popupTitle" style="color:#0a3d0a; margin-bottom:15px;"></h3> 1929 <p id="popupDescription" style="font-size:1em; color:#333; margin-bottom:20px;"></p> 1930 <p style="color:#555;"> 1931 ð§ <a href="mailto:[email protected]">[email protected]</a><br> 1932 ð <a href="tel:6105072386">(610) 507-2386</a> 1933 </p> 1934 </div> 1935</div> 1936 1937<!-- Styles --> 1938<style> 1939.service-grid { 1940 display: flex; 1941 flex-wrap: wrap; 1942 justify-content: center; 1943 gap: 25px; 1944 padding: 0 10px; 1945 box-sizing: border-box; 1946} 1947 1948.service-badge { 1949 background-color: rgba(40, 167, 69, 0.95); 1950 border-radius: 50%; 1951 width: 130px; 1952 height: 130px; 1953 display: flex; 1954 flex-direction: column; 1955 align-items: center; 1956 justify-content: center; 1957 box-shadow: 0 6px 16px rgba(0,0,0,0.2); 1958 transition: transform 0.3s ease; 1959 cursor: pointer; 1960 padding: 10px; 1961 animation: floatBadge 4s ease-in-out infinite; 1962 box-sizing: border-box; 1963} 1964 1965.service-badge:hover { 1966 transform: scale(1.07); 1967} 1968 1969.service-badge img { 1970 width: 36px; 1971 height: 36px; 1972 margin-bottom: 8px; 1973 filter: brightness(0) invert(1); 1974} 1975 1976.service-badge p { 1977 color: white; 1978 font-size: 0.9em; 1979 margin: 0; 1980} 1981 1982/* Popup */ 1983#popupBox { 1984 display: none; 1985 flex-direction: column; 1986 justify-content: center; 1987 align-items: center; 1988} 1989 1990@keyframes floatBadge { 1991 0%, 100% { transform: translateY(0); } 1992 50% { transform: translateY(-6px); } 1993} 1994 1995/* Mobile */ 1996@media screen and (max-width: 768px) { 1997 .service-badge { 1998 width: 110px; 1999 height: 110px; 2000 } 2001 .service-badge img { 2002 width: 28px; 2003 height: 28px; 2004 } 2005 .service-badge p { 2006 font-size: 0.8em; 2007 } 2008 #popupContent { 2009 max-width: 90vw; 2010 font-size: 0.95em; 2011 } 2012} 2013</style> 2014 2015<!-- Script with Full Descriptions -->
2016<script> 2017function showPopup(service) { 2018 const descriptions = { 2019 "Tree Removal": "JP Tree Service offers professional and safe tree removal for dead, hazardous, or unwanted trees. Whether it's a storm-damaged tree or one too close to your home, we remove it efficiently, minimizing impact to your property.", 2020 "Stump Grinding": "Our stump grinding service eliminates unsightly stumps from your yard, restoring a clean, even landscape. We grind deep below the surface to prevent regrowth and make your outdoor space safer and more usable.", 2021 "Tree Trimming": "We provide expert tree trimming to remove overgrowth, dead limbs, and hazardous branches. Regular trimming improves tree health, boosts curb appeal, and keeps your family and property safe.", 2022 "Low Maintenance": "JP Tree Service helps homeowners and businesses maintain tidy, low-maintenance green spaces with trimming, shaping, and scheduled care to keep everything neat without constant upkeep.", 2023 "Affordable Pricing": "We believe professional tree care shouldnât break the bank. Thatâs why JP Tree Service offers competitive, transparent pricing on all services, backed by fully insured, quality workmanship." 2024 }; 2025 2026 document.getElementById('popupBox').style.display = 'flex'; 2027 document.getElementById('popupTitle').textContent = service; 2028 document.getElementById('popupDescription').textContent = descriptions[service]; 2029} 2030 2031function hidePopup() { 2032 document.getElementById('popupBox').style.display = 'none'; 2033} 2034</script>
2034 2035 2036 2037 </div> 2038 2039 2040 2041 <style> 2042 #post_11611315 { 2043 --ss-post-vertical-spacing: 0px; 2044 --ss-post-background-color: #ffffff; 2045 2046 2047 2048 2049 2050 } 2051 </style> 2052 2053</article></div> 2054 2055 2056<div class="post-container"> 2057 <article class="post post-html max-width" id="post_11611166" data-id="11611166" data-type="Html"> 2058 2059 <div class="post-body"> 2060 <!-- Elfsight Google Reviews | JP Tree Service -->
2061<script src="https://static.elfsight.com/platform/platform.js" async></script>
2061 2062<div class="elfsight-app-74702cc2-3453-4d0f-83e7-0fe2008c8a58" data-elfsight-app-lazy></div> 2063 2064 </div> 2065 2066 2067 2068 <style> 2069 #post_11611166 { 2070 --ss-post-vertical-spacing: 0px; 2071 --ss-post-background-color: #ffffff; 2072 2073 2074 2075 2076 2077 } 2078 </style> 2079 2080</article></div> 2081 2082 2083<div class="post-container"> 2084 <article class="post post-html max-width" id="post_11611095" data-id="11611095" data-type="Html"> 2085 2086 <div class="post-body"> 2087 <section class="jp-guarantee-faq-section"> 2088 <div class="jp-guarantee-faq-wrap"> 2089 2090 <div class="jp-guarantee-top"> 2091 <span class="jp-guarantee-eyebrow">Trusted Tree Care in Upper Darby, PA</span> 2092 <h2>All of Our Tree Services Are Backed by Our 100% Satisfaction Guarantee</h2> 2093 <p> 2094 JP Tree Service proudly provides professional tree removal, tree trimming, stump grinding, storm cleanup, and property clearing in Upper Darby, PA and surrounding areas. We are committed to safe work, affordable pricing, dependable service, and customer satisfaction on every job. 2095 </p> 2096 </div> 2097 2098 <div class="jp-guarantee-content"> 2099 <div class="jp-guarantee-badge-card"> 2100 <img src="https://besuretocook.org/wp-content/uploads/2026/08/satisfaction-guarantee-2109235_1920_960x_original.webp" alt="100% Satisfaction Guarantee JP Tree Service" /> 2101 <div class="jp-guarantee-badge-text"> 2102 <strong>Quality Tree Work You Can Trust</strong> 2103 <span>Safe service, honest pricing, and dependable results for homes and properties throughout Upper Darby.</span> 2104 </div> 2105 </div> 2106 2107 <div class="jp-guarantee-services"> 2108 <div class="jp-service-col"> 2109 <h3>Core Tree Services</h3> 2110 <ul> 2111 <li>Tree Removal</li> 2112 <li>Tree Trimming & Pruning</li> 2113 <li>Stump Grinding</li> 2114 <li>Roof Line Clearing</li> 2115 <li>Hazard Tree Removal</li> 2116 <li>Routine Tree Maintenance</li> 2117 </ul> 2118 </div> 2119 2120 <div class="jp-service-col"> 2121 <h3>Property & Cleanup Services</h3> 2122 <ul> 2123 <li>Land Clearing</li> 2124 <li>Bush & Brush Removal</li> 2125 <li>Log Removal</li> 2126 <li>Property Cleanup</li> 2127 <li>Bobcat Services</li> 2128 <li>Land Grading</li> 2129 </ul> 2130 </div> 2131 2132 <div class="jp-service-col"> 2133 <h3>Specialty Services</h3> 2134 <ul> 2135 <li>Storm Damage Cleanup</li> 2136 <li>Emergency Tree Service</li> 2137 <li>Tree Disease Control</li> 2138 <li>Root Pruning</li> 2139 <li>Lightning Protection</li> 2140 <li>Aerial Bucket Services</li> 2141 </ul> 2142 </div> 2143 </div> 2144 </div> 2145 2146 <div class="jp-guarantee-cta"> 2147 <a href="tel:6105072386" class="jp-guarantee-btn jp-guarantee-btn-primary">ð Call (610) 507-2386</a> 2148 <a href="/contact-us" class="jp-guarantee-btn jp-guarantee-btn-secondary">ð³ Get a Free Estimate</a> 2149 </div> 2150 2151 <div class="jp-faq-block"> 2152 <div class="jp-faq-head"> 2153 <span class="jp-faq-eyebrow">Helpful Answers</span> 2154 <h2>Frequently Asked Questions</h2> 2155 <p> 2156 Learn more about our tree services in Upper Darby, PA, including pricing, emergency work, trimming, stump grinding, and what to expect when you hire JP Tree Service. 2157 </p> 2158 </div> 2159 2160 <div class="jp-faq-list"> 2161 <details class="jp-faq-item" open> 2162 <summary>How much does tree removal cost in Upper Darby, PA?</summary> 2163 <div class="jp-faq-answer"> 2164 Tree removal pricing depends on the size of the tree, its condition, location on the property, and how difficult it is to remove safely. JP Tree Service provides free estimates in Upper Darby, PA so you can get clear pricing before any work begins. 2165 </div> 2166 </details> 2167 2168 <details class="jp-faq-item"> 2169 <summary>Do you offer emergency tree service?</summary> 2170 <div class="jp-faq-answer"> 2171 Yes. We provide emergency tree service for storm damage, fallen trees, dangerous hanging limbs, and other urgent tree-related issues. If a tree is threatening your home, driveway, roof, or power lines, call us right away. 2172 </div> 2173 </details> 2174 2175 <details class="jp-faq-item"> 2176 <summary>Do you provide tree trimming and pruning?</summary> 2177 <div class="jp-faq-answer"> 2178 Yes. JP Tree Service offers professional tree trimming and pruning to help improve tree health, reduce overgrowth, clear roof lines, and make your property safer and more attractive. 2179 </div> 2180 </details> 2181 2182 <details class="jp-faq-item"> 2183 <summary>Can you remove tree stumps too?</summary> 2184 <div class="jp-faq-answer"> 2185 Yes. We offer stump grinding and stump removal services to help clean up your yard, improve appearance, and eliminate tripping hazards or obstacles for landscaping. 2186 </div> 2187 </details> 2188 2189 <details class="jp-faq-item"> 2190 <summary>Are you fully insured?</summary> 2191 <div class="jp-faq-answer"> 2192 Yes. JP Tree Service is fully insured, giving property owners peace of mind when hiring us for tree removal, trimming, storm cleanup, and other tree care services. 2193 </div> 2194 </details> 2195 2196 <details class="jp-faq-item"> 2197 <summary>What areas do you serve besides Upper Darby?</summary> 2198 <div class="jp-faq-answer"> 2199 In addition to Upper Darby, we serve nearby communities and surrounding service areas. Contact us to confirm availability for your location and to request a free estimate. 2200 </div> 2201 </details> 2202 </div> 2203 </div> 2204 2205 </div> 2206 2207 <style> 2208 .jp-guarantee-faq-section{ 2209 padding:80px 20px; 2210 background:linear-gradient(180deg, #f7f7f7 0%, #eeeeee 100%); 2211 } 2212 2213 .jp-guarantee-faq-section *{ 2214 box-sizing:border-box; 2215 } 2216 2217 .jp-guarantee-faq-wrap{ 2218 max-width:1200px; 2219 margin:0 auto; 2220 } 2221 2222 .jp-guarantee-top{ 2223 text-align:center; 2224 max-width:950px; 2225 margin:0 auto 40px; 2226 } 2227 2228 .jp-guarantee-eyebrow, 2229 .jp-faq-eyebrow{ 2230 display:inline-block; 2231 margin-bottom:14px; 2232 padding:8px 14px; 2233 border-radius:999px; 2234 background:#e8f3e6; 2235 color:#0b4b15; 2236 font-size:.9rem; 2237 font-weight:800; 2238 letter-spacing:.04em; 2239 text-transform:uppercase; 2240 } 2241 2242 .jp-guarantee-top h2, 2243 .jp-faq-head h2{ 2244 margin:0 0 18px; 2245 font-size:clamp(2rem, 4vw, 3rem); 2246 line-height:1.15; 2247 color:#222; 2248 font-family:'Arial Black', sans-serif; 2249 } 2250 2251 .jp-guarantee-top p, 2252 .jp-faq-head p{ 2253 margin:0 auto; 2254 max-width:860px; 2255 font-size:1.08rem; 2256 line-height:1.8; 2257 color:#444; 2258 font-family:'Segoe UI', sans-serif; 2259 } 2260 2261 .jp-guarantee-content{ 2262 display:grid; 2263 grid-template-columns:320px 1fr; 2264 gap:28px; 2265 align-items:start; 2266 } 2267 2268 .jp-guarantee-badge-card{ 2269 background:#fff; 2270 border-radius:22px; 2271 padding:26px 20px; 2272 box-shadow:0 18px 45px rgba(0,0,0,0.08); 2273 border:1px solid rgba(0,0,0,0.06); 2274 text-align:center; 2275 height:100%; 2276 } 2277 2278 .jp-guarantee-badge-card img{ 2279 max-width:220px; 2280 width:100%; 2281 height:auto; 2282 display:block; 2283 margin:0 auto 18px; 2284 } 2285 2286 .jp-guarantee-badge-text{ 2287 display:flex; 2288 flex-direction:column; 2289 gap:8px; 2290 } 2291 2292 .jp-guarantee-badge-text strong{ 2293 font-size:1.15rem; 2294 color:#1d1d1d; 2295 font-family:'Arial Black', sans-serif; 2296 } 2297 2298 .jp-guarantee-badge-text span{ 2299 font-size:.98rem; 2300 line-height:1.65; 2301 color:#555; 2302 font-family:'Segoe UI', sans-serif; 2303 } 2304 2305 .jp-guarantee-services{ 2306 display:grid; 2307 grid-template-columns:repeat(3, minmax(0, 1fr)); 2308 gap:20px; 2309 } 2310 2311 .jp-service-col{ 2312 background:#fff; 2313 border-radius:20px; 2314 padding:24px 22px; 2315 box-shadow:0 14px 36px rgba(0,0,0,0.06); 2316 border:1px solid rgba(0,0,0,0.05); 2317 } 2318 2319 .jp-service-col h3{ 2320 margin:0 0 14px; 2321 color:#0a3d0a; 2322 font-size:1.2rem; 2323 font-family:'Arial Black', sans-serif; 2324 } 2325 2326 .jp-service-col ul{ 2327 list-style:none; 2328 padding:0; 2329 margin:0; 2330 } 2331 2332 .jp-service-col li{ 2333 position:relative; 2334 padding-left:24px; 2335 margin-bottom:14px; 2336 font-size:1rem; 2337 line-height:1.55; 2338 color:#2f2f2f; 2339 font-family:'Segoe UI', sans-serif; 2340 font-weight:600; 2341 } 2342 2343 .jp-service-col li:last-child{ 2344 margin-bottom:0; 2345 } 2346 2347 .jp-service-col li:before{ 2348 content:"â"; 2349 position:absolute; 2350 left:0; 2351 top:0; 2352 color:#2ea043; 2353 font-weight:900; 2354 } 2355 2356 .jp-guarantee-cta{ 2357 display:flex; 2358 justify-content:center; 2359 flex-wrap:wrap; 2360 gap:12px; 2361 margin-top:34px; 2362 margin-bottom:60px; 2363 } 2364 2365 .jp-guarantee-btn{ 2366 display:inline-flex; 2367 align-items:center; 2368 justify-content:center; 2369 min-width:220px; 2370 padding:14px 24px; 2371 border-radius:12px; 2372 text-decoration:none; 2373 font-size:1rem; 2374 font-weight:800; 2375 transition:transform .2s ease, background .2s ease, box-shadow .2s ease; 2376 } 2377 2378 .jp-guarantee-btn:hover{ 2379 transform:translateY(-2px); 2380 } 2381 2382 .jp-guarantee-btn-primary{ 2383 background:#2eaf4a; 2384 color:#fff; 2385 box-shadow:0 12px 28px rgba(46,175,74,0.24); 2386 } 2387 2388 .jp-guarantee-btn-primary:hover{ 2389 background:#27953e; 2390 } 2391 2392 .jp-guarantee-btn-secondary{ 2393 background:#ffc107; 2394 color:#111; 2395 box-shadow:0 12px 28px rgba(255,193,7,0.22); 2396 } 2397 2398 .jp-guarantee-btn-secondary:hover{ 2399 background:#e3ab05; 2400 } 2401 2402 .jp-faq-block{ 2403 max-width:1000px; 2404 margin:0 auto; 2405 } 2406 2407 .jp-faq-head{ 2408 text-align:center; 2409 margin-bottom:28px; 2410 } 2411 2412 .jp-faq-list{ 2413 display:flex; 2414 flex-direction:column; 2415 gap:14px; 2416 } 2417 2418 .jp-faq-item{ 2419 background:#fff; 2420 border:1px solid rgba(0,0,0,0.07); 2421 border-radius:18px; 2422 box-shadow:0 10px 26px rgba(0,0,0,0.05); 2423 overflow:hidden; 2424 } 2425 2426 .jp-faq-item summary{ 2427 list-style:none; 2428 cursor:pointer; 2429 padding:20px 22px; 2430 font-size:1.06rem; 2431 font-weight:800; 2432 color:#1f1f1f; 2433 font-family:'Segoe UI', sans-serif; 2434 position:relative; 2435 padding-right:54px; 2436 } 2437 2438 .jp-faq-item summary::-webkit-details-marker{ 2439 display:none; 2440 } 2441 2442 .jp-faq-item summary:after{ 2443 content:"+"; 2444 position:absolute; 2445 right:20px; 2446 top:50%; 2447 transform:translateY(-50%); 2448 font-size:1.4rem; 2449 font-weight:900; 2450 color:#2e9e45; 2451 } 2452 2453 .jp-faq-item[open] summary:after{ 2454 content:"â"; 2455 } 2456 2457 .jp-faq-answer{ 2458 padding:0 22px 22px; 2459 font-size:1rem; 2460 line-height:1.75; 2461 color:#444; 2462 font-family:'Segoe UI', sans-serif; 2463 } 2464 2465 @media (max-width: 1024px){ 2466 .jp-guarantee-content{ 2467 grid-template-columns:1fr; 2468 } 2469 2470 .jp-guarantee-badge-card{ 2471 max-width:420px; 2472 margin:0 auto; 2473 } 2474 2475 .jp-guarantee-services{ 2476 grid-template-columns:repeat(2, minmax(0, 1fr)); 2477 } 2478 } 2479 2480 @media (max-width: 767px){ 2481 .jp-guarantee-faq-section{ 2482 padding:56px 16px; 2483 } 2484 2485 .jp-guarantee-top{ 2486 margin-bottom:28px; 2487 } 2488 2489 .jp-guarantee-top p, 2490 .jp-faq-head p{ 2491 font-size:1rem; 2492 line-height:1.7; 2493 } 2494 2495 .jp-guarantee-services{ 2496 grid-template-columns:1fr; 2497 gap:16px; 2498 } 2499 2500 .jp-service-col{ 2501 padding:20px 18px; 2502 border-radius:16px; 2503 } 2504 2505 .jp-guarantee-badge-card{ 2506 padding:22px 16px; 2507 border-radius:18px; 2508 } 2509 2510 .jp-guarantee-badge-card img{ 2511 max-width:180px; 2512 } 2513 2514 .jp-guarantee-btn{ 2515 width:100%; 2516 min-width:0; 2517 } 2518 2519 .jp-faq-item summary{ 2520 padding:18px 18px; 2521 padding-right:46px; 2522 font-size:1rem; 2523 } 2524 2525 .jp-faq-answer{ 2526 padding:0 18px 18px; 2527 } 2528 } 2529 </style> 2530</section> 2531 2532 </div> 2533 2534 2535 2536 <style> 2537 #post_11611095 { 2538 --ss-post-vertical-spacing: 0px; 2539 --ss-post-background-color: #ffffff; 2540 2541 2542 2543 2544 2545 } 2546 </style> 2547 2548</article></div> 2549 2550 2551<div class="post-container"> 2552 <article class="post post-html max-width" id="post_12003545" data-id="12003545" data-type="Html"> 2553 <div class="bg-outer" data-video-provider=""> 2554 <div class="bg-inner"></div> 2555 </div> 2556 2557 <div class="post-body"> 2558 <!-- Elfsight Contact Form | Untitled Contact Form 5 -->
2559<script src="https://elfsightcdn.com/platform.js" async></script>
2559 2560<div class="elfsight-app-7f2da393-c592-4591-9b77-2d3da609ebb6" data-elfsight-app-lazy></div> 2561 2562 </div> 2563 2564 2565 2566 <style> 2567 #post_12003545 { 2568 --ss-post-vertical-spacing: 0px; 2569 --ss-post-background-color: var(--ss-color-70529); 2570 2571 --ss-post-overlay: color-mix(in srgb, var(--ss-color-70529) calc(100% * 0.85), transparent); 2572 2573 --ss-post-background-image: url('https://d14tal8bchn59o.cloudfront.net/rnC72F_J3J2rjj19lvMhGh8Xyvtwujl2TgJJul0WbOc/w:960/fn:jan-huber-4OhFZSAT3sw-unsplash/plain/s3://multisiteadmin-production/pwnkltia61jvjzx9wahfebi7lyqf'); 2574 --ss-post-background-image-large: url('https://d14tal8bchn59o.cloudfront.net/AkNy-TKsOl38Xxu9Mpv9dIplbxLCFiqcCCSD2nNBZ3M/w:1920/fn:jan-huber-4OhFZSAT3sw-unsplash/plain/s3://multisiteadmin-production/pwnkltia61jvjzx9wahfebi7lyqf'); 2575 2576 2577 2578 } 2579 </style> 2580 2581</article></div> 2582 2583</div> 2584 2585 2586 2587<style> 2588:root { 2589 --ss-posts-count: 6; 2590} 2591</style> 2592 2593 </main> 2594 2595 <footer class="footer-container "> 2596 <div class="footer-inner-container"> 2597 <div class="footer"> 2598 2599 <div class="footer__content footer__content--two_column"> 2600 <style> 2601 :root { 2602 --ss-footer-color: var(--ss-color-70528); 2603 --ss-footer-background-opacity: 0.89; 2604 --ss-footer-headings-color: #ffffff; 2605 --ss-footer-text-color: #ffffff; 2606 --ss-footer-navigation-color: #ffffff; 2607 --ss-footer-social-icon-color: var(--ss-color-70528); 2608 --ss-footer-social-icon-background-color: #ffffff; 2609 } 2610 </style> 2611 2612 2613 <div class="footer__column"> 2614 <div class="about"> 2615 <div class="about-title wysiwyg-text"><div>About Our Company</div></div> 2616 <div class="about-content wysiwyg-text"> 2617 <span class="font-size-s">Trees do so much for our homes and places of business. For instance, they provide shade and clean, fresh air for us to breathe. They can also contribute to the value of your home. On the other hand, a sick or dead tree can be dangerous and cause extensive damage to your property. Thus, doesnât it make sense to invest in the care and maintenance of your trees?</span><br><br><br><span class="font-size-s"><a href="/privacy-policy"><span style="color:#ffffff;">Privacy Policy</span></a></span> 2618 </div> 2619 </div> 2620 2621 <div class="social-icons"> 2622 2623 <div class="social-icons__networks"> 2624 <a target="_blank" title="Visit JP Tree Service on Facebook Page" aria-label="Visit JP Tree Service on Facebook Page (opens in new window)" href="https://www.facebook.com/profile.php?id=61582449833551"> 2625 <i class="fab fa-facebook-f"></i> 2626</a> <a target="_blank" title="Visit JP Tree Service on Instagram" aria-label="Visit JP Tree Service on Instagram (opens in new window)" href="https://www.instagram.com/jptree.service/"> 2627 <i class="fab fa-instagram"></i> 2628</a> </div> 2629 </div> 2630 2631 </div> 2632 2633 <div class="footer__column"> 2634 <div class="locations"> 2635 <div class="location font-size-s"> 2636 <div class="location__item"> 2637 <div class="location__icon"><i class="fa-solid fa-map-marker-alt"></i></div> 2638 <div class="location__content"> 2639 <a target="_blank" aria-label="View Map for 17 Elm Ave Upper Darby, PA 19082 (opens in new window)" data-track="/a/track_map_view" href="https://maps.google.com/maps?q=17+Elm+Ave%2C+Upper+Darby%2C+PA+19082&z=15&mrt=loc">17 Elm Ave Upper Darby, PA 19082</a> 2640 </div> 2641 </div> 2642 2643 <div class="location__item"> 2644 <div class="location__icon"> 2645 <i class="fa-solid fa-phone"></i> 2646 </div> 2647 <div class="location__content"> 2648 Phone: 2649 2650 <a href="tel:%201%20%28610%29%20507-2386"> 1 (610) 507-2386</a><br> 2651 </div> 2652 </div> 2653 2654 <div class="location__item"> 2655 <div class="location__icon"><i class="fa-solid fa-envelope"></i></div> 2656 <div class="location__content"> 2657 <a href="mailto:
2657%4a%70%74%72%65%65%73%65%72%76%69%63%65%6a@%67%6d%61%69%6c.%63%6f%6d">Jptreeservicej@gmail.com</a><br> 2658 </div> 2659 </div> 2660 2661 <div class="location__item"> 2662 <div class="location__icon"> 2663 <i class="fa-solid fa-clock"></i> 2664 </div> 2665 <div class="location__content"> 2666 <span class="location-hours-day">Monday - Sunday:</span> Open 24 hours<br> 2667 </div> 2668 </div> 2669 </div> 2670 </div> 2671 </div> 2672 2673</div> 2674 2675 </div> 2676 2677 <nav aria-label="Site"> 2678 <ul class="page-listing" data-behavior="site-navigation"> 2679 <li> 2680 2681 2682 <a class="active" href="/"> 2683 <div> 2684 Home 2685 2686 </div> 2687</a> 2688 </li> 2689 <li> 2690 2691 2692 <a class="" href="/about-us"> 2693 <div> 2694 About Us 2695 2696 </div> 2697</a> 2698 </li> 2699 <li> 2700 2701 2702 <a class="" href="/our-services"> 2703 <div> 2704 Our Services 2705 2706 </div> 2707</a> 2708 </li> 2709 <li> 2710 2711 2712 <a class="" href="/gallery"> 2713 <div> 2714 Gallery 2715 2716 </div> 2717</a> 2718 </li> 2719 <li> 2720 2721 2722 <a class="" href="/reviews"> 2723 <div> 2724 Reviews 2725 2726 </div> 2727</a> 2728 </li> 2729 <li> 2730 2731 2732 <a class="" href="/contact-us"> 2733 <div> 2734 Contact Us 2735 2736 </div> 2737</a> 2738 </li> 2739 2740 </ul> 2741 2742 </nav> 2743 2744 <div class="copyright"> 2745 Copyright ©2026 JP Tree Service. All Rights Reserved. 2746 2747 </div> 2748 2749 2750 </div> 2751 </footer> 2752 </div> 2753 2754
2754<script> 2755 window.enable_paypal_online_store = false; 2756 </script>
2756 2757 2758
2758<script src="/assets/application-1cf07c91de70aa1b855b2499925454311b288a4620f2ffe1907920add879d2d6.js"></script>
vendor: 119 bytes, lines 2758-2761
2758 2759 2760 <script src='https://www.google.com/recaptcha/api.js?render=explicit&onload=recaptchaLoadCallback'></script> 2761
2761<script> 2762 window.recaptchaSiteKey = '6Lfj9UUUAAAAAE4AjXBcpuxOxAmq9-Nl6asnEbR6'; 2763 </script>
2763 2764 2765
2765<script> 2766 window.slideshowBreakpoints = [[480,3],[640,4],[800,5],[960,6]]; 2767 </script>
2767 2768 2769 <!--[if (gte IE 10)|!(IE)]><!--> 2770 2771 2772 <!--<![endif]--> 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788<style> 2789 .post.post-html.full-width.visible { 2790 --ss-post-vertical-spacing: 0 !important; 2791 padding: 0 !important; 2792 margin: 0 !important; 2793 background: transparent !important; 2794 } 2795 .post.post-html.full-width.visible .post-body { 2796 padding: 0 !important; 2797 margin: 0 !important; 2798 background: transparent !important; 2799 } 2800</style> 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810<!-- ===================================================== 2811 SITESWAN FULL-WIDTH HTML FIX 2812 Restores full-width custom HTML sections 2813====================================================== --> 2814 2815<style> 2816 2817/* SiteSwan HTML Post â Force Full Width */ 2818article.post.post-html, 2819article.post.post-html.max-width, 2820.post.post-html.max-width, 2821.post-html.max-width { 2822 width: 100% !important; 2823 max-width: none !important; 2824 margin-left: 0 !important; 2825 margin-right: 0 !important; 2826 padding-left: 0 !important; 2827 padding-right: 0 !important; 2828} 2829 2830/* Remove width restriction from HTML post body */ 2831article.post.post-html > .post-body, 2832.post.post-html > .post-body, 2833.post-html .post-body { 2834 width: 100% !important; 2835 max-width: none !important; 2836 margin-left: 0 !important; 2837 margin-right: 0 !important; 2838 padding-left: 0 !important; 2839 padding-right: 0 !important; 2840} 2841 2842/* Make custom HTML content use the full available width */ 2843article.post-html .post-body > section, 2844article.post-html .post-body > header, 2845article.post-html .post-body > footer, 2846article.post-html .post-body > main { 2847 max-width: none !important; 2848} 2849 2850/* Prevent accidental horizontal scrollbar */ 2851html, 2852body { 2853 overflow-x: hidden; 2854} 2855 2856</style> 2857 </body> 2858</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.