HTTP Status
200
Ping
N/A
Technologies
17
Technologies Detected
CMS & Content (1)
| CMS |
WordPress is the world's most popular content management system, powering millions of websites worldwide. |
|
|
|
Description: WordPress is the world's most popular content management system, powering millions of websites worldwide. It's an open-source platform written in PHP that provides a user-friendly interface, extensive plugin and theme ecosystem, and flexibility for blogs, business websites, and e-commerce stores. View full details |
|||
|
Evidence:
|
|||
Infrastructure & Network (4)
| CDN |
Google Hosted Libraries is a content delivery network that hosts popular open-source JavaScript libraries like jQuery, Angular, and Dojo. |
|
|
|
Description: Google Hosted Libraries is a content delivery network that hosts popular open-source JavaScript libraries like jQuery, Angular, and Dojo. It provides fast, reliable delivery of these libraries through Google's global CDN, reducing server load and improving website performance. View full details |
|||
|
Evidence:
|
|||
| DNS Provider |
Amazon Route 53 is a highly available and scalable cloud DNS web service from Amazon Web Services. |
|
|
|
Description: Amazon Route 53 is a highly available and scalable cloud DNS web service from Amazon Web Services. It provides reliable domain name resolution, health checking, traffic routing, and integration with other AWS services like EC2, S3, and CloudFront. View full details |
|||
|
Evidence:
|
|||
| Registrar |
Network Solutions is one of the original domain registrars, having registered some of the first .com domains. |
|
|
|
Description: Network Solutions is one of the original domain registrars, having registered some of the first .com domains. It provides domain registration, web hosting, and website builder services, though it's now owned by Web.com. View full details |
|||
|
Evidence:
|
|||
| Web Server |
Nginx is a high-performance, open-source web server and reverse proxy server. |
|
|
|
Description: Nginx is a high-performance, open-source web server and reverse proxy server. It's known for its low memory footprint, high concurrency, and ability to handle large numbers of simultaneous connections. Nginx is widely used as a web server, load balancer, and reverse proxy for modern web applications. View full details |
|||
|
Evidence:
|
|||
Development (1)
| JavaScript Library |
jQuery is a fast, small, and feature-rich JavaScript library that simplifies HTML document traversal, event handling, animation, and AJAX interactions. |
|
|
|
Description: jQuery is a fast, small, and feature-rich JavaScript library that simplifies HTML document traversal, event handling, animation, and AJAX interactions. It's one of the most widely used JavaScript libraries, making web development easier with a simple API. View full details |
|||
|
Evidence:
|
|||
Analytics & Marketing (2)
| Analytics |
Google Search Console (formerly Google Webmaster Tools) is a free service from Google that helps website owners monitor and maintain their site's presence in Google search results. |
|
|
|
Description: Google Search Console (formerly Google Webmaster Tools) is a free service from Google that helps website owners monitor and maintain their site's presence in Google search results. It provides insights into search performance, indexing status, and technical SEO issues. View full details |
|||
|
Evidence:
|
|||
| Analytics |
Google Tag Manager is a tag management system that allows marketers to manage and deploy marketing tags (analytics, tracking pixels, etc.) on websites without modifying code. |
|
|
|
Description: Google Tag Manager is a tag management system that allows marketers to manage and deploy marketing tags (analytics, tracking pixels, etc.) on websites without modifying code. It provides a centralized interface for managing multiple tracking and analytics tools, improving website performance and simplifying tag deployment. View full details |
|||
|
Evidence:
|
|||
Security & Privacy (2)
| Privacy |
TrustArc (formerly TRUSTe) is a privacy management and compliance platform that helps businesses manage privacy programs and comply with privacy regulations. |
|
|
|
Description: TrustArc (formerly TRUSTe) is a privacy management and compliance platform that helps businesses manage privacy programs and comply with privacy regulations. It provides privacy assessments, cookie consent management, data mapping, and compliance automation tools for enterprise organizations. View full details |
|||
|
Evidence:
|
|||
| Security |
Valimail is an email authentication and anti-phishing platform that helps organizations implement and manage email authentication standards like DMARC, SPF, and DKIM. |
|
|
|
Description: Valimail is an email authentication and anti-phishing platform that helps organizations implement and manage email authentication standards like DMARC, SPF, and DKIM. It provides automated DMARC enforcement and monitoring to protect against email spoofing and improve email deliverability. View full details |
|||
|
Evidence:
|
|||
SSL & Certificates (1)
| Certificate Authority |
Let's Encrypt is a free, automated, and open certificate authority run by the Internet Security Research Group (ISRG). |
|
|
|
Description: Let's Encrypt is a free, automated, and open certificate authority run by the Internet Security Research Group (ISRG). It provides free SSL/TLS certificates to enable encrypted HTTPS on websites, making web security accessible to everyone. It's one of the most widely used certificate authorities globally. View full details |
|||
|
Evidence:
|
|||
Other (6)
| B2B Marketplace |
Amazon Business is a B2B marketplace from Amazon that provides business customers with access to millions of products, business pricing, and procurement tools. |
|
|
|
Description: Amazon Business is a B2B marketplace from Amazon that provides business customers with access to millions of products, business pricing, and procurement tools. It offers features like business-only pricing, quantity discounts, and purchase approval workflows for organizations. View full details |
|||
|
Evidence:
|
|||
| Cloud |
AWS (Amazon Web Services) is Amazon's cloud computing platform that provides a wide range of cloud services including computing, storage, databases, networking, analytics, machine learning, and more. |
|
|
|
Description: AWS (Amazon Web Services) is Amazon's cloud computing platform that provides a wide range of cloud services including computing, storage, databases, networking, analytics, machine learning, and more. It's one of the leading cloud infrastructure providers globally. View full details |
|||
|
Evidence:
|
|||
| Cloud |
AWS EC2 (Elastic Compute Cloud) is Amazon's scalable cloud computing service that provides resizable compute capacity in the cloud. |
|
|
|
Description: AWS EC2 (Elastic Compute Cloud) is Amazon's scalable cloud computing service that provides resizable compute capacity in the cloud. It allows users to launch virtual servers (instances) on demand, configure security and networking, and scale capacity up or down based on demand. View full details |
|||
|
Evidence:
|
|||
| Development |
Atlassian is a software company that provides collaboration and development tools for teams. |
|
|
|
Description: Atlassian is a software company that provides collaboration and development tools for teams. Its products include Jira for project management, Confluence for documentation, Bitbucket for code collaboration, and Trello for task management, widely used by software development teams. View full details |
|||
|
Evidence:
|
|||
| Finance |
Sage Intacct (formerly Intacct) is a cloud-based financial management and accounting software designed for growing businesses. |
|
|
|
Description: Sage Intacct (formerly Intacct) is a cloud-based financial management and accounting software designed for growing businesses. It provides accounting, financial reporting, and business intelligence tools to help organizations manage their finances and make data-driven decisions. View full details |
|||
|
Evidence:
|
|||
| Technology |
Microsoft is a multinational technology company that develops and licenses software, cloud services, and hardware products. |
|
|
|
Description: Microsoft is a multinational technology company that develops and licenses software, cloud services, and hardware products. It provides operating systems, productivity applications, cloud computing, and enterprise technology solutions. View full details |
|||
|
Evidence:
|
|||
Metadata & SEO
Domain Owner Information
View Full WHOISSSL/TLS Certificate
View Full SSL ReportSocial Media Cards
OpenGraph (8 properties)
Twitter Cards (1 properties)
Network & Hosting
View DNS RecordsCNAME Record
This domain is an alias for:
frcamotionpointweb.convertlanguage.comResources
googleapis.com (1 resources)
googletagmanager.com (1 resources)
motionpoint.com (22 resources)
Scripts (13)
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,dmFyIF9fZGlzcGF0Y2hlZF9fPXt9O3ZhciBfX2lfXz1zZWxmLnBvc3RNZXNzYWdlJiZzZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKHNlbGYuUHJpdmFjeU1hbmFnZXJBUEkmJl9faV9fKXt2YXIgYXBpT2JqZWN0PXtQcml2YWN5TWFuYWdlckFQSTp7YWN0aW9uOiJnZXRDb25zZW50RGVjaXNpb24iLHRpbWVzdGFtcDpuZXcgRGF0ZSgpLmdldFRpbWUoKSxzZWxmOnNlbGYubG9jYXRpb24uaG9zdH19O3NlbGYudG9wLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGFwaU9iamVjdCksIioiKTtfX2lfXz1jbGVhckludGVydmFsKF9faV9fKTt9fSw1MCk7c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbihlLGQpe3RyeXtpZihlLmRhdGEmJihkPUpTT04ucGFyc2UoZS5kYXRhKSkmJihkPWQuUHJpdmFjeU1hbmFnZXJBUEkpJiZkLmNhcGFiaWxpdGllcyYmZC5hY3Rpb249PSJnZXRDb25zZW50RGVjaXNpb24iKXt2YXIgbmV3RGVjaXNpb249c2VsZi5Qcml2YWN5TWFuYWdlckFQSS5jYWxsQXBpKCJnZXRHRFBSQ29uc2VudERlY2lzaW9uIixzZWxmLmxvY2F0aW9uLmhvc3QpLmNvbnNlbnREZWNpc2lvbjtuZXdEZWNpc2lvbiYmbmV3RGVjaXNpb24uZm9yRWFjaChmdW5jdGlvbihsYWJlbCl7aWYoIV9fZGlzcGF0Y2hlZF9fW2xhYmVsXSl7c2VsZi5kYXRhTGF5ZXImJnNlbGYuZGF0YUxheWVyLnB1c2goeyJldmVudCI6IkdEUFIgUHJlZiBBbGxvd3MgIitsYWJlbH0pO19fZGlzcGF0Y2hlZF9fW2xhYmVsXT0xO319KTt9fWNhdGNoKHh4KXt9fSk7
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKGV2ZW50KXt2YXIgZXZlbnREYXRhSnNvbj1udWxsO3RyeXtldmVudERhdGFKc29uPUpTT04ucGFyc2UoZXZlbnQuZGF0YSk7fWNhdGNoKGUpe30KaWYoZXZlbnREYXRhSnNvbiYmZXZlbnREYXRhSnNvbi5zb3VyY2U9PT0icHJlZmVyZW5jZV9tYW5hZ2VyIil7aWYoZXZlbnREYXRhSnNvbi5tZXNzYWdlPT09InN1Ym1pdF9wcmVmZXJlbmNlcyIpe2NvbnNvbGUubG9nKCJFdmVudCBEYXRhOiAiLGV2ZW50RGF0YUpzb24pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgY29uc2VudERlY2lzaW9uPXRydXN0ZS5jbWEuY2FsbEFwaSgiZ2V0R0RQUkNvbnNlbnREZWNpc2lvbiIsInlvdXJkb21haW4uY29tIik7aGFuZGxlQ29uc2VudERlY2lzaW9uKGNvbnNlbnREZWNpc2lvbik7fSw1MDApO319fSxmYWxzZSk7ZnVuY3Rpb24gaGFuZGxlQ29uc2VudERlY2lzaW9uKGNvbnNlbnQpe2NvbnNvbGUubG9nKCJbSGFuZGxlIENvbnNlbnQgRGVjaXNpb25dOiAiLGNvbnNlbnQpO3dpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtjb25zb2xlLmxvZygid2luZG93IHJlbG9hZGVkIik7fQ==
- • https://www.motionpoint.com/wp-content/themes/motionpoint/js/u/jquery.min.js
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,CndpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwo=
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOgpuZXcgRGF0ZSgpLmdldFRpbWUoKSxldmVudDonZ3RtLmpzJ30pO3ZhciBmPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF0sCmo9ZC5jcmVhdGVFbGVtZW50KHMpLGRsPWwhPSdkYXRhTGF5ZXInPycmbD0nK2w6Jyc7ai5hc3luYz10cnVlO2ouc3JjPQonaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPScraStkbDtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7Cn0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnZGF0YUxheWVyJywnR1RNLTVEUkhQVicpOw==
- • https://www.motionpoint.com/wp-content/cache/autoptimize/1/js/autoptimize_single_c4c954a6b6d86e8c7257cfb38479b3c7.js
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,TVAuVXJsTGFuZz0nbXBfanNfY3VycmVudF9sYW5nJztNUC5TcmNVcmw9ZGVjb2RlVVJJQ29tcG9uZW50KCdtcF9qc19vcmdpbl91cmwnKTtNUC5vU2l0ZT1kZWNvZGVVUklDb21wb25lbnQoJ21wX2pzX29yaWdpbl9iYXNlVXJsJyk7TVAudFNpdGU9ZGVjb2RlVVJJQ29tcG9uZW50KCdtcF9qc190cmFuc2xhdGVkX2Jhc2VVcmwnKTtNUC5pbml0KCk7dmFyIG1wX2xhbmdMaW5rPWZ1bmN0aW9uKCl7dmFyIGxhbmdsaW5rcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubGFuZ0xpbmsnKTtmb3IodmFyIGk9MDtpPGxhbmdsaW5rcy5sZW5ndGg7aSsrKXtsYW5nbGlua3MuaXRlbShpKS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcnKTtsYW5nbGlua3MuaXRlbShpKS5vbmNsaWNrPWZ1bmN0aW9uKCl7TVAuaW5pdCgpO3ZhciBsYW5nPXRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLWxhbmcnKTt2YXIgdXJsPXRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLWhyZWYnKTt2YXIgdFNpdGU9TVAudFNpdGUucmVwbGFjZSgvKGh0dHBzPzpcL1wvfFwvPyQpL2csJycpO3VybD11cmwucmVwbGFjZSgvKGh0dHBzPzpcL1wvfFwvPyQpL2csJycpO01QLnN3aXRjaExhbmd1YWdlKHRTaXRlLnNlYXJjaCh1cmwpIT0tMT9NUC5vU2l0ZTp1cmwsbGFuZyx0cnVlKTtyZXR1cm4gZmFsc2U7fX19O2lmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsbXBfbGFuZ0xpbmssZmFsc2UpO31lbHNlIGlmKHdpbmRvdy5hdHRhY2hFdmVudCl7d2luZG93LmF0dGFjaEV2ZW50KCdvbmxvYWQnLG1wX2xhbmdMaW5rKTt9
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,DQoJCQlkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NOYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCduby1qcycsICdqcycpOw0KCQk=
- • https://www.motionpoint.com/wp-content/cache/autoptimize/1/js/autoptimize_single_0fabcc33d191fe32419318c153215baa.js?ver=081023
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgc211c2hMYXp5TG9hZE9wdGlvbnMgPSB7ImF1dG9SZXNpemluZ0VuYWJsZWQiOnRydWUsImF1dG9SZXNpemVPcHRpb25zIjp7InByZWNpc2lvbiI6NSwic2tpcEF1dG9XaWR0aCI6dHJ1ZX19OwovLyMgc291cmNlVVJMPXNtdXNoLWxhenktbG9hZC1qcy1iZWZvcmUKLyogXV0+ICovCg==
- • https://www.motionpoint.com/wp-content/plugins/wp-smush-pro/app/assets/js/smush-lazy-load.min.js?ver=3.23.4
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,dmFyIGlzRXhwcmVzc1BhZ2U9ZmFsc2U7aWYod2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9leHByZXNzLycpKXtpc0V4cHJlc3NQYWdlPXRydWU7fQp2YXIgbW9kYWxWaWV3ZWQ9Q29va2llcy5nZXQoJ2V4cHJlc3MtbW9kYWwtdmlldycpO3ZhciBleGl0TW9kYWxWaWV3ZWQ9Q29va2llcy5nZXQoJ2V4aXQtZXhwcmVzcy1tb2RhbC12aWV3Jyk7aWYoaXNFeHByZXNzUGFnZSl7dmFyIGV4cHJlc3NNb2RhbFZpZXdkPUNvb2tpZXMuZ2V0KCdtb2RhbC12aWV3LWV4cHJlc3NwYWdlJyk7aWYodHlwZW9mIGV4cHJlc3NNb2RhbFZpZXdkPT09J3VuZGVmaW5lZCcpe2V4cHJlc3NNb2RhbFZpZXdkPSdmYWxzZSc7fX0KaWYodHlwZW9mIG1vZGFsVmlld2VkPT09J3VuZGVmaW5lZCcpe21vZGFsVmlld2VkPSdmYWxzZSc7fQppZih0eXBlb2YgZXhpdE1vZGFsVmlld2VkPT09J3VuZGVmaW5lZCcpe2V4aXRNb2RhbFZpZXdlZD0nZmFsc2UnO30KZnVuY3Rpb24gbG9hZEhhbmRsZXIoKXt2YXIgc2NyZWVuV2lkdGg9JCh3aW5kb3cpLndpZHRoKCk7dmFyIHNjcmVlbkhlaWdodD0kKHdpbmRvdykuaGVpZ2h0KCk7dmFyIG1pZHdheVBvaW50PShzY3JlZW5IZWlnaHQvMikrNTA7dmFyIHNlY3Rpb25zPSQoJ3NlY3Rpb24nKTt2YXIgdG90YWxTZWN0aW9uczt2YXIgY29tcGxldGlvbkFycmF5PVtdO3ZhciB1bmZpcm9tSGVpZ2h0PTA7dmFyIGxvZ29TbGlkZXI9JCgnI2xvZ28tc2xpZGVyJyk7dmFyIGZvcm1TZWN0aW9uPSQoJyNmb3JtLXNlY3Rpb24nKTt2YXIgZGlzcGxheUZvcm1MaW5rPSQoJy5mb3JtLWxpbmsnKTt2YXIgZGlzcGxheUV4cHJlc3NGb3JtTGluaz0kKCcuZXhwcmVzcy1mb3JtLWxpbmsnKTt2YXIgY2xvc2VGb3JtTGluaz0kKCcjZm9ybS1jbG9zZScpO3ZhciBlbmRSZXNpemU7dmFyIHR5cGVTZWxlY3RvckdyYXBoaWM9JCgnPGRpdiBjbGFzcz0idHlwZS1zZWxlY3RvciBibGluayBiZy1kYXJrLWdyYXkiPjwvZGl2PicpO3ZhciBtb2RhbENsb3NlPSQoJy5tb2RhbC1jbG9zZScpO3ZhciBzdGFydFRpbWU7dmFyIG1vdXNlTW92aW5nVXBBbmRSaWdodD1mYWxzZTt2YXIgbGVmdFdpbmRvdz1mYWxzZTtmdW5jdGlvbiBjYXB0dXJlUHJpY2luZ0Zvcm0oKXt2YXIgd2Vic2l0ZVVSTD0kKCdbbmFtZT0iUHJvamVjdCBXZWJzaXRlIFVSTCJdJykudmFsKCk7dmFyIG9yaWdpbkxhbmd1YWdlPSQoJ1tuYW1lPSJQcm9qZWN0IE9yaWdpbiBMYW5ndWFnZSJdJykudmFsKCk7dmFyIGxhbmd1YWdlc05lZWRlZD0kKCdbbmFtZT0iUHJvamVjdCBMYW5ndWFnZXMiXScpLnZhbCgpO3ZhciBlc3RpbWF0ZWRXb3Jkcz0kKCdbbmFtZT0iUHJvamVjdCBXb3JkIENvdW50Il0nKS52YWwoKTt2YXIgY21zVHlwZT0kKCdbbmFtZT0iUHJvamVjdCBDTVMiXScpLnZhbCgpO3ZhciBkeW5hbWljQ29udGVudD0kKCdbbmFtZT0iRHluYW1pYyBDb250ZW50Il0nKS52YWwoKTt2YXIgY3VycmVudFVSTD13aW5kb3cubG9jYXRpb24uaHJlZjt2YXIgZm9ybUxvY2F0aW9uPScnO2lmKGN1cnJlbnRVUkwuaW5kZXhPZigibXAtbGl0ZSIpIT09LTEpe2Zvcm1Mb2NhdGlvbj0nTVAgTGl0ZSc7fWVsc2V7Zm9ybUxvY2F0aW9uPSdQcmljaW5nIFBhZ2UnO30KdmFyIGRhdGE9e3dlYnNpdGVfdXJsOndlYnNpdGVVUkwsb3JpZ2luX2xhbmd1YWdlOm9yaWdpbkxhbmd1YWdlLGxhbmd1YWdlc19uZWVkZWQ6bGFuZ3VhZ2VzTmVlZGVkLGVzdGltYXRlZF9udW1iZXJfb2Zfd29yZHM6ZXN0aW1hdGVkV29yZHMsY21zX3R5cGU6Y21zVHlwZSxkeW5hbWljX2NvbnRlbnQ6ZHluYW1pY0NvbnRlbnQsZm9ybV9sb2NhdGlvbjpmb3JtTG9jYXRpb259OyQuYWpheCh7dXJsOicvYWpheC1wcmljaW5nLWZyb20tZW1haWwvJyx0eXBlOidHRVQnLGRhdGE6ZGF0YSxzdWNjZXNzOmZ1bmN0aW9uKHJlc3BvbnNlKXtjb25zb2xlLmxvZygnc3VjY2VzcyEnKTtjb25zb2xlLmxvZyhyZXNwb25zZSk7fSxlcnJvcjpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoJ0FKQVggcmVxdWVzdCBmYWlsZWQnKTt9fSk7fQpmdW5jdGlvbiBzaG93QmFubmVyKCl7aWYobW9kYWxWaWV3ZWQ9PSd0cnVlJyl7JCgnI29mZmVyLWJhbm5lcicpLnNob3coKTt9fQpzaG93QmFubmVyKCk7ZnVuY3Rpb24gc2hvd0V4cHJlc3NCYW5uZXIoKXtpZihleHByZXNzTW9kYWxWaWV3ZD09J3RydWUnKXskKCcjb2ZmZXItYmFubmVyLWV4cHJlc3MnKS5zaG93KCk7fX0KaWYoaXNFeHByZXNzUGFnZSl7c2hvd0V4cHJlc3NCYW5uZXIoKTt9CiQoJy5tb2RhbC1iYWNrZ3JvdW5kJykuY2xpY2soZnVuY3Rpb24oZXZlbnQpe3ZhciB0YXJnZXRFbGVtZW50PWV2ZW50LnRhcmdldDtpZigkKHRhcmdldEVsZW1lbnQpLmhhc0NsYXNzKCdtb2RhbC1jbG9zZScpfHwkKHRhcmdldEVsZW1lbnQpLmhhc0NsYXNzKCdtb2RhbC1iYWNrZ3JvdW5kJykpeyQoJy5tb2RhbC1iYWNrZ3JvdW5kJykuaGlkZSgpO319KTskKCcuY2xvc2UtcG9wb3ZlcicpLmNsaWNrKGZ1bmN0aW9uKCl7JCgnI21vYmlsZS1wb3AnKS5oaWRlKCk7fSk7JCgnLmFjY29yZGlvbi1pdGVtJykuY2xpY2soZnVuY3Rpb24oKXt2YXIgYWNjb3JkaW9uQ29udGVudD0kKHRoaXMpLm5leHQoJy5hY2NvcmRpb24tY29udGVudCcpO3ZhciBhY2NvcmlvbkFycm93PSQodGhpcykuZmluZCgnLmFycm93Jyk7YWNjb3JkaW9uQ29udGVudC5zbGlkZVRvZ2dsZSgpO2lmKGFjY29yaW9uQXJyb3cuaGFzQ2xhc3MoJ3VwJykpe2FjY29yaW9uQXJyb3cucmVtb3ZlQ2xhc3MoJ3VwJyk7YWNjb3Jpb25BcnJvdy5hZGRDbGFzcygnZG93bicpO30KZWxzZXthY2NvcmlvbkFycm93LnJlbW92ZUNsYXNzKCdkb3duJyk7YWNjb3Jpb25BcnJvdy5hZGRDbGFzcygndXAnKTt9fSk7JCgnI3ZpZGVvLWRlbW8tcmV2ZWFsJykuY2xpY2soZnVuY3Rpb24oKXskKCcjdmlkZW8tZGVtby1mb3JtJykuc2hvdygpOyQoJyN2aWRlby1kZW1vLWZvcm0nKS5hbmltYXRlKHtoZWlnaHQ6JzE4MHB4Jyx9LDMwMCk7fSk7JCgiLnJldmVhbC1tb3JlIikub24oImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7JCh0aGlzKS5wYXJlbnQoKS5uZXh0KCJwIikuc2xpZGVUb2dnbGUoKTt9KTtmdW5jdGlvbiBwb3BFeHByZXNzTW9kYWwoYmFubmVyVHJpZ2dlcil7Y29uc29sZS5sb2coImxldHMgcG9wIHRoaXMgdGhpbmc6ICIrZXhwcmVzc01vZGFsVmlld2QpO2lmKHRydWUpe2NvbnNvbGUubG9nKCdzaG93IG1vZGFsIScpO2V4cHJlc3NNb2RhbFZpZXdkPSd0cnVlJztDb29raWVzLnNldCgnbW9kYWwtdmlldy1leHByZXNzcGFnZScsJ3RydWUnKTt2YXIgbW9kYWw9JCgnI29mZmVyLW1vZGFsLWV4cHJlc3MnKTt2YXIgbW9kYWxCb2R5PW1vZGFsLmZpbmQoJy5tb2RhbC1ib2R5Jyk7bW9kYWwuc2hvdygpO2lmKGlzRGVza3RvcCgpKXttb2RhbEJvZHkuYW5pbWF0ZSh7J3RvcCc6JzUwcHgnLCdvcGFjaXR5JzoxfSk7fQplbHNle21vZGFsQm9keS5hbmltYXRlKHsndG9wJzonMHB4Jywnb3BhY2l0eSc6MX0pO30Kc2hvd0V4cHJlc3NCYW5uZXIoKTttb2RhbENsb3NlLmNsaWNrKGZ1bmN0aW9uKCl7bW9kYWwuaGlkZSgpO21vZGFsQm9keS5hdHRyKCdzdHlsZScsJycpO30pO30KZWxzZXtjb25zb2xlLmxvZygnc2hvdyBCYW5uZXIhJyk7c2hvd0V4cHJlc3NCYW5uZXIoKTt9fQokKCcjb2ZmZXItYmFubmVyLWV4cHJlc3MgYScpLmNsaWNrKGZ1bmN0aW9uKCl7cG9wRXhwcmVzc01vZGFsKCd0cnVlJyk7fSk7ZnVuY3Rpb24gcG9wTW9kYWwobW9kYWxOYW1lKXtpZihtb2RhbE5hbWU9PSdvZmZlci1tb2RhbCcmJm1vZGFsVmlld2VkIT0ndHJ1ZSd8fG1vZGFsTmFtZT09J2V4aXQtbW9kYWwnJiZleGl0TW9kYWxWaWV3ZWQhPSd0cnVlJyl7aWYobW9kYWxOYW1lPT0nb2ZmZXItbW9kYWwnKXttb2RhbFZpZXdlZD0ndHJ1ZSc7Q29va2llcy5zZXQoJ2V4cHJlc3MtbW9kYWwtdmlldycsJ3RydWUnKTtzaG93QmFubmVyKCk7fQppZihtb2RhbE5hbWU9PSdleGl0LW1vZGFsJyl7ZXhpdE1vZGFsVmlld2VkPSd0cnVlJztDb29raWVzLnNldCgnZXhpdC1leHByZXNzLW1vZGFsLXZpZXcnLCd0cnVlJyk7fQp2YXIgbW9kYWw9JCgnIycrbW9kYWxOYW1lKTt2YXIgbW9kYWxCb2R5PW1vZGFsLmZpbmQoJy5tb2RhbC1ib2R5Jyk7bW9kYWwuc2hvdygpO2lmKGlzRGVza3RvcCgpKXttb2RhbEJvZHkuYW5pbWF0ZSh7J3RvcCc6JzUwcHgnLCdvcGFjaXR5JzoxfSk7fQplbHNle21vZGFsQm9keS5hbmltYXRlKHsndG9wJzonMHB4Jywnb3BhY2l0eSc6MX0pO30KbW9kYWxDbG9zZS5jbGljayhmdW5jdGlvbigpe21vZGFsLmhpZGUoKTttb2RhbEJvZHkuYXR0cignc3R5bGUnLCcnKTt9KTt9fQpmdW5jdGlvbiBmaW5kQ3VycmVudFNlY3Rpb24oKXtzZWN0aW9ucy5lYWNoKGZ1bmN0aW9uKGluZGV4KXt2YXIgc2VjdGlvblRvcFBvcz1NYXRoLnJvdW5kKCQodGhpcykub2Zmc2V0KCkudG9wKS0kKHdpbmRvdykuc2Nyb2xsVG9wKCk7dmFyIHNlY3Rpb25Cb3R0b209KE1hdGgucm91bmQoJCh0aGlzKS5vZmZzZXQoKS50b3ApK01hdGgucm91bmQoJCh0aGlzKS5vdXRlckhlaWdodCh0cnVlKSkpLSQod2luZG93KS5zY3JvbGxUb3AoKTtpZihzZWN0aW9uVG9wUG9zPG1pZHdheVBvaW50JiZzZWN0aW9uQm90dG9tPm1pZHdheVBvaW50KXtpZigkKHRoaXMpLmRhdGEoJ2FuaW1hdGUnKT09J2NvbnRlbnQgY2lyY2xlcycpeyQodGhpcykuZGF0YSgnYW5pbWF0ZScsJ2ZpbmlzaGVkJyk7aWYoaXNEZXNrdG9wKCkpe3Nob3dDb250ZW50Q2lyY2xlcygpO319CmVsc2V7aWYoJCh0aGlzKS5kYXRhKCdhbmltYXRlJykhPSdmaW5pc2hlZCcpe2FuaW1hdGVTZWN0aW9uQ29udGVudHMoJCh0aGlzKSk7JCh0aGlzKS5kYXRhKCdhbmltYXRlJywnZmluaXNoZWQnKTt9fX19KTt9CmZ1bmN0aW9uIGRvY1ByaWNpbmdXaXphcmQoKXt2YXIgc2Nyb2xsUG9zPSQod2luZG93KS5zY3JvbGxUb3AoKTt2YXIgaGFsZkRvY0hlaWdodD0oJChkb2N1bWVudCkuaGVpZ2h0KCkvMik7dmFyIHRoaXJkRG9jSGVpZ2h0PSgkKGRvY3VtZW50KS5oZWlnaHQoKS8zKTt2YXIgJHByaWNpbmdXaXphcmRIZXJvPSQoJy5wcmljaW5nLXdpemFyZC1oZXJvJyk7dmFyICRwcmljaW5nV2l6YXJkRm9vdGVyPSQoJy5wcmljaW5nLXdpemFyZC1mb290ZXInKTtpZihzY3JvbGxQb3M+aGFsZkRvY0hlaWdodCl7aWYoJHByaWNpbmdXaXphcmRGb290ZXIuaXMoJzplbXB0eScpfHwkLnRyaW0oJHByaWNpbmdXaXphcmRGb290ZXIuaHRtbCgpKT09PScnKXskKCcjcHJpY2luZy13aXphcmQnKS5kZXRhY2goKS5hcHBlbmRUbygnI3ByaWNpbmctd2l6YXJkLWZvb3RlcicpO319CmlmKHNjcm9sbFBvczx0aGlyZERvY0hlaWdodCl7aWYoJHByaWNpbmdXaXphcmRIZXJvLmlzKCc6ZW1wdHknKXx8JC50cmltKCRwcmljaW5nV2l6YXJkSGVyby5odG1sKCkpPT09JycpeyQoJyNwcmljaW5nLXdpemFyZCcpLmRldGFjaCgpLmFwcGVuZFRvKCcjcHJpY2luZy13aXphcmQtaGVybycpO319fQpkb2NQcmljaW5nV2l6YXJkKCk7ZnVuY3Rpb24gZG9ja1RhYmxlSGVhZGVyKCl7aWYoaXNEZXNrdG9wJiYkKCcjdGFibGUtc3RhcnQnKS5sZW5ndGg+MCl7dmFyIGhlYWRlclBvc2l0aW9uPSQoJyN0YWJsZS1zdGFydCcpLm9mZnNldCgpLnRvcC0kKHdpbmRvdykuc2Nyb2xsVG9wKCk7dmFyIHN0b3BwaW5nUG9pbnQ9JCgnI3RhYmxlLWZvb3RlcicpLm9mZnNldCgpLnRvcC0kKHdpbmRvdykuc2Nyb2xsVG9wKCk7aWYoc3RvcHBpbmdQb2ludDwxMTApeyQoJyN0YWJsZS1oZWFkZXInKS5yZW1vdmVDbGFzcygnY29udGFpbmVyIGZpeGVkLWhlYWRlcicpO30KZWxzZSBpZihoZWFkZXJQb3NpdGlvbjw3NSl7JCgnI3RhYmxlLWhlYWRlcicpLmFkZENsYXNzKCdjb250YWluZXIgZml4ZWQtaGVhZGVyJyk7fQplbHNlIGlmKGhlYWRlclBvc2l0aW9uPjc1KXskKCcjdGFibGUtaGVhZGVyJykucmVtb3ZlQ2xhc3MoJ2NvbnRhaW5lciBmaXhlZC1oZWFkZXInKTt9fQplbHNleyQoJyN0YWJsZS1oZWFkZXInKS5yZW1vdmVDbGFzcygnY29udGFpbmVyIGZpeGVkLWhlYWRlcicpO319CmRvY2tUYWJsZUhlYWRlcigpO2Z1bmN0aW9uIHNodWZmbGUoYXJyKXtmb3IodmFyIGoseCxpPWFyci5sZW5ndGg7aTtqPXBhcnNlSW50KE1hdGgucmFuZG9tKCkqaSkseD1hcnJbLS1pXSxhcnJbaV09YXJyW2pdLGFycltqXT14KTtyZXR1cm4gYXJyO30KZnVuY3Rpb24gaXNEZXNrdG9wKCl7aWYoJCh3aW5kb3cpLndpZHRoKCk+OTE1KXtyZXR1cm4gdHJ1ZTt9ZWxzZXtyZXR1cm4gZmFsc2U7fX0KZnVuY3Rpb24gb25lUGVyY2VudE9mKHZhbHVlKXt2YXIgb25lUGVyY2VudD12YWx1ZS8xMDA7cmV0dXJuIG9uZVBlcmNlbnQ7fQp2YXIgaGVyb0FuaW1hdGVTdGVwPTA7dmFyIGFuaW1hdGlvblNwZWVkPTE0MDA7ZnVuY3Rpb24gYW5pbWF0ZUhvbWVIZXJvKCl7aWYoaGVyb0FuaW1hdGVTdGVwPDIpeyQoJy50cmFuc2l0aW9uLXRleHQnKS5lcShoZXJvQW5pbWF0ZVN0ZXApLmRlbGF5KDE0MDApLmFuaW1hdGUoeydvcGFjaXR5JzowfSwxNDAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5oaWRlKCk7JCh0aGlzKS5uZXh0KCkuY3NzKHsnZGlzcGxheSc6J2lubGluZSd9KTskKHRoaXMpLm5leHQoKS5hbmltYXRlKHsnb3BhY2l0eSc6MX0sMTQwMCxmdW5jdGlvbigpeyQoJy50cmFuc2l0aW9uLWltYWdlJykuZXEoaGVyb0FuaW1hdGVTdGVwKzEpLmFuaW1hdGUoeydvcGFjaXR5JzoxfSwxNDAwKTtoZXJvQW5pbWF0ZVN0ZXArKzthbmltYXRlSG9tZUhlcm8oKTt9KTt9KTt9fQppZihpc0Rlc2t0b3AoKSl7YW5pbWF0ZUhvbWVIZXJvKCk7fQpmdW5jdGlvbiBhbmltYXRlTG9nb3MoKXt2YXIgZmlyc3RMb2dvPSQoJyNsb2dvLXNsaWRlciAuZ3JpZC1hdXRvOmZpcnN0Jyk7dmFyIGxhc3RMb2dvPSQoJyNsb2dvLXNsaWRlciAuZ3JpZC1hdXRvOmxhc3QnKTt2YXIgZmlyc3RMb2dvV2lkdGg9Zmlyc3RMb2dvLm91dGVyV2lkdGgodHJ1ZSk7dmFyIGFuaW1hdGlvblNwZWVkPTQ1MDAwO3ZhciBiYXNlU2l6ZT0xMDt2YXIgb25lUGVyY2VudFNwZWVkPWFuaW1hdGlvblNwZWVkLzEwMDt2YXIgb25lUGVyY2VudFNpemU9YmFzZVNpemUvMTAwO3ZhciBzaXplRGlmZmVyZW5jZT1maXJzdExvZ29XaWR0aC1iYXNlU2l6ZTt2YXIgcGVyY2VudGFnZUNoYW5nZT1zaXplRGlmZmVyZW5jZSpvbmVQZXJjZW50U2l6ZTt2YXIgc3BlZWRDaGFuZ2U9cGVyY2VudGFnZUNoYW5nZSpvbmVQZXJjZW50U3BlZWQ7YW5pbWF0aW9uU3BlZWQ9c3BlZWRDaGFuZ2U7bG9nb1NsaWRlci5hbmltYXRlKHtsZWZ0OictJytmaXJzdExvZ29XaWR0aCsncHgnfSxhbmltYXRpb25TcGVlZCwnbGluZWFyJyxmdW5jdGlvbigpe2ZpcnN0TG9nby5pbnNlcnRBZnRlcihsYXN0TG9nbyk7bG9nb1NsaWRlci5jc3MoeydsZWZ0JzonMHB4J30pO2FuaW1hdGVMb2dvcygpO30pO30KZnVuY3Rpb24gYW5pbWF0ZVNlY3Rpb25Db250ZW50cyhjdXJyZW50U2VjdGlvbil7aWYoaXNEZXNrdG9wKCkpe3ZhciBhbmltYXRlRWxlbWVudHM9Y3VycmVudFNlY3Rpb24uZmluZCgnLmdyaWQtNDpub3QoLm5vLWFuaW1hdGUpLCAuZ3JpZC0zOm5vdCgubm8tYW5pbWF0ZSksIC5hbmltYXRlLCAuYW5pbWF0ZS10b3AsIC5hbmltYXRlLXJpZ2h0LCAuYW5pbWF0ZS1ib3R0b20sIC5hbmltYXRlLWxlZnQnKTt2YXIgZGVsYXlTcGVlZD01MDA7aWYoYW5pbWF0ZUVsZW1lbnRzLmxlbmd0aD40KXtkZWxheVNwZWVkPTE1MDt9CmFuaW1hdGVFbGVtZW50cy5lYWNoKGZ1bmN0aW9uKGluZGV4KXtpZigkKHRoaXMpLmhhc0NsYXNzKCdhbmltYXRlJykpeyQodGhpcykuZGVsYXkoZGVsYXlTcGVlZCooaW5kZXgpKS5hbmltYXRlKHsnb3BhY2l0eSc6MX0sNzAwKTt9CmVsc2UgaWYoJCh0aGlzKS5oYXNDbGFzcygnYW5pbWF0ZS1sZWZ0JykpeyQodGhpcykuY3NzKHsnbGVmdCc6Jy09MzAnfSk7JCh0aGlzKS5kZWxheShkZWxheVNwZWVkKihpbmRleCkpLmFuaW1hdGUoeydsZWZ0JzonKz0zMCcsJ29wYWNpdHknOjF9LDcwMCk7fQplbHNlIGlmKCQodGhpcykuaGFzQ2xhc3MoJ2FuaW1hdGUtcmlnaHQnKSl7JCh0aGlzKS5jc3MoeydsZWZ0JzonKz0zMCd9KTskKHRoaXMpLmRlbGF5KGRlbGF5U3BlZWQqKGluZGV4KSkuYW5pbWF0ZSh7J2xlZnQnOictPTMwJywnb3BhY2l0eSc6MX0sNzAwKTt9CmVsc2UgaWYoJCh0aGlzKS5oYXNDbGFzcygnYW5pbWF0ZS1ib3R0b20nKSl7JCh0aGlzKS5jc3Moeyd0b3AnOictPTMwJywnb3BhY2l0eSc6MH0pOyQodGhpcykuZGVsYXkoZGVsYXlTcGVlZCooaW5kZXgpKS5hbmltYXRlKHsndG9wJzonKz0zMCcsJ29wYWNpdHknOjF9LDcwMCk7fQplbHNleyQodGhpcykuY3NzKHsndG9wJzonKz0zMCcsJ29wYWNpdHknOjB9KTskKHRoaXMpLmRlbGF5KGRlbGF5U3BlZWQqKGluZGV4KSkuYW5pbWF0ZSh7J3RvcCc6Jy09MzAnLCdvcGFjaXR5JzoxfSw3MDApO319KTt9fQpmdW5jdGlvbiBzdG9wQW5pbWF0aW9ucygpeyQoIi5jb250ZW50LWNpcmNsZSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnN0b3AoKTskKHRoaXMpLmF0dHIoJ3N0eWxlJywnJyk7fSk7JCgiLmNvbnRlbnQtY2lyY2xlIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuc3RvcCgpOyQodGhpcykuYXR0cignc3R5bGUnLCcnKTt9KTtpZighaXNEZXNrdG9wKCkpeyQoJyNsb2dvLXNsaWRlcicpLnN0b3AoKTskKCcjbG9nby1zbGlkZXInKS5hdHRyKCdzdHlsZScsJycpO30KaWYoaXNEZXNrdG9wKCkpe3Nob3dDb250ZW50Q2lyY2xlcygpO319CmZ1bmN0aW9uIHNob3dDb250ZW50Q2lyY2xlcygpe3ZhciBzdGFydGluZ1dpZHRoPTk1MTt2YXIgc3RhcnRpbmdIZWlnaHQ9NDY1O3ZhciBoYWxmU2NyZWVuPSQod2luZG93KS53aWR0aCgpLzI7aWYoaGFsZlNjcmVlbj5zdGFydGluZ1dpZHRoKXtoYWxmU2NyZWVuPXN0YXJ0aW5nV2lkdGg7fQp2YXIgcmVkdWN0aW9uPXN0YXJ0aW5nV2lkdGgtaGFsZlNjcmVlbjt2YXIgcGVyY2VudERpZmZlcmVuY2U9KHJlZHVjdGlvbi9zdGFydGluZ1dpZHRoKSoxMDA7JCgnLmNvbnRlbnQtY2lyY2xlJykuZWFjaChmdW5jdGlvbigpe3ZhciBjaXJjbGU9JCh0aGlzKTt2YXIgY2lyY2xlUD1jaXJjbGUuZmluZCgncCcpO2NpcmNsZS5yZW1vdmVBdHRyKCdzdHlsZScpO2NpcmNsZVAucmVtb3ZlQXR0cignc3R5bGUnKTt2YXIgY2lyY2xlV2lkdGg9Y2lyY2xlLndpZHRoKCk7dmFyIGNpcmNsZVBvc2l0aW9uPWNpcmNsZS5wb3NpdGlvbigpO3ZhciBmb250U2l6ZT1TdHJpbmcoY2lyY2xlUC5jc3MoImZvbnQtc2l6ZSIpLnJlcGxhY2UoJ3B4JywnJykpO3ZhciBuZXdXaWR0aD1jaXJjbGVXaWR0aC0ob25lUGVyY2VudE9mKGNpcmNsZVdpZHRoKSpwZXJjZW50RGlmZmVyZW5jZSk7dmFyIG5ld1RvcD0oY2lyY2xlUG9zaXRpb24udG9wKyhyZWR1Y3Rpb24vMykpLShvbmVQZXJjZW50T2YoY2lyY2xlUG9zaXRpb24udG9wKSpwZXJjZW50RGlmZmVyZW5jZSk7dmFyIG5ld0xlZnQ9Y2lyY2xlUG9zaXRpb24ubGVmdC0ob25lUGVyY2VudE9mKGNpcmNsZVBvc2l0aW9uLmxlZnQpKnBlcmNlbnREaWZmZXJlbmNlKTt2YXIgbmV3Rm9udFNpemU9Zm9udFNpemUtKG9uZVBlcmNlbnRPZihmb250U2l6ZSkqcGVyY2VudERpZmZlcmVuY2UpO2NpcmNsZS5jc3Moeyd3aWR0aCc6bmV3V2lkdGgrJ3B4JywnaGVpZ2h0JzpuZXdXaWR0aCsncHgnLCd0b3AnOm5ld1RvcCwnbGVmdCc6bmV3TGVmdCx9KTtjaXJjbGVQLmNzcygnZm9udFNpemUnLG5ld0ZvbnRTaXplKTt9KTtjaXJjbGVGbG9hdCgpO30KZnVuY3Rpb24gZmxvYXRDaXJjbGUoY2lyY2xlKXt4PU1hdGgucmFuZG9tKCkqMjtib3VuY2U9eCs1O3N3YXk9eCs3O3ZhciBzdGFydDt2YXIgZW5kO3ZhciBkaXJlY3Rpb247aWYoeCUyPT0wKXtzdGFydD0nKyc7ZW5kPSctJztkaXJlY3Rpb249J2xlZnQnO31lbHNle3N0YXJ0PSctJztlbmQ9JysnO2RpcmVjdGlvbj0ncmlnaHQnO30KY2lyY2xlLmFuaW1hdGUoeyd0b3AnOicrPScrYm91bmNlKydweCcsJ3dpZHRoJzonLT0nK3grJ3B4JywnaGVpZ2h0JzonLT0nK3grJ3B4J30sMjAwMCxmdW5jdGlvbigpe2NpcmNsZS5hbmltYXRlKHsndG9wJzonLT0nK2JvdW5jZSsncHgnLCd3aWR0aCc6Jys9Jyt4KydweCcsJ2hlaWdodCc6Jys9Jyt4KydweCd9LDIwMDApO2Zsb2F0Q2lyY2xlKCQodGhpcykpO30pO30KZnVuY3Rpb24gY2lyY2xlRmxvYXQoKXt2YXIgY2lyY2xlcz0kKCIuY29udGVudC1jaXJjbGUiKTt2YXIgYXJyPVtdO3ZhciBkZWxleVNwZWVkPTA7Zm9yKGk9MDtpPGNpcmNsZXMubGVuZ3RoO2krKyl7YXJyLnB1c2goaSk7fQphcnI9c2h1ZmZsZShhcnIpO2ZvcihpPTA7aTxjaXJjbGVzLmxlbmd0aDtpKyspe2RlbGV5U3BlZWQ9ZGVsZXlTcGVlZCsyMDA7dmFyIGN1cnJlbnRDaXJjbGU9Y2lyY2xlcy5lcShhcnJbaV0pO2N1cnJlbnRDaXJjbGUuZGVsYXkoZGVsZXlTcGVlZCkuYW5pbWF0ZSh7J29wYWNpdHknOicxJ30sNzAwLGZ1bmN0aW9uKCl7fSk7fX0KZnVuY3Rpb24gcmVzaXplZHcoKXtzdG9wQW5pbWF0aW9ucygpO2lmKGlzRGVza3RvcCgpKXt9ZWxzZXskKCIuY29udGVudC1jaXJjbGUiKS5hdHRyKCdzdHlsZScsJycpO319CmxldCAkc29sdXRpb25zPSQoIi5ob21lLWhlcm8tc29sdXRpb24iKTtsZXQgaW5kZXg9MDskc29sdXRpb25zLmhpZGUoKS5lcShpbmRleCkuc2hvdygpO3NldEludGVydmFsKGZ1bmN0aW9uKCl7JHNvbHV0aW9ucy5lcShpbmRleCkuZmFkZU91dChmdW5jdGlvbigpe2luZGV4PShpbmRleCsxKSUkc29sdXRpb25zLmxlbmd0aDskc29sdXRpb25zLmVxKGluZGV4KS5mYWRlSW4oKTt9KTt9LDUwMDApOyQoJ1tuYW1lPSJ2aWRlb190eXBlIl0nKS5jaGFuZ2UoZnVuY3Rpb24oKXt2YXIgdmlkZW9UeXBlPSQodGhpcykudmFsKCk7aWYodmlkZW9UeXBlPT0nYWxsJyl7JCgnLnZpZGVvLXJlc291cmNlJykuY3NzKCdkaXNwbGF5JywnZmxleCcpO30KZWxzZXskKCcudmlkZW8tcmVzb3VyY2UnKS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7JCgnW2RhdGEtdmlkZW8tdHlwZT0iJyt2aWRlb1R5cGUrJyJdJykuY3NzKCdkaXNwbGF5JywnZmxleCcpO319KTskKCcjdmlkZW8tc2VhcmNoJykub24oJ2lucHV0JyxmdW5jdGlvbigpe3ZhciBzZWFyY2hWYWw9JCh0aGlzKS52YWwoKS50b0xvd2VyQ2FzZSgpOyQoJyN2aWRlby1saXN0IC52aWRlby1yZXNvdXJjZScpLmVhY2goZnVuY3Rpb24oKXt2YXIgdGV4dD0kKHRoaXMpLnRleHQoKS50b0xvd2VyQ2FzZSgpO2lmKHRleHQuaW5jbHVkZXMoc2VhcmNoVmFsKSl7JCh0aGlzKS5zaG93KCk7fWVsc2V7JCh0aGlzKS5oaWRlKCk7fX0pO30pOyQoIi52aWRlby1zZWN0aW9uLWxpbmsiKS5jbGljayhmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHRhcmdldElkPSQodGhpcykuZGF0YSgibGluayIpO3ZhciB0YXJnZXRFbGVtZW50PSQoIiMiK3RhcmdldElkKTtpZih0YXJnZXRFbGVtZW50Lmxlbmd0aCl7JCgiaHRtbCwgYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDp0YXJnZXRFbGVtZW50Lm9mZnNldCgpLnRvcH0sNDAwKTt9fSk7dmFyIHNjcm9sbFdpZHRoPSQoJy5jdXN0b20tc2Nyb2xsYmFyIC5ncmlkLTQnKS5vdXRlcldpZHRoKHRydWUpKzEwOyQoJy5zY3JvbGwtbGVmdC1idG4nKS5vbignY2xpY2snLGZ1bmN0aW9uKCl7dmFyIHNjcm9sbEFtb3VudD0kKCcuY3VzdG9tLXNjcm9sbGJhcicpLnNjcm9sbExlZnQoKTskKCcuY3VzdG9tLXNjcm9sbGJhcicpLmFuaW1hdGUoe3Njcm9sbExlZnQ6c2Nyb2xsQW1vdW50LXNjcm9sbFdpZHRofSwnc2xvdycpO30pOyQoJy5zY3JvbGwtcmlnaHQtYnRuJykub24oJ2NsaWNrJyxmdW5jdGlvbigpe3ZhciBzY3JvbGxBbW91bnQ9JCgnLmN1c3RvbS1zY3JvbGxiYXInKS5zY3JvbGxMZWZ0KCk7JCgnLmN1c3RvbS1zY3JvbGxiYXInKS5hbmltYXRlKHtzY3JvbGxMZWZ0OnNjcm9sbEFtb3VudCtzY3JvbGxXaWR0aH0sJ3Nsb3cnKTt9KTskKCcuc2VhcmNoSW5wdXQnKS5vbignaW5wdXQnLGZ1bmN0aW9uKCl7aWYoJCh0aGlzKS52YWwoKSE9JycpeyQoJy5zZWFyY2hTZWxlY3QnKS5zaG93KCk7fQplbHNleyQoJy5zZWFyY2hTZWxlY3QnKS5oaWRlKCk7fX0pCiQoJy5tcC1saXRlLXdlYnNpdGUnKS5vbignaW5wdXQnLGZ1bmN0aW9uKCl7JCh0aGlzKS5jbG9zZXN0KCdmb3JtJykuZmluZCgnLndlYnNpdGUtZmllbGQgbGFiZWwnKS5yZW1vdmVDbGFzcygnYmctZXJyb3InKTt9KTskKCcubXAtbGl0ZS1uZXh0JykuY2xpY2soZnVuY3Rpb24oKXt2YXIgZm9ybUVsZW1lbnQ9JCh0aGlzKS5jbG9zZXN0KCdmb3JtJyk7dmFyIHdlYnNpdGVJbnB1dD1mb3JtRWxlbWVudC5maW5kKCcubXAtbGl0ZS13ZWJzaXRlJyk7dmFyIHdlYnNpdGVXcmFwPWZvcm1FbGVtZW50LmZpbmQoJy53ZWJzaXRlLWZpZWxkJyk7dmFyIGxhbmd1YWdlSW5wdXQ9Zm9ybUVsZW1lbnQuZmluZCgnLm1wLWxpdGUtbGFuZ3VhZ2VzJyk7dmFyIGxhbmd1YWdlV3JhcD1mb3JtRWxlbWVudC5maW5kKCcubGFuZ3VhZ2UtZmllbGQnKTt2YXIgbmV4dEJ1dHRvbj1mb3JtRWxlbWVudC5maW5kKCcubXAtbGl0ZS1uZXh0Jyk7dmFyIHByZXZpb3VzQnV0dG9uPWZvcm1FbGVtZW50LmZpbmQoJy5tcC1saXRlLXByZXZpb3VzJyk7dmFyIHN1Ym1pdEJ1dHRvbj1mb3JtRWxlbWVudC5maW5kKCdbdHlwZT0ic3VibWl0Il0nKTt2YXIgZW1haWxXcmFwPWZvcm1FbGVtZW50LmZpbmQoJy5lbWFpbC1maWVsZCcpO3ZhciBlbWFpbEZpZWxkPWZvcm1FbGVtZW50LmZpbmQoJy5tcC1saXRlLWVtYWlsJyk7dmFyIHN0ZXBPbmVNZXNzYWdlPWZvcm1FbGVtZW50LmZpbmQoJy5saXRlLXN0ZXAtMScpO3ZhciBzdGVwVHdvTWVzc2FnZT1mb3JtRWxlbWVudC5maW5kKCcubGl0ZS1zdGVwLTInKTtpZih3ZWJzaXRlSW5wdXQudmFsKCk9PScnKXt3ZWJzaXRlV3JhcC5maW5kKCdsYWJlbCcpLmFkZENsYXNzKCdiZy1lcnJvcicpO30KZWxzZXt3ZWJzaXRlV3JhcC5maW5kKCdsYWJlbCcpLnJlbW92ZUNsYXNzKCdiZy1lcnJvcicpO30KaWYobGFuZ3VhZ2VJbnB1dC52YWwoKT09Jycpe2xhbmd1YWdlV3JhcC5maW5kKCdsYWJlbCcpLmFkZENsYXNzKCdiZy1lcnJvcicpO30KZWxzZXtsYW5ndWFnZVdyYXAuZmluZCgnbGFiZWwnKS5yZW1vdmVDbGFzcygnYmctZXJyb3InKTt9CmlmKHdlYnNpdGVJbnB1dC52YWwoKSE9JycmJmxhbmd1YWdlSW5wdXQudmFsKCkhPScnKXtjYXB0dXJlUHJpY2luZ0Zvcm0oKTt3ZWJzaXRlV3JhcC5oaWRlKCk7bGFuZ3VhZ2VXcmFwLmhpZGUoKTtzdGVwT25lTWVzc2FnZS5oaWRlKCk7c3RlcFR3b01lc3NhZ2Uuc2hvdygpO25leHRCdXR0b24uaGlkZSgpO3ByZXZpb3VzQnV0dG9uLnNob3coKTtlbWFpbFdyYXAuc2hvdygpO3N1Ym1pdEJ1dHRvbi5zaG93KCk7cHJldmlvdXNCdXR0b24ub2ZmKCk7cHJldmlvdXNCdXR0b24uY2xpY2soZnVuY3Rpb24oKXskKHRoaXMpLmhpZGUoKTt3ZWJzaXRlV3JhcC5zaG93KCk7bGFuZ3VhZ2VXcmFwLnNob3coKTtzdGVwT25lTWVzc2FnZS5zaG93KCk7c3RlcFR3b01lc3NhZ2UuaGlkZSgpO25leHRCdXR0b24uc2hvdygpO2VtYWlsV3JhcC5oaWRlKCk7c3VibWl0QnV0dG9uLmhpZGUoKTt9KTt9fSk7JCgnLmZlYXR1cmUtb3B0aW9uJykuY2xpY2soZnVuY3Rpb24oKXt2YXIgZmVhdHVyZVNlbGVjdGVkPSQodGhpcykuZGF0YSgnZmVhdHVyZScpO3ZhciBmZWF0dXJlQ29udGFpbmVyPSQodGhpcykuY2xvc2VzdCgnLmZlYXR1cmVzLWNhcmQtYm9keScpO2ZlYXR1cmVDb250YWluZXIuZmluZCgnLmZlYXR1cmUtZGVzY3JpcHRpb24nKS5oaWRlKCk7ZmVhdHVyZUNvbnRhaW5lci5maW5kKCcuZmVhdHVyZS1vcHRpb24nKS5yZW1vdmVDbGFzcygnY29sb3ItZ3JheSBiZy13aGl0ZScpLmFkZENsYXNzKCdjb2xvci13aGl0ZScpOyQodGhpcykucmVtb3ZlQ2xhc3MoJ2NvbG9yLXdoaXRlJykuYWRkQ2xhc3MoJ2NvbG9yLWdyYXkgYmctd2hpdGUnKTskKCcjJytmZWF0dXJlU2VsZWN0ZWQpLnNob3coKTt9KTtmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCl7dmFyIGRhdGE9ZXZlbnQuZGF0YTtpZihkYXRhJiZkYXRhWyJleHByZUZvcm0iXSl7dmFyIHRvcEZvcm1XcmFwPSQoJyN0b3AtZm9ybS13cmFwcGVyJyk7dmFyIGJvdHRvbUZvcm1XcmFwPSQoJyN0b3AtZm9ybS13cmFwcGVyJyk7dmFyIGV4cHJlc3NGcmFtZT0kKCcjZXhwcmVzcy1mb3JtLWZyYW1lJyk7dmFyIGV4cHJlc3NUaGFua3M9JCgnPGRpdiBzdHlsZT0icGFkZGluZzogMTVweDtib3JkZXItcmFkaXVzOiAyMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZmZmOyI+PGg0IGNsYXNzPSJjb2xvci13aGl0ZSI+VGhhbmsgeW91ITwvaDQ+PHAgY2xhc3M9ImNvbG9yLXdoaXRlIj5SZWRpcmVjdGluZyB0byB0aGUgTVAgRXhwcmVzcyBBcHBsaWNhdGlvbiBMb2dpbjxwPjwvZGl2PicpO3RvcEZvcm1XcmFwLmFwcGVuZChleHByZXNzVGhhbmtzKTtib3R0b21Gb3JtV3JhcC5hcHBlbmQoZXhwcmVzc1RoYW5rcyk7ZXhwcmVzc0ZyYW1lLmhpZGUoKTtjb25zb2xlLmxvZyhkYXRhWyJleHByZUZvcm0iXSk7Y29uc29sZS5sb2coZGF0YVsiUHJvamVjdCBXZWJzaXRlIFVSTCJdKTtjb25zb2xlLmxvZyhkYXRhWyJQcm9qZWN0IE9yaWdpbiBMYW5ndWFnZSJdKTtjb25zb2xlLmxvZyhkYXRhWyJQcm9qZWN0IExhbmd1YWdlcyJdKTtjb25zb2xlLmxvZyhkYXRhWyJlbWFpbCJdKTt2YXIgZXhwcmVzc0FQUD0naHR0cHM6Ly9hcHAubW90aW9ucG9pbnRleHByZXNzLmNvbS9fZWwvZXh0L3BoYXJkb3Qvd2ViaG9vaz8nKycmUHJvamVjdF9XZWJzaXRlX1VSTD0nK2RhdGFbIlByb2plY3QgV2Vic2l0ZSBVUkwiXSsnJlByb2plY3RfTGFuZ3VhZ2VzPScrZGF0YVsiUHJvamVjdCBMYW5ndWFnZXMiXSsnJmVtYWlsPScrZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEuZW1haWwpKycmcHJlcG9wdWxhdGU9ZmFsc2UnO2NvbnNvbGUubG9nKCJleHByZXNzIGFwcCB1cmwiKTtjb25zb2xlLmxvZyhleHByZXNzQVBQKTtkYXRhTGF5ZXIucHVzaCh7J2V2ZW50JzonZXhwcmVzcy1mb3JtLXN1Ym1pdCd9KTt3aW5kb3cubG9jYXRpb24uaHJlZj1leHByZXNzQVBQO319CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJyxyZWNlaXZlTWVzc2FnZSxmYWxzZSk7JCgnaW5wdXRbbmFtZT0iUHJvamVjdCBXZWJzaXRlIFVSTCJdJykub24oJ2lucHV0JyxmdW5jdGlvbigpe2NvbnN0IGlucHV0VmFsdWU9JCh0aGlzKS52YWwoKTtpZihpbnB1dFZhbHVlLmluY2x1ZGVzKCJhcmNoaXZlb2ZvdXJvd24iKSl7JCh0aGlzKS52YWwoJycpO2FsZXJ0KCJUaGUgVVJMIGNvbnRhaW5zIGEgcmVzdHJpY3RlZCBrZXl3b3JkIGFuZCBoYXMgYmVlbiBjbGVhcmVkLiIpO319KTskKCcjZXhwcmVzcy1yZWdpc3RlcicpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGlucHV0VmFsdWU9JCgnLm1wLWV4cHJlc3Mtd2Vic2l0ZScpLnZhbCgpLnRyaW0oKTt2YXIgZW1haWxWYWx1ZT0kKCcubXAtZXhwcmVzcy13ZWJzaXRlJykudmFsKCkudHJpbSgpO2NvbnN0IHlvdXR1YmVSZWdleD0veW91dHViZVwuY29tfHlvdXR1XC5iZS87Y29uc3QgbGV0dGVyUmVnZXg9L1thLXpBLVpdLztpZigheW91dHViZVJlZ2V4LnRlc3QoaW5wdXRWYWx1ZSkmJmlucHV0VmFsdWUuaW5jbHVkZXMoJy4nKSYmIWlucHV0VmFsdWUuaW5jbHVkZXMoJ0AnKSYmIWlucHV0VmFsdWUuaW5jbHVkZXMoJyAnKSYmbGV0dGVyUmVnZXgudGVzdChpbnB1dFZhbHVlKSl7Y29uc29sZS5sb2coJ2lucHV0IHZhbHVlIGlzIG5vdCBlbXB0eScpO3ZhciB1cGRhdGVkVmFsdWU9aW5wdXRWYWx1ZS5yZXBsYWNlKC9odHRwcz86XC9cL3x3d3dcLnxbXC86Xy1dL2csJycpO2NvbnNvbGUubG9nKCd1cGRhdGUgdmFsdWU6ICcrdXBkYXRlZFZhbHVlKTt2YXIgdGltZXN0YW1wPURhdGUubm93KCk7dmFyIHRpbWVzdGFtcEFzU3RyaW5nPXRpbWVzdGFtcC50b1N0cmluZygpO2NvbnNvbGUubG9nKCd0aW1lc3RhbXAgc3RyaW5nOiAnK3RpbWVzdGFtcEFzU3RyaW5nKTt2YXIgZXhwcmVzc0VtYWlsPXVwZGF0ZWRWYWx1ZSsnLScrdGltZXN0YW1wQXNTdHJpbmcrIkBtb3Rpb25wb2ludGV4cHJlc3MuY29tIjtjb25zb2xlLmxvZygnZXhwcmVzcyBlbWFpbDogJytleHByZXNzRW1haWwpOyQoJyNleHByZXNzLWVtYWlsLWlucHV0JykudmFsKGV4cHJlc3NFbWFpbCk7dmFyIGZvcm09JCgnI21wLWV4cHJlc3MtZm9ybScpWzBdO3ZhciBmb3JtRGF0YT1uZXcgRm9ybURhdGEoZm9ybSk7Y29uc3QgZGF0YT17ImV4cHJlRm9ybSI6InRydWUiLCJQcm9qZWN0IFdlYnNpdGUgVVJMIjpmb3JtRGF0YS5nZXQoJ1Byb2plY3QgV2Vic2l0ZSBVUkwnKSwiUHJvamVjdCBPcmlnaW4gTGFuZ3VhZ2UiOmZvcm1EYXRhLmdldCgnUHJvamVjdCBPcmlnaW4gTGFuZ3VhZ2UnKSwiUHJvamVjdCBMYW5ndWFnZXMiOmZvcm1EYXRhLmdldCgnUHJvamVjdCBMYW5ndWFnZXMnKSwiZW1haWwiOmZvcm1EYXRhLmdldCgnZW1haWwnKSx9O2lmKGZvcm0uY2hlY2tWYWxpZGl0eSgpKXtmb3JtLnN1Ym1pdCgpO3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZGF0YSwnKicpO2NvbnNvbGUubG9nKCJGb3JtIGlzIHZhbGlkLCBkYXRhTGF5ZXIgcHVzaGVkLCBhbmQgZm9ybSB3b3VsZCBiZSBzdWJtaXR0ZWQgaGVyZS4iKTt9ZWxzZXt9fQplbHNleyQoJyNkb21haW4td2FybmluZycpLnJlbW92ZSgpO3ZhciBpbnZhbGlkTWVzc2FnZT0kKCc8c3BhbiBpZD0iZG9tYWluLXdhcm5pbmciIGNsYXNzPSJmb250LXNtYWxsIGVycm9yIj4gUGxlYXNlIHVzZSB2YWxpZCBkb21haW48L3NwYW4+Jyk7JCgnI2V4cHJlc3MtZG9tYWluLWxhYmVsJykuYXBwZW5kKGludmFsaWRNZXNzYWdlKTt9fSk7JCgnI3ByaWNpbmctdG9nZ2xlJykuY2xpY2soZnVuY3Rpb24oKXskKCcuZXhwcmVzcy10b2dnbGUsIC5jb25jaWVyZ2UtdG9nZ2xlLCAuZXhwcmVzcy1jb2wsIC5jb25jaWVyZ2UtY29sJykudG9nZ2xlKCk7fSk7JCgnI2V4cHJlc3MtcHJpY2luZy1yZXZlYWwnKS5jbGljayhmdW5jdGlvbigpeyQoJy5leHByZXNzLXByaWNpbmctaGlkZScpLnRvZ2dsZUNsYXNzKCdleHByZXNzLXByaWNpbmctc2hvdycpOyQoJyNoaWRlLWFsbC1wcmljaW5nJykudG9nZ2xlKCk7JCgnI3Nob3ctYWxsLXByaWNpbmcnKS50b2dnbGUoKTt9KTskKCcjZXhwcmVzcy1mYXEtcmV2ZWFsJykuY2xpY2soZnVuY3Rpb24oKXskKCcuZXhwcmVzcy1mYXEtaGlkZScpLnRvZ2dsZSgpOyQoJyNoaWRlLWFsbC1mYXEnKS50b2dnbGUoKTskKCcjc2hvdy1hbGwtZmFxJykudG9nZ2xlKCk7fSk7JCgnaW5wdXRbbmFtZT0iUHJvamVjdCBXZWJzaXRlIFVSTCJdJykub24oJ2lucHV0JyxmdW5jdGlvbigpe3ZhciBjdXJyZW50VmFsdWU9JCh0aGlzKS52YWwoKTt3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHt0eXBlOidleHByZXNzVVJMJyx2YWx1ZTpjdXJyZW50VmFsdWV9LCcqJyk7fSk7dmFyIG1wRXhwcmVzc0Zvcm09JCgnI2V4cHJlc3MtZm9ybS1mcmFtZScpO2Z1bmN0aW9uIG9ic2VydmVFbGVtZW50KCl7aWYobXBFeHByZXNzRm9ybS5sZW5ndGgpe2NvbnN0IG9ic2VydmVyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcyk9PntlbnRyaWVzLmZvckVhY2goZW50cnk9PntpZihlbnRyeS5pc0ludGVyc2VjdGluZyl7b25TY3JlZW4oKTt9ZWxzZXtvZmZTY3JlZW4oKTt9fSk7fSk7Y29uc3QgZWxlbWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybS1zZWN0aW9uJyk7b2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KTt9fQpvYnNlcnZlRWxlbWVudCgpO2Z1bmN0aW9uIG9uU2NyZWVuKCl7Y29uc29sZS5sb2coJ0VsZW1lbnQgaXMgb24gc2NyZWVuJyk7bXBFeHByZXNzRm9ybS5hcHBlbmRUbygnI2JvdHRvbS1mb3JtLXdyYXBwZXInKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0RXhwcmVzc1VSTCgpO30sMTAwMCk7fQpmdW5jdGlvbiBvZmZTY3JlZW4oKXtjb25zb2xlLmxvZygnRWxlbWVudCBpcyBvZmYgc2NyZWVuJyk7bXBFeHByZXNzRm9ybS5hcHBlbmRUbygnI3RvcC1mb3JtLXdyYXBwZXInKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0RXhwcmVzc1VSTCgpO30sMTAwMCk7fQp2YXIgY3VycmVudFRlc3RpbW9uaWFsPTA7dmFyIG51bWJlck9mVGVzdGltb25pYWxzPSQoJy5leHByZXNzLXRlc3RpbW9uaWFsJykubGVuZ3RoO3ZhciBhbmltYXRpb25TcGVlZD01MDA7dmFyIGRpc3BsYXlEdXJhdGlvbj01MDAwO3ZhciBhbmltYXRpb25UaW1lb3V0O2Z1bmN0aW9uIHNob3dUZXN0aW1vbmlhbChpbmRleCxpbW1lZGlhdGU9ZmFsc2Upe2NsZWFyVGltZW91dChhbmltYXRpb25UaW1lb3V0KTtpZihpbW1lZGlhdGUpeyQoJy5leHByZXNzLXRlc3RpbW9uaWFsJykuc3RvcCh0cnVlLHRydWUpO30KJCgnLmV4cHJlc3MtdGVzdGltb25pYWwnKS5oaWRlKCkuY3NzKCdsZWZ0JywnMTAwJScpOyQoJy5leHByZXNzLXRlc3RpbW9uaWFsJykuZXEoaW5kZXgpLnNob3coKS5hbmltYXRlKHtsZWZ0OicwJ30sYW5pbWF0aW9uU3BlZWQsZnVuY3Rpb24oKXthbmltYXRpb25UaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXskKCcuZXhwcmVzcy10ZXN0aW1vbmlhbCcpLmVxKGluZGV4KS5hbmltYXRlKHtsZWZ0OictMTAwJSd9LGFuaW1hdGlvblNwZWVkLGZ1bmN0aW9uKCl7JCh0aGlzKS5oaWRlKCk7Y3VycmVudFRlc3RpbW9uaWFsPShjdXJyZW50VGVzdGltb25pYWwrMSklbnVtYmVyT2ZUZXN0aW1vbmlhbHM7c2hvd1Rlc3RpbW9uaWFsKGN1cnJlbnRUZXN0aW1vbmlhbCk7fSk7fSxkaXNwbGF5RHVyYXRpb24pO30pOyQoJy50ZXN0aW1vbmlhbC1jaXJjbGUnKS5yZW1vdmVDbGFzcygndGVzdGltb25pYWwtYWN0aXZlJyk7JCgnLnRlc3RpbW9uaWFsLWNpcmNsZScpLmVxKGluZGV4KS5hZGRDbGFzcygndGVzdGltb25pYWwtYWN0aXZlJyk7fQpzaG93VGVzdGltb25pYWwoY3VycmVudFRlc3RpbW9uaWFsKTskKCcudGVzdGltb25pYWwtY2lyY2xlJykuY2xpY2soZnVuY3Rpb24oKXt2YXIgaW5kZXg9JCh0aGlzKS5pbmRleCgpO2N1cnJlbnRUZXN0aW1vbmlhbD1pbmRleDtzaG93VGVzdGltb25pYWwoaW5kZXgsdHJ1ZSk7fSk7ZnVuY3Rpb24gYW5pbWF0ZUV4cHJlc3NQaWxscyhpbmRleCl7dmFyICRwaWxscz0kKCcuZXhwcmVzcy1waWxsJyk7aWYoaW5kZXg+PSRwaWxscy5sZW5ndGgpe2luZGV4PTA7fQp2YXIgJGN1cnJlbnRQaWxsPSRwaWxscy5lcShpbmRleCk7JGN1cnJlbnRQaWxsLmZhZGVJbigxMDAwKS5kZWxheSgyMDAwKS5mYWRlT3V0KDEwMDAsZnVuY3Rpb24oKXthbmltYXRlRXhwcmVzc1BpbGxzKGluZGV4KzEpO30pO30KYW5pbWF0ZUV4cHJlc3NQaWxscygwKTtjb25zdCAkc3RlcHM9JCgnLmFkYXB0aXZlLWNhcm91c2VsLXN0ZXAnKTtsZXQgY3VycmVudEluZGV4PSRzdGVwcy5pbmRleCgkKCcuYWN0aXZlLXN0ZXAnKSk7ZnVuY3Rpb24gdXBkYXRlTmF2QnV0dG9ucygpeyQoJyNhZGFwdGl2ZS1wcmV2LXN0ZXAnKS50b2dnbGUoY3VycmVudEluZGV4PjApOyQoJyNhZGFwdGl2ZS1uZXh0LXN0ZXAnKS50b2dnbGUoY3VycmVudEluZGV4PCRzdGVwcy5sZW5ndGgtMSk7fQpmdW5jdGlvbiBzaG93QWRhcHRpdmVTdGVwKG5ld0luZGV4LGRpcmVjdGlvbil7aWYobmV3SW5kZXg9PT1jdXJyZW50SW5kZXh8fG5ld0luZGV4PDB8fG5ld0luZGV4Pj0kc3RlcHMubGVuZ3RoKXJldHVybjtjb25zdCAkY3VycmVudD0kc3RlcHMuZXEoY3VycmVudEluZGV4KTtjb25zdCAkbmV4dD0kc3RlcHMuZXEobmV3SW5kZXgpO2NvbnN0IG91dExlZnQ9ZGlyZWN0aW9uPT09J25leHQnPyctMTAwJSc6JzEwMCUnO2NvbnN0IGluU3RhcnQ9ZGlyZWN0aW9uPT09J25leHQnPycxMDAlJzonLTEwMCUnOyRuZXh0LmNzcyh7bGVmdDppblN0YXJ0LG9wYWNpdHk6MSx6SW5kZXg6M30pLmFkZENsYXNzKCdhY3RpdmUtc3RlcCcpOyRjdXJyZW50LmNzcyh7ekluZGV4OjJ9KS5hbmltYXRlKHtsZWZ0Om91dExlZnR9LDUwMCxmdW5jdGlvbigpeyRjdXJyZW50LnJlbW92ZUNsYXNzKCdhY3RpdmUtc3RlcCcpLmNzcyh7b3BhY2l0eTowLHpJbmRleDowfSk7fSk7JG5leHQuYW5pbWF0ZSh7bGVmdDonMCUnfSw1MDAsZnVuY3Rpb24oKXtjdXJyZW50SW5kZXg9bmV3SW5kZXg7dXBkYXRlTmF2QnV0dG9ucygpO30pO30KbGV0IHNsaWRlSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtjb25zdCBlbD0kKCcjYWRhcHRpdmUtc3RlcC0xJyk7ZWwuYWRkQ2xhc3MoJ2F0dGVudGlvbi1zbGlkZScpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlbC5yZW1vdmVDbGFzcygnYXR0ZW50aW9uLXNsaWRlJyk7fSwxMDAwKTt9LDMwMDApOyQoJyNhZGFwdGl2ZS1uZXh0LXN0ZXAnKS5hZGRDbGFzcygncHVsc2UtYW5pbWF0aW9uJyk7JCgnI2FkYXB0aXZlLW5leHQtc3RlcCcpLm9uKCdjbGljaycsZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZUNsYXNzKCdwdWxzZS1hbmltYXRpb24nKTtjbGVhckludGVydmFsKHNsaWRlSW50ZXJ2YWwpO3Nob3dBZGFwdGl2ZVN0ZXAoY3VycmVudEluZGV4KzEsJ25leHQnKTt9KTskKCcjYWRhcHRpdmUtcHJldi1zdGVwJykub24oJ2NsaWNrJyxmdW5jdGlvbigpe3Nob3dBZGFwdGl2ZVN0ZXAoY3VycmVudEluZGV4LTEsJ3ByZXYnKTt9KTt1cGRhdGVOYXZCdXR0b25zKCk7JCgnLmZhcS1pdGVtJykuY2xpY2soZnVuY3Rpb24oKXt2YXIgJGZhcUFuc3dlcj0kKHRoaXMpLm5leHQoJy5mYXEtYW5zd2VyJyk7dmFyICRhcnJvdz0kKHRoaXMpLmZpbmQoJy5hcnJvdy11cCcpOyRmYXFBbnN3ZXIuc2xpZGVUb2dnbGUoJ2Zhc3QnLGZ1bmN0aW9uKCl7JGFycm93LnRvZ2dsZUNsYXNzKCdyb3RhdGUtYXJyb3cnKTt9KTt9KTskKCcjZXhwcmVzcy1wcmljaW5nLXRvZ2dsZScpLmNoYW5nZShmdW5jdGlvbigpeyQoJyNzZWxlY3QtYW5udWFsLCAjc2VsZWN0LW1vbnRobHknKS50b2dnbGVDbGFzcygnZm9udC1zbWFsbCcpOyQoJyNzZWxlY3QtYW5udWFsLCAjc2VsZWN0LW1vbnRobHknKS50b2dnbGVDbGFzcygnZm9udC1ibGFjaycpOyQoJy5hbm51YWwtcHJpY2UsIC5tb250aGx5LXByaWNlJykudG9nZ2xlKCk7fSk7Y29uc3QgJGNvbnRhaW5lcj0kKCIjd2hhdHMtbmV3LW5hdi1jb250YWluZXIiKTskKCcud2hhdHMtbmV3LXByaW1hcnktbmF2Jykub24oImNsaWNrIixmdW5jdGlvbihlKXt2YXIgc3ViTmF2PSQodGhpcykubmV4dCgiLndoYXRzLW5ldy1zdWJuYXYiKTt2YXIgYXJyb3c9JCh0aGlzKS5maW5kKCIud2hhdHMtbmV3LWFycm93Iik7ZS5wcmV2ZW50RGVmYXVsdCgpOyQoIi53aGF0cy1uZXctc3VibmF2Iikubm90KHN1Yk5hdikuc2xpZGVVcCgpO3N1Yk5hdi5zbGlkZVRvZ2dsZSgpOyQoIi53aGF0cy1uZXctYXJyb3ciKS5ub3QoYXJyb3cpLnJlbW92ZUNsYXNzKCJleHBhbmRlZCIpO2Fycm93LnRvZ2dsZUNsYXNzKCJleHBhbmRlZCIpO30pOyRjb250YWluZXIuZmluZCgiYSIpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IHRhcmdldElkPSQodGhpcykuYXR0cigiaHJlZiIpO2lmKHRhcmdldElkJiYkKHRhcmdldElkKS5sZW5ndGgpeyQoImh0bWwsIGJvZHkiKS5hbmltYXRlKHtzY3JvbGxUb3A6JCh0YXJnZXRJZCkub2Zmc2V0KCkudG9wLTE1MCx9LDUwMCk7fWVsc2V7Y29uc29sZS5lcnJvcigiU2Nyb2xsIHRhcmdldCBub3QgZm91bmQgZm9yOiIsdGFyZ2V0SWQpO319KTtjb25zdCAkZm9vdGVyPSQoImZvb3RlciIpO2NvbnN0IGJ1ZmZlcj01O2lmKCRjb250YWluZXIubGVuZ3RoJiYkZm9vdGVyLmxlbmd0aCl7Y29uc3QgY29udGFpbmVySW5pdGlhbE9mZnNldD0kY29udGFpbmVyLm9mZnNldCgpLnRvcDskKHdpbmRvdykub24oInNjcm9sbCIsZnVuY3Rpb24oKXtjb25zdCBzY3JvbGxUb3A9JCh3aW5kb3cpLnNjcm9sbFRvcCgpO2NvbnN0IGZvb3Rlck9mZnNldD0kZm9vdGVyLm9mZnNldCgpLnRvcDtjb25zdCBuYXZIZWlnaHQ9JGNvbnRhaW5lci5vdXRlckhlaWdodCgpO2lmKHNjcm9sbFRvcD49Y29udGFpbmVySW5pdGlhbE9mZnNldC0yMDArYnVmZmVyKXskY29udGFpbmVyLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6Ijc1cHgiLG1heFdpZHRoOiIyMC4yJSJ9KTt9ZWxzZXskY29udGFpbmVyLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ImF1dG8iLG1heFdpZHRoOiJ1bnNldCJ9KTt9CmlmKHNjcm9sbFRvcCtuYXZIZWlnaHQrMjAwK2J1ZmZlcj49Zm9vdGVyT2Zmc2V0KXskY29udGFpbmVyLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ImF1dG8iLH0pO319KTt9CmlmKCF3aW5kb3cubG9jYXRpb24uc2VhcmNoLmluY2x1ZGVzKCdhcnRpY2xlPWZ1bGwnKSYmJCgnLnN0YXJ0LWdhdGUnKS5sZW5ndGg+MCl7dmFyIGZvdW5kR2F0ZVN0YXJ0PWZhbHNlOyQoJ3AsIGxpLCBoMiwgaDMnKS5lYWNoKGZ1bmN0aW9uKCl7Y29uc29sZS5sb2coJCh0aGlzKSk7aWYoJCh0aGlzKS5oYXNDbGFzcygnc3RhcnQtZ2F0ZScpKXtmb3VuZEdhdGVTdGFydD10cnVlO3ZhciBnYXRlQ29udGVudD0kKCc8ZGl2IGNsYXNzPSJnYXRlLWNvbnRlbnQiPjxpZnJhbWUgc3JjPSJodHRwczovL2NvbnRlbnQubW90aW9ucG9pbnQuY29tL2wvNDg1NzgxLzIwMjQtMDItMDkvMjl5NmR2MiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iNTAwIiB0eXBlPSJ0ZXh0L2h0bWwiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd1RyYW5zcGFyZW5jeT0idHJ1ZSIgc3R5bGU9ImJvcmRlcjogMCI+PC9pZnJhbWU+PC9kaXY+Jyk7JCh0aGlzKS5hZnRlcihnYXRlQ29udGVudCk7fWVsc2UgaWYoZm91bmRHYXRlU3RhcnQpeyQodGhpcykucmVtb3ZlKCk7fX0pO30KJCgiI2RlbW8tbGluayIpLmNsaWNrKGZ1bmN0aW9uKCl7JCgiI3ZpZGVvLWRlbW8tcmVxdWVzdC13cmFwcGVyIikuc2xpZGVUb2dnbGUoKTt9KTt2YXIgZW1haWxJbnB1dD0kKCdbdHlwZT1lbWFpbF06bm90KC5tcC1leHByZXNzLWVtYWlsKScpO3ZhciBlbWFpbExhYmVsPSQoJy5lbWFpbCBsYWJlbCcpO3ZhciBlbWFpbFdyYXBwZXI9JCgnLmVtYWlsJyk7ZnVuY3Rpb24gY2hlY2tFbWFpbChlbWFpbFZhbHVlKXtpZigvZ21haWx8eWFob298YW9sXC5jb218YmtcLnJ1fG91dGxvb2t8aWNsb3VkfGNvbWNhc3QvaS50ZXN0KGVtYWlsVmFsdWUpKXtlbWFpbElucHV0LnZhbCgnJyk7ZW1haWxJbnB1dC5hZnRlcignPHAgY2xhc3M9ImVycm9yIGZvbnQtc21hbGwiIHN0eWxlPSJtYXJnaW46LTIwcHggMCAwIDAgIWltcG9ydGFudDsiPlBsZWFzZSB1c2Ugd29yayBlbWFpbCA8c3BhbiBjbGFzcz0icmVxdWlyZWQiPio8L3NwYW4+PC9wPicpO2VtYWlsV3JhcHBlci5hZGRDbGFzcygnZXJyb3InKTtlbWFpbElucHV0LmJsdXIoKTt9CmVsc2V7ZW1haWxMYWJlbC5odG1sKCdXb3JrIGVtYWlsIDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+Kjwvc3Bhbj4nKTtlbWFpbFdyYXBwZXIucmVtb3ZlQ2xhc3MoJ2Vycm9yJyk7fX0KZW1haWxJbnB1dC5rZXl1cChmdW5jdGlvbigpe3ZhciBjdXJyZW50RW1haWw9JCh0aGlzKS52YWwoKTtjaGVja0VtYWlsKGN1cnJlbnRFbWFpbCk7fSk7Y2hlY2tFbWFpbChlbWFpbElucHV0LnZhbCgpKTtpZihpc0Rlc2t0b3AoKSl7JCgnc2VjdGlvbiAuZ3JpZC00Om5vdCgubm8tYW5pbWF0ZSksIHNlY3Rpb24gLmdyaWQtMzpub3QoLm5vLWFuaW1hdGUpLCAuYW5pbWF0ZSwgLmFuaW1hdGUtdG9wLCAuYW5pbWF0ZS1yaWdodCwgLmFuaW1hdGUtYm90dG9tLCAuYW5pbWF0ZS1sZWZ0JykuY3NzKHsnb3BhY2l0eSc6MH0pO30KJCgnI2hhbWJ1cmdlci1pY29uLWV4cHJlc3MnKS5jbGljayhmdW5jdGlvbigpeyQoJy5tcC1leHByZXNzLW1lbnUnKS50b2dnbGVDbGFzcygnbW9iaWxlLW5hdicpO30pOyQoJyNoYW1idXJnZXItaWNvbicpLmNsaWNrKGZ1bmN0aW9uKCl7JCgnI25hdi1saW5rcycpLnRvZ2dsZUNsYXNzKCdtb2JpbGUtbmF2Jyk7JCgnLm1vYmlsZS1uYXYgLm5hdi1saW5rJykub2ZmKCk7JCgnLm1vYmlsZS1uYXYgLm5hdi1saW5rJykuY2xpY2soZnVuY3Rpb24oKXtpZigkKHRoaXMpLmhhc0NsYXNzKCdleHBhbmQnKSl7JCh0aGlzKS5yZW1vdmVDbGFzcygnZXhwYW5kJyk7fQplbHNleyQoJy5leHBhbmQnKS5yZW1vdmVDbGFzcygnZXhwYW5kJyk7JCh0aGlzKS5hZGRDbGFzcygnZXhwYW5kJyk7fQppZigkKHRoaXMpLmZpbmQoJy5hcnJvdycpLmhhc0NsYXNzKCdkb3duJykpeyQodGhpcykuZmluZCgnLmFycm93JykucmVtb3ZlQ2xhc3MoJ2Rvd24nKTskKHRoaXMpLmZpbmQoJy5hcnJvdycpLmFkZENsYXNzKCd1cCcpO31lbHNlIGlmKCQodGhpcykuZmluZCgnLmFycm93JykuaGFzQ2xhc3MoJ3VwJykpeyQodGhpcykuZmluZCgnLmFycm93JykucmVtb3ZlQ2xhc3MoJ3VwJyk7JCh0aGlzKS5maW5kKCcuYXJyb3cnKS5hZGRDbGFzcygnZG93bicpO319KTt9KTskKCcjaWNvbi1zZWFyY2gnKS5jbGljayhmdW5jdGlvbigpeyQoJy5tb2JpbGUtbmF2JykucmVtb3ZlQ2xhc3MoJ21vYmlsZS1uYXYnKTtpZigkKCcjbXAtb3NzJykuaXMoIjp2aXNpYmxlIikpeyQoJyNtcC1vc3MnKS5oaWRlKCk7fWVsc2V7JCgnI21wLW9zcycpLnNob3coKTt9fSk7dmFyIGN1cnJlbnRTdGVwPTE7dmFyIHRvdGFsU3RlcHM9JCgnLnByaWNpbmctc3RlcCcpLmxlbmd0aDtmdW5jdGlvbiBzaG93U3RlcChzdGVwKXskKCcucHJpY2luZy1zdGVwJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyQoJyNzdGVwJytzdGVwKS5hZGRDbGFzcygnYWN0aXZlJyk7aWYoc3RlcD09PTEpeyQoJyNwcmV2LWJ0bicpLnByb3AoJ2Rpc2FibGVkJyx0cnVlKTskKCcjc2tpcC1idG4nKS5oaWRlKCk7JCgnI3ByZXYtYnRuJykuaGlkZSgpO31lbHNleyQoJyNwcmV2LWJ0bicpLnNob3coKTskKCcjcHJldi1idG4nKS5wcm9wKCdkaXNhYmxlZCcsZmFsc2UpO2lmKCQoJyNzdGVwJytzdGVwKS5oYXNDbGFzcygnb3B0aW9uYWwnKSl7JCgnI3NraXAtYnRuJykuc2hvdygpO31lbHNleyQoJyNza2lwLWJ0bicpLmhpZGUoKTt9fQppZihzdGVwPT09dG90YWxTdGVwcyl7JCgnI25leHQtYnRuJykuaGlkZSgpOyQoJyNzdWJtaXQtYnRuJykuc2hvdygpO31lbHNleyQoJyNuZXh0LWJ0bicpLnNob3coKTskKCcjc3VibWl0LWJ0bicpLmhpZGUoKTt9CmlmKCQoJyNzdGVwJytzdGVwKS5oYXNDbGFzcygnb3B0aW9uYWwnKSl7JCgnI211bHRpLXN0ZXAtZm9ybScpLmFkZENsYXNzKCdzaG93LW9wdGlvbmFsJyk7fWVsc2V7JCgnI211bHRpLXN0ZXAtZm9ybScpLnJlbW92ZUNsYXNzKCdzaG93LW9wdGlvbmFsJyk7fQppZihzdGVwPT09Mil7dmFyIGxhbmd1YWdlSW5wdXQ9JCgnaW5wdXRbbmFtZT0ibGFuZ3VhZ2UiXTpjaGVja2VkJyk7aWYobGFuZ3VhZ2VJbnB1dC52YWwoKT09PSdvdGhlcicpeyQoJyNzdGVwMiAub3B0aW9uYWwnKS5zaG93KCk7fWVsc2V7JCgnI3N0ZXAyIC5vcHRpb25hbCcpLmhpZGUoKTt9fWVsc2V7JCgnLm9wdGlvbmFsJykuaGlkZSgpO319CiQoJyNuZXh0LWJ0bicpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGN1cnJlbnRJbnB1dD0kKCcjc3RlcCcrY3VycmVudFN0ZXArJyBpbnB1dCwgI3N0ZXAnK2N1cnJlbnRTdGVwKycgc2VsZWN0Jyk7aWYoY3VycmVudElucHV0LmZpbHRlcignW3JlcXVpcmVkXScpLmxlbmd0aCYmY3VycmVudElucHV0LmZpbHRlcignW3JlcXVpcmVkXScpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnRyaW0oKT09PScnO30pLmxlbmd0aCl7JCgnI3N0ZXAnK2N1cnJlbnRTdGVwKS5wcmVwZW5kKCc8cCBjbGFzcz0iZXJyb3ItbWVzc2FnZSI+UGxlYXNlIGZpbGwgaW4gdGhlIHJlcXVpcmVkIGZpZWxkKHMpLjwvcD4nKTtyZXR1cm47fQokKCcuZXJyb3ItbWVzc2FnZScpLnJlbW92ZSgpO2lmKGN1cnJlbnRTdGVwPHRvdGFsU3RlcHMpe2N1cnJlbnRTdGVwKys7fWVsc2V7YWxlcnQoJ0Zvcm0gc3VibWl0dGVkIScpO30Kc2hvd1N0ZXAoY3VycmVudFN0ZXApO2NhcHR1cmVQcmljaW5nRm9ybSgpO30pOyQoJyNwcmV2LWJ0bicpLmNsaWNrKGZ1bmN0aW9uKCl7aWYoY3VycmVudFN0ZXA+MSl7Y3VycmVudFN0ZXAtLTtzaG93U3RlcChjdXJyZW50U3RlcCk7fX0pOyQoJyNza2lwLWJ0bicpLmNsaWNrKGZ1bmN0aW9uKCl7aWYoY3VycmVudFN0ZXA8dG90YWxTdGVwcyl7Y3VycmVudFN0ZXArKztzaG93U3RlcChjdXJyZW50U3RlcCk7fWVsc2V7YWxlcnQoJ0Zvcm0gc3VibWl0dGVkIScpO319KTskKCdpbnB1dFtuYW1lPSJsYW5ndWFnZSJdJykuY2hhbmdlKGZ1bmN0aW9uKCl7aWYoJCh0aGlzKS52YWwoKT09PSdvdGhlcicpeyQoJyNzdGVwMiAub3B0aW9uYWwnKS5zaG93KCk7fWVsc2V7JCgnI3N0ZXAyIC5vcHRpb25hbCcpLmhpZGUoKTt9fSk7c2hvd1N0ZXAoY3VycmVudFN0ZXApOyQoJ2lucHV0W25hbWU9Imxhbmd1YWdlIl0nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe2lmKCQodGhpcykudmFsKCk9PT0nZW5nbGlzaCcpeyQoJ2lucHV0W25hbWU9IlByb2plY3QgT3JpZ2luIExhbmd1YWdlIl0nKS52YWwoJ0VuZ2xpc2gnKTt9ZWxzZSBpZigkKHRoaXMpLnZhbCgpPT09J290aGVyJyl7dXBkYXRlT3JpZ2luTGFuZ0lucHV0KCk7fX0pOyQoJ2lucHV0W25hbWU9Im90aGVyTGFuZ3VhZ2UiXScpLm9uKCdpbnB1dCcsZnVuY3Rpb24oKXt1cGRhdGVPcmlnaW5MYW5nSW5wdXQoKTt9KTtmdW5jdGlvbiB1cGRhdGVPcmlnaW5MYW5nSW5wdXQoKXt2YXIgc2VsZWN0ZWRMYW5ndWFnZT0kKCdpbnB1dFtuYW1lPSJsYW5ndWFnZSJdOmNoZWNrZWQnKS52YWwoKTtpZihzZWxlY3RlZExhbmd1YWdlPT09J290aGVyJyl7dmFyIG90aGVyTGFuZ3VhZ2U9JCgnaW5wdXRbbmFtZT0ib3RoZXJMYW5ndWFnZSJdJykudmFsKCk7JCgnaW5wdXRbbmFtZT0iUHJvamVjdCBPcmlnaW4gTGFuZ3VhZ2UiXScpLnZhbChvdGhlckxhbmd1YWdlKTt9ZWxzZXskKCdpbnB1dFtuYW1lPSJQcm9qZWN0IE9yaWdpbiBMYW5ndWFnZSJdJykudmFsKCdFbmdsaXNoJyk7fX0KJCgnaW5wdXRbbmFtZT0iZHluYW1pYyJdJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXtpZigkKHRoaXMpLnZhbCgpPT09J3llcycpeyQoJ2lucHV0W25hbWU9IkR5YW5hbWljIENvbnRlbnQiXScpLnZhbCgnWWVzJyk7fWVsc2UgaWYoJCh0aGlzKS52YWwoKT09PSdubycpeyQoJ2lucHV0W25hbWU9IkR5YW5hbWljIENvbnRlbnQiXScpLnZhbCgnTm8nKTt9fSk7JCgnaW5wdXRbbmFtZT0iZXN0aW1hdGUiXScpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7JCgnaW5wdXRbbmFtZT0iUHJvamVjdCBXb3JkIENvdW50Il0nKS52YWwoJCh0aGlzKS52YWwoKSk7fSk7JCgnI2dldC1wZXJzb25hbC1xdW90ZScpLmNsaWNrKGZ1bmN0aW9uKCl7JCgnaHRtbCwgYm9keScpLmFuaW1hdGUoe3Njcm9sbFRvcDokKCcjcHJpY2luZy13aXphcmQtc2VjdGlvbicpLm9mZnNldCgpLnRvcC0zMDB9LDcwMCk7fSk7JCgnLndhdGNoLXdlYmluYXInKS5jbGljayhmdW5jdGlvbigpeyQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtzY3JvbGxUb3A6JCgnI3dlYmluYXItdmlkZW8td3JhcHBlcicpLm9mZnNldCgpLnRvcH0sNzAwKTt9KTskKCcuc2Nyb2xsLWNsaWNrJykuY2xpY2soZnVuY3Rpb24oKXtzY3JvbGxUb1Jlc291cmNlKCQodGhpcykuZGF0YSgnc2Nyb2xsJykpOyQoJy5tb2JpbGUtbmF2JykucmVtb3ZlQ2xhc3MoJ21vYmlsZS1uYXYnKTt9KTtmdW5jdGlvbiBzY3JvbGxUb1Jlc291cmNlKHNlY3Rpb25OYW1lKXskKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7c2Nyb2xsVG9wOiQoJyMnK3NlY3Rpb25OYW1lKS5vZmZzZXQoKS50b3B9LDcwMCk7fQpmdW5jdGlvbiBnZXRRdWVyeVBhcmFtKG5hbWUpe2xldCB1cmxQYXJhbXM9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtyZXR1cm4gdXJsUGFyYW1zLmdldChuYW1lKTt9CmxldCBzY3JvbGxWYWx1ZT1nZXRRdWVyeVBhcmFtKCdzY3JvbGwnKTtpZihzY3JvbGxWYWx1ZSE9PW51bGwpe2NvbnNvbGUubG9nKCdTY3JvbGwgcGFyYW1ldGVyIHZhbHVlOicsc2Nyb2xsVmFsdWUpO3Njcm9sbFRvUmVzb3VyY2Uoc2Nyb2xsVmFsdWUpO31lbHNle2NvbnNvbGUubG9nKCdTY3JvbGwgcGFyYW1ldGVyIG5vdCBmb3VuZC4nKTt9CiQoIi5zZWFyY2hJbnB1dCIpLm9uKCJpbnB1dCIsZnVuY3Rpb24oKXt2YXIgc2VhcmNoVmFsdWU9JCh0aGlzKS52YWwoKS50b0xvd2VyQ2FzZSgpOyQodGhpcykuc2libGluZ3MoIi5zZWFyY2hTZWxlY3QiKS5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oKXskKHRoaXMpLnRvZ2dsZSgkKHRoaXMpLnRleHQoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVmFsdWUpPi0xKTt9KTt9KTskKCIuc2VhcmNoU2VsZWN0IikuY2hhbmdlKGZ1bmN0aW9uKCl7dmFyIHNlbGVjdGVkTGFuZ3VhZ2VzPSQodGhpcykudmFsKCk7dmFyIHRhZ3M9IiI7Zm9yKHZhciBpPTA7aTxzZWxlY3RlZExhbmd1YWdlcy5sZW5ndGg7aSsrKXt0YWdzKz0iPHNwYW4gY2xhc3M9J3RhZyc+IisKc2VsZWN0ZWRMYW5ndWFnZXNbaV0rIjxzcGFuIGNsYXNzPSd0YWctY2xvc2UnPiZ0aW1lczs8L3NwYW4+PC9zcGFuPiI7fQokKHRoaXMpLnNpYmxpbmdzKCIudGFnQ29udGFpbmVyIikuYXBwZW5kKHRhZ3MpO3VwZGF0ZUhpZGRlbklucHV0KCQodGhpcykpOyQodGhpcykuc2libGluZ3MoIi5zZWFyY2hJbnB1dCIpLnZhbCgiIikuZm9jdXMoKTt9KTskKCIudGFnQ29udGFpbmVyIikub24oImNsaWNrIiwiLnRhZy1jbG9zZSIsZnVuY3Rpb24oKXskKHRoaXMpLnBhcmVudCgpLnJlbW92ZSgpO3VwZGF0ZUhpZGRlbklucHV0KCQodGhpcykuY2xvc2VzdCgiLnNlYXJjaFNlbGVjdCIpKTskKHRoaXMpLmNsb3Nlc3QoIi5zZWFyY2hTZWxlY3QiKS5zaWJsaW5ncygiLnNlYXJjaElucHV0IikuZm9jdXMoKTt9KTtmdW5jdGlvbiB1cGRhdGVIaWRkZW5JbnB1dChzZWxlY3RFbGVtZW50KXt2YXIgc2VsZWN0ZWRUYWdzPVtdO3NlbGVjdEVsZW1lbnQuc2libGluZ3MoIi50YWdDb250YWluZXIiKS5maW5kKCIudGFnIikuZWFjaChmdW5jdGlvbigpe3ZhciB0YWdWYWx1ZT0kKHRoaXMpLnRleHQoKS50cmltKCkucmVwbGFjZSgiw5ciLCIiKTtzZWxlY3RlZFRhZ3MucHVzaCh0YWdWYWx1ZSk7fSk7c2VsZWN0RWxlbWVudC5zaWJsaW5ncygiLmhpZGRlbklucHV0IikudmFsKHNlbGVjdGVkVGFncy5qb2luKCIsICIpKTt9CnZhciBjdXJyZW50Q2Fyb3VzZWxTdGVwO3ZhciBhbmltYXRpb25UaW1lcjt2YXIgdGltZXJfb249MDt2YXIgY2Fyb3VzZWxTdGVwPSIxIjt2YXIgdHJhbnNpdGlvblR5cGU9InN0ZXAiO3ZhciBjYXJvdXNlbExlbmd0aD0kKCcuc2xpZGVyLWNpcmNsZScpLmxlbmd0aDt2YXIgdHJhbnN0aW9uVGltZT0xNTAwMDtjb25zb2xlLmxvZyhjYXJvdXNlbExlbmd0aCk7ZnVuY3Rpb24gdGltZWRDb3VudCgpe2FuaW1hdGlvblRpbWVyPXNldFRpbWVvdXQoYW5pbWF0ZUNhcm91c2VsLHRyYW5zdGlvblRpbWUpO30KZnVuY3Rpb24gYW5pbWF0aW9uVGltZXJTdGFydCgpe2lmKCF0aW1lcl9vbil7dGltZXJfb249MTt0aW1lZENvdW50KCk7fX0KZnVuY3Rpb24gYW5pbWF0aW9uVGltZXJTdG9wKCl7Y2xlYXJUaW1lb3V0KGFuaW1hdGlvblRpbWVyKTt0aW1lcl9vbj0wO30KZnVuY3Rpb24gYW5pbWF0ZUNhcm91c2VsKCl7YW5pbWF0aW9uVGltZXJTdG9wKCk7aWYodHJhbnNpdGlvblR5cGU9PSdzdGVwJyl7Y3VycmVudENhcm91c2VsU3RlcD0kKCcuc2xpZGVyLWNpcmNsZS5iZy1zZWNvbmRhcnknKS5hdHRyKCdkYXRhLWNhcm91c2VsLXN0ZXAnKTtjb25zb2xlLmxvZyhjdXJyZW50Q2Fyb3VzZWxTdGVwKTtpZihjdXJyZW50Q2Fyb3VzZWxTdGVwPT1jYXJvdXNlbExlbmd0aCl7Y3VycmVudENhcm91c2VsU3RlcD0nMSc7fQplbHNle2N1cnJlbnRDYXJvdXNlbFN0ZXA9U3RyaW5nKE51bWJlcihjdXJyZW50Q2Fyb3VzZWxTdGVwKSsxKTt9fQppZih0cmFuc2l0aW9uVHlwZT09J2p1bXAnKXtjdXJyZW50Q2Fyb3VzZWxTdGVwPWNhcm91c2VsU3RlcDt0cmFuc2l0aW9uVHlwZT0nc3RlcCc7fQokKCcuc2xpZGVyLWNpcmNsZScpLmFkZENsYXNzKCdiZy13aGl0ZScpOyQoJy5zbGlkZXItY2lyY2xlJykucmVtb3ZlQ2xhc3MoJ2JnLXNlY29uZGFyeScpOyQoJyNzbGlkZXItY2lyY2xlLScrY3VycmVudENhcm91c2VsU3RlcCkucmVtb3ZlQ2xhc3MoJ2JnLXdoaXRlJyk7JCgnI3NsaWRlci1jaXJjbGUtJytjdXJyZW50Q2Fyb3VzZWxTdGVwKS5hZGRDbGFzcygnYmctc2Vjb25kYXJ5Jyk7JCgnLmNhcm91c2VsLXN0ZXAnKS5oaWRlKCk7JCgnI2Nhcm91c2VsLXN0ZXAtJytjdXJyZW50Q2Fyb3VzZWxTdGVwKS5maW5kKCcuY2Fyb3VzZWwtZ3JhcGhpYycpLmNzcyh7J2xlZnQnOicyMDBweCcsJ29wYWNpdHknOjB9KTskKCcjY2Fyb3VzZWwtc3RlcC0nK2N1cnJlbnRDYXJvdXNlbFN0ZXApLmZpbmQoJy5jYXJvdXNlbC1jb250ZW50JykuY3NzKHsnbGVmdCc6Jy0xMDBweCcsJ29wYWNpdHknOjAsJ3Bvc2l0aW9uJzoncmVsYXRpdmUnfSk7JCgnI2Nhcm91c2VsLXN0ZXAtJytjdXJyZW50Q2Fyb3VzZWxTdGVwKS5zaG93KCk7JCgnI2Nhcm91c2VsLXN0ZXAtJytjdXJyZW50Q2Fyb3VzZWxTdGVwKS5maW5kKCcuY2Fyb3VzZWwtY29udGVudCcpLmFuaW1hdGUoeydsZWZ0JzonMHB4Jywnb3BhY2l0eSc6MX0sMzAwKTskKCcjY2Fyb3VzZWwtc3RlcC0nK2N1cnJlbnRDYXJvdXNlbFN0ZXApLmZpbmQoJy5jYXJvdXNlbC1ncmFwaGljJykuYW5pbWF0ZSh7J2xlZnQnOicwcHgnLCdvcGFjaXR5JzoxfSw3MDAsZnVuY3Rpb24oKXthbmltYXRpb25UaW1lclN0YXJ0KCk7fSk7fQppZigkKCcuc2xpZGVyLWNpcmNsZScpLmxlbmd0aD4wKXthbmltYXRpb25UaW1lclN0YXJ0KCk7fQokKCcuc2xpZGVyLWNpcmNsZScpLmNsaWNrKGZ1bmN0aW9uKCl7Y2Fyb3VzZWxTdGVwPSQodGhpcykuZGF0YSgnY2Fyb3VzZWwtc3RlcCcpO3RyYW5zaXRpb25UeXBlPSdqdW1wJzthbmltYXRlQ2Fyb3VzZWwoKTt9KTtkaXNwbGF5Rm9ybUxpbmsuY2xpY2soZnVuY3Rpb24oKXtmb3JtU2VjdGlvbi5jc3Moeydwb3NpdGlvbic6J2ZpeGVkJywnd2lkdGgnOicxMDAlJywnaGVpZ2h0JzonMTAwJScsJ3RvcCc6JzEwMCUnLCd6LWluZGV4JzonOTk5J30pO2Zvcm1TZWN0aW9uLmZpbmQoJy5ncmlkLTcnKS5jc3MoeydtYXJnaW4tdG9wJzonLTVyZW0nfSk7Zm9ybVNlY3Rpb24uZmluZCgnaDInKS5oaWRlKCk7Zm9ybVNlY3Rpb24uZmluZCgnaDUnKS5oaWRlKCk7Y2xvc2VGb3JtTGluay5vZmYoKTtjbG9zZUZvcm1MaW5rLnNob3coKTtjbG9zZUZvcm1MaW5rLmNsaWNrKGZ1bmN0aW9uKCl7Y2xvc2VGb3JtTGluay5oaWRlKCk7Zm9ybVNlY3Rpb24uYXR0cignc3R5bGUnLCcnKTtmb3JtU2VjdGlvbi5maW5kKCcuZ3JpZC03JykuYXR0cignc3R5bGUnLCcnKTtmb3JtU2VjdGlvbi5maW5kKCdoMicpLnNob3coKTtmb3JtU2VjdGlvbi5maW5kKCdoNScpLnNob3coKTt9KTtmb3JtU2VjdGlvbi5hbmltYXRlKHsndG9wJzonMCUnfSwzMDApO30pO2Rpc3BsYXlFeHByZXNzRm9ybUxpbmsuY2xpY2soZnVuY3Rpb24oKXtmb3JtU2VjdGlvbi5hZGRDbGFzcygnZXhwcmVzcy1mb3JtLXNob3cnKTtmb3JtU2VjdGlvbi5maW5kKCcuZ3JpZC03JykuY3NzKHsnbWFyZ2luLXRvcCc6Jy01cmVtJ30pO2Zvcm1TZWN0aW9uLmZpbmQoJ2gyJykuY2xvc2VzdCgnLmZsZXgtY29sJykuaGlkZSgpO2Zvcm1TZWN0aW9uLmZpbmQoJ2g1JykuaGlkZSgpO2Nsb3NlRm9ybUxpbmsub2ZmKCk7Y2xvc2VGb3JtTGluay5zaG93KCk7Y2xvc2VGb3JtTGluay5jbGljayhmdW5jdGlvbigpe2Zvcm1TZWN0aW9uLnJlbW92ZUNsYXNzKCdleHByZXNzLWZvcm0tc2hvdycpO2Nsb3NlRm9ybUxpbmsuaGlkZSgpO2Zvcm1TZWN0aW9uLmF0dHIoJ3N0eWxlJywnJyk7Zm9ybVNlY3Rpb24uZmluZCgnLmdyaWQtNycpLmF0dHIoJ3N0eWxlJywnJyk7Zm9ybVNlY3Rpb24uZmluZCgnaDInKS5jbG9zZXN0KCcuZmxleC1jb2wnKS5zaG93KCk7Zm9ybVNlY3Rpb24uZmluZCgnaDUnKS5zaG93KCk7fSk7fSk7JCgnLnVuaWZvcm0taGVpZ2h0JykuZWFjaChmdW5jdGlvbigpe3ZhciB0aXRsZUhlaWdodDtpZigkKHRoaXMpLmhlaWdodCgpPnVuZmlyb21IZWlnaHQpe3VuZmlyb21IZWlnaHQ9JCh0aGlzKS5oZWlnaHQoKTt9fSk7JCgnLnVuaWZvcm0taGVpZ2h0JykuY3NzKHsnaGVpZ2h0Jzp1bmZpcm9tSGVpZ2h0KydweCd9KTt2YXIgbmF2SXRlbT0kKCcjcGlsbGFyLW5hdiAubmF2LWl0ZW0uY2xvbmUnKTt2YXIgY3VycmVudE5hdlBvcz0wO3ZhciBwaWxsYXJOYXY9JCgnI3BpbGxhci1uYXYnKTtuYXZJdGVtLmRldGFjaCgpO2Z1bmN0aW9uIGFsaWduTmF2KCl7Y29uc29sZS5sb2coJ2FsaWduIG5hdiEhIScpO3ZhciBzY3JvbGxUb3BQb3M9JCh3aW5kb3cpLnNjcm9sbFRvcCgpO2lmKCQoJy5waWxsYXItbGVmdCcpLmxlbmd0aCl7dmFyIHBpbGxhckNvbnRhaW5lclRvcD0kKCcucGlsbGFyLWxlZnQnKS5vZmZzZXQoKS50b3A7fQp2YXIgcGlsbGFyTmF2SGVpZ2h0PXBpbGxhck5hdi5pbm5lckhlaWdodCgpO2lmKCQoJyNwaWxsYXItbmF2JykubGVuZ3RoKXt2YXIgcGlsbGFyTmF2VG9wPXBpbGxhck5hdi5vZmZzZXQoKS50b3A7fQp2YXIgcGlsbGFyTmF2TWlkPXBpbGxhck5hdlRvcCsocGlsbGFyTmF2SGVpZ2h0LzIpO3ZhciBwaWxsYXJOYXZCb3R0b209KHBpbGxhck5hdlRvcCtwaWxsYXJOYXZIZWlnaHQpLTEwMDt2YXIgc2Nyb2xsVG89c2Nyb2xsVG9wUG9zLXBpbGxhckNvbnRhaW5lclRvcDt2YXIgc2Nyb2xsTWF4PSQoJyNjb21wYXJlLWFydGljbGUnKS5pbm5lckhlaWdodCgpLXBpbGxhck5hdkhlaWdodC03NDtjb25zb2xlLmxvZygnc2Nyb2xsIHRvOiAnK3Njcm9sbFRvKTtpZihzY3JvbGxUbzwwKXtzY3JvbGxUbz0wO30KaWYoc2Nyb2xsVG8+c2Nyb2xsTWF4KXtzY3JvbGxUbz1zY3JvbGxNYXg7fQppZihzY3JvbGxUb3BQb3M+cGlsbGFyTmF2Qm90dG9tfHxzY3JvbGxUb3BQb3M8cGlsbGFyTmF2VG9wKXtwaWxsYXJOYXYuYW5pbWF0ZSh7dG9wOnNjcm9sbFRvKydweCd9LDQwMCk7fQpjb25zb2xlLmxvZygnbmF2ZSBoYXMgYmVlbiBhbGlnbmVkIScpO30KaWYoJCgnLnBpbGxhci1sZWZ0JykubGVuZ3RoKXthbGlnbk5hdigpO30KJCgnI2NvbXBhcmUtYXJ0aWNsZSBoMicpLmVhY2goZnVuY3Rpb24oaW5kZXgpeyQodGhpcykuYXR0cignZGF0YS1pbmRleCcsaW5kZXgpO3ZhciB0aGVUZXh0PSQodGhpcykudGV4dCgpO3ZhciBuZXdJdGVtPW5hdkl0ZW0uY2xvbmUoKTtuZXdJdGVtLnJlbW92ZUNsYXNzKCdjbG9uZScpO25ld0l0ZW0uZmluZCgnLm5hdi10ZXh0JykudGV4dCh0aGVUZXh0KTtuZXdJdGVtLmF0dHIoJ2RhdGEtaW5kZXgnLFN0cmluZyhpbmRleCkpO2lmKGluZGV4PT09MCl7bmV3SXRlbS5hZGRDbGFzcygnYWN0aXZlJyk7fQokKCcjbmF2LXdyYXAnKS5hcHBlbmQobmV3SXRlbSk7JCgnI3BpbGFyLW5hdi1tb2JpbGUgc2VsZWN0JykuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK1N0cmluZyhpbmRleCkrJyI+Jyt0aGVUZXh0Kyc8L29wdGlvbj4nKTtuZXdJdGVtLnNob3coKTt9KTskKCcuZXZlbnQtc2hvdy1tb3JlJykuY2xpY2soZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoJy5wb2ludGVyJykuaGlkZSgpOyQodGhpcykuZmluZCgnLmV2ZW50LW1vcmUtY29udGVudCcpLnNob3coKTt9KTskKCcuYmlvLXJldmVhbCcpLmNsaWNrKGZ1bmN0aW9uKCl7JCh0aGlzKS5maW5kKCcuYmlvLWxpbmsnKS5oaWRlKCk7JCh0aGlzKS5maW5kKCcuYmlvLWNvbnRlbnQnKS5zaG93KCk7fSk7JCgiI3BpbGxhci1uYXYgLm5hdi1pdGVtIikuY2xpY2soZnVuY3Rpb24oKXskKFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZG9jdW1lbnQuYm9keV0pLmFuaW1hdGUoe3Njcm9sbFRvcDokKCIjY29tcGFyZS1hcnRpY2xlIGgyIikuZXEoJCh0aGlzKS5kYXRhKCdpbmRleCcpKS5vZmZzZXQoKS50b3AtMTUwfSw3MDApO30pOyQoIiNwaWxhci1uYXYtbW9iaWxlIHNlbGVjdCIpLmNoYW5nZShmdW5jdGlvbigpeyQoW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCxkb2N1bWVudC5ib2R5XSkuYW5pbWF0ZSh7c2Nyb2xsVG9wOiQoIiNjb21wYXJlLWFydGljbGUgaDIiKS5lcSgkKHRoaXMpLnZhbCgpKS5vZmZzZXQoKS50b3AtMTUwfSw3MDApO30pO3ZhciByZXNvdXJjZXNOYXZUb3A9MDtpZigkKCcucmVzb3VyY2VzLW5hdicpLmxlbmd0aD4wKXt2YXIgcmVzb3VyY2VzTmF2VG9wPSQoJy5yZXNvdXJjZXMtbmF2Jykub2Zmc2V0KCkudG9wO30KZnVuY3Rpb24gY2hlY2tSZXNvdXJjZU5hdigpe2lmKCQoJy5yZXNvdXJjZXMtbmF2JykubGVuZ3RoPjApe3ZhciBzY3JvbGxQb3NpdGlvbj0kKHdpbmRvdykuc2Nyb2xsVG9wKCk7aWYoc2Nyb2xsUG9zaXRpb24+cmVzb3VyY2VzTmF2VG9wKXskKCcucmVzb3VyY2VzLW5hdicpLmFkZENsYXNzKCd1bmRvY2snKTt9ZWxzZXskKCcucmVzb3VyY2VzLW5hdicpLnJlbW92ZUNsYXNzKCd1bmRvY2snKTt9fX0KY2hlY2tSZXNvdXJjZU5hdigpOyQod2luZG93KS5zY3JvbGwoZnVuY3Rpb24oKXtpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygiL3Jlc291cmNlcy9jLyIpKXt1c2VyU2Nyb2xsKCk7fQp2YXIgc2Nyb2xsPSQod2luZG93KS5zY3JvbGxUb3AoKTt2YXIgZG9jdW1lbnRIZWlnaHQ9JChkb2N1bWVudCkuaGVpZ2h0KCk7dmFyIGhhbGZIZWlnaHQ9ZG9jdW1lbnRIZWlnaHQvMi41O2lmKHNjcm9sbD49MjApeyQoIm5hdiIpLmFkZENsYXNzKCJiZy1wcmltYXJ5LWdyYWRpZW50IikuYWRkQ2xhc3MoJ2ZpeGVkJyk7fWVsc2V7JCgibmF2IikucmVtb3ZlQ2xhc3MoImJnLXByaW1hcnktZ3JhZGllbnQiKS5yZW1vdmVDbGFzcygnZml4ZWQnKTt9CmlmKHNjcm9sbD5oYWxmSGVpZ2h0JiZwb3BUaW1lckRvbmUpe3BvcE1vZGFsKCdvZmZlci1tb2RhbCcpO30KZmluZEN1cnJlbnRTZWN0aW9uKCk7ZG9ja1RhYmxlSGVhZGVyKCk7ZG9jUHJpY2luZ1dpemFyZCgpO2NoZWNrUmVzb3VyY2VOYXYoKTt2YXIgc2Nyb2xsVG9wUG9zPSQod2luZG93KS5zY3JvbGxUb3AoKTt2YXIgd2luZG93TWlkUG9pbnQ9JCh3aW5kb3cpLmhlaWdodCgpLzI7dmFyIG1hdGNoZWRIZWFkZXJzPTA7Y2xlYXJUaW1lb3V0KCQuZGF0YSh0aGlzLCdzY3JvbGxUaW1lcicpKTskLmRhdGEodGhpcywnc2Nyb2xsVGltZXInLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthbGlnbk5hdigpO30sNDAwKSk7JCgiI2NvbXBhcmUtYXJ0aWNsZSBoMiIpLmVhY2goZnVuY3Rpb24oKXtpZigoJCh0aGlzKS5vZmZzZXQoKS50b3Atc2Nyb2xsVG9wUG9zKTx3aW5kb3dNaWRQb2ludCl7bWF0Y2hlZEhlYWRlcnMrKzt9fSk7aWYobWF0Y2hlZEhlYWRlcnM+MCl7bWF0Y2hlZEhlYWRlcnM9bWF0Y2hlZEhlYWRlcnMtMTt9CmlmKGN1cnJlbnROYXZQb3MhPW1hdGNoZWRIZWFkZXJzKXtjdXJyZW50TmF2UG9zPW1hdGNoZWRIZWFkZXJzOyQoJyNwaWxsYXItbmF2IC5uYXYtaXRlbS5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7JCgnI3BpbGxhci1uYXYgLm5hdi1pdGVtJykuZXEoY3VycmVudE5hdlBvcykuYWRkQ2xhc3MoJ2FjdGl2ZScpOyQoIiNwaWxhci1uYXYtbW9iaWxlIHNlbGVjdCIpLnZhbChjdXJyZW50TmF2UG9zKTt9fSk7dmFyIHBvcFRpbWVyRG9uZT1mYWxzZTtmdW5jdGlvbiByZWFkeVBvcCgpe3BvcFRpbWVyRG9uZT10cnVlO30Kc2V0VGltZW91dChyZWFkeVBvcCwzMDAwMCk7aWYoaXNFeHByZXNzUGFnZSl7dmFyIHBvcFRpbWVyRG9uZUV4cHJlc3M9ZmFsc2U7ZnVuY3Rpb24gcmVhZHlQb3BFeHByZXNzKCl7Y29uc29sZS5sb2coJ3BvcCBleHByZXNzIG1vZGFsJyk7cG9wRXhwcmVzc01vZGFsKCdmYWxzZScpO30Kc2V0VGltZW91dChyZWFkeVBvcEV4cHJlc3MsMjAwMCk7fQokKGRvY3VtZW50KS5tb3VzZWxlYXZlKGZ1bmN0aW9uKCl7aWYocG9wVGltZXJEb25lKXtwb3BNb2RhbCgnb2ZmZXItbW9kYWwnKTt9fSk7c3RhcnRUaW1lPW5ldyBEYXRlKCkuZ2V0VGltZSgpOyQoZG9jdW1lbnQpLm1vdXNlbGVhdmUoZnVuY3Rpb24oZXZlbnQpe2xlZnRXaW5kb3c9dHJ1ZTtjaGVja0NvbmRpdGlvbnMoKTt9KTt2YXIgbGFzdFgsbGFzdFk7JChkb2N1bWVudCkubW91c2Vtb3ZlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY3VycmVudFg9ZXZlbnQucGFnZVg7dmFyIGN1cnJlbnRZPWV2ZW50LnBhZ2VZO2lmKGxhc3RYJiZsYXN0WSYmY3VycmVudFg+bGFzdFgmJmN1cnJlbnRZPGxhc3RZKXttb3VzZU1vdmluZ1VwQW5kUmlnaHQ9dHJ1ZTtjaGVja0NvbmRpdGlvbnMoKTt9Cmxhc3RYPWN1cnJlbnRYO2xhc3RZPWN1cnJlbnRZO30pO2Z1bmN0aW9uIGNoZWNrQ29uZGl0aW9ucygpe3ZhciBjdXJyZW50VGltZT1uZXcgRGF0ZSgpLmdldFRpbWUoKTtpZihjdXJyZW50VGltZS1zdGFydFRpbWU+NjAwMDAmJm1vdXNlTW92aW5nVXBBbmRSaWdodCYmbGVmdFdpbmRvdyl7cG9wTW9kYWwoJ2V4aXQtbW9kYWwnKTt9fQp3aW5kb3cub25yZXNpemU9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZW5kUmVzaXplKTtlbmRSZXNpemU9c2V0VGltZW91dChyZXNpemVkdywxMDApO307c2VjdGlvbnMuZWFjaChmdW5jdGlvbigpe2ZpbmRDdXJyZW50U2VjdGlvbigpO30pO2lmKGlzRGVza3RvcCgpKXthbmltYXRlTG9nb3MoKTt9fTskKHdpbmRvdykub24oImxvYWQiLGxvYWRIYW5kbGVyKTskKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2NvbnN0ICRiYW5uZXJzPSQoJyNvZmZlci1iYW5uZXItYW5pbWF0ZWQgLmJhbm5lci1tZXNzYWdlJyk7Y29uc29sZS5sb2coJGJhbm5lcnMpO2lmKCRiYW5uZXJzLmxlbmd0aD09PTApe2NvbnNvbGUuZXJyb3IoIk5vIGVsZW1lbnRzIHdpdGggdGhlIGNsYXNzICdiYW5uZXItbWVzc2FnZScgZm91bmQuIik7cmV0dXJuO30KbGV0IGN1cnJlbnRJbmRleD0wO2Z1bmN0aW9uIHNob3dCYW5uZXIoaW5kZXgpe2lmKCRiYW5uZXJzLmxlbmd0aD4xKXskYmFubmVycy5yZW1vdmVDbGFzcygnYWN0aXZlIG91dCcpOyRiYW5uZXJzLmVxKGluZGV4KS5hZGRDbGFzcygnYWN0aXZlJyk7Y29uc3QgcHJldmlvdXNJbmRleD0oaW5kZXgtMSskYmFubmVycy5sZW5ndGgpJSRiYW5uZXJzLmxlbmd0aDskYmFubmVycy5lcShwcmV2aW91c0luZGV4KS5hZGRDbGFzcygnb3V0Jyk7fX0KZnVuY3Rpb24gY3ljbGVCYW5uZXJzKCl7Y3VycmVudEluZGV4PShjdXJyZW50SW5kZXgrMSklJGJhbm5lcnMubGVuZ3RoO3Nob3dCYW5uZXIoY3VycmVudEluZGV4KTt9CnNob3dCYW5uZXIoY3VycmVudEluZGV4KTtzZXRJbnRlcnZhbChjeWNsZUJhbm5lcnMsNzAwMCk7fSk7
- • https://fr-ca.motionpoint.com//data:text/javascript;base64,aWYoJCgnI2FlLXdlYmluYXItcmVnaXN0cmF0aW9uJykubGVuZ3RoPjApeyQoJyNvZmZlci1tb2RhbCcpLnJlbW92ZSgpOyQoJyNhZS13ZWJpbmFyLWJhY2tncm91bmQnKS5hZGRDbGFzcygnbW9kYWwtYmFja2dyb3VuZCcpOyQoJyNhZS13ZWJpbmFyLWJhY2tncm91bmQnKS5maW5kKCcubW9kYWwtY2xvc2UnKS5zaG93KCk7JCgnLm1vZGFsLWNsb3NlJykuY2xpY2soZnVuY3Rpb24oKXskKHRoaXMpLmhpZGUoKTskKCcjYWUtd2ViaW5hci1iYWNrZ3JvdW5kJykucmVtb3ZlQ2xhc3MoJ21vZGFsLWJhY2tncm91bmQnKTt9KTt9CiQoJy5mb3JtLXJldmVhbCcpLmNsaWNrKGZ1bmN0aW9uKCl7JCh0aGlzKS5oaWRlKCk7dmFyIGlmcmFtZUhlaWdodD0kKCcjZm9ybS1yZXZlYWwgaWZyYW1lJykuYXR0cignaGVpZ2h0Jyk7JCgnI2Zvcm0tcmV2ZWFsJykuYW5pbWF0ZSh7aGVpZ2h0OmlmcmFtZUhlaWdodCsncHgnfSwzMDApO30pOyQoJy5mb3JtLXJldmVhbC1ib2R5JykuY2xpY2soZnVuY3Rpb24oKXt2YXIgYnV0dG9uPSQodGhpcyk7dmFyIGZvcm1XcmFwPSQodGhpcykuY2xvc2VzdCgnLmZvcm0tcmV2ZWFsLXdyYXAnKTt2YXIgZm9ybVBhcmVudD1mb3JtV3JhcC5maW5kKCcuZm9ybS1yZXZlYWwnKTt2YXIgaWZyYW1lPWZvcm1QYXJlbnQuZmluZCgnaWZyYW1lJyk7dmFyIGlmcmFtZUhlaWdodD1pZnJhbWUuYXR0cignaGVpZ2h0Jyk7Zm9ybVBhcmVudC5zaG93KCk7JCh0aGlzKS5oaWRlKCk7Zm9ybVBhcmVudC5hbmltYXRlKHtoZWlnaHQ6aWZyYW1lSGVpZ2h0KydweCd9LDMwMCk7fSk7ZnVuY3Rpb24gY29udGFjdENvb2tpZShjb29raWVWYWwpe0Nvb2tpZXMuc2V0KCdjb250YWN0LXJlZmVycmVyJyxjb29raWVWYWwpO30KJCgiW2hyZWZePScvY29udGFjdCddIikuYmluZCgiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGNvbnRhY3RUZXh0PSQodGhpcykudGV4dCgpO3dpbmRvdy5kYXRhTGF5ZXIucHVzaCh7J2V2ZW50JzonY29udGFjdC1jbGljaycsJ2NvbnRhY3RDVEFMb2NhdGlvbic6U3RyaW5nKGxvY2F0aW9uLnBhdGhuYW1lKSwnY29udGFjdENUQVRleHQnOmNvbnRhY3RUZXh0fSk7dmFyIGNvbnRhY3RMb2NhdGlvbj0kKHRoaXMpLmRhdGEoJ2NvbnRhY3QnKTtjb25zb2xlLmxvZyhjb250YWN0TG9jYXRpb24pO2lmKGNvbnRhY3RMb2NhdGlvbj09Jycpe2NvbnRhY3RMb2NhdGlvbj0nSG9tZSc7fQpjb250YWN0Q29va2llKGNvbnRhY3RMb2NhdGlvbik7fSk7dmFyIGNvbnRhY3RSZWZlcnJlcj0nJztpZihTdHJpbmcobG9jYXRpb24ucGF0aG5hbWUpLmluZGV4T2YoJy9jb250YWN0Jyk8MCl7Q29va2llcy5yZW1vdmUoJ2NvbnRhY3QtcmVmZXJyZXInKTt9CmVsc2V7Y29udGFjdFJlZmVycmVyPUNvb2tpZXMuZ2V0KCdjb250YWN0LXJlZmVycmVyJyk7aWYoY29udGFjdFJlZmVycmVyPT1udWxsKXtjb250YWN0UmVmZXJyZXI9Jyc7fX0KZnVuY3Rpb24gcGxheVdlYmluYXIoKXskKCcjd2ViaW5hci1mb3JtLXdyYXBwZXInKS5oaWRlKCk7JCgnI3dlYmluYXItdmlkZW8td3JhcHBlcicpLnNob3coKTskKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOjB9LCJzbG93IixmdW5jdGlvbigpe30pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2aWRlb1BsYXllci5wbGF5KCk7fSwxMzAwKTt9CmxldCBzZWFyY2hQYXJhbXM9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtpZihzZWFyY2hQYXJhbXMuaGFzKCdmb3JtY29tcGxldGUnKSl7cGxheVdlYmluYXIoKTt9CmZ1bmN0aW9uIHB1c2hEYXRhTGF5ZXIoKXt3aW5kb3cuZGF0YUxheWVyLnB1c2goeydldmVudCc6J2Zvcm0tc3VibWl0JywnZm9ybVBhZ2UnOlN0cmluZyhsb2NhdGlvbi5wYXRobmFtZSksJ2Zvcm1SZWZlcnJlcic6Y29udGFjdFJlZmVycmVyfSk7fQokKHdpbmRvdykub24oJ21lc3NhZ2UnLGZ1bmN0aW9uKGV2ZW50KXtjb25zdCBvcmlnaW5hbEV2ZW50PWV2ZW50Lm9yaWdpbmFsRXZlbnQ7Y29uc3QgbWVzc2FnZT1vcmlnaW5hbEV2ZW50LmRhdGE7aWYobWVzc2FnZS5hY3Rpb249PT0idXBkYXRlRXhwcmVzc0Zvcm0iKXskKCdpbnB1dFtuYW1lPSJQcm9qZWN0IFdlYnNpdGUgVVJMIl0nKS52YWwobWVzc2FnZS5kYXRhLndlYnNpdGUpO319KTt2YXIgZXhwcmVzc1VSTD0nJztmdW5jdGlvbiBzZXRFeHByZXNzVVJMKCl7Y29uc3QgaWZyYW1lPSQoJyNleHByZXNzLWZvcm0tZnJhbWUnKVswXTtjb25zdCBtZXNzYWdlPXthY3Rpb246InVwZGF0ZUV4cHJlc3NGb3JtIixkYXRhOnt3ZWJzaXRlOmV4cHJlc3NVUkx9fTtpZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlLCcqJyk7fQpmdW5jdGlvbiBwYXJkb3RNZXNzYWdlKGV2ZW50KXtpZihTdHJpbmcoZXZlbnQuZGF0YSkuaW5kZXhPZignZm9ybUhlaWdodDonKT4tMSl7dmFyIGZvcm1IZWlnaHQ9TnVtYmVyKFN0cmluZyhldmVudC5kYXRhKS5zcGxpdCgnOicpWzFdKTt2YXIgY29udGFjdEhlcm89JCgnI2NvbnRhdC1oZXJvJyk7dmFyIHBhcmRvdEZvcm09JCgnI3BhcmRvdC1mb3JtJyk7dmFyIGZvcm1PZmZzZXQ9cGFyZG90Rm9ybS5vZmZzZXQoKS50b3A7dmFyIGhlcm9IZWlnaHQ9TWF0aC5yb3VuZChmb3JtSGVpZ2h0K2Zvcm1PZmZzZXQrMzApO3BhcmRvdEZvcm0uYXR0cigiaGVpZ2h0Iixmb3JtSGVpZ2h0KzE1KTtjb250YWN0SGVyby5hdHRyKCdzdHlsZScsJ2hlaWdodDonK2hlcm9IZWlnaHQrJ3B4OycpO30KaWYoZXZlbnQuZGF0YS5mb3JtSGVpZ2h0KXtjb25zdCBmaW5hbEhlaWdodD1ldmVudC5kYXRhLmZvcm1IZWlnaHQtNzU7Y29uc3QgaWZyYW1lPSQoJy5wYXJkb3QtZm9ybScpO2lmKGlmcmFtZS5sZW5ndGgpe2lmcmFtZS5jc3MoJ2hlaWdodCcsZmluYWxIZWlnaHQrJ3B4Jyk7fX0KaWYoZXZlbnQuZGF0YT09ImZvcm0gc3ViIGd0bSIpe30KaWYoZXZlbnQuZGF0YS50eXBlPT09J2V4cHJlc3NVUkwnKXtjb25zb2xlLmxvZygnSW5wdXQgdmFsdWUgY2hhbmdlZCB0bzonLGV2ZW50LmRhdGEudmFsdWUpO2V4cHJlc3NVUkw9ZXZlbnQuZGF0YS52YWx1ZTtzZXRFeHByZXNzVVJMKCk7fQppZihldmVudC5kYXRhPT0ic3VibWl0Iil7fQppZihldmVudC5kYXRhPT0ic3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy9jb250YWN0L3RoYW5rLXlvdS8nO30KaWYoZXZlbnQuZGF0YT09InN1Ym1pdC1pbyIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPScvY29udGFjdC90aGFuay15b3UvJzt9CmlmKGV2ZW50LmRhdGE9PSJ3ZWJsb2Mtc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy93ZWJsb2MvdGhhbmsteW91Lyc7fQppZihldmVudC5kYXRhPT0iSUNQLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPScvaW5kdXN0cnkvdGhhbmsteW91Lyc7fQppZihldmVudC5kYXRhPT0icm9pLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPScvcmV0dXJuLW9uLWludmVzdG1lbnQvdGhhbmsteW91Lyc7fQppZihldmVudC5kYXRhPT0icGFydG5lci1zdWJtaXQiKXtwdXNoRGF0YUxheWVyKCk7bG9jYXRpb24uaHJlZj0nL3RoYW5rLXlvdS1wYXJ0bmVyc2hpcC8nO30KaWYoZXZlbnQuZGF0YT09InNlby1hdWRpdC1zdWJtaXQiKXtwdXNoRGF0YUxheWVyKCk7bG9jYXRpb24uaHJlZj0nL211bHRpbGluZ3VhbC1zZW8tYXVkaXQvdGhhbmsteW91Lyc7fQppZihldmVudC5kYXRhPT0iYWUtd2ViaW5hci1zdWJtaXQiKXtwdXNoRGF0YUxheWVyKCk7bG9jYXRpb24uaHJlZj0nL2hvdy1oZWFsdGgtaW5zdXJhbmNlLW1hcmtldGVycy1hdHRyYWN0LXUtcy1oaXNwYW5pY3MvdGhhbmsteW91Lyc7fQppZihldmVudC5kYXRhPT0iZXhwcmVzcy1wcm9ncmFtLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTskKCcjZXhwcmVzcy1vdmVybGF5LWNvbnRlbnQnKS5oaWRlKCk7JCgnI2V4cHJlc3Mtb3ZlcmxheS10aGFua3MnKS5zaG93KCk7fQppZihldmVudC5kYXRhPT0iYWRhcHRpdmVjb24tc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy9hZGFwdGl2ZWNvbi0yMDI1L3RoYW5rLXlvdS8nO30KaWYoZXZlbnQuZGF0YT09Im11bHRpbGluZ3VhbC1tYXJrZXRpbmctc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy9tdWx0aWxpbmd1YWwtbWFya2V0aW5nLXNlcnZpY2VzL3RoYW5rLXlvdS8nO30KaWYoZXZlbnQuZGF0YT09InByb2R1Y3QtbWFuYWdlcnMtc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy9wcm9kdWN0LW1hbmFnZXJzL3RoYW5rLXlvdS8nO30KaWYoZXZlbnQuZGF0YT09InRyYW5zbGF0aW9uLW1hcmtldGVyLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPScvd2Vic2l0ZS10cmFuc2xhdGlvbi1mb3ItbWFya2V0ZXJzL3RoYW5rLXlvdS8nO30KaWYoZXZlbnQuZGF0YT09InNlby1hdWRpdC1zdWJtaXQiKXtwdXNoRGF0YUxheWVyKCk7bG9jYXRpb24uaHJlZj0nL211bHRpbGluZ3VhbC1zZW8tYXVkaXQvdGhhbmsteW91Lyc7fQppZihldmVudC5kYXRhPT0ic2NvcmVjYXJkLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPScvd2Vic2l0ZS10cmFuc2xhdGlvbi1zY29yZWNhcmQtYW5kLWxvY2FsaXphdGlvbi1kaWFnbm9zdGljL3RoYW5rLXlvdS8nO30KaWYoZXZlbnQuZGF0YT09InZpZGVvLXJlcXVlc3Qtc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy90aGFuay15b3UtZGVtby8nO30KaWYoZXZlbnQuZGF0YT09ImNhbXBhaWduLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPWxvY2F0aW9uLmhyZWYrJz9tZXNzYWdlPXRoYW5rIHlvdSc7fQppZihldmVudC5kYXRhPT0iYXJ0aWNsZS1nYXRlLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPWxvY2F0aW9uLmhyZWYrJz9hcnRpY2xlPWZ1bGwnO30KaWYoZXZlbnQuZGF0YT09Im9wdC1pbiBzdWJtaXQiKXskKCcjbW9kYWwtZm9ybScpLnJlbW92ZSgpOyQoJy5wcm9tcHQnKS5oaWRlKCk7JCgnLnRoYW5rJykuc2hvdygpO3B1c2hEYXRhTGF5ZXIoKTt9CmlmKGV2ZW50LmRhdGE9PSJzd2l0Y2gtdG8tbXAtc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy9jb250YWN0L3RoYW5rLXlvdS8nO30KaWYoZXZlbnQuZGF0YT09ImJvZ28tc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy9nZXQtc3RhcnRlZC1mb3ItZnJlZS90aGFuay15b3UvJzt9CmlmKGV2ZW50LmRhdGE9PSJnYXRlLWVib29rLXN1Ym1pdCIpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPScnO30KaWYoZXZlbnQuZGF0YT09ImVib29rLXBvcC1vdmVyIil7JCgnI29mZmVyLW1vZGFsJykuaGlkZSgpO3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPSJodHRwczovL2NvbnRlbnQubW90aW9ucG9pbnQuY29tL2wvNDg1NzgxLzIwMjItMTItMTUvMjlseG1mNC80ODU3ODEvMTY3MTEzNTY1MTAwekFwelVlL2luc291cmNlX3ZzX291dHNvdXJjZS5wZGYiO30KaWYoZXZlbnQuZGF0YT09InBvcC1vdmVyLXdlYmluYXItaXZvLXN1Ym1pdCIpeyQoJyNvZmZlci1tb2RhbCcpLmhpZGUoKTtwdXNoRGF0YUxheWVyKCk7bG9jYXRpb24uaHJlZj0iaHR0cHM6Ly93d3cubW90aW9ucG9pbnQuY29tL3JlZ2lzdGVyL3RoZS11bHRpbWF0ZS1ndWlkZS10by1vdXRzb3VyY2luZy12cy1pbnNvdXJjaW5nLXdlYnNpdGUtdHJhbnNsYXRpb25zLz9mb3JtY29tcGxldGU9dHJ1ZSI7fQppZihldmVudC5kYXRhPT0id2ViaW5hci1pdm8tc3VibWl0Iil7cHVzaERhdGFMYXllcigpO3BsYXlXZWJpbmFyKCk7fQppZihldmVudC5kYXRhPT0id2ViaW5hci1hZGFwdGl2ZWNvbi1zdWJtaXQifHxldmVudC5kYXRhPT0id2ViaW5hci13ZWJsb2Mtc3VibWl0Iil7cHVzaERhdGFMYXllcigpO3BsYXlXZWJpbmFyKCk7fQppZihldmVudC5kYXRhPT0icmV0YXJnZXRpbmctc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9bG9jYXRpb24uaHJlZisnP21lc3NhZ2U9dGhhbmsgeW91Jzt9CmlmKGV2ZW50LmRhdGE9PSJibG9nLWFyY2hpdmUtc3VibWl0Iil7cHVzaERhdGFMYXllcigpO30KaWYoZXZlbnQuZGF0YT09ImJsb2ctcGFnZS1zdWJtaXQiKXtwdXNoRGF0YUxheWVyKCk7fQppZihldmVudC5kYXRhPT0iYXBpLXN1Ym1pdCIpeyQoJyNhcGktZm9ybS1ncmVldGluZycpLmhpZGUoKTskKCcjYXBpLWZvcm0tdGhhbmtzJykuc2hvdygpO3B1c2hEYXRhTGF5ZXIoKTt9CmlmKGV2ZW50LmRhdGE9PSd3ZWJpbmFyLXN1Ym1pdCcpe3B1c2hEYXRhTGF5ZXIoKTtsb2NhdGlvbi5ocmVmPScvYWRhcHRpdmUtdHJhbnNsYXRpb24td2ViaW5hci90aGFuay15b3UvJzt9CmlmKGV2ZW50LmRhdGE9PSJyZXNvdXJjZXMtc3VibWl0Iil7cHVzaERhdGFMYXllcigpO30KaWYoZXZlbnQuZGF0YT09InJpc2stZnJlZS1zdWJtaXQiKXtwdXNoRGF0YUxheWVyKCk7bG9jYXRpb24uaHJlZj0nL3Jpc2stZnJlZS1ndWFyYW50ZWUvdGhhbmsteW91Lyc7fQppZihldmVudC5kYXRhPT0iZmluYW5jaWFsLWZsdWVuY3ktc3VibWl0Iil7cHVzaERhdGFMYXllcigpO2xvY2F0aW9uLmhyZWY9Jy9maW5hbmNpYWwtZmx1ZW5jeS90aGFuay15b3UvJzt9fQp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscGFyZG90TWVzc2FnZSxmYWxzZSk7
Stylesheets (3)
Forms (1)
Resource Hints (3)
- • preload as:style https://fr-ca.motionpoint.com/wp-content/cache/autoptimize/1/css/autoptimize_single_4ab3f77883cfad4c98ed492f7670eb7b.css?ver=081023
- • preload as:style https://fr-ca.motionpoint.com/wp-content/plugins/add-search-to-menu/public/css/ivory-search.min.css
- • preload as:fetch crossorigin:anonymous https://fr-ca.motionpoint.com/wp-content/themes/motionpoint/js/u/adaptive-translation-compressed-final.json