서울특별시 영등포구 · 단지 233곳
영등포구 아파트 실거래가
법정동 → 단지 → 평형까지 들어갑니다. 12개월 거래 2,933건.
중위 평당가
6,146만원
기준월 2026-08 · 128건 · 3개월 +9.6%
12개월 거래
2,933건
법정동 24곳 · 단지 233곳
영등포구 단지별 시세
12개월 거래 30건 이상인 단지 24곳입니다. 단지마다 12개월 추이·평형별 시세·전세가율을 따로 정리했습니다.
당산동4가
문래동3가
신길동
양평동2가
양평동3가
양평동5가
여의도동
영등포동
영등포동7가
영등포구 아파트 시세 보는 법
법정동을 누르면 그 안의 단지 목록이, 단지를 누르면 12개월 평당가 추이와 평형별 시세가 나옵니다.
평당가는 전용면적 기준입니다. 분양 광고의 공급면적 기준보다 높게 나옵니다. 84㎡는 전용 25.4평, 공급 34평이라 어느 쪽으로 나누느냐에 따라 숫자가 크게 달라집니다.
평당가는 기준월(2026-08) 거래의 중앙값, 증감은 최근 3개월 vs 직전 3개월입니다(전국·시도 페이지와 같은 기준). 12개월 이력·평형별 시세는 거래 5건 이상인 단지에만 표시합니다 · 국토교통부 실거래가 · 해제된 거래 제외 · 좌표가 확인된 단지만 지도에 표시됩니다.
dmFyIEQ9SlNPTi5wYXJzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHBoLWRhdGE4OScpLnRleHRDb250ZW50KTsKdmFyIFRIRU1FX0lDTz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSdkYXJrJz8nPHN2ZyBjbGFzcz0idHBoLWkgaWNvLXMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMTQuNUE4LjUgOC41IDAgMCAxIDkuNSA0YTguNSA4LjUgMCAxIDAgMTAuNSAxMC41eiIvPjwvc3ZnPic6dD09PSdsaWdodCc/JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDcuNWE0LjUgNC41IDAgMSAwIDAgOSA0LjUgNC41IDAgMCAwIDAtOXpNMTIgMnYyTTEyIDIwdjJNNC4yIDQuMmwxLjQgMS40TTE4LjQgMTguNGwxLjQgMS40TTIgMTJoMk0yMCAxMmgyTTQuMiAxOS44bDEuNC0xLjRNMTguNCA1LjZsMS40LTEuNCIvPjwvc3ZnPic6JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDNhOSA5IDAgMSAwIDAgMTggOSA5IDAgMCAwIDAtMTh6TTEyIDN2MThhOSA5IDAgMCAwIDAtMTh6Ii8+PC9zdmc+Jzt9OwoKdmFyICQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cGgtJytpKTt9Owp2YXIgdj1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlPygrZS52YWx1ZXx8MCk6MDt9Owp2YXIgcz1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlP2UudmFsdWU6Jyc7fTsKdmFyIGY9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+ybkCc7fTsKdmFyIGZkPWZ1bmN0aW9uKG4sZCl7cmV0dXJuIG4udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOmR8fDF9KTt9Owp2YXIgY3V0MTA9ZnVuY3Rpb24oeCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZCh4KS8xMCkqMTA7fTsKdmFyIHNldD1mdW5jdGlvbihpLHQpe3ZhciBlPSQoaSk7aWYoIWUpcmV0dXJuO2lmKGk9PT0nbWFpbicpe2NvdW50VXAoZSx0KTt9ZWxzZXtlLnRleHRDb250ZW50PXQ7fX07CgovKiDslYjsoITtlZwg7KCA7J6l7IaMIOygkeq3vCDigJQg7Iuc7YGs66a/IOuqqOuTnC/ssKjri6gg7ZmY6rK97JeQ7ISc64+EIOyjveyngCDslYrqsowgKi8KdmFyIHN0b3JlPXsKICBnZXQ6ZnVuY3Rpb24oayl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrKTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0sCiAgc2V0OmZ1bmN0aW9uKGssdmFsKXt0cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2YWwpO31jYXRjaChlKXt9fSwKICBkZWw6ZnVuY3Rpb24oayl7dHJ5e2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGspO31jYXRjaChlKXt9fQp9OwoKdmFyIHRvYXN0PWZ1bmN0aW9uKG1zZyl7CiAgdmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRwaC10b2FzdCcpOwogIGlmKCF0KXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3QuY2xhc3NOYW1lPSd0cGgtdG9hc3QnO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7fQogIHQudGV4dENvbnRlbnQ9bXNnO3QuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIGNsZWFyVGltZW91dCh0Ll9oKTt0Ll9oPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTt9LDE5MDApOwp9OwoKLyog7YWM66eIIO2GoOq4gDog7Iuc7Iqk7YWcIOyEpOyglSDihpIg65287J207Yq4IOKGkiDri6Ttgawg7Iic7ZmYICovCmZ1bmN0aW9uIGluaXRUaGVtZShyb290KXsKICB2YXIgSz0ndHBoLXRoZW1lJywgY3VyPXN0b3JlLmdldChLKTsKICBpZihjdXIpIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxjdXIpOwogIHZhciBiPSQoJ3RoZW1lJyk7CiAgaWYoIWIpIHJldHVybjsKICB2YXIgbGFiZWw9ZnVuY3Rpb24oKXsKICAgIHZhciB0PXJvb3QuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7CiAgICBiLmlubmVySFRNTD1USEVNRV9JQ08odCkrJyA8c3Bhbj4nKyh0PT09J2RhcmsnPyfri6TtgawnOnQ9PT0nbGlnaHQnPyfrnbzsnbTtirgnOifsnpDrj5knKSsnPC9zcGFuPic7CiAgfTsKICBsYWJlbCgpOwogIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgdD1yb290LmdldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScpOwogICAgdmFyIG54PSF0PydsaWdodCc6dD09PSdsaWdodCc/J2RhcmsnOicnOwogICAgaWYobngpe3Jvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxueCk7c3RvcmUuc2V0KEssbngpO30KICAgIGVsc2V7cm9vdC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTtzdG9yZS5kZWwoSyk7fQogICAgbGFiZWwoKTsKICB9KTsKfQoKLyog7J6F66Cl6rCSIOKGlCBVUkwg7YyM652866+47YSwIOKGlCBsb2NhbFN0b3JhZ2UgKi8KZnVuY3Rpb24gaW5pdFN0YXRlKHNsdWcsIGlkcywgb25jaGFuZ2UpewogIHZhciBLRVk9J3RwaC1pbi0nK3NsdWcsIHE9bmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpLCB1c2VkPWZhbHNlOwogIGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpewogICAgdmFyIGU9JChpKTsgaWYoIWUpIHJldHVybjsKICAgIGlmKHEuaGFzKGkpKXsgZS52YWx1ZT1xLmdldChpKTsgdXNlZD10cnVlOyB9CiAgfSk7CiAgaWYoIXVzZWQpewogICAgdmFyIHJhdz1zdG9yZS5nZXQoS0VZKTsKICAgIGlmKHJhdyl7IHRyeXsgdmFyIG89SlNPTi5wYXJzZShyYXcpOwogICAgICBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsgdmFyIGU9JChpKTsgaWYoZSYmb1tpXSE9PXVuZGVmaW5lZCYmb1tpXSE9PScnKSBlLnZhbHVlPW9baV07IH0pOwogICAgfWNhdGNoKGUpe30gfQogIH0KICB2YXIgc2F2ZT1mdW5jdGlvbigpewogICAgdmFyIG89e307IGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpeyB2YXIgZT0kKGkpOyBpZihlKSBvW2ldPWUudmFsdWU7IH0pOwogICAgc3RvcmUuc2V0KEtFWSwgSlNPTi5zdHJpbmdpZnkobykpOwogIH07CiAgdmFyIHNoYXJlPSQoJ3NoYXJlJyk7CiAgaWYoc2hhcmUpIHNoYXJlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIHA9bmV3IFVSTFNlYXJjaFBhcmFtcygpOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7IHZhciBlPSQoaSk7IGlmKGUpIHAuc2V0KGksZS52YWx1ZSk7IH0pOwogICAgdmFyIHVybD1sb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWUrJz8nK3AudG9TdHJpbmcoKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+unge2BrOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpewogICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh1cmwpLnRoZW4oZG9uZSxmdW5jdGlvbigpe3Byb21wdCgn7JWE656YIOyjvOyGjOulvCDrs7XsgqztlZjshLjsmpQnLHVybCk7fSk7CiAgICB9IGVsc2UgcHJvbXB0KCfslYTrnpgg7KO87IaM66W8IOuzteyCrO2VmOyEuOyalCcsdXJsKTsKICB9KTsKICB2YXIgY29weT0kKCdjb3B5Jyk7CiAgaWYoY29weSkgY29weS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciBsaW5lcz1bZG9jdW1lbnQudGl0bGUuc3BsaXQoJ3wnKVswXS50cmltKCldOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7CiAgICAgIHZhciBlPSQoaSk7IGlmKCFlKSByZXR1cm47CiAgICAgIHZhciBsYWI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGFiZWxbZm9yPXRwaC0nK2krJ10nKTsKICAgICAgdmFyIHZhbD1lLnRhZ05hbWU9PT0nU0VMRUNUJz9lLm9wdGlvbnNbZS5zZWxlY3RlZEluZGV4XS50ZXh0OigrZS52YWx1ZXx8MCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyk7CiAgICAgIGlmKGxhYikgbGluZXMucHVzaCgnwrcgJytsYWIudGV4dENvbnRlbnQudHJpbSgpKyc6ICcrdmFsKTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJyk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHBoLXRvdGFsJykuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgICAgdmFyIGw9dC5xdWVyeVNlbGVjdG9yKCcubCcpLCB2YWw9dC5xdWVyeVNlbGVjdG9yKCcudicpOwogICAgICBpZihsJiZ2YWwpIGxpbmVzLnB1c2gobC50ZXh0Q29udGVudC50cmltKCkrJzogJyt2YWwudGV4dENvbnRlbnQudHJpbSgpKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1wYWdlIHRhYmxlJykuZm9yRWFjaChmdW5jdGlvbih0Yil7CiAgICAgIHRiLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaChmdW5jdGlvbih0cil7CiAgICAgICAgdmFyIHRkPXRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyk7CiAgICAgICAgaWYodGQubGVuZ3RoPT09MikgbGluZXMucHVzaCgnwrcgJyt0ZFswXS50ZXh0Q29udGVudC50cmltKCkrJzogJyt0ZFsxXS50ZXh0Q29udGVudC50cmltKCkpOwogICAgICB9KTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJywgbG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lKTsKICAgIHZhciB0eHQ9bGluZXMuam9pbignXG4nKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+qysOqzvOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihkb25lLGRvbmUpOwogICAgZWxzZSB7IHZhciB0YT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOyB0YS52YWx1ZT10eHQ7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGEpOwogICAgICAgICAgIHRhLnNlbGVjdCgpOyB0cnl7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTt9Y2F0Y2goZSl7fSB0YS5yZW1vdmUoKTsgZG9uZSgpOyB9CiAgfSk7CiAgdmFyIHJlc2V0PSQoJ3Jlc2V0Jyk7CiAgaWYocmVzZXQpIHJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgc3RvcmUuZGVsKEtFWSk7IGxvY2F0aW9uLmhyZWY9bG9jYXRpb24ucGF0aG5hbWU7CiAgfSk7CiAgcmV0dXJuIHNhdmU7Cn0KCi8qIOq4iOyVoSDsnoXroKUg67CRIOu5oOuluCDsobDsoJUg7LmpICovCmZ1bmN0aW9uIGluaXRDaGlwcyhvbmNoYW5nZSl7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1jaGlwJykuZm9yRWFjaChmdW5jdGlvbihjKXsKICAgIGMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgIHZhciBlPSQoYy5kYXRhc2V0LnQpOyBpZighZSkgcmV0dXJuOwogICAgICB2YXIgZD1jLmRhdGFzZXQuZDsKICAgICAgZS52YWx1ZSA9IGQ9PT0nMCcgPyAwIDogTWF0aC5tYXgoMCwoK2UudmFsdWV8fDApKygrZCkpOwogICAgICBvbmNoYW5nZSgpOwogICAgfSk7CiAgfSk7Cn0KCi8qIOyeheugpeqwkuydhCDsgqzrnozsnbQg7J2964qUIOusuOyepeycvOuhnCAoMywwMDAsMDAwIOKGkiAzMDDrp4zsm5ApICovCmZ1bmN0aW9uIGtvck1vbmV5KG4pewogIG49TWF0aC5yb3VuZChuKTsgaWYoIW4pIHJldHVybiAnMOybkCc7CiAgdmFyIGVvaz1NYXRoLmZsb29yKG4vMTAwMDAwMDAwKSwgbWFuPU1hdGguZmxvb3IoKG4lMTAwMDAwMDAwKS8xMDAwMCksIHdvbj1uJTEwMDAwLCBwPVtdOwogIGlmKGVvaykgcC5wdXNoKGVvaysn7Ja1Jyk7CiAgaWYobWFuKSBwLnB1c2gobWFuLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfrp4wnKTsKICBpZih3b24pIHAucHVzaCh3b24udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykpOwogIHJldHVybiBwLmpvaW4oJyAnKSsn7JuQJzsKfQpmdW5jdGlvbiBpbml0UmVhZChtYXApewogIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihpZCl7CiAgICB2YXIgZT0kKGlkKSwgb3V0PSQobWFwW2lkXSk7IGlmKCFlfHwhb3V0KSByZXR1cm47CiAgICB2YXIgdXBkPWZ1bmN0aW9uKCl7IG91dC50ZXh0Q29udGVudCA9ICgrZS52YWx1ZT4wKSA/IGtvck1vbmV5KCtlLnZhbHVlKSA6ICcnOyB9OwogICAgZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsdXBkKTsgdXBkKCk7CiAgfSk7Cn0KCgovKiDsiKvsnpAg7Lm07Jq07Yq47JeFIOKAlCDqsrDqs7zqsIAg67CU64CUIOuVjCDrtoDrk5zrn73qsowgKi8KZnVuY3Rpb24gY291bnRVcChlbCwgdGV4dCl7CiAgaWYoIWVsKSByZXR1cm47CiAgdmFyIHByZXY9ZWwuX3Jhd3x8JycsIGN1cj10ZXh0OwogIGVsLl9yYXc9Y3VyOwogIHZhciBwbj1wYXJzZUZsb2F0KFN0cmluZyhwcmV2KS5yZXBsYWNlKC9bXjAtOS4tXS9nLCcnKSk7CiAgdmFyIGNuPXBhcnNlRmxvYXQoU3RyaW5nKGN1cikucmVwbGFjZSgvW14wLTkuLV0vZywnJykpOwogIHZhciByZWR1Y2U9d2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgaWYocmVkdWNlfHwhaXNGaW5pdGUocG4pfHwhaXNGaW5pdGUoY24pfHxwbj09PWNufHxNYXRoLmFicyhjbi1wbik8MSl7ZWwudGV4dENvbnRlbnQ9Y3VyO3JldHVybjt9CiAgdmFyIHByZT1jdXIuc2xpY2UoMCxjdXIuc2VhcmNoKC9bMC05LV0vKSk7CiAgdmFyIHBvc3Q9Y3VyLnNsaWNlKGN1ci5zZWFyY2goL1swLTldW14wLTldKiQvKSsxKS5yZXBsYWNlKC9eWzAtOV0vLCcnKTsKICB2YXIgc3VmZml4PWN1ci5yZXBsYWNlKC9eW14wLTktXSovLCcnKS5yZXBsYWNlKC9eWzAtOSwuXC1dKy8sJycpOwogIHZhciB0MD1udWxsLCBkdXI9MzgwOwogIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGVsLl9hZnx8MCk7CiAgZnVuY3Rpb24gc3RlcCh0KXsKICAgIGlmKCF0MCkgdDA9dDsKICAgIHZhciBrPU1hdGgubWluKDEsKHQtdDApL2R1ciksIGU9MS1NYXRoLnBvdygxLWssMyk7CiAgICB2YXIgdmFsPXBuKyhjbi1wbikqZTsKICAgIGVsLnRleHRDb250ZW50PXByZStNYXRoLnJvdW5kKHZhbCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrc3VmZml4OwogICAgaWYoazwxKSBlbC5fYWY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOyBlbHNlIGVsLnRleHRDb250ZW50PWN1cjsKICB9CiAgZWwuX2FmPXJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKfQoKLyog66qo67CU7J28IOqzoOyglSDqsrDqs7zrsJQgKyDrp6gg7JyE66GcICovCmZ1bmN0aW9uIGluaXRTdGlja3kocm9vdCwgbGFiZWwpewogIGlmKCFyb290KSByZXR1cm47CiAgdmFyIG1haW49JCgnbWFpbicpOyBpZighbWFpbikgcmV0dXJuOwogIHZhciBiYXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgYmFyLmNsYXNzTmFtZT0ndHBoLXN0aWNreSc7CiAgYmFyLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibCI+JytsYWJlbCsnPC9kaXY+PGRpdiBjbGFzcz0idiIgaWQ9InRwaC1zdGlja3l2Ij7igKY8L2Rpdj4nOwogIHJvb3QuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgdG9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIHRvcC50eXBlPSdidXR0b24nOyB0b3AuY2xhc3NOYW1lPSd0cGgtdG9wJzsgdG9wLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsJ+unqCDsnITroZwnKTsKICB0b3AuaW5uZXJIVE1MPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDE5VjUiLz48cGF0aCBkPSJNNSAxMmw3LTcgNyA3Ii8+PC9zdmc+JzsKICB0b3AuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7d2luZG93LnNjcm9sbFRvKHt0b3A6MCxiZWhhdmlvcjonc21vb3RoJ30pO30pOwogIHJvb3QuYXBwZW5kQ2hpbGQodG9wKTsKICB2YXIgc3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RwaC1zdGlja3l2Jyk7CiAgdmFyIHN5bmM9ZnVuY3Rpb24oKXsKICAgIGlmKHN2JiZzdi50ZXh0Q29udGVudCE9PW1haW4udGV4dENvbnRlbnQpIHN2LnRleHRDb250ZW50PW1haW4udGV4dENvbnRlbnQ7CiAgICB2YXIgcj1tYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgYmFyLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgci5ib3R0b208NTYpOwogICAgdG9wLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgd2luZG93LnNjcm9sbFk+NTAwKTsKICB9OwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLHN5bmMse3Bhc3NpdmU6dHJ1ZX0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLHN5bmMpOwogIGlmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKSBuZXcgTXV0YXRpb25PYnNlcnZlcihzeW5jKS5vYnNlcnZlKG1haW4se2NoaWxkTGlzdDp0cnVlLGNoYXJhY3RlckRhdGE6dHJ1ZSxzdWJ0cmVlOnRydWV9KTsKICBzeW5jKCk7Cn0KCi8qIOKUgOKUgCDssKjtirgg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIOyDieydgCBDU1Mg67OA7IiYIC0tczEvLS1zMi8tLXMzICjqsoDspp3rkJwg7Lm07YWM6rOg66asIO2MlOugiO2KuCkuCiAgIOqzhOyXtOydtCAy6rCcIOydtOyDgeydtOuptCDrspTroYDrpbwg7ZWt7IOBIOu2meydtOqzoCwg6rCS7J2AIO2RnOyXkOuPhCDqt7jrjIDroZwg7J6I64ukLiAqLwp2YXIgU1ZHTlM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKZnVuY3Rpb24gZWwodCxhKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHTlMsdCk7Zm9yKHZhciBrIGluIGEpZS5zZXRBdHRyaWJ1dGUoayxhW2tdKTtyZXR1cm4gZTt9CgpmdW5jdGlvbiB0aXAoYm94KXsKICB2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTsKICBpZighdCl7dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0LmNsYXNzTmFtZT0ndHBoLXRpcCc7Ym94LmFwcGVuZENoaWxkKHQpO30KICByZXR1cm4gdDsKfQpmdW5jdGlvbiBzaG93VGlwKGJveCx4LHksaHRtbCl7CiAgdmFyIHQ9dGlwKGJveCk7IHQuaW5uZXJIVE1MPWh0bWw7IHQuc3R5bGUub3BhY2l0eT0nMSc7CiAgdmFyIHc9dC5vZmZzZXRXaWR0aCwgYnc9Ym94LmNsaWVudFdpZHRoOwogIHQuc3R5bGUubGVmdD1NYXRoLm1heCg0LE1hdGgubWluKGJ3LXctNCx4LXcvMikpKydweCc7CiAgdC5zdHlsZS50b3A9TWF0aC5tYXgoMix5LXQub2Zmc2V0SGVpZ2h0LTEwKSsncHgnOwp9CmZ1bmN0aW9uIGhpZGVUaXAoYm94KXt2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTtpZih0KXQuc3R5bGUub3BhY2l0eT0nMCc7fQoKLyog7IS466GcIOuIhOyggSDrp4nrjIAg4oCUIGNhdHM6W+udvOuyqF0sIHNlcmllczpbe25hbWUsY2xzLGRhdGE6W119XSAqLwpmdW5jdGlvbiBzdGFja0NoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIFc9NjYwLEg9MjM2LFBMPTgsUFI9OCxQVD0xNCxQQj0yNjsKICB2YXIgbj1jYXRzLmxlbmd0aDsgaWYoIW4pIHJldHVybjsKICB2YXIgdG90YWxzPWNhdHMubWFwKGZ1bmN0aW9uKF8saSl7cmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxzKXtyZXR1cm4gYSsocy5kYXRhW2ldfHwwKTt9LDApO30pOwogIHZhciBtYXg9TWF0aC5tYXguYXBwbHkobnVsbCx0b3RhbHMpfHwxOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBidz1NYXRoLm1heCg2LE1hdGgubWluKDQ2LGl3L24qMC42OCkpLCBzdGVwPWl3L247CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9MztnKyspewogICAgdmFyIGd5PVBUK2loKmcvMzsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogIH0KICBjYXRzLmZvckVhY2goZnVuY3Rpb24oYyxpKXsKICAgIHZhciBjeD1QTCtzdGVwKmkrc3RlcC8yLCB5PVBUK2loLCBhY2M9MDsKICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMsc2kpewogICAgICB2YXIgdmFsPXMuZGF0YVtpXXx8MDsgaWYodmFsPD0wKSByZXR1cm47CiAgICAgIHZhciBoPXZhbC9tYXgqaWg7IHktPWg7IGFjYys9dmFsOwogICAgICB2YXIgaXNUb3AgPSBzaT09PXNlcmllcy5sZW5ndGgtMSB8fCAhc2VyaWVzLnNsaWNlKHNpKzEpLnNvbWUoZnVuY3Rpb24oeil7cmV0dXJuICh6LmRhdGFbaV18fDApPjA7fSk7CiAgICAgIHZhciByPWVsKCdyZWN0Jyx7eDpjeC1idy8yLHk6eSx3aWR0aDpidyxoZWlnaHQ6TWF0aC5tYXgoMSxoKSwnY2xhc3MnOnMuY2xzLAogICAgICAgICAgICAgICAgICAgICAgIHJ4OmlzVG9wPzQ6MCxyeTppc1RvcD80OjB9KTsKICAgICAgc3ZnLmFwcGVuZENoaWxkKHIpOwogICAgfSk7CiAgICB2YXIgaGl0PWVsKCdyZWN0Jyx7eDpjeC1zdGVwLzIrMSx5OlBULHdpZHRoOnN0ZXAtMixoZWlnaHQ6aWgsJ2NsYXNzJzonaGl0J30pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICB2YXIgYnI9Ym94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICB2YXIgcm93cz1zZXJpZXMubWFwKGZ1bmN0aW9uKHMpewogICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICsgJ2JhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKTttYXJnaW4tcmlnaHQ6NnB4Ij48L3NwYW4+JytzLm5hbWUrJyAnK2ZtdChzLmRhdGFbaV18fDApOwogICAgICB9KS5qb2luKCc8YnI+Jyk7CiAgICAgIHNob3dUaXAoYm94LGV2LmNsaWVudFgtYnIubGVmdCxldi5jbGllbnRZLWJyLnRvcCwKICAgICAgICAgICAgICAnPGI+JytjKyc8L2I+PGJyPicrcm93cysnPGJyPu2VqeqzhCAnK2ZtdChhY2MpKTsKICAgIH0pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLGZ1bmN0aW9uKCl7aGlkZVRpcChib3gpO30pOwogICAgc3ZnLmFwcGVuZENoaWxkKGhpdCk7CiAgICBpZihuPD0xNHx8aSVNYXRoLmNlaWwobi8xMik9PT0wKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6Y3gseTpILTgsJ2NsYXNzJzonbGInLCd0ZXh0LWFuY2hvcic6J21pZGRsZSd9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgYm94LmFwcGVuZENoaWxkKHN2Zyk7CiAgYm94LmFwcGVuZENoaWxkKGxlZ2VuZChzZXJpZXMpKTsKfQoKLyog6rCA66GcIOuIhOyggSDrp4nrjIAo6rWs7ISxKSDigJQgc2Vnczpbe25hbWUsY2xzLHZhbHVlfV0gwrcg7KeB7KCRIOudvOuyqCAqLwpmdW5jdGlvbiBoU3RhY2soYm94SWQsIHNlZ3MsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIHRvdGFsPXNlZ3MucmVkdWNlKGZ1bmN0aW9uKGEscyl7cmV0dXJuIGErTWF0aC5tYXgoMCxzLnZhbHVlKTt9LDApfHwxOwogIHZhciBXPTY2MCxIPTY0LFBMPTgsUFI9OCxCSD0zNCxUWT0xMjsKICB2YXIgc3ZnPWVsKCdzdmcnLHt2aWV3Qm94OicwIDAgJytXKycgJytILHJvbGU6J2ltZyd9KTsKICB2YXIgeD1QTCwgaXc9Vy1QTC1QUjsKICBzZWdzLmZvckVhY2goZnVuY3Rpb24ocyxpKXsKICAgIHZhciB3PU1hdGgubWF4KDAscy52YWx1ZSkvdG90YWwqaXc7IGlmKHc8PTApIHJldHVybjsKICAgIHZhciBmaXJzdD1pPT09MCwgbGFzdD1pPT09c2Vncy5sZW5ndGgtMTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgncmVjdCcse3g6eCx5OlRZLHdpZHRoOncsaGVpZ2h0OkJILCdjbGFzcyc6cy5jbHMsCiAgICAgIHJ4OihmaXJzdHx8bGFzdCk/NDowLHJ5OihmaXJzdHx8bGFzdCk/NDowfSkpOwogICAgdmFyIHBjdD1zLnZhbHVlL3RvdGFsKjEwMDsKICAgIGlmKHBjdD49OSkKICAgICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4Ongrdy8yLHk6VFkrQkgvMis0LCdjbGFzcyc6J3ZsJywKICAgICAgICAndGV4dC1hbmNob3InOidtaWRkbGUnLGZpbGw6JyNmZmYnfSkse3RleHRDb250ZW50OnBjdC50b0ZpeGVkKDApKyclJ30pKTsKICAgIHZhciBoaXQ9ZWwoJ3JlY3QnLHt4OngseTpUWSx3aWR0aDp3LGhlaWdodDpCSCwnY2xhc3MnOidoaXQnfSk7CiAgICAoZnVuY3Rpb24oc2VnLHB4LHB3KXsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgc2hvd1RpcChib3gsZXYuY2xpZW50WC1ici5sZWZ0LGV2LmNsaWVudFktYnIudG9wLAogICAgICAgICAgJzxiPicrc2VnLm5hbWUrJzwvYj48YnI+JytmbXQoc2VnLnZhbHVlKSsnIMK3ICcrKHNlZy52YWx1ZS90b3RhbCoxMDApLnRvRml4ZWQoMSkrJyUnKTsKICAgICAgfSk7CiAgICAgIGhpdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJyxmdW5jdGlvbigpe2hpZGVUaXAoYm94KTt9KTsKICAgIH0pKHMseCx3KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgeCs9dzsKICB9KTsKICBib3guYXBwZW5kQ2hpbGQoc3ZnKTsKICBib3guYXBwZW5kQ2hpbGQobGVnZW5kKHNlZ3MubWFwKGZ1bmN0aW9uKHMpe3JldHVybiB7bmFtZTpzLm5hbWUrJyAnK2ZtdChzLnZhbHVlKSxjbHM6cy5jbHN9O30pKSk7Cn0KCi8qIOyEoO2YlSDstpTsnbQg7LCo7Yq4IOKAlCBzZXJpZXM6W3tuYW1lLGNscyxkYXRhOltdfV0sIGNhdHM6W+udvOuyqF0gKi8KZnVuY3Rpb24gbGluZUNoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIG49Y2F0cy5sZW5ndGg7IGlmKG48MikgcmV0dXJuOwogIHZhciBXPTY2MCxIPTI0MCxQTD01NCxQUj0xMixQVD0xNCxQQj0yNjsKICB2YXIgYWxsPVtdOyBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihzKXthbGw9YWxsLmNvbmNhdChzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uKHYpe3JldHVybiB2IT1udWxsO30pKTt9KTsKICBpZighYWxsLmxlbmd0aCkgcmV0dXJuOwogIHZhciBteD1NYXRoLm1heC5hcHBseShudWxsLGFsbCksIG1uPU1hdGgubWluLmFwcGx5KG51bGwsYWxsKTsKICB2YXIgcGFkPShteC1tbikqMC4xNXx8bXgqMC4wMnx8MTsgbXgrPXBhZDsgbW49TWF0aC5tYXgoMCxtbi1wYWQpOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBYPWZ1bmN0aW9uKGkpe3JldHVybiBQTCtpdyoobj09PTE/MC41OmkvKG4tMSkpO307CiAgdmFyIFk9ZnVuY3Rpb24odil7cmV0dXJuIFBUK2loKigxLSh2LW1uKS8oKG14LW1uKXx8MSkpO307CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9NDtnKyspewogICAgdmFyIGd2PW1uKyhteC1tbikqZy80LCBneT1ZKGd2KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4OlBMLTgseTpneSs0LCdjbGFzcyc6J2xiJywndGV4dC1hbmNob3InOidlbmQnfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGV4dENvbnRlbnQ6TWF0aC5yb3VuZChndikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyl9KSk7CiAgfQogIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIGQ9JycsIHN0YXJ0ZWQ9ZmFsc2U7CiAgICBzLmRhdGEuZm9yRWFjaChmdW5jdGlvbih2LGkpewogICAgICBpZih2PT1udWxsKSByZXR1cm47CiAgICAgIGQrPShzdGFydGVkPydMJzonTScpK1goaSkudG9GaXhlZCgxKSsnICcrWSh2KS50b0ZpeGVkKDEpKycgJzsgc3RhcnRlZD10cnVlOwogICAgfSk7CiAgICBpZihkKSBzdmcuYXBwZW5kQ2hpbGQoZWwoJ3BhdGgnLHtkOmQsZmlsbDonbm9uZScsJ3N0cm9rZSc6J3ZhcigtLScrcy5jbHMrJyknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cm9rZS13aWR0aCc6Mi4yLCdzdHJva2UtbGluZWpvaW4nOidyb3VuZCcsJ3N0cm9rZS1saW5lY2FwJzoncm91bmQnfSkpOwogICAgdmFyIGxhc3Q9cy5kYXRhLmxlbmd0aC0xOwogICAgaWYocy5kYXRhW2xhc3RdIT1udWxsKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoZWwoJ2NpcmNsZScse2N4OlgobGFzdCksY3k6WShzLmRhdGFbbGFzdF0pLHI6NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOid2YXIoLS0nK3MuY2xzKycpJyxzdHJva2U6J3ZhcigtLXN1cmZhY2UpJywnc3Ryb2tlLXdpZHRoJzoyfSkpOwogIH0pOwogIGNhdHMuZm9yRWFjaChmdW5jdGlvbihjLGkpewogICAgaWYobj4xMCAmJiBpJU1hdGguY2VpbChuLzcpIT09MCAmJiBpIT09bi0xKSByZXR1cm47CiAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6WChpKSx5OkgtOCwnY2xhc3MnOidsYicsJ3RleHQtYW5jaG9yJzonbWlkZGxlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgZm9yKHZhciBpPTA7aTxuO2krKyl7CiAgICAoZnVuY3Rpb24oaWR4KXsKICAgICAgdmFyIGhpdD1lbCgncmVjdCcse3g6WChpZHgpLWl3LyhuLTEpLzIseTpQVCx3aWR0aDppdy8obi0xKXx8MjAsaGVpZ2h0OmloLCdjbGFzcyc6J2hpdCd9KTsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgdmFyIHJvd3M9c2VyaWVzLm1hcChmdW5jdGlvbihzKXsKICAgICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICAgKyAnYmFja2dyb3VuZDp2YXIoLS0nK3MuY2xzKycpO21hcmdpbi1yaWdodDo2cHgiPjwvc3Bhbj4nK3MubmFtZSsnICcKICAgICAgICAgICAgICAgKyAocy5kYXRhW2lkeF09PW51bGw/Jy0nOmZtdChzLmRhdGFbaWR4XSkpOwogICAgICAgIH0pLmpvaW4oJzxicj4nKTsKICAgICAgICBzaG93VGlwKGJveCxldi5jbGllbnRYLWJyLmxlZnQsZXYuY2xpZW50WS1ici50b3AsJzxiPicrY2F0c1tpZHhdKyc8L2I+PGJyPicrcm93cyk7CiAgICAgIH0pOwogICAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsZnVuY3Rpb24oKXtoaWRlVGlwKGJveCk7fSk7CiAgICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgfSkoaSk7CiAgfQogIGJveC5hcHBlbmRDaGlsZChzdmcpOwogIGJveC5hcHBlbmRDaGlsZChsZWdlbmQoc2VyaWVzKSk7Cn0KCmZ1bmN0aW9uIGxlZ2VuZChpdGVtcyl7CiAgdmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGQuY2xhc3NOYW1lPSd0cGgtbGVnZW5kJzsKICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIHNwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgIHNwLmlubmVySFRNTD0nPGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKSI+PC9pPicrcy5uYW1lOwogICAgZC5hcHBlbmRDaGlsZChzcCk7CiAgfSk7CiAgcmV0dXJuIGQ7Cn0KCnZhciBDTE89MCwgQ0hJPTAsIEFWRz0wOyAgICAgIC8qIOyDiSDquLDspIDqsJIg4oCUIHJlbmRlcigpIOqwgCDqsLHsi6DtlZzri6QgKi8KCi8qIOq4sOuzuCDsg4kg7ZWo7IiYLiDquLDrpoTqsJLCt+u2gOuPmeyCsCDsoITqta0g7Y6Y7J207KeA64qUIOyVhOuemOyXkOyEnCDsnpDquLAg6rKD7J2EIOuLpOyLnCDsoJXsnZjtlbQg642u7Ja07JO064ukLgogICAo7Iuc64+Ewrfsi5zqtbDqtawg7Y6Y7J207KeA7JeQ64qUIOydtOqyjCDsl4bslrTshJwg7YG065+s7Iqk7YSwIOyVhOydtOy9mOydtCDthrXsp7jroZwg7JWIIOq3uOugpOyhjOyXiOuLpCkgKi8KZnVuY3Rpb24gY29sb3JGb3IodiwgbG8sIGhpKXsKICBpZihoaTw9bG8pIHJldHVybiAnIzljYTNhZic7CiAgdmFyIHQ9KHYtbG8pLyhoaS1sbyksIGNzPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICBpZih0PjAuNjYpIHJldHVybiBjcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXMyJykudHJpbSgpfHwnI2ViNjgzNCc7CiAgaWYodDwwLjMzKSByZXR1cm4gY3MuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zMScpLnRyaW0oKXx8JyMyYTc4ZDYnOwogIHJldHVybiAnIzljYTNhZic7Cn0KLyog7KeA7Jik7L2U65Sp7J20IOyWtOypjOuLpCDsl4nrmrHtlZwg6rOz7J2EIOynkeycvOuptCjrj5nrqoUg64uo7KeAKSDqt7gg7ZWcIOygkCDrlYzrrLjsl5Ag7KeA64+E6rCAIOyghOq1reycvOuhnCDspIzslYTsm4PrkJzri6QuCiAgIOyEnOyauCDtjpjsnbTsp4DqsIAg64Ko7JaR7KO8wrfsnbjsspzquYzsp4Ag64u07JWEIOuztOyduCDsoIHsnbQg7J6I64ukLiDrsJTquaUgMiXrpbwg7J6Y6528IOuylOychOulvCDsnqHripTri6QuICovCmZ1bmN0aW9uIGZpdFRvKG0sIHB0cywgbWF4Wm9vbSl7CiAgaWYoIXB0cy5sZW5ndGgpIHJldHVybjsKICBtLmludmFsaWRhdGVTaXplKGZhbHNlKTsKICBpZihwdHMubGVuZ3RoIDwgMzApeyBtLmZpdEJvdW5kcyhwdHMse3BhZGRpbmc6WzMwLDMwXSxtYXhab29tOm1heFpvb218fDE1fSk7IHJldHVybjsgfQogIHZhciBsYT1wdHMubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwWzBdO30pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS1iO30pOwogIHZhciBsbj1wdHMubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwWzFdO30pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS1iO30pOwogIHZhciBxPWZ1bmN0aW9uKGEsdCl7cmV0dXJuIGFbTWF0aC5taW4oYS5sZW5ndGgtMSxNYXRoLm1heCgwLE1hdGguZmxvb3IoYS5sZW5ndGgqdCkpKV07fTsKICBtLmZpdEJvdW5kcyhbW3EobGEsMC4wMikscShsbiwwLjAyKV0sW3EobGEsMC45OCkscShsbiwwLjk4KV1dLAogICAgICAgICAgICAgIHtwYWRkaW5nOlszMCwzMF0sbWF4Wm9vbTptYXhab29tfHwxNX0pOwp9CgovKiDrp4jsu6Trpbwg7ZWcIOqwnOyUqSBhZGRUbyDtlZjrqbQg7YG065+s7Iqk7YSw6rCAIOunpOuyiCDri6Tsi5wg6rOE7IKw65Cc64ukKDIsNTAw6rCc66m0IOuIiOyXkCDrs7TsnbTqsowg67KE67KF7J206rOgCiAgIO2ZlOuptOyXkCDqsrnsuZwg7LGE66GcIOuCqOuKlOuLpCkuIOuqqOyVhOyEnCBhZGRMYXllcnMg66GcIO2VnCDrsojsl5Ag64Sj64qU64ukLiAqLwp2YXIgUEVORD1bXTsKZnVuY3Rpb24gYWRkQWxsKGxheWVyLCBhcnIpewogIGlmKGxheWVyLmFkZExheWVycykgbGF5ZXIuYWRkTGF5ZXJzKGFycik7CiAgZWxzZSBhcnIuZm9yRWFjaChmdW5jdGlvbihtKXsgbS5hZGRUbyhsYXllcik7IH0pOwp9CgpmdW5jdGlvbiBjbHVzdGVyR3JvdXAoZm10LCBjb2xGbil7CiAgaWYoIXdpbmRvdy5MIHx8ICFMLm1hcmtlckNsdXN0ZXJHcm91cCkKICAgIHJldHVybiBMLmxheWVyR3JvdXAoKTsgICAgICAgICAgLyog7ZSM65+s6re47J247J20IOuquyDrlrTsnLzrqbQg6re464OlIOuLpCDssI3ripTri6QgKi8KICByZXR1cm4gTC5tYXJrZXJDbHVzdGVyR3JvdXAoewogICAgY2h1bmtlZExvYWRpbmc6dHJ1ZSwgc2hvd0NvdmVyYWdlT25Ib3ZlcjpmYWxzZSwgc3BpZGVyZnlPbk1heFpvb206dHJ1ZSwKICAgIGRpc2FibGVDbHVzdGVyaW5nQXRab29tOjE1LCBtYXhDbHVzdGVyUmFkaXVzOjg0LAogICAgaWNvbkNyZWF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKGMpewogICAgICB2YXIgbXM9Yy5nZXRBbGxDaGlsZE1hcmtlcnMoKSwgdj1bXTsKICAgICAgZm9yKHZhciBpPTA7aTxtcy5sZW5ndGg7aSsrKXsgaWYobXNbaV0ub3B0aW9ucy5wdiE9bnVsbCkgdi5wdXNoKG1zW2ldLm9wdGlvbnMucHYpOyB9CiAgICAgIHYuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWI7fSk7CiAgICAgIHZhciBtaWQgPSB2Lmxlbmd0aD8gdlt2Lmxlbmd0aD4+MV0gOiBudWxsOwogICAgICB2YXIgbj1jLmdldENoaWxkQ291bnQoKTsKICAgICAgdmFyIHN6ID0gbj4zMDA/NTggOiBuPjYwPzUwIDogNDM7CiAgICAgIHJldHVybiBMLmRpdkljb24oe2NsYXNzTmFtZTondHBoLWNsdXN0ZXInLCBpY29uU2l6ZTpbc3osc3pdLAogICAgICAgIGh0bWw6JzxkaXYgY2xhc3M9ImNsIiBzdHlsZT0id2lkdGg6JytzeisncHg7aGVpZ2h0Oicrc3orJ3B4O2JhY2tncm91bmQ6JwogICAgICAgICAgICAgKyhtaWQ9PW51bGw/JyM5Y2EzYWYnOmNvbEZuKG1pZCkpKyciPicKICAgICAgICAgICAgICsnPGI+JysobWlkPT1udWxsPycnOmZtdChtaWQpKSsnPC9iPjxpPicrbisn6rOzPC9pPjwvZGl2Pid9KTsKICAgIH19KTsKfQoKdmFyIFJJRFg9W3sibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg6rCV66aJ7IucIiwgInMiOiAi6rCV66aJ7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At6rCV66aJ7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOqzoOyEseq1sCIsICJzIjogIuqzoOyEseq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeqzoOyEseq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDrj5ntlbTsi5wiLCAicyI6ICLrj5ntlbTsi5wiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3rj5ntlbTsi5wvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7IK87LKZ7IucIiwgInMiOiAi7IK87LKZ7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7IK87LKZ7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOyGjey0iOyLnCIsICJzIjogIuyGjey0iOyLnCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeyGjey0iOyLnC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDslpHqtazqtbAiLCAicyI6ICLslpHqtazqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3slpHqtazqtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7JaR7JaR6rWwIiwgInMiOiAi7JaR7JaR6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7JaR7JaR6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOyYgeyblOq1sCIsICJzIjogIuyYgeyblOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeyYgeyblOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDsm5Dso7zsi5wiLCAicyI6ICLsm5Dso7zsi5wiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3sm5Dso7zsi5wvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7J247KCc6rWwIiwgInMiOiAi7J247KCc6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7J247KCc6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOygleyEoOq1sCIsICJzIjogIuygleyEoOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeygleyEoOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDssqDsm5DqtbAiLCAicyI6ICLssqDsm5DqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3ssqDsm5DqtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7LaY7LKc7IucIiwgInMiOiAi7LaY7LKc7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7LaY7LKc7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIO2DnOuwseyLnCIsICJzIjogIu2DnOuwseyLnCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLe2DnOuwseyLnC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDtj4nssL3qtbAiLCAicyI6ICLtj4nssL3qtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3tj4nssL3qtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7ZmN7LKc6rWwIiwgInMiOiAi7ZmN7LKc6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7ZmN7LKc6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIO2ZlOyynOq1sCIsICJzIjogIu2ZlOyynOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLe2ZlOyynOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDtmqHshLHqtbAiLCAicyI6ICLtmqHshLHqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3tmqHshLHqtbAvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rCA7Y+J6rWwIiwgInMiOiAi6rCA7Y+J6rWwIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rCA7Y+J6rWwLyJ9LCB7Im4iOiAi6rK96riw64+EIOqzoOyWkeyLnCDrjZXslpHqtawiLCAicyI6ICLqs6DslpHsi5wg642V7JaR6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rOg7JaR7IucLeuNleyWkeq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDqs6DslpHsi5wg7J287IKw64+Z6rWsIiwgInMiOiAi6rOg7JaR7IucIOydvOyCsOuPmeq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeqzoOyWkeyLnC3snbzsgrDrj5nqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rOg7JaR7IucIOydvOyCsOyEnOq1rCIsICJzIjogIuqzoOyWkeyLnCDsnbzsgrDshJzqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qs6DslpHsi5wt7J287IKw7ISc6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOqzvOyynOyLnCIsICJzIjogIuqzvOyynOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeqzvOyynOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDqtJHrqoXsi5wiLCAicyI6ICLqtJHrqoXsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qtJHrqoXsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rSR7KO87IucIiwgInMiOiAi6rSR7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rSR7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOq1rOumrOyLnCIsICJzIjogIuq1rOumrOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeq1rOumrOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDqtbDtj6zsi5wiLCAicyI6ICLqtbDtj6zsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qtbDtj6zsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rmA7Y+s7IucIiwgInMiOiAi6rmA7Y+s7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rmA7Y+s7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOuCqOyWkeyjvOyLnCIsICJzIjogIuuCqOyWkeyjvOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeuCqOyWkeyjvOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDrj5nrkZDsspzsi5wiLCAicyI6ICLrj5nrkZDsspzsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3rj5nrkZDsspzsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg67aA7LKc7IucIOyGjOyCrOq1rCIsICJzIjogIuu2gOyynOyLnCDshozsgqzqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3rtoDsspzsi5wt7IaM7IKs6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOu2gOyynOyLnCDsmKTsoJXqtawiLCAicyI6ICLrtoDsspzsi5wg7Jik7KCV6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt67aA7LKc7IucLeyYpOygleq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDrtoDsspzsi5wg7JuQ66+46rWsIiwgInMiOiAi67aA7LKc7IucIOybkOuvuOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeu2gOyynOyLnC3sm5Drr7jqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ISx64Ko7IucIOu2hOuLueq1rCIsICJzIjogIuyEseuCqOyLnCDrtoTri7nqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3shLHrgqjsi5wt67aE64u56rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyEseuCqOyLnCDsiJjsoJXqtawiLCAicyI6ICLshLHrgqjsi5wg7IiY7KCV6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ISx64Ko7IucLeyImOygleq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDshLHrgqjsi5wg7KSR7JuQ6rWsIiwgInMiOiAi7ISx64Ko7IucIOykkeybkOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyEseuCqOyLnC3spJHsm5DqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7IiY7JuQ7IucIOq2jOyEoOq1rCIsICJzIjogIuyImOybkOyLnCDqtozshKDqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3siJjsm5Dsi5wt6raM7ISg6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyImOybkOyLnCDsmIHthrXqtawiLCAicyI6ICLsiJjsm5Dsi5wg7JiB7Ya16rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7IiY7JuQ7IucLeyYge2Gteq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDsiJjsm5Dsi5wg7J6l7JWI6rWsIiwgInMiOiAi7IiY7JuQ7IucIOyepeyViOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyImOybkOyLnC3snqXslYjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7IiY7JuQ7IucIO2MlOuLrOq1rCIsICJzIjogIuyImOybkOyLnCDtjJTri6zqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3siJjsm5Dsi5wt7YyU64us6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyLnO2dpeyLnCIsICJzIjogIuyLnO2dpeyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyLnO2dpeyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDslYjsgrDsi5wg64uo7JuQ6rWsIiwgInMiOiAi7JWI7IKw7IucIOuLqOybkOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyCsOyLnC3ri6jsm5DqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7JWI7IKw7IucIOyDgeuhneq1rCIsICJzIjogIuyViOyCsOyLnCDsg4HroZ3qtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3slYjsgrDsi5wt7IOB66Gd6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyViOyEseyLnCIsICJzIjogIuyViOyEseyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyEseyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDslYjslpHsi5wg64+Z7JWI6rWsIiwgInMiOiAi7JWI7JaR7IucIOuPmeyViOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyWkeyLnC3rj5nslYjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7JWI7JaR7IucIOunjOyViOq1rCIsICJzIjogIuyViOyWkeyLnCDrp4zslYjqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3slYjslpHsi5wt66eM7JWI6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyWkeyjvOyLnCIsICJzIjogIuyWkeyjvOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyWkeyjvOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDslpHtj4nqtbAiLCAicyI6ICLslpHtj4nqtbAiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3slpHtj4nqtbAvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Jes7KO87IucIiwgInMiOiAi7Jes7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Jes7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOyXsOyynOq1sCIsICJzIjogIuyXsOyynOq1sCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyXsOyynOq1sC8ifSwgeyJuIjogIuqyveq4sOuPhCDsmKTsgrDsi5wiLCAicyI6ICLsmKTsgrDsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3smKTsgrDsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Jqp7J247IucIOq4sO2dpeq1rCIsICJzIjogIuyaqeyduOyLnCDquLDtnaXqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3smqnsnbjsi5wt6riw7Z2l6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyaqeyduOyLnCDsiJjsp4DqtawiLCAicyI6ICLsmqnsnbjsi5wg7IiY7KeA6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Jqp7J247IucLeyImOyngOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDsmqnsnbjsi5wg7LKY7J246rWsIiwgInMiOiAi7Jqp7J247IucIOyymOyduOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyaqeyduOyLnC3sspjsnbjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7J2Y7JmV7IucIiwgInMiOiAi7J2Y7JmV7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7J2Y7JmV7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOydmOygleu2gOyLnCIsICJzIjogIuydmOygleu2gOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeydmOygleu2gOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDsnbTsspzsi5wiLCAicyI6ICLsnbTsspzsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3snbTsspzsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7YyM7KO87IucIiwgInMiOiAi7YyM7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7YyM7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIO2Pie2DneyLnCIsICJzIjogIu2Pie2DneyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLe2Pie2DneyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDtj6zsspzsi5wiLCAicyI6ICLtj6zsspzsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tj6zsspzsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ZWY64Ko7IucIiwgInMiOiAi7ZWY64Ko7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ZWY64Ko7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIO2ZlOyEseyLnCDrj5ntg4TqtawiLCAicyI6ICLtmZTshLHsi5wg64+Z7YOE6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ZmU7ISx7IucLeuPme2DhOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDtmZTshLHsi5wg66eM7IS46rWsIiwgInMiOiAi7ZmU7ISx7IucIOunjOyEuOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLe2ZlOyEseyLnC3rp4zshLjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ZmU7ISx7IucIOuzkeygkOq1rCIsICJzIjogIu2ZlOyEseyLnCDrs5HsoJDqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tmZTshLHsi5wt67OR7KCQ6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIO2ZlOyEseyLnCDtmqjtlonqtawiLCAicyI6ICLtmZTshLHsi5wg7Zqo7ZaJ6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ZmU7ISx7IucLe2aqO2Wieq1rC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDqsbDsoJzsi5wiLCAicyI6ICLqsbDsoJzsi5wiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3qsbDsoJzsi5wvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg6rGw7LC96rWwIiwgInMiOiAi6rGw7LC96rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt6rGw7LC96rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOqzoOyEseq1sCIsICJzIjogIuqzoOyEseq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeqzoOyEseq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDquYDtlbTsi5wiLCAicyI6ICLquYDtlbTsi5wiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3quYDtlbTsi5wvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg64Ko7ZW06rWwIiwgInMiOiAi64Ko7ZW06rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt64Ko7ZW06rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOuwgOyWkeyLnCIsICJzIjogIuuwgOyWkeyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeuwgOyWkeyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDsgqzsspzsi5wiLCAicyI6ICLsgqzsspzsi5wiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3sgqzsspzsi5wvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7IKw7LKt6rWwIiwgInMiOiAi7IKw7LKt6rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7IKw7LKt6rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOyWkeyCsOyLnCIsICJzIjogIuyWkeyCsOyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeyWkeyCsOyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDsnZjroLnqtbAiLCAicyI6ICLsnZjroLnqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3snZjroLnqtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7KeE7KO87IucIiwgInMiOiAi7KeE7KO87IucIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7KeE7KO87IucLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOywveuFleq1sCIsICJzIjogIuywveuFleq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveuFleq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDssL3sm5Dsi5wg66eI7IKw7ZWp7Y+s6rWsIiwgInMiOiAi7LC97JuQ7IucIOuniOyCsO2Vqe2PrOq1rCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveybkOyLnC3rp4jsgrDtlantj6zqtawvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7LC97JuQ7IucIOuniOyCsO2ajOybkOq1rCIsICJzIjogIuywveybkOyLnCDrp4jsgrDtmozsm5DqtawiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3ssL3sm5Dsi5wt66eI7IKw7ZqM7JuQ6rWsLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOywveybkOyLnCDshLHsgrDqtawiLCAicyI6ICLssL3sm5Dsi5wg7ISx7IKw6rWsIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7LC97JuQ7IucLeyEseyCsOq1rC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDssL3sm5Dsi5wg7J2Y7LC96rWsIiwgInMiOiAi7LC97JuQ7IucIOydmOywveq1rCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveybkOyLnC3snZjssL3qtawvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7LC97JuQ7IucIOynhO2VtOq1rCIsICJzIjogIuywveybkOyLnCDsp4TtlbTqtawiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3ssL3sm5Dsi5wt7KeE7ZW06rWsLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIO2GteyYgeyLnCIsICJzIjogIu2GteyYgeyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLe2GteyYgeyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDtlZjrj5nqtbAiLCAicyI6ICLtlZjrj5nqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3tlZjrj5nqtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7ZWo7JWI6rWwIiwgInMiOiAi7ZWo7JWI6rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7ZWo7JWI6rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIO2VqOyWkeq1sCIsICJzIjogIu2VqOyWkeq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLe2VqOyWkeq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDtlansspzqtbAiLCAicyI6ICLtlansspzqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3tlansspzqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg6rK97IKw7IucIiwgInMiOiAi6rK97IKw7IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt6rK97IKw7IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOqyveyjvOyLnCIsICJzIjogIuqyveyjvOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeqyveyjvOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDqs6DroLnqtbAiLCAicyI6ICLqs6DroLnqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3qs6DroLnqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg6rWs66+47IucIiwgInMiOiAi6rWs66+47IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt6rWs66+47IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOq5gOyynOyLnCIsICJzIjogIuq5gOyynOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeq5gOyynOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDrrLjqsr3si5wiLCAicyI6ICLrrLjqsr3si5wiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3rrLjqsr3si5wvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg67SJ7ZmU6rWwIiwgInMiOiAi67SJ7ZmU6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt67SJ7ZmU6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyDgeyjvOyLnCIsICJzIjogIuyDgeyjvOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyDgeyjvOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDshLHso7zqtbAiLCAicyI6ICLshLHso7zqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3shLHso7zqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7JWI64+Z7IucIiwgInMiOiAi7JWI64+Z7IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7JWI64+Z7IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyYgeuNleq1sCIsICJzIjogIuyYgeuNleq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyYgeuNleq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsmIHslpHqtbAiLCAicyI6ICLsmIHslpHqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3smIHslpHqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7JiB7KO87IucIiwgInMiOiAi7JiB7KO87IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7JiB7KO87IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyYgeyynOyLnCIsICJzIjogIuyYgeyynOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyYgeyynOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsmIjsspzqtbAiLCAicyI6ICLsmIjsspzqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3smIjsspzqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7Jq466aJ6rWwIiwgInMiOiAi7Jq466aJ6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7Jq466aJ6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyauOynhOq1sCIsICJzIjogIuyauOynhOq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyauOynhOq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsnZjshLHqtbAiLCAicyI6ICLsnZjshLHqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3snZjshLHqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7LKt64+E6rWwIiwgInMiOiAi7LKt64+E6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7LKt64+E6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyyreyGoeq1sCIsICJzIjogIuyyreyGoeq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyyreyGoeq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsuaDqs6HqtbAiLCAicyI6ICLsuaDqs6HqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3suaDqs6HqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7Y+s7ZWt7IucIOuCqOq1rCIsICJzIjogIu2PrO2VreyLnCDrgqjqtawiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3tj6ztla3si5wt64Ko6rWsLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIO2PrO2VreyLnCDrtoHqtawiLCAicyI6ICLtj6ztla3si5wg67aB6rWsIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7Y+s7ZWt7IucLeu2geq1rC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDqtbDsnITqtbAiLCAicyI6ICLqtbDsnITqtbAiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3qtbDsnITqtbAvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg64Ko6rWsIiwgInMiOiAi64Ko6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt64Ko6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOuLrOyEnOq1rCIsICJzIjogIuuLrOyEnOq1rCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeuLrOyEnOq1rC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDri6zshLHqtbAiLCAicyI6ICLri6zshLHqtbAiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3ri6zshLHqtbAvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg64+Z6rWsIiwgInMiOiAi64+Z6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt64+Z6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOu2geq1rCIsICJzIjogIuu2geq1rCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeu2geq1rC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDshJzqtawiLCAicyI6ICLshJzqtawiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3shJzqtawvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg7IiY7ISx6rWsIiwgInMiOiAi7IiY7ISx6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt7IiY7ISx6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOykkeq1rCIsICJzIjogIuykkeq1rCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeykkeq1rC8ifSwgeyJuIjogIuuMgOyghOq0keyXreyLnCDrjIDrjZXqtawiLCAicyI6ICLrjIDrjZXqtawiLCAiZCI6ICLrjIDsoIQiLCAidSI6ICIv67aA64+Z7IKwLeuMgOyghC3rjIDrjZXqtawvIn0sIHsibiI6ICLrjIDsoITqtJHsl63si5wg64+Z6rWsIiwgInMiOiAi64+Z6rWsIiwgImQiOiAi64yA7KCEIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDsoIQt64+Z6rWsLyJ9LCB7Im4iOiAi64yA7KCE6rSR7Jet7IucIOyEnOq1rCIsICJzIjogIuyEnOq1rCIsICJkIjogIuuMgOyghCIsICJ1IjogIi/rtoDrj5nsgrAt64yA7KCELeyEnOq1rC8ifSwgeyJuIjogIuuMgOyghOq0keyXreyLnCDsnKDshLHqtawiLCAicyI6ICLsnKDshLHqtawiLCAiZCI6ICLrjIDsoIQiLCAidSI6ICIv67aA64+Z7IKwLeuMgOyghC3snKDshLHqtawvIn0sIHsibiI6ICLrjIDsoITqtJHsl63si5wg7KSR6rWsIiwgInMiOiAi7KSR6rWsIiwgImQiOiAi64yA7KCEIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDsoIQt7KSR6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOqwleyEnOq1rCIsICJzIjogIuqwleyEnOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeqwleyEnOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDquIjsoJXqtawiLCAicyI6ICLquIjsoJXqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3quIjsoJXqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg6riw7J6l6rWwIiwgInMiOiAi6riw7J6l6rWwIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt6riw7J6l6rWwLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOuCqOq1rCIsICJzIjogIuuCqOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeuCqOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDrj5nqtawiLCAicyI6ICLrj5nqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3rj5nqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg64+Z656Y6rWsIiwgInMiOiAi64+Z656Y6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt64+Z656Y6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOu2gOyCsOynhOq1rCIsICJzIjogIuu2gOyCsOynhOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeu2gOyCsOynhOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDrtoHqtawiLCAicyI6ICLrtoHqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3rtoHqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7IKs7IOB6rWsIiwgInMiOiAi7IKs7IOB6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7IKs7IOB6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOyCrO2VmOq1rCIsICJzIjogIuyCrO2VmOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeyCrO2VmOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDshJzqtawiLCAicyI6ICLshJzqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3shJzqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7IiY7JiB6rWsIiwgInMiOiAi7IiY7JiB6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7IiY7JiB6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOyXsOygnOq1rCIsICJzIjogIuyXsOygnOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeyXsOygnOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDsmIHrj4TqtawiLCAicyI6ICLsmIHrj4TqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3smIHrj4TqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7KSR6rWsIiwgInMiOiAi7KSR6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7KSR6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIO2VtOyatOuMgOq1rCIsICJzIjogIu2VtOyatOuMgOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLe2VtOyatOuMgOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqsJXrgqjqtawiLCAicyI6ICLqsJXrgqjqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qsJXrgqjqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6rCV64+Z6rWsIiwgInMiOiAi6rCV64+Z6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6rCV64+Z6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOqwleu2geq1rCIsICJzIjogIuqwleu2geq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leqwleu2geq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqsJXshJzqtawiLCAicyI6ICLqsJXshJzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qsJXshJzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6rSA7JWF6rWsIiwgInMiOiAi6rSA7JWF6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6rSA7JWF6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOq0keynhOq1rCIsICJzIjogIuq0keynhOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leq0keynhOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqtazroZzqtawiLCAicyI6ICLqtazroZzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qtazroZzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6riI7LKc6rWsIiwgInMiOiAi6riI7LKc6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6riI7LKc6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOuFuOybkOq1rCIsICJzIjogIuuFuOybkOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeuFuOybkOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDrj4TrtInqtawiLCAicyI6ICLrj4TrtInqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3rj4TrtInqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg64+Z64yA66y46rWsIiwgInMiOiAi64+Z64yA66y46rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt64+Z64yA66y46rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOuPmeyekeq1rCIsICJzIjogIuuPmeyekeq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeuPmeyekeq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDrp4jtj6zqtawiLCAicyI6ICLrp4jtj6zqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3rp4jtj6zqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7ISc64yA66y46rWsIiwgInMiOiAi7ISc64yA66y46rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7ISc64yA66y46rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyEnOy0iOq1rCIsICJzIjogIuyEnOy0iOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyEnOy0iOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDshLHrj5nqtawiLCAicyI6ICLshLHrj5nqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3shLHrj5nqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7ISx67aB6rWsIiwgInMiOiAi7ISx67aB6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7ISx67aB6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyGoe2MjOq1rCIsICJzIjogIuyGoe2MjOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyGoe2MjOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDslpHsspzqtawiLCAicyI6ICLslpHsspzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3slpHsspzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7JiB65Ox7Y+s6rWsIiwgInMiOiAi7JiB65Ox7Y+s6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7JiB65Ox7Y+s6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyaqeyCsOq1rCIsICJzIjogIuyaqeyCsOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyaqeyCsOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDsnYDtj4nqtawiLCAicyI6ICLsnYDtj4nqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3snYDtj4nqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7KKF66Gc6rWsIiwgInMiOiAi7KKF66Gc6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7KKF66Gc6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOykkeq1rCIsICJzIjogIuykkeq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leykkeq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDspJHrnpHqtawiLCAicyI6ICLspJHrnpHqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3spJHrnpHqtawvIn0sIHsibiI6ICLshLjsooXtirnrs4TsnpDsuZjsi5wiLCAicyI6ICLshLjsooXtirnrs4TsnpDsuZjsi5wiLCAiZCI6ICLshLjsooUiLCAidSI6ICIv67aA64+Z7IKwLeyEuOyihS3shLjsooXtirnrs4TsnpDsuZjsi5wvIn0sIHsibiI6ICLsmrjsgrDqtJHsl63si5wg64Ko6rWsIiwgInMiOiAi64Ko6rWsIiwgImQiOiAi7Jq47IKwIiwgInUiOiAiL+u2gOuPmeyCsC3smrjsgrAt64Ko6rWsLyJ9LCB7Im4iOiAi7Jq47IKw6rSR7Jet7IucIOuPmeq1rCIsICJzIjogIuuPmeq1rCIsICJkIjogIuyauOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt7Jq47IKwLeuPmeq1rC8ifSwgeyJuIjogIuyauOyCsOq0keyXreyLnCDrtoHqtawiLCAicyI6ICLrtoHqtawiLCAiZCI6ICLsmrjsgrAiLCAidSI6ICIv67aA64+Z7IKwLeyauOyCsC3rtoHqtawvIn0sIHsibiI6ICLsmrjsgrDqtJHsl63si5wg7Jq47KO86rWwIiwgInMiOiAi7Jq47KO86rWwIiwgImQiOiAi7Jq47IKwIiwgInUiOiAiL+u2gOuPmeyCsC3smrjsgrAt7Jq47KO86rWwLyJ9LCB7Im4iOiAi7Jq47IKw6rSR7Jet7IucIOykkeq1rCIsICJzIjogIuykkeq1rCIsICJkIjogIuyauOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt7Jq47IKwLeykkeq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDqsJXtmZTqtbAiLCAicyI6ICLqsJXtmZTqtbAiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3qsJXtmZTqtbAvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg6rKA64uo6rWsIiwgInMiOiAi6rKA64uo6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt6rKA64uo6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOqzhOyWkeq1rCIsICJzIjogIuqzhOyWkeq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeqzhOyWkeq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDrgqjrj5nqtawiLCAicyI6ICLrgqjrj5nqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3rgqjrj5nqtawvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg66+47LaU7ZmA6rWsIiwgInMiOiAi66+47LaU7ZmA6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt66+47LaU7ZmA6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOu2gO2Pieq1rCIsICJzIjogIuu2gO2Pieq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeu2gO2Pieq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDshJztlbTqtawiLCAicyI6ICLshJztlbTqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3shJztlbTqtawvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg7Jew7IiY6rWsIiwgInMiOiAi7Jew7IiY6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt7Jew7IiY6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOyYgeyiheq1rCIsICJzIjogIuyYgeyiheq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeyYgeyiheq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDsoJzrrLztj6zqtawiLCAicyI6ICLsoJzrrLztj6zqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3soJzrrLztj6zqtawvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg6rCV7KeE6rWwIiwgInMiOiAi6rCV7KeE6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt6rCV7KeE6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOqzoO2dpeq1sCIsICJzIjogIuqzoO2dpeq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeqzoO2dpeq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDqs6HshLHqtbAiLCAicyI6ICLqs6HshLHqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3qs6HshLHqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg6rSR7IKw6rWsIiwgInMiOiAi6rSR7IKw6rWsIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt6rSR7IKw6rWsLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOq0keyWkeyLnCIsICJzIjogIuq0keyWkeyLnCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leq0keyWkeyLnC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDqtazroYDqtbAiLCAicyI6ICLqtazroYDqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3qtazroYDqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg64KY7KO87IucIiwgInMiOiAi64KY7KO87IucIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt64KY7KO87IucLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOuCqOq1rCIsICJzIjogIuuCqOq1rCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeuCqOq1rC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDri7TslpHqtbAiLCAicyI6ICLri7TslpHqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3ri7TslpHqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg64+Z6rWsIiwgInMiOiAi64+Z6rWsIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt64+Z6rWsLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOuqqe2PrOyLnCIsICJzIjogIuuqqe2PrOyLnCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leuqqe2PrOyLnC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDrrLTslYjqtbAiLCAicyI6ICLrrLTslYjqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3rrLTslYjqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg67O07ISx6rWwIiwgInMiOiAi67O07ISx6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt67O07ISx6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOu2geq1rCIsICJzIjogIuu2geq1rCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leu2geq1rC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDshJzqtawiLCAicyI6ICLshJzqtawiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3shJzqtawvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7Iic7LKc7IucIiwgInMiOiAi7Iic7LKc7IucIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7Iic7LKc7IucLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyLoOyViOq1sCIsICJzIjogIuyLoOyViOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeyLoOyViOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsl6zsiJjsi5wiLCAicyI6ICLsl6zsiJjsi5wiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3sl6zsiJjsi5wvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7JiB6rSR6rWwIiwgInMiOiAi7JiB6rSR6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7JiB6rSR6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyYgeyVlOq1sCIsICJzIjogIuyYgeyVlOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeyYgeyVlOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsmYTrj4TqtbAiLCAicyI6ICLsmYTrj4TqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3smYTrj4TqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7J6l7ISx6rWwIiwgInMiOiAi7J6l7ISx6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7J6l7ISx6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyepe2dpeq1sCIsICJzIjogIuyepe2dpeq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leyepe2dpeq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsp4Trj4TqtbAiLCAicyI6ICLsp4Trj4TqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3sp4Trj4TqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7ZWo7Y+J6rWwIiwgInMiOiAi7ZWo7Y+J6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7ZWo7Y+J6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIO2VtOuCqOq1sCIsICJzIjogIu2VtOuCqOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Le2VtOuCqOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDtmZTsiJzqtbAiLCAicyI6ICLtmZTsiJzqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3tmZTsiJzqtbAvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg6rOg7LC96rWwIiwgInMiOiAi6rOg7LC96rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt6rOg7LC96rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOq1sOyCsOyLnCIsICJzIjogIuq1sOyCsOyLnCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeq1sOyCsOyLnC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDquYDsoJzsi5wiLCAicyI6ICLquYDsoJzsi5wiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3quYDsoJzsi5wvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg64Ko7JuQ7IucIiwgInMiOiAi64Ko7JuQ7IucIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt64Ko7JuQ7IucLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOustOyjvOq1sCIsICJzIjogIuustOyjvOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeustOyjvOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDrtoDslYjqtbAiLCAicyI6ICLrtoDslYjqtbAiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3rtoDslYjqtbAvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7Iic7LC96rWwIiwgInMiOiAi7Iic7LC96rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7Iic7LC96rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOyZhOyjvOq1sCIsICJzIjogIuyZhOyjvOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeyZhOyjvOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsnbXsgrDsi5wiLCAicyI6ICLsnbXsgrDsi5wiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3snbXsgrDsi5wvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7J6E7Iuk6rWwIiwgInMiOiAi7J6E7Iuk6rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7J6E7Iuk6rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOyepeyImOq1sCIsICJzIjogIuyepeyImOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeyepeyImOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsoITso7zsi5wg642V7KeE6rWsIiwgInMiOiAi7KCE7KO87IucIOuNleynhOq1rCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeyghOyjvOyLnC3rjZXsp4TqtawvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7KCE7KO87IucIOyZhOyCsOq1rCIsICJzIjogIuyghOyjvOyLnCDsmYTsgrDqtawiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3soITso7zsi5wt7JmE7IKw6rWsLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOygleydjeyLnCIsICJzIjogIuygleydjeyLnCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeygleydjeyLnC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsp4TslYjqtbAiLCAicyI6ICLsp4TslYjqtbAiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3sp4TslYjqtbAvIn0sIHsibiI6ICLsoJzso7ztirnrs4TsnpDsuZjrj4Qg7ISc6reA7Y+s7IucIiwgInMiOiAi7ISc6reA7Y+s7IucIiwgImQiOiAi7KCc7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soJzso7wt7ISc6reA7Y+s7IucLyJ9LCB7Im4iOiAi7KCc7KO87Yq567OE7J6Q7LmY64+EIOygnOyjvOyLnCIsICJzIjogIuygnOyjvOyLnCIsICJkIjogIuygnOyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCc7KO8LeygnOyjvOyLnC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDqs4Tro6Hsi5wiLCAicyI6ICLqs4Tro6Hsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3qs4Tro6Hsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg6rO17KO87IucIiwgInMiOiAi6rO17KO87IucIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt6rO17KO87IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOq4iOyCsOq1sCIsICJzIjogIuq4iOyCsOq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeq4iOyCsOq1sC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDrhbzsgrDsi5wiLCAicyI6ICLrhbzsgrDsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3rhbzsgrDsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg64u57KeE7IucIiwgInMiOiAi64u57KeE7IucIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt64u57KeE7IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOuztOugueyLnCIsICJzIjogIuuztOugueyLnCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeuztOugueyLnC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDrtoDsl6zqtbAiLCAicyI6ICLrtoDsl6zqtbAiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3rtoDsl6zqtbAvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7ISc7IKw7IucIiwgInMiOiAi7ISc7IKw7IucIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7ISc7IKw7IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOyEnOyynOq1sCIsICJzIjogIuyEnOyynOq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeyEnOyynOq1sC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDslYTsgrDsi5wiLCAicyI6ICLslYTsgrDsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3slYTsgrDsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7JiI7IKw6rWwIiwgInMiOiAi7JiI7IKw6rWwIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7JiI7IKw6rWwLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOyynOyViOyLnCDrj5nrgqjqtawiLCAicyI6ICLsspzslYjsi5wg64+Z64Ko6rWsIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7LKc7JWI7IucLeuPmeuCqOq1rC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDsspzslYjsi5wg7ISc67aB6rWsIiwgInMiOiAi7LKc7JWI7IucIOyEnOu2geq1rCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeyynOyViOyLnC3shJzrtoHqtawvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7LKt7JaR6rWwIiwgInMiOiAi7LKt7JaR6rWwIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7LKt7JaR6rWwLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIO2DnOyViOq1sCIsICJzIjogIu2DnOyViOq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLe2DnOyViOq1sC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDtmY3shLHqtbAiLCAicyI6ICLtmY3shLHqtbAiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3tmY3shLHqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg6rS07IKw6rWwIiwgInMiOiAi6rS07IKw6rWwIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt6rS07IKw6rWwLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOuLqOyWkeq1sCIsICJzIjogIuuLqOyWkeq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeuLqOyWkeq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDrs7TsnYDqtbAiLCAicyI6ICLrs7TsnYDqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3rs7TsnYDqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7JiB64+Z6rWwIiwgInMiOiAi7JiB64+Z6rWwIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7JiB64+Z6rWwLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOyYpeyynOq1sCIsICJzIjogIuyYpeyynOq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeyYpeyynOq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDsnYzshLHqtbAiLCAicyI6ICLsnYzshLHqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3snYzshLHqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7KCc7LKc7IucIiwgInMiOiAi7KCc7LKc7IucIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7KCc7LKc7IucLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOymne2Pieq1sCIsICJzIjogIuymne2Pieq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeymne2Pieq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDsp4TsspzqtbAiLCAicyI6ICLsp4TsspzqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3sp4TsspzqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7LKt7KO87IucIOyDgeuLueq1rCIsICJzIjogIuyyreyjvOyLnCDsg4Hri7nqtawiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3ssq3so7zsi5wt7IOB64u56rWsLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOyyreyjvOyLnCDshJzsm5DqtawiLCAicyI6ICLssq3so7zsi5wg7ISc7JuQ6rWsIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7LKt7KO87IucLeyEnOybkOq1rC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDssq3so7zsi5wg7LKt7JuQ6rWsIiwgInMiOiAi7LKt7KO87IucIOyyreybkOq1rCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeyyreyjvOyLnC3ssq3sm5DqtawvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7LKt7KO87IucIO2dpeuNleq1rCIsICJzIjogIuyyreyjvOyLnCDtnaXrjZXqtawiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3ssq3so7zsi5wt7Z2l642V6rWsLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOy2qeyjvOyLnCIsICJzIjogIuy2qeyjvOyLnCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLey2qeyjvOyLnC8ifV07CgpmdW5jdGlvbiBpbml0RmluZGVyKCl7CiAgdmFyIHE9JCgncnEnKSwgYm94PSQoJ2ZyZXMnKTsKICBpZighcXx8IWJveHx8IXdpbmRvdy5SSURYKSByZXR1cm47CiAgdmFyIGN1cj0tMSwgcm93cz1bXTsKICB2YXIgZHJhdz1mdW5jdGlvbigpewogICAgdmFyIHY9cS52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTsKICAgIGlmKCF2KXsgYm94LmhpZGRlbj10cnVlOyBib3guaW5uZXJIVE1MPScnOyByZXR1cm47IH0KICAgIHJvd3M9UklEWC5maWx0ZXIoZnVuY3Rpb24ocil7CiAgICAgIHJldHVybiByLm4udG9Mb3dlckNhc2UoKS5pbmRleE9mKHYpPj0wIHx8IHIucy50b0xvd2VyQ2FzZSgpLmluZGV4T2Yodik+PTA7CiAgICB9KS5zbGljZSgwLDgpOwogICAgaWYoIXJvd3MubGVuZ3RoKXsKICAgICAgYm94LmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibm9uZSI+7LC+64qUIOyngOyXreydtCDsl4bsirXri4jri6Q8L2Rpdj4nOyBib3guaGlkZGVuPWZhbHNlOyByZXR1cm47CiAgICB9CiAgICBjdXI9LTE7CiAgICBib3guaW5uZXJIVE1MPXJvd3MubWFwKGZ1bmN0aW9uKHIsaSl7CiAgICAgIHJldHVybiAnPGEgaHJlZj0iJytyLnUrJyIgZGF0YS1pPSInK2krJyI+PGI+JytyLnMrJzwvYj48c3Bhbj4nK3IuZCsnPC9zcGFuPjwvYT4nOwogICAgfSkuam9pbignJyk7CiAgICBib3guaGlkZGVuPWZhbHNlOwogIH07CiAgcS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZHJhdyk7CiAgcS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsZHJhdyk7CiAgcS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxmdW5jdGlvbihlKXsKICAgIHZhciBhPWJveC5xdWVyeVNlbGVjdG9yQWxsKCdhJyk7CiAgICBpZihlLmtleT09PSdBcnJvd0Rvd24nfHxlLmtleT09PSdBcnJvd1VwJyl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgaWYoIWEubGVuZ3RoKSByZXR1cm47CiAgICAgIGN1cj0oY3VyKyhlLmtleT09PSdBcnJvd0Rvd24nPzE6LTEpK2EubGVuZ3RoKSVhLmxlbmd0aDsKICAgICAgYS5mb3JFYWNoKGZ1bmN0aW9uKHgsaSl7eC5jbGFzc0xpc3QudG9nZ2xlKCdvbicsaT09PWN1cik7fSk7CiAgICAgIGFbY3VyXS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6J25lYXJlc3QnfSk7CiAgICB9IGVsc2UgaWYoZS5rZXk9PT0nRW50ZXInKXsKICAgICAgaWYoY3VyPj0wJiZhW2N1cl0peyBlLnByZXZlbnREZWZhdWx0KCk7IGxvY2F0aW9uLmhyZWY9YVtjdXJdLmdldEF0dHJpYnV0ZSgnaHJlZicpOyB9CiAgICAgIGVsc2UgaWYoYS5sZW5ndGgpeyBlLnByZXZlbnREZWZhdWx0KCk7IGxvY2F0aW9uLmhyZWY9YVswXS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsgfQogICAgfSBlbHNlIGlmKGUua2V5PT09J0VzY2FwZScpeyBib3guaGlkZGVuPXRydWU7IHEuYmx1cigpOyB9CiAgfSk7CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgaWYoIWUudGFyZ2V0LmNsb3Nlc3QoJy50cGgtZmluZGVyJykpIGJveC5oaWRkZW49dHJ1ZTsKICB9KTsKfQo7CnZhciBtYXAsIGxheWVyOwp2YXIgbmF2PXtkb25nOm51bGwsIGN4Om51bGx9OwpmdW5jdGlvbiBtYW4obil7IHJldHVybiBNYXRoLnJvdW5kKG4pLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfrp4wnOyB9CmZ1bmN0aW9uIGVvayhuKXsgbj1NYXRoLnJvdW5kKG4pOyB2YXIgZT1NYXRoLmZsb29yKG4vMTAwMDApLCBtPW4lMTAwMDA7CiAgcmV0dXJuICgoZT8gZSsn7Ja1ICc6JycpICsgKG0/IG0udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+unjCc6JycpKSB8fCAnMCc7IH0KZnVuY3Rpb24gY2hnSHRtbChjKXsgaWYoYz09bnVsbCkgcmV0dXJuICcnOwogIHJldHVybiAnPGVtIGNsYXNzPSInKyhjPjA/J3VwJzpjPDA/J2RuJzonJykrJyI+JysoYz4wPyfilrInOmM8MD8n4pa8Jzon4oCUJykrJyAnK01hdGguYWJzKGMpKyclPC9lbT4nOyB9CmZ1bmN0aW9uIGVzYyh0KXsgcmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKC8iL2csJyZxdW90OycpOyB9CmZ1bmN0aW9uIGNydW1iKCl7CiAgdmFyIGg9JzxidXR0b24gZGF0YS1sdj0idG9wIj4nK0Quc2hvcnQrJzwvYnV0dG9uPic7CiAgaWYobmF2LmRvbmcpIGgrPSc8c3Bhbj7igLo8L3NwYW4+JysobmF2LmN4PyAnPGJ1dHRvbiBkYXRhLWx2PSJkb25nIj4nK25hdi5kb25nKyc8L2J1dHRvbj4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzxiPicrbmF2LmRvbmcrJzwvYj4nKTsKICBpZihuYXYuY3gpIGgrPSc8c3Bhbj7igLo8L3NwYW4+PGI+JytuYXYuY3grJzwvYj4nOwogICQoJ2NydW1iJykuaW5uZXJIVE1MPWg7CiAgJCgnY3J1bWInKS5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpewogICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgaWYoYi5kYXRhc2V0Lmx2PT09J3RvcCcpeyBuYXY9e2Rvbmc6bnVsbCxjeDpudWxsfTsgfSBlbHNlIHsgbmF2LmN4PW51bGw7IH0KICAgICAgcmVuZGVyKCk7CiAgICB9KTsKICB9KTsKfQpmdW5jdGlvbiBwaW5zRm9yKCl7CiAgcmV0dXJuIEQucGlucy5maWx0ZXIoZnVuY3Rpb24ocCl7CiAgICBpZihuYXYuZG9uZyAmJiBwLmRnIT09bmF2LmRvbmcpIHJldHVybiBmYWxzZTsKICAgIGlmKG5hdi5jeCAmJiBwLm4hPT1uYXYuY3gpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwogIH0pOwp9CmZ1bmN0aW9uIGRyYXdNYXAoKXsKICB2YXIgbGlzdD1waW5zRm9yKCk7CiAgaWYobGF5ZXIpIGxheWVyLmNsZWFyTGF5ZXJzKCk7CiAgUEVORD1bXTsKICB2YXIgYm91bmRzPVtdOwogIHZhciBwcHM9bGlzdC5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAucHA7fSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWI7fSk7CiAgLyog7LWc7KCAwrfstZzqs6DroZwg7IOJIOuylOychOulvCDsnqHsnLzrqbQg7LSI6rOg6rCAIOuLqOyngCDrqocg6rOz7J20IOyKpOy8gOydvOydhCDri6Qg66i57Ja0IOyghOu2gCDtjIzrnpfqsowg64KY7Jio64ukLgogICAgIDEwfjkwIOu2hOychOuhnCDsnpDrpbTrqbQg7IOJ7J20IOyLpOygnOuhnCDqsIjrprDri6QuICovCiAgdmFyIGxvPXBwcy5sZW5ndGg/IHBwc1tNYXRoLmZsb29yKHBwcy5sZW5ndGgqMC4xKV0gOiAwLAogICAgICBoaT1wcHMubGVuZ3RoPyBwcHNbTWF0aC5mbG9vcihwcHMubGVuZ3RoKjAuOSldIDogMDsKICBpZihoaTw9bG8peyBsbz1wcHNbMF18fDA7IGhpPXBwc1twcHMubGVuZ3RoLTFdfHwwOyB9CiAgQ0xPPWxvOyBDSEk9aGk7CiAgdmFyIGNzPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICBsaXN0LnNsaWNlKDAsOTAwKS5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgdmFyIGNvbD1jb2xvckZvcihwLnBwLGxvLGhpKTsKICAgIHZhciBpYz1MLmRpdkljb24oe2NsYXNzTmFtZTondHBoLXBpbicsaWNvblNpemU6WzYyLDI2XSxpY29uQW5jaG9yOlszMSwyNl0sCiAgICAgIGh0bWw6JzxiIHN0eWxlPSJiYWNrZ3JvdW5kOicrY29sKyciPicrbWFuKHAucHApKyc8L2I+PGkgc3R5bGU9ImNvbG9yOicrY29sKyciPjwvaT4nfSk7CiAgICBQRU5ELnB1c2goTC5tYXJrZXIoW3AubGF0LHAubG9uXSx7aWNvbjppYyxwdjpwLnBwfSkKICAgICAgLmJpbmRQb3B1cCgnPGI+JytwLm4rJzwvYj48YnI+JytwLmRnKyc8YnI+7Y+J64u5ICcrbWFuKHAucHApKyc8YnI+6rGw656YICcrcC5jbnQrJ+qxtCcpKTsKICAgIGJvdW5kcy5wdXNoKFtwLmxhdCxwLmxvbl0pOwogIH0pOwogIGFkZEFsbChsYXllciwgUEVORCk7CiAgZml0VG8obWFwLCBib3VuZHMsIDE2KTsKfQpmdW5jdGlvbiBjeE9mKCl7IHJldHVybiBELmN4LmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5nPT09bmF2LmRvbmc7fSk7IH0KZnVuY3Rpb24gY3VyQ3goKXsgcmV0dXJuIGN4T2YoKS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMubj09PW5hdi5jeDt9KVswXTsgfQpmdW5jdGlvbiBjeERldGFpbCgpewogIHZhciBjPWN1ckN4KCk7CiAgaWYoIWMpIHJldHVybiAnPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJubSI+64uo7KeA66W8IOywvuyngCDrqrvtlojsirXri4jri6QuPC9kaXY+PC9kaXY+JzsKICB2YXIgaD0nPGRpdiBjbGFzcz0idHBoLXN0YXRzIj4nCiAgICArJzxkaXYgY2xhc3M9InRwaC1zdGF0Ij48ZGl2IGNsYXNzPSJrIj7spJHsnIQg7Y+J64u56rCAPC9kaXY+PGRpdiBjbGFzcz0ibiI+JyttYW4oYy5wKSsn7JuQPC9kaXY+JwogICAgKyc8ZGl2IGNsYXNzPSJzbSI+MTLqsJzsm5Qg6rGw656YICcrYy5jKyfqsbQ8L2Rpdj48L2Rpdj4nCiAgICArJzxkaXYgY2xhc3M9InRwaC1zdGF0Ij48ZGl2IGNsYXNzPSJrIj7stZzqt7wg6rGw656YPC9kaXY+PGRpdiBjbGFzcz0ibiI+Jytlb2soYy5sKSsnPC9kaXY+JwogICAgKyc8ZGl2IGNsYXNzPSJzbSI+JytjLmxkKyc8L2Rpdj48L2Rpdj4nCiAgICArKGMueT8gJzxkaXYgY2xhc3M9InRwaC1zdGF0Ij48ZGl2IGNsYXNzPSJrIj7qsbTstpXrhYTrj4Q8L2Rpdj48ZGl2IGNsYXNzPSJuIj4nK2MueSsn64WEPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9InNtIj4nKyhuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCktKCtjLnkpKSsn64WE7LCoPC9kaXY+PC9kaXY+JzonJykKICAgICsnPC9kaXY+JzsKICBpZihjLmgpewogICAgaCs9JzxoMyBjbGFzcz0idHBoLXN1YiI+MTLqsJzsm5Qg7Y+J64u56rCAIOy2lOydtDwvaDM+JwogICAgICArJzxwIGNsYXNzPSJ0cGgtaGludCI+6rGw656Y6rCAIOyXhuuNmCDri6zsnYAg6rG064SI65uw6rOgIOydtOyWtCDqt7jrpr3ri4jri6QuIOuLqOyngCDtlZjrgpjsnZgg7JuU67OEIO2RnOuzuOydgCDsm5Drnpgg7JaH7Jy864uIIOuwqe2WpeunjCDrs7TshLjsmpQuPC9wPicKICAgICAgKyc8ZGl2IGNsYXNzPSJ0cGgtY2hhcnQiIGlkPSJ0cGgtY3hjaGFydCI+PC9kaXY+JzsKICB9CiAgaWYoYy5hKXsKICAgIGgrPSc8aDMgY2xhc3M9InRwaC1zdWIiPu2Pie2YleuzhCDsi5zshLg8L2gzPicKICAgICAgKyc8cCBjbGFzcz0idHBoLWhpbnQiPuyghOyEuOqwgOycqOydgCDstZzqt7wgNuqwnOyblCA8Yj7si6Dqt5w8L2I+IOyghOyEuCDrs7Tspp3quIggw7cg66ek66ek6rCA7J6F64uI64ukLiAnCiAgICAgICsnODAlIOydtOyDgeydtOuptCDqsr3rp6Qg7IucIOuztOymneq4iOydhCDri6Qg66q7IOuwm+ydhCDsiJgg7J6I7Iq164uI64ukLiDqsLHsi6Dqs4Tslb3snYAg67qQ7Iq164uI64ukLjwvcD4nCiAgICAgICsnPGRpdiBzdHlsZT0ib3ZlcmZsb3cteDphdXRvIj48dGFibGU+PHRoZWFkPjx0cj4nCiAgICAgICsnPHRoPuyghOyaqeuptOyggTwvdGg+PHRoPuqxsOuemDwvdGg+PHRoPuykkeychOqwgDwvdGg+PHRoPuy1nOyggDwvdGg+PHRoPuy1nOqzoDwvdGg+PHRoPuy1nOq3vDwvdGg+JwogICAgICArJzx0aD7soITshLjqsIDsnKg8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JzsKICAgIGMuYS5mb3JFYWNoKGZ1bmN0aW9uKGEpewogICAgICB2YXIganIgPSBhWzddPT1udWxsPyAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLWZhaW50KSI+4oCUPC9zcGFuPicKICAgICAgICA6ICc8YiBzdHlsZT0iY29sb3I6JysoYVs3XT49ODA/J3ZhcigtLXdhcm4pJzonaW5oZXJpdCcpKyciPicrYVs3XSsnJTwvYj4nCiAgICAgICAgICArJzxicj48c21hbGwgc3R5bGU9ImNvbG9yOnZhcigtLWZhaW50KSI+7KCE7IS4ICcrZW9rKGFbOF0pKyc8L3NtYWxsPic7CiAgICAgIGgrPSc8dHI+PHRkPjxiPicrYVswXSsn446hPC9iPiA8c21hbGw+JysoYVswXS8zLjMwNTc4NSkudG9GaXhlZCgxKSsn7Y+JPC9zbWFsbD48L3RkPicKICAgICAgICArJzx0ZD4nK2FbMV0rJ+qxtDwvdGQ+PHRkPjxiPicrZW9rKGFbMl0pKyc8L2I+PC90ZD4nCiAgICAgICAgKyc8dGQ+Jytlb2soYVszXSkrJzwvdGQ+PHRkPicrZW9rKGFbNF0pKyc8L3RkPicKICAgICAgICArJzx0ZD4nK2VvayhhWzVdKSsnIDxzbWFsbD4nK2FbNl0rJzwvc21hbGw+PC90ZD4nCiAgICAgICAgKyc8dGQ+JytqcisnPC90ZD48L3RyPic7CiAgICB9KTsKICAgIGgrPSc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsKICB9CiAgaWYoYy5kKXsKICAgIGgrPSc8aDMgY2xhc3M9InRwaC1zdWIiPuy1nOq3vCDqsbDrnpg8L2gzPic7CiAgICBjLmQuZm9yRWFjaChmdW5jdGlvbih6KXsKICAgICAgaCs9JzxkaXYgY2xhc3M9InRwaC1kZWFsIj48c3BhbiBjbGFzcz0iZCI+Jyt6WzBdKyc8L3NwYW4+JwogICAgICAgICsnPHNwYW4gY2xhc3M9Im4iPicrYy5uKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImEiPicrelsxXSsn446hPC9zcGFuPicKICAgICAgICArJzxzcGFuIGNsYXNzPSJmIj4nKyh6WzJdP3pbMl0rJ+y4tSc6JycpKyc8L3NwYW4+PHNwYW4gY2xhc3M9InAiPicrZW9rKHpbM10pKyc8L3NwYW4+PC9kaXY+JzsKICAgIH0pOwogIH0KICByZXR1cm4gaDsKfQpmdW5jdGlvbiBkcmF3Q3hDaGFydCgpewogIHZhciBjPWN1ckN4KCk7CiAgaWYoIWN8fCFjLmh8fCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHBoLWN4Y2hhcnQnKSkgcmV0dXJuOwogIGxpbmVDaGFydCgnY3hjaGFydCcsIEQuaGlzdC5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIG0uc2xpY2UoMik7fSksCiAgICBbe25hbWU6J+2PieuLueqwgCcsY2xzOidzMScsZGF0YTpjLmgubWFwKGZ1bmN0aW9uKHYpe3JldHVybiB2fHxudWxsO30pfV0sIG1hbik7Cn0KZnVuY3Rpb24gcmVuZGVyKCl7CiAgY3J1bWIoKTsgZHJhd01hcCgpOwogIHZhciBoPScnLCBuPTA7CiAgaWYoIW5hdi5kb25nKXsKICAgIEQuZG9uZ3MuZm9yRWFjaChmdW5jdGlvbihkLGkpewogICAgICBuKys7CiAgICAgIGgrPSc8ZGl2IGNsYXNzPSJ0cGgtcm93IiBkYXRhLWtleT0iJytlc2MoZC5kZykrJyI+PGRpdiBjbGFzcz0icmsiPicrKGkrMSkrJzwvZGl2PicKICAgICAgICArJzxkaXYgY2xhc3M9Im5tIj48Yj4nK2QuZGcrJzwvYj48c3Bhbj4xMuqwnOyblCAnK2QuY250KyfqsbQ8L3NwYW4+PC9kaXY+JwogICAgICAgICsnPGRpdiBjbGFzcz0icHIiPicrbWFuKGQucHApK2NoZ0h0bWwoZC5jaGcpKyc8L2Rpdj48ZGl2IGNsYXNzPSJnbyI+4oC6PC9kaXY+PC9kaXY+JzsKICAgIH0pOwogIH0gZWxzZSBpZighbmF2LmN4KXsKICAgIHZhciBjcz1jeE9mKCk7IG49Y3MubGVuZ3RoOwogICAgY3MuZm9yRWFjaChmdW5jdGlvbihjLGkpewogICAgICAvKiDri6jsp4Ag7Y6Y7J207KeA6rCAIOyeiOycvOuptCAqKuunge2BrCoq66GcIOuCuOuLpC4g7YGs66Gk65+s6rCAIOuUsOudvOqwiCDquLjsnbQg7J6I7Ja07JW8IOyDieyduOydtCDrtpnripTri6QuCiAgICAgICAgIOyXhuycvOuptCDsmIjsoITsspjrn7wg7YG066at7ZW07IScIOydtCDtjpjsnbTsp4Ag7JWI7JeQ7IScIO2OvOy5nOuLpC4gKi8KICAgICAgdmFyIGhlYWQ9JzxkaXYgY2xhc3M9InJrIj4nKyhpKzEpKyc8L2Rpdj4nCiAgICAgICAgKyc8ZGl2IGNsYXNzPSJubSI+PGI+JytjLm4rJzwvYj48c3Bhbj7qsbDrnpggJytjLmMrJ+qxtCcKICAgICAgICArKGMueT8nIMK3ICcrYy55KyfrhYQnOicnKSsnIMK3IOy1nOq3vCAnK2MubGQrJyAnK2VvayhjLmwpKyc8L3NwYW4+PC9kaXY+JwogICAgICAgICsnPGRpdiBjbGFzcz0icHIiPicrbWFuKGMucCkrJzwvZGl2PjxkaXYgY2xhc3M9ImdvIj7igLo8L2Rpdj4nOwogICAgICBoKz0gYy51ID8gJzxhIGNsYXNzPSJ0cGgtcm93IiBocmVmPSInK2MudSsnIj4nK2hlYWQrJzwvYT4nCiAgICAgICAgICAgICAgOiAnPGRpdiBjbGFzcz0idHBoLXJvdyIgZGF0YS1rZXk9IicrZXNjKGMubikrJyI+JytoZWFkKyc8L2Rpdj4nOwogICAgfSk7CiAgfSBlbHNlIHsgaD1jeERldGFpbCgpOyBuPTE7IH0KICAkKCdyYW5rbGlzdCcpLmlubmVySFRNTCA9IGggfHwgJzxkaXYgY2xhc3M9InRwaC1yb3cgbGVhZiI+PGRpdiBjbGFzcz0ibm0iPuuNsOydtO2EsOqwgCDsl4bsirXri4jri6QuPC9kaXY+PC9kaXY+JzsKICAkKCdyYW5rbGlzdCcpLnF1ZXJ5U2VsZWN0b3JBbGwoJy50cGgtcm93W2RhdGEta2V5XScpLmZvckVhY2goZnVuY3Rpb24ocm93KXsKICAgIHJvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgaWYoIW5hdi5kb25nKXsgbmF2LmRvbmc9cm93LmRhdGFzZXQua2V5OyB9IGVsc2UgeyBuYXYuY3g9cm93LmRhdGFzZXQua2V5OyB9CiAgICAgIHJlbmRlcigpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHBoLW1hcCcpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7CiAgICB9KTsKICB9KTsKICBpZihuYXYuY3gpIGRyYXdDeENoYXJ0KCk7CiAgdmFyIGxhYmVsID0gbmF2LmN4PyBuYXYuY3ggOiAobmF2LmRvbmc/IG5hdi5kb25nIDogRC5zaG9ydCk7CiAgc2V0KCdzdGF0dXMnLCBsYWJlbCsnIMK3ICcrKG5hdi5jeD8gJ+uLqOyngCDsg4HshLgnCiAgICAgIDogbmF2LmRvbmc/ICfri6jsp4AgJytuLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfqs7MnIDogJ+uyleygleuPmSAnK24rJ+qzsycpCiAgICAgICsnIMK3IOq4sOykgOyblCAnK0QuY3VyKTsKfQpmdW5jdGlvbiBpbml0KCl7CiAgbWFwPUwubWFwKCd0cGgtbWFwJyx7c2Nyb2xsV2hlZWxab29tOmZhbHNlfSkuc2V0VmlldyhbMzYuNSwxMjcuOV0sNyk7CiAgTC50aWxlTGF5ZXIoJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgIHttYXhab29tOjE5LGF0dHJpYnV0aW9uOicmY29weTsgT3BlblN0cmVldE1hcCd9KS5hZGRUbyhtYXApOwogIG1hcC5vbignY2xpY2snLGZ1bmN0aW9uKCl7bWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTt9KTsKICBsYXllcj1jbHVzdGVyR3JvdXAobWFuLGZ1bmN0aW9uKHYpe3JldHVybiBjb2xvckZvcih2LENMTyxDSEkpO30pLmFkZFRvKG1hcCk7CiAgcmVuZGVyKCk7CiAgc2V0VGltZW91dChmdW5jdGlvbigpeyBtYXAuaW52YWxpZGF0ZVNpemUoZmFsc2UpOyBkcmF3TWFwKCk7IH0sMjUwKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJyxmdW5jdGlvbigpeyBtYXAuaW52YWxpZGF0ZVNpemUoZmFsc2UpOyB9KTsKfQp2YXIgcm9vdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudHBoLXBhZ2UnKTsKaW5pdFRoZW1lKHJvb3QpOwppbml0RmluZGVyKCk7CmlmKHdpbmRvdy5MKSBpbml0KCk7IGVsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGluaXQpOwo=