Аудит

Данные на 16 февраля 2024

Добавить сайт в список

53

Показатели сайта

0
0
0
Узнайте больше об этом сайте
ИКС сайта 10
SSL-сертификат Есть SSL-сертификат

Содержимое

Заголовок (тег title) Психология успеха
Заголовок (тег h1) Отсутствует
Описание сайта (description) Путь к успеху: все о психологии денег, мотивации и яркой жизни

Главная страница сайта

URL сайта https://infouspekh.ru/
Локализация сайта Альтернативных страниц нет
Кодировка страниц UTF-8
Тексты 89
HTML теги 716
a82 aside1 body1 button2 comment2 div212 footer1 form1 head1 header23 html1 img52 input1 label1 li16 link11 main1 meta167 nav2 p1 script21 span105 style7 title1 ul2 unknown1
Скрипты на сайте 18
Все скрипты:
/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js
data:text/javascript;base64,IWZ1bmN0aW9uKCl7dmFyIHQ9ITE7dHJ5e3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe3Q9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsZSl9Y2F0Y2godCl7fXJldHVybiB0fSgpfHxmdW5jdGlvbihpKXt2YXIgbz0hMCxzPSExO0V2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0ib2JqZWN0Ij09dHlwZW9mIG4sYT1yP24uY2FwdHVyZTpuO249cj9uOnt9LCJ0b3VjaHN0YXJ0IiE9dCYmInNjcm9sbCIhPXQmJiJ3aGVlbCIhPXR8fChuLnBhc3NpdmU9dm9pZCAwIT09bi5wYXNzaXZlP24ucGFzc2l2ZTpvKSxuLmNhcHR1cmU9dm9pZCAwIT09YT9hOnMsaS5jYWxsKHRoaXMsdCxlLG4pfX0oRXZlbnRUYXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIp
data:text/javascript;base64,Y29uc29sZS5sb2coJ2FkOiBudW4nKQ==
data:text/javascript;base64,ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsKGV2ZW50KT0+e3ZhciBwYWdlbGluaz0iXG7QmNGB0YLQvtGH0L3QuNC6OiBodHRwczovL2luZm91c3Bla2gucnUiO2V2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dCIsZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkrcGFnZWxpbmspO2V2ZW50LnByZXZlbnREZWZhdWx0KCl9KQ==
data:text/javascript;base64,ZnVuY3Rpb24gb25FcnJvclBsYWNpbmcoKXtpZih0eXBlb2YgY2FjaGVQbGFjaW5nIT09J3VuZGVmaW5lZCcmJnR5cGVvZiBjYWNoZVBsYWNpbmc9PT0nZnVuY3Rpb24nJiZ0eXBlb2Ygd2luZG93LmpzSW5wdXRlckxhdW5jaCE9PSd1bmRlZmluZWQnJiZbMTUsMTBdLmluY2x1ZGVzKHdpbmRvdy5qc0lucHV0ZXJMYXVuY2gpKXtsZXQgZXJyb3JJbmZvPVtdO2NhY2hlUGxhY2luZygnbG93JyxlcnJvckluZm8pfWVsc2V7c2V0VGltZW91dChmdW5jdGlvbigpe29uRXJyb3JQbGFjaW5nKCl9LDEwMCl9fQp2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdHRVQnLCIvL3d3dy41NzM4LnJ1LzEyNm45Lm1pbi5qcyIsITApO3hoci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTt4aHIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoeGhyLnN0YXR1cyE9MjAwKXtpZih4aHIuc3RhdHVzVGV4dCE9J2Fib3J0Jyl7b25FcnJvclBsYWNpbmcoKX19fTt4aHIuc2VuZCgp
data:text/javascript;base64,aWYodHlwZW9mIHJiX2FqYXh1cmw9PT0ndW5kZWZpbmVkJyl7dmFyIHJiX2FqYXh1cmw9J2h0dHBzOi8vaW5mb3VzcGVraC5ydS93cC1hZG1pbi9hZG1pbi1hamF4LnBocCd9CmlmKHR5cGVvZiBnYXRoZXJfY29udGVudD09PSd1bmRlZmluZWQnKXt2YXIgZ2F0aGVyX2NvbnRlbnQ9ITB9CmlmKHR5cGVvZiBlbmRlZFNjPT09J3VuZGVmaW5lZCcpe3ZhciBlbmRlZFNjPSExfQppZih0eXBlb2YgZW5kZWRDYz09PSd1bmRlZmluZWQnKXt2YXIgZW5kZWRDYz0hMX0KaWYodHlwZW9mIHVzZWRBZEJsb2Nrc0FycmF5PT09J3VuZGVmaW5lZCcpe3ZhciB1c2VkQWRCbG9ja3NBcnJheT1bXX0KaWYodHlwZW9mIHVzZWRCbG9ja1NldHRpbmdBcnJheUlkcz09PSd1bmRlZmluZWQnKXt2YXIgdXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzPVtdfQppZih0eXBlb2Ygc2FtZUVsZW1lbnRBZnRlcldpZHRoPT09J3VuZGVmaW5lZCcpe3ZhciBzYW1lRWxlbWVudEFmdGVyV2lkdGg9ITF9CmlmKHR5cGVvZiBzYW1lRWxlbWVudEFmdGVyRXhjQ2xhc3NJZD09PSd1bmRlZmluZWQnKXt2YXIgc2FtZUVsZW1lbnRBZnRlckV4Y0NsYXNzSWQ9ITF9CmlmKHR5cGVvZiBzYW1lRWxlbWVudEFmdGVyRnJvbUNvbnN0cnVjdGlvbj09PSd1bmRlZmluZWQnKXt2YXIgc2FtZUVsZW1lbnRBZnRlckZyb21Db25zdHJ1Y3Rpb249ITF9CmlmKHR5cGVvZiByYl90ZW1wRWxlbWVudF9jaGVjaz09PSd1bmRlZmluZWQnKXt2YXIgcmJfdGVtcEVsZW1lbnRfY2hlY2s9ITF9CmlmKHR5cGVvZiByYl90ZW1wRWxlbWVudD09PSd1bmRlZmluZWQnKXt2YXIgcmJfdGVtcEVsZW1lbnQ9bnVsbH0KaWYodHlwZW9mIHdpbmRvdy5qc0lucHV0ZXJMYXVuY2g9PT0ndW5kZWZpbmVkJyl7d2luZG93LmpzSW5wdXRlckxhdW5jaD0tMX0KZnVuY3Rpb24gbGF1bmNoVXBkYXRlUmJEaXNwbGF5cygpe2lmKCh0eXBlb2YgdXBkYXRlUmJEaXNwbGF5cyE9PSd1bmRlZmluZWQnKSYmKHR5cGVvZiB1cGRhdGVSYkRpc3BsYXlzPT09J2Z1bmN0aW9uJykpe3VwZGF0ZVJiRGlzcGxheXMoKX1lbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsYXVuY2hVcGRhdGVSYkRpc3BsYXlzKCl9LDIwMCl9fQpmdW5jdGlvbiBzaG9ydGNvZGVzSW5zZXJ0KCl7bGV0IGdhdGhlcmVkQmxvY2tzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wZXJjZW50UG9pbnRlckNsYXNzLnNjTWFyaycpLHNjQmxvY2tJZD0tMSxzY0FkSWQ9LTEsYmxvY2tTdGF0dXM9JycsZGF0YUZ1bGw9LTEsZ2F0aGVyZWRCbG9ja0NoaWxkLG9rU3RhdGVzPVsnZG9uZScsJ3JlZnJlc2gtd2FpdCcsJ25vLWJsb2NrJywnZmV0Y2hlZCddLHNjQ29udGFpbmVyLHNjaSxpMT0wLHNreXNjcmFwZXJDaGVjaz1bXSxza3lzY3JhcGVyU3RhdHVzPSExLHNwbGl0ZWRTa3lzY3JhcGVyPVtdLGdhdGhlcmVkQmxvY2tDaGlsZFNreVBhcnRzPVtdLHN0aWNreVN0YXR1cz0hMSxzdGlja3lDaGVjaz1bXSxzdGlja3lGaXhlZFN0YXR1cz0hMSxzdGlja3lGaXhlZENoZWNrPVtdLG92ZXJmbG93Q2hlY2s9W10sb3ZlcmZsb3dTdGF0dXM9ITEscmVwZWF0YWJsZUlkZW50aWZpZXI9IiIsZGF0YUNpZElkZW50aWZpZXI9bnVsbCxkaXZDaWRFbGVtZW50PScnO2lmKHR5cGVvZiBzY0FycmF5IT09J3VuZGVmaW5lZCcpe2lmKHNjQXJyYXkmJnNjQXJyYXkubGVuZ3RoPjAmJmdhdGhlcmVkQmxvY2tzJiZnYXRoZXJlZEJsb2Nrcy5sZW5ndGg+MCYmdHlwZW9mIHdpbmRvdy5ydWx2VzVnbnRiIT09J3VuZGVmaW5lZCcpe2RhdGFDaWRJZGVudGlmaWVyPXdpbmRvdy5ydWx2VzVnbnRiO2ZvcihsZXQgaT0wO2k8Z2F0aGVyZWRCbG9ja3MubGVuZ3RoO2krKyl7Z2F0aGVyZWRCbG9ja0NoaWxkPWdhdGhlcmVkQmxvY2tzW2ldLmNoaWxkcmVuWzBdO2lmKCFnYXRoZXJlZEJsb2NrQ2hpbGQpe2NvbnRpbnVlfQpzY0FkSWQ9LTM7YmxvY2tTdGF0dXM9bnVsbDtzY0NvbnRhaW5lcj1udWxsO2RhdGFGdWxsPS0xO3NreXNjcmFwZXJTdGF0dXM9ITE7c3BsaXRlZFNreXNjcmFwZXI9W107Z2F0aGVyZWRCbG9ja0NoaWxkU2t5UGFydHM9W107c3RpY2t5U3RhdHVzPSExO3N0aWNreUNoZWNrPVtdO3N0aWNreUZpeGVkU3RhdHVzPSExO3N0aWNreUZpeGVkQ2hlY2s9W107cmVwZWF0YWJsZUlkZW50aWZpZXI9IiI7ZGl2Q2lkRWxlbWVudD1udWxsO3NjQWRJZD1nYXRoZXJlZEJsb2NrQ2hpbGQuZ2V0QXR0cmlidXRlKCdkYXRhLWFpZCcpO3NjQmxvY2tJZD1nYXRoZXJlZEJsb2NrQ2hpbGQuZ2V0QXR0cmlidXRlKCdkYXRhLWlkJyk7YmxvY2tTdGF0dXM9Z2F0aGVyZWRCbG9ja0NoaWxkLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScpO2RhdGFGdWxsPWdhdGhlcmVkQmxvY2tDaGlsZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZnVsbCcpO2lmKHNjQmxvY2tJZCYmc2NBZElkPjApe3NjaT0tMTtmb3IoaTE9MDtpMTxzY0FycmF5Lmxlbmd0aDtpMSsrKXtpZihzY0Jsb2NrSWQ9PXNjQXJyYXlbaTFdLmJsb2NrSWQmJnNjQWRJZD09c2NBcnJheVtpMV0uYWRJZCl7c2NpPWkxfX0KaWYoc2NpPi0xKXtpZihibG9ja1N0YXR1cyYmb2tTdGF0ZXMuaW5jbHVkZXMoYmxvY2tTdGF0dXMpKXtpZihibG9ja1N0YXR1cz09J25vLWJsb2NrJyl7Z2F0aGVyZWRCbG9ja0NoaWxkLmlubmVySFRNTD0nJ31lbHNlIGlmKChibG9ja1N0YXR1cz09J2ZldGNoZWQnJiZkYXRhRnVsbD09MSl8fCFbJ25vLWJsb2NrJywnZmV0Y2hlZCddLmluY2x1ZGVzKGJsb2NrU3RhdHVzKSl7Zm9yKGxldCBjbDE9MDtjbDE8Z2F0aGVyZWRCbG9ja3NbaV0uY2xhc3NMaXN0Lmxlbmd0aDtjbDErKyl7aWYoZ2F0aGVyZWRCbG9ja3NbaV0uY2xhc3NMaXN0W2NsMV0uaW5jbHVkZXMoInJlcGVhdGFibGUtbWFyayIpKXtyZXBlYXRhYmxlSWRlbnRpZmllcj1nYXRoZXJlZEJsb2Nrc1tpXS5jbGFzc0xpc3RbY2wxXX19CmlmKHJlcGVhdGFibGVJZGVudGlmaWVyKXtkaXZDaWRFbGVtZW50PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5wZXJjZW50UG9pbnRlckNsYXNzLnNjTWFyay4iK3JlcGVhdGFibGVJZGVudGlmaWVyKycgZGl2W2RhdGEtY2lkPSInK2RhdGFDaWRJZGVudGlmaWVyKyciXScpfWVsc2V7ZGl2Q2lkRWxlbWVudD1nYXRoZXJlZEJsb2NrQ2hpbGQucXVlcnlTZWxlY3RvckFsbCgnZGl2W2RhdGEtY2lkPSInK2RhdGFDaWRJZGVudGlmaWVyKyciXScpfQp2YXIgdGV4dD1zY0FycmF5W3NjaV0udGV4dDtpZihkaXZDaWRFbGVtZW50JiZkaXZDaWRFbGVtZW50Lmxlbmd0aD4wKXtmb3IobGV0IGkyPTA7aTI8ZGl2Q2lkRWxlbWVudC5sZW5ndGg7aTIrKyl7alF1ZXJ5KGRpdkNpZEVsZW1lbnRbaTJdKS5odG1sKHRleHQpfX1lbHNle2pRdWVyeShnYXRoZXJlZEJsb2NrQ2hpbGQpLmh0bWwodGV4dCl9CmxhdW5jaFVwZGF0ZVJiRGlzcGxheXMoKX0KaWYoYmxvY2tTdGF0dXMhPSdmZXRjaGVkJ3x8KGJsb2NrU3RhdHVzPT0nZmV0Y2hlZCcmJmRhdGFGdWxsPT0xKSl7Zm9yKGkxPTA7aTE8c2NBcnJheS5sZW5ndGg7aTErKyl7aWYoc2NCbG9ja0lkPT1zY0FycmF5W2kxXS5ibG9ja0lkKXtzY0FycmF5LnNwbGljZShpMSwxKTtpMS0tfX0KZ2F0aGVyZWRCbG9ja3NbaV0uY2xhc3NMaXN0LnJlbW92ZSgnc2NNYXJrJyl9fX19ZWxzZSBpZihzY0Jsb2NrSWQmJnNjQWRJZDwxJiZbJ25vLWJsb2NrJywnZmV0Y2hlZCddLmluY2x1ZGVzKGJsb2NrU3RhdHVzKSl7Zm9yKGkxPTA7aTE8c2NBcnJheS5sZW5ndGg7aTErKyl7aWYoc2NCbG9ja0lkPT1zY0FycmF5W2kxXS5ibG9ja0lkKXtzY0FycmF5LnNwbGljZShpMSwxKTtpMS0tfX0KZ2F0aGVyZWRCbG9ja3NbaV0uY2xhc3NMaXN0LnJlbW92ZSgnc2NNYXJrJyl9fX1lbHNlIGlmKCFzY0FycmF5fHwoc2NBcnJheSYmc2NBcnJheS5sZW5ndGg8MSkpe2VuZGVkU2M9ITB9fWVsc2V7ZW5kZWRTYz0hMH0KaWYoIWVuZGVkU2Mpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzaG9ydGNvZGVzSW5zZXJ0KCl9LDIwMCl9fQpmdW5jdGlvbiBjbGVhclVuc3VpdGFibGVDYWNoZShjdWNfY291KXtsZXQgc2NBZElkPS0xO2xldCBjY1JlcGVhdD0hMTtsZXQgZ2F0aGVyZWRCbG9ja3M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBlcmNlbnRQb2ludGVyQ2xhc3MgLicrYmxvY2tfY2xhc3Nlcy5qb2luKCcsIC5wZXJjZW50UG9pbnRlckNsYXNzIC4nKSk7aWYoZ2F0aGVyZWRCbG9ja3MmJmdhdGhlcmVkQmxvY2tzLmxlbmd0aD4wKXtmb3IobGV0IGk9MDtpPGdhdGhlcmVkQmxvY2tzLmxlbmd0aDtpKyspe2lmKGdhdGhlcmVkQmxvY2tzW2ldLmRhdGFzZXQuYWlkJiZnYXRoZXJlZEJsb2Nrc1tpXS5kYXRhc2V0LmFpZDwwKXtpZigoZ2F0aGVyZWRCbG9ja3NbaV0uZGF0YXNldC5zdGF0ZT09J25vLWJsb2NrJyl8fChbJ2RvbmUnLCdmZXRjaGVkJywncmVmcmVzaC13YWl0J10uaW5jbHVkZXMoZ2F0aGVyZWRCbG9ja3NbaV0uZGF0YXNldC5zdGF0ZSkpKXtnYXRoZXJlZEJsb2Nrc1tpXS5pbm5lckhUTUw9Jyd9ZWxzZXtjY1JlcGVhdD0hMH19ZWxzZSBpZighZ2F0aGVyZWRCbG9ja3NbaV0uZGF0YXNldC5haWQpe2NjUmVwZWF0PSEwfX0KaWYoY3VjX2NvdTw1MCl7aWYoY2NSZXBlYXQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhclVuc3VpdGFibGVDYWNoZShjdWNfY291KzEpfSwxMDApfX1lbHNle2VuZGVkQ2M9ITB9fWVsc2V7ZW5kZWRDYz0hMH19CmZ1bmN0aW9uIGJsb2Nrc1JlcG9zaXRpb25Vc2UoY29udGFpbmVyU3RyaW5nLGJsVHlwZSxzZWFyY2hUeXBlLGNvbnRlbnRFbGVtZW50KXtsZXQgYmxvY2tzSW5Db250YWluZXI7bGV0IGJsTG9jYWw9YmxUeXBlO2xldCBjdXJyZW50QmxvY2s7bGV0IGN1cnJlbnRCbG9ja0lkO2xldCBjdXJyZW50QmxvY2tQb3NpdGlvbjtsZXQgY3VycmVudENvbnRhaW5lcjtsZXQgaT0wO2xldCBqPTA7bGV0IGJsb2NrU3RySnM9JyAucGVyY2VudFBvaW50ZXJDbGFzcy5tYXJrZWQnO2xldCBibG9ja1N0clBocD0nIC5wZXJjZW50UG9pbnRlckNsYXNzOm5vdCgubWFya2VkKSc7bGV0IGJsb2NrU3RyPScgLnBlcmNlbnRQb2ludGVyQ2xhc3MnO2xldCBjaGVja1BvaW50ZXI9bnVsbDtsZXQgYmxvY2tSZXBlYXRFbmQ9ITE7aWYoc2VhcmNoVHlwZSl7aWYoc2VhcmNoVHlwZT09J21hcmtlZCcpe3doaWxlKCFibG9ja1JlcGVhdEVuZCl7YmxMb2NhbD1ibExvY2FsLnBhcmVudEVsZW1lbnQ7aWYoYmxMb2NhbCl7Y2hlY2tQb2ludGVyPWJsTG9jYWwucXVlcnlTZWxlY3RvcigiI2NvbnRlbnRfcG9pbnRlcl9pZCIpO2lmKCFjaGVja1BvaW50ZXIpe2Jsb2Nrc0luQ29udGFpbmVyPWpRdWVyeShibExvY2FsKS5wYXJlbnQoY29udGFpbmVyU3RyaW5nKTtpZihibG9ja3NJbkNvbnRhaW5lciYmYmxvY2tzSW5Db250YWluZXIubGVuZ3RoPjApe2NoZWNrUG9pbnRlcj1qUXVlcnkoYmxvY2tzSW5Db250YWluZXIpLmZpbmQoIiNjb250ZW50X3BvaW50ZXJfaWQiKTtpZihjaGVja1BvaW50ZXImJmNoZWNrUG9pbnRlci5sZW5ndGg+MCl7YmxvY2tzSW5Db250YWluZXI9bnVsbH0KYmxvY2tSZXBlYXRFbmQ9ITB9fWVsc2V7YmxvY2tSZXBlYXRFbmQ9ITB9fWVsc2V7YmxvY2tSZXBlYXRFbmQ9ITB9fQppZihibG9ja3NJbkNvbnRhaW5lciYmYmxvY2tzSW5Db250YWluZXIubGVuZ3RoPjApe2Jsb2Nrc0luQ29udGFpbmVyWzBdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHJiX3RlbXBFbGVtZW50LGJsb2Nrc0luQ29udGFpbmVyWzBdKTtzYW1lRWxlbWVudEFmdGVyRXhjQ2xhc3NJZD0hMTtyZXR1cm4gYmxvY2tzSW5Db250YWluZXJbMF19CnJldHVybiBibFR5cGV9ZWxzZSBpZihzZWFyY2hUeXBlPT0nbm9uLW1hcmtlZCcpe2Jsb2Nrc0luQ29udGFpbmVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYmxUeXBlK2NvbnRhaW5lclN0cmluZytibG9ja1N0clBocCk7aWYoYmxvY2tzSW5Db250YWluZXImJmJsb2Nrc0luQ29udGFpbmVyLmxlbmd0aD4wJiZ1c2VkQmxvY2tTZXR0aW5nQXJyYXkmJnVzZWRCbG9ja1NldHRpbmdBcnJheS5sZW5ndGg+MCl7Zm9yKGk9MDtpPGJsb2Nrc0luQ29udGFpbmVyLmxlbmd0aDtpKyspe2N1cnJlbnRCbG9jaz1ibG9ja3NJbkNvbnRhaW5lcltpXTtjdXJyZW50QmxvY2tJZD1jdXJyZW50QmxvY2sucXVlcnlTZWxlY3RvcignLicrYmxvY2tfY2xhc3Nlcy5qb2luKCcsIC4nKSkuZ2V0QXR0cmlidXRlKCdkYXRhLWlkJyk7Y3VycmVudENvbnRhaW5lcj1udWxsO2ZvcihqPTA7ajx1c2VkQmxvY2tTZXR0aW5nQXJyYXkubGVuZ3RoO2krKyl7aWYodXNlZEJsb2NrU2V0dGluZ0FycmF5W2ldLmlkPT1jdXJyZW50QmxvY2tJZCl7Y3VycmVudEJsb2NrUG9zaXRpb249dXNlZEJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQb3NpdGlvbjtjdXJyZW50Q29udGFpbmVyPWN1cnJlbnRCbG9jay5jbG9zZXN0KGJsVHlwZStjb250YWluZXJTdHJpbmcpO2lmKGN1cnJlbnRCbG9ja1Bvc2l0aW9uPT0wKXtjdXJyZW50Q29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGN1cnJlbnRCbG9jayxjdXJyZW50Q29udGFpbmVyKX1lbHNle2N1cnJlbnRDb250YWluZXIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY3VycmVudEJsb2NrLGN1cnJlbnRDb250YWluZXIubmV4dFNpYmxpbmcpfQpicmVha319fX19fQpyZXR1cm4hMX0KZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50KGJsb2NrTnVtYmVyLGxvY2FsRWxlbWVudENzcyl7bGV0IGh0bWxUb0FkZD0nJztsZXQgbWFyZ2luU3RyaW5nO2xldCB0ZXh0QWxpZ25TdHJpbmc7bGV0IGNvbnRQb2k7bGV0IGVtcHR5VmFsdWVzPSExO2xldCBlbGVtZW50VG9BZGRTdHlsZUxvY2FsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNibG9ja3NBbGlnblN0eWxlJyk7aWYoIWVsZW1lbnRUb0FkZFN0eWxlTG9jYWwpe2NvbnRQb2k9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbnRlbnRfcG9pbnRlcl9pZCcpO2lmKCFjb250UG9pKXtyZXR1cm4hMX0KZWxlbWVudFRvQWRkU3R5bGVMb2NhbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO2VsZW1lbnRUb0FkZFN0eWxlTG9jYWwuc2V0QXR0cmlidXRlKCdpZCcsJ2Jsb2Nrc0FsaWduU3R5bGUnKTtjb250UG9pLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZFN0eWxlTG9jYWwsY29udFBvaSl9CnN3aXRjaChsb2NhbEVsZW1lbnRDc3Mpe2Nhc2UgJ2xlZnQnOmVtcHR5VmFsdWVzPSExO21hcmdpblN0cmluZz0nMCBhdXRvIDAgMCc7dGV4dEFsaWduU3RyaW5nPSdsZWZ0JzticmVhaztjYXNlICdyaWdodCc6ZW1wdHlWYWx1ZXM9ITE7bWFyZ2luU3RyaW5nPScwIDAgMCBhdXRvJzt0ZXh0QWxpZ25TdHJpbmc9J3JpZ2h0JzticmVhaztjYXNlICdjZW50ZXInOmVtcHR5VmFsdWVzPSExO21hcmdpblN0cmluZz0nMCBhdXRvJzt0ZXh0QWxpZ25TdHJpbmc9J2NlbnRlcic7YnJlYWs7Y2FzZSAnZGVmYXVsdCc6ZW1wdHlWYWx1ZXM9ITA7bWFyZ2luU3RyaW5nPSdkZWZhdWx0Jzt0ZXh0QWxpZ25TdHJpbmc9J2RlZmF1bHQnO2JyZWFrfQppZighZW1wdHlWYWx1ZXMpe2h0bWxUb0FkZD0nLnBlcmNlbnRQb2ludGVyQ2xhc3MgID4gKltkYXRhLWlkPSInK2Jsb2NrTnVtYmVyKyciXSB7XG4nKycgICAgbWFyZ2luOiAnK21hcmdpblN0cmluZysnO1xuJysnfVxuJ30KZWxlbWVudFRvQWRkU3R5bGVMb2NhbC5pbm5lckhUTUwrPWh0bWxUb0FkZDtyZXR1cm4gdGV4dEFsaWduU3RyaW5nfQpmdW5jdGlvbiBpbml0VGFyZ2V0VG9JbnNlcnQocG9zaXRpb24sdHlwZSxjdXJyZW50RWxlbWVudCl7bGV0IHBvc0N1cnJlbnRFbGVtZW50O2xldCB1c2VkRWxlbWVudDtpZih0eXBlPT0nZWxlbWVudCcpe2lmKHBvc2l0aW9uPT0wKXtwb3NDdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudDtpZighKHR5cGVvZiBvYmxpZ2F0b3J5TWFyZ2luIT09J3VuZGVmaW5lZCcmJm9ibGlnYXRvcnlNYXJnaW49PT0xKSl7Y3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncmZ3cF9yZW1vdmVkTWFyZ2luVG9wJyl9fWVsc2V7cG9zQ3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnQubmV4dFNpYmxpbmc7aWYoISh0eXBlb2Ygb2JsaWdhdG9yeU1hcmdpbiE9PSd1bmRlZmluZWQnJiZvYmxpZ2F0b3J5TWFyZ2luPT09MSkpe2N1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3Jmd3BfcmVtb3ZlZE1hcmdpbkJvdHRvbScpfX0KY3VycmVudEVsZW1lbnQuc3R5bGUuY2xlYXI9J2JvdGgnfWVsc2V7dXNlZEVsZW1lbnQ9Y3VycmVudEVsZW1lbnQ7aWYocG9zaXRpb249PTApe3Bvc0N1cnJlbnRFbGVtZW50PXVzZWRFbGVtZW50fWVsc2V7cG9zQ3VycmVudEVsZW1lbnQ9dXNlZEVsZW1lbnQubmV4dFNpYmxpbmd9fQpyZXR1cm4gcG9zQ3VycmVudEVsZW1lbnR9CmZ1bmN0aW9uIGNoZWNrQWRzV2lkdGgoY29udGVudF9wb2ludGVyLHBvc0N1cnJlbnRFbGVtZW50LGN1cnJlbnRFbGVtZW50KXtsZXQgd2lkdGhDaGVja2VyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3aWR0aENoZWNrZXInKTtsZXQgd2lkdGhDaGVja2VyU3R5bGU9bnVsbDtsZXQgY29udGVudF9wb2ludGVyU3R5bGU9Z2V0Q29tcHV0ZWRTdHlsZShjb250ZW50X3BvaW50ZXIpO2xldCBjb250ZW50PWNvbnRlbnRfcG9pbnRlci5wYXJlbnRFbGVtZW50O2lmKCF3aWR0aENoZWNrZXIpe3dpZHRoQ2hlY2tlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt3aWR0aENoZWNrZXIuc2V0QXR0cmlidXRlKCdpZCcsJ3dpZHRoQ2hlY2tlcicpO3dpZHRoQ2hlY2tlci5zdHlsZS5kaXNwbGF5PSdmbGV4J30KaWYoY29udGVudCl7cG9zQ3VycmVudEVsZW1lbnQ9aW5pdFRhcmdldFRvSW5zZXJ0KHBvc0N1cnJlbnRFbGVtZW50LCd0ZXJtJyxjdXJyZW50RWxlbWVudCk7Y3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod2lkdGhDaGVja2VyLHBvc0N1cnJlbnRFbGVtZW50KTt3aWR0aENoZWNrZXJTdHlsZT1nZXRDb21wdXRlZFN0eWxlKHdpZHRoQ2hlY2tlcik7aWYocGFyc2VJbnQod2lkdGhDaGVja2VyU3R5bGUud2lkdGgpPj0ocGFyc2VJbnQoY29udGVudF9wb2ludGVyU3R5bGUud2lkdGgpLTUwKSl7cmV0dXJuITB9fQpjdXJyZW50RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyYl90ZW1wRWxlbWVudCxjdXJyZW50RWxlbWVudC5uZXh0U2libGluZyk7cmJfdGVtcEVsZW1lbnRfY2hlY2s9ITA7cmV0dXJuITF9CmZ1bmN0aW9uIGN1cnJlbnRFbGVtZW50UmVjZWl2ZXJTcGVjKHJldmVydCxjdXJTdW0sZWxMaXN0LGN1cnJlbnRFbGVtZW50KXtsZXQgb3JpZ0N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50O2xldCBjb250ZW50X3BvaW50ZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NvbnRlbnRfcG9pbnRlcl9pZCIpO2xldCBzYW1lRWxlbWVudEFmdGVyV2lkdGg9ITE7bGV0IHRlc3RDb3U9MDt3aGlsZShlbExpc3RbY3VyU3VtXSYmc2FtZUVsZW1lbnRBZnRlcldpZHRoPT0hMSYmdGVzdENvdTw1KXtjdXJyZW50RWxlbWVudD1lbExpc3RbY3VyU3VtXS5lbGVtZW50O3RyeXtzYW1lRWxlbWVudEFmdGVyV2lkdGg9ITA7c2FtZUVsZW1lbnRBZnRlcldpZHRoPWNoZWNrQWRzV2lkdGgoY29udGVudF9wb2ludGVyLDAsY3VycmVudEVsZW1lbnQpfWNhdGNoKGV4KXtjb25zb2xlLmxvZyhleC5tZXNzYWdlKX0KcmV2ZXJ0P2N1clN1bS0tOmN1clN1bSsrO3Rlc3RDb3UrK30KcmV0dXJuIGN1cnJlbnRFbGVtZW50P2N1cnJlbnRFbGVtZW50Om9yaWdDdXJyZW50RWxlbWVudH0KZnVuY3Rpb24gZXhjSWRDbFVucGFja2VyKCl7bGV0IGV4Y0Fycj1bXSxjb3U9MCxjdXJyRXhjU3RyPScnLGN1ckV4Y0ZpcnN0PScnO2V4Y0Fyci5pZD1bXTtleGNBcnJbJ2NsYXNzJ109W107ZXhjQXJyLnRhZz1bXTtpZihleGNJZENsYXNzJiZleGNJZENsYXNzLmxlbmd0aD4wKXt3aGlsZShleGNJZENsYXNzW2NvdV0pe2N1cnJFeGNTdHI9ZXhjSWRDbGFzc1tjb3VdO2lmKGN1cnJFeGNTdHIubGVuZ3RoPjApe2N1ckV4Y0ZpcnN0PWN1cnJFeGNTdHIuc3Vic3RyaW5nKDAsMSk7c3dpdGNoKGN1ckV4Y0ZpcnN0KXtjYXNlICcjJzppZihjdXJyRXhjU3RyLmxlbmd0aD4xKXtjdXJyRXhjU3RyPWN1cnJFeGNTdHIuc3Vic3RyaW5nKDEpO2V4Y0Fyci5pZC5wdXNoKGN1cnJFeGNTdHIpfQpicmVhaztjYXNlICcuJzppZihjdXJyRXhjU3RyLmxlbmd0aD4xKXtjdXJyRXhjU3RyPWN1cnJFeGNTdHIuc3Vic3RyaW5nKDEpO2V4Y0FyclsnY2xhc3MnXS5wdXNoKGN1cnJFeGNTdHIpfQpicmVhaztkZWZhdWx0OmV4Y0Fyci50YWcucHVzaChjdXJyRXhjU3RyKTticmVha30KY291Kyt9fX0KcmV0dXJuIGV4Y0Fycn0KZnVuY3Rpb24gYXN5bmNCbG9ja3NJbnNlcnRpbmdGdW5jdGlvbihibG9ja1NldHRpbmdBcnJheSl7dHJ5e3ZhciBjb250ZW50X3BvaW50ZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NvbnRlbnRfcG9pbnRlcl9pZCIpO3ZhciBwYXJlbnRfd2l0aF9jb250ZW50PWNvbnRlbnRfcG9pbnRlci5wYXJlbnRFbGVtZW50O3ZhciBsb3JkT2ZFbGVtZW50cz1wYXJlbnRfd2l0aF9jb250ZW50O3BhcmVudF93aXRoX2NvbnRlbnQ9cGFyZW50X3dpdGhfY29udGVudC5wYXJlbnRFbGVtZW50O3ZhciBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3ZhciBlbGVtZW50VG9BZGQ7dmFyIGVsZW1lbnRUb0FkZFN0eWxlO3ZhciBwb29sYmFja0k9MDt2YXIgY291bnRlcj0wO3ZhciBjdXJyZW50RWxlbWVudDt2YXIgcmVwZWF0YWJsZUN1cnJlbnRFbGVtZW50O3ZhciByZXBlYXRhYmxlU3VjY2Vzczt2YXIgcmVDb3U7dmFyIGN1ckZpcnN0UGxhY2U7dmFyIGN1ckVsZW1lbnRDb3VudDt2YXIgY3VyRWxlbWVudFN0ZXA7dmFyIGJhY2tFbGVtZW50PTA7dmFyIHN1bVJlc3VsdD0wO3ZhciBjdXJTdW1SZXN1bHQ9MDt2YXIgcmVwZWF0PSExO3ZhciBjdXJyZW50RWxlbWVudENoZWNrZXI9ITE7bGV0IGNvbnRhaW5lckZvcjZ0aD1bXTtsZXQgY29udGFpbmVyRm9yN3RoPVtdO3ZhciBwb3NDdXJyZW50RWxlbWVudDt2YXIgYmxvY2tfbnVtYmVyO2xldCBjb250ZW50TGVuZ3RoPWNvbnRlbnRfcG9pbnRlci5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29udGVudC1sZW5ndGgnKTtsZXQgcmVqZWN0ZWRCbG9ja3M9Y29udGVudF9wb2ludGVyLmdldEF0dHJpYnV0ZSgnZGF0YS1yZWplY3RlZC1ibG9ja3MnKTtpZihyZWplY3RlZEJsb2NrcyYmcmVqZWN0ZWRCbG9ja3MubGVuZ3RoPjApe3JlamVjdGVkQmxvY2tzPXJlamVjdGVkQmxvY2tzLnNwbGl0KCcsJyl9CmxldCB3aWR0aENoZWNrPSExO2xldCBjdXJyZW50RWxlbWVudExpc3Q7dmFyIHRlc3RFbGVtZW50MT1udWxsO3ZhciB0ZXJtb3Jhcml0eV9wYXJlbnRfd2l0aF9jb250ZW50PXBhcmVudF93aXRoX2NvbnRlbnQ7dmFyIHRlcm1vcmFyaXR5X3BhcmVudF93aXRoX2NvbnRlbnRfbGVuZ3RoPTA7dmFyIGhlYWRlcnNMaXN0PVsnaDEnLCdoMicsJ2gzJywnaDQnLCdoNScsJ2g2J107Zm9yKHZhciBoYzE9MDtoYzE8aGVhZGVyc0xpc3QubGVuZ3RoO2hjMSsrKXt0ZXJtb3Jhcml0eV9wYXJlbnRfd2l0aF9jb250ZW50X2xlbmd0aCs9dGVybW9yYXJpdHlfcGFyZW50X3dpdGhfY29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShoZWFkZXJzTGlzdFtoYzFdKS5sZW5ndGh9CmxldCBkZXRhaWxlZEVsZW1lbnRMaXN0O2xldCBFeGNTdHJDb3U9MTtsZXQgZGV0YWlsZWRRdWVyeVN0cmluZztsZXQgdXNlZEVsZW1lbnQ7bGV0IHRhZ0xpc3Q9W107bGV0IGxvY2FsU3VtUmVzdWx0O2xldCBiaW5kZXJOYW1lO3ZhciByZW1vdmVDbGVhcmluZzt2YXIgcmVwZWF0YWJsZUJsb2NrSWRlbnRpZmllcj0wO3ZhciBpO2lmKGNvbnRlbnRMZW5ndGg8MSl7Y29udGVudExlbmd0aD1wYXJlbnRfd2l0aF9jb250ZW50LmlubmVyVGV4dC5sZW5ndGh9CnJiX3RlbXBFbGVtZW50PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNyYl90ZW1wRWxlbWVudCcpO2lmKCFyYl90ZW1wRWxlbWVudCl7cmJfdGVtcEVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3JiX3RlbXBFbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCdyYl90ZW1wRWxlbWVudCcpfQpmdW5jdGlvbiBnZXRGcm9tQ29uc3RydWN0aW9ucyhjdXJyZW50RWxlbWVudCl7aWYoY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSJibG9ja3F1b3RlIil7Y3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtjdXJyZW50RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyYl90ZW1wRWxlbWVudCxjdXJyZW50RWxlbWVudCk7cmJfdGVtcEVsZW1lbnRfY2hlY2s9ITA7c2FtZUVsZW1lbnRBZnRlckZyb21Db25zdHJ1Y3Rpb249ITF9ZWxzZSBpZihbInRyIiwidGQiLCJ0aCIsInRoZWFkIiwidGJvZHkiLCJ0YWJsZSJdLmluY2x1ZGVzKGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSl7Y3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDt3aGlsZShbInRyIiwidGQiLCJ0aCIsInRoZWFkIiwidGJvZHkiLCJ0YWJsZSJdLmluY2x1ZGVzKGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSl7Y3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudH0KY3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocmJfdGVtcEVsZW1lbnQsY3VycmVudEVsZW1lbnQpO3JiX3RlbXBFbGVtZW50X2NoZWNrPSEwO3NhbWVFbGVtZW50QWZ0ZXJGcm9tQ29uc3RydWN0aW9uPSExfQpyZXR1cm4gY3VycmVudEVsZW1lbnR9CmZ1bmN0aW9uIGRpcmVjdENsYXNzRWxlbWVudERldGVjdGluZyhibG9ja1NldHRpbmdBcnJheSxkaXJlY3RFbGVtZW50KXtsZXQgZmluZFF1ZXJ5PTA7bGV0IGRpcmVjdENsYXNzRWxlbWVudFJlc3VsdD1bXTtjdXJyZW50RWxlbWVudD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGRpcmVjdEVsZW1lbnQpO2lmKGN1cnJlbnRFbGVtZW50Lmxlbmd0aD4wKXtpZihibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2U+MSl7aWYoY3VycmVudEVsZW1lbnQubGVuZ3RoPj1ibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2Upe2N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50W2Jsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZS0xXX1lbHNlIGlmKGN1cnJlbnRFbGVtZW50Lmxlbmd0aDxibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2Upe2N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50W2N1cnJlbnRFbGVtZW50Lmxlbmd0aC0xXX1lbHNle2ZpbmRRdWVyeT0xfX1lbHNlIGlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZTwwKXtpZigoY3VycmVudEVsZW1lbnQubGVuZ3RoK2Jsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZSsxKT4wKXtjdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudFtjdXJyZW50RWxlbWVudC5sZW5ndGgrYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBsYWNlXX1lbHNle2ZpbmRRdWVyeT0xfX1lbHNle2ZpbmRRdWVyeT0xfX1lbHNle2ZpbmRRdWVyeT0xfQpkaXJlY3RDbGFzc0VsZW1lbnRSZXN1bHQuZmluZFF1ZXJ5PWZpbmRRdWVyeTtkaXJlY3RDbGFzc0VsZW1lbnRSZXN1bHQuY3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnQ7cmV0dXJuIGRpcmVjdENsYXNzRWxlbWVudFJlc3VsdH0KZnVuY3Rpb24gcGxhY2luZ1RvSDEodXNlZEVsZW1lbnQsZWxlbWVudFRhZ1RvRmluZCl7bGV0IHVzZWxlc3NMZXQ7Y3VycmVudEVsZW1lbnQ9dXNlZEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChlbGVtZW50VGFnVG9GaW5kKTtpZihjdXJyZW50RWxlbWVudC5sZW5ndGg8MSl7aWYodXNlZEVsZW1lbnQucGFyZW50RWxlbWVudCl7dXNlbGVzc0xldD1wbGFjaW5nVG9IMSh1c2VkRWxlbWVudC5wYXJlbnRFbGVtZW50LGVsZW1lbnRUYWdUb0ZpbmQpfX0KcmV0dXJuIGN1cnJlbnRFbGVtZW50fQpmdW5jdGlvbiBlbGVtZW50c0NsZWFuaW5nKGV4Y0FycixlbExpc3QscHdjTG9jYWwsZ2F0aGVyU3RyaW5nKXtsZXQgbWFya2VkQ2xhc3M9J3JiX21faW5jJztsZXQgbWFya2VkQ2xhc3NCYWQ9J3JiX21fZXhjJztsZXQgY291PTA7bGV0IGNvdTE9MDtsZXQgZmluYWxBcnI9W107bGV0IGZpbmFsQXJyQ2xlYXI9W107bGV0IGNoZWNrTmVhcmVzdDtsZXQgb3V0T2ZSYW5nZUNoZWNrO2xldCBnYXRoZXJSZWplY3RlZDtsZXQgYWxsb3dlcjt0cnl7d2hpbGUoZWxMaXN0W2NvdV0pe2FsbG93ZXI9ITA7aWYoIWVsTGlzdFtjb3VdLmNsYXNzTGlzdC5jb250YWlucyhtYXJrZWRDbGFzc0JhZCkpe2lmKGV4Y0FyciYmZXhjQXJyLmxlbmd0aD4wKXtjb3UxPTA7d2hpbGUoZXhjQXJyW2NvdTFdKXtjaGVja05lYXJlc3Q9ZWxMaXN0W2NvdV0ucGFyZW50RWxlbWVudC5jbG9zZXN0KGV4Y0Fycltjb3UxXSk7aWYoY2hlY2tOZWFyZXN0KXtjaGVja05lYXJlc3QuY2xhc3NMaXN0LmFkZCgnY3VyckNsb3Nlc3QnKTtvdXRPZlJhbmdlQ2hlY2s9cHdjTG9jYWwucXVlcnlTZWxlY3RvcignLmN1cnJDbG9zZXN0Jyk7aWYob3V0T2ZSYW5nZUNoZWNrKXthbGxvd2VyPSExO2NoZWNrTmVhcmVzdC5jbGFzc0xpc3QuYWRkKG1hcmtlZENsYXNzKTtnYXRoZXJSZWplY3RlZD1jaGVja05lYXJlc3QucXVlcnlTZWxlY3RvckFsbChnYXRoZXJTdHJpbmcpO2lmKGdhdGhlclJlamVjdGVkLmxlbmd0aD4wKXtmb3IobGV0IGkxPTA7aTE8Z2F0aGVyUmVqZWN0ZWQubGVuZ3RoO2kxKyspe2dhdGhlclJlamVjdGVkW2kxXS5jbGFzc0xpc3QuYWRkKG1hcmtlZENsYXNzQmFkKX19fQpjaGVja05lYXJlc3QuY2xhc3NMaXN0LnJlbW92ZSgnY3VyckNsb3Nlc3QnKX0KY291MSsrfX0KaWYoYWxsb3dlcj09PSEwKXtlbExpc3RbY291XS5jbGFzc0xpc3QuYWRkKG1hcmtlZENsYXNzKX19CmNvdSsrfQpmaW5hbEFycj1wd2NMb2NhbC5xdWVyeVNlbGVjdG9yQWxsKCcuJyttYXJrZWRDbGFzcysnOm5vdCgnK21hcmtlZENsYXNzQmFkKycpJyk7ZmluYWxBcnJDbGVhcj1wd2NMb2NhbC5xdWVyeVNlbGVjdG9yQWxsKCcuJyttYXJrZWRDbGFzcysnLC4nK21hcmtlZENsYXNzQmFkKTtpZihmaW5hbEFyckNsZWFyJiZmaW5hbEFyckNsZWFyLmxlbmd0aD4wKXtmb3IobGV0IGkxPTA7aTE8ZmluYWxBcnJDbGVhci5sZW5ndGg7aTErKyl7ZmluYWxBcnJDbGVhcltpMV0uY2xhc3NMaXN0LnJlbW92ZShtYXJrZWRDbGFzcyxtYXJrZWRDbGFzc0JhZCl9fX1jYXRjaChlcil7Y29uc29sZS5sb2coZXIubWVzc2FnZSl9CnJldHVybiBmaW5hbEFycn0KZnVuY3Rpb24gY3VyZWVudEVsZW1lbnRzR2F0aGVyKHVzZWRFbGVtZW50LGxvb3BMaW1pdD0yLGxvY2FsUHdjPXBhcmVudF93aXRoX2NvbnRlbnQpe2xldCBjdXJFbGVtZW50U2VhcmNoUmVwZWF0ZXI9ITA7bGV0IGN1ckVsZW1lbnRTZWFyY2hDb3VudGVyPTA7bGV0IGN1cnJlbnRFbGVtZW50TG9jPW51bGw7bGV0IEV4Y2x1ZGVkU3RyaW5nQmVnaW49Jyc7bGV0IEV4Y2x1ZGVkU3RyaW5nPScnO2xldCBFeGNsdWRlZFN0cmluZ0VuZD0nJztsZXQgdGFnTGlzdFN0cmluZz0nJztsZXQgdGFnTGlzdFN0cmluZ0V4Yz0nJztsZXQgY291PTA7bGV0IHRhZ0xpc3RDb3U9MDtpZih1c2VkRWxlbWVudD09J2gxJyl7Y3VycmVudEVsZW1lbnRMb2M9cGxhY2luZ1RvSDEobG9jYWxQd2MsdXNlZEVsZW1lbnQpfWVsc2V7aWYodXNlZEVsZW1lbnQ9PSdoMi00Jyl7dGFnTGlzdD1bJ2gyJywnaDMnLCdoMyddfWVsc2V7dGFnTGlzdD1bdXNlZEVsZW1lbnRdfQp3aGlsZSh0YWdMaXN0W3RhZ0xpc3RDb3VdKXt0YWdMaXN0U3RyaW5nKz0oKGNvdSsrPjApPycsJzonJykrdGFnTGlzdFt0YWdMaXN0Q291XTt0YWdMaXN0U3RyaW5nRXhjKz0nOm5vdCgnK3RhZ0xpc3RbdGFnTGlzdENvdV0rJyknO3RhZ0xpc3RDb3UrK30KRXhjbHVkZWRTdHJpbmc9Jyc7aWYoZXhjSWRDbGFzcyYmZXhjSWRDbGFzcy5sZW5ndGg+MCl7Zm9yKGxldCBpMj0wO2kyPGV4Y0lkQ2xhc3MubGVuZ3RoO2kyKyspe2lmKGV4Y0lkQ2xhc3NbaTJdLmxlbmd0aD4wKXtFeGNsdWRlZFN0cmluZys9KGkyPjA/JywnOicnKStleGNJZENsYXNzW2kyXSt0YWdMaXN0U3RyaW5nRXhjfX19CmRldGFpbGVkUXVlcnlTdHJpbmcrPXRhZ0xpc3RTdHJpbmcrJywnK0V4Y2x1ZGVkU3RyaW5nO3doaWxlKGN1ckVsZW1lbnRTZWFyY2hSZXBlYXRlciYmY3VyRWxlbWVudFNlYXJjaENvdW50ZXI8bG9vcExpbWl0KXt0cnl7Y3VycmVudEVsZW1lbnRMb2M9bG9jYWxQd2MucXVlcnlTZWxlY3RvckFsbCh0YWdMaXN0U3RyaW5nKX1jYXRjaChlMSl7Y29uc29sZS5sb2coZTEubWVzc2FnZSl9CmlmKCFjdXJyZW50RWxlbWVudExvYyl7aWYobG9jYWxQd2MucGFyZW50RWxlbWVudCl7bG9jYWxQd2M9bG9jYWxQd2MucGFyZW50RWxlbWVudH1lbHNle2JyZWFrfX1lbHNle2N1cnJlbnRFbGVtZW50TG9jPWVsZW1lbnRzQ2xlYW5pbmcoZXhjSWRDbGFzcyxjdXJyZW50RWxlbWVudExvYyxsb2NhbFB3YyxkZXRhaWxlZFF1ZXJ5U3RyaW5nKTtjdXJFbGVtZW50U2VhcmNoUmVwZWF0ZXI9ITF9CmN1ckVsZW1lbnRTZWFyY2hDb3VudGVyKyt9fQpyZXR1cm4gY3VycmVudEVsZW1lbnRMb2N9CmZ1bmN0aW9uIGN1cnJlbnRFbGVtZW50UmVjZWl2ZXIocmV2ZXJ0LGxvY2FsQ3VyRWw9Y3VycmVudEVsZW1lbnQpe2xldCBvcmlnQ3VyRWw9bG9jYWxDdXJFbDtjdXJTdW1SZXN1bHQ9c3VtUmVzdWx0O2RldGFpbGVkRWxlbWVudExpc3Q9bG9jYWxDdXJFbDtzYW1lRWxlbWVudEFmdGVyV2lkdGg9ITE7bGV0IHRlc3RDb3U9MDt3aGlsZShkZXRhaWxlZEVsZW1lbnRMaXN0W2N1clN1bVJlc3VsdF0mJnNhbWVFbGVtZW50QWZ0ZXJXaWR0aD09ITEmJnRlc3RDb3U8OCl7bG9jYWxDdXJFbD1kZXRhaWxlZEVsZW1lbnRMaXN0W2N1clN1bVJlc3VsdF07dHJ5e3NhbWVFbGVtZW50QWZ0ZXJXaWR0aD0hMDtzYW1lRWxlbWVudEFmdGVyV2lkdGg9Y2hlY2tBZHNXaWR0aChjb250ZW50X3BvaW50ZXIsYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBvc2l0aW9uLGxvY2FsQ3VyRWwpfWNhdGNoKGV4KXtjb25zb2xlLmxvZyhleC5tZXNzYWdlKX0KcmV2ZXJ0P2N1clN1bVJlc3VsdC0tOmN1clN1bVJlc3VsdCsrO3Rlc3RDb3UrK30KaWYobG9jYWxDdXJFbCl7Y3VycmVudEVsZW1lbnRDaGVja2VyPSEwfQpyZXR1cm4gbG9jYWxDdXJFbD9sb2NhbEN1ckVsOm9yaWdDdXJFbH0KZnVuY3Rpb24gZW5kaW5nQWN0aW9ucyhibG9ja19udW1iZXIpe3VzZWRCbG9ja1NldHRpbmdBcnJheUlkcy5wdXNoKGJsb2NrX251bWJlcik7YmxvY2tTZXR0aW5nQXJyYXkuc3BsaWNlKGktLSwxKTtwb29sYmFja0k9MX0KZm9yKGk9MDtpPGJsb2NrU2V0dGluZ0FycmF5Lmxlbmd0aDtpKyspe2N1cnJlbnRFbGVtZW50PW51bGw7Y3VycmVudEVsZW1lbnRDaGVja2VyPSExO3NhbWVFbGVtZW50QWZ0ZXJXaWR0aD0hMTtzYW1lRWxlbWVudEFmdGVyRXhjQ2xhc3NJZD0hMTtzYW1lRWxlbWVudEFmdGVyRnJvbUNvbnN0cnVjdGlvbj0hMTt0YWdMaXN0Q291PTA7cG9vbGJhY2tJPTA7ZGV0YWlsZWRRdWVyeVN0cmluZz0nJztiaW5kZXJOYW1lPWVsZW1lbnRCaW5kZXJOYW1lR2VuZXJhdG9yKCk7dHJ5e2lmKCFibG9ja1NldHRpbmdBcnJheVtpXS50ZXh0fHwoYmxvY2tTZXR0aW5nQXJyYXlbaV0udGV4dCYmYmxvY2tTZXR0aW5nQXJyYXlbaV0udGV4dC5sZW5ndGg8MSl8fChyZWplY3RlZEJsb2NrcyYmcmVqZWN0ZWRCbG9ja3MuaW5jbHVkZXMoYmxvY2tTZXR0aW5nQXJyYXlbaV0uaWQpKXx8KChibG9ja1NldHRpbmdBcnJheVtpXS5tYXhIZWFkZXJzPjApJiYoYmxvY2tTZXR0aW5nQXJyYXlbaV0ubWF4SGVhZGVyczxwYXJzZUludCh0ZXJtb3Jhcml0eV9wYXJlbnRfd2l0aF9jb250ZW50X2xlbmd0aCkpKXx8KChibG9ja1NldHRpbmdBcnJheVtpXS5tYXhTeW1ib2xzPjApJiYoYmxvY2tTZXR0aW5nQXJyYXlbaV0ubWF4U3ltYm9sczxwYXJzZUludChjb250ZW50TGVuZ3RoKSkpfHwoY29udGVudF9wb2ludGVyLmNsYXNzTGlzdC5jb250YWlucygiaGFyZC1jb250ZW50IikmJmJsb2NrU2V0dGluZ0FycmF5W2ldLnNldHRpbmdfdHlwZSE9Mykpe2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTE7Y29udGludWV9CmJsb2NrX251bWJlcj0wO2VsZW1lbnRUb0FkZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgicGVyY2VudFBvaW50ZXJDbGFzcyIpO2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJtYXJrZWQiKTtpZihibG9ja1NldHRpbmdBcnJheVtpXS5zYz09MSl7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5hZGQoInNjTWFyayIpfQplbGVtZW50VG9BZGQuaW5uZXJIVE1MPWJsb2NrU2V0dGluZ0FycmF5W2ldLnRleHQ7ZWxlbWVudFRvQWRkLmRhdGFzZXQucmJpbmRlcj1iaW5kZXJOYW1lO2Jsb2NrX251bWJlcj1lbGVtZW50VG9BZGQuY2hpbGRyZW5bMF0uYXR0cmlidXRlc1snZGF0YS1pZCddLnZhbHVlO2lmKGJsb2NrRHVwbGljYXRlPT0nbm8nKXtpZih1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMubGVuZ3RoPjApe2ZvcihsZXQgaTE9MDtpMTx1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMubGVuZ3RoO2kxKyspe2lmKGJsb2NrX251bWJlcj09dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzW2kxXSl7YmxvY2tTZXR0aW5nQXJyYXkuc3BsaWNlKGktLSwxKTtwb29sYmFja0k9MTticmVha319CmlmKHBvb2xiYWNrST09MSl7Y29udGludWV9fX0KZWxlbWVudFRvQWRkU3R5bGU9Y3JlYXRlU3R5bGVFbGVtZW50KGJsb2NrX251bWJlcixibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50Q3NzKTtpZihlbGVtZW50VG9BZGRTdHlsZSYmZWxlbWVudFRvQWRkU3R5bGUhPSdkZWZhdWx0Jyl7ZWxlbWVudFRvQWRkLnN0eWxlLnRleHRBbGlnbj1lbGVtZW50VG9BZGRTdHlsZX0KaWYoKGJsb2NrU2V0dGluZ0FycmF5W2ldLm1pbkhlYWRlcnM+MCkmJihibG9ja1NldHRpbmdBcnJheVtpXS5taW5IZWFkZXJzPnRlcm1vcmFyaXR5X3BhcmVudF93aXRoX2NvbnRlbnRfbGVuZ3RoKSl7Y29udGludWV9CmlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLm1pblN5bWJvbHM+Y29udGVudExlbmd0aCl7Y29udGludWV9CmlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLnNldHRpbmdfdHlwZT09MSl7Y3VycmVudEVsZW1lbnQ9Y3VyZWVudEVsZW1lbnRzR2F0aGVyKGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnQudG9Mb3dlckNhc2UoKSk7aWYoY3VycmVudEVsZW1lbnQpe2lmKGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZTwwKXtzdW1SZXN1bHQ9Y3VycmVudEVsZW1lbnQubGVuZ3RoK2Jsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZTtpZihzdW1SZXN1bHQ+PTAmJnN1bVJlc3VsdDxjdXJyZW50RWxlbWVudC5sZW5ndGgpe2N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50UmVjZWl2ZXIoITApfX1lbHNle3N1bVJlc3VsdD1ibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2UtMTtpZihzdW1SZXN1bHQ8Y3VycmVudEVsZW1lbnQubGVuZ3RoKXtjdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudFJlY2VpdmVyKCExKX19fQppZihjdXJyZW50RWxlbWVudCE9dW5kZWZpbmVkJiZjdXJyZW50RWxlbWVudCE9bnVsbCYmY3VycmVudEVsZW1lbnRDaGVja2VyKXtwb3NDdXJyZW50RWxlbWVudD1pbml0VGFyZ2V0VG9JbnNlcnQoYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBvc2l0aW9uLCdlbGVtZW50JyxjdXJyZW50RWxlbWVudCk7Y3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudFRvQWRkLHBvc0N1cnJlbnRFbGVtZW50KTtjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpO3VzZWRCbG9ja1NldHRpbmdBcnJheUlkcy5wdXNoKGJsb2NrX251bWJlcik7YmxvY2tTZXR0aW5nQXJyYXkuc3BsaWNlKGktLSwxKTtwb29sYmFja0k9MTtyYl90ZW1wRWxlbWVudF9jaGVjaz0hMX1lbHNle3JlcGVhdD0hMH19ZWxzZSBpZihibG9ja1NldHRpbmdBcnJheVtpXS5zZXR0aW5nX3R5cGU9PTIpe2lmKGJsb2NrRHVwbGljYXRlPT0nbm8nKXtibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50Q291bnQ9MX0KcmVwZWF0YWJsZUN1cnJlbnRFbGVtZW50PVtdO3JlQ291PTA7Y3VyRmlyc3RQbGFjZT1ibG9ja1NldHRpbmdBcnJheVtpXS5maXJzdFBsYWNlO2N1ckVsZW1lbnRDb3VudD1ibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50Q291bnQ7Y3VyRWxlbWVudFN0ZXA9YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFN0ZXA7cmVwZWF0YWJsZVN1Y2Nlc3M9ITE7ZWxlbWVudFRvQWRkU3R5bGU9Y3JlYXRlU3R5bGVFbGVtZW50KGJsb2NrX251bWJlcixibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50Q3NzKTtyZXBlYXRhYmxlQ3VycmVudEVsZW1lbnQ9Y3VyZWVudEVsZW1lbnRzR2F0aGVyKGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnQudG9Mb3dlckNhc2UoKSk7aWYocmVwZWF0YWJsZUN1cnJlbnRFbGVtZW50KXtmb3IobGV0IGkxPTA7aTE8YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudENvdW50O2kxKyspe2N1cnJlbnRFbGVtZW50Q2hlY2tlcj0hMTtsZXQgcmVwRWxlbWVudFRvQWRkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JlcEVsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJwZXJjZW50UG9pbnRlckNsYXNzIik7cmVwRWxlbWVudFRvQWRkLmNsYXNzTGlzdC5hZGQoIm1hcmtlZCIpO2lmKGJsb2NrU2V0dGluZ0FycmF5W2ldLnNjPT0xKXtyZXBFbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgic2NNYXJrIil9CnJlcEVsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJyZXBlYXRhYmxlLW1hcmstIityZXBlYXRhYmxlQmxvY2tJZGVudGlmaWVyKTtyZXBFbGVtZW50VG9BZGQuaW5uZXJIVE1MPWJsb2NrU2V0dGluZ0FycmF5W2ldLnRleHQ7aWYoZWxlbWVudFRvQWRkU3R5bGUmJmVsZW1lbnRUb0FkZFN0eWxlIT0nZGVmYXVsdCcpe3JlcEVsZW1lbnRUb0FkZC5zdHlsZS50ZXh0QWxpZ249ZWxlbWVudFRvQWRkU3R5bGV9CnN1bVJlc3VsdD1NYXRoLnJvdW5kKHBhcnNlSW50KGJsb2NrU2V0dGluZ0FycmF5W2ldLmZpcnN0UGxhY2UpKyhpMSpwYXJzZUludChibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50U3RlcCkpLTEpO2lmKHN1bVJlc3VsdDxyZXBlYXRhYmxlQ3VycmVudEVsZW1lbnQubGVuZ3RoKXtjdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudFJlY2VpdmVyKCExLHJlcGVhdGFibGVDdXJyZW50RWxlbWVudCl9CmlmKGN1cnJlbnRFbGVtZW50IT11bmRlZmluZWQmJmN1cnJlbnRFbGVtZW50IT1udWxsJiZjdXJyZW50RWxlbWVudENoZWNrZXIpe3Bvc0N1cnJlbnRFbGVtZW50PWluaXRUYXJnZXRUb0luc2VydChibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UG9zaXRpb24sJ2VsZW1lbnQnLGN1cnJlbnRFbGVtZW50KTtjdXJyZW50RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyZXBFbGVtZW50VG9BZGQscG9zQ3VycmVudEVsZW1lbnQpO2N1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3JiaW5kZXItJytiaW5kZXJOYW1lKTtyZXBFbGVtZW50VG9BZGQuY2xhc3NMaXN0LnJlbW92ZSgnY292ZXJlZEFkJyk7Y3VyRmlyc3RQbGFjZT1zdW1SZXN1bHQrcGFyc2VJbnQoYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFN0ZXApKzE7Y3VyRWxlbWVudENvdW50LS07cmVwZWF0YWJsZVN1Y2Nlc3M9ITB9ZWxzZXtyZXBlYXRhYmxlU3VjY2Vzcz0hMTticmVha319fQppZihyZXBlYXRhYmxlU3VjY2Vzcz09ITApe3VzZWRCbG9ja1NldHRpbmdBcnJheUlkcy5wdXNoKGJsb2NrX251bWJlcik7YmxvY2tTZXR0aW5nQXJyYXkuc3BsaWNlKGktLSwxKTtwb29sYmFja0k9MTtyZXBlYXRhYmxlQmxvY2tJZGVudGlmaWVyKyt9ZWxzZXtpZighYmxvY2tTZXR0aW5nQXJyYXlbaV0udW5zdWNjZXNzKXtibG9ja1NldHRpbmdBcnJheVtpXS51bnN1Y2Nlc3M9MX1lbHNle2Jsb2NrU2V0dGluZ0FycmF5W2ldLnVuc3VjY2Vzcz1NYXRoLnJvdW5kKGJsb2NrU2V0dGluZ0FycmF5W2ldLnVuc3VjY2VzcysxKX0KaWYoYmxvY2tTZXR0aW5nQXJyYXlbaV0udW5zdWNjZXNzPjEwKXt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTF9ZWxzZXtibG9ja1NldHRpbmdBcnJheVtpXS5maXJzdFBsYWNlPWN1ckZpcnN0UGxhY2U7YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudENvdW50PWN1ckVsZW1lbnRDb3VudDtibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50U3RlcD1jdXJFbGVtZW50U3RlcDtyZXBlYXQ9ITB9fX1lbHNlIGlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLnNldHRpbmdfdHlwZT09Myl7bGV0IGVsZW1lbnRUeXBlU3ltYm9sPScnO2xldCBlbGVtZW50U3BhY2VTeW1ib2w9Jyc7bGV0IGVsZW1lbnROYW1lPScnO2xldCBlbGVtZW50VHlwZT0nJztsZXQgZWxlbWVudFRhZz0nJztsZXQgZmluZFF1ZXJ5PTA7bGV0IGRpcmVjdENsYXNzUmVzdWx0PVtdO2xldCBkaXJlY3RFbGVtZW50PWJsb2NrU2V0dGluZ0FycmF5W2ldLmRpcmVjdEVsZW1lbnQudHJpbSgpO2lmKGRpcmVjdEVsZW1lbnQuc2VhcmNoKCcjJyk+LTEpe2ZpbmRRdWVyeT0xfWVsc2UgaWYoKGRpcmVjdEVsZW1lbnQuc2VhcmNoKCcjJyk8MCkmJihkaXJlY3RFbGVtZW50LnNlYXJjaCgnLicpPi0xKSl7ZGlyZWN0Q2xhc3NSZXN1bHQ9ZGlyZWN0Q2xhc3NFbGVtZW50RGV0ZWN0aW5nKGJsb2NrU2V0dGluZ0FycmF5LGRpcmVjdEVsZW1lbnQpO2ZpbmRRdWVyeT1kaXJlY3RDbGFzc1Jlc3VsdC5maW5kUXVlcnk7Y3VycmVudEVsZW1lbnQ9ZGlyZWN0Q2xhc3NSZXN1bHQuY3VycmVudEVsZW1lbnR9CmlmKGZpbmRRdWVyeT09MSl7Y3VycmVudEVsZW1lbnQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihkaXJlY3RFbGVtZW50KX0KaWYoY3VycmVudEVsZW1lbnQpe2N1cnJlbnRFbGVtZW50Q2hlY2tlcj0hMH0KaWYoY3VycmVudEVsZW1lbnQhPXVuZGVmaW5lZCYmY3VycmVudEVsZW1lbnQhPW51bGwmJmN1cnJlbnRFbGVtZW50Q2hlY2tlcil7cG9zQ3VycmVudEVsZW1lbnQ9aW5pdFRhcmdldFRvSW5zZXJ0KGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQb3NpdGlvbiwnZWxlbWVudCcsY3VycmVudEVsZW1lbnQpO2N1cnJlbnRFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZCxwb3NDdXJyZW50RWxlbWVudCk7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpO2N1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3JiaW5kZXItJytiaW5kZXJOYW1lKTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTF9ZWxzZXtyZXBlYXQ9ITB9fWVsc2UgaWYoYmxvY2tTZXR0aW5nQXJyYXlbaV0uc2V0dGluZ190eXBlPT00KXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY29udGVudF9wb2ludGVyX2lkIikucGFyZW50RWxlbWVudC5hcHBlbmQoZWxlbWVudFRvQWRkKTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTF9ZWxzZSBpZihibG9ja1NldHRpbmdBcnJheVtpXS5zZXR0aW5nX3R5cGU9PTUpe2xldCBjdXJyZW50RWxlbWVudExpc3Q9Y3VyZWVudEVsZW1lbnRzR2F0aGVyKCdwJywxLGNvbnRlbnRfcG9pbnRlci5wYXJlbnRFbGVtZW50KTtpZihjdXJyZW50RWxlbWVudExpc3QmJmN1cnJlbnRFbGVtZW50TGlzdC5sZW5ndGg+MCl7bGV0IHBDb3VudD1jdXJyZW50RWxlbWVudExpc3QubGVuZ3RoO2xldCBlbGVtZW50TnVtYmVyPU1hdGgucm91bmQocENvdW50LzIpO2lmKHBDb3VudD4xKXtjdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudExpc3RbZWxlbWVudE51bWJlcisxXX0KaWYoY3VycmVudEVsZW1lbnQhPXVuZGVmaW5lZCYmY3VycmVudEVsZW1lbnQhPW51bGwpe2lmKHBDb3VudD4xKXtjdXJyZW50RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50VG9BZGQsY3VycmVudEVsZW1lbnQpfWVsc2V7Y3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudFRvQWRkLGN1cnJlbnRFbGVtZW50Lm5leHRTaWJsaW5nKX0KZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpO2N1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3JiaW5kZXItJytiaW5kZXJOYW1lKTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTF9ZWxzZXtyZXBlYXQ9ITB9fWVsc2V7cmVwZWF0PSEwfX1lbHNlIGlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLnNldHRpbmdfdHlwZT09Nil7aWYoY29udGFpbmVyRm9yNnRoLmxlbmd0aD4wKXtmb3IobGV0IGo9MDtqPGNvbnRhaW5lckZvcjZ0aC5sZW5ndGg7aisrKXtpZihjb250YWluZXJGb3I2dGhbal0uZWxlbWVudFBsYWNlPmJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZSl7aWYoaj09Y29udGFpbmVyRm9yNnRoLmxlbmd0aC0xKXtjb250YWluZXJGb3I2dGgucHVzaChibG9ja1NldHRpbmdBcnJheVtpXSk7dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xO2JyZWFrfX1lbHNle2ZvcihsZXQgaz1jb250YWluZXJGb3I2dGgubGVuZ3RoLTE7az5qLTE7ay0tKXtjb250YWluZXJGb3I2dGhbaysxXT1jb250YWluZXJGb3I2dGhba119CmNvbnRhaW5lckZvcjZ0aFtqXT1ibG9ja1NldHRpbmdBcnJheVtpXTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTE7YnJlYWt9fX1lbHNle2NvbnRhaW5lckZvcjZ0aC5wdXNoKGJsb2NrU2V0dGluZ0FycmF5W2ldKTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTF9fWVsc2UgaWYoYmxvY2tTZXR0aW5nQXJyYXlbaV0uc2V0dGluZ190eXBlPT03KXtpZihjb250YWluZXJGb3I3dGgubGVuZ3RoPjApe2ZvcihsZXQgaj0wO2o8Y29udGFpbmVyRm9yN3RoLmxlbmd0aDtqKyspe2lmKGNvbnRhaW5lckZvcjd0aFtqXS5lbGVtZW50UGxhY2U+YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBsYWNlKXtpZihqPT1jb250YWluZXJGb3I3dGgubGVuZ3RoLTEpe2NvbnRhaW5lckZvcjd0aC5wdXNoKGJsb2NrU2V0dGluZ0FycmF5W2ldKTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTE7YnJlYWt9fWVsc2V7Zm9yKGxldCBrPWNvbnRhaW5lckZvcjd0aC5sZW5ndGgtMTtrPmotMTtrLS0pe2NvbnRhaW5lckZvcjd0aFtrKzFdPWNvbnRhaW5lckZvcjd0aFtrXX0KY29udGFpbmVyRm9yN3RoW2pdPWJsb2NrU2V0dGluZ0FycmF5W2ldO3VzZWRCbG9ja1NldHRpbmdBcnJheUlkcy5wdXNoKGJsb2NrX251bWJlcik7YmxvY2tTZXR0aW5nQXJyYXkuc3BsaWNlKGktLSwxKTtwb29sYmFja0k9MTticmVha319fWVsc2V7Y29udGFpbmVyRm9yN3RoLnB1c2goYmxvY2tTZXR0aW5nQXJyYXlbaV0pO3VzZWRCbG9ja1NldHRpbmdBcnJheUlkcy5wdXNoKGJsb2NrX251bWJlcik7YmxvY2tTZXR0aW5nQXJyYXkuc3BsaWNlKGktLSwxKTtwb29sYmFja0k9MX19fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUubWVzc2FnZSl9fQp2YXIgYXJyYXk9dGV4dExlbmd0aEdhdGhlcmVyKGxvcmRPZkVsZW1lbnRzKSx0bEFycmF5PWFycmF5LmFycmF5LGxlbmd0aD1hcnJheS5sZW5ndGg7aWYoY29udGFpbmVyRm9yNnRoLmxlbmd0aD4wKXtwZXJjZW50SW5zZXJ0ZXIobG9yZE9mRWxlbWVudHMsY29udGFpbmVyRm9yNnRoLHRsQXJyYXksbGVuZ3RoKX0KaWYoY29udGFpbmVyRm9yN3RoLmxlbmd0aD4wKXtzeW1ib2xJbnNlcnRlcihsb3JkT2ZFbGVtZW50cyxjb250YWluZXJGb3I3dGgsdGxBcnJheSl9CnNob3J0Y29kZXNJbnNlcnQoKTtsZXQgc3RvcHBlcj0wO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJyxmdW5jdGlvbigpe2lmKHJlcGVhdD0hMCl7c2V0VGltZW91dChmdW5jdGlvbigpe2FzeW5jQmxvY2tzSW5zZXJ0aW5nRnVuY3Rpb24oYmxvY2tTZXR0aW5nQXJyYXkpfSwxMDApfX0pfWNhdGNoKGUpe2NvbnNvbGUubG9nKGUubWVzc2FnZSl9fQpmdW5jdGlvbiBwb3NzaWJsZVRhZ3NJbkNoZWNrQ29uZmlybWVyKHBvc3NpYmxlVGFnc0FycmF5LHBvc3NpYmxlVGFnc0luQ2hlY2spe2lmKHBvc3NpYmxlVGFnc0FycmF5LmluY2x1ZGVzKCJMSSIpKXtpZihwb3NzaWJsZVRhZ3NBcnJheS5pbmNsdWRlcygiVUwiKSl7cG9zc2libGVUYWdzSW5DaGVjay5wdXNoKCJVTCIpfQppZihwb3NzaWJsZVRhZ3NBcnJheS5pbmNsdWRlcygiT0wiKSl7cG9zc2libGVUYWdzSW5DaGVjay5wdXNoKCJPTCIpfX0KcmV0dXJuITF9CmZ1bmN0aW9uIHRleHRMZW5ndGhHYXRoZXJlcihsb3JkT2ZFbGVtZW50c0xvYyl7dmFyIHBvc3NpYmxlVGFnc0FycmF5O2lmKHR5cGVvZiB0YWdzTGlzdEZvclRleHRMZW5ndGghPT0idW5kZWZpbmVkIil7cG9zc2libGVUYWdzQXJyYXk9dGFnc0xpc3RGb3JUZXh0TGVuZ3RofWVsc2V7cG9zc2libGVUYWdzQXJyYXk9WyJQIiwiSDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2IiwiRElWIiwiQkxPQ0tRVU9URSIsIklOREVYIiwiQVJUSUNMRSIsIlNFQ1RJT04iXX0KbGV0IHBvc3NpYmxlVGFnc0luQ2hlY2s9WyJESVYiLCJJTkRFWCIsIlNFQ1RJT04iXTtwb3NzaWJsZVRhZ3NJbkNoZWNrQ29uZmlybWVyKHBvc3NpYmxlVGFnc0FycmF5LHBvc3NpYmxlVGFnc0luQ2hlY2spO2xldCBleGNBcnI9ZXhjSWRDbFVucGFja2VyKCksdGV4dExlbmd0aD0wLHRsQXJyYXk9W107ZnVuY3Rpb24gdGV4dExlbmd0aEdhdGhlcmVyUmVjKGxvcmRPZkVsZW1lbnRzTG9jKXtsZXQgYWxsb3dlZDtsZXQgY291MTtsZXQgY2xhc3Nlc0FycmF5O2xldCBjb3VudFN1Y2Nlc3M9MDt0cnl7Zm9yKGxldCBpPTA7aTxsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbi5sZW5ndGg7aSsrKXtpZihwb3NzaWJsZVRhZ3NBcnJheS5pbmNsdWRlcyhsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS50YWdOYW1lKSYmIWxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygicGVyY2VudFBvaW50ZXJDbGFzcyIpJiZsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS5pZCE9InRvY19jb250YWluZXIiKXtpZihwb3NzaWJsZVRhZ3NJbkNoZWNrLmluY2x1ZGVzKGxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLnRhZ05hbWUpJiYobG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0uY2hpbGRyZW4ubGVuZ3RoPjApKXthbGxvd2VkPSEwO2lmKGxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLmlkJiZleGNBcnIuaWQubGVuZ3RoPjApe2NvdTE9MDt3aGlsZShleGNBcnIuaWRbY291MV0pe2lmKGxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLmlkLnRvTG93ZXJDYXNlKCk9PWV4Y0Fyci5pZFtjb3UxXS50b0xvd2VyQ2FzZSgpKXthbGxvd2VkPSExO2JyZWFrfQpjb3UxKyt9fQppZihsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS5jbGFzc0xpc3QubGVuZ3RoPjAmJmV4Y0FyclsnY2xhc3MnXS5sZW5ndGg+MCl7Y291MT0wO3doaWxlKGV4Y0FyclsnY2xhc3MnXVtjb3UxXSl7Y2xhc3Nlc0FycmF5PWV4Y0FyclsnY2xhc3MnXVtjb3UxXS5zcGxpdCgnLicpO2lmKGNsYXNzZXNBcnJheS5ldmVyeShjbGFzc05hbWU9PmxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSl7YWxsb3dlZD0hMTticmVha30KY291MSsrfX0KaWYoZXhjQXJyLnRhZy5sZW5ndGg+MCl7Y291MT0wO3doaWxlKGV4Y0Fyci50YWdbY291MV0pe2lmKGxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09ZXhjQXJyLnRhZ1tjb3UxXS50b0xvd2VyQ2FzZSgpKXthbGxvd2VkPSExO2JyZWFrfQpjb3UxKyt9fQppZihhbGxvd2VkKXtpZih0ZXh0TGVuZ3RoR2F0aGVyZXJSZWMobG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0sZXhjQXJyLHBvc3NpYmxlVGFnc0FycmF5LHBvc3NpYmxlVGFnc0luQ2hlY2spKXtjb3VudFN1Y2Nlc3MrKztjb250aW51ZX19fQp0ZXh0TGVuZ3RoPXRleHRMZW5ndGgrbG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0uaW5uZXJUZXh0Lmxlbmd0aDt0bEFycmF5LnB1c2goe3RhZzpsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS50YWdOYW1lLGxlbmd0aDpsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS5pbm5lclRleHQubGVuZ3RoLGxlbmd0aFN1bTp0ZXh0TGVuZ3RoLGVsZW1lbnQ6bG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV19KTtjb3VudFN1Y2Nlc3MrK319fWNhdGNoKGVyKXtjb25zb2xlLmxvZyhlci5tZXNzYWdlKX0KcmV0dXJuIGNvdW50U3VjY2Vzcz4wfQp0ZXh0TGVuZ3RoR2F0aGVyZXJSZWMobG9yZE9mRWxlbWVudHNMb2MpO3JldHVybnthcnJheTp0bEFycmF5LGxlbmd0aDp0ZXh0TGVuZ3RofX0Kd2luZG93LmFzeW5jRnVuY3Rpb25MYXVuY2hlcj1mdW5jdGlvbigpe2lmKHdpbmRvdy5qc0lucHV0ZXJMYXVuY2ghPT11bmRlZmluZWQmJlsxNSwxMF0uaW5jbHVkZXMod2luZG93LmpzSW5wdXRlckxhdW5jaCkmJih0eXBlb2YgYXN5bmNCbG9ja3NJbnNlcnRpbmdGdW5jdGlvbiE9PSd1bmRlZmluZWQnKSYmKHR5cGVvZiBhc3luY0Jsb2Nrc0luc2VydGluZ0Z1bmN0aW9uPT09J2Z1bmN0aW9uJykmJnR5cGVvZiBlbmRlZFNjIT09J3VuZGVmaW5lZCcmJnR5cGVvZiBlbmRlZENjIT09J3VuZGVmaW5lZCcmJnR5cGVvZiB1c2VkQWRCbG9ja3NBcnJheSE9PSd1bmRlZmluZWQnJiZ0eXBlb2YgdXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzIT09J3VuZGVmaW5lZCcmJnR5cGVvZiBzYW1lRWxlbWVudEFmdGVyV2lkdGghPT0ndW5kZWZpbmVkJyYmdHlwZW9mIHNhbWVFbGVtZW50QWZ0ZXJFeGNDbGFzc0lkIT09J3VuZGVmaW5lZCcmJnR5cGVvZiBzYW1lRWxlbWVudEFmdGVyRnJvbUNvbnN0cnVjdGlvbiE9PSd1bmRlZmluZWQnJiZ0eXBlb2YgcmJfdGVtcEVsZW1lbnRfY2hlY2shPT0ndW5kZWZpbmVkJyYmdHlwZW9mIHJiX3RlbXBFbGVtZW50IT09J3VuZGVmaW5lZCcmJnR5cGVvZiB3aW5kb3cuanNJbnB1dGVyTGF1bmNoIT09J3VuZGVmaW5lZCcpe2FzeW5jQmxvY2tzSW5zZXJ0aW5nRnVuY3Rpb24oYmxvY2tTZXR0aW5nQXJyYXkpO2lmKCFlbmRlZFNjKXtzaG9ydGNvZGVzSW5zZXJ0KCl9CmlmKCFlbmRlZENjKXt9fWVsc2V7c2V0VGltZW91dChmdW5jdGlvbigpe2FzeW5jRnVuY3Rpb25MYXVuY2hlcigpfSw1MCl9fTtmdW5jdGlvbiBhc3luY0luc2VydGluZ3NJbnNlcnRpbmdGdW5jdGlvbihpbnNlcnRpbmdzQXJyYXkpe2xldCBjdXJyZW50RWxlbWVudEZvckluc2VydGluZz0wO2xldCBjdXJyZW50RWxlbWVudFRvTW92ZT0wO2xldCBwb3NpdGlvbkVsZW1lbnQ9MDtsZXQgcG9zaXRpb249MDtsZXQgaW5zZXJ0VG9BZGQ9MDtsZXQgcG9zdElkPTA7bGV0IHJlcGVhdFNlYXJjaD0wO2lmKGluc2VydGluZ3NBcnJheSYmaW5zZXJ0aW5nc0FycmF5Lmxlbmd0aD4wKXtmb3IobGV0IGk9MDtpPGluc2VydGluZ3NBcnJheS5sZW5ndGg7aSsrKXtpZighaW5zZXJ0aW5nc0FycmF5W2ldLnVzZWR8fChpbnNlcnRpbmdzQXJyYXlbaV0udXNlZCYmaW5zZXJ0aW5nc0FycmF5W2ldLnVzZWQ9PTApKXtwb3NpdGlvbkVsZW1lbnQ9aW5zZXJ0aW5nc0FycmF5W2ldLnBvc2l0aW9uX2VsZW1lbnQ7cG9zaXRpb249aW5zZXJ0aW5nc0FycmF5W2ldLnBvc2l0aW9uO2luc2VydFRvQWRkPWluc2VydGluZ3NBcnJheVtpXS5jb250ZW50O3Bvc3RJZD1pbnNlcnRpbmdzQXJyYXlbaV0ucG9zdElkO2N1cnJlbnRFbGVtZW50Rm9ySW5zZXJ0aW5nPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocG9zaXRpb25FbGVtZW50KTtjdXJyZW50RWxlbWVudFRvTW92ZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY292ZXJlZEluc2VydGluZ3NbZGF0YS1pZD0iJytwb3N0SWQrJyJdJyk7aWYoY3VycmVudEVsZW1lbnRGb3JJbnNlcnRpbmcpe2lmKHBvc2l0aW9uPT0wKXtjdXJyZW50RWxlbWVudEZvckluc2VydGluZy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjdXJyZW50RWxlbWVudFRvTW92ZSxjdXJyZW50RWxlbWVudEZvckluc2VydGluZyk7Y3VycmVudEVsZW1lbnRUb01vdmUuY2xhc3NMaXN0LnJlbW92ZSgnY292ZXJlZEluc2VydGluZ3MnKTtpbnNlcnRpbmdzQXJyYXlbaV0udXNlZD0xfWVsc2V7Y3VycmVudEVsZW1lbnRGb3JJbnNlcnRpbmcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY3VycmVudEVsZW1lbnRUb01vdmUsY3VycmVudEVsZW1lbnRGb3JJbnNlcnRpbmcubmV4dFNpYmxpbmcpO2N1cnJlbnRFbGVtZW50VG9Nb3ZlLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRJbnNlcnRpbmdzJyk7aW5zZXJ0aW5nc0FycmF5W2ldLnVzZWQ9MX19ZWxzZXtyZXBlYXRTZWFyY2g9MX19fX0KaWYocmVwZWF0U2VhcmNoPT0xKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YXN5bmNJbnNlcnRpbmdzSW5zZXJ0aW5nRnVuY3Rpb24oaW5zZXJ0aW5nc0FycmF5KX0sMTAwKX19CmZ1bmN0aW9uIGluc2VydGluZ3NGdW5jdGlvbkxhdW5jaCgpe2lmKHdpbmRvdy5qc0luc2VydGluZ3NMYXVuY2ghPT11bmRlZmluZWQmJmpzSW5zZXJ0aW5nc0xhdW5jaD09MjUpe2FzeW5jSW5zZXJ0aW5nc0luc2VydGluZ0Z1bmN0aW9uKGluc2VydGluZ3NBcnJheSl9ZWxzZXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aW5zZXJ0aW5nc0Z1bmN0aW9uTGF1bmNoKCl9LDEwMCl9fQpmdW5jdGlvbiBzZXRMb25nQ2FjaGUoKXtsZXQgeGh0dHA9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7bGV0IHNlbmREYXRhPSdhY3Rpb249c2V0TG9uZ0NhY2hlJnR5cGU9bG9uZ0NhdGNoaW5nJzt4aHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24ocmVkYXRhKXtpZih0aGlzLnJlYWR5U3RhdGU9PTQmJnRoaXMuc3RhdHVzPT0yMDApe2NvbnNvbGUubG9nKCdsb25nIGNhY2hlIGRlcGxveWVkJyl9fTt4aHR0cC5vcGVuKCJQT1NUIixyYl9hamF4dXJsLCEwKTt4aHR0cC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTt4aHR0cC5zZW5kKHNlbmREYXRhKX0KZnVuY3Rpb24gY2FjaGVQbGFjaW5nKGFsZXJ0X3R5cGUsZXJyb3JJbmZvPW51bGwpe2xldCBhZEJsb2Nrcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGVyY2VudFBvaW50ZXJDbGFzcyAuJytibG9ja19jbGFzc2VzLmpvaW4oJywgLnBlcmNlbnRQb2ludGVyQ2xhc3MgLicpKTtsZXQgY3VyQWRCbG9jaztsZXQgb2tTdGF0ZXM9Wydkb25lJywncmVmcmVzaC13YWl0Jywnbm8tYmxvY2snLCdmZXRjaGVkJ107bGV0IGJsb2NrQWlkPW51bGw7bGV0IGJsb2NrSWQ7aWYodHlwZW9mIGNhY2hlZEJsb2Nrc0FycmF5IT09J3VuZGVmaW5lZCcmJmNhY2hlZEJsb2Nrc0FycmF5JiZjYWNoZWRCbG9ja3NBcnJheS5sZW5ndGg+MCYmYWRCbG9ja3MmJmFkQmxvY2tzLmxlbmd0aD4wKXtmb3IobGV0IGk9MDtpPGFkQmxvY2tzLmxlbmd0aDtpKyspe2Jsb2NrQWlkPWFkQmxvY2tzW2ldLmRhdGFzZXQuYWlkO2lmKCFibG9ja0FpZCl7YmxvY2tJZD1hZEJsb2Nrc1tpXS5kYXRhc2V0LmlkO2lmKGNhY2hlZEJsb2Nrc0FycmF5W2Jsb2NrSWRdKXtqUXVlcnkoYWRCbG9ja3NbaV0pLmh0bWwoY2FjaGVkQmxvY2tzQXJyYXlbYmxvY2tJZF0pfX19fQppZihhbGVydF90eXBlJiZhbGVydF90eXBlPT0naGlnaCcpe3NldExvbmdDYWNoZSgpfX0KZnVuY3Rpb24gc3ltYm9sSW5zZXJ0ZXIobG9yZE9mRWxlbWVudHMsY29udGFpbmVyRm9yN3RoLHRsQXJyYXkpe3RyeXt2YXIgY3VycmVudENoaWxkcmVuTGVuZ3RoPTA7bGV0IHByZXZpb3VzQnJlYWs9MDtsZXQgbmVlZGxlTGVuZ3RoO2xldCBjdXJyZW50U3VtTGVuZ3RoO2xldCBlbGVtZW50VG9BZGQ7bGV0IGVsZW1lbnRUb0JpbmQ7bGV0IGVsZW1lbnRUb0FkZFN0eWxlO2xldCBibG9ja19udW1iZXI7bGV0IGJpbmRlck5hbWU7aWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYXJrZWRTcGFuMSIpKXtmb3IobGV0IGk9MDtpPGNvbnRhaW5lckZvcjd0aC5sZW5ndGg7aSsrKXtwcmV2aW91c0JyZWFrPTA7Y3VycmVudENoaWxkcmVuTGVuZ3RoPTA7Y3VycmVudFN1bUxlbmd0aD0wO25lZWRsZUxlbmd0aD1NYXRoLmFicyhjb250YWluZXJGb3I3dGhbaV0uZWxlbWVudFBsYWNlKTtiaW5kZXJOYW1lPWVsZW1lbnRCaW5kZXJOYW1lR2VuZXJhdG9yKCk7ZWxlbWVudFRvQWRkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJwZXJjZW50UG9pbnRlckNsYXNzIik7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5hZGQoIm1hcmtlZCIpO2lmKGNvbnRhaW5lckZvcjd0aFtpXS5zYz09MSl7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5hZGQoInNjTWFyayIpfQplbGVtZW50VG9BZGQuZGF0YXNldC5yYmluZGVyPWJpbmRlck5hbWU7ZWxlbWVudFRvQWRkLmlubmVySFRNTD1jb250YWluZXJGb3I3dGhbaV0udGV4dDtibG9ja19udW1iZXI9ZWxlbWVudFRvQWRkLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXNbJ2RhdGEtaWQnXS52YWx1ZTtpZighZWxlbWVudFRvQWRkKXtjb250aW51ZX0KZWxlbWVudFRvQWRkU3R5bGU9Y3JlYXRlU3R5bGVFbGVtZW50KGJsb2NrX251bWJlcixjb250YWluZXJGb3I3dGhbaV0uZWxlbWVudENzcyk7aWYoZWxlbWVudFRvQWRkU3R5bGUmJmVsZW1lbnRUb0FkZFN0eWxlIT0nZGVmYXVsdCcpe2VsZW1lbnRUb0FkZC5zdHlsZS50ZXh0QWxpZ249ZWxlbWVudFRvQWRkU3R5bGV9CmlmKGNvbnRhaW5lckZvcjd0aFtpXS5lbGVtZW50UGxhY2U8MCl7Zm9yKGxldCBqPXRsQXJyYXkubGVuZ3RoLTE7aj4tMTtqLS0pe2N1cnJlbnRTdW1MZW5ndGg9Y3VycmVudFN1bUxlbmd0aCt0bEFycmF5W2pdLmxlbmd0aDtpZihuZWVkbGVMZW5ndGg8Y3VycmVudFN1bUxlbmd0aCl7ZWxlbWVudFRvQmluZD10bEFycmF5W2pdLmVsZW1lbnQ7ZWxlbWVudFRvQmluZD1jdXJyZW50RWxlbWVudFJlY2VpdmVyU3BlYyghMCxqLHRsQXJyYXksZWxlbWVudFRvQmluZCk7ZWxlbWVudFRvQmluZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50VG9BZGQsZWxlbWVudFRvQmluZCk7ZWxlbWVudFRvQmluZC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpO2JyZWFrfX19ZWxzZSBpZihjb250YWluZXJGb3I3dGhbaV0uZWxlbWVudFBsYWNlPT0wKXtlbGVtZW50VG9CaW5kPXRsQXJyYXlbMF0uZWxlbWVudDtlbGVtZW50VG9CaW5kLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZCxlbGVtZW50VG9CaW5kKTtlbGVtZW50VG9CaW5kLmNsYXNzTGlzdC5hZGQoJ3JiaW5kZXItJytiaW5kZXJOYW1lKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LnJlbW92ZSgnY292ZXJlZEFkJyl9ZWxzZXtmb3IobGV0IGo9MDtqPHRsQXJyYXkubGVuZ3RoO2orKyl7Y3VycmVudFN1bUxlbmd0aD1jdXJyZW50U3VtTGVuZ3RoK3RsQXJyYXlbal0ubGVuZ3RoO2lmKG5lZWRsZUxlbmd0aDxjdXJyZW50U3VtTGVuZ3RoKXtlbGVtZW50VG9CaW5kPXRsQXJyYXlbal0uZWxlbWVudDtlbGVtZW50VG9CaW5kPWN1cnJlbnRFbGVtZW50UmVjZWl2ZXJTcGVjKCExLGosdGxBcnJheSxlbGVtZW50VG9CaW5kKTtlbGVtZW50VG9CaW5kLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZCxlbGVtZW50VG9CaW5kLm5leHRTaWJsaW5nKTtlbGVtZW50VG9CaW5kLmNsYXNzTGlzdC5hZGQoJ3JiaW5kZXItJytiaW5kZXJOYW1lKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LnJlbW92ZSgnY292ZXJlZEFkJyk7YnJlYWt9fX19CnZhciBzcGFuTWFya2VyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtzcGFuTWFya2VyLnNldEF0dHJpYnV0ZSgiaWQiLCJtYXJrZWRTcGFuMSIpO2xvcmRPZkVsZW1lbnRzLnByZXBlbmQoc3Bhbk1hcmtlcil9fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpfX0KZnVuY3Rpb24gcGVyY2VudEluc2VydGVyKGxvcmRPZkVsZW1lbnRzLGNvbnRhaW5lckZvcjZ0aCx0bEFycmF5LHRleHRMZW5ndGgpe3RyeXt2YXIgdGV4dE5lZWR5TGVuZ3RoPTA7bGV0IGVsZW1lbnRUb0FkZDt2YXIgZWxlbWVudFRvQmluZDtsZXQgZWxlbWVudFRvQWRkU3R5bGU7bGV0IGJsb2NrX251bWJlcjt2YXIgYmluZGVyTmFtZTtmdW5jdGlvbiBpbnNlcnRCeVBlcmNlbnRzKHRleHRMZW5ndGgpe2xldCBsb2NhbE1pZGRsZVZhbHVlPTA7Zm9yKGxldCBqPTA7ajxjb250YWluZXJGb3I2dGgubGVuZ3RoO2orKyl7dGV4dE5lZWR5TGVuZ3RoPU1hdGgucm91bmQodGV4dExlbmd0aCooY29udGFpbmVyRm9yNnRoW2pdLmVsZW1lbnRQbGFjZS8xMDApKTtmb3IobGV0IGk9MDtpPHRsQXJyYXkubGVuZ3RoO2krKyl7aWYodGxBcnJheVtpXS5sZW5ndGhTdW0+PXRleHROZWVkeUxlbmd0aCl7YmluZGVyTmFtZT1lbGVtZW50QmluZGVyTmFtZUdlbmVyYXRvcigpO2VsZW1lbnRUb0FkZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgicGVyY2VudFBvaW50ZXJDbGFzcyIpO2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJtYXJrZWQiKTtpZihjb250YWluZXJGb3I2dGhbal0uc2M9PTEpe2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJzY01hcmsiKX0KZWxlbWVudFRvQWRkLmRhdGFzZXQucmJpbmRlcj1iaW5kZXJOYW1lO2VsZW1lbnRUb0FkZC5pbm5lckhUTUw9Y29udGFpbmVyRm9yNnRoW2pdLnRleHQ7aWYoIWVsZW1lbnRUb0FkZCl7YnJlYWt9CmJsb2NrX251bWJlcj1lbGVtZW50VG9BZGQuY2hpbGRyZW5bMF0uYXR0cmlidXRlc1snZGF0YS1pZCddLnZhbHVlO2VsZW1lbnRUb0FkZFN0eWxlPWNyZWF0ZVN0eWxlRWxlbWVudChibG9ja19udW1iZXIsY29udGFpbmVyRm9yNnRoW2pdLmVsZW1lbnRDc3MpO2lmKGVsZW1lbnRUb0FkZFN0eWxlJiZlbGVtZW50VG9BZGRTdHlsZSE9J2RlZmF1bHQnKXtlbGVtZW50VG9BZGQuc3R5bGUudGV4dEFsaWduPWVsZW1lbnRUb0FkZFN0eWxlfQpsb2NhbE1pZGRsZVZhbHVlPXRsQXJyYXlbaV0ubGVuZ3RoU3VtLU1hdGgucm91bmQodGxBcnJheVtpXS5sZW5ndGgvMik7ZWxlbWVudFRvQmluZD10bEFycmF5W2ldLmVsZW1lbnQ7Y3VycmVudEVsZW1lbnRSZWNlaXZlclNwZWMoITEsaSx0bEFycmF5LGVsZW1lbnRUb0JpbmQpO2lmKHRleHROZWVkeUxlbmd0aDxsb2NhbE1pZGRsZVZhbHVlKXtlbGVtZW50VG9CaW5kLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZCxlbGVtZW50VG9CaW5kKX1lbHNle2VsZW1lbnRUb0JpbmQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudFRvQWRkLGVsZW1lbnRUb0JpbmQubmV4dFNpYmxpbmcpfQplbGVtZW50VG9CaW5kLmNsYXNzTGlzdC5hZGQoJ3JiaW5kZXItJytiaW5kZXJOYW1lKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LnJlbW92ZSgnY292ZXJlZEFkJyk7YnJlYWt9fX0KcmV0dXJuITF9CmZ1bmN0aW9uIGNsZWFyVGxNYXJrcygpe2xldCBtYXJrc0ZvckRlbGV0aW5nPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50ZXh0TGVuZ3RoTWFya2VyJyk7aWYobWFya3NGb3JEZWxldGluZy5sZW5ndGg+MCl7Zm9yKGxldCBpPTA7aTxtYXJrc0ZvckRlbGV0aW5nLmxlbmd0aDtpKyspe21hcmtzRm9yRGVsZXRpbmdbaV0ucmVtb3ZlKCl9fX0KaWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYXJrZWRTcGFuIikpe2luc2VydEJ5UGVyY2VudHModGV4dExlbmd0aCk7Y2xlYXJUbE1hcmtzKCk7dmFyIHNwYW5NYXJrZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3NwYW5NYXJrZXIuc2V0QXR0cmlidXRlKCJpZCIsIm1hcmtlZFNwYW4iKTtsb3JkT2ZFbGVtZW50cy5wcmVwZW5kKHNwYW5NYXJrZXIpfX1jYXRjaChlKXtjb25zb2xlLmxvZyhlLm1lc3NhZ2UpfX0KZnVuY3Rpb24gc2F2ZUNvbnRlbnRCbG9jayhjb250ZW50Q29udGFpbmVyKXt0cnl7aWYoIWdhdGhlcl9jb250ZW50KXtjb25zb2xlLmxvZygnY29udGVudCBnYXRoZXIgc2F2ZSBmdW5jdGlvbiBlbnRlcmVkJyk7bGV0IHhodHRwPW5ldyBYTUxIdHRwUmVxdWVzdCgpO2xldCBzZW5kRGF0YT0nYWN0aW9uPVJGV1Bfc2F2ZUNvbnRlbnRDb250YWluZXImdHlwZT1nYXRoZXJDb250ZW50QmxvY2smZGF0YT0nK2NvbnRlbnRDb250YWluZXI7eGh0dHAub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKHJlZGF0YSl7aWYodGhpcy5yZWFkeVN0YXRlPT00JiZ0aGlzLnN0YXR1cz09MjAwKXtjb25zb2xlLmxvZygnY29udGVudCBnYXRoZXIgc3VjY2VlZCcpfWVsc2V7Y29uc29sZS5sb2coJ2NvbnRlbnQgZ2F0aGVyIGdvbmUgd3JvbmcnKX19O3hodHRwLm9wZW4oIlBPU1QiLHJiX2FqYXh1cmwsITApO3hodHRwLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpO3hodHRwLnNlbmQoc2VuZERhdGEpfX1jYXRjaChlcil7Y29uc29sZS5sb2coJ2NvbnRlbnQgZ2F0aGVyIGVycm9yOiAnK2VyKyc7Jyl9fQp3aW5kb3cuZ2F0aGVyQ29udGVudEJsb2NrPWZ1bmN0aW9uKCl7bGV0IGNQb2ludGVyPW51bGwsY1BvaW50ZXJQYXJlbnQ9bnVsbCxjUG9pbnRlclBhcmVudFN0cmluZz1udWxsLGNsYXNzV29yZHM9Wydjb250ZW50JywnZW50cnknLCdwb3N0Jywnd3JhcCcsJ2Rlc2NyaXB0aW9uJywndGF4b25vbXknXSxjbGFzc0Nob29zZWQ9ITE7Y1BvaW50ZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbnRlbnRfcG9pbnRlcl9pZCcpO2lmKGNQb2ludGVyKXtpZih3aW5kb3cuanNJbnB1dGVyTGF1bmNoIT09MTUpe3JldHVybiExfQpjUG9pbnRlclBhcmVudD1jUG9pbnRlci5wYXJlbnRFbGVtZW50O2lmKGNQb2ludGVyUGFyZW50KXtpZihjUG9pbnRlclBhcmVudC5pZCl7Y1BvaW50ZXJQYXJlbnRTdHJpbmc9JyMnK2NQb2ludGVyUGFyZW50LmlkfWVsc2V7aWYoY1BvaW50ZXJQYXJlbnQuY2xhc3NMaXN0Lmxlbmd0aD4wKXtjUG9pbnRlclBhcmVudFN0cmluZz0nLicrY1BvaW50ZXJQYXJlbnQuY2xhc3NMaXN0WzBdO2ZvcihsZXQgaj0wO2o8Y2xhc3NXb3Jkcy5sZW5ndGg7aisrKXtmb3IobGV0IGk9MDtpPGNQb2ludGVyUGFyZW50LmNsYXNzTGlzdC5sZW5ndGg7aSsrKXtpZihjUG9pbnRlclBhcmVudC5jbGFzc0xpc3RbaV0uaW5jbHVkZXMoY2xhc3NXb3Jkc1tqXSkpe2NQb2ludGVyUGFyZW50U3RyaW5nPScuJytjUG9pbnRlclBhcmVudC5jbGFzc0xpc3RbaV07Y2xhc3NDaG9vc2VkPSEwO2JyZWFrfX0KaWYoY2xhc3NDaG9vc2VkPT09ITApe2JyZWFrfX19fQppZihjUG9pbnRlclBhcmVudFN0cmluZyl7Y29uc29sZS5sb2coJ2NvbnRlbnQgZ2F0aGVyIGNvbnRlbnQgYmxvY2sgZGV0ZWN0ZWQnKTtzYXZlQ29udGVudEJsb2NrKGNQb2ludGVyUGFyZW50U3RyaW5nKX19fWVsc2V7Y29uc29sZS5sb2coJ2NvbnRlbnQgZ2F0aGVyIGRlbGF5ZWQnKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Z2F0aGVyQ29udGVudEJsb2NrKCl9LDUwMCl9fTt3aW5kb3cucmVtb3ZlTWFyZ2luQ2xhc3M9ZnVuY3Rpb24oYmxvY2tPYmplY3Qpe2lmKGJsb2NrT2JqZWN0JiZ0eXBlb2Ygd2luZG93LmpzSW5wdXRlckxhdW5jaCE9PSd1bmRlZmluZWQnJiZbMTUsMTBdLmluY2x1ZGVzKHdpbmRvdy5qc0lucHV0ZXJMYXVuY2gpKXtsZXQgYmluZGVyTmFtZSxuZWVkZWRFbGVtZW50LGN1cnJlbnREaXJlY3Rpb24sc2Vla2VySXRlcmF0aW9uQ291bnQsY3VycmVudFN1Ymxpbmc7YmluZGVyTmFtZT1ibG9ja09iamVjdC5kYXRhc2V0LnJiaW5kZXI7aWYoYmluZGVyTmFtZSl7c2Vla2VySXRlcmF0aW9uQ291bnQ9MDtjdXJyZW50RGlyZWN0aW9uPSdiZWZvcmUnO2Rve3NlZWtlckl0ZXJhdGlvbkNvdW50Kys7Y3VycmVudFN1Ymxpbmc9YmxvY2tPYmplY3QubmV4dEVsZW1lbnRTaWJsaW5nO2lmKGN1cnJlbnRTdWJsaW5nJiZjdXJyZW50U3VibGluZy5jbGFzc0xpc3QuY29udGFpbnMoJ3JiaW5kZXItJytiaW5kZXJOYW1lKSl7bmVlZGVkRWxlbWVudD1jdXJyZW50U3VibGluZ319d2hpbGUoY3VycmVudFN1YmxpbmcmJiFuZWVkZWRFbGVtZW50JiZzZWVrZXJJdGVyYXRpb25Db3VudDw1KTtpZighbmVlZGVkRWxlbWVudCl7c2Vla2VySXRlcmF0aW9uQ291bnQ9MDtjdXJyZW50RGlyZWN0aW9uPSdhZnRlcic7ZG97c2Vla2VySXRlcmF0aW9uQ291bnQrKztjdXJyZW50U3VibGluZz1ibG9ja09iamVjdC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO2lmKGN1cnJlbnRTdWJsaW5nJiZjdXJyZW50U3VibGluZy5jbGFzc0xpc3QuY29udGFpbnMoJ3JiaW5kZXItJytiaW5kZXJOYW1lKSl7bmVlZGVkRWxlbWVudD1jdXJyZW50U3VibGluZ319d2hpbGUoY3VycmVudFN1YmxpbmcmJiFuZWVkZWRFbGVtZW50JiZzZWVrZXJJdGVyYXRpb25Db3VudDw1KTt9CmlmKG5lZWRlZEVsZW1lbnQpe2lmKGN1cnJlbnREaXJlY3Rpb249PT0nYmVmb3JlJyl7bmVlZGVkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdyZndwX3JlbW92ZWRNYXJnaW5Ub3AnKX1lbHNle25lZWRlZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncmZ3cF9yZW1vdmVkTWFyZ2luQm90dG9tJyl9fX19CnJldHVybiExfTtmdW5jdGlvbiBlbGVtZW50QmluZGVyTmFtZUdlbmVyYXRvcigpe2xldCBiaW5kZXJOYW1lPScnLGNoZWNrZWRFbGVtZW50cyxwYXNzZWQ9ITE7d2hpbGUocGFzc2VkPT09ITEpe2JpbmRlck5hbWU9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDAwMCk7Y2hlY2tlZEVsZW1lbnRzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJiaW5kZXI9IicrYmluZGVyTmFtZSsnIl0nKTtpZihjaGVja2VkRWxlbWVudHMubGVuZ3RoPDEpe3Bhc3NlZD0hMH19CnJldHVybiBiaW5kZXJOYW1lfQ==
data:text/javascript;base64,cmJDb25maWc9e3N0YXJ0OnBlcmZvcm1hbmNlLm5vdygpLHJiRG9tYWluOid3d3cuNTczOC5ydScscm90YXRvcjonMTI2bjknfTt0b2tlbj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnMTI2bjknKXx8KDFlNisnJykucmVwbGFjZSgvWzAxOF0vZyxjPT4oY15jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEpKVswXSYxNT4+Yy80KS50b1N0cmluZygxNikpO3JzZGZoc2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7cnNkZmhzZS5zZXRBdHRyaWJ1dGUoJ3NyYycsJy8vd3d3LjU3MzgucnUvMTI2bjkubWluLmpzPycrdG9rZW4pO3JzZGZoc2Uuc2V0QXR0cmlidXRlKCdhc3luYycsJ2FzeW5jJyk7cnNkZmhzZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCd0ZXh0L2phdmFzY3JpcHQnKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHJzZGZoc2UpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKCcxMjZuOScsdG9rZW4p
data:text/javascript;base64,d2luZG93LnlhQ29udGV4dENiPXdpbmRvdy55YUNvbnRleHRDYnx8W10=
data:text/javascript;base64,dmFyIGJsb2NrX2NsYXNzZXM9WyJjb250ZW50X3JiIiwiY250MzJfcmxfYmdfc3RyIiwicmxfY250X2JnIl07ZnVuY3Rpb24gYWRkQXR0ckl0ZW0oY2xhc3NOYW1lKXtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuIitjbGFzc05hbWUpJiYhYmxvY2tfY2xhc3Nlcy5pbmNsdWRlcyhjbGFzc05hbWUpKXtibG9ja19jbGFzc2VzLnB1c2goY2xhc3NOYW1lKX19
data:text/javascript;base64,dmFyIHBzZXVkb19saW5rcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIucHNldWRvLWNsZWFyZnktbGluayIpO2Zvcih2YXIgaT0wO2k8cHNldWRvX2xpbmtzLmxlbmd0aDtpKyspe3BzZXVkb19saW5rc1tpXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7d2luZG93Lm9wZW4oZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXVyaSIpKX0pfQ==
data:text/javascript;base64,dmFyIHEydzNfc2lkZWJhcl9vcHRpb25zPVt7InNpZGViYXIiOiJzaWRlYmFyLTEiLCJ1c2Vfc3RpY2t5X3Bvc2l0aW9uIjohMSwibWFyZ2luX3RvcCI6MCwibWFyZ2luX2JvdHRvbSI6MCwic3RvcF9lbGVtZW50c19zZWxlY3RvcnMiOiIiLCJzY3JlZW5fbWF4X3dpZHRoIjowLCJzY3JlZW5fbWF4X2hlaWdodCI6MCwid2lkZ2V0cyI6WyIjY3VzdG9tX2h0bWwtMiJdfV0=
data:text/javascript;base64,dmFyIHNldHRpbmdzX2FycmF5PXsicmF0aW5nX3RleHRfYXZlcmFnZSI6Ilx1MDQ0MVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzNVx1MDQzNSIsInJhdGluZ190ZXh0X2Zyb20iOiJcdTA0MzhcdTA0MzciLCJsaWdodGJveF9lbmFibGVkIjoiMSJ9O3ZhciB3cHNfYWpheD17InVybCI6Imh0dHBzOlwvXC9pbmZvdXNwZWtoLnJ1XC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6ImRkZmRjOTViNmYifQ==
https://infouspekh.ru/wp-content/litespeed/js/000db268606aed045669b46580e64d2d.js?ver=f7d08
https://infouspekh.ru/wp-content/litespeed/js/46ea9ea199cd355627b2aed5dbf554d0.js?ver=d4321
https://infouspekh.ru/wp-content/litespeed/js/6b9110fb9a24c338a9939ece3432b10b.js?ver=2cecf
https://infouspekh.ru/wp-content/litespeed/js/f1da024378a8c0ebd94c5a7a0b1aa888.js?ver=1a607
https://infouspekh.ru/wp-includes/js/jquery/jquery.min.js?ver=3.7.1
https://yandex.ru/ads/system/context.js
Внешние ссылки 0
Внутренние ссылки 82

meta-теги

viewportwidth=device-width, initial-scale=1
robotsindex, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1
twitter:cardsummary_large_image
yandex-verification5e173893aadab0a3
msapplication-TileImagehttps://infouspekh.ru/wp-content/uploads/2019/11/cropped-kisspng-sticker-decal-paper-postage-stamps-clip-art-summer-5ab94aab84bd48.4653741915220927155437-270x270.jpg
og:localeru_RU
og:typewebsite
og:titleINFOUSPEKH
og:descriptionПуть к успеху: все о психологии денег, мотивации и яркой жизни
og:urlhttps://infouspekh.ru/
og:site_nameINFOUSPEKH

Скриншот сайта

Скриншота нет

Сервер сайта

IP адрес сайта 104.21.22.87
172.67.203.194
Веб-сервер cloudflare
Версия HTTP HTTP 3
DNS сервера chan.ns.cloudflare.com
rohin.ns.cloudflare.com
DNS записи 7
A записи
1: ip: 104.21.22.87
2: ip: 172.67.203.194
NS записи
3: target: chan.ns.cloudflare.com
4: target: rohin.ns.cloudflare.com
SOA записи
5: mname: chan.ns.cloudflare.com
5: rname: dns.cloudflare.com
5: serial: 2332000583
5: refresh: 10000
5: retry: 2400
5: expire: 604800
5: minimum-ttl: 1800
TXT записи
6: txt: google-site-verification=44w7VFJzCQnCFPCKEFXmZgLBHpHC3O5lgNPpRdAlmaM
6: entries: 0: google-site-verification=44w7VFJzCQnCFPCKEFXmZgLBHpHC3O5lgNPpRdAlmaM
7: txt: ahrefs-site-verification_66a7866d056ab32c20a0132f8c1a1f3720bc4f5766608b9b925246ed17caa189
7: entries: 0: ahrefs-site-verification_66a7866d056ab32c20a0132f8c1a1f3720bc4f5766608b9b925246ed17caa189

Ответ сервера

Группы заголовков: заголовки безопасности, заголовки кэширования.
status HTTP/2 200
date Fri, 16 Feb 2024 10:43:59 GMT
content-type text/html; charset=UTF-8
x-dns-prefetch-control on
link ; rel="https://api.w.org/"
vary Accept-Encoding
x-litespeed-cache hit
cf-cache-status DYNAMIC
report-to {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=K8u2sSIc3Ipv6XthY1mAjGHa3PuJyr%2BsuKx7jweufOnG%2FEwI75DCrGcAuYEnjk0ROHqvZHQ8vDc2xBhCyAdLBYDkWXEhirbmWArrzK6KeSM9DLJfFcXtlULAH87XR7wb"}],"group":"cf-nel","max_age":604800}
nel {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
strict-transport-security max-age=31536000; includeSubDomains; preload
x-content-type-options nosniff
server cloudflare
cf-ray 8565315b3e9970db-ARN
content-encoding gzip
alt-svc h3=":443"; ma=86400

Оцените сайт

Не ставьте оценку если отвечаете на другой отзыв или пишите комментарий:

Можно добавить текст отзыва, ответ на другой отзыв, или просто комментарий к сайту:
captcha