4 sec in total
396 ms
3.3 sec
318 ms
Welcome to blokhusgolf.dk homepage info - get ready to check Blokhus Golf best content right away, or after learning these important things about blokhusgolf.dk
Bliv en del af Blokhus Golfklub. På siden kan du læse mere om golfophold i Blokhus Golf Klub, medlemskab, priser m.m. - eller ring på tlf.: 98 20 95 00
Visit blokhusgolf.dkWe analyzed Blokhusgolf.dk page load time and found that the first response time was 396 ms and then it took 3.6 sec to load all DOM resources and completely render a web page. This is a poor result, as 60% of websites can load faster.
blokhusgolf.dk performance score
name
value
score
weighting
Value4.5 s
15/100
10%
Value10.6 s
0/100
25%
Value7.3 s
29/100
10%
Value340 ms
74/100
30%
Value0.001
100/100
15%
Value10.4 s
24/100
10%
396 ms
598 ms
783 ms
605 ms
609 ms
Our browser made a total of 85 requests to load all elements on the main page. We found that 2% of them (2 requests) were addressed to the original Blokhusgolf.dk, 62% (53 requests) were made to Blokhusgolfklub.dk and 20% (17 requests) were made to I0.wp.com. The less responsive or slowest element that took the longest time to load (1.4 sec) relates to the external source I0.wp.com.
Page size can be reduced by 139.3 kB (6%)
2.2 MB
2.0 MB
In fact, the total size of Blokhusgolf.dk main page is 2.2 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. 50% of websites need less resources to load. Images take 1.7 MB which makes up the majority of the site volume.
Potential reduce by 128.1 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 128.1 kB or 84% of the original size.
Potential reduce by 34 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. Blokhus Golf images are well optimized though.
Potential reduce by 11.0 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. This website has mostly compressed JavaScripts.
Potential reduce by 165 B
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. Blokhusgolf.dk has all CSS files already compressed.
Number of requests can be reduced by 50 (70%)
71
21
The browser has sent 71 CSS, Javascripts, AJAX and image requests in order to completely render the main page of Blokhus Golf. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 45 to 1 for JavaScripts and from 7 to 1 for CSS and as a result speed up the page load time.
blokhusgolf.dk
396 ms
blokhusgolf.dk
598 ms
fyahv.css
783 ms
g3z4w.css
605 ms
fyahv.css
609 ms
7u8tg.css
612 ms
fyahv.css
612 ms
i1894.css
805 ms
fyahv.js
797 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgV3BEaXNhYmxlQXN5bmNMaW5rcyA9IHsid3AtZGlzYWJsZS1nb29nbGUtZm9udHMiOiJcL1wvZm9udHMuZ29vZ2xlYXBpcy5jb21cL2Nzcz9mYW1pbHk9T3BlbiUyMFNhbnM6NDAwIn07Ci8qIF1dPiAqLwo=
10 ms
fyahv.js
703 ms
uc.js
38 ms
javascript;base64,J3VzZSBzdHJpY3QnO3ZhciBhdmlhX2lzX21vYmlsZT0hMTtpZigvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJidvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7YXZpYV9pc19tb2JpbGU9ITA7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTmFtZSs9JyBhdmlhX21vYmlsZSAnfQplbHNle2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUrPScgYXZpYV9kZXNrdG9wICd9O2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUrPScganNfYWN0aXZlICc7KGZ1bmN0aW9uKCl7dmFyIGU9Wyctd2Via2l0LScsJy1tb3otJywnLW1zLScsJyddLG49Jyc7Zm9yKHZhciB0IGluIGUpe2lmKGVbdF0rJ3RyYW5zZm9ybScgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlKXtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NOYW1lKz0nIGF2aWFfdHJhbnNmb3JtICc7bj1lW3RdKyd0cmFuc2Zvcm0nfTtpZihlW3RdKydwZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlKWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUrPScgYXZpYV90cmFuc2Zvcm0zZCAnfTtpZih0eXBlb2YgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT09J2Z1bmN0aW9uJyYmdHlwZW9mIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9PSdmdW5jdGlvbicmJmF2aWFfaXNfbW9iaWxlPT0hMSl7aWYobiYmd2luZG93LmlubmVySGVpZ2h0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT0wLG89e30sYT0wLHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXYtcGFyYWxsYXgnKSxpPXdpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXt0W2VdLnN0eWxlLnRvcD0nMHB4JztvPXRbZV0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YT1NYXRoLmNlaWwoKHdpbmRvdy5pbm5lckhlaWdodCtpLW8udG9wKSowLjMpO3RbZV0uc3R5bGVbbl09J3RyYW5zbGF0ZSgwcHgsICcrYSsncHgpJzt0W2VdLnN0eWxlLnRvcD0nYXV0byc7dFtlXS5jbGFzc05hbWUrPScgZW5hYmxlZC1wYXJhbGxheCAnfX0sNTApfX19KSgpOw==
9 ms
javascript;base64,IGpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7IGF3ZV9hamF4X2xvYWQoeyJpZCI6ImF3ZXNvbWUtd2VhdGhlci1ibG9raHVzIiwibG9jYWxlIjpmYWxzZSwibG9jYXRpb24iOiJCbG9raHVzIiwib3dtX2NpdHlfaWQiOiIyNjE1MjIyIiwib3ZlcnJpZGVfdGl0bGUiOiJCbG9raHVzIiwic2l6ZSI6IndpZGUiLCJ1bml0cyI6IkMiLCJmb3JlY2FzdF9kYXlzIjoiMyIsImhpZGVfc3RhdHMiOjEsInNob3dfbGluayI6MCwiYmFja2dyb3VuZCI6IiIsImN1c3RvbV9iZ19jb2xvciI6IiNmOGY4ZjgiLCJ1c2VfdXNlcl9sb2NhdGlvbiI6MCwiYWxsb3dfdXNlcl90b19jaGFuZ2UiOjAsInNob3dfaWNvbnMiOjAsImV4dGVuZGVkX3VybCI6ZmFsc2UsImV4dGVuZGVkX3RleHQiOmZhbHNlLCJiYWNrZ3JvdW5kX2J5X3dlYXRoZXIiOjAsInRleHRfY29sb3IiOiIjMzE3MzJmIiwiaGlkZV9hdHRyaWJ1dGlvbiI6MSwic2tpcF9nZW9sb2NhdGUiOjAsImxhdGxuZyI6IiIsImFqYXh1cmwiOiJodHRwczpcL1wvYmxva2h1c2dvbGZrbHViLmRrXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJ2aWFfYWpheCI6MX0pOyB9KTsg
8 ms
javascript;base64,CiAgICAgICAgICAgIGZ1bmN0aW9uIHN0b3BQcm50U2NyKCkgewogICAgICAgICAgICAgICAgdmFyIGlucEZsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CiAgICAgICAgICAgICAgICBpbnBGbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJBY2Nlc3MgRGVuaWVkIik7CiAgICAgICAgICAgICAgICBpbnBGbGQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIwIik7CiAgICAgICAgICAgICAgICBpbnBGbGQuc3R5bGUuaGVpZ2h0ID0gIjBweCI7CiAgICAgICAgICAgICAgICBpbnBGbGQuc3R5bGUud2lkdGggPSAiMHB4IjsKICAgICAgICAgICAgICAgIGlucEZsZC5zdHlsZS5ib3JkZXIgPSAiMHB4IjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wRmxkKTsKICAgICAgICAgICAgICAgIGlucEZsZC5zZWxlY3QoKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5Iik7CiAgICAgICAgICAgICAgICBpbnBGbGQucmVtb3ZlKGlucEZsZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIChmdW5jdGlvbiAoJCkgewogICAgICAgICAgICAgICAgJ3VzZSBzdHJpY3QnOwogICAgICAgICAgICAgICAgJChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGFsbCA9ICQoJyonKS5ub3QoJ3NjcmlwdCwgbWV0YSwgbGluaywgc3R5bGUsIG5vc2NyaXB0LCB0aXRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwID0gJCgnI2F5c190b29sdGlwJyksCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcyA9ICJtb3VzZSI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRvb2x0aXBDbGFzcyA9PSAibW91c2UiIHx8IHRvb2x0aXBDbGFzcyA9PSAibW91c2VfZmlyc3RfcG9zIikgewogICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb3JkaW5hdGVfeCA9IGUucGFnZVg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29yZGluYXRlX3kgPSBlLnBhZ2VZOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdpbmRvd1dpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29yZGluYXRlX3kgPCB0b29sdGlwLm91dGVySGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwLmNzcyh7J3RvcCc6IChjb3JkaW5hdGVfeSArIDEwKSArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcC5jc3Moeyd0b3AnOiAoY29yZGluYXRlX3kgLSB0b29sdGlwLm91dGVySGVpZ2h0KCkpICsgJ3B4J30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvcmRpbmF0ZV94ID4gKHdpbmRvd1dpZHRoIC0gdG9vbHRpcC5vdXRlcldpZHRoKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcC5jc3MoeydsZWZ0JzogKGNvcmRpbmF0ZV94IC0gdG9vbHRpcC5vdXRlcldpZHRoKCkpICsgJ3B4J30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwLmNzcyh7J2xlZnQnOiAoY29yZGluYXRlX3ggKyA1KSArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXAuYWRkQ2xhc3ModG9vbHRpcENsYXNzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAJCQkJICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykub24oJ2tleXVwJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGtleUNvZGUgPSBlLmtleUNvZGUgPyBlLmtleUNvZGUgOiBlLndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5Q29kZSA9PSA0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFBybnRTY3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgIAkJCQkKCiAgICAJCQkJICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY29udGV4dG1lbnUnLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJChldmVudC50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldC5pcygiIikgJiYgKCF0YXJnZXQuaXMoIjEiKSAmJiAhdGFyZ2V0LmlzKCJpbWciKSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSB0LnRhcmdldCB8fCB0LnNyY0VsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5ub2RlTmFtZSAhPT0gIkEiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgIAkgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY29udGV4dG1lbnUnLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJChldmVudC50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmlzKCJpbWciKSB8fCB0YXJnZXQuaXMoImRpdi5heXNfdG9vbHRpcF9jbGFzcyIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSB0LnRhcmdldCB8fCB0LnNyY0VsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5ub2RlTmFtZSAhPT0gIkEiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAKICAgIAkgICAgICAgICAgICAKICAgIAkJCQkgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdkcmFnc3RhcnQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSAkKGV2ZW50LnRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0LmlzKCIiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgCQkJCQogICAgCQkJCQogICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NjcF9zZWxPYmogPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGVja19zZWxlY3RvcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNjY3Bfc2VsT2JqLnJhbmdlQ291bnQgPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NjcF9zZWxSYW5nZSA9IHNjY3Bfc2VsT2JqLmdldFJhbmdlQXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NjcF9zZWxlY3Rpb25fc2VsZWN0b3IgPSBzY2NwX3NlbFJhbmdlLnN0YXJ0Q29udGFpbmVyLnBhcmVudEVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19zZWxlY3RvcnMgPSAhJChzY2NwX3NlbGVjdGlvbl9zZWxlY3RvcikuaXMoIiIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tfc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNPcGVyYSA9IChCcm93c2VyRGV0ZWN0LmJyb3dzZXIgPT09ICJPcGVyYSIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0ZpcmVmb3ggPSAoQnJvd3NlckRldGVjdC5icm93c2VyID09PSAnRmlyZWZveCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc1NhZmFyaSA9IChCcm93c2VyRGV0ZWN0LmJyb3dzZXIgPT09ICdTYWZhcmknKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNJRSA9IChCcm93c2VyRGV0ZWN0LmJyb3dzZXIgPT09ICdFeHBsb3JlcicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzQ2hyb21lID0gKEJyb3dzZXJEZXRlY3QuYnJvd3NlciA9PT0gJ0Nocm9tZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzTW96aWxsYSA9IChCcm93c2VyRGV0ZWN0LmJyb3dzZXIgPT09ICdNb3ppbGxhJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJyb3dzZXJEZXRlY3QuT1MgPT09ICdXaW5kb3dzJykgewogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2hyb21lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDczIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSA3NCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gNjggfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDY3KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaXJlZm94KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDczIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSA3NCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gNjcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDc1IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSA2OSkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSAxMTggfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5rZXlDb2RlID09PSAxMTIgJiYgZXZlbnQuc2hpZnRLZXkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PT0gMTE1ICYmIGV2ZW50LnNoaWZ0S2V5KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPT09IDExOCAmJiBldmVudC5zaGlmdEtleSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5rZXlDb2RlID09PSAxMjAgJiYgZXZlbnQuc2hpZnRLZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3BlcmEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gNzMgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDc0IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSA2NyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gODggfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDY5KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJRSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IDEyMyAmJiBldmVudC5zaGlmdEtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTW96aWxsYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gNzMpIHx8IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXlDb2RlID09PSA2OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gODMgJiYgZXZlbnQuY3RybEtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJCiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IDY1ICYmIGV2ZW50LmN0cmxLZXkpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSA2NyAmJiBldmVudC5jdHJsS2V5ICYmICFldmVudC5zaGlmdEtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gODYgJiYgZXZlbnQuY3RybEtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJCiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IDg4ICYmIGV2ZW50LmN0cmxLZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gODUgJiYgZXZlbnQuY3RybEtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEyMyB8fCAoZXZlbnQua2V5Q29kZSA9PT0gMTIzICYmIGV2ZW50LnNoaWZ0S2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChCcm93c2VyRGV0ZWN0Lk9TID09PSAnTGludXgnKSB7CiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDaHJvbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5rZXlDb2RlID09PSA3MyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSA3NCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSA2NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IDg1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaXJlZm94KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpICYmIChldmVudC5rZXlDb2RlID09PSA3MyB8fCBldmVudC5rZXlDb2RlID09PSA3NCB8fCBldmVudC5rZXlDb2RlID09PSA2NyB8fCBldmVudC5rZXlDb2RlID09PSA3NSB8fCBldmVudC5rZXlDb2RlID09PSA2OSkpIHx8IGV2ZW50LmtleUNvZGUgPT09IDExOCB8fCBldmVudC5rZXlDb2RlID09PSAxMTYgfHwgKGV2ZW50LmtleUNvZGUgPT09IDExMiAmJiBldmVudC5zaGlmdEtleSkgfHwgKGV2ZW50LmtleUNvZGUgPT09IDExNSAmJiBldmVudC5zaGlmdEtleSkgfHwgKGV2ZW50LmtleUNvZGUgPT09IDExOCAmJiBldmVudC5zaGlmdEtleSkgfHwgKGV2ZW50LmtleUNvZGUgPT09IDEyMCAmJiBldmVudC5zaGlmdEtleSkgfHwgKGV2ZW50LmtleUNvZGUgPT09IDg1ICYmIGV2ZW50LmN0cmxLZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3BlcmEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkgJiYgKGV2ZW50LmtleUNvZGUgPT09IDczIHx8IGV2ZW50LmtleUNvZGUgPT09IDc0IHx8IGV2ZW50LmtleUNvZGUgPT09IDY3IHx8IGV2ZW50LmtleUNvZGUgPT09IDg4IHx8IGV2ZW50LmtleUNvZGUgPT09IDY5KSkgfHwgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gODUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJCiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IDgzICYmIGV2ZW50LmN0cmxLZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDY1ICYmIGV2ZW50LmN0cmxLZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJCiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gNjcgJiYgZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJCiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IDg2ICYmIGV2ZW50LmN0cmxLZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChldmVudC5rZXlDb2RlID09PSA4OCAmJiBldmVudC5jdHJsS2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gODUgJiYgZXZlbnQuY3RybEtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEyMyB8fCAoZXZlbnQua2V5Q29kZSA9PT0gMTIzICYmIGV2ZW50LnNoaWZ0S2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChCcm93c2VyRGV0ZWN0Lk9TID09PSAnTWFjJykgewogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2hyb21lIHx8IGlzU2FmYXJpIHx8IGlzT3BlcmEgfHwgaXNGaXJlZm94KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXRhS2V5ICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDczIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSA3NCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gNjkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPT09IDc1KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChldmVudC5rZXlDb2RlID09PSA4MyAmJiBldmVudC5tZXRhS2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gNjUgJiYgZXZlbnQubWV0YUtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJCiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IDY3ICYmIGV2ZW50Lm1ldGFLZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3Rvb2x0aXAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIAkJCQkJCQogICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChldmVudC5rZXlDb2RlID09PSA4NiAmJiBldmVudC5tZXRhS2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gODggJiYgZXZlbnQubWV0YUtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJCiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IDg1ICYmIGV2ZW50Lm1ldGFLZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkKICAgICAgICAJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMjMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190b29sdGlwKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkaXNhYmxlU2VsZWN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlLm9uc2VsZWN0c3RhcnQgIT09ICJ1bmRlZmluZWQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5vbnNlbGVjdHN0YXJ0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCggKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgZS5zdHlsZS5Nb3pVc2VyU2VsZWN0ICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGUuTW96VXNlclNlbGVjdCA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlLm9ubW91c2Vkb3duID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdG9vbHRpcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3BsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB2YXIgbXNnX2NvdW50ID0gMTsgCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2hvd190b29sdGlwKG1lc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3MgJiYgbXNnX2NvdW50ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b29sdGlwQ2xhc3MgPT0gJ21vdXNlX2ZpcnN0X3BvcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCgnI2F5c190b29sdGlwMicpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c190b29sdGlwMicpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG9vbHRpcDIgPSB0b29sdGlwLmNsb25lKCkucHJvcCgnaWQnLCdheXNfdG9vbHRpcDInKS5pbnNlcnRCZWZvcmUodG9vbHRpcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c190b29sdGlwMicpLmFkZENsYXNzKCdheXNfdG9vbHRpcF9jbGFzcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXAyLmNzcyh7J2Rpc3BsYXknOiAndGFibGUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c190b29sdGlwJykuZmFkZU91dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwMi5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXAuY3NzKHsnZGlzcGxheSc6ICd0YWJsZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c190b29sdGlwJykuZmFkZU91dCg1MDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXVkaW9fcGxheShhdWRpbykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2NwX3B1YmxpY19hdWRpbyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KShqUXVlcnkpOwogICAgICAgICAgICB2YXIgY29weXJpZ2h0VGV4dCA9ICcnOwogICAgICAgICAgICB2YXIgY29weXJpZ2h0SW5jbHVkZVVybCA9ICcnOwogICAgICAgICAgICB2YXIgY29weXJpZ2h0V29yZCA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgZnVuY3Rpb24gY29weVRvQ2xpcGJvYXJkKHRleHQpIHsKICAgICAgICAgICAgICAgIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7CiAgICAgICAgICAgICAgICB0ZXh0YXJlYS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICAgICAgICAgICAgICB0ZXh0YXJlYS5zdHlsZS5wb3NpdGlvbiA9ICJmaXhlZCI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVhKTsKICAgICAgICAgICAgICAgIHRleHRhcmVhLnNlbGVjdCgpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuZXhlY0NvbW1hbmQoImN1dCIpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oIkNvcHkgdG8gY2xpcGJvYXJkIGZhaWxlZC4iLCBleCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRhcmVhKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gaHRtbERlY29kZShpbnB1dCkgewogICAgICAgICAgICAgIHZhciBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGlucHV0LCAidGV4dC9odG1sIik7CiAgICAgICAgICAgICAgcmV0dXJuIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBCcm93c2VyRGV0ZWN0ID0gewogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvd3NlciA9IHRoaXMuc2VhcmNoU3RyaW5nKHRoaXMuZGF0YUJyb3dzZXIpIHx8ICJBbiB1bmtub3duIGJyb3dzZXIiOwogICAgICAgICAgICAgICAgICAgIHRoaXMudmVyc2lvbiA9IHRoaXMuc2VhcmNoVmVyc2lvbihuYXZpZ2F0b3IudXNlckFnZW50KSB8fCB0aGlzLnNlYXJjaFZlcnNpb24obmF2aWdhdG9yLmFwcFZlcnNpb24pIHx8ICJhbiB1bmtub3duIHZlcnNpb24iOwogICAgICAgICAgICAgICAgICAgIHRoaXMuT1MgPSB0aGlzLnNlYXJjaFN0cmluZyh0aGlzLmRhdGFPUykgfHwgImFuIHVua25vd24gT1MiOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlYXJjaFN0cmluZzogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFTdHJpbmcgPSBkYXRhW2ldLnN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFQcm9wID0gZGF0YVtpXS5wcm9wOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcnNpb25TZWFyY2hTdHJpbmcgPSBkYXRhW2ldLnZlcnNpb25TZWFyY2ggfHwgZGF0YVtpXS5pZGVudGl0eTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFTdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhU3RyaW5nLmluZGV4T2YoZGF0YVtpXS5zdWJTdHJpbmcpICE9PSAtMSkgcmV0dXJuIGRhdGFbaV0uaWRlbnRpdHk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVByb3ApIHJldHVybiBkYXRhW2ldLmlkZW50aXR5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZWFyY2hWZXJzaW9uOiBmdW5jdGlvbiAoZGF0YVN0cmluZykgewogICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGRhdGFTdHJpbmcuaW5kZXhPZih0aGlzLnZlcnNpb25TZWFyY2hTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChkYXRhU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIHRoaXMudmVyc2lvblNlYXJjaFN0cmluZy5sZW5ndGggKyAxKSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGF0YUJyb3dzZXI6IFt7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LAogICAgICAgICAgICAgICAgICAgIHN1YlN0cmluZzogIkNocm9tZSIsCiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6ICJDaHJvbWUiCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LAogICAgICAgICAgICAgICAgICAgIHN1YlN0cmluZzogIk9tbmlXZWIiLAogICAgICAgICAgICAgICAgICAgIHZlcnNpb25TZWFyY2g6ICJPbW5pV2ViLyIsCiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6ICJPbW5pV2ViIgogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIHN0cmluZzogbmF2aWdhdG9yLnZlbmRvciwKICAgICAgICAgICAgICAgICAgICBzdWJTdHJpbmc6ICJBcHBsZSIsCiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6ICJTYWZhcmkiLAogICAgICAgICAgICAgICAgICAgIHZlcnNpb25TZWFyY2g6ICJWZXJzaW9uIgogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIHByb3A6IHdpbmRvdy5vcGVyYSwKICAgICAgICAgICAgICAgICAgICBpZGVudGl0eTogIk9wZXJhIiwKICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uU2VhcmNoOiAiVmVyc2lvbiIKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBzdHJpbmc6IG5hdmlnYXRvci52ZW5kb3IsCiAgICAgICAgICAgICAgICAgICAgc3ViU3RyaW5nOiAiaUNhYiIsCiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6ICJpQ2FiIgogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIHN0cmluZzogbmF2aWdhdG9yLnZlbmRvciwKICAgICAgICAgICAgICAgICAgICBzdWJTdHJpbmc6ICJLREUiLAogICAgICAgICAgICAgICAgICAgIGlkZW50aXR5OiAiS29ucXVlcm9yIgogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIHN0cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwKICAgICAgICAgICAgICAgICAgICBzdWJTdHJpbmc6ICJGaXJlZm94IiwKICAgICAgICAgICAgICAgICAgICBpZGVudGl0eTogIkZpcmVmb3giCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudmVuZG9yLAogICAgICAgICAgICAgICAgICAgIHN1YlN0cmluZzogIkNhbWlubyIsCiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6ICJDYW1pbm8iCiAgICAgICAgICAgICAgICB9LCB7IC8vIGZvciBuZXdlciBOZXRzY2FwZXMgKDYrKQogICAgICAgICAgICAgICAgICAgIHN0cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwKICAgICAgICAgICAgICAgICAgICBzdWJTdHJpbmc6ICJOZXRzY2FwZSIsCiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6ICJOZXRzY2FwZSIKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBzdHJpbmc6IG5hdmlnYXRvci51c2VyQWdlbnQsCiAgICAgICAgICAgICAgICAgICAgc3ViU3RyaW5nOiAiTVNJRSIsCiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6ICJFeHBsb3JlciIsCiAgICAgICAgICAgICAgICAgICAgdmVyc2lvblNlYXJjaDogIk1TSUUiCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LAogICAgICAgICAgICAgICAgICAgIHN1YlN0cmluZzogIkdlY2tvIiwKICAgICAgICAgICAgICAgICAgICBpZGVudGl0eTogIk1vemlsbGEiLAogICAgICAgICAgICAgICAgICAgIHZlcnNpb25TZWFyY2g6ICJydiIKICAgICAgICAgICAgICAgIH0sIHsgLy8gZm9yIG9sZGVyIE5ldHNjYXBlcyAoNC0pCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LAogICAgICAgICAgICAgICAgICAgIHN1YlN0cmluZzogIk1vemlsbGEiLAogICAgICAgICAgICAgICAgICAgIGlkZW50aXR5OiAiTmV0c2NhcGUiLAogICAgICAgICAgICAgICAgICAgIHZlcnNpb25TZWFyY2g6ICJNb3ppbGxhIgogICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICBkYXRhT1M6IFt7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IucGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAgc3ViU3RyaW5nOiAiV2luIiwKICAgICAgICAgICAgICAgICAgICBpZGVudGl0eTogIldpbmRvd3MiCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IucGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAgc3ViU3RyaW5nOiAiTWFjIiwKICAgICAgICAgICAgICAgICAgICBpZGVudGl0eTogIk1hYyIKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBzdHJpbmc6IG5hdmlnYXRvci51c2VyQWdlbnQsCiAgICAgICAgICAgICAgICAgICAgc3ViU3RyaW5nOiAiaVBob25lIiwKICAgICAgICAgICAgICAgICAgICBpZGVudGl0eTogImlQaG9uZS9pUG9kIgogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIHN0cmluZzogbmF2aWdhdG9yLnBsYXRmb3JtLAogICAgICAgICAgICAgICAgICAgIHN1YlN0cmluZzogIkxpbnV4IiwKICAgICAgICAgICAgICAgICAgICBpZGVudGl0eTogIkxpbnV4IgogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgQnJvd3NlckRldGVjdC5pbml0KCk7CiAgICAgICAgLy8gfSwgZmFsc2UpOwogICAg
8 ms
javascript;base64,CiAvKiA8IVtDREFUQVsgKi8gIAp2YXIgYXZpYV9mcmFtZXdvcmtfZ2xvYmFscyA9IGF2aWFfZnJhbWV3b3JrX2dsb2JhbHMgfHwge307CiAgICBhdmlhX2ZyYW1ld29ya19nbG9iYWxzLmZyYW1ld29ya1VybCA9ICdodHRwczovL2Jsb2todXNnb2xma2x1Yi5kay93cC1jb250ZW50L3RoZW1lcy9lbmZvbGQvZnJhbWV3b3JrLyc7CiAgICBhdmlhX2ZyYW1ld29ya19nbG9iYWxzLmluc3RhbGxlZEF0ID0gJ2h0dHBzOi8vYmxva2h1c2dvbGZrbHViLmRrL3dwLWNvbnRlbnQvdGhlbWVzL2VuZm9sZC8nOwogICAgYXZpYV9mcmFtZXdvcmtfZ2xvYmFscy5hamF4dXJsID0gJ2h0dHBzOi8vYmxva2h1c2dvbGZrbHViLmRrL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJzsKLyogXV0+ICovIAo=
8 ms
autoptimize_single_34987faec67658cf6bb0443025a3c741.js
707 ms
autoptimize_single_047a6ab19ba37241c1ddee694e8295c6.js
701 ms
autoptimize_single_0dceda7e2d57833b75d29ee61e5af2a5.js
795 ms
autoptimize_single_64f7d597d342a544757b20316a664aa0.js
798 ms
autoptimize_single_77fdcba71c41e4ff2b29f558a4193f1a.js
929 ms
autoptimize_single_9bad7bd6e3b4f369e7210519b1be63b6.js
987 ms
autoptimize_single_a0b3b46931a88e9397c2e22ad93460ac.js
987 ms
autoptimize_single_8284f1a53a88616626271ea58ff8700c.js
987 ms
autoptimize_single_26e6fb56d44a236661556ef720264b89.js
986 ms
autoptimize_single_146901f0a263e01098ab0d0f146e47a5.js
987 ms
autoptimize_single_0e4728339010df1327be3712965e0bb5.js
986 ms
autoptimize_single_08b7f19d89b532948c890f1107a76c9c.js
1087 ms
autoptimize_single_3c711be05b8b99ff511929a32a65ff4e.js
1084 ms
autoptimize_single_f680b1a267329287c8ed3358ef7732eb.js
1083 ms
autoptimize_single_d367fb7182da13691672dc5fb4062ee2.js
1092 ms
autoptimize_single_4e669cf75492a1516a4bb474407057ac.js
1091 ms
autoptimize_single_b55e7c1d322d644e1644496ef0d8c7c3.js
1083 ms
autoptimize_single_cd8c20581499b91f47993b16f165c711.js
1176 ms
autoptimize_single_020686bbc4d52ff0ed30ccd661f6f0b2.js
1176 ms
autoptimize_single_a5561b9480514546a73a09828a5c12ee.js
1179 ms
autoptimize_single_9e21bb665d0b5a15eb7fca931d60523b.js
1179 ms
autoptimize_single_d796060840929b29af732ab67485068a.js
1177 ms
autoptimize_single_186d34db6d4acc17dc4e66bee448bad3.js
1182 ms
autoptimize_single_18ed7837caaadc19c343b8c9bdfd9248.js
1269 ms
autoptimize_single_f1bcd35f94d0430640b0dea6123ecd7c.js
1268 ms
autoptimize_single_777a2713ee53862260bee5cb0c33089c.js
1272 ms
autoptimize_single_6db3d0d2aadab21a9e90678b672948d4.js
1273 ms
autoptimize_single_23ead2a4210e41edec1eb832658c70d5.js
1273 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgbWVqc0wxMG4gPSB7Imxhbmd1YWdlIjoiZGEiLCJzdHJpbmdzIjp7Im1lanMuZG93bmxvYWQtZmlsZSI6IkRvd25sb2FkIGZpbCIsIm1lanMuaW5zdGFsbC1mbGFzaCI6IkR1IGJydWdlciBlbiBicm93c2VyLCBzb20gaWtrZSBoYXIgRmxhc2gtYWZzcGlsbGVyIGFrdGl2ZXJldCBlbGxlciBpbnN0YWxsZXJldC4gU2xcdTAwZTUgdmVubGlnc3QgRmxhc2gtYWZzcGlsbGVyIHRpbCBlbGxlciBoZW50IGRlbiBzZW5lc3RlIHZlcnNpb24gZnJhIGh0dHBzOlwvXC9nZXQuYWRvYmUuY29tXC9mbGFzaHBsYXllclwvIiwibWVqcy5mdWxsc2NyZWVuIjoiRnVsZHNrXHUwMGU2cm0iLCJtZWpzLnBsYXkiOiJBZnNwaWwiLCJtZWpzLnBhdXNlIjoiUGF1c2UiLCJtZWpzLnRpbWUtc2xpZGVyIjoiVGlkc2t5ZGVyIiwibWVqcy50aW1lLWhlbHAtdGV4dCI6IkJydWcgdmVuc3RyZVwvaFx1MDBmOGpyZSBwaWxldGFzdGVyIGZvciBhdCBzcG9sZSAxIHNla3VuZCBmcmVtLCBvZyBvcFwvbmVkIHBpbGV0YXN0ZXJuZSBmb3IgYXQgc3BvbGUgMTAgc2VrdW5kZXIgZnJlbS4iLCJtZWpzLmxpdmUtYnJvYWRjYXN0IjoiTGl2ZS11ZHNlbmRlbHNlIiwibWVqcy52b2x1bWUtaGVscC10ZXh0IjoiQnJ1ZyBvcFwvbmVkIHBpbGV0YXN0ZXJuZSBmb3IgYXQgc2tydWUgb3AgZWxsZXIgbmVkIGZvciBseWRlbi4iLCJtZWpzLnVubXV0ZSI6IkFubnVsbGVyIGRcdTAwZTZtcGVyIiwibWVqcy5tdXRlIjoiTXV0ZSIsIm1lanMudm9sdW1lLXNsaWRlciI6Ikx5ZHN0eXJrZXNreWRlciIsIm1lanMudmlkZW8tcGxheWVyIjoiVmlkZW9hZnNwaWxsZXIiLCJtZWpzLmF1ZGlvLXBsYXllciI6Ikx5ZGFmc3BpbGxlciIsIm1lanMuY2FwdGlvbnMtc3VidGl0bGVzIjoiQmlsbGVkdGVrc3RlclwvVW5kZXJ0ZWtzdGVyIiwibWVqcy5jYXB0aW9ucy1jaGFwdGVycyI6IkthcGl0bGVyIiwibWVqcy5ub25lIjoiSW5nZW4iLCJtZWpzLmFmcmlrYWFucyI6IkFmcmlrYWFucyIsIm1lanMuYWxiYW5pYW4iOiJBbGJhbnNrIiwibWVqcy5hcmFiaWMiOiJBcmFiaXNrIiwibWVqcy5iZWxhcnVzaWFuIjoiSHZpZGVydXNzaXNrIiwibWVqcy5idWxnYXJpYW4iOiJCdWxnYXJpc2siLCJtZWpzLmNhdGFsYW4iOiJLYXRhbGFuc2siLCJtZWpzLmNoaW5lc2UiOiJLaW5lc2lzayIsIm1lanMuY2hpbmVzZS1zaW1wbGlmaWVkIjoiS2luZXNpc2sgKEZvcmVua2xldCkiLCJtZWpzLmNoaW5lc2UtdHJhZGl0aW9uYWwiOiJLaW5lc2lzayAoVHJhZGl0aW9uZWx0KSIsIm1lanMuY3JvYXRpYW4iOiJLcm9hdGlzayIsIm1lanMuY3plY2giOiJUamVra2lzayIsIm1lanMuZGFuaXNoIjoiRGFuc2siLCJtZWpzLmR1dGNoIjoiSG9sbGFuZHNrIiwibWVqcy5lbmdsaXNoIjoiRW5nZWxzayIsIm1lanMuZXN0b25pYW4iOiJFc3Rpc2siLCJtZWpzLmZpbGlwaW5vIjoiRmlsaXBwaW5zayIsIm1lanMuZmlubmlzaCI6IkZpbnNrIiwibWVqcy5mcmVuY2giOiJGcmFuc2siLCJtZWpzLmdhbGljaWFuIjoiR2FsaWNpc2siLCJtZWpzLmdlcm1hbiI6IlR5c2siLCJtZWpzLmdyZWVrIjoiR3JcdTAwZTZzayIsIm1lanMuaGFpdGlhbi1jcmVvbGUiOiJIYWl0aXNrIEtyZW9sc2siLCJtZWpzLmhlYnJldyI6IkhlYnJhaXNrIiwibWVqcy5oaW5kaSI6IkhpbmRpIiwibWVqcy5odW5nYXJpYW4iOiJVbmdhcnNrIiwibWVqcy5pY2VsYW5kaWMiOiJJc2xhbmRzayIsIm1lanMuaW5kb25lc2lhbiI6IkluZG9uZXNpc2siLCJtZWpzLmlyaXNoIjoiSXJzayIsIm1lanMuaXRhbGlhbiI6Ikl0YWxpZW5zayIsIm1lanMuamFwYW5lc2UiOiJKYXBhbnNrIiwibWVqcy5rb3JlYW4iOiJLb3JlYW5zayIsIm1lanMubGF0dmlhbiI6IkxldHRpc2siLCJtZWpzLmxpdGh1YW5pYW4iOiJMaXRhdWlzayIsIm1lanMubWFjZWRvbmlhbiI6Ik1ha2Vkb25zayIsIm1lanMubWFsYXkiOiJNYWxheSIsIm1lanMubWFsdGVzZSI6Ik1hbHRlc2lzayIsIm1lanMubm9yd2VnaWFuIjoiTm9yc2siLCJtZWpzLnBlcnNpYW4iOiJQZXJzaXNrIiwibWVqcy5wb2xpc2giOiJQb2xzayIsIm1lanMucG9ydHVndWVzZSI6IlBvcnR1Z2lzaXNrIiwibWVqcy5yb21hbmlhbiI6IlJvbWFuc2siLCJtZWpzLnJ1c3NpYW4iOiJSdXNzaXNrIiwibWVqcy5zZXJiaWFuIjoiU2VyYmlzayIsIm1lanMuc2xvdmFrIjoiU2xvdmFraXNrIiwibWVqcy5zbG92ZW5pYW4iOiJTbG92ZW5zayIsIm1lanMuc3BhbmlzaCI6IlNwYW5zayIsIm1lanMuc3dhaGlsaSI6IlN3YWhpbGkiLCJtZWpzLnN3ZWRpc2giOiJTdmVuc2siLCJtZWpzLnRhZ2Fsb2ciOiJUYWdhbG9nIiwibWVqcy50aGFpIjoiVGhhaSIsIm1lanMudHVya2lzaCI6IlR5cmtpc2siLCJtZWpzLnVrcmFpbmlhbiI6IlVrcmFpbnNrIiwibWVqcy52aWV0bmFtZXNlIjoiVmlldG5hbWVzaXNrIiwibWVqcy53ZWxzaCI6IldhbGlzaXNrIiwibWVqcy55aWRkaXNoIjoiSmlkZGlzY2gifX07Ci8qIF1dPiAqLwo=
2 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgX3dwbWVqc1NldHRpbmdzID0geyJwbHVnaW5QYXRoIjoiXC93cC1pbmNsdWRlc1wvanNcL21lZGlhZWxlbWVudFwvIiwiY2xhc3NQcmVmaXgiOiJtZWpzLSIsInN0cmV0Y2hpbmciOiJyZXNwb25zaXZlIiwiYXVkaW9TaG9ydGNvZGVMaWJyYXJ5IjoibWVkaWFlbGVtZW50IiwidmlkZW9TaG9ydGNvZGVMaWJyYXJ5IjoibWVkaWFlbGVtZW50In07Ci8qIF1dPiAqLwo=
2 ms
e-202430.js
31 ms
javascript;base64,CgkJCWlmKGRvY3VtZW50LmNvb2tpZS5tYXRjaCgvYXZpYVByaXZhY3lHb29nbGVUcmFja2luZ0Rpc2FibGVkLykpeyB3aW5kb3dbJ2dhLWRpc2FibGUtVUEtMTA5ODIzNjQwLTEnXSA9IHRydWU7IH0KCQkJ
2 ms
js
78 ms
javascript;base64,CiAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CiAgZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fQogIGd0YWcoJ2pzJywgbmV3IERhdGUoKSk7CgogIGd0YWcoJ2NvbmZpZycsICdVQS0xMDk4MjM2NDAtMScpOwo=
2 ms
autoptimize_single_7276681e0e7d64fd84ba4e7b36d67c36.js
683 ms
autoptimize_single_1413ae49c9023a3f89ae95c070fc0cef.js
760 ms
autoptimize_single_69a68048907bec44c8825009a95993be.js
758 ms
jquery.magnific-popup.min.js
762 ms
autoptimize_single_912e96bba6658c45c3f38d7ff4240482.js
675 ms
autoptimize_single_bc17f655509750574dd1d0dbb1e35e4f.js
674 ms
autoptimize_single_40bf628f0d1ca7e9e8b6a2372f82caeb.js
675 ms
autoptimize_single_d04321d5048164334182443686794a6f.js
669 ms
mediaelement-and-player.min.js
671 ms
mediaelement-migrate.min.js
680 ms
wp-mediaelement.min.js
677 ms
Blokhus-golf-25.jpg
161 ms
Blokhus-golf-52.jpg
316 ms
Blokhus-golf-64.jpg
362 ms
Blokhus-golf-43.jpg
456 ms
Blokhus-golf-10.jpg
162 ms
Blokhus-golf-67.jpg
162 ms
Blokhus-golf-38.jpg
379 ms
Blokhus-golf-22.jpg
165 ms
Blokhus-golf-21.jpg
164 ms
Blokhus-golf-20.jpg
347 ms
Blokhus-golf-65.jpg
1441 ms
Blokhus-golf-43.jpg
318 ms
Blokhus-golf-63.jpg
320 ms
Blokhus-golf-48.jpg
1445 ms
Blokhus-golf-25.jpg
517 ms
autoptimize_single_ea40da6f432e4734db0a33a43a99baa5.js
547 ms
Logo_m_visuel_element.jpg
1105 ms
TAL-TANKER-LOGO-HOeJFORMAT.png
917 ms
entypo-fontello.woff
561 ms
weathericons-regular-webfont.woff
674 ms
Golfbox-logo1-1.png
601 ms
1_Sort_2-300x154.png
602 ms
admin-ajax.php
605 ms
css
37 ms
blokhusgolf.dk accessibility score
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-hidden="true"] elements contain focusable descendents
Contrast
These are opportunities to improve the legibility of your content.
Impact
Issue
Background and foreground colors do not have a sufficient contrast ratio.
Navigation
These are opportunities to improve keyboard navigation in your application.
Impact
Issue
Heading elements are not in a sequentially-descending order
Names and labels
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Impact
Issue
Links do not have a discernible name
Best practices
These items highlight common accessibility best practices.
Impact
Issue
[user-scalable="no"] is used in the <meta name="viewport"> element or the [maximum-scale] attribute is less than 5.
blokhusgolf.dk best practices score
Trust and Safety
Impact
Issue
Does not use HTTPS
Ensure CSP is effective against XSS attacks
General
Impact
Issue
Detected JavaScript libraries
blokhusgolf.dk 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
DA
DA
UTF-8
Language claimed in HTML meta tag should match the language actually used on the web page. Otherwise Blokhusgolf.dk can be misinterpreted by Google and other search engines. Our service has detected that Danish is used on the page, and it matches the claimed language. Our system also found out that Blokhusgolf.dk 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.
blokhusgolf.dk
Open Graph data is detected on the main page of Blokhus Golf. This is the best way to make the web page social media friendly. Here is how it looks like on Facebook: