5.4 sec in total
703 ms
4.3 sec
436 ms
Welcome to ferienhaus-verkauf.de homepage info - get ready to check Ferienhaus Verkauf best content for Germany right away, or after learning these important things about ferienhaus-verkauf.de
Ferienhaus & Ferienwohnung Verkauf Urlaubs Immobilien kaufen und verkaufen weltweit Fewo verkaufs Anzeigen Verkäufer Ferienwohnungen Gardasee
Visit ferienhaus-verkauf.deWe analyzed Ferienhaus-verkauf.de page load time and found that the first response time was 703 ms and then it took 4.7 sec to load all DOM resources and completely render a web page. This is a poor result, as 70% of websites can load faster.
ferienhaus-verkauf.de performance score
name
value
score
weighting
Value5.0 s
10/100
10%
Value5.1 s
24/100
25%
Value9.5 s
12/100
10%
Value300 ms
78/100
30%
Value0
100/100
15%
Value11.4 s
19/100
10%
703 ms
9 ms
516 ms
6 ms
574 ms
Our browser made a total of 47 requests to load all elements on the main page. We found that 0% of them (0 request) were addressed to the original Ferienhaus-verkauf.de, 40% (19 requests) were made to and 2% (1 request) were made to Fewo-tausch.de. The less responsive or slowest element that took the longest time to load (823 ms) relates to the external source Fewo-verkauf.de.
Page size can be reduced by 807.9 kB (57%)
1.4 MB
604.7 kB
In fact, the total size of Ferienhaus-verkauf.de main page is 1.4 MB. This result falls beyond the top 1M of websites and identifies a large and not optimized web page that may take ages to load. 35% of websites need less resources to load. Javascripts take 615.1 kB which makes up the majority of the site volume.
Potential reduce by 320.8 kB
HTML content can be minified and compressed by a website’s server. The most efficient way is to compress content using GZIP which reduces data amount travelling through the network between server and browser. HTML code on this page is well minified. It is highly recommended that content of this web page should be compressed using GZIP, as it can save up to 320.8 kB or 85% of the original size.
Potential reduce by 0 B
Image size optimization can help to speed up a website loading time. The chart above shows the difference between the size before and after optimization. Ferienhaus Verkauf images are well optimized though.
Potential reduce by 446.9 kB
It’s better to minify JavaScript in order to improve website performance. The diagram shows the current total size of all JavaScript files against the prospective JavaScript size after its minification and compression. It is highly recommended that all JavaScript files should be compressed and minified as it can save up to 446.9 kB or 73% of the original size.
Potential reduce by 40.3 kB
CSS files minification is very important to reduce a web page rendering time. The faster CSS files can load, the earlier a page can be rendered. Ferienhaus-verkauf.de needs all CSS files to be minified and compressed as it can save up to 40.3 kB or 23% of the original size.
Number of requests can be reduced by 19 (79%)
24
5
The browser has sent 24 CSS, Javascripts, AJAX and image requests in order to completely render the main page of Ferienhaus Verkauf. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 16 to 1 for JavaScripts and from 5 to 1 for CSS and as a result speed up the page load time.
fewo-verkauf.de
703 ms
javascript;base64,ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoICduby1qcycgKTs=
9 ms
wpo-minify-header-e1237277.min.css
516 ms
javascript;base64,CndpbmRvdy5nZFNldE1hcCA9IHdpbmRvdy5nZFNldE1hcCB8fCAnb3NtJzt3aW5kb3cuZ2RMb2FkTWFwID0gd2luZG93LmdkTG9hZE1hcCB8fCAnYXV0byc7Cg==
6 ms
wpo-minify-header-jquery-core3.7.1.min.js
574 ms
wpo-minify-header-jquery-migrate3.4.1.min.js
304 ms
wpo-minify-header-jquerygeodir-cp-widget3.7.12.3.6.min.js
305 ms
wpo-minify-header-jqueryselect23.7.14.0.11.min.js
615 ms
wpo-minify-header-select2jquerybootstrap-js-bundle4.0.113.7.10.2.14.min.js
823 ms
IiwiY29uZmlybV9sYmxfZXJyb3IiOiJGRUhMRVI6IiwibGFiZWxfdGl0bGUiOiJUaXRlbCIsImxhYmVsX2NhcHRpb24iOiJCaWxkdW50ZXJzY2hyaWZ0IiwiYnV0dG9uX3NldCI6IlNldHplbiIsIkJIX2FsdFRpbWVGb3JtYXQiOiJIOmkiLCJzcGxpdFVLIjoiMCIsInRpbWVfYWdvIjp7InByZWZpeF9hZ28iOiIiLCJzdWZmaXhfYWdvIjoiIHZvciIsInByZWZpeF9hZnRlciI6Im5hY2ggIiwic3VmZml4X2FmdGVyIjoiIiwic2Vjb25kcyI6IndlbmlnZXIgYWxzIGVpbmVyIE1pbnV0ZSIsIm1pbnV0ZSI6ImV0d2EgZWluZXIgTWludXRlIiwibWludXRlcyI6IiVkIE1pbnV0ZW4iLCJob3VyIjoiZXR3YSBlaW5lciBTdHVuZGUiLCJob3VycyI6ImV0d2EgJWQgU3R1bmRlbiIsImRheSI6ImVpbmVtIFRhZyIsImRheXMiOiIlZFx1MDBhMFRhZ2VuIiwibW9udGgiOiJldHdhIGVpbmVtIE1vbmF0IiwibW9udGhzIjoiJWQgTW9uYXRlbiIsInllYXIiOiJldHdhIGVpbmVtIEphaHIiLCJ5ZWFycyI6IiVkIEphaHJlbiJ9LCJyZXNpemVfbWFya2VyIjoiIiwibWFya2VyX21heF93aWR0aCI6IjUwIiwibWFya2VyX21heF9oZWlnaHQiOiI1MCIsImhhc0FqYXhTZWFyY2giOiIifTsK
6 ms
wpo-minify-header-jquerygeodir3.7.12.3.52.min.js
622 ms
IiwiY29uZmlybV9sYmxfZXJyb3IiOiJGRUhMRVI6IiwibGFiZWxfdGl0bGUiOiJUaXRlbCIsImxhYmVsX2NhcHRpb24iOiJCaWxkdW50ZXJzY2hyaWZ0IiwiYnV0dG9uX3NldCI6IlNldHplbiIsIkJIX2FsdFRpbWVGb3JtYXQiOiJIOmkiLCJzcGxpdFVLIjoiMCIsInRpbWVfYWdvIjp7InByZWZpeF9hZ28iOiIiLCJzdWZmaXhfYWdvIjoiIHZvciIsInByZWZpeF9hZnRlciI6Im5hY2ggIiwic3VmZml4X2FmdGVyIjoiIiwic2Vjb25kcyI6IndlbmlnZXIgYWxzIGVpbmVyIE1pbnV0ZSIsIm1pbnV0ZSI6ImV0d2EgZWluZXIgTWludXRlIiwibWludXRlcyI6IiVkIE1pbnV0ZW4iLCJob3VyIjoiZXR3YSBlaW5lciBTdHVuZGUiLCJob3VycyI6ImV0d2EgJWQgU3R1bmRlbiIsImRheSI6ImVpbmVtIFRhZyIsImRheXMiOiIlZFx1MDBhMFRhZ2VuIiwibW9udGgiOiJldHdhIGVpbmVtIE1vbmF0IiwibW9udGhzIjoiJWQgTW9uYXRlbiIsInllYXIiOiJldHdhIGVpbmVtIEphaHIiLCJ5ZWFycyI6IiVkIEphaHJlbiJ9LCJyZXNpemVfbWFya2VyIjoiIiwibWFya2VyX21heF93aWR0aCI6IjUwIiwibWFya2VyX21heF9oZWlnaHQiOiI1MCIsImhhc0FqYXhTZWFyY2giOiIifTsKdmFyIGdlb2Rpcl9jcF9wYXJhbXMgPSB7ImF1aSI6ImJvb3RzdHJhcCJ9Owo=
4 ms
wpo-minify-header-jquerygeodirgeodir-cp3.7.12.3.522.3.6.min.js
404 ms
IiwiY29uZmlybV9sYmxfZXJyb3IiOiJGRUhMRVI6IiwibGFiZWxfdGl0bGUiOiJUaXRlbCIsImxhYmVsX2NhcHRpb24iOiJCaWxkdW50ZXJzY2hyaWZ0IiwiYnV0dG9uX3NldCI6IlNldHplbiIsIkJIX2FsdFRpbWVGb3JtYXQiOiJIOmkiLCJzcGxpdFVLIjoiMCIsInRpbWVfYWdvIjp7InByZWZpeF9hZ28iOiIiLCJzdWZmaXhfYWdvIjoiIHZvciIsInByZWZpeF9hZnRlciI6Im5hY2ggIiwic3VmZml4X2FmdGVyIjoiIiwic2Vjb25kcyI6IndlbmlnZXIgYWxzIGVpbmVyIE1pbnV0ZSIsIm1pbnV0ZSI6ImV0d2EgZWluZXIgTWludXRlIiwibWludXRlcyI6IiVkIE1pbnV0ZW4iLCJob3VyIjoiZXR3YSBlaW5lciBTdHVuZGUiLCJob3VycyI6ImV0d2EgJWQgU3R1bmRlbiIsImRheSI6ImVpbmVtIFRhZyIsImRheXMiOiIlZFx1MDBhMFRhZ2VuIiwibW9udGgiOiJldHdhIGVpbmVtIE1vbmF0IiwibW9udGhzIjoiJWQgTW9uYXRlbiIsInllYXIiOiJldHdhIGVpbmVtIEphaHIiLCJ5ZWFycyI6IiVkIEphaHJlbiJ9LCJyZXNpemVfbWFya2VyIjoiIiwibWFya2VyX21heF93aWR0aCI6IjUwIiwibWFya2VyX21heF9oZWlnaHQiOiI1MCIsImhhc0FqYXhTZWFyY2giOiIifTsKdmFyIGdlb2Rpcl9wcmljaW5nX3BhcmFtcyA9IFtdOwo=
3 ms
wpo-minify-header-jquerygeodirgeodir-pricing3.7.12.3.522.7.9.min.js
507 ms
javascript;base64,CnZhciB1d3BfbG9jYWxpemVfZGF0YSA9IHsidXdwX21vcmVfY2hhcl9saW1pdCI6IjEwMCIsInV3cF9tb3JlX3RleHQiOiJNZWhyIiwidXdwX2xlc3NfdGV4dCI6IldlbmlnZXIiLCJlcnJvciI6IkV0d2FzIGlzdCBzY2hpZWZnZWdhbmdlbi4iLCJlcnJvcl9yZXRyeSI6IkV0d2FzIGlzdCBzY2hpZWYgZ2VnYW5nZW4uIEJpdHRlIHZlcnN1Y2ggZXMgZXJuZXV0LiIsInV3cF9tb3JlX2VsbGlwc2VzX3RleHQiOiIuLi4iLCJhamF4dXJsIjoiaHR0cHM6XC9cL2Zld28tdmVya2F1Zi5kZVwvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwIiwibG9naW5fbW9kYWwiOiIiLCJyZWdpc3Rlcl9tb2RhbCI6IiIsImZvcmdvdF9tb2RhbCI6IjEiLCJ1d3BfcGFzc19zdHJlbmd0aCI6IiIsInV3cF9zdHJvbmdfcGFzc19tc2ciOiJCaXR0ZSBlaW4gc2ljaGVyZXMgUGFzc3dvcnQgd1x1MDBlNGhsZW4gbWluZC4gOCBaZWljaGVuIiwiZGVmYXVsdF9iYW5uZXIiOiJodHRwczpcL1wvZmV3by12ZXJrYXVmLmRlXC93cC1jb250ZW50XC9wbHVnaW5zXC91c2Vyc3dwXC9hc3NldHNcL2ltYWdlc1wvYmFubmVyLnBuZyIsImJhc2ljTm9uY2UiOiI5OTgxNzJkMTA4In07Cg==
3 ms
wpo-minify-header-jqueryuserswp3.7.11.2.9.min.js
655 ms
javascript;base64,CiAgICAgICAgICAgdmFyIGFqYXh1cmwgPSAiaHR0cHM6Ly9mZXdvLXZlcmthdWYuZGUvd3AtYWRtaW4vYWRtaW4tYWpheC5waHAiOwogICAgICAgICA=
3 ms
header.min.css
620 ms
ferienhaus-verkauf-logo-klein.jpg
683 ms
content.min.css
633 ms
javascript;base64,alF1ZXJ5KGZ1bmN0aW9uKCQpe3ZhciBnZF9kYXRlcGlja2VyX2xvYWRlZCA9ICQoJ2JvZHknKS5oYXNDbGFzcygnZ2QtbXVsdGktZGF0ZXBpY2tlcicpID8gdHJ1ZSA6IGZhbHNlO2lmICghZ2RfZGF0ZXBpY2tlcl9sb2FkZWQpeyQoJ2JvZHknKS5hZGRDbGFzcygnZ2QtbXVsdGktZGF0ZXBpY2tlcicpO319KTs=
15 ms
javascript;base64,CndpbmRvdy5nZEJhc2VMYXQgPSAwOwp3aW5kb3cuZ2RCYXNlTG5nID0gMDsKd2luZG93LmdkQmFzZVpvb20gPSAwOwpqUXVlcnkoZnVuY3Rpb24gKCQpIHsKCQkJalF1ZXJ5KCcjZ2RfbWFwX2NhbnZhc19kaXJlY3RvcnknKS5nZW9kaXJMb2FkTWFwKHsKCQltYXBfY2FudmFzOiAnZ2RfbWFwX2NhbnZhc19kaXJlY3RvcnknLAoJCWNhbGxiYWNrOiBmdW5jdGlvbigpIHsJCQl2YXIgZ2RNYXBDYW52YXMgPSAnZ2RfbWFwX2NhbnZhc19kaXJlY3RvcnknOwoJCQlidWlsZF9tYXBfYWpheF9zZWFyY2hfcGFyYW0oZ2RNYXBDYW52YXMsIGZhbHNlKTsJCQkJCQkJCQkJCQl2YXIgc2NyZWVuSCwgaGVpZ2h0VkgsIHB0eXBlSCA9IDA7CgkJCXNjcmVlbkggPSAkKHdpbmRvdykuaGVpZ2h0KCk7CgkJCWhlaWdodFZIID0gcGFyc2VGbG9hdCgnNTAwJyk7CgkJCWlmICgkKCIjIiArIGdkTWFwQ2FudmFzICsgIl9wb3N0dHlwZV9tZW51IikubGVuZ3RoKSB7CgkJCQlwdHlwZUggPSAkKCIjIiArIGdkTWFwQ2FudmFzICsgIl9wb3N0dHlwZV9tZW51Iikub3V0ZXJIZWlnaHQoKTsKCQkJfQoJCQkkKCIjIiArIGdkTWFwQ2FudmFzICsgIl9jYXQiKS5jc3MoIm1heC1oZWlnaHQiLCBoZWlnaHRWSCAtIHB0eXBlSCArICdweCcpOwoJCQkJCX0KCX0pO30pOwo=
13 ms
javascript;base64,CmpRdWVyeShkb2N1bWVudCkub24oJ2NsaWNrJywgJy5nZC13Z3QtcGFnaS0xMDkzNjgzMzU2IC5nZC13Z3QtcGFnZScsIGZ1bmN0aW9uKGUpIHsKICAgIHZhciBvYmogPSB0aGlzOwogICAgdmFyIHBpZCA9IHBhcnNlSW50KGpRdWVyeSh0aGlzKS5kYXRhKCdwYWdlJykpOwogICAgdmFyIGNvbnRhaW5lciA9IGpRdWVyeShvYmopLmNsb3Nlc3QoJy5nZC1yb3dzLXBvcHVsYXItbG9jYXRpb25zJyk7CiAgICB2YXIgbG9hZGluZyA9IGpRdWVyeSgnLmdkLWFqYXgtd2d0LWxvYWRpbmcnLCBqUXVlcnkoY29udGFpbmVyKS5jbG9zZXN0KCcuZ2VvZGlyLXdpZGdldCcpKTsKICAgIAogICAgaWYgKCFwaWQgPiAwIHx8ICEoY29udGFpbmVyICYmIHR5cGVvZiBjb250YWluZXIgIT0gJ3VuZGVmaW5lZCcpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICB2YXIgc2NhdHRzID0gIntcInRpdGxlXCI6XCJcIixcIndpZGdldF90aXRsZV90YWdcIjpcIlwiLFwid2lkZ2V0X3RpdGxlX3NpemVfY2xhc3NcIjpcIlwiLFwid2lkZ2V0X3RpdGxlX2FsaWduX2NsYXNzXCI6XCJcIixcIndpZGdldF90aXRsZV9jb2xvcl9jbGFzc1wiOlwiXCIsXCJ3aWRnZXRfdGl0bGVfYm9yZGVyX2NsYXNzXCI6XCJcIixcIndpZGdldF90aXRsZV9ib3JkZXJfY29sb3JfY2xhc3NcIjpcIlwiLFwid2lkZ2V0X3RpdGxlX210X2NsYXNzXCI6XCJcIixcIndpZGdldF90aXRsZV9tcl9jbGFzc1wiOlwiXCIsXCJ3aWRnZXRfdGl0bGVfbWJfY2xhc3NcIjpcIlwiLFwid2lkZ2V0X3RpdGxlX21sX2NsYXNzXCI6XCJcIixcIndpZGdldF90aXRsZV9wdF9jbGFzc1wiOlwiXCIsXCJ3aWRnZXRfdGl0bGVfcHJfY2xhc3NcIjpcIlwiLFwid2lkZ2V0X3RpdGxlX3BiX2NsYXNzXCI6XCJcIixcIndpZGdldF90aXRsZV9wbF9jbGFzc1wiOlwiXCIsXCJ3aGF0XCI6XCJjb3VudHJ5XCIsXCJzbHVnc1wiOlwiXCIsXCJub19sb2NcIjpmYWxzZSxcInNob3dfY3VycmVudFwiOmZhbHNlLFwiY291bnRyeVwiOlwiXCIsXCJyZWdpb25cIjpcIlwiLFwiY2l0eVwiOlwiXCIsXCJvdXRwdXRfdHlwZVwiOlwibGlzdFwiLFwicGVyX3BhZ2VcIjpcIlwiLFwiZmFsbGJhY2tfaW1hZ2VcIjpmYWxzZSxcImdyaWRfcGVyX3Jvd1wiOlwiM1wiLFwiZ3JpZF9pdGVtX2FzcGVjdFwiOlwiNGJ5M1wiLFwiZ3JpZF9mb250X3NpemVcIjpcImg1XCIsXCJncmlkX2ZvbnRfY2FzZVwiOlwidGV4dC11cHBlcmNhc2VcIixcImdyaWRfZm9udF93ZWlnaHRcIjpcImZ3LWJvbGRcIixcImdyaWRfdGV4dF9hbGlnblwiOlwiXCIsXCJncmlkX3RleHRfYWxpZ25fbWRcIjpcIlwiLFwiZ3JpZF90ZXh0X2FsaWduX2xnXCI6XCJcIixcInR5cGVcIjpcIlwiLFwiaWNvbl9jbGFzc1wiOlwiXCIsXCJzaGFkb3dcIjpcIlwiLFwiY29sb3JcIjpcIlwiLFwiYmdfY29sb3JcIjpcIiMwMDczYWFcIixcInR4dF9jb2xvclwiOlwiI2ZmZmZmZlwiLFwic2l6ZVwiOlwiXCIsXCJwYWdpX3RcIjpmYWxzZSxcInBhZ2lfYlwiOmZhbHNlLFwicGFnaV9pbmZvXCI6XCJcIixcIm10XCI6XCJcIixcIm1yXCI6XCJcIixcIm1iXCI6XCJcIixcIm1sXCI6XCJcIixcImNzc19jbGFzc1wiOlwiXCIsXCJjb3VudHJ5X3ZhbFwiOlwiXCIsXCJyZWdpb25fdmFsXCI6XCJcIixcImNpdHlfdmFsXCI6XCJcIn0iOwogICAgCiAgICB2YXIgZGF0YSA9IHsKICAgICAgICAnYWN0aW9uJzogJ2dkX3BvcHVsYXJfbG9jYXRpb25fbGlzdCcsCiAgICAgICAgJ19ub25jZSc6ICc4NDU1MTc5NTcxJywKICAgICAgICAnZ2VvZGlyX2FqYXgnOiB0cnVlLAogICAgICAgICdwYWdlbm8nOiBwaWQsCiAgICAgICAgJ3NjYXR0cyc6IHNjYXR0cywKICAgIH07CiAgICAKICAgIGpRdWVyeShkb2N1bWVudCkuYWpheFN0b3AoZnVuY3Rpb24oKSB7CiAgICAgICAgalF1ZXJ5KCd1bCcsIGNvbnRhaW5lcikuY3NzKHsnb3BhY2l0eSc6ICcxJ30pOwogICAgICAgIGxvYWRpbmcuaGlkZSgpOwogICAgfSk7CgogICAgalF1ZXJ5KCd1bCcsIGNvbnRhaW5lcikuY3NzKHsnb3BhY2l0eSc6ICcwLjQnfSk7CiAgICBsb2FkaW5nLnNob3coKTsKCiAgICBqUXVlcnkucG9zdChnZW9kaXJfcGFyYW1zLmFqYXhfdXJsLCBkYXRhLCBmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZSAhPSAnMCcpIHsKICAgICAgICAgICAgbG9hZGluZy5oaWRlKCk7CiAgICAgICAgICAgIGpRdWVyeShjb250YWluZXIpLmh0bWwocmVzcG9uc2UpOwogICAgICAgICAgICBnZW9kaXJfaW5pdF9sYXp5X2xvYWQoKTsKICAgICAgICB9CiAgICB9KTsKfSk7Cg==
2 ms
footer.min.css
595 ms
javascript;base64,ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXNjcm9sbGJhci1vZmZzZXQnLCB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCArICdweCcgKTs=
4 ms
WzAtOV1bQS1aYS16XXsyfXxbR2ddW0lpXVtScl0gPzBbQWFdezJ9KSQiKTsKCQkJCQkJCWlmKCRpc19wb3N0X2NvZGUpewoJCQkJCQkJCSRuZWFyX3ZhbCA9ICRuZWFyX3ZhbC5yZXBsYWNlKC8uezN9JC8sJyAkJicpOwoJCQkJCQkJCWpRdWVyeSgiLnNuZWFyIiwgJGZvcm0pLnZhbCgkbmVhcl92YWwpOwoJCQkJCQkJfQoJCQkJCQl9CgoJCQkJCQlnZW9kaXJfc2V0c2VhcmNoKCRmb3JtKTsKCQkJCQl9IGVsc2UgewoJCQkJCQlqUXVlcnkoIi5zbmVhciIsICRmb3JtKS52YWwoJycpOwoJCQkJCQlqUXVlcnkoJGZvcm0pLnRyaWdnZXIoInN1Ym1pdCIpOwoJCQkJCX0KCQkJCX0pOwoJCQkJLy8gQ2xlYXIgbmVhciBzZWFyY2ggR1BTIGZvciBjb3JlCgkJCQlpZiAoIWpRdWVyeSgnaW5wdXQuZ2VvZGlyLWxvY2F0aW9uLXNlYXJjaC10eXBlJykubGVuZ3RoICYmIGpRdWVyeSgnW25hbWU9InNuZWFyIl0nKS5sZW5ndGgpewoJCQkJCWpRdWVyeSgnW25hbWU9InNuZWFyIl0nKS5vZmYoJ2tleXVwJyk7CgkJCQkJalF1ZXJ5KCdbbmFtZT0ic25lYXIiXScpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKCQpewoJCQkJCQlqUXVlcnkoJy5zZ2VvX2xhdCcpLnZhbCgnJyk7CgkJCQkJCWpRdWVyeSgnLnNnZW9fbG9uJykudmFsKCcnKTsKCQkJCQl9KTsKCQkJCX0KCQkJfQoKCQkJalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKCQkJCWdlb2Rpcl9zZXR1cF9zdWJtaXRfc2VhcmNoKCk7CgkJCQkvL3NldHVwIGFkdmFuY2VkIHNlYXJjaCBmb3JtIG9uIGZvcm0gYWpheCBsb2FkCgkJCQlqUXVlcnkoImJvZHkiKS5vbigiZ2VvZGlyX3NldHVwX3NlYXJjaF9mb3JtIiwgZnVuY3Rpb24oJGZvcm0pewoJCQkJCWdlb2Rpcl9zZXR1cF9zdWJtaXRfc2VhcmNoKCRmb3JtKTsKCQkJCX0pOwoJCQl9KTsKCgkJCWZ1bmN0aW9uIGdlb2Rpcl9zZXRzZWFyY2goJGZvcm0pIHsKCQkJCWlmICgoZGlzdCA+IDAgfHwgKGpRdWVyeSgnc2VsZWN0W25hbWU9InNvcnRfYnkiXScsICRmb3JtKS52YWwoKSA9PSAnbmVhcmVzdCcgfHwgalF1ZXJ5KCdzZWxlY3RbbmFtZT0ic29ydF9ieSJdJywgJGZvcm0pLnZhbCgpID09ICdmYXJ0aGVzdCcpKSAmJiAoalF1ZXJ5KCIuc25lYXIiLCAkZm9ybSkudmFsKCkgPT0gJycgfHwgalF1ZXJ5KCIuc25lYXIiLCAkZm9ybSkudmFsKCkgPT0gJ0luIGRlciBOw6RoZS4uLicpKSBqUXVlcnkoIi5zbmVhciIsICRmb3JtKS52YWwoZGVmYXVsdF9sb2NhdGlvbik7CgkJCQlnZW9jb2RlQWRkcmVzcygkZm9ybSk7CgkJCX0KCgkJCWZ1bmN0aW9uIHVwZGF0ZVNlYXJjaFBvc2l0aW9uKGxhdExuZywgJGZvcm0pIHsKCQkJCWlmICh3aW5kb3cuZ2RNYXBzID09PSAnZ29vZ2xlJykgewoJCQkJCWpRdWVyeSgnLnNnZW9fbGF0JykudmFsKGxhdExuZy5sYXQoKSk7CgkJCQkJalF1ZXJ5KCcuc2dlb19sb24nKS52YWwobGF0TG5nLmxuZygpKTsKCQkJCX0gZWxzZSBpZiAod2luZG93LmdkTWFwcyA9PT0gJ29zbScpIHsKCQkJCQlqUXVlcnkoJy5zZ2VvX2xhdCcpLnZhbChsYXRMbmcubGF0KTsKCQkJCQlqUXVlcnkoJy5zZ2VvX2xvbicpLnZhbChsYXRMbmcubG9uKTsKCQkJCX0KCQkJCWpRdWVyeSgkZm9ybSkudHJpZ2dlcigic3VibWl0Iik7IC8vIHN1Ym1pdCBmb3JtIGFmdGVyIGluc2VydGluZyB0aGUgbGF0IGxvbmcgcG9zaXRpb25zCgkJCX0KCgkJCWZ1bmN0aW9uIGdlb2NvZGVBZGRyZXNzKCRmb3JtKSB7CgkJCQkvLyBDYWxsIHRoZSBnZW9jb2RlIGZ1bmN0aW9uCgkJCQlTZ2VvY29kZXIgPSB3aW5kb3cuZ2RNYXBzID09ICdnb29nbGUnID8gbmV3IGdvb2dsZS5tYXBzLkdlb2NvZGVyKCkgOiBudWxsOwoKCQkJCWlmIChqUXVlcnkoJy5zbmVhcicsICRmb3JtKS52YWwoKSA9PSAnJyB8fCAoIGpRdWVyeSgnLnNnZW9fbGF0JykudmFsKCkgIT0gJycgJiYgalF1ZXJ5KCcuc2dlb19sb24nKS52YWwoKSAhPSAnJyAgKSB8fCBqUXVlcnkoJy5zbmVhcicsICRmb3JtKS52YWwoKS5tYXRjaCgiXkluOiIpKSB7CgkJCQkJaWYgKGpRdWVyeSgnLnNuZWFyJywgJGZvcm0pLnZhbCgpLm1hdGNoKCJeSW46IikpIHsKCQkJCQkJalF1ZXJ5KCIuc25lYXIiLCAkZm9ybSkudmFsKCcnKTsKCQkJCQl9CgkJCQkJalF1ZXJ5KCRmb3JtKS50cmlnZ2VyKCJzdWJtaXQiKTsKCQkJCX0gZWxzZSB7CgkJCQkJdmFyIGFkZHJlc3MgPSBqUXVlcnkoIi5zbmVhciIsICRmb3JtKS52YWwoKTsKCgkJCQkJaWYgKGFkZHJlc3MgJiYgYWRkcmVzcy50cmltKCkgPT0gJ0luIGRlciBOw6RoZS4uLicpIHsKCQkJCQkJaW5pdGlhbGlzZTIoKTsKCQkJCQl9IGVsc2UgaWYoYWRkcmVzcyAmJiBhZGRyZXNzLnRyaW0oKSA9PSAnSW4gZGVyIE7DpGhlOiBNZWluIFN0YW5kb3J0JykgewoJCQkJCQlqUXVlcnkoJGZvcm0pLnRyaWdnZXIoInN1Ym1pdCIpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCQkJCXZhciBzZWFyY2hfYWRkcmVzcyA9IGFkZHJlc3M7CgkJCQkJCQkJCQkJCWlmICh3aW5kb3cuZ2RNYXBzID09PSAnZ29vZ2xlJykgewoJCQkJCQkJdmFyIGdlb2NvZGVRdWVyeVBhcmFtcyA9IHsnYWRkcmVzcyc6IHNlYXJjaF9hZGRyZXNzfTsKCQkJCQkJCWlmIChnZW9kaXJJc1ppcENvZGUoYWRkcmVzcykpIHsKCQkJCQkJCQlpZiAodHlwZW9mIGdlb2NvZGVRdWVyeVBhcmFtc1snY29tcG9uZW50UmVzdHJpY3Rpb25zJ10gIT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQkJCQkJaWYgKHR5cGVvZiBnZW9jb2RlUXVlcnlQYXJhbXNbJ2NvbXBvbmVudFJlc3RyaWN0aW9ucyddWydwb3N0YWxDb2RlJ10gPT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQkJCQkJCWdlb2NvZGVRdWVyeVBhcmFtc1snY29tcG9uZW50UmVzdHJpY3Rpb25zJ11bJ3Bvc3RhbENvZGUnXSA9IGFkZHJlc3M7CgkJCQkJCQkJCX0KCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQlnZW9jb2RlUXVlcnlQYXJhbXNbJ2NvbXBvbmVudFJlc3RyaWN0aW9ucyddID0geydwb3N0YWxDb2RlJzogYWRkcmVzc307CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJCQkJCQkJCVNnZW9jb2Rlci5nZW9jb2RlKGdlb2NvZGVRdWVyeVBhcmFtcywKCQkJCQkJCQlmdW5jdGlvbiAocmVzdWx0cywgc3RhdHVzKSB7CgkJCQkJCQkJCQkJCQkJCQkJCWlmIChzdGF0dXMgPT0gZ29vZ2xlLm1hcHMuR2VvY29kZXJTdGF0dXMuT0spIHsKCQkJCQkJCQkJCXVwZGF0ZVNlYXJjaFBvc2l0aW9uKHJlc3VsdHNbMF0uZ2VvbWV0cnkubG9jYXRpb24sICRmb3JtKTsKCQkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJCWFsZXJ0KCJEaWUgU3VjaGUgd2FyIGF1cyBmb2xnZW5kZW0gR3J1bmQgbmljaHQgZXJmb2xncmVpY2g6IiArIHN0YXR1cyk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9KTsKCQkJCQkJfSBlbHNlIGlmICh3aW5kb3cuZ2RNYXBzID09PSAnb3NtJykgewoJCQkJCQkJdmFyIG9zbUNvdW50cnlDb2RlcyA9IGZhbHNlOwoJCQkJCQkJCQkJCQkJCWdlb2NvZGVQb3NpdGlvbk9TTShmYWxzZSwgc2VhcmNoX2FkZHJlc3MsIG9zbUNvdW50cnlDb2RlcywgZmFsc2UsCgkJCQkJCQkJZnVuY3Rpb24oZ2VvKSB7CgkJCQkJCQkJCQkJCQkJCQkJCWlmICh0eXBlb2YgZ2VvICE9PSAndW5kZWZpbmVkJyAmJiBnZW8ubGF0ICYmIGdlby5sb24pIHsKCQkJCQkJCQkJCXVwZGF0ZVNlYXJjaFBvc2l0aW9uKGdlbywgJGZvcm0pOwoJCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQkJYWxlcnQoIkRpZSBTdWNoZSB3YXIgZsO8ciBkaWUgYW5nZWZvcmRlcnRlIEFkcmVzc2UgbmljaHQgZXJmb2xncmVpY2guIik7CgkJCQkJCQkJCX0KCQkJCQkJCQl9KTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCWpRdWVyeSgkZm9ybSkudHJpZ2dlcigic3VibWl0Iik7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCgkJCWZ1bmN0aW9uIGdlb2RpcklzWmlwQ29kZShzdHJpbmcpIHsKCQkJCWlmICgvXlxkKyQvLnRlc3Qoc3RyaW5nKSkgewoJCQkJCWlmIChzdHJpbmcubGVuZ3RoID4gMyAmJiBzdHJpbmcubGVuZ3RoIDwgNykgewoJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQl9CgkJCQl9CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCWZ1bmN0aW9uIGluaXRpYWxpc2UyKCkgewoJCQkJaWYgKCF3aW5kb3cuZ2RNYXBzKSB7CgkJCQkJcmV0dXJuOwoJCQkJfQoKCQkJCWlmICh3aW5kb3cuZ2RNYXBzID09PSAnZ29vZ2xlJykgewoJCQkJCXZhciBsYXRsbmcgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKDU2LjQ5NDM0MywgLTQuMjA1NDQ2KTsKCQkJCQl2YXIgbXlPcHRpb25zID0gewoJCQkJCQl6b29tOiA0LAoJCQkJCQltYXBUeXBlSWQ6IGdvb2dsZS5tYXBzLk1hcFR5cGVJZC5URVJSQUlOLAoJCQkJCQlkaXNhYmxlRGVmYXVsdFVJOiB0cnVlCgkJCQkJfQoJCQkJfSBlbHNlIGlmICh3aW5kb3cuZ2RNYXBzID09PSAnb3NtJykgewoJCQkJCXZhciBsYXRsbmcgPSBuZXcgTC5MYXRMbmcoNTYuNDk0MzQzLCAtNC4yMDU0NDYpOwoJCQkJCXZhciBteU9wdGlvbnMgPSB7CgkJCQkJCXpvb206IDQsCgkJCQkJCW1hcFR5cGVJZDogJ1RFUlJBSU4nLAoJCQkJCQlkaXNhYmxlRGVmYXVsdFVJOiB0cnVlCgkJCQkJfQoJCQkJfQoJCQkJdHJ5IHsgcHJlcGFyZUdlb2xvY2F0aW9uKCk7IH0gY2F0Y2ggKGUpIHt9CgkJCQlkb0dlb2xvY2F0aW9uKCk7CgkJCX0KCgkJCWZ1bmN0aW9uIGRvR2VvbG9jYXRpb24oKSB7CgkJCQlpZiAobmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7CgkJCQkJbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvblN1Y2Nlc3MsIHBvc2l0aW9uRXJyb3IpOwoJCQkJfSBlbHNlIHsKCQkJCQlwb3NpdGlvbkVycm9yKC0xKTsKCQkJCX0KCQkJfQoKCQkJZnVuY3Rpb24gcG9zaXRpb25FcnJvcihlcnIpIHsKCQkJCXZhciBtc2c7CgkJCQlzd2l0Y2ggKGVyci5jb2RlKSB7CgkJCQkJY2FzZSBlcnIuVU5LTk9XTl9FUlJPUjoKCQkJCQkJbXNnID0gIkRlaW4gU3RhbmRvcnQga29ubnRlIG5pY2h0IGdlZnVuZGVuIHdlcmRlbi4iOwoJCQkJCQlicmVhazsKCQkJCQljYXNlIGVyci5QRVJNSVNTSU9OX0RFTklORUQ6CgkJCQkJCW1zZyA9ICJEdSBoYXN0IGRpZSBFcmxhdWJuaXMgZsO8ciBkaWUgU3RhbmRvcnRlcm1pdHRsdW5nIHZlcndlaWdlcnQuIjsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSBlcnIuUE9TSVRJT05fVU5BVkFJTEFCTEU6CgkJCQkJCW1zZyA9ICJEZWluIFN0YW5kb3J0IGlzdCBkZXJ6ZWl0IHVuYmVrYW5udCI7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgZXJyLkJSRUFLOgoJCQkJCQltc2cgPSAiRGVyIFZlcnN1Y2ggZGVuIFN0YW5kb3J0IHp1IGVybWl0dGVsbiwgaGF0IHp1IGxhbmdlIGdlZGF1ZXJ0LiI7CgkJCQkJCWJyZWFrOwoJCQkJCWRlZmF1bHQ6CgkJCQkJCW1zZyA9ICJEZXIgQnJvd3NlciB1bnRlcnN0w7x0enQga2VpbmUgU3RhbmRvcnRlcm1pdHRsdW5nLiI7CgkJCQl9CgkJCQlqUXVlcnkoJyNpbmZvJykuaHRtbChtc2cpOwoJCQl9CgoJCQlmdW5jdGlvbiBwb3NpdGlvblN1Y2Nlc3MocG9zaXRpb24pIHsKCQkJCXZhciBjb29yZHMgPSBwb3NpdGlvbi5jb29yZHMgfHwgcG9zaXRpb24uY29vcmRpbmF0ZSB8fCBwb3NpdGlvbjsKCQkJCWpRdWVyeSgnLnNnZW9fbGF0JykudmFsKGNvb3Jkcy5sYXRpdHVkZSk7CgkJCQlqUXVlcnkoJy5zZ2VvX2xvbicpLnZhbChjb29yZHMubG9uZ2l0dWRlKTsKCgkJCQlqUXVlcnkoJy5nZW9kaXItbGlzdGluZy1zZWFyY2gnKS50cmlnZ2VyKCJzdWJtaXQiKTsKCQkJfQoKCQkJLyoqCgkJCSAqIE9uIHVubG9hZCBwYWdlIGRvIHNvbWUgY2xlYW5pbmcgc28gYmFjayBidXR0b24gY2FjaGUgZG9lcyBub3Qgc3RvcmUgdGhlc2UgdmFsdWVzLgoJCQkgKi8KCQkJalF1ZXJ5KHdpbmRvdykub24oImJlZm9yZXVubG9hZCIsIGZ1bmN0aW9uKGUpIHsKCQkJCWlmKGpRdWVyeSgnLnNnZW9fbGF0JykubGVuZ3RoICl7CgkJCQkJalF1ZXJ5KCcuc2dlb19sYXQnKS52YWwoJycpOwoJCQkJCWpRdWVyeSgnLnNnZW9fbG9uJykudmFsKCcnKTsKCQkJCX0KCQkJfSk7CgkJ
3 ms
c2VhcmNoPSIrc2VhcmNoKyImcGVyX3BhZ2U9IitnZW9kaXJfc2VhcmNoX3BhcmFtcy5hdXRvY29tcGxldGVyX21heF9yZXN1bHRzOwoJCWlmIChnZW9kaXJfc2VhcmNoX3BhcmFtcy5hdXRvY29tcGxldGVyX2ZpbHRlcl9sb2NhdGlvbiAmJiBlbCAmJiBqUXVlcnkoZWwpLmNsb3Nlc3QoJ2Zvcm0uZ2VvZGlyLWxpc3Rpbmctc2VhcmNoJykubGVuZ3RoKSB7CgkJCSRmb3JtID0galF1ZXJ5KGVsKS5jbG9zZXN0KCdmb3JtLmdlb2Rpci1saXN0aW5nLXNlYXJjaCcpOwoJCQlsbmFtZSA9IGpRdWVyeSgnLmdlb2Rpci1sb2NhdGlvbi1zZWFyY2gtdHlwZScsICRmb3JtKS5wcm9wKCduYW1lJyk7CgkJCWx2YWwgPSBqUXVlcnkoJy5nZW9kaXItbG9jYXRpb24tc2VhcmNoLXR5cGUnLCAkZm9ybSkudmFsKCk7CgkJCWlmIChsdmFsICYmIChsbmFtZSA9PSAnY291bnRyeScgfHwgbG5hbWUgPT0gJ3JlZ2lvbicgfHwgbG5hbWUgPT0gJ2NpdHknIHx8IGxuYW1lID09ICduZWlnaGJvdXJob29kJykpIHsKCQkJCXJlcXVlc3RfdXJsICs9ICcmJyArIGxuYW1lICsgJz0nICsgbHZhbDsKCQkJfQoJCX0KCQlqUXVlcnkuYWpheCh7CgkJCXR5cGU6ICJHRVQiLAoJCQl1cmw6IHJlcXVlc3RfdXJsLAoJCQlkYXRhVHlwZTogJ2pzb24nLAoJCQlzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkgewoJCQkJZ2Rhc2FjX2xpc3RpbmdzID0gZGF0YTtnZGFzYWNfZG9pbmdfc2VhcmNoLS07CgkJCQlodG1sID0gJyc7CgkJCQlnZGFzYWNfbGlfdHlwZSA9ICdsaXN0aW5nJzsKCQkJCWpRdWVyeS5lYWNoKGdkYXNhY19saXN0aW5ncywgZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkgewoJCQkJCWh0bWwgPSBodG1sICsgZ2Rhc19hY19jcmVhdGVfbGkoJ2xpc3RpbmcnLCB2YWx1ZSk7CgkJCQl9KTsKCQkJCWpRdWVyeShnZGFzTGUpLnBhcmVudCgpLmZpbmQoInVsLmdkYXNhYy1saXN0aW5nIikuZW1wdHkoKS5hcHBlbmQoaHRtbCk7CgkJCQlpZihodG1sICYmIGdkYXNhY19zZWxlY3RlZCAmJiAhalF1ZXJ5KGVsKS5jbG9zZXN0KCdmb3JtLmdlb2Rpci1saXN0aW5nLXNlYXJjaCcpLmZpbmQoJy5nZGFzLXNlYXJjaC1zdWdnZXN0aW9ucycpLmlzKCc6dmlzaWJsZScpKXt0cnl7alF1ZXJ5KGdkYXNMZSkuZHJvcGRvd24oJ3Nob3cnKTt9Y2F0Y2goZXJyKXtjb25zb2xlLmxvZyhlcnIubWVzc2FnZSk7fX0JCQl9LAoJCQllcnJvcjogZnVuY3Rpb24gKHhociwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHtjb25zb2xlLmxvZyhlcnJvclRocm93bik7fQoJCX0pOwoJfWVsc2V7alF1ZXJ5KGdkYXNMZSkucGFyZW50KCkuZmluZCgidWwuZ2Rhc2FjLWxpc3RpbmciKS5lbXB0eSgpO30KfQovKiBTZXQgdGhlIG1heCBoZWlnaHQgZm9yIHRoZSBzdWdnZXN0aW9uIGRpdiBzbyB0byBuZXZlciBzY3JvbGwgcGFzdCB0aGUgYm90dG9tIG9mIHRoZSBwYWdlLiAqLwpmdW5jdGlvbiBnZGFzX2FjX3Jlc2l6ZV9zdWdnZXN0aW9ucygpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihqUXVlcnkoIi5nZC1zdWdnZXN0aW9ucy1kcm9wZG93bjp2aXNpYmxlIikubGVuZ3RoKXt2YXIgb2Zmc2V0PWpRdWVyeSgiLmdkLXN1Z2dlc3Rpb25zLWRyb3Bkb3duOnZpc2libGUiKS5vZmZzZXQoKS50b3A7dmFyIHdpbmRvd0hlaWdodD1qUXVlcnkod2luZG93KS5oZWlnaHQoKTt2YXIgbWF4SGVpZ2h0PXdpbmRvd0hlaWdodC0ob2Zmc2V0LWpRdWVyeSh3aW5kb3cpLnNjcm9sbFRvcCgpKTtpZihqUXVlcnkoIi5nZC1zdWdnZXN0aW9ucy1kcm9wZG93bjp2aXNpYmxlIikucHJldigpLmhhc0NsYXNzKCJnZF9zZWFyY2hfdGV4dCIpKXtqUXVlcnkoIi5nZC1zdWdnZXN0aW9ucy1kcm9wZG93bjp2aXNpYmxlIikuY3NzKCJtYXgtaGVpZ2h0Iix3aW5kb3dIZWlnaHQtNDApfWVsc2V7alF1ZXJ5KCIuZ2Qtc3VnZ2VzdGlvbnMtZHJvcGRvd246dmlzaWJsZSIpLmNzcygibWF4LWhlaWdodCIsbWF4SGVpZ2h0KX19fSw1MCl9CmZ1bmN0aW9uIGdkYXNfYWNfaW5pdF9zdWdnZXN0aW9ucygkaW5wdXQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnZGFzX2FjX3Jlc2l6ZV9zdWdnZXN0aW9ucygpfSwyNTApO2pRdWVyeSgkaW5wdXQpLm9uKCJrZXl1cCIsZnVuY3Rpb24oZSl7Z2Rhc2FjX2RvaW5nX3NlYXJjaD0zOy8qY2l0eSwgcmVnaW9uLCBjb3VudHJ5Ki9pZihnZGFzYWNfa2V5dXBfdGltZW91dCE9bnVsbCljbGVhclRpbWVvdXQoZ2Rhc2FjX2tleXVwX3RpbWVvdXQpO2dkYXNhY19rZXl1cF90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtnZGFzX2FjX21heWJlX2ZpcmVfc3VnZ2VzdGlvbnMoJGlucHV0KX0sNTAwKX0pfQpmdW5jdGlvbiBnZGFzX2FjX21heWJlX2ZpcmVfc3VnZ2VzdGlvbnMoZWwpe2dkYXNhY19rZXl1cF90aW1lb3V0PW51bGw7aWYoZ2Rhc2FjX3N1Z2dlc3Rpb25zX3dpdGghPSJ0ZXJtcyIpe2dkYXNfYWNfbGlzdGluZ3MoZWwpfWlmKGdkYXNhY19zdWdnZXN0aW9uc193aXRoIT0icG9zdHMiKXtnZGFzX2FjX2NhdGVnb3JpZXMoZWwpfX0KZnVuY3Rpb24gZ2Rhc19hY19jcmVhdGVfbGkoJHR5cGUsJGRhdGEpewoJdmFyIG91dHB1dCA9ICcnLCBoaXN0b3J5ID0gJycsICRkZWxldGUgPSAnJzsKCXZhciAkY29tbW9uX2NsYXNzID0gJ2xpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gYy1wb2ludGVyIHAtMCBtLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCAgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtbXV0ZWQnOwoJdmFyICRjb21tb25fY2xhc3NfaWNvbiA9ICcgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHAtMCBtLTAgIG1lLTInOwoJdmFyICRjb21tb25fY2xhc3NfdGl0bGUgPSAnZHJvcGRvd24taGVhZGVyIGg2IHAtMiBtLTAgYmctbGlnaHQnOwoJdmFyICRpY29uX3NpemUgPSAnaGVpZ2h0OjM4cHg7d2lkdGg6MzhweDsnOwoJaWYoZ2Rhc2FjX2xpX3R5cGUgIT0gJycpe2lmKCR0eXBlPT0nY2F0ZWdvcnknKXtvdXRwdXQgKz0gJzxsaSBjbGFzcz0iZ2Rhcy1zZWN0aW9uLXRpdGxlICcrJGNvbW1vbl9jbGFzc190aXRsZSsnIiBvbmNsaWNrPSJ2YXIgZXZlbnQgPSBhcmd1bWVudHNbMF0gfHwgd2luZG93LmV2ZW50OyBnZW9kaXJfY2FuY2VsQnViYmxlKGV2ZW50KTsiPkthdGVnb3JpZW48L2xpPic7fWVsc2UgaWYoJHR5cGU9PSdsaXN0aW5nJyl7b3V0cHV0ICs9ICc8bGkgY2xhc3M9ImdkYXMtc2VjdGlvbi10aXRsZSAnKyRjb21tb25fY2xhc3NfdGl0bGUrJyI+RWludHLDpGdlPC9saT4nO31lbHNle291dHB1dCArPSAnPGxpIGNsYXNzPSJnZGFzLXNlY3Rpb24tdGl0bGUgJyskY29tbW9uX2NsYXNzX3RpdGxlKyciPicrJHR5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyAkdHlwZS5zbGljZSgxKSsnPC9saT4nO319CglnZGFzYWNfbGlfdHlwZSA9ICcnOwoJaWYoJGRhdGEuaGlzdG9yeSl7CgkJaGlzdG9yeSA9ICc8aSBjbGFzcz0iZmFyIGZhLWNsb2NrIiB0aXRsZT0iU3VjaHZlcmxhdWYiPjwvaT4gJzsKCQkkZGVsZXRlID0gJzxpIG9uY2xpY2s9InZhciBldmVudCA9IGFyZ3VtZW50c1swXSB8fCB3aW5kb3cuZXZlbnQ7IGdlb2Rpcl9jYW5jZWxCdWJibGUoZXZlbnQpO2dkYXNfYWNfZGVsX2xvY2F0aW9uX2hpc3RvcnkoXCcnKyRkYXRhLnNsdWcrJ1wnKTtqUXVlcnkodGhpcykucGFyZW50KCkucmVtb3ZlKCk7IiBjbGFzcz0iZmFzIGZhLXRpbWVzICIgdGl0bGU9IkF1cyBkZW0gU3VjaHZlcmxhdWYgbMO2c2NoZW4iPjwvaT4gJzsKCX1lbHNlIGlmKCR0eXBlID09ICdjYXRlZ29yeScgJiYgJGRhdGEuZmFfaWNvbil7CgkJdmFyIGljb25fY29sb3IgPSAkZGF0YS5mYV9pY29uX2NvbG9yID8gJyNmZmYnIDogJyc7CgkJaGlzdG9yeSA9ICc8c3BhbiBjbGFzcz0iZ2Rhc2FjLWljb24gJyskY29tbW9uX2NsYXNzX2ljb24rJyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6JyskZGF0YS5mYV9pY29uX2NvbG9yKyc7Y29sb3I6JytpY29uX2NvbG9yKyc7JyskaWNvbl9zaXplKyciPjxpIGNsYXNzPSInKyRkYXRhLmZhX2ljb24rJyBmYS1mdyI+PC9pPjwvc3Bhbj4gJzsKCX1lbHNlIGlmKCR0eXBlID09ICdjYXRlZ29yeScpewoJCWhpc3RvcnkgPSAnPHNwYW4gY2xhc3M9ImdkYXNhYy1pY29uICcrJGNvbW1vbl9jbGFzc19pY29uKyciIHN0eWxlPSInKyRpY29uX3NpemUrJyI+PGkgY2xhc3M9ImZhcyBmYS1mb2xkZXItb3BlbiI+PC9pPjwvc3Bhbj4gJzsKCX1lbHNlIGlmKCR0eXBlID09ICdsaXN0aW5nJyAmJiAkZGF0YS5mZWF0dXJlZF9pbWFnZS50aHVtYm5haWwpewoJCWhpc3RvcnkgPSAnPHNwYW4gY2xhc3M9ImdkYXNhYy1pY29uICcrJGNvbW1vbl9jbGFzc19pY29uKyciIHN0eWxlPSInKyRpY29uX3NpemUrJyI+PGltZyBzcmM9IicrJGRhdGEuZmVhdHVyZWRfaW1hZ2UudGh1bWJuYWlsKyciIGNsYXNzPSJ3LTEwMCI+PC9zcGFuPiAnOwoJfWVsc2V7CgkJaGlzdG9yeSA9ICc8c3BhbiBjbGFzcz0iZ2Rhc2FjLWljb24gJyskY29tbW9uX2NsYXNzX2ljb24rJyIgc3R5bGU9IicrJGljb25fc2l6ZSsnIj48aSBjbGFzcz0iZmFzIGZhLW1hcC1tYXJrZXItYWx0Ij48L2k+PC9zcGFuPiAnOwoJfQoJaWYoJHR5cGU9PSdjYXRlZ29yeScpewoJCWlmKCRkYXRhLmFyZWEpeyRkYXRhLmNpdHkgPSAkZGF0YS5hcmVhO30KCQlvdXRwdXQgKz0gJzxsaSBjbGFzcz0iJyskY29tbW9uX2NsYXNzKyciIGRhdGEtdHlwZT0iJyskdHlwZSsnIiBvbmNsaWNrPSJnZGFzYWNfY2xpY2tfYWN0aW9uKFwnJyskdHlwZSsnXCcsXCcnKyRkYXRhLmxpbmsrJ1wnLCcrJGRhdGEuaWQrJyxcJycralF1ZXJ5LmVzY2FwZVNlbGVjdG9yKCRkYXRhLm5hbWUpKydcJyk7Ij4nK2hpc3RvcnkrJzxiPicrICRkYXRhLm5hbWUgKyAnPC9iPicrJGRlbGV0ZSsnPC9saT4nOwoJfWVsc2UgaWYoJHR5cGU9PSdsaXN0aW5nJyl7CgkJaWYoJGRhdGEuYXJlYSl7JGRhdGEucmVnaW9uID0gJGRhdGEuYXJlYTt9CgkJb3V0cHV0ICs9ICc8bGkgY2xhc3M9IicrJGNvbW1vbl9jbGFzcysnIiBkYXRhLXR5cGU9IicrJHR5cGUrJyIgb25jbGljaz0iZ2Rhc2FjX2NsaWNrX2FjdGlvbihcJycrJHR5cGUrJ1wnLFwnJyskZGF0YS5saW5rKydcJywnKyRkYXRhLmlkKycsXCcnK2pRdWVyeS5lc2NhcGVTZWxlY3RvcigkZGF0YS5uYW1lKSsnXCcpOyI+JytoaXN0b3J5Kyc8Yj4nKyAkZGF0YS50aXRsZS5yZW5kZXJlZCArICc8L2I+JyskZGVsZXRlKyc8L2xpPic7Cgl9CglyZXR1cm4gb3V0cHV0Owp9CmZ1bmN0aW9uIGdkYXNhY19jbGlja19hY3Rpb24oJHR5cGUsJHVybCwkaWQsICRuYW1lKXsKICAgIGlmKCR0eXBlPT0nY2F0ZWdvcnknKXsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICR1cmw7CiAgICAgICAgICAgIH1lbHNlIGlmKCR0eXBlPT0nbGlzdGluZycpewogICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICR1cmwKICAgIH0KfQo=
3 ms
javascript;base64,CiAgICAgICAgbWFwX2lkX2FyciA9IFtdOwogICAgICAgIGdkVW1hcmtlciA9ICcnOwogICAgICAgIG15X2xvY2F0aW9uID0gJyc7CiAgICAgICAgbGF0ID0gJyc7CiAgICAgICAgbG9uID0gJyc7CiAgICAgICAgZ2RVbWFya2VyID0gJyc7CiAgICAgICAgdXNlck1hcmtlckFjdGl2ZSA9IGZhbHNlOwogICAgICAgIGdkTG9jYXRpb25PcHRpb25zID0gewogICAgICAgICAgICBlbmFibGVIaWdoQWNjdXJhY3k6IHRydWUsCiAgICAgICAgICAgIHRpbWVvdXQ6IDUwMDAsCiAgICAgICAgICAgIG1heGltdW1BZ2U6IDAKICAgICAgICB9OwoKCiAgICAgICAgalF1ZXJ5KCJib2R5Iikub24oIm1hcF9zaG93IiwgZnVuY3Rpb24oZXZlbnQsIG1hcF9pZCkgewogICAgICAgICAgICBtYXBfaWRfYXJyLnB1c2gobWFwX2lkKTsKICAgICAgICAgICAgaWYgKGxhdCAmJiBsb24pIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24obWFwX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgZ2VvZGlyX3NlYXJjaF9zZXRVc2VyTWFya2VyKGxhdCwgbG9uLCBtYXBfaWQpOwogICAgICAgICAgICAgICAgfSwgMSwgbWFwX2lkKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAg
2 ms
c2VhcmNoPSIgKyAkc2VhcmNoLAoJCQlzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CgkJCQlnZGxtbHNfY2l0eSA9IGRhdGE7CgkJCQlnZGxtbHNfZG9pbmdfc2VhcmNoLS07CgkJCQlnZGxtX2xzX21heWJlX3N1Z2dlc3RfbW9yZSgpOwoJCQkJaHRtbCA9ICcnOwoJCQkJalF1ZXJ5LmVhY2goZ2RsbWxzX2NpdHksIGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgewoJCQkJCWh0bWwgPSBodG1sICsgZ2RsbV9sc19jcmVhdGVfbGkoJ2NpdHknLCB2YWx1ZSk7CgkJCQl9KTsKCQkJCWpRdWVyeShnZGxtbHNfc2VsZWN0ZWQpLnBhcmVudCgpLmZpbmQoInVsLmdkbG1scy1jaXR5IikuZW1wdHkoKS5hcHBlbmQoaHRtbCk7CgkJCQlpZiAoaHRtbCAmJiBnZGxtbHNfaXNfc2VhcmNoKXsKCQkJCQlnZW9kaXJMTVNob3dEcm9wZG93bihnZGxtbHNfc2VsZWN0ZWQpOwoJCQkJfQoJCQl9LAoJCQllcnJvcjogZnVuY3Rpb24oeGhyLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgewoJCQkJY29uc29sZS5sb2coZXJyb3JUaHJvd24pOwoJCQl9CgkJfSk7Cgl9IGVsc2UgewoJCWdkbG1sc19jaXR5ID0gW107CgkJZ2RsbWxzX2RvaW5nX3NlYXJjaC0tOwoJCWdkbG1fbHNfbWF5YmVfc3VnZ2VzdF9tb3JlKCk7CgkJalF1ZXJ5KGdkbG1sc19zZWxlY3RlZCkucGFyZW50KCkuZmluZCgidWwuZ2RsbWxzLWNpdHkiKS5lbXB0eSgpOwoJfQp9CgpmdW5jdGlvbiBnZGxtX2xzX3JlZ2lvbl9zdWdnZXN0aW9uKCkgewoJdmFyICRzZWFyY2ggPSBqUXVlcnkoZ2RsbWxzX3NlbGVjdGVkKS52YWwoKTsKCWlmICgkc2VhcmNoKSB7CgkJalF1ZXJ5LmFqYXgoewoJCQl0eXBlOiAiR0VUIiwKCQkJdXJsOiBnZW9kaXJfcGFyYW1zLmFwaV91cmwgKyAibG9jYXRpb25zL3JlZ2lvbnMvP3NlYXJjaD0iICsgJHNlYXJjaCwKCQkJc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgewoJCQkJZ2RsbWxzX3JlZ2lvbiA9IGRhdGE7CgkJCQlnZGxtbHNfZG9pbmdfc2VhcmNoLS07CgkJCQlnZGxtX2xzX21heWJlX3N1Z2dlc3RfbW9yZSgpOwoJCQkJaHRtbCA9ICcnOwoJCQkJalF1ZXJ5LmVhY2goZ2RsbWxzX3JlZ2lvbiwgZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7CgkJCQkJaHRtbCA9IGh0bWwgKyBnZGxtX2xzX2NyZWF0ZV9saSgncmVnaW9uJywgdmFsdWUpOwoJCQkJfSk7CgkJCQlqUXVlcnkoZ2RsbWxzX3NlbGVjdGVkKS5wYXJlbnQoKS5maW5kKCJ1bC5nZGxtbHMtcmVnaW9uIikuZW1wdHkoKS5hcHBlbmQoaHRtbCk7CgkJCQlpZiAoaHRtbCAmJiBnZGxtbHNfaXNfc2VhcmNoKXsKCQkJCQlnZW9kaXJMTVNob3dEcm9wZG93bihnZGxtbHNfc2VsZWN0ZWQpOwoJCQkJfQoJCQl9LAoJCQllcnJvcjogZnVuY3Rpb24oeGhyLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgewoJCQkJY29uc29sZS5sb2coZXJyb3JUaHJvd24pOwoJCQl9CgkJfSk7Cgl9IGVsc2UgewoJCWdkbG1sc19yZWdpb24gPSBbXTsKCQlnZGxtbHNfZG9pbmdfc2VhcmNoLS07CgkJZ2RsbV9sc19tYXliZV9zdWdnZXN0X21vcmUoKTsKCQlqUXVlcnkoZ2RsbWxzX3NlbGVjdGVkKS5wYXJlbnQoKS5maW5kKCJ1bC5nZGxtbHMtcmVnaW9uIikuZW1wdHkoKTsKCX0KfQoKZnVuY3Rpb24gZ2RsbV9sc19jb3VudHJ5X3N1Z2dlc3Rpb24oKSB7Cgl2YXIgJHNlYXJjaCA9IGpRdWVyeShnZGxtbHNfc2VsZWN0ZWQpLnZhbCgpOwoJaWYgKCRzZWFyY2gpIHsKCQlqUXVlcnkuYWpheCh7CgkJCXR5cGU6ICJHRVQiLAoJCQl1cmw6IGdlb2Rpcl9wYXJhbXMuYXBpX3VybCArICJsb2NhdGlvbnMvY291bnRyaWVzLz9zZWFyY2g9IiArICRzZWFyY2gsCgkJCXN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHsKCQkJCWdkbG1sc19jb3VudHJ5ID0gZGF0YTsKCQkJCWdkbG1sc19kb2luZ19zZWFyY2gtLTsKCQkJCWdkbG1fbHNfbWF5YmVfc3VnZ2VzdF9tb3JlKCk7CgkJCQlodG1sID0gJyc7CgkJCQlqUXVlcnkuZWFjaChnZGxtbHNfY291bnRyeSwgZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7CgkJCQkJaHRtbCA9IGh0bWwgKyBnZGxtX2xzX2NyZWF0ZV9saSgnY291bnRyeScsIHZhbHVlKTsKCQkJCX0pOwoKCQkJCWpRdWVyeShnZGxtbHNfc2VsZWN0ZWQpLnBhcmVudCgpLmZpbmQoInVsLmdkbG1scy1jb3VudHJ5IikuZW1wdHkoKS5hcHBlbmQoaHRtbCk7CgkJCQlpZiAoaHRtbCAmJiBnZGxtbHNfaXNfc2VhcmNoKXsKCQkJCQlnZW9kaXJMTVNob3dEcm9wZG93bihnZGxtbHNfc2VsZWN0ZWQpOwoJCQkJfQoJCQl9LAoJCQllcnJvcjogZnVuY3Rpb24oeGhyLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgewoJCQkJY29uc29sZS5sb2coZXJyb3JUaHJvd24pOwoJCQl9CgkJfSk7Cgl9IGVsc2UgewoJCWdkbG1sc19jb3VudHJ5ID0gW107CgkJZ2RsbWxzX2RvaW5nX3NlYXJjaC0tOwoJCWdkbG1fbHNfbWF5YmVfc3VnZ2VzdF9tb3JlKCk7CgkJalF1ZXJ5KGdkbG1sc19zZWxlY3RlZCkucGFyZW50KCkuZmluZCgidWwuZ2RsbWxzLWNvdW50cnkiKS5lbXB0eSgpOwoJfQp9CgpmdW5jdGlvbiBnZGxtX2xzX2N1cnJlbnRfbG9jYXRpb25fc3VnZ2VzdGlvbigpIHsKCWpRdWVyeShnZGxtbHNfc2VsZWN0ZWQpLnBhcmVudCgpLmZpbmQoInVsLmdkbG1scy1uZWFyIikuZW1wdHkoKTsKCgkvLyBOZWFyIG1lCglqUXVlcnkoZ2RsbWxzX3NlbGVjdGVkKS5wYXJlbnQoKS5maW5kKCJ1bC5nZGxtbHMtbmVhciIpLmVtcHR5KCkuYXBwZW5kKGdkbG1fbHNfY3JlYXRlX2xpKCduZWFyJywgewoJCXR5cGU6ICJuZWFyIiwKCQlzbHVnOiAibWUiLAoJCXRpdGxlOiBnZW9kaXJfcGFyYW1zLnR4dF9mb3JtX215X2xvY2F0aW9uCgl9KSk7CgoJaWYgKGpRdWVyeShnZGxtbHNfc2VsZWN0ZWQpLnZhbCgpID09ICcnKSB7CgkJdmFyICRzZWFyY2hfaGlzdG9yeSA9IEpTT04ucGFyc2UoZ2RsbV9sc19nZXRfbG9jYXRpb25faGlzdG9yeSgpKTsKCgkJaWYgKCRzZWFyY2hfaGlzdG9yeSkgewoJCQlqUXVlcnkuZWFjaCgkc2VhcmNoX2hpc3RvcnksIGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgewoJCQkJalF1ZXJ5KGdkbG1sc19zZWxlY3RlZCkucGFyZW50KCkuZmluZCgidWwuZ2RsbWxzLW5lYXIiKS5hcHBlbmQoZ2RsbV9sc19jcmVhdGVfbGkodmFsdWUudHlwZSwgdmFsdWUpKTsKCQkJfSk7CgkJfQoKCQlpZiAoICEgZ2VvZGlyX2xvY2F0aW9uX3BhcmFtcy5kaXNhYmxlX25lYXJlc3RfY2l0aWVzICkgewoJCQkvLyBBZGQgbmVhciBjaXRpZXMgZnJvbSBpcAoJCQlnZGxtX2xzX25lYXJlc3RfY2l0aWVzKCk7CgkJfQoJfQoJY29uc29sZS5sb2coSlNPTi5wYXJzZShnZGxtX2xzX2dldF9sb2NhdGlvbl9oaXN0b3J5KCkpKTsKfQoKZnVuY3Rpb24gZ2RsbV9sc19uZWFyZXN0X2NpdGllcygpIHsKCWlmKCFnZGxtbHNfZG9pbmdfbmVhcmVzdCl7CgkJZ2RsbWxzX2RvaW5nX25lYXJlc3QgPSB0cnVlOwoJCWpRdWVyeS5hamF4KHsKCQkJdHlwZTogIkdFVCIsCgkJCXVybDogZ2VvZGlyX3BhcmFtcy5hcGlfdXJsICsgImxvY2F0aW9ucy9jaXRpZXMvP29yZGVyYnk9aXAiLAoJCQlzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CgkJCQlpZiAoZGF0YSkgewoJCQkJCWpRdWVyeS5lYWNoKGRhdGEsIGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgewoJCQkJCQlqUXVlcnkoZ2RsbWxzX3NlbGVjdGVkKS5wYXJlbnQoKS5maW5kKCJ1bC5nZGxtbHMtbmVhciIpLmFwcGVuZChnZGxtX2xzX2NyZWF0ZV9saSgnY2l0eScsIHZhbHVlKSk7CgkJCQkJfSk7CgkJCQl9CgkJCQlnZGxtbHNfZG9pbmdfbmVhcmVzdCA9IGZhbHNlOwoJCQl9LAoJCQllcnJvcjogZnVuY3Rpb24oeGhyLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgewoJCQkJY29uc29sZS5sb2coZXJyb3JUaHJvd24pOwoJCQkJZ2RsbWxzX2RvaW5nX25lYXJlc3QgPSBmYWxzZTsKCQkJfQoJCX0pOwoJfQp9CgpmdW5jdGlvbiBnZGxtX2xzX2NyZWF0ZV9saSgkdHlwZSwkZGF0YSl7Cgl2YXIgb3V0cHV0OwoJdmFyIGhpc3RvcnkgPSAnJzsKCXZhciAkZGVsZXRlID0gJyc7Cgl2YXIgJGNvbW1vbl9jbGFzcyA9ICdsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uIGMtcG9pbnRlciBweC0xIHB5LTEgbS0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbic7CglpZigkZGF0YS5oaXN0b3J5KXsKCQloaXN0b3J5ID0gJzxpIGNsYXNzPSJmYXMgZmEtaGlzdG9yeSIgdGl0bGU9IlN1Y2h2ZXJsYXVmIj48L2k+ICc7CgkJJGRlbGV0ZSA9ICc8c3Bhbj48aSBvbmNsaWNrPSJ2YXIgZXZlbnQgPSBhcmd1bWVudHNbMF0gfHwgd2luZG93LmV2ZW50OyBnZW9kaXJfY2FuY2VsQnViYmxlKGV2ZW50KTtnZGxtX2xzX2RlbF9sb2NhdGlvbl9oaXN0b3J5KFwnJyskZGF0YS5zbHVnKydcJyk7alF1ZXJ5KHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpOyIgY2xhc3M9ImZhcyBmYS10aW1lcyIgdGl0bGU9IkF1cyBkZW0gU3VjaHZlcmxhdWYgbMO2c2NoZW4iPjwvaT48L3NwYW4+ICc7Cgl9ZWxzZSBpZigkdHlwZSA9PSAnbmVpZ2hib3VyaG9vZCcgfHwgJHR5cGUgPT0gJ2NpdHknIHx8ICR0eXBlID09ICdyZWdpb24nIHx8ICR0eXBlID09ICdjb3VudHJ5Jyl7CgkJaGlzdG9yeSA9ICc8aSBjbGFzcz0iZmFzIGZhLW1hcC1tYXJrZXItYWx0Ij48L2k+ICc7Cgl9Cgljb25zb2xlLmxvZygkZGF0YSk7CglpZigkdHlwZT09J25laWdoYm91cmhvb2QnKXsKCQlpZigkZGF0YS5hcmVhKXskZGF0YS5jaXR5ID0gJGRhdGEuYXJlYTt9CgkJb3V0cHV0ID0gJzxsaSBjbGFzcz0iJyskY29tbW9uX2NsYXNzKyciIGRhdGEtdHlwZT0iJyskdHlwZSsnIiBvbnRvdWNoc3RhcnQ9InRoaXMuY2xpY2soKTtyZXR1cm4gZmFsc2U7IiBvbmNsaWNrPSJnZGxtX2NsaWNrX2FjdGlvbihcJycrJHR5cGUrJ1wnLFwnJytnZGxtX2xzX3NsYXNoaXQoJGRhdGEudGl0bGUpKydcJyxcJycrZ2RsbV9sc19zbGFzaGl0KCRkYXRhLmNpdHkpKydcJyxcJycrJGRhdGEuY291bnRyeV9zbHVnKydcJyxcJycrJGRhdGEucmVnaW9uX3NsdWcrJ1wnLFwnJyskZGF0YS5jaXR5X3NsdWcrJ1wnLFwnJyskZGF0YS5zbHVnKydcJyk7Ij48c3Bhbj4nK2hpc3RvcnkrJ0luOiA8Yj4nKyAkZGF0YS50aXRsZSArICc8L2I+LCAnKyAkZGF0YS5jaXR5ICsgJyBOYWNoYmFyc2NoYWZ0PC9zcGFuPicrJGRlbGV0ZSsnPC9saT4nOwoJfWVsc2UgaWYoJHR5cGU9PSdjaXR5Jyl7CgkJaWYoJGRhdGEuYXJlYSl7JGRhdGEucmVnaW9uID0gJGRhdGEuYXJlYTt9CgkJb3V0cHV0ID0gJzxsaSBjbGFzcz0iJyskY29tbW9uX2NsYXNzKyciIGRhdGEtdHlwZT0iJyskdHlwZSsnIiBvbnRvdWNoc3RhcnQ9InRoaXMuY2xpY2soKTtyZXR1cm4gZmFsc2U7IiBvbmNsaWNrPSJnZGxtX2NsaWNrX2FjdGlvbihcJycrJHR5cGUrJ1wnLFwnJytnZGxtX2xzX3NsYXNoaXQoJGRhdGEudGl0bGUpKydcJyxcJycrZ2RsbV9sc19zbGFzaGl0KCRkYXRhLnJlZ2lvbikrJ1wnLFwnJyskZGF0YS5jb3VudHJ5X3NsdWcrJ1wnLFwnJyskZGF0YS5yZWdpb25fc2x1ZysnXCcsXCcnKyRkYXRhLnNsdWcrJ1wnKTsiPjxzcGFuPicraGlzdG9yeSsnSW46IDxiPicrICRkYXRhLnRpdGxlICsgJzwvYj4sICcrJGRhdGEucmVnaW9uKycgKE9ydCk8L3NwYW4+JyskZGVsZXRlKyc8L2xpPic7Cgl9ZWxzZSBpZigkdHlwZT09J3JlZ2lvbicpewoJCWlmKCRkYXRhLmFyZWEpeyRkYXRhLmNvdW50cnkgPSAkZGF0YS5hcmVhO30KCQlvdXRwdXQgPSAnPGxpIGNsYXNzPSInKyRjb21tb25fY2xhc3MrJyIgZGF0YS10eXBlPSInKyR0eXBlKyciIG9udG91Y2hzdGFydD0idGhpcy5jbGljaygpO3JldHVybiBmYWxzZTsiIG9uY2xpY2s9ImdkbG1fY2xpY2tfYWN0aW9uKFwnJyskdHlwZSsnXCcsXCcnK2dkbG1fbHNfc2xhc2hpdCgkZGF0YS50aXRsZSkrJ1wnLFwnJytnZGxtX2xzX3NsYXNoaXQoJGRhdGEuY291bnRyeSkrJ1wnLFwnJyskZGF0YS5jb3VudHJ5X3NsdWcrJ1wnLFwnJyskZGF0YS5zbHVnKydcJyk7Ij48c3Bhbj4nK2hpc3RvcnkrJ0luOiA8Yj4nKyAkZGF0YS50aXRsZSArICc8L2I+LCAnKyRkYXRhLmNvdW50cnlfdGl0bGUrJyAoUmVnaW9uKTwvc3Bhbj4nKyRkZWxldGUrJzwvbGk+JzsKCX1lbHNlIGlmKCR0eXBlPT0nY291bnRyeScpewoJCW91dHB1dCA9ICc8bGkgY2xhc3M9IicrJGNvbW1vbl9jbGFzcysnIiBkYXRhLXR5cGU9IicrJHR5cGUrJyIgb250b3VjaHN0YXJ0PSJ0aGlzLmNsaWNrKCk7cmV0dXJuIGZhbHNlOyIgb25jbGljaz0iZ2RsbV9jbGlja19hY3Rpb24oXCcnKyR0eXBlKydcJyxcJycrZ2RsbV9sc19zbGFzaGl0KCRkYXRhLnRpdGxlKSsnXCcsXCdcJyxcJycrJGRhdGEuc2x1ZysnXCcpOyI+PHNwYW4+JytoaXN0b3J5KydJbjogPGI+JysgJGRhdGEudGl0bGUgKyAnPC9iPiBMYW5kPC9zcGFuPicrJGRlbGV0ZSsnPC9saT4nOwoJfWVsc2UgaWYoJHR5cGU9PSduZWFyJyl7CgkJb3V0cHV0ID0gJzxsaSBkYXRhLXR5cGU9IicrJHR5cGUrJyIgY2xhc3M9ImdkLW5lYXItbWUgdGV4dC1wcmltYXJ5ICcrJGNvbW1vbl9jbGFzcysnIiBvbnRvdWNoc3RhcnQ9InRoaXMuY2xpY2soKTtyZXR1cm4gZmFsc2U7IiBvbmNsaWNrPSJnZGxtX2NsaWNrX2FjdGlvbihcJycrJHR5cGUrJ1wnLFwnJytnZGxtX2xzX3NsYXNoaXQoJGRhdGEudGl0bGUpKydcJyxcJ1wnLFwnJyskZGF0YS5zbHVnKydcJyk7Ij48c3Bhbj48aSBjbGFzcz0iZmFzIGZhLWxvY2F0aW9uLWFycm93Ij48L2k+IEluIGRlciBOw6RoZTogJysgJGRhdGEudGl0bGUgKyAnPC9zcGFuPjwvbGk+JzsKCX1lbHNlIGlmKCR0eXBlPT0nbmVhci1zZWFyY2gnKXsKCQlvdXRwdXQgPSAnPGxpIGNsYXNzPSInKyRjb21tb25fY2xhc3MrJyIgZGF0YS10eXBlPSInKyR0eXBlKyciIG9udG91Y2hzdGFydD0idGhpcy5jbGljaygpO3JldHVybiBmYWxzZTsiIG9uY2xpY2s9ImdkbG1fY2xpY2tfYWN0aW9uKFwnJyskdHlwZSsnXCcsXCcnK2dkbG1fbHNfc2xhc2hpdCgkZGF0YS5kZXNjcmlwdGlvbikrJ1wnKTsiPjxzcGFuPjxpIGNsYXNzPSJmYXMgZmEtc2VhcmNoIj48L2k+IEluIGRlciBOw6RoZTogJysgJGRhdGEuZGVzY3JpcHRpb24gKyAnPC9zcGFuPjwvbGk+JzsKCX0KCglyZXR1cm4gb3V0cHV0Owp9CgpmdW5jdGlvbiBnZGxtX2NsaWNrX2FjdGlvbigkdHlwZSwkdGl0bGUsJGFyZWEsJGNvdW50cnlfc2x1ZywkcmVnaW9uX3NsdWcsJGNpdHlfc2x1ZywkaG9vZF9zbHVnKXsKCWlmKGdkbG1sc19pc19zZWFyY2gpewoJCWlmKCR0eXBlPT0nbmVpZ2hib3VyaG9vZCcgfHwgJHR5cGU9PSdjaXR5JyB8fCAkdHlwZT09J3JlZ2lvbicgfHwgJHR5cGU9PSdjb3VudHJ5Jyl7CgkJCSRzbHVnID0gJyc7CgkJCWlmKCR0eXBlPT0nbmVpZ2hib3VyaG9vZCcpeyRzbHVnID0gJGhvb2Rfc2x1Zzt9CgkJCWVsc2UgaWYoJHR5cGU9PSdjaXR5Jyl7JHNsdWcgPSAkY2l0eV9zbHVnO30KCQkJZWxzZSBpZigkdHlwZT09J3JlZ2lvbicpeyRzbHVnID0gJHJlZ2lvbl9zbHVnO30KCQkJZWxzZSBpZigkdHlwZT09J2NvdW50cnknKXskc2x1ZyA9ICRjb3VudHJ5X3NsdWc7fQoJCQlnZGxtX3NlYXJjaF9maWxsX2xvY2F0aW9uKCR0eXBlLCRzbHVnLCR0aXRsZSk7CgkJfWVsc2UgaWYoJHR5cGU9PSduZWFyLXNlYXJjaCcpewoJCQlnZGxtX3NlYXJjaF9maWxsX2xvY2F0aW9uKCR0eXBlLCcnLCR0aXRsZSk7CgkJfWVsc2UgaWYoJHR5cGU9PSduZWFyJyl7CgkJCWdkX2dldF91c2VyX3Bvc2l0aW9uKGdkbG1fc2VhcmNoX25lYXJfbWUpOwoJCX0KCX1lbHNlewoJCWlmKCR0eXBlPT0nbmVpZ2hib3VyaG9vZCcgfHwgJHR5cGU9PSdjaXR5JyB8fCAkdHlwZT09J3JlZ2lvbicgfHwgJHR5cGU9PSdjb3VudHJ5Jyl7CgkJCWdkbG1fZ29fbG9jYXRpb24oJHR5cGUsJHRpdGxlLCRhcmVhLCRjb3VudHJ5X3NsdWcsJHJlZ2lvbl9zbHVnLCRjaXR5X3NsdWcsJGhvb2Rfc2x1Zyk7CgkJfWVsc2UgaWYoJHR5cGU9PSduZWFyLXNlYXJjaCcpewoJCQlnZGxtX2dvX3NlYXJjaCgkdGl0bGUpOwoJCX1lbHNlIGlmKCR0eXBlPT0nbmVhcicpewoJCQlnZF9nZXRfdXNlcl9wb3NpdGlvbihnZGxtX2xzX25lYXJfbWUpOwoJCX0KCX0KCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJX3VhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwoJCWlzQ2hyb21lID0gL2Nocm9tZS8udGVzdChfdWEpOwoJCWlzV2luMTAgPSAvd2luZG93cyBudCAxMC4wLy50ZXN0KF91YSk7CgkJaWYgKGlzQ2hyb21lICYmIGlzV2luMTApIHsKCQkJalF1ZXJ5KCIuZ2RsbS1sb2NhdGlvbi1zdWdnZXN0aW9ucyIpLmhpZGUoKTsKCQl9Cgl9LDIwMCk7Cn0KCmZ1bmN0aW9uIGdkbG1fbHNfbmVhcl9tZSgkbGF0LCRsb24pewoJd2luZG93LmxvY2F0aW9uID0gZ2VvZGlyX3BhcmFtcy5sb2NhdGlvbl9iYXNlX3VybCsibmVhci9tZS8iKyRsYXQrIiwiKyRsb24rIi8iOwp9CgpmdW5jdGlvbiBnZGxtX2xzX25lYXJfZ3BzKCRsYXQsJGxvbil7Cgl3aW5kb3cubG9jYXRpb24gPSBnZW9kaXJfcGFyYW1zLmxvY2F0aW9uX2Jhc2VfdXJsKyJuZWFyL2dwcy8iKyRsYXQrIiwiKyRsb24rIi8iOwp9CgpmdW5jdGlvbiBnZGxtX3NlYXJjaF9uZWFyX21lKCRsYXQsJGxvbil7CglnZGxtX3NlYXJjaF9maWxsX2xvY2F0aW9uKCduZWFyJywnbWUnLCJJbiBkZXIgTsOkaGU6ICIrZ2VvZGlyX3BhcmFtcy50eHRfZm9ybV9teV9sb2NhdGlvbiwkbGF0LCRsb24pCn0KCmZ1bmN0aW9uIGdkbG1fc2VhcmNoX2ZpbGxfbG9jYXRpb24oJHR5cGUsJHNsdWcsJHRpdGxlLCRsYXQsJGxvbil7CglpZigkdHlwZT09J25lYXInKXsKCgl9ZWxzZSBpZigkdHlwZT09J25lYXItc2VhcmNoJyl7CgkJJHR5cGU9Jyc7Cgl9ZWxzZXsKCQl2YXIgdHh0VHlwZTsKCQlpZiAoJHR5cGUgPT0gJ2NvdW50cnknKSB7CgkJCXR4dFR5cGUgPSAnTGFuZCc7CgkJfSBlbHNlIGlmICgkdHlwZSA9PSAncmVnaW9uJykgewoJCQl0eHRUeXBlID0gJyhSZWdpb24pJzsKCQl9IGVsc2UgaWYgKCR0eXBlID09ICdjaXR5JykgewoJCQl0eHRUeXBlID0gJyhPcnQpJzsKCQl9IGVsc2UgaWYgKCR0eXBlID09ICduZWlnaGJvdXJob29kJykgewoJCQl0eHRUeXBlID0gJ05hY2hiYXJzY2hhZnQnOwoJCX0gZWxzZSB7CgkJCXR4dFR5cGUgPSAiKCIrJHR5cGUrIikiOwoJCX0KCQkkdGl0bGUgPSAiSW46ICIrJHRpdGxlKyIgIit0eHRUeXBlOwoJfQoKCWpRdWVyeSgnLmdlb2Rpci1sb2NhdGlvbi1zZWFyY2gtdHlwZScpLnZhbCgkc2x1ZykuYXR0cignbmFtZScsICR0eXBlKTsKCWpRdWVyeSgnLnNnZW9fbGF0JykudmFsKCRsYXQpOwoJalF1ZXJ5KCcuc2dlb19sb24nKS52YWwoJGxvbik7CglqUXVlcnkoJy5zbmVhcicpLnZhbCgkdGl0bGUpLnRyaWdnZXIoJ2NoYW5nZScpOyAvLyBmaXJlIGNoYW5nZSBldmVudCBzbyB3ZSBjYW4gY2hlY2sgaWYgd2UgbmVlZCB0byBhZGQgaW4tbG9jYXRpb24gY2xhc3MKfQoKZnVuY3Rpb24gZ2RsbV9nb19zZWFyY2goJHRleHQpewoJaWYgKHdpbmRvdy5nZE1hcHMgPT09ICdnb29nbGUnKSB7CgkJdmFyIGdlb2NvZGVyID0gbmV3IGdvb2dsZS5tYXBzLkdlb2NvZGVyKCk7CgkJZ2VvY29kZXIuZ2VvY29kZSh7J2FkZHJlc3MnOiAkdGV4dH0sCgkJCWZ1bmN0aW9uIChyZXN1bHRzLCBzdGF0dXMpIHsKCQkJCWlmIChzdGF0dXMgPT0gJ09LJykgewovLwkJCQkJCQljb25zb2xlLmxvZyhyZXN1bHRzKTsKCQkJCQkkbGF0ID0gcmVzdWx0c1swXS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKTsKCQkJCQkkbG9uID0gcmVzdWx0c1swXS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKTsKCQkJCQlnZGxtX2xzX25lYXJfZ3BzKCRsYXQsJGxvbik7CgkJCQl9IGVsc2UgewoJCQkJCWFsZXJ0KCJEaWUgU3VjaGUgd2FyIGF1cyBmb2xnZW5kZW0gR3J1bmQgbmljaHQgZXJmb2xncmVpY2g6IiArIHN0YXR1cyk7CgkJCQl9CgkJCX0pOwoJfSBlbHNlIGlmICh3aW5kb3cuZ2RNYXBzID09PSAnb3NtJykgewoJCWdlb2NvZGVQb3NpdGlvbk9TTShmYWxzZSwgJHRleHQsIGZhbHNlLCBmYWxzZSwKCQkJZnVuY3Rpb24oZ2VvKSB7CgkJCQlpZiAodHlwZW9mIGdlbyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2VvLmxhdCAmJiBnZW8ubG9uKSB7CgkJCQkJY29uc29sZS5sb2cocmVzdWx0cyk7CgkJCQl9IGVsc2UgewoJCQkJCWFsZXJ0KCJEaWUgU3VjaGUgd2FyIGbDvHIgZGllIGFuZ2Vmb3JkZXJ0ZSBBZHJlc3NlIG5pY2h0IGVyZm9sZ3JlaWNoLiIpOwoJCQkJfQoJCQl9KTsKCX0KfQoKZnVuY3Rpb24gZ2RsbV9sc19zZWFyY2hfbG9jYXRpb24oJHR5cGUsJHRlcm0pewoJalF1ZXJ5LmFqYXgoewoJCXR5cGU6ICJHRVQiLAoJCXVybDogZ2VvZGlyX3BhcmFtcy5hcGlfdXJsKyR0eXBlKyIvP3NlYXJjaD0iKyR0ZXJtLAoJCXN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHsKCQkJY29uc29sZS5sb2coZGF0YSk7CgkJCXJldHVybiBkYXRhOwoJCQkvL2pRdWVyeSgnIycgKyBtYXBfY2FudmFzX3ZhciArICdfbG9hZGluZ19kaXYnKS5oaWRlKCk7CgkJCS8vcGFyc2VfbWFya2VyX2phc29uKGRhdGEsIG1hcF9jYW52YXNfdmFyKTsKCQl9LAoJCWVycm9yOiBmdW5jdGlvbih4aHIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7CgkJCWNvbnNvbGUubG9nKGVycm9yVGhyb3duKTsKCQl9Cgl9KTsKfQoKZnVuY3Rpb24gZ2RsbV9nb19sb2NhdGlvbigkdHlwZSwkdGl0bGUsJGFyZWEsJGNvdW50cnlfc2x1ZywkcmVnaW9uX3NsdWcsJGNpdHlfc2x1ZywkaG9vZF9zbHVnKXsKCS8vIHNhdmUgc2VhcmNoIGhpc3RvcnkgYmVmb3JlIHJlZGlyZWN0CglnZGxtX2xzX3NldF9sb2NhdGlvbl9oaXN0b3J5KCR0eXBlLCR0aXRsZSwkYXJlYSwkY291bnRyeV9zbHVnLCRyZWdpb25fc2x1ZywkY2l0eV9zbHVnLCRob29kX3NsdWcpOwoJd2luZG93LmxvY2F0aW9uID0gZ2RsbV9sc19sb2NhdGlvbl91cmwoJGNvdW50cnlfc2x1ZywkcmVnaW9uX3NsdWcsJGNpdHlfc2x1ZywkaG9vZF9zbHVnKTsKCS8vY29uc29sZS5sb2coIGdkbG1fbHNfbG9jYXRpb25fdXJsKCRjb3VudHJ5X3NsdWcsJHJlZ2lvbl9zbHVnLCRjaXR5X3NsdWcsJGhvb2Rfc2x1ZykpOwp9CgpmdW5jdGlvbiBnZGxtX2xzX2xvY2F0aW9uX3VybCgkY291bnRyeV9zbHVnLCRyZWdpb25fc2x1ZywkY2l0eV9zbHVnLCRob29kX3NsdWcpewoJLy8kdXJsID0gZ2VvZGlyX3BhcmFtcy5sb2NhdGlvbl91cmwuc2xpY2UoMCwgLTEpOyAvLyBnZXQgbG9jYXRpb24gdXJsIHdpdGhvdXQgdGhlIGVuZGluZyBzbGFzaAoJJHVybCA9IGdlb2Rpcl9wYXJhbXMubG9jYXRpb25fYmFzZV91cmw7IC8vIGdldCBsb2NhdGlvbiB1cmwgd2l0aG91dCB0aGUgZW5kaW5nIHNsYXNoCgl2YXIgc2hvd19jb3VudHJ5ID0gMTsKCXZhciBzaG93X3JlZ2lvbiA9IDE7Cgl2YXIgc2hvd19jaXR5ID0gMTsKCXZhciBzaG93X2hvb2QgPSAwOwoKCWlmKHNob3dfY291bnRyeSAmJiAkY291bnRyeV9zbHVnKXsKCQkkdXJsICs9ICIiKyRjb3VudHJ5X3NsdWcrIi8iOwoJfQoKCWlmKHNob3dfcmVnaW9uICYmICRyZWdpb25fc2x1Zyl7CgkJJHVybCArPSAiIiskcmVnaW9uX3NsdWcrIi8iOwoJfQoKCWlmKHNob3dfY2l0eSAmJiAkY2l0eV9zbHVnKXsKCQkkdXJsICs9ICIiKyRjaXR5X3NsdWcrIi8iOwoJfQoKCWlmKHNob3dfaG9vZCAmJiAkaG9vZF9zbHVnKXsKCQkkdXJsICs9ICIiKyRob29kX3NsdWcrIi8iOwoJfQoKCXJldHVybiAkdXJsOwp9CgpmdW5jdGlvbiBnZGxtX2xzX2dldF9sb2NhdGlvbl9oaXN0b3J5KCl7CglpZiAoZ2VvZGlyX2lzX2xvY2Fsc3RvcmFnZSgpID09PSB0cnVlKSB7CgkJcmV0dXJuIGdkbG1fbHNfaGlzdG9yeSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJnZGxtX2xzX2hpc3RvcnkiKTsKCX1lbHNlewoJCXJldHVybiAnJzsKCX0KfQoKZnVuY3Rpb24gZ2RsbV9sc19kZWxfbG9jYXRpb25faGlzdG9yeSgkc2x1Zyl7CglnZGxtbHNfZG9fbm90X2Nsb3NlID0gdHJ1ZTsKCWlmIChnZW9kaXJfaXNfbG9jYWxzdG9yYWdlKCkgPT09IHRydWUpIHsKCQlnZGxtX2xzX2hpc3RvcnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJnZGxtX2xzX2hpc3RvcnkiKSk7CgoJCXZhciBmb3VuZCAgPSAnJzsKCQljb25zb2xlLmxvZyhnZGxtX2xzX2hpc3RvcnkpOwoKCQlqUXVlcnkuZWFjaChnZGxtX2xzX2hpc3RvcnksIGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgewoJCQlpZigkc2x1ZyAmJiAkc2x1Zz09dmFsdWUuc2x1Zyl7CgkJCQkvLyBpdHMgYWxyZWFkeSBpbiB0aGUgbGlzdCBzbyBiYWlsLgoJCQkJLy9nZGxtX2xzX2hpc3Rvcnkuc3BsaWNlKGluZGV4LCAxKTsKCQkJCWZvdW5kID0gaW5kZXg7CgkJCX0KCQl9KTsKCgkJaWYoZm91bmQhPT0nJyl7CgkJCWdkbG1fbHNfaGlzdG9yeS5zcGxpY2UoZm91bmQsIDEpOwoJCQkvLyBzdG9yZSB0aGUgdXNlciBzZWxlY3Rpb24KCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0oImdkbG1fbHNfaGlzdG9yeSIsIEpTT04uc3RyaW5naWZ5KGdkbG1fbHNfaGlzdG9yeSkpOwoJCX0KCX0KCglzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Z2RsbWxzX2RvX25vdF9jbG9zZSA9IGZhbHNlO30sIDIwMCk7Cn0KCmZ1bmN0aW9uIGdkbG1fbHNfc2V0X2xvY2F0aW9uX2hpc3RvcnkoJHR5cGUsJHRpdGxlLCRhcmVhLCRjb3VudHJ5X3NsdWcsJHJlZ2lvbl9zbHVnLCRjaXR5X3NsdWcsJGhvb2Rfc2x1Zyl7CgkvLyBzZXQgYSBzZWFyY2hlZCBsb2NhdGlvbgoJaWYgKGdlb2Rpcl9pc19sb2NhbHN0b3JhZ2UoKSA9PT0gdHJ1ZSkgewoJCXZhciBnZGxtX2xzX2hpc3RvcnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZ2RsbV9sc19oaXN0b3J5Iik7CgkJdmFyICRleGlzdHMgPSBmYWxzZTsKCgkJaWYgKCFnZGxtX2xzX2hpc3RvcnkgfHwgZ2RsbV9sc19oaXN0b3J5ID09PSB1bmRlZmluZWQpIHsKCQkJZ2RsbV9sc19oaXN0b3J5ID0gW10KCQl9ZWxzZXsKCQkJZ2RsbV9sc19oaXN0b3J5ID0gSlNPTi5wYXJzZShnZGxtX2xzX2hpc3RvcnkpOwoJCQlqUXVlcnkuZWFjaChnZGxtX2xzX2hpc3RvcnksIGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgewoJCQkJY29uc29sZS5sb2codmFsdWUpOwoJCQkJaWYodmFsdWUudHlwZSA9PSAkdHlwZSAmJiB2YWx1ZS50aXRsZT09JHRpdGxlKXsKCQkJCQkvLyBpdHMgYWxyZWFkeSBpbiB0aGUgbGlzdCBzbyBiYWlsLgoJCQkJCSRleGlzdHMgPSB0cnVlOwoJCQkJfQoJCQl9KTsKCQl9CgoJCWlmKCEkZXhpc3RzKXsKCQkJJHNsdWcgPSAkY2l0eV9zbHVnOwoJCQlpZigkdHlwZT09J25laWdoYm91cmhvb2QnKXsKCQkJCSRzbHVnID0gJGhvb2Rfc2x1ZzsKCQkJfWlmKCR0eXBlPT0nY2l0eScpewoJCQkJJHNsdWcgPSAkY2l0eV9zbHVnOwoJCQl9ZWxzZSBpZigkdHlwZT09J3JlZ2lvbicpewoJCQkJJHNsdWcgPSAkcmVnaW9uX3NsdWc7CgkJCX1lbHNlIGlmKCR0eXBlPT0nY291bnRyeScpewoJCQkJJHNsdWcgPSAkY291bnRyeV9zbHVnOwoJCQl9CgoJCQl2YXIgJGxvY2F0aW9uID0gewoJCQkJaGlzdG9yeTp0cnVlLCAvLyBzZXQgaXQgYXMgaGlzdG9yaWNhbAoJCQkJdHlwZTokdHlwZSwKCQkJCXRpdGxlOiR0aXRsZSwKCQkJCWNvdW50cnlfc2x1ZzokY291bnRyeV9zbHVnLAoJCQkJcmVnaW9uX3NsdWc6JHJlZ2lvbl9zbHVnLAoJCQkJY2l0eV9zbHVnOiRjaXR5X3NsdWcsCgkJCQlob29kX3NsdWc6JGhvb2Rfc2x1ZywKCQkJCXNsdWc6JHNsdWcsCgkJCQlhcmVhOiRhcmVhCgkJCX07CgkJCWNvbnNvbGUubG9nKGdkbG1fbHNfaGlzdG9yeSk7CgkJCWNvbnNvbGUubG9nKCRsb2NhdGlvbik7CgkJCWdkbG1fbHNfaGlzdG9yeS51bnNoaWZ0KCRsb2NhdGlvbik7CgkJCS8vZ2RsbV9sc19oaXN0b3J5ID0gJGxvY2F0aW9uOwoKCQkJLy8gb25seSBrZWVwIGxhdGVzdCA1IHNlYXJjaGVzCgkJCWlmKGdkbG1fbHNfaGlzdG9yeS5sZW5ndGggPiA1KXsKCQkJCWdkbG1fbHNfaGlzdG9yeS5wb3AoKTsKCQkJfQoJCX0KCgkJLy8gc3RvcmUgdGhlIHVzZXIgc2VsZWN0aW9uCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0oImdkbG1fbHNfaGlzdG9yeSIsIEpTT04uc3RyaW5naWZ5KGdkbG1fbHNfaGlzdG9yeSkpOwoJfQp9CgpmdW5jdGlvbiBnZGxtX2xzX2dvb2dsZV9zdWdnZXN0aW9ucygkc2VhcmNoKXsKCS8vIENyZWF0ZSBhIG5ldyBzZXNzaW9uIHRva2VuLgoJaWYoIWdkbG1sc19nb29nbGVfc2Vzc2lvblRva2VuKXsKCQlnZGxtbHNfZ29vZ2xlX3Nlc3Npb25Ub2tlbiA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2Vzc2lvblRva2VuKCk7Cgl9CgoJLy8gZGlzcGxheSBmdW5jdGlvbgoJdmFyIGRpc3BsYXlTdWdnZXN0aW9ucyA9IGZ1bmN0aW9uKHByZWRpY3Rpb25zLCBzdGF0dXMpIHsKCQlpZiAoc3RhdHVzICE9IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LKSB7CgkJCXJldHVybjsKCQl9CgoJCWNvbnNvbGUubG9nKHByZWRpY3Rpb25zKTsKCQlodG1sID0gJyc7CgkJcHJlZGljdGlvbnMuZm9yRWFjaChmdW5jdGlvbihwcmVkaWN0aW9uKSB7CgkJCWh0bWwgPSBodG1sICsgZ2RsbV9sc19jcmVhdGVfbGkoJ25lYXItc2VhcmNoJywgcHJlZGljdGlvbik7CgkJfSk7CgkJalF1ZXJ5KGdkbG1sc19zZWxlY3RlZCkucGFyZW50KCkuZmluZCgidWwuZ2RsbWxzLW1vcmUiKS5lbXB0eSgpLmFwcGVuZChodG1sKTsKCQlpZiAoaHRtbCAmJiBnZGxtbHNfaXNfc2VhcmNoKXsKCQkJZ2VvZGlyTE1TaG93RHJvcGRvd24oZ2RsbWxzX3NlbGVjdGVkKTsKCQl9Cgl9OwoKCWlmKCFnZGxtbHNfZ29vZ2xlX3NlcnZpY2UpewoJCWdkbG1sc19nb29nbGVfc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpOwoJfQoJZ2RsbWxzX2dvb2dsZV9zZXJ2aWNlLmdldFBsYWNlUHJlZGljdGlvbnMoe2lucHV0OiAkc2VhcmNoLCBzZXNzaW9uVG9rZW46IGdkbG1sc19nb29nbGVfc2Vzc2lvblRva2VuLCB0eXBlczogWydnZW9jb2RlJ119LCBkaXNwbGF5U3VnZ2VzdGlvbnMpOwp9CgpmdW5jdGlvbiBnZGxtX2xzX3NsYXNoaXQoc3RyKSB7CglpZiAoc3RyKSB7CgkJc3RyID0gc3RyLnJlcGxhY2UoLycvZywgIlxcJyIpOwoJfQoJcmV0dXJuIHN0cjsKfQoKLyoqCiAqIE9wZW4gdGhlIGxvY2F0aW9uIHN3aXRjaGVyCiAqLwpmdW5jdGlvbiBnZW9kaXJfbG1fc2V0dXBfc3dpdGNoZXJfdHJpZ2dlcigpIHsKCXZhciBub19zaG93ID0gZmFsc2U7CgkvLyBDbGVhciB0aGUgbG9jYXRpb24gYW5kIHJlZGlyZWN0IHRvIHRoZSBiYXNlIGxvY2F0aW9uIHBhZ2UKCWpRdWVyeSgiLmdkbG1scy1tZW51LWljb24iKS5vbigiY2xpY2siLCBmdW5jdGlvbihldmVudCl7CgkJbm9fc2hvdyA9IHRydWU7CgkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKCQkJCXdpbmRvdy5sb2NhdGlvbiA9IGdlb2Rpcl9wYXJhbXMubG9jYXRpb25fYmFzZV91cmw7CgkJCX0pOwoKCS8vIGRldGVjdCB0aGUgbWVudSBpdGVtIGxvY2F0aW9uIHN3aXRjaGVyIGNsaWNrCglqUXVlcnkoJ2FbaHJlZiQ9IiNsb2NhdGlvbi1zd2l0Y2hlciJdJykub24oImNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpewoJCS8vIHByZXZlbnQgdGhlIGhhc2ggYmVpbmcgYWRkZWQgdG8gdGhlIHVybAoJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJLy8gb25seSBmaXJlIGlmIHRoZSBjbGljayBpcyBub3QgdGhlIGNsZWFyIGxvY2F0aW9uIGJ1dHRvbi4KCQlpZighbm9fc2hvdyl7CgkJCQkJCWpRdWVyeSgnI2dkbG0tc3dpdGNoZXInKS5tb2RhbCgnc2hvdycpLm9uKCdzaG93bi5icy5tb2RhbCcsIGZ1bmN0aW9uIChlKSB7CgkJCQlqUXVlcnkoJy5tb2RhbCAuZ2VvZGlyLWxvY2F0aW9uLXNlYXJjaCcpLnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcigiY2xpY2siKTsKCQkJCS8vIHNlY29uZCBvcGVuIG1pZ2h0IG5vdCB0cmlnZ2VyIGRyb3Bkb3duIHNvIHdlIGNoZWNrLgoJCQkJc2V0VGltZW91dChmdW5jdGlvbigpewoJCQkJCWlmKCBqUXVlcnkoJy5tb2RhbCAuZ2VvZGlyLWxvY2F0aW9uLXNlYXJjaCcpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnKT09J2ZhbHNlJyApewoJCQkJCQlqUXVlcnkoJy5tb2RhbCAuZ2VvZGlyLWxvY2F0aW9uLXNlYXJjaCcpLmRyb3Bkb3duKCdzaG93Jyk7CgkJCQkJfQoJCQkJfSwgMjAwKTsKCQkJfSk7CgkJCQkJfQoJfSk7Cn0KZnVuY3Rpb24gZ2VvZGlyTE1TaG93RHJvcGRvd24oZWwpIHsKCS8qIFdpbmRvd3MgMTEgRWRnZS9DaHJvbWUgZHJvcGRvd24gZml4ICovCgl2YXIgdUEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7CglpZiAobmF2aWdhdG9yLnBsYXRmb3JtLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignd2luJykgIT09IC0xICYmIHVBLmluZGV4T2YoIndpbmRvd3MgbnQgMTAiKSAhPT0gLTEgJiYgKHVBLm1hdGNoKC9jaHJvbWUvaSkgfHwgdUEubWF0Y2goL2VkZ2UvaSkpKSB7CgkJalF1ZXJ5KGVsKS5kcm9wZG93bignc2hvdycpOwoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKXsKCQkJalF1ZXJ5KCcuZ2Qtc2VhcmNoLWZpZWxkLW5lYXIgLmdkbG0tbG9jYXRpb24tc3VnZ2VzdGlvbnMnKS5jc3MoJ2Rpc3BsYXknLCIiKS5zaG93KCk7CgkJfSwgMzApOwoJfSBlbHNlIGlmIChqUXVlcnkoZWwpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnKT09J2ZhbHNlJyl7CgkJalF1ZXJ5KGVsKS5kcm9wZG93bignc2hvdycpOwoJfQp9CmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7Z2VvZGlyX2xtX3NldHVwX3N3aXRjaGVyX3RyaWdnZXIoKX0pOwo=
7 ms
javascript;base64,CgkJCWlmICghd2luZG93LmdkQ2F0ZWdvcmllc0pzKSB7CgkJCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oZXZlbnQpIHsKCQkJCQlqUXVlcnkoJy5nZW9kaXItY2F0LWxpc3QtdGF4Jykub24oImNoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKCQkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJCQl2YXIgJHdpZGdldEJveCA9IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCcuZ2VvZGlyLWNhdGVnb3JpZXMtY29udGFpbmVyJyk7CgkJCQkJCXZhciAkY29udGFpbmVyID0galF1ZXJ5KCcuZ2QtY3B0Y2F0LXJvd3MnLCAkd2lkZ2V0Qm94KTsKCQkJCQkJJGNvbnRhaW5lci5hZGRDbGFzcygnZ2QtbG9hZGluZycpOwoJCQkJCQkkY29udGFpbmVyLmh0bWwoJzxpIGNsYXNzPSJmYXMgZmEtY29nIGZhLXNwaW4iIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jyk7CgkJCQkJCXZhciBkYXRhID0gewoJCQkJCQkJJ2FjdGlvbic6ICdnZW9kaXJfY3B0X2NhdGVnb3JpZXMnLAoJCQkJCQkJJ3NlY3VyaXR5JzogZ2VvZGlyX3BhcmFtcy5iYXNpY19ub25jZSwKCQkJCQkJCSdhamF4X2NwdCc6IGpRdWVyeSh0aGlzKS52YWwoKQoJCQkJCQl9OwoJCQkJCQlqUXVlcnkoJy5nZC13Z3QtcGFyYW1zJywgJHdpZGdldEJveCkuZmluZCgnaW5wdXQnKS5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJCQkJaWYgKGpRdWVyeSh0aGlzKS5hdHRyKCduYW1lJykpIHsKCQkJCQkJCQlkYXRhW2pRdWVyeSh0aGlzKS5hdHRyKCduYW1lJyldID0galF1ZXJ5KHRoaXMpLnZhbCgpOwoJCQkJCQkJfQoJCQkJCQl9KTsKCQkJCQkJalF1ZXJ5LnBvc3QoZ2VvZGlyX3BhcmFtcy5hamF4X3VybCwgZGF0YSwgZnVuY3Rpb24ocmVzcG9uc2UpIHsKCQkJCQkJCSRjb250YWluZXIuaHRtbChyZXNwb25zZSk7CgkJCQkJCQkkY29udGFpbmVyLnJlbW92ZUNsYXNzKCdnZC1sb2FkaW5nJyk7CgkJCQkJCX0pOwoJCQkJCX0pCgkJCQl9KTsKCQkJCXdpbmRvdy5nZENhdGVnb3JpZXNKcyA9IHRydWU7CgkJCX0KCQk=
6 ms
wpo-minify-footer-698a0d87.min.css
582 ms
wpo-minify-footer-kadence-simplelightbox1.2.4.min.js
747 ms
wpo-minify-footer-kadence-lightbox-init1.2.4.min.js
747 ms
javascript;base64,CnZhciBrYWRlbmNlQ29uZmlnID0geyJzY3JlZW5SZWFkZXIiOnsiZXhwYW5kIjoiVW50ZXJtZW5cdTAwZmMiLCJleHBhbmRPZiI6IlVudGVybWVuXHUwMGZjIHZvbiIsImNvbGxhcHNlIjoiVW50ZXJtZW5cdTAwZmMiLCJjb2xsYXBzZU9mIjoiVW50ZXJtZW5cdTAwZmMgdm9uIn0sImJyZWFrUG9pbnRzIjp7ImRlc2t0b3AiOiIxMDI0IiwidGFibGV0Ijo3Njh9LCJzY3JvbGxPZmZzZXQiOiIwIn07Cg==
5 ms
wpo-minify-footer-kadence-navigation1.2.4.min.js
749 ms
wpo-minify-footer-kad-splide2.3.8.min.js
750 ms
wpo-minify-footer-kadence-blocks-splide-init3.2.38.min.js
748 ms
wpo-minify-footer-flatpickr0.2.14.min.js
817 ms
dmVyPTIuMy41MiJ9XX19fTsK
3 ms
wpo-minify-footer-geodir-map2.3.52.min.js
754 ms
javascript;base64,CgkJCWlmICghd2luZG93LmdkV2lkZ2V0TWFwKSB7CgkJCQl3aW5kb3cuZ2RXaWRnZXRNYXAgPSB0cnVlOwoJCQkJalF1ZXJ5KGZ1bmN0aW9uICgpIHsKCQkJCQlnZW9EaXJNYXBTbGlkZSgpOwoJCQkJfSk7CgkJCQlqUXVlcnkod2luZG93KS5vbigicmVzaXplIixmdW5jdGlvbiAoKSB7CgkJCQkJalF1ZXJ5KCcuZ2VvZGlyX21hcF9jb250YWluZXIgLmdlb2Rpci1wb3N0LXR5cGUtZmlsdGVyLXdyYXAnKS5lYWNoKGZ1bmN0aW9uICgpIHsKCQkJCQkJalF1ZXJ5KHRoaXMpLmZpbmQoJy5nZW9kaXItbWFwLXBvc3R0eXBlLWxpc3QnKS5jc3MoewoJCQkJCQkJJ3dpZHRoJzogJ2F1dG8nCgkJCQkJCX0pOwoJCQkJCQlqUXVlcnkodGhpcykuZmluZCgndWwucGxhY2UtbGlzdCcpLmNzcyh7CgkJCQkJCQknbWFyZ2luLWxlZnQnOiAnMHB4JwoJCQkJCQl9KTsKCQkJCQkJZ2VvRGlyTWFwUHJlcGFyZSh0aGlzKTsKCQkJCQl9KTsKCQkJCX0pOwoJCQkJZnVuY3Rpb24gZ2VvRGlyTWFwUHJlcGFyZSgkdGhpc01hcCkgewoJCQkJCXZhciAkb2JqTXBMaXN0ID0galF1ZXJ5KCR0aGlzTWFwKS5maW5kKCcuZ2VvZGlyLW1hcC1wb3N0dHlwZS1saXN0Jyk7CgkJCQkJdmFyICRvYmpQbExpc3QgPSBqUXVlcnkoJHRoaXNNYXApLmZpbmQoJ3VsLnBsYWNlLWxpc3QnKTsKCQkJCQl2YXIgd0FyckwgPSBwYXJzZUZsb2F0KGpRdWVyeSgkdGhpc01hcCkuZmluZCgnLmdlb2Rpci1tYXAtbmF2aWdhdGlvbiAuZ2VvZGlyLWxlZnRhcnJvdycpLm91dGVyV2lkdGgodHJ1ZSkpOwoJCQkJCXZhciB3QXJyUiA9IHBhcnNlRmxvYXQoalF1ZXJ5KCR0aGlzTWFwKS5maW5kKCcuZ2VvZGlyLW1hcC1uYXZpZ2F0aW9uIC5nZW9kaXItcmlnaHRhcnJvdycpLm91dGVyV2lkdGgodHJ1ZSkpOwoJCQkJCXZhciBwdHcxID0gcGFyc2VGbG9hdCgkb2JqTXBMaXN0Lm91dGVyV2lkdGgodHJ1ZSkpOwoJCQkJCSRvYmpNcExpc3QuY3NzKHsKCQkJCQkJJ21hcmdpbi1sZWZ0Jzogd0FyckwgKyAncHgnCgkJCQkJfSk7CgkJCQkJJG9iak1wTGlzdC5hdHRyKCdkYXRhLXdpZHRoJywgcHR3MSk7CgkJCQkJcHR3MSA9IHB0dzEgLSAod0FyckwgKyB3QXJyUik7CgkJCQkJJG9iak1wTGlzdC53aWR0aChwdHcxKTsKCQkJCQl2YXIgcHR3ID0gJG9ialBsTGlzdC53aWR0aCgpOwoJCQkJCXZhciBwdHcyID0gMDsKCQkJCQkkb2JqUGxMaXN0LmZpbmQoJ2xpJykuZWFjaChmdW5jdGlvbiAoKSB7CgkJCQkJCXZhciBwdHcyMSA9IGpRdWVyeSh0aGlzKS5vdXRlcldpZHRoKHRydWUpOwoJCQkJCQlwdHcyICs9IHBhcnNlRmxvYXQocHR3MjEpOwoJCQkJCX0pOwoJCQkJCXZhciBkb01vdiA9IHBhcnNlRmxvYXQocHR3ICogMC43NSk7CgkJCQkJcHR3MiA9IHB0dzIgKyAocHR3MiAqIDAuMDUpOwoJCQkJCXZhciBtYXhNYXJnaW4gPSBwdHcyIC0gcHR3OwoJCQkJCSRvYmpQbExpc3QuYXR0cignZGF0YS1kb21vdicsIGRvTW92KTsKCQkJCQkkb2JqUGxMaXN0LmF0dHIoJ2RhdGEtbWF4TWFyZ2luJywgbWF4TWFyZ2luKTsKCQkJCX0KCgkJCQlmdW5jdGlvbiBnZW9EaXJNYXBTbGlkZSgpIHsKCQkJCQlqUXVlcnkoJy5nZW9kaXJfbWFwX2NvbnRhaW5lciAuZ2VvZGlyLXBvc3QtdHlwZS1maWx0ZXItd3JhcCcpLmVhY2goZnVuY3Rpb24gKCkgewoJCQkJCQl2YXIgJHRoaXNNYXAgPSB0aGlzOwoJCQkJCQlnZW9EaXJNYXBQcmVwYXJlKCR0aGlzTWFwKTsKCQkJCQkJdmFyICRvYmpQbExpc3QgPSBqUXVlcnkoJHRoaXNNYXApLmZpbmQoJ3VsLnBsYWNlLWxpc3QnKTsKCQkJCQkJalF1ZXJ5KCR0aGlzTWFwKS5maW5kKCcuZ2VvZGlyLWxlZnRhcnJvdyBhJykub24oImNsaWNrIixmdW5jdGlvbiAoZSkgewoJCQkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJCQkJdmFyIGNtID0gJG9ialBsTGlzdC5jc3MoJ21hcmdpbi1sZWZ0Jyk7CgkJCQkJCQl2YXIgZG9Nb3YgPSBwYXJzZUZsb2F0KCRvYmpQbExpc3QuYXR0cignZGF0YS1kb21vdicpKTsKCQkJCQkJCXZhciBtYXhNYXJnaW4gPSBwYXJzZUZsb2F0KCRvYmpQbExpc3QuYXR0cignZGF0YS1tYXhNYXJnaW4nKSk7CgkJCQkJCQljbSA9IHBhcnNlRmxvYXQoY20pOwoJCQkJCQkJaWYgKGNtID09IDAgfHwgbWF4TWFyZ2luIDwgMCkgewoJCQkJCQkJCXJldHVybjsKCQkJCQkJCX0KCQkJCQkJCWRvbWFyZ2luID0gY20gKyBkb01vdjsKCQkJCQkJCWlmIChkb21hcmdpbiA+IDApIHsKCQkJCQkJCQlkb21hcmdpbiA9IDA7CgkJCQkJCQl9CgkJCQkJCQkkb2JqUGxMaXN0LmFuaW1hdGUoewoJCQkJCQkJCSdtYXJnaW4tbGVmdCc6IGRvbWFyZ2luICsgJ3B4JwoJCQkJCQkJfSwgMTAwMCk7CgkJCQkJCX0pOwoJCQkJCQlqUXVlcnkoJHRoaXNNYXApLmZpbmQoJy5nZW9kaXItcmlnaHRhcnJvdyBhJykub24oImNsaWNrIixmdW5jdGlvbiAoZSkgewoJCQkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJCQkJdmFyIGNtID0gJG9ialBsTGlzdC5jc3MoJ21hcmdpbi1sZWZ0Jyk7CgkJCQkJCQl2YXIgZG9Nb3YgPSBwYXJzZUZsb2F0KCRvYmpQbExpc3QuYXR0cignZGF0YS1kb21vdicpKTsKCQkJCQkJCXZhciBtYXhNYXJnaW4gPSBwYXJzZUZsb2F0KCRvYmpQbExpc3QuYXR0cignZGF0YS1tYXhNYXJnaW4nKSk7CgkJCQkJCQljbSA9IHBhcnNlRmxvYXQoY20pOwoJCQkJCQkJZG9tYXJnaW4gPSBjbSAtIGRvTW92OwoJCQkJCQkJaWYgKGNtID09IChtYXhNYXJnaW4gKiAtMSkgfHwgbWF4TWFyZ2luIDwgMCkgewoJCQkJCQkJCXJldHVybjsKCQkJCQkJCX0KCQkJCQkJCWlmICgoZG9tYXJnaW4gKiAtMSkgPiBtYXhNYXJnaW4pIHsKCQkJCQkJCQlkb21hcmdpbiA9IG1heE1hcmdpbiAqIC0xOwoJCQkJCQkJfQoJCQkJCQkJJG9ialBsTGlzdC5hbmltYXRlKHsKCQkJCQkJCQknbWFyZ2luLWxlZnQnOiBkb21hcmdpbiArICdweCcKCQkJCQkJCX0sIDEwMDApOwoJCQkJCQl9KTsKCQkJCQl9KTsKCQkJCX0KCQkJfQoJCQkJCQlqUXVlcnkoZnVuY3Rpb24oJCkgewoJCQkJJCgnW2FyaWEtY29udHJvbHM9ImNvbGxhcHNlTWFwIl0nKS5hZGRDbGFzcygnZ2VvZGlyLWxhenktbWFwJyk7CgkJCQkkKCcuZ2VvZGlyLWxhenktbWFwJykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewoJCQkJCXdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOwoJCQkJfSk7CgkJCX0pOwoJCQkJCQ==
3 ms
tausch.jpg
747 ms
verkauf-startseite.jpg
347 ms
fa-solid-900.ttf
594 ms
fa-regular-400.ttf
238 ms
fa-brands-400.ttf
401 ms
ferienhaus-verkauf.de accessibility score
Contrast
These are opportunities to improve the legibility of your content.
Impact
Issue
Background and foreground colors do not have a sufficient contrast ratio.
ARIA
These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader.
Impact
Issue
ARIA IDs are not unique
ferienhaus-verkauf.de best practices score
Trust and Safety
Impact
Issue
Does not use HTTPS
Ensure CSP is effective against XSS attacks
User Experience
Impact
Issue
Serves images with low resolution
General
Impact
Issue
Detected JavaScript libraries
Browser errors were logged to the console
ferienhaus-verkauf.de SEO score
Mobile Friendly
Make sure your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn more](https://developers.google.com/search/mobile-sites/).
Impact
Issue
Document uses legible font sizes
Tap targets are not sized appropriately
DE
DE
UTF-8
Language claimed in HTML meta tag should match the language actually used on the web page. Otherwise Ferienhaus-verkauf.de can be misinterpreted by Google and other search engines. Our service has detected that German is used on the page, and it matches the claimed language. Our system also found out that Ferienhaus-verkauf.de main page’s claimed encoding is utf-8. Use of this encoding format is the best practice as the main page visitors from all over the world won’t have any issues with symbol transcription.
ferienhaus-verkauf.de
Open Graph description is not detected on the main page of Ferienhaus Verkauf. Lack of Open Graph description can be counter-productive for their social media presence, as such a description allows converting a website homepage (or other pages) into good-looking, rich and well-structured posts, when it is being shared on Facebook and other social media. For example, adding the following code snippet into HTML <head> tag will help to represent this web page correctly in social networks: