7.5 sec in total
541 ms
4.7 sec
2.3 sec
Click here to check amazing Ehlel content for Mongolia. Otherwise, check out these important facts you probably never knew about ehlel.com
Ehlel is a brand of mobile phones and mobile accessories with high quality and unique solutions. Our head company is located in the United States and China. As of today, we are expanding our activitie...
Visit ehlel.comWe analyzed Ehlel.com page load time and found that the first response time was 541 ms and then it took 6.9 sec to load all DOM resources and completely render a web page. This is a poor result, as 80% of websites can load faster.
ehlel.com performance score
name
value
score
weighting
Value7.8 s
0/100
10%
Value50.7 s
0/100
25%
Value20.9 s
0/100
10%
Value4,170 ms
1/100
30%
Value0.025
100/100
15%
Value22.6 s
1/100
10%
541 ms
196 ms
100 ms
101 ms
101 ms
Our browser made a total of 144 requests to load all elements on the main page. We found that 91% of them (131 requests) were addressed to the original Ehlel.com, 8% (11 requests) were made to and 1% (2 requests) were made to Fonts.googleapis.com. The less responsive or slowest element that took the longest time to load (1.7 sec) belongs to the original domain Ehlel.com.
Page size can be reduced by 1.4 MB (11%)
13.4 MB
12.0 MB
In fact, the total size of Ehlel.com main page is 13.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. 40% of websites need less resources to load. Images take 12.1 MB which makes up the majority of the site volume.
Potential reduce by 139.6 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 139.6 kB or 90% of the original size.
Potential reduce by 424.9 kB
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. Ehlel images are well optimized though.
Potential reduce by 443.2 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 443.2 kB or 71% of the original size.
Potential reduce by 439.1 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. Ehlel.com needs all CSS files to be minified and compressed as it can save up to 439.1 kB or 84% of the original size.
Number of requests can be reduced by 65 (49%)
132
67
The browser has sent 132 CSS, Javascripts, AJAX and image requests in order to completely render the main page of Ehlel. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 20 to 1 for JavaScripts and from 47 to 1 for CSS and as a result speed up the page load time.
ehlel.com
541 ms
templates.ja_magz.less.bootstrap.less.css
196 ms
system.css
100 ms
plugins.system.t3.base.less.global-typo.less.css
101 ms
plugins.system.t3.base.less.grid-ext.less.css
101 ms
plugins.system.t3.base.less.t3.less.css
102 ms
templates.ja_magz.less.layout.less.css
106 ms
templates.ja_magz.less.core.less.css
109 ms
templates.ja_magz.less.typo-core.less.css
138 ms
templates.ja_magz.less.form.less.css
139 ms
templates.ja_magz.less.navigation-core.less.css
175 ms
templates.ja_magz.less.navigation.less.css
238 ms
templates.ja_magz.less.modules.less.css
243 ms
templates.ja_magz.less.joomla.less.css
288 ms
templates.ja_magz.less.style.less.css
298 ms
templates.ja_magz.less.themes.pink.template.less.css
256 ms
templates.ja_magz.less.bootstrap-responsive.less.css
314 ms
plugins.system.t3.base.less.grid-ext-responsive.less.css
306 ms
plugins.system.t3.base.less.global-typo-responsive.less.css
300 ms
plugins.system.t3.base.less.t3-responsive.less.css
337 ms
templates.ja_magz.less.typo-core-responsive.less.css
345 ms
templates.ja_magz.less.navigation-responsive.less.css
375 ms
templates.ja_magz.less.joomla-responsive.less.css
381 ms
templates.ja_magz.less.style-responsive.less.css
414 ms
plugins.system.t3.base.less.megamenu.less.css
419 ms
templates.ja_magz.less.megamenu.less.css
409 ms
plugins.system.t3.base.less.megamenu-responsive.less.css
426 ms
templates.ja_magz.less.megamenu-responsive.less.css
434 ms
plugins.system.t3.base.less.off-canvas.less.css
444 ms
css
41 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci05OS0xLWNvbnRhaW5lciI7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogICAgaWYodGhlbWUgPT0ibGlnaHQiIHx8IHRoZW1lID09Im1vZGVybiIpIHsNCiAgICAgIHZhciB3ID0galF1ZXJ5KHdpbmRvdykub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIHAgPSAkKCIjIiArIGNvbnQpLnBhcmVudCgpOyANCiAgICAgICQoIiMiICsgY29udCArICIgLmNvbnQiKS53aWR0aCh3KS5jc3MoeyJsZWZ0IjoiLSIrcC5vZmZzZXQoKS5sZWZ0KyJweCJ9KTsNCiAgICB9DQogICAgDQogICAgDQogICAgdmFyIGggPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1pdGVtLnNob3dkZXNjIGltZyIpLmhlaWdodCgpOw0KICAgIHZhciBzaG93aGVhZGVyID0gIjEiOw0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1pdGVtLnRydW5jZGVzYywgIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbSAudHJ1bmNkZXNjIikuY3NzKHtoZWlnaHQ6IGgrInB4In0pOw0KICAgICQob3dsOTkpLnRyaWdnZXIoIm93bGFmdGVyVXBkYXRlIik7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogICAgaWYodGhlbWUgPT0gInNpbXBsZSIgfHwgdGhlbWUgPT0gImVsZWdhbnQiKSB7DQogICAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm93bC1pdGVtIC5pdGVtX2hlYWRlciIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihzaG93aGVhZGVyICE9ICIxIikgew0KICAgICAgICBoID0gMDsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgdmFyIG1haW5IID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpOw0KICAgICAgaWYobWFpbkggLSAxNTAgPiAwKSB7DQogICAgICAgIGggKz0gKCQoIiMiICsgY29udCArICIgLm93bC1pdGVtIC5vZmYtdW5pLXNsaWRlci1tYWluIikub3V0ZXJIZWlnaHQoKSAtIDE1MCkvMjsNCiAgICAgIH0NCiAgICAgICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQtY29udGFpbmVyLCAjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1yaWdodC1jb250YWluZXIiKS5jc3Moe21hcmdpblRvcDogaCArICJweCJ9KTsgDQogICAgfSBlbHNlIHsNCiAgICAgIHZhciBoZWFkZXJXID0gJCgiIyIgKyBjb250ICsgIiAub2ZmX3VuaV9zbGlkZXJfaGVhZGVyIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIHRpdGxlVyA9ICAkKCIjIiArIGNvbnQgKyAiIC50aXRsZSIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBjb250cm9sbGVyVyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgcGFnaW5hdGlvbnMgPSAkKCIjIiArIGNvbnQgKyAiIC5jb250cm9sbGVyIC5vd2wtcGFnaW5hdGlvbiAub3dsLXBhZ2UiKTsNCiAgICAvKiAgaWYodGl0bGVXICsgY29udHJvbGxlclcgPiBoZWFkZXJXKSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICAkKHBhZ2luYXRpb25zKS5jc3Moe2Rpc3BsYXk6ICJpbmxpbmUtYmxvY2sifSk7DQogICAgICB9ICovDQogICAgfSAgICANCiAgfTsNCiAgDQogIG93bDk5ID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTk5LTEtY29udGFpbmVyLWlubmVyIik7DQogIG93bDk5Lm93bENhcm91c2VsKHsNCiAgICAgICANCiAgICAgICAgYWZ0ZXJJbml0IDogZnVuY3Rpb24oYyl7ICAgICAgICANCiAgICAgICAgICB0aGF0ID0gdGhpczsNCiAgICAgICAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci05OS0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IDUwMDAsDQogICAgICAgIGxhenlMb2FkOiB0cnVlLA0KICAgICAgICBzbGlkZVNwZWVkOiA1MDAsDQogICAgICAgIHN0b3BPbkhvdmVyOiB0cnVlLA0KICB9KTsNCiAgb3dsOTkudHJpZ2dlcigib3dsLmFmdGVyVXBkYXRlIik7ICAgICAgICAgIA0KICAkKHdpbmRvdykubG9hZChmdW5jdGlvbigpIHsNCiAgICByZXMoKTsNCiAgfSk7DQogIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTk5LTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDk5LnRyaWdnZXIoIm93bC5wcmV2Iik7fSk7DQogIHZhciByQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1yaWdodC1jb250YWluZXIiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2w5OS50cmlnZ2VyKCJvd2wubmV4dCIpO30pOw0KICBpZih0aGVtZSA9PSAiZmxhdCIgfHwgdGhlbWUgPT0gInBsYXN0aWMiIHx8IHRoZW1lID09ICJtb2Rlcm4iIHx8IHRoZW1lID09ICJsaWdodCIgfHwgdGhlbWUgPT0gInNpbXBsZSIgfHwgdGhlbWUgPT0gImJsYW5rIikgew0KICAgIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0Iikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsOTkudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2w5OS50cmlnZ2VyKCJvd2wubmV4dCIpO30pOw0KICB9DQogIHZhciBsQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQtYXJyb3ciKTsNCiAgdmFyIHJBcnJvd0lubmVyID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtYXJyb3ciKTsgDQogICQoZG9jdW1lbnQpLm9uKCJrZXlwcmVzcyIsIGZ1bmN0aW9uKGUpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goZS5rZXkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJMZWZ0Ijogb3dsOTkudHJpZ2dlcigib3dsLnByZXYiKTsgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJSaWdodCI6IG93bDk5LnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
31 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTUtMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExNSkudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTE1ID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNS0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTUub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNS0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDExNS50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTE1LTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExNS50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTE1LnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTUudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTUudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDExNS50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTE1LnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
19 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTQtMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExNCkudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTE0ID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNC0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTQub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNC0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IDUwMDAsDQogICAgICAgIGxhenlMb2FkOiB0cnVlLA0KICAgICAgICBzbGlkZVNwZWVkOiA1MDAsDQogICAgICAgIHN0b3BPbkhvdmVyOiB0cnVlLA0KICB9KTsNCiAgb3dsMTE0LnRyaWdnZXIoIm93bC5hZnRlclVwZGF0ZSIpOyAgICAgICAgICANCiAgJCh3aW5kb3cpLmxvYWQoZnVuY3Rpb24oKSB7DQogICAgcmVzKCk7DQogIH0pOw0KICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTQtMS1jb250YWluZXIiOw0KICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTE0LnRyaWdnZXIoIm93bC5wcmV2Iik7fSk7DQogIHZhciByQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1yaWdodC1jb250YWluZXIiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTQudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgaWYodGhlbWUgPT0gImZsYXQiIHx8IHRoZW1lID09ICJwbGFzdGljIiB8fCB0aGVtZSA9PSAibW9kZXJuIiB8fCB0aGVtZSA9PSAibGlnaHQiIHx8IHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJibGFuayIpIHsNCiAgICB2YXIgbEFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdCIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExNC50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICAgIHZhciByQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1yaWdodCIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExNC50cmlnZ2VyKCJvd2wubmV4dCIpO30pOw0KICB9DQogIHZhciBsQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQtYXJyb3ciKTsNCiAgdmFyIHJBcnJvd0lubmVyID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtYXJyb3ciKTsgDQogICQoZG9jdW1lbnQpLm9uKCJrZXlwcmVzcyIsIGZ1bmN0aW9uKGUpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goZS5rZXkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJMZWZ0Ijogb3dsMTE0LnRyaWdnZXIoIm93bC5wcmV2Iik7IGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiUmlnaHQiOiBvd2wxMTQudHJpZ2dlcigib3dsLm5leHQiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgaWYodGhlbWUgPT0gInNpbXBsZSIgfHwgdGhlbWUgPT0gImVsZWdhbnQiKSB7DQogICAgaWYoKCJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzIFBob25lL2kpKSl7DQogICAgICAkKGxBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgICQockFycm93KS5jc3Moe2Rpc3BsYXk6ICJub25lIn0pOyAgICAgIA0KICAgIH0NCiAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICQoIiMiICsgY29udCkuaG92ZXIoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLmFkZENsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLmFkZENsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvdykucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93SW5uZXIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvdykucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93SW5uZXIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICANCiAgICAgICAgICB9KTsNCg==
19 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTMtMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExMykudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTEzID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMy0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTMub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMy0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDExMy50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTEzLTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExMy50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTEzLnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTMudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTMudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDExMy50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTEzLnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
19 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTAtMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExMCkudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTEwID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMC0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTAub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMC0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDExMC50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTEwLTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExMC50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTEwLnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTAudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTAudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDExMC50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTEwLnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
18 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTItMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExMikudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTEyID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMi0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTIub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMi0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IDUwMDAsDQogICAgICAgIGxhenlMb2FkOiB0cnVlLA0KICAgICAgICBzbGlkZVNwZWVkOiA1MDAsDQogICAgICAgIHN0b3BPbkhvdmVyOiB0cnVlLA0KICB9KTsNCiAgb3dsMTEyLnRyaWdnZXIoIm93bC5hZnRlclVwZGF0ZSIpOyAgICAgICAgICANCiAgJCh3aW5kb3cpLmxvYWQoZnVuY3Rpb24oKSB7DQogICAgcmVzKCk7DQogIH0pOw0KICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTItMS1jb250YWluZXIiOw0KICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTEyLnRyaWdnZXIoIm93bC5wcmV2Iik7fSk7DQogIHZhciByQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1yaWdodC1jb250YWluZXIiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTIudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgaWYodGhlbWUgPT0gImZsYXQiIHx8IHRoZW1lID09ICJwbGFzdGljIiB8fCB0aGVtZSA9PSAibW9kZXJuIiB8fCB0aGVtZSA9PSAibGlnaHQiIHx8IHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJibGFuayIpIHsNCiAgICB2YXIgbEFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdCIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExMi50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICAgIHZhciByQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1yaWdodCIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExMi50cmlnZ2VyKCJvd2wubmV4dCIpO30pOw0KICB9DQogIHZhciBsQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQtYXJyb3ciKTsNCiAgdmFyIHJBcnJvd0lubmVyID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtYXJyb3ciKTsgDQogICQoZG9jdW1lbnQpLm9uKCJrZXlwcmVzcyIsIGZ1bmN0aW9uKGUpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goZS5rZXkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJMZWZ0Ijogb3dsMTEyLnRyaWdnZXIoIm93bC5wcmV2Iik7IGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiUmlnaHQiOiBvd2wxMTIudHJpZ2dlcigib3dsLm5leHQiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgaWYodGhlbWUgPT0gInNpbXBsZSIgfHwgdGhlbWUgPT0gImVsZWdhbnQiKSB7DQogICAgaWYoKCJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzIFBob25lL2kpKSl7DQogICAgICAkKGxBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgICQockFycm93KS5jc3Moe2Rpc3BsYXk6ICJub25lIn0pOyAgICAgIA0KICAgIH0NCiAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICQoIiMiICsgY29udCkuaG92ZXIoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLmFkZENsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLmFkZENsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvdykucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93SW5uZXIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvdykucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93SW5uZXIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICANCiAgICAgICAgICB9KTsNCg==
18 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMDktMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDEwOSkudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTA5ID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTEwOS0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMDkub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTEwOS0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDEwOS50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTA5LTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDEwOS50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTA5LnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMDkudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMDkudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDEwOS50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTA5LnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
17 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTctMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExNykudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTE3ID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNy0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTcub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNy0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDExNy50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTE3LTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExNy50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTE3LnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTcudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTcudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDExNy50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTE3LnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
18 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTEtMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExMSkudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTExID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMS0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTEub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExMS0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDExMS50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTExLTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExMS50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTExLnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTEudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTEudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDExMS50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTExLnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
17 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTYtMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExNikudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTE2ID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNi0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTYub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExNi0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDExNi50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTE2LTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExNi50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTE2LnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTYudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTYudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDExNi50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTE2LnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
45 ms
javascript;base64,DQogIDsod2luZG93LmpxMTgzfHxqUXVlcnkpKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7DQogICAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciByZXMgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgY29udCA9ICJvZmZsYWpuLXVuaXZlcnNhbC1wcm9kdWN0LXNsaWRlci0xMTgtMS1jb250YWluZXIiOw0KICAgIHZhciB0aGVtZSA9ICJzaW1wbGUiOw0KICAgIGlmKHRoZW1lID09ImxpZ2h0IiB8fCB0aGVtZSA9PSJtb2Rlcm4iKSB7DQogICAgICB2YXIgdyA9IGpRdWVyeSh3aW5kb3cpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwID0gJCgiIyIgKyBjb250KS5wYXJlbnQoKTsgDQogICAgICAkKCIjIiArIGNvbnQgKyAiIC5jb250Iikud2lkdGgodykuY3NzKHsibGVmdCI6Ii0iK3Aub2Zmc2V0KCkubGVmdCsicHgifSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS5zaG93ZGVzYyBpbWciKS5oZWlnaHQoKTsNCiAgICB2YXIgc2hvd2hlYWRlciA9ICIxIjsNCiAgICB2YXIgaCA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0uc2hvd2Rlc2MgaW1nIikuaGVpZ2h0KCk7DQogICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItaXRlbS50cnVuY2Rlc2MsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWl0ZW0gLnRydW5jZGVzYyIpLmNzcyh7aGVpZ2h0OiBoKyJweCJ9KTsNCiAgICAkKG93bDExOCkudHJpZ2dlcigib3dsYWZ0ZXJVcGRhdGUiKTsNCiAgICB2YXIgdGhlbWUgPSAic2ltcGxlIjsNCiAgICBpZih0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiZWxlZ2FudCIpIHsNCiAgICAgIHZhciBoID0gJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLml0ZW1faGVhZGVyIikub3V0ZXJIZWlnaHQoKTsNCiAgICAgIGlmKHNob3doZWFkZXIgIT0gIjEiKSB7DQogICAgICAgIGggPSAwOw0KICAgICAgfQ0KICAgICAgDQogICAgICB2YXIgbWFpbkggPSAkKCIjIiArIGNvbnQgKyAiIC5vd2wtaXRlbSAub2ZmLXVuaS1zbGlkZXItbWFpbiIpLm91dGVySGVpZ2h0KCk7DQogICAgICBpZihtYWluSCAtIDE1MCA+IDApIHsNCiAgICAgICAgaCArPSAoJCgiIyIgKyBjb250ICsgIiAub3dsLWl0ZW0gLm9mZi11bmktc2xpZGVyLW1haW4iKS5vdXRlckhlaWdodCgpIC0gMTUwKS8yOw0KICAgICAgfQ0KICAgICAgJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItbGVmdC1jb250YWluZXIsICMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWNvbnRhaW5lciIpLmNzcyh7bWFyZ2luVG9wOiBoICsgInB4In0pOyANCiAgICB9IGVsc2Ugew0KICAgICAgdmFyIGhlYWRlclcgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmZfdW5pX3NsaWRlcl9oZWFkZXIiKS5vdXRlcldpZHRoKCk7DQogICAgICB2YXIgdGl0bGVXID0gICQoIiMiICsgY29udCArICIgLnRpdGxlIikub3V0ZXJXaWR0aCgpOw0KICAgICAgdmFyIGNvbnRyb2xsZXJXID0gJCgiIyIgKyBjb250ICsgIiAuY29udHJvbGxlciIpLm91dGVyV2lkdGgoKTsNCiAgICAgIHZhciBwYWdpbmF0aW9ucyA9ICQoIiMiICsgY29udCArICIgLmNvbnRyb2xsZXIgLm93bC1wYWdpbmF0aW9uIC5vd2wtcGFnZSIpOw0KICAgIC8qICBpZih0aXRsZVcgKyBjb250cm9sbGVyVyA+IGhlYWRlclcpIHsNCiAgICAgICAgJChwYWdpbmF0aW9ucykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgICQocGFnaW5hdGlvbnMpLmNzcyh7ZGlzcGxheTogImlubGluZS1ibG9jayJ9KTsNCiAgICAgIH0gKi8NCiAgICB9ICAgIA0KICB9Ow0KICANCiAgb3dsMTE4ID0gJCgiLm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExOC0xLWNvbnRhaW5lci1pbm5lciIpOw0KICBvd2wxMTgub3dsQ2Fyb3VzZWwoew0KICAgICAgIA0KICAgICAgICBhZnRlckluaXQgOiBmdW5jdGlvbihjKXsgICAgICAgIA0KICAgICAgICAgIHRoYXQgPSB0aGlzOw0KICAgICAgICAgIHZhciBjb250ID0gIm9mZmxham4tdW5pdmVyc2FsLXByb2R1Y3Qtc2xpZGVyLTExOC0xIjsNCiAgICAgICAgICB2YXIgY29udHJvbGxlciA9ICIjIisgY29udCArIi1jb250YWluZXIgLmNvbnRyb2xsZXIiOw0KICAgICAgICAgIHZhciBjID0gJCgiIiArIGNvbnRyb2xsZXIgKyAiIik7DQogICAgICAgICAgICB0aGF0Lm93bENvbnRyb2xzLnByZXBlbmRUbyhjKTsNCiAgICAgICAgICAgIC8vcmVzKCk7ICAgICAgICAgIA0KICAgICAgICB9LA0KICAgICAgICBhZnRlclVwZGF0ZSA6IHJlcywNCiAgICAgICAgaXRlbXNDdXN0b20gOiBbDQogICAgICAgICAgWzAsIDFdLA0KICAgICAgICAgIFs0NjksIDJdLA0KICAgICAgICAgIFs1NjksIDJdLCAgICAgICAgICANCiAgICAgICAgICBbNzY5LCA0XSwNCiAgICAgICAgICBbMTAyNSwgNF0sDQogICAgICAgICAgWzE0MDAsIDRdDQogICAgICAgIF0sDQogICAgICAgIHNpbmdsZUl0ZW0gOiBmYWxzZSwNCiAgICAgICAgYXV0b1BsYXk6IGZhbHNlLA0KICAgICAgICBsYXp5TG9hZDogdHJ1ZSwNCiAgICAgICAgc2xpZGVTcGVlZDogNTAwLA0KICAgICAgICBzdG9wT25Ib3ZlcjogdHJ1ZSwNCiAgfSk7DQogIG93bDExOC50cmlnZ2VyKCJvd2wuYWZ0ZXJVcGRhdGUiKTsgICAgICAgICAgDQogICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkgew0KICAgIHJlcygpOw0KICB9KTsNCiAgdmFyIGNvbnQgPSAib2ZmbGFqbi11bml2ZXJzYWwtcHJvZHVjdC1zbGlkZXItMTE4LTEtY29udGFpbmVyIjsNCiAgdmFyIHRoZW1lID0gInNpbXBsZSI7DQogIHZhciBsQXJyb3cgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWNvbnRhaW5lciIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkge293bDExOC50cmlnZ2VyKCJvd2wucHJldiIpO30pOw0KICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQtY29udGFpbmVyIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7b3dsMTE4LnRyaWdnZXIoIm93bC5uZXh0Iik7fSk7DQogIGlmKHRoZW1lID09ICJmbGF0IiB8fCB0aGVtZSA9PSAicGxhc3RpYyIgfHwgdGhlbWUgPT0gIm1vZGVybiIgfHwgdGhlbWUgPT0gImxpZ2h0IiB8fCB0aGVtZSA9PSAic2ltcGxlIiB8fCB0aGVtZSA9PSAiYmxhbmsiKSB7DQogICAgdmFyIGxBcnJvdyA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLWxlZnQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTgudHJpZ2dlcigib3dsLnByZXYiKTt9KTsNCiAgICB2YXIgckFycm93ID0gJCgiIyIgKyBjb250ICsgIiAub2ZmLXVuaS1zbGlkZXItcmlnaHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHtvd2wxMTgudHJpZ2dlcigib3dsLm5leHQiKTt9KTsNCiAgfQ0KICB2YXIgbEFycm93SW5uZXIgPSAkKCIjIiArIGNvbnQgKyAiIC5vZmYtdW5pLXNsaWRlci1sZWZ0LWFycm93Iik7DQogIHZhciByQXJyb3dJbm5lciA9ICQoIiMiICsgY29udCArICIgLm9mZi11bmktc2xpZGVyLXJpZ2h0LWFycm93Iik7IA0KICAkKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTGVmdCI6IG93bDExOC50cmlnZ2VyKCJvd2wucHJldiIpOyBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJpZ2h0Ijogb3dsMTE4LnRyaWdnZXIoIm93bC5uZXh0Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogIGlmKHRoZW1lID09ICJzaW1wbGUiIHx8IHRoZW1lID09ICJlbGVnYW50Iikgew0KICAgIGlmKCgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKSkpew0KICAgICAgJChsQXJyb3cpLmNzcyh7ZGlzcGxheTogIm5vbmUifSk7DQogICAgICAkKHJBcnJvdykuY3NzKHtkaXNwbGF5OiAibm9uZSJ9KTsgICAgICANCiAgICB9DQogIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAkKCIjIiArIGNvbnQpLmhvdmVyKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQobEFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQockFycm93KS5hZGRDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3dJbm5lcikuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChsQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGxBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChyQXJyb3cpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHJBcnJvd0lubmVyKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgDQogICAgICAgICAgfSk7DQo=
44 ms
font-awesome.min.css
486 ms
stylesheet.css
402 ms
print.css
407 ms
owl.carousel.css
436 ms
owl.theme.css
423 ms
3d30c61d95e5c341fe1876c72d01fd7d.css
465 ms
f801afad1f659e3edb3f826d029acd45.css
473 ms
3b12edac7da6e201a4be2500ad4ca62b.css
510 ms
088ee8826fcbec95793c2a99b5713793.css
480 ms
1cf1dd24a772ebcafa4b110f2bd9c9b9.css
480 ms
b893a4c81ede95d2884f4da2777d3bbe.css
445 ms
6d54b500db7d56ebd541f67bb4d1ba65.css
424 ms
b83138138febcc50af3800543f324628.css
421 ms
0a252ff85f69b105925b1c13f0e2cbe5.css
436 ms
6920f5062261aae87ca06ae6b832bca3.css
436 ms
66ee74a773e4bde995c2f3141ef06d71.css
432 ms
system.css
412 ms
jquery.min.js
544 ms
jquery-noconflict.js
412 ms
jquery-migrate.min.js
449 ms
caption.js
429 ms
mootools-core.js
598 ms
core.js
422 ms
mootools-more.js
653 ms
bootstrap.js
636 ms
jquery.tap.min.js
437 ms
off-canvas.js
429 ms
script.js
595 ms
menu.js
591 ms
responsive.js
565 ms
imagesloaded.pkgd.min.js
565 ms
jquery.infinitescroll.min.js
668 ms
jquery.article.js
657 ms
jquery.mousewheel.js
545 ms
iscroll.js
644 ms
jquery.equalheight.js
622 ms
owl.carousel.min.js
619 ms
css
89 ms
000001.png
60 ms
00000000000000000000000000000000000000000000000000.png
82 ms
b.PNG
65 ms
b2.PNG
66 ms
000el3.png
85 ms
000gs.PNG
85 ms
00sb.PNG
110 ms
000bd.PNG
109 ms
000bh.PNG
109 ms
000ga.PNG
135 ms
000tg.PNG
135 ms
000hv.PNG
138 ms
000gts.PNG
170 ms
000gch.PNG
171 ms
zzz.PNG
173 ms
ngphone.PNG
286 ms
1.jpg
389 ms
borderpng.png
197 ms
shadow.png
287 ms
dood.jpg
417 ms
c91b4f9fd2fdd342dc4dc3297f33ee05.png
502 ms
032ad603710c8430d2472c61cc4f4426.png
544 ms
598cc2608b4aa7ecffd2bb4b75e7e8f7.png
582 ms
77fc9072418ff6929b7dc9d1cde1fada.png
565 ms
AjaxLoader.gif
440 ms
07e5d9a0abda452904cc4e49c806c20b.png
748 ms
7d549f029b7f4bf4e9240137498e33d1.png
654 ms
a10754414a4e1bfb5bebec04bf0212f7.png
800 ms
ec5eef497ba2b858c0ceeba8cea8e5d7.png
785 ms
3a733d9cda0fa376c80efb1866fc8aa3.png
802 ms
64e3ab9f84570e630d8c94b31fe37577.png
888 ms
85dafc373ab4ca96443569fe39295a86.png
925 ms
6418dade1909faef7305cb7de1fb558b.png
1000 ms
d13bdee1e88c8db18b093b2963f3487d.png
1004 ms
60e9657a1d77d71c64be3fefdf503e5f.png
1087 ms
166c37afb7b8289da949ae7c72771716.png
1044 ms
b68abcccd969f200197ab1ace17c3b7d.png
1139 ms
e086afad2fde754d0477bb64e7921628.png
1125 ms
ee3c1f2d3e1ac1a66c1a5ee6107f50f5.png
1260 ms
7bf7b07519e3ff429ad9d199e6a899d8.png
1245 ms
ee22879bbe246270de886f54b06c1ffd.png
1256 ms
1270a60c5752ca332cadb5542d9cdfa8.png
1302 ms
5ff388e1f6ab404601640268d16269ae.png
1340 ms
096c4a92a831d6f65e714171e0428250.png
1397 ms
8846d81a7439d8e1aff1e4615c9a7ac7.png
1421 ms
4b442e603b25f6b63dc89ac8c8d22916.png
1460 ms
4901f3d86efabc7570b9df64ab047152.png
1435 ms
357eb4c70a0d3d709178fce5f3af25ec.png
1530 ms
010b41e665e2cae28884e58bc3e4c1fd.png
1525 ms
3b189c6c74ce6493814ad448e38ec122.png
1588 ms
5304e3f300c1230024defbf421252c24.png
1638 ms
ccec3a7e48183c238750a9d4e270476e.png
1664 ms
808aeecc7f712a3ce05f819e074e1f22.png
1605 ms
8c92caaebd1ef2119ed442b52035ed4e.png
1674 ms
adcd443326d55bd437113e4425039e49.png
1624 ms
b770ccfac64fac526da1e7d9584c5da4.png
1677 ms
2560cb1d3927e29bd39cc50bb72c5f0c.png
1676 ms
306a7f8a7256f4a093661741457a8a4f.png
1639 ms
970763d5b014eaf2a787727aa948cd38.png
1644 ms
53802b5f8eb617f490bdf0aecce33784.png
1697 ms
17135812172578881106f0581a0e1308.png
1701 ms
e3d5bbdf241344058fcd6f7e62e44e25.png
1734 ms
2a8de6e3a8900d73027e69276f37b032.png
1641 ms
18da7b91eeefdbcb2c5895f2fc1617bd.png
1621 ms
080c20fcfc09871c49814b64848e0c4e.png
1659 ms
ehlel.com 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.
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
Image elements do not have [alt] attributes
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.
ehlel.com best practices score
Trust and Safety
Impact
Issue
Does not use HTTPS
Includes front-end JavaScript libraries with known security vulnerabilities
Ensure CSP is effective against XSS attacks
General
Impact
Issue
Detected JavaScript libraries
Browser errors were logged to the console
Missing source maps for large first-party JavaScript
ehlel.com SEO score
Content Best Practices
Format your HTML in a way that enables crawlers to better understand your app’s content.
Impact
Issue
Links do not have descriptive text
Image elements do not have [alt] attributes
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
EN
EN
UTF-8
Language claimed in HTML meta tag should match the language actually used on the web page. Otherwise Ehlel.com can be misinterpreted by Google and other search engines. Our service has detected that English is used on the page, and it matches the claimed language. Our system also found out that Ehlel.com 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.
ehlel.com
Open Graph description is not detected on the main page of Ehlel. 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: