Lorem ipsum
Händlersuche
Sie möchten Menzerna Polituren oder Zubehör erwerben? Unser internationales Händlernetzwerk bietet
zügigen und kompetenten Service weltweit. Mit der Händlersuche finden Sie qualifizierte Menzerna Händler für
Autopolituren, Bootspolituren und feste Polierpasten in Ihrer Nähe.
Finden Sie auch qualifizierte Autopflege Onlineshops mit umfangreichem Menzerna-Sortiment.
Die Menzerna-Handelspartner liefern schnell und zuverlässig auch in Ihre Region.
CiAgICAgICAgICAgICAgICAgICAgICAKICAgIDxkaXYgaWQ9Im1vYmlsZS1jaGVjayI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtb2JpbGUtcmVzZXQtc2VhcmNoIj4KICAgICAgICA8YnV0dG9uIGlkPSJyZXNldC1zZWFyY2giIGNsYXNzPSJidG4iPkjDpG5kbGVyc3VjaGUgZXJuZXV0IG51dHplbjwvYnV0dG9uPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmaWx0ZXJmb3JtLWNvbnRhaW5lciBkZWFsZXItc2VhcmNoLWZvcm0td3JhcCI+CiAgICAgICAgPGZvcm0gZGF0YS1hamF4dXJsPSIvZGVhbGVyc2VhcmNoP25vX2NhY2hlPTEmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJhY3Rpb24lNUQ9YWpheENhbGwmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJjb250cm9sbGVyJTVEPURlYWxlciZhbXA7dHlwZT0xMTIyJmFtcDtjSGFzaD03NDE1YTc4ZjIyMmM5NjFiY2UzMTVjOTA3NjFmMTFkNCIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iZGVhbGVyLXNlYXJjaC1mb3JtIiBpZD0ic2VsZWN0Rm9ybSIgYWN0aW9uPSIvZGVhbGVyc2VhcmNoP3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJhY3Rpb24lNUQ9YWpheENhbGwmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJjb250cm9sbGVyJTVEPURlYWxlciZhbXA7dHlwZT0xMTIyJmFtcDtjSGFzaD03NDE1YTc4ZjIyMmM5NjFiY2UzMTVjOTA3NjFmMTFkNCI+CjxkaXY+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbX19yZWZlcnJlcl1bQGV4dGVuc2lvbl0iIHZhbHVlPSJQeHBkZWFsZXJzIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0eF9weHBkZWFsZXJzX2FqYXhjYWxsW19fcmVmZXJyZXJdW0Bjb250cm9sbGVyXSIgdmFsdWU9IkRlYWxlciIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVtAYWN0aW9uXSIgdmFsdWU9Imxpc3QiIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbX19yZWZlcnJlcl1bYXJndW1lbnRzXSIgdmFsdWU9IllUb3dPbnQ5YzMyYWZkMDg5YmJiNzFhMDIwYWQyNmNlNmY1NTBjZjA2MGM0OWUzNSIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVtAcmVxdWVzdF0iIHZhbHVlPSJ7JnF1b3Q7QGV4dGVuc2lvbiZxdW90OzomcXVvdDtQeHBkZWFsZXJzJnF1b3Q7LCZxdW90O0Bjb250cm9sbGVyJnF1b3Q7OiZxdW90O0RlYWxlciZxdW90OywmcXVvdDtAYWN0aW9uJnF1b3Q7OiZxdW90O2xpc3QmcXVvdDt9MmU0MDkyNmYxNTEwNTg3NTg2YzZkYzBjYmM3OTVjMTNjNDc3YzRhOSIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3RydXN0ZWRQcm9wZXJ0aWVzXSIgdmFsdWU9InsmcXVvdDtjYXRlZ29yaWVzJnF1b3Q7OlsxLDEsMV19NWU4OGJjZjVkMDY0NmExNWFjMGM0OTRhNmE2YjRiNzliMDZmNjU0YiIgLz4KPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2NhdGlvbi1zZWFyY2gtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY291bnRyeS1zZWxlY3QiIGNsYXNzPSJzZWxlY3QtbGFiZWwgZm9ybS1iaWctbGFiZWwiPkJpdHRlIGdlYmVuIFNpZSBJaHJlbiBTdGFuZG9ydCBhbjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBsb2NhdGlvbi1zZWFyY2gtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtjb3VudHJ5XSIgaWQ9ImNvdW50cnktc2VsZWN0IiBjbGFzcz0iZm9ybS1jb250cm9sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPkJpdHRlIHfDpGhsZW4gLi4uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjU0IiBkYXRhLW5hbWU9IkRldXRzY2hsYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkRFIj5EZXV0c2NobGFuZDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2MiIgZGF0YS1uYW1lPSLDhGd5cHRlbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkVHIj7DhGd5cHRlbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2IiBkYXRhLW5hbWU9IkFsYmFuaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQUwiPkFsYmFuaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjExIiBkYXRhLW5hbWU9IkFyZ2VudGluaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJBUiI+QXJnZW50aW5pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTMiIGRhdGEtbmFtZT0iw5ZzdGVycmVpY2giIGRhdGEtY2F0ZWdvcmllcz0iMyIgZGF0YS1pc28yPSJBVCI+w5ZzdGVycmVpY2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTQiIGRhdGEtbmFtZT0iQXVzdHJhbGllbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iQVUiPkF1c3RyYWxpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjAiIGRhdGEtbmFtZT0iQmVsZ2llbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJCRSI+QmVsZ2llbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyOSIgZGF0YS1uYW1lPSJCcmFzaWxpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IkJSIj5CcmFzaWxpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjIiIGRhdGEtbmFtZT0iQnVsZ2FyaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkJHIj5CdWxnYXJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNDQiIGRhdGEtbmFtZT0iQ2hpbGUiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJDTCI+Q2hpbGU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNDYiIGRhdGEtbmFtZT0iQ2hpbmEiIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IkNOIj5DaGluYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0OCIgZGF0YS1uYW1lPSJDb3N0YSBSaWNhIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQ1IiPkNvc3RhIFJpY2E8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTYiIGRhdGEtbmFtZT0iRMOkbmVtYXJrIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iREsiPkTDpG5lbWFyazwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2MSIgZGF0YS1uYW1lPSJFc3RsYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMyIgZGF0YS1pc28yPSJFRSI+RXN0bGFuZDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2NyIgZGF0YS1uYW1lPSJGaW5ubGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iRkkiPkZpbm5sYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjcyIiBkYXRhLW5hbWU9IkZyYW5rcmVpY2giIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iRlIiPkZyYW5rcmVpY2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iODUiIGRhdGEtbmFtZT0iR3JpZWNoZW5sYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJHUiI+R3JpZWNoZW5sYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ijc0IiBkYXRhLW5hbWU9Ikdyb8OfYnJpdGFubmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJHQiI+R3Jvw59icml0YW5uaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ijk2IiBkYXRhLW5hbWU9IkluZG9uZXNpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IklEIj5JbmRvbmVzaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwMSIgZGF0YS1uYW1lPSJJcmFrIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iSVEiPklyYWs8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTciIGRhdGEtbmFtZT0iSXJsYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJJRSI+SXJsYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwNCIgZGF0YS1uYW1lPSJJdGFsaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IklUIj5JdGFsaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwNyIgZGF0YS1uYW1lPSJKYXBhbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJKUCI+SmFwYW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMzYiIGRhdGEtbmFtZT0iS2FuYWRhIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkNBIj5LYW5hZGE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTE4IiBkYXRhLW5hbWU9Ikthc2FjaHN0YW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IktaIj5LYXNhY2hzdGFuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwOSIgZGF0YS1uYW1lPSJLaXJnaXNpc3RhbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iS0ciPktpcmdpc2lzdGFuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQ3IiBkYXRhLW5hbWU9IktvbHVtYmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkNPIj5Lb2x1bWJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTMiIGRhdGEtbmFtZT0iS3JvYXRpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iSFIiPktyb2F0aWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjExNiIgZGF0YS1uYW1lPSJLdXdhaXQiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJLVyI+S3V3YWl0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyOCIgZGF0YS1uYW1lPSJMZXR0bGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iTFYiPkxldHRsYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyMCIgZGF0YS1uYW1lPSJMaWJhbm9uIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkxCIj5MaWJhbm9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyNiIgZGF0YS1uYW1lPSJMaXRhdWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMyIgZGF0YS1pc28yPSJMVCI+TGl0YXVlbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNDkiIGRhdGEtbmFtZT0iTWFsYXlzaWEiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJNWSI+TWFsYXlzaWE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTQ0IiBkYXRhLW5hbWU9Ik1hbHRhIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iTVQiPk1hbHRhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEzMCIgZGF0YS1uYW1lPSJNYXJva2tvIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iTUEiPk1hcm9ra288L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTQ4IiBkYXRhLW5hbWU9Ik1leGlrbyIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iTVgiPk1leGlrbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNjIiIGRhdGEtbmFtZT0iTmV1c2VlbGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iTloiPk5ldXNlZWxhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTU3IiBkYXRhLW5hbWU9Ik5pZWRlcmxhbmRlIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9Ik5MIj5OaWVkZXJsYW5kZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMzUiIGRhdGEtbmFtZT0iTm9yZG1hemVkb25pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJNSyI+Tm9yZG1hemVkb25pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTU4IiBkYXRhLW5hbWU9Ik5vcndlZ2VuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJOTyI+Tm9yd2VnZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTY0IiBkYXRhLW5hbWU9IlBhbmFtYSIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlBBIj5QYW5hbWE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTc2IiBkYXRhLW5hbWU9IlBhcmFndWF5IiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iUFkiPlBhcmFndWF5PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE2OCIgZGF0YS1uYW1lPSJQaGlsaXBwaW5lbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iUEgiPlBoaWxpcHBpbmVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3MCIgZGF0YS1uYW1lPSJQb2xlbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJQTCI+UG9sZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTc0IiBkYXRhLW5hbWU9IlBvcnR1Z2FsIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iUFQiPlBvcnR1Z2FsPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3MyIgZGF0YS1uYW1lPSJQdWVydG8gUmljbyIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJQUiI+UHVlcnRvIFJpY288L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTE1IiBkYXRhLW5hbWU9IlJlcHVibGlrIEtvcmVhIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iS1IiPlJlcHVibGlrIEtvcmVhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3OSIgZGF0YS1uYW1lPSJSdW3DpG5pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJSTyI+UnVtw6RuaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4MCIgZGF0YS1uYW1lPSJSdXNzaXNjaGUgRsO2ZGVyYXRpb24iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJSVSI+UnVzc2lzY2hlIEbDtmRlcmF0aW9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIzNSIgZGF0YS1uYW1lPSJTw7xkYWZyaWthIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJaQSI+U8O8ZGFmcmlrYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxODIiIGRhdGEtbmFtZT0iU2F1ZGktQXJhYmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iU0EiPlNhdWRpLUFyYWJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTg2IiBkYXRhLW5hbWU9IlNjaHdlZGVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJTRSI+U2Nod2VkZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNDEiIGRhdGEtbmFtZT0iU2Nod2VpeiIgZGF0YS1jYXRlZ29yaWVzPSIxLDMiIGRhdGEtaXNvMj0iQ0giPlNjaHdlaXo8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjQzIiBkYXRhLW5hbWU9IlNlcmJpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJSUyI+U2VyYmllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxODciIGRhdGEtbmFtZT0iU2luZ2FwdXIiIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IlNHIj5TaW5nYXB1cjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxOTEiIGRhdGEtbmFtZT0iU2xvd2FrZWkiIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IlNLIj5TbG93YWtlaTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxODkiIGRhdGEtbmFtZT0iU2xvd2VuaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iU0kiPlNsb3dlbmllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2NSIgZGF0YS1uYW1lPSJTcGFuaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkVTIj5TcGFuaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE5OSIgZGF0YS1uYW1lPSJTeXJpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJTWSI+U3lyaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIxMiIgZGF0YS1uYW1lPSJUw7xya2VpIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJUUiI+VMO8cmtlaTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMDUiIGRhdGEtbmFtZT0iVGhhaWxhbmQiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJUSCI+VGhhaWxhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTMiIGRhdGEtbmFtZT0iVHNjaGVjaGlzY2hlIFJlcHVibGlrIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQ1oiPlRzY2hlY2hpc2NoZSBSZXB1Ymxpazwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMTciIGRhdGEtbmFtZT0iVWtyYWluZSIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iVUEiPlVrcmFpbmU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTUiIGRhdGEtbmFtZT0iVW5nYXJuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJIVSI+VW5nYXJuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIyMSIgZGF0YS1uYW1lPSJVcnVndWF5IiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iVVkiPlVydWd1YXk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjIyIiBkYXRhLW5hbWU9IlVzYmVraXN0YW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwzIiBkYXRhLWlzbzI9IlVaIj5Vc2Jla2lzdGFuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIyNSIgZGF0YS1uYW1lPSJWZW5lenVlbGEiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJWRSI+VmVuZXp1ZWxhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiIGRhdGEtbmFtZT0iVmVyZWluaWd0ZSBBcmFiaXNjaGUgRW1pcmF0ZSIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iQUUiPlZlcmVpbmlndGUgQXJhYmlzY2hlIEVtaXJhdGU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjIwIiBkYXRhLW5hbWU9IlZlcmVpbmlndGUgU3RhYXRlbiB2b24gQW1lcmlrYSIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iVVMiPlZlcmVpbmlndGUgU3RhYXRlbiB2b24gQW1lcmlrYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMjgiIGRhdGEtbmFtZT0iVmlldG5hbSIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlZOIj5WaWV0bmFtPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjM0IiBkYXRhLW5hbWU9IldlacOfcnVzc2xhbmQiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJCWSI+V2Vpw59ydXNzbGFuZDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9jYXRpb24td3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGVja2JveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjYi1sb2NhdGlvbiIgY2xhc3M9ImNiLWxhYmVsIGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFrdHVlbGxlbiBTdGFuZG9ydCB2ZXJ3ZW5kZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiB2YWx1ZT0iIiAvPjxpbnB1dCBkYXRhLWFqYXh1cmw9Ii9kZWFsZXJzZWFyY2g/bm9fY2FjaGU9MSZhbXA7dHhfcHhwZGVhbGVyc19hamF4Y2FsbCU1QmFjdGlvbiU1RD1nZXRDb3VudHJ5Q29kZUFqYXgmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJjb250cm9sbGVyJTVEPURlYWxlciZhbXA7dHlwZT0xMTIyJmFtcDtjSGFzaD05MWNhM2E3YWIxNzI0MmIwYjk4ZWU4NmRhM2M4YzQ2NSIgaWQ9ImNiLWxvY2F0aW9uIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hlY2ttYXJrIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZ2VvbG9jYXRpb24tbG9hZCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPlN0YW5kb3J0IHdpcmQgZXJtaXR0ZWx0IC4uLjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZ2VvbG9jYXRpb24tZXJyb3IiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij5CaXR0ZSBlcmxhdWJlbiBTaWUgZGVuIFp1Z3JpZmYgYXVmIElocmVuIFN0YW5kb3J0PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXRlZ29yeS1zZWFyY2gtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWJpZy1sYWJlbCI+V8OkaGxlbiBTaWUgSWhyIFByb2R1a3QgYXVzPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2F0ZWdvcmllcy1jYi1jb250YWluZXIiIGRhdGEtYWxsLWNhdGVnb3J5LXVpZHM9IjEsMiwzIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2F0LWNiIGNoZWNrYm94LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjYi1BdXRvcG9saXR1cmVuIiBjbGFzcz0iY2ItbGFiZWwgY3VzdG9tLWNoZWNrYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9wb2xpdHVyZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbY2F0ZWdvcmllc10iIHZhbHVlPSIiIC8+PGlucHV0IGNsYXNzPSJjYXRlZ29yeS1jYiBlbmFibGVkIiBpZD0iY2ItQXV0b3BvbGl0dXJlbiIgdHlwZT0iY2hlY2tib3giIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbY2F0ZWdvcmllc11bXSIgdmFsdWU9IjEiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hlY2ttYXJrIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2F0LWNiIGNoZWNrYm94LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjYi1Cb290c3BvbGl0dXJlbiIgY2xhc3M9ImNiLWxhYmVsIGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb290c3BvbGl0dXJlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJjYXRlZ29yeS1jYiBlbmFibGVkIiBpZD0iY2ItQm9vdHNwb2xpdHVyZW4iIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ0eF9weHBkZWFsZXJzX2FqYXhjYWxsW2NhdGVnb3JpZXNdW10iIHZhbHVlPSIyIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZWNrbWFyayI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhdC1jYiBjaGVja2JveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY2ItRmVzdHBhc3RlbiIgY2xhc3M9ImNiLWxhYmVsIGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZXN0cGFzdGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImNhdGVnb3J5LWNiIGVuYWJsZWQiIGlkPSJjYi1GZXN0cGFzdGVuIiB0eXBlPSJjaGVja2JveCIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtjYXRlZ29yaWVzXVtdIiB2YWx1ZT0iMyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja21hcmsiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90aWZpZXItY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90aWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4mIzQySGlud2VpczogTWVuemVybmEgUG9saXR1cmVuIHNpbmQgZsO8ciBnZXdlcmJsaWNoZSBBbndlbmRlciBrb256cGllcnQuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pk1pdCBLbGljayBhdWYgJnF1b3Q7SmV0enQgSMOkbmRsZXIgc3VjaGVuJnF1b3Q7IGJlc3TDpHRpZ2UgaWNoLCBkYXNzIGljaCB6dSBkaWVzZXIgVmVyYnJhdWNoZXJncnVwcGUgZ2Vow7ZyZS48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Ym1pdC1idXR0b24tY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic3VibWl0LWJ0biBidG4iIHR5cGU9InN1Ym1pdCIgbmFtZT0iIiB2YWx1ZT0iIj5KZXR6dCBIw6RuZGxlciBzdWNoZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZWFsZXItc2VhcmNoLW1hcC13cmFwIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlYWxlci1zZWFyY2gtbWFwIiBpZD0iZ21hcCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJyZXN1bHQtY29udGFpbmVyIGRlYWxlci1zZWFyY2gtcmVzdWx0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFwLWhlYWRsaW5lIiAgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij5RdWFsaWZpemllcnRlIEjDpG5kbGVyIHVuZCBhdXRvcmlzaWVydGUgT25saW5lLVNob3BzIGluJm5ic3A7PHNwYW4gaWQ9Im1hcC1oZWFkbGluZS1jb3VudHJ5Ij48L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24td3JhcCBkZWFsZXItc2VhcmNoLWFjY29yZGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWdyb3VwIiBpZD0iYWNjb3JkaW9uIiByb2xlPSJ0YWJsaXN0IiBhcmlhLW11bHRpc2VsZWN0YWJsZT0idHJ1ZSI+CgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iY29udGFjdC1oZWFkbGluZSIgZGF0YS1zdHJpbmc9IktvbnRha3QiPjwvZGl2PgogICAgPGRpdiBpZD0iY2F0ZWdvcmllcy1oZWFkbGluZSIgZGF0YS1zdHJpbmc9IkRhcyBIw6RuZGxlci1Tb3J0aW1lbnQgdW1mYXNzdCBmb2xnZW5kZSBQcm9kdWt0a2F0ZWdvcmllbjoiPjwvZGl2PgogICAgPGRpdiBpZD0idGV4dC1saW5rLW9ubGluZXNob3AiIGRhdGEtc3RyaW5nPSJadW0gT25saW5lLVNob3AgZGVzIEjDpG5kbGVycyI+PC9kaXY+CiAgICA8ZGl2IGlkPSJ0ZXh0LWxpbmstd2Vic2l0ZSIgZGF0YS1zdHJpbmc9Ilp1ciBXZWJzaXRlIGRlcyBIw6RuZGxlcnMiPjwvZGl2PgogICAgPGRpdiBpZD0idGV4dC1jbG9zZS1hY2NvcmRpb24iIGRhdGEtc3RyaW5nPSJIw6RuZGxlci1JbmZvcm1hdGlvbiBzY2hsaWXDn2VuIj48L2Rpdj4KICAgIDxkaXYgaWQ9ImRlZXBsaW5rIiBkYXRhLXN0cmluZz0iIj48L2Rpdj4KICAgIAogICAgCiAgICAgICAgICAgIDxzY3JpcHQgYXN5bmMgZGVmZXIgc3JjPSJodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvanM/a2V5PUFJemFTeUN1OWhaT2hQbWJ4TVFIWnkzdnA2aEJaNktHeFdFa3dRNCZsaWJyYXJpZXM9cGxhY2VzJmNhbGxiYWNrPWluaXRNYXAiPjwvc2NyaXB0PgogICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgdmFyIG1hcDsKICAgICAgICAgICAgICAgIHZhciBnZW9jb2RlcjsKICAgICAgICAgICAgICAgIHZhciBtYXJrZXJzID0gW107CiAgICAgICAgICAgICAgICB2YXIgbWFwU3R5bGUgPSAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNmNWY1ZjUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy5pY29uIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpc2liaWxpdHkiOiAib2ZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM2MTYxNjEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LnN0cm9rZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZjVmNWY1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJhZG1pbmlzdHJhdGl2ZS5sYW5kX3BhcmNlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNiZGJkYmQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInBvaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZWVlZWVlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJwb2kiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjNzU3NTc1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJwb2kucGFyayIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZTVlNWU1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJwb2kucGFyayIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM5ZTllOWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInJvYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiI2ZmZmZmZiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAicm9hZC5hcnRlcmlhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM3NTc1NzUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInJvYWQuaGlnaHdheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZGFkYWRhIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJyb2FkLmhpZ2h3YXkiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjNjE2MTYxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJyb2FkLmxvY2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzllOWU5ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAidHJhbnNpdC5saW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNlNWU1ZTUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInRyYW5zaXQuc3RhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZWVlZWVlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJ3YXRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjYzljOWM5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJ3YXRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM5ZTllOWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRNYXAoKSB7CiAgICAgICAgICAgICAgICAgICAgbWFwID0gbmV3IGdvb2dsZS5tYXBzLk1hcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ21hcCcpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjoge2xhdDogNDguNzc5NTk0MiwgbG5nOiA4LjIwNTg2NzR9LAogICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA2LAogICAgICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAxOCwKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBtYXBTdHlsZQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgdmFyIGV1TWVtYmVycyA9IFsxMywyMCwyMiw1Miw1Myw1NCw1Niw2MSw2NSw2Nyw3Miw4NSw5Myw5NSw5NywxMDQsMTI2LDEyNywxMjgsMTQ0LDE1NywxNzAsMTc0LDE3OSwxODYsMTg5LDE5MV07CiAgICAgICAgICAgICAgICAgICAgdmFyIGFsbENhdGVnb3J5VWlkcyA9ICQoJy5jYXRlZ29yaWVzLWNiLWNvbnRhaW5lcicpLmRhdGEoJ2FsbC1jYXRlZ29yeS11aWRzJykuc3BsaXQoJywnKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlcmZvcm0gPSAkKCcjc2VsZWN0Rm9ybScpOwogICAgICAgICAgICAgICAgICAgIHZhciBjb3VudHJ5U2VsZWN0ID0gJCgnI2NvdW50cnktc2VsZWN0Jyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uQ2hlY2tib3ggPSAkKCcjY2ItbG9jYXRpb24nKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uU2VhcmNoQ29udGFpbmVyID0gJCgnLmxvY2F0aW9uLXNlYXJjaC1jb250YWluZXInKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2F0ZWdvcnlTZWFyY2hDb250YWluZXIgPSAkKCcuY2F0ZWdvcnktc2VhcmNoLWNvbnRhaW5lcicpOwogICAgICAgICAgICAgICAgICAgIHZhciBub3RpZmllckNvbnRhaW5lciA9ICQoJy5ub3RpZmllci1jb250YWluZXInKTsKICAgICAgICAgICAgICAgICAgICB2YXIgc3VibWl0QnV0dG9uQ29udGFpbmVyID0gJCgnLnN1Ym1pdC1idXR0b24tY29udGFpbmVyJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdENvbnRhaW5lciA9ICQoJy5yZXN1bHQtY29udGFpbmVyJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1hcENvbnRhaW5lciA9ICQoJy5kZWFsZXItc2VhcmNoLW1hcC13cmFwJyk7CgogICAgICAgICAgICAgICAgICAgIHZhciBjb3VudHJ5Q2F0ZWdvcmllcyA9ICcnOwogICAgICAgICAgICAgICAgICAgIHZhciBjb3VudHJ5TmFtZSA9ICcnOwogICAgICAgICAgICAgICAgICAgIHZhciBkaXNhYmxlZENhdGVnb3JpZXMgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgdmFyIG1vYmlsZUNoZWNrID0gJCgnI21vYmlsZS1jaGVjaycpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgYWpheFVybCA9IGZpbHRlcmZvcm0uZGF0YSgnYWpheHVybCcpOwogICAgICAgICAgICAgICAgICAgIHZhciBnZXRDb3VudHJ5Q29kZUFqYXhVcmwgPSBsb2NhdGlvbkNoZWNrYm94LmRhdGEoJ2FqYXh1cmwnKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGRlZXBsaW5rID0gJCgnI2RlZXBsaW5rJykuZGF0YSgnc3RyaW5nJykgPT0gMTsKCiAgICAgICAgICAgICAgICAgICAgaWYoZGVlcGxpbmspewogICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q2F0ZWdvcmllcyA9IGNvdW50cnlTZWxlY3QuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZGF0YSgnY2F0ZWdvcmllcycpICsgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlOYW1lID0gY291bnRyeVNlbGVjdC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS5kYXRhKCduYW1lJykgKyAnJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5pY2h0IGltIExhbmQgdm9yaGFuZGVuZSBDYXRlZ29yaWVzIGRpc2FibGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkQ2F0ZWdvcmllcyA9IGFycl9kaWZmIChhbGxDYXRlZ29yeVVpZHMsIGNvdW50cnlDYXRlZ29yaWVzLnNwbGl0KCcsJykpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc2FibGVkQ2F0ZWdvcmllcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNhdGVnb3J5LWNiW3ZhbHVlPSInICsgZGlzYWJsZWRDYXRlZ29yaWVzW2ldICsgJyJdJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jYXRlZ29yeS1jYlt2YWx1ZT0iJyArIGRpc2FibGVkQ2F0ZWdvcmllc1tpXSArICciXScpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY2F0ZWdvcnktY2JbdmFsdWU9IicgKyBkaXNhYmxlZENhdGVnb3JpZXNbaV0gKyAnIl0nKS5jbG9zZXN0KCcuY2hlY2tib3gtd3JhcHBlcicpLmFkZENsYXNzKCdkaXNhYmxlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVNlYXJjaENvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0QnV0dG9uQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihhcnJheUNvbnRhaW5zKHBhcnNlSW50KGNvdW50cnlTZWxlY3QudmFsKCkpLGV1TWVtYmVycykpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXJDb250YWluZXIuc2xpZGVEb3duKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXJDb250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheENhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcENvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3b3JrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtb2JpbGVDaGVjay5pcygnOnZpc2libGUnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm1vYmlsZS1yZXNldC1zZWFyY2gnKS5mYWRlSW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuZGVhbGVyLXNlYXJjaC1mb3JtJykuZmFkZU91dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5tYXAtaGVhZGxpbmUnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNtYXAtaGVhZGxpbmUtY291bnRyeScpLnRleHQoY291bnRyeU5hbWUpOwogICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgIGNvdW50cnlTZWxlY3Qub24oJ2NoYW5nZScsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcENvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDYXRlZ29yaWVzID0gJCh0aGlzKS5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS5kYXRhKCdjYXRlZ29yaWVzJykgKyAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeU5hbWUgPSAkKHRoaXMpLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmRhdGEoJ25hbWUnKSArICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYoJCh0aGlzKS52YWwoKSA9PT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlTZWFyY2hDb250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0QnV0dG9uQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUub3JpZ2luYWxFdmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlbm4gVXNlciBTZWxlY3QtVmFsdWUgw6RuZGVydCwgU3RhbmRvcnQtQ2hlY2tib3ggcmVzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkNoZWNrYm94LnZhbCgnMCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uQ2hlY2tib3gucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1lcnJvcicpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1sb2FkJykuaGlkZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbGUgQ2F0ZWdvcmllcyB3aWVkZXIgZW5hYmxlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNhdGVnb3J5LWNiJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuY2hlY2tib3gtd3JhcHBlcicpLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuaWNodCBpbSBMYW5kIHZvcmhhbmRlbmUgQ2F0ZWdvcmllcyBkaXNhYmxlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRDYXRlZ29yaWVzID0gYXJyX2RpZmYgKGFsbENhdGVnb3J5VWlkcywgY291bnRyeUNhdGVnb3JpZXMuc3BsaXQoJywnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc2FibGVkQ2F0ZWdvcmllcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jYXRlZ29yeS1jYlt2YWx1ZT0iJyArIGRpc2FibGVkQ2F0ZWdvcmllc1tpXSArICciXScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNhdGVnb3J5LWNiW3ZhbHVlPSInICsgZGlzYWJsZWRDYXRlZ29yaWVzW2ldICsgJyJdJykuY2xvc2VzdCgnLmNoZWNrYm94LXdyYXBwZXInKS5hZGRDbGFzcygnZGlzYWJsZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVNlYXJjaENvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pdEJ1dHRvbkNvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFycmF5Q29udGFpbnMocGFyc2VJbnQoJCh0aGlzKS52YWwoKSksZXVNZW1iZXJzKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXJDb250YWluZXIuc2xpZGVEb3duKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcubWFwLWhlYWRsaW5lJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI21hcC1oZWFkbGluZS1jb3VudHJ5JykudGV4dChjb3VudHJ5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkNoZWNrYm94Lm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcENvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuY2hlY2tlZCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbCgnMScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeVNlbGVjdC52YWwoJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2dlb2xvY2F0aW9uLWxvYWQnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHBvc2l0aW9uKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbiBlcm1pdHRlbHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgIT09IHVuZGVmaW5lZCAmJiBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlICE9PSB1bmRlZmluZWQpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZ2VvbG9jYXRpb24tbG9hZCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9jYXRpb25Db3VudHJ5Q29kZShnZXRDb3VudHJ5Q29kZUFqYXhVcmwsIHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSwgcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZlaGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1lcnJvcicpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZ2VvbG9jYXRpb24tbG9hZCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykudmFsKCcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5U2VsZWN0LnZhbCgnJykuY2hhbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZ2VvbG9jYXRpb24tZXJyb3InKS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZ2VvbG9jYXRpb24tbG9hZCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGZpbHRlcmZvcm0uc3VibWl0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhDYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcENvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihtb2JpbGVDaGVjay5pcygnOnZpc2libGUnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdib2R5LGh0bWwnKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6ICQoJy5kZWFsZXItc2VhcmNoLW1hcC13cmFwJykub2Zmc2V0KCkudG9wIC0gJCgnLnBhZ2UtaGVhZGVyJykub3V0ZXJIZWlnaHQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgODAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcubW9iaWxlLXJlc2V0LXNlYXJjaCcpLmZhZGVJbignc2xvdycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmRlYWxlci1zZWFyY2gtZm9ybScpLmZhZGVPdXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGd0bUV2ZW50TGFiZWwgPSAkKCcjY291bnRyeS1zZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpICsgJyAtJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCQoJyNjYi1BdXRvcG9saXR1cmVuJykuaXMoIjpjaGVja2VkIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RtRXZlbnRMYWJlbCA9IGd0bUV2ZW50TGFiZWwgKyAnIEF1dG9wb2xpdHVyZW4nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCQoJyNjYi1Cb290c3BvbGl0dXJlbicpLmlzKCI6Y2hlY2tlZCIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0bUV2ZW50TGFiZWwgPSBndG1FdmVudExhYmVsICsgJyBCb290c3BvbGl0dXJlbic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJCgnI2NiLUZlc3RwYXN0ZW4nKS5pcygiOmNoZWNrZWQiKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndG1FdmVudExhYmVsID0gZ3RtRXZlbnRMYWJlbCArICcgRmVzdHBhc3Rlbic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGF0YUxheWVyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdIYWVuZGxlcnN1Y2hlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnc3VjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnY2xpY2snLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGd0bUV2ZW50TGFiZWwKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldExvY2F0aW9uQ291bnRyeUNvZGUoYWpheFVybCwgbGF0LCBsb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJC5wb3N0KGFqYXhVcmwsIHsgJ3R4X3B4cGRlYWxlcnNfYWpheGNhbGxbbGF0XSc6IGxhdCwgJ3R4X3B4cGRlYWxlcnNfYWpheGNhbGxbbG9uXSc6IGxvbiB9LCBmdW5jdGlvbihyZXNwb25zZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3B0aW9uVmFsdWUgPSAkKCcjY291bnRyeS1zZWxlY3Qgb3B0aW9uW2RhdGEtaXNvMj0nK3Jlc3BvbnNlKyddJykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5U2VsZWN0LnZhbChvcHRpb25WYWx1ZSkuY2hhbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWpheENhbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTWFya2VycygpOwogICAgICAgICAgICAgICAgICAgICAgICAkKCcjYWNjb3JkaW9uJykuaHRtbCgnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICQucG9zdChhamF4VXJsLCBmaWx0ZXJmb3JtLnNlcmlhbGl6ZSgpLCBmdW5jdGlvbihyZXNwb25zZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFwQm91bmRzID0gbmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwgJiYgcmVzcG9uc2UubGVuZ3RoICE9IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZShyZXNwb25zZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2gocmVzcG9uc2UsIGZ1bmN0aW9uKGksIGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5sYXQgIT09ICcnICYmIGl0ZW0ubG9uICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoaXRlbS5sYXQsIGl0ZW0ubG9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkRST1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGl0ZW0ubG9jYXRpb25pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLmFkZGl0aW9uYWxMYXRPbmUgIT09ICcnICYmIGl0ZW0uYWRkaXRpb25hbExvbk9uZSAhPT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsTWFya2VyT25lID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGl0ZW0uYWRkaXRpb25hbExhdE9uZSwgaXRlbS5hZGRpdGlvbmFsTG9uT25lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItcmVkLnBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkRST1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiBpdGVtLmxvY2F0aW9uaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2goYWRkaXRpb25hbE1hcmtlck9uZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwQm91bmRzLmV4dGVuZChhZGRpdGlvbmFsTWFya2VyT25lLnBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uYWRkaXRpb25hbExhdFR3byAhPT0gJycgJiYgaXRlbS5hZGRpdGlvbmFsTG9uVHdvICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxNYXJrZXJUd28gPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoaXRlbS5hZGRpdGlvbmFsTGF0VHdvLCBpdGVtLmFkZGl0aW9uYWxMb25Ud28pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1yZWQucG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGl0ZW0ubG9jYXRpb25pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMucHVzaChhZGRpdGlvbmFsTWFya2VyVHdvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBCb3VuZHMuZXh0ZW5kKGFkZGl0aW9uYWxNYXJrZXJUd28ucG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5hZGRpdGlvbmFsTGF0VGhyZWUgIT09ICcnICYmIGl0ZW0uYWRkaXRpb25hbExvblRocmVlICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxNYXJrZXJUaHJlZSA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhpdGVtLmFkZGl0aW9uYWxMYXRUaHJlZSwgaXRlbS5hZGRpdGlvbmFsTG9uVGhyZWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1yZWQucG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGl0ZW0ubG9jYXRpb25pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMucHVzaChhZGRpdGlvbmFsTWFya2VyVGhyZWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcEJvdW5kcy5leHRlbmQoYWRkaXRpb25hbE1hcmtlclRocmVlLnBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uYWRkaXRpb25hbExhdEZvdXIgIT09ICcnICYmIGl0ZW0uYWRkaXRpb25hbExvbkZvdXIgIT09ICcnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkaXRpb25hbE1hcmtlckZvdXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoaXRlbS5hZGRpdGlvbmFsTGF0Rm91ciwgaXRlbS5hZGRpdGlvbmFsTG9uRm91ciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKGFkZGl0aW9uYWxNYXJrZXJGb3VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBCb3VuZHMuZXh0ZW5kKGFkZGl0aW9uYWxNYXJrZXJGb3VyLnBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uYWRkaXRpb25hbExhdEZpdmUgIT09ICcnICYmIGl0ZW0uYWRkaXRpb25hbExvbkZpdmUgIT09ICcnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkaXRpb25hbE1hcmtlckZpdmUgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoaXRlbS5hZGRpdGlvbmFsTGF0Rml2ZSwgaXRlbS5hZGRpdGlvbmFsTG9uRml2ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKGFkZGl0aW9uYWxNYXJrZXJGaXZlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBCb3VuZHMuZXh0ZW5kKGFkZGl0aW9uYWxNYXJrZXJGaXZlLnBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcEJvdW5kcy5leHRlbmQobWFya2VyLnBvc2l0aW9uKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYWNjb3JkaW9uJykuYXBwZW5kKGdldEh0bWxUZW1wbGF0ZShpdGVtLGkpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25MaXN0RW50cnkgPSAkKCcjbG9jYXRpb24nICsgaXRlbS5sb2NhdGlvbmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uTGlzdEVudHJ5LmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2gobWFya2VycywgZnVuY3Rpb24oaSxtYXJrZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbigtMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRJY29uKCcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItcmVkLnBuZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnc2hvdycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkKCcuY29sbGFwc2UtbGluaycpLmFkZENsYXNzKCdjb2xsYXBzZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5maW5kKCcuY29sbGFwc2UnKS5pcygnOnZpc2libGUnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuc2libGluZ3MoJy5wYW5lbCcpLmZpbmQoJy5jb2xsYXBzZS1saW5rJykuYWRkQ2xhc3MoJ2NvbGxhcHNlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5wYW5lbCcpLnNpYmxpbmdzKCcucGFuZWwnKS5maW5kKCcuYWNjb3JkaW9uLWNvbGxhcHNlJykucmVtb3ZlQ2xhc3MoJ3Nob3cnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmNsb3Nlc3QoJy5wYW5lbCcpLmZpbmQoJy5hY2NvcmRpb24tY29sbGFwc2UnKS5oYXNDbGFzcygnc2hvdycpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuZmluZCgnLmFjY29yZGlvbi1jb2xsYXBzZScpLmhhc0NsYXNzKCdjb2xsYXBzaW5nJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5wYW5lbCcpLmZpbmQoJy5hY2NvcmRpb24tY29sbGFwc2UnKS5hZGRDbGFzcygnc2hvdycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2NvbGxhcHNlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRJY29uKCcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItZ3JleS5wbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlck9uZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyT25lLnNldEljb24oJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1ncmV5LnBuZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlck9uZS5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlclR3byAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyVHdvLnNldEljb24oJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1ncmV5LnBuZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlclR3by5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlclRocmVlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJUaHJlZS5zZXRJY29uKCcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItZ3JleS5wbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJUaHJlZS5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlckZvdXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlckZvdXIuc2V0SWNvbignL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyRm91ci5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlckZpdmUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlckZpdmUuc2V0SWNvbignL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyRml2ZS5zZXRBbmltYXRpb24oZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkJPVU5DRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckNsaWNrTGlzdGVuZXIgKG1hcmtlciwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyT25lICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJDbGlja0xpc3RlbmVyKGFkZGl0aW9uYWxNYXJrZXJPbmUsIG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlclR3byAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lcihhZGRpdGlvbmFsTWFya2VyVHdvLCBtYXJrZXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFkZGl0aW9uYWxNYXJrZXJUaHJlZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lcihhZGRpdGlvbmFsTWFya2VyVGhyZWUsIG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlckZvdXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckNsaWNrTGlzdGVuZXIoYWRkaXRpb25hbE1hcmtlckZvdXIsIG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlckZpdmUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckNsaWNrTGlzdGVuZXIoYWRkaXRpb25hbE1hcmtlckZpdmUsIG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uaXNPbmx5T25saW5lc2hvcCA9PT0gdHJ1ZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtYXJrZXJzW2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzW2ldLnNldE1hcChudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5maXRCb3VuZHMobWFwQm91bmRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNsZWFyTWFya2VycygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFya2Vyc1tpXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnNbaV0uc2V0TWFwKG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMgPSBbXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG1hcmtlckNsaWNrTGlzdGVuZXIobWFya2VyVGVtcCwgbWFya2VyQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIobWFya2VyVGVtcCwgJ2NsaWNrJywgKGZ1bmN0aW9uKG1hcmtlciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChtYXJrZXJBcnJheSwgZnVuY3Rpb24oaSxtYXJrZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbigtMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRPcHRpb25zKHtpY29uOiAidHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItcmVkLnBuZyJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0T3B0aW9ucyh7aWNvbjogInR5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLWdyZXkucG5nIn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoJy5jb2xsYXBzZS1saW5rJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoJyNsb2NhdGlvbicrbWFya2VyLmxvY2F0aW9uX2lkKS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJCgnLmNvbGxhcHNlLWxpbmsnKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgZmFsc2UpLmFkZENsYXNzKCdjb2xsYXBzZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkKCcjbG9jYXRpb24nK21hcmtlci5sb2NhdGlvbl9pZCkuYXR0cignYXJpYS1leHBhbmRlZCcsIGZhbHNlKS5yZW1vdmVDbGFzcygnY29sbGFwc2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2xvY2F0aW9uJyttYXJrZXIubG9jYXRpb25faWQpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJCgnI2xvY2F0aW9uJyttYXJrZXIubG9jYXRpb25faWQpLm9mZnNldCgpLnRvcCAtICgkKCcucGFnZS1oZWFkZXInKS5vdXRlckhlaWdodCgpICsgMzUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKG1hcmtlclRlbXAsIGkpKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFycmF5Q29udGFpbnMobmVlZGxlLCBhcnJoYXlzdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGFycmhheXN0YWNrLmluZGV4T2YobmVlZGxlKSA+IC0xKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXJyX2RpZmYgKGExLCBhMikgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbXSwgZGlmZiA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhMS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVthMVtpXV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYVthMltpXV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYVthMltpXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbYTJbaV1dID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmLnB1c2goayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWZmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgCiAgICA8c2NyaXB0PgogICAgICAgICQoZG9jdW1lbnQuYm9keSkub24oJ2NsaWNrJywnLm1vYmlsZS1jbG9zZS1hY2NvcmRpb24tdHJpZ2dlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyAkKHRoaXMpLmNsb3Nlc3QoJy5jb2xsYXBzZScpLnNsaWRlVXAoKTsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYWNjb3JkaW9uLWl0ZW0nKS5maW5kKCcuYWNjb3JkaW9uLWNvbGxhcHNlJykucmVtb3ZlQ2xhc3MoJ3Nob3cnKTsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYWNjb3JkaW9uLWl0ZW0nKS5maW5kKCcuY29sbGFwc2UtbGluaycpLmFkZENsYXNzKCdjb2xsYXBzZWQnKTsKICAgICAgICB9KTsKCiAgICAgICAgJChkb2N1bWVudC5ib2R5KS5vbignY2xpY2snLCcjcmVzZXQtc2VhcmNoJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBjb3VudHJ5U2VsZWN0LnZhbCgnJykuY2hhbmdlKCk7CiAgICAgICAgICAgIGNhdGVnb3J5U2VhcmNoQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgc3VibWl0QnV0dG9uQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgbm90aWZpZXJDb250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAkKCcuZGVhbGVyLXNlYXJjaC1mb3JtJykuZmFkZUluKCk7CiAgICAgICAgICAgICQodGhpcykucGFyZW50KCkuZmFkZU91dCgpOwogICAgICAgIH0pOwoKICAgICAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdjbGljaycsJy5pdGVtLWxpbmsnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYoJCh0aGlzKS5kYXRhKCdhbmFseXRpY3NldmVudCcpICE9PSAnJyl7CiAgICAgICAgICAgICAgICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKICAgICAgICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdIYWVuZGxlcnN1Y2hlJywKICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3dlaXRlcmxlaXR1bmcnLAogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NsaWNrJywKICAgICAgICAgICAgICAgICAgICBsYWJlbDogJCh0aGlzKS5kYXRhKCdhbmFseXRpY3NldmVudCcpCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBmdW5jdGlvbiBnZXRIdG1sVGVtcGxhdGUoaXRlbSxpKXsKICAgICAgICAgICAgdmFyIGNvbnRhY3RIZWFkbGluZSA9ICQoJyNjb250YWN0LWhlYWRsaW5lJykuZGF0YSgnc3RyaW5nJyk7CiAgICAgICAgICAgIHZhciBjYXRlZ29yaWVzSGVhZGxpbmUgPSAkKCcjY2F0ZWdvcmllcy1oZWFkbGluZScpLmRhdGEoJ3N0cmluZycpOwogICAgICAgICAgICB2YXIgdGV4dExpbmtPbmxpbmVzaG9wID0gJCgnI3RleHQtbGluay1vbmxpbmVzaG9wJykuZGF0YSgnc3RyaW5nJyk7CiAgICAgICAgICAgIHZhciB0ZXh0TGlua1dlYnNpdGUgPSAkKCcjdGV4dC1saW5rLXdlYnNpdGUnKS5kYXRhKCdzdHJpbmcnKTsKICAgICAgICAgICAgdmFyIGNsb3NlQWNjb3JkaW9uVHJpZ2dlclRleHQgPSAkKCcjdGV4dC1jbG9zZS1hY2NvcmRpb24nKS5kYXRhKCdzdHJpbmcnKTsKICAgICAgICAgICAgdmFyIGl0ZXJhdG9yQ2xhc3MgPSAnJzsKICAgICAgICAgICAgaWYgKGkgPT0gJzAnKSB7CiAgICAgICAgICAgICAgICBpdGVyYXRvckNsYXNzID0gJyBmaXJzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBhbmFseXRpY3NFdmVudCA9ICcnOwogICAgICAgICAgICBpZihpdGVtLmFuYWx5dGljc0V2ZW50ICE9ICcnKXsKICAgICAgICAgICAgICAgIGFuYWx5dGljc0V2ZW50ID0gaXRlbS5hbmFseXRpY3NFdmVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWl0ZW0gcGFuZWwiPic7CgogICAgICAgICAgICBodG1sICAgKz0gJyA8YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJhY2NvcmRpb24tdGl0bGUgY29sbGFwc2UtbGluayBjb2xsYXBzZWQiIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgaWQ9ImxvY2F0aW9uJyArIGl0ZW0ubG9jYXRpb25pZCArJyIgZGF0YS1icy10YXJnZXQ9IiNjb2xsYXBzZScgKyBpdGVtLmxvY2F0aW9uaWQgKyciIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJsb2NhdGlvbicgKyBpdGVtLmxvY2F0aW9uaWQgKyciPic7CiAgICAgICAgICAgIGh0bWwgICArPSAnPGRpdiBjbGFzcz0iYWNjLXRpdGxlIj4nICsgaXRlbS50aXRsZSArJzwvZGl2Pic7CgogICAgICAgICAgICBodG1sICAgKz0gJzxkaXYgY2xhc3M9ImFjYy1zdWJ0aXRsZSI+JyArIGl0ZW0uc3VidGl0bGUgKyc8L2Rpdj48L2E+JzsKCiAgICAgICAgICAgIGh0bWwgICArPSc8ZGl2IGRhdGEtYnMtcGFyZW50PSIjYWNjb3JkaW9uIiBpZD0iY29sbGFwc2UnICsgaXRlbS5sb2NhdGlvbmlkICsnIiBjbGFzcz0iYWNjb3JkaW9uLWNvbGxhcHNlIGNvbGxhcHNlIiBzdHlsZT0iIj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkiPic7CgoKICAgICAgICAgICAgaHRtbCAgICs9JzxkaXYgY2xhc3M9InJvdyBkZXNjcmlwdGlvbi1yb3ciPic7CiAgICAgICAgICAgIGh0bWwgICArPSc8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wtbGctOCI+JzsKICAgICAgICAgICAgaHRtbCAgICs9JyA8ZGl2IGNsYXNzPSJkZWFsZXItZGVzY3JpcHRpb24iPicgKyBpdGVtLmRlc2NyaXB0aW9uICsgJzwvZGl2Pic7CiAgICAgICAgICAgIGh0bWwgICArPSc8L2Rpdj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iY29sLW1kLTYgY29sLWxnLTQiPic7CgogICAgICAgICAgICBpZihpdGVtLmltYWdlVXJsICE9PSAnJyl7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8aW1nIHNyYz0iJyArIGl0ZW0uaW1hZ2VVcmwgKyAnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIHdpZHRoPSIyNTAiIC8+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCAgICs9JzwvZGl2PjwvZGl2Pic7CgogICAgICAgICAgICBodG1sICAgKz0nIDxkaXYgY2xhc3M9InJvdyBjb250YWN0LXJvdyI+JzsKICAgICAgICAgICAgaHRtbCAgICs9JzxkaXYgY2xhc3M9ImNvbC1tZC02IGNvbC1sZy04Ij4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iY2F0ZWdvcmllcy1oZWFkbGluZSI+JyArIGNhdGVnb3JpZXNIZWFkbGluZSArICc8L2Rpdj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iaXRlbS1jYXRlZ29yaWVzIj4nOwoKICAgICAgICAgICAgaWYoaXRlbS5jYXRlZ29yaWVzICE9PSAnJyl7CiAgICAgICAgICAgICAgICB2YXIgY2F0ZWdvcmllc0FycmF5ID0gaXRlbS5jYXRlZ29yaWVzOwoKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNhdGVnb3JpZXNBcnJheSkpIHsKICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJpdGVtLWNhdCAnICsga2V5ICArICciPicgKyB2YWx1ZSAgKyAnPC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGh0bWwgICs9JzwvZGl2Pic7CiAgICAgICAgICAgIGh0bWwgICs9JzwvZGl2Pic7CgogICAgICAgICAgICBodG1sICArPSc8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wtbGctNCI+JzsKCiAgICAgICAgICAgIGh0bWwgICs9JzxkaXYgY2xhc3M9ImNvbnRhY3QtaGVhZGxpbmUiPicgKyBjb250YWN0SGVhZGxpbmUgKyAnPC9kaXY+JzsKCiAgICAgICAgICAgIGlmIChpdGVtLmFkZHJlc3MpIHsKICAgICAgICAgICAgICAgIGh0bWwgICs9JyA8ZGl2PjxkaXYgY2xhc3M9Iml0ZW0tYWRkcmVzcyI+JyArIGl0ZW0uYWRkcmVzcyArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXRlbS5waG9uZSkgewogICAgICAgICAgICAgICAgaHRtbCAgKz0nPGRpdj48ZGl2IGNsYXNzPSJpdGVtLXBob25lIj48YSBocmVmPSJ0ZWw6JysgaXRlbS5waG9uZSArJyI+JyArIGl0ZW0ucGhvbmUgKyAnPC9hPjwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpdGVtLmVtYWlsKSB7CiAgICAgICAgICAgICAgICBodG1sICArPSc8ZGl2PjxkaXYgY2xhc3M9Iml0ZW0tZW1haWwiPjxhIGhyZWY9Im1haWx0bzonKyBpdGVtLmVtYWlsICsnIj4nICsgaXRlbS5lbWFpbCArICc8L2E+PC9kaXY+PC9kaXY+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCAgKz0nICA8ZGl2IGNsYXNzPSJ2aXNpdC1zdG9yZS1saW5rcyI+JzsKCiAgICAgICAgICAgIGlmKGl0ZW0ubGlua1dlYnNpdGUgIT09ICcnKXsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxhIGhyZWY9IicgKyBpdGVtLmxpbmtXZWJzaXRlICsgJyIgY2xhc3M9Iml0ZW0tbGluayBidG4iIHRhcmdldD0iX2JsYW5rIiBkYXRhLWFuYWx5dGljc2V2ZW50PSInICsgYW5hbHl0aWNzRXZlbnQgKyAnIj4nICsgdGV4dExpbmtXZWJzaXRlICsgJzwvYT4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZihpdGVtLmxpbmtPbmxpbmVTaG9wICE9PSAnJyl7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8YSBocmVmPSInICsgaXRlbS5saW5rT25saW5lU2hvcCArICciIGNsYXNzPSJpdGVtLWxpbmsgYnRuIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1hbmFseXRpY3NldmVudD0iJyArIGFuYWx5dGljc0V2ZW50ICsgJyI+JyArIHRleHRMaW5rT25saW5lc2hvcCArICc8L2E+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8ZGl2IGNsYXNzPSJyb3ciPic7CgogICAgICAgICAgICBodG1sICs9JyA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPic7CgogICAgICAgICAgICBodG1sICs9JyAgPGRpdiBjbGFzcz0ibW9iaWxlLWNsb3NlLWFjY29yZGlvbiI+PHNwYW4gY2xhc3M9Im1vYmlsZS1jbG9zZS1hY2NvcmRpb24tdHJpZ2dlciI+JysgY2xvc2VBY2NvcmRpb25UcmlnZ2VyVGV4dCArJzwvc3Bhbj48L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj48L2Rpdj4gPC9kaXY+PC9kaXY+PC9kaXY+JzsKCgogICAgICAgICAgICByZXR1cm4gaHRtbDsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gYXJyYXlDb250YWlucyhuZWVkbGUsIGFycmhheXN0YWNrKSB7CiAgICAgICAgICAgIHJldHVybiAoYXJyaGF5c3RhY2suaW5kZXhPZihuZWVkbGUpID4gLTEpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBhcnJfZGlmZiAoYTEsIGEyKSB7CgogICAgICAgICAgICB2YXIgYSA9IFtdLCBkaWZmID0gW107CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGExLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBhW2ExW2ldXSA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYTIubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChhW2EyW2ldXSkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhW2EyW2ldXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYVthMltpXV0gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKHZhciBrIGluIGEpIHsKICAgICAgICAgICAgICAgIGRpZmYucHVzaChrKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGRpZmY7CiAgICAgICAgfQogICAgPC9zY3JpcHQ+CgogICAgICAgICAgICAgICAgICA=
Mit Klick auf "Google Maps laden" willige ich in die Verarbeitung meiner Daten durch Google ein. Diese Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden. Weitere Informationen können unserer Datenschutzerklärung entnommen werden.