Performance
· 17 checks — Lighthouse + waterfall + sustainability rolled into one auditable list.Performance-focused optimization plan with CWV assessment, top offenders, and time estimates
First Contentful Paint First Contentful Paint — how long until the browser renders the first piece of content. Under 1.8s is good.
1.29 s
Largest Contentful Paint Largest Contentful Paint — how long until the largest visible element loads. Under 2.5s is good.
4.41 s
Total Blocking Time Total Blocking Time — total time the main thread was blocked, preventing user input. Under 200ms is good.
3.63 s
Cumulative Layout Shift Cumulative Layout Shift — measures visual stability. How much the page layout shifts during loading. Under 0.1 is good.
0.013
Speed Index Speed Index — how quickly content is visually displayed during load. Under 3.4s is good.
3.97 s
Time to Interactive Time to Interactive — how long until the page is fully interactive and responds to user input. Under 3.8s is good.
19.69 s
Page Load Progression
DPage Weight BudgetAction2.3 MB transferred, 158 requestsFIX
Large JavaScript bundles delay interactivity. Split code by route or defer non-critical scripts.
JavaScript bundle is large — code-split routes and lazy-load off-screen components to defer.
Source: web.dev
Each request adds latency. Bundle small files, use sprites, or eliminate unnecessary requests.
High HTTP request count — bundling, sprite-ing, and HTTP/2 server push can reduce per-request overhead.
Source: web.dev
DThird-Party ImpactAction90% third-party, 0 ms blockingFIX
FJS Execution CostAction9072ms total JS executionFIX
Main Thread Breakdown
| Script | Total | Scripting | Parse/Compile | Party |
|---|---|---|---|---|
| https://unbounce.com/ | 1874ms | 809ms | 6ms | 1st |
| Unattributable | 1362ms | 330ms | 0ms | 3rd |
| https://www.googletagmanager.com/gtm.js?id=GTM-ND9H2L | 1157ms | 1018ms | 77ms | 3rd |
| data:text/javascript;base64,CiAgd2luZG93Ll92d29fY29kZSB8fCAoZnVuY3Rpb24oKSB7CiAgdmFyIGFjY291bnRfaWQ9MTg3Mjc0LAogIHZlcnNpb249Mi4xLAogIHNldHRpbmdzX3RvbGVyYW5jZT0yMDAwLAogIGhpZGVfZWxlbWVudD0nYm9keScsCiAgaGlkZV9lbGVtZW50X3N0eWxlID0gJ29wYWNpdHk6MCAhaW1wb3J0YW50O2ZpbHRlcjphbHBoYShvcGFjaXR5PTApICFpbXBvcnRhbnQ7YmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQnLAogIC8qIERPIE5PVCBFRElUIEJFTE9XIFRISVMgTElORSAqLwogIGY9ZmFsc2Usdz13aW5kb3csZD1kb2N1bWVudCx2PWQucXVlcnlTZWxlY3RvcignI3Z3b0NvZGUnKSxjSz0nX3Z3b18nK2FjY291bnRfaWQrJ19zZXR0aW5ncycsY2M9e307dHJ5e3ZhciBjPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ192d29fJythY2NvdW50X2lkKydfY29uZmlnJykpO2NjPWMmJnR5cGVvZiBjPT09J29iamVjdCc/Yzp7fX1jYXRjaChlKXt9dmFyIHN0VD1jYy5zdFQ9PT0nc2Vzc2lvbic/dy5zZXNzaW9uU3RvcmFnZTp3LmxvY2FsU3RvcmFnZTtjb2RlPXt1c2VfZXhpc3RpbmdfanF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB1c2VfZXhpc3RpbmdfanF1ZXJ5IT09J3VuZGVmaW5lZCc/dXNlX2V4aXN0aW5nX2pxdWVyeTp1bmRlZmluZWR9LGxpYnJhcnlfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBsaWJyYXJ5X3RvbGVyYW5jZSE9PSd1bmRlZmluZWQnP2xpYnJhcnlfdG9sZXJhbmNlOnVuZGVmaW5lZH0sc2V0dGluZ3NfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIGNjLnNUfHxzZXR0aW5nc190b2xlcmFuY2V9LGhpZGVfZWxlbWVudF9zdHlsZTpmdW5jdGlvbigpe3JldHVybid7JysoY2MuaEVTfHxoaWRlX2VsZW1lbnRfc3R5bGUpKyd9J30saGlkZV9lbGVtZW50OmZ1bmN0aW9uKCl7aWYocGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSgnZmlyc3QtY29udGVudGZ1bC1wYWludCcpWzBdKXtyZXR1cm4nJ31yZXR1cm4gdHlwZW9mIGNjLmhFPT09J3N0cmluZyc/Y2MuaEU6aGlkZV9lbGVtZW50fSxnZXRWZXJzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHZlcnNpb259LGZpbmlzaDpmdW5jdGlvbihlKXtpZighZil7Zj10cnVlO3ZhciB0PWQuZ2V0RWxlbWVudEJ5SWQoJ192aXNfb3B0X3BhdGhfaGlkZXMnKTtpZih0KXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtpZihlKShuZXcgSW1hZ2UpLnNyYz0naHR0cHM6Ly9kZXYudmlzdWFsd2Vic2l0ZW9wdGltaXplci5jb20vZWUuZ2lmP2E9JythY2NvdW50X2lkK2V9fSxmaW5pc2hlZDpmdW5jdGlvbigpe3JldHVybiBmfSxhZGRTY3JpcHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTt0LnR5cGU9J3RleHQvamF2YXNjcmlwdCc7aWYoZS5zcmMpe3Quc3JjPWUuc3JjfWVsc2V7dC50ZXh0PWUudGV4dH1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodCl9LGxvYWQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmdldFNldHRpbmdzKCksbj1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLHI9dGhpczt0PXR8fHt9O2lmKGkpe24udGV4dENvbnRlbnQ9aTtkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobik7aWYoIXcuVldPfHxWV08uY2FFKXtzdFQucmVtb3ZlSXRlbShjSyk7ci5sb2FkKGUpfX1lbHNle3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtvLm9wZW4oJ0dFVCcsZSx0cnVlKTtvLndpdGhDcmVkZW50aWFscz0hdC5kU0M7by5yZXNwb25zZVR5cGU9dC5yZXNwb25zZVR5cGV8fCd0ZXh0JztvLm9ubG9hZD1mdW5jdGlvbigpe2lmKHQub25sb2FkQ2Ipe3JldHVybiB0Lm9ubG9hZENiKG8sZSl9aWYoby5zdGF0dXM9PT0yMDApe192d29fY29kZS5hZGRTY3JpcHQoe3RleHQ6by5yZXNwb25zZVRleHR9KX1lbHNle192d29fY29kZS5maW5pc2goJyZlPWxvYWRpbmdfZmFpbHVyZTonK2UpfX07by5vbmVycm9yPWZ1bmN0aW9uKCl7aWYodC5vbmVycm9yQ2Ipe3JldHVybiB0Lm9uZXJyb3JDYihlKX1fdndvX2NvZGUuZmluaXNoKCcmZT1sb2FkaW5nX2ZhaWx1cmU6JytlKX07by5zZW5kKCl9fSxnZXRTZXR0aW5nczpmdW5jdGlvbigpe3RyeXt2YXIgZT1zdFQuZ2V0SXRlbShjSyk7aWYoIWUpe3JldHVybn1lPUpTT04ucGFyc2UoZSk7aWYoRGF0ZS5ub3coKT5lLmUpe3N0VC5yZW1vdmVJdGVtKGNLKTtyZXR1cm59cmV0dXJuIGUuc31jYXRjaChlKXtyZXR1cm59fSxpbml0OmZ1bmN0aW9uKCl7aWYoZC5VUkwuaW5kZXhPZignX192d29fZGlzYWJsZV9fJyk+LTEpcmV0dXJuO3ZhciBlPXRoaXMuc2V0dGluZ3NfdG9sZXJhbmNlKCk7dy5fdndvX3NldHRpbmdzX3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtfdndvX2NvZGUuZmluaXNoKCk7c3RULnJlbW92ZUl0ZW0oY0spfSxlKTt2YXIgdDtpZih0aGlzLmhpZGVfZWxlbWVudCgpIT09J2JvZHknKXt0PWQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTt2YXIgaT10aGlzLmhpZGVfZWxlbWVudCgpLG49aT9pK3RoaXMuaGlkZV9lbGVtZW50X3N0eWxlKCk6Jycscj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dC5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO3YmJnQuc2V0QXR0cmlidXRlKCdub25jZScsdi5ub25jZSk7dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCd0ZXh0L2NzcycpO2lmKHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2UgdC5hcHBlbmRDaGlsZChkLmNyZWF0ZVRleHROb2RlKG4pKTtyLmFwcGVuZENoaWxkKHQpfWVsc2V7dD1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dmFyIG49ZC5jcmVhdGVFbGVtZW50KCdkaXYnKTtuLnN0eWxlLmNzc1RleHQ9J3otaW5kZXg6IDIxNDc0ODM2NDcgIWltcG9ydGFudDtwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtsZWZ0OiAwICFpbXBvcnRhbnQ7dG9wOiAwICFpbXBvcnRhbnQ7d2lkdGg6IDEwMCUgIWltcG9ydGFudDtoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50Oyc7bi5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO24uY2xhc3NMaXN0LmFkZCgnX3Zpc19oaWRlX2xheWVyJyk7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLHQubmV4dFNpYmxpbmcpfXZhciBvPSdodHRwczovL2Rldi52aXN1YWx3ZWJzaXRlb3B0aW1pemVyLmNvbS9qLnBocD9hPScrYWNjb3VudF9pZCsnJnU9JytlbmNvZGVVUklDb21wb25lbnQoZC5VUkwpKycmdm49Jyt2ZXJzaW9uO2lmKHcubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ192d29feGhyJykhPT0tMSl7dGhpcy5hZGRTY3JpcHQoe3NyYzpvfSl9ZWxzZXt0aGlzLmxvYWQobysnJng9dHJ1ZScpfX19O3cuX3Z3b19jb2RlPWNvZGU7Y29kZS5pbml0KCk7fSkoKTsKICA= | 747ms | 548ms | 139ms | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-JHGNGKNMZM&cx=c>m=4e64k1 | 392ms | 338ms | 50ms | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-8GFBJRYYE1&cx=c>m=4e64k1 | 352ms | 298ms | 51ms | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-B32DC3RBVY&cx=c>m=4e64k1 | 340ms | 289ms | 47ms | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-K17291L2CD&cx=c>m=4e64k1 | 320ms | 272ms | 45ms | 3rd |
| https://www.googletagmanager.com/gtag/destination?id=AW-981849952&cx=c>m=4e64k1 | 311ms | 242ms | 66ms | 3rd |
| https://cdn.cookielaw.org/scripttemplates/202312.1.0/otBannerSdk.js | 309ms | 205ms | 33ms | 3rd |
Showing top 10 of 23 scripts
FJS BundlesAction49 scripts, 644 KB unusedFIX
Downloaded but never executed on this page.
| Script | Size | Unused | Minified | Party |
|---|---|---|---|---|
| https://www.googletagmanager.com/gtag/js?id=G-JHGNGKNMZM&cx=c>m=4e64k1 | 172 KB | 67 KB (39%) | ✓ | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-B32DC3RBVY&cx=c>m=4e64k1 | 158 KB | 66 KB (42%) | ✓ | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-8GFBJRYYE1&cx=c>m=4e64k1 | 158 KB | 65 KB (41%) | ✓ | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-K17291L2CD&cx=c>m=4e64k1 | 154 KB | 63 KB (41%) | ✓ | 3rd |
| https://www.googletagmanager.com/gtag/destination?id=AW-981849952&cx=c>m=4e64k1 | 147 KB | 61 KB (42%) | ✓ | 3rd |
| https://www.googletagmanager.com/gtm.js?id=GTM-ND9H2L | 185 KB | 60 KB (32%) | ✓ | 3rd |
| https://cdn.cookielaw.org/scripttemplates/202312.1.0/otBannerSdk.js | 104 KB | 55 KB (52%) | ✓ | 3rd |
| https://www.googletagmanager.com/gtag/js?id=AW-947282172 | 145 KB | 54 KB (37%) | ✓ | 3rd |
| https://d3rqem538l0q4a.cloudfront.net/Scripts/chloe.js | 74 KB | 38 KB (51%) | ✓ | 3rd |
| https://script.hotjar.com/modules.6a0f3932cb1341a35c18.js | 57 KB | 36 KB (65%) | ✓ | 3rd |
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
FPage Weight InventoryAction158 resources · 2.3 MB · 644 KB savings availableFIX
~644.4 KiB of savings available
| # | Resource | Type | Size | Cache | Unused | 3rd party | Issues |
|---|---|---|---|---|---|---|---|
| — | — | ||||||
| 158 resources | 2.3 MiB | ||||||
CImage OptimizationAction47 images, 0 KB saveableREVIEW
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
BHTTP Cachingpublic, max-age=0, s-maxage=604800REVIEW
public, max-age=0, s-maxage=604800
| Directive | Value | Meaning |
|---|---|---|
| public | — | Any cache may store this response |
| max-age | 0 | Cache for 0 seconds |
| s-maxage | 604800 | CDN caches for 1 week |
A+Text CompressionAll text resources are compressedPASS
A+Font Loading4 fonts (14 KB)PASS
Web fonts
4
14 KB total
Render-blocking
0
of 4
Dominant font-display
swap
Most common across fonts
Font loading timeline
- Convert to woff2 for ~30% smaller file size
- Convert to woff2 for ~30% smaller file size
Optimization checklist
- Preload critical fonts (priority=high)
- Use woff2 format for all fonts
- Set font-display to swap, optional, or fallback
- Subset large fonts (≤100 KB each)
Fixing the unchecked items could save ~4 KB and ~8 ms
A+Resource CachingAll resources properly cachedPASS
A+Critical Rendering PathNo render-blocking resourcesPASS
A+Resource Hints20 hints, 0 missing preconnectsPASS
Current Resource Hints
20 resource hints configured
A+Render-Blocking ResourcesNo render-blocking resources detectedPASS
A+Third-Party ResourcesNo third-party resources detectedPASS
A+Green HostingWhether the site is served from green-energy infrastructurePASS
Green Hosting
This site is hosted on green energy infrastructure
Provider: Something Familiar
Network Waterfall158 requests over 3619msINFO
Third-Party Script CostPer-script blocking time, transfer cost, and cache headersINFO
| Script | Category | Execution | Transfer | Unused | Monthly Cost | Verdict |
|---|---|---|---|---|---|---|
Unattributable Unattributable | Other | 1362ms | 0 KB | — | $26/mo | Costly |
Google Tag Manager www.googletagmanager.com | Tag Manager | 1157ms | 185 KB | 32% | $22/mo | Costly |
data:text/javascript;base64,CiAgd2luZG93Ll92d29fY29kZSB8fCAoZnVuY3Rpb24oKSB7CiAgdmFyIGFjY291bnRfaWQ9MTg3Mjc0LAogIHZlcnNpb249Mi4xLAogIHNldHRpbmdzX3RvbGVyYW5jZT0yMDAwLAogIGhpZGVfZWxlbWVudD0nYm9keScsCiAgaGlkZV9lbGVtZW50X3N0eWxlID0gJ29wYWNpdHk6MCAhaW1wb3J0YW50O2ZpbHRlcjphbHBoYShvcGFjaXR5PTApICFpbXBvcnRhbnQ7YmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQnLAogIC8qIERPIE5PVCBFRElUIEJFTE9XIFRISVMgTElORSAqLwogIGY9ZmFsc2Usdz13aW5kb3csZD1kb2N1bWVudCx2PWQucXVlcnlTZWxlY3RvcignI3Z3b0NvZGUnKSxjSz0nX3Z3b18nK2FjY291bnRfaWQrJ19zZXR0aW5ncycsY2M9e307dHJ5e3ZhciBjPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ192d29fJythY2NvdW50X2lkKydfY29uZmlnJykpO2NjPWMmJnR5cGVvZiBjPT09J29iamVjdCc/Yzp7fX1jYXRjaChlKXt9dmFyIHN0VD1jYy5zdFQ9PT0nc2Vzc2lvbic/dy5zZXNzaW9uU3RvcmFnZTp3LmxvY2FsU3RvcmFnZTtjb2RlPXt1c2VfZXhpc3RpbmdfanF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB1c2VfZXhpc3RpbmdfanF1ZXJ5IT09J3VuZGVmaW5lZCc/dXNlX2V4aXN0aW5nX2pxdWVyeTp1bmRlZmluZWR9LGxpYnJhcnlfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBsaWJyYXJ5X3RvbGVyYW5jZSE9PSd1bmRlZmluZWQnP2xpYnJhcnlfdG9sZXJhbmNlOnVuZGVmaW5lZH0sc2V0dGluZ3NfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIGNjLnNUfHxzZXR0aW5nc190b2xlcmFuY2V9LGhpZGVfZWxlbWVudF9zdHlsZTpmdW5jdGlvbigpe3JldHVybid7JysoY2MuaEVTfHxoaWRlX2VsZW1lbnRfc3R5bGUpKyd9J30saGlkZV9lbGVtZW50OmZ1bmN0aW9uKCl7aWYocGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSgnZmlyc3QtY29udGVudGZ1bC1wYWludCcpWzBdKXtyZXR1cm4nJ31yZXR1cm4gdHlwZW9mIGNjLmhFPT09J3N0cmluZyc/Y2MuaEU6aGlkZV9lbGVtZW50fSxnZXRWZXJzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHZlcnNpb259LGZpbmlzaDpmdW5jdGlvbihlKXtpZighZil7Zj10cnVlO3ZhciB0PWQuZ2V0RWxlbWVudEJ5SWQoJ192aXNfb3B0X3BhdGhfaGlkZXMnKTtpZih0KXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtpZihlKShuZXcgSW1hZ2UpLnNyYz0naHR0cHM6Ly9kZXYudmlzdWFsd2Vic2l0ZW9wdGltaXplci5jb20vZWUuZ2lmP2E9JythY2NvdW50X2lkK2V9fSxmaW5pc2hlZDpmdW5jdGlvbigpe3JldHVybiBmfSxhZGRTY3JpcHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTt0LnR5cGU9J3RleHQvamF2YXNjcmlwdCc7aWYoZS5zcmMpe3Quc3JjPWUuc3JjfWVsc2V7dC50ZXh0PWUudGV4dH1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodCl9LGxvYWQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmdldFNldHRpbmdzKCksbj1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLHI9dGhpczt0PXR8fHt9O2lmKGkpe24udGV4dENvbnRlbnQ9aTtkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobik7aWYoIXcuVldPfHxWV08uY2FFKXtzdFQucmVtb3ZlSXRlbShjSyk7ci5sb2FkKGUpfX1lbHNle3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtvLm9wZW4oJ0dFVCcsZSx0cnVlKTtvLndpdGhDcmVkZW50aWFscz0hdC5kU0M7by5yZXNwb25zZVR5cGU9dC5yZXNwb25zZVR5cGV8fCd0ZXh0JztvLm9ubG9hZD1mdW5jdGlvbigpe2lmKHQub25sb2FkQ2Ipe3JldHVybiB0Lm9ubG9hZENiKG8sZSl9aWYoby5zdGF0dXM9PT0yMDApe192d29fY29kZS5hZGRTY3JpcHQoe3RleHQ6by5yZXNwb25zZVRleHR9KX1lbHNle192d29fY29kZS5maW5pc2goJyZlPWxvYWRpbmdfZmFpbHVyZTonK2UpfX07by5vbmVycm9yPWZ1bmN0aW9uKCl7aWYodC5vbmVycm9yQ2Ipe3JldHVybiB0Lm9uZXJyb3JDYihlKX1fdndvX2NvZGUuZmluaXNoKCcmZT1sb2FkaW5nX2ZhaWx1cmU6JytlKX07by5zZW5kKCl9fSxnZXRTZXR0aW5nczpmdW5jdGlvbigpe3RyeXt2YXIgZT1zdFQuZ2V0SXRlbShjSyk7aWYoIWUpe3JldHVybn1lPUpTT04ucGFyc2UoZSk7aWYoRGF0ZS5ub3coKT5lLmUpe3N0VC5yZW1vdmVJdGVtKGNLKTtyZXR1cm59cmV0dXJuIGUuc31jYXRjaChlKXtyZXR1cm59fSxpbml0OmZ1bmN0aW9uKCl7aWYoZC5VUkwuaW5kZXhPZignX192d29fZGlzYWJsZV9fJyk+LTEpcmV0dXJuO3ZhciBlPXRoaXMuc2V0dGluZ3NfdG9sZXJhbmNlKCk7dy5fdndvX3NldHRpbmdzX3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtfdndvX2NvZGUuZmluaXNoKCk7c3RULnJlbW92ZUl0ZW0oY0spfSxlKTt2YXIgdDtpZih0aGlzLmhpZGVfZWxlbWVudCgpIT09J2JvZHknKXt0PWQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTt2YXIgaT10aGlzLmhpZGVfZWxlbWVudCgpLG49aT9pK3RoaXMuaGlkZV9lbGVtZW50X3N0eWxlKCk6Jycscj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dC5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO3YmJnQuc2V0QXR0cmlidXRlKCdub25jZScsdi5ub25jZSk7dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCd0ZXh0L2NzcycpO2lmKHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2UgdC5hcHBlbmRDaGlsZChkLmNyZWF0ZVRleHROb2RlKG4pKTtyLmFwcGVuZENoaWxkKHQpfWVsc2V7dD1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dmFyIG49ZC5jcmVhdGVFbGVtZW50KCdkaXYnKTtuLnN0eWxlLmNzc1RleHQ9J3otaW5kZXg6IDIxNDc0ODM2NDcgIWltcG9ydGFudDtwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtsZWZ0OiAwICFpbXBvcnRhbnQ7dG9wOiAwICFpbXBvcnRhbnQ7d2lkdGg6IDEwMCUgIWltcG9ydGFudDtoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50Oyc7bi5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO24uY2xhc3NMaXN0LmFkZCgnX3Zpc19oaWRlX2xheWVyJyk7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLHQubmV4dFNpYmxpbmcpfXZhciBvPSdodHRwczovL2Rldi52aXN1YWx3ZWJzaXRlb3B0aW1pemVyLmNvbS9qLnBocD9hPScrYWNjb3VudF9pZCsnJnU9JytlbmNvZGVVUklDb21wb25lbnQoZC5VUkwpKycmdm49Jyt2ZXJzaW9uO2lmKHcubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ192d29feGhyJykhPT0tMSl7dGhpcy5hZGRTY3JpcHQoe3NyYzpvfSl9ZWxzZXt0aGlzLmxvYWQobysnJng9dHJ1ZScpfX19O3cuX3Z3b19jb2RlPWNvZGU7Y29kZS5pbml0KCk7fSkoKTsKICA= data:text/javascript;base64,CiAgd2luZG93Ll92d29fY29kZSB8fCAoZnVuY3Rpb24oKSB7CiAgdmFyIGFjY291bnRfaWQ9MTg3Mjc0LAogIHZlcnNpb249Mi4xLAogIHNldHRpbmdzX3RvbGVyYW5jZT0yMDAwLAogIGhpZGVfZWxlbWVudD0nYm9keScsCiAgaGlkZV9lbGVtZW50X3N0eWxlID0gJ29wYWNpdHk6MCAhaW1wb3J0YW50O2ZpbHRlcjphbHBoYShvcGFjaXR5PTApICFpbXBvcnRhbnQ7YmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQnLAogIC8qIERPIE5PVCBFRElUIEJFTE9XIFRISVMgTElORSAqLwogIGY9ZmFsc2Usdz13aW5kb3csZD1kb2N1bWVudCx2PWQucXVlcnlTZWxlY3RvcignI3Z3b0NvZGUnKSxjSz0nX3Z3b18nK2FjY291bnRfaWQrJ19zZXR0aW5ncycsY2M9e307dHJ5e3ZhciBjPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ192d29fJythY2NvdW50X2lkKydfY29uZmlnJykpO2NjPWMmJnR5cGVvZiBjPT09J29iamVjdCc/Yzp7fX1jYXRjaChlKXt9dmFyIHN0VD1jYy5zdFQ9PT0nc2Vzc2lvbic/dy5zZXNzaW9uU3RvcmFnZTp3LmxvY2FsU3RvcmFnZTtjb2RlPXt1c2VfZXhpc3RpbmdfanF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB1c2VfZXhpc3RpbmdfanF1ZXJ5IT09J3VuZGVmaW5lZCc/dXNlX2V4aXN0aW5nX2pxdWVyeTp1bmRlZmluZWR9LGxpYnJhcnlfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBsaWJyYXJ5X3RvbGVyYW5jZSE9PSd1bmRlZmluZWQnP2xpYnJhcnlfdG9sZXJhbmNlOnVuZGVmaW5lZH0sc2V0dGluZ3NfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIGNjLnNUfHxzZXR0aW5nc190b2xlcmFuY2V9LGhpZGVfZWxlbWVudF9zdHlsZTpmdW5jdGlvbigpe3JldHVybid7JysoY2MuaEVTfHxoaWRlX2VsZW1lbnRfc3R5bGUpKyd9J30saGlkZV9lbGVtZW50OmZ1bmN0aW9uKCl7aWYocGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSgnZmlyc3QtY29udGVudGZ1bC1wYWludCcpWzBdKXtyZXR1cm4nJ31yZXR1cm4gdHlwZW9mIGNjLmhFPT09J3N0cmluZyc/Y2MuaEU6aGlkZV9lbGVtZW50fSxnZXRWZXJzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHZlcnNpb259LGZpbmlzaDpmdW5jdGlvbihlKXtpZighZil7Zj10cnVlO3ZhciB0PWQuZ2V0RWxlbWVudEJ5SWQoJ192aXNfb3B0X3BhdGhfaGlkZXMnKTtpZih0KXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtpZihlKShuZXcgSW1hZ2UpLnNyYz0naHR0cHM6Ly9kZXYudmlzdWFsd2Vic2l0ZW9wdGltaXplci5jb20vZWUuZ2lmP2E9JythY2NvdW50X2lkK2V9fSxmaW5pc2hlZDpmdW5jdGlvbigpe3JldHVybiBmfSxhZGRTY3JpcHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTt0LnR5cGU9J3RleHQvamF2YXNjcmlwdCc7aWYoZS5zcmMpe3Quc3JjPWUuc3JjfWVsc2V7dC50ZXh0PWUudGV4dH1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodCl9LGxvYWQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmdldFNldHRpbmdzKCksbj1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLHI9dGhpczt0PXR8fHt9O2lmKGkpe24udGV4dENvbnRlbnQ9aTtkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobik7aWYoIXcuVldPfHxWV08uY2FFKXtzdFQucmVtb3ZlSXRlbShjSyk7ci5sb2FkKGUpfX1lbHNle3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtvLm9wZW4oJ0dFVCcsZSx0cnVlKTtvLndpdGhDcmVkZW50aWFscz0hdC5kU0M7by5yZXNwb25zZVR5cGU9dC5yZXNwb25zZVR5cGV8fCd0ZXh0JztvLm9ubG9hZD1mdW5jdGlvbigpe2lmKHQub25sb2FkQ2Ipe3JldHVybiB0Lm9ubG9hZENiKG8sZSl9aWYoby5zdGF0dXM9PT0yMDApe192d29fY29kZS5hZGRTY3JpcHQoe3RleHQ6by5yZXNwb25zZVRleHR9KX1lbHNle192d29fY29kZS5maW5pc2goJyZlPWxvYWRpbmdfZmFpbHVyZTonK2UpfX07by5vbmVycm9yPWZ1bmN0aW9uKCl7aWYodC5vbmVycm9yQ2Ipe3JldHVybiB0Lm9uZXJyb3JDYihlKX1fdndvX2NvZGUuZmluaXNoKCcmZT1sb2FkaW5nX2ZhaWx1cmU6JytlKX07by5zZW5kKCl9fSxnZXRTZXR0aW5nczpmdW5jdGlvbigpe3RyeXt2YXIgZT1zdFQuZ2V0SXRlbShjSyk7aWYoIWUpe3JldHVybn1lPUpTT04ucGFyc2UoZSk7aWYoRGF0ZS5ub3coKT5lLmUpe3N0VC5yZW1vdmVJdGVtKGNLKTtyZXR1cm59cmV0dXJuIGUuc31jYXRjaChlKXtyZXR1cm59fSxpbml0OmZ1bmN0aW9uKCl7aWYoZC5VUkwuaW5kZXhPZignX192d29fZGlzYWJsZV9fJyk+LTEpcmV0dXJuO3ZhciBlPXRoaXMuc2V0dGluZ3NfdG9sZXJhbmNlKCk7dy5fdndvX3NldHRpbmdzX3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtfdndvX2NvZGUuZmluaXNoKCk7c3RULnJlbW92ZUl0ZW0oY0spfSxlKTt2YXIgdDtpZih0aGlzLmhpZGVfZWxlbWVudCgpIT09J2JvZHknKXt0PWQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTt2YXIgaT10aGlzLmhpZGVfZWxlbWVudCgpLG49aT9pK3RoaXMuaGlkZV9lbGVtZW50X3N0eWxlKCk6Jycscj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dC5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO3YmJnQuc2V0QXR0cmlidXRlKCdub25jZScsdi5ub25jZSk7dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCd0ZXh0L2NzcycpO2lmKHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2UgdC5hcHBlbmRDaGlsZChkLmNyZWF0ZVRleHROb2RlKG4pKTtyLmFwcGVuZENoaWxkKHQpfWVsc2V7dD1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dmFyIG49ZC5jcmVhdGVFbGVtZW50KCdkaXYnKTtuLnN0eWxlLmNzc1RleHQ9J3otaW5kZXg6IDIxNDc0ODM2NDcgIWltcG9ydGFudDtwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtsZWZ0OiAwICFpbXBvcnRhbnQ7dG9wOiAwICFpbXBvcnRhbnQ7d2lkdGg6IDEwMCUgIWltcG9ydGFudDtoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50Oyc7bi5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO24uY2xhc3NMaXN0LmFkZCgnX3Zpc19oaWRlX2xheWVyJyk7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLHQubmV4dFNpYmxpbmcpfXZhciBvPSdodHRwczovL2Rldi52aXN1YWx3ZWJzaXRlb3B0aW1pemVyLmNvbS9qLnBocD9hPScrYWNjb3VudF9pZCsnJnU9JytlbmNvZGVVUklDb21wb25lbnQoZC5VUkwpKycmdm49Jyt2ZXJzaW9uO2lmKHcubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ192d29feGhyJykhPT0tMSl7dGhpcy5hZGRTY3JpcHQoe3NyYzpvfSl9ZWxzZXt0aGlzLmxvYWQobysnJng9dHJ1ZScpfX19O3cuX3Z3b19jb2RlPWNvZGU7Y29kZS5pbml0KCk7fSkoKTsKICA= | Other | 747ms | 0 KB | — | $14/mo | Costly |
Google Tag Manager www.googletagmanager.com | Tag Manager | 392ms | 172 KB | 39% | $7/mo | Costly |
Google Tag Manager www.googletagmanager.com | Tag Manager | 352ms | 158 KB | 41% | $7/mo | Costly |
Google Tag Manager www.googletagmanager.com | Tag Manager | 340ms | 158 KB | 42% | $6/mo | Costly |
Google Tag Manager www.googletagmanager.com | Tag Manager | 320ms | 154 KB | 41% | $6/mo | Costly |
Google Tag Manager www.googletagmanager.com | Tag Manager | 311ms | 147 KB | 42% | $6/mo | Costly |
OneTrust cdn.cookielaw.org | Consent | 309ms | 104 KB | 52% | $6/mo | Essential |
assets.ubembed.com assets.ubembed.com | Other | 267ms | 50 KB | 52% | $5/mo | Costly |
ead777b108aa482aa23c97fd24389aad.js.ubembed.com ead777b108aa482aa23c97fd24389aad.js.ubembed.com | Other | 231ms | 9 KB | — | $4/mo | Costly |
Facebook Pixel connect.facebook.net | Advertising | 216ms | 97 KB | 33% | $4/mo | Costly |
Facebook Pixel connect.facebook.net | Advertising | 173ms | 47 KB | — | $3/mo | Optional |
data:text/javascript;base64,DQoJLyohIGxhenlzaXplcyArIGxzIHVudmVpbGhvb2tzIC0gdjUuMy4xIChpbmNsLiBscy11dmggZGF0YS1saW5rIGZpeCkgKi8NCiFmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQsYSl7InVzZSBzdHJpY3QiO3ZhciBuLGk7aWYoZnVuY3Rpb24oKXt2YXIgdCxhPXtsYXp5Q2xhc3M6Imxhenlsb2FkIixsb2FkZWRDbGFzczoibGF6eWxvYWRlZCIsbG9hZGluZ0NsYXNzOiJsYXp5bG9hZGluZyIscHJlbG9hZENsYXNzOiJsYXp5cHJlbG9hZCIsZXJyb3JDbGFzczoibGF6eWVycm9yIixhdXRvc2l6ZXNDbGFzczoibGF6eWF1dG9zaXplcyIsZmFzdExvYWRlZENsYXNzOiJscy1pcy1jYWNoZWQiLGlmcmFtZUxvYWRNb2RlOjAsc3JjQXR0cjoiZGF0YS1zcmMiLHNyY3NldEF0dHI6ImRhdGEtc3Jjc2V0IixzaXplc0F0dHI6ImRhdGEtc2l6ZXMiLG1pblNpemU6NDAsY3VzdG9tTWVkaWE6e30saW5pdDohMCxleHBGYWN0b3I6MS41LGhGYWM6LjgsbG9hZE1vZGU6Mixsb2FkSGlkZGVuOiEwLHJpY1RpbWVvdXQ6MCx0aHJvdHRsZURlbGF5OjEyNX07Zm9yKHQgaW4gaT1lLmxhenlTaXplc0NvbmZpZ3x8ZS5sYXp5c2l6ZXNDb25maWd8fHt9LGEpdCBpbiBpfHwoaVt0XT1hW3RdKX0oKSwhdHx8IXQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm57aW5pdDpmdW5jdGlvbigpe30sY2ZnOmksbm9TdXBwb3J0OiEwfTt2YXIgcj10LmRvY3VtZW50RWxlbWVudCxvPWUuSFRNTFBpY3R1cmVFbGVtZW50LGw9ImFkZEV2ZW50TGlzdGVuZXIiLHM9ImdldEF0dHJpYnV0ZSIsZD1lW2xdLmJpbmQoZSksdT1lLnNldFRpbWVvdXQsYz1lLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8dSxmPWUucmVxdWVzdElkbGVDYWxsYmFjayxtPS9ecGljdHVyZSQvaSx5PVsibG9hZCIsImVycm9yIiwibGF6eWluY2x1ZGVkIiwiX2xhenlsb2FkZWQiXSx6PXt9LGc9QXJyYXkucHJvdG90eXBlLmZvckVhY2gsdj1mdW5jdGlvbihlLHQpe3JldHVybiB6W3RdfHwoelt0XT1uZXcgUmVnRXhwKCIoXFxzfF4pIit0KyIoXFxzfCQpIikpLHpbdF0udGVzdChlW3NdKCJjbGFzcyIpfHwiIikmJnpbdF19LHA9ZnVuY3Rpb24oZSx0KXt2KGUsdCl8fGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGVbc10oImNsYXNzIil8fCIiKS50cmltKCkrIiAiK3QpfSxoPWZ1bmN0aW9uKGUsdCl7dmFyIGE7KGE9dihlLHQpKSYmZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwoZVtzXSgiY2xhc3MiKXx8IiIpLnJlcGxhY2UoYSwiICIpKX0sYj1mdW5jdGlvbihlLHQsYSl7dmFyIG49YT9sOiJyZW1vdmVFdmVudExpc3RlbmVyIjthJiZiKGUsdCkseS5mb3JFYWNoKChmdW5jdGlvbihhKXtlW25dKGEsdCl9KSl9LEM9ZnVuY3Rpb24oZSxhLGkscixvKXt2YXIgbD10LmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiBpfHwoaT17fSksaS5pbnN0YW5jZT1uLGwuaW5pdEV2ZW50KGEsIXIsIW8pLGwuZGV0YWlsPWksZS5kaXNwYXRjaEV2ZW50KGwpLGx9LEE9ZnVuY3Rpb24odCxhKXt2YXIgbjshbyYmKG49ZS5waWN0dXJlZmlsbHx8aS5wZik/KGEmJmEuc3JjJiYhdFtzXSgic3Jjc2V0IikmJnQuc2V0QXR0cmlidXRlKCJzcmNzZXQiLGEuc3JjKSxuKHtyZWV2YWx1YXRlOiEwLGVsZW1lbnRzOlt0XX0pKTphJiZhLnNyYyYmKHQuc3JjPWEuc3JjKX0sRT1mdW5jdGlvbihlLHQpe3JldHVybihnZXRDb21wdXRlZFN0eWxlKGUsbnVsbCl8fHt9KVt0XX0sXz1mdW5jdGlvbihlLHQsYSl7Zm9yKGE9YXx8ZS5vZmZzZXRXaWR0aDthPGkubWluU2l6ZSYmdCYmIWUuX2xhenlzaXplc1dpZHRoOylhPXQub2Zmc2V0V2lkdGgsdD10LnBhcmVudE5vZGU7cmV0dXJuIGF9LEw9ZnVuY3Rpb24oKXt2YXIgZSxhLG49W10saT1bXSxyPW4sbz1mdW5jdGlvbigpe3ZhciB0PXI7Zm9yKHI9bi5sZW5ndGg/aTpuLGU9ITAsYT0hMTt0Lmxlbmd0aDspdC5zaGlmdCgpKCk7ZT0hMX0sbD1mdW5jdGlvbihuLGkpe2UmJiFpP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOihyLnB1c2gobiksYXx8KGE9ITAsKHQuaGlkZGVuP3U6YykobykpKX07cmV0dXJuIGwuX2xzRmx1c2g9byxsfSgpLHc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9mdW5jdGlvbigpe0woZSl9OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxhPWFyZ3VtZW50cztMKChmdW5jdGlvbigpe2UuYXBwbHkodCxhKX0pKX19LE49ZnVuY3Rpb24oZSl7dmFyIHQsbj0wLHI9aS50aHJvdHRsZURlbGF5LG89aS5yaWNUaW1lb3V0LGw9ZnVuY3Rpb24oKXt0PSExLG49YS5ub3coKSxlKCl9LHM9ZiYmbz40OT9mdW5jdGlvbigpe2YobCx7dGltZW91dDpvfSksbyE9PWkucmljVGltZW91dCYmKG89aS5yaWNUaW1lb3V0KX06dygoZnVuY3Rpb24oKXt1KGwpfSksITApO3JldHVybiBmdW5jdGlvbihlKXt2YXIgaTsoZT0hMD09PWUpJiYobz0zMyksdHx8KHQ9ITAsKGk9ci0oYS5ub3coKS1uKSk8MCYmKGk9MCksZXx8aTw5P3MoKTp1KHMsaSkpfX0sTT1mdW5jdGlvbihlKXt2YXIgdCxuLGk9ZnVuY3Rpb24oKXt0PW51bGwsZSgpfSxyPWZ1bmN0aW9uKCl7dmFyIGU9YS5ub3coKS1uO2U8OTk/dShyLDk5LWUpOihmfHxpKShpKX07cmV0dXJuIGZ1bmN0aW9uKCl7bj1hLm5vdygpLHR8fCh0PXUociw5OSkpfX0seD1mdW5jdGlvbigpe3ZhciBvLGYseSx6LF8seCxCLFcsVCxGLGsscSxSPS9eaW1nJC9pLEQ9L15pZnJhbWUkL2ksTz0ib25zY3JvbGwiaW4gZSYmIS8oZ2xlfGluZylib3QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksUD0wLEg9MCwkPS0xLEk9ZnVuY3Rpb24oZSl7SC0tLCghZXx8SDwwfHwhZS50YXJnZXQpJiYoSD0wKX0sSj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09cSYmKHE9ImhpZGRlbiI9PUUodC5ib2R5LCJ2aXNpYmlsaXR5IikpLHF8fCEoImhpZGRlbiI9PUUoZS5wYXJlbnROb2RlLCJ2aXNpYmlsaXR5IikmJiJoaWRkZW4iPT1FKGUsInZpc2liaWxpdHkiKSl9LGo9ZnVuY3Rpb24oZSxhKXt2YXIgbixpPWUsbz1KKGUpO2ZvcihXLT1hLGsrPWEsVC09YSxGKz1hO28mJihpPWkub2Zmc2V0UGFyZW50KSYmaSE9dC5ib2R5JiZpIT1yOykobz0oRShpLCJvcGFjaXR5Iil8fDEpPjApJiYidmlzaWJsZSIhPUUoaSwib3ZlcmZsb3ciKSYmKG49aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPUY+bi5sZWZ0JiZUPG4ucmlnaHQmJms+bi50b3AtMSYmVzxuLmJvdHRvbSsxKTtyZXR1cm4gb30sVT1mdW5jdGlvbigpe3ZhciBlLGEsbCxkLHUsYyxtLHksZyx2LHAsaCxiPW4uZWxlbWVudHM7aWYoKHo9aS5sb2FkTW9kZSkmJkg8OCYmKGU9Yi5sZW5ndGgpKXtmb3IoYT0wLCQrKzthPGU7YSsrKWlmKGJbYV0mJiFiW2FdLl9sYXp5UmFjZSlpZighT3x8bi5wcmVtYXR1cmVVbnZlaWwmJm4ucHJlbWF0dXJlVW52ZWlsKGJbYV0pKVooYlthXSk7ZWxzZSBpZigoeT1iW2FdW3NdKCJkYXRhLWV4cGFuZCIpKSYmKGM9MSp5KXx8KGM9UCksdnx8KHY9IWkuZXhwYW5kfHxpLmV4cGFuZDwxP3IuY2xpZW50SGVpZ2h0PjUwMCYmci5jbGllbnRXaWR0aD41MDA/NTAwOjM3MDppLmV4cGFuZCxuLl9kZWZFeD12LHA9dippLmV4cEZhY3RvcixoPWkuaEZhYyxxPW51bGwsUDxwJiZIPDEmJiQ+MiYmej4yJiYhdC5oaWRkZW4/KFA9cCwkPTApOlA9ej4xJiYkPjEmJkg8Nj92OjApLGchPT1jJiYoeD1pbm5lcldpZHRoK2MqaCxCPWlubmVySGVpZ2h0K2MsbT0tMSpjLGc9YyksbD1iW2FdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLChrPWwuYm90dG9tKT49bSYmKFc9bC50b3ApPD1CJiYoRj1sLnJpZ2h0KT49bSpoJiYoVD1sLmxlZnQpPD14JiYoa3x8Rnx8VHx8VykmJihpLmxvYWRIaWRkZW58fEooYlthXSkpJiYoZiYmSDwzJiYheSYmKHo8M3x8JDw0KXx8aihiW2FdLGMpKSl7aWYoWihiW2FdKSx1PSEwLEg+OSlicmVha31lbHNlIXUmJmYmJiFkJiZIPDQmJiQ8NCYmej4yJiYob1swXXx8aS5wcmVsb2FkQWZ0ZXJMb2FkKSYmKG9bMF18fCF5JiYoa3x8Rnx8VHx8V3x8ImF1dG8iIT1iW2FdW3NdKGkuc2l6ZXNBdHRyKSkpJiYoZD1vWzBdfHxiW2FdKTtkJiYhdSYmWihkKX19LEc9TihVKSxLPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O3QuX2xhenlDYWNoZT9kZWxldGUgdC5fbGF6eUNhY2hlOihJKGUpLHAodCxpLmxvYWRlZENsYXNzKSxoKHQsaS5sb2FkaW5nQ2xhc3MpLGIodCxWKSxDKHQsImxhenlsb2FkZWQiKSl9LFE9dyhLKSxWPWZ1bmN0aW9uKGUpe1Eoe3RhcmdldDplLnRhcmdldH0pfSxYPWZ1bmN0aW9uKGUpe3ZhciB0LGE9ZVtzXShpLnNyY3NldEF0dHIpOyh0PWkuY3VzdG9tTWVkaWFbZVtzXSgiZGF0YS1tZWRpYSIpfHxlW3NdKCJtZWRpYSIpXSkmJmUuc2V0QXR0cmlidXRlKCJtZWRpYSIsdCksYSYmZS5zZXRBdHRyaWJ1dGUoInNyY3NldCIsYSl9LFk9dygoZnVuY3Rpb24oZSx0LGEsbixyKXt2YXIgbyxsLGQsYyxmLHo7KGY9QyhlLCJsYXp5YmVmb3JldW52ZWlsIix0KSkuZGVmYXVsdFByZXZlbnRlZHx8KG4mJihhP3AoZSxpLmF1dG9zaXplc0NsYXNzKTplLnNldEF0dHJpYnV0ZSgic2l6ZXMiLG4pKSxsPWVbc10oaS5zcmNzZXRBdHRyKSxvPWVbc10oaS5zcmNBdHRyKSxyJiYoYz0oZD1lLnBhcmVudE5vZGUpJiZtLnRlc3QoZC5ub2RlTmFtZXx8IiIpKSx6PXQuZmlyZXNMb2FkfHwic3JjImluIGUmJihsfHxvfHxjKSxmPXt0YXJnZXQ6ZX0scChlLGkubG9hZGluZ0NsYXNzKSx6JiYoY2xlYXJUaW1lb3V0KHkpLHk9dShJLDI1MDApLGIoZSxWLCEwKSksYyYmZy5jYWxsKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNvdXJjZSIpLFgpLGw/ZS5zZXRBdHRyaWJ1dGUoInNyY3NldCIsbCk6byYmIWMmJihELnRlc3QoZS5ub2RlTmFtZSk/ZnVuY3Rpb24oZSx0KXt2YXIgYT1lLmdldEF0dHJpYnV0ZSgiZGF0YS1sb2FkLW1vZGUiKXx8aS5pZnJhbWVMb2FkTW9kZTswPT1hP2UuY29udGVudFdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHQpOjE9PWEmJihlLnNyYz10KX0oZSxvKTplLnNyYz1vKSxyJiYobHx8YykmJkEoZSx7c3JjOm99KSksZS5fbGF6eVJhY2UmJmRlbGV0ZSBlLl9sYXp5UmFjZSxoKGUsaS5sYXp5Q2xhc3MpLEwoKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5jb21wbGV0ZSYmZS5uYXR1cmFsV2lkdGg+MTt6JiYhdHx8KHQmJnAoZSxpLmZhc3RMb2FkZWRDbGFzcyksSyhmKSxlLl9sYXp5Q2FjaGU9ITAsdSgoZnVuY3Rpb24oKXsiX2xhenlDYWNoZSJpbiBlJiZkZWxldGUgZS5fbGF6eUNhY2hlfSksOSkpLCJsYXp5Ij09ZS5sb2FkaW5nJiZILS19KSwhMCl9KSksWj1mdW5jdGlvbihlKXtpZighZS5fbGF6eVJhY2Upe3ZhciB0LGE9Ui50ZXN0KGUubm9kZU5hbWUpLG49YSYmKGVbc10oaS5zaXplc0F0dHIpfHxlW3NdKCJzaXplcyIpKSxyPSJhdXRvIj09bjsoIXImJmZ8fCFhfHwhZVtzXSgic3JjIikmJiFlLnNyY3NldHx8ZS5jb21wbGV0ZXx8dihlLGkuZXJyb3JDbGFzcyl8fCF2KGUsaS5sYXp5Q2xhc3MpKSYmKHQ9QyhlLCJsYXp5dW52ZWlscmVhZCIpLmRldGFpbCxyJiZTLnVwZGF0ZUVsZW0oZSwhMCxlLm9mZnNldFdpZHRoKSxlLl9sYXp5UmFjZT0hMCxIKyssWShlLHQscixuLGEpKX19LGVlPU0oKGZ1bmN0aW9uKCl7aS5sb2FkTW9kZT0zLEcoKX0pKSx0ZT1mdW5jdGlvbigpezM9PWkubG9hZE1vZGUmJihpLmxvYWRNb2RlPTIpLGVlKCl9LGFlPWZ1bmN0aW9uKCl7Znx8KGEubm93KCktXzw5OTk/dShhZSw5OTkpOihmPSEwLGkubG9hZE1vZGU9MyxHKCksZCgic2Nyb2xsIix0ZSwhMCkpKX07cmV0dXJue186ZnVuY3Rpb24oKXtfPWEubm93KCksbi5lbGVtZW50cz10LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaS5sYXp5Q2xhc3MpLG89dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkubGF6eUNsYXNzKyIgIitpLnByZWxvYWRDbGFzcyksZCgic2Nyb2xsIixHLCEwKSxkKCJyZXNpemUiLEcsITApLGQoInBhZ2VzaG93IiwoZnVuY3Rpb24oZSl7aWYoZS5wZXJzaXN0ZWQpe3ZhciBhPXQucXVlcnlTZWxlY3RvckFsbCgiLiIraS5sb2FkaW5nQ2xhc3MpO2EubGVuZ3RoJiZhLmZvckVhY2gmJmMoKGZ1bmN0aW9uKCl7YS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNvbXBsZXRlJiZaKGUpfSkpfSkpfX0pKSxlLk11dGF0aW9uT2JzZXJ2ZXI/bmV3IE11dGF0aW9uT2JzZXJ2ZXIoRykub2JzZXJ2ZShyLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxhdHRyaWJ1dGVzOiEwfSk6KHJbbF0oIkRPTU5vZGVJbnNlcnRlZCIsRywhMCkscltsXSgiRE9NQXR0ck1vZGlmaWVkIixHLCEwKSxzZXRJbnRlcnZhbChHLDk5OSkpLGQoImhhc2hjaGFuZ2UiLEcsITApLFsiZm9jdXMiLCJtb3VzZW92ZXIiLCJjbGljayIsImxvYWQiLCJ0cmFuc2l0aW9uZW5kIiwiYW5pbWF0aW9uZW5kIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtsXShlLEcsITApfSkpLC9kJHxeYy8udGVzdCh0LnJlYWR5U3RhdGUpP2FlKCk6KGQoImxvYWQiLGFlKSx0W2xdKCJET01Db250ZW50TG9hZGVkIixHKSx1KGFlLDJlNCkpLG4uZWxlbWVudHMubGVuZ3RoPyhVKCksTC5fbHNGbHVzaCgpKTpHKCl9LGNoZWNrRWxlbXM6Ryx1bnZlaWw6WixfYUxTTDp0ZX19KCksUz1mdW5jdGlvbigpe3ZhciBlLGE9dygoZnVuY3Rpb24oZSx0LGEsbil7dmFyIGkscixvO2lmKGUuX2xhenlzaXplc1dpZHRoPW4sbis9InB4IixlLnNldEF0dHJpYnV0ZSgic2l6ZXMiLG4pLG0udGVzdCh0Lm5vZGVOYW1lfHwiIikpZm9yKHI9MCxvPShpPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNvdXJjZSIpKS5sZW5ndGg7cjxvO3IrKylpW3JdLnNldEF0dHJpYnV0ZSgic2l6ZXMiLG4pO2EuZGV0YWlsLmRhdGFBdHRyfHxBKGUsYS5kZXRhaWwpfSkpLG49ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHI9ZS5wYXJlbnROb2RlO3ImJihuPV8oZSxyLG4pLChpPUMoZSwibGF6eWJlZm9yZXNpemVzIix7d2lkdGg6bixkYXRhQXR0cjohIXR9KSkuZGVmYXVsdFByZXZlbnRlZHx8KG49aS5kZXRhaWwud2lkdGgpJiZuIT09ZS5fbGF6eXNpemVzV2lkdGgmJmEoZSxyLGksbikpfSxyPU0oKGZ1bmN0aW9uKCl7dmFyIHQsYT1lLmxlbmd0aDtpZihhKWZvcih0PTA7dDxhO3QrKyluKGVbdF0pfSkpO3JldHVybntfOmZ1bmN0aW9uKCl7ZT10LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaS5hdXRvc2l6ZXNDbGFzcyksZCgicmVzaXplIixyKX0sY2hlY2tFbGVtczpyLHVwZGF0ZUVsZW06bn19KCksQj1mdW5jdGlvbigpeyFCLmkmJnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmKEIuaT0hMCxTLl8oKSx4Ll8oKSl9O3JldHVybiB1KChmdW5jdGlvbigpe2kuaW5pdCYmQigpfSkpLG49e2NmZzppLGF1dG9TaXplcjpTLGxvYWRlcjp4LGluaXQ6Qix1UDpBLGFDOnAsckM6aCxoQzp2LGZpcmU6QyxnVzpfLHJBRjpMfX0oZSxlLmRvY3VtZW50LERhdGUpO2UubGF6eVNpemVzPXQsIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9dCl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSksZnVuY3Rpb24oZSx0KXt2YXIgYT1mdW5jdGlvbigpe3QoZS5sYXp5U2l6ZXMpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibGF6eXVudmVpbHJlYWQiLGEsITApfTt0PXQuYmluZChudWxsLGUsZS5kb2N1bWVudCksIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP3QocmVxdWlyZSgibGF6eXNpemVzIikpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsibGF6eXNpemVzIl0sdCk6ZS5sYXp5U2l6ZXM/YSgpOmUuYWRkRXZlbnRMaXN0ZW5lcigibGF6eXVudmVpbHJlYWQiLGEsITApfSh3aW5kb3csKGZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7dmFyIG4saSxyPXt9O2Z1bmN0aW9uIG8oZSxhLG4pe3ZhciBpLG87cltlXXx8KGk9dC5jcmVhdGVFbGVtZW50KGE/ImxpbmsiOiJzY3JpcHQiKSxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdLGE/KGkucmVsPSJzdHlsZXNoZWV0IixpLmhyZWY9ZSk6KGkub25sb2FkPWZ1bmN0aW9uKCl7aS5vbmVycm9yPW51bGwsaS5vbmxvYWQ9bnVsbCxuKCl9LGkub25lcnJvcj1pLm9ubG9hZCxpLnNyYz1lKSxyW2VdPSEwLHJbaS5zcmN8fGkuaHJlZl09ITAsby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLG8pKX10LmFkZEV2ZW50TGlzdGVuZXImJihuPWZ1bmN0aW9uKGUsYSl7dmFyIG49dC5jcmVhdGVFbGVtZW50KCJpbWciKTtuLm9ubG9hZD1mdW5jdGlvbigpe24ub25sb2FkPW51bGwsbi5vbmVycm9yPW51bGwsbj1udWxsLGEoKX0sbi5vbmVycm9yPW4ub25sb2FkLG4uc3JjPWUsbiYmbi5jb21wbGV0ZSYmbi5vbmxvYWQmJm4ub25sb2FkKCl9LGFkZEV2ZW50TGlzdGVuZXIoImxhenliZWZvcmV1bnZlaWwiLChmdW5jdGlvbihlKXt2YXIgdCxyLGw7aWYoZS5kZXRhaWwuaW5zdGFuY2U9PWEmJiFlLmRlZmF1bHRQcmV2ZW50ZWQpe3ZhciBzPWUudGFyZ2V0O2lmKCJub25lIj09cy5wcmVsb2FkJiYocy5wcmVsb2FkPXMuZ2V0QXR0cmlidXRlKCJkYXRhLXByZWxvYWQiKXx8ImF1dG8iKSxudWxsIT1zLmdldEF0dHJpYnV0ZSgiZGF0YS1hdXRvcGxheSIpKWlmKHMuZ2V0QXR0cmlidXRlKCJkYXRhLWV4cGFuZCIpJiYhcy5hdXRvcGxheSl0cnl7cy5wbGF5KCl9Y2F0Y2goZSl7fWVsc2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3Muc2V0QXR0cmlidXRlKCJkYXRhLWV4cGFuZCIsIi0xMCIpLGEuYUMocyxhLmNmZy5sYXp5Q2xhc3MpfSkpOyh0PXMuZ2V0QXR0cmlidXRlKCJkYXRhLWxpbmsiKSkmJiJpbWciIT1zLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmbyh0LCEwKSwodD1zLmdldEF0dHJpYnV0ZSgiZGF0YS1zY3JpcHQiKSkmJihlLmRldGFpbC5maXJlc0xvYWQ9ITAsbyh0LG51bGwsKGZ1bmN0aW9uKCl7ZS5kZXRhaWwuZmlyZXNMb2FkPSExLGEuZmlyZShzLCJfbGF6eWxvYWRlZCIse30sITAsITApfSkpKSwodD1zLmdldEF0dHJpYnV0ZSgiZGF0YS1yZXF1aXJlIikpJiYoYS5jZmcucmVxdWlyZUpzP2EuY2ZnLnJlcXVpcmVKcyhbdF0pOm8odCkpLChyPXMuZ2V0QXR0cmlidXRlKCJkYXRhLWJnIikpJiYoZS5kZXRhaWwuZmlyZXNMb2FkPSEwLG4ociwoZnVuY3Rpb24oKXtzLnN0eWxlLmJhY2tncm91bmRJbWFnZT0idXJsKCIrKGkudGVzdChyKT9KU09OLnN0cmluZ2lmeShyKTpyKSsiKSIsZS5kZXRhaWwuZmlyZXNMb2FkPSExLGEuZmlyZShzLCJfbGF6eWxvYWRlZCIse30sITAsITApfSkpKSwobD1zLmdldEF0dHJpYnV0ZSgiZGF0YS1wb3N0ZXIiKSkmJihlLmRldGFpbC5maXJlc0xvYWQ9ITAsbihsLChmdW5jdGlvbigpe3MucG9zdGVyPWwsZS5kZXRhaWwuZmlyZXNMb2FkPSExLGEuZmlyZShzLCJfbGF6eWxvYWRlZCIse30sITAsITApfSkpKX19KSwhKGk9L1wofFwpfFxzfCcvKSkpfSkpOw0K data:text/javascript;base64,DQoJLyohIGxhenlzaXplcyArIGxzIHVudmVpbGhvb2tzIC0gdjUuMy4xIChpbmNsLiBscy11dmggZGF0YS1saW5rIGZpeCkgKi8NCiFmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQsYSl7InVzZSBzdHJpY3QiO3ZhciBuLGk7aWYoZnVuY3Rpb24oKXt2YXIgdCxhPXtsYXp5Q2xhc3M6Imxhenlsb2FkIixsb2FkZWRDbGFzczoibGF6eWxvYWRlZCIsbG9hZGluZ0NsYXNzOiJsYXp5bG9hZGluZyIscHJlbG9hZENsYXNzOiJsYXp5cHJlbG9hZCIsZXJyb3JDbGFzczoibGF6eWVycm9yIixhdXRvc2l6ZXNDbGFzczoibGF6eWF1dG9zaXplcyIsZmFzdExvYWRlZENsYXNzOiJscy1pcy1jYWNoZWQiLGlmcmFtZUxvYWRNb2RlOjAsc3JjQXR0cjoiZGF0YS1zcmMiLHNyY3NldEF0dHI6ImRhdGEtc3Jjc2V0IixzaXplc0F0dHI6ImRhdGEtc2l6ZXMiLG1pblNpemU6NDAsY3VzdG9tTWVkaWE6e30saW5pdDohMCxleHBGYWN0b3I6MS41LGhGYWM6LjgsbG9hZE1vZGU6Mixsb2FkSGlkZGVuOiEwLHJpY1RpbWVvdXQ6MCx0aHJvdHRsZURlbGF5OjEyNX07Zm9yKHQgaW4gaT1lLmxhenlTaXplc0NvbmZpZ3x8ZS5sYXp5c2l6ZXNDb25maWd8fHt9LGEpdCBpbiBpfHwoaVt0XT1hW3RdKX0oKSwhdHx8IXQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm57aW5pdDpmdW5jdGlvbigpe30sY2ZnOmksbm9TdXBwb3J0OiEwfTt2YXIgcj10LmRvY3VtZW50RWxlbWVudCxvPWUuSFRNTFBpY3R1cmVFbGVtZW50LGw9ImFkZEV2ZW50TGlzdGVuZXIiLHM9ImdldEF0dHJpYnV0ZSIsZD1lW2xdLmJpbmQoZSksdT1lLnNldFRpbWVvdXQsYz1lLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8dSxmPWUucmVxdWVzdElkbGVDYWxsYmFjayxtPS9ecGljdHVyZSQvaSx5PVsibG9hZCIsImVycm9yIiwibGF6eWluY2x1ZGVkIiwiX2xhenlsb2FkZWQiXSx6PXt9LGc9QXJyYXkucHJvdG90eXBlLmZvckVhY2gsdj1mdW5jdGlvbihlLHQpe3JldHVybiB6W3RdfHwoelt0XT1uZXcgUmVnRXhwKCIoXFxzfF4pIit0KyIoXFxzfCQpIikpLHpbdF0udGVzdChlW3NdKCJjbGFzcyIpfHwiIikmJnpbdF19LHA9ZnVuY3Rpb24oZSx0KXt2KGUsdCl8fGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGVbc10oImNsYXNzIil8fCIiKS50cmltKCkrIiAiK3QpfSxoPWZ1bmN0aW9uKGUsdCl7dmFyIGE7KGE9dihlLHQpKSYmZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwoZVtzXSgiY2xhc3MiKXx8IiIpLnJlcGxhY2UoYSwiICIpKX0sYj1mdW5jdGlvbihlLHQsYSl7dmFyIG49YT9sOiJyZW1vdmVFdmVudExpc3RlbmVyIjthJiZiKGUsdCkseS5mb3JFYWNoKChmdW5jdGlvbihhKXtlW25dKGEsdCl9KSl9LEM9ZnVuY3Rpb24oZSxhLGkscixvKXt2YXIgbD10LmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiBpfHwoaT17fSksaS5pbnN0YW5jZT1uLGwuaW5pdEV2ZW50KGEsIXIsIW8pLGwuZGV0YWlsPWksZS5kaXNwYXRjaEV2ZW50KGwpLGx9LEE9ZnVuY3Rpb24odCxhKXt2YXIgbjshbyYmKG49ZS5waWN0dXJlZmlsbHx8aS5wZik/KGEmJmEuc3JjJiYhdFtzXSgic3Jjc2V0IikmJnQuc2V0QXR0cmlidXRlKCJzcmNzZXQiLGEuc3JjKSxuKHtyZWV2YWx1YXRlOiEwLGVsZW1lbnRzOlt0XX0pKTphJiZhLnNyYyYmKHQuc3JjPWEuc3JjKX0sRT1mdW5jdGlvbihlLHQpe3JldHVybihnZXRDb21wdXRlZFN0eWxlKGUsbnVsbCl8fHt9KVt0XX0sXz1mdW5jdGlvbihlLHQsYSl7Zm9yKGE9YXx8ZS5vZmZzZXRXaWR0aDthPGkubWluU2l6ZSYmdCYmIWUuX2xhenlzaXplc1dpZHRoOylhPXQub2Zmc2V0V2lkdGgsdD10LnBhcmVudE5vZGU7cmV0dXJuIGF9LEw9ZnVuY3Rpb24oKXt2YXIgZSxhLG49W10saT1bXSxyPW4sbz1mdW5jdGlvbigpe3ZhciB0PXI7Zm9yKHI9bi5sZW5ndGg/aTpuLGU9ITAsYT0hMTt0Lmxlbmd0aDspdC5zaGlmdCgpKCk7ZT0hMX0sbD1mdW5jdGlvbihuLGkpe2UmJiFpP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOihyLnB1c2gobiksYXx8KGE9ITAsKHQuaGlkZGVuP3U6YykobykpKX07cmV0dXJuIGwuX2xzRmx1c2g9byxsfSgpLHc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9mdW5jdGlvbigpe0woZSl9OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxhPWFyZ3VtZW50cztMKChmdW5jdGlvbigpe2UuYXBwbHkodCxhKX0pKX19LE49ZnVuY3Rpb24oZSl7dmFyIHQsbj0wLHI9aS50aHJvdHRsZURlbGF5LG89aS5yaWNUaW1lb3V0LGw9ZnVuY3Rpb24oKXt0PSExLG49YS5ub3coKSxlKCl9LHM9ZiYmbz40OT9mdW5jdGlvbigpe2YobCx7dGltZW91dDpvfSksbyE9PWkucmljVGltZW91dCYmKG89aS5yaWNUaW1lb3V0KX06dygoZnVuY3Rpb24oKXt1KGwpfSksITApO3JldHVybiBmdW5jdGlvbihlKXt2YXIgaTsoZT0hMD09PWUpJiYobz0zMyksdHx8KHQ9ITAsKGk9ci0oYS5ub3coKS1uKSk8MCYmKGk9MCksZXx8aTw5P3MoKTp1KHMsaSkpfX0sTT1mdW5jdGlvbihlKXt2YXIgdCxuLGk9ZnVuY3Rpb24oKXt0PW51bGwsZSgpfSxyPWZ1bmN0aW9uKCl7dmFyIGU9YS5ub3coKS1uO2U8OTk/dShyLDk5LWUpOihmfHxpKShpKX07cmV0dXJuIGZ1bmN0aW9uKCl7bj1hLm5vdygpLHR8fCh0PXUociw5OSkpfX0seD1mdW5jdGlvbigpe3ZhciBvLGYseSx6LF8seCxCLFcsVCxGLGsscSxSPS9eaW1nJC9pLEQ9L15pZnJhbWUkL2ksTz0ib25zY3JvbGwiaW4gZSYmIS8oZ2xlfGluZylib3QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksUD0wLEg9MCwkPS0xLEk9ZnVuY3Rpb24oZSl7SC0tLCghZXx8SDwwfHwhZS50YXJnZXQpJiYoSD0wKX0sSj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09cSYmKHE9ImhpZGRlbiI9PUUodC5ib2R5LCJ2aXNpYmlsaXR5IikpLHF8fCEoImhpZGRlbiI9PUUoZS5wYXJlbnROb2RlLCJ2aXNpYmlsaXR5IikmJiJoaWRkZW4iPT1FKGUsInZpc2liaWxpdHkiKSl9LGo9ZnVuY3Rpb24oZSxhKXt2YXIgbixpPWUsbz1KKGUpO2ZvcihXLT1hLGsrPWEsVC09YSxGKz1hO28mJihpPWkub2Zmc2V0UGFyZW50KSYmaSE9dC5ib2R5JiZpIT1yOykobz0oRShpLCJvcGFjaXR5Iil8fDEpPjApJiYidmlzaWJsZSIhPUUoaSwib3ZlcmZsb3ciKSYmKG49aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPUY+bi5sZWZ0JiZUPG4ucmlnaHQmJms+bi50b3AtMSYmVzxuLmJvdHRvbSsxKTtyZXR1cm4gb30sVT1mdW5jdGlvbigpe3ZhciBlLGEsbCxkLHUsYyxtLHksZyx2LHAsaCxiPW4uZWxlbWVudHM7aWYoKHo9aS5sb2FkTW9kZSkmJkg8OCYmKGU9Yi5sZW5ndGgpKXtmb3IoYT0wLCQrKzthPGU7YSsrKWlmKGJbYV0mJiFiW2FdLl9sYXp5UmFjZSlpZighT3x8bi5wcmVtYXR1cmVVbnZlaWwmJm4ucHJlbWF0dXJlVW52ZWlsKGJbYV0pKVooYlthXSk7ZWxzZSBpZigoeT1iW2FdW3NdKCJkYXRhLWV4cGFuZCIpKSYmKGM9MSp5KXx8KGM9UCksdnx8KHY9IWkuZXhwYW5kfHxpLmV4cGFuZDwxP3IuY2xpZW50SGVpZ2h0PjUwMCYmci5jbGllbnRXaWR0aD41MDA/NTAwOjM3MDppLmV4cGFuZCxuLl9kZWZFeD12LHA9dippLmV4cEZhY3RvcixoPWkuaEZhYyxxPW51bGwsUDxwJiZIPDEmJiQ+MiYmej4yJiYhdC5oaWRkZW4/KFA9cCwkPTApOlA9ej4xJiYkPjEmJkg8Nj92OjApLGchPT1jJiYoeD1pbm5lcldpZHRoK2MqaCxCPWlubmVySGVpZ2h0K2MsbT0tMSpjLGc9YyksbD1iW2FdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLChrPWwuYm90dG9tKT49bSYmKFc9bC50b3ApPD1CJiYoRj1sLnJpZ2h0KT49bSpoJiYoVD1sLmxlZnQpPD14JiYoa3x8Rnx8VHx8VykmJihpLmxvYWRIaWRkZW58fEooYlthXSkpJiYoZiYmSDwzJiYheSYmKHo8M3x8JDw0KXx8aihiW2FdLGMpKSl7aWYoWihiW2FdKSx1PSEwLEg+OSlicmVha31lbHNlIXUmJmYmJiFkJiZIPDQmJiQ8NCYmej4yJiYob1swXXx8aS5wcmVsb2FkQWZ0ZXJMb2FkKSYmKG9bMF18fCF5JiYoa3x8Rnx8VHx8V3x8ImF1dG8iIT1iW2FdW3NdKGkuc2l6ZXNBdHRyKSkpJiYoZD1vWzBdfHxiW2FdKTtkJiYhdSYmWihkKX19LEc9TihVKSxLPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O3QuX2xhenlDYWNoZT9kZWxldGUgdC5fbGF6eUNhY2hlOihJKGUpLHAodCxpLmxvYWRlZENsYXNzKSxoKHQsaS5sb2FkaW5nQ2xhc3MpLGIodCxWKSxDKHQsImxhenlsb2FkZWQiKSl9LFE9dyhLKSxWPWZ1bmN0aW9uKGUpe1Eoe3RhcmdldDplLnRhcmdldH0pfSxYPWZ1bmN0aW9uKGUpe3ZhciB0LGE9ZVtzXShpLnNyY3NldEF0dHIpOyh0PWkuY3VzdG9tTWVkaWFbZVtzXSgiZGF0YS1tZWRpYSIpfHxlW3NdKCJtZWRpYSIpXSkmJmUuc2V0QXR0cmlidXRlKCJtZWRpYSIsdCksYSYmZS5zZXRBdHRyaWJ1dGUoInNyY3NldCIsYSl9LFk9dygoZnVuY3Rpb24oZSx0LGEsbixyKXt2YXIgbyxsLGQsYyxmLHo7KGY9QyhlLCJsYXp5YmVmb3JldW52ZWlsIix0KSkuZGVmYXVsdFByZXZlbnRlZHx8KG4mJihhP3AoZSxpLmF1dG9zaXplc0NsYXNzKTplLnNldEF0dHJpYnV0ZSgic2l6ZXMiLG4pKSxsPWVbc10oaS5zcmNzZXRBdHRyKSxvPWVbc10oaS5zcmNBdHRyKSxyJiYoYz0oZD1lLnBhcmVudE5vZGUpJiZtLnRlc3QoZC5ub2RlTmFtZXx8IiIpKSx6PXQuZmlyZXNMb2FkfHwic3JjImluIGUmJihsfHxvfHxjKSxmPXt0YXJnZXQ6ZX0scChlLGkubG9hZGluZ0NsYXNzKSx6JiYoY2xlYXJUaW1lb3V0KHkpLHk9dShJLDI1MDApLGIoZSxWLCEwKSksYyYmZy5jYWxsKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNvdXJjZSIpLFgpLGw/ZS5zZXRBdHRyaWJ1dGUoInNyY3NldCIsbCk6byYmIWMmJihELnRlc3QoZS5ub2RlTmFtZSk/ZnVuY3Rpb24oZSx0KXt2YXIgYT1lLmdldEF0dHJpYnV0ZSgiZGF0YS1sb2FkLW1vZGUiKXx8aS5pZnJhbWVMb2FkTW9kZTswPT1hP2UuY29udGVudFdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHQpOjE9PWEmJihlLnNyYz10KX0oZSxvKTplLnNyYz1vKSxyJiYobHx8YykmJkEoZSx7c3JjOm99KSksZS5fbGF6eVJhY2UmJmRlbGV0ZSBlLl9sYXp5UmFjZSxoKGUsaS5sYXp5Q2xhc3MpLEwoKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5jb21wbGV0ZSYmZS5uYXR1cmFsV2lkdGg+MTt6JiYhdHx8KHQmJnAoZSxpLmZhc3RMb2FkZWRDbGFzcyksSyhmKSxlLl9sYXp5Q2FjaGU9ITAsdSgoZnVuY3Rpb24oKXsiX2xhenlDYWNoZSJpbiBlJiZkZWxldGUgZS5fbGF6eUNhY2hlfSksOSkpLCJsYXp5Ij09ZS5sb2FkaW5nJiZILS19KSwhMCl9KSksWj1mdW5jdGlvbihlKXtpZighZS5fbGF6eVJhY2Upe3ZhciB0LGE9Ui50ZXN0KGUubm9kZU5hbWUpLG49YSYmKGVbc10oaS5zaXplc0F0dHIpfHxlW3NdKCJzaXplcyIpKSxyPSJhdXRvIj09bjsoIXImJmZ8fCFhfHwhZVtzXSgic3JjIikmJiFlLnNyY3NldHx8ZS5jb21wbGV0ZXx8dihlLGkuZXJyb3JDbGFzcyl8fCF2KGUsaS5sYXp5Q2xhc3MpKSYmKHQ9QyhlLCJsYXp5dW52ZWlscmVhZCIpLmRldGFpbCxyJiZTLnVwZGF0ZUVsZW0oZSwhMCxlLm9mZnNldFdpZHRoKSxlLl9sYXp5UmFjZT0hMCxIKyssWShlLHQscixuLGEpKX19LGVlPU0oKGZ1bmN0aW9uKCl7aS5sb2FkTW9kZT0zLEcoKX0pKSx0ZT1mdW5jdGlvbigpezM9PWkubG9hZE1vZGUmJihpLmxvYWRNb2RlPTIpLGVlKCl9LGFlPWZ1bmN0aW9uKCl7Znx8KGEubm93KCktXzw5OTk/dShhZSw5OTkpOihmPSEwLGkubG9hZE1vZGU9MyxHKCksZCgic2Nyb2xsIix0ZSwhMCkpKX07cmV0dXJue186ZnVuY3Rpb24oKXtfPWEubm93KCksbi5lbGVtZW50cz10LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaS5sYXp5Q2xhc3MpLG89dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkubGF6eUNsYXNzKyIgIitpLnByZWxvYWRDbGFzcyksZCgic2Nyb2xsIixHLCEwKSxkKCJyZXNpemUiLEcsITApLGQoInBhZ2VzaG93IiwoZnVuY3Rpb24oZSl7aWYoZS5wZXJzaXN0ZWQpe3ZhciBhPXQucXVlcnlTZWxlY3RvckFsbCgiLiIraS5sb2FkaW5nQ2xhc3MpO2EubGVuZ3RoJiZhLmZvckVhY2gmJmMoKGZ1bmN0aW9uKCl7YS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNvbXBsZXRlJiZaKGUpfSkpfSkpfX0pKSxlLk11dGF0aW9uT2JzZXJ2ZXI/bmV3IE11dGF0aW9uT2JzZXJ2ZXIoRykub2JzZXJ2ZShyLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxhdHRyaWJ1dGVzOiEwfSk6KHJbbF0oIkRPTU5vZGVJbnNlcnRlZCIsRywhMCkscltsXSgiRE9NQXR0ck1vZGlmaWVkIixHLCEwKSxzZXRJbnRlcnZhbChHLDk5OSkpLGQoImhhc2hjaGFuZ2UiLEcsITApLFsiZm9jdXMiLCJtb3VzZW92ZXIiLCJjbGljayIsImxvYWQiLCJ0cmFuc2l0aW9uZW5kIiwiYW5pbWF0aW9uZW5kIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtsXShlLEcsITApfSkpLC9kJHxeYy8udGVzdCh0LnJlYWR5U3RhdGUpP2FlKCk6KGQoImxvYWQiLGFlKSx0W2xdKCJET01Db250ZW50TG9hZGVkIixHKSx1KGFlLDJlNCkpLG4uZWxlbWVudHMubGVuZ3RoPyhVKCksTC5fbHNGbHVzaCgpKTpHKCl9LGNoZWNrRWxlbXM6Ryx1bnZlaWw6WixfYUxTTDp0ZX19KCksUz1mdW5jdGlvbigpe3ZhciBlLGE9dygoZnVuY3Rpb24oZSx0LGEsbil7dmFyIGkscixvO2lmKGUuX2xhenlzaXplc1dpZHRoPW4sbis9InB4IixlLnNldEF0dHJpYnV0ZSgic2l6ZXMiLG4pLG0udGVzdCh0Lm5vZGVOYW1lfHwiIikpZm9yKHI9MCxvPShpPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNvdXJjZSIpKS5sZW5ndGg7cjxvO3IrKylpW3JdLnNldEF0dHJpYnV0ZSgic2l6ZXMiLG4pO2EuZGV0YWlsLmRhdGFBdHRyfHxBKGUsYS5kZXRhaWwpfSkpLG49ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHI9ZS5wYXJlbnROb2RlO3ImJihuPV8oZSxyLG4pLChpPUMoZSwibGF6eWJlZm9yZXNpemVzIix7d2lkdGg6bixkYXRhQXR0cjohIXR9KSkuZGVmYXVsdFByZXZlbnRlZHx8KG49aS5kZXRhaWwud2lkdGgpJiZuIT09ZS5fbGF6eXNpemVzV2lkdGgmJmEoZSxyLGksbikpfSxyPU0oKGZ1bmN0aW9uKCl7dmFyIHQsYT1lLmxlbmd0aDtpZihhKWZvcih0PTA7dDxhO3QrKyluKGVbdF0pfSkpO3JldHVybntfOmZ1bmN0aW9uKCl7ZT10LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaS5hdXRvc2l6ZXNDbGFzcyksZCgicmVzaXplIixyKX0sY2hlY2tFbGVtczpyLHVwZGF0ZUVsZW06bn19KCksQj1mdW5jdGlvbigpeyFCLmkmJnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmKEIuaT0hMCxTLl8oKSx4Ll8oKSl9O3JldHVybiB1KChmdW5jdGlvbigpe2kuaW5pdCYmQigpfSkpLG49e2NmZzppLGF1dG9TaXplcjpTLGxvYWRlcjp4LGluaXQ6Qix1UDpBLGFDOnAsckM6aCxoQzp2LGZpcmU6QyxnVzpfLHJBRjpMfX0oZSxlLmRvY3VtZW50LERhdGUpO2UubGF6eVNpemVzPXQsIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9dCl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSksZnVuY3Rpb24oZSx0KXt2YXIgYT1mdW5jdGlvbigpe3QoZS5sYXp5U2l6ZXMpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibGF6eXVudmVpbHJlYWQiLGEsITApfTt0PXQuYmluZChudWxsLGUsZS5kb2N1bWVudCksIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP3QocmVxdWlyZSgibGF6eXNpemVzIikpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsibGF6eXNpemVzIl0sdCk6ZS5sYXp5U2l6ZXM/YSgpOmUuYWRkRXZlbnRMaXN0ZW5lcigibGF6eXVudmVpbHJlYWQiLGEsITApfSh3aW5kb3csKGZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7dmFyIG4saSxyPXt9O2Z1bmN0aW9uIG8oZSxhLG4pe3ZhciBpLG87cltlXXx8KGk9dC5jcmVhdGVFbGVtZW50KGE/ImxpbmsiOiJzY3JpcHQiKSxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdLGE/KGkucmVsPSJzdHlsZXNoZWV0IixpLmhyZWY9ZSk6KGkub25sb2FkPWZ1bmN0aW9uKCl7aS5vbmVycm9yPW51bGwsaS5vbmxvYWQ9bnVsbCxuKCl9LGkub25lcnJvcj1pLm9ubG9hZCxpLnNyYz1lKSxyW2VdPSEwLHJbaS5zcmN8fGkuaHJlZl09ITAsby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLG8pKX10LmFkZEV2ZW50TGlzdGVuZXImJihuPWZ1bmN0aW9uKGUsYSl7dmFyIG49dC5jcmVhdGVFbGVtZW50KCJpbWciKTtuLm9ubG9hZD1mdW5jdGlvbigpe24ub25sb2FkPW51bGwsbi5vbmVycm9yPW51bGwsbj1udWxsLGEoKX0sbi5vbmVycm9yPW4ub25sb2FkLG4uc3JjPWUsbiYmbi5jb21wbGV0ZSYmbi5vbmxvYWQmJm4ub25sb2FkKCl9LGFkZEV2ZW50TGlzdGVuZXIoImxhenliZWZvcmV1bnZlaWwiLChmdW5jdGlvbihlKXt2YXIgdCxyLGw7aWYoZS5kZXRhaWwuaW5zdGFuY2U9PWEmJiFlLmRlZmF1bHRQcmV2ZW50ZWQpe3ZhciBzPWUudGFyZ2V0O2lmKCJub25lIj09cy5wcmVsb2FkJiYocy5wcmVsb2FkPXMuZ2V0QXR0cmlidXRlKCJkYXRhLXByZWxvYWQiKXx8ImF1dG8iKSxudWxsIT1zLmdldEF0dHJpYnV0ZSgiZGF0YS1hdXRvcGxheSIpKWlmKHMuZ2V0QXR0cmlidXRlKCJkYXRhLWV4cGFuZCIpJiYhcy5hdXRvcGxheSl0cnl7cy5wbGF5KCl9Y2F0Y2goZSl7fWVsc2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3Muc2V0QXR0cmlidXRlKCJkYXRhLWV4cGFuZCIsIi0xMCIpLGEuYUMocyxhLmNmZy5sYXp5Q2xhc3MpfSkpOyh0PXMuZ2V0QXR0cmlidXRlKCJkYXRhLWxpbmsiKSkmJiJpbWciIT1zLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmbyh0LCEwKSwodD1zLmdldEF0dHJpYnV0ZSgiZGF0YS1zY3JpcHQiKSkmJihlLmRldGFpbC5maXJlc0xvYWQ9ITAsbyh0LG51bGwsKGZ1bmN0aW9uKCl7ZS5kZXRhaWwuZmlyZXNMb2FkPSExLGEuZmlyZShzLCJfbGF6eWxvYWRlZCIse30sITAsITApfSkpKSwodD1zLmdldEF0dHJpYnV0ZSgiZGF0YS1yZXF1aXJlIikpJiYoYS5jZmcucmVxdWlyZUpzP2EuY2ZnLnJlcXVpcmVKcyhbdF0pOm8odCkpLChyPXMuZ2V0QXR0cmlidXRlKCJkYXRhLWJnIikpJiYoZS5kZXRhaWwuZmlyZXNMb2FkPSEwLG4ociwoZnVuY3Rpb24oKXtzLnN0eWxlLmJhY2tncm91bmRJbWFnZT0idXJsKCIrKGkudGVzdChyKT9KU09OLnN0cmluZ2lmeShyKTpyKSsiKSIsZS5kZXRhaWwuZmlyZXNMb2FkPSExLGEuZmlyZShzLCJfbGF6eWxvYWRlZCIse30sITAsITApfSkpKSwobD1zLmdldEF0dHJpYnV0ZSgiZGF0YS1wb3N0ZXIiKSkmJihlLmRldGFpbC5maXJlc0xvYWQ9ITAsbihsLChmdW5jdGlvbigpe3MucG9zdGVyPWwsZS5kZXRhaWwuZmlyZXNMb2FkPSExLGEuZmlyZShzLCJfbGF6eWxvYWRlZCIse30sITAsITApfSkpKX19KSwhKGk9L1wofFwpfFxzfCcvKSkpfSkpOw0K | Other | 163ms | 0 KB | — | $3/mo | Optional |
Hotjar script.hotjar.com | Session Replay | 148ms | 57 KB | 65% | $3/mo | Optional |
LinkedIn Insight snap.licdn.com | Advertising | 123ms | 19 KB | — | $2/mo | Optional |
Google Tag Manager www.googletagmanager.com | Tag Manager | 121ms | 145 KB | 37% | $2/mo | Optional |
dev.visualwebsiteoptimizer.com dev.visualwebsiteoptimizer.com | Other | 115ms | 47 KB | — | $2/mo | Optional |
Segment cdn.segment.com | Analytics | 100ms | 29 KB | — | $2/mo | Optional |
unbounce.com unbounce.com | Other | 86ms | 0 KB | — | $2/mo | Optional |
d3rqem538l0q4a.cloudfront.net d3rqem538l0q4a.cloudfront.net | Other | 73ms | 74 KB | 51% | $1/mo | Optional |
These scripts may cost more than they're worth
- Unattributable adds 1362ms and costs ~$26/month
- Google Tag Manager adds 1157ms and costs ~$22/month
- data:text/javascript;base64,CiAgd2luZG93Ll92d29fY29kZSB8fCAoZnVuY3Rpb24oKSB7CiAgdmFyIGFjY291bnRfaWQ9MTg3Mjc0LAogIHZlcnNpb249Mi4xLAogIHNldHRpbmdzX3RvbGVyYW5jZT0yMDAwLAogIGhpZGVfZWxlbWVudD0nYm9keScsCiAgaGlkZV9lbGVtZW50X3N0eWxlID0gJ29wYWNpdHk6MCAhaW1wb3J0YW50O2ZpbHRlcjphbHBoYShvcGFjaXR5PTApICFpbXBvcnRhbnQ7YmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQnLAogIC8qIERPIE5PVCBFRElUIEJFTE9XIFRISVMgTElORSAqLwogIGY9ZmFsc2Usdz13aW5kb3csZD1kb2N1bWVudCx2PWQucXVlcnlTZWxlY3RvcignI3Z3b0NvZGUnKSxjSz0nX3Z3b18nK2FjY291bnRfaWQrJ19zZXR0aW5ncycsY2M9e307dHJ5e3ZhciBjPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ192d29fJythY2NvdW50X2lkKydfY29uZmlnJykpO2NjPWMmJnR5cGVvZiBjPT09J29iamVjdCc/Yzp7fX1jYXRjaChlKXt9dmFyIHN0VD1jYy5zdFQ9PT0nc2Vzc2lvbic/dy5zZXNzaW9uU3RvcmFnZTp3LmxvY2FsU3RvcmFnZTtjb2RlPXt1c2VfZXhpc3RpbmdfanF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB1c2VfZXhpc3RpbmdfanF1ZXJ5IT09J3VuZGVmaW5lZCc/dXNlX2V4aXN0aW5nX2pxdWVyeTp1bmRlZmluZWR9LGxpYnJhcnlfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBsaWJyYXJ5X3RvbGVyYW5jZSE9PSd1bmRlZmluZWQnP2xpYnJhcnlfdG9sZXJhbmNlOnVuZGVmaW5lZH0sc2V0dGluZ3NfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIGNjLnNUfHxzZXR0aW5nc190b2xlcmFuY2V9LGhpZGVfZWxlbWVudF9zdHlsZTpmdW5jdGlvbigpe3JldHVybid7JysoY2MuaEVTfHxoaWRlX2VsZW1lbnRfc3R5bGUpKyd9J30saGlkZV9lbGVtZW50OmZ1bmN0aW9uKCl7aWYocGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSgnZmlyc3QtY29udGVudGZ1bC1wYWludCcpWzBdKXtyZXR1cm4nJ31yZXR1cm4gdHlwZW9mIGNjLmhFPT09J3N0cmluZyc/Y2MuaEU6aGlkZV9lbGVtZW50fSxnZXRWZXJzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHZlcnNpb259LGZpbmlzaDpmdW5jdGlvbihlKXtpZighZil7Zj10cnVlO3ZhciB0PWQuZ2V0RWxlbWVudEJ5SWQoJ192aXNfb3B0X3BhdGhfaGlkZXMnKTtpZih0KXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtpZihlKShuZXcgSW1hZ2UpLnNyYz0naHR0cHM6Ly9kZXYudmlzdWFsd2Vic2l0ZW9wdGltaXplci5jb20vZWUuZ2lmP2E9JythY2NvdW50X2lkK2V9fSxmaW5pc2hlZDpmdW5jdGlvbigpe3JldHVybiBmfSxhZGRTY3JpcHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTt0LnR5cGU9J3RleHQvamF2YXNjcmlwdCc7aWYoZS5zcmMpe3Quc3JjPWUuc3JjfWVsc2V7dC50ZXh0PWUudGV4dH1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodCl9LGxvYWQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmdldFNldHRpbmdzKCksbj1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLHI9dGhpczt0PXR8fHt9O2lmKGkpe24udGV4dENvbnRlbnQ9aTtkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobik7aWYoIXcuVldPfHxWV08uY2FFKXtzdFQucmVtb3ZlSXRlbShjSyk7ci5sb2FkKGUpfX1lbHNle3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtvLm9wZW4oJ0dFVCcsZSx0cnVlKTtvLndpdGhDcmVkZW50aWFscz0hdC5kU0M7by5yZXNwb25zZVR5cGU9dC5yZXNwb25zZVR5cGV8fCd0ZXh0JztvLm9ubG9hZD1mdW5jdGlvbigpe2lmKHQub25sb2FkQ2Ipe3JldHVybiB0Lm9ubG9hZENiKG8sZSl9aWYoby5zdGF0dXM9PT0yMDApe192d29fY29kZS5hZGRTY3JpcHQoe3RleHQ6by5yZXNwb25zZVRleHR9KX1lbHNle192d29fY29kZS5maW5pc2goJyZlPWxvYWRpbmdfZmFpbHVyZTonK2UpfX07by5vbmVycm9yPWZ1bmN0aW9uKCl7aWYodC5vbmVycm9yQ2Ipe3JldHVybiB0Lm9uZXJyb3JDYihlKX1fdndvX2NvZGUuZmluaXNoKCcmZT1sb2FkaW5nX2ZhaWx1cmU6JytlKX07by5zZW5kKCl9fSxnZXRTZXR0aW5nczpmdW5jdGlvbigpe3RyeXt2YXIgZT1zdFQuZ2V0SXRlbShjSyk7aWYoIWUpe3JldHVybn1lPUpTT04ucGFyc2UoZSk7aWYoRGF0ZS5ub3coKT5lLmUpe3N0VC5yZW1vdmVJdGVtKGNLKTtyZXR1cm59cmV0dXJuIGUuc31jYXRjaChlKXtyZXR1cm59fSxpbml0OmZ1bmN0aW9uKCl7aWYoZC5VUkwuaW5kZXhPZignX192d29fZGlzYWJsZV9fJyk+LTEpcmV0dXJuO3ZhciBlPXRoaXMuc2V0dGluZ3NfdG9sZXJhbmNlKCk7dy5fdndvX3NldHRpbmdzX3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtfdndvX2NvZGUuZmluaXNoKCk7c3RULnJlbW92ZUl0ZW0oY0spfSxlKTt2YXIgdDtpZih0aGlzLmhpZGVfZWxlbWVudCgpIT09J2JvZHknKXt0PWQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTt2YXIgaT10aGlzLmhpZGVfZWxlbWVudCgpLG49aT9pK3RoaXMuaGlkZV9lbGVtZW50X3N0eWxlKCk6Jycscj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dC5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO3YmJnQuc2V0QXR0cmlidXRlKCdub25jZScsdi5ub25jZSk7dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCd0ZXh0L2NzcycpO2lmKHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2UgdC5hcHBlbmRDaGlsZChkLmNyZWF0ZVRleHROb2RlKG4pKTtyLmFwcGVuZENoaWxkKHQpfWVsc2V7dD1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dmFyIG49ZC5jcmVhdGVFbGVtZW50KCdkaXYnKTtuLnN0eWxlLmNzc1RleHQ9J3otaW5kZXg6IDIxNDc0ODM2NDcgIWltcG9ydGFudDtwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtsZWZ0OiAwICFpbXBvcnRhbnQ7dG9wOiAwICFpbXBvcnRhbnQ7d2lkdGg6IDEwMCUgIWltcG9ydGFudDtoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50Oyc7bi5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO24uY2xhc3NMaXN0LmFkZCgnX3Zpc19oaWRlX2xheWVyJyk7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLHQubmV4dFNpYmxpbmcpfXZhciBvPSdodHRwczovL2Rldi52aXN1YWx3ZWJzaXRlb3B0aW1pemVyLmNvbS9qLnBocD9hPScrYWNjb3VudF9pZCsnJnU9JytlbmNvZGVVUklDb21wb25lbnQoZC5VUkwpKycmdm49Jyt2ZXJzaW9uO2lmKHcubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ192d29feGhyJykhPT0tMSl7dGhpcy5hZGRTY3JpcHQoe3NyYzpvfSl9ZWxzZXt0aGlzLmxvYWQobysnJng9dHJ1ZScpfX19O3cuX3Z3b19jb2RlPWNvZGU7Y29kZS5pbml0KCk7fSkoKTsKICA= adds 747ms and costs ~$14/month
- Google Tag Manager adds 392ms and costs ~$7/month
- Google Tag Manager adds 352ms and costs ~$7/month
- Google Tag Manager adds 340ms and costs ~$6/month
- Google Tag Manager adds 320ms and costs ~$6/month
- Google Tag Manager adds 311ms and costs ~$6/month
- assets.ubembed.com adds 267ms and costs ~$5/month
- ead777b108aa482aa23c97fd24389aad.js.ubembed.com adds 231ms and costs ~$4/month
- Facebook Pixel adds 216ms and costs ~$4/month
78% of JavaScript execution time is spent on third-party scripts. Consider auditing which scripts are essential.
When third-party JS execution time exceeds your own, performance gains from frontend work are capped by code you don't own.
Learn more ▾ ▴
Every millisecond of third-party JS competes with your own for main-thread time. If their share is bigger than yours, optimization on your code base barely moves the needle. Audit, defer, or remove third-parties before further frontend optimization. Use Lighthouse's third-party audit to identify the worst offenders.
Source: web.dev
Unattributable takes 1362ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Google Tag Manager takes 1157ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
data:text/javascript;base64,CiAgd2luZG93Ll92d29fY29kZSB8fCAoZnVuY3Rpb24oKSB7CiAgdmFyIGFjY291bnRfaWQ9MTg3Mjc0LAogIHZlcnNpb249Mi4xLAogIHNldHRpbmdzX3RvbGVyYW5jZT0yMDAwLAogIGhpZGVfZWxlbWVudD0nYm9keScsCiAgaGlkZV9lbGVtZW50X3N0eWxlID0gJ29wYWNpdHk6MCAhaW1wb3J0YW50O2ZpbHRlcjphbHBoYShvcGFjaXR5PTApICFpbXBvcnRhbnQ7YmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQnLAogIC8qIERPIE5PVCBFRElUIEJFTE9XIFRISVMgTElORSAqLwogIGY9ZmFsc2Usdz13aW5kb3csZD1kb2N1bWVudCx2PWQucXVlcnlTZWxlY3RvcignI3Z3b0NvZGUnKSxjSz0nX3Z3b18nK2FjY291bnRfaWQrJ19zZXR0aW5ncycsY2M9e307dHJ5e3ZhciBjPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ192d29fJythY2NvdW50X2lkKydfY29uZmlnJykpO2NjPWMmJnR5cGVvZiBjPT09J29iamVjdCc/Yzp7fX1jYXRjaChlKXt9dmFyIHN0VD1jYy5zdFQ9PT0nc2Vzc2lvbic/dy5zZXNzaW9uU3RvcmFnZTp3LmxvY2FsU3RvcmFnZTtjb2RlPXt1c2VfZXhpc3RpbmdfanF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB1c2VfZXhpc3RpbmdfanF1ZXJ5IT09J3VuZGVmaW5lZCc/dXNlX2V4aXN0aW5nX2pxdWVyeTp1bmRlZmluZWR9LGxpYnJhcnlfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBsaWJyYXJ5X3RvbGVyYW5jZSE9PSd1bmRlZmluZWQnP2xpYnJhcnlfdG9sZXJhbmNlOnVuZGVmaW5lZH0sc2V0dGluZ3NfdG9sZXJhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIGNjLnNUfHxzZXR0aW5nc190b2xlcmFuY2V9LGhpZGVfZWxlbWVudF9zdHlsZTpmdW5jdGlvbigpe3JldHVybid7JysoY2MuaEVTfHxoaWRlX2VsZW1lbnRfc3R5bGUpKyd9J30saGlkZV9lbGVtZW50OmZ1bmN0aW9uKCl7aWYocGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSgnZmlyc3QtY29udGVudGZ1bC1wYWludCcpWzBdKXtyZXR1cm4nJ31yZXR1cm4gdHlwZW9mIGNjLmhFPT09J3N0cmluZyc/Y2MuaEU6aGlkZV9lbGVtZW50fSxnZXRWZXJzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHZlcnNpb259LGZpbmlzaDpmdW5jdGlvbihlKXtpZighZil7Zj10cnVlO3ZhciB0PWQuZ2V0RWxlbWVudEJ5SWQoJ192aXNfb3B0X3BhdGhfaGlkZXMnKTtpZih0KXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtpZihlKShuZXcgSW1hZ2UpLnNyYz0naHR0cHM6Ly9kZXYudmlzdWFsd2Vic2l0ZW9wdGltaXplci5jb20vZWUuZ2lmP2E9JythY2NvdW50X2lkK2V9fSxmaW5pc2hlZDpmdW5jdGlvbigpe3JldHVybiBmfSxhZGRTY3JpcHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTt0LnR5cGU9J3RleHQvamF2YXNjcmlwdCc7aWYoZS5zcmMpe3Quc3JjPWUuc3JjfWVsc2V7dC50ZXh0PWUudGV4dH1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodCl9LGxvYWQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmdldFNldHRpbmdzKCksbj1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLHI9dGhpczt0PXR8fHt9O2lmKGkpe24udGV4dENvbnRlbnQ9aTtkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobik7aWYoIXcuVldPfHxWV08uY2FFKXtzdFQucmVtb3ZlSXRlbShjSyk7ci5sb2FkKGUpfX1lbHNle3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtvLm9wZW4oJ0dFVCcsZSx0cnVlKTtvLndpdGhDcmVkZW50aWFscz0hdC5kU0M7by5yZXNwb25zZVR5cGU9dC5yZXNwb25zZVR5cGV8fCd0ZXh0JztvLm9ubG9hZD1mdW5jdGlvbigpe2lmKHQub25sb2FkQ2Ipe3JldHVybiB0Lm9ubG9hZENiKG8sZSl9aWYoby5zdGF0dXM9PT0yMDApe192d29fY29kZS5hZGRTY3JpcHQoe3RleHQ6by5yZXNwb25zZVRleHR9KX1lbHNle192d29fY29kZS5maW5pc2goJyZlPWxvYWRpbmdfZmFpbHVyZTonK2UpfX07by5vbmVycm9yPWZ1bmN0aW9uKCl7aWYodC5vbmVycm9yQ2Ipe3JldHVybiB0Lm9uZXJyb3JDYihlKX1fdndvX2NvZGUuZmluaXNoKCcmZT1sb2FkaW5nX2ZhaWx1cmU6JytlKX07by5zZW5kKCl9fSxnZXRTZXR0aW5nczpmdW5jdGlvbigpe3RyeXt2YXIgZT1zdFQuZ2V0SXRlbShjSyk7aWYoIWUpe3JldHVybn1lPUpTT04ucGFyc2UoZSk7aWYoRGF0ZS5ub3coKT5lLmUpe3N0VC5yZW1vdmVJdGVtKGNLKTtyZXR1cm59cmV0dXJuIGUuc31jYXRjaChlKXtyZXR1cm59fSxpbml0OmZ1bmN0aW9uKCl7aWYoZC5VUkwuaW5kZXhPZignX192d29fZGlzYWJsZV9fJyk+LTEpcmV0dXJuO3ZhciBlPXRoaXMuc2V0dGluZ3NfdG9sZXJhbmNlKCk7dy5fdndvX3NldHRpbmdzX3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtfdndvX2NvZGUuZmluaXNoKCk7c3RULnJlbW92ZUl0ZW0oY0spfSxlKTt2YXIgdDtpZih0aGlzLmhpZGVfZWxlbWVudCgpIT09J2JvZHknKXt0PWQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTt2YXIgaT10aGlzLmhpZGVfZWxlbWVudCgpLG49aT9pK3RoaXMuaGlkZV9lbGVtZW50X3N0eWxlKCk6Jycscj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dC5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO3YmJnQuc2V0QXR0cmlidXRlKCdub25jZScsdi5ub25jZSk7dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCd0ZXh0L2NzcycpO2lmKHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2UgdC5hcHBlbmRDaGlsZChkLmNyZWF0ZVRleHROb2RlKG4pKTtyLmFwcGVuZENoaWxkKHQpfWVsc2V7dD1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07dmFyIG49ZC5jcmVhdGVFbGVtZW50KCdkaXYnKTtuLnN0eWxlLmNzc1RleHQ9J3otaW5kZXg6IDIxNDc0ODM2NDcgIWltcG9ydGFudDtwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtsZWZ0OiAwICFpbXBvcnRhbnQ7dG9wOiAwICFpbXBvcnRhbnQ7d2lkdGg6IDEwMCUgIWltcG9ydGFudDtoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50Oyc7bi5zZXRBdHRyaWJ1dGUoJ2lkJywnX3Zpc19vcHRfcGF0aF9oaWRlcycpO24uY2xhc3NMaXN0LmFkZCgnX3Zpc19oaWRlX2xheWVyJyk7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLHQubmV4dFNpYmxpbmcpfXZhciBvPSdodHRwczovL2Rldi52aXN1YWx3ZWJzaXRlb3B0aW1pemVyLmNvbS9qLnBocD9hPScrYWNjb3VudF9pZCsnJnU9JytlbmNvZGVVUklDb21wb25lbnQoZC5VUkwpKycmdm49Jyt2ZXJzaW9uO2lmKHcubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ192d29feGhyJykhPT0tMSl7dGhpcy5hZGRTY3JpcHQoe3NyYzpvfSl9ZWxzZXt0aGlzLmxvYWQobysnJng9dHJ1ZScpfX19O3cuX3Z3b19jb2RlPWNvZGU7Y29kZS5pbml0KCk7fSkoKTsKICA= takes 747ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Google Tag Manager takes 392ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Google Tag Manager takes 352ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Google Tag Manager takes 340ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Google Tag Manager takes 320ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Google Tag Manager takes 311ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
52% of OneTrust's code is unused. The script may be loading features you don't use.
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
assets.ubembed.com takes 267ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
52% of assets.ubembed.com's code is unused. The script may be loading features you don't use.
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
ead777b108aa482aa23c97fd24389aad.js.ubembed.com takes 231ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Facebook Pixel takes 216ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
65% of Hotjar's code is unused. The script may be loading features you don't use.
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
51% of d3rqem538l0q4a.cloudfront.net's code is unused. The script may be loading features you don't use.
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev